diff --git a/datasets/aeri_stacktraces/aeri_stacktraces.html b/datasets/aeri_stacktraces/aeri_stacktraces.html
deleted file mode 100644
index 44fb46b79fb1864e08a640501c8127043dad814f..0000000000000000000000000000000000000000
--- a/datasets/aeri_stacktraces/aeri_stacktraces.html
+++ /dev/null
@@ -1,382 +0,0 @@
-<!DOCTYPE html><html><head>
-      <title>aeri_stacktraces</title>
-      <meta charset="utf-8">
-      <meta name="viewport" content="width=device-width, initial-scale=1.0">
-      
-      <link rel="stylesheet" href="file:////home/boris/.atom/packages/markdown-preview-enhanced/node_modules/@shd101wyy/mume/dependencies/katex/katex.min.css">
-      
-      
-      
-      
-      
-      
-      
-      
-      
-
-      <style> 
-      /**
- * prism.js Github theme based on GitHub's theme.
- * @author Sam Clarke
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: #333;
-  background: none;
-  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.4;
-
-  -moz-tab-size: 8;
-  -o-tab-size: 8;
-  tab-size: 8;
-
-  -webkit-hyphens: none;
-  -moz-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-  padding: .8em;
-  overflow: auto;
-  /* border: 1px solid #ddd; */
-  border-radius: 3px;
-  /* background: #fff; */
-  background: #f5f5f5;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: .1em;
-  border-radius: .3em;
-  white-space: normal;
-  background: #f5f5f5;
-}
-
-.token.comment,
-.token.blockquote {
-  color: #969896;
-}
-
-.token.cdata {
-  color: #183691;
-}
-
-.token.doctype,
-.token.punctuation,
-.token.variable,
-.token.macro.property {
-  color: #333;
-}
-
-.token.operator,
-.token.important,
-.token.keyword,
-.token.rule,
-.token.builtin {
-  color: #a71d5d;
-}
-
-.token.string,
-.token.url,
-.token.regex,
-.token.attr-value {
-  color: #183691;
-}
-
-.token.property,
-.token.number,
-.token.boolean,
-.token.entity,
-.token.atrule,
-.token.constant,
-.token.symbol,
-.token.command,
-.token.code {
-  color: #0086b3;
-}
-
-.token.tag,
-.token.selector,
-.token.prolog {
-  color: #63a35c;
-}
-
-.token.function,
-.token.namespace,
-.token.pseudo-element,
-.token.class,
-.token.class-name,
-.token.pseudo-class,
-.token.id,
-.token.url-reference .token.variable,
-.token.attr-name {
-  color: #795da3;
-}
-
-.token.entity {
-  cursor: help;
-}
-
-.token.title,
-.token.title .token.punctuation {
-  font-weight: bold;
-  color: #1d3e81;
-}
-
-.token.list {
-  color: #ed6a43;
-}
-
-.token.inserted {
-  background-color: #eaffea;
-  color: #55a532;
-}
-
-.token.deleted {
-  background-color: #ffecec;
-  color: #bd2c00;
-}
-
-.token.bold {
-  font-weight: bold;
-}
-
-.token.italic {
-  font-style: italic;
-}
-
-
-/* JSON */
-.language-json .token.property {
-  color: #183691;
-}
-
-.language-markup .token.tag .token.punctuation {
-  color: #333;
-}
-
-/* CSS */
-code.language-css,
-.language-css .token.function {
-  color: #0086b3;
-}
-
-/* YAML */
-.language-yaml .token.atrule {
-  color: #63a35c;
-}
-
-code.language-yaml {
-  color: #183691;
-}
-
-/* Ruby */
-.language-ruby .token.function {
-  color: #333;
-}
-
-/* Markdown */
-.language-markdown .token.url {
-  color: #795da3;
-}
-
-/* Makefile */
-.language-makefile .token.symbol {
-  color: #795da3;
-}
-
-.language-makefile .token.variable {
-  color: #183691;
-}
-
-.language-makefile .token.builtin {
-  color: #0086b3;
-}
-
-/* Bash */
-.language-bash .token.keyword {
-  color: #0086b3;
-}
-
-/* highlight */
-pre[data-line] {
-  position: relative;
-  padding: 1em 0 1em 3em;
-}
-pre[data-line] .line-highlight-wrapper {
-  position: absolute;
-  top: 0;
-  left: 0;
-  background-color: transparent;
-  display: block;
-  width: 100%;
-}
-
-pre[data-line] .line-highlight {
-  position: absolute;
-  left: 0;
-  right: 0;
-  padding: inherit 0;
-  margin-top: 1em;
-  background: hsla(24, 20%, 50%,.08);
-  background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
-  pointer-events: none;
-  line-height: inherit;
-  white-space: pre;
-}
-
-pre[data-line] .line-highlight:before, 
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-start);
-  position: absolute;
-  top: .4em;
-  left: .6em;
-  min-width: 1em;
-  padding: 0 .5em;
-  background-color: hsla(24, 20%, 50%,.4);
-  color: hsl(24, 20%, 95%);
-  font: bold 65%/1.5 sans-serif;
-  text-align: center;
-  vertical-align: .3em;
-  border-radius: 999px;
-  text-shadow: none;
-  box-shadow: 0 1px white;
-}
-
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-end);
-  top: auto;
-  bottom: .4em;
-}html body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ul,html body>ol{margin-bottom:16px}html body ul,html body ol{padding-left:2em}html body ul.no-list,html body ol.no-list{padding:0;list-style-type:none}html body ul ul,html body ul ol,html body ol ol,html body ol ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:bold;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em !important;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::before,html body code::after{letter-spacing:-0.2em;content:"\00a0"}html body pre>code{padding:0;margin:0;font-size:.85em !important;word-break:normal;white-space:pre;background:transparent;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;font-size:.85em !important;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:before,html body pre tt:before,html body pre code:after,html body pre tt:after{content:normal}html body p,html body blockquote,html body ul,html body ol,html body dl,html body pre{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body pre,html body code{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview .pagebreak,.markdown-preview .newpage{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center !important}.markdown-preview:not([for="preview"]) .code-chunk .btn-group{display:none}.markdown-preview:not([for="preview"]) .code-chunk .status{display:none}.markdown-preview:not([for="preview"]) .code-chunk .output-div{margin-bottom:16px}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0}@media screen and (min-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px)}}@media screen and (max-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{font-size:14px !important;padding:1em}}@media print{html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,0.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{padding:0 1.6em;margin-top:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc li{margin-bottom:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{list-style-type:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% -  300px);padding:2em calc(50% - 457px -  150px);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
-/* Please visit the URL below for more information: */
-/*   https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */
- 
-      </style>
-    </head>
-    <body for="html-export">
-      <div class="mume markdown-preview   ">
-      <h1 class="mume-header" id="the-aeri-stacktraces-dataset">The AERI Stacktraces dataset</h1>
-
-<h2 class="mume-header" id="presentation">Presentation</h2>
-
-<p>The <a href="https://wiki.eclipse.org/EPP/Logging">Automated Error Reporting</a> (AERI) system retrieves <a href="https://www.codetrails.com/error-analytics/manual/">information about exceptions</a>. It is installed by default in the <a href="http://www.eclipse.org/ide/">Eclipse IDE</a> and has helped hundreds of projects better support their users and resolve bugs.</p>
-<p>This dataset is a dump of all records over a couple of years, with useful information about the exceptions and environment. It is composed of:</p>
-<ul>
-<li><strong>Incidents</strong> When an exception occurs and is trapped by the AERI system, it constitutes an incident (or error report). An incident can be reported by several different people, can be reported multiple times, and can be linked to different environments.</li>
-<li><strong>Problems</strong> As soon as an error report arrives on the server, it will be analyzed and subsequently assigned to one or more problems. A problem thus represents a set of (similar) error reports which usually have the same root cause &#x2013; for example a bug in your software. (Extract from the <a href="https://www.codetrails.com/error-analytics/manual/concepts/error-reports-problems-bugs-projects.html">AERI system documentation</a>)</li>
-</ul>
-<p>This dataset is published under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons BY-Attribution-Share Alike 4.0 (International) licence</a>.</p>
-<h2 class="mume-header" id="downloads">Downloads</h2>
-
-<ul>
-<li><strong>Problems full</strong> [ <a href="problems_full.tar.bz2">Download JSON</a> ] -- A list of all problems, exported as JSON (one problem per file).
-<ul>
-<li>Content: 125250 entries, 22 attributes</li>
-<li>Size: 38M compressed, 904M raw</li>
-</ul>
-</li>
-<li><strong>Problems extract</strong> [ <a href="problems_extract.csv.bz2">Download CSV</a> ] -- A list of all problems, exported as CSV (one big file).
-<ul>
-<li>Content: 125250 entries, 22 attributes</li>
-<li>Size: 1.5M compressed, 14M raw</li>
-</ul>
-</li>
-<li><strong>Incidents full</strong> [ <a href="incidents_full.tar.bz2">Download JSON</a> ] -- A list of all incidents, exported as JSON (one incident per file).
-<ul>
-<li>Content: 2084363 entries, 22 attributes</li>
-<li>Size: 820M compressed, 19G raw</li>
-</ul>
-</li>
-<li><strong>Incidents extract</strong> [ <a href="incidents_extract.csv.bz2">Download CSV</a> ] -- A list of all incidents, exported as CSV (one big file).
-<ul>
-<li>Content: 2084045 entries, 20 attributes</li>
-<li>Size: 141M compressed, 778M raw</li>
-</ul>
-</li>
-<li><strong>Incidents Bundles</strong> [ <a href="incidents_bundles_extract.csv.bz2">Download CSV</a> ] -- A list of all bundles found in incidents, exported as CSV. Attributes are bundle_name, bundle_version, and number of occurrences.
-<ul>
-<li>Content: 29709 entries, 3 attributes</li>
-<li>Size: 220K compressed, 1.5M raw</li>
-</ul>
-</li>
-</ul>
-<p><strong>Documentation</strong></p>
-<ul>
-<li><strong>Stacktraces Problems analysis document</strong> [ <a href="problems_analysis.pdf">Download PDF</a> | <a href="problems_analysis.rmd">Download Rmd</a> ] -- A R Markdown document to analyse the Stacktraces problem dataset, with description of the actual content and examples of usage.</li>
-<li><strong>Stacktraces Incidents analysis document</strong> [ <a href="incidents_analysis.pdf">Download PDF</a> | <a href="incidents_analysis.rmd">Download Rmd</a> ] -- A R Markdown document to analyse the Stacktraces incidents dataset, with description of the actual content and examples of usage.</li>
-</ul>
-<p>More information about the AERI system can be found on the <a href="https://www.codetrails.com/error-analytics/manual/">Code Trails website</a>.</p>
-<h2 class="mume-header" id="privacy-concerns">Privacy concerns</h2>
-
-<p>The result contains no email address, user id or machine id. Rather than removing the information (we are not sure that we remove all required information) we decided to simply pick relevant information from the file and push it into the output.</p>
-<p>End users have an option to keep their own class names private. We have presently no simple means to know what stacktraces in the database extraction should be kept private, so we decided to play it safe and hide class names whose packages don&apos;t start with known prefixes [1]. All private classnames have been replaced by the HIDDEN keyword.</p>
-<p>[1] <code>&quot;ch.qos.*&quot;, &quot;com.cforcoding.*&quot;, &quot;com.google.*&quot;, &quot;com.gradleware.tooling.*&quot;, &quot;com.mountainminds.eclemma.*&quot;, &quot;com.naef.*&quot;, &quot;com.sun.*&quot;, &quot;java.*&quot;, &quot;javafx.*&quot;, &quot;javax.*&quot;, &quot;org.apache.*&quot;, &quot;org.eclipse.*&quot;, &quot;org.fordiac.*&quot;, &quot;org.gradle.*&quot;, &quot;org.jacoco.*&quot;, &quot;org.osgi.*&quot;, &quot;org.slf4j.*&quot;, &quot;sun.*&quot;</code></p>
-<h2 class="mume-header" id="format-problems">Format: problems</h2>
-
-<pre class="language-text">{
-  &quot;summary&quot;: &quot;&quot;,
-  &quot;osgiArch&quot;: &quot;&quot;,
-  &quot;osgiOs&quot;: &quot;&quot;,
-  &quot;osgiOsVersion&quot;: &quot;&quot;,
-  &quot;osgiWs&quot;: &quot;&quot;,
-  &quot;eclipseBuildId&quot;: &quot;&quot;,
-  &quot;eclipseProduct&quot;: &quot;&quot;,
-  &quot;javaRuntimeVersion&quot;: &quot;&quot;,
-  &quot;numberOfIncidents&quot;: 0,
-  &quot;numberOfReporters&quot;: 74,
-  &quot;stacktraces&quot;: [
-    [ &quot;stacktrace for incident&quot; ],
-    [ &quot;stacktrace for cause&quot; ],
-    [ &quot;stacktrace for exception&quot; ]
-  ]
-}
-</pre>
-<h2 class="mume-header" id="format-incidents">Format: incidents</h2>
-
-<pre class="language-text">{
-  &quot;eclipseBuildId&quot;:&quot;4.6.1.M20160907-1200&quot;,
-  &quot;eclipseProduct&quot;:&quot;org.eclipse.epp.package.jee.product&quot;,
-  &quot;javaRuntimeVersion&quot;:&quot;1.8.0_112-b15&quot;,
-  &quot;osgiArch&quot;:&quot;x86_64&quot;,
-  &quot;osgiOs&quot;:&quot;Windows7&quot;,
-  &quot;osgiOsVersion&quot;:&quot;6.1.0&quot;,
-  &quot;osgiWs&quot;:&quot;win32&quot;,
-  &quot;stacktraces&quot;:[
-    [ &quot;stacktrace&quot; ]
-  ],
-  &quot;summary&quot;: &quot;Failed to retrieve default libraries for jre1.8.0_111&quot;
-}
-</pre>
-<h2 class="mume-header" id="format-stacktraces">Format: Stacktraces</h2>
-
-<p>The structure used in the mongodb for stacktraces has been kept as is: it is composed of fields with all information relevant to each line of the stacktrace. Each stacktrace is an array of objects as shown below:</p>
-<pre class="language-text">[
-  {
-    &quot;cN&quot;: &quot;sun.net.www.http.HttpClient&quot;,
-    &quot;mN&quot;: &quot;parseHTTPHeader&quot;,
-    &quot;fN&quot;: &quot;HttpClient.java&quot;,
-    &quot;lN&quot;: 786,
-  }
-]
-</pre>
-
-      </div>
-      
-      
-    
-    
-    
-    
-    
-    
-    
-    
-  
-    </body></html>
\ No newline at end of file
diff --git a/datasets/aeri_stacktraces/aeri_stacktraces.md b/datasets/aeri_stacktraces/aeri_stacktraces.md
deleted file mode 100644
index 261a15fc5d1881825dc6dca6fb9ea28fb495d626..0000000000000000000000000000000000000000
--- a/datasets/aeri_stacktraces/aeri_stacktraces.md
+++ /dev/null
@@ -1,101 +0,0 @@
-
-# The AERI Stacktraces dataset
-
-## Presentation
-
-The [Automated Error Reporting](https://wiki.eclipse.org/EPP/Logging) (AERI) system retrieves [information about exceptions](https://www.codetrails.com/error-analytics/manual/). It is installed by default in the [Eclipse IDE](http://www.eclipse.org/ide/) and has helped hundreds of projects better support their users and resolve bugs.  
-
-This dataset is a dump of all records over a couple of years, with useful information about the exceptions and environment. It is composed of:
-
-* **Incidents** When an exception occurs and is trapped by the AERI system, it constitutes an incident (or error report). An incident can be reported by several different people, can be reported multiple times, and can be linked to different environments.
-* **Problems** As soon as an error report arrives on the server, it will be analyzed and subsequently assigned to one or more problems. A problem thus represents a set of (similar) error reports which usually have the same root cause – for example a bug in your software. (Extract from the [AERI system documentation](https://www.codetrails.com/error-analytics/manual/concepts/error-reports-problems-bugs-projects.html))
-
-This dataset is published under the [Creative Commons BY-Attribution-Share Alike 4.0 (International) licence](https://creativecommons.org/licenses/by-sa/4.0/).
-
-
-## Downloads
-
-* **Problems full** [ [Download JSON](problems_full.tar.bz2) ] -- A list of all problems, exported as JSON (one problem per file).
-    * Content: 125250 entries, 22 attributes
-    * Size: 38M compressed, 904M raw
-* **Problems extract** [ [Download CSV](problems_extract.csv.bz2) ] -- A list of all problems, exported as CSV (one big file).
-    * Content: 125250 entries, 22 attributes
-    * Size: 1.5M compressed, 14M raw
-* **Incidents full** [ [Download JSON](incidents_full.tar.bz2) ] -- A list of all incidents, exported as JSON (one incident per file).
-    * Content: 2084363 entries, 22 attributes
-    * Size: 820M compressed, 19G raw
-* **Incidents extract** [ [Download CSV](incidents_extract.csv.bz2) ] -- A list of all incidents, exported as CSV (one big file).
-    * Content: 2084045 entries, 20 attributes
-    * Size: 141M compressed, 778M raw
-* **Incidents Bundles** [ [Download CSV](incidents_bundles_extract.csv.bz2) ] -- A list of all bundles found in incidents, exported as CSV. Attributes are bundle_name, bundle_version, and number of occurrences.
-    * Content: 29709 entries, 3 attributes
-    * Size: 220K compressed, 1.5M raw
-
-**Documentation**
-
-* **Stacktraces Problems analysis document** [ [Download PDF](problems_analysis.pdf) | [Download Rmd](problems_analysis.rmd) ] -- A R Markdown document to analyse the Stacktraces problem dataset, with description of the actual content and examples of usage.
-* **Stacktraces Incidents analysis document** [ [Download PDF](incidents_analysis.pdf) | [Download Rmd](incidents_analysis.rmd) ] -- A R Markdown document to analyse the Stacktraces incidents dataset, with description of the actual content and examples of usage.
-
-More information about the AERI system can be found on the [Code Trails website](https://www.codetrails.com/error-analytics/manual/).
-
-
-
-## Privacy concerns
-
-The result contains no email address, user id or machine id. Rather than removing the information (we are not sure that we remove all required information) we decided to simply pick relevant information from the file and push it into the output.
-
-End users have an option to keep their own class names private. We have presently no simple means to know what stacktraces in the database extraction should be kept private, so we decided to play it safe and hide class names whose packages don't start with known prefixes [1]. All private classnames have been replaced by the HIDDEN keyword.
-
-[1] `"ch.qos.*", "com.cforcoding.*", "com.google.*", "com.gradleware.tooling.*", "com.mountainminds.eclemma.*", "com.naef.*", "com.sun.*", "java.*", "javafx.*", "javax.*", "org.apache.*", "org.eclipse.*", "org.fordiac.*", "org.gradle.*", "org.jacoco.*", "org.osgi.*", "org.slf4j.*", "sun.*" `
-
-
-## Format: problems
-
-    {
-      "summary": "",
-      "osgiArch": "",
-      "osgiOs": "",
-      "osgiOsVersion": "",
-      "osgiWs": "",
-      "eclipseBuildId": "",
-      "eclipseProduct": "",
-      "javaRuntimeVersion": "",
-      "numberOfIncidents": 0,
-      "numberOfReporters": 74,
-      "stacktraces": [
-        [ "stacktrace for incident" ],
-        [ "stacktrace for cause" ],
-        [ "stacktrace for exception" ]
-      ]
-    }
-
-
-## Format: incidents
-
-    {
-      "eclipseBuildId":"4.6.1.M20160907-1200",
-      "eclipseProduct":"org.eclipse.epp.package.jee.product",
-      "javaRuntimeVersion":"1.8.0_112-b15",
-      "osgiArch":"x86_64",
-      "osgiOs":"Windows7",
-      "osgiOsVersion":"6.1.0",
-      "osgiWs":"win32",
-      "stacktraces":[
-        [ "stacktrace" ]
-      ],
-      "summary": "Failed to retrieve default libraries for jre1.8.0_111"
-    }
-
-
-## Format: Stacktraces
-
-The structure used in the mongodb for stacktraces has been kept as is: it is composed of fields with all information relevant to each line of the stacktrace. Each stacktrace is an array of objects as shown below:
-
-    [
-      {
-        "cN": "sun.net.www.http.HttpClient",
-        "mN": "parseHTTPHeader",
-        "fN": "HttpClient.java",
-        "lN": 786,
-      }
-    ]
diff --git a/datasets/aeri_stacktraces/incidents_analysis.pdf b/datasets/aeri_stacktraces/incidents_analysis.pdf
deleted file mode 100644
index bea9ad3fbe30bca218c62c3426b7f162e7b890ab..0000000000000000000000000000000000000000
Binary files a/datasets/aeri_stacktraces/incidents_analysis.pdf and /dev/null differ
diff --git a/datasets/aeri_stacktraces/incidents_analysis.rmd b/datasets/aeri_stacktraces/incidents_analysis.rmd
deleted file mode 100644
index c08e3fc31149527d10f3f9781e7b04b20ec37d37..0000000000000000000000000000000000000000
--- a/datasets/aeri_stacktraces/incidents_analysis.rmd
+++ /dev/null
@@ -1,581 +0,0 @@
----
-title: "StackTraces -- Incidents"
-subtitle: "R Analysis document"
-author: "Boris Baldassari -- Castalia Solutions"
-output:
-  pdf_document:
-    toc: yes
-    toc_depth: 3
-    keep_tex: true
-    extra_dependencies:
-      - grffile
-  html_document:
-    toc: yes
-    toc_depth: 2
-  word_document:
-    toc: yes
-    toc_depth: '2'
----
-
-```{r init, message=FALSE, echo=FALSE, cache=FALSE}
-library(ggplot2)
-library(ggthemes)
-library(knitr)
-
-library(kableExtra)
-options(knitr.table.format = "latex")
-
-library(parsedate)
-library(magrittr)
-
-require(xts)
-```
-
-```{r init.read, message=FALSE, echo=FALSE, cache=TRUE}
-# Read csv file
-file.in <- "incidents_extract.csv"
-myincidents <- read.csv(file.in, header=T, quote='"')
-file.in.bundles <- "incidents_bundles_extract.csv"
-mybundles <- read.csv(file.in.bundles, header=T, quote='"')
-
-# Create xts object
-myincidents <- myincidents[myincidents$timestamp != '',]
-myincidents <- myincidents[myincidents$savedOn != '',]
-myp.xts <- xts(x = myincidents, order.by = parse_iso_8601(myincidents$timestamp))
-```
-
-# Introduction
-
-## About this dataset
-
-The [Automated Error Reporting](https://wiki.eclipse.org/EPP/Logging) (AERI) system retrieves [information about exceptions](https://www.codetrails.com/error-analytics/manual/). It is installed by default in the [Eclipse IDE](http://www.eclipse.org/ide/) and has helped hundreds of projects better support their users and resolve bugs.  
-
-This dataset is a dump of all records over a couple of years, with useful information about the exceptions and environment.
-
-* **Generated date**: `r date()`
-* **First date**: `r first(index(myp.xts))`
-* **Last date**: `r last(index(myp.xts))`
-* **Number of incidents**: `r nrow(myp.xts)`
-* **Number of attributes**: `r ncol(myp.xts)`
-
-## Terminology
-
-* **Incidents** When an exception occurs and is trapped by the AERI system, it constitutes an incident (or error report). An incident can be reported by several different people, can be reported multiple times, and can be linked to different environments.
-* **Problems** As soon as an error report arrives on the server, it will be analyzed and subsequently assigned to one or more problems. A problem thus represents a set of (similar) error reports which usually have the same root cause – for example a bug in your software. (Extract from the [AERI system documentation](https://www.codetrails.com/error-analytics/manual/concepts/error-reports-problems-bugs-projects.html))
-
-This dataset targets only the Incidents of the AERI dataset. There is another dedicated document for the Problems.
-
-## Privacy concerns
-
-We value privacy and intend to make everything we can to prevent misuse of the dataset. If you think we failed somewhere in the process, please [let us know](https://www.crossminer.org/contact) so we can do better.
-
-The AERI system itself doesn't gather much private information, and takes a great care of it. Ths dataset goes a step further and removes all identifiable information. 
-
-* There is **no email address** in this dataset, **nor any UUID**. 
-* People not willing to share their traces to the AERI system can tick the private option. This choice has been respected, and all classes that do not belong to public hierarchy have been hidden thanks to an anonymisation mechanism.
-
-The anonymisation technique used basically encrypts information and then throws away the private key. Please refer to the [documentation published on github](https://github.com/borisbaldassari/data-anonymiser) for more details.
-
-
-## About this document
-
-This document is a [R Markdown document](http://rmarkdown.rstudio.com) and is composed of both text (like this one) and dynamically computed information (mostly in the Anaysis section below) executed on the data itself. This ensures that the information is always synchronised with the data, and serves as a test suite for the dataset.
-
-
-# Structure of data
-
-The plugin collects a [lot of useful information](https://www.codetrails.com/error-analytics/manual/misc/sent-data.html). We only use a subset of it, as required by research interest and privacy protection concerns. 
-
-The Incidents dataset comes in two flavours: `All incidents`, in JSON format, and `incidents extract`, in CSV format. There is also a list of bundles discovered in the data dump with their version and number of attached incidents.
-
-
-## All incidents (JSON)
-
-**All incidents** is the most complete dataset, with all attributes, stacktraces and bundles. Since the stacktraces and bundles structures are too complex for CSV, only the JSON export contains them. The dataset comes as a quite large compressed archive, with one JSON file per incident This represents a total of `r nrow(myincidents)` files (incidents).
-
-
-The structure of an incident file is examplified below: 
-
-    {
-      "eclipseBuildId": "4.6.1.M20160907-1200",
-      "eclipseProduct": "org.eclipse.epp.package.jee.product",
-      "fingerprint": "cd03d068798d141412b1d1605892fbec",
-      "fingerprint2": "12166d864efb7adcccc187034deb7dbf",
-      "javaRuntimeVersion": "1.8.0_112-b15",
-      "kind": "NORMAL",
-      "osgiArch": "x86_64",
-      "osgiOs": "Windows7",
-      "osgiOsVersion": "6.1.0",
-      "osgiWs": "win32",
-      "presentBundles": [
-        [ "bundle" ]
-      ],
-      "savedOn": "2016-11-08T10:23:01.914Z",
-      "severity": "UNKNOWN",
-      "stacktraces": [
-        [ "stacktrace" ]
-      ],
-      "status": {
-        "code": 0,
-        "fingerprint": "98631af2ddb2d197ebdca532f19d082b",
-        "message": "Failed to retrieve default libraries for C:\\Program Files\\Java\\jre1.8.0_111",
-        "pluginId": "org.eclipse.jdt.launching",
-        "pluginVersion": "3.8.100.v20160505-0636",
-        "severity": 4
-      },
-      "timestamp": "2016-11-08T10:22:59.204Z"
-    }
-    
-The structure used in the mongodb for stacktraces has been kept as is: it is composed of fields with all information relevant to each line of the stacktrace. Each stacktrace is an array of objects as shown below:
-
-    [
-      {
-        "cN": "sun.net.www.http.HttpClient",
-        "mN": "parseHTTPHeader",
-        "fN": "HttpClient.java",
-        "lN": 786,
-      }
-    ]
-
-Bundles have the following format:
-
-    {
-      "name": "org.eclipse.egit.core",
-      "version": "4.1.1.201511131810-r"
-    }
-
-
-## Incidents extract (CSV)
-
-The **Incidents extract** CSV dataset provides the same information as the full JSON dataset, excluding complex structures that cannot be easily formatted in CSV: stacktraces, bundles, products.
-
-Attributes are: ``r names(myincidents)``.
-
-Examples are provided at the end of this file to demonstrate how to use it in R.
-
-
-## Bundles extract (CSV)
-
-The **Bundles extract** CSV dataset lists the Eclipse bundles and versions associated to incidents, with the number of incidents for each pair. 
-
-```{r bundles.table, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-#library(DT)
-#datatable(mybundles[seq(1,10),], options=list(paging=F))
-kable(mybundles[seq(1,30),])
-```
-
-# Attributes
-
-## Message
-
-* Description: A short text summarising the error.
-* Type: String
-
-## Code
-
-* Description: The numeric status code logged with the error.
-* Type: Integer
-
-```{r attr.code.init, warning=FALSE, echo=FALSE, cache=TRUE}
-mysum <- summary(myincidents$code)
-```
-
-Statistical summary:
-
-* Range [ `r format(mysum[[1]], scientific = FALSE)` : `r format(mysum[[6]], scientific = FALSE)` ]
-* 1st Quartile `r mysum[[2]]`
-* Median `r mysum[[3]]`
-* Mean `r format(mysum[[4]], scientific = FALSE)`
-* 3rd Quartile `r format(mysum[[5]], scientific = FALSE)`
-
-## Severity
-
-* Description: An estimate by the user reporting the error about its perceived severity.
-* Type: Factors
-
-```{r attr.severity.init, warning=FALSE, echo=FALSE, cache=TRUE}
-mysum <- summary(myincidents$severity)
-```
-
-Distribution:
-
-* CRITICAL `r mysum[[c('CRITICAL')]]`
-* MAJOR `r mysum[[c('MAJOR')]]`
-* MINOR `r mysum[[c('MINOR')]]`
-* NO_BUG `r mysum[[c('NO_BUG')]]`
-* TRIVIAL `r mysum[[c('TRIVIAL')]]`
-* UNKNOWN `r mysum[[c('UNKNOWN')]]`
-
-
-## Kind {#attr_kind}
-
-* Description: The type of error recorded, as identified by the AERI system.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.kind, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-kinds <- table(myincidents$kind)
-kinds <- kinds[kinds != 0]
-kinds <- kinds[order(kinds, decreasing = TRUE)]
-t <- lapply(names(kinds), function(x) paste('* ', x, ' (count: ', kinds[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-**Notes**
-
-There are different kinds of incidents described in the [official documentation](https://www.codetrails.com/error-analytics/manual/concepts/incident-kinds.html):
-
-* Normal Error: Normal errors are all exceptions that were reported by a client but that are not of kind defined below. Common examples of a normal error are a `NullPointerException` or `IllegalArgumentException`.
-  - An `OutOfMemoryError` is a special kind of exception. Unlike for normal errors, the stack frame (implicitly) throwing the exception is only sometimes indicative of the root cause of the problem.
-  - A `StackOverflowError` is a special kind of exception, whose unique characteristic is a repeating pattern of stack frames near the top of the stack trace.
-* UI Freeze: A UI freeze is caused by a long-running operation or even a deadlock on the UI thread. 
-* Third-Party Error: Third-party errors are reports that were received by the Codetrails Error Analytics Server, which deemed neither the configured projects nor their dependencies at fault. 
-* Third-Party UI Freeze: Third-Party UI Freezes are UI freezes that were received by the Codetrails Error Analytics Server, which deemed neither the configured projects nor their dependencies at fault. 
-
-## Plugin ID {#attr_plugin_id}
-
-* Description: The ID of the Eclipse plugin that threw the exception.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.plugin.id, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-occurences.max.pi <- 500
-pis <- data.frame(table(myincidents$pluginId))
-pis <- pis[order(-pis$Freq),]
-pis.top <- pis[pis[,c('Freq')] >= occurences.max.pi,]
-t <- lapply(pis.top$Var1, function(x) paste('* ', x, ' (count: ', pis.top[pis.top$Var1 == x,c("Freq")], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the most used Eclipse Build IDs in the dataset:
-
-```{r attr.plugin.id.plot, echo=FALSE, cache=TRUE}
-ggplot(pis.top[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("Plugin IDs") + ggtitle("Repartition of most impacted plugin IDs in dataset")
-```
-
-
-## Plugin version {#attr_plugin_version}
-
-* Description: The ID of the Eclipse plugin that threw the exception.
-* Type: Factors
-
-```{r attr.pluginversion.init, echo=F, cache=TRUE}
-occurences.max.pv <- 500
-mypvs <- data.frame(table(myincidents$pluginVersion))
-mypvs <- mypvs[order(-mypvs$Freq),]
-mypvs.top <- mypvs[mypvs[,c('Freq')] >= occurences.max.pv,]
-```
-
-There are `r nrow(mypvs)` different values found in the dataset for this attribute. The following bar plot only displays the values with more than `r occurences.max.pv` occurrences:
-
-```{r attr.pluginversion.plot, echo=FALSE, message=FALSE, cache=TRUE}
-mypvs.df <- as.data.frame(mypvs.top)
-ggplot(mypvs.df[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("Plugin version") + ggtitle("Repartition of top Eclipse plugin versions in dataset")
-```
-
-
-
-## Status fingerprint {#attr_status_fingerprint}
-
-* Description: An identifier for the status of the incident. Used for [duplicates detection](https://www.codetrails.com/error-analytics/manual/features/server/duplicate-detection.html).
-* Type: String
-
-
-## Incident fingerprint {#attr_fingerprint}
-
-* Description: An identifier for the incident. Used for [duplicates detection](https://www.codetrails.com/error-analytics/manual/features/server/duplicate-detection.html).
-* Type: String
-
-
-## Incident fingerprint2 {#attr_fingerprint2}
-
-* Description: An identifier for the incident. Used for [duplicates detection](https://www.codetrails.com/error-analytics/manual/features/server/duplicate-detection.html).
-* Type: String
-
-
-## Timestamp {#timestamp}
-
-* Description: The time of creation of the incident.
-* Type: Date (ISO8601)
-
-```{r attr.ts, echo=FALSE, cache=TRUE}
-myp.xts.ts <- xts(x = data.frame(c <- rep.int(1,nrow(myincidents))), order.by = parse_iso_8601(myincidents$timestamp))
-```
-
-Dates range from `r first(index(myp.xts.ts))` to `r last(index(myp.xts.ts))`.
-
-```{r attr.ts.plot, echo=FALSE, cache=TRUE}
-#xts.ts <- as.xts(apply.weekly(myp.xts.ts, sum))
-xts.ts <- apply.weekly(myp.xts.ts, sum)
-autoplot(xts.ts, geom='line') + 
-  theme_bw() + ylab("Incidents Timestamp") + ggtitle("Weekly number of Incidents timestamp")
-```
-
-
-## Saved On {#attr_saved_on}
-
-* Description: The time of last save of the problem.
-* Type: Date (ISO8601)
-
-```{r attr.savedOn, echo=FALSE, cache=TRUE}
-myp.xts.savedOn <- xts(x = data.frame(c <- rep.int(1,nrow(myincidents))), order.by = parse_iso_8601(myincidents$savedOn))
-```
-
-Dates range from `r first(index(myp.xts.savedOn))` to `r last(index(myp.xts.savedOn))`.
-
-```{r attr.savedOn.plot, echo=FALSE, cache=TRUE}
-xts.savedOn <- as.xts(apply.weekly(myp.xts.savedOn, sum))
-autoplot(xts.savedOn, geom='line') + 
-  theme_bw() + ylab("Problems SavedOn") + ggtitle("Weekly number of Problems SavedOn")
-```
-
-
-## OSGi Architecture {#attr_osgi_arch}
-
-* Description: The architecture of the host, as specified in the OSGi bundle definition.
-* Type: Factors
-
-Possible values found in the dataset for this attribute are:
-  
-```{r attr.osgi.arch, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-archs <- table(myincidents$osgiArch)
-archs <- archs[order(archs, decreasing = TRUE)]
-t <- lapply(names(archs), function(x) paste('* ', x, ' (count: ', archs[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Repartition of architectures:
-
-```{r osgiArch, echo=FALSE, message=FALSE, cache=TRUE}
-archs.df <- as.data.frame(archs)
-ggplot(archs.df[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("OSGi Architecture") + ggtitle("Repartition of OSGi Architectures in dataset")
-```
-
-
-## OSGi OS {#attr_osgi_os}
-
-* Description: The host operating system, as reported in OSGi.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.osgi.os, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-oses <- table(myincidents$osgiOs)
-oses <- oses[order(oses, decreasing = TRUE)]
-t <- lapply(names(oses), function(x) paste('* ', x, ' (count: ', oses[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the various operating systems used in the dataset:
-
-```{r attr.osgi.os.plot, echo=FALSE, cache=TRUE}
-oses.df <- as.data.frame(oses)
-ggplot(oses.df[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("OSGi Operating System") + ggtitle("Repartition of OSGi OS in dataset")
-```
-
-
-## OSGi OS Version {#attr_osgi_os_version}
-
-* Description: The host operating system version, as reported in OSGi.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.osgi.os.version, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-occurences.max.osv <- 500
-oses <- data.frame(table(myincidents$osgiOsVersion))
-oses <- oses[order(-oses$Freq),]
-oses.top <- oses[oses[,c('Freq')] >= occurences.max.osv,]
-t <- lapply(oses.top$Var1, function(x) paste('* ', x, ' (count: ', oses.top[oses.top$Var1 == x,c("Freq")], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the various operating system versions used in the dataset:
-
-```{r attr.osgi.os.version.plot, echo=FALSE, cache=TRUE}
-ggplot(oses.top[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("OSGi Operating System Version") + ggtitle("Repartition of most used OSGi OS versions in dataset")
-```
-
-
-## OSGi Window Manager {#attr_osgi_ws}
-
-* Description: The Window Manager used by the host, as reported in OSGi.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.osgi.ws, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-oses <- table(myincidents$osgiWs)
-
-# We don't want an empty col name.
-names(oses)[names(oses) == ''] <- 'UNKNOWN'
-
-oses <- oses[order(oses, decreasing = TRUE)]
-t <- lapply(names(oses), function(x) paste('* ', x, ' (count: ', oses[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the various Window managers used in the dataset:
-
-```{r attr.osgi.ws.plot, echo=FALSE, cache=TRUE}
-oses.df <- as.data.frame(oses)
-ggplot(oses.df[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("OSGi Window Managers") + ggtitle("Repartition of OSGi Window managers in dataset")
-```
-
-## Eclipse Build ID {#attr_eclipse_build_id}
-
-* Description: The Build ID of the Eclipse instance running when the exception occurred.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.eb.id, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-occurences.max.ebi <- 500
-ebis <- data.frame(table(myincidents$eclipseBuildId))
-ebis <- ebis[order(-ebis$Freq),]
-ebis.top <- ebis[ebis[,c('Freq')] >= occurences.max.ebi,]
-t <- lapply(ebis.top$Var1, function(x) paste('* ', x, ' (count: ', ebis.top[ebis.top$Var1 == x,c("Freq")], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the most used Eclipse Build IDs in the dataset:
-
-```{r attr.eb.id.plot, echo=FALSE, cache=TRUE}
-ggplot(ebis.top[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("Eclipse Builds") + ggtitle("Repartition of most used Eclipse Build IDs in dataset")
-```
-
-## Eclipse Product {#attr_eclipse_product}
-
-* Description: The Eclipse product impacted by the exception.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.ep, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-occurences.max.eps <- 500
-eps <- data.frame(table(myincidents$eclipseBuildId))
-eps <- eps[order(-eps$Freq),]
-```
-
-There are `r nrow(eps)` different values found in the dataset for this attribute. The following table and bar plot only display the values with more than `r occurences.max.eps` occurrences:
-
-```{r attr.ep.table, message=FALSE, echo=FALSE, warning=FALSE, results='asis', cache=TRUE}
-eps.top <- eps[eps[,c('Freq')] >= occurences.max.eps,]
-t <- lapply(eps.top$Var1, function(x) paste('* ', x, ' (count: ', eps.top[eps.top$Var1 == x,c("Freq")], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the most used Eclipse Build IDs in the dataset:
-
-```{r attr.ep.plot, echo=FALSE, cache=TRUE}
-ggplot(eps.top[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("Eclipse Products") + ggtitle("Repartition of most used Eclipse Products in dataset")
-```
-
-
-
-## Java runtime version {#attr_javaruntime}
-
-* Description: The Java runtime of the host.
-* Type: Factors
-
-```{r jrv.kable.init, echo=F, cache=TRUE}
-occurences.max.jrv <- 500
-myjrvs <- data.frame(table(myincidents$javaRuntimeVersion))
-myjrvs <- myjrvs[order(-myjrvs$Freq),]
-myjrvs.top <- myjrvs[myjrvs[,c('Freq')] >= occurences.max.jrv,]
-```
-
-There are `r nrow(myjrvs)` different values found in the dataset for this attribute. The following bar plot only displays the values with more than `r occurences.max.jrv` occurrences:
-
-```{r jrv.kable, eval=FALSE, include=FALSE, results='asis', cache=TRUE}
-kable(data.frame(myjrvs.top), row.names = F) %>% 
-  kable_styling(full_width = T, latex_options = c("striped", "hold_position"))
-```
-
-```{r jrv.plot, echo=FALSE, message=FALSE, cache=TRUE}
-myjrvs.df <- as.data.frame(myjrvs.top)
-ggplot(myjrvs.df[seq(1,30),], aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_tufte() + xlab("Java runtime version") + ggtitle("Repartition of top Java runtime versions in dataset")
-```
-
-## Comment Quality
-
-* Description: An estimate of the user comment's quality (throughfulness). User comments help people better understand the context of the exception.
-* Type: Factors
-
-```{r attr.cq.init, warning=FALSE, echo=FALSE, cache=TRUE}
-mysum <- summary(myincidents$commentQuality)
-```
-
-Distribution:
-
-* HIGH `r mysum[[c('HIGH')]]`
-* MEDIUM `r mysum[[c('MEDIUM')]]`
-* LOW `r mysum[[c('LOW')]]`
-* UNKNOWN `r mysum[[c('UNKNOWN')]]`
-
-
-# Using the dataset
-
-## Reading CSV file
-
-Reading file from `r file.in`. 
-
-```
-myincidents <- read.csv(file.in, header=T)
-myincidents[,c("bug", "status")] <- NULL
-```
-
-There are ``r ncol(myincidents)`` columns and ``r nrow(myincidents)`` entries in this dataset:
-
-```{r examples.ncol, echo=T}
-ncol(myincidents)
-```
-
-```{r examples.nrow, echo=T}
-nrow(myincidents)
-```
-
-Names of columns: 
-
-```{r examples.names, echo=T}
-names(myincidents)
-```
-
-
-## Using time series (xts)
-
-The dataset needs to be converted to a `xts` object. We can use one of the 2 dates: `timestamp` or `savedOn`.
-
-```
-require(xts)
-myp.xts <- xts(x = myincidents, order.by = parse_iso_8601(myincidents$savedOn))
-```
-
-## Plot time series
-
-Plot the number of weekly saves (attribute savedOn).
-
-```{r use.ts.plot, echo=FALSE, cache=TRUE}
-autoplot(xts.ts, geom='line') + 
-  theme_bw() + ylab("Incidents Timestamp") + ggtitle("Weekly number of Incidents timestamp")
-```
-
diff --git a/datasets/aeri_stacktraces/problems_analysis.html b/datasets/aeri_stacktraces/problems_analysis.html
deleted file mode 100755
index 93db465b3201312ed65de372c5a4cc2721ec9e09..0000000000000000000000000000000000000000
--- a/datasets/aeri_stacktraces/problems_analysis.html
+++ /dev/null
@@ -1,632 +0,0 @@
-<!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" />
-
-
-<meta name="author" content="Boris Baldassari – Castalia Solutions" />
-
-
-<title>StackTraces – Problems</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%2Ffont%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,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK"></script>
-<link href="data:text/css;charset=utf-8,%2Ehljs%2Dliteral%20%7B%0Acolor%3A%20%23990073%3B%0A%7D%0A%2Ehljs%2Dnumber%20%7B%0Acolor%3A%20%23099%3B%0A%7D%0A%2Ehljs%2Dcomment%20%7B%0Acolor%3A%20%23998%3B%0Afont%2Dstyle%3A%20italic%3B%0A%7D%0A%2Ehljs%2Dkeyword%20%7B%0Acolor%3A%20%23900%3B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0A%2Ehljs%2Dstring%20%7B%0Acolor%3A%20%23d14%3B%0A%7D%0A" rel="stylesheet" />
-<script src="data:application/x-javascript;base64,LyohIGhpZ2hsaWdodC5qcyB2OS4xMi4wIHwgQlNEMyBMaWNlbnNlIHwgZ2l0LmlvL2hsanNsaWNlbnNlICovCiFmdW5jdGlvbihlKXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93fHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGY7InVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzP2UoZXhwb3J0cyk6biYmKG4uaGxqcz1lKHt9KSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gbi5obGpzfSkpfShmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcihlLG4pe3ZhciB0PWUmJmUuZXhlYyhuKTtyZXR1cm4gdCYmMD09PXQuaW5kZXh9ZnVuY3Rpb24gYShlKXtyZXR1cm4gay50ZXN0KGUpfWZ1bmN0aW9uIGkoZSl7dmFyIG4sdCxyLGksbz1lLmNsYXNzTmFtZSsiICI7aWYobys9ZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5jbGFzc05hbWU6IiIsdD1CLmV4ZWMobykpcmV0dXJuIHcodFsxXSk/dFsxXToibm8taGlnaGxpZ2h0Ijtmb3Iobz1vLnNwbGl0KC9ccysvKSxuPTAscj1vLmxlbmd0aDtyPm47bisrKWlmKGk9b1tuXSxhKGkpfHx3KGkpKXJldHVybiBpfWZ1bmN0aW9uIG8oZSl7dmFyIG4sdD17fSxyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IobiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGUpe2ZvcihuIGluIGUpdFtuXT1lW25dfSksdH1mdW5jdGlvbiB1KGUpe3ZhciBuPVtdO3JldHVybiBmdW5jdGlvbiByKGUsYSl7Zm9yKHZhciBpPWUuZmlyc3RDaGlsZDtpO2k9aS5uZXh0U2libGluZykzPT09aS5ub2RlVHlwZT9hKz1pLm5vZGVWYWx1ZS5sZW5ndGg6MT09PWkubm9kZVR5cGUmJihuLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OmEsbm9kZTppfSksYT1yKGksYSksdChpKS5tYXRjaCgvYnJ8aHJ8aW1nfGlucHV0Lyl8fG4ucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDphLG5vZGU6aX0pKTtyZXR1cm4gYX0oZSwwKSxufWZ1bmN0aW9uIGMoZSxyLGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5sZW5ndGgmJnIubGVuZ3RoP2VbMF0ub2Zmc2V0IT09clswXS5vZmZzZXQ/ZVswXS5vZmZzZXQ8clswXS5vZmZzZXQ/ZTpyOiJzdGFydCI9PT1yWzBdLmV2ZW50P2U6cjplLmxlbmd0aD9lOnJ9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiByKGUpe3JldHVybiIgIitlLm5vZGVOYW1lKyc9IicrbihlLnZhbHVlKS5yZXBsYWNlKCciJywiJnF1b3Q7IikrJyInfXMrPSI8Iit0KGUpK0UubWFwLmNhbGwoZS5hdHRyaWJ1dGVzLHIpLmpvaW4oIiIpKyI+In1mdW5jdGlvbiB1KGUpe3MrPSI8LyIrdChlKSsiPiJ9ZnVuY3Rpb24gYyhlKXsoInN0YXJ0Ij09PWUuZXZlbnQ/bzp1KShlLm5vZGUpfWZvcih2YXIgbD0wLHM9IiIsZj1bXTtlLmxlbmd0aHx8ci5sZW5ndGg7KXt2YXIgZz1pKCk7aWYocys9bihhLnN1YnN0cmluZyhsLGdbMF0ub2Zmc2V0KSksbD1nWzBdLm9mZnNldCxnPT09ZSl7Zi5yZXZlcnNlKCkuZm9yRWFjaCh1KTtkbyBjKGcuc3BsaWNlKDAsMSlbMF0pLGc9aSgpO3doaWxlKGc9PT1lJiZnLmxlbmd0aCYmZ1swXS5vZmZzZXQ9PT1sKTtmLnJldmVyc2UoKS5mb3JFYWNoKG8pfWVsc2Uic3RhcnQiPT09Z1swXS5ldmVudD9mLnB1c2goZ1swXS5ub2RlKTpmLnBvcCgpLGMoZy5zcGxpY2UoMCwxKVswXSl9cmV0dXJuIHMrbihhLnN1YnN0cihsKSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS52JiYhZS5jYWNoZWRfdmFyaWFudHMmJihlLmNhY2hlZF92YXJpYW50cz1lLnYubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKGUse3Y6bnVsbH0sbil9KSksZS5jYWNoZWRfdmFyaWFudHN8fGUuZVcmJltvKGUpXXx8W2VdfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5zb3VyY2V8fGV9ZnVuY3Rpb24gdCh0LHIpe3JldHVybiBuZXcgUmVnRXhwKG4odCksIm0iKyhlLmNJPyJpIjoiIikrKHI/ImciOiIiKSl9ZnVuY3Rpb24gcihhLGkpe2lmKCFhLmNvbXBpbGVkKXtpZihhLmNvbXBpbGVkPSEwLGEuaz1hLmt8fGEuYkssYS5rKXt2YXIgbz17fSx1PWZ1bmN0aW9uKG4sdCl7ZS5jSSYmKHQ9dC50b0xvd2VyQ2FzZSgpKSx0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCJ8Iik7b1t0WzBdXT1bbix0WzFdP051bWJlcih0WzFdKToxXX0pfTsic3RyaW5nIj09dHlwZW9mIGEuaz91KCJrZXl3b3JkIixhLmspOngoYS5rKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3UoZSxhLmtbZV0pfSksYS5rPW99YS5sUj10KGEubHx8L1x3Ky8sITApLGkmJihhLmJLJiYoYS5iPSJcXGIoIithLmJLLnNwbGl0KCIgIikuam9pbigifCIpKyIpXFxiIiksYS5ifHwoYS5iPS9cQnxcYi8pLGEuYlI9dChhLmIpLGEuZXx8YS5lV3x8KGEuZT0vXEJ8XGIvKSxhLmUmJihhLmVSPXQoYS5lKSksYS50RT1uKGEuZSl8fCIiLGEuZVcmJmkudEUmJihhLnRFKz0oYS5lPyJ8IjoiIikraS50RSkpLGEuaSYmKGEuaVI9dChhLmkpKSxudWxsPT1hLnImJihhLnI9MSksYS5jfHwoYS5jPVtdKSxhLmM9QXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBsKCJzZWxmIj09PWU/YTplKX0pKSxhLmMuZm9yRWFjaChmdW5jdGlvbihlKXtyKGUsYSl9KSxhLnN0YXJ0cyYmcihhLnN0YXJ0cyxpKTt2YXIgYz1hLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJLPyJcXC4/KCIrZS5iKyIpXFwuPyI6ZS5ifSkuY29uY2F0KFthLnRFLGEuaV0pLm1hcChuKS5maWx0ZXIoQm9vbGVhbik7YS50PWMubGVuZ3RoP3QoYy5qb2luKCJ8IiksITApOntleGVjOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX19cihlKX1mdW5jdGlvbiBmKGUsdCxhLGkpe2Z1bmN0aW9uIG8oZSxuKXt2YXIgdCxhO2Zvcih0PTAsYT1uLmMubGVuZ3RoO2E+dDt0KyspaWYocihuLmNbdF0uYlIsZSkpcmV0dXJuIG4uY1t0XX1mdW5jdGlvbiB1KGUsbil7aWYocihlLmVSLG4pKXtmb3IoO2UuZW5kc1BhcmVudCYmZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9cmV0dXJuIGUuZVc/dShlLnBhcmVudCxuKTp2b2lkIDB9ZnVuY3Rpb24gYyhlLG4pe3JldHVybiFhJiZyKG4uaVIsZSl9ZnVuY3Rpb24gbChlLG4pe3ZhciB0PU4uY0k/blswXS50b0xvd2VyQ2FzZSgpOm5bMF07cmV0dXJuIGUuay5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5rW3RdfWZ1bmN0aW9uIHAoZSxuLHQscil7dmFyIGE9cj8iIjpJLmNsYXNzUHJlZml4LGk9JzxzcGFuIGNsYXNzPSInK2Esbz10PyIiOkM7cmV0dXJuIGkrPWUrJyI+JyxpK24rb31mdW5jdGlvbiBoKCl7dmFyIGUsdCxyLGE7aWYoIUUuaylyZXR1cm4gbihrKTtmb3IoYT0iIix0PTAsRS5sUi5sYXN0SW5kZXg9MCxyPUUubFIuZXhlYyhrKTtyOylhKz1uKGsuc3Vic3RyaW5nKHQsci5pbmRleCkpLGU9bChFLHIpLGU/KEIrPWVbMV0sYSs9cChlWzBdLG4oclswXSkpKTphKz1uKHJbMF0pLHQ9RS5sUi5sYXN0SW5kZXgscj1FLmxSLmV4ZWMoayk7cmV0dXJuIGErbihrLnN1YnN0cih0KSl9ZnVuY3Rpb24gZCgpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgRS5zTDtpZihlJiYheVtFLnNMXSlyZXR1cm4gbihrKTt2YXIgdD1lP2YoRS5zTCxrLCEwLHhbRS5zTF0pOmcoayxFLnNMLmxlbmd0aD9FLnNMOnZvaWQgMCk7cmV0dXJuIEUucj4wJiYoQis9dC5yKSxlJiYoeFtFLnNMXT10LnRvcCkscCh0Lmxhbmd1YWdlLHQudmFsdWUsITEsITApfWZ1bmN0aW9uIGIoKXtMKz1udWxsIT1FLnNMP2QoKTpoKCksaz0iIn1mdW5jdGlvbiB2KGUpe0wrPWUuY04/cChlLmNOLCIiLCEwKToiIixFPU9iamVjdC5jcmVhdGUoZSx7cGFyZW50Ont2YWx1ZTpFfX0pfWZ1bmN0aW9uIG0oZSxuKXtpZihrKz1lLG51bGw9PW4pcmV0dXJuIGIoKSwwO3ZhciB0PW8obixFKTtpZih0KXJldHVybiB0LnNraXA/ays9bjoodC5lQiYmKGsrPW4pLGIoKSx0LnJCfHx0LmVCfHwoaz1uKSksdih0LG4pLHQuckI/MDpuLmxlbmd0aDt2YXIgcj11KEUsbik7aWYocil7dmFyIGE9RTthLnNraXA/ays9bjooYS5yRXx8YS5lRXx8KGsrPW4pLGIoKSxhLmVFJiYoaz1uKSk7ZG8gRS5jTiYmKEwrPUMpLEUuc2tpcHx8KEIrPUUuciksRT1FLnBhcmVudDt3aGlsZShFIT09ci5wYXJlbnQpO3JldHVybiByLnN0YXJ0cyYmdihyLnN0YXJ0cywiIiksYS5yRT8wOm4ubGVuZ3RofWlmKGMobixFKSl0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgbGV4ZW1lICInK24rJyIgZm9yIG1vZGUgIicrKEUuY058fCI8dW5uYW1lZD4iKSsnIicpO3JldHVybiBrKz1uLG4ubGVuZ3RofHwxfXZhciBOPXcoZSk7aWYoIU4pdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlOiAiJytlKyciJyk7cyhOKTt2YXIgUixFPWl8fE4seD17fSxMPSIiO2ZvcihSPUU7UiE9PU47Uj1SLnBhcmVudClSLmNOJiYoTD1wKFIuY04sIiIsITApK0wpO3ZhciBrPSIiLEI9MDt0cnl7Zm9yKHZhciBNLGosTz0wOzspe2lmKEUudC5sYXN0SW5kZXg9TyxNPUUudC5leGVjKHQpLCFNKWJyZWFrO2o9bSh0LnN1YnN0cmluZyhPLE0uaW5kZXgpLE1bMF0pLE89TS5pbmRleCtqfWZvcihtKHQuc3Vic3RyKE8pKSxSPUU7Ui5wYXJlbnQ7Uj1SLnBhcmVudClSLmNOJiYoTCs9Qyk7cmV0dXJue3I6Qix2YWx1ZTpMLGxhbmd1YWdlOmUsdG9wOkV9fWNhdGNoKFQpe2lmKFQubWVzc2FnZSYmLTEhPT1ULm1lc3NhZ2UuaW5kZXhPZigiSWxsZWdhbCIpKXJldHVybntyOjAsdmFsdWU6bih0KX07dGhyb3cgVH19ZnVuY3Rpb24gZyhlLHQpe3Q9dHx8SS5sYW5ndWFnZXN8fHgoeSk7dmFyIHI9e3I6MCx2YWx1ZTpuKGUpfSxhPXI7cmV0dXJuIHQuZmlsdGVyKHcpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHQ9ZihuLGUsITEpO3QubGFuZ3VhZ2U9bix0LnI+YS5yJiYoYT10KSx0LnI+ci5yJiYoYT1yLHI9dCl9KSxhLmxhbmd1YWdlJiYoci5zZWNvbmRfYmVzdD1hKSxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIEkudGFiUmVwbGFjZXx8SS51c2VCUj9lLnJlcGxhY2UoTSxmdW5jdGlvbihlLG4pe3JldHVybiBJLnVzZUJSJiYiXG4iPT09ZT8iPGJyPiI6SS50YWJSZXBsYWNlP24ucmVwbGFjZSgvXHQvZyxJLnRhYlJlcGxhY2UpOiIifSk6ZX1mdW5jdGlvbiBoKGUsbix0KXt2YXIgcj1uP0xbbl06dCxhPVtlLnRyaW0oKV07cmV0dXJuIGUubWF0Y2goL1xiaGxqc1xiLyl8fGEucHVzaCgiaGxqcyIpLC0xPT09ZS5pbmRleE9mKHIpJiZhLnB1c2gociksYS5qb2luKCIgIikudHJpbSgpfWZ1bmN0aW9uIGQoZSl7dmFyIG4sdCxyLG8sbCxzPWkoZSk7YShzKXx8KEkudXNlQlI/KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksbi5pbm5lckhUTUw9ZS5pbm5lckhUTUwucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvPGJyWyBcL10qPi9nLCJcbiIpKTpuPWUsbD1uLnRleHRDb250ZW50LHI9cz9mKHMsbCwhMCk6ZyhsKSx0PXUobiksdC5sZW5ndGgmJihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLG8uaW5uZXJIVE1MPXIudmFsdWUsci52YWx1ZT1jKHQsdShvKSxsKSksci52YWx1ZT1wKHIudmFsdWUpLGUuaW5uZXJIVE1MPXIudmFsdWUsZS5jbGFzc05hbWU9aChlLmNsYXNzTmFtZSxzLHIubGFuZ3VhZ2UpLGUucmVzdWx0PXtsYW5ndWFnZTpyLmxhbmd1YWdlLHJlOnIucn0sci5zZWNvbmRfYmVzdCYmKGUuc2Vjb25kX2Jlc3Q9e2xhbmd1YWdlOnIuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UscmU6ci5zZWNvbmRfYmVzdC5yfSkpfWZ1bmN0aW9uIGIoZSl7ST1vKEksZSl9ZnVuY3Rpb24gdigpe2lmKCF2LmNhbGxlZCl7di5jYWxsZWQ9ITA7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicHJlIGNvZGUiKTtFLmZvckVhY2guY2FsbChlLGQpfX1mdW5jdGlvbiBtKCl7YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdiwhMSksYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsdiwhMSl9ZnVuY3Rpb24gTihuLHQpe3ZhciByPXlbbl09dChlKTtyLmFsaWFzZXMmJnIuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bn0pfWZ1bmN0aW9uIFIoKXtyZXR1cm4geCh5KX1mdW5jdGlvbiB3KGUpe3JldHVybiBlPShlfHwiIikudG9Mb3dlckNhc2UoKSx5W2VdfHx5W0xbZV1dfXZhciBFPVtdLHg9T2JqZWN0LmtleXMseT17fSxMPXt9LGs9L14obm8tP2hpZ2hsaWdodHxwbGFpbnx0ZXh0KSQvaSxCPS9cYmxhbmcoPzp1YWdlKT8tKFtcdy1dKylcYi9pLE09LygoXig8W14+XSs+fFx0fCkrfCg/OlxuKSkpL2dtLEM9Ijwvc3Bhbj4iLEk9e2NsYXNzUHJlZml4OiJobGpzLSIsdGFiUmVwbGFjZTpudWxsLHVzZUJSOiExLGxhbmd1YWdlczp2b2lkIDB9O3JldHVybiBlLmhpZ2hsaWdodD1mLGUuaGlnaGxpZ2h0QXV0bz1nLGUuZml4TWFya3VwPXAsZS5oaWdobGlnaHRCbG9jaz1kLGUuY29uZmlndXJlPWIsZS5pbml0SGlnaGxpZ2h0aW5nPXYsZS5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkPW0sZS5yZWdpc3Rlckxhbmd1YWdlPU4sZS5saXN0TGFuZ3VhZ2VzPVIsZS5nZXRMYW5ndWFnZT13LGUuaW5oZXJpdD1vLGUuSVI9IlthLXpBLVpdXFx3KiIsZS5VSVI9IlthLXpBLVpfXVxcdyoiLGUuTlI9IlxcYlxcZCsoXFwuXFxkKyk/IixlLkNOUj0iKC0/KShcXGIwW3hYXVthLWZBLUYwLTldK3woXFxiXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoW2VFXVstK10/XFxkKyk/KSIsZS5CTlI9IlxcYigwYlswMV0rKSIsZS5SU1I9IiF8IT18IT09fCV8JT18JnwmJnwmPXxcXCp8XFwqPXxcXCt8XFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+IixlLkJFPXtiOiJcXFxcW1xcc1xcU10iLHI6MH0sZS5BU009e2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGk6IlxcbiIsYzpbZS5CRV19LGUuUVNNPXtjTjoic3RyaW5nIixiOiciJyxlOiciJyxpOiJcXG4iLGM6W2UuQkVdfSxlLlBXTT17YjovXGIoYXxhbnx0aGV8YXJlfEknbXxpc24ndHxkb24ndHxkb2Vzbid0fHdvbid0fGJ1dHxqdXN0fHNob3VsZHxwcmV0dHl8c2ltcGx5fGVub3VnaHxnb25uYXxnb2luZ3x3dGZ8c298c3VjaHx3aWxsfHlvdXx5b3VyfHRoZXl8bGlrZXxtb3JlKVxiL30sZS5DPWZ1bmN0aW9uKG4sdCxyKXt2YXIgYT1lLmluaGVyaXQoe2NOOiJjb21tZW50IixiOm4sZTp0LGM6W119LHJ8fHt9KTtyZXR1cm4gYS5jLnB1c2goZS5QV00pLGEuYy5wdXNoKHtjTjoiZG9jdGFnIixiOiIoPzpUT0RPfEZJWE1FfE5PVEV8QlVHfFhYWCk6IixyOjB9KSxhfSxlLkNMQ009ZS5DKCIvLyIsIiQiKSxlLkNCQ009ZS5DKCIvXFwqIiwiXFwqLyIpLGUuSENNPWUuQygiIyIsIiQiKSxlLk5NPXtjTjoibnVtYmVyIixiOmUuTlIscjowfSxlLkNOTT17Y046Im51bWJlciIsYjplLkNOUixyOjB9LGUuQk5NPXtjTjoibnVtYmVyIixiOmUuQk5SLHI6MH0sZS5DU1NOTT17Y046Im51bWJlciIsYjplLk5SKyIoJXxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjfHB4fGRlZ3xncmFkfHJhZHx0dXJufHN8bXN8SHp8a0h6fGRwaXxkcGNtfGRwcHgpPyIscjowfSxlLlJNPXtjTjoicmVnZXhwIixiOi9cLy8sZTovXC9bZ2ltdXldKi8saTovXG4vLGM6W2UuQkUse2I6L1xbLyxlOi9cXS8scjowLGM6W2UuQkVdfV19LGUuVE09e2NOOiJ0aXRsZSIsYjplLklSLHI6MH0sZS5VVE09e2NOOiJ0aXRsZSIsYjplLlVJUixyOjB9LGUuTUVUSE9EX0dVQVJEPXtiOiJcXC5cXHMqIitlLlVJUixyOjB9LGV9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInNxbCIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5DKCItLSIsIiQiKTtyZXR1cm57Y0k6ITAsaTovWzw+e30qI10vLGM6W3tiSzoiYmVnaW4gZW5kIHN0YXJ0IGNvbW1pdCByb2xsYmFjayBzYXZlcG9pbnQgbG9jayBhbHRlciBjcmVhdGUgZHJvcCByZW5hbWUgY2FsbCBkZWxldGUgZG8gaGFuZGxlciBpbnNlcnQgbG9hZCByZXBsYWNlIHNlbGVjdCB0cnVuY2F0ZSB1cGRhdGUgc2V0IHNob3cgcHJhZ21hIGdyYW50IG1lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlIHVubG9jayBwdXJnZSByZXNldCBjaGFuZ2Ugc3RvcCBhbmFseXplIGNhY2hlIGZsdXNoIG9wdGltaXplIHJlcGFpciBraWxsIGluc3RhbGwgdW5pbnN0YWxsIGNoZWNrc3VtIHJlc3RvcmUgY2hlY2sgYmFja3VwIHJldm9rZSBjb21tZW50IixlOi87LyxlVzohMCxsOi9bXHdcLl0rLyxrOntrZXl3b3JkOiJhYm9ydCBhYnMgYWJzb2x1dGUgYWNjIGFjY2UgYWNjZXAgYWNjZXB0IGFjY2VzcyBhY2Nlc3NlZCBhY2Nlc3NpYmxlIGFjY291bnQgYWNvcyBhY3Rpb24gYWN0aXZhdGUgYWRkIGFkZHRpbWUgYWRtaW4gYWRtaW5pc3RlciBhZHZhbmNlZCBhZHZpc2UgYWVzX2RlY3J5cHQgYWVzX2VuY3J5cHQgYWZ0ZXIgYWdlbnQgYWdncmVnYXRlIGFsaSBhbGlhIGFsaWFzIGFsbG9jYXRlIGFsbG93IGFsdGVyIGFsd2F5cyBhbmFseXplIGFuY2lsbGFyeSBhbmQgYW55IGFueWRhdGEgYW55ZGF0YXNldCBhbnlzY2hlbWEgYW55dHlwZSBhcHBseSBhcmNoaXZlIGFyY2hpdmVkIGFyY2hpdmVsb2cgYXJlIGFzIGFzYyBhc2NpaSBhc2luIGFzc2VtYmx5IGFzc2VydGlvbiBhc3NvY2lhdGUgYXN5bmNocm9ub3VzIGF0IGF0YW4gYXRuMiBhdHRyIGF0dHJpIGF0dHJpYiBhdHRyaWJ1IGF0dHJpYnV0IGF0dHJpYnV0ZSBhdHRyaWJ1dGVzIGF1ZGl0IGF1dGhlbnRpY2F0ZWQgYXV0aGVudGljYXRpb24gYXV0aGlkIGF1dGhvcnMgYXV0byBhdXRvYWxsb2NhdGUgYXV0b2RibGluayBhdXRvZXh0ZW5kIGF1dG9tYXRpYyBhdmFpbGFiaWxpdHkgYXZnIGJhY2t1cCBiYWRmaWxlIGJhc2ljZmlsZSBiZWZvcmUgYmVnaW4gYmVnaW5uaW5nIGJlbmNobWFyayBiZXR3ZWVuIGJmaWxlIGJmaWxlX2Jhc2UgYmlnIGJpZ2ZpbGUgYmluIGJpbmFyeV9kb3VibGUgYmluYXJ5X2Zsb2F0IGJpbmxvZyBiaXRfYW5kIGJpdF9jb3VudCBiaXRfbGVuZ3RoIGJpdF9vciBiaXRfeG9yIGJpdG1hcCBibG9iX2Jhc2UgYmxvY2sgYmxvY2tzaXplIGJvZHkgYm90aCBib3VuZCBidWZmZXJfY2FjaGUgYnVmZmVyX3Bvb2wgYnVpbGQgYnVsayBieSBieXRlIGJ5dGVvcmRlcm1hcmsgYnl0ZXMgY2FjaGUgY2FjaGluZyBjYWxsIGNhbGxpbmcgY2FuY2VsIGNhcGFjaXR5IGNhc2NhZGUgY2FzY2FkZWQgY2FzZSBjYXN0IGNhdGFsb2cgY2F0ZWdvcnkgY2VpbCBjZWlsaW5nIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJfYmFzZSBjaGFyX2xlbmd0aCBjaGFyYWN0ZXJfbGVuZ3RoIGNoYXJhY3RlcnMgY2hhcmFjdGVyc2V0IGNoYXJpbmRleCBjaGFyc2V0IGNoYXJzZXRmb3JtIGNoYXJzZXRpZCBjaGVjayBjaGVja3N1bSBjaGVja3N1bV9hZ2cgY2hpbGQgY2hvb3NlIGNociBjaHVuayBjbGFzcyBjbGVhbnVwIGNsZWFyIGNsaWVudCBjbG9iIGNsb2JfYmFzZSBjbG9uZSBjbG9zZSBjbHVzdGVyX2lkIGNsdXN0ZXJfcHJvYmFiaWxpdHkgY2x1c3Rlcl9zZXQgY2x1c3RlcmluZyBjb2FsZXNjZSBjb2VyY2liaWxpdHkgY29sIGNvbGxhdGUgY29sbGF0aW9uIGNvbGxlY3QgY29sdSBjb2x1bSBjb2x1bW4gY29sdW1uX3ZhbHVlIGNvbHVtbnMgY29sdW1uc191cGRhdGVkIGNvbW1lbnQgY29tbWl0IGNvbXBhY3QgY29tcGF0aWJpbGl0eSBjb21waWxlZCBjb21wbGV0ZSBjb21wb3NpdGVfbGltaXQgY29tcG91bmQgY29tcHJlc3MgY29tcHV0ZSBjb25jYXQgY29uY2F0X3dzIGNvbmN1cnJlbnQgY29uZmlybSBjb25uIGNvbm5lYyBjb25uZWN0IGNvbm5lY3RfYnlfaXNjeWNsZSBjb25uZWN0X2J5X2lzbGVhZiBjb25uZWN0X2J5X3Jvb3QgY29ubmVjdF90aW1lIGNvbm5lY3Rpb24gY29uc2lkZXIgY29uc2lzdGVudCBjb25zdGFudCBjb25zdHJhaW50IGNvbnN0cmFpbnRzIGNvbnN0cnVjdG9yIGNvbnRhaW5lciBjb250ZW50IGNvbnRlbnRzIGNvbnRleHQgY29udHJpYnV0b3JzIGNvbnRyb2xmaWxlIGNvbnYgY29udmVydCBjb252ZXJ0X3R6IGNvcnIgY29ycl9rIGNvcnJfcyBjb3JyZXNwb25kaW5nIGNvcnJ1cHRpb24gY29zIGNvc3QgY291bnQgY291bnRfYmlnIGNvdW50ZWQgY292YXJfcG9wIGNvdmFyX3NhbXAgY3B1X3Blcl9jYWxsIGNwdV9wZXJfc2Vzc2lvbiBjcmMzMiBjcmVhdGUgY3JlYXRpb24gY3JpdGljYWwgY3Jvc3MgY3ViZSBjdW1lX2Rpc3QgY3VyZGF0ZSBjdXJyZW50IGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUgY3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyIGN1cnNvciBjdXJ0aW1lIGN1c3RvbWRhdHVtIGN5Y2xlIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRhdGFmaWxlIGRhdGFmaWxlcyBkYXRhbGVuZ3RoIGRhdGVfYWRkIGRhdGVfY2FjaGUgZGF0ZV9mb3JtYXQgZGF0ZV9zdWIgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlZnJvbXBhcnRzIGRhdGVuYW1lIGRhdGVwYXJ0IGRhdGV0aW1lMmZyb21wYXJ0cyBkYXkgZGF5X3RvX3NlY29uZCBkYXluYW1lIGRheW9mbW9udGggZGF5b2Z3ZWVrIGRheW9meWVhciBkYXlzIGRiX3JvbGVfY2hhbmdlIGRidGltZXpvbmUgZGRsIGRlYWxsb2NhdGUgZGVjbGFyZSBkZWNvZGUgZGVjb21wb3NlIGRlY3JlbWVudCBkZWNyeXB0IGRlZHVwbGljYXRlIGRlZiBkZWZhIGRlZmF1IGRlZmF1bCBkZWZhdWx0IGRlZmF1bHRzIGRlZmVycmVkIGRlZmkgZGVmaW4gZGVmaW5lIGRlZ3JlZXMgZGVsYXllZCBkZWxlZ2F0ZSBkZWxldGUgZGVsZXRlX2FsbCBkZWxpbWl0ZWQgZGVtYW5kIGRlbnNlX3JhbmsgZGVwdGggZGVxdWV1ZSBkZXNfZGVjcnlwdCBkZXNfZW5jcnlwdCBkZXNfa2V5X2ZpbGUgZGVzYyBkZXNjciBkZXNjcmkgZGVzY3JpYiBkZXNjcmliZSBkZXNjcmlwdG9yIGRldGVybWluaXN0aWMgZGlhZ25vc3RpY3MgZGlmZmVyZW5jZSBkaW1lbnNpb24gZGlyZWN0X2xvYWQgZGlyZWN0b3J5IGRpc2FibGUgZGlzYWJsZV9hbGwgZGlzYWxsb3cgZGlzYXNzb2NpYXRlIGRpc2NhcmRmaWxlIGRpc2Nvbm5lY3QgZGlza2dyb3VwIGRpc3RpbmN0IGRpc3RpbmN0cm93IGRpc3RyaWJ1dGUgZGlzdHJpYnV0ZWQgZGl2IGRvIGRvY3VtZW50IGRvbWFpbiBkb3RuZXQgZG91YmxlIGRvd25ncmFkZSBkcm9wIGR1bXBmaWxlIGR1cGxpY2F0ZSBkdXJhdGlvbiBlYWNoIGVkaXRpb24gZWRpdGlvbmFibGUgZWRpdGlvbnMgZWxlbWVudCBlbGxpcHNpcyBlbHNlIGVsc2lmIGVsdCBlbXB0eSBlbmFibGUgZW5hYmxlX2FsbCBlbmNsb3NlZCBlbmNvZGUgZW5jb2RpbmcgZW5jcnlwdCBlbmQgZW5kLWV4ZWMgZW5kaWFuIGVuZm9yY2VkIGVuZ2luZSBlbmdpbmVzIGVucXVldWUgZW50ZXJwcmlzZSBlbnRpdHllc2NhcGluZyBlb21vbnRoIGVycm9yIGVycm9ycyBlc2NhcGVkIGV2YWxuYW1lIGV2YWx1YXRlIGV2ZW50IGV2ZW50ZGF0YSBldmVudHMgZXhjZXB0IGV4Y2VwdGlvbiBleGNlcHRpb25zIGV4Y2hhbmdlIGV4Y2x1ZGUgZXhjbHVkaW5nIGV4ZWN1IGV4ZWN1dCBleGVjdXRlIGV4ZW1wdCBleGlzdHMgZXhpdCBleHAgZXhwaXJlIGV4cGxhaW4gZXhwb3J0IGV4cG9ydF9zZXQgZXh0ZW5kZWQgZXh0ZW50IGV4dGVybmFsIGV4dGVybmFsXzEgZXh0ZXJuYWxfMiBleHRlcm5hbGx5IGV4dHJhY3QgZmFpbGVkIGZhaWxlZF9sb2dpbl9hdHRlbXB0cyBmYWlsb3ZlciBmYWlsdXJlIGZhciBmYXN0IGZlYXR1cmVfc2V0IGZlYXR1cmVfdmFsdWUgZmV0Y2ggZmllbGQgZmllbGRzIGZpbGUgZmlsZV9uYW1lX2NvbnZlcnQgZmlsZXN5c3RlbV9saWtlX2xvZ2dpbmcgZmluYWwgZmluaXNoIGZpcnN0IGZpcnN0X3ZhbHVlIGZpeGVkIGZsYXNoX2NhY2hlIGZsYXNoYmFjayBmbG9vciBmbHVzaCBmb2xsb3dpbmcgZm9sbG93cyBmb3IgZm9yYWxsIGZvcmNlIGZvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyBmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lIGdsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4IGhpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCBpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSBpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzIGtlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxheCBsY2FzZSBsZWFkIGxlYWRpbmcgbGVhc3QgbGVhdmVzIGxlZnQgbGVuIGxlbmdodCBsZW5ndGggbGVzcyBsZXZlbCBsZXZlbHMgbGlicmFyeSBsaWtlIGxpa2UyIGxpa2U0IGxpa2VjIGxpbWl0IGxpbmVzIGxpbmsgbGlzdCBsaXN0YWdnIGxpdHRsZSBsbiBsb2FkIGxvYWRfZmlsZSBsb2IgbG9icyBsb2NhbCBsb2NhbHRpbWUgbG9jYWx0aW1lc3RhbXAgbG9jYXRlIGxvY2F0b3IgbG9jayBsb2NrZWQgbG9nIGxvZzEwIGxvZzIgbG9nZmlsZSBsb2dmaWxlcyBsb2dnaW5nIGxvZ2ljYWwgbG9naWNhbF9yZWFkc19wZXJfY2FsbCBsb2dvZmYgbG9nb24gbG9ncyBsb25nIGxvb3AgbG93IGxvd19wcmlvcml0eSBsb3dlciBscGFkIGxydHJpbSBsdHJpbSBtYWluIG1ha2Vfc2V0IG1ha2VkYXRlIG1ha2V0aW1lIG1hbmFnZWQgbWFuYWdlbWVudCBtYW51YWwgbWFwIG1hcHBpbmcgbWFzayBtYXN0ZXIgbWFzdGVyX3Bvc193YWl0IG1hdGNoIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1heCBtYXhleHRlbnRzIG1heGltaXplIG1heGluc3RhbmNlcyBtYXhsZW4gbWF4bG9nZmlsZXMgbWF4bG9naGlzdG9yeSBtYXhsb2dtZW1iZXJzIG1heHNpemUgbWF4dHJhbnMgbWQ1IG1lYXN1cmVzIG1lZGlhbiBtZWRpdW0gbWVtYmVyIG1lbWNvbXByZXNzIG1lbW9yeSBtZXJnZSBtaWNyb3NlY29uZCBtaWQgbWlncmF0aW9uIG1pbiBtaW5leHRlbnRzIG1pbmltdW0gbWluaW5nIG1pbnVzIG1pbnV0ZSBtaW52YWx1ZSBtaXNzaW5nIG1vZCBtb2RlIG1vZGVsIG1vZGlmaWNhdGlvbiBtb2RpZnkgbW9kdWxlIG1vbml0b3JpbmcgbW9udGggbW9udGhzIG1vdW50IG1vdmUgbW92ZW1lbnQgbXVsdGlzZXQgbXV0ZXggbmFtZSBuYW1lX2NvbnN0IG5hbWVzIG5hbiBuYXRpb25hbCBuYXRpdmUgbmF0dXJhbCBuYXYgbmNoYXIgbmNsb2IgbmVzdGVkIG5ldmVyIG5ldyBuZXdsaW5lIG5leHQgbmV4dHZhbCBubyBub193cml0ZV90b19iaW5sb2cgbm9hcmNoaXZlbG9nIG5vYXVkaXQgbm9iYWRmaWxlIG5vY2hlY2sgbm9jb21wcmVzcyBub2NvcHkgbm9jeWNsZSBub2RlbGF5IG5vZGlzY2FyZGZpbGUgbm9lbnRpdHllc2NhcGluZyBub2d1YXJhbnRlZSBub2tlZXAgbm9sb2dmaWxlIG5vbWFwcGluZyBub21heHZhbHVlIG5vbWluaW1pemUgbm9taW52YWx1ZSBub21vbml0b3Jpbmcgbm9uZSBub25lZGl0aW9uYWJsZSBub25zY2hlbWEgbm9vcmRlciBub3ByIG5vcHJvIG5vcHJvbSBub3Byb21wIG5vcHJvbXB0IG5vcmVseSBub3Jlc2V0bG9ncyBub3JldmVyc2Ugbm9ybWFsIG5vcm93ZGVwZW5kZW5jaWVzIG5vc2NoZW1hY2hlY2sgbm9zd2l0Y2ggbm90IG5vdGhpbmcgbm90aWNlIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSBudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciBvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSBvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSBwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgcGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4IHBjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyBwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiBwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiBwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlIHByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCBwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgcXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgcmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCByZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5IHJlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lIHJlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgcmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSByaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzIHJ0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCBzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2VjdGlvbiBzZWN1cmVmaWxlIHNlY3VyaXR5IHNlZWQgc2VnbWVudCBzZWxlY3Qgc2VsZiBzZXF1ZW5jZSBzZXF1ZW50aWFsIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2VydmVyZXJyb3Igc2Vzc2lvbiBzZXNzaW9uX3VzZXIgc2Vzc2lvbnNfcGVyX3VzZXIgc2V0IHNldHMgc2V0dGluZ3Mgc2hhIHNoYTEgc2hhMiBzaGFyZSBzaGFyZWQgc2hhcmVkX3Bvb2wgc2hvcnQgc2hvdyBzaHJpbmsgc2h1dGRvd24gc2lfYXZlcmFnZWNvbG9yIHNpX2NvbG9yaGlzdG9ncmFtIHNpX2ZlYXR1cmVsaXN0IHNpX3Bvc2l0aW9uYWxjb2xvciBzaV9zdGlsbGltYWdlIHNpX3RleHR1cmUgc2libGluZ3Mgc2lkIHNpZ24gc2luIHNpemUgc2l6ZV90IHNpemVzIHNraXAgc2xhdmUgc2xlZXAgc21hbGxkYXRldGltZWZyb21wYXJ0cyBzbWFsbGZpbGUgc25hcHNob3Qgc29tZSBzb25hbWUgc29ydCBzb3VuZGV4IHNvdXJjZSBzcGFjZSBzcGFyc2Ugc3BmaWxlIHNwbGl0IHNxbCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91bmRfcm93cyBzcWxfc21hbGxfcmVzdWx0IHNxbF92YXJpYW50X3Byb3BlcnR5IHNxbGNvZGUgc3FsZGF0YSBzcWxlcnJvciBzcWxuYW1lIHNxbHN0YXRlIHNxcnQgc3F1YXJlIHN0YW5kYWxvbmUgc3RhbmRieSBzdGFydCBzdGFydGluZyBzdGFydHVwIHN0YXRlbWVudCBzdGF0aWMgc3RhdGlzdGljcyBzdGF0c19iaW5vbWlhbF90ZXN0IHN0YXRzX2Nyb3NzdGFiIHN0YXRzX2tzX3Rlc3Qgc3RhdHNfbW9kZSBzdGF0c19td190ZXN0IHN0YXRzX29uZV93YXlfYW5vdmEgc3RhdHNfdF90ZXN0XyBzdGF0c190X3Rlc3RfaW5kZXAgc3RhdHNfdF90ZXN0X29uZSBzdGF0c190X3Rlc3RfcGFpcmVkIHN0YXRzX3dzcl90ZXN0IHN0YXR1cyBzdGQgc3RkZGV2IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RkZXYgc3RvcCBzdG9yYWdlIHN0b3JlIHN0b3JlZCBzdHIgc3RyX3RvX2RhdGUgc3RyYWlnaHRfam9pbiBzdHJjbXAgc3RyaWN0IHN0cmluZyBzdHJ1Y3Qgc3R1ZmYgc3R5bGUgc3ViZGF0ZSBzdWJwYXJ0aXRpb24gc3VicGFydGl0aW9ucyBzdWJzdGl0dXRhYmxlIHN1YnN0ciBzdWJzdHJpbmcgc3VidGltZSBzdWJ0cmluZ19pbmRleCBzdWJ0eXBlIHN1Y2Nlc3Mgc3VtIHN1c3BlbmQgc3dpdGNoIHN3aXRjaG9mZnNldCBzd2l0Y2hvdmVyIHN5bmMgc3luY2hyb25vdXMgc3lub255bSBzeXMgc3lzX3htbGFnZyBzeXNhc20gc3lzYXV4IHN5c2RhdGUgc3lzZGF0ZXRpbWVvZmZzZXQgc3lzZGJhIHN5c29wZXIgc3lzdGVtIHN5c3RlbV91c2VyIHN5c3V0Y2RhdGV0aW1lIHRhYmxlIHRhYmxlcyB0YWJsZXNwYWNlIHRhbiB0ZG8gdGVtcGxhdGUgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdGVydGlhcnlfd2VpZ2h0cyB0ZXN0IHRoYW4gdGhlbiB0aHJlYWQgdGhyb3VnaCB0aWVyIHRpZXMgdGltZSB0aW1lX2Zvcm1hdCB0aW1lX3pvbmUgdGltZWRpZmYgdGltZWZyb21wYXJ0cyB0aW1lb3V0IHRpbWVzdGFtcCB0aW1lc3RhbXBhZGQgdGltZXN0YW1wZGlmZiB0aW1lem9uZV9hYmJyIHRpbWV6b25lX21pbnV0ZSB0aW1lem9uZV9yZWdpb24gdG8gdG9fYmFzZTY0IHRvX2RhdGUgdG9fZGF5cyB0b19zZWNvbmRzIHRvZGF0ZXRpbWVvZmZzZXQgdHJhY2UgdHJhY2tpbmcgdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25hbCB0cmFuc2xhdGUgdHJhbnNsYXRpb24gdHJlYXQgdHJpZ2dlciB0cmlnZ2VyX25lc3RsZXZlbCB0cmlnZ2VycyB0cmltIHRydW5jYXRlIHRyeV9jYXN0IHRyeV9jb252ZXJ0IHRyeV9wYXJzZSB0eXBlIHViMSB1YjIgdWI0IHVjYXNlIHVuYXJjaGl2ZWQgdW5ib3VuZGVkIHVuY29tcHJlc3MgdW5kZXIgdW5kbyB1bmhleCB1bmljb2RlIHVuaWZvcm0gdW5pbnN0YWxsIHVuaW9uIHVuaXF1ZSB1bml4X3RpbWVzdGFtcCB1bmtub3duIHVubGltaXRlZCB1bmxvY2sgdW5waXZvdCB1bnJlY292ZXJhYmxlIHVuc2FmZSB1bnNpZ25lZCB1bnRpbCB1bnRydXN0ZWQgdW51c2FibGUgdW51c2VkIHVwZGF0ZSB1cGRhdGVkIHVwZ3JhZGUgdXBwZWQgdXBwZXIgdXBzZXJ0IHVybCB1cm93aWQgdXNhYmxlIHVzYWdlIHVzZSB1c2Vfc3RvcmVkX291dGxpbmVzIHVzZXIgdXNlcl9kYXRhIHVzZXJfcmVzb3VyY2VzIHVzZXJzIHVzaW5nIHV0Y19kYXRlIHV0Y190aW1lc3RhbXAgdXVpZCB1dWlkX3Nob3J0IHZhbGlkYXRlIHZhbGlkYXRlX3Bhc3N3b3JkX3N0cmVuZ3RoIHZhbGlkYXRpb24gdmFsaXN0IHZhbHVlIHZhbHVlcyB2YXIgdmFyX3NhbXAgdmFyY2hhcmMgdmFyaSB2YXJpYSB2YXJpYWIgdmFyaWFibCB2YXJpYWJsZSB2YXJpYWJsZXMgdmFyaWFuY2UgdmFycCB2YXJyYXcgdmFycmF3YyB2YXJyYXkgdmVyaWZ5IHZlcnNpb24gdmVyc2lvbnMgdmlldyB2aXJ0dWFsIHZpc2libGUgdm9pZCB3YWl0IHdhbGxldCB3YXJuaW5nIHdhcm5pbmdzIHdlZWsgd2Vla2RheSB3ZWVrb2Z5ZWFyIHdlbGxmb3JtZWQgd2hlbiB3aGVuZSB3aGVuZXYgd2hlbmV2ZSB3aGVuZXZlciB3aGVyZSB3aGlsZSB3aGl0ZXNwYWNlIHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkIHhkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgeG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlayIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSBudWxsIixidWlsdF9pbjoiYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sZWFuIGNoYXIgY2hhcmFjdGVyIGRhdGUgZGVjIGRlY2ltYWwgZmxvYXQgaW50IGludDggaW50ZWdlciBpbnRlcnZhbCBudW1iZXIgbnVtZXJpYyByZWFsIHJlY29yZCBzZXJpYWwgc2VyaWFsOCBzbWFsbGludCB0ZXh0IHZhcmNoYXIgdmFyeWluZyB2b2lkIn0sYzpbe2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGM6W2UuQkUse2I6IicnIn1dfSx7Y046InN0cmluZyIsYjonIicsZTonIicsYzpbZS5CRSx7YjonIiInfV19LHtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFXX0sZS5DTk0sZS5DQkNNLHRdfSxlLkNCQ00sdF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJyIixmdW5jdGlvbihlKXt2YXIgcj0iKFthLXpBLVpdfFxcLlthLXpBLVouXSlbYS16QS1aMC05Ll9dKiI7cmV0dXJue2M6W2UuSENNLHtiOnIsbDpyLGs6e2tleXdvcmQ6ImZ1bmN0aW9uIGlmIGluIGJyZWFrIG5leHQgcmVwZWF0IGVsc2UgZm9yIHJldHVybiBzd2l0Y2ggd2hpbGUgdHJ5IHRyeUNhdGNoIHN0b3Agd2FybmluZyByZXF1aXJlIGxpYnJhcnkgYXR0YWNoIGRldGFjaCBzb3VyY2Ugc2V0TWV0aG9kIHNldEdlbmVyaWMgc2V0R3JvdXBHZW5lcmljIHNldENsYXNzIC4uLiIsbGl0ZXJhbDoiTlVMTCBOQSBUUlVFIEZBTFNFIFQgRiBJbmYgTmFOIE5BX2ludGVnZXJffDEwIE5BX3JlYWxffDEwIE5BX2NoYXJhY3Rlcl98MTAgTkFfY29tcGxleF98MTAifSxyOjB9LHtjTjoibnVtYmVyIixiOiIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrXFwuKD8hXFxkKSg/OmlcXGIpPyIscjowfSx7Y046Im51bWJlciIsYjoiXFxkKyg/OlxcLlxcZCopPyg/OltlRV1bK1xcLV0/XFxkKik/aT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixyOjB9LHtiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixjOltlLkJFXSx2Olt7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJwZXJsIixmdW5jdGlvbihlKXt2YXIgdD0iZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjIG1hIHN5c3dyaXRlIHRyIHNlbmQgdW1hc2sgc3lzb3BlbiBzaG13cml0ZSB2ZWMgcXggdXRpbWUgbG9jYWwgb2N0IHNlbWN0bCBsb2NhbHRpbWUgcmVhZHBpcGUgZG8gcmV0dXJuIGZvcm1hdCByZWFkIHNwcmludGYgZGJtb3BlbiBwb3AgZ2V0cGdycCBub3QgZ2V0cHduYW0gcmV3aW5kZGlyIHFxZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50IHNodXRkb3duIGR1bXAgY2hvbXAgY29ubmVjdCBnZXRzb2NrbmFtZSBkaWUgc29ja2V0cGFpciBjbG9zZSBmbG9jayBleGlzdHMgaW5kZXggc2htZ2V0c3ViIGZvciBlbmRwd2VudCByZWRvIGxzdGF0IG1zZ2N0bCBzZXRwZ3JwIGFicyBleGl0IHNlbGVjdCBwcmludCByZWYgZ2V0aG9zdGJ5YWRkciB1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCBnZXRwZWVybmFtZSByZWN2IGxvZyBzZXRzb2Nrb3B0IGNvcyBsYXN0IHJldmVyc2UgZ2V0aG9zdGJ5bmFtZSBnZXRncm5hbSBzdHVkeSBmb3JtbGluZSBlbmRob3N0ZW50IHRpbWVzIGNob3AgbGVuZ3RoIGdldGhvc3RlbnQgZ2V0bmV0ZW50IHBhY2sgZ2V0cHJvdG9lbnQgZ2V0c2VydmJ5bmFtZSByYW5kIG1rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgZ2V0c29ja29wdCBnZXRwcmlvcml0eSByaW5kZXggd2FudGFycmF5IGhleCBzeXN0ZW0gZ2V0c2VydmJ5cG9ydCBlbmRzZXJ2ZW50IGludCBjaHIgdW50aWUgcm1kaXIgcHJvdG90eXBlIHRlbGwgbGlzdGVuIGZvcmsgc2htcmVhZCB1Y2ZpcnN0IHNldHByb3RvZW50IGVsc2Ugc3lzc2VlayBsaW5rIGdldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciBsY2ZpcnN0IHVudGlsIHdhcm4gd2hpbGUgdmFsdWVzIHNoaWZ0IHRlbGxkaXIgZ2V0cHd1aWQgbXkgZ2V0cHJvdG9ieW51bWJlciBkZWxldGUgYW5kIHNvcnQgdWMgZGVmaW5lZCBzcmFuZCBhY2NlcHQgcGFja2FnZSBzZWVrZGlyIGdldHByb3RvYnluYW1lIHNlbW9wIG91ciByZW5hbWUgc2VlayBpZiBxfDAgY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoIHRpZSBzaW4gbXNnZ2V0IG1hcCBzdGF0IGdldGxvZ2luIHVubGVzcyBlbHNpZiB0cnVuY2F0ZSBleGVjIGtleXMgZ2xvYiB0aWVkIGNsb3NlZGlyaW9jdGwgc29ja2V0IHJlYWRsaW5rIGV2YWwgeG9yIHJlYWRsaW5lIGJpbm1vZGUgc2V0c2VydmVudCBlb2Ygb3JkIGJpbmQgYWxhcm0gcGlwZSBhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbiIscj17Y046InN1YnN0IixiOiJbJEBdXFx7IixlOiJcXH0iLGs6dH0scz17YjoiLT57IixlOiJ9In0sbj17djpbe2I6L1wkXGQvfSx7YjovW1wkJUBdKFxeXHdcYnwjXHcrKDo6XHcrKSp8e1x3K318XHcrKDo6XHcqKSopL30se2I6L1tcJCVAXVteXHNcd3tdLyxyOjB9XX0saT1bZS5CRSxyLG5dLG89W24sZS5IQ00sZS5DKCJeXFw9XFx3IiwiXFw9Y3V0Iix7ZVc6ITB9KSxzLHtjTjoic3RyaW5nIixjOmksdjpbe2I6InFbcXd4cl0/XFxzKlxcKCIsZToiXFwpIixyOjV9LHtiOiJxW3F3eHJdP1xccypcXFsiLGU6IlxcXSIscjo1fSx7YjoicVtxd3hyXT9cXHMqXFx7IixlOiJcXH0iLHI6NX0se2I6InFbcXd4cl0/XFxzKlxcfCIsZToiXFx8IixyOjV9LHtiOiJxW3F3eHJdP1xccypcXDwiLGU6IlxcPiIscjo1fSx7YjoicXdcXHMrcSIsZToicSIscjo1fSx7YjoiJyIsZToiJyIsYzpbZS5CRV19LHtiOiciJyxlOiciJ30se2I6ImAiLGU6ImAiLGM6W2UuQkVdfSx7Yjoie1xcdyt9IixjOltdLHI6MH0se2I6Ii0/XFx3K1xccypcXD1cXD4iLGM6W10scjowfV19LHtjTjoibnVtYmVyIixiOiIoXFxiMFswLTdfXSspfChcXGIweFswLTlhLWZBLUZfXSspfChcXGJbMS05XVswLTlfXSooXFwuWzAtOV9dKyk/KXxbMF9dXFxiIixyOjB9LHtiOiIoXFwvXFwvfCIrZS5SU1IrInxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXGIpXFxzKiIsazoic3BsaXQgcmV0dXJuIHByaW50IHJldmVyc2UgZ3JlcCIscjowLGM6W2UuSENNLHtjTjoicmVnZXhwIixiOiIoc3x0cnx5KS8oXFxcXC58W14vXSkqLyhcXFxcLnxbXi9dKSovW2Etel0qIixyOjEwfSx7Y046InJlZ2V4cCIsYjoiKG18cXIpPy8iLGU6Ii9bYS16XSoiLGM6W2UuQkVdLHI6MH1dfSx7Y046ImZ1bmN0aW9uIixiSzoic3ViIixlOiIoXFxzKlxcKC4qP1xcKSk/Wzt7XSIsZUU6ITAscjo1LGM6W2UuVE1dfSx7YjoiLVxcd1xcYiIscjowfSx7YjoiXl9fREFUQV9fJCIsZToiXl9fRU5EX18kIixzTDoibW9qb2xpY2lvdXMiLGM6W3tiOiJeQEAuKiIsZToiJCIsY046ImNvbW1lbnQifV19XTtyZXR1cm4gci5jPW8scy5jPW8se2FsaWFzZXM6WyJwbCIsInBtIl0sbDovW1x3XC5dKy8sazp0LGM6b319KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImluaSIsZnVuY3Rpb24oZSl7dmFyIGI9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOiInJyciLGU6IicnJyIscjoxMH0se2I6JyIiIicsZTonIiIiJyxyOjEwfSx7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfTtyZXR1cm57YWxpYXNlczpbInRvbWwiXSxjSTohMCxpOi9cUy8sYzpbZS5DKCI7IiwiJCIpLGUuSENNLHtjTjoic2VjdGlvbiIsYjovXlxzKlxbKy8sZTovXF0rL30se2I6L15bYS16MC05XFtcXV8tXStccyo9XHMqLyxlOiIkIixyQjohMCxjOlt7Y046ImF0dHIiLGI6L1thLXowLTlcW1xdXy1dKy99LHtiOi89LyxlVzohMCxyOjAsYzpbe2NOOiJsaXRlcmFsIixiOi9cYm9ufG9mZnx0cnVlfGZhbHNlfHllc3xub1xiL30se2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQiXVtcd1xkX10qL30se2I6L1wkXHsoLio/KX0vfV19LGIse2NOOiJudW1iZXIiLGI6LyhbXCtcLV0rKT9bXGRdK19bXGRfXSsvfSxlLk5NXX1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJkaWZmIixmdW5jdGlvbihlKXtyZXR1cm57YWxpYXNlczpbInBhdGNoIl0sYzpbe2NOOiJtZXRhIixyOjEwLHY6W3tiOi9eQEAgK1wtXGQrLFxkKyArXCtcZCssXGQrICtAQCQvfSx7YjovXlwqXCpcKiArXGQrLFxkKyArXCpcKlwqXCokL30se2I6L15cLVwtXC0gK1xkKyxcZCsgK1wtXC1cLVwtJC99XX0se2NOOiJjb21tZW50Iix2Olt7YjovSW5kZXg6IC8sZTovJC99LHtiOi89ezMsfS8sZTovJC99LHtiOi9eXC17M30vLGU6LyQvfSx7YjovXlwqezN9IC8sZTovJC99LHtiOi9eXCt7M30vLGU6LyQvfSx7YjovXCp7NX0vLGU6L1wqezV9JC99XX0se2NOOiJhZGRpdGlvbiIsYjoiXlxcKyIsZToiJCJ9LHtjTjoiZGVsZXRpb24iLGI6Il5cXC0iLGU6IiQifSx7Y046ImFkZGl0aW9uIixiOiJeXFwhIixlOiIkIn1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiZ28iLGZ1bmN0aW9uKGUpe3ZhciB0PXtrZXl3b3JkOiJicmVhayBkZWZhdWx0IGZ1bmMgaW50ZXJmYWNlIHNlbGVjdCBjYXNlIG1hcCBzdHJ1Y3QgY2hhbiBlbHNlIGdvdG8gcGFja2FnZSBzd2l0Y2ggY29uc3QgZmFsbHRocm91Z2ggaWYgcmFuZ2UgdHlwZSBjb250aW51ZSBmb3IgaW1wb3J0IHJldHVybiB2YXIgZ28gZGVmZXIgYm9vbCBieXRlIGNvbXBsZXg2NCBjb21wbGV4MTI4IGZsb2F0MzIgZmxvYXQ2NCBpbnQ4IGludDE2IGludDMyIGludDY0IHN0cmluZyB1aW50OCB1aW50MTYgdWludDMyIHVpbnQ2NCBpbnQgdWludCB1aW50cHRyIHJ1bmUiLGxpdGVyYWw6InRydWUgZmFsc2UgaW90YSBuaWwiLGJ1aWx0X2luOiJhcHBlbmQgY2FwIGNsb3NlIGNvbXBsZXggY29weSBpbWFnIGxlbiBtYWtlIG5ldyBwYW5pYyBwcmludCBwcmludGxuIHJlYWwgcmVjb3ZlciBkZWxldGUifTtyZXR1cm57YWxpYXNlczpbImdvbGFuZyJdLGs6dCxpOiI8LyIsYzpbZS5DTENNLGUuQ0JDTSx7Y046InN0cmluZyIsdjpbZS5RU00se2I6IiciLGU6IlteXFxcXF0nIn0se2I6ImAiLGU6ImAifV19LHtjTjoibnVtYmVyIix2Olt7YjplLkNOUisiW2RmbHNpXSIscjoxfSxlLkNOTV19LHtiOi86PS99LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jIixlOi9ccypcey8sZUU6ITAsYzpbZS5UTSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnQsaTovWyInXS99XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiYmFzaCIsZnVuY3Rpb24oZSl7dmFyIHQ9e2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQjQF1bXHdcZF9dKi99LHtiOi9cJFx7KC4qPyl9L31dfSxzPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLHQse2NOOiJ2YXJpYWJsZSIsYjovXCRcKC8sZTovXCkvLGM6W2UuQkVdfV19LGE9e2NOOiJzdHJpbmciLGI6LycvLGU6LycvfTtyZXR1cm57YWxpYXNlczpbInNoIiwienNoIl0sbDovXGItP1thLXpcLl9dK1xiLyxrOntrZXl3b3JkOiJpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24iLGxpdGVyYWw6InRydWUgZmFsc2UiLGJ1aWx0X2luOiJicmVhayBjZCBjb250aW51ZSBldmFsIGV4ZWMgZXhpdCBleHBvcnQgZ2V0b3B0cyBoYXNoIHB3ZCByZWFkb25seSByZXR1cm4gc2hpZnQgdGVzdCB0aW1lcyB0cmFwIHVtYXNrIHVuc2V0IGFsaWFzIGJpbmQgYnVpbHRpbiBjYWxsZXIgY29tbWFuZCBkZWNsYXJlIGVjaG8gZW5hYmxlIGhlbHAgbGV0IGxvY2FsIGxvZ291dCBtYXBmaWxlIHByaW50ZiByZWFkIHJlYWRhcnJheSBzb3VyY2UgdHlwZSB0eXBlc2V0IHVsaW1pdCB1bmFsaWFzIHNldCBzaG9wdCBhdXRvbG9hZCBiZyBiaW5ka2V5IGJ5ZSBjYXAgY2hkaXIgY2xvbmUgY29tcGFyZ3VtZW50cyBjb21wY2FsbCBjb21wY3RsIGNvbXBkZXNjcmliZSBjb21wZmlsZXMgY29tcGdyb3VwcyBjb21wcXVvdGUgY29tcHRhZ3MgY29tcHRyeSBjb21wdmFsdWVzIGRpcnMgZGlzYWJsZSBkaXNvd24gZWNob3RjIGVjaG90aSBlbXVsYXRlIGZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgcHVzaGQgcHVzaGxuIHJlaGFzaCBzY2hlZCBzZXRjYXAgc2V0b3B0IHN0YXQgc3VzcGVuZCB0dHljdGwgdW5mdW5jdGlvbiB1bmhhc2ggdW5saW1pdCB1bnNldG9wdCB2YXJlZCB3YWl0IHdoZW5jZSB3aGVyZSB3aGljaCB6Y29tcGlsZSB6Zm9ybWF0IHpmdHAgemxlIHptb2Rsb2FkIHpwYXJzZW9wdHMgenByb2YgenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwIixfOiItbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEifSxjOlt7Y046Im1ldGEiLGI6L14jIVteXG5dK3NoXHMqJC8scjoxMH0se2NOOiJmdW5jdGlvbiIsYjovXHdbXHdcZF9dKlxzKlwoXHMqXClccypcey8sckI6ITAsYzpbZS5pbmhlcml0KGUuVE0se2I6L1x3W1x3XGRfXSovfSldLHI6MH0sZS5IQ00scyxhLHRdfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicHl0aG9uIixmdW5jdGlvbihlKXt2YXIgcj17a2V5d29yZDoiYW5kIGVsaWYgaXMgZ2xvYmFsIGFzIGluIGlmIGZyb20gcmFpc2UgZm9yIGV4Y2VwdCBmaW5hbGx5IHByaW50IGltcG9ydCBwYXNzIHJldHVybiBleGVjIGVsc2UgYnJlYWsgbm90IHdpdGggY2xhc3MgYXNzZXJ0IHlpZWxkIHRyeSB3aGlsZSBjb250aW51ZSBkZWwgb3IgZGVmIGxhbWJkYSBhc3luYyBhd2FpdCBub25sb2NhbHwxMCBOb25lIFRydWUgRmFsc2UiLGJ1aWx0X2luOiJFbGxpcHNpcyBOb3RJbXBsZW1lbnRlZCJ9LGI9e2NOOiJtZXRhIixiOi9eKD4+PnxcLlwuXC4pIC99LGM9e2NOOiJzdWJzdCIsYjovXHsvLGU6L1x9LyxrOnIsaTovIy99LGE9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOi8odXxiKT9yPycnJy8sZTovJycnLyxjOltiXSxyOjEwfSx7YjovKHV8Yik/cj8iIiIvLGU6LyIiIi8sYzpbYl0scjoxMH0se2I6LyhmcnxyZnxmKScnJy8sZTovJycnLyxjOltiLGNdfSx7YjovKGZyfHJmfGYpIiIiLyxlOi8iIiIvLGM6W2IsY119LHtiOi8odXxyfHVyKScvLGU6LycvLHI6MTB9LHtiOi8odXxyfHVyKSIvLGU6LyIvLHI6MTB9LHtiOi8oYnxiciknLyxlOi8nL30se2I6LyhifGJyKSIvLGU6LyIvfSx7YjovKGZyfHJmfGYpJy8sZTovJy8sYzpbY119LHtiOi8oZnJ8cmZ8ZikiLyxlOi8iLyxjOltjXX0sZS5BU00sZS5RU01dfSxzPXtjTjoibnVtYmVyIixyOjAsdjpbe2I6ZS5CTlIrIltsTGpKXT8ifSx7YjoiXFxiKDBvWzAtN10rKVtsTGpKXT8ifSx7YjplLkNOUisiW2xMakpdPyJ9XX0saT17Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxjOlsic2VsZiIsYixzLGFdfTtyZXR1cm4gYy5jPVthLHMsYl0se2FsaWFzZXM6WyJweSIsImd5cCJdLGs6cixpOi8oPFwvfC0+fFw/KXw9Pi8sYzpbYixzLGEsZS5IQ00se3Y6W3tjTjoiZnVuY3Rpb24iLGJLOiJkZWYifSx7Y046ImNsYXNzIixiSzoiY2xhc3MifV0sZTovOi8saTovWyR7PTtcbixdLyxjOltlLlVUTSxpLHtiOi8tPi8sZVc6ITAsazoiTm9uZSJ9XX0se2NOOiJtZXRhIixiOi9eW1x0IF0qQC8sZTovJC99LHtiOi9cYihwcmludHxleGVjKVwoL31dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianVsaWEiLGZ1bmN0aW9uKGUpe3ZhciByPXtrZXl3b3JkOiJpbiBpc2Egd2hlcmUgYmFyZW1vZHVsZSBiZWdpbiBicmVhayBjYXRjaCBjY2FsbCBjb25zdCBjb250aW51ZSBkbyBlbHNlIGVsc2VpZiBlbmQgZXhwb3J0IGZhbHNlIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbXBvcnQgaW1wb3J0YWxsIGxldCBsb2NhbCBtYWNybyBtb2R1bGUgcXVvdGUgcmV0dXJuIHRydWUgdHJ5IHVzaW5nIHdoaWxlIHR5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAiLGxpdGVyYWw6InRydWUgZmFsc2UgQVJHUyBDX05VTEwgRGV2TnVsbCBFTkRJQU5fQk9NIEVOViBJIEluZiBJbmYxNiBJbmYzMiBJbmY2NCBJbnNlcnRpb25Tb3J0IEpVTElBX0hPTUUgTE9BRF9QQVRIIE1lcmdlU29ydCBOYU4gTmFOMTYgTmFOMzIgTmFONjQgUFJPR1JBTV9GSUxFIFF1aWNrU29ydCBSb3VuZERvd24gUm91bmRGcm9tWmVybyBSb3VuZE5lYXJlc3QgUm91bmROZWFyZXN0VGllc0F3YXkgUm91bmROZWFyZXN0VGllc1VwIFJvdW5kVG9aZXJvIFJvdW5kVXAgU1RERVJSIFNURElOIFNURE9VVCBWRVJTSU9OIGNhdGFsYW4gZXwwIGV1fDAgZXVsZXJnYW1tYSBnb2xkZW4gaW0gbm90aGluZyBwaSDOsyDPgCDPhiAiLGJ1aWx0X2luOiJBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0IEFic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsIEJpZ0Zsb2F0IEJpZ0ludCBCaXRBcnJheSBCaXRNYXRyaXggQml0VmVjdG9yIEJvb2wgQm91bmRzRXJyb3IgQnVmZmVyU3RyZWFtIENhY2hpbmdQb29sIENhcHR1cmVkRXhjZXB0aW9uIENhcnRlc2lhbkluZGV4IENhcnRlc2lhblJhbmdlIENjaGFyIENkb3VibGUgQ2Zsb2F0IENoYW5uZWwgQ2hhciBDaW50IENpbnRtYXhfdCBDbG9uZyBDbG9uZ2xvbmcgQ2x1c3Rlck1hbmFnZXIgQ21kIENvZGVJbmZvIENvbG9uIENvbXBsZXggQ29tcGxleDEyOCBDb21wbGV4MzIgQ29tcGxleDY0IENvbXBvc2l0ZUV4Y2VwdGlvbiBDb25kaXRpb24gQ29uakFycmF5IENvbmpNYXRyaXggQ29ualZlY3RvciBDcHRyZGlmZl90IENzaG9ydCBDc2l6ZV90IENzc2l6ZV90IENzdHJpbmcgQ3VjaGFyIEN1aW50IEN1aW50bWF4X3QgQ3Vsb25nIEN1bG9uZ2xvbmcgQ3VzaG9ydCBDd2NoYXJfdCBDd3N0cmluZyBEYXRhVHlwZSBEYXRlIERhdGVGb3JtYXQgRGF0ZVRpbWUgRGVuc2VBcnJheSBEZW5zZU1hdHJpeCBEZW5zZVZlY09yTWF0IERlbnNlVmVjdG9yIERpYWdvbmFsIERpY3QgRGltZW5zaW9uTWlzbWF0Y2ggRGltcyBEaXJlY3RJbmRleFN0cmluZyBEaXNwbGF5IERpdmlkZUVycm9yIERvbWFpbkVycm9yIEVPRkVycm9yIEVhY2hMaW5lIEVudW0gRW51bWVyYXRlIEVycm9yRXhjZXB0aW9uIEV4Y2VwdGlvbiBFeHBvbmVudGlhbEJhY2tPZmYgRXhwciBGYWN0b3JpemF0aW9uIEZpbGVNb25pdG9yIEZsb2F0MTYgRmxvYXQzMiBGbG9hdDY0IEZ1bmN0aW9uIEZ1dHVyZSBHbG9iYWxSZWYgR290b05vZGUgSFRNTCBIZXJtaXRpYW4gSU8gSU9CdWZmZXIgSU9Db250ZXh0IElPU3RyZWFtIElQQWRkciBJUHY0IElQdjYgSW5kZXhDYXJ0ZXNpYW4gSW5kZXhMaW5lYXIgSW5kZXhTdHlsZSBJbmV4YWN0RXJyb3IgSW5pdEVycm9yIEludCBJbnQxMjggSW50MTYgSW50MzIgSW50NjQgSW50OCBJbnRTZXQgSW50ZWdlciBJbnRlcnJ1cHRFeGNlcHRpb24gSW52YWxpZFN0YXRlRXhjZXB0aW9uIElycmF0aW9uYWwgS2V5RXJyb3IgTGFiZWxOb2RlIExpblNwYWNlIExpbmVOdW1iZXJOb2RlIExvYWRFcnJvciBMb3dlclRyaWFuZ3VsYXIgTUlNRSBNYXRyaXggTWVyc2VubmVUd2lzdGVyIE1ldGhvZCBNZXRob2RFcnJvciBNZXRob2RUYWJsZSBNb2R1bGUgTlR1cGxlIE5ld3Zhck5vZGUgTnVsbEV4Y2VwdGlvbiBOdWxsYWJsZSBOdW1iZXIgT2JqZWN0SWREaWN0IE9yZGluYWxSYW5nZSBPdXRPZk1lbW9yeUVycm9yIE92ZXJmbG93RXJyb3IgUGFpciBQYXJzZUVycm9yIFBhcnRpYWxRdWlja1NvcnQgUGVybXV0ZWREaW1zQXJyYXkgUGlwZSBQb2xsaW5nRmlsZVdhdGNoZXIgUHJvY2Vzc0V4aXRlZEV4Y2VwdGlvbiBQdHIgUXVvdGVOb2RlIFJhbmRvbURldmljZSBSYW5nZSBSYW5nZUluZGV4IFJhdGlvbmFsIFJhd0ZEIFJlYWRPbmx5TWVtb3J5RXJyb3IgUmVhbCBSZWVudHJhbnRMb2NrIFJlZiBSZWdleCBSZWdleE1hdGNoIFJlbW90ZUNoYW5uZWwgUmVtb3RlRXhjZXB0aW9uIFJldlN0cmluZyBSb3VuZGluZ01vZGUgUm93VmVjdG9yIFNTQVZhbHVlIFNlZ21lbnRhdGlvbkZhdWx0IFNlcmlhbGl6YXRpb25TdGF0ZSBTZXQgU2hhcmVkQXJyYXkgU2hhcmVkTWF0cml4IFNoYXJlZFZlY3RvciBTaWduZWQgU2ltcGxlVmVjdG9yIFNsb3QgU2xvdE51bWJlciBTcGFyc2VNYXRyaXhDU0MgU3BhcnNlVmVjdG9yIFN0YWNrRnJhbWUgU3RhY2tPdmVyZmxvd0Vycm9yIFN0YWNrVHJhY2UgU3RlcFJhbmdlIFN0ZXBSYW5nZUxlbiBTdHJpZGVkQXJyYXkgU3RyaWRlZE1hdHJpeCBTdHJpZGVkVmVjT3JNYXQgU3RyaWRlZFZlY3RvciBTdHJpbmcgU3ViQXJyYXkgU3ViU3RyaW5nIFN5bVRyaWRpYWdvbmFsIFN5bWJvbCBTeW1tZXRyaWMgU3lzdGVtRXJyb3IgVENQU29ja2V0IFRhc2sgVGV4dCBUZXh0RGlzcGxheSBUaW1lciBUcmlkaWFnb25hbCBUdXBsZSBUeXBlIFR5cGVFcnJvciBUeXBlTWFwRW50cnkgVHlwZU1hcExldmVsIFR5cGVOYW1lIFR5cGVWYXIgVHlwZWRTbG90IFVEUFNvY2tldCBVSW50IFVJbnQxMjggVUludDE2IFVJbnQzMiBVSW50NjQgVUludDggVW5kZWZSZWZFcnJvciBVbmRlZlZhckVycm9yIFVuaWNvZGVFcnJvciBVbmlmb3JtU2NhbGluZyBVbmlvbiBVbmlvbkFsbCBVbml0UmFuZ2UgVW5zaWduZWQgVXBwZXJUcmlhbmd1bGFyIFZhbCBWYXJhcmcgVmVjRWxlbWVudCBWZWNPck1hdCBWZWN0b3IgVmVyc2lvbk51bWJlciBWb2lkIFdlYWtLZXlEaWN0IFdlYWtSZWYgV29ya2VyQ29uZmlnIFdvcmtlclBvb2wgIn0sdD0iW0EtWmEtel9cXHUwMEExLVxcdUZGRkZdW0EtWmEtel8wLTlcXHUwMEExLVxcdUZGRkZdKiIsYT17bDp0LGs6cixpOi88XC8vfSxuPXtjTjoibnVtYmVyIixiOi8oXGIweFtcZF9dKihcLltcZF9dKik/fDB4XC5cZFtcZF9dKilwWy0rXT9cZCt8XGIwW2JveF1bYS1mQS1GMC05XVthLWZBLUYwLTlfXSp8KFxiXGRbXGRfXSooXC5bXGRfXSopP3xcLlxkW1xkX10qKShbZUVmRl1bLStdP1xkKyk/LyxyOjB9LG89e2NOOiJzdHJpbmciLGI6LycoLnxcXFt4WHVVXVthLXpBLVowLTldKyknL30saT17Y046InN1YnN0IixiOi9cJFwoLyxlOi9cKS8sazpyfSxsPXtjTjoidmFyaWFibGUiLGI6IlxcJCIrdH0sYz17Y046InN0cmluZyIsYzpbZS5CRSxpLGxdLHY6W3tiOi9cdyoiIiIvLGU6LyIiIlx3Ki8scjoxMH0se2I6L1x3KiIvLGU6LyJcdyovfV19LHM9e2NOOiJzdHJpbmciLGM6W2UuQkUsaSxsXSxiOiJgIixlOiJgIn0sZD17Y046Im1ldGEiLGI6IkAiK3R9LHU9e2NOOiJjb21tZW50Iix2Olt7YjoiIz0iLGU6Ij0jIixyOjEwfSx7YjoiIyIsZToiJCJ9XX07cmV0dXJuIGEuYz1bbixvLGMscyxkLHUsZS5IQ00se2NOOiJrZXl3b3JkIixiOiJcXGIoKChhYnN0cmFjdHxwcmltaXRpdmUpXFxzKyl0eXBlfChtdXRhYmxlXFxzKyk/c3RydWN0KVxcYiJ9LHtiOi88Oi99XSxpLmM9YS5jLGF9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImNvZmZlZXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIGM9e2tleXdvcmQ6ImluIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIHN1cGVyIHlpZWxkIGltcG9ydCBleHBvcnQgZnJvbSBhcyBkZWZhdWx0IGF3YWl0IHRoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgeWVzIG5vIG9uIG9mZiIsYnVpbHRfaW46Im5wbSByZXF1aXJlIGNvbnNvbGUgcHJpbnQgbW9kdWxlIGdsb2JhbCB3aW5kb3cgZG9jdW1lbnQifSxuPSJbQS1aYS16JF9dWzAtOUEtWmEteiRfXSoiLHI9e2NOOiJzdWJzdCIsYjovI1x7LyxlOi99LyxrOmN9LGk9W2UuQk5NLGUuaW5oZXJpdChlLkNOTSx7c3RhcnRzOntlOiIoXFxzKi8pPyIscjowfX0pLHtjTjoic3RyaW5nIix2Olt7YjovJycnLyxlOi8nJycvLGM6W2UuQkVdfSx7YjovJy8sZTovJy8sYzpbZS5CRV19LHtiOi8iIiIvLGU6LyIiIi8sYzpbZS5CRSxyXX0se2I6LyIvLGU6LyIvLGM6W2UuQkUscl19XX0se2NOOiJyZWdleHAiLHY6W3tiOiIvLy8iLGU6Ii8vLyIsYzpbcixlLkhDTV19LHtiOiIvL1tnaW1dKiIscjowfSx7YjovXC8oPyFbICpdKShcXFwvfC4pKj9cL1tnaW1dKig/PVxXfCQpL31dfSx7YjoiQCIrbn0se3NMOiJqYXZhc2NyaXB0IixlQjohMCxlRTohMCx2Olt7YjoiYGBgIixlOiJgYGAifSx7YjoiYCIsZToiYCJ9XX1dO3IuYz1pO3ZhciBzPWUuaW5oZXJpdChlLlRNLHtiOm59KSx0PSIoXFwoLipcXCkpP1xccypcXEJbLT1dPiIsbz17Y046InBhcmFtcyIsYjoiXFwoW15cXChdIixyQjohMCxjOlt7YjovXCgvLGU6L1wpLyxrOmMsYzpbInNlbGYiXS5jb25jYXQoaSl9XX07cmV0dXJue2FsaWFzZXM6WyJjb2ZmZWUiLCJjc29uIiwiaWNlZCJdLGs6YyxpOi9cL1wqLyxjOmkuY29uY2F0KFtlLkMoIiMjIyIsIiMjIyIpLGUuSENNLHtjTjoiZnVuY3Rpb24iLGI6Il5cXHMqIituKyJcXHMqPVxccyoiK3QsZToiWy09XT4iLHJCOiEwLGM6W3Msb119LHtiOi9bOlwoLD1dXHMqLyxyOjAsYzpbe2NOOiJmdW5jdGlvbiIsYjp0LGU6IlstPV0+IixyQjohMCxjOltvXX1dfSx7Y046ImNsYXNzIixiSzoiY2xhc3MiLGU6IiQiLGk6L1s6PSJcW1xdXS8sYzpbe2JLOiJleHRlbmRzIixlVzohMCxpOi9bOj0iXFtcXV0vLGM6W3NdfSxzXX0se2I6bisiOiIsZToiOiIsckI6ITAsckU6ITAscjowfV0pfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiY3BwIixmdW5jdGlvbih0KXt2YXIgZT17Y046ImtleXdvcmQiLGI6IlxcYlthLXpcXGRfXSpfdFxcYiJ9LHI9e2NOOiJzdHJpbmciLHY6W3tiOicodTg/fFUpP0w/IicsZTonIicsaToiXFxuIixjOlt0LkJFXX0se2I6Jyh1OD98VSk/UiInLGU6JyInLGM6W3QuQkVdfSx7YjoiJ1xcXFw/LiIsZToiJyIsaToiLiJ9XX0scz17Y046Im51bWJlciIsdjpbe2I6IlxcYigwYlswMSddKykifSx7YjoiKC0/KVxcYihbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKSh1fFV8bHxMfHVsfFVMfGZ8RnxifEIpIn0se2I6IigtPykoXFxiMFt4WF1bYS1mQS1GMC05J10rfChcXGJbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKShbZUVdWy0rXT9bXFxkJ10rKT8pIn1dLHI6MH0saT17Y046Im1ldGEiLGI6LyNccypbYS16XStcYi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6ImlmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lIHByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSJ9LGM6W3tiOi9cXFxuLyxyOjB9LHQuaW5oZXJpdChyLHtjTjoibWV0YS1zdHJpbmcifSkse2NOOiJtZXRhLXN0cmluZyIsYjovPFteXG4+XSo+LyxlOi8kLyxpOiJcXG4ifSx0LkNMQ00sdC5DQkNNXX0sYT10LklSKyJcXHMqXFwoIixjPXtrZXl3b3JkOiJpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mIGR5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgZGVjbHR5cGUgbm9leGNlcHQgc3RhdGljX2Fzc2VydCB0aHJlYWRfbG9jYWwgcmVzdHJpY3QgX0Jvb2wgY29tcGxleCBfQ29tcGxleCBfSW1hZ2luYXJ5IGF0b21pY19ib29sIGF0b21pY19jaGFyIGF0b21pY19zY2hhciBhdG9taWNfdWNoYXIgYXRvbWljX3Nob3J0IGF0b21pY191c2hvcnQgYXRvbWljX2ludCBhdG9taWNfdWludCBhdG9taWNfbG9uZyBhdG9taWNfdWxvbmcgYXRvbWljX2xsb25nIGF0b21pY191bGxvbmcgbmV3IHRocm93IHJldHVybiBhbmQgb3Igbm90IixidWlsdF9pbjoic3RkIHN0cmluZyBjaW4gY291dCBjZXJyIGNsb2cgc3RkaW4gc3Rkb3V0IHN0ZGVyciBzdHJpbmdzdHJlYW0gaXN0cmluZ3N0cmVhbSBvc3RyaW5nc3RyZWFtIGF1dG9fcHRyIGRlcXVlIGxpc3QgcXVldWUgc3RhY2sgdmVjdG9yIG1hcCBzZXQgYml0c2V0IG11bHRpc2V0IG11bHRpbWFwIHVub3JkZXJlZF9zZXQgdW5vcmRlcmVkX21hcCB1bm9yZGVyZWRfbXVsdGlzZXQgdW5vcmRlcmVkX211bHRpbWFwIGFycmF5IHNoYXJlZF9wdHIgYWJvcnQgYWJzIGFjb3MgYXNpbiBhdGFuMiBhdGFuIGNhbGxvYyBjZWlsIGNvc2ggY29zIGV4aXQgZXhwIGZhYnMgZmxvb3IgZm1vZCBmcHJpbnRmIGZwdXRzIGZyZWUgZnJleHAgZnNjYW5mIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyBwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuIHZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHIiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbHB0ciBOVUxMIn0sbj1bZSx0LkNMQ00sdC5DQkNNLHMscl07cmV0dXJue2FsaWFzZXM6WyJjIiwiY2MiLCJoIiwiYysrIiwiaCsrIiwiaHBwIl0sazpjLGk6IjwvIixjOm4uY29uY2F0KFtpLHtiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YyxjOlsic2VsZiIsZV19LHtiOnQuSVIrIjo6IixrOmN9LHt2Olt7YjovPS8sZTovOy99LHtiOi9cKC8sZTovXCkvfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIsZTovOy99XSxrOmMsYzpuLmNvbmNhdChbe2I6L1woLyxlOi9cKS8sazpjLGM6bi5jb25jYXQoWyJzZWxmIl0pLHI6MH1dKSxyOjB9LHtjTjoiZnVuY3Rpb24iLGI6IigiK3QuSVIrIltcXComXFxzXSspKyIrYSxyQjohMCxlOi9bezs9XS8sZUU6ITAsazpjLGk6L1teXHdcc1wqJl0vLGM6W3tiOmEsckI6ITAsYzpbdC5UTV0scjowfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOmMscjowLGM6W3QuQ0xDTSx0LkNCQ00scixzLGVdfSx0LkNMQ00sdC5DQkNNLGldfSx7Y046ImNsYXNzIixiSzoiY2xhc3Mgc3RydWN0IixlOi9bezs6XS8sYzpbe2I6LzwvLGU6Lz4vLGM6WyJzZWxmIl19LHQuVE1dfV0pLGV4cG9ydHM6e3ByZXByb2Nlc3NvcjppLHN0cmluZ3M6cixrOmN9fX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicnVieSIsZnVuY3Rpb24oZSl7dmFyIGI9IlthLXpBLVpfXVxcdypbIT89XT98Wy0rfl1cXEB8PDx8Pj58PX58PT09P3w8PT58Wzw+XT0/fFxcKlxcKnxbLS8rJV4mKn5gfF18XFxbXFxdPT8iLHI9e2tleXdvcmQ6ImFuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuIG5leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSByZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3IiLGxpdGVyYWw6InRydWUgZmFsc2UgbmlsIn0sYz17Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9LGE9e2I6IiM8IixlOiI+In0scz1bZS5DKCIjIiwiJCIse2M6W2NdfSksZS5DKCJeXFw9YmVnaW4iLCJeXFw9ZW5kIix7YzpbY10scjoxMH0pLGUuQygiXl9fRU5EX18iLCJcXG4kIildLG49e2NOOiJzdWJzdCIsYjoiI1xceyIsZToifSIsazpyfSx0PXtjTjoic3RyaW5nIixjOltlLkJFLG5dLHY6W3tiOi8nLyxlOi8nL30se2I6LyIvLGU6LyIvfSx7YjovYC8sZTovYC99LHtiOiIlW3FRd1d4XT9cXCgiLGU6IlxcKSJ9LHtiOiIlW3FRd1d4XT9cXFsiLGU6IlxcXSJ9LHtiOiIlW3FRd1d4XT97IixlOiJ9In0se2I6IiVbcVF3V3hdPzwiLGU6Ij4ifSx7YjoiJVtxUXdXeF0/LyIsZToiLyJ9LHtiOiIlW3FRd1d4XT8lIixlOiIlIn0se2I6IiVbcVF3V3hdPy0iLGU6Ii0ifSx7YjoiJVtxUXdXeF0/XFx8IixlOiJcXHwifSx7YjovXEJcPyhcXFxkezEsM318XFx4W0EtRmEtZjAtOV17MSwyfXxcXHVbQS1GYS1mMC05XXs0fXxcXD9cUylcYi99LHtiOi88PCgtPylcdyskLyxlOi9eXHMqXHcrJC99XX0saT17Y046InBhcmFtcyIsYjoiXFwoIixlOiJcXCkiLGVuZHNQYXJlbnQ6ITAsazpyfSxkPVt0LGEse2NOOiJjbGFzcyIsYks6ImNsYXNzIG1vZHVsZSIsZToiJHw7IixpOi89LyxjOltlLmluaGVyaXQoZS5UTSx7YjoiW0EtWmEtel9dXFx3Kig6OlxcdyspKihcXD98XFwhKT8ifSkse2I6IjxcXHMqIixjOlt7YjoiKCIrZS5JUisiOjopPyIrZS5JUn1dfV0uY29uY2F0KHMpfSx7Y046ImZ1bmN0aW9uIixiSzoiZGVmIixlOiIkfDsiLGM6W2UuaW5oZXJpdChlLlRNLHtiOmJ9KSxpXS5jb25jYXQocyl9LHtiOmUuSVIrIjo6In0se2NOOiJzeW1ib2wiLGI6ZS5VSVIrIihcXCF8XFw/KT86IixyOjB9LHtjTjoic3ltYm9sIixiOiI6KD8hXFxzKSIsYzpbdCx7YjpifV0scjowfSx7Y046Im51bWJlciIsYjoiKFxcYjBbMC03X10rKXwoXFxiMHhbMC05YS1mQS1GX10rKXwoXFxiWzEtOV1bMC05X10qKFxcLlswLTlfXSspPyl8WzBfXVxcYiIscjowfSx7YjoiKFxcJFxcVyl8KChcXCR8XFxAXFxAPykoXFx3KykpIn0se2NOOiJwYXJhbXMiLGI6L1x8LyxlOi9cfC8sazpyfSx7YjoiKCIrZS5SU1IrInx1bmxlc3MpXFxzKiIsazoidW5sZXNzIixjOlthLHtjTjoicmVnZXhwIixjOltlLkJFLG5dLGk6L1xuLyx2Olt7YjoiLyIsZToiL1thLXpdKiJ9LHtiOiIlcnsiLGU6In1bYS16XSoifSx7YjoiJXJcXCgiLGU6IlxcKVthLXpdKiJ9LHtiOiIlciEiLGU6IiFbYS16XSoifSx7YjoiJXJcXFsiLGU6IlxcXVthLXpdKiJ9XX1dLmNvbmNhdChzKSxyOjB9XS5jb25jYXQocyk7bi5jPWQsaS5jPWQ7dmFyIGw9Ils+P10+IixvPSJbXFx3I10rXFwoXFx3K1xcKTpcXGQrOlxcZCs+Iix1PSIoXFx3Ky0pP1xcZCtcXC5cXGQrXFwuXFxkKHBcXGQrKT9bXj5dKz4iLHc9W3tiOi9eXHMqPT4vLHN0YXJ0czp7ZToiJCIsYzpkfX0se2NOOiJtZXRhIixiOiJeKCIrbCsifCIrbysifCIrdSsiKSIsc3RhcnRzOntlOiIkIixjOmR9fV07cmV0dXJue2FsaWFzZXM6WyJyYiIsImdlbXNwZWMiLCJwb2RzcGVjIiwidGhvciIsImlyYiJdLGs6cixpOi9cL1wqLyxjOnMuY29uY2F0KHcpLmNvbmNhdChkKX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInlhbWwiLGZ1bmN0aW9uKGUpe3ZhciBiPSJ0cnVlIGZhbHNlIHllcyBubyBudWxsIixhPSJeWyBcXC1dKiIscj0iW2EtekEtWl9dW1xcd1xcLV0qIix0PXtjTjoiYXR0ciIsdjpbe2I6YStyKyI6In0se2I6YSsnIicrcisnIjonfSx7YjphKyInIityKyInOiJ9XX0sYz17Y046InRlbXBsYXRlLXZhcmlhYmxlIix2Olt7Yjoie3siLGU6In19In0se2I6IiV7IixlOiJ9In1dfSxsPXtjTjoic3RyaW5nIixyOjAsdjpbe2I6LycvLGU6LycvfSx7YjovIi8sZTovIi99LHtiOi9cUysvfV0sYzpbZS5CRSxjXX07cmV0dXJue2NJOiEwLGFsaWFzZXM6WyJ5bWwiLCJZQU1MIiwieWFtbCJdLGM6W3Qse2NOOiJtZXRhIixiOiJeLS0tcyokIixyOjEwfSx7Y046InN0cmluZyIsYjoiW1xcfD5dICokIixyRTohMCxjOmwuYyxlOnQudlswXS5ifSx7YjoiPCVbJT0tXT8iLGU6IlslLV0/JT4iLHNMOiJydWJ5IixlQjohMCxlRTohMCxyOjB9LHtjTjoidHlwZSIsYjoiISEiK2UuVUlSfSx7Y046Im1ldGEiLGI6IiYiK2UuVUlSKyIkIn0se2NOOiJtZXRhIixiOiJcXCoiK2UuVUlSKyIkIn0se2NOOiJidWxsZXQiLGI6Il4gKi0iLHI6MH0sZS5IQ00se2JLOmIsazp7bGl0ZXJhbDpifX0sZS5DTk0sbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJjc3MiLGZ1bmN0aW9uKGUpe3ZhciBjPSJbYS16QS1aLV1bYS16QS1aMC05Xy1dKiIsdD17YjovW0EtWlxfXC5cLV0rXHMqOi8sckI6ITAsZToiOyIsZVc6ITAsYzpbe2NOOiJhdHRyaWJ1dGUiLGI6L1xTLyxlOiI6IixlRTohMCxzdGFydHM6e2VXOiEwLGVFOiEwLGM6W3tiOi9bXHctXStcKC8sckI6ITAsYzpbe2NOOiJidWlsdF9pbiIsYjovW1x3LV0rL30se2I6L1woLyxlOi9cKS8sYzpbZS5BU00sZS5RU01dfV19LGUuQ1NTTk0sZS5RU00sZS5BU00sZS5DQkNNLHtjTjoibnVtYmVyIixiOiIjWzAtOUEtRmEtZl0rIn0se2NOOiJtZXRhIixiOiIhaW1wb3J0YW50In1dfX1dfTtyZXR1cm57Y0k6ITAsaTovWz1cL3wnXCRdLyxjOltlLkNCQ00se2NOOiJzZWxlY3Rvci1pZCIsYjovI1tBLVphLXowLTlfLV0rL30se2NOOiJzZWxlY3Rvci1jbGFzcyIsYjovXC5bQS1aYS16MC05Xy1dKy99LHtjTjoic2VsZWN0b3ItYXR0ciIsYjovXFsvLGU6L1xdLyxpOiIkIn0se2NOOiJzZWxlY3Rvci1wc2V1ZG8iLGI6LzooOik/W2EtekEtWjAtOVxfXC1cK1woXCkiJy5dKy99LHtiOiJAKGZvbnQtZmFjZXxwYWdlKSIsbDoiW2Etei1dKyIsazoiZm9udC1mYWNlIHBhZ2UifSx7YjoiQCIsZToiW3s7XSIsaTovOi8sYzpbe2NOOiJrZXl3b3JkIixiOi9cdysvfSx7YjovXHMvLGVXOiEwLGVFOiEwLHI6MCxjOltlLkFTTSxlLlFTTSxlLkNTU05NXX1dfSx7Y046InNlbGVjdG9yLXRhZyIsYjpjLHI6MH0se2I6InsiLGU6In0iLGk6L1xTLyxjOltlLkNCQ00sdF19XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImZvcnRyYW4iLGZ1bmN0aW9uKGUpe3ZhciB0PXtjTjoicGFyYW1zIixiOiJcXCgiLGU6IlxcKSJ9LG49e2xpdGVyYWw6Ii5GYWxzZS4gLlRydWUuIixrZXl3b3JkOiJraW5kIGRvIHdoaWxlIHByaXZhdGUgY2FsbCBpbnRyaW5zaWMgd2hlcmUgZWxzZXdoZXJlIHR5cGUgZW5kdHlwZSBlbmRtb2R1bGUgZW5kc2VsZWN0IGVuZGludGVyZmFjZSBlbmQgZW5kZG8gZW5kaWYgaWYgZm9yYWxsIGVuZGZvcmFsbCBvbmx5IGNvbnRhaW5zIGRlZmF1bHQgcmV0dXJuIHN0b3AgdGhlbiBwdWJsaWMgc3Vicm91dGluZXwxMCBmdW5jdGlvbiBwcm9ncmFtIC5hbmQuIC5vci4gLm5vdC4gLmxlLiAuZXEuIC5nZS4gLmd0LiAubHQuIGdvdG8gc2F2ZSBlbHNlIHVzZSBtb2R1bGUgc2VsZWN0IGNhc2UgYWNjZXNzIGJsYW5rIGRpcmVjdCBleGlzdCBmaWxlIGZtdCBmb3JtIGZvcm1hdHRlZCBpb3N0YXQgbmFtZSBuYW1lZCBuZXh0cmVjIG51bWJlciBvcGVuZWQgcmVjIHJlY2wgc2VxdWVudGlhbCBzdGF0dXMgdW5mb3JtYXR0ZWQgdW5pdCBjb250aW51ZSBmb3JtYXQgcGF1c2UgY3ljbGUgZXhpdCBjX251bGxfY2hhciBjX2FsZXJ0IGNfYmFja3NwYWNlIGNfZm9ybV9mZWVkIGZsdXNoIHdhaXQgZGVjaW1hbCByb3VuZCBpb21zZyBzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGFic3RyYWN0IGV4dGVuZHMgaW1wb3J0IG5vbl9pbnRyaW5zaWMgdmFsdWUgZGVmZXJyZWQgZ2VuZXJpYyBmaW5hbCBlbnVtZXJhdG9yIGNsYXNzIGFzc29jaWF0ZSBiaW5kIGVudW0gY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyIGNfbmV3X2xpbmUgY19jYXJyaWFnZV9yZXR1cm4gY19ob3Jpem9udGFsX3RhYiBjX3ZlcnRpY2FsX3RhYiBpc29fY19iaW5kaW5nIGNfbG9jIGNfZnVubG9jIGNfYXNzb2NpYXRlZCAgY19mX3BvaW50ZXIgY19wdHIgY19mdW5wdHIgaXNvX2ZvcnRyYW5fZW52IGNoYXJhY3Rlcl9zdG9yYWdlX3NpemUgZXJyb3JfdW5pdCBmaWxlX3N0b3JhZ2Vfc2l6ZSBpbnB1dF91bml0IGlvc3RhdF9lbmQgaW9zdGF0X2VvciBudW1lcmljX3N0b3JhZ2Vfc2l6ZSBvdXRwdXRfdW5pdCBjX2ZfcHJvY3BvaW50ZXIgaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSBuZXd1bml0IGNvbnRpZ3VvdXMgcmVjdXJzaXZlIHBhZCBwb3NpdGlvbiBhY3Rpb24gZGVsaW0gcmVhZHdyaXRlIGVvciBhZHZhbmNlIG5tbCBpbnRlcmZhY2UgcHJvY2VkdXJlIG5hbWVsaXN0IGluY2x1ZGUgc2VxdWVuY2UgZWxlbWVudGFsIHB1cmUgaW50ZWdlciByZWFsIGNoYXJhY3RlciBjb21wbGV4IGxvZ2ljYWwgZGltZW5zaW9uIGFsbG9jYXRhYmxlfDEwIHBhcmFtZXRlciBleHRlcm5hbCBpbXBsaWNpdHwxMCBub25lIGRvdWJsZSBwcmVjaXNpb24gYXNzaWduIGludGVudCBvcHRpb25hbCBwb2ludGVyIHRhcmdldCBpbiBvdXQgY29tbW9uIGVxdWl2YWxlbmNlIGRhdGEiLGJ1aWx0X2luOiJhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hIGlxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yIGF0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyIG51bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSJ9O3JldHVybntjSTohMCxhbGlhc2VzOlsiZjkwIiwiZjk1Il0sazpuLGk6L1wvXCovLGM6W2UuaW5oZXJpdChlLkFTTSx7Y046InN0cmluZyIscjowfSksZS5pbmhlcml0KGUuUVNNLHtjTjoic3RyaW5nIixyOjB9KSx7Y046ImZ1bmN0aW9uIixiSzoic3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtIixpOiJbJHs9XFxuXSIsYzpbZS5VVE0sdF19LGUuQygiISIsIiQiLHtyOjB9KSx7Y046Im51bWJlciIsYjoiKD89XFxifFxcK3xcXC18XFwuKSg/PVxcLlxcZHxcXGQpKD86XFxkKyk/KD86XFwuP1xcZCopKD86W2RlXVsrLV0/XFxkKyk/XFxiXFwuPyIscjowfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJhd2siLGZ1bmN0aW9uKGUpe3ZhciByPXtjTjoidmFyaWFibGUiLHY6W3tiOi9cJFtcd1xkI0BdW1x3XGRfXSovfSx7YjovXCRceyguKj8pfS99XX0sYj0iQkVHSU4gRU5EIGlmIGVsc2Ugd2hpbGUgZG8gZm9yIGluIGJyZWFrIGNvbnRpbnVlIGRlbGV0ZSBuZXh0IG5leHRmaWxlIGZ1bmN0aW9uIGZ1bmMgZXhpdHwxMCIsbj17Y046InN0cmluZyIsYzpbZS5CRV0sdjpbe2I6Lyh1fGIpP3I/JycnLyxlOi8nJycvLHI6MTB9LHtiOi8odXxiKT9yPyIiIi8sZTovIiIiLyxyOjEwfSx7YjovKHV8cnx1ciknLyxlOi8nLyxyOjEwfSx7YjovKHV8cnx1cikiLyxlOi8iLyxyOjEwfSx7YjovKGJ8YnIpJy8sZTovJy99LHtiOi8oYnxicikiLyxlOi8iL30sZS5BU00sZS5RU01dfTtyZXR1cm57azp7a2V5d29yZDpifSxjOltyLG4sZS5STSxlLkhDTSxlLk5NXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoIm1ha2VmaWxlIixmdW5jdGlvbihlKXt2YXIgaT17Y046InZhcmlhYmxlIix2Olt7YjoiXFwkXFwoIitlLlVJUisiXFwpIixjOltlLkJFXX0se2I6L1wkW0AlPD9cXlwrXCpdL31dfSxyPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLGldfSxhPXtjTjoidmFyaWFibGUiLGI6L1wkXChbXHctXStccy8sZTovXCkvLGs6e2J1aWx0X2luOiJzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgd29yZCB3b3JkbGlzdCBmaXJzdHdvcmQgbGFzdHdvcmQgZGlyIG5vdGRpciBzdWZmaXggYmFzZW5hbWUgYWRkc3VmZml4IGFkZHByZWZpeCBqb2luIHdpbGRjYXJkIHJlYWxwYXRoIGFic3BhdGggZXJyb3Igd2FybmluZyBzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlIn0sYzpbaV19LG49e2I6Il4iK2UuVUlSKyJcXHMqWzorP10/PSIsaToiXFxuIixyQjohMCxjOlt7YjoiXiIrZS5VSVIsZToiWzorP10/PSIsZUU6ITB9XX0sdD17Y046Im1ldGEiLGI6L15cLlBIT05ZOi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6Ii5QSE9OWSJ9LGw6L1tcLlx3XSsvfSxsPXtjTjoic2VjdGlvbiIsYjovXlteXHNdKzovLGU6LyQvLGM6W2ldfTtyZXR1cm57YWxpYXNlczpbIm1rIiwibWFrIl0sazoiZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCIsbDovW1x3LV0rLyxjOltlLkhDTSxpLHIsYSxuLHQsbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJqYXZhIixmdW5jdGlvbihlKXt2YXIgYT0iW8OALcq4YS16QS1aXyRdW8OALcq4YS16QS1aXyQwLTldKiIsdD1hKyIoPCIrYSsiKFxccyosXFxzKiIrYSsiKSo+KT8iLHI9ImZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBjYXRjaCBpbnN0YW5jZW9mIGJ5dGUgc3VwZXIgdm9sYXRpbGUgY2FzZSBhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUgbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8iLHM9IlxcYigwW2JCXShbMDFdK1swMV9dK1swMV0rfFswMV0rKXwwW3hYXShbYS1mQS1GMC05XStbYS1mQS1GMC05X10rW2EtZkEtRjAtOV0rfFthLWZBLUYwLTldKyl8KChbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykoXFwuKFtcXGRdK1tcXGRfXStbXFxkXSt8W1xcZF0rKSk/fFxcLihbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykpKFtlRV1bLStdP1xcZCspPylbbExmRl0/IixjPXtjTjoibnVtYmVyIixiOnMscjowfTtyZXR1cm57YWxpYXNlczpbImpzcCJdLGs6cixpOi88XC98Iy8sYzpbZS5DKCIvXFwqXFwqIiwiXFwqLyIse3I6MCxjOlt7YjovXHcrQC8scjowfSx7Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9XX0pLGUuQ0xDTSxlLkNCQ00sZS5BU00sZS5RU00se2NOOiJjbGFzcyIsYks6ImNsYXNzIGludGVyZmFjZSIsZTovW3s7PV0vLGVFOiEwLGs6ImNsYXNzIGludGVyZmFjZSIsaTovWzoiXFtcXV0vLGM6W3tiSzoiZXh0ZW5kcyBpbXBsZW1lbnRzIn0sZS5VVE1dfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIscjowfSx7Y046ImZ1bmN0aW9uIixiOiIoIit0KyJcXHMrKSsiK2UuVUlSKyJcXHMqXFwoIixyQjohMCxlOi9bezs9XS8sZUU6ITAsazpyLGM6W3tiOmUuVUlSKyJcXHMqXFwoIixyQjohMCxyOjAsYzpbZS5VVE1dfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnIscjowLGM6W2UuQVNNLGUuUVNNLGUuQ05NLGUuQ0JDTV19LGUuQ0xDTSxlLkNCQ01dfSxjLHtjTjoibWV0YSIsYjoiQFtBLVphLXpdKyJ9XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInN0YW4iLGZ1bmN0aW9uKGUpe3JldHVybntjOltlLkhDTSxlLkNMQ00sZS5DQkNNLHtiOmUuVUlSLGw6ZS5VSVIsazp7bmFtZToiZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UiLHN5bWJvbDoiYmVybm91bGxpIGJlcm5vdWxsaV9sb2dpdCBiaW5vbWlhbCBiaW5vbWlhbF9sb2dpdCBiZXRhX2Jpbm9taWFsIGh5cGVyZ2VvbWV0cmljIGNhdGVnb3JpY2FsIGNhdGVnb3JpY2FsX2xvZ2l0IG9yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yIG5lZ19iaW5vbWlhbF8yX2xvZyBwb2lzc29uIHBvaXNzb25fbG9nIG11bHRpbm9taWFsIG5vcm1hbCBleHBfbW9kX25vcm1hbCBza2V3X25vcm1hbCBzdHVkZW50X3QgY2F1Y2h5IGRvdWJsZV9leHBvbmVudGlhbCBsb2dpc3RpYyBndW1iZWwgbG9nbm9ybWFsIGNoaV9zcXVhcmUgaW52X2NoaV9zcXVhcmUgc2NhbGVkX2ludl9jaGlfc3F1YXJlIGV4cG9uZW50aWFsIGludl9nYW1tYSB3ZWlidWxsIGZyZWNoZXQgcmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtIG11bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgbXVsdGlfZ3BfY2hvbGVza3kgbXVsdGlfc3R1ZGVudF90IGdhdXNzaWFuX2RsbV9vYnMgZGlyaWNobGV0IGxral9jb3JyIGxral9jb3JyX2Nob2xlc2t5IHdpc2hhcnQgaW52X3dpc2hhcnQiLCJzZWxlY3Rvci10YWciOiJpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgcm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiBjb3JyX21hdHJpeCBjb3ZfbWF0cml4Iix0aXRsZToiZnVuY3Rpb25zIG1vZGVsIGRhdGEgcGFyYW1ldGVycyBxdWFudGl0aWVzIHRyYW5zZm9ybWVkIGdlbmVyYXRlZCIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSJ9LHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP0xcXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCtcXC4oPyFcXGQpKD86aVxcYik/IixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86XFwuXFxkKik/KD86W2VFXVsrXFwtXT9cXGQqKT9pP1xcYiIscjowfSx7Y046Im51bWJlciIsYjoiXFwuXFxkKyg/OltlRV1bK1xcLV0/XFxkKik/aT9cXGIiLHI6MH1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiamF2YXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIHI9IltBLVphLXokX11bMC05QS1aYS16JF9dKiIsdD17a2V5d29yZDoiaW4gb2YgaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgbGV0IHlpZWxkIGNvbnN0IGV4cG9ydCBzdXBlciBkZWJ1Z2dlciBhcyBhc3luYyBhd2FpdCBzdGF0aWMgaW1wb3J0IGZyb20gYXMiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5IixidWlsdF9pbjoiZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yIFR5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlIG1vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBTeW1ib2wgU2V0IE1hcCBXZWFrU2V0IFdlYWtNYXAgUHJveHkgUmVmbGVjdCBQcm9taXNlIn0sYT17Y046Im51bWJlciIsdjpbe2I6IlxcYigwW2JCXVswMV0rKSJ9LHtiOiJcXGIoMFtvT11bMC03XSspIn0se2I6ZS5DTlJ9XSxyOjB9LG49e2NOOiJzdWJzdCIsYjoiXFwkXFx7IixlOiJcXH0iLGs6dCxjOltdfSxjPXtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFLG5dfTtuLmM9W2UuQVNNLGUuUVNNLGMsYSxlLlJNXTt2YXIgcz1uLmMuY29uY2F0KFtlLkNCQ00sZS5DTENNXSk7cmV0dXJue2FsaWFzZXM6WyJqcyIsImpzeCJdLGs6dCxjOlt7Y046Im1ldGEiLHI6MTAsYjovXlxzKlsnIl11c2UgKHN0cmljdHxhc20pWyciXS99LHtjTjoibWV0YSIsYjovXiMhLyxlOi8kL30sZS5BU00sZS5RU00sYyxlLkNMQ00sZS5DQkNNLGEse2I6L1t7LF1ccyovLHI6MCxjOlt7YjpyKyJcXHMqOiIsckI6ITAscjowLGM6W3tjTjoiYXR0ciIsYjpyLHI6MH1dfV19LHtiOiIoIitlLlJTUisifFxcYihjYXNlfHJldHVybnx0aHJvdylcXGIpXFxzKiIsazoicmV0dXJuIHRocm93IGNhc2UiLGM6W2UuQ0xDTSxlLkNCQ00sZS5STSx7Y046ImZ1bmN0aW9uIixiOiIoXFwoLio/XFwpfCIrcisiKVxccyo9PiIsckI6ITAsZToiXFxzKj0+IixjOlt7Y046InBhcmFtcyIsdjpbe2I6cn0se2I6L1woXHMqXCkvfSx7YjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxrOnQsYzpzfV19XX0se2I6LzwvLGU6LyhcL1x3K3xcdytcLyk+LyxzTDoieG1sIixjOlt7YjovPFx3K1xzKlwvPi8sc2tpcDohMH0se2I6LzxcdysvLGU6LyhcL1x3K3xcdytcLyk+Lyxza2lwOiEwLGM6W3tiOi88XHcrXHMqXC8+Lyxza2lwOiEwfSwic2VsZiJdfV19XSxyOjB9LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jdGlvbiIsZTovXHsvLGVFOiEwLGM6W2UuaW5oZXJpdChlLlRNLHtiOnJ9KSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxjOnN9XSxpOi9cW3wlL30se2I6L1wkWyguXS99LGUuTUVUSE9EX0dVQVJELHtjTjoiY2xhc3MiLGJLOiJjbGFzcyIsZTovW3s7PV0vLGVFOiEwLGk6L1s6IlxbXF1dLyxjOlt7Yks6ImV4dGVuZHMifSxlLlVUTV19LHtiSzoiY29uc3RydWN0b3IiLGU6L1x7LyxlRTohMH1dLGk6LyMoPyEhKS99fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJ0ZXgiLGZ1bmN0aW9uKGMpe3ZhciBlPXtjTjoidGFnIixiOi9cXC8scjowLGM6W3tjTjoibmFtZSIsdjpbe2I6L1thLXpBLVrQsC3Rj9CQLdGPXStbKl0/L30se2I6L1teYS16QS1a0LAt0Y/QkC3RjzAtOV0vfV0sc3RhcnRzOntlVzohMCxyOjAsYzpbe2NOOiJzdHJpbmciLHY6W3tiOi9cWy8sZTovXF0vfSx7YjovXHsvLGU6L1x9L31dfSx7YjovXHMqPVxzKi8sZVc6ITAscjowLGM6W3tjTjoibnVtYmVyIixiOi8tP1xkKlwuP1xkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk/L31dfV19fV19O3JldHVybntjOltlLHtjTjoiZm9ybXVsYSIsYzpbZV0scjowLHY6W3tiOi9cJFwkLyxlOi9cJFwkL30se2I6L1wkLyxlOi9cJC99XX0sYy5DKCIlIiwiJCIse3I6MH0pXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInhtbCIsZnVuY3Rpb24ocyl7dmFyIGU9IltBLVphLXowLTlcXC5fOi1dKyIsdD17ZVc6ITAsaTovPC8scjowLGM6W3tjTjoiYXR0ciIsYjplLHI6MH0se2I6Lz1ccyovLHI6MCxjOlt7Y046InN0cmluZyIsZW5kc1BhcmVudDohMCx2Olt7YjovIi8sZTovIi99LHtiOi8nLyxlOi8nL30se2I6L1teXHMiJz08PmBdKy99XX1dfV19O3JldHVybnthbGlhc2VzOlsiaHRtbCIsInhodG1sIiwicnNzIiwiYXRvbSIsInhqYiIsInhzZCIsInhzbCIsInBsaXN0Il0sY0k6ITAsYzpbe2NOOiJtZXRhIixiOiI8IURPQ1RZUEUiLGU6Ij4iLHI6MTAsYzpbe2I6IlxcWyIsZToiXFxdIn1dfSxzLkMoIjwhLS0iLCItLT4iLHtyOjEwfSkse2I6IjxcXCFcXFtDREFUQVxcWyIsZToiXFxdXFxdPiIscjoxMH0se2I6LzxcPyhwaHApPy8sZTovXD8+LyxzTDoicGhwIixjOlt7YjoiL1xcKiIsZToiXFwqLyIsc2tpcDohMH1dfSx7Y046InRhZyIsYjoiPHN0eWxlKD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InN0eWxlIn0sYzpbdF0sc3RhcnRzOntlOiI8L3N0eWxlPiIsckU6ITAsc0w6WyJjc3MiLCJ4bWwiXX19LHtjTjoidGFnIixiOiI8c2NyaXB0KD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InNjcmlwdCJ9LGM6W3RdLHN0YXJ0czp7ZToiPC9zY3JpcHQ+IixyRTohMCxzTDpbImFjdGlvbnNjcmlwdCIsImphdmFzY3JpcHQiLCJoYW5kbGViYXJzIiwieG1sIl19fSx7Y046Im1ldGEiLHY6W3tiOi88XD94bWwvLGU6L1w/Pi8scjoxMH0se2I6LzxcP1x3Ky8sZTovXD8+L31dfSx7Y046InRhZyIsYjoiPC8/IixlOiIvPz4iLGM6W3tjTjoibmFtZSIsYjovW15cLz48XHNdKy8scjowfSx0XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgibWFya2Rvd24iLGZ1bmN0aW9uKGUpe3JldHVybnthbGlhc2VzOlsibWQiLCJta2Rvd24iLCJta2QiXSxjOlt7Y046InNlY3Rpb24iLHY6W3tiOiJeI3sxLDZ9IixlOiIkIn0se2I6Il4uKz9cXG5bPS1dezIsfSQifV19LHtiOiI8IixlOiI+IixzTDoieG1sIixyOjB9LHtjTjoiYnVsbGV0IixiOiJeKFsqKy1dfChcXGQrXFwuKSlcXHMrIn0se2NOOiJzdHJvbmciLGI6IlsqX117Mn0uKz9bKl9dezJ9In0se2NOOiJlbXBoYXNpcyIsdjpbe2I6IlxcKi4rP1xcKiJ9LHtiOiJfLis/XyIscjowfV19LHtjTjoicXVvdGUiLGI6Il4+XFxzKyIsZToiJCJ9LHtjTjoiY29kZSIsdjpbe2I6Il5gYGB3KnMqJCIsZToiXmBgYHMqJCJ9LHtiOiJgLis/YCJ9LHtiOiJeKCB7NH18CSkiLGU6IiQiLHI6MH1dfSx7YjoiXlstXFwqXXszLH0iLGU6IiQifSx7YjoiXFxbLis/XFxdW1xcKFxcW10uKj9bXFwpXFxdXSIsckI6ITAsYzpbe2NOOiJzdHJpbmciLGI6IlxcWyIsZToiXFxdIixlQjohMCxyRTohMCxyOjB9LHtjTjoibGluayIsYjoiXFxdXFwoIixlOiJcXCkiLGVCOiEwLGVFOiEwfSx7Y046InN5bWJvbCIsYjoiXFxdXFxbIixlOiJcXF0iLGVCOiEwLGVFOiEwfV0scjoxMH0se2I6L15cW1teXG5dK1xdOi8sckI6ITAsYzpbe2NOOiJzeW1ib2wiLGI6L1xbLyxlOi9cXS8sZUI6ITAsZUU6ITB9LHtjTjoibGluayIsYjovOlxzKi8sZTovJC8sZUI6ITB9XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianNvbiIsZnVuY3Rpb24oZSl7dmFyIGk9e2xpdGVyYWw6InRydWUgZmFsc2UgbnVsbCJ9LG49W2UuUVNNLGUuQ05NXSxyPXtlOiIsIixlVzohMCxlRTohMCxjOm4sazppfSx0PXtiOiJ7IixlOiJ9IixjOlt7Y046ImF0dHIiLGI6LyIvLGU6LyIvLGM6W2UuQkVdLGk6IlxcbiJ9LGUuaW5oZXJpdChyLHtiOi86L30pXSxpOiJcXFMifSxjPXtiOiJcXFsiLGU6IlxcXSIsYzpbZS5pbmhlcml0KHIpXSxpOiJcXFMifTtyZXR1cm4gbi5zcGxpY2Uobi5sZW5ndGgsMCx0LGMpLHtjOm4sazppLGk6IlxcUyJ9fSk7"></script>
-
-<style type="text/css">code{white-space: pre;}</style>
-<style type="text/css">
-  pre:not([class]) {
-    background-color: white;
-  }
-</style>
-<script type="text/javascript">
-if (window.hljs) {
-  hljs.configure({languages: []});
-  hljs.initHighlightingOnLoad();
-  if (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>
-$(document).ready(function () {
-  window.buildTabsets("TOC");
-});
-</script>
-
-<!-- code folding -->
-
-
-
-
-
-
-<div class="fluid-row" id="header">
-
-
-
-<h1 class="title toc-ignore">StackTraces – Problems</h1>
-<h3 class="subtitle"><em>R Analysis document</em></h3>
-<h4 class="author"><em>Boris Baldassari – Castalia Solutions</em></h4>
-
-</div>
-
-<div id="TOC">
-<ul>
-<li><a href="#introduction">Introduction</a><ul>
-<li><a href="#about-this-dataset">About this dataset</a></li>
-<li><a href="#terminology">Terminology</a></li>
-<li><a href="#privacy-concerns">Privacy concerns</a></li>
-<li><a href="#about-this-document">About this document</a></li>
-</ul></li>
-<li><a href="#structure-of-data">Structure of data</a><ul>
-<li><a href="#all-problems-json">All problems (JSON)</a></li>
-<li><a href="#problems-extract-csv">Problems extract (CSV)</a></li>
-</ul></li>
-<li><a href="#attributes">Attributes</a><ul>
-<li><a href="#summary">Summary</a></li>
-<li><a href="#attr_number_of_reporters">Number of reporters</a></li>
-<li><a href="#attr_number_of_incidents">Number of incidents</a></li>
-<li><a href="#attr_status">V1 Status</a></li>
-<li><a href="#attr_kind">Kind</a></li>
-<li><a href="#attr_created_on">Created On</a></li>
-<li><a href="#attr_modified_on">Modified On</a></li>
-<li><a href="#attr_saved_on">Saved On</a></li>
-<li><a href="#attr_osgi_arch">OSGi Architecture</a></li>
-<li><a href="#attr_osgi_os">OSGi OS</a></li>
-<li><a href="#attr_osgi_os_version">OSGi OS Version</a></li>
-<li><a href="#attr_osgi_ws">OSGi Window Manager</a></li>
-<li><a href="#attr_eclipse_product">Eclipse Product</a></li>
-<li><a href="#attr_eclipse_build_id">Eclipse Build ID</a></li>
-<li><a href="#attr_javaruntime">Java runtime version</a></li>
-</ul></li>
-<li><a href="#using-the-dataset">Using the dataset</a><ul>
-<li><a href="#reading-csv-file">Reading CSV file</a></li>
-<li><a href="#examples">Examples</a></li>
-</ul></li>
-</ul>
-</div>
-
-<div id="introduction" class="section level1">
-<h1>Introduction</h1>
-<div id="about-this-dataset" class="section level2">
-<h2>About this dataset</h2>
-<p>The <a href="https://wiki.eclipse.org/EPP/Logging">Automated Error Reporting</a> (AERI) system retrieves <a href="https://www.codetrails.com/error-analytics/manual/">information about exceptions</a>. It is installed by default in the <a href="http://www.eclipse.org/ide/">Eclipse IDE</a> and has helped hundreds of projects better support their users and resolve bugs.</p>
-<p>This dataset is a dump of all records over a couple of years, with useful information about the exceptions and environment.</p>
-<ul>
-<li><strong>Generated date</strong>: Mon Feb 5 10:30:35 2018</li>
-<li><strong>First date</strong>: 2014-09-12 08:47:00</li>
-<li><strong>Last date</strong>: 2016-12-13 14:55:09</li>
-<li><strong>Number of problems</strong>: 50872</li>
-<li><strong>Number of attributes</strong>: 15</li>
-</ul>
-</div>
-<div id="terminology" class="section level2">
-<h2>Terminology</h2>
-<ul>
-<li><strong>Incidents</strong> When an exception occurs and is trapped by the AERI system, it constitutes an incident (or error report). An incident can be reported by several different people, can be reported multiple times, and can be linked to different environments.</li>
-<li><strong>Problems</strong> As soon as an error report arrives on the server, it will be analyzed and subsequently assigned to one or more problems. A problem thus represents a set of (similar) error reports which usually have the same root cause – for example a bug in your software. (Extract from the <a href="https://www.codetrails.com/error-analytics/manual/concepts/error-reports-problems-bugs-projects.html">AERI system documentation</a>)</li>
-</ul>
-<p>This dataset targets only the Problems of the AERI dataset. There is another dedicated document for the Incidents.</p>
-</div>
-<div id="privacy-concerns" class="section level2">
-<h2>Privacy concerns</h2>
-<p>We value privacy and intend to make everything we can to prevent misuse of the dataset. If you think we failed somewhere in the process, please <a href="https://www.crossminer.org/contact">let us know</a> so we can do better.</p>
-<p>The AERI system itself doesn’t gather much private information, and takes a great care of it. Ths dataset goes a step further and removes all identifiable information.</p>
-<ul>
-<li>There is <strong>no email address</strong> in this dataset, <strong>nor any UUID</strong>.</li>
-<li>People not willing to share their traces to the AERI system can tick the private option. This choice has been respected, and all classes that do not belong to public hierarchy have been hidden thanks to a smart mechanism.</li>
-</ul>
-<p>TODO add info about anonymisation “smart” mechanism. :-)</p>
-</div>
-<div id="about-this-document" class="section level2">
-<h2>About this document</h2>
-<p>This document is a <a href="http://rmarkdown.rstudio.com">R Markdown document</a> and is composed of both text (like this one) and dynamically computed information (mostly in the Anaysis section below) executed on the data itself. This ensures that the documentation is always synchronised with the data, and serves as a test suite for the dataset.</p>
-</div>
-</div>
-<div id="structure-of-data" class="section level1">
-<h1>Structure of data</h1>
-<p>The plugin collects a <a href="https://www.codetrails.com/error-analytics/manual/misc/sent-data.html">lot of useful information</a>. We only use a subset of it, as required by research interest and privacy protection concerns.</p>
-<p>The Problems dataset comes in two flavours: <code>All problems</code>, in JSON format, and <code>Problems extract</code>, in CSV format.</p>
-<div id="all-problems-json" class="section level2">
-<h2>All problems (JSON)</h2>
-<p><strong>All problems</strong> is the most complete dataset, with all attributes, stacktraces and bundles. Since the stacktraces and bundles structures are too complex for CSV, only the JSON export contains them. The dataset comes as a quite large compressed archive, with one JSON file per problem. This represents a total of 50872 files (problems).</p>
-<p>The structure of a problem file is examplified below:</p>
-<pre><code>{
-  &quot;summary&quot;: &quot;NoStackTrace in RedeliveryErrorHandler.logFailedDelivery&quot;,
-  &quot;kind&quot;: &quot;NORMAL&quot;,
-  &quot;v1status&quot;,
-  &quot;osgiArch&quot;: &quot;x86_64&quot;,
-  &quot;osgiOs&quot;: &quot;MacOSX&quot;,
-  &quot;osgiOsVersion&quot;: &quot;10.9.4&quot;,
-  &quot;osgiWs&quot;: &quot;cocoa&quot;,
-  &quot;createdOn&quot;: &quot;2014-09-14T05:39:21.554Z&quot;,
-  &quot;modifiedOn&quot;: &quot;2014-09-14T05:39:21.554Z&quot;,
-  &quot;savedOn&quot;: &quot;2016-05-23T07:22:10.479Z&quot;,
-  &quot;eclipseBuildId&quot;: &quot;4.4.0.I20140606-1215&quot;,
-  &quot;eclipseProduct&quot;: &quot;org.eclipse.epp.package.standard.product&quot;,
-  &quot;javaRuntimeVersion&quot;: &quot;1.8.0-b132&quot;,
-  &quot;numberOfIncidents&quot;: 0,
-  &quot;numberOfReporters&quot;: 74,
-  &quot;products&quot;: [
-    { product },
-    { product }
-  ],
-  &quot;bundles&quot;: [
-    { bundle },
-    { bundle }
-  ],
-  &quot;stacktraces&quot;: [
-    [ &quot;stacktrace for incident&quot; ],
-    [ &quot;stacktrace for cause&quot; ],
-    [ &quot;stacktrace for exception&quot; ]
-  ]
-}</code></pre>
-<p>The structure used in the mongodb for stacktraces has been kept as is: it is composed of fields with all information relevant to each line of the stacktrace. Each stacktrace is an array of objects as shown below:</p>
-<pre><code>[
-  {
-    &quot;cN&quot;: &quot;sun.net.www.http.HttpClient&quot;,
-    &quot;mN&quot;: &quot;parseHTTPHeader&quot;,
-    &quot;fN&quot;: &quot;HttpClient.java&quot;,
-    &quot;lN&quot;: 786,
-  }
-]</code></pre>
-<p>Bundles have the following format:</p>
-<pre><code>{
-  &quot;bundleFrequency&quot;: 1,
-  &quot;bundleName&quot;: &quot;org.eclipse.egit.core&quot;,
-  &quot;bundleVersion&quot;: &quot;4.1.1.201511131810-r&quot;
-},</code></pre>
-<p>Products have the following format:</p>
-<pre><code>{
-  &quot;buildId&quot;: &quot;4.5.2.M20160212-1500&quot;,
-  &quot;frequency&quot;: 3,
-  &quot;productId&quot;: &quot;org.eclipse.epp.package.jee.product&quot;
-}</code></pre>
-</div>
-<div id="problems-extract-csv" class="section level2">
-<h2>Problems extract (CSV)</h2>
-<p>The <strong>Problems extract</strong> CSV dataset provides the same information as the full JSON dataset, excluding complex structures that cannot be easily formatted in CSV: stacktraces, bundles, products.</p>
-<p>Attributes are: <code>summary, numberOfReporters, numberOfIncidents, v1status, kind, createdOn, modifiedOn, savedOn, osgiArch, osgiOs, osgiOsVersion, osgiWs, eclipseBuildId, eclipseProduct, javaRuntimeVersion</code>.</p>
-<p>Examples are provided at the end of this file to demonstrate how to use it in R.</p>
-</div>
-</div>
-<div id="attributes" class="section level1">
-<h1>Attributes</h1>
-<div id="summary" class="section level2">
-<h2>Summary</h2>
-<ul>
-<li>Description: A short text summarising the error.</li>
-<li>Type: String</li>
-</ul>
-</div>
-<div id="attr_number_of_reporters" class="section level2">
-<h2>Number of reporters</h2>
-<ul>
-<li>Description: The number of people who reported this incident or problem.</li>
-<li>Type: integer</li>
-</ul>
-<p>Statistical summary:</p>
-<ul>
-<li>Range [ 0 : 57748 ]</li>
-<li>1st Quartile 1</li>
-<li>Median 2</li>
-<li>Mean 25.87223</li>
-<li>3rd Quartile 6</li>
-</ul>
-</div>
-<div id="attr_number_of_incidents" class="section level2">
-<h2>Number of incidents</h2>
-<ul>
-<li>Description: The number of times this problem was identified in incidents.</li>
-<li>Type: Integer</li>
-</ul>
-<p>Statistical summary:</p>
-<ul>
-<li>Range [ 0 : 24934 ]</li>
-<li>1st Quartile 0</li>
-<li>Median 0</li>
-<li>Mean 11.32645</li>
-<li>3rd Quartile 3</li>
-<li>NAs 1</li>
-</ul>
-</div>
-<div id="attr_status" class="section level2">
-<h2>V1 Status</h2>
-<ul>
-<li>Description: The status of the problem attached to the error report.</li>
-<li>Type: Factors</li>
-</ul>
-<p>The possible values found in the dataset for this attributes are:</p>
-<ul>
-<li>CONFIRMED (count: 522)</li>
-<li>DUPLICATE (count: 380)</li>
-<li>FIXED (count: 1048)</li>
-<li>INVALID (count: 585)</li>
-<li>NEEDINFO (count: 110)</li>
-<li>UNCONFIRMED (count: 48227)</li>
-</ul>
-<p>Note: The name of this attribute in the original file is <code>v1status</code>.</p>
-</div>
-<div id="attr_kind" class="section level2">
-<h2>Kind</h2>
-<ul>
-<li>Description: The type of error recorded, as identified by the AERI system.</li>
-<li>Type: Factors</li>
-</ul>
-<p>The possible values found in the dataset for this attributes are:</p>
-<ul>
-<li>FREEZE (count: 4198)</li>
-<li>NORMAL (count: 29305)</li>
-<li>OOME (count: 2472)</li>
-<li>SOE (count: 1205)</li>
-<li>THIRD (count: 13293)</li>
-<li>THIRD_FREEZE (count: 399)</li>
-</ul>
-<p><strong>Notes</strong></p>
-<p>There are different kinds of incidents described in the <a href="https://www.codetrails.com/error-analytics/manual/concepts/incident-kinds.html">official documentation</a>:</p>
-<ul>
-<li>Normal Error: Normal errors are all exceptions that were reported by a client but that are not of kind defined below. Common examples of a normal error are a <code>NullPointerException</code> or <code>IllegalArgumentException</code>.</li>
-<li>An <code>OutOfMemoryError</code> is a special kind of exception. Unlike for normal errors, the stack frame (implicitly) throwing the exception is only sometimes indicative of the root cause of the problem.</li>
-<li>A <code>StackOverflowError</code> is a special kind of exception, whose unique characteristic is a repeating pattern of stack frames near the top of the stack trace.</li>
-<li>UI Freeze: A UI freeze is caused by a long-running operation or even a deadlock on the UI thread.</li>
-<li>Third-Party Error: Third-party errors are reports that were received by the Codetrails Error Analytics Server, which deemed neither the configured projects nor their dependencies at fault.</li>
-<li>Third-Party UI Freeze: Third-Party UI Freezes are UI freezes that were received by the Codetrails Error Analytics Server, which deemed neither the configured projects nor their dependencies at fault.</li>
-</ul>
-</div>
-<div id="attr_created_on" class="section level2">
-<h2>Created On</h2>
-<ul>
-<li>Description: The time of first appearance of the problem in an incident.</li>
-<li>Type: Date (ISO8601)</li>
-</ul>
-<p>Dates range from 2014-09-12 08:47:00 to 2016-12-13 14:55:09.</p>
-<pre class="r"><code>xts.createdOn &lt;- as.xts(apply.weekly(myp.xts.createdOn, sum))
-autoplot(xts.createdOn, geom='line') + 
-  theme_bw() + ylab(&quot;Problems CreatedOn&quot;) + ggtitle(&quot;Weekly number of Problems CreatedOn&quot;)</code></pre>
-<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAPACAMAAADDuCPrAAADAFBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////isF19AAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nOzdB5gTVeP24WdpgiCo8KKi2F97x957D6JYsSJ2VOyo2BBFsYEioGAXC6KiYO9i772LWF5FXTqiUnbnm5rMJifZZefkyf9Lnt91aeac7GbOltwk2WQCRymlVKNCqReglFL/vyZAlVKqkQlQpZRqZAJUKaUamQBVSqlGJkCVUqqRCVCllGpkAlQppRqZAFVKqUYmQJVSqpEJUKWUamQCVCmlGpkAVUqpRiZAlZW+HT/iiqEP/69Ee//zqdsHDn34o9oS7V5VbKUB9DcAZ6VHn7ujY9Kjqe6od4MvqTUWy5rpBYxLur6GNAVY1/qFTj9lrcVWmF5nqgvStVn10AcXNH5xxfvOzB20YbjEje+tKc4u6nYpMDQ9WHjb9k2CvS9/yg+MvSsVVaJboGsCW6QHN7i/+p3SNx6ecEcPN/iCygvQOSt7DFTXmYsB6rX2p41eXNG+My+uFlvgHlOLso+6xQF9fYPY3luc/y9h90qFlQjQk4Dmf0eDvbzf/LQL/dzBnw2+oPIC1HWh6d7Hzq4z5wK6xPJ+S/lELPltYxdXrO/MGO/236q9r7325F2r3K0t/mr8RQHtG/RxMUAfaO7uc7H9Lhx65Yn+Pz87zWz87pVaxEoE6Bj3N31iuP3v4t7v/bXRWTsD6zX8gsoL0B2BB7PnXEAHhJtTJ6znfqe2b8AFMQF9qql7B2J8cA/is73dBZ7e+MtadEDvc3fYcsAsf7v2Fe/GaJd/Gr9/pRatEgH6h/uLfnW4/bJ7AwLYNRwtaAOc2vALKi9AOwOzs+digLrfnR3cb9x79V8QEdCZnYA103cZFuwCNPmq0Re2yIB+6/66LPdFen6B+zXizEbvXqlFrFR/hV8HSIWbFwLnuobODUYfLdJDoGUG6DJAzh+J6gDq/OB+e66s/4KIgPYB2vyYGf7ZPolgiwzodkDbb2Jn1BzhfoPebPT+lVq0SgVob/eqEv7daDPgo02Ap4LR8EV6CLTiAHVWAY6q/4J4gM5uDVwTnzjRvUnY6KcTLSqgr7u/LXfUOWfmCkC3xu5eqUWsVIA+7P7mf+1vTa3Cf2ouAM4IzjgSWD/8mNrP7rz65id/qfN52XNJAJ331LBBD39R/8f9NnrQkAn+H3cXvjxs4P0fBjwERtW+PerKES/OK7TEoB9GXTU5+4L/feGWK29+fEZmogGAuneR9zVcaNZFGRcX/86YF2n+Sr3+fv+hQbc+93P24hxnFNC6zl+NXnJ/spm/c2VWaNrjLy/cddWwx2K7iQNq+oTv7776xvF/ZQDd3/06s7QeCVR9nx419GesVKMqFaDV6ZsODwGHeo+Drh2csTpwmr9R++B//b86N+n2VvqzcufSgP6zD7CCd2cuYGIS0HJO9Gkuzz3q7L0v8FntiA7+Ze32cTC3R+zBxehS3evpZ7OPaep9WIcnHGfCCv5n7Or74Bv1arCeJa9KP3kmd4nuzr6rvbw5MKHut2BG39b+RzY9OLi+3xs9FSfnaUxZt0APz7nQ7IsyLy4DaO4iC32ljjNn0H/8cdVh8bvLfingyDoTNb/88ss/OSs0/TTf2j56atbwheEa/Nrl/YQt/anW/eaFgM5bHBiRtaC/2gXnmX7GSlmuZK9EWh/o5W8cD9zuzGsD+DdvvL8uPeJtzD8i/dy+ZiPDzzHMRdTN3R1Y2X8WdcjEpsCY8NNqVgSerbNz78rVJ7qoJSf7c3kATT/LsOrlodFnrOvdqPOMGtMkmtppdt4lepJc6E3UBfSH/6Y/ss3z3kSDAHX/YcBl2Reac1HmxaUBNSyy0Ffq/LZm+uMXf7vuj7G2o/fjM1Vnhaaf5rhm6bngUYk4oKZPuCP9Be1yQYCkdw8+58VP3YEDHfPPWCnLlQzQ04G1vNPalX063Rsyo7zh4xEgJ3nXkyHPPXShdxtidPA5hrmQur92Alb7yZ8JmbgWOCjc1atAp4V1du5euc7GYhe/+MvEY91L2sufywPomtjgwUkfXuzekloSOOLZn192pcatjm/UUq2w2o1vvDZkDXi3ovMt0d3Zze4tqZV3+SC+hLkeSgc98Nr4Pq2AVt4Nu29GjFjC/dARI/6Of5zhr/DvZl1o7kWZF5cG1LDIQl+p98NpfvQDE8ed5d7OXafuK41+cT/mQ+MPuM6Xbdjj1KXcG7sXPPLa+Ku8p+G/6s68N2KEK/SIEbebP+FFd6tFr/ufGroZsEQA6GD3X82cHV/v3hXJ8zNWynIlA3Sc+1vtvWblO/ea657cHNxscM4PHwJ93r3l8aD/6Na0A4D/TMs3F1A3ezuX41+DCw6Z+NG9LoZ/2D8BOK/uzt0rF5Z9398c4N5q803IAyi6+k8rvNG7HTPc26rdCjjJ8Y0C9vR38c+h7uZz+Zbo7qxVk/6zsr5+9zbUYsHfzb5zbyDvFEzW8xjotCe854HumH2hhosyLi4C1LTIQl+p+60M/8T3apPsJ1G9H/4Yc4uv0LRHF8vlgsdU/3LvLVwYfFL0GKjhExas4sLoP5pZc5G3xKHBV76rk90TLve15p+xUpYrGaDTqoI7d8ODV75/697u8ezYIXwIdNfM33bnrgMMyTfnUzfTvaav93t4VsTEltHTof51b1B9Xnfn3pXr3mBzXgtgsreRB9C2U4ILaereign+XDE6uNZ6Ri0Rvmx93krhs7JMS/R2lv1AnTPXvf3VP9x+DtELsfIAGr4Saeng3uj3WRdquijj4qLvjGmRhb7SCZm/620M3FNndS+4O5qfvWQn+8s27bFn5vlYrqXHBVsRoIZP8P7s+FowVbt7COjxwME5O37LPXOW+WeslOVKdzQm97p4gXvSDXjMPaldxX/63vzFg4dAvbug6XvddwL75ZnzqZvu3qfbOP3AYcTE4Oieq3tbt0vWvt0r15rRTZINgO+80zyAHhJOrQqMDbbeBXYIloPzo0+4zb0ROC/PEt2drZxz++cpF6zob+a1mwaPa+YFNN6qn0ZfQXShposyLS76zhgXWegrdZFcNdzXXzNm1H2tuYtrE/OTlmIrNO7xrXHjpoRTY6PHwyNATZ/QA9g9mpoYAnpk9l+wvD4JHhg1/YyVslzpAD3Tf1HignZo6r94+STg0sw9QvcqdUD6I78COuWZ86ir3ihzW8PJAPqLe7/NfzSxO3BT1r7dK9fR0fYWhQGNbiWtC4R/gf4sA+iX0SfMa+Y/NGlcYl/TMzfde6GHpQeDo8fo6gG0qsMuw/9NfwXRhZouyrS46DtjXGR9X+lReZ6b+5p7nvm177EVGveYqbZnNqCmT1gZeCg9t0YAqPs7tE/Ojl9xl/S3+WeslOVKB+h4oNV8501gK384zt8YCmzgjQbUvdmF1nnmXOqaru8Nlks/BTL9p5Jtg40ZLdAs+9rvXrmuiLbrATQ6ZoXLSniDKcZK5lXXqwOP5lmiu7N+OV/94fHJccHjwA16HmjmK4g+33RRpsVF3xnjIgt9pd6LjbDYXte/Y7iv7h2KcHLudN0VGvfoVzvl9TvP8R7YrQuo4RNqmwIfpT9v72C5VwKb5Oz4QfdfTsf8M1bKcqUDdGYT4B2nP3CJP5zVFE2me/fT/ENRnJl1DfJcMc05/vMfT2jn/hddbhrQocEzJm8L7zLGc69c0XNjkgAauyW1h/9sHuMSvT9H53z1+4TPOvD7COjobywSoNGFmi7KtLjoO2NcZEFA/zk3eMZRq31uy/6D0V9NA5xjPdKv34i6KzTu0V1r3y6to5m6gBo+YSb8RzbDegfLfRhoNjf7W+Nyv7Fj/hkrZbkSHpF+U2CwdzMx/MvAtt5Db6uEV8fTgD1HxJtnnvMBvbB2FIInwnilAf2tCkv84x/h6JHsXfeNmWMCdPGGAbp85hJ39p9sY1xifGfp6qjn3oxb2t9YJECjzzddlGlx0XfGuMiCgDrOt5dsFEi21K1Zj3huDJxdd2aD4GULsRUa9zjPO+4Hmv53nzPuuzMbUMMn/F0H0D7Bcr2Dbz+V9Z2pdW/QnuOYf8ZKWa6EgJ4DHDirGdqEdwzdu23Hefc8/ds47vX5iOyPN815gF7uODU7AGuEd1kzr7dx6Rzv/FyFpXOOsVsPoLPRMECrMveSV/SvycYlGgGtc797ArC6v9EoQE0XZVpc9J0xLrIeQN3+90DvdTzy7q77iWcAy9VZ8+8IDrQVW6Fxj0e61F/wlv8o9bhsQA2fUNsifhe+a7jcLvEXtga9guBZWwJUESohoE+6V73HM1eAd4HOj4YPgTp35P7l3DgX3dn+ZrG0IhlAh3t/xhgEnJLzWfUA+mEDAUX6RdZzqoAf8yzRCGi/+F9+hgA7+xuNAtR0UabFRd8Z4yLrB9Try51z/gL0KbKe2XQPAuliKzTt0bupHL1k/aFsQE2fsG78j0jrhst1b7virTof5v1b6j/ZX4AqQiUEdHZTV0/gxnC4sD2QAvr4g29cwqZFHzhml11G5plLP1o5EGgWPMEnA+gfTdBu3vreI63Z5QE0OsTz8IYCek50IdcGb0piXKIR0CeAdunnHm0OXORvNQpQ00WZFhd9Z4yLLPSVDj377HfD87wHruu+0tR75m6HPzLDGvce/Oq1dVdo2uPw4BFqv4uzATV9Qq/Y05i8J2v4y53XGVg1djQWx7kK4VMyBKgiVMp35dzCf1Qt/WybQ/1hgF+tey0+N5yfvxrwdp65NKDz3evt5v5TB2PHHNrVvTMJrJn7PEXTlWuf9PO+/+ncUEAXD+WY3QHom2+JRkD/WjLz7Hf3pjiCl8w0ClDTRZkWF31njIss9JV2TT/P3fmrefrMqI+bARtl/rZ0CcKVxVZo2uNVmefAf750DNCl833C08j8C7dfBKg/u1FsRe4/FtirJmv/AlQVq1IC6r1WBMunebvDG1ZNSw+qrvZBXHBoZKBpLn00pnebhK9wiQE6EnCv8AONe865cp3r3pbxj9/0b080FFBs59/6me7es231Y74lGgF1zgNaPu1vfdkpfHlmIwE1XZRxcdF3xrTIQl+pe+u+TfB691r3tmKn7BcFXOHuasVHg9mZp7uDDRdkr9CwxwnuhfrHSFo41v2q0TX4wOiv6oZPqFkzeiln7SCkAfVuveI/t4SPcn/i3o1A5+qc75AAVUWqlIA+410Pjk4P/+cNNwwHNd5VYYurn3zyutXd69LzeecyxwM9E2gde6TPa6r37Jsqw0EsTVcu791A17jvq09u74JlNm8YoOsAy146/vGLPAGG5F2iGdC/vCMoHXT/K+NOXsxdeHjYuMYBargo4+Ki74xpkYW+0p9bAu3OeOSVJ2/exv3EQdlLqT3b+8GtcOJVw648uJ271XFyzgoNe/zD/aet2X59+x22MuDexqzqNsybbQt0Of5I8xJfqwJaHPfA0yPcVWyRXm6td5MXSxx0ydBBp63rba73c+53SICqIlVKQOd4vo3OjL0nVPeJBjN2SD8JsPld+ecygM5ZKXgNd/ywwXu6H7mLYc+mK1ftkdFlt327e8MAPbt/ej3n1uZdohlQ5/vMewG3fSmcaxyghosyLi79nTEssuAfkW5FpkNy35i+dmjb2Ads9J1hhYY9DkzP7DzLg9k/gv7h3rid+ROce9KHs9vuvdjbGo9ZPrb3Jr2iN+UUoIpQKQF1tkadR9S8WzKZg8nPG7yMf5WoOnJygbnYEem9G7T31QXUe1Qg62k3fsYr19+XtfEvfIfvnYYCGl15Vx+XfiAid4l5AHWmneW/HSmaHjYpmmokoLkXZVxc5juTu8jCf4V/cv3Qp+3HG49qNOWMCLG1b4mePVV3hbl7rL1/VX+m8y01zp+HtV3uaG9y1hkrtlh2e/MnOM7bW/tTLc+Z91kMUOfv6zYJ997h6M+M3yEBqopUSQGtp4Vvjxo48pU/6p3L35fuXdo59X9Y1LTnR1x1V84x1wu28MXhV456v86fqRq+xH+eG37FTeNm1P+Bjbwow+LSZy3S99Gp/e7Z2waOem5S3g+oeX/MjVfcPDb7PUIK7nHem/cOHPlm3uPMmZY46e5B1z9keOP3X8ePvPLGB99ZmHuOUsXs/zKgyRvQoHdgU0qpRlXWgNasArxY6kUopcq2sgb0UaCzjkSulCpWZQvown+dyZ0yB7lUSinrlS2gU6raVwHtZ5d6HUqp8q18AfWf8PJKqZehlCrjyhbQWVu36tjtk1KvQilVzpUtoEopVewEqFJKNTIBqpRSjUyAKqVUIxOgSinVyASoUko1MgGqlFKNTIAqpVQjE6BKKdXIBKhSSjUyAaqUUo1MgCqlVCMToEop1cgEqFJKNTIBqpRSjUyAKqVUIysNoDd2tdq++9q9vEXYccn2nCrNflP7lmrPXUv3RZf0y06V6ldMP2pzz/0fAPSy3W+y2bXXWb24hjdo0LWl2vP1pdnvkEGDSvXNvunGQYNLtesbBg26oUS7vq5Uv2KDB5Xql8z7UQ8p1a7dH3WBX7PBXbqM+78A6JFWL25mid46rra6ekZp9uxMnVua/c6vrp5Tmj07zsLqeaXa9d/V1f+UaNezZ5Zox/Oqq/8q0a7dH/X8Uu3a/VH/m//ceQLUYgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUmgClJkANCVCbCVBqApSaADUkQG0mQKkJUGoC1JAAtZkApSZAqQlQQwLUZgKUWoUA+tPTC+NDAcpNgPISoNQqA9DZS6NfnbEApSZAeQlQapUB6BfAvvGxAOUmQHkJUGqVAegnwB7xsQDlJkB5CVBqlQHo+8BO8bEA5SZAeQlQapUB6FvANvGxAOUmQHkJUGqVAehEYLP4WIByE6C8BCi1ygD0RWDD+FiAchOgvAQotcoA9Blg7fhYgHIjAvpr94uCjZkjeu5/3O1z6xtkEqBJE6DUiIBOAFaPjwUoNx6gteenAkCn9kylDkqlTp5TeBBLgCZNgFIjAjoOWDE+FqDceIA+lQoB7Z/q83Pt971SQwoPYgnQpAlQakRAHwKWjY8FKDcaoNUHh4D+mOr+u3syKdVtWqFBPAGaNAFKjQjofcDS8bEA5cYCtLZ/akgA6JhUf3+mT+r5QoN4AjRpApQaEdC7gDbxsQDlxgL05dS1rweADkyN92fuTg0vNIgnQJMmQKkRAR0FtIiPBSg3EqAze/SYGQJ6bup9f+q51MBCg3gCNGkClBoR0OFAVXwsQLmRAL0m9bITAnpC6it/6s1U30IDvxOP8DuhxwybTZ1q9eIaXnV1yfY8rTT7nV66L9nd9/RS7XpaNW3fVwP4MzYu2S+3+6Mu0S9ZSX/U0wv+qP+wBOg7qUtrI0APSf3iz32aOqnQwG+nLn7HHFatlDJ0uQvoT6VehMrTb3YA/evog/5wIkAPTjPZq9BAgCpVfxe7gH5X6kWoPFkCdKj/16H0Xfiv/ck3U+cUGsTTY6BJ02Og1IiPgQ5wAf09NtZjoNwYj4F+kzq7xkkDel7qA3/2+dSVhQbxBGjSBCg1IqCXuID+HBsLUG4MQCemMn3nDEw94c+OTg1zCgziCdCkCVBqREAvcAGdFBsLUG4MQN860u+QVLcjj5zkjAlvX56TesYpMIgnQJMmQKkRAT3HBfSr2FiAciMejen16KWcB3s/4yldu00vNIgnQJMmQKkRAT3DBfST2FiAcuMD6vRPXTTXmdknNbTwIJYATZoApUYEtLcL6HuxsQDlVgJApx6T6ta7a6r33MKDWAI0aQKUGhHQE1xA34iNBSi3EgDqzBx+TLded/5d3yCTAE2aAKVGBLSnC+jLsbEA5aa39OAlQKlVBqBHuIA+FxsLUG4ClJcApVYZgB7iAvpEbCxAuQlQXgKUWmUAeoAL6KOxsQDlJkB5CVBqlQFoVxfQB2NjAcpNgPISoNQqA9C9XEDviY0FKDcBykuAUqsMQHd1Ab0tNhag3AQoLwFKrTIA3cEFdERsLEC5CVBeApRaZQC6tQvojbGxAOUmQHkJUGqVAehmLqDXxsYClJsA5SVAqVUGoBu5gMYPnytAuQlQXgKUWmUAuq4L6KWxsQDlJkB5CVBqlQHomi6gF8bGApSbAOUlQKlVBqCruoDG30JMgHIToLwEKLXKALSzC+jpsbEA5SZAeQlQapUB6LIuoCfHxgKUmwDlJUCpVQag7V1Ae8XGApSbAOUlQKlVBqBtXUDjVw8Byk2A8hKg1CoD0FYuoIfExgKUmwDlJUCpVQagzV1A94+NBSg3AcpLgFKrDECrXED3iY0FKDcBykuAUqsIQBe4fmL32IQA5SZAeQlQahUB6N8eoDvGJgQoNwHKS4BSqwhAZ3mAbh2bEKDcBCgvAUqtIgCd6gG6aWxCgHIToLwEKLWKAHSKB+gGsQkByk2A8hKg1CoC0J89QNeKTQhQbgKUlwClVhGA/uABumpsQoByE6C8BCi1igD0Gw/QzrEJAcpNgPISoNQqAtDPPUCXiU0IUG4ClJcApVYRgH7kAbpUbEKAchOgvAQotYoA9F0P0NaxCQHKTYDyEqDUKgLQNzxAm8cmBCg3AcpLgFKrCEBf8QBFbWZCgHIToLwEKLWKAPQFH9DYFypAuQlQXgKUWkUA+rQPaOx7LEC5CVBeApRaRQA63gd0WmZCgHIToLwEKLWKAPQRH9ApmQkByk2A8hKg1CoC0Ad9QH/KTAhQbgKUlwClVhGA3usD+n1mQoByE6C8BCi1igD0Dh/QLzMTApSbAOUlQKlVBKC3+oB+nJkQoNwEKC8BSq0iAB3mA/puZkKAchOgvAQotYoAdIgP6OuZCQHKTYDyEqDUKgLQa4FmwMuZCQHKTYDyEqDUKgLQgUA74JnMhADlJkB5CVBqFQFof6ATMCEzIUC5CVBeApRaRQB6EbA68EhmQoByE6C8BCi1igD0fGBD4IHMhADlJkB5CVBqFQHo2cDWwN2ZCQHKTYDyEqDUKgLQ04HdgFGZCQHKTYDyEqDUKgLQk4H9gGGZCQHKTYDyEqDUKgLQ44AewJDMhADlJkB5CVBqFQHo0cDxwDWZCQHKTYDyEqDUKgJQ9+ZnH+CKzIQA5SZAeQlQahUB6MHAhcClmQkByk2A8hKg1CoC0P3dm5/ABZkJAcpNgPISoNQqAtB9gcHA2ZkJAcpNgPISoNQqAtA9gJHAaZkJAcpNgPISoNQqAtCdgfuAEzMTApSbAOUlQKlVBKDbAeOAYzMTApSbAOUlQKlVBKBbAs8BR2QmBCg3AcpLgFKrCEA3BV4HDs5MCFBuApSXAKVWEYBuCHwEdMtMCFBuApSXAKVWEYCuA3wL7J2ZEKDcBCgvAUqtIgD9L5r8DOyamRCg3AQoLwFKrSIAXRmL/Q7skJkQoNwEKC8BSq0iAF0ebaYDW2UmBCg3AcpLgFKrCEA7Ysm/gC6ZCQHKTYDyEqDUKgLQpfCf+cD6mQkByk2A8hKg1CoC0CXQqbYKa2YmBCg3AcpLgFKrCEBbYiWnBVbJTAhQbgKUlwClVhGANsXqThuskJkQoNwEKC8BSq0SAK0B1naWRsfMjADlJkB5CVBqlQDoPGADZ1ksmZkRoNwEKC8BSq0SAPWfwtQZi2dmBCg3AcpLgFKrBEBnAFs4q6FZZkaAchOgvAQotUoA9E9gW2dtoCY9I0C5CVBeApRaJQD6G7CTd0i7zHVYgHIToLwEKLVKAPQnYHdnMyDzGy1AuQlQXgKUWiUA+j2wj7MNMDU9I0C5/X8B6MU9Ztts2nSrF9fwqqunlmrPJfqSZ1aXas+zZ8+qnlmqXc9w/6mk7Oh9YN/Z2wPfpmemTaPsOLfK/VEX2PfU/yuAzrTZ1GlWL67huYCWas8l+pLdX69SfbPdfU8v1a6nV5P2/SbQbebOwGfpmWml+n5PL+GPemb1jFLt2f2yC+z7z/8bgOoufNJ0F54a7S78B8Bhzr7uLdD0jO7Cc/v/4i68AE2aAKVGA/Rt4CjnAOCL9IwA5SZAeQlQapUA6OtAL+dQ4KP0jADlJkB5CVBqlQDoy8BJzlHAO+kZAcpNgPISoNQqAdDngNOc44DX0jMClJsA5SVAqVUCoE8CZzknAy+mZwQoNwHKS4BSqwRAHwP6On2Ap9MzApSbAOUlQKlVAqBjgX7OucD49IwA5SZAeQlQapUA6P3AZU4/4OH0jADlJkB5CVBqlQDoPcCVzmXA/ekZAcpNgPISoNQqAdDbgWucgcBd6RkByk2A8hKg1CoB0FuAwc51wMj0jADlJkB5CVBqlQDoUOBm50bvf1EClJsA5SVAqVUCoDcAtzgjgBvSMwKUmwDlJUCpVQKgg4DbvQdCB6VnBCg3AcpLgFKrBECvAO5x7gUGpGcEKDcBykuAUqsEQC8FHnDGAJekZwQoNwHKS4BSqwRA/efQjwPOT88IUG4ClJcApVYJgJ4HPB4cUSRKgHIToLwEKLVKAPRM4CnvmHanpmcEKDcBykuAUqsEQE8FnndeAU5IzwhQbgKUlwClVgmAngi87LwJ9EzPCFBuApSXAKVWCYAeC7zuvA8cnp4RoNwEKC8BSq0SAPXfDulT4KD0jADlJkB5CVBqlQDoYcCHztfAfukZAcpNgPISoNQqAdADgc+cScBe6V0+bG0AACAASURBVBkByk2A8hKg1CoB0P2Ar51fgF3SMwKUmwDlJUCpVQKgewOTnD+A7dIzApSbAOUlQKlVAqC7AT85M4At0zMClJsA5SVAqVUCoDsCvzlzgU3SMwKUmwDlJUCpVQKg2wLVzgJgvfSMAOUmQHkJUGqVAOgWgAtmE6yRnhGg3AQoLwFKrRIA3QRwf7KLYeX0jADlJkB5CVBqlQDo+oBLxxLolJ4RoNwEKC8BSq0SAF0LqHWc9vhPekaAchOgvAQotUoAdDU0c/+/HNqlZwQoNwHKS4BSqwRAV0RL9/8roVV6RoByE6C8BCi1SgC0E5Zw/786mqZnBCg3AcpLgFKrBED/g6Xd/68DLIxmBCg3AcpLgFKrBECXxDLu/zcC0rsToNwEKC8BSq0SAG2NFdz/bw7MimYEKDcBykuAUqsEQFtgFSd8QWeYAOUmQHkJUGqVAGjwIs6dgV+jGQHKTYDyEqDUKgDQhcA67skewORoSoByE6C8BCi1CgD0H2BD9yQFfBNNCVBuApSXAKVWAYDOBjZ1T7p774wUTQlQagKUlwClVgGATge2csL35gwToNwEKC8BSq0CAP0D2N49ORp4O5oSoNwEKC8BSq0CAP1f8H6cxwMToykByk2A8hKg1CoA0MnAnu5Jb+CFaEqAchOgvAQotQoA9Fsg5Z6cATwVTQlQbgKUlwClVgGAfgHs756cBzwWTQlQbgKUlwClVgGAfgwc7J5cBIyNpgQoNwHKS4BSqwBA3wcOd0/6A/dFUwKUmwDlJUCpVQCgbwHHuCdXAXdGUwKUmwDlJUCpVQCgE4Hj3ZPrgVujKQHKTYDyEqDUKgDQF4FT3JOhwNBoSoByE6C8BCi1CgD0GaCPe3ILcH00JUC5CVBeApRaBQA6ATjbPbkDuCqaEqDcBCgvAUqtAgB9FDjfPRkNXB5NCVBuApSXAKVWAYA+BFycOfEToNwEKC8BSq0CAL0vuOn5GNA3mhKg3AQoLwFKrQIAvSt48PMp4MxoSoByE6C8BCi1CgB0FHCde/I80DuaEqDcBCgvAUqtAgAdDgxxT14Nnk/vJ0C5CVBeApRaBQB6IzDM8V/ReXQ0JUC5CVBeApRaBQB6HTDSPfkA6BFNCVBuApSXAKVWAYBeHRxF5DPgwGhKgHIToLwEKLUKAHQAMNo9+QboGk0JUG4ClJcApVYBgF4CjHHSb43kJ0C5CVBeApRaBQB6AfCo4785587RlADlJkB5CVBqFQDoOcB49+RPYNtoSoByE6C8BCi1CgC0D/C0ezIT2CKaEqDcBCgvAUqtAgA9JXhD+L+BjaMpAcpNgPISoNQqANATgFfdk4XAutGUAOUmQHkJUGoVAGhP4E3vtAn+G00JUG4ClJcApVYBgB4BvOedtsRK0ZQA5SZAeQlQahUA6CHAx95pWywXTQlQbgKUlwClVgGAHgB84Z12QPtoSoByE6C8BCi1CgA0BXzjnXZC22hKgHIToLwEKLUKAHRP4AfvdGW0jKYEKDcSoF8NOP6gM0aGcM0c0XP/426fW98gkwBNmgClxgJ0V+AX73QNNImmBCg3DqDju6b2OyKVOuJ/3mBqz1TqoFTq5DmFB7EEaNIEKDUWoDsAv3un6wILwikByo0C6NTuXcfNd/44L3VhrTvqn+rzc+33vVLemxEUGMQSoEkToNRYgG4NTPNONwaiH7AA5UYB9O7U1d7JH91SfzrOj6nu3r+ak1LdphUaxBOgSROg1FiAbgb4v8tbAJGbApQbBdABqYn+ae/UB44zJtXfH/RJPV9oEE+AJk2AUmMBuhHg72c74M9wSoByowB6ziH+ky2cs1JvOM7A1Hh/cHdqeKFBPAGaNAFKjQVo9NjnLsD/wikByo35NKbZB6fcH/O5qff90XOpgYUG8QRo0gQoNRaga6DKP90rfDqTI0DZ0QCdP+39c1PXuBsnpL7yJ95M9S008Ou6k9+xh021WXW11YtblB2Xbs8l23Gp9uzuu3R7Jn3VK6G5f7on8HZ615Q9G6rMH3Xhb/gUe4Cenkqlhnk3CQ5J+U9dcz5NnVRo4LdTF79jDqtWSmW3PFr5pylgYomXokz9Zg/Q6087OHWod/jsg9NM9io08NMtUGt7LtmOK/FmCeur7oi2/ml34MX0ril7NlSZP2raLVDHqX15/9Tb3h31r/3hm6lzCg3i6THQpOkxUGqsx0Dbo4N/egzwVjilx0C5UV8Lf3fqMsc5z3suk9vzqSsLDeIJ0KQJUGosQKPD2IVHpvcSoNwYgE4f+3Sw8V7qFO/JSk/4g9GpYYUG8QRo0gQoNRagrbCif3oqED11WoByYwD6V2r/hf7GS6mLvKfLB7cvz0k9U2gQT4AmTYBSYwHaDKv6p2cCT4ZTApQb5S788d4T6F1ABqTu8F6webD3M57Stdv0QoN4AjRpApQaCdBaYE1/oy8QXU8FKDcKoONTR7yz0Jl1a+rgPxzvkCEXzXVm9kkNdQoOYgnQpAlQaiRAFwDr+RsXA2PCOQHKjQJoTb9UqtvhqdSBr3mjqcekuvXumuo9t/AglgBNmgClRgI0/X7wlwOjwzkByo3zV/jaZ88/+qA+N4cHPJg5/Jhuve78u75BJgGaNAFKjQToLGBzf+Nq4I5wToBy01t68BKg1Mof0KnANv7GDcAt4ZwA5SZAeQlQauUP6BRgR3/jZuCmcE6AchOgvAQotfIH9GdgV39jJHBdOCdAuQlQXgKUWvkDOgnYy9+4E4iOAClAuQlQXgKUWvkD+jXQ1d+4D+gfzglQbgKUlwClVv6Afg509zfGAheFcwKUmwDlJUCplT+gHwGH+huPA+eFcwKUmwDlJUCplT+g7wLBNeNp4IxwToByE6C8BCi18gf0DeBYf+NF4JRwToByE6C8BCi18gf0FeBEf2MicFw4J0C5CVBeApRa+QP6PNDb33gbOCqcE6DcBCgvAUqt/AF9Knro88Por0kClJ0A5SVAqZU/oOOBc/2N9POZBCg7AcpLgFIrf0AfAS70N74FUuGcAOUmQHkJUGrlD+iDwKX+xo/AHuGcAOUmQHkJUGrlD+i9wBX+xm/ATuGcAOUmQHkJUGrlD+gdwNX+RnV0YFAByk6A8hKg1Mof0FuB6/2NWcBm4ZwA5SZAeQlQauUPaPo4yv8AG4VzApSbAOUlQKmVP6BDgBH+Rg2wTjgnQLkJUF4ClFr5A3otcFuw1Qyrh3MClJsA5SVAqZU/oAOBu4OtVlgxnBOg3AQoLwFKrfwB7Q/cH2y1w7LhnADlJkB5CVBq5Q/oRcBDwdZ/sHQ4J0C5CVBeApRa+QPaFwivnstjiXBOgHIToLwEKLXyB/Rs4IlgaxUsFs4JUG4ClJcApVb+gJ4OPBtsrYmqcE6AcrMEaO2kZ57OZG95QQI0aQKUGgnQk4GXgq31gJAQAcrNDqBvrIJ4FtfnJ0CTJkCpkQA9Dngt2NoECPUSoNysADqpBQRo/QlQauUP6NHA28HWlsD0YEuAcrMC6FFA1ye/+CqdzQV6CdCkCVBqJEB7AO8HW9sDfwRbApSbFUDXxD61NheVnQBNmgClRgL0IOCTYGtX4JdgS4ByswLoYnjM5ppyEqBJE6DUSIB2A74MtvYGJgVbApSbFUCXjR7LLlICNGkClBoJ0H2B74Itl9LwgTMBys0KoPvhRptrykmAJk2AUiMBugfwY7CVuTMvQLlZAfTVqtWm21xUdgI0aQKUGgnQnYFfg63DgfeCLQHKzc7zQIdgq48sLio7AZo0AUqNBOh2wJ/BVk/gzWBLgHKzAui4cScC2xx76YAwmwv0EqBJE6DUSIBuCYS/UO7175VgS4ByswIooCfSNyABSq38Ae0ChN/d04Dngi0Bys0KoK2zsrlALwGaNAFKjQToBkB45c0cl0mActPRmHgJUGrlD+g6QE2wdT7waLAlQLkJUF4ClFr5A/pfNAm3LgEeDLYEKDcBykuAUit/QFdOH0Z5AHBPsCVAuVkB9K8XLjt63x27n3LPLzaXlkmAJk2AUiMBujzahFuDgNuDLQHKzQKg356yePrv73sX5TWdAjRpApQaCdCOWCrcGgyMCLYEKLfEgNZcFx4MtElw0qfAxTU2AZo0AUqNBOhS6BhuDUP0amoByi0poDVHumgu1/fJ//1bO+PDGzd1B7vb/1oEaNIEKDUSoG3QKdwaBVwbbAlQbkkB7Qu0uTm9+tqnOgEnWFxekABNmgClRgK0JVYKt+4Grgy2BCi3hIB+0gQdP49PTFkNeMfW4qIEaNIEKDUSoE2xerh1P3BpsCVAuSUEdD9UvVl35otm2MvO0jIJ0KQJUGocQGuAtcPNh4ELgy0Byi0ZoLMXw9HZn3MSms+ysbJYAjRpApQaB9B5wAbh5njg3GBLgHJLBuiTwIvZn/MK8KSVpWUSoEkToNQ4gP4FdAk3nwH6BFsClFsyQG8FcjCaDYy0srRMAjRpApQaB9AZwJbh5kvAycGWAOWWDNAr0TL3k1pGfxC0lgBNmgClxgH0T2DbcPN1oFewJUC5JQN0GPB3ziUCw60sLZMATZoApcYB9Fdgp3DzHSC8jghQbskAfczwnKX3gHHZcwkToEkToNQ4gP4E7B5ufgQcEmwJUG7JAK1uitOzP6cvqv6wsrRMAjRpApQaB9DvgX3CzS+AA4ItAcot4fNAd0GLr+vO/NoaW9tZWiYBmjQBSo0D6FdAt3DzO2DfYEuAcksI6ERgjV/jE3O2SL+5gL0EaNIEKDUOoJ8CB4WbmXvzApRb0tfC9wRWeDoz/GwjYO9aa6sLE6BJE6DUOIB+APQIN6cAOwZbApRbUkDn7Q5g61HfeWhWP9a9CbCB/Z+gAE2aAKXGAfRt4KhwcyqiB84EKLfExwP95zT/MKCtll+5nb+xT7XtJQrQ5AlQahxAX0s/+dN79cqm4ZYApWbhiPQv75Z5R/h177F+/90RoMkToNQ4gL4EnBRu/pt+WbwA5WblPZG+HX7YNmuusuk+A96osbm2dAI0aQKUGgfQ54DTws3a9IGZBCg3vSsnLwFKrewBfRI4K9pujtWCDQHKTYDyEqDUyh7Qx4C+0XZrdA42BCi3hID2M2Z7kQI0aQKUGgfQscBF0faSWCbYEKDcEgIKY7YXKUCTJkCpcQC9H7gs2k6/w7EA5ZYQ0PZhzT03m/pvcLzeIYfYXqQATZoApcYBNPNOco6zAloHGwKUm53HQB9piU0enLxg4c/jtkLLRy0uL0iAJk2AUuMAehtwTbS9KloEGwKUmxVAv1oM54bP/6y9BK2+sLW4KAGaNAFKjQPoLcDgaHstVAXXQAHKzQqgvbBN+gmgNdvhGDtLyyRAkyZAqXEAHQrcHG1vAARfrQDlZgXQFeNv4jEQy9tYWDwBmjQBSo0D6A3ArdF2FyD4RgtQblYAbY7bM4NRaG5jYfEEaNIEKDUOoIOAO6LtrYBp/oYA5WYF0PbRWwJ6nRA9I81eAjRpApQaB9ArgHui7R2AKf6GAOVmBdBdseS30fY3bbGXnaVlEqBJE6DUOIBeCjwQbe8G/OxvCFBuVgAdDaz5VrD51hrAGFuLixKgSROg1DiA9gMejrb3Ab73NwQoNyuA1ngHtNu13x139NsVOiJ93gQotbIH9Dzg8Wh7f+BLf0OAcrPzRPo5+2Vex3mg/euqAE2aAKXGAfRM4Klo+2DgY39DgHKzdDSm2vF7tvL0bNvtWXtrSydAkyZAqXEAPRV4Pto+AnjX3xCg3Owdzm7+t+98MLk4B1S+uMdMm02dZvXiGl519dRS7blEX/KM6lLt2dv39FLteno1Y989gSejbRfQZ/yNaaX6fk8v4Y96ZvWMUu3Z/bIL7PvPRToe6PxivJ1HAOhsm02bbvXiGp4LaKn2XKIv2f03o1Tf7NmzqmeWatfuvxszir+XI4Hnou1eLqb+xrRpxd+xscr9URfY99QGA/rE4Z1bYYHz7KjpRQBUd+GTprvw1Dh34V1A34m2TweCB890F56bnbvw/xzo//1ogTMULe8xf0iSBGjSBCg1DqCHAR9G2+cAE/wNAcrNCqC1RwDLHOIBep/L6NU21+cnQJMmQKlxAHVvtXwWbV8IPOJvCFBuVgCdCHSb7XiAOl9ujhY/2FyglwBNmgClxgF0P+DraDv9qiQBys0KoD2w3BwnANSZ0zn9ZtXWEqBJE6DUOIDuDUyKtq8A7vY3BCg3K4CugQudCFD3R7m5tdWFCdCkCVBqHEDTr393uwa4zd8QoNysANoSo500oGPR1trqwgRo0gQoNQ6gOwK/RdtDgOH+hgDlZgXQdrjFSQN6kwDNkwClVvaAbgNUR9vDgSH+hgDlZgXQLjjOSQPaDRtaW12YAE2aAKXGAXRzIK1l+g3mBCg3K4BejubfRoA+AJxvcX1+AjRpApQaB9BNgPSP9R7gCn9DgHKzAuiMDuj0Qo0LaO3k45ti8d+MH5QgAZo0AUqNA+j6QNoN93bLpf6GAOVm55VIE1sBHYAu7QBUjbW4vCABmjQBSo0D6FpA+ugTjwAX+BsClJulozF9tnl0ONBVX7K3uCgBmjQBSo0D6Gpolt6eAJztbwhQbrYOZ1f7Rr+9Ntt4l9MnLLS2tEwCNGkClBoH0BXRKr39LHC6vyFAudk7HmgRE6BJE6DUOIAuF3vC4MsIXwAoQLlZAfTaa2MHUv7p2rtsLCyeAE2aAKXGAbQDlk5vvwEc628IUG5WAA2fARr0AZa3sbB4AjRpApQaB9AlsUx6+z3gCH9DgHKzDujCG9DCyspiCdCkCVBqHEBbY4X09sfAwf6GAOWWGND2bsDS7aMWB1axvUgBmjQBSo0DaIvYNe1LoJu/IUC5JQYUuV1ve5ECNGkClBoH0CZYI739PbCPvyFAuSUG9FI34OJL013xnO01CtDECVBqFEAXAuumBz8Du/kbApSb/T8iFSEBmjQBSo0C6D/ARunB78AO/oYA5WYF0BNPLMbT5zMJ0KQJUGoUQGcDm6YH04GtglkBSs3+E+mr9zsn4ZpyEqBJE6DUKIBOi8z0mgN08TcEKDf7gD6E9gnXlJMATZoApUYB9A9g+/RgHrC+vyFAudkBdMF1+64ZthqwrMX1+QnQpAlQahRA/wfskh7UVmFNf0OAcrMC6MI96zyN6UabC/QSoEkToNQogE4G9syMWmBV/1SAcrMC6KPA8kftD+x94uErRO9PbTMBmjQBSo0C6LdAKjNqE74sSYByswLo3lhpquMc7R0Tu+Y07F1r/KAECdCkCVBqFEC/AA7IjJZCR/9UgHKz9L7wl7n/fxC7u/+v3RTP21tekABNmgClRgE0/fJ3v2WwpH8qQLlZAXRx3O/+/xes5A3uCQ8LYzEBmjQBSo0C6HvA4ZlRZyzunwpQblYAbesDWtOyyvsOfhw4ajMBmjQBSo0C6FvAMZlR9P4eApSbFUDXQX/vZF287v7/JyxmbXVhAjRpApQaBdCJwPGZ0drhO8wJUG5WAD0QK0x1Tw5AP/f/L8WOUmgpAZo0AUqNAuiLwCmZ0YaAf0UWoNysAOr+W7jixY4zDEt97szdBTvZXKCXAE2aAKVGAfQZoE9mtBng/1oLUG5WAK3tDrjnTG2Hpmu3BR60uUAvAZo0AUqNAugEIHbUia0B716gACVn56Wc867d2nvgc0xT74VIB9eYP6jxCdCkCVBqFEAfBc7PjHYEfvNOBSg3awcT8X9ZPzppt173W38evQBNnAClRgF0DHBxZrQ78JN3KkC56X3heQlQauUO6Gjg8sxoX+A771SAcrMJ6Hz7tz2DBGjSBCg1CqB3AVdlRgcAX3inApSbLUCfOLxzKyxwnh013drSMgnQpAlQahRARwHXZUaHAh95pwKUmx1A/znQP47dAmcoWt5jcXVhAjRpApQaBdDhdQ4ceSTwjncqQLnZeRrTEcAyh3iA3ucyerXN9fkJ0KQJUGoUQG8EhmdGvYDXvFMBys3WE+m7zQ7em/PLzdHiB5sL9BKgSROg1CiAXgeMzIxOBl70TgUoNyuA9sByc6I3N57TGSdZXJ+fAE2aAKVGAfQq4M7MqA/wjHcqQLlZOh7ohU763eGvwObWVhcmQJMmQKlRAL0cGJ0ZnQuM904FKDcrgLb0f5IhoGPR1trqwgRo0gQoNQqglwBjMqN+wMPeqQDlZgXQdrjFSQN6kwDNkwClVu6AXgA8mhldBv+gvAKUnBVAu+A4Jw1oN2xobXVhAjRpApQaBdBzgAmZ0UDgLu9UgHKzAujlaP5tBOgDdQ5xYCcBmjQBSo0CaPRno6Brw7/JC1BuVgCd0QGdXqhxAa2dfHxTLP6bzQV6CdCkCVBqFEBPAV7IjG4EhnmnApSbnVciTWwFdAC6tANQNdbi8oIEaNIEKDUKoMcDr2ZGI4DB3qkA5WbptfCfbY6wVV+yt7goAZo0AUqNAmhP4M3M6HZgkHcqQLnZOphI7Rv99tps411On7DQ2tIyCdCkCVBqFECPAN7LjO4FBninApSbjgfKS4BSK3dADwE+zozGAJd4pwKUmxVAhw59yuaachKgSROg1CiARkcADYre4EOAcrMCaFNsY3NNOQnQpAlQahRAU8C3mdETwFneqQDlZgXQ9bGMzTXlJECTJkCpUQDdE4gd9+w54DTvVIByswLoWGCizUVlJ0CTJkCpUQDdBfglM3oFONE7FaDc7PwR6eamnV8s1hsiOQI0eQKUGgXQHYDfM6M3gZ7eqQDlZgXQp5/u3xybHH3+gDCbC/QSoEkToNQogG4NTMuM3gcO904FKDcrgCIrmwv0EqBJE6DUKIBuBsR+kT8BDvJOBSg3K4C2zsrmAr0EaNIEKDUKoBsBsZ18BeznnQpQbnoiPS8BSq3cAV0XiL3sbxKwl3cqQLkJUF4ClFq5A7oGqmKjX4BdvVMByk2A8hKg1Mod0FXQPDb6A9jeOxWg3GwA+ld4VK0F25z0UFGuLgI0aQKUGgXQFbB4bDQD2NI7FaDcEgNa+2jXlusGmwsALH7hLJvLCxKgSROg1CiALot2sdFcYBPvVIBySwrorH1cNWOAAmt/b3WBXgI0aQKUGgXQ9ugQG80H1vNOBSi3hIDO28olc4ObwtGU+45qCqxp3ScBmjQBSo0CaFssFx9WYQ3vRIBySwjoAKBTnZfBf7wZcIGtxUUJ0KQJUGoUQFthxfhwMazinQhQbskAndcBS2a9hdzU/6Cd7V9cAZo0AUqNAmgzrBYfLoHlvRMByi0ZoK8DV2d/zijgLStLyyRAkyZAqTEArQXWio/b4z/eiQDllgzQEcDX2Z/zZfgG1RYToEkToNQYgEZ/NYoK/ygvQLklA/TKOi/HDT+nKa6ysrRMAjRpApQaA9C5wMbx8Ypo5Z0IUG7JAB2C5jXZn7OgCW6wsrRMAjRpApQaA9BZwObx8epo6p0IUG7JAB0L/C/7c74DHrCytEwCNGkClBoD0Kmo+05k6wDejRkByi0ZoJOAG7M/55o6bxZoJQGaNAFKjQHoFGDH+Dg8up0A5ZbweaBbYtmpdWemdcDadpaWSYAmTYBSYwD6M7BbfLw54L2KWoBySwjo48BWdQSds539P8IL0MQJUGoMQN17f3vHx9sC1Y4AZZf0tfCHA8vftyAa1T67OrBNzt+V3J/24NMPOumaycFg5oie+x93+9z6BpkEaNIEKDUGoF8DXePjnYBfHQHKLimg/+4HoOPxI1/5+Mu3HjpvTe+V8dW5l/PO/qnUEV1T3Z7wBlN7plIHpVInzyk8iCVAkyZAqTEA/QzoHh/vAUx2BCi7xIezW3BlyzpvKHfU9NyLmXto6qpZztw7U90mu6P+qT4/137fKzXEKTiIJUCTJkCpMQD9CDg0Pk4B3zoClJ2FAyr/eEGnSM/mh7xmuphnUz39L/D61DXuh6e6e29nPSnVbVqhQTwBmjQBSo0B6LtAnatFd+BzR4Cys/KWHjVf3zvg7N4XDZmY52p6a2q0f/px6iTHGZPq7w/6pJ4vNIgnQJMmQKkxAH0DODY+Pgz40BGg7CjviXRJKjjknXsT03EGpsb7g7tTwwsN4gnQpAlQagxAXwFOjI+PBt52BCg7CqCTvw6uv8+nTnGcc1Pv+4PnUgMLDeIJ0KQJUGoMQJ8HTo2PjwO8mykClBvzXTnnHJ+6z3FOSH3lj95M9S00iCdAkyZAqTEAfQo4Iz4+BXjBEaDsiID+2id19CzHOST1iz/81HtANP/Ab6cufsccVq2Uinevews0Pj4RGFOqtag8/WYP0Pljuqd6THI3Dk4z2avQQIAqVaA73Vug8fFpwL2lWovKkz1Af+ydSl3oP8X+hFRwDOY3U+cUGvideITfCT1m2GzqVKsX1/Cqq0u252ml2e/00n3J7r6nl2rX06qLv+/bgb7x8TnAXTNK+Mvt/qhL9EtW0h/19II/6j9sAfrMAamjXq71N89LfeCfPp+6stAgnh4DTZoeA6XGeAzUvQt/RXzcH7jP0WOg7DiPgb6SSg2MrsIDU/4LOp3RqWGFBvEEaNIEKDUGoHcAg+Ljq4A7HQHKjgLobwekRtdGgzHh7ctzUs8UGsQToEkToNQYgN4KXB8fXwfc6ghQdhRA74y/uv3H1MHez3hK127TCw3iCdCkCVBqDEBvBm6Kj28ChjoClJ1dQKc/PORJw29tr9Rb04O8n27/1EVznZl9Ut6Pu8AglgBNmgClxgB0MDAiPr4F/nuRCVBulgCdcOx57v/fWw7AGl9lnzk/lc57ftLUY1LdendN9fav0/kHsQRo0gQoNQag1wC3xcd3AFc7ApSdHUDPAPZzP3od/5BMqy/IOvfXuoA6M4cf063XnX8HZ+YfZBKgSROg1BiADgTujo9HA5c7ApSdFUBfBZqf4Tjj3R/hV5cAY2wu0EuAJk2AUmMA2h+4Pz5+CLjYEaDsrAC6Hzp+4570ROeF3pGx97W4Pj8BmjQBSo0B6EXA2Pj4McA76Y544gAAIABJREFUhIQA5WYF0DVxqXfSGRc53l8H17G1uCgBmjQBSo0BaF+gznXzSeBMR4CyswJoKzzo/v8n4CX3ZBxa21tekABNmgClxgD0LOCJ+Ph5oLcjQNlZAXQ5/zUQt6K5dzW9D0tZW12YAE2aAKXGAPQ04Nn4+FXgBEeAsrMC6DY4zv3/5tjDG5yDDa2tLkyAJk2AUmMAenJwhy/dW8AxjgBlZwXQS9DikQUPBU/sfW9JHGJxfX4CNGkClBoD0OOAOu/g+AHQwxGg7KwAOq0t0BRYZqYzZ0f39C2bC/QSoEkToNQYgIbvgZTuM+BAR4Cys/NE+lc7AO6tUMep9t4Z3uLyggRo0gQoNQagPYAP4uOvga6OAGVn6aWcv91+6uXeu1JXL7/vqIXWFhclQJMmQKkxAD0I+DQ+/gHY0xGg7JhvKtfoBGjSBCg1BqDdgC/j4/8BOzsClJ0A5SVAqZU5oPsA38XHfwLbOQKUnSVA//38yQmZ7C0vSIAmTYBSYwC6B/BjfDwT2MIRoOzsAHrrkohncX1+AjRpApQaA9CdgV/r7BPY2BGg7KwA+iQgQOtPgFIrc0C3A/6MjxcA6zoClJ0VQLcHTnjxm+/S2VyglwBNmgClxgB0S6Dub1MT/NcRoOysANrRP4xB8RKgSROg1BiAdgHqgtUSKzkClJ0VQFvWfVWu9QRo0gQoNQagGwB1r7lt0ckRoOysALpG3QNrWU+AJk2AUmMAujZQU2eiAzo4ApSdFUAv8I8DU7wEaNIEKDUGoP9Fk7oTndDWEaDsrAA6axUMrjGeYycBmjQBSo0B6MpYrO7ESmjpCFB2dp4H+mMnbHzesBFRFtfnJ0CTJkCpMQBdHm3qTgQ3SQUoNyuA1p6n54E2IAFKrcwB7Zj9zg/rAgsFKDsrgI7SE+kbkgClVuaALoWOdSc2Bv4WoOysALoxmg34Zu4/6Wwu0EuAJk2AUmMA2gbL153YApgpQNlZAXRx9LO5ppwEaNIEKDUGoC2xct2JnYEfBCg7K4C2wUSba8pJgCZNgFJjANoEq9ed6AM8JEDZWQF0M4wzzttKgCZNgFIjAFoDrF135l7gXAHKzgqgI9G91uaishOgSROg1AiAzgM2qDvzNbCTAGVnBdCa/dG3mL8wAjRpApQaAdC/gC51Z2qXRNsaAUrOCqDjxq6Dzj0u6Bdlc4FeAjRpApQaAdAZwJZZUzsDXwlQclYAhZ4H2pAEKLXyBjR8C6R45wH3CFByVgBtn5XNBXoJ0KQJUGoEQH/1H/Gs00PA6QKUnN6Vk5cApVbegP4I7J41NRnYSoCSE6C8BCi18gb0O2Cf7LmOaDlfgHKzCej8Yj2XSYAmTYBSIwD6FdAte24v4GMBys0WoE8c3rkVFjjPjppubWmZBGjSBCg1AqCfAgdlz10MjBKg3OwA+s+B/l/fFzhD0fIei6sLE6BJE6DUCIB+APTInnscOEGAcrNzPNAjgGUO8QC9z2X0apvr8xOgSROg1AiAvg0cnT03BdhEgHKzAuhEoNtsxwPU+XJztPjB5gK9BGjSBCg1AqCvAcflTC6P5n8IUGpWAO2B5eY4AaDOnM44yeL6/ARo0gQoNQKgL8FwPesGvCRAqVl6W+MLnQhQ5wpsbm11YQI0aQKUGgHQZ4HTciavAK4ToNSsANoSo500oGP9d1e1mgBNmgClRgD0SeCsnElX1R4ClJoVQNvhFicN6E0CNE8ClFp5A/oY0DdncloV1hKg1KwA2sV/PDsEtBs2tLa6MAGaNAFKjQDoWOCi3NlV0eR/Rd5xvgSooQYCejmafxsB+gBwvsX1+QnQpAlQagRA7wf6584eAjxV5B3nS4AaaiCgMzqg0ws1LqC1k49visV/s7lALwGaNAFKjQDo3cCVubPXAlcUecf5EqCGGvpKpImtgA5Al3YAqsZaXF6QAE2aAKVGAPQ24Jrc2VeAA4q843wJUEMNfi38Z5tHB1Ne9SV7i4sSoEkToNQIgI4ABufOzmmCVYq843wJUEMNP5hI7Rv99tps411On7DQ2tIyCdCkCVBqBECHAjcbptdG1dQi7zlPAtSQjgdqMwFKrbwBvQG41TB9FPBskfecJwFqSIDaTIBSK29ABwF3GKZvKtlfkQSoIQFqMwFKrbwBvQK41zD9luE4y5wEqKF6AR1qzPYiBWjSBCg1AqCXAg8Ypv9pjuWLvOc8CVBD9QKa/YbGelvjAglQauUN6IXAw6b5DQDrz8NuUALUkAC1mQClVt6Angs8bpo/Bhhf5F2bE6CG9BiozQQotfIG9Mw8L9q8Ebi4yLs2J0ANCVCbCVBq5Q3oqcDzpvnXgL2KvGtzAtTQogD620uPPPF2ca6nAjRpApQaAdATgVdM89NaokORd21OgBpqMKD/XLeG/+hns10nFOHN4QVo0gQoNQKgxwJvmOZnbwZMLvK+jQlQQw0F9Kd1Mn9B6v63xeUFCdCkCVBqBECPBN4xzc8+AXioyPs2JkANNRDQf9Zyb3seOfSpCYO7VwH7Wr8NKkCTJkCpEQA9FPjQND97BHBekfdtTIAaaiCgg4EtJgWbn69XhH8ABWjSBCg1AqDdgc9M87PfBnYq8r6NCVBDDQR0Kyz/e7T9w9LY087SMgnQpAlQagRA9wO+Ns3Pnt4WbWuKvHNTAtRQAwFdMn6n4SR0tLGweAI0aQKUGgHQvYFJpvnZM3cAviryzk0JUEMNBHSx+L3229HCxsLiCdCkCVBqBEB3A342zc+eebb5MCPFToAaaiCgq+G6zOBSrGxjYfEEaNIEKDUCoDsCU0zzs2c+AJxe5J2bEqCGGgjoGdg2fSD6+RvjJDtLyyRAkyZAqREA3QYwHnp+9szvga2LvHNTAtRQAwH9vSN6Lwg25/fEEt/bWlyUAE2aAKVGAHRzYKZpfvbM2vZYfEGR925IgBqqF9AFQR90xmo3v/Nn9btDV0Zb+28pIECTJkCpEQDdGDD+TGfPdHYHPi7y3g0JUEONOZzdCltsYXuRAjRpApQaAdD1ASMaLqDnA7cXee+GBKghHQ/UZgKUWnkDuhZgfMWfC+hDwLlF3rshAWpIb+lhMwFKrbwBXQ3NjPMuoO8DBxZ574YEqCEdD9RmApRaeQO6IloZ511Aq4HNirx3QwLUkAC1mQClVt6ALoe2xnkXUKe1/RcD1p8ANdRwQGcOO3DNjkuvvt9NxSBCgCZNgFIjANoB7Y3zHqBro4r/8xaghhoKaO2tbaI/ILUZaf+IygI0aQKUGgHQdljGOO8BumeeA40UNQFqqKGADnTlbLvpgYdu0c7duM78MQkSoEkToNQIgLbGCsZ5D9ATAftPxq4vAWqogYB+2gTtb/Svon/f2B5Nrf/rJ0CTJkCpEQBtgVWM8x6g7u2ZkUXefW4C1FADAT0BzdPvz/JaM5xiZ2mZBGjSBCg1AqBNsIZx3gP0PqBfkXefmwA11EBA/4tjM4NeeX6yCRKgSROg1IoP6EJgXeMZHqCvA0cUd/eGBKihBgK6OG7NDEZhcRsLi3dRj+k2mzrV6sU1vOrq6lLtuURf8rTqUu3Z2/e0Uu16anWx9z0FWN+8a/f7/TmwVXF3b6iUP+rppftRTyv4o/6jYYC2wi2ZwW32Ab348L9sNm261YtreO73ulR7nlGa/c52/8kozZ7/+mtO9axS7XpmdbH3/TvQxXjGdPdXbHYLdC7u7g3Nqi7VL5n3o55dql0X/lFPbxigq6NnZnCc7sLnSXfhqZX1Xfhp7o1M4xneXXhnVTSlH9BOd+ENNfAu/Ilo9mq0/XpzHVA5TwKUWlkD6t4C3d54hg/oTsCPxd1/bgLUUAMB/aIJlrrB/+7NHdIeTb6wt7wgAZo0AUqt+ID+AuxiPMMH9BjgVeO5RUyAGmroE+mvBbDEpt27b7qEuzHI4vKCBGjSBCi14gM6GXnePdwH9FLgnuLuPzcBaqjBr4W/Y4nopZxLjNJLOfMkQKmVNaDfAinjGT6gdwADirv/3ASooYYfTGTW8APXWmaZtQ4cZnyjloQJ0KQJUGrFB/QL4ADjGT6gLwLHFXf/uQlQQzqcnc0EKLWyBvRj4BDjGT6g3wO7FXf/uQlQQw0EdOjQp2yuKScBmjQBSq34gL4HHG48wwd0Xr4XehYxAWqogYA2xTY215STAE2aAKVWfEDfBI4xnuED6nRCS/t/iiicADXUQEDXz3NsQlsJ0KQJUGrFB/RV4HjjGQGgWwG/F3cBOQlQQw0EdCww0eaishOgSROg1IoP6IvIc9CzANBDgXeKu4CcBKihhv4R6eamnV8s4l0GAZo0AUqt+IA+A/QxnhEA2hd4qLgLyEmAGmogoE8/3b85Njn6/AFhNhfoJUCTJkCpFR/QCcA5xjMCQIcD1xZ3ATkJUEMNBBRZ2VyglwBNmgClVnxAHwUuMJ4RAPokcGpxF5CTADXUQEBbZ2VzgV4CNGkClFrxAR0DXGI8IwD083wvVCpeAtSQnkhvMwFKrawBHQ1cbjwjAHQOsEFxF5CTADUkQG0mQKmVNaB3AlcZzwgAdZZGu+IuICcBakiA2kyAUitrQEfle/vwENCNgWIclaJAAtRQwwBdMLXIv6kCNGkClFrxAR0O3Gg8IwS0G/BJcVeQnQA11ABAqy9eF8Dag4r5yypAkyZAqRUf0BuBYcYzQkBPB8Zb2M2Co7b/voEfKkAN1Q/oB8uFT11a+2Pra0snQJMmQKkVH9DrgJHGM0JArweGWtjNOGDV3xr2oQLUUL2AzlzBtbPDpu3d/y833f7qwgRo0gQoteIDehVwp/GMENCH8z3RftE6yb1ib9iwB1MFqKF6Ab0aWOM1l4bX1gAusr+6MAGaNAFKrfiAXg6MNp4RAvo+cKCF3azk3bncvEE/QgFqqF5At0GLb/2Nr1tgXctLyyRAkyZAqRUf0IuBMcYzQkD/BLZIvpfvgRXbAN0WNuBjBaihegFdCgeFW93R0urC4gnQpAlQasUH9Ox8fyQKAXVao2PyvQwDLnilJdCjpv6PFaCG6gW0Kv2CsovtvwQ+nQBNmgClVnxATwJeMp4RAbo2qpL/zLt5e3m8GdC7/o8VoIbqBRQYHG4NFqD1JUCplTWgR+Q74GcE6J7A10l3Mn8JtHG/hyOR72VP8QSoIQFqMwFKrawBdW8bfmE8IwL0RODZpDt5HdjLOx0AVN1W3wcLUEMC1GYClFpZA7ob8JPxjAjQgfmeKLoIXQrc4G+cCTR9uJ4PFqCGBKjNBCi1sgZ0K2Cq8YwI0NEWnle4bfR60IUHAK3fLvzBAtSQALWZAKVW1oBuAJivtxGgrwFJrzWzmmPZ8I16/tkR+G/hjxaghhoA6MGjgg4GRkXZXqQATZoApVZ8QFdFM/MZEaA/A9sn3MdjwBHR9sxVgV8LfrQANdQAQE3ZXqQATZoApVZ8QDtiSfMZEaA1LbBiwn2cHH+10/HAkwU/WoAaEqA2E6DUyhrQxbGC+YwIUPc2atMFyfaxGqoyby5/E3B1wY8WoIbqBXSsMduLFKBJE6DUig5oTRXWMp+TBnQn4MdE+5gEbJgZvQIcXvDDBaghHZHeZgKUWjkDOhvokuecCNBjgFcT7eOWOgd0mg6sX/DDBaghAWozAUqtnAGdAuxgPicN6KXAPYn20b3uU/E7o3nB76cANSRAbSZAqZUzoN8B+5jPSQN6BzAgyS4WLIlW8S9iH6DgMdMFqCEBajMBSq2cAf0IONh8ThrQF4HjkuziLWC3+PiCem7RClBDAtRmApRaOQP6OnCs+Zw0oN9nAbio9QeuiY/vB84t9PEC1JAAtZkApVbOgD4DnG4+Jw3ovCZYI8kutgU+io8/A/Ys9PEC1JAAtZkApVbOgD4MXGA+Jw2o0wktaxu/h5nN0LHOpy9YDJ0KfYIANSRAbSZAqZUzoHcDV5jPyQC6FfC7+WMa0uNAj7ozGwF/FvgEAWpIgNpMgFIrZ0CHAUPM52QAPTTfMZcb1Kk5b/t5FPBigU8QoIYEqM0EKLVyBnQQkOcIxxlA+wIPNX4Pa6Aq6+Ah12YOvWZKgBoSoDYToNTKGdBLgAfM52QAHQ5c2+gd/ICcd9l9Nu9f/v0EqCEBajMBSq2cAT0LmGA+JwPok8Cpjd7BSOCMrKkpwGYFPkOAGhKgNhOg1MoZ0BOBl83nZAD9HEg1egcHGY5e1xGtCrxBvAA1JEBtJkCplTOghwPvms/JADoH2KCxl79wKSyWw+EuBd/oU4AaEqA2E6DUyhnQ/YAvzedkAHWWRrvGXv67wI45k2cW/KuUADUkQG0mQKmVM6C7Aj+bz4kBujHQ2N+3K4ArcybvAC7O/ykC1JAAtZkApVbOgG4JTDOfEwO0Wz3HTyrQDsB7OZPvA/vl/xQBakiA2kyAUitnQNcD8nxxMUD7AI837uLntMB/anJm/2mGVfN/jgA1JEBtJkCplTOgq6B5nnNigN4A3NS4i3/CfLS8tVE1K+/nCFBDAtRmApRaOQPaEUvlOScG6MN13pNjUTobuNUwfRDwVt7PEaCGBKjNBCi1cgY075tyxgF9L+9Rl+trb+Bzw/QAs6tBAtSQALWZAKVWxoAuzPumnHFAqwu/dKhAa6HKtP7xwCl5P0eAGhKgNhOg1MoY0FnApnnOigHqtEbHRl18bUssZ5r/Edg27ycJUEMC1GYClFoZA/qb6XnuQXFA10ZVo37u7sVvbZqvXRLt8h6jWYAaEqA2E6DUyhjQb/O+KWcdQPcs+NrL/L0BHG48Y1vgx3yfJEANCVCbCVBqZQzoh8Ahec6KA3pS3Xd2b3CjgYuMZ5wCjM/3SQLUkAC1mQClVsaAvgb0ynNWHNCrgJGNufjLgduNZ4zI+04iAtSYALWZAKVWxoA+nfdNOesAej/QrzEX3zPfwfLeyH/LV4CaEqA2E6DUyhjQscCFec6KA+p6d0RjLn7HfA91zq7C2vk+SYAaEqA2E6DUyhjQu0wHSwqKA/oLsHljLn4VNFtgPmdlNMvHhQA1JEBtJkCplTGgw4Ab85wVB7R2eTSZsuiXvqAZVslzVlfgozxnCVBDAtRmApRaGQOa/0056wDq9AZuWfRL/wHYOc9ZFwF35zkrBuj8byZc1yfPEfOLkgAtnABNmgCl9c3C4gN6MfBgnrPqAPoCsMeiX/qL+f/GPwY4Oz24cOXrY1+lD+jsl249e981msNt5bxPubefAC2cAE2aAGV1PnYqPqBnAU/kOasOoAuWRotF/5W7Lf+Tlb4Cdo+2H3OVXPGu9GFDXUC/OXsJZPpgkXfc6ARo4QRo0gRoUZp7zaNZM280AaYWHdAT8r4pZ11AnaOB0Yt86f2A+/KctbAVlg0353T2mVw/knzea4e2CORsuuqep3cHLl/kHTc6AVo4AZo0AVqUTgYerjMxb10XkC+KDmgP0ztuBNUF1L2V2L0xl/5mvvO6AH8EW2cCG+zkebnD295w4t5V7naT/QY9+oX3bf+0kU8AaFwCtHACNGkCtBh92hRo/2t8pr8nyktFBzT/m3JmAfp3a7T+e1EvfWsg79/uewIv+BsfNEXT952nNnS/3qruXz66pfeFL3b8N+kPXKlRTwBoZAK0cAI0aQK0GO3qqbF77I8lXy7mzTxQdEB3yfumnFmAOu5d6ccW9dKXQ6u8fwAaDNzgnS7cFOjjntbcs3L0mGe7MybFPrB3vpeDFiMBWjgBmjQBWoQeBzouCQxJT9RsC3QABhcdUPf23vQ8Z2UBOho4ehEv/O8CLzfy/kJ/jHc6BFghuBr9e0MHj88VBk2u8zzQp4H9F3HHjU+AFk6AJk2A2m/ef4GRDwAtP4tmRgDLjQTOLzqg+d+UMxvQGS2w9CLi8iWwd94z/wS6uCe/LAGkZZjZb/H175qX9UT6f1qjTQFZ7CZACydAkyZA7XcVsFmN0wtYO3yU8YfWwBOveTfRig3oymiR76wsQL23N1rEQ9o9AZya/9zlsdgC/0ijB2Wdkf1KpAOApxZtx41PgBZOgCZNgFrvtzaoetNx/loDOC2Y2Qs40DvW8V5FB7QDls53Vjago4CTFu3ChwLX5z93T+9ZBg8BS2b/iSgb0DsKvYGS5QRo4QRo0gSo9XqF73n5fnNU+c+FfBBYaor3dkWbFB3Qllgx31nZgP7RFMvUmD80T2cB2c9ujXUe8MCMZYGbs8/IBvSPJujMejGSAC2cAE2aALXde03QcrK/dTnQ8XfHqe4QHL54cXQqNqALkP/PPNmAOtsDbyzSpe+f/4AhbvcCF/YGtspBOedgIlsAnyzSjhufAC2cAE2aALXdLsA5wdb8zf3DDJ8IbO2psjKa1xYZ0FkF3q84B9DrgPMW6dI3Bgr8mn4MrOU/BTS7HEAvA65epB03vooA9PnUb+HWzBE99z/u9rn1DTIJ0KQJUMuNBZaLvrIf2gKjnq9Cy2+90ZZAdZEB/RXeC+7N5QD6YxVWXqRLb5f/AVa3+f7rNQ0k5wD6UZ739ixClQBo7UURoFN7plIHpVInzyk8iCVAkyZA7TZv9fiB4m4D2roTl/qDrsDnRQb0G2DffOflAOpsCHxm+sg8zfAexC3Qeq6fnQ3XoBxAazuh6dRF2HGCKgDQmnGpCND+qT4/137fKzWk8CCWAE2aALXbtcAGCzPD/b1bZWsHV6TjgReLDGiBN+U0AHrZoh3X48N6Xj7fA+YXN+UeUNn9Tty7CDtOUNkD+t7gXqkI0B9T3X93Tyaluk0rNIgnQJMmQK32R7voJeFBUzsBTV4Lti8G7i8yoBPzH7DTAOgnwMaLcOGPpB/cNXc10M00nwvo4wWct1vZA3pTKpUGdEyqv3/aJ/V8oUE8AZo0AWq1E4CudSaeq0o/2/JmYHCRAX06eB26sVxAndWAyQ2/8OuAYYXO/2W9jX81zecC+ldLLMmBrewB/XPSpEmHhIAOTI33T+/+f+2dd4DURN/Hv1fpHQRUpFhBbJwKih1EfTDHCVJFpCgqKKg0BURRQVRUBEV9HxFQLCCioiDNBgIi+NhQilKkSDk4mhzSLm+yu3e3u5dMsilzt8f388ftJvNLZibZfC5tZpTxoolwKFC3UKBe8lMSUtdGzvp8fG6nRx8AD/ssUMGgnEYC7R/qAMQevR22IDIYE+km825LvaXYC1SnU0igA5TgKxDzlJGiiXAoULdQoB6SczkwyDRVb8vps0AnAiPN0gwE+l1Mj8M16612UigDgb4GPOBkVTFzQgm0p7Iq8LlEGSSaCLB1S4ChnY95yZ59nq7ONkczM7MKJ+djuw4UTr7/ZmbuL5ycjx07nHnInxW/D9TcY5q6Crjhn8zMg/7kHeAlYIxZ2r6CJTtaC4mbba/8HCT+46RQh7T/lVGzNiWgnpNVxczhzH+l5GOAtquzzVOzfRBoe2Vz4PMX5R7RRIBr0wJ07ZhJSBFh0ynaJbF58gbgPJ9LMBR4KZb4HsBzdmN3lkCNmAtkxnnAEs9WFo/87YNA2+VpsodoggIlRZMhwAU7BOmlPDSQMQ8Bb8QS/yFwrd3YlcClsZfIhH7A456tLB7xQ6A9leAtliVKf9FEgP73Bum010t27fZ0dfbJzNxVWDkXUpX3ZBZWznreWX6sdrXeaZ0ooDaSd2X6k3eIXsA0s7TdBj+x3VWQstHmuucC7R0VKstgVy8ArnC0shjZk7lHRjZGaNUW5L3TB4EOVILjnc5XRogmwuFDJLfwIZJn9BE0AwrQGNjs70Oku4CvzdIMHiKp6u3AuzbX/Q4w1FGhDB4iqcerIcWoPF5zQj1EGqkEB0KdorwimgiHAnULBeoZjcwHdAvSCvjBX4F2Agp25hHCUKAzCvZ/bMZTTscyMhKoPqzyVEdri40TSqBTQ+eX/ZU5oolwKFC3UKCecQaSxN1c9gRm+yvQdGCVWZqhQA+WRlmbBeqhjyrqBEOBfgB4e+wac0IJdKPSTt/H29IzskQT4VCgbqFAPaMGKogDHgUm+SvQ64DNZmmGAtUb679pe90bHBXKUKD7UlH1mEGwx5xQAlWHK0MPqnv7KuPEE2FQoG6hQD2jDE4RB7wMPOOvQBsLeuw0Fugc4Cx7IquLlKOOCmUoUL3b1Ni6c3bEiSXQXV2VjN7pSu+D4okwKFC3UKCerTUB54gjpgP9/BXouYCp5IwFql4OTLGz6iNJON1ZoYwF+pKo0ZZnnFgCVfeO75rRY2K21UQ+FKhbKFCv2CvoDT7It0BnfwVaGyVM00wEOhOob2dopHVAc2eFMhboeuBcZ+uLhRNCoC6gQN1CgXrFZuA6ccRaoIW/Aq2KKqZpJgI93gD4xMaqvwDudFYoY4Gq5wD/c7bCGKBAxVCgbqFAveJ3oJU4Yh9wgb8CFQzKaSZQfTC4S22s+g1ghHWUESYCHQRU+8nZGu1DgYqhQN1CgXrF99oFukVIKdT0VaBHgQamiWYCPVoPmG+cFM5Q+6/cR2Ei0F0NgSo/OFulbShQMRSoWyhQr9Cuce+1CKmL5B1+CnSv6GTSTKDqBKCJ9bo7At85K5WJQNU9TYAyzl4ttQ0FKoYCdQsF6hUfW48SrBljtZ8C3SK6DWsq0CO1BQ1A89DKvsNZqcwEqu69HCi9wDDJKyhQMRSoWyhQr3jbeoi2DGChnwJdDSimiaYCVccB11uuuzrKOiuUuUDVf67TDDrP4WptQYGKoUDdQoF6xXjgRYuQu4EP/RToD0BH00RzgR6qaf1S+8EEx28dmQtUPdgcKGHnHQCnUKBiKFC3UKBe8QzwhkXIMOBVPwX6DXCXaaK5QPXxNNNNE4P8ZtXVlDkCgarZLYDUj8xS3UOBiqFA3UKBesVQ6/6FXtGu8v0U6CzRUEMCge6vhISfxav+DLjfYalEAlUPtwJSpjtcszUUqBgK1C0UqFc8AMyyCJkO9PFToNOAIaaJAoGqgy1fwXoZeN5hqYQCVQ/dpJ2DWm04x1CgYihQt1CgXtEDWGgRsgjo4KdA3wRCKupCAAAgAElEQVSeNk0UCXRnaST/KVx1P2CGw1KJBar+qwA1/TrwKFAxFKhbKFCvaAf8aBGyFrjOT4GOA6L7K8tHJFD99Nn87qlOa+vamWEhUPVwE//6FaFAxVCgbqFAvUK7FBWfxKnqAaChnwIdKercUyjQ7aWQskG06guBfQ5LZSVQ9cckpJj2A+0OClQMBeoWCtQrrrDxpnkZVPdToEOAaaaJQoGq9wK9RekVBN2UWGApUPUexz09WUGBiqFA3UKBeoV2jma5LfW2nD4KVPgcSyzQP5NRert58h4gzWmprAW6owIwRxziEApUDAXqFgrUK05HkmWM3pbTR4HeCXxjmigWqHobUMv8MdH/gFudlspaoOoLQH1fTEeBiqFA3UKBesVJqGgZo7fl9FGgHQHz7o0sBLqqBICW601SPwQGOC2VDYEeqQ+84HT9IihQMRSoWyhQryiNUy1j9LacPgpU0U5wTRMtBKouPV8zaKmnjA/60cB4p6WyIVB1LlDRYV8lQihQMRSoWyhQjziqXYVaBj0GvOqjQK8FtpgmWglUzZlcVVNo3c+M0nq5uElpR6DqrUBXpxkIoEDFUKBuoUA9Yo+djt3HA0/4KNBLAEF7TSuBqurungmaQm/eWDDlJmCN01LZEuim0khw2N+oCApUDAXqFgrUIzYBzSyDpgP3+yjQBoJBOe0IVFXnnKEZtMLbBebXR4LjctsSqN6a9Iocp1mYQoGKoUDdQoF6xG9AhmXQt0AHHwV6GkqaJ9oSqHrosZJAcvRobzmlcLLjUtkT6IFTHI8ZIoACFUOBuoUC9Yhl1kMiqeofwHU+CrSK6G13ewJV1bXXAo2jBjr+G2jquFT2BKpOAU61ExcTFKgYCtQtFKhHLAB6WQbpbTl9FGgJ1DZPtCtQ9WAdYGzkrMWA8yPNpkDVa3xoEk+BiqFA3UKBesRH1kMiqXpbzpP8E+gRiHqNty1Q/aXP8pFP87Wzw2GOi2VXoCuTker4SZUJFKgYCtQtFKhHvAU8aR1VF8n+bXDxiwD2BapeH33C+ZSolxIr7ApUvQto4zgXYyhQMRSoWyhQj3gFGGMd1RjY7H3eITaLBuWMRaBrSyLhq/AZPYCvjENtYFugOysCMx1nYwgFKoYCdQsF6hE2hkRSA22FVnifd4jVwqGNYhCo+jhQP3wbXQcYvBxqE9sC1ZvE18xynI8RFKgYCtQtFKhH2BgSSQ2cyvk2fIW6QjQoZ0wCPXQmMCJsui5Sjjkuln2BHtNO0Ls4zsdwjRSoEArULRSoR/QFZltHDQYmep93iK+F3crHIlB1HlA6r2ORo48k4HTnxbIvUPX3koBhU1KnUKBiKFC3UKAe0R1YZB31EvCM93mHmAU8aJ4ak0DV9sB/Ql+3XAngbufFikGg+o2QU7w8FChQMRSoWyhQj2hra9Cg94CHvM87xFRgqHlqbAL9uwLwYeDbnGqaP3sJXGBFLAI91sTbTkUoUDEUqFsoUI+4EVhnHfUlcJv3eYeYAIwyT41NoOqrQA3tR3m4TwJQ5VM3xYpFoOr6srni9gQKVAwF6hYK1COaAjuto1b6NvqPGrg/8LJ5aowCPX4ZcL+67mLt9PMKd29exSRQ9UVN3Ltd5RcOBSqGAnULBeoRFwDZ1lE7gfO9zzvESOETqhgFqn6fiOSXtMv3hAdcbq3YBKpfxPdwl2H42ihQIRSoWyhQj6iHZBtR2aVRw/u8QwwBPjBPjVWgeifKGpU/dlUmNVaB6k/iEzwbYY4CFUOBuoUC9YhqqGQjKrs2ko9bhzlD/CZVzALdU0Pz52V/uSqSTowCVZ8Fajkdgz4aClQMBeoWCtQjSqGWjajsS2yMHu+UHsBC89SYBaq+n5Aw0AP/xCpQ/SJe8D5rTFCgYihQt1Cg3nAUaGAjLPs/wC+eZx6iAxDdE3IYsQtU/eEnF6XJI1aBBi7i53mRMwVqBQXqFgrUG7KAxjbCsrsC8z3PPMTNwoGLHAjUG2IWqH4RX/tnT/KmQMVQoG6hQL3hL3vvJ2UPAKZEzzwyq/NJrT3YD9cAW81T40ig+kV8wk1feZA3BSqGAnULBeoNK4FbbIRlaydXoyPm5Cy6Vx9NGM1svARlwSWA4OFLHAlUXVVJ3ySXTnf9vI0CFUOBuoUC9Yal9ga9yJ4IDAib/mngaQjRwnVX9fUBQZ9J8SRQdcfQyvo2Oet1F01IdShQMRSoWyhQb5hvZ0gk7aiaHd5h29QGAXWmtJwyoyRwo0tZqKehlCA1rgSqqgdeDPxrqTHS1Q+UAhVDgbqFAvWGGfZGRMteDtyQO7G/tGaIxCtf3aV9n1UCaOmyWJVRVZAaZwLVfiJvnacr1HqwaAHHdszqeNMmN2twDAUqDwpUKn4IdDLwlI2w7I3AhbkT7wP1ns09umemAunuypWKOoLUuBOodlzMuhpIcPHa11/DamkKbu98BS6gQOVBgUrFD4G+bGtIJO2oCmvL2Q6Ynp/0UYp2tuXmgvMI0FCQHIcC1RjufEDlf6fekBi4RZL4u+PsXUCByoMClYofAh0FTLARlp1ZB0mhZ8uHyqFUuFk+1Aza5qjzIli8ihqfAs0qhxRHl+C/PRB4uSHh2gygk+PsXUCByoMClYofAh0CTLMRlp2Z35bzU6BVROK0ZKCdc4NuApoJkuNToOqDwm72TfkgOfAIauD3R3aWQZLXw83bgQKVBwUqFT8E2gf43EZYdmbLvLac3YDJkanvJQEdHY/etko4KGe8CvSvFJSNfaTOnVW0K/ebPjyiP4Xv5/VIdfagQOVBgUrFD4FqNvzWRlh2Zlcg2M77aFWkRPccPEUz6BNOi7BcfK0apwJVO0cOEGqPLkBzvR8pXaDbSyH5DxcFcAgFKg8KVCp+CPRWwE7PG9mZA4C3A1+/BK4vkD45EeWc9tb0NdBTkByvAv05AdVjbWOwIAFlA/3wBd4DfQDoHp567MUxzgdptg0FKg8KVCp+CNTekEjaUfVcblvO+4DxBQM66QNpOOMz8d3CeBWovmlfj20JfVj75wPfAgLdWhIp68OStWv6Dv6/X0+ByoMClYofArU3JJJ2VE0KteXMORWJfxcM+DMVqesLzrbD+8CjguS4FegC4ExBo/ictVMfvqHTrvBZjwIXBR/GBVsi3RfRweiUwOv5bpt9WUKByoMClYofAj0fsHOdmZ2Z25ZzGXC5UURvoLOzIkwQjzkftwJV0yIG6twzom33QaMnfrpk7Z4jP07sc2W5wLuejcIeNP2eiqTvg1+DAt1cAql5PeuvKBVY4Eb3nbeIoUDlQYFKxQ+B1kWKnbDszOVAC/3bIOA5o4jtZZHorB9j8aCccSzQ98NecN09tAIMuTivejlXAX1C30Nt4e8F7g3N2V5LO/18Jxm4Juz3d+T5qule3xalQOVBgUrFD4FWtTUkknZU/QVcoH87C/jTMES7/vyPoyKMACYJkuNXoMfqAl8HvmU+Uq6AOctf1XfSh+U1x+Z25fcGcGrugRwS6F+pKBEcm/nwFcC5+9UZqcBlecfcp9rOwHeuylgQClQeFKhU/BBoSZxmJ0w7qsoG2nL+GvJoQfZVBb5xUoTBES1DCxC/AlXHAS21jx0Dy+rGvGHu3HdeGtar3bXnNbzxkWl/5OgRizWxNg3+oHZUBmbkLpnbG9NdwH2BL3cDlfR3mmZrF/KNMgOzfmsRELHon48TKFB5UKBS8UGgR7TzGjtx2lFVD0na1eITwOMmMS9oJ0dhk6svbmZvjEqLd/njWKAHqyDh120PldE919L4THGhlnhlIJvO4Q28cgW6PgUl9d76XwWS5gbmfKnJuOE2Vd19n95mqRLwiLsyFoAClQcFKhUfBLobaGInTjuqmgDbVfUi88Hl/q0N5B9cv1YH3rJVhu7AIkFyHAtUHQbU15/9JKQvNwv5qjRwrfZjngeUzW88n9cfaDfgAU2zKfkDAiyuAJy1fqzecXPV8UuB1i7LGA0FKg8KVCo+CHSj0VvxBmhHVTrws7oeOMM0aBLQIPeRxg96lxj2WuK0B34UJMezQHcGnpwn3CIYdFRdoMU0z84+A3gxf2aeQP9IRuntm6qHv+Kwoop2Oqr3Z/3AHnWfuCcrJ1Cg8qBApeKDQH+1NySSflT11NtyPh85skckxxoCbwa/fldRN4edvu5VtSWwVpAczwJVewGJt1oM1DlH79W/H5AW9jw9v0f6LtpmTAMuDnt76ZfqgXsCq/XvNVHC48fwFKg8KFCp+CDQJTY7rNCOqqF6W84rgKXmUTOBWoG3Sr8pB9SI7rTJjKsBgzfz84hrge7u1P1XyyC9V3/tpHJF2Kx8ga7RTzZRPaJrvNWnov6c4Ndr7LUkiwEKVB4UqFR8EOg8oLedOO2oGguM3paIk0UjTjYN3qqbXxq4cA1wia0yXCwclDO+BWqPT1IRuNWZT9iYSJ20tNSom8RZX+f2Hng3MNtkrf8Oe3SBg6OEApUHBSoVHwT6IfCwnTjtqJoK9H/N4rJ8EVBlr/qZdk16aZZaCifbKsM5SBBdhZ4AAlVnpKBWxM8qTKC/JwKvmS75QsSt0wiG6eZtOmRejJWgQOVBgUrFB4FOsvmkRzuqvgZuvwFYIIy7GRj8oXY+dYV2TnkGkmz1slwLpUXJJ4JA1dl3L4uYDh+V8+EkwbB/s4B7jFMOVg29sZ9y+SNzY7hPSoHKgwKVig8CHQe8ZCdOO6p+104rU1BZ7MRfElEqGbhON8/VwGY7666EaqLkE0Kg0dge1vhP4FrjlJeBtM6nhiR6h/2sKVB5UKBS8UGgI/Oem4vRjqpdto7ELnrQTYFHxp1sNjNMQV1RMgUqDCxhcqPk2OnAfE2wE7oExql/33bWFKg8KFCp+CDQwcAHduK0o+pQoD3iJxaBG0oAGcFiDojojMiUwxavMlKgQhogwfDon54/DvX6fkDlLXazpkDlQYFKxQeB3g/MsROnC1Q7pUFZy87URlXuETr2xwBjbazaqjEUBSrkFsCwlVMTYEru9+PXANfn2FwhBSoPClQqPgi0K7DYTpwu0KaaQNvHsG7tHGigjbC/gOaidApUyODcoVYi+Qo4Pf/J0dYqJp0QGkCByoMClYoPAm1j3rQ9Al2gbWK6laaqS4HbbIT9pl3zi9IpUCGTgaEGs1sCY8ImZwAlLBpE5UKByoMClYoPAm0BbLATpwu0F1AylrpvAq6xEfa9RVf2FKiQ74C2BeeuTECViMLfDpxrb4g7ClQeFKhUfBDo5UCmnThdoI/H2GPykUScbSNMu9i8W5ROgQrZbdhBa8/oPgt2nwoMsbVCClQeFKhUfBDoeYCtUcp0gb5j85WnPGqgrI2oT4GHROkUqJhqKF2gde2OkkiNeuw+PwFJS+ysjwKVBwUqFR8EWgeptuJ0gR59brStlkV5NAJsyO89YJgonQIVcwXwV/S8Rw36iHkAON3OT5cClQcFKhUfBFoFlW3F6QKNeeUK8Jt11BvAs6J0ClRMD72bwUgOVkVCgUdGh84NHyT5qOn6KVB5UKBS8UGgJVDbVpwjgd5T8NA2YAzwiiidAhXzLDAuatYrwA0FA39MBWbqX3Z9Ovjq0hXNOrGmQOVBgUrFe4FatQLKw5FAnwQmWkc9BUwWpVOgYj7JHXcuf+FgK84CPANUX/JGt3MSAo1ynzJZHwUqDwpUKt4LdFfkOHDmOBLom+ZHaRiPiAflpEAtWF1gVJawVpwRHL8qfFjlwSbro0DlQYFKxXuBbrA5JJIzgc4F7rWOsmpNSoGKOZISPTJ1E+PGSaq6sUJAnXU6jRtt/upDXAh0SMddXpLp6dpiyTizsLIuxIwLbWt7X+mFwM02c3aQ9bfAjdZRnYBZwqxjz9gjCnVX2w89Awmbw6c/A07ZZhw6sd7F9765UvsyA+humrUo721FQ6DDbsv2kqw9nq7ONgczM3cXTs7Zu/YWTr4HtJPuwsk5O/ufzAMer/FLoLOtwH2ZmftjXvt27VLSOqoNsEyUvicr5oy9QdvVhfQj048s+7v6ZmBp+PSNwHNWy3wB3GGSJN7Ve4uGQHkJ7xZewnvBnAIPIExwdAmvlkV166D/AH+I0nkJb8FA4L2wyQKtOI34AehkkhQXl/AUqFsoUC+YDjxiK9CZQM9CorUHrga2idIpUAv+CwwPm+whGnk6l9+A1iZJFKg8KFCpeC/QiTaHRHIo0GuBTZZBaYDw50uBWrAw4mzyaSDVeiSVdeb9GlCg8qBApeK9QMfa6/PYqUA7C0eRD3E2EkQjJVOgVuwA0vImhsJWL6xbgetMkihQeVCgUvFeoCOASbYCnQl0kJ0BQ05BGWE6BWpFFZQJdTd//G5Y9CwQYrf5C8AUqDwoUKl4L9CHLV5iz8OZQMdG9uprTEWcJEynQK24DAh2vXS0k+bPUXYWOQhcZJJEgcqDApWK9wLtDcy1FehMoB/aeZ6RjHrCdArUiq7AF/rnkXZAwsu2FjkO1DdJokDlQYFKxXuB3gHY6iPSoUC/M39ZJo9/gfOFARSoFU8Hu2M51BJIfN3mMqmmY0lToPKgQKXivUBbA7/aCnQm0M3A1VYxu4DLhQEUqBUzgD6qeuAaIPkdu8uUR02TFApUHhSoVLwX6PXARluBzgR6LAlnWMVstGqOT4Fa8Zvee92+K4GUqbaXqY5KJikUqDwoUKl4L9AmwG5bgc4Eqp6MUlYh2tF/izCAArXicDLq7EoDSn5mf5napnuGApUHBSoV7wXaELC3SocCvRiw+oEssxiUkwK15nQkXaL589MYFjkLCTnGKRSoPChQqXgv0NNsDonkVKAZ1vdYvwDuEQZQoJa01DupK78olgwuMB1NkAKVBwUqFe8FWhlV7AU6FGgv69ekZgL9hAEUqCUPxuxPtbHpgH8UqDwoUKl4L9AU1LEX6FCgI6xHQn4XeEwYQIFa8n9A5e9jy+BqYLtxCgUqDwpUKp4L9F/gPHuRDgU6CXjSIuS/FoNyUqDWZDZNKzAIpwU3mL5/QYHKgwKViucCzbR6BzMPhwJdANxtEfIiMF4YQIH6QStglXEKBSoPClQqngt0veHwt0Y4FOgq4GaLkCeBt4QBFKgfdABMxjWmQOVBgUrFc4H+DNxqL9KhQPeb91mRy8PADPE6KFAf6Gra0yAFKg8KVCqeC/RboKu9SIcCVctZdLWkqvdZPainQP3gHuAr4xQKVB4UqFQ8F+jnwP32Ip0K9BwkWJRZOxVaLAygQP3gAeBz4xQKVB4UqFQsBXrk0y9jWuEHwGB7kU4Feh3wlziiLfCTMIAC9YNBwEfGKRSoPChQqVgI9Pf+JwFzYlnhm8BIe5FOBXq7ZX95NwF/CgMoUD94LHIozzAoUHlQoFIRCfTAhMv19ny4NpYVvgSMsxfpVKAPWw7qcZXpG90hKFA/GAVMNE6hQOVBgUrFXKCLu5fV7ZlQAvhfDCt8yu6QSI4FOs5yUI9GgHiDUqB+MAZ41TiFApUHBSoVM4EuaRA4+TxlyJ+PA7H8srTzww/tRToV6AzLQT2sBuWkQH3hNeBF4xQKVB4UqFTMBHquZs+U1p8dU9WdpZC6xf4KewPz7EU6Fegyy0E9rAblpEB9YZLp7W8KVB4UqFRMBPoNUGP0juD3u4CH7a+wi90hkRwLdIvloB4VUF0cQIH6wfumwx9ToPKgQKViItBbgddyv69NRHn7wrkFWGkv0qlAjyXjdHFEklUABeoHHwMDjVMoUHlQoFIxFuiWZJTPL1Ir03tbBjS3fEszF6cC1a7QxYN6HAIuEK+BAvWDOYGB6IygQOVBgUrFWKDDgd75U9r1fJ2jdlfYGMiyF+lYoJdajLpk3SEUBeoHXwM9jVMoUHlQoFIxFOiRk5Hwe9h0Y8s3L/NpANg8Th0L9BbgF1H6BqCFeA0UqB98B3QxTqFA5UGBSsVQoJ9EncK9BVxpd4WnoYTNSMcC7W3Y5vrYB7mtj1ZaDcpJgfrCT0A74xQKVB4UqFQMBXpjVH+ah08B7A7vUAlVbUY6FuhIYELBucNQOXTz9TvLN1cpUD9YA6Qbp1Cg8qBApWIk0D8TUTVSbaOADsLV7HtnZ+hbCurazNqxQCcDTxSYmXMacH1wVF3LQTkpUF/4y/TWCQUqDwpUKkYCHVDgdZSsskgWPlu/Fid9FfhyCDjfZtaOBWo4qMcyveFU8NWrT4D+4jVQoH6wA7jKOIUClQcFKhUDgR6qisTozozuFw8UvFSTV/Lz+redQFObWTsWqOGgHgN1gZbboH99F3hcvAYK1A/2AZcap1Cg8qBApWIgUO0K+cboeeuSUEHwg2gXaDjfXnPDOttDIjkXqOGgHmcg4VqgmX4R/3/AcxZroEB94LDpgKwUqDwoUKkYCLQJ8EmBuDail+k3JqP8HZpBG67Vn8TaHBLJuUDV8gUH9fgRSMs8KTga5wumvQLlQoH6QiLONE6gQOVBgUqloEC/B+oW7MtoOXCK6fHXV7/p+E4ZoOy0RUA3m1k7F2gDJEQfj4OBZ9RPgdJrVfUJ4G3xCihQXyiNWsYJFKg8KFCpFBToXcCTBoHaeek0k3Xsr4Ck9Zp5TwMSbjRtzlcA5wJtDmyImtUAWBO4lXBtjj60hHhQTgrUHyqjmnECBSoPClQqBQS6uxRKZBoEztCukU3WMTr0AvW+1oFboUNsZu1coF2BbyPn/ApcqH3sOQV4wUaPehSoL5yCcsYJFKg8KFCpFBDoSybNSY7VNRvq8lg9YFHw2+AETaBP28zauUAHFzgbfjL04P0DoMy6rpY96lGgvlAPKcYJFKg8KFCpRAs0p77Z4N5jgJMm5xgkfAhckvv94wrA6zazdi7QVwo80boQ+DXwRbuIv6YN8LN4BRSoLzQAjhkmUKDyoEClEi3QL4H6RpbUpFNNO7u86teCCVcA7+ZNrL3qml02s3Yu0I+j35T/Ezg7+G3nSUBJYJ14BRSoL6QBxrWjQOVBgUolWqBtgZdMQn/Tx+hM6R9d1O+BUx0dmc4FqmXZMWLGM/mD0X8QuA8rHpSTAvWHpoDxf08KVB4UqFSiBLo5GeXNd/zMUzU31Yi6jteUO9pR1s4Fui26dyjt1Oen3O+36QK12JMUqC80AzYbJlCg8qBApRIl0OHAXYLoXXclana6Mbyh56YUlLHZg3IUzgUaPajHXwlhPZjsrAYkGt+FyIMC9YWWQHQb4CAUqDwoUKlECnRdDeAHYfzSCzWDlhyZL6iBEZ3Xx4JzgaqnolS4Il+MuCc6DShvsTwF6gttch/lRUOByoMC9YJtdk8KIwS6ojpwmdUCL1XQFNoyd0yNAxWRuMZBAVVXAm0cebPtCmBp2GQX3GaxPAXqC7cByw0TKFB5UKAesKhkuS+to47tihTo3HJArd8FCwT5u6Nm0DqhI2UsoDgspAuBto54UenvRJwacc1u+QOiQH2hR+4LwdFQoPKgQD3gaqCM8U85jC3nJd+7M0ygb6UA522xs/pZlYESercd6vEzABuqNsSFQO8HZudPvWK/+WgICtQXegPzDRMoUHlQoO75Tn8QXf67yJk7o4I2nq4FVXhma65ARyUAV9vc9Osbacvepqngo2ATSke4EOgo4L/5U9cB38S2PAXqC/2ATw0TKFB5UKDu0a5wKwAVV4TN2t8j8fKIt8v/rB14YRJ1pgYmj2sndWgr+JVHcki7WsO5q9SrgElOS+lCoG+Hd5mcmYzqxg1gTKFAfWGI2eitFKg8KFDXrElE+Q0XAVXy7xN+W08/J30nP2b1KUDNWa10hV6lifbQrdqXPgV7sTPnjZJAuce0ldiWbjQuBPpl+Ajk/7UcAqkAFKgvPGnWjyAFKg8K1DU9gQFq5nnASb+FMhicFDzdvCM3n5U1gFprVXVBQ21uYteV2plkwjOx5fK/uoFVGnV9Zw8XAl0DtMybuNGy86UCUKC+MDrizkoYFKg8KFC3bCuJ1K2quv0c7fQw8IbR72ma6M6b11z7e2bw4fmPVYG66/Vvh5+rFnRrqkUfxAXJaqktVir61qp9XAj0n7Bbr3tSUeVojMtToL7wMjDOMIEClQcF6pZHgO7659YzgVPXqTnjSmknmQ/9qx4flaJ58rkcVf2+kqbSTYHgY5k7HkrRh2OL9SROI+eJJPRyXk4XAlUr5nfdO9l+H/h5UKC+8IbZYFQUqDwoUJfsr4TE4Mucm7SL7NpLb9D0WOuLwIxl+oP3Ftu+rQDU/zsYrb/GtOZmnCJuf2TG8rcd3wF1J9CwQT3Sgc9iXZwC9YUpwBOGCRSoPChQlzwPpIe+rq8VvDzvmLtF9+k9bZxUFjh/R2hO8D3Qbdne5W8bNwJtAawPfttfEhVitjgF6gvT8zvFioQClQcF6nJltcLGu/jjZE2Yld4LS36rnG7UtLyGkAajcsrCjUC75rV5eR+WDTcLQoH6wmfAQ4YJFKg8KFB3TAaa5k+tOhnNNkWk/3EJ0CR/C8epQIcA7we/tbEcQc4ACtQXFsDknjgFKg8K1BU5DSNHdd/3W3TE4WcHhx3DcSrQ8cDzavbCZzNqAGViv/9AgfrCt6HHlwWgQOVBgbpCu4qqH8v78HEq0E+A8y5JCd7h7RD74hSoL6wAOhkmUKDyoEBdcRUwIZb4OBXoCoRIvuj+v2NfnAL1hZVAa8MEClQeFKgbvgNOjumZdJwKdE+qJs+qyoivnOmIAvWFrc2bDzFMoEDlQYG6oTUQW4vMOBWo+skjk9c6z5oClQsFKg8K1AUrE1AltgM0XgXqDgpULhSoPChQF3Q3e5PZFApUKhSoARSol1CgztmUglI7rMPCoUClQoEaQIF6CQXqnEfM3sMzhwKVCgVqAAXqJRSoY74pkduNiH0oUKlQoAZQoF5CgTplbRWgS6wLUaBSoUANoEC9hAJ1yPY6wOUxG4kClQoFagAF6iUUqDMOXgKcscs6LgoKVCoUqAEUqJdQoI7IaQtUWhX7chSoVChQAyhQL6FAHUMiJ5wAABJESURBVPEokPq1g+UoUKlQoAZQoF5CgTphckKMnYjkQoFKhQI1gAL1EgrUAV+kAAMdLUmBSoUCNYAC9RIKNHbWVAY65DhalAKVCgVqgGyB7n212y13TihwsFOgbolXge6sBzRxOCwcBSoVCtQAyQLd1U1R2irKvdHHHAXqlkIR6PFlb4x//vmxr2u8OeOrHzfEfmgfuR44ebPD7ClQqVCgBkgW6HCl76acP3soY6LmU6Bu0QS6Z8n8XJb8vC7LUi5Hl/0WywAa0Wx/q1NVRJFQuV5a8xZtO/a8f9Djo8ZO+XzZnxZHe0+gzAqnJaBApUKBGiBXoBuVNtu1j3VKxu7IBArUHgfXLvxg4fYCs/ct/e+9zU6NtllKpXrnNWne9t5Hx7w9e9n6yE1yeNFTLcoAFW4YNjvLQTmOLhzcKCE6P2OSqqZ1GDbl+4Lb5fDvHz/XHkj82EH+QShQqVCgBsgV6FRleOCzrzI/MsFzgebs3h3+O9v9/Xsjul99at4xX+my7s98svZoKPX4tp9mTXzlrY+/XLEudEgezNq07qcVX+Se0H1R0FmG2Bdoztp3X15sedW979dlK1asXrdu7aKpYwZ0vq5++WDpyzVqN2TSkp3qv+sWTnnm/lYX17BlsuSzWg2csFTT5aFvhjcrHXbWeE7X1/637sfF86ZNHP/mp8v+Cr8heXD9kvmzpr39+phRwwbd17Nj2xAtKwQXLdHs8RGPPvrEKI3HH7qz7fWNzzm5rFn21Zp2Gzl9/vw506a9+/rrY3q3qJsUnD/a3gYzggKVCgVqgFyBjlRmBj4nK+MjE1wK9EjW5j9XLJ4/473xI/r3aHPdRaeVD52C1azXMO2a5hdXMj6mUxu07tftPxfWTAqfWbJSpZIFQ8/uMWldMK+Dv37yYp9bdI2076nz1Osffv3r38Ej2Z5AN334SPOK+kqTGt4xdvHB/WuXzJzw9IO335R22lmX3dy136g3Pl60ZOpz9ysXmBQ7lyhXlbigw6BcenVOv6ZRvSqpBkudlJZbvVLXNC1luN4zm7a6e1DPVpfVKyPK/vReM/8xeIh0PGvrOm1fTH/n9ece6dnmmvNPKSGsRG8Xu50ClQoFaoBcgQ5Qgve75ikjIxMcCnTzF28M6dikuvAIDaN0w7QgF1a0u0g4J7cffNvlZmd75WqemXZdeusufZ8YPXV5xFXx4azdWVmhH/32zx5rabu4BSlz9lWdHuzW9KSo2RUvaP/kxJ+OGmygQzvWrV48c+Jzg3pkXHF6+P+J0s2fWKj9LI58P7ZTPQcFKf2fsaFRfayfwh/fuOC1/hkNo/8rpZ6t9Ht1gdPnRwEoUKlQoAbIFWhPJdjieYkyKDRnze8BBnc+6oSOZgd4hdoXNmp0Rt3qlYKXqlUv7ThkwtebwpbcsmB8nxa1g5f01c5t3vmh0aMG39fllmaNzqhes1Kt0xs1bdam050PDgjRuXaMgqmc1qzZxY3OrFujUv45XmKlShXyJkpddt9jGadZrKXmpbfeeWf7W1s0a9a+zzOTFvyalVv63cumDO/cuHbtKzo/PH7mz4HZuw5Ybq1/fnxveMdGZVG2xZPfZIdvixmDbmyW3vHOfo+OeuHhrjc3rp1b5jJ1myg9Bgx4auSYV994773P5yxaFmJ5fmaHMjP32dpXR9bPf+0RfWM+PnLkyNGz1v5raykhhzOzrYP84Z/MzIOFlPW+PYWUsWaS/YWUtbarDxVW1uJdfVCqQNsrwTOOX5R7QnOuDZ4Sdu2Y6YSHAsd52QYXXHn1zem3d+nT99HnJ0yfv3ztzrCYbX/88ZfZ8pu+nD735612cvr59e71E/XMyje8ufez05asWLHiywULZk+f/sH/jRp0163XXVSnWmkzD0aRcsEdY77eFljr6vcf+c8Fl97U6b7Hx749a8manVt/+/azt8c9+VD3LgNemv7dFkfbxJI/tlmGbFw+e/rsFaabjRAS5G+pAm2XJ9Aengj03Tb9Xp69yuNNYsof70+ct0YY8NPiedMnjXuoTVrloCvLVaxSu3b9CzQa1q5dq2LFag06jJprS9iEkDhArkB7KqsDn0uU/qE5z48IcN9tB7xkd5anq7NPZuau4JcdmzfvkJvzHqnZ5bEvM7OwNvaB/Zn7CivrPZmZewsp66zdhZSxtqsL6UdWqLt6r3BX75Yq0IHKD4HP+cqIyAS+B+qWeG3K6QY+RJIKHyIZIPs1ps8Cn1OUVyITKFC3UKBSoUDlQoEGmBo68+yvzIlMoEDdQoFKhQKVCwUaYKPSTt/729IzotoPUqBuoUClQoHKhQINMlwZelDd21cZFzWfAnULBSoVClQuFGiQXV2VjN7pSu/oo50CdQsFKhUKVC4UaIi947tm9JhYoANdCtQtFKhUKFC5UKBiKFC3UKBSoUDlQoGKoUDdQoFKhQKVCwUqhgJ1CwUqFQpULhSoGArULRSoVChQuVCgYihQt1CgUqFA5UKBiqFA3UKBSoUClQsFKoYCdQsFKhUKVC4UqBgK1C0UqFQoULlQoGIoULdQoFKhQOVCgYqhQN1CgUqFApULBSqGAnULBSoVClQuFKgYCtQtFKhUKFC5UKBiKFC3UKBSoUDlQoGKoUDdQoFKhQKVCwUqhgJ1CwUqFQpULhSoGArULRSoVChQuVCgYihQt1CgUqFA5UKBiqFA3UKBSoUClQsFKoYCdQsFKhUKVC4UqBgK1C0UqFQoULlQoGIoULdQoFKhQOVCgYqhQN1CgUqFApULBSqGAnULBSoVClQuFKgYCtQtFKhUKFC5UKBiKFC3UKBSoUDlQoGKoUDdQoFKhQKVCwUq5vGmnb2kY0dPV2efDh0KLedOhZPvbR0KK2c979sKK+tOhVftQvtxn7i7WpB3pyIi0DRCCIlDioJAZ44oFgxPS2te2GWQzANpaW0LuwyFQLe0tB6FXQbZ3J+W1qGwy1AIdElL6ykM+LEICLSY8E9aWpfCLoNkvk9LG1XYZSgE3k1L+6CwyyCbRWlpLxZ2GQqBN9PSPo0hnAJ1AQV6okCBnjBQoPKgQE8UKNATBgpUHhToiQIFesJAgcqDAj1RoEBPGChQeRxMT+9f2GWQzM/p6a8VdhkKgZnp6bMLuwyyWZ6ePqGwy1AITE9P/yKGcAqUEEIcQoESQohDKFBCCHEIBUoIIQ6hQAkhxCEUKCGEOIQCNWTdi33a3vPshuDE3le73XLnhPwOOOcrfwe/ZGeGOBa+rGl40cbLKscR9qqt5nzRv12XJzdGLhune9rTOscRNqttiGk4BWrEslsUpXO6kvGZPrGrm6K0VZR7czsSzhmau/GmKCHCf2Tm4UUar6rcScnjD6kVcIbNaue8oCgdM5SMH8KXjdM97Vmdi+WuNq6U+VaiQA042EF5ep96cKKSsUGbGq703ZTzZw9lTDDx+EdK7sZ71sgm5uFFGc+qHPYDXCe3Ck6wW+1PlXa/qodfU+4IP/WKzz3tXZ2L5a42rpT5VqJADZirdAuMKPC88qyqblTabNe+r1Mydmsfy1/soeRtvAeVjQWWFYQXZTyr8u7QJf5iZXiOvOI7xWa1/+2srNA+jvdVFuUvG6d72rs6F8tdbVgpwa6mQA14XZkS+PxJuUdVpyrDAxN9lfna37GB/03BjZfTIb3gyC3m4UUa76oc5PA9t2X5XGQvsFntpUrvwOf8gWHdkcfpnvawzkGK164OEVkpQTgFasAwZWHgU/vHo6ojlZmBicnKeO3vznXr1rUPbbz9Ss+Cy5qHF2m8q3KQCcoyfwvsDTar/ZryTsFl43RPe1jnIMVrV4eIrJQgnAI1YMPq4G2f+UovVR0QuJJR1XnKyFByp9DGW6M8seiJXo9N2h2+rHl4kcbbKqtr0p/1vcheYLPaTyqLCy4bp3va4zoXt10dJKpSgnAK1JwDd+n/hHsqqwJTS5RBofm5G+8rJSNwMt9xadhC5uHxgEdVznm41VY5BfYGq2o/pKxcOKDtHcMjHkjH9572qs7FbVcHiK6UIJwCNWVrX+WOfaraXtkcmPxFv3cSIHfjvasob244uHKg0nZX/lLm4XGAV1VeobwsqcSeYFntbsoo7Z9Gulb5sKXiek97VufitqsDRFdKEE6BmnBkahulk/4iQ7u8jdcjlJS78T5/dq7+cew+ZVz+cubhRR7PqpzTt3WmlBJ7go1qt1GU0bvUfz9qpfyUv1wc72nv6lzsdrVOgUoJwilQYzb2VpTBga3YU1kdmLNEye08Ofo4+Uq5T1VHDtV41054UcW7Ki9XnpdTZC+wU+3blYcD77T8nzKsOOxpD+tc7Ha1Tl6lbOxqCtSQOa2VLl8F3wMbqATvAs1XRoQSo4+TjUrGseALuE/bCS+ieFjlp5TIsbOLMraq3UeZF/hcpXRR439Pe1nnYrerdfIqZWNXU6BGfK0oI3PbX4xUAm2/1CnKK6E50cfJNqVD/ju31uFFEw+rnNWq23Ffy+oh9qr9WOgA2qGk5/cBEK972ss6F79drRpVShBOgRrwd2tlSp4fpob+6/RX5oTmhDbeod69g/tjuTIgf1nT8KKNl1Wepkz2vbweYa/a6utKcJyxX/RXYKzDizZe1rn47WrVqFKCcArUgIm5bV51Nirt9mof29Izcpsm5G68oUqwjcZjoTYOFuFFGi+r3FdZ6X+BvcFmtX9UegXOwp5VXrATXrTxss7Fb1erRpUShFOgBvRQlmYF0TfbcGXoQXVv3/znzrkbb7Fyy/xjatZYpeuhsIVNw4s0HlZ5j5JxWGbR3WCz2jl9leE79I4o2mwLWzg+97SXdS6Gu9q4UubhFGhBjuR3yKK/tbCrq5LRO13pndcpTd7G+z9FyeikKHdE/MMyDy/CeFnlr5R+8gruDtvV3qzVuaOitPkyfOm43NOe1rk47mrDSpmHU6AF2Rq5rdW947tm9JiYnZeet/Fylg3p2rbff/dHLm4aXoTxssovKnEznLjtaquZL3dr3euFLZGLx+Oe9rTOxXJXG1bKNJwCJYQQh1CghBDiEAqUEEIcQoESQohDKFBCCHEIBUoIIQ6hQAkhxCEUKCGEOIQCJYQQh1CghBDiEAqUEEIcQoESQohDKFBCCHEIBUoIIQ6hQEmcsQdoL46ogiFyikJOeChQEmdQoKToQIGSOIMCJUUHCpTEGRQoKTpQoCTOoEBJ0YECJXEGBUqKDhQoiTNyBVoGH6kLM2qWrN9tQzAh570bTkqtfdeqPIHuferSSqXqd16Uo6rZZ+H04JBg7wBxMxIaKfJQoCTOCBPoSwnQKbFEnz5wQ2ACJWeEBLqoWnAGuhzSJoBB+szMqrgxp/AKT4oZFCiJM/IFeg/qvbjo45ZAXU2JOa2ACne/8eRlKJkSEOjKUkjp/urbD9cA2mqT9yHpJ+3jdpTfXKjFJ8UKCpTEGfkCxWW7tc+cdGCdqn4KnLVWmzzeXzvn1ASa0xgn69PqgQzgM+2jNi4+ps4F3izMwpNiBgVK4owwgf4vMGMWMEdVbwKWBiZzGgUEuhiYH1xgf3Xcpn3MA174pw5u4gU88Q4KlMQZ+QJtGpzxG/C5eqQ0mocC3g8IdCiqHg/NaI/T9I/uKN0JFbbILi8pzlCgJM7IF2j34IxVukD/QN67S+sDX29CGKUCC9bUvk0sjCKTYgsFSuKMfIE+FpwREOiy/JubR5N0gV4SLlAc0ROmA1fwAp54CQVK4ox8gT4ZnBEQ6A/5Aj2Wqgv0Ilx8NJ+AN4cAZf8qlDKT4goFSuIMY4Guz7+E3xT42gwVo842VyQhES15Cko8hAIlcYaxQI+Xz3uI9HFAoH2AjaEZ74ybq/39tyEuGwe8J73ApBhDgZI4w1igaivgu8BkzuUBgc4Eeual/1fVH8unrDzWGNV2FUahSTGFAiVxholAPwfO1l+cz3ks+CL90TpImqon/9MYJbJU9YckPKqqPyehS6GVnBQ/KFASZ5gINKc1UOGeN56+GiUbBm6HLkgAWo+bPvI0YJKqHj4PZx/S5g4E5hZe2UlxgwIlcYaJQNV/8joTaR98njStVHBG6khtYhjwjT7zn9qo80/hFJwUQyhQEmeYCVTvzq5aysldVqohgapbBp5XrtwlPddpX39Mzr0jOht4UH6hSTGFAiWEEIdQoIQQ4hAKlBBCHEKBEkKIQyhQQghxCAVKCCEOoUAJIcQhFCghhDiEAiWEEIdQoIQQ4hAKlBBCHEKBEkKIQyhQQghxCAVKCCEOoUAJIcQh/w/Pc50kVkWpawAAAABJRU5ErkJggg==" width="672" /></p>
-</div>
-<div id="attr_modified_on" class="section level2">
-<h2>Modified On</h2>
-<ul>
-<li>Description: The time of last update of the problem in an incident.</li>
-<li>Type: Date (ISO8601)</li>
-</ul>
-<p>Dates range from 2014-09-12 17:41:11 to 2016-12-13 15:17:45.</p>
-<pre class="r"><code>xts.modifiedOn &lt;- as.xts(apply.weekly(myp.xts.modifiedOn, sum))
-autoplot(xts.modifiedOn, geom='line') + 
-  theme_bw() + ylab(&quot;Problems ModifiedOn&quot;) + ggtitle(&quot;Weekly number of Problems ModifiedOn&quot;)</code></pre>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="attr_saved_on" class="section level2">
-<h2>Saved On</h2>
-<ul>
-<li>Description: The time of last save of the problem.</li>
-<li>Type: Date (ISO8601)</li>
-</ul>
-<p>Dates range from 2016-05-23 07:22:10 to 2016-12-13 15:17:45.</p>
-<pre class="r"><code>xts.savedOn &lt;- as.xts(apply.weekly(myp.xts.savedOn, sum))
-autoplot(xts.savedOn, geom='line') + 
-  theme_bw() + ylab(&quot;Problems SavedOn&quot;) + ggtitle(&quot;Weekly number of Problems SavedOn&quot;)</code></pre>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="attr_osgi_arch" class="section level2">
-<h2>OSGi Architecture</h2>
-<ul>
-<li>Description: The architecture of the host, as specified in the OSGi bundle definition.</li>
-<li>Type: Factors</li>
-</ul>
-<p>Possible values found in the dataset for this attribute are:</p>
-<ul>
-<li>sparc (count: 2)</li>
-<li>x86 (count: 5413)</li>
-<li>x86_64 (count: 45457)</li>
-</ul>
-<p>Repartition of architectures:</p>
-<p><img src="data:image/png;base64,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qoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg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qMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6iKgCgiowlQCKo6AugioAgKqMJWAiiOgLgKqgIAqTCWg4gioi4AqIKAKUwmoOALqIqAKCKjCVAIqjoC6CKgCAqowlYCKI6AuAqqAgCpMJaDiCKiLgCogoApTCag4AuoioAoIqMJUAiqOgLoIqAICqjCVgIojoC4CqoCAKkwloOIIqIuAKiCgClMJqDgC6so0Na2oxdyVtZna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" width="672" /></p>
-</div>
-<div id="attr_osgi_os" class="section level2">
-<h2>OSGi OS</h2>
-<ul>
-<li>Description: The host operating system, as reported in OSGi.</li>
-<li>Type: Factors</li>
-</ul>
-<p>The possible values found in the dataset for this attributes are:</p>
-<ul>
-<li>Windows7 (count: 18060)</li>
-<li>Linux (count: 11360)</li>
-<li>Windows10 (count: 7420)</li>
-<li>Windows8 (count: 6788)</li>
-<li>MacOSX (count: 6562)</li>
-<li>WindowsXP (count: 236)</li>
-<li>WindowsServer2008R2 (count: 183)</li>
-<li>WindowsServer2012R2 (count: 77)</li>
-<li>WindowsVista (count: 62)</li>
-<li>Windows NT (unknown) (count: 42)</li>
-<li>WindowsServer2012 (count: 32)</li>
-<li>Windows Server 2008 (count: 14)</li>
-<li>Windows 10 (count: 10)</li>
-<li>SunOS (count: 6)</li>
-<li>windows 8.1 (count: 5)</li>
-<li>Windows 8.1 (count: 4)</li>
-<li>Windows 10 Pro (count: 2)</li>
-<li>Windows2003 (count: 2)</li>
-<li>Windows 7 (count: 2)</li>
-<li>win32 (count: 1)</li>
-<li>windows 10 (count: 1)</li>
-<li>windows 8 (count: 1)</li>
-<li>Windows 8 (count: 1)</li>
-<li>Windows Server 2012 R2 (count: 1)</li>
-</ul>
-<p>Visualisation of the various operating systems used in the dataset:</p>
-<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAPACAMAAADDuCPrAAADAFBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////isF19AAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nOy9CXgUx533347j2LmPzebObnazm/zfJHtk89+87/Pubt7s7rtHdvc7GiRGAiFkCSEsgwTmNLYxghhkWQbEDbGXQwZjDAbMfdlAZIzBhiAuYwIyRjYoyiAhQAeDZrrequqe0VwSMz2tLiT9Ps+Durq6uqq7p/tDdVd1l8YIgiAIS2iqN4AgCKK3QgIlCIKwCAmUIAjCIiRQgiAIi5BACYIgLEICJQiCsAgJlCAIwiIkUIIgCIuQQAmCICxCAiUIgrAICZQgCMIiJFCCIAiLkEAJgiAsQgIlUuD3O5aVLXjluB6z4MNXFjxV+UJNR8yC5tdWPfPsfx9s66HsCcJRSKA9w79pnXziqz+f9qHqDUqFppH/3/3faoqJ9v/3zz5m7OE3R74fsWDZX5q7/vnRH4Qv0F/+j/uMBfcN/PWdSk0+e4uUatoCG7Ih+iMk0J4hXKCCj5fFVqNs4pua9nd3ikmJm98Re+CNjj74l2H794nJt0ILrvx92ILPrOpc49Q/hB+SIUElx9/c5LPvLrfuIIESliGB9gxcoJ/+psFXjEu91OYSNO0PjEDIGLEx9sAFc+9/DLsRFfuSqEven/b4gpkPScH+Y7O5oPlHotI44bkdy6YIYd7zcnCNA5/hs/f+y6Nzp+dIOf7177vZ3OSzZ93kdqf961qgoYOaAnbkQdydkEB7Bi7Q8cFw+5mH7+XmeM/eEpwT6M81bW1M5ItcXg88dV2G9QNCiD9pN5aM4eGnzGec+3+gaV9qNMLVD2jax8YYFVl9z/8SUgx0ubnJZx+EBEo4CAm0ZwgXKGcZv+on2FtC6Kp8OCtrahcx9vBtTYuufrLf8trk18+EZjsK+A6OlcHm+8J39Xdf1rRnZOj6H/Mb7gOda6TzNRZ1tbnJZx8i+Z0ngRKWIYH2DFECDfxQ0/6nvSXEXpU9dZ1+VdNimrv53fPnzoXNB3K44g6J0Hpe2b7ZuWCqpv1MBh7m9c8DYWvc+t+a9sddNaMnn30KkEAJy5BAe4YogTIugD+ytwSlAj3IfbY8Iqb5W5rmFoFnNO2vwuK3aNo3xPT392vapIg1dvA89sUvMfnsU4EESliGBNozRAt0oqb9STCsn1pRvnB7VMcm/eiymb+q9odHffjayqcXvfqbqOb7959/+qKYJijQW68tnblw87WoWN+ORc+8ciY2ddw14gh0gKb9MGq7ntO0ey7w6XRN+/Ow6KtPP/2smM7gN/DXI1bw//33v9+FuJLPviu629ELVeXztrRECjTmmEcc1Di/SNvRdc/8ak9deL4xvy8JtO9CAu0ZogWaFbrV1Nf+uWyV/5j7LSPimqYVsLf+SkZ+ZXFIoW/9zOyp8z+CcY9q2nn9l/dp2lZxzRsdIY3o51mcGJn3o5+WsfdmXmChTE7pS74sY/+lJnbDo9dYFewwFN6NyfcpTVsStWLL5w0PreZpq2Pz/VtNG9nFsercXOvZx+Z2px1963/JRZ9+wtcp0OhjHn5Q4/0i7OYzfyhj7hkceuAQ/ftG5kH0MUigPUOUQDv+TNOmy9DtnFAfxo8/J2OEQNd+PBg50GessSkUo2m5RpQQ6ONiPmGBvv/noTw+szeUyakxwcgvXIze7pg14gpU3GJ/FL1qBt94Pjl3j6Z9+cXoXq8t92rati6OVYxAk88+Tm532NHlHwsu++fHggKNOeYR8ovzi1z5fijmU4eNqJjflwTapyGB9gxRAn2GV3XqZahIXLJz96x7XNSNVosYLtCfPqD9wWOvbp72bR43Ria7+kXuicc2vLHl6e/yOOOtHa6Ehbxm851/PsbeWbKEX7NLlixjQWPExjDWKq5vz0tvbBnzSU375LlgJuO1+598/cPqYXzhL6I2O3aNc0uWfJaXu2RJ+MuXlZr2nZhdnq1p3xLTB4Uu/nj8AV/4wmoe1xizCgtuUqRAk88+Tm7d7+jrPO4TBWt2LOA148+aAo095uEHNd4vAk2778GXqjeN47X2Hxh9smJ+3/A8iD4HCbRnCBPo7Q9eH8CrI7vkzF4eWivrT43pmvaHwinXhBH+pkHE3eQJ7zkuQvyi+7rxYK3l/9e0x2WIK+GTH5sefJAYerAW8k9MDK9a3b9Dxpz/I037x+Ay7WtHZfApXssMRG52vDXiPAPlyf5vzC5v4zYRe9b4c7NO9h+Vp0M1xfXdVMFiBJp89nFy63ZHO/6E61g+Gg1MEZlJgcY75p0HNc7SD/iaxtH6Na/PviMCcX5fegbalyGB9gzRr3J+/w0j/v9qWoWZpPUHmjaXGQK975IRd+tbmjZcBPI1baaZbokZJZXQ+WjwzgJt/WLwuQFje/i6J4OZmK8/+j6haRcjtjruGnEEWqhpmTG7/BZfQdr9dtl3grv99eGGwtjSsEY0NvCbQf48YgesZx9GuEC73NFX+ELzF9H/NSjQeMe886DGWbpV0/7CjPqxpr0gpnF+XxJoX4YE2jNECfSeJUazQ72mfTHUTLRC09KYIdCCYNxiTfuCqCy9tWlTvRm1PriYK+E7nRWpOwt0h6Z9LtiYrvNa0zRz2feDmfylpp2P2Oq4a8QR6FBNGxqzyye00JPLwL5JPw7u+t9dFDFzNe3PQin/T+i4fDpiB6xnH0aYQLve0WxN+9dguDoo0HjHvPOgxln6mqb9qVlEy7Vr4m39eL8vCbQvQwLtGcLehf/mJ8WF/jP5JiK/9NJDac4afRiFQA8H49r5veC5iJz0/DCB5nbG31mg/OZ0cCh5pfkckC97MBj3P6O9EneNOAIdq2n/GbPLB/h+hD0o9b483Kgp/uERJtuiOiVyJ4Emn30YYQLtekf5qutCM9+L6QfaeczjyS+0lOtSy/19+KJ4vy8JtC9DAu0ZwhuRApce4VosEcGnou7shUCEQDvbV/44rLVarz+4YsKPtDCBPtFZwp0FOiQ8/SZeITOXzQjGxXgl7hpxBDpT0/4mZpfXatpnImP045O+wLf+ez5Zt/1YzDdAv9SFQJPPPowwgXa5o/q9mnY8NPcf4QKNOuZR8otaKlr57//F7CO3g8vj/b4k0L4MCbRniGqF51fzl8Wt3dioC0yYiQv0c52tIf8UfHJ3/NGffDqYKiTQhZ1Z3lmg/xkupuOa9hVz2XPBuBiBxl0jjkBf0bSPt0bvMrfJj2OOQ/0vNPng9oIWbLnuxP+xLgSafPZhhAm0yx1tDj5PlYwKCTT2mIfLL3Zp+0Sja9Mn//O/r8qIeL8vCbQvQwLtGaIE2qQZLTIlmvbvS8LxSYF+pTPlv2ua6PDiE5/P0O798/985MUVYQINE02SAj2taV+KzqR7gQbXiCPQq1qw+bkT/UfyKx/nSkuXhkff/DNNG8KXfkvTnoxa4/2ubuGTzz6MMIF2uaNtEQIdYwo03jHvPKhxl7LfTv1rw5Rf/JX4TzDe70sC7cuQQHuG6DeRvma8912qaTnRScUtfGd9iwthE5PtKF967C1507vJqkAjbsi3mq043Qo07hrxXuX8iab9V1SUeEa5h7E3w5vbBRONmmOupn3jduQaS7oSqIXsO0lEoPonwm/hXaZA4x3zzoMad6ngo5dG/UAotIrF/31JoH0ZEmjPEC3Qv9G09XyyXNN+Ep1UCPR0cOY2vyc8ZtT+gi9frrMq0CfCm4Tmato/RWcSI9C4a8QTKK+DaW9FxAT+j9GXnFcrtd+FL5iuaX/LjF5IkU01/h91KdDks+8kEYGyH4Y3Iv3Q2LK4xzx0UOMvDfLuPxkNRvF+XxJoX4YE2jNEC/QnxueFzmna/aEGo5f/+Z/FUzoh0CnBuGVcKh2yN1PoxvRJqwLdpmmfD3VK+qlZSLdeibtGPIH6vq1pfxrxhZKnNePhrf6dYO8nk//StCwx/XtN+9S74Qtmd9kKbyX7EAkJtCCsG9NRU+1xj3nooMZbumD8+LfNqOaPyZdd4/2+JNC+DAm0Z4gW6F8bXw/WeW1nohl1+7tG9yUh0M+aV92tP9K0QUz6ItiV/PSXuhKo8YQyXKCRMS1f6OwWv50XcjQ6kxivxF0j7vdAd/Klf13fOf8sn/+F7BM5SdMeCPvax+n7Ne1FEajht81fPdG5YPXHuhaohexDJCRQkX8wlzRToHGPeeigxlvqCnW3Zy33aVp9/N837Ich+hwk0J4hWqD/YA6KxO/x7imXXa07Bmna90XDg3yV81/kN99bxGfaxUW3VdM+I78g5F/P9aW5ZB7RAjVbqsMEGhUjZLNTxrz7DU37eUwmMV6Ju0ZcgYpamPaHS82h3k6I9wa+bXxupPGLPI9ZLcaCW1Vf4XtppFrA0zzwpDm00aVhfIUvdilQC9kHSUigge8HX+XUn9FMgcY95qGDGm9pGY/7jUyl8+39hhB8nN837Ich+hwk0J4hWqADzL7hAeGC/1m+ffusP+OXmvzeERcor758c8zqLdPFx0RGibgGHvPxtEefGMzvWHlF5h63qL5GiuZzmvaTwqHh0TExLeLTSp41BzY9zOtpn/6tTNS9QOOtEV+g+lQhns96pi54puSHIvij4Dcxd4nh4D6XVjq/csJgMaDeZ83bXL1cJLvv3yZXzn3sZ/dq2vcuuboWaPLZB0lIoOyNezTtE8Nf2rnk7/jPYQg07jEPHdR4S+se0LTPP7LhwPaFPBdjaJE4v2/YD0P0OUigPUO0QJ/gl9NBEbjW+RrOfSvlIi7Q7y4IRaYb9amyUMQ/XRdX5w9ZtGiGiIURH6+Ljbnw3VA2nzM//t69V+KtEV+gjL38Ta2TjxU0hxbs+UbYAu17nYJb+9WweE8DK+9aoFayj9zBO+zoC6HP2f3DO2bzVrxj3nlQ4y39VdiGZBnHKPb3DcuD6HOQQHuGaIG+qZlfY2O+SkMj9wy9aCwSAmW7DHF9eYGpKn3Nn8qIby8NsN8P/tzXH2TRorn+yB994ms/C4+OjWGN4z4ls7l3cK252h28EmeNrgTK2mb9jamKLz94KnzBtRl/EpTIXy9sD1two/R7plv+fQ8Tb6F3I1AL2Ufs4J129PD/ljk8MMF3yhRovGPeeVDjLt3+F+aG/GxL8L37mN83LA+iz0ECdR7/4efLnjvQEJyVAmWBQ0tmLN4fJirfoVVlzx0KxMsgGdr3LJ4xf1P0kB52rXF5y3Mz56094o+O1y+uXzCjfOmO38cseHf9/JnPb0twe5LOPilqq56Zva45PKb7Yx5vqX5+93+XPb+nNjwu6vcl+jIkUOUYAiUIovdBAlUOCZQgeiskUOWQQAmit0ICVQ4JlCB6KyRQ5ZBACaK3QgJVDgmUIHorJFDlkEAJordCAiUIgrAICZQgCMIiJFCCIAiLkEAJgiAsQgIlCIKwCAmUIAjCIiRQgiAIi5BACYIgLEICJQiCsAgJlCAIwiIkUIIgCIuQQAmCICxCAiUIgrAICZQgCMIiJFCCIAiLkEAJgiAsQgJVS6Cp6Ya60q+1KSva39R0U1nhrOmWsqI7mppalRWuN/mUle1ralJ5ut3umYxJoGoJeL3N6kpvVHcp+71ehf9zeNuVFX3b61X3P0fAq+5/jlter8rTjQTaJyGBKoEE6jwkUMJ+SKBKIIE6DwmUsB8SqBJIoM5DAiXsJ+AdTBCESlK5gEmgaiGBEoRiUrmASaBqIYEShGJSuYBJoGohgRKEYlK5gEmgaiGBEoRiUrmASaBqIYEShGJSuYD7skD3AUZPmTpggxH1GMq6WeEg5vf8VkVCAiUIxaRyAfdlgTYAx2RgG/CkDAQ82MIWoaiLFZIUaDZCnLe6jSRQglCM1YtX0JcFyobhRTmdCWTIjyhcBGp7RKC1VjeRBEoQirF68Qr6tEDnYKqYBAa5inBChHYhK8AOr9rcRfokBdroNXgT03Wrm0gCJQjFWL14BX1aoLuRJcx2HuNWokpEzMe07tJbewbqKxrSZGXrJCRQglCM5auX9XGBXgbq+GQDqmowTkQUYz1j+7FI/NnoqypIf2hZi4gP7BibMXjaWVOgp2aNTM+v/JCHpmIb/+v3oFzEl4q1m5eXeIZOfjOsyrkMR6xvIgmUIBRj/fLt4wLVc7GXCQ0e96W7bjLW5sLZkEDXTUJBITA5wC02A3ANhKtSCvRVAEOA9KOMbZLmvAAM5cL0Z6KWNebCleuBUKnJOVdFCptIAiUIxaTimD4tUFaBhYx1ZLhvsSk4xNhJZHSEBJozrJaxY2k4LWbSNrX4zxRACLTejRUtrLEM+T72AXK4ObfChcviSQCfmYfSJl5hhTv4VRt9ctrl6GI7biVMOwmUINSS+OXK8Ude631boNtRzNhpTGZsPRaLP4+zkEBxRqQox04WGG50E61PEwKdjTliRi/GFlGFrRMaLhc12c2YzdgonBNLp42uM4s4KhwdxU1vEqg+ewiin5PM5Rr9IcS+LdBLcLWyNVgjqo8jRHcm0a3JFGiJTFGFbawBmcZRKRcCzTf7JO3BDMYqsZ3pefmHMZexMuxnbCJWR/wXpI9J98YUSwIliN4DCbQr9GzUsEdFXTOQjQZen6xhIYHKdiG2igu0BuON5Ou5QH0uV4ecOSdqryJZAypuoJDpQ3CNsQNAXtWxzg/DviOqpdHcakmYmyRQglBL4pcrpyPyWu/bAuV1zrXt7oFin8uxxwu3+O/DFKhx5y0Eul/UNQX7uEAbkG3MeDGIsWvI0Q9gKytGYx3GiOh3xgIYMP2CWcAMHE9pA6kRiSAUk8oF3McFuhnTj6FUhHai4iAmiJAp0EUygRDoqWANdGN4DfQ8HuZ/x6BuCb+nX4rqnUZXUm7W3bMykXZWhpvS8gMpbSAJlCAUk8oF3McFegHZy80WIuQswwoRihGoN/gMdLbxDPR9ObMXT/G/K7GjxONnB7F0Fk4ydrtBPvFsn4tZMtG6oFWtQgIlCMWkcgH3cYEGsjDU+NKHXsBDb4tQjED1IsOxXrfRCl8p05dgI5+cQKlrCq9pojjf0yFu6dPk889qaVdRQT2d4gaSQAlCLalcwH1coGw6MMi4yV4AuORwiDEC5TpM29KmXyiS3ZiuuFHVyppmIk98f+R2BkQjPiuCocxhmNPC2KUSvCLmrsHtS237SKAEoZhULuC+LtANwEwjVA2MloFYgeplXK5Z3KLyTaSNfCYHyDA+hTcNsploIeRbnewI4M7LBsb7jKzGp7h9JFCCUEwqF3BfF+h7wFYj1AwslYFYgcp34TOnnGkw3oU/8exIz9iFHxqrbYarTa6EK3L+7Izh6UMnbDMqnpVYluL2kUAJQjGpXMB9XaB3OyRQglBMKhcwCVQtJFCCUEwqFzAJVC0kUIJQTCoXMAlULSRQglBMKhcwCVQtJFCCUEwqFzAJVC0kUIJQTCoXMAlULQGvt1ld6Y2td07TQ/i93hvKCmfRHyVzkNte701lhQe8t+6cqIe45fWqPN1u90zGJFC1kECVQAJ1HhIoYT8kUCWQQJ2HBErYDz0DJaxg+XQjgdoLCVQtJFDCCpZPNxKovZBA1UICJaxg+XQjgdoLCVQtJFDCCpZPNxKovZBA1UICJaxg+XQjgdoLCVQtJFDCCpZPNxKovZBAo2gAWhwsjgRKWMHy6UYCtRcSaBQRAl2Eoh4ujgRKWMHy6UYCtRcSaBQkUKIXYPl0I4HaCwk0igiBHl61uYeLI4ESVrB8upFA7YUEGgU9AyV6AZZPNxKovZBAo4gQqDn+3EZfVUH6Q8tE/Hqsl0tm4y3WmJVWK8IrUGG5OBIoYQXLpxsJ1F5IoFHEE+i6SSgoBCYHIgXKdmEcj3o/bYj174GQQAkrWD7dSKD2QgKNIp5Ac4bxmuaxNJyOEqg+GdtYYDyqo/LQE8dPAiUskMQpFnm6tVtcM3XauUCVFd7h9dmVVeS1TgKNIp5AcUbMlGNnlEDZR+mZV7diRtQxZTe9SaD6UiR6I8mcYYSdRH0IkQQaRTyBlsiZKl7djBIon52SOagpOg8SKNHD9JQeiDtBAu2eeAItlzOr4gjUXwK8HpNH67XEIYESFkjiDIs83ZqsrpkyjV5vo7LCm2zbcV/ktU4CjSKeQBfKmQiBzjIEyl7FgOupFEeNSIQVLJ9u1IhkLyTQKOIJdJGciRBoqSHQ5mygMpXiSKCEFSyfbiRQeyGBRnFHga4TYb3QEGgFXsxFTQrFkUAJK1g+3Uig9kICjeIOAt2IBSJcAynQtzDG/wZG+OLmlBAkUMIKlk83Eqi9kECjuINA30HGWcZqh2UIgd7Mdf2W6VOxynpxJFDCCpZPNxKovZBAo+ACdaUZrI4j0Ntj4BpZiJLVQqDz8ByPv5Lu/sBycSRQwgqWTzcSqL2QQKPgAg2yKo5A2fWlhQPyl7Vv5AL9DfLaxIK1mBjdlT5hSKCEFSyfbiRQeyGBqoUESljB8ulGArUXEqhaSKCEFSyfbiRQeyGBqoUESljB8ulGArUXEqhaSKCEFSyfbiRQeyGBqoUESljB8ulGArUXEqhaSKCEFSyfbiRQeyGBqiXg9Vr/nH3KNKo8o703lBXOoj9K5iC3vd6bygongdoNCVQtJFAlkECdhwRK2A8JVAkkUOchgRL2QwJVAgnUeUighP1QI5LzMBKoCkighP2QQJ2HkUBVQAIl7IcE6jyMBKoCEihhPyRQ52EkUBWQQAn7IYE6DyOBqoAEStgPCdR5GAlUBSTQXsA+wOgcUwdsMKIeQ1k3KxzE/KQL2YsrZqh5Sf6A4ctSOS1IoM7DSKAqIIH2AhqAYzKwDXhSBgIebGGLUNTFChYEqk8JCvRqPuABHk7hgiCBOg8jgaqABNobGIYX5XQmkCEHy7wI1Noq0MAmBAU6HWPq9AsFmGtxYxkJVAWMBKoCEmhvYA6miklgkKsIJ0RoF7IC7PCqzV2kT1ag71QWICjQD5DxOz6phbvR8vaSQJ2HkUBVQALtDexGlhjg7TzGrUSViJiPad2lT1ag8+Vwc4ZAX8Z0OR2DvVY2VUICdR5GAlUBCbQ3cBmo45MNqKrBOBFRjPWh8d03+qoK0h9aJsd9D+wYmzF42llToKdmjUzPr/yQh6bKsTf9HpSL+FKxdvPyEs/QyW/KkTd/X1tbm2UKtAxb5LQKiy1vLwnUeRgJVAUk0N6Aniurg1Nx3Jfu4idqmwtnQwJdNwkFhcDkAD+TZgCugXBVSoG+ymuVQ4D0o4xtkua8AAzlwvRnopY15sKV64FQqUG2KdCJOCqne7pt5+8eEqjzMBKoCkigvYIKLGSsI8N9i03BIcZOIqMjJNCcYbWMHUvDaTGTtqnFf6YAQqD1bqxoYY1lyPexD5DDzbkVLlwWTwL4zDyUNvEKK9zBcy8o0BHCzZxDeDRyG1qvJQ4J1HHEUW9M4ieylyav96qywq95m5QV3ehVetTt2nFf5LXe5wS6HcWMncZkxtaLO+v1eJyFBIozIkU5drLAcKObaH2aEOhszBEzejG/J+dV2Dqh4XJRk92M2YyNwjmxdNroOrOIoECz8KGcnoxu47/pTQLVOul/JPPrEEQkUfcufU6gl+BqZWuwRlQfR4juTKJbkynQEpmiCttYAzKNA1EuBJrPb9QFezCDsUpsZ3pe/mHROakM+8Wd+mp/RBFBgWaGBFoQuQ0k0Luanrq0iP5AXxeono0a9qioaway0cDrkzUsJFDZLsRWcYHWYLyRfD0XqM/l6pAz50TtVSRrQMUNFDJ9CK4xdgDIqzoW9vim8xb+PTk9hAlR25A4fhKo4/DD7m1P4jeyF5/Xe1NZ4X6FO97u9bYqK7zD67Mrq8hrvc8JlNc517a7BwojlmOPF27xP4Yp0IUygRDoflHXFOzjAm1AtjHjxSDGriFHP4CtrBiNdRgjot8ZC2DA9AvBEoICnWS+9bQXMy1vLTUiOQ+jRiQVUCNS72Azph9DqQjtRMVBo3JoCnSRTCAEeipYA90YXgM9j4eZ6NZZt4Tf0y9F9U6jKym/3nbPykTaWbOE7FA3pm1yutrM2AokUOdhJFAVkEB7BxeQvdxsIULOMqwQoRiBeoPPQGcbz0DflzN78RT/uxI7Sjx+dhBLZ+EkP+EbvGJZ+1zMMkvIDnWkN2qeE7DL8taSQJ2HkUBVQALtHQSyMBTnRUgv4KG3RShGoHqR4Viv22iFr5TpS7CRT06g1DWFsSYU53s6xC19mvzdq6VdBdmhVzkzxYBw9S53k/WtJYE6DiOBqoAE2kuYDgwKyNACwCVP1hiBch2mbWnTLxTJbkxX3KhqZU0zkSc6ed3OgGjEZ0UwlDkMc1oYu1SCV8wCsjs/JjKllTWPwQLrG0sCdR5GAlUBCbSXsAHBRp1qYLQMxApUL+NyzeIWlW8ibeQzOUCG0Sg0DTjOJwthPOM8ArjzsoHxwS60IYFezYN7lAujUjgvSKDOw0igKiCB9hLeA7YaoWZgqQzEClS+C5855UyD8S78iWdHesYuNLp1ss1wtcmVTFGenTE8feiEbaFXELI7P6i8OM9dsKIthY0lgToPI4GqgARK2A8J1HkYCVQFJFDCfkigzsNIoCoggRL2QwJ1HkYCVQEJlLAfEqjzMBKoCkighP2QQJ2HkUBVQAIl7IcE6jyMBKoCEihhPwGvt1ld6Y0qz2jvDWWFk0AVQAIl7IcEqgQSqPOQQAn7IYEqgQTqPCRQwn7oGaj9JHDYSaDOQwIl7IcEaj8JHHYSqPOQQAn7IYHaTwKHnQTqPCRQwn5IoPaTwGEngToPCZSwHxKo/SRw2EmgzkMCJeyHBGo/CRx2EqjzkEB7G/sAo6dMHYwBPBh7DGXdrHDQ+Dho4jQtLPaMeS6V64EEaj8JHHYSqPOQQHsbDTDHHd4GPCkDAQ+2sEUo6mKFZAV6dhCQDQyts76NJFD7SeCwk0CdhwTa6xiGF+V0JpAhvyd/Eai1T6C+IlRcZ1dLMSFgeRNJoPaTwGEngToPCbTXMQdTxSQwyFWEEyK0C1kBdnjV5i7SJynQYygQv8rNLHNUZMUScmcAACAASURBVCuQQO0ngcNOAnUeEmivYzeydD45j3ErUSUi5mNad+mTFOgrmC2nT+B1q1tIAu0BEjjsJFDnIYH2Oi4D4vHkBlTVYJyIKMb60AhzG31VBekPLWsR8WKEucHTzpoCPTVrZHp+pRhhbqocf87vQbmILxVrNy8v8Qyd/KYQ8xo8K4t5HDstbyIJ1H4SOOwkUOchgfY69FzsZUKDx33pYoD4NhfOhgS6bhIKCoHJAX5azQBcA+GqlAJ9FcAQIP0oY5ukOS8AQ7kw/ZmoZY25cOV6IFTK3kauGJCzyYPzljeRBGo/CRx2EqjzkEB7HxVYyFhHhvsWm4JDjJ1ERkdIoDnDahk7lobTYiZtU4v/TAGEQOvdWNHCGsuQ72MfIIebcytcuCyeBPCZeSht4hVW8CxZ4Ak8Xtt+diwq9MhifW0J00oCtZ0EDrv3RuI/kc3c9HqvKSu8VeGO3/B6rysrvMV706acOiKv9b4t0O0oZuw0JjO2HovFn8dZSKA4I1KU89vvwHCjm2h9mhDobMwRM3oxtogqbJ3QcLmoyW4WjzxH4ZxYOm20eDbQVgpBZfR/bvwaSRzVuul7JHP0CSI5ou5d+rZAL8HVytZgjag+jhDdmUS3JlOgJTJFFbaxBmQaR6VcCDSf36gL9mAGY5XYzvS8/MOYy1gZ9jM2Eav9oexfy8KgYg9yj0QVSwJVSk9dOgTRzwSqZ6OGPSrqmoFsNPD6ZA0LCVS2C7FVXKA1GG8kX88F6nO5jEr6OVF7FckaUHEDhUwfgmuMHQDyqo4Zz3KqMeiQzvTX0tNqIovtuJUw7SRQ20ngsHtvJv4T2Uyr19usrPB2hTvOqxU3lBXe5m21KSd/5LXetwXK65xr290DhRHLsccLt/jvwxToQplACHS/qGsK9nGBNiDbmPFiEGPXkKMfwFZWjMY6jBHR74zlN+0Dpl/gdh6OfTLlBkywvIHUiGQ/CRx2akRyHmpE6oVsxvRjKBWhnag4aIjOFOgimUAI9FSwBroxvAZ6Hg/zv2NQt4Tf0y9F9U6jKym/+HbPykTaWXYj+Kr9Jbgtv4pEArWfBA47CdR5SKC9kAvIXm62ECFnGVaIUIxAvcFnoLONZ6DGe0V78RT/uxI7Sjx+dhBLZ+EkP/sbvGJZ+1zMYr40cU/PqcXgqGb4xCGB2k8Ch50E6jwk0F5IIAtDjV6aegEPvS1CMQLViwzHet1GK3ylTF+CjXxyAqWuKYw1oTjf0yFu6dPkSVAt7Foiu9kz9gKmWN9AEqjtJHDYSaDOQwLtjUwHBhn31wsAlzxzYwTKdZi2pU2/UCS7MV1xo6qVNc1Envj+yO0MiEZ8VgRZIWXDMKeF37SX4BWRR8YOH2td7zI/+mQFEqj9JHDYSaDOQwLtjWwAZhqhamC0DMQKVC/jcs3iFpVvIm3kMzlAhmHFacBxPlkIo7p5BHDnZQPjhV2f4ymH8H8vWd8+Eqj9JHDYSaDOQwLtjbwHbDVCzcBSGYgVqHwXPnPKmQbjXfgTz470jF34obHaZrja5Eq4IufPzhiePnTCNvl1PHam7KGMkRW1KWwfCdR+EjjsJFDnIYES9kMCtZ8EDjsJ1HlIoIT9kEDtJ4HDTgJ1HhIoYT8kUPtJ4LCTQJ2HBErYDwnUfhI47CRQ5yGBEvZDArWfBA47CdR5SKCE/ZBA7SeBw04CdR4SKGE/Aa+3WV3pjSrPaO8NZYWTQBVAAiXshwSqBBKo85BACfshgSqBBOo8JFDCfugZqE0kd9hJoM5DAiXshwRqE8kddhKo85BACfshgdpEcoedBOo8JFDCfkigNpHcYSeBOg8JlLAfEqhNJHfYSaDOQwIl7IcEahPJHXYSqPOQQHs3Z4Ds0JCkB4HCO63w/vOjsjKGP/tWaLyjE+XFA/Mmr5DdjgITMNIYfI7dHGoMAmIJEqhNJHfYSaDOQwLt3XCBIjR+e8UdBdqx2AWDCb+TEf4yHh7iBjy7xGydGy8bKRch1/oVQQK1ieQOOwnUeUigvRsh0MVm+HbmnQTqfxKu+e/d8n+0fhByPxIxy5G1rY0F6uYA74r5tcioF9OzwBHrW0UCtYnkDjsJ1HlIoL2bMyj0DDXHbz+KMXcQaFVwTCTWOBKP8Jv1dhfekfP6LMwW045iTOV39/5izEphq0igNpHcYSeBOg8JtHdzBqOewWkjvBAvdS9Qrxt7g+HfefC6WH2I+TD0NIrl9LcuVDP2CnKup7BVJFCbSO6wk0CdhwTau+ECrcZzMhjIyXzXEKh+8PG8AflTzYai46WDPY+sF+PFrUJxqO2I10bHMnYYg8wmqFsH3zICy5Hb8rsMvJnKVpFAbSK5w04CdR4SaO+GC7QtPV83gs+eNwRaBQzMcwNbxMx6wJ0NjOU37OOCLUSCi3DdYPXAYl9kjrcKsbgU5SltFQnUJpI77CRQ5yGB9m64QNlTOCeC/42DhkDr4a7Wme8l5HKxXnK5d/hY7Qi8xHQ3DnWu6XOJ5vt5QPa8gxG36yfB467FFuXvSBgfCdQeEj/kAm9rcultpN3rva6scJ/CHW/l/3MoK9znbbcpp0Dktd6/BPoaVvCQXpDebgh0v9EepA8GrxSUYa2YOYVHWAvwQdiqBfg1t+IaXjuF65EVYcPAz0Hno9IwbnqTQLV5+gjJHHKCsEzUvUv/EuiNtEJe1azFU8wQqN8nn2vezsJ1pme4ZPUysPpFvRnwhq061tDk7d+sGCM6hk4LfsiyfThQEacoEqjz9NT1QhAR9GuBsil4n7EX8ZopUM6Ns68/9xC4QL3IC6X1uxBWz2TDOnt6Xt9fCow1q/HPocCNw7FFtd9ImOskUHtI/JALvNeSS28jzV5vk7LCr3ublZV9zavwqNu341HPUvuZQHdgNWPFaTeCAj0oqpSu8R4u0HdFW3uQIuzqnLkGfMRu+4LN8m/AfED6rgunX0jlNSRGjUi2kdxhp0Yk56FGpN6NFGiTayS7gieYKdC9yFj8Rl0HK+ACvYyCzsSL8XjnzBbk62wkjgXnnxQWZsxXhPnMV4i5qWwVCdQmkjvsJFDnIYH2bqRA2SR8uAHbggItxFGxSB/MBepPS2uTCV9YdIO9D/O9I05zLtYzNg1rghHTsElMVmLIDcaOodOsFiCB2kRyh50E6jwk0N6NIdBX8fJEXDUFqrshOyEdE89A2WS8ImauIIffrM/G4HPGejcmooD/8Nsx8CMjot4jX2g678J+MVuB/BTOCxKoTSR32EmgzkMC7d0YAm3AcNd4FqyBjsJyH7u1Kws4IxIM2O1jDePl60rtY+Beeq694/KmHGSd5xG+EfC8VNvqq9+ej0f88lX4KfKpaFNW6BslFiCB2kRyh50E6jwk0N6NIVA2FtjAggLdDwzIAR4rhWu1aFSHeyhQIs+xtnLza3YoviTXrx8ZjJjUyGfXIP2ykfEO4KTlrSKB2kRyh50E6jwk0N6NKdB1gBCf2Qr/1sTBnom7/L97ZOhe8WJ8WUHm2HXBI/3e4ocz04c9XR189cC3Z2aJJ3vsMzWi4nnRbXS75+gTUGj5eiSB2kRyh50E6jwkUMJ+SKA2kdxhJ4E6DwmUsB8SqE0kd9hJoM5DAiXshwRqE8kddhKo85BACfshgdpEcoedBOo8JFDCfkigNpHcYSeBOg8JlLAfEqhNJHfYSaDOQwIl7Cfg9TarK71R5RntvXHnVD0FCdR5SKCE/ZBAlUACdR4SKGE/JFAlkECdhwRK2A8JVAkkUOchgRL2E9mI5HTpJFDnIYGqgATaRyGBKoEE6jwkUMJ+SKBKIIE6DwmUsB8SqBJIoM5DAiXshwSqBBKo85BACfshgSqBBOo8JNC7mn2AcUHWGZ+c5zyGsm5WOIj5SWQfmICRHUbw5lBUMjEgncQzfnkqpwUJVAkkUOchgd7VNARHx9wGPCkDAQ+2sEUo6mKF5ATK6tx42QgtMoaCL4QrLS3NxR2a95HVjSaBKoIE6jwk0LubYXhRTmcCGT4RuAjU2idQthYZ9WJ6FjgipoV4i//Vm3ZloVS3utEkUDWQQJ2HBHp3MwdTxSQwyFWEEyK0C1kBdnjV5i7SJyvQjmJM5aL0F2OWnDcEynkDuGRxm0mgiiCBOg8J9O5mN7JERfA8xq1ElYiYj2ndpU9WoOy3LlQz9gpyrsvZkEB1D95MfnNNSKBKIIE6Dwn07uYyUMcnG1BVg3EiohjrxcDFi8Sfjb6qgvSHlrWI+MCOsRmDp501BXpq1sj0/MoPeWgqtvG/fg/KRXypWLt5eYln6OQ3zTv05cht+V1G0JYhgbKHscnyVpNAlUACdR4S6N2Nnou9TGjwuC/dxU/RNhfOhgS6bhIKCoHJAX4OzQBcA+GqlAJ9FcAQIP0oY5ukOS8AQ8WdeiZqWWMuXLkeCJUKbhVicamhVxZZAz1oeatJoEoggToPCfQupwILGevIcN9iU3CIsZPI6AgJNGdYLWPH0nBazKRtavGfKYAQaL0bK1pYYxnyfewD5HBzboVLDBx/XszMQ2kTr7DCbZ51J7lts6+ZxYUE+muj6hvGzauJEyHQJNazBa/X6RLvjrIV77jKwhUWrfYXtyujqP+B+pBAt6OYsdOYzNh6LBZ/HmchgeKMSFGOnSww3OgmWp8mBDobc8SMXowtogpbJzRcLmqymzGbsVE4J5ZOGx0U5BzIWq7EbIW/uiMTv4zakpveJAgXaDLrEQThPFH3Ln1IoJfgamVrsEZUH0eI7kyiW5Mp0BKZogrbWAMyjUNQLgSaz2/UBXswg7FKbGd6Xv5hzGWsDPsZm4jV/vAS2ocDFcEZsyM9p6A+akuoBnqXl001UBVFUw307kbPRg17VNQ1A9lo4PXJGhYSqPHgchUXaA3GG8nXc4H6XC7j9aJzovYqkjWg4gYKmT4E/Fb9AJBXdazzwc1zKHDjsDlTCHc6J2PMcy0pbDQ9A1UCPQN1HnoGerczE2vb3QOFEcuxxwu3uEhMgS6UCYRA94u6pmAfF2gDso0ZLwYxdg05+gFsZcVorMMYEf3OWF7BHDD9gpHoXRdOv2C8hsTCW+FTgQSqBBKo85BA73Y2Y/oxlIrQTlQcxAQRMgW6SCYQAj0VrIFuDK+BnsfD/O8Y1C3h9/RLUb3T6ErKr7TdszKRdlYEfUVijUJxgy8ggaYECVQFJFC76UsCvYDs5WYLEXKWYYUIxQjUG3wGOtt4Bvq+nNmLp/jfldhR4vGzg1g6Cyf5qd7gFcva5xrvHq3EEH7JHwu+c08CTQkSqApIoHbTlwQayMJQnBchvYCH3hahGIHqRYZjvW6jFb5Spi/BRj45gVLXFMaaUJzv6RC39GnyF6+Wdj3vEu1Kopk+X8aSQFOCBKoCEqjd9CWBsunAoIAMLQBc8jSNESjXYdqWNv1CkezGdMWNqlbWNBN54vsjtzMgGvFZEaQy2TDMaWHsUgleka/CT5FvJDVliU5SJNAUIYGqgARqN31KoBuAmUaoGhgtA7EC1cu4XLO4ReWbSBv5TA6QYdyWTwOO88lCyLc62RHAnZcNjOd2XYP0y0beOyDu70mgqUECVQEJ1G76lEDfA7YaoWZgqQzEClS+C5855UyD8S78iWdHesYu/NBYbTNcbXIlXJHzZ2cMTx86YRv350U31pql6BNQ2E4CTRESqApIoHbTpwTaCyGBKoEE6jwkUMJ+SKBKIIE6DwmUsB8SqBJIoM5DAiXshwSqBBKo85BACfshgSqBBOo8JFDCfkigSiCBOg8JlLCfgNfbrK50EqjzkEBVQALto5BAlUACdR4SKGE/JFAlkECdhwRK2E/YM1AFpZNAnYcEqgISaB+FBKoEEqjzkEAJ+yGBKoEE6jwkUMJ+SKBKIIE6DwmUsB8SqBJIoM5DAiXshwSqBBKo85BAE2EfYFwXdTCGzmDsMZR1s8JB47OcSXCivHhg3uQVKfb+qa0c7SmquGjMNC/JHzB8WWucmaaFxZ4xzxln/GhzHPissc83x8nEEiRQJZBAnYcEmggNwTHXtgFPykDAgy1sEYq6WCFZgfrLuMKGuAHPrlS288gAIMcFt/zy/NV8nh3w8M2YmbODgGxgaJ2YGQ1XGsclHFoXk4k1SKBKIIE6Dwk0IYbhRTmdCWSIcYbYRaDWRoEuR9a2NhaomwO8a30rWwfh6eusdQXcF5kYS2lMnX6hwBiwOHzGV4SK6+xqKSaIoZZGG6PK6U37cuTYyJGZWIMEqgQSqPOQQBNiDqaKSWCQqwgnRGgXsgLs8KrNXaRPUqDtLrwjA/oszLa+lbuRLw/obFQw9gEyfsfDtXA3Rs0cQ4FIdjNLjn5sClRutHhQEZGJRUigSiCBOg8JNCF2I0sMXnke41aiSkTMx7Tu0icp0DMYohuh0yi2uImcX2G1nNaImvHLmC5nxmBv1MwrpqSfwOssXKA3gDNRmViEBKoEEqjzkEAT4jIgng9uQFUNxomIYqwPje220VdVkP7QshYRL8Z2GzztrCnQU7NGpudXirHdpsqR3/welIv4UrF28/ISz9DJbwpzHsYgv1HQrYPGoG718/MHFMyuFcH92NY+x7OSLTQHkbudhbPxU0xFtUzB65uMlWGLnKkS4xVHzKzBs3LmcexkUQKtZZGZWIQEqgQSqPOQQBNCzxVVNy6X4750MTR7m0tIzBToukkoKAQmB/hPOQNwDYSrUgr0VdEyBKQfZWyTNOcFYCgXpj+Tm6oxF65cD4RKWT2w2BdeXs1AIAdw72eigK0VwEr2G+TKaurbKNTjp7j4nvFb7sVIxibiqJzZI7oLRMy8jVwxSmeTB+dZ5C18Dv89IjKxCAlUCSRQ5yGBJkYFFjLWkeG+xabgEGMnkdEREmjOMF5xO5aG02ImbVOL/0wBhEDr3VjRwhrLkO/j9bkcbr2tcOGyeBLAZ+ahtIlXWOEWP/48IHvewevB0m49iKU3WMsKuD8SeY5MW3bkKvNn45xYWIk1XaQwuVkomrxGyHoqY4fwaNRM4Ak8Xtt+diwqhJCDjUjNB3JCKg1lEk77zYS50SnQxFeyjavXFBRqcMPrbVJW+E1vs7Kir6vc8RsKd7zZ61V5ul23KacoEdsv0O3i2eRpTGZsvbgLXo/HWUig4skhY+X8hjgw3OgmWp8mBDobc6Saivn9M6/C1gkNl4ua7GbxEHKUocNpo8WzAf+abF5bdT2yQt6Ss3VmA85CzJMFHJJz8+Xj145BYnj3+Ckkl8fgQa7iLBjDwp8UzzIjZlhbqez5WSmPWmc3ppwjMZmEc9ObBCGBJrMSQRBKiLp3sV+gl+BqZWtE3e88RojuTKJ6Zgq0RKaowjbWgExjS8qFQPNh6HAPZoh643am5+UfFh2JykRVbyJW+8MKuP2bFWOE1aaJW8BJZmemC6Ks/SgyWpiOyZvqo5jYZQqRz8sZyBblZoacWRA1w17LwqBiD3KlMIMd6YG0lXp0JuGQQAmij9LjAtWzUcMeFXXNQDYaeH2yhoUEKtuF2Cou0BrZk5KJGup85nO5OuTMOVF7FckaUHEDhUwfgmuMHQDyqo5FPD+5vp9XDccGGMtB+WxBuWjI2Y+ZxmJ+D/+RuNvfwbpKwdgHo4DHvSI0Au/JmEOYEDVTjUGHdKa/lp4mdiL4DLR5z0C8Fp1JOP6OhPF1CjTxlWyj8aaCQg18Xu91ZYV3eFuVFd2ucsd9Cne81etVebq125RTIPJa74F34Wdibbt7oDBiOfZ44RbKNgW6UCYQAt0v6pqCfVygDcg2ZrwYxNg15OgHsJUVo7EOY0T0O2N5rW/A9As8eNsXrPu9Ie7Gfeikg2e6wFw4DxuYf7Cb11G7SrErHbn7jbwmmS9P7RV2DZ/Rh2OfnNkgbBrWiPQCfhmdiUWoEUkJ1IjkPNSIlCCbMf0YSkVoJyoOSvUEBWr0LhICPRWsgW4Mr4Gex8NMdMGsW8Lv6ZeieqfRlZSf8LtnZSLtLGMjTb9xnsRqpg9C2NkYLEDcw0/k/0Rts4sUvFZbFvw5y2C8i7laLAyfuRF8sf8S3IFwgR7DqOhMLEICVQIJ1HlIoAlyAdnLzRYi5CzDChGKEag3+Ax0tvEM9H05sxdP8b8rsaPE42cHsXQWTvIzrkHeI7fPxSzGpomHqwbTsImxceYTTt8Vb7hA/YNd1+Yb7UVxU1xJx+pQzfFl875+AnZFzvjSxBMEJt5LGqyHC/Q8HozOxCIkUCWQQJ2HBJoggSwMlf0mmV7AQ2+LUIxA9SLDsV630QpfKdOXYCOfnECpawpjTSjO93SIW/o0eeCrhV23Y+BHRjH1HtEbarn5XHU1locLVDz/zB4sj1ncFCuM994NPkCm+LpSvcvdFDVTYlZHXwDfngiBDtCjMrF6sEigKiCBOg8JNFGmA4OMR60LAJc8W2IEynWYtqVNv1AkuzFdcaOqlTXNRJ7oJH87A7KeWQRZIWXDMKeF30aX4BVejxwBz0u1rb767fl4xM/YjSw838L8u9wDPowQ6FGubmMmbooCvNVk0Cw3eEorax5jPB8Nn9mPjB0+1rreJR8cdAr0EtAanYk1SKBKIIE6Dwk0UTYg2NZdDYyWgViB6mVcrlncovJNpI18JgfIMB5wTgOOM9Fz06gAHgHcednAeGHX+pHBJqFJjbKINCA3A64DLEKgHYNCX2uKk+J2Z8OS6Kx0NQ/uUS6Mkr9vxMxzfLuG8H8viZlOgTYDJ6MzsQYJVAkkUOchgSbKe8BWI8RFs1QGYgUq34XPnHKmwXgX/sSzIz1jFxpdMNlmuNrkSqIjPOfsjOHpQydsM17h9O2ZWeLJHvtMjfn4sXbe6IwRz14KlWIyF8ODzydjU1yOcl/z4jx3wYo2c6PDZ86UPZQxssLo6NkpUDYCI2IysQQJVAkkUOchgRL2QwJVAgnUeUighP2QQJVAAnUeEihhPyRQJZBAnYcEStgPCVQJJFDnIYES9kMCVQIJ1HlIoIT9kECVQAJ1HhIoYT8BrzfFAe5TgQTqPCRQFZBA+ygkUCWQQJ2HBErYDwlUCSRQ5yGBEvZjPANVVToJ1HlIoCoggfZRSKBKIIE6DwmUsB8SqBJIoM5DAiXshwSqBBKo85BACfshgSqBBOo8JFDCfkigSiCBOg8JNBH2Bcdhq4MxZgdjj6GsmxUOGt8DTYIT5cUD8yavSLH3T23laE9RxUVjpnlJ/oDhyzp/3r3mh0gjkwXHhc8a+3xznEwsQQJVAgnUeUigidAAc9jMbcCTMhDwYAtbhKIuVkhWoP4yrrAhbsCzK5XtPDIAyHHBLT95fzWfZwc8HDyx9SlBgUYkGw1XGsclHFoXs9QaJFAlkECdp38J9Nbp7Vs7SSLDYXhRTmcCGfIT8heBWhsFuhxZ29pYoG5OaMgOK7QOwtPXWesKuC8yMQzSmDr9QkFwjLjApuCn8COTmV+k15v25chBmSOXWoMEqgQSqPP0K4H+6gtaOElkOAdTxSQwyFWEEyK0C1kBdnjV5i7SJynQdhfekQF9FmYns2Iku5EvD+hsVIiBODN+x8TYxW4xytI7lQUICjQiWdiQHgflg4rIpdYggSqBBOo8/Umg2zXNqkB3I0uMRXQe41aiSkTMx7Tu0icp0DMYYg51dBrFyawYya+wWk5rRM34ZUyXM2Owl4ntRUigEcnCBHoDOBO91BokUCWQQJ2nPwn0Z5o24vVz50MkkeFlQDwf3ICqGowTEcVYHxpUbqOvqiD9oWUtIl4MKjd42llToKdmjUzPrxSDyk2VQ875PcZw7qVi7eblJZ6hk98U5jyMQX6joFsH35LT+vn5Awpmy2Hf9mNb+xzPSrbQHFzudhbOxk8xFdUyBa98MlaGLXKmCov539/X1tZmmQKNSBYp0NropdYggSqBBOo8/UmgX9FGWc1Qz5X1uKk47ksXY8K3uYTETIGum4SCQmBygP+UMwDXQLgqpUBfFS1DQPpRxjZJc14AhnJh+jO5qRpz4cr1QKiU1QOLfeHl1QwEcgD3fiYK2FoBrGS/Qa6spr6NQj1+iovvGb/lXoxkbCKOypk9oe4C2aZAI5JF3MLn3I5eag0SqBJIoM7TnwT6gLbPco4VWMhYR4b7FpuCQ4ydREZHSKA5w3jF7VgaTouZtE0t/jMFEAKtd2NFC2ssQ76P1+dyuPW2woXL4kkAn5mH0iZeYYVb/PjzgOx5B68HS7v1IJbeYC0r4P5I5DkybdmRq8yfjXNiYSXWdJHC5GahaPIaIeupjB3Co2Z8dqgbU1iyUCNS84GczgGOQ0vD6LiVMO1SoImnt5er11WVfKvN621WVvgt701lRbeq3PF2hTt+k/+XqazwNm+rTTn5I6/1+AL9nma9Z8528WzyNCYztl7cEq/H4ywkUPHkkLFy7GSB4UY30fo0IdDZmCPVVMxvpnkVtk5ouFzUZDeLlqJRhg6njRbPBvxrsnlt1fXICmOs9nVmA85CzJMFHJJz8+Xj145BwoPxU0guj8GDXMVZMMajPxl6lhkpUDNZWDemnCOxS8Pgp0riCIEmk54gCHVE3bvEF+hjWl73luyGS3C1sjWi7nceI0R3JlE9MwVaIlNUYRtrQKaxJeVCoPkwdLgHM0S9cTvT8/IPi15FZaKqNxGrw7V/+zcrxoh2nmniFnCS2ZnpgihrP4qMFqZj8qb6KCZ2mULk83IGskW5mSGBFpiLwgUaShbqSA+krdRjloZBAiWIPkpCAr3+J1ploEtFdo+ejRr2qKhrBrLRwOuTNSwkUNkuxFZxgdbInpRM1FDnM5/L1SFnzonaq0jWgIobKGT6EFxj7ACQV3Us4vnJ9f2lwFi+iTkony0oFw05+zHTWMzv4T8Sd/s7WFcpGPtgFPC4V4RG4D0ZcwgTzGVhAu1MFnoG2rxnIF6LWRqGry1hWqVAE09vL1evqyqZ77j3mrLC27w3lBV9U+WOtyrc8Rter7rTrcV706acOiKv9S56KH3wDe3HEmnpeQAAIABJREFUkxYtCdKlLeMxE2vb3QNFOeXY44VbKNsU6EKZQAh0v6hrCvZxgTYg25jxYhBj15CjH8BWVozGOowR0e+M5bW+AdMv8OBtX7Du94a4G/ehkw6e6QJz4TxsYP7Bbl5H7SrFrnTk7jfymmS+PLU3ZNdOgYYlC2tEegG/jFlqDWpEUgI1IjlPf2pE0idZ7gcqnltOP4ZSEdqJioNGrc4UqNG7SAj0VLAGujG8BnoeDzPRH7NuCb+nX4rqnUZXUn7C756VibSzjI00Zcd5EquZPghhZ2OwAHEPP5H/Ez7sIgWv1ZYFf84yGE98V4dWDwk0PFmYQI9hVMxSa5BAlUACdZ7+JNDnrXekFw8bs5ebLUTIWYYVIhQjUG/wGehs4xno+3JmL57if1diR4nHzw5i6Syc5Gdcg7xHbp+LWYxNEw9XDaZhE2PjzCecvivecIH6B7uuzTfai+KmuJKO1aGa48tmzXMCgq/XBwUakSxMoOfxYMxSa5BAlUACdZ7+JNAfax9/6lxre4iksgxkYShk33u9gIfeFqEYgepFhmO9bqMVvlKmL8FGPjmBUtcUxppQnO/pELf0afLAVwu7bsfAj4xi6j2iN9Ry87nqaiwPF6h4/pk9WB6zuClWBN97F3yATPF1pXqXu8mMCQo0IlmEQAfo0UutQQJVAgnUefqTQD+lPZFCntOBQUYT1ALAJc+WGIFyHaZtadMvFMluTFfcqGplTTORJzrJ386ArGcWQVZI2TDMaWHsUgle4fXIEfC8VNvqq9+ej0f8jN3IwvMtzL/LPeDDCIEe5eo2ZuKmKMBbTQbNcoOntLLmMaHnoyGBRibrFOgloDV6qTVIoEoggTpPfxLoZ7TqFPLcgGBrTDUwWgZiBaqXcblmcYvKN5E28pkcIMN4wDkNOM5Ez03j4eQRwJ2XDYwXdq0fGWwSmtQoi0gDcjPgOsAiBNoxKPS1pjgpbnc2LImeS1fz4B7lwqjQ72sKNCpZp0CbgZPRS61BAlUCCdR5+pNA/1bblEKe7wHmB/C4aJbKQKxA5bvwmVPONBjvwp94dqRn7EKjPybbDFebXMmsCJ6dMTx96IRtxiucvj0zSzzZY5+pMR8/1s4bnTHi2UuhUkzmYnjw+WRsistR7mtenOcuWNEWWtkU6OWuBMpGYERMJpYggSqBBOo8/Umgz2kZqbaOEAlBAlUCCdR5+pNAAwO0R9WdYv0JEqgSSKDO058Eumn9D7RvZz/2RJCeKZsggSqCBOo8/UmgWir9QIkkIIEqgQTqPP1JoH8QRc+UTZBAFUECdZ7+JFDCKUigSiCBOg8JlLCfgNeb4gD3qUACdR4SqArUCPQ29WXqaUigSiCBOk8/E+i2Id/+pNbBdj/f1FUKwgZIoEoggTpPvxJo+0DZ+t7BFmgPvNAzJRMC+QxUWekkUOchgarA6e+B5mjaV7OEQF/kGi3vmaIJRgJVBAnUefqTQKs1zX2DCYGyd3+qfeL9nimbIIEqggTqPP1JoNna128yQ6Ds5re1oriJCBsggSqBBOo8/Umg39PEWMSGQNkM7ac9UzZBAlUECdR5+pNAH9BWs5BA12uf65myCRKoIkigztOfBPp5TXzG0xTo/LtNoPsA49qrgzEuCGOPoaybFQ4a3xxNkHrgXDBcjUyfhS1MHBKoEkigztOfBPoTbTgLCdSt/VXPlG2VBphDc24DnpSBgAdb2CJ09aw2OYGy8WL0JIMKMZBdbMZr1ieTX3eQQJVAAnWe/iTQX2r3/TYo0Jc0bXLPlG2ZYXhRTmcCGbKCeBGotU+gm1BgvoJ1O1OM7BmbMbKS2t5uIIEqgQTqPP1JoNe+rH3jtQAXqH6x8F7tU1d6pmzLzMFUMQkMchXhhAjtQlaAHV61uYv0SQrUC2NQUTH+u4cLOjZjEmjKkEBVQAK1my7eRKr+pKZ9WdN+8nlN0+6x7X7VLnYjS1QRz2PcSlSJiPmY1l36JAXKHsVKI7AYFXETkEBThgSqAhKo3XT1LvypnwY/pvyn+3qm5BS4DNQxMfpnVQ3GiYhirA8NXLfRV1WQ/tCyFhEvBq4bPO2sKdBTs0am51eKgeumymHt/B5jyPhSsXbz8hLP0Mlvynv3bSiUU/1BvMmCI9F1JnhajCOXLpYffDxvQP7Ut1L45goJVAkkUOfpXwJl+ptP/OJvf/zPo7f6e6bgVNBzsZcJDR73pYtx59tcOBsS6LpJKCgEJgf46TIDcA2Eq1IK9FWuvSHcfEfFU05hzgvAUO4+fyZqWWMuXLkeQNa2r7l4DOccBorzTWYclmBbJdyVYgz5KmBgnhvYYn1XSKBKIIE6Tz8T6F1NBRYy1pHhvsWmiFaek8joCAk0ZxiX37E0nBYzaZta/GcKIARa78aKFtZYhnwf+wA53Jxb4cJl8SSAz8xDaROvsMItT7ApxpOBF4waqsw4IoFxC18Pd7XOfC8hN6oKqieOXwg0ifT20tiqrOgOLlBlhevedmVF+7hAlRXuV7jj7Vygygrv8PrsyiryWo8v0GefDXTOXHp2pT3as4/tKGbsNCYzth6LxR/x4pQpUJwRKcqxkwWGG91E69OEQGdjjpjRi3mFkVdh64SGy0VNdjNmMzbK6Ps5bbR4NsB24yFxnEbiDRbMOCKBIdD9YkWe42BEVSluepOACzSZ5ARBKCTq3qWrQeU6OmeOad+0rrqe4RJcrWwN1ojq4wjRnUl0azIFWiJTVGEba0CmsbflQqD5xm0524MZjFViO9Pz8g9jLmNl2M/YRKwOe1Zxw433xaPWDLm+zDgigSFQv0/G3M7C9cjNI4ESRB8laYH652ifSFZwPY2ejRr2qKhrBrLRwOuTNSwkUOPje6u4QGsw3ki+ngvU53IZ+3RO1F5FsgZU3EAh04fgGmMHgLyqY6FnNNOxirGN5utNMuOIBKFW+BtnX3/uIUQLtPVa4giBJpHcXryNyoq+5lVauLqym7zeq8oKv+ZtUlZ0o8pfvMm2HY96MzFWoGIUTk37UmhEzk9p2p+kprseYCbWtrsHCiOWY48XbvHfginQhTKBEOh+UdcU7OMCbUC2MePFIMauIUc/gK2sGI11GCOi3xkLYMD0C0ai11Gks0n4tZwxWuHDE5gCPTiGR7nGe6IFmgTUiKQEakRynv7SiBQ9Jjxnds+UnQKbMf0YSkVoJyoOYoIImQJdJBMIgZ4K1kA3htdAz+Nh/ncM6pbwe/qlqN5pNBjxi2r3rEyknZXh1nR80OxKb2OhjCMSGALdi4zFb9R1sAISaPKQQFVAArWbWIGWcjTtydIQM/b0TNGpcAHZy80WIuQswwoRihGoN/gMdLbxDNT4LvRePMX/rsSOEo+fHcTSWTjJz+oGr1jWPle8+y6YiRf3BCuwIs/IBIZAC3FUTPTBJNDkIYGqgARqNwk0It2NBLIw1HjfUi/gobdFKEagepHhWK/baIWvlOlLsJFPTqDUNYWxJhTnezrELX2a/HGrpV1lYORTonEpmHFkAilQ3S0enor3PUmgyUMCVQEJ1G7iC/Shh+7C7vMRTAcGGV2tFgAueUbGCJTbLm1Lm36hSHZjuuJGVStrmok88Rj4dgZEIz4rgqHMYZjTwtilErxi5N8+EGkDzN9b5hmRQHQCED2blvvYrV1ZZs8pS5BAlUACdZ7+JNC7nw3ATCNUDYyWgViB6mVcrlncovJNpI18JgfIMD6FNw04zicLId/qZEcAd142MD7YyFaBYGXUyDMiQS5yx8k+pwN4ho+VwrXa6n6QQJVAAnWefinQplfmbu/ZLwpb5D1gqxFqBpbKQKxA5bvwmVPONBjvwp94dqRn7MIPjdU2w9UmV4LxramzM4anD52wLbSzbwGvm0Ejz/AEh4cPGCHSTBzsmbjL/7tHhu61uh8kUCWQQJ2nfwl067BJ/O87X9c07Xtne6ZogpFAFUECdZ5+JdBHNC2NMd8PZC+mP7vLW5R6MyRQJZBAnac/CfTXmnbfI4xt0bRfnp2qaS/3TNkECVQRJFDn6U8CTdO+Ij6dka9928/Yv2n/1TNlEyRQRZBAnac/CfT7WqmYfFubwv8u1H7QM2UTJFBFkECdpz8J9JPaWv73kqaJr9Fv0j7dM2UTJFBFkECdpz8J9OvaCv73V9p9Yo9f1L7YM2UT4oz2NqsrnQTqPCRQFTgs0L+T48L/VPs3MTPhbhsXvi9BAlUCCdR5+pNAp2qf2NCxTtOW8PA7X9BsG4OSiIYEqgQSqPP0J4E2fk7T7tW0rzazmz/n07d6pmyCBKoIEqjz9CeBsl9/WdN4LZSfaXya2zNFE8xoRFJXOgnUeUigKnD8Vc4ry4p/eZpPvd/8r+fv9i8z9WZIoEoggTpP/xIo4QwkUCWQQJ2nPwlUjxtL2A8JVAkkUOfpTwL9wdN1PVMcEQUJVAkkUOfpTwLVtHv+cbn1cSqIhCGBKoEE6jz9SaA/Fl+xe2DQ9mQL3QcYV0UdjOGIGHvMHFw9PgeNTx0nyXuh3Bkbig/ZGoSRHZZQn7i0u3xmI+UOWv6il1JanwSqBBKo8/QngbKzT35XOPQrY44m9Ti0ATAGzNgGPCkDAQ+2sEUo6mIFywL1eM2wEOhLaQLAJSY5YQn3pjd2l48NAmX7M+pTWZ0EqgQSqPP0K4HyytuRR74mHPo/yi4lkd0wvCinM4EMOfjFRaC2JwSKp82wEKhBQYwOW7N/1W0+dgg08NBTd07UzeokUBWQQJ2nnwlUFPrasM8Lh/58WcIvy8zBVDEJDHIV4YQI7UJWgB1etbmL9FYFOjjdrOp2K9Ct+KDbfOwQKFuPj1JYmwSqBBKo8/Q/gXLaN7rl49CsbYGEstuNLHHPfx7jVqJKRMzHtO7SWxVo0RoUGuO/dSNQ/eHi7vOxRaANeD6FtUmgSiCBOk9/FKhvR8EfaAY/eiOR7C4DogPUBlTVYJyIKMb60HiZG31VBekPLWsR8WK8zMHTzpoCPTVrZHp+pTDhVDmapt+DchFfKtZuXl7iGTr5zbCHsVygvkI5rHu3Aj0D8VVTXkVcL2elLiO2whBoYyGe16M2r9stiko6ISuFMaNIoEoggTpPvxNo26YceQf/1Yc3jf6Spt3/ZgLZ6bkQI/xOxXFfuoufJ20unA0JdN0kFBQCk3llNjADcA2Eq1IK9FUAQ4D0o4xtkp66AAzlwvRnopY15sKV64FpQQkXKDuGdNl6041AV+OkmEQJNGwrZMz1kVioRy3ofosik7LleDeBI9MFJFAlkECdp38J9MZaz6elPUfuF6/C35r1gPbzRPKrwELGOjLct9gUHGLsJDI6QgLNGVbL2LE0nBYzaZta/GcKIARa78aKFtZYhnwf+wA5unh46cJl8SSAz8xDaROvsMLd+dMLgbIyTBOV0m4E+qgc+T1aoGFbIWJax2KW8GDEgu63KCKpeAwRPehe67XE4QJNIrXNeBsVlq20cHVlN3m9V5UVfs3bpKzoRpW/eJNtO+5LRKBVrvuFPb9m2FMyTPtsIgLdjmLGTmOy8NZi8edxFhIozogU5djJAsONjpz1aUKgszFHzOjF2CKqsHVCw+WiJrsZsxkbBTG+HZs2uvPlKClQ70Bh6G4E2uE22v6jBNq5FSLm1mTMkPsYtaC7LYpIyncCpVEH4aY3CQYPTiY1QRAqibp36epNJG7PUQfCP8M0Xfthl9YM4xJcrWyNeD55HiNEd6YXWUigJTJFFbaxBmQa21EuBJrPb4sFezCDsUpsZ3pe/mHMFZXM/YxNxOroz0FJgbINyG/vTqBePCanUQLt3AoeU12KbOO/lIgF3W9RRFJeO8fIqO0jgRJEHyUxgUbZk3Ngwc64SaPQs1HDHhU1tEA2GnjtrYaFBCpbYdgqrp0ajGem3OYzn8tltMKcE7VXkawBFTdQyPQhuMYLBvKqjkU8PTEE2jESK7sT6HnzHagogXZuBY/JB7BPRoQvuMMWReTBdzk9/OUnGZM4fi7QJJLbTGOrsqI7vN4bygrXve3KivZ5vTeVFe5XuOPtXq/K081nV1aR13p8gf7a+idAZ2Jtu3ug8E859njhbmchgS4MaWe/qNkJ9nGBNgTfvvRiEGPXkKMfwFZWjMY6jBHR74zllhsw/UJnGYZA2Um467oRaA0q5TQo0FmGQDu3ggsU5WuRK+UcvuAOWxSRByfHZf3rVdSIpARqRHKe/tWIZJnNmH7MeCi4ExUHMUGETIEukgmEdk4Fa6Abw2ug5/Ew/zsGdUv4HfRSVO80upLy0333rEyknQ2VYQqUC/BxvWuBXoiqgZYaAu3cCr7+tA5fIZaHtpFF1UDjb1FEHpyM6BpoEpBAlUACdZ7+KNCOc++2JJnhBWQvN1uIkLMMK0QoRqDe4DPQ2cYz0PflzF6ItyJXYkeJx88OYuks0Q3pdoN86719LmaFyggKtCkLB7oW6NXQM9B1YqIXxhEoj3kb7o9Y1IJutyhaoLHPQJOABKoEEqjz9BuB3tq7yGhCuVJwn6Z9Ii25Xo6BLAzFeRHSC3jobRGKEaheZDjW6zZa4eW9tl6CjXxyAqWuKVyOKM73dIgb6DR52KvR+c55UKBsK4Zm3bEVfiMWiEkN4guUTUepHrOgmy2KFmi98fqqNUigSiCBOk8/Eag+74uaJtuLLn/LeAfpgYRaj0JMBwYZ730uAFzyXIkRKNdh2pY2/UKR7MZ0xY2qVtY0E3miQfx2BuRLRkUwlDkMc3gt+FIJXgkVERKofwzQXT9Q+YO9gwx+9187LKMLgV5243DUgu63KEqgB40XnqxBAlUCCdR5+olAi4QzhTL1f9C0+wY+/Lea9tkP46zYJRuAmUaoGhgtA7EC1cu4XLO4ReWbSBv5TA6QYXwfZBpwnE8WwvDTEcCdlw2M7+zBGhKo/C7Tnd5Euj0GrpGFKFndhUBZFYb7oqzY7RZFCXQFvYlkARKoCkigdhMt0Jc17dNP/1q8wXNY0z71Dp/+6mPa8GRy5E7baoSaAeN7xrECle/CZ04502C8C3/i2ZGesQtNE26GfINoP3BFzp+dMTx96IRtvvAiQp/HW9iNQN81X5e/vrRwQP6y9o1dCbT9QV6HjLJid1sUlXQivQtvARKoCkigdhMlUP0vtC+fM4LDNc1othmofbqtZwrvYfSRIx0YHY++xmQJEqgKSKB2EyXQc0FrMv3b2gPGZ0Bf07RDPVN4T7MVF3u+kFfoe6BWIIGqgARqN1ECXa1p5iAYZzVtgBG6ommp1LEU0prd7ZBIthAooi/SW4EEqgISqN1ECXSW9gUzNE/TzPEw/B/XKnqm8B7nDmMi2cH+dBoTyQokUBWQQO0mSqBPad8zQ/+paUZncnbrHm1mzxTe49xhVE4boFE5LUICVQEJ1G6iBLpAe8Dow3nr09p3zbh3NW1xzxROkEDVQAJ1nn4h0N2a9hsZ2KRpD5tx6zTttZ4pnOBntDfhEfvshwTqPCRQFTgl0BsPaP8huv7o/6ppm4yowN9o913vmcIJEqgaSKDO0y8Eygo1bcg1FijTtD8wDrX+tKZl9UzZBAlUESRQ5+kfAv391zTtnu//oaZpT/I5/cruX2ja/Sm8qkh0Dz0DVQIJ1Hn6h0DZu98xPiHyL6LA8yJ076qeKZpgJFBFkECdp58IlLXO+Yevfe3vfyXf7xYC/dG+nimZEJBAlUACdZ7+ItBwGibMPhromYIJCQlUCSRQ5+mPAiV6GhKoEkigzkMCJeyHBKoEEqjzkEBTZx9gXDV1MMb0YOwxc+i3+Bw0vheaBCfKiwfmTV6RYt+g2srRnqKKi8ZM85L8AcOXdf74e80PlUYlswQJVAkkUOchgaZOA2B8430b8KQMBDzYwhZ1fiA5imQF6i8DMMQNeHalsp1HBgA5LrjlB5Ov5vPsgIeDp70+JSjQiGTWIIEqgQTqPCRQGxiGF+V0JpAhPzF/Eai1UaDLkbWtjQXq/h977wId1XXf+58kTeIkvX3c9N8mbfpvc3ObrHv7v017mzbrJv/e/72rq1m3Sb8zg8RIQkiyhADLQkLhYSAYI1GDoggJARYYOwuEDME2GGHeLwdRGRMwYItXBEUKRjYoykHvF4Nmzv7vvc/MaB4SloYzZyPm91kLnb3P7DO/eZz5sF/n7DV4mHU2BtLw4x42UAPXTSYWeSpqNZpzsdZ80LcncKv88GKxQQJVAgnUfkigFrDGXMHSl+bIw0WROoJUHzuzbe8Y5Sco0CEHzsmEUYHK2F/lUeTIj7sS5Yx9gORf83QLXOLWeOeqchEQaFixGCGBKoEEaj8kUAs4ilRxqf0NzN+KWrFjPUoeVH6CAr2K6f5FPK6gIMaXyHkJ2+W2UdSMX8cKmSnCcSZeL4ICDSsWIyRQJZBA7YcEagG3gVYmVu6sbcR8saMAu4KLztV5anOTntrcL/aLReemlTT5BXq5Ij8pp0os8bZcLuTmdaNM7C8WR3dvKXRnLnlHmPMM0rxmoHunzBXm2tbnTMmtlOvc1+PA0Br3VlbtXxPufiqaRi+xHA2yBK98MlaKfTJTC3FTv9+0tLSk+gUaVixGSKBKIIHaDwnUAowsWY9bjvc9SWLN+EGHkJhfoDsXIXcWsMTHv+iVgGMqHFVSoG+KkSEg6Txje6Q5m4FMLkxvClpYRxYcWW4IlbI2YKMnNF7jVCADcNUzEWB/ObCVvYcsWU19F7OM0UvcvGZ+08eRz9gzOC8zx4LTBdL9Ag0rFiMkUCWQQO2HBGoF5ahmbDjZdY8tw2nGLiF5OCjQjBm8HnjBiSsi49zT772aCyHQNhdq+llHKXI8vLaXYYjV4hy4LXoCeGYdijt5hRUucWqsA9LXnQrefe/ek9jUy/pr4PpIPGe+c/PZu8ybDrnwaJVY9XjUEn76Zokhr9mynsrYaSz2708PTmMKKRaKZ3DcDHCBjr+01dztURZ6QNe7lAUf1HuVhe5T+cYHFL7xXl1Xd7r1630WPVPEGuajC/TVUHYfOdsZmy1H4aDom7yCJYztEk3iXVjKggLFVVGiDIeZb6Y5TbTNKQRaiTUiYxTwxjSvwrYKDZeJmuxeMVI0x9RhyVzRN+Ddkc5rq44f1sgmOdvpH96pxjoZwFxddL3sfh1OEx4cvYTkdhGe5CpO9S88fynY0xkuUH+xUPhvZPxMmzaR0gRBqCSi7TK6QLVIvrrwzqgFJ8wtOAbYDlH3u4HZYjqTqLz5BVooS9TiAGtHivk6y4RAc2Dq8BhWinrjQWZk55wRs4pKUS+a2Nu9IQHuv1dTJMZ5SkQDcZF/MlOziFWPPHOE6YJscp/HM2OWEM/zejLSRdyUoEBz/Q+FCjRYLBQSKEE8poxLoF/84m+PyPM/fF7+PfxxbhwXRjoa2WJR1/Slo53XJxtZUKByXIht4wJtxAKz+C4uUI/DYVabr4vaqyjWjvJezGLGdHQxdhLIrr0Q1rvSU18MzPMxloGySkGZGOaph39tPN6G/0i09g+xsUow9sEcYKkuUrNxTe45jYX+x0IEOlIslOF742aIC3T8pa3mbo+y0IO63q0s+D29T1noAZVvfEjhG+fVil5lwQf1AYueyRv+Wx+jD/SXf6H9x0WvvnN2Z/GXtG93dLw3/3Pa5z4cjyA/llV4bcg1VRixDMd0uITQ/QKtlgWEQOtFXVNwggu0HelmRkcaY13IME5iPytARyuKxO5z83iFc8qKZp687wnUIN8WrXEPRhjmT/qC/8F12M2801y8jjpWiSNJyKo3n2uR/+Kp40G7jgg0pFiM0CCSEmgQyX4SaRBJ/4qW4X+z9/K07/LYTZ/TFlgScC9WXECxSB1G+SmzVucXqDm7SAj0cqAGWhdaA70Bsc5dEVpf5G36TWg4bE4l5S/3aEUKnE2M5ftlx3kO25mRhpBzNRBAtOGf4f+ED8cowWu1pYEvuxTmlZrbg4cHBRpaLEZIoEoggdpPIgl0gfat4Gyg4e9oVXxTqv21JQGbkb7FP0KEjM2oEakogeqBPtBKsw/UXKH+OJ7nf7fiUKHby05hUwUu8fOxXbagh9aigrES0blqUoI9jM3393B67uihAvVOc3StN8eLRi1xJwnbg/XK1/01z4UIXF4fEGhYsRghgSqBBGo/iSTQr2rPj2R+on2T/31b+z1LAvpSkYkbImXk8tS7IhUlUCPPdKzuMkfhq2T5QtTxzUUUO5Yx1omCHPewaNI75dfSIOx6EFM/MsO0ucVsqC3+ftXt2BIqUNH/mT5NfqKjlqgJXPcu+AAp4tZObQ5XYC5CQKBhxWL9OEigKiCB2k8iCfQzWsg6SK9qn+d/W7VPWxNxBZBm3uX+BcAhz6UogXIdOvcNGs15chrTHRdqB1jnKmSLavH9ZMh6Zh5khZTNwJp+xm4V4g1ej5wN96stA562gzn4oZex3lT8tJ95j7imfBgm0PNc3WZm1BK5+EWnSbd8wcsGWHdRsH80KNDwYrFBAlUCCdR+Ekmgfxja4fmM9kX+97z259ZE3I3AaEwDMFcmogVqlHK5pnKLyiuR6ngmA0g2OzhLgPeZmLlpdk6eBVzZ6cACYde2/MCQ0KIOGcIJZCXDcZKFCXQ4LXi3plFK3B8ZWBIzl+5mwzXHgTnBb98v0IhisUECVQIJ1H4SSaAO7UvBMfc7X9b+iW+e0/63NRGvAfvNVDewSSaiBSqvhU9ZdrXdvBb+4up897xq/0vaC8egPMhfEWxaOTMpc+EBs9PWc2xVoTt93k8a/Z2TLevmJs9efSsYxc9azAz0XkaXuB1hxu6N2a7cmsHgwX6BRhaLCRKoEkig9pNIAj2iaX9l3oyDvfs3mrabeV/7jLZh1KLEQ0ECVQIJ1H4SSaBstqZp/yPvx2VPf5cnphlsuqZ9Rd059xhDAlUCCdR+Ekqgvmc/FbwSKZ+HTta+fiM+LyDBIYEqgQRqPwklUMau/fAbwp5/OkPezG3LG+q+9McaEqgSSKD2k2AC5fQs3SZVAAAgAElEQVTfaumKT1QiAAlUCSRQ+0k8gRLxhwSqBBKo/SSWQI2WI4dHiE9sQpzR+kMuYf8wkEDthwSqArsF+s5Xw24HGp/YBAlUESRQ+0kkgbZ8RiOB2gIJVAkkUPtJJIFmaZrj4NWmIPGJTcg+UBKo/ZBA7SeRBPoN7QcPe582YlyQQJVAArWfRBLoZ7U34xOOiIAEqgQSqP0kkkC/pL0dn3BEBCRQJZBA7SeRBOrU1sUnHBEBCVQJJFD7SSSB/tsnvmbdUvDEAyCBKoEEaj+JJFC2Vvsf71vy/CcA83fSCnOVDsZ+hNIHHHDKvAPoxLlYVjA1e0mNNTpqqZrrziu/aWa6X8yZMnPzwCiZzuoCd9HLD/N7IIEqgQRqP4kk0D17ntK0784oft5P7M/fDv9CmQeA52TC58Y+tgF5YxwQo0C9pQCmuwD3kY8v/LGcnQJkOOCSt7y/m8OfFXi6LyrTlAakA5mtsUcigSqBBGo/iSRQTbNsIv0M/ExuVwHJ8qbxN4EW6wW6BakHBpmvdU1wrY6HYCANP+5hAzVw3WRiTaSiVqM511xBLjTjyUN5D7tbjIW+mEORQJVAArWfRBLoFyJ4iABrsFxsfGmOPFwUqSNI9bEz2/aOUT42gQ45cE4mjApUxvQ6QzmKHPlxV6JcrMqZ/GueboGrIyJzAbmiWF+qf9nlWCCBKoEEaj+JJFALOYpUMSf/BuZvRa3YsR4lDyofm0CvYrp/5v8VFMRwfDgvYbvcNop68utYITNFOB6RecPv6mfx85hDkUCVQAK1HxJoTNwGRBfhbtQ2Yr7YUYBdwWXk6jy1uUlPbe4X+8UyctNKmvwCvVyRn5RTJZaRWy4XmfO6zQXci8XR3VsK3ZlL3gm5WOoM0rxm6t4pczGntvU5U3IrW0SyHgeG1ri3smr/qnL3U9E0egk/y9Egt7y+yVgp9slMLTZGZHZgtcwsRey3qyKBKoEEaj8k0JgwskRljTvpfU+SWAV+0CHs5RfozkXInQUs8fGvdiXgmApHlRTom2JICEg6z9geac5mIJML05uCFtaRBUeWG0KlAdqAjZ7QsI1TgQzAVc9EnP3lwFb2HrKkc9/FLGP0En5uXjO/6ePIZ+wZyHvys2Ni8kBY5l1kiaU6O92IfbkTEqgSSKD2QwKNjXJUMzac7LrHluE0Y5eQPBwUaMYMXgG84MQVkXHu6fdezYUQaJsLNf2soxQ5Hl4NzOC62w8HboueAJ5Zh+JOXmGFK+RkWAekrzvVE8jeexKbell/DVwfiafOd24+e5d503FdPFiFHWOUCKdvlhgAmw3zXiqnsTgi43sWS1uGmuahPOLGAd7hcePRp3WNv7TVdPQpC+3R9R5lwYf1AWWhh1S+cY/CNz7A/+dQFtyjD1n0TBEDxlEC/eY3v6mz5yOI2Z6cg6JT8gqWMLZLtHt3YSkLChRXRYky3gT2zTSnibY5hUArsUZkjALeYuZV2Fah4TJRk90ruh3nmB4smRsyfci7I51XWh0/rJFNcrZTDP9wqrFOxjktc+tlL+xwmljXffQSodwuwpPcyKkw16O/JDpEwzJssFiuCl8V+Z9bnz4Bpk2kMEEQSolou0QJVNO0NiunMbFbcAywHaLSdwOzxXQmMa3JL9BCWaIWB1g7UsxXViYEmgPTg8ewUlQYDzIjO+eMmDpUinrRjt7ujY5z/72aIqGzEtEyXOSfzNQsQtYjz6wiXhBNcnYez4xZIuTpXk9GungVKUFn5kZk2FupSCtwI+tsxLEkUIJ4TBmXQC2cxsSMdDSyxaKu6UtHO69PNrKgQOW4ENvGBdqIBWbxXVygHodjWGaui9qrKNaO8l7MYsZ0dDF2EsiuvTBaf0pPPa8TzuOV7AyUVQrKxDBQPVaZD/M2/EeitX+IjVUiyAdzgKW6SM3GNbnnNBZGZBqQdtpgxltJzsbwg4f6xk2vPq1j/KWt5m6XstC9ut6pLHif3q0sdI/KN96r8I1367rK063HomeKaG5GCfTtt9/2RO57OFbhtSHXVGHEMhzT4RIK9wu0WhYQAq0XdU3BCS7QdqSbGR1pjHUhwziJ/awAHa0oErvPzeM1zSkrmkdi3PcEapBvi9a4ByMM8+d+wf/gOuxm3mkuXkcdq4SfI0nIqjefcpH/UqrjQrKhGWMmTsjMbmHTGKFBJCXQIJL90CBSjOzFigsoFqnDKD9lysYvUHNakRDo5UANtC60BnoDTzMx6bL1Rd6m34SGw+ZUUv4DOFqRAufInfLz/WLjPIftzEhDyEkaiCPa8M/wf6K2OVYJE17HLQ182aVyGhVj20WZ0Exv4DL/W3DFfCkSCVQJJFD7SSSBrl4dYoRbq7eOWmi8NCN9i3+ECBmbUSNSUQLVA32glWYfqHltz3GI8autOFTo9rJT2FSBS/wMbJdN66G1qAjGKBF9rIHkHsbm+3s4PXf0UD16pzm61pvjRWOUkNxJwvZgn+jr/ub9QhwJz3icoj+BieuSpsV8/34SqBJIoPaTSALVtOGRzAXtTx4qhC8VmeZMSSOXp94VqSiBGnmmY3WXOQpfJcsXoo5vLqLYsYyxThTkuIdFk94pv4gGjMwOOIipH5mpNreYFLXF3726HVvC9LgOh9KnyY9yrBKCGvO6d5MPkCIU1+ZwdUZkCv3V0VewLPYPhwSqAhKo/SSqQL1rtM88XIwVQJpZo30BcMizJ0qgXIfOfYNGc56cxnTHhdoB1rkK2aI/9n4yZAUzD6YyZ2BNP68YF+KNYAjPbLhfbRnwtB3MwQ+9jPWm4qf9zHvENeXDMD2e5wY3M2OVEOTiF50m3fLlLxtg3UVmN2loph7JhzxsYJdjpP9gwpBAlUACtZ9EEegXOZr2H78Y4POa9tWHi7EbgUHuBmCuTEQL1Cjlck3lFpVXItXxTAaQbJqpBBB3J62GWeU7C7iy04EFIaNdbfmBIaFFHTKSE8hKhuMkC9PjcFrwbk1jlODcHxlfEpOV7mbDNceBOfLbD8u8zF/ldP7v1dg/GxKoEkig9pMoAo2cA8p5yPsbXQP2m6luYJNMRAtUXgufsuxqu3kt/MXV+e551eakS7YXjkF5kJgBz2laOTMpc+GBsNkCnmOrCt3p837S6O+ObFk3N3n26lvBYH7WYmagv3KMEvLy/VCBsu6N2a7cmkH/WwjNXC19Kjm/vOUhPhsSqBJIoPaTKAIt5mjac8VBVh6LT2iCkUAVQQK1n0QRqNwbOohExBESqBJIoPaTSAJ96qlRrpUk4gAJVAkkUPtJJIGGoTtjv9CG+BhIoEoggdpPwgp0p/bF+MQmSKCKIIHaT0IJdLjiX77h52ua9qX4xCZIoIoggdpPIgnU+3/CpjGti09sQpzROgnUfkig9pNIAq3TtD/JmqJp339q+lc07SHmiRMfAwlUCSRQ+0kkgX5f+7O7jD2pFfOPvFD7fsy3yiA+DhKoEkig9pNIAv26JpYefk37Hv9rfEs7Hp/YBAlUESRQ+0kkgX5eEzfv+FD7M5F5RcuIT2yCBpEUQQK1n0QS6O9Igfqe+IRYsb3R9CgRD0igSiCB2k8iCfS/aivE5i+1U/zvLe2z8YlNkEAVQQK1n0QS6FTtK2KR9CTtWf73hPaV+MQmSKCKIIHaTyIJtEHT/u/nGNug/f4VNvCP2v+OT2yCBKoIEqj9JJJAjWS5GPzd39U+9V9+R9Nei09sggSqCBKo/SSSQJln9XdEx+frnxIXIqXEvOakfZwILJHZCnNxJcZ+hNIHHHDKvHFzLBz339eZse4Xc6bM3PwwpwUJVAkkUPtJKIFy5P3e38/7p9wdk2EefTv8CxMdAJ6TCZ8b+9gG5I1xQOwCNZYFBHo3B3ADTz/ED4IEqgQSqP0kmkAnGTPwM7ldBSRL998EWuIhUN+ewMoibAWKWo3m3NA1PCf8bCRQFZBA7SeRBPrCC4fiEy5+rMFysfGlOfJwUaSOINXHzmzbO0b5GAV6rioXAYF+gORfM7EsvKsjlqeSkECVQAK1n0QS6Ke078YnXPw4ilTR1XAD87eiVuxYj5IHlY9RoOvlWnOmQF+HnC3LihD7ta4kUCWQQO0nkQT637Q/ik+4+HEbaGViCeXaRswXOwqwK7j6Z52nNjfpqc3iuiq5+ue0kia/QC9X5CflVInVP5fLtUG9bpSJ/cXi6O4the7MJe+E9gH/pqWlJdUv0FLsk9tabIz5ZZNAlUACtZ9EEuguTWuIT7y4YWTJeuByvO9JcvAzdNCBpqBAdy5C7ixgiY+fQisBx1Q4qqRA3+TVyelA0nnG9khzNgOZXJjeFLSwjiw4stwQKg0j3S/QZ3Bebo89cLj/wZBAlUACtZ9EEiir/tSf/nwyDL6HUI5qxoaTXffYMpxm7BKSh4MCzZjRwtgFJ66IjHNPv/dqLoRA21yo6WcdpcjxsA+Qwd/xfjhwW/QE8Mw6FHfyCitcESddQKCzhaI5p7E4vEDf3fGjT9MnUNpi9ASNrfiNqwyuMLTab9yqJ4qQwegCPXx4xae1//7kkuf9WGK4OHMQBYxdwRJefxZN6l1YyoICxVVRogyHmW+mOU20zSkEWok1ImMU8MY4r8K2Cg2XiZrsXlQyNgfXxaMlc1vDIwUEmooP5fZS5FB/nz4Bpk2kMEEQSolou4y1Lnw4DyM2u7gFxwDbgR2i+jhbTGcS05r8Ai2UJWpxgLUjxfwEyoRAc3hDXXAMKxmrwkFmZOecEbOSSlEvmujbR13dOSDQlKBAc8MLUA30EY9NNVAVoROoBvqFCGIRmt0Y6Whki0Vd05eOdl6fbGRBgcpxIbaNC7QRC8ziu7hAPQ7HsMxcF7VXUawd5b2YxYzp6GLsJJBdeyG632akCX9Nbk8j9nWfqQ9UCdQHaj8J1Qc6GVmF14ZcU4URy3BMh0v8RvwCrZYFhEDrRV1TcIILtB3pZkZHGmNdyDBOYj8rQEcrisTuc/MATFnRHBEoINBF/oufjmNVzC+aBKoEEqj9kEAfcfZixQUUi9RhlJ8ya4V+gW6QBYRALwdqoHWhNdAbeJqJ+ZytL/I2/SY0HDankvIf2tGKFDibwgOlB6cxHZDb7f7njwUSqBJIoPaTgAK9P6kG4puRvsU/QoSMzagRqSiB6oE+0EqzD/RXMnMcYpxsKw4Vur3sFDZV4BJ/9+26eGxoLSrCA6UHJ9KbNc+FOBLziyaBKoEEaj8JJtAD0//0c9owO/rTzvgEth5fKjJxQ6SMXJ56V6SiBGrkmY7VXeYofJUsX4g6vrmIYscyxjpRkOMeFk16p/zCGxAxCyE9eClnipBfm8MV+2dEAlUCCdR+EkqgQ1Pl6Pswe0F74pX4RLaeFUCaeee9FwCHPEujBMp16Nw3aDTnyWlMd1yoHWCdq5At7j9yPxliEJ/lwVTmDKzpZ+xWId4Ij5M+cjORZQOsuwgvxP6aSaBKIIHaTyIJ1MjQtD9KFQL9GddoWXxCW85uBEZzGoC5MhEtUKOUyzWVW1ReiVTHMxlAsjkaVAK8zzfVMDs3zwKu7HRggSc8TlCgd7PhmuPAnIc4L0igSiCB2k8iCbRB01y9TAiU/fLvtc/8Kj6xreYasN9MdQObZCJaoPJa+JRlV9vNa+Evrs53z6s253OyvXAMyoP8hmxaOTMpc+GBCH+OCJR1b8x25dYMPsRrJoEqgQRqP4kk0HTty33MFCjr+1NtrHtqEg8NCVQJJFD7SSSBfl0T10GaAmUrtb+PT2yCBKoIEqj9JJJAn9C2s6BAd2m/E5/YBAlUESRQ+0kkgf6uJroQ/QJdTwKNHyRQJZBA7SeRBPq32kwWFKhL+2Z8YhMkUEWQQO0nkQT6r9qn/z0g0Fc1bUl8YhMkUEWQQO0nkQTa9QfaH7/l4wI1bs76lPb5O6MWIizAp+skUPshgdpPIgmUNXxO0/5A0/72dzVN+0TkkhaEdZBAlUACtZ+EEii7/PeBmyn/pxPxiUwISKBKIIHaT2IJlBnvPPvPf/c3/zh3/6g3ZScsgvpAlUACtZ8EEyhhCyRQJZBA7SfhBNrzzr7dJ38Tn7CEHxKoEkig9pNYAvXWfPsTsgv0rzYNxycyISCBKoEEaj8JJVD9uyNLcv59e3xCE4wEqggSqP0kkkCH/07TPjVt3b7D1Vm/pWnfojpo3CCBKoEEaj+JJNBNmvZ3N8xky99r2kvxif0ocLGsYGr2kprxSOxXP52Tmjxz9S+CC0VN4NgxIYEqgQRqP4kk0H/QvhS8+uj2H2n/Mz6x1eMtBTDdBbg/dlm44Y0OmCz89USPfQAkUCWQQO0nkQT6+9rckUyB9sX4xFbPFqQeGGS+1jXALx9c0vscHOuv3fN+tCsNWR9N7NgHQQJVAgnUfhJJoJ/VakYyW7TPxie2coYcOCcTRgUqH1y0NrBuEuvIxw+HJ3TsgyCBKoEEaj+JJNC/0JaPZEq0/xyf2Mq5iun+Ds0rKHhgSd2F44H0r934+USOfSAkUCWQQO0nkQS6WPur4Ac9/HdaUXxiK+cM0vwXqt479Qv+dxfM+6ZU4hdiabk6T21u0lOb+5lYj64gOHbEa6Pzoo+NERKoEkig9pNIAv3NH2tp/lNsuFD7/bb4xFZOG7AxdMnNCIHuXITcWcASH2Pz8fpIsZtw9EYdGyMkUCWQQO0nkQTK3v8z7UulJ27eeefFv9C+cKzPJD6vQCXrgPR1p3oC2QiBZsxoYeyCE1eY4cLpkaM8DjRGHRvKUO+46dGndYy/tNXc7VIWukfXO5UF79XVvfFulW+8R+9WFrtLV/ipW/fGI0Q8ukC/8Y0va9E8rK4ePbw70gE4fljTIrMRAsVVkSnDYdYPfBByWC7+LerYUPr0CTBtIoUJglBKRNtldCuOYs/HUqC8QfVeTZGY3Fki2pMRAi2UmVocYN2AHnLQPHNEKezYUEigBPGYMi6B/nRUrBDWo0hPfTEwzxcl0DKZ2cYF6nUgtJ45A2ejjg3FOzxuPPq0rvGXtpqOPmWhPbreoyz4sD6gLPSQyjfuUfjGB3Rd5ek2ZNEzRfzWH8tq5Xi57wkMrb8N0ckZEGiFKdBqmRECZXkIudyoC/go6tgYoUEkJdAgkv0k1CBSYpCPC4Hkc9g+ItBiU6AbZEYKdCOWjhy2DzlG1LExQgJVAgnUfhJJoP1vlTz5L/8rOf+VD+MT9RGhBDtGknuEQHeKtDErSqC/gv+6I053lvBs5LExQgJVAgnUfhJHoP+e//ngwNH3345P3EeCg5j6kZlqc+MKY3V4QWQaESVQVolp182ivc8gdyD62BghgSqBBGo/iSJQX8VnTHd+0twUqfvI441nNtyvtgx42g7m4Idexs4huYmxlhnJ0QIdKoJr0/Wh4dt7MpB6Y5RjY4QEqgQSqP0kiEB9mVyaX1588KN7Rtd7677FM9+LU+hHgLZ8/y3qsKiDZ+8XwZE/C4XbowXKBssCRQtujXZsjJBAlUACtZ8EEehiTfvt6mAw49Afa9rs+IR+FPAcW1XoTp/3k0ZzSL1n06wpOZuH6kYRKGPXNj6dkjTjxw2+0Y+NDRKoEkig9pMYAr34Se0Pw3r02r6maWcZESdIoEoggdpPYgjUqX0iYlLj1d/S/jk+sQkSqCJIoPaTEALt/az2ZGSRPO3To94yg7AAEqgSSKD2kxACPahpP48sclLTDsYnOEECVQMJ1H4SQqAvaVrUad2raS/HJzhBAlUDCdR+EkKgq7Qnoss8oa2KT3CCBKoGEqj9JIRAN2jaYGSRQU3bGJ/gBD+jdRKo/ZBA7SchBPrmKHOWzmla7Nd6Ew+GBKoEEqj9JIRA9U+Frghvslj7RHt8ghMkUDWQQO0nIQTK/lH7zLXwPbe/oH0nPrEJ6gNVBAnUfhJDoA2a9vXboTv6vq1pB+ITmyCBKoIEaj+JIVCWo2lfOTySvfzXmvb9h7nYm3ggJFAlkEDtJ0EE6vmepmnf+ekNIU39zeRPatpfKfyFP/aQQJVAArWfBBEoGyqUtwH93J/8+e/KxA/0UQ4jLIIEqgQSqP0kikAZq/+nkaWM//IVar/HExKoEkig9pM4AmXs3zdO++43vvqtHzz/jm/Uxyczp7A+puM6qwvcRS9HnfvHcedhXg0JVAkkUPtJJIFOfjYgb4xHYhRoUxqQDmS2hu82lpFAY4IEqgISqNWQQMeHJw/lPexuMRaG1cl9e0ACjQkSqApIoFbzuAr0zLa9YzwSm0AvIFd8A32p+NXIznNVuSCBxgYJVAUkUKt5XAU6NrEJ9A1Uyu2zCLlf6nq5phwJNBZIoCoggVrN4yHQ5XLhN68bZSJXjF3mknD1qPPU5iY9tblf7PYdmpc8raTJL9DLFflJOVUfjnow695S6M5c8k7IBIQdWC23SxFylcFvWlpaUkmgMUECVQEJ1GoeD4HukfJrBjK587wpaAkIdOci5M4Clvj4ubMScEyFo0oK9E1edZwOJJ0f7eCOLDiy3BAqDfAussR9/jrduBEeOp0EGhMkUBWQQK3m8RDoB8jg8tsPB24zdkNk/ALNmNHC2AUnroiMc0+/92ouhEDbXKjpZx2lyPGMcvA6FHfyCitcI2eb71ksbRlqmofyiHmxowl0+N64GdKndY6/tNXc7VEWelDXu5UFv6f3KQs9oPKNDyl84338v0xlwQf1AYueyRv+W388BGpkoZWxcpThOGN7RXelX6C4Kh4u4+1u30zsFuk2pxBoJdbI4wqwb5SD5+C6eLRkbsicpcFi2eFZFfkf2WgC5afK+Jk2kcIEQSglou3yeAiUVeEgM7JzzmAtY6WoDwq0UD5aiwOsHSnmWy8TAs3hDXXBMawc5eBnsN0bGeGtVKQVuJEVeb9pEihBJBCPp0DrUcYVWd6LWcyYjq6gQOW4ENvGBdqIBWbRXVygHodjWGauo2CUg08C2bUXwjpsGpB22mDGW0nOxvDIownUMzhuBngTfvylreZuj7LQvCXbpSz4oN6rLHSfyjc+oPCN9+q6utOtX++z6JmGw3/rj4lAu5BhnMR+VoCOVhSxoECr5aNCoPWirik4wQXajnQzoyNtlIPZuXm8tT5lRXPw+Y2ZOCETu7EwPDINIsUGDSKpgAaRrCZKoN/85jd19nwE8YltJUVofZE3yzeh4TBqWVCgG+SDQqCXAzXQutAa6A08PcrBHP1oRQqcTYGn7wXMn/stuMJvD0ACjQ0SqApIoFYTJVBN09qYFkF8YlvJVhwqdHvZKWyqwCU2ikD1QB9opdkHal5QdBzPRx98v13ewW9oLSoCT+9xiqY9pwXTwofhSaCxQQJVAQnUakYX6BciiE9sK7mIYscyxjpRkOMWlcsogRp55ii87jJH4atExihEXfTBXXDKb7oBI1XvQpjrmryCZeGBSaCxQQJVAQnUaqIE+vbbb3viEyqu3E8GdvBtHkzrRQmU69C5b9BozpPTmO64UDvAOlch2zPKwTOwpp+31gvxRvD565F8yMMGdjlwged27rgSeIAEGhskUBWQQK1mErTOx0cJ8D7fVMOsKkYL1CgFHKncovJKpDqeyQCSL4x28FnAlZ0OLAj5r+RlfsB0/u9VkXHjtcB+EmhskEBVQAK1msdGoHvhENda1vtv7hEtUHktfMqyq+3mtfAXV+e751V/OOrBrGnlzKTMhQfCquJXS59Kzi83p4+SQB8aEqgKSKBW89gIdJJCAlUCCdR+EkegxsU3+d+f/e0I8YlNkEAVQQK1n4QR6N6/0b7LN1Ujs5g+EZ/YBAlUESRQ+0kQgXpnc2P6BZr9L1/mmcyDnfGJTZBAFUECtZ8EEWg+V+Z3djIpUP6BH/2v2n9ui09ogpFAFUECtZ/EEOhRTfvcHpmqMi9A6v3/tG9H3ZqIsAoSqBJIoPaTGAL9n5pWb6b8AmXtv69tjE9sQpzROgnUfkig9pMQAr2taVP9yYBAWbH2nyLuwk5YBglUCSRQ+0kIgb6haSf8yaBAL2ra+/EJTpBA1UACtZ+EECi3ZvtI0kzc17RX4hOcoD5QNZBA7SchBLpS+2ygud5z86aZMJ7QfhKf4AQJVA0kUPtJCIG+pGn9kUV6NK0qPsEJEqgaSKD2kxACPaBp/xZZpF7TXovcR1gECVQJJFD7SQiBdn9GmxFZZLam/So+wQkSqBpIoPaTEAJlDu2T74bvufpb2t/EJzZBAlUECdR+EkOg731S+6Nfhu64/TVNq4tPbEs4EVjurRXmmh2M/QilDzjglHk/0AnTWV3gLno56tw/TvcDjQkSqApIoFYTdS38Yk377ReDwYy6L2navzzK8+jbAfOu8geA52TC58Y+tgF5YxwQo0Cb0oB0ILM1fLexjAQaEyRQFZBArSZKoL5cTdP++Jn9v+rp//DEyv/CM99W932Phxn4mdyuApLlLeRvAi2WC9STh/IedrcYC8NWNfbtAQk0JkigKiCBWk30/UB96z4XtqTxrKh5TY8Wa7BcbHxpjjxcFKkjSPWxM9v2jlE+NoFeQK74BvpSETKgdq4qFyTQ2CCBqoAEajWj3ZH+5rzfC95K2dEQn7jWcRSpoovhBuZvRa3YsR4lDyofm0DfQKXcPoufj+xcD5BAY4QEqgISqNWMvibSvXfK89NcM5bU6fGJaiW3AdEvuRu1jZgvdhRgV3BRuTpPbW7SU5tlJVosKjetpMkv0MsV+Uk5VWJRueVyyTmvG2Vif7E4untLoTtzyTshfb87sFpul+LwyM7ftLS0pJJAY4IEqgISqNVM/kXljCwcZ0KD73uSHPzUHHSgKSjQnYuQOwtY4uPnzkrAMRWOKinQN3nVcTqQdJ6xPdKczUAmF6Y3BS2sIwuOLDeESgO8iyyxbmenGzfCw9OqnLFBAlUBCdRqJr9AWTmqGRtOdt1jy3CasUtIHg4KNGNGC2MXnLgiMs49/d6ruRACbXOhpp91lCLHwz5ABjfnfjhwW/QE8Mw6FHfyCitcI2eb71ksbf05Cx4AACAASURBVBlqmofyiCkJownUGD9eLtAJFLeYjgFloYe5QJUFN/QhZaE9XKDKgnsVvvEhLlBlwYd1j1VPFf5bf7BAh6//8hEfQuIcRAFjV7CEsV3YKP4sZUGB4qooUcbb3b6Z5jTRNqcQaCXWiIxRgH2iCtsqNFwmarJ7RV/nHFwXj5bMDZmzNFgsOzyrIv8jG02gffoEmDaRwgRBKCWi7TKKQO8d39AiE3dyP61pn3H+MrrII8UtOAbYDuwQ1cfZYjqTmNbkF2ihLFGLA6wdKeZbLxMCzYH5Fo9hJWNVOMiM7JwzWMtYKeoZewbbo1YxeSsVaQVuZJ2N2E8CJYgE4uMEaqz7fU2TAyW3v2KOxD9xOLLMo4WRjka2WNQ1felo5/XJRhYUqBwXYtu4QBuxwCy+iwvU43AMy8x1UXsVxdpR3otZzJiOLsZOAtm1F8I6bBqQdtpgxltJzsbw6KMJdKBr/OjT7k6gtMXoHQpjKw2uLnanrqv8xjuVhe5Q+Y13WvbGPeG/9SiB5glnCmUa/6Bpn5769N9p2n/4MEa12cQqvDbkmiqMWIZjOlzi/wi/QKtlASHQelHXFJzgAm1HupnRkcZYFzKMk9jPCtDRiiKx+9w83lqfsqI5GMKYCfNO/buxMDw4DSLFBg0iqYAGkawmUqCva9oXfvxvYsD5jKZ9/hzfvvRJbWZ8YlvFXqy4gGKROozyU6bh/ALdIAsIgV4O1EDrQmugN/A0/1uE1hd5m34TGg6bU0n5L+xoRQqcTYEQvYEr7m/BFXYpEgk0RkigKiCBWk2EQI3/pv3BdTM5U9MqZGKq9oXB+AS3iGakb/GPECFjM2pEKkqgeqAPtNLsAzUvKDqO5/nfrThU6PayU9hUgUv8FG+X01+H1qIiEMLjFE17TgumhQ/DkUBjgwSqAhKo1UQI9HrAmsz4U+0J86f9lqadjk9wi/ClItOcnmnk8pS8HV+UQI0807G6yxyFlzfZNwoh7jR1EcWOZYx1oiDHPSya9E75TTdIu5oUytn2jL2CZeHBSaCxQQJVAQnUaiIEul3TOsxUk6ZNMVN3NO2n8QluFSuANLNh/QLgkKdnlEC5Dp37Bo3mPDmN6Y4LtQOscxWyRZ/w/WSIQXyWB1OZM7Cmn7fWC/FGMEQ9kg952MAuh7z3084dVwIPkEBjgwSqAhKo1UQItEL7PX9qnaa95I/9W1p5fIJbxW5glZlqAObKRLRAjVIu11RuUXklUh3PZADJ5q3wSgCxcnM1zHrmWcCVnQ4sCBlxe5kfMJ3/e1Vk3AguckICjQ0SqApIoFYTIdDnta/7Uz8ILuRx7xPaqvgEt4prwH4z1Q1skologcpr4VOWXW03r4W/uDrfPa/aP79gLxyD8iC/DZtWzkzKXHggbMbC1dKnkvPLzemjJNCHhgSqAhKo1UQI9AXtCbMtfO8L2tf8+36paRvjE5wggaqBBGo/CSHQo5r2nkzs0bSn/ft2atpb8QlOkEDVQAK1n4QQaO8T2vfFNB3je5q2x9zl++/ap3viE5wggaqBBGo/CSFQNkvTpncxX6mmfdH8qI0fa1pqfGITJFBFkEDtJzEE+psvadonvvF/aZomVmgz7hz9Z0377KN+O5FJDAlUCSRQ+0kMgbJf/rl5C5F/EgFviNSntsUnNMFIoIoggdpPggiUDaz5hy996f99SV4rLgT6/5yIT2RC4NN1Eqj9kEDtJ1EEGkr7wsrzvgeWIB4OEqgSSKD2k4gCJeINCVQJJFD7IYES1kMCVQIJ1H4SSaD9b5U8+S//Kzn/lUf8VsqTHxKoEkig9pM4Av33/M9rAb7/dnziEiYkUCWQQO0nUQTqq/iM6c5PmpsidR95AkACVQIJ1H4SRKC+TC7NLy8++NE9o+u9dd/ime/FKTTBSKCKIIHaT4IIdLGm/XZ1MJhx6I81bXZ8QhOMBKoIEqj9JIZAL35S+8MroTvavqZpkWuhE5ZBAlUCCdR+EkOgTu0TEQsgXf0t7Z/jEztunAisodkKcyEkxn6E0gcccMq8ybICSKBKIIHaT0IItPez2pORRfIm3e3s2gFzqY4DwHMy4XNjH9uAvDEOiE2g6QhyI7YXSgJVBAnUfhJCoAc17eeRRU5q2sH4BI8bM/AzuV0FJMt1OW4CLfEUaEuML5QEqgYSqP0khEBf0rSo07pX016OT/C4sQbLxcaX5sjDRZE6glQfO7Nt7xjlYxNoh27yDlYYH196dEigSiCB2k9CCHSV9kR0mSce9UXlojiKVKG0G5i/FbVix3qUPKj8Q/WBevKmd8Z8MAlUCSRQ+0kIgW7QtMHIIoOTb1G520ArE8sd1zZivthRgF3BlTrrPLW5SU9t7hf7xUqd00qa/AK9XJGflFMlLl9dLtfx9LpRJvYXi6O7txS6M5e8E13X3IyHmKVAAlUCCdR+EkKgb44yZ+lccHmkSYORheNMaPB9T5KDn66DDjQFBbpzEXJnAUt8/HxaCTimwlElBfomgOlA0nnG9khzNgOZXJjeFLSwjiw4stwQKg3nuqP8IV4pCVQJJFD7SQiB6p/S5kYWWax9oj0+weNHOaoZG0523WPLcJqxS0geDgo0Y0YLYxecuCIyzj393qu5EAJtc6Gmn3WUIsfDPkAGN+d+OHBb9ATwzDoUd/IKK1wRZ6CxxHk7MvpA1/jR9bsTKG0xeofC2EqDq4vdqfYb71QWukPlN95p2Rv3hP/WI+eB/qP2mWvhe25/QfuOBUqzl4MoYOwKljC2CxvFn6UsKFBcFSXKcJj5ZprTRNucQqCVWCMyRgH2iSpsq9BwmajJ7kUlY3NwXTxaMrc1PNJ5oeoI+nSCIB5LItoukQJt0LSvh9Wo+r6taQceQmVquAXHANuBHaL6OFtMZxLTmvwCLZQlanGAtSPF/DjKhEBz/JORjmElY1U4yIzsnDNYy1gp6hl7Btu9owQyipL0qJ0kUIJ4TPkYgbIcTfvK4ZHs5b/WzJXiJxdGOhrZYlHX9KWjndcnG1lQoHJciG3jAm3EArP4Li5Qj8Mh14Fi10XtVRRrR3kvZjFjOroYOwlk116I6sQ5J2qnUdHHj1fXuydQ3GI6BpSFHtb1XmXBDX1IWWiPrvcpC+5V+MaHdF3l6eax6qnCf+tRAvV8T9O07/z0hiinv5n8SU37K4WjHDGzCq8NuaYKI5bhmA6X+H/DL1CzyS0EWi/qmoITXKDtSDczOtIY60KGcRL7WQE6WlEkdp+bB2DKiubwOCvx/kO9ThpEUgINItlPQgwicYYK5W1AP/cnf/67MvGD6CbqJGAvVlxAsUgdRvkpLBQpv0A3yAJCoJcDNdC60BroDTzN/xah9UXept+EhsPmVFL+qztakQJnU2iYTmfOwy26RwJVAgnUfhJFoNwx/xS8Ib32l69Mvva7oBnpW/wjRMjYjBqRihKoHugDrTT7QH8lM8fxPP+7FYcK3V52CpsqcImf9u3y/5GhtagIDbMzINdYIYEqgQRqP4kjUMb+feO0737jq9/6wfPvTNZFjX2pyDRv8WHk8tS7IhUlUCPPdKzuMkfhq2T5QtTxzUUUO5bxKiYKctzDoknvlN9+g7RrkCKE3fsvhtdJAlUBCdR+EkmgjwErgDTT/i8ADnnKRgmU69C5b9BozpPTmO64UDvAOlchW0z1up8MMYjP8mAqcwbW9DN2qxBvhATpgitiWthEIYEqgQRqPyTQScVuwH8FfwNgXhwQLVCjlMs1lVtUXolUxzMZQLJ5K7wSyPGhasirOtlZwJWdDiwINWZ9oBM1ZkigSiCB2g8JdFJxDdhvprqBTTIRLVB5LXzKsqvt5rXwF1fnu+dV+5dy3gvHoDwId2S+aeXMpMyFB8JqnFXY/JAvkwSqBBKo/ZBACeshgSqBBGo/JFDCekigSiCB2g8JlLAeEqgSSKD2QwIlrIcEqgQSqP2QQAnrIYEqgQRqPyRQwnpIoEoggdoPCZSwHhKoEkig9kMCJayHBKoEEqj9kEAJ6yGBKoEEaj8kUMJ6SKBKIIHaDwmUsB4SqBJIoPZDAiWshwSqBBKo/ZBACeshgSqBBGo/JFDCekigSiCB2g8JlLAeEqgSSKD2QwJ9ZDgBmD++VphrcjD2I5Q+4IBT5v0+x09L1Vx3XvlNM9P9Ys6UmZsHRsk0PT/L/cOXH0YEJFAlkEDthwT6yNAOmHeNPwA8JxM+N/axDcgb44CJCvTsFCDDAZe8F/3dHMANPN0XldnngDODl/wotrchXzgJVAUkUPshgT46zMDP5HYVkCxvEX8TaLFOoANp+HEPG6iB6yYTqysVtRrNuVjLIjJ3kx177rP2RVga+8qlJFAlkEDthwT66LAGy8XGl+bIw0WROoJUHzuzbe8Y5Sco0KPIkR93JcoZ+wDJv+bpFrg6IjK1KBOl2l34TczvhASqBBKo/ZBAHx2OIlVU+m5g/lZzYfb1KHlQ+QkK9CVsl9tGUaV9HStkpgjHIzLPo0Fm5vg7FGKBBKoEEqj9kEAfHW4DrUysvFnbiPliRwF2BReNq/PU5iY9tblf7BeLxk0rafIL9HJFflJOlVg0brlcUs7rNuuQxeLo7i2F7swl7xjyUdOMvL7JWCn2yUwtNkZkFqZel5n5eCfmd0ICVQIJ1H5IoI8ORpaoAXLRve9JEmu+DzrQFBTozkXInQUs8fHzZSXgmApHlRTomwCmA0nnGdsjzdkMZHJhelPQwjqy4MhyQ6iU3bxmftPHkc/YMzgvM8fEOH9Yxk9vCmIfRSKBKoEEaj8k0EeIclQzNpzsuseW4TRjl5A8HBRoxowWxi44cUVknHv6vVdzIQTa5kJNP+soRY6H1y0zuDn3w4HboieAZ9ahuJNXWOEaOcP6ZomxqtnCzZzTWByREdzvOP+M6CkN417/uOnT9Y7xl7aau13KQvM33qkseL/erSx0r66r/NR7lMXu0RV+6n16r0XPNBz+W5+kAj2IAsauYAlju0RjeheWsqBAcVWUKMNh5ptpThNtcwqBVmKNyBgFvBnOq7CtQsNloia7F5WiI1O2x0vmtgZi3C7Ckz2MpcJcKP6S6BANywjm8lrthrC14jlcDgRBPI5EtF0mqUBvwTHAdmCHqD7OFtOZxLQmv0ALZYlaHGDtSDHfbpkQaA5vqAuOYSVjVTjIjOycM2I+UinqReN8uzc0wv3Xk5EuDkgJOjM3IiOoLExB2uGIV0cCJYjHlMdDoEY6GtliUdf0paOd1ycbWVCgclyIbeMCbcQCs/guLlCPw2HWvq+L2qso1o7yXsxixnR0MXYSyK69EOyk+WAOsFQXqdm4JvecxsKIjP+l1E/BmfBXN3xv3Azxluz4S1vN3R5loQd5g05Z8Ht6n7LQAyrf+JDCN86rFb3Kgg/qAxY9kzf8tz5JBcrrnK8NuaYKI5bhmA6X+H/BL9BqWUAItF7UNQUnuEDbkW5mdKQx1oUM4yT2swJ0tKJI7D43j7fGp6xolmWOJCGr3pwev8g/Sek4VkVkAtQ+eA7VA6FBJCXQIJL90CDSo8RerLiAYpE6jPJTZn3QL9ANsoAQ6OVADbQutAZ6A08zMZOz9UXept+EhsPmVFL+qzpakQKnGCXi1dHSwJddKmc8MbZdPHFopnOXv+l+TgzWxwgJVAkkUPshgT5KNCN9i3+ECBmbUSNSUQLVA32glWYf6K9k5jie53+34lCh28tOYVMFLvHTul2214fWooKxO0nYHrw683V/ZXMhjoRn+jHFrM6fwLKY3wcJVAkkUPshgT5K+FKRiRsiZeTy1LsiFSVQI890rO4yR+GrZPlC1PHNRRQ7uPc6UZDjHhZNeqf8dhuEXWvM695NPkCKUFybw9UZkZllTqA3nseW2N8HCVQFJFD7IYE+UqwA0nwy9QLgkKdklEC5Dp37Bo3mPDmN6Y4LtQOscxWyxbSj+8kQg/gsD7JCymZgTT9jtwrxBmO5+EWnSbeMtGyAdRfhBRaR2YeMs17W8xJS2mN+GyRQJZBA7YcE+kixG4FxnAZgrkxEC9Qo5XJN5RaVVyLV8UwGkGyOA5UA7/NNNcxuzbOAKzsdWOBh9xFETFa6mw3XHAfmyG8/NON7lh8zHZj6duxvgwSqBBKo/ZBAHymuAfvNVDewSSaiBSqvhU9ZdrXdvBb+4up897xqcyYn2wvHoDwId2S+aeXMpMyFBzzySvtQgbLujdmu3JpBf7SQjHF0yZPuourY78VEAlUECdR+SKCE9ZBAlUACtR8SKGE9JFAlkEDthwRKWA8JVAkkUPshgRLWQwJVAgnUfkighPWQQJVAArUfEihhPSRQJZBA7YcESlgPCVQJJFD7IYES1kMCVQIJ1H5IoIT1kECVQAK1HxIoYT0kUCWQQO2HBEpYDwlUCSRQ+yGBEtZDAlUCCdR+SKCE9ZBAlUACtR8SKGE9JFAlkEDthwRKWA8JVAkkUPshgdrNCcD8jbXCXJqDsR+h9AEHnDJv+xkLx/13BWWs+8WcKTM3h33Vs8ybg7oXbLH8DCCBKoEEaj8kULtph38R4QPAczLhc2Mf24C8MQ6IXaDGsoBA7+ZwUwJPh57ks+BwOp0O7tDsj2IMMBYkUCWQQO2HBGo7M/AzuV0FJIt1jNhNoCUeAvXtCdyXnq1AUavRnBu6rBwX6C/4X6PzSCqKjdGOjx0SqBJIoPZDArWdNVguNr40Rx4uitQRpPrYmW17xygfo0DPVeUiINAPkPxrvmmBq2OkgClQztvArVgijA0JVAkkUPshgdrOUaSKCt8NzN+KWrFjPUoeVD5Gga6XPZymQF/HCrktwvGRAkGBGm5zJWPrIIEqgQRqPyRQ27kNtDKxAGdtI+aLHQXYFVw7rs5Tm5v01OZ+sV+sHTetpMkv0MsV+Uk5VWLtuOVyZTmvG2Vif7E4untLoTtzyTuhLfHftLS0pPoFWop9cluLjSMFggJlT2OPiH1gaI17a1ikWCGBKoEEaj8kUNsxsmQ9cDne9ySJpd8HHWgKCnTnIuTOApb4+GmxEnBMhaNKCvRNXp2cDiSdZ2yPNGczkMmF6U1BC+vIgiPLDaHSMNL9An0G5+X2WOhwf2gN9JSIvb8c2BoWKVZIoEoggdoPCdR+ylHN2HCy6x5bhtOMXULycFCgGTNaGLvgxBWRce7p917NhRBomws1/ayjFDke9gEyuDn3w4HboieAZ9ahuJNXWOGKOJECAp0tFM05jcUjDwYF+m+ySlyPfOfms3fDIoXhHR43Hl3vGn9pq+noUxaav/EeZcGH9QFloYdUvnGPwjc+wP/nUBbcow9Z9Ey+8N/6oy3Qgyhg7AqWMLZLNKl3YSkLChRXRYkyHGa+meY00TanEGgl1oiMUcAb47wK2yo0XCZqsntRydgcXBePlsxtDY8UEGgqzAb5pdChfv8o/N1DKfhX+QKEzcMjhdGnEwTxWBLRdnm0BXoLjgG2AztE9XG2mM4kpjX5BVooS9TiAGtHivmuyoRAc3hDXXAMKxmrwkFmZOecEbOSSlEvmujbvaNFCgg0JSjQ3JEH/RPpOblt8gXkyS7UsEihkEAJ4jFlUgnUSEcjWyzqmr50tPP6ZCMLClSOC7FtXKCNWGAW38UF6nE4hmXmuqi9imLtKO/FLGZMRxdjJ4Hs2gvRfTEjTfhrcnsaC0cenAVXEie56GU5ZFWPVWITHimUob5x06vrHeMvbTV3u5SF5m+8U1nwPr1bWegelW+8V+Eb79Z1ladbj0XPFNGX+mgLlNc5XxtyTRWeKsMxHS6hf79Aq2UBIdD6QA3wBBdoO9LNjI40xrqQYZzEflaAjlYUid3n5vGK5JQVzRGBAgJd5L/46bgpSZORUXhJPV4Qm/BIMUKDSEqgQST7oUEkBezFigsoFqnDKD9l1gr9At0gCwiBXg7UQOtCa6A38DQT8zlbX+Qt7U1oOGxOJeU/nqMVKXA2hQdKD05jOiC32/3PL4kSqHwsIlJskECVQAK1HxKoApqRvsU/QoSMzagRqSiB6oE+0EqzD/RXMnMcz/O/W3Go0O1lp7CpApf42duui8eG1qIiPFB6cCK9WfNciCMjD44u0IhIsUECVQIJ1H5IoArwpSITN0TKyOWpd0UqSqBGnulY3WWOwlfJ8oWo45uLKHYsY6wTBTnuYdGkd8ovsSHSeenBSzlThNDaHK7OkQfHEGh4pBjfIAlUBSRQ+yGBqmAFkGbOvHoBcMgzL0qgXIfOfYNGc56cxnTHhdoB1rkK2WJ25v1kiEF8lgdTmTOwpp+xW4V4IzxO+sjNRJYNsO4is5vTzxgCDY8UGyRQJZBA7YcEqoLdCIzmNABzZSJaoEYpl2sqt6i8EqmOZzKAZHM0qAR4n2+qYXZungVc2enAggjnBQV6NxuuOQ7MCf2uxxBoRKSYIIEqgQRqPyRQFVwD9pupbmCTTEQLVF4Ln7Lsart5LfzF1fnuedX+K9T3wjEoD/IbsmnlzKTMhQci64zpIzdU3pjtyq0ZDH1wLIGGR4oJEqgSSKD2QwIlrIcEqgQSqP2QQAnrIYEqgQRqPyRQwnpIoEoggdoPCZSwHhKoEkig9kMCJayHBKoEEqj9kEAJ6yGBKoEEaj8kUMJ6SKBKIIHaDwmUsB4SqBJIoPZDAiWshwSqBBKo/ZBACeshgSqBBGo/JFDCekigSiCB2g8JlLAeEqgSSKD2QwIlrIcEqgQSqP2QQAnrIYEqgQRqPyRQwnpIoEoggdoPCZSwHhKoEkig9kMCjeAEYP4EWmGuScTYj1D6gANOmfc7njgXywqmZi+pscY0LVVz3XnlN81M94s5U2ZuHvlejwfvqxxWzGQuTFLn/bR7zEIThASqBBKo/ZBAI2iHfw31A8BzMuFzYx/bgLwxDohRoN5SLq3pLsB95OMLfyxnpwAZDrjkAh93c/izAk8HzmhjWUCgYcX8zIXDyXEIh7aOVWiCkECVQAK1HxJoJDPwM7ldBSTLJTJuAi3WC3QLUg8MMl/rGuCXsb3QEAbS8OMeNlAD100mVpArajWac7HWfNC3J7DwR3gxP3NRLzZG54kMuRL9qIUmCAlUCSRQ+yGBRrIGy8XGl+bIw0WROoJUHzuzbe8Y5WMT6JAD52TCqEBlTK8zlKPIkZ9kJcrFGsbJv+bpFrg6+OZcVS4CAg0rFsAvUCbeiei9GLXQBCGBKoEEaj8k0EiOItXgmxuYvxW1Ysd6lDyofGwCvYrphpm6goIYjg/nJWyX20ZRT34dK2SmCMeZePUICjSsWIARgfYCV8coNEFIoEoggdoPCTSS24DoCtyN2kbMFzsKsCu4aGadpzY36anN/WK/WDRzWkmTX6CXK/KTcqrEUpbL5ZKaXjfKxP5icXT3lkJ35pJ3jJEoZ5DmNVP3TpmLY7atz5mSW9kikvU4MLTGvZVV+xfKvJ+KptFL+FmOBrnllU/GSrFPZmqxkf/9TUtLS6pfoGHFAoQJtGWMQhOEBKoEEqj9kEAjMbJkzW053vckOfhJMegQ9vILdOci5M4Clvj4t7YScEyFo0oK9E0xJAQknWdsjzRnM5DJhelN4VLqyIIjyw2h0gBtwMawRYgbpwIZgKueiTj7y4Gt7D1kSee+i1nG6CX83LxmfonHkc/YMzgvM8eCkwcCqxuHFQsQ2oTPuD9GoQlCAlUCCdR+SKBRlKOaseFk1z22DKcZu4Tk4aBAM2bwOtoFJ66IjHNPv/dqLoRA21yo6Wcdpcjx8KpbBtfdfjhwW/QE8Mw6FHfyCitcId/zOiB93ameQPbek9jUy/pr4PpIPHW+c/PZu8ybjuviwSrsGKNEOH2zxADYbFldZew0Fvv3jywPH1IsQGAQqftkRlClUYXknrvjR9f1CZS2mESNrfiNqwyuMLTab9yqJ4r4H+ihBHpQdEpewRLGdolG8C4sZUGBik5CxspwmPlmmtNE25xCoJVYIy1UwJvPvArbKjRcJmqye8UQ0RzTgyVzW0eieHek80qr44c1sknOdvqHbKqxTsY5LXPrZS/scJoQ4OglQrldhCe5kVPxocxeCnZihgvUXyzAyDSmjLNjFhL06QRBPJZEtF0eSqC34BhgO0Sl7wZmi+lMoibmF2ihLFGLA6wdKWbQMiHQHJgePIaVosJ4kBnZOWfEPKJSUat7Btu90XHuv1dTJAZ4SkSjb5F/MlOzCFmPPLO79IJsRp/HM2OWCHm615ORLl5FSlCguf6HQgUaLBYgMJEecG41xiokoBroIx6baqAqQlMNNBIjHY1ssahr+tLRzuuTjSwoUDkuxLZxgTbKSZNM1FDXM4/DMSwz10XtVRRrR3kvZjFjOroYOwlk114Yraukp74YmOdjLANllYIyMXRTj1Xmw7wN/5Fo7R9iY5UI8sEcYKkuUrNxTe45jYX+x0IEOlIsQKAPtPvYVLw1VqEJQn2gSqA+UPuhPtBoVuG1IddUYcQyHNPhEqelX6DVsoAQaL2oawpOcIG2I93M6EhjrAsZxknsZwXoaEWR2H1uHq/gTVnRPBLjvidQ23tbtMY9GGGYP/cL/gfXYTfzTnPxH+VYJfwcSUJWvfmUi/yXUh0PSnZEoCHFAowMIr2Cfx2r0AQhgSqBBGo/JNBo9mLFBRSL1GGUnzLrcX6BmtOKhEAvB2qgdaE10Bt4mokZmK0v8jb9JjQcNqeS8nP7aEUKnE3BGPl+y3Gew3ZmpCHk/AvEEW34Z/g/IcKxSpjwOm5p4HsshXkR5vZgmaBAQ4sFGBHoBcwZq9AEIYEqgQRqPyTQaJqRvsU/QoSMzagRqSiB6oE+0EqzD/RXMnMcz/O/W3Go0O1lp7CpApf4ydUum8NDa1ERjFEi+lgDyT2Mzff3cHru6KF69E5zdK03x4vGKCG5k4TtwSrj6/6a50IErrIPCDSsWIARgd7Ak2MVmiAkUCWQQO2HBBqNLxWZuCFSRi5PvStSUQI18kzH6i5zFL5Kli9EHd9cRLFjGWOdn1G1DQAAHFpJREFUKMhxD4smvVN+xg3SriYHMfUjM9XmFpOitvi7V7djS5ge1+FQ+jT5KY1VQlATuO5d8AFShL3aHK5O/56AQMOKBQgV6BRjjEIThASqBBKo/ZBAR2EFkOaTqRcAhzwxogTKdejcN2g058lpTHdcqB1gnauQLWbH30+GrGDmwVTmDKzpZ+xWId4IhvDMhvvVlgFP28Ec/NDLWG8qftrPvEdcUz4M0+N5bnAzM1YJQS5+0WnSLV/+sgHWXTTSTRoQaHgxPyMCvQUMjFFogpBAlUACtR8S6CjsRmD8pQGYKxPRAjVKuVxTuUXllUh1PJMBJJs9myXA+0xM2TS7I88Crux0YEHItUdt+YEhoUUdMpITyEqG4yQL0+NwWvBuTWOU4NwfGV8SM5fuZsM1x4E5wS/WL9CIYn5GBNoNXBqj0AQhgSqBBGo/JNBRuAbsN1PcKZtkIlqg8lr4lGVX281r4S+uznfPqzZnYLK9cAzKg/xVv6aVM5MyFx4Iu3bTc2xVoTt93k8a/R2OLevmJs9efSsYzM9azAz0SI5RQl6+Hya97o3ZrtyaweDjfoFGFjMZESibjdljFJogJFAlkEDthwRKWA8JVAkkUPshgRLWQwJVAgnUfkighPWQQJVAArUfEihhPSRQJZBA7YcESlgPCVQJJFD7IYES1kMCVQIJ1H5IoIT1kECVQAK1HxIoYT0kUCWQQO2HBEpYDwlUCSRQ+yGBEtZDAlUCCdR+SKCE9ZBAlUACtR8SKGE9JFAlkEDthwRKWA8JVAkkUPshgRLWQwJVAgnUfkighPWQQJVAArUfEuik4QRg/jhbYa4mwtiPUPqAA06ZdyqdMJ3VBe6ilx/m90ACVQIJ1H5IoJOGdvhX8jwAPCcTPjf2sQ3IG+OAGAXalAakA5mtMb1K84WRQFVAArUfEujkYQZ+JrergGR5c/ubQIvlAvXkobyH3S3GQl+Mr5MEqggSqP2QQCcPa7BcbHxpjjxcFKkjSPWxM9v2jlE+NoFeQK74VvpS/Ss1xwIJVAkkUPshgU4ejiJVLI90A/O3olbsWI+SB5WPTaBvoFJun8XPYzjahASqBBKo/ZBAJw+3AdEvuRu1jZgvdhRgV3C5uzpPbW7SU5v7xX6x3N20kia/QC9X5CflVInl7pbLxfC8bnOF+WJxdPeWQnfmkneMkSg7sFpul+JwzK+UBKoEEqj9kEAnD0YWjjOhwfc9SWK1+kEHmoIC3bkIubOAJT5+Pq0EHFPhqJICfRPAdCDpPGN7pDmbgUwuTG8KWlhHFhxZbgiVBngXWWI9z043bsT8SkmgSiCB2g8JdBJRjmrGhpNd99gynGbsEpKHgwLNmNHC2AUnroiMc0+/92ouhEDbXKjpZx2lyPGwD5DBzbkfDtwWPQE8sw7FnbzCCtfIGeh7FktbhprmodwIjz7UO256dL1j/KWt5m6XstD8jXcqC96rq3vj3SrfeI/erSx2l67wU7fujUeI+DEV6EEUMHYFSxjbhY3iz1IWFCiuihJlvN3tm2lOE21zCoFWYo3IGAXYJ6qwrULDZaImu1f0dc7BdfFoydyQOUuDxXJV+KrI/9z6dIIgHksi2i6PqUBvwTHAdmCHqD7OFtOZxLQmv0ALZYlaHGDtSDE/jjIh0BzeUBccw0rGqnCQGdk5Z7CWsVLUM/YMtnsjo7yVirQCN7LORuwngRLEY0piCNRIRyNbLOqavnS08/pkIwsKVI4LsW1coI1YYBbfxQXqcTiGZea6qL2KYu0o78UsZkxHF2MngezaC2GdOA1IO20w460kZ2N4dO/wuPHwds34S1tNR5+y0PyN9ygLPqwPKAs9pPKNexS+8QFdV3m6DVn0TBFzvh9TgfI652tDrqnCiGU4psMl/t/wC7RaFhACrRd1TcEJLtB2pJsZHWmMdSHDOIn9rAAdrSgSu8/N4631KSuagyGMmTghE7uxMObXSYNISqBBJPuhQaTJxF6suIBikTqM8lOm4fwC3SALCIFeDtRA60JroDfwNP9bhNYXeZt+ExoOm1NJ+a/uaEUKnE2BEL2BK+5vwRXzpUgkUCWQQO2HBDqZaEb6Fv8IETI2o0akogSqB/pAK80+UPOCouN4nv/dikOFbi87hU0VuMRP+3ZdPDa0FhWBEB6naNpzWjAtYhh+/JBAlUACtR8S6GTCl4pMc3qmkctT74pUlECNPNOxusscha+S5QtRxzcXUexYxlgnCnLcw6JJ75TffoO0q0mhnG3P2CtYFvvrJIGqgARqPyTQScUKIM1sWL8AOOQpGyVQrkPnvkGjOU9OY7rjQu0A61yFbHH/kfvJEIP4LA+mMmdgTT9vrRfijWCIeiQf8rCBXQ7/vZ9igQSqBBKo/ZBAJxW7gVVmqgGYKxPRAjVKuVxTuUXllUh1PJMBJJs6LAHe55tqmPXMs4ArOx1Y4BmJ8TI/YDr/92rsL5MEqgQSqP2QQCcV14D9Zqob2CQT0QKV18KnLLvabl4Lf3F1vnte9YfmYXvhGJQH4Y7MN62cmZS58IAnNMjV0qeS88tbHuJlkkCVQAK1HxIoYT0kUCWQQO2HBEpYDwlUCSRQ+yGBEtZDAlUCCdR+SKCE9ZBAlUACtR8SKGE9JFAlkEDthwRKWA8JVAkkUPshgRLWQwJVAgnUfkighPWQQJVAArUfEihhPSRQJZBA7YcESlgPCVQJJFD7IYES1kMCVQIJ1H5IoIT1kECVQAK1HxIoYT0kUCWQQO2HBEpYDwlUCSRQ+yGBEtZDAlUCCdR+SKCPL6fM+4FOmM7qAnfRyw/zeyCBKoEEaj8k0MnOBuSN8UiMAm1KA9KBzNbYXxMJVAkkUPshgU52rBaoJw/lPexuMRbGvKoxCVQNJFD7IYFOds5s2zvGI7EJ9AJyxbfSl+pfDzkWSKBKIIHaDwn08SU2gb6BSrl9Fj+POTIJVAkkUPshgU4ulstV47xulIlcMXYFFpWr89TmJj21uV/sFovKTStp8gv0ckV+Uk7Vh6MezLq3FLozl7xjjETYgdVyuxSHY36VJFAlkEDthwQ6udgj5dcMZHLneVPQEhDozkXInQUs8fHzaSXgmApHlRTomwCmA0nnRzu4IwuOLDeESgO8iyyxbmenGzdifpUkUCWQQO2HBDq5+AAZXH774cBtxm6IjF+gGTNaGLvgxBWRce7p917NhRBomws1/ayjFDmeUQ5eh+JOXmGFa+QM9D2LpS1DTfNQboSHvj80bgZ1vXP8pa3mbo+y0AO63qUs+JDeqyx0P/8vU1nwQb1PWew+XVd5uvVb9Eze8N/64ytQIwutjJWjDMfFIu+VwXXhcVU8XMbb3b6Z2C3SbU4h0EqskccVYN8oB8/BdfFoydyQOUuDxRBURf7nxk8VgiAeRyLaLo+vQFkVDjIjO+cM1jJWivqgQAvlo7U4wNqRYn4cZUKgObyhLjiGlaMc/Ay2eyMjvJWKtAI3ss5G7CeBEsRjSuIItB5lXJHlvZjFjOnoCgpUjguxbVygjVhgFt3FBepxOIZl5joKRjn4JJBdeyGsE6cBaacNZryV5GwMj+wZHDe8Jds5/tJWc7dHWWjRhFcWfFDvVRa6T+UbH1D4xnt5E15Z8H69z6JnGg7/rT/GAu1ChnES+1kBOlpRxIICrZaPCoHWi7qm4AQXaDvSzYyOtFEOZufm8db6lBXNwec3ZuKETOzGwphfJA0iKYEGkeyHBpEmG0VofZE3yzeh4TBqWVCgG+SDQqCXAzXQutAa6A08PcrBHP1oRQqcTYGn7wVMBdyCK+ZLkUigSiCB2g8JdLKxFYcK3V52CpsqcImNIlA90AdaafaBmhcUHcfz0Qffb9fFY0NrURF4es//3969B0d13QccvxnGzrgdt82kj0w78fSfTqd/tDPNJM100kn/SP/pH7/VgiKBhcASAiwjZNU1ECbWBAhYYQhY1IDBdv1QIc5gXCiPgLEyEcU2gcHUwYEB1yhWwIbgRQ8jBBWS7ul97K60q93s+nL3HPbq+5nx3D3ax72Hq/16V3cfFe5Te0e3PJh1GL54BNQIAqofAS03p2VFrFWpPllcX+U+uJwUULvRPwqfiPtH4dvdgd0suydfuV8qvL1/1Kurr9l7tb1S/yGtgbeRgBpBQPUjoOXmdqXIK86yUfzqTQqok8OKfTftC43ey5gux6VjSPU9KXXDOa48T5664Txbb5bX0rffJZUHh9XQrpicCryNBNQIAqofAS07K0XedRabxX+oODmgdptIbKZTUe+dSLudQa1I5alcVz4hEq+rEXl8ePz2n3OuMNv578fBN5GAGkFA9SOgZWevxNz3WnaJXFYqV0C998JXt5696r8X/vQPF1U9tvlSziurc2vmz5iz5MDwxBWcbXu4ctG67jvYRAJqBAHVj4AifATUCAKqHwFF+AioEQRUPwKK8BFQIwiofgQU4SOgRhBQ/QgowkdAjSCg+hFQhI+AGkFA9SOgCB8BNYKA6kdAET4CagQB1Y+AInwE1AgCqh8BRfgIqBEEVD8CivARUCMIqH4EFOEjoEYQUP0IKMJHQI0goPoRUISPgBpBQPUjoAgfATWCgOpHQCPlLf8jQIPoTH5CqFIDW+unz3/hTn4tCKgRBFQ/AlqGtkhjnnOCB9RuTQX0Wr1Ilcgjd3CHIKBGEFD9CGgZKkFAx/akPqNerZKWi/aFBtkY7Ja8WyOgJhBQ/QhoGTq+fW+ecwIG9GR7g6QC2iOVv1HutxrHewNuHgE1hIDqR0AjJWBAnxZJB3SnrPKWLdIZeDMIqBEEVD8Cetf7nvdFcaNVstYdrZBdqe+R2z3c0TDj4RduuD92v0fuwZXnkgH95fpFM+rbL+W8shp4sblqzvK37Qmr+KS7u3tmMqBtss9bdsgzgTeZgBpBQPUjoHe9PV78LojMcZo3Wi3dqYC+ukwaFogsH3N+hdaIxL4tsXYvoP/lPJycLTLjnVxX7p0rsblV4qY0Q00yoEvlHW/5hrQF3mQCagQB1Y+A3vV6pNaJ336JycdKfeAOkgGtndet1KkKOeMOKvbcGD3bIG5Ar8TlpRuqt03qh3Nc+d9kRZ/zgFXiWb90qYAulHPe8ph8J/MCdvGcjgx8houHrHfI2KpHnIAaW7mduGVs1cNOQI2tfNTgxG85ATW28pHEcFg3lXlfj1RA7blyUal1stb9o+Re2ZD+Kng56569Vg6psfnyn+7pKxVuQDfIU971FjtPxidfuUned89d+ejFzNWkAjpT/K+Qfy/7UP9gAkAkZT13iVRAVbv8RNl19cfdFxa1SVc6oM3euR1yQF2Vav9fYK0b0HrnibrrDVmT48pLZcdorrWkAlqdDmhD5gUIKBBRkQ5ol6x1ErnuuixQ9mzpTwfUOy6ktjsB/YU87l90lxPQ4VhsxBu8L4tzXPmISF3Hqcl/txl/Cn/eWx6TJZkXuDlQtP5E4lrxlw5botfguo2uvM/YqvtNTrzf4MT7Ekb/1ftDuqXhzPt6tALaL7X2EdmvFkvvRWlR6YBu9s51A9rlPtZ0/cwJ6FWp8QcJmZXjyurkYyIyfdWFrLWkArpMTnnLTnky8BZzEMkIDiLpx0GkMtAiF7c6T8u3ydFD0qHSAd3inekG9JepR6C7Jz4C/UAeyXFlR+Lw+mqpOJe5kpr0y5gOeMsdydsPgoAaQUD1I6Bl4GU52Fw1qt6SbevlPZUjoInU30A3+H8D/ZU36JTVk698+2rCPe/WRlmfuZKa9Avp/UeeS+T1wBtMQI0goPoR0DJwWlbEWpXqk8X1Ve6Dy0kBtRv9o/CJuH8Uvt0d2M2ye/KV+6XC2+FHvbpOUJN+K2e1G78rsXhf4A0moEYQUP0IaBm4XSnyirNsFL96kwLq5LBi3037QqP3MqbLcekYUn1PSt1wjivPk6duKPXrZnktcyU14x8m0jqkBlpkU/ANJqBGEFD9CGg5WCnyrrPYLP7fJycH1G4Tic10Kuq9E2m3M6gVqTyV68onROJ1NSKPZx14Swf0Wp3Em2LSdAe/FwTUCAKqHwEtB3sldlN5r533Ijc5oN574atbz1713wt/+oeLqh7bfCnnldW5NfNnzFlyIKuf4wFVA8/UxRteunkH20tAjSCg+hFQhI+AGkFA9SOgCB8BNYKA6kdAET4CagQB1Y+AInwE1AgCqh8BRfgIqBEEVD8CivARUCMIqH4EFOEjoEYQUP0IKMJHQI0goPoRUISPgBpBQPUjoAgfATWCgOpHQBE+AmoEAdWPgCJ8BNQIAqofAUX4CKgRBFQ/AorwEVAjCKh+BBThI6BGEFD9CCjCR0CNIKD6EVA4zq1eUPUvzyXv+93tj1Y1rvvwDm6OgBpBQPUjoFPOFmnM/tG+mFTUitR+5A5OTHdOxSR+IPgqCKgRBFQ/AjrlTA7otcrYntvq6jL5rq3U0Cz5wadq6CWJfxh4FQTUCAKqHwGdco5v35v1kw5Z6y6uxuUTpQ5LvbdXNsi6wKsgoEYQUP0IKNRqOeotm+SUUs/KDm/wi8nP9ItGQI0goPoR0Ij7nvelnaNV/oPMFbIr9Z2eu4c7GmY8/MIN56dLZr7vXfZf5W33Cn5Ne6Qy8EoJqBEEVD8CGnF7vHJeEJljO//g1dKdCuiry6RhgcjysfRFr1fLR0p9eN7/heiURYFXSkCNIKD6EdCI65Fap5z7JSYfK/WBO0gGtHZet1KnKuSMf7nbve8snfhXz8EF8qPMWxrqL14ice0zXDpkiV6D6za6cnPr7jO7x/uMrbrX5B7vC23iw5n3dQKaZs+Vi0qtk7XSqdRe2aBSAZWz7tlr5ZB/uUdFZMv4P+PHLfLQp5m3NJgAEElZz10I6Lh2+Ymy6+qPy0al2qQrHdBm79wOSb7cc0NztcxKxlTd3lkpNd1ZN0RAgYgioHl1yVp1VdZdlwXKni396YB6B5XUdkm/Xt7umi7HvVM9TSLfTWTfkF280URi4DNcPGS9Q8ZWPZJIXDe2cjtxy9iqhxOJQWMrHzU48VuJhMlft+Gwbirzvk5Ax/VLrX1E9qvF0ntRWlQ6oJu9cycE1H04utJdvD5D5nbZuW6rWBxEMoKDSPpxECnyWuTiVulW2+ToIelQ6YBu8c50A9q3K/nU/aR34P2ISNsd/k4QUCMIqH4ENPJeloPNVaPqLdm2Xt5TOQJ6Q6aPeoOfSatSl2fIjjt6+KkIqCEEVD8CGnmnZUXMCWOfLK6vGlE5AqoWuC+gV8peLS8q9ZJ7tOkOEVAjCKh+BDTybleKvOIsG0VWu+PJAd0ntSdG1afPSvVVpRrk532+4A0koEYQUP0IaPStFHnXWWwW/4DR5ICOPSESny3y7Tede4KkNQReIwE1goDqR0Cjb6/EbirvtfOXlcoVUGUfXv5QVcvmT5yTHxPQO0BATSCgYSOgZhFQIwiofgQU4SOgRhBQ/QgowkdAjSCg+hFQhI+AGkFA9SOgCB8BNYKA6kdAET4CagQB1Y+AInwE1AgCqh8BRfgIqBEEVD8CivARUCMIqH4EFOEjoEYQUP0IKMJnDw7eNLf2G8OFL1MiY4OD5iKmBkt0dyrC6OCguYjZgyPG1j0yOGjy1220NDdMQAEgIAIKAAERUAAIiIACQEAEFAACIqAAEBABBYCACCgABERAASAgAgoAARFQAAiIgAJAQAQUAAIioEYNbK2fPv8Fc5/ypcPNRJL3eTgZM84/KH+dcjl5qsgpR2X+6YlPiR1PQE26Vi9SJfKIuQ+I1GCHJPWorBnnH5Q/uzXVkSKnHJX5j098Sux4AmrSKmm5aF9okI2mN6SU1k28H2XMOP+g7I3tkVRHipxyROY/YeJTYscTUIN6pPI3zqJb4r2mN6WEHvPuQL6MGecflLuT7Q2S6kiRU47G/CdOfGrseAJq0E5Z5S1bpNPwlpSQPSs2/vHvGTPOPyh3T3sPvPyOFDnlaMx/4sSnxo4noAa1yT5v2SHPGN6SErouC8cHGTPOPyh3n3R3d89MdqTIKUdj/hMnPjV2PAE1aKm84y3fkDbDW1JC78v33/z+ohUve0/QMmacfxAFNcmOFDnl6Mw/NfGpseMJqEEL5Zy3PCbfMbwlJdQlce953YM/V1kzzj+IglRHipxydOafmvjU2PEE1KCZcslbvieNhrekhF4RefHDoTPLpOpa1ozzD6Ig1ZEipxyd+acmPjV2PAE1qDr9u9NgeEtK6NC6w+5idLFsyppx/kEUpDpS5JSjM//UxKfGjiegBi2U897ymCwxvCUadMnirBnnH0TB+FP4oqYcnfnXpN+C5Yv2jiegBi2TU96yU540vCUa9Eh8NHPG+QdRkOpIkVOOzvyzAxrtHU9ADWqTA95yh2wxvCUaXJFZduaM8w+ioCb9Mqaiphyd+WcHNNo7noAatDP5P90l8rrhLSmdW01N/sdEnJSlWTPOP4iCmvQL6YuacnTmn5z4FNnxBNSgHqkecBZXYvE+05tSOq2yx1uukB1ZM84/iIKa9Fs5i5pydOafmvjU2PEE1KRV0jqkBlrcw5SR9bZM7xxVfU9L3S2VNeP8gwioGf8wkaKmHJn5pyY+NXY8ATXpWp3Em2LSVKafhVic50TiNSIPnXEHGTPOP4iAdECLnHJk5p+e+JTY8QTUqIFn6uINL900vRklZZ94oq7q8eev+6OMGecflL/xYylFTjkq809PfErseAIKAAERUAAIiIACQEAEFAACIqAAEBABBYCACCgABERAASAgAgoAARFQAAiIgAJAQAQUAAIioAAQEAEFgIAIKFDYdmuiaaY3B3cLAgoURkCREwEFCnMCOrs9baPpzcHdgoAChTkB3W56G3AXIqBAYQQUORFQoDACipwIKFDYpID+rnVIvfY307zv4h1Y83dfuO+vat+0/bPs/RVfuveB+tNqpvWE9g2FXgQUKCxXQLdYluUG9M0/Sh6cn+t+AboaftAf3bONgEYfAQUKyxHQVdOsP/77g0qduc+6Z97W7cu/ZFlV7jkLLOv3Fjy/5hvW5/6MgEYeAQUKcwI6Z1PKEeUG9J4v/7d7jv1160//1z0xGLesA0q9bVl/cc4Zji11HoUS0KgjoEBhGS+kb1JuQK2feuc4wez0L3P9T6zZStVY1jFvaH+FgEYfAQUKyxHQr/jHjFqtPxxLXmim9YCyv2h9Kzn8MQGNPgIKFJbjb6AP+Sf+eWJa71O/Hq/mrwho9BFQoLAcAV3un/haxrvkb/+PZb2YvMjINAIaeQQUKCxHQFf7J/7W+urIOPv4eEDH7iWgkUdAgcLyB/Rb1h/YE35+fvx5+yWewkcfAQUKyx/QRy2rJ/mzH206rP7vXuufksO9BDT6CChQWP6A7rOshf6pc5b1vFLftKzj3tD+BgGNPgIKFJY/oCN/bk3b6Z648XXr833eJf/SfWG9vZIX0k8BBBQoLH9A1U8/Z1kzNr3W9oBlvewMR//Bsn6/8d9/8I/W/Z8noJFHQIHCfktA1av3+S9hurfNGyaSL2z6nYNfJKCRR0CBwn5bQNVHy/76/vu/trA7ORx59ptfuOfL884rAhp9BBQoEQIafQQUKBECGn0EFCgRAhp9BBQoEQIafQQUKBECGn0EFCgRAhp9BBQAAiKgABAQAQWAgAgoAAREQAEgIAIKAAERUAAIiIACQEAEFAACIqAAEBABBYCACCgABERAASAgAgoAARFQAAiIgAJAQP8PiDAEt71TpmgAAAAASUVORK5CYII=" width="672" /></p>
-</div>
-<div id="attr_osgi_os_version" class="section level2">
-<h2>OSGi OS Version</h2>
-<ul>
-<li>Description: The host operating system version, as reported in OSGi.</li>
-<li>Type: Factors</li>
-</ul>
-<p>The possible values found in the dataset for this attributes are:</p>
-<ul>
-<li>6.1.0 (count: 18246)</li>
-<li>10.0.0 (count: 7437)</li>
-<li>6.2.0 (count: 3623)</li>
-<li>6.3.0 (count: 3325)</li>
-<li>3.13.0 (count: 2219)</li>
-<li>4.4.0 (count: 1728)</li>
-<li>3.19.0 (count: 1388)</li>
-<li>3.16.0 (count: 1316)</li>
-<li>10.10.5 (count: 1035)</li>
-<li>4.2.0 (count: 948)</li>
-<li>10.11.5 (count: 850)</li>
-<li>10.11.6 (count: 690)</li>
-</ul>
-<p>Visualisation of the various operating system versions used in the dataset:</p>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="attr_osgi_ws" class="section level2">
-<h2>OSGi Window Manager</h2>
-<ul>
-<li>Description: The Window Manager used by the host, as reported in OSGi.</li>
-<li>Type: Factors</li>
-</ul>
-<p>The possible values found in the dataset for this attributes are:</p>
-<ul>
-<li>win32 (count: 32944)</li>
-<li>gtk (count: 11366)</li>
-<li>cocoa (count: 6562)</li>
-</ul>
-<p>Visualisation of the various Window managers used in the dataset:</p>
-<p><img src="data:image/png;base64,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Jo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISAqhDQ5BFQFQIqQkBVCGjyCKgKARUhoCoENHkEVIWAihBQFQKaPAKqQkBFCKgKAU0eAVUhoCIEVIWAJo+AqhBQEQKqQkCTR0BVCKgIAVUhoMkjoCoEVISA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" width="672" /></p>
-</div>
-<div id="attr_eclipse_product" class="section level2">
-<h2>Eclipse Product</h2>
-<ul>
-<li>Description: The Eclipse product impacted by the exception.</li>
-<li>Type: Factors</li>
-</ul>
-<p>There are 31 different values found in the dataset for this attribute. The following table and bar plot only display the values with more than 500 occurrences:</p>
-<ul>
-<li>org.eclipse.epp.package.jee.product (count: 23078)</li>
-<li>org.eclipse.epp.package.java.product (count: 9374)</li>
-<li>org.eclipse.epp.package.cpp.product (count: 4343)</li>
-<li>org.eclipse.epp.package.committers.product (count: 3792)</li>
-<li>org.eclipse.epp.package.php.product (count: 2570)</li>
-<li>org.eclipse.epp.package.rcp.product (count: 1947)</li>
-<li>org.eclipse.epp.package.modeling.product (count: 1635)</li>
-<li>org.eclipse.platform.ide (count: 1124)</li>
-<li>org.eclipse.epp.package.dsl.product (count: 592)</li>
-</ul>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="attr_eclipse_build_id" class="section level2">
-<h2>Eclipse Build ID</h2>
-<ul>
-<li>Description: The Build ID of the Eclipse instance running when the exception occurred.</li>
-<li>Type: Factors</li>
-</ul>
-<p>There are 146 different values found in the dataset for this attribute. The following table and bar plot only display the values with more than 500 occurrences:</p>
-<ul>
-<li>4.5.1.M20150904-0015 (count: 13406)</li>
-<li>4.5.2.M20160212-1500 (count: 12831)</li>
-<li>4.5.0.I20150603-2000 (count: 9001)</li>
-<li>4.6.0.I20160606-1100 (count: 6390)</li>
-<li>4.6.1.M20160907-1200 (count: 2479)</li>
-<li>4.5.0.I20150203-1300 (count: 1100)</li>
-<li>4.4.1.M20140925-0400 (count: 610)</li>
-<li>4.5.0.I20150320-0800 (count: 521)</li>
-</ul>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="attr_javaruntime" class="section level2">
-<h2>Java runtime version</h2>
-<ul>
-<li>Description: The Java runtime of the host.</li>
-<li>Type: Factors</li>
-</ul>
-<pre class="r"><code>occurences.max.jrv &lt;- 500
-myjrvs &lt;- data.frame(table(myproblems$javaRuntimeVersion))
-myjrvs &lt;- myjrvs[order(-myjrvs$Freq),]
-myjrvs.top &lt;- myjrvs[myjrvs[,c('Freq')] &gt;= occurences.max.jrv,]</code></pre>
-<p>There are 452 different values found in the dataset for this attribute. The following bar plot only displays the values with more than 500 occurrences:</p>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-</div>
-<div id="using-the-dataset" class="section level1">
-<h1>Using the dataset</h1>
-<div id="reading-csv-file" class="section level2">
-<h2>Reading CSV file</h2>
-<p>Reading file from ../problems_extract.csv.</p>
-<pre class="r"><code>myproblems &lt;- read.csv(file.in, header=T)
-myproblems[,c(&quot;bug&quot;, &quot;status&quot;)] &lt;- NULL</code></pre>
-<p>There are <code>15</code> columns and <code>50872</code> entries in this dataset:</p>
-<pre class="r"><code>ncol(myproblems)</code></pre>
-<pre><code>## [1] 15</code></pre>
-<pre class="r"><code>nrow(myproblems)</code></pre>
-<pre><code>## [1] 50872</code></pre>
-<p>Names of columns:</p>
-<pre class="r"><code>names(myproblems)</code></pre>
-<pre><code>##  [1] &quot;summary&quot;            &quot;numberOfReporters&quot;  &quot;numberOfIncidents&quot; 
-##  [4] &quot;v1status&quot;           &quot;kind&quot;               &quot;createdOn&quot;         
-##  [7] &quot;modifiedOn&quot;         &quot;savedOn&quot;            &quot;osgiArch&quot;          
-## [10] &quot;osgiOs&quot;             &quot;osgiOsVersion&quot;      &quot;osgiWs&quot;            
-## [13] &quot;eclipseBuildId&quot;     &quot;eclipseProduct&quot;     &quot;javaRuntimeVersion&quot;</code></pre>
-</div>
-<div id="examples" class="section level2">
-<h2>Examples</h2>
-<div id="using-time-series-xts" class="section level3">
-<h3>Using time series (xts)</h3>
-<p>The dataset needs to be converted to a <code>xts</code> object. We can use one of the 3 dates</p>
-<pre><code>require(xts)
-myp.xts &lt;- xts(x = myproblems, order.by = parse_iso_8601(myproblems$createdOn))</code></pre>
-</div>
-<div id="raw-reporters" class="section level3">
-<h3>Raw Reporters</h3>
-<p>Let’s plot the number of reporters for each error report on a timeline.</p>
-<pre class="r"><code>xts.reporters &lt;- xts(as.integer(myp.xts[,c(&quot;numberOfReporters&quot;)]), order.by = index(myp.xts))
-autoplot(xts.reporters, geom='line') + 
-  theme_minimal() + ylab(&quot;Number of Reporters&quot;) + xlab(&quot;Time&quot;) + ggtitle(&quot;Raw number of distinct reporters&quot;)</code></pre>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="weekly-reporters" class="section level3">
-<h3>Weekly reporters</h3>
-<p>The previous plots used the <code>xts</code> object as it is, which is there is one point for each error report. When considering the timeline of the dataset, it can be misleading when there several submissions on a short period of time, compared to sparse time ranges. We’ll use the <code>apply.weekly</code> function from <code>xts</code> to normalise the total number of weekly submissions.</p>
-<p>Applied to the <code>numberOfReporters</code> attribute summed up with a week range, we get the following plot:</p>
-<pre class="r"><code>xts.reporters.weekly &lt;- as.xts(apply.weekly(xts.reporters, sum))
-autoplot(xts.reporters.weekly, geom='line') + 
-  theme_minimal() + ylab(&quot;Number of Reporters&quot;) + xlab(&quot;Time&quot;) + ggtitle(&quot;Weekly number of distinct reporters&quot;)</code></pre>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="raw-number-of-incidents" class="section level3">
-<h3>Raw Number of Incidents</h3>
-<p>Let’s plot the number of incidents for each error report on a timeline.</p>
-<pre class="r"><code>xts.incidents &lt;- xts(as.integer(myp.xts[,c(&quot;numberOfIncidents&quot;)]), order.by = index(myp.xts))
-autoplot(xts.incidents, geom='line') + 
-  theme_minimal() + ylab(&quot;Number of Incidents&quot;) + xlab(&quot;Time&quot;) + ggtitle(&quot;Raw number of reported incidents&quot;)</code></pre>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="weelky-number-of-incidents" class="section level3">
-<h3>Weelky Number of Incidents</h3>
-<p>The previous plots used the <code>xts</code> object as it is, which is there is one point for each error report. When considering the timeline of the dataset, it can be misleading when there several submissions on a short period of time, compared to sparse time ranges. We’ll use the <code>apply.weekly</code> function from <code>xts</code> to normalise the total number of weekly submissions.</p>
-<p>Applied to the <code>numberOfIncidents</code> attribute summed up with a week range, we get the following plot:</p>
-<pre class="r"><code>xts.incidents.weekly &lt;- as.xts(apply.weekly(xts.incidents, sum))
-autoplot(xts.incidents.weekly, geom='line') + 
-  theme_minimal() + ylab(&quot;Number of Incidents&quot;) + xlab(&quot;Time&quot;) + ggtitle(&quot;Weekly number of reported incidents&quot;)</code></pre>
-<pre><code>## Warning: Removed 1 rows containing missing values (geom_path).</code></pre>
-<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAPACAMAAADDuCPrAAADAFBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////isF19AAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nOzdB5gTVdvG8XvpRUBBsWIDQbGLYO+oWAIoIIgNBbGgoiI2VD5QEUWlKagoNmygoqKioIJgF3tBVBTLiyUQkF6WnW8mZSabnWWS2ZPnbDj3/7reN2dmkzmzWfZnsslMYDHGGAsVdO8AY4wVagSUMcZCRkAZYyxkBJQxxkJGQBljLGQElDHGQkZAGWMsZASUMcZCRkAZYyxkBJQxxkJGQBljLGQElDHGQkZAGWMsZASUMcZCVgkAXQjganfpW3uph7u0yF7qk/WW6qJmxpqewOSK7l82/QXsqXyjsUt3r7lDTPlmQzcQGF0I22RMrEoAqNUCOMhduNcmc7uS1NKr9tLzWW9o0wJ0+c72N4+o6s2Gryx22wOHZX97v2sTUFbQVQZALwaqr0otnOSo8XVqaYC98G/WG9q0ALVtqXryBctUb7ZsQKOsrlcpAM12ZxmTqDIA+pyt5KzkeE0dB9BhqS8dC+yV/YY2LUCPBp5VvU3fCChjIasMgP5jkzk0OZ4B1ATaJpfWbwZclv2GNi1AmwACDz+tigB6Sdeut2Q/j9+1CSgr6CoDoFZLIJIc3gj0tw1dmVj6Iqc/gW5igG4NrFe9Td/CA1rxCCgr6CoFoH3s34rk60atgS8OAF5PLI3J6U+gBDRcBJSxkFUKQJ+3nfwhPlpUhK023ABcmfjCOcDeyeuUfPPo0Pte+6PU7TLXVQTQta/ff+fz3wVfb+GEO0dMWeOMimfcP+TpzxPwJwAt+Wjc7WPfXruxXUz0y7g7fs3c8Jq3Hrj9vpeXeCvKBdS7te/WS+Y8cvuDs4o3uu1S20k3yW+LPz8+dOQrK4KxK3sXLn9l9J3Pf7XW57p+2/S/rzK2mr6zq+ZMvPPBab9vbJ8Yy2uVAtCoDej4+Ggi0M35O+geiS80Ay6PD0qe3c15cQlVOn7o3qrsOhfQ1acAO8yzUoDOB2otT93M5rl7qdmvA74pGbtlfFvHf5lYdyLwqZWxVft3/ZtlPao6V9vyVcuaskP8Fm1/dL4WB/TdxP5sfsea8nfRnuynksHVgSml74Il19WNX7PqGT/Hl59EslJvYyp96zJbXwL0tD7cN76y8Zji8rZdajsDk/M0KO9u/vDg+Kq6A9aWBdTezrjy7kL7x3pxzfiabUZsKHVt/2363lcZWy21s8vv3Cq+UHTmPIsxPVUKQK29nd98pwuBR6y1mwHxhxXOq0svOIN1Z6c8QbWHkrfxWZeibuUJwM6/OKPkI9ADgeeSN9uwI/Bmqcmd39O+qU1t/mt8XTmAvrdP8mpFM0anbrGn8wDLAfS5KqlVxywrdxcdum50VpQG9Jfd3GtuNt1ZUT6g7q3Lbt0B9NlqqZWd15az7VLbSTfJ724e735Xx92wUUAz70Jr7g7u1joXp1/bd5v+91XGVtN3dmEL9wZ1PrIY01LlAPQKYHfnsmTnOJ2R5G/ayylALnZ+10ZMm3ij83BkQuI2PuuS1K04Bmj6W3xNEtBhQJfkVO8C25V6euv8nvZDzZvf/mPWBfaWToqvKwfQFtjn2fmf32w/dNscOPvN32fYUuNBKw7oFrXRdOT7s0c0h/MourxdtCe7z36UtfNxn6XvwkoHgy7PzH6lb22gtvOAat7YsfXsq44duyr9eqVuXXbrNqBtaqHRDS+9/H9N7HV9y9l2qe18OnasLdDYsY/47+/b9qhGz6dfH90aqLcxQMvchUtsPzfr/9o7D9i3xJ3p1/bdpv99lbHV9J21/5FUP++ZWZOvth9et9xgMaajygHoZPsXZJF9+ZNtlH1h/3J3dlZfn/wT6HT7Ucmz8T82Lj4d2GpxeesS1C07wub4f4kNJwFdYP/aJV/Y7w1cW3py+/cU28yJD2+1f+fjv4vlAIr2q53RSOdhzxhnVHIIcLEVBxRoF59idTd7OK28XbQnq11l0H8Z37/9OKxm4nWzn+wHyMckVvr8DTT91j5bX+LsxQH/OOuWn2Y/TP6ivG2X3ovUnxV9trh+F2CH+B8gN9zkbLx8QMvchfaTiSbz47e8DKi/yru27zbLua/KbNXdWftHmnyp8d0qaT8sxkSrHIAuLko8Kx2TOPL9R/sRnmPHUck/gbYF7kpec2VLYER56+LULbVN2+vv5JdSLyIdnHo71Br7oeO3pSd3fk+fTAzX1gB+dQblAFr/r8RGqtoPiBKvHk1IvGnVAbRe8rD1tTsl35Xlt4vOZGMzv/2VWwCDkuNpSB2I5Q+oe2ufrTuAVk889LbW2A8Ae5W37dJ7kTLJZ4vOy3uzE6tKTtg4oBl34T/25WvJVbsCr3jX9t1mefdV5g/G3dkp3uuL+wNPWIzpqHIA6vwO3GBfdAResi9K7McoH1jWujqJP4E6z4/dZ92PAh3KWRenLmY/L9zf/cNhCtDhqafV9mPdVhlz27+nLVJPAfcBfnIuywG0a3KVLcKkxOgT4KjE7uD61A0eth/zrS1nF+3Jdi7zfPN1m+bUS+QlBwL/Fx/5A5q6td/WHUB7ptbZ/zHafEM52y69F0mT/LbYHTghtWrWRgHNvAvt6fdKndKgH3Crd22/bZZ3X5X5wbiAvgXsmvziiiVL3JftGBOtkgB6FXCk/eSuAaoudRYvBgZa1pzkE/tJwOnuNecC25WzzqEuup/3sMXyAP3DfgoY/2tiJ2BUxtz27+l5qfFBGwf09uSqPYHkK7/feIB+n7rB2mrAJ+Xsoj3ZuWW+e/uZ7JnuwvDUHxH9AU3d2m/rDqDu6ymrq8R30nfbpfciaZLfFncGJrrrmm8M0PNS65J34VnAEHdXotHl3rX9tlnefZW5VQ9Q5x4/N4f3CDOWjyoJoK8AtddZHwCHxBcnxwejgX2cpVtRurrlrLOpq7q3s7Ct+45H932ghycGS2qgWuZvnf17eltqHABoyg8b0MST+XRAV7tbbAa8WM4u2pMNKPPdn5W+cnLi78DlAZq6ot/WHUAXu1feCXi1nG2X3oukST5bLKkKfOFe7+SNAZp5F7YCni679+PK2WZ591WZH4z3PlDn9fmaJ93z8TqLMW1VEkCX2g+XPrYGAYmDpf+riiox57neFc7SVRm/XY4rfuus+Nsdezew/5farguojfFZVvzZdYfMue3f09R7dioC6HbeFk903ozlv4vO699lvvtT3DdIWvHDVxvHB/6Apm7tt3Ub0PrumQCdE7E8Wc62S+9F0iSfLS61/997wavPxgDNvAt3df/QmXFt322Wd1+V+cF4gK7un3jDVu1THl5kMaanSgKo807N4c7DxOQv3eHOHxl3iT+Qs6zLgXZj01vrvy4O6I0l4+z/fze5WRfQhUWotzp+hqMXMqe+Lo0YP0DrZAfo9t4Wj42/Ecd3F9MncyuF3LdAw/jAH9DUFf22viRlb7x2ccZ9t116L5Im+WxxVSns+m4M0My7cIeyL40nruW7zcD7qiyglvXjLfsltN3iQe8/G4xJVlkAvQbo/F81bJZ8QmY/pevlPC2OP7aw5To78/p+6xxAB1vWhqOA5snn096hnEc7rwT/XoSGZV5vCAB0GbIDtMh7Cr9j/B02vrvoC2ipp9lTgGbxwcYB9du68xR+pbvULP69+27bF1CfLZbUSH+63T4XQPcu+5+q5FN4v20G3ld+gNr9+Uyflg6hj5e5MWMSVRZAXwO2fRk4Nbn4CdDkxeSfQK3xZV85912XerI9r6aLhgfoGOd1kzuBS8vcKgDQz7MEFO7x2suLgAXl7KIvoAPSX+gZARwbH2wcUL+tO4C679FaZz/D/aycbfsC6rfFPdNf8NkzF0DtR753p1Yt//DDb7xr+W0z8L4qB1Cn748t9fcTxgSrLIAuq2rrCYxMLhY3AiKpY2nm2YS5r408d9xxD5Wzzv1r5RCgWuK9lB6g/1RBg7V7O39pzawcQFOneB6TLaDXpDYyLPGhJL676Avoq0AD961GbYCb4qONA+q3dQfQm1LrHgHqri9n276A+m2xZ9pbjpw3RWQPqP0zODz1xPqhxGvsyWv5bTPwvioD6Oh+/T5Jfs35A3ol+uQTZlKVBVDnNwRpbwXqFl9M4Fdie9U/uX5d08Q7dfzWuYCu2wdoE39bYdrZmNoCQ4EWZf9a5vd7eor7RvPVTbIFtM4/iVXLtgSuK28XfQFdsbn3Znf7oTgSR99sHFC/rTuA1ks6tGbHxFtffbedCWjD8rY4Fd5/STrkBOhc+9rvJHf1uMS75JPX8ttm4H2VBmjiL8TtE8cJxO++6u6PgzHZKg2gzmEn2N7lbbyzWLTYXSgaGgdxfbeUgX7r3LMxfVIleTBLGqD2w6Dqae9NLDVzmd/T/sCu8fM3rTkf2QKKI+KP9GL2M8raC8rbRV9ArWuBWlPjo++3A45OrNw4oH5bjx/KeXz8TCYrTkeSIb9tZwJabWU5W9zQInXYZcmdyAlQ5w1Ku8bvBucdENV+967lu82g+yoN0MTO2o9wN/s8vqbkZvsRPw+GZ1qqNIC+4fwunecu/uks7ptc2GA/o8ZBQ1977e5m9u/Z9HLXeecDvcp+/ur89qYBush510uRz8kj/X5PnU8Dbf7U3K8eaYWt22QHaEtgm4GvvHyT7V4Cb99d9Ad0hXPCpC5Pz5x8SU17x39MrAwA1GfrS+L/jdi+74RXBjknE+lT7rZL70V9oNWF5/jv7+wioEavZ6aOPcz+Uk6ALmhgE3fRI289Zj+aT5x+IHUtv20G3VcuoKmd/b0W0ODKF2a+dp+9lcTJShgTr9IAutzxbYK3vBdSfwK1W3KU+wbB6o+Vv84DdPlOiaPV00+o3M6+5nE+M/v9npack9p2/Y86ZQdov0Hu/vQvKXcX/QG1fm7qXrN+8olvEKA+W7cBbeqeZg+nryl326X34iznSw3899d6wj313BGf5gSo9f7m7tY6ri91Lb9tBtxX7lbdnX0QXl0z7yjGZKo0gFqHotRfsvoh/WTya4dvHf9NKTrn142sSzsjvfOA9qnSgDp/FfB7u4vv7+mq/9ssvvGjfrayBdR6bvv4TZpNdv8QUXYXywHUWnx1/ONIUfXM+alVQYCW3boDqPVGwsstR7s3Lrvt0tv578oda2xzpP/+WtZHh8ZX1bpm7Te5AWotODN+9mlsNzLzhMp+29z4feVu1dvZ1/ZO8nnkK3wCzzRVeQANqPijcUMemvlP4Lry+95+Brs8+GqpFk8fe8djuZ3rvPjtMbePm1PqZarsd3H1tDG3jZqc+bEbAROW3nocUGvDB2NvGzOjlL3Zb9tvf+c/fuc9E5fmtGPJYi+MuG3sB34HW/ptM7cfp/004ac3Hx4ybtr84GsylqcKBtCKd6vfeTw2qRKAMsakMgfQDbsAb+veifxGQBmTzRxAXwSabOJ/KyOgjMlmBqDFa6xft/NO57mpRkAZk80MQP8qalQENFqmez/yHAFlTDZDAI2/aWam7t3IdwSUMdnMAPS/Q2s37viV7r3IewSUMdnMAJQxxvIQAWWMsZARUMYYCxkBZYyxkBFQxhgLGQFljLGQEVDGGAsZAWWMsZARUMYYCxkBZYyxkBFQxhgLGQFljLGQEVDGGAsZAWWMsZARUMYYCxkBZYyxkG1ygK78T8u062OxFVomXhPTMq0Vi+m5o527en3wlfLS0pimO3ttrETTvLFVWia2rFVLNE1cHIstz+Hqmxygy/Xc8eujUT2fuLQ6qmVaKxrV9S98fVQXoLGopjt7TVQToNHoSi0T2w+EFmuauDgazeWhAQFVEwEVi4CKRUADI6BqIqBiEVCxCGhgBFRNBFQsAioWAQ2MgKqJgIpFQMUioIERUDURULEIqFgENDACqiYCKhYBFYuABkZA1URAxSKgYhHQwAiomgioWARULAIaGAFVEwEVi4CKRUADI6BqIqBiEVCxCGhgBFRNBFQsAioWAQ2MgKqJgIpFQMUioIERUDURULEIqFgENDACqiYCKhYBFYuABkZA1URAxSKgYhHQwAiomgioWARULAIaGAFVEwEVi4CKRUADI6BqIqBiEVCxCGhgBFRNBFQsAioWAQ2MgKqJgIpFQMUioIERUDURULEIqFgENDACqiYCKhYBFYuABkZA1URAxSKgYhHQwAiomgioWARULAIaGAFVEwEVi4CKRUADI6BqIqBiEVCxCGhgBFRNBFQsAioWAQ2MgKqJgIpFQMUioIERUDURULEIqFgENDACqiYCKhYBFYuABkZA1URAxSKgYhHQwAiomgioWARULAIaGAFVEwEVi4CKRUADI6BqIqBiaQH0t6nFBFQyAqopAiqTWYAua4gBBFQyAqopAiqTWYB+D7QnoJIRUE0RUJnMAvRr4GQCKhkB1RQBlcksQL8ATiSgkhFQTRFQmcwC9FOgLQGVjIBqioDKZBagHwFHE1DJCKimCKhMZgH6HnAEAZWMgGqKgMpkFqDvAocSUMkIqKYIqExmAfo20IaASkZANUVAZTIL0DeBVgRUMgKqKQIqk1mAvg7sR0AlI6CaIqAymQXoK8BeBFQyAqopAiqTWYBOBvYgoJIRUE0RUJnMAnQS0JyASkZANUVAZTIL0GeBXQmoZARUUwRUJrMAnQDsREAlI6CaIqAymQXoY8AOBFQyAqopAiqTWYA+AmxDQCUjoJoioDKZBeiDwFYEVDICqikCKpNZgI4BGhJQyQiopgioTGYBOgpoQEAlI6CaIqAymQXocKAuAZWMgGqKgMpkFqDDgFoEVDICqikCKpNZgN4BVCegkhFQTRFQmcwC9DagiIBKRkA1RUBlMgvQ/wNQQkAFI6CaIqAymQXozTag6wioYARUUwRUJrMAvdEGdDUBFYyAaoqAymQWoNfagK4goIIRUE0RUJnMArSfDehSAioYAdUUAZXJLED72oAuJqCCEVBNEVCZzAK0jw3ovwRUMAKqKQIqk1mAXmwDupCACkZANUVAZTIL0F42oH8QUMEIqKYIqExmAXq+DegCAioYAdUUAZXJLEDPsQGdT0AFI6CaIqAymQVodxvQeQRUMAKqKQIqk1mAnmED+j0BFYyAaoqAymQWoKfbgH5DQAUjoJoioDKZBWgHG9AvCKhgBFRTBFQmswA9xQZ0DgEVjIBqioDKZBag7WxAPyagghFQTRFQmcwCtK0N6PsEVDACqikCKpNZgB5jAzqLgApGQDVFQGUyC9AjbEBnEFDBCKimCKhMZgF6iA3odAIqGAHVFAGVySxA29iAvkFABSOgmiKgMpkF6AE2oK8RUMEIqKYIqExmAbqvDejLBFQwAqopAiqTWYDuaQP6IgEVjIBqioDKZBagu9uATiKgghHQrFu7SmVLFivdXLatsEHRMvGyqJZpV0Wjeu5o565eIT5nUxvQJ1Ytjmq6s5dFV2qZd7mNiZaJV636b5Gmie3f5NjGvp7xX+9KAOjyRSqLKt1aDvNGNc2sa1pdd7SW73hHG9AH9P2MNf6r1jSxvm856Ke8prRelQBQtfEpvExmPYVvYgP6OJ/CC8an8JoioDKZBei2NqDjCahgBFRTBFQmswBtbAP6EAEVjIBqioDKZBagDW1AxxJQwQiopgioTGYB2sAG9D4CKhgB1RQBlcksQOvagI4goIIRUE0RUJnMArSmDeg9BFQwAqopAiqTWYBWswG9i4AKRkA1RUBlMgvQIhvQIQRUMAKqKQIqk1GAFtt+4lYCKhgB1RQBlckoQNc6gP4fARWMgGqKgMpkFKArHUBvJqCCEVBNEVCZjAL0PwfQGwioYARUUwRUJqMAjTmAXktABSOgmiKgMhkF6L8OoP0IqGAEVFMEVCajAP3LAbQvARWMgGqKgMpkFKB/OIBeRkAFI6CaIqAyGQXoAgfQSwioYARUUwRUJqMA/dkBtDcBFYyAaoqAymQUoD84gF5AQAUjoJoioDIZBeh3DqDnEVDBCKimCKhMRgH6lQPo2QRUMAKqKQIqk1GAfu4A2o2ACkZANUVAZTIK0E8cQLsQUMEIqKYIqExGAfqhA+jpBFQwAqopAiqTUYDOdgBtT0AFI6CaIqAyGQXoDAfQUwioYARUUwRUJqMAfcsBtB0BFYyAaoqAymQUoG84gLYloIIRUE0RUJmMAvQ1B9BjCKhgBFRTBFQmowB92QH0SAIqGAHVFAGVyShAX3QAPZSACkZANUVAZTIK0IkOoAcRUMEIqKYIqExGAfq0A+iBBFQwAqopAiqTUYA+6QC6PwEVjIBqioDKZBSgjzqA7k1ABSOgmiKgMhkF6MMOoC0JqGAEVFMEVCajAH3AAbQFARWMgGqKgMpkFKD3O4A2JaCCEVBNEVCZjAJ0pAPozgRUMAKqKQIqk1GA3uMA2oSACkZANUVAZTIK0LscQLcloIIRUE0RUJmMAnSIA2hjAioYAdUUAZXJKEBvdQBtREAFI6CaIqAyGQXoQAfQBgRUMAKqKQIqk1GA3uQAuhkBFYyAaoqAymQUoDc4gNYmoIIRUE0RUJmMArS/A2h1AioYAdUUAZXJKECvcgCtQkAFI6CaIqAyGQXoFQ6gKCGgchFQTRFQmYwC9NI4oOsJqFwEVFMEVCajAL0oDugaAioXAdUUAZXJKEB7xgFdSUDlIqCaIqAyGQXoeXFA/yOgchFQTRFQmYwC9GygOhAjoHIRUE0RUJmMArQbUBeIElC5CKimCKhMRgHaBWgI/EVA5SKgmiKgMhkF6GnAtsCfBFQuAqopAiqTUYC2B3YGfiOgchFQTRFQmYwC9GSgBTCfgMpFQDVFQGUyCtATgX2AHwmoXARUUwRUJqMAPQ5oDcwloHIRUE0RUJmMAvQo4DDgGwIqFwHVFAGVyShADwfsB6FfElC5CKimCKhMRgF6MHAy8BkBlYuAaoqAymQUoK2BjsDHBFQuAqopAiqTUYDuD3QFPiCgchFQTRFQmYwCdB/gXGA2AZWLgGqKgMpkFKAtgQuBmQRULgKqKQIqk1GANkfRpcBbBFQuAqopAiqTUYA2RfUrgDcJqFwEVFMEVCajAN0Jta4CXiegchFQTRFQmYwCdAdsdg3wCgGVi4BqioDKZBSg26DB9cBkAioXAdUUAZXJKEC3QqMBwPMEVC4CqikCKpNRgG6BxrcAzxJQuQiopgioTEYBWg/bDQKeIqByEVBNEVCZjAK0Dna8HXiCgMpFQDVFQGUyCtAa2GUoMJ6AykVANUVAZTIK0KrYbRgwjoDKRUA1RUBlMgnQEmD34cADBFQuAqopAiqTSYCuB/YaBdxHQOUioJoioDKZBOhqYN/7gZEEVC4CqikCKpNJgK4AWj0I3EtA5SKgmiKgMpkE6FLgoIeBYQRULgKqKQIqk0mALgYOfRS4g4DKRUA1RUBlMgnQf4AjnwRuI6ByEVBNEVCZTAJ0IXDM08AgAioXAdUUAZXJJEB/B45/DriFgMpFQDVFQGUyCdBfgHYvADcSULkIqKYIqEwmAfoTcOpLwHUEVC4CqikCKpNJgM4FOk4BriGgchFQTRFQmUwC9Fug0+vAlQRULgKqKQIqk0mAfgl0nQZcTkDlIqCaIqAymQToZ0D3t4FLCahcBFRTBFQmkwD9GDh3JtCbgMpFQDVFQGUyCdD3gfPfA3oSULkIqKYIqEwmAToLuPBDoAcBlYuAaoqAymQSoO8Al3wCnE1A5SKgmiKgMpkE6HTgss+BMwmoXARUUwRUJpMAnQpc+RVwBgGVi4BqioDKZBKgrwL9nDfTE1C5CKimCKhMJgHqHAf/A9CBgMpFQDVFQGUyCdDngRudE4oQULkIqKYIqEwmAeqcC/QX4CQCKhcB1RQBlckkQJ8CBjknVSagchFQTRFQmUwC9Ang9v8BxxJQuQiopgioTCYBOh4Y+jdwFAGVi4BqioDKZBKg44C7o8BhBFQuAqopAiqTSYCOBYYvAQ4moHIRUE0RUJlMAnQ0MHoZ0JqAykVANUVAZTIJ0BHAmJXA/gRULgKqKQIqk0mA3g08tBbYh4DKRUA1RUBlMgnQO4HxxcCeBFQuAqopAiqTSYDeDjxuFaEFAZWLgGqKgMpkEqCDgaesqmhGQOUioJoioDKZBOhA4FmrBnYhoHIRUE0RUJlMAnQA8LxVB00IqFwEVFMEVCaTAL0OmGzVw3YEVC4CqikCKpNJgF4DTLE2x9YEVC4CqikCKpNJgF4JvG5tiS0JqFwEVFMEVCaTAL0cmGZtjc0JqFwEVFMEVCaTAL0EeMfaDvUIqFwEVFMEVCaTAO0NvGs1QR0CKhcB1RQBlckkQC8A3rd2QQ0CKhcB1RQBlckkQM8FPrKaoSoBlYuAaoqAymQSoGcBc6wWwGICKhYB1RQBlckkQLsCX1h7AlECKtamD+j0yMLgKy0de/5pvR5J/BBWRZMVh54ziwioTCYB2hn4xtoH+JuAirXJA1pyUxaALjo/EukSiVyy3FmYEEm2IOyc2URAZTIJ0I7AXGt/4H8EVKxNHdANkyNZADoo0vf3kp97RkY4C3cR0DxEQPNfBPjRag38TkDF2rQB/XR4z0gWgC6IdPrbvpgf6ejcG1flV85kBFQmkwA9CfjFOhj4lYCKtWkDOir+SDIQ0Ocig+KXfSPT7ef83dqvCzVZbhFQmUwC9HjgN+sw4CcCKtamDei/8+fP7+oC+teo80/rec/8slcbEnklfvl4ZIxlLYv0DjVXjhFQmUwC9Fjgf9ZRwDwCKtamDahT9xSgX3aORM6ORDrOSH3lhseTg/6ROfHLaZEhljUvMnj24EsHPpbnO4aAymQSoEcCfzuKfk9AxTIH0DXnRR5YZq14NNLxz+RXut6VHPSOzI1ffhC5zrJmRDrGn/if+WHGhlYtVdniRUo3l21LolE9E8eiWqZdquv7de7qJcIzHgz8svQY4Kuopjtb1w/Z/lcd0zPz0sWavuXA3+S1qgGdGEl4eV9kZCagXSN/xC+/jlxsWU9HIuN/XfnttZEui0pvaHmUscpcK2B+9DjgM907wvS3WjWg10a+j+gFk0YAACAASURBVF/+7P6N0wX0DBfQnpY19a43nXHxZZHRBJQVUvsBC6InAJ/o3hGmP+WAnh0Zeo/T0EinTEB7R36IX34Quca73YzIZaU3tKFYZctiSjeXbWuj0f+0TLwyqmXaYvvJnZ6J7bt6rfCM+wIritvHARWeOdmq6Hot866ORldombi4ePkiTRPbv8lLN/b1jL9GVxjQtRGv9dbr3kLUeXD6Wfyq0yO3e7dbEOmYz2M5+SKSTCa9iLQXsM46HfiALyKJZcyLSCXdIsu9lV86j0U7XuD8/zLnbUyvxtdOiNzvXeWvSLd8/msgoDKZBOgeQIl1BjCbgIplDKDW1cm/ga5dmPrX5T6Ffy75yPOayBvW6j59Ej+LTyP9Q8+ZRQRUJpMA3Q1VLOtMYCYBFcscQMdHhsYvJ0TGJ7/iArogcsZS++Kv9h1jlnVTZHJ85cDIhNBzZhEBlckkQHdFDcs6G3ibgIplDqDLukbGrbCK3+h42h/Jr7iAWoMiN620lvaNv+7+fuS06cVWbFSkx2qfrSmLgMpkEqA7orZl9QCmEVCxzAHUmtUhEjm3U6T9zNRXPEAX9Yh07NM+knjy/lAk0rF7JHLet6GnzCYCKpNJgG6PepbVE5hKQMUyCFBr/sgrOvUe9pvflZaO6dGx56Or4uOSjwf06NJvXJ6dIaAymQTo1tg8/tGcUwioWJs+oJU0AiqTSYA2wpaWdSnwEgEVi4BqioDKZBKgm2Nry7oceJGAikVANUVAZTIJ0M2wvWVdCUwkoGIRUE0RUJlMArQ2drKsa4BnCKhYBFRTBFQmkwCtjl0t6zpgAgEVi4BqioDKZBKgVdDcsm4EHiegYhFQTRFQmQwCdAOwh2XdAownoGIRUE0RUJkMAnQdsLdlDQLGEVCxCKimCKhMBgG6CtjPsm4DHiCgYhFQTRFQmQwCdDlwoGXdAdxHQMUioJoioDIZBOgS4GDLGgaMIqBiEVBNEVCZDAJ0EXCYZd0LDCegYhFQTRFQmQwC9G/gKMsaCQwjoGIRUE0RUJkMAvRP4FjLug8YSkDFIqCaIqAyGQTob8AJlvUAcDsBFYuAaoqAymQQoPOBkyxrHDCYgIpFQDVFQGUyCNAfgYhljQcGElCxCKimCKhMBgH6PXCaZT0B3ERAxSKgmiKgMhkE6DdAZ8t6CriegIpFQDVFQGUyCNAvgG6W9SxwLQEVi4BqioDKZBCgnwJnWdbzQD8CKhYB1RQBlckgQD8CzrOsycCVBFQsAqopAiqTQYC+B1xgWa8AlxFQsQiopgioTAYB+i7Q27JeBy4hoGIRUE0RUJkMAvRt4FLLehO4iICKRUA1RUBlMgjQacDllvUW0IuAikVANUVAZTIIUPvJ+1WWNRPoQUDFIqCaIqAyGQToK8A1ljUbOIeAikVANUVAZTII0MnA9Zb1AXAWARWLgGqKgMpkEKCTgAGW9THQlYCKRUA1RUBlMgjQZ4GBlvUZ0JmAikVANUVAZTII0AnAYMv6EjiNgIpFQDVFQGUyCNDHgSHxczJFCKhYBFRTBFQmgwB9BLjTsuYCpxBQsQiopgioTAYB+iBwT/y89O0IqFgEVFMEVCaDAB0DjIh/MlJbAioWAdUUAZXJIEBHAffFP5vzGAIqFgHVFAGVySBAhwNj458OfxQBFYuAaoqAymQQoMOAcZb1F3AYARWLgGqKgMpkEKBDgUftbxg4mICKRUA1RUBlMgjQ24AnLCsGtCagYhFQTRFQmQwC9P+Apy3rP+AAAirWJgJo7PkRr62t0P5IR0BlMgjQm4Hn7N9oYF8CKlahAzrlgmvt//90WwDN5yrYLbEIqEwGAXoj8IKNGLAXARWrwAG9Euhg338t4dRM+B9shSKgMhkE6LXAS/a0wB4EVKzCBvRdoPqV8VNxD557S/wJTMFEQGUyCNB+wKuWVQLsRkDFKmxAO6DxPPvifDQptqwTcaqSPZOJgMpkEKB9gTfsiypoSkDFKmxAWzhnkLWsJrjJ/v/70LLiuyUWAZXJIEAvA6bbF9WxMwEVq7ABrY1nrfjRv+9YzkfC1FWxY0IRUJkMAvRiYIbl/FLsQEDFKmxAt3UOvbAeRHXn7nsKWyjYL6kIqEwGAdoLmGVfbIZtCahYhQ3oYehl/38bnOgsXIN9FeyXVARUJoMAPR/4wL5ogMYEVKzCBvQW1Hhh/cT4SWisTzdHVyV7JhMBlckgQM8BPrYvGqERARWrsAFdXB+oCmy91Fp+tH35oZpdE4mAymQQoN2Bz+yLxticgIpV2IBa724J2I9C4+egwblKdkwoAiqTQYCeAXxlOS8M1COgYhU4oNbCRy4b/K19Gd3+1HHFCnZLLAIqk0GAdgKcX4UmqE1AxSp0QAs2AiqTQYB2AH6wL3ZGTQIqVmEDOmzYBm/ht2GPVWyXRCOgMhkE6CnAT/ZFU1QjoGIVNqBA2r/Rz7B9xXZJNAIqk0GAtgN+tZzD84oIqFibDqDF96JGBfdJMgIqk0GAtgV+ty9aAv8QUKkKF9BGdkDDRqnqALuo2728R0BlMgjQY4CF9sXe9gUBlapwAUXZ7lG3e3mPgMpkEKBHAP/aF/sDfxBQqQoX0IF2wM0D3W6bpm7v8h8BlckgQA8FnN/mA4EFBFSqwgU0vhaFdBL6UhFQmQwCtA3g/EodBMwnoFIVNqAXXVRQb55Pj4DKZBCgBwArrPgD0XkEVKrCBrSAI6AyGQTovsAa++JIYC4BlarQAS2Z/8ZULxU7JhQBlckgQPdM/EXrGOBbAipVgQP6/i6lXoZXsmcyEVCZDAJ0dxQ5F22BLwmoVIUN6PwaIKA5RUDFEge0Gao6F+2AzwmoVIUN6LlA+9e+m+umZtdEIqAyGQToLqjpXJwCfEpApSpsQFvgFD0/sYpHQGUyCNAmqONctAc+JKBSFTagNfGSmr2Rj4DKZBCg26K+c3E68B4BlaqwAd0Gs9XsjXwEVCaDAG2c+FjaLsAsAipVYQPaASPV7I18BFQmgwBtiK2ci27ADAIqVWED+m5R05ia3RGPgMpkEKANsK1zcTYwnYBKVdiAWiNwyBdKdkc8AiqTQYDWxQ7OxXnAGwRUqsIGdPLki4DDLhh4azI1uyYSAZXJIEBrYWfn4gLgdQIqVWEDmnlCUDW7JhIBlckgQKuhqXPRG3iFgEpV2IDWzUjNrolEQGUyCNAitHAuLgEmE1CpChvQAo6AymQOoMVAS+fyMuB5AioVAdUUAZXJHEDXAvs4l32B5wioVJsEoOsK8HhOAiqTOYCuBA5wLvsBTxNQqQoe0FfPalIb6603xxXYG0IJqEzmALoMaO1cXgs8SUClKnBAV3eOv/q+3hqNWk8o2S+pCKhM5gAaAw5xLm8AHiWgUhU2oCVnA1t3dQB9ymZ0qJo9k4mAymQOoP8ChzuXNwOPEFCpChvQWUDHZYnP5vy+DWr8ombXRCKgMpkD6F/A0c7l/wEPEVCpChvQ7th2eerDjZc3wcVK9kwmAiqTOYD+ARznXN4KjCGgUhU2oM1xo+V+OvxtaKNgv6QioDKZA+gC4ETncggwmoBKVdiA1sIEywV0UuJ8sgUSAZXJHEB/Bk5xLu8CRhJQqQob0AZ4wHIBHUVAgyOgYkkDOg9o71zeA9xDQKUqbEBboZflAtoR+yrYL6kIqEzmAPodcLpzOQK4i4BKVdiADkb1H1OAPgNcr2TPZCKgMpkD6FdAF+fyPuAOAipVYQO6ZEts99YGG9CSXy+sijoL1eyaSARUJnMA/Rw407kcC9xOQKUqbECtWbWBLYFWDQAUTVKyY0IRUJnMAfQT4Gzn8iFgEAGVqsABtb5pkzqZ8q7vqNgtsQioTOYA+iHQw7kcD9xCQKUqdECtkvcHnNR6/+OumFKsYKcEI6AymQPobMRfUrUeBwYQUKkKHtBCjYDKZA6gM4GLnMsJwPUEVCoCqikCKpM5gL4F9HEunwH6E1CpChXQAb6p3ME8R0BlMgfQN4ArnMtJwNUEVKpCBTTz8zj5qZzZRUDFkgb0NRtO5/JF4EoCKlWhAtooWXXHzao1nP/fq2tXlTuY5wioTOYA+rL91D15eRkBlapQAU32Qi0c8Oyv64t/n3wIar2oZMeEIqAymQOo/cjzBufSfiR6CQGVqrABnVsT/ZM/spJbUPu7iu+WWARUJnMAnQjc7Fy+AfQmoFIVNqA9cdiG1HjDEYn3ERdIBFQmcwB9Bvg/53I60JOASlXYgO6I272FIdi+YrskGgGVyRxAnwRudS5nAD0IqFSFDWh1POItjEP1iu2SaARUJnMAfRS4w7mcBZxDQKUqbEAb4RJvoTe2rtguiUZAZTIH0IeBu5zL94EzCahUhQ1oW2z+Y2o8rz5OquhOCUZAZTIH0AeAe53Lj4GuBFSqwgZ0AtDiw8Tww+bAcxXfLbEIqEzmAHo/MNK5nAN0JqBSFTagG44H0HbA+PED2tqDk/X89MJFQGUyB9CRwP3O5RfAaQRUqsIG1FrewTuOs7Ou+zBUBFQmcwC9F3jQufwGiBBQqQocUKvklXa1HT3rd3xTxV7JRUBlMgfQu4CHncvvgVMIqFSFDqjduh8//uzXDeV/vXJGQGUyB9AhwGPO5TygHQGVahMAtDAjoDKZA+itwJPO5XygLQGVioBqioDKZA6gA4FnnMsFwDEEVKqCBXTfffeNWrdmpHD/8h0BlckcQG8CJjqXfwBHEVCpChZQAH+VOa2ywv3LdwRUJnMAvQGIn9BxIXAYAZWqsAGtm5HC/ct3BFQmcwDtD7ziXP4LHExApSpYQGfPnr1W4e6IR0BlMgfQq4HXnMvFQGsCKlXBAlroEVCZzAH0CiD+XuilwAEEVCoCqikCKpM5gF4KvOVcrgD2JaBSFTqg6ydfNca5vCgyqrCe0RNQmcwB9CJgpnO5GtiLgEpV4ID+djjQzxl0BVr96H+dyhkBlckcQHsCs53LdcAeBFSqwgZ0bTOg/lhnNL6l/d9d2X+wFYuAymQOoD2A+KkdS4DmBFSqwgZ0BHB18pl7yRjgvorvllgEVCZzAD0b+DQ+KEJTAipVYQN6FI71fmJd0a6C+yQZAZXJHEDPBD6PD6pjZwIqVWEDul3iFLKJHsFOFdoj2QioTOYA2gX4Oj6ohSYEVKrCBrRG4vwziZ5GzYrtkmgEVCZzAD0N+C4+qIvtCKhUhQ3oTrjKW+iHHSu2SwGtWaGyJYuVbi7blkWjMS0TL41qmXZFNKrnjnbu6mWi850CfBkf1MfWmu7s/zTNa/+rXqpn5hVLF2maeHnAb3LGf739AT0fW/2SGv++Fc7KK6DLF6ksqnRrOcwb1TSzrml13dHi33FbYE58sAUaafvXpWteY37KaRNv/Jtekw2gnxehxbTEs4b39gFm5RVQtfEpvEzmPIU/EVgQH2yFLfgUXqrCfgpvDQLQsvv1A89vbQ8uVbJjQhFQmcwB9Djgz/hgG9QnoFIVOKAlw2umzgVa1L9YyY4JRUBlMgfQo50TPDrtgDoEVKoCB9Sy/hx4UA1bz90v+1bBTglGQGUyB9DDgcR9vBNqElCpCh5Qu5L/FhfUg894BFQmcwA9GIjFB7uiOgGValMAtCAjoDKZA2hrIPGjbY4iAipVoQNaMv+NqV4qdkwoAiqTOYDuDyQU2QP4V3RmNwIqlxpA39+FHyqXUwRULGlA9wESJ9bZC1goOrMbAZVLCaDza/BTOXOLgIolDWhLYEN8sF/q/UziEVC5lAB6LtD+te/muqnZNZEIqEzmANoCRYlBK+A30ZndCKhcSgBtgVP0/MQqHgGVyRxAm6JaYtAGmC86sxsBlUsJoDXxkpq9kY+AymQOoDuhVmJwKKDp020IqFxKAN0m8SkwhRgBlckcQHdA3cTgCOAH0ZndCKhcSgDtgJFq9kY+AiqTOYBugwaJwdGpE4OKR0DlUgLou0VNY2p2RzwCKpM5gG6FRolBW+Ar0ZndCKhcat4HOgKHfKFkd8QjoDKZA+gWaJwYnJj6cCTxCKhcSgCdPPki4LALBt6aTM2uiURAZTIH0PrYLjE4GZgjOrMbAZVLCaAA30ifWwRULGlA66BJYhABPhKd2Y2AyqUE0LoZqdk1kQioTOYAWgO7JAanAe+LzuxGQOXi2Zi0TEtAxZIGtCqaJQadtX24DQGVi4BqmZaAiiUMaAmwe2LUFZghObMXAZWLgGqZloCKJQzoemCvxOgs4C3Jmb0IqFwEVMu0BFQsYUDXAPsmRucCb0rOnLYPBFSsCgLa1TeVO5jnCKhMxgC6AmiVGJ0PvC45sxcBlauCgGa+gYlvY8ouAiqWMKBLgTaJ0YXAFMmZvQioXARUy7QEVCxhQBcDhyZGF0PXScoIqFwVBHSJbyp3MM8RUJmMAfQf4IjEqA/wvOTMXgRULr6IpGVaAiqWMKALgWMSo77ARMmZvQioXARUy7QEVCxhQH8Hjk+MrgaekZzZi4DKRUC1TEtAxRIG9FegXWLUH5ggObMXAZWLgGqZloCKJQzoT8CpidENwGOSM3sRULkIqJZpCahYwoDOBTokRjcB4yVn9iKgchFQLdMSULGEAf0W6JQYDQTGSc7sRUDlIqBapiWgYgkD+iVwRmI0GBgrObMXAZWLgGqZloCKJQzoZ0D3xGgIcJ/kzF4EVC4CqmVaAiqWMKAfA+cmRncCoyRn9iKgchFQLdMSULGEAf0AOD8xuhu4V3JmLwIqVwUBHdj3T/v/+/YtVrhLohFQmYwBdBZwYWI0HBgmObMXAZWrgoDWwnRnLWQ/NUFhBFQmYwB9B7g4MRoNDJWc2YuAylVBQLdFt//WrwdWr09P5Q7mOQIqkzGATgcuS4zGALdLzuxFQOWqIKDdeTq7UBFQsYQBnQr0TYweBAZLzuxFQOWqIKC/tySgYSKgYgkD+irQLzF6BBgoObMXAZWroq/Cr542ZvRoYMTo9BTuX74joDIZA+hLwHWJ0WPAAMmZvQioXErexsQXkXKNgIolDOgLwI2J0ZPADZIzexFQuZQAescdG9TsjXwEVCZjAH0OuCUxega4VnJmLwIqF99Ir2VaAiqWMKBPAYMSo4nuX0OlI6ByqQJ06f2dWzRu2KzDqEL6QCSLgEplDKBPALclRvaT+SslZ/YioHKpAbTkwc1Sr8Bv9pCeH17ICKhMxgA63n37/MvA5ZIzexFQudQAOsSWs/6Bnbsd1MAe3K1kx4QioDIZA+g49wDOV4FLJWf2IqByKQH06ypoNDJ+160a2QhVf1CxY0IRUJmMAXQsMDwxmgpcJDmzFwGVSwmgvVH9/dR4djVd/90NFQGVyRhA7wOS74OeDvSSnNmLgMqlBNDdcIG30BPNK7ZLohFQmYwBdAQwJjF6xz2xnXQEVC4lgNbBg97CONSp2C6JRkBlMgbQu4GHEqN33VMrS0dA5VICaG084C08TECDI6BiCQN6J/BIYvSe++Ee0hFQuZQA2iz9uUovPoUPjoCKJQzo7cDjidFHQDfJmb0IqFxKAL0I1d5Njd+rnjqhbEFEQGUyBtDBwITE6FOgi+TMXgRULiWAflcFW9y7whmtHNEIVb5TsWNCEVCZjAF0IPBsYvQ5cJrkzF4EVC41b6QfBqDegZ06HVjPHtypZMeEIqAyGQPoAOD5xOhroL3kzF4EVC5Fx8KPr5c6lLPeOB7KGRwBFUsY0OuByYnRd8CpkjN7EVC5VJ1M5L8xnXffeuvdO9+/VMFOCUZAZTIG0GuAKYnRD0A7yZm9CKhcPJ2dlmkJqFjCgF4JvJ4Y/QwcLzmzFwGVi4BqmZaAiiUM6OXAtMToV+BYyZm9CKhcBFTLtARULGFALwHeTox+B46SnNmLgMpFQLVMS0DFEga0N5B8T/RC4HDJmb0IqFwEVMu0BFQsYUAvAJJnJvsHOERyZi8CKhcB1TItARVLGNDzgI8So0VAG8mZvQioXARUy7QEVCxhQM8C5iRGS4FWkjN7EVC5CKiWaQmoWMKAdgW+SIyWA/tJzuxFQOUioFqmJaBiCQPaGfgmMVoF7C05sxcBlUsJoKNHv65mb+QjoDIZA2hH4PvEaC2wh+TMXgRULiWAVsVhavZGPgIqkzGARoAfE6MNQAvJmb0IqFxKAN0bW6vZG/kIqEzGAHoS8EtyWIRmkjN7EVC5lAA6CZilZnfEI6AyGQPoCcBvyWE17Cw5sxcBlUvNi0j3VW3ydkGdxc6NgMpkDKDHAv9LDmuiieTMXgRULiWATp06qDoOOO/6W5Op2TWRCKhMxgB6JPB3clgb20vO7EVA5VICKDJSs2siEVCZjAH0MGBRclhP10sDBFQuJYDWzUjNrolEQGUyBtCDgNR3ujm2lJzZi4DKxTfSa5mWgIolDOiBwPLksBEaSs7sRUDlIqBapiWgYgkDuh+wOjlsjPqSM3sRULlUArquAF+IJ6AyGQPo3sC65HBbaPpjFgGVSxWgr57VpDbWW2+OiynYKcEIqEzGALoHkNJrB9SSnNmLgMqlBtDVneOvvq+3RqPWE0r2SyoCKpMxgO6GKqnhzqghObMXAZVLCaAlZwNbd3UAfcpmdKiaPZOJgMpkDKC7onpq2NSzVDYCKpcSQGcBHZdZDqDW921Q4xffK1XOCKhMxgC6I2qnhrt5z+ZlI6ByKQG0O7ZdbiUAtZY3wcVK9kwmAiqTMYBuj3qp4R6J3wj5CKhcSgBtjhutFKDWbbo+CSZUBFQmYwDdGpunhnsBaySndiOgcikBtBYmWC6gk3S9+y1UBFQmYwDd0jv8aF9AjycEVC4lgDbAA5YL6CgCGhwBFUsY0M29A+D3B3L53VIXAZVLCaCt0MtyAe2IfRXsl1QEVCZjAN3MOwVTa0DPu6IJqFxKAB2M6j+mAH0GuF7JnslEQGUyBtDa2DE1PBjQc28TULmUALpkS2z31gYb0JJfL6yKOgvV7JpIBFQmYwCtjl1Tw8OAvySndiOgcqk5EmlWbWBLoFUDAEWTlOyYUARUJmMArYLmqeFRwJ+SU7sRULkUHQv/TZvUyZR3fUfFbolFQGUyBdCStM8yPsb7eCTZCKhcqk4mUvL+gJNa73/cFVOKFeyUYARUJlMAXQfsnRq3BeYLTu1VAUCL7+pi16GtXfvPc70xAQ2M5wNVEwEVSxbQVcB+qXE79yPihasAoJPSPpmnXa43JqCBbQTQhe+88OpHuu6/0BFQmUwBdDlwYGp8CjBXcGqvCgA6Kg3Q/YKvXjoCGlh5gK6+u3n8Pq/WdkphnVWZgMpkCqBLgINS4wjwreDUXhUAdBhw85w5X82fP79m7p9qT0ADKwfQ31p6/93qtErJjglFQGUyBdBFwGGp8WnAl4JTe1UA0MHAk4nRNrkfUUhAA/MHdPXu9mPPc0a/PmV4pyLg1EJ6DEpAZTIF0L+Bo1LjzsBnglN7VQDQAcDzidEeKMr1jiOggfkDOtx+3pJ8vfHbvYCJFd8tsQioTKYA+j/g2NS4K/CJ4NReFQC0H/BqYnSI9wH32UZAA/MH9BBs/3dq/EvD3F+90xgBlckUQH8DTkiNzwI+EJzaqwKA9gHeSoxOBn7K8cYENDB/QDfHtd7CxWhcsV0SjYDKZAqg84GTUuNzgNmCU3tVANALgPcSo7Nyf/xMQAPzB7Rm+rP2R3R9lFaoCKhMpgD6IxBJjXsAMwWn9qoAoN2BOYnRZcC0HG9MQAPzB7Qp7vYWBub+9geNEVCZTAH0e6BjatzTfTosXAUAPd1969XNwHM53piABuYP6JU43D2Cc93+/Eyk4AioWLKAfgN0To0vAt4UnNqrAoCeDPycGN2L+GnSc4mABuYP6N+N0Sf5r3Td+aj3c8V3SywCKpMpgH4BdEuNLwFeF5zaqwKAHuueQWo8cEeONyaggWUCuj7RZ03Q9L6P/41+Mnpn1NfzX92QEVCZTAF0DnBWanwZ8Irg1F4VAPRQIEnRZKS/NJxVBDSwTEBRth0OOsj3ppUzAiqTKYB+BJyXGl8JTBac2qsCgB7gfhDeTODCHG9MQAPLAlA7lTuY5wioTKYA+h5wQWrczz2qR7gKANoS2JAYfQV0yfHGBDSwTBtH+6ZyB/McAZXJFEDfBXqnxtcCzwpO7VUBQHdx34T4O9A2xxsT0MAK6cFlVhFQmUwB9G3gktT4euApwam9KgDotu4pRJYDrXK8MQENjICqiYCKJQvoNODy1Pgm4AnBqb0qAOgW3nGEaR+Pl2UENLDyAF3z7WtTvFTsmFAEVCZTAH0duCo1HgiMF5zaqwKApn0q81bYIscbE9DAygH0wc35IlJOEVCxZAGdAlyTGg8GxglO7RUe0JIi70NFm6PKhtxuTUAD87fxNb4Kn2MEVCxZQCcD16fGt+d+LI+awgO6BtgnNW4D5PgzI6CB+dt4JND77Xk/uanZNZEIqEymADoJGJAaDwXuF5zaKzygS9M+keRE4Jfcbk1AA/MHtDH6qNkb+QioTKYA+iwwMDUeBowUnNorPKDpJ9TvlvMJ9QloYP6A1sI7avZGPgIqkymATgAGp8bDgXsFp/YKD+gC4MTU+BLg7dxuTUAD8we0eepjAAovAiqTKYA+DtyeGo8ChglO7RUe0B+ADqnxjTkfSEVAA/MH9Ab0ULM38hFQmUwB9BHgztT4vtzPZ6Sm8IB+AXRNjYfl/CYCAhqYP6D/7YLhOb7jobJEQGUyBdCHgHtS47HAbYJTe4UH9MO0c6GMA+7K7dYENLBy3qG0YDvsf+39Y1Mp2TOZCKhMpgA6BhiRGtsCDRKc2is8oDOAi1Lj54Ebcrs1AQ3MH9CSa/k+0NwioGLJAjoKuC81Hg/cIji1V3hApwJ9U+O3ketnSxDQwPxtHMc30ucYARVLFtDhgPsE7HHgRsGpvcIDOhm4LjX+PO3k+tlFQAPzt3F/VLt13srVbmp2TSQCKpMpgKa/8jIhTSPRwgP6TNrbWH9Ne0tTdhHQwPwBreMdfVFoEVCZTAF0aNoJaAc8SwAAIABJREFURJ5JOy5etPCAPpr2xoGlQJvcbk1AA/MHdDPMUrM38hFQmUwB9La0U9hNBK4UnNorPKBjgeGpcUlV7JbbrQloYP6Attb02S8KIqAymQLoIODp1PjFtHODihYe0HvT/oRrNcSWud2agAbmD+hD6LTRn9iqaLLijV3LbunY80/r9UjaD+F/nW7KYe9CREBlMgXQW4DnUuOXgEsFp/YKD+gQ4FF3YVdUy207BDQwf0A3nIbrNvbK0YRIsgUb3/qi8yORLpHIJctTK0qujxBQpRHQ/HYj8EJqPCXt85FECw/oQOAZd6EVkNs/UgIamD+gkye1RJPuNwxIlfn1u7IEdFCk7+8lP/eMuG9Ffj1CQNVGQPPbtcBLqfFUoKfg1F7hAb0u/ZOY2wK/5XRrAhqYP6BBH2t8VZCciRZEOv1tX8yPdEzeG9EzCKjiCGh+6wfvxDrToOkcEeEB7Qu84S50Ab7K6dYENDB/QBtllPHlkm7t12Wz8eciiSPf+kamJ243KDKCgKqNgOY3W6CpqfHbwDmCU3uFB/QiYKa70Dt9IZsIaGChDjJaFin1p6C/Rp1/Ws975pe93pDIK/HLxyNj4pczIsPeI6BqI6D57TJgemo8EzhTcGqv8ICeB3zkLpR6Pp9NBDSwUIDOiwyePfjSgY8lvscvO0ciZ0ciHWekvnzD48lB/8ic+OW0yBDnYmn37ksJqOIIaH67GJiRGs8GzhCc2is8oGcAX7oLQ3P9VFECGlgoQGdEOsZfQjrzQ3thzXmRB5ZZKx6NdPwz+eWuqZNm9Y7MjV9+EIkfAXdXZIblA+iqpSpbvEjp5rJtSTSqZ+JYVMu0S3V9v85dvURwNvsh3NTU+D2gveDUXuF/yCcBn7oLw4Hbc7q1/a86FnbmCrZY07/rwN/ktdkA+lNGGV9+OhIZ/+vKb6+NdFlkWRMjCS/vi6Q+L8YFtGvkj/jl1xHnLDAfRwaW+AG6PMpYZe1M4PXU+APgJJ37EqJjgM/dhYeBqzXuy6ZRxts7Q70KP/WuN52L4ssioy3r2sj38ZU/u38YdQE9wwW0p2WtOK/LPxYBZYWV/Rz4zdT4E+AEnfsSokOA792FSUAvjfuyaaQC0FQzIpdZ1tmRofc4DY10ygS0d+SH+OUHkWssa3T8FSUfQDcUq2xZTOnmsm1tNPqflolXRrVMW2w/udMzsX1XrxWczX4E+mlq/AXQTnBqr1XR9SFv2RpY7C58DHTP6daro9EVISeuaMsXaZrY/k1eurGvZ/w12t/GKckmj+rTEKf8Vd7LBQsiHYvXRrzWO2+UTxV1HpwmPkZ1euR2a16k3wZ/QNXGF5FkMuVFpPRXYb4Gjhec2iv8i0j7AN4f7X4GTs7p1nwRKbDAF5H+64WTyvt4pL8i3UpKukWWe2u+dB6LdrzA+f9lztuYEu9BnhC535qVBm3m31RVRkBlMgXQTsC3qfH3wLGCU3uFB7Q5qngLi4FDcro1AQ0s+FX49Udlfpbf6j59Enfrp5H+lnV18m+gaxemfpXdp/DPRRKfCHtN5A3rw3PidY10POccn7eMKouAymQKoB2AH1LjecBRglN7hQd0R9TxFoqrYPecbk1AA8vibUyP4tCMNTdFEu/HHRiZYFnjI0PjCxMiqfeYuYAuiJyx1L74q33HWOqmfAqvOAKa304F3CdMPwGHCU7tFR7QrdAwbakBts7p1gQ0sCwA/aTUz8Dp/chp04ut2KhIj9WWtaxrZNwKq/iNjqf9kfyyC6g1KHLTSmtpX+fF+mQEVHEENL+1A35NjX8FDhac2is8oPWwXdrSTqiR060JaGBZADoRdTNXPRSJdOweiZwX/+vQrA6RyLmdIu3dw2w9QBf1iHTs0z7Sx/spEFDFEdD81hb4PTX+HWgtOLVXeECrY9e0pf2AnEAkoIEFA7r6QOyfua7k4wE9uvQblyRj/sgrOvUe5nuirKVjenTs+egqbwUBVRwBzW/HAAtT4/+h7K+CSKEBLQZapi3a38yf5V7XJwIamD+gz7g9PXQPoL+aXROJgMpkCqBHAP+kxn8D+whO7RUa0BXAAWmLp6e9pSCbCGhg2byRvrGu7yVMBFQmUwA9FHD/+UeBPQWn9goN6CKUegW4JzA7l5sT0MCCAd0sktOjft0RUJlMAbQN4P4+xYpyfBuQqkID+idwXNriNcArudycgAbmD+hfXn+X9y76ShoBlckUQFsBK1LjWFU0E5zaKzSgPwOnpC3eBjxe7nV9IqCBhTqdXWWOgMpkCqD7AmtS41gN7CI4tVdoQL8FOqUt3g+MKPe6PhHQwAiomgioWLKA7gm408VqY0fBqb1CA/opcFba4tPAwFxuTkADI6BqIqBiyQK6O+DiFdus1NvS5QoN6OzSnyM6Feiby80JaGCZgNb1TeUO5jkCKpMpgDZDVXccy/VQSFWFBnQ60Cdt8SPg3FxuTkADywQ080ygGz0faGWMgMpkCqC7oKY7jjXEloJTe4UGdArQL21xHhDJ5eYENLBMG8/K7EgCmk0EVCxZQJuknc4othU2F5zaKzSgk4ABaYv/AofncnMCGliAjeuH1wXqDKvQHslGQGUyBdDtUN8dx7ZBPcGpvUID+iRwa9riuqLcjgQgoIFtHNBP9rcffrb3Pcq9skZAZTIF0MbYwh3Htk8/u6ZgoQEdB5R69JPjq2AENLCNAbr0siJgh8kV3SPZCKhMpgDaEFu549iOOZ4OTlWhAR0NjE5f3gG1c7k5AQ2sfEBLJm4LVL16eblXqJwRUJlMAbQBtnHHsV3SXpKXLDSgw1D64yT2TjssIIsIaGDlAvrLSfaz94O+ULBHshFQmUwBtC52cMexZmlvCpUsNKCDgSfTl48E/s7h5gQ0sHIAXXtHbaDBmAI7Dt6JgMpkCqC1sLM7ju0OFAvO7RYa0AHApPTlDsDcHG5OQAPzB3T2nvbDzzP/UrNHshFQmUwBtBqauuNYy/QPCRYsNKD9gCnpyz2AD3K4OQENzA/Qxb1sPptNU7VHshFQmUwBtAgt3HFsb2DVRq6bt0ID2geYnr58FfBaDjcnoIGVBbTkia2AGjevVrdLohFQmQwBtNRnYsT2B7T8lEMD2hN4L315EDAhh5sT0MDKAPrDMfbDz2N+8LtuQURAZTIE0LXpn+IROxDQ8l2HBvQsYE768qiMtzUFREADywR0YA1gy8e1vNSoJgIqkyGArkz/HLlYG2CR3NxeoQHtlPEhSE8Cg3O4OQENzO9kIjvtm5nKHcxzBFQmQwBdlv5JxrFDc3sXkLJCA3oy8HP68qvA1TncnIAGxrMxqYmAiiUKaAw4xFs4Avif3NxeoQE9NuNzjN8Hzs/h5gQ0sEwbD/NN5Q7mOQIqkyGARtPPXxQ7Gvhdbm6v0IAemvE3h++BjjncnIAGVkgPLrOKgMpkCKB/AUe7CzH7Ad0vcnN7hQb0gLSPxHOyv52jcrg5AQ2MgKqJgIolCugf6Z8LHDsB+Elubq/QgLbMOHRqdfqbCoIjoIERUDURULFEAV0AnOguxE4CtLzBLzSgu6J66RW10CSHmxPQwAiomgioWKKA/gyc7C7ETs14V5BUoQFNPx10vG2xWQ43J6CBEVA1EVCxRAGdB7R3F2IdgK/k5vYKDWhDNC69wn5Ovy77mxPQwAiomgioWKKAfgec7i7ETgc+l5vbKzSgZT7I/jAgh38wBDQwAqomAiqWKKBfA13chVgX4BO5ub3CAlpShOal15wK/Jj97QloYARUTQRULFFAPwfOdBdi3YAP5eb2CgvomjIvup8DfJz97QloYARUTQRULFFAPwXOdhdiZ2Wc3EiqsIAuBdqUXnMF8Eb2tyeggRFQNRFQsUQB/RDo4S7EzgVmys3tFRbQv4EjS68ZCDyT/e0JaGAEVE0EVCxRQGcDPd2F2AXA23Jze4UFdAFwQuk1w4Ex2d+egAZGQNVEQMUSBXQmcJG7EOsFaPmghrCA/pD+Jqx4jwG3Z397AhoYAVUTARUrT4D6fwTDW8Cl7kLsImBqPuYOKiygXwJnlF7zEtA/+9sT0MAIqJoIqFj5AXRs9R5+q98ErnAXYpdmfEabVGEB/Qg4t/Sad4Fe2d+egAZGQNVEQMXKD6CtAL/fm9eAq9yF2BXAS3mYO7CwgM4Eepde8zXQOfvbE9DACKiaCKhY+QF0d2Cez+pX0p/yxq4EXsjD3IGFBXQq0Lf0mj+BY7O/PQENjICqiYCKlR9Adwbe9Vn9InCDuxDrBzyXh7kDCwvoZOC60mtWpH/GU2AENDACqiYCKlZ+AN0WmOizeiJwk7sQuxZ4Og9zBxYW0GeAgRmramDn7G9PQAMjoGoioGLlB9At/D/wtxRBsRuBJ/Mwd2BhAX0UGJKxqjEaZH97AhoYAVUTARUrP4DWTn+o6fUkcKu7ELsJeDQPcwcWFtCxwPCMVS1QVOx7Xb8IaGAEVE0EVKy8AFpS5P/+nseAO9yF2EDgYfVzBxcW0OHA2IxVBwOxrG9PQAMjoGoioGLlBdC1ACI+6x8G7nIXYrcCD6qfO7iwgN5R9hHzScD8rG9PQAMjoGoioGLlBdD/UObERfEeBO51F2JDgPvVzx1cWEB9Th3SHZiT9e0JaGAEVE0EVKy8APqPDeiOPuvvB0a6C7GhwCj1cwcXFtDrgMkZq/oA07O+PQENjICqiYCKlRdAf7MBreWzfmT6Y87Y3WVflBEpLKB9yx67P8D/7Vr+EdDACKiaCKhYeQF0ng0olpZdfy/wgLsQGw4MUz93cGEBvQiYkbHq7lz+jEtAAyOgaiKgYuUF0K8dQH0+8/2u9NfdY6OAoernDi4soOeV/QiSR3L5FghoYARUTQRUrLwA+okDqM+xnHcAj7kLsftzOpumusIC2hX4MmPVi8D1Wd+egAZGQNVEQMXKC6CzHEB9/jh4a/qxR7EHgMHq5w4uLKAdyj6qnpF+huigCGhgBFRNBFSsvAA6zQHU5xX2/0t/I1BsXNljy0UKC+gJwIKMVWXPsbyRCGhgBFRNBFSsvAD6igPogLLrb05/XBp71Pc6+S8soEcCf2es+g04PuvbE9DACKiaCKhYeQF0kgOoz7GcNwAvuguxx3P5A6LCwgLapuw7C/4DDsz69gQ0MAKqJgIqVl4AfRL+x3L2B152F2ITcvpEIXWFBXQfYE3GqpJqaJr17QloYARUTQRUrLwAOs4BtHXZ9VcDr7kLsWfTP+BDsLCANkeVMusaoVHWtyeggRFQNRFQsfIC6Gj4H8t5BfCmuxCbmP4Rc4KFBXRH1C6zrhmqZr0xAhoYAVUTARUrL4AOcwCtWVaWPsBb7kLsBaCP+rmDCwtoY2xRZl1r/0/P842ABkZA1URAxcoLoLc5gKLst3QRMNNdiL2Uy5soFRYW0PrYtsw6n7c2lRsBDYyAqomAipUXQG+G/7GcPYHZ7kLs1Zw+VV1dYQGtgV3KrDsD+CLb2xPQwAiomgioWHkBtD+wld+xnD3SjyaPvQ6cr37u4EICWgy0LLPyYuCdbDdAQAMjoGoioGLlBdDLgQP9PrP4bOATdyH2JnCO+rmDCwnoCuCAMiuvz+Gz7QloYARUTQRUrLwAeiHQye9YzjOBz92F2NtAd/VzBxcS0EXAoWVW3pnD5zoR0MAIqJoIqFh5AfQc4Gq/4zS7AF+7C7GZQFf1cwcXEtA/gWPLrHwoh3OaEtDACKiaCKhYeQH0DGCk3ytEpwPfuQuxWfbjVPVzBxcS0J+Bk8usnJTD8fwENDACqiYCKlZeAG0PvASc6rd+nrsQ+wDoqH7u4EIC+i1wepmVbwGXZrsBAhoYAVUTARUrL4CeAHzhdyznKcDP7kLsY//PPs57IQGd4/cn28+AM7PdAAENjICqiYCKlRdAjwT+qulzLOeJ6W87j83xe04sUEhA3wN6llk5H2iX7QYIaGAEVE0EVKy8AOqc+K2Jz7GcxwF/uAsx+0HqCernDi4koG/5HXkaAw7KdgMENDACqiYCKlZeAN0XWHOgz7GcR9uPTN2F2NfAcernDi4koFOAfmVWbqiC5tlugIAGRkDVREDFygugLVBUcorPsZyHA94dHPsOOFr93MGFBNT/BffN0TjbDRDQwAiomgioWHkBdCfUco57n5m5/hAg5i7E5gGHq587uJCAPun7GXi7oEa2GyCggRFQNRFQsfIC6NbY3LrR51jO1oD3c439BByifu7gQgI6Drir7NoDgBVZboCABkZA1URAxcoLoA2wjTXS51hOWxuPkNgvQBv1cwcXEtDRvh80Wup1sY1HQAMjoGoioGLlBdBa2Nl61udPhvsAa92F2G9+Z+cQKCSgw4BxZdd2Tj86deMR0MAIqJoIqFj5ALSkCC2sGT5vm2wJFLsLsf8B+yqfO4tCAnor8GTZtRf6nbbPPwIaGAFVEwEVKx+ArnZknOtzLGcLFHkLsb+AvZTPnUUhAR0ATCq7tj/wUpYbIKCBEVA1EVCx8gHoEufd5TGfYzmbopq3EPsX2F353FkUEtB+wJSya4cAj2a5AQIaGAFVEwEVKx+A/g0cZZXURJPML+yMWt5CLFoFuymfO4tCAtoHmF527VhgeJYbIKCBEVA1EVCx8gHoAuBEy/I5lnMH1PUWYtHq2FX53FkUEtBSH+jk9ixwS5YbIKCBEVA1EVCx8gHoD0B7y/I5lnNbNPAWYtFafp8dn/9CAnoW8GnZtW8Cl2e5AQIaGAFVEwEVKx+AfgmcYVmnAnMzvrAVGnoLsWhdbK987iwKCWgn4Juyaz8Bzs5yAwQ0MAKqJgIqVj4A/Qg41/I7lnOL9APHY9H62Eb53FkUEtBSJzN1+xE4JcsNENDACKiaCKhY+QD0XaC35XcsZ31s5y3Eog2xpfK5sygkoMcBf5ZdG/X7qDn/CGhgBFRNBFSsfAD6JnCF5RzLOTLjC3XSX5iPRbfEFsrnzqKQgB4KLCq7dn0R9shyAwQ0MAKqJgIqVj4AfRnoH399+saML9TELt5CLLo16iufO4tCAlrOaUPqYdssN0BAAyOgaiKgYuUD0InAzZZzLGfm53JWRTNvIRbdPv1dTXKFBLTUcaheO6a/t3WjEdDACKiaCKhY+QD0ceA2y+dYzpJShx7Fok1QU/ncWRQS0F1R3W/1gennON1oBDQwAqomAipWPgB9CLg7/nFBB2bMBezpLcWiO6cf2SlXSEC3Qz2/1acC32e3AQIaGAFVEwEVKx+AjgLus5y/eGYcy7mm1OmXYtGm6ecWkSskoA2xld/qXsA72W2AgAZGQNVEQMXKB6B3AQ9bPsdyrgBaeUuxaAtgg/LJgwsJaJ2yx/Y73QQ8nd0GCGhgBFRNBFSsfAA6OHHmzNaZfx38r9Qp6GPRPYB1yicPLiSg5Zz6ZDRwb3YbIKCBEVA1EVCx8gFo8syZZY7lXFzqTeex6F7AKuWTBxcO0LXAPn7rJwHXZbkFAhoUAVUTARUrH4Amz5xZ5ljOf4EjvKVYdD9gufLJgwsH6NJyPsHpPeC87LZAQAMjoGoioGLlA9DLEmfOtB+IPltq/ULgGG8pFm0FLFU+eXDhAP0bONJv/c/xc/dlEwENjICqiYCKlQ9AeyXOnDkq81jO34G23lIs2tr34Mi8Fw7QBcAJfutXZP3JTgQ0MAKqJgIqVj4APRv4xL54LvNYzl+Bdt5SLHoI8I/yyYMLB2jiJKc+1cPW2W2BgAZGQNVEQMXKB6DJj/qdmfm5nD+VOjYpFj0cWKh88uDCAZo4yalPu6FKdnchAQ2MgKqJgIqVD0BPBX604sdylj5Vpv0groO3FIseBfyufPLgwgGaOMmpT0dk+58BAhoYAVUTARUrH4Aen4BxSeaxnN8CnbylWPRY4FflkwcXDtCZ8ZOc+tQF+DyrLRDQwAiomgioWPkA1H5M9q9zmXks51elngXHosf7nuM974UD9A2gr+8XLgdez2oLBDQwAqomAipWPgBtDcR/a3ZEjVJUfQZ095Zi0XbAPOWTBxcO0MnlvWH+NmB8VlsgoIERUDURULHyAejewFrnMvNYzo+Bc7ylWPRU4DvlkwcXDtBngIG+X3gYGJLVFghoYARUTQRUrHwAuhuqxC8zj+X8ADjfW4pF2yderZcuHKCPlufkq+U9t8+MgAZGQNVEQMXKB6A7ok78shcwI339LOBCbykWPQ34QvnkwYUDdGx5Jw2ZA3TNagsENDACqiYCKlY+AG2c/LC4zGM5ZwAXe0uxaBfgU+WTBxcO0OHAGN8v/AkcldUWCGhgBFRNBFSsfABaP/k5a5nHck4HLvOWYtFuwEfKJw8uHKB3lPda0foqaJHVFghoYARUTQRUrHwAWiP54ZuZx3KWfidQLNodeF/55MGFA3Qg8Iz/V7ZCg6y2QEADI6BqIqBi5QHQDUh+VPpM4IL0L7wK9POWYtFzgHdVT55F4QC9Hpjs/5W9gaxgJKCBEVA1EVCx8gDoKmD/+OCHjGM5XwKu9ZZi0fOz/jghpYUDtC8w1f8rxwO/ZLMFAhoYAVUTARUrD4DGgEPig8xjOV8o9ZQ+Fu2VOG+odOEAvSjjLQVe9gPpD7LZAgENjICqiYCKlQdAFwJHJ0a1sEP6F54DbvGWYtHe5T6oy2vhAD0P+ND/K/2BF7PZAgENjICqiYCKlQdAf3FP+5lxLOfTwCBvKRa9FHhV9eRZFA7QruW+afXu8t7glBEBDYyAqomAipUHQOcCHROjjGM5nwBu85Zi0cuBl1VPnkXhAO2Q+RF5bhNKPbAuPwIaGAFVEwEVKw+AfgF0S4wiwPf/396ZB8pU/n/8fe/l2sJVoiJaldL+lTZp3w8XEVokJaUv3xa0KFFUShSlkrRooUVFGyIJKe0qkj1ZhrFc13Lde8/vOWe2c2bOzPPMM888c8fv8/rDnOecz3me88y583KWZ3FsGA88Hkn5ff8D3ldduAByAr007th7M+INdBcFCZQLCVQNJFBtpEGg84EbA0tRfTnHAk9GUn7f3cAk1YULICfQVsA67y2L4k32EQUJlAsJVA0kUG2kQaCzgFsDS1F9OccAIyIpv69f3LbpaUVOoC3iTiG6Kc6Ex9GQQLmQQNVAAtVGGgT6WbjD0bPASMeG0cCzkZTfdx8wQXXhAsgJ9ERgt/eW8nw0EsmBBMqFBKoGEqg20iDQD8NDD08E7nNsGOl6Xe33sQvUV1UXLoCcQJsEx+jz4FBUEcmRBMqFBKoGEqg20iDQd8JDD8929+UcDrwUSfl9A4FxqgsXQE6gjVAt3qbmgIigSKBcSKBqIIFqIw0CfTU89HBUX84nXML0+wa7hKoNOYGGxujzwBAbWZ8EyoUEqgYSqDbSINAXwkMPbwFOc2wYCrwWSfl9QwRboCtGTqChMfo8uAX4UiAHEigXEqgaSKDaSINARwLPBRfdfTkHu14a+X2PA6NUFy6AnEBDY/R58CDwpkAOJFAuJFA1kEC1kQaBOu7U3X05B7paNfl9T7pf0utCSqDhMfo8GA0MF8iCBMqFBKoGEqg20iDQQZELstNdr1ceAN6NpPy+p4GnVBcugJRAi0Nj9HnwnmuYvriQQLlUAIHu3qGSLZuVZifKdp/Pn5GCt/oyUuwOny8zX7T1VW9XnWVf4K3g4hXAD5ENdwNvR1KbfM8Aj6guXIBtMid5DdAi3rYZQBeBLNhf9VaJklWwdVOGCi7i/JKj/veuAALd4VfJpk1KsxPG58tMwZt9GSk2Y/W1it6sOsfbgYnBxeuBjyMb7mACdRTsY7e+D6ouXACpk/w7cG68bT8C5wuVq/67FiRTf9dWnRP+ZUf1TagAAlUL3cLrYZ+6hWcCnRFcHODqrHkn8Gkk5feNAQarLlwAqVv4v4Er4m3bCZwokAXdwnMhgaqBBKqNNAj0JuCb4OIo12ui/wLTIim/76Vwi3utSAl0EdAu7sZaqCeQBQmUCwlUDSRQbaRBoNcCC4OLk1x9OW93tZf0+14BBqguXAApgS4EusTd2AS5At8iCZQLCVQNJFBtpEGg7YFFwUV3X84erlk4/b5X3V3ldSEl0G+iZhh1cS6wlp8FCZQLCVQNJFBtpEGgVwJ/BxcXu54cOu7tTUugbwB9VRcugJRAZwC3x93YEfiBnwUJlAsJVA0kUG2kQaAXAmuCi1tdfTm7At9GUn7f28BdqgsXQEqgUxMda2/gE34WJFAuJFA1kEC1kQaBng2Ev0ZXX07Hw1HTEuik8MChWpES6HvAA3E3DhEaVooEyoUEqgYSqDbSIND/AEWh5caoHLFVJ9fEln4fk1Iv1YULICXQNxI1uRoHDOFnQQLlQgJVAwlUG2kQaDMgnKerL+fVwG+RML/vQ6Cn6sIFkBLoWGBY3I2fAL35WZBAuZBA1UAC1UYaBHoU8sLLrnk527om6fT7pgC3qC5cACmBjnJNRxLFD0BHfhYkUC4kUDWQQLWRBoE2RI3w8i3AzHCC2fSvSJjf92mipkHpQ0qgTyYa/HktcC4/CxIoFxKoGkig2kiDQOvigPCyqy/n5cCySJjf9wVwg+rCBZAS6CPA63E37s1FE34WJFAuJFA1kEC1kQaB1kSD8LKrL+clwKpImN83A7hWdeECSAl0QMI57OuhFj8LEigXEqgaSKDaSINAK+PI8LKrL+cFrg47ft8soJPqwgWQEug9wMfxt54I8N1IAuVCAlUDCVQb6gVaChwXTswGuoUTrYD1kTi/72vgasWFiyAl0F7A9PhbL3E9nIgDCZQLCVQNJFBtqBfoDuDUcGKJsy/n2cCmSJzfNxdoq7hwEaQE2h2YE3/rDcBcbhYkUC4kUDWQQLWhXqCbgbPCCVdfzjMARzX9vm+B1ooLF0FKoNcC38ff2g94n5sFCZQLCVQNJFBtqBfoWuCCSKqa442Ss4uSJdDvEwxSnEakBNre1QkgmuGRiUjjQwLlQgJVAwlUG+oFusylRWdfzpOBnZEtft+PwKWKCxdBSqDvQQAnAAAgAElEQVRXAkvjb30TeIibBQmUCwlUDSRQbagX6O+uJ5vOvpwnACWRLX7fL8BFigsXQUqgjiGmPPhSpE8VCZQLCVQNJFBtqBfoD0DnSKo18HtouSngUJfftwg4T3HhIkgJ1DnEVCzsPw2DmwUJlAsJVA0kUG2oF+g8Z8slV1/OJsh1xPl9i4GWigsXQUqgp7me30azGWjOzYIEyoUEqgYSqDbUC3QmcFsk5ezLeQQqO+L8vr+c7+v1ISXQ44HS+FvLq+BQbhYkUC4kUDWQQLWhXqCfAndGUqOAEaHlxqjmiPP7lgGnKy5cBCmBuuUfQyPkczMlgXIhgaqBBKoN9QL9ALg3kprkSDXAfo44v2+Va8IPbUgJ9BDUTLT5dFcfAW9IoFxIoGoggWpDvUDfcs32/rXjiWh9FDji/L5/gJMVFy6ClED3x4GJNreOzEQaFxIoFxKoGkig2lAv0PHAY5GUsy9nXdR1xPl9/wInKC5cBCmBVk/8kLMHMIOXBQmUCwlUDSRQbagX6BjHU0+7L2e4Z3wB6jvi/L6NQFPFhYsgJdBcHJ1o80PABF4WJFAuJFA1kEC1oV6gI4AxjqSjL6dzoFBLoL4ckXGIlSMj0D2ci+XngKe4eZBAeZBA1UAC1YZ6gT4GjHckHX05q6GRYwMTqHPkUH3ICHQbp6Hn+0BfXh4kUC4kUDWQQLWhXqADgbccyRaR99P5OMKxgQm0KhorLlwEGYFu4LT5nwtcz8uDBMqFBKoGEqg21Av0XuADR9LRl9P9HJEJtAYaKi5cBBmBrgIuSbR9GXAxLw8SKBcSqBpIoNpQL9D/AZ86kpG+nOXud0ZMoLVwsOLCRZAR6GLO0KU7BRoUkEC5kEDVQALVhnqB3uacydg0Hwzf0Ze4JcMEymlcmSZkBPozb+b32vyqkEC5kEDVQALVhnqBdgPmOZKjw62adrnbzTOBHoj9FRcugoxAv+XNwHwMckoSBpBABSCBqoEEqg31Au0M/OBIvhvuy1kE/MexgQn0INRWXLgIMgL9CuiRMKAV8A8nDxIoFxKoGkig2lAv0LaOEUBNZ1/OrUALxwYm0IaoobhwEWQE+jnQO2HANcBCTh4kUC4kUDWQQLWhXqCXu6f4XQJcHljaBJzt2MAE2hhVFRcugoxAPwT6JQzoA0zl5EEC5UICVQMJVBvqBXoBsNaR3Bbuy7keONexgQmUM0ZcmpAR6Du8SY+GAi9z8iCBciGBqoEEqg31Aj3LMQuSRbgvp3u6TkugTZCjuHARZAT6KjA0YcArwKOcPEigXEigaiCBakO9QE8FdjjTh6FSmb0Q1RidCdQ9SZIuZAQ6Bng6YcCnwH85eZBAuZBA1UAC1YZ6gUZPfnE6sMFeWB5+GmrDBNrMNU2nLmQEOhJ4PmHAD0AHTh4kUC4kUDWQQLWhXqBHRj3Y7B56OvgXcJVjPRPoycAuxaULICPQx4FXEgas5U+QRwLlQgJVAwlUG+oF2iBq8osvQ2r5Eyh0rGcCPS3qbl8PMgKNGiElltK8xAOGmiRQAUigaiCBakO9QA9wjTtvmmWHIme5tfAbcLVjPRMou7tP5uelCBmBRo2Q4kH9xJMmmSRQAUigaiCBakO9QGOGWOoXfEH9E3CNYzUTaPQLez3ICDRqhBQPTuJeTZNAuZBA1UAC1YZ6gebhKPeKRcCx1udC4FrHaibQlsBGxaULICPQnu4RUjy4FPg7cQQJlAsJVA0kUG0oF+heoFnUKnZx9r1pD8jR1bGWCfQ8YJ3a0kWQEWhXYD434pvEESRQLiRQNZBAtaFcoFFDhlgMA/qY9qjtNznWMoFeCKxRW7oIMgK9BvgpcUR/4L3EESRQLiRQNZBAtaFcoD53j3eLtXmox0qZ7R7RiAmU3fauVFu6CDICbQP8mTjiaWB04ggSKBcSqBpIoNpQLtA1wIXR6y60X8HMBG5zrGQCvcI97ogmZATKVL8iccRbwIOJI0igXEigaiCBakO5QJcCV0avewXoYprT3L0dmUANYIna0kWQEWgr7tNa9t/DLYkjSKBcSKBqIIFqQ7lAFwHto9dtq47q263u4v9zrGQCbQv8obZ0EWQE2gLgnKE/3P2sPCCBciGBqoEEqg3lAo1qrBSgE/CaOQW4x7GOCfRq4De1pYsgI9CTuJ1O/bEvz6IggXIhgaqBBKoN5QL9xv2uPcAUa9bfyeHJPWyYQPnvttOBjECPQQ5vp6q8OZpJoFxIoGoggWpDuUBnALfHllIfuWveAx5wrGMCvZY/D0YakBFoI/7Y+Y1ROXG+JFAuJFA1kEC1oVygU4G7YtfeATz5DjDQsYoJ9AZggdrSRZARaD3U4YW0ABL/9ZBAuZBA1UAC1YZygb4P3B+79lvgpDeBwY5VTKDdgLlqSxdBRqC1cDAvpA3vgS4JlAsJVA0kUG0oFyjT5KDYteVHAPcCQxyrmEBvBr5WW7oIMgLNx2G8kB7AZwkDSKBcSKBqIIFqQ7lAXwGe8Fj9INDAvYUJtCcwS23pIkgItAxoyot5FugYvW6DM0EC5UICVQMJVBvKBfo88IzH6iWwGO5YwwTaC5ihtnQRJARaDJzCi9lSC3lL3au6oZcjRQLlQgJVAwlUG8oF+jTwgtf60y2BjnSsYALtDXyutnQRJAS6GTiTG9QX6OlaMQ+osjuSJIFyIYGqgQSqDeUCHQq86rV+tCVQ53AbTKB3AZ+oLV0ECYGuBc7nBq2vhiprnSvOZjWeE0mSQLmQQNVAAtWGcoEOBN7xWr85n+lkjGMFEyi7ZvtYbekiSAh0mXtC0Tj0APo7kp9b/2U4nvqSQLmQQNVAAtWGcoH2Bz703NCa6WSsI80Eyp9pKB1ICHQR0I4ftSwPtSLnsfw0S6BtIptJoFxIoGoggWojnkDnPyb5m+sTrzXPW3BPDcwEOgB4V66UVJAQ6A9AZ4GwNs7XZFOAQ/NRP7KVBMqFBKoGEqg24gh0W3XcKJfhrfGaJhXXBF53pJlA493upxcJgc4FugmEzWPOLAkul58MvNzCOVESCZQLCVQNJFBtxBEoU0FjuQzjzx7U1a1LJtDBwAS5UlJBQqBfuseCjkvLyBu0iUCTvXc6/88ggXIhgaqBBKqNOAIdz+63N3ht4NIp7ghLi+o3cWbJBDrEGuVOOxICnQrcKRLHbtuPD2ReeizwtvkucGt4IwmUCwlUDSRQbcQRaH8m0ClSGRZyZw8KwgT6hPupqCYkBPqeZwd/D04BJtsLY4FTy831TKjhbSRQLiRQNZBAtRFHoG2YQB+SyvAyYLlQIBPoU8BLUoWkhIRAJ3h28PcOPN0uo5E9DZR5JHLC7iKBciGBqoEEqo04AmU3oCItHz04D/hXKJAJdIS7ZagmJAT6sncH/1j2HgbMZp/PAK2s9PUBj9qQQLmQQNVAAtWGt0BLKjOB1pXK8AzALxTIBDqKOxVwOpAQ6GjgWbHIZ+059bYfGOyDNAYYENpEAuVCAlUDCVQb3gINDP2xQibDU4CdQoFMoM+7e8drQkKgTwo/ayiui5zfzMeAS+3kL8AFoU0kUC4kUDWQQLXhLdAptkDfk8mwKVAmFMgE+qJ7fCZNSAj0UXcT1kQ8ANy0vW6oLVdpTdQsDW4hgXIhgaqBBKoNb4GyK67m7o7dwhyOfLFAJtBxwDCZMpJkzuF3OJMSAh0ATBIM3VAN+bcCRjB5caRVFwmUCwlUDSRQbXgL9GbgGcfNZzIcglpigUygrwKPyZSRJExi3zqSEgK9J4lRT3paF++5PwdTAyOPeUmgXEigaiCBasNboC2BlbVQW+xe3M3+qCcWyAT6BvCIRBFJUl7gbM4uJdA7gGmisX/nMYF2CqW+ALoEF0mgXEigaiCBasNboPVQo/w8YLFEhtVxqFggE+hbwMMSRSSJ9UastkNdEgJNavKmjkClJaHEtrzwbEokUC4kUDWQQLXhKdDN1gwWfYE3JDLMxdFigUygk4AHJYpIkjete2pHVSQEeh3wnXDwj7m4OZI6CQiOskwC5UICVQMJVBueAp1n3YNOBHonn98e4ASxSCZQ7ymQVXOnJVDHgPISAm0P/Coe/eEjjr/e28JD9pFAuZBA1UAC1YanQMcDA83lwFnJ57cdaC4WyQT6IdAv+SKSpSVQAzmR/qUSAr0SWMqP8uSN8DgkJFAuJFA1kEC14SnQ/vbAc/VQtSR2G4eNQEuxSCbQqcDdSZeQLHuro+A+4IHwCgmBXgiskSx+Rfh/FBIoFxKoGkig2vAUaBu78eIVwI9J57cauFgskgn0M+B/SZeQLL8BFy7PQYNQe3YZgZ4NSP9lNETlgDdJoFxIoGoggWrDU6DHInen3YTxxaTz+wu4SiySCXQacAc/MEVesXoEtHJMNCIh0NOAItnyO4SG6CeBciGBqoEEqg0vgZZURiPT7s95c+wOHH4FrhaLZAKdKTjQe0r0st7ivAp0DK2QEOjxgPTceyOAIfYCCZQLCVQNJFBteAl0CXAJ+1gPnJR0ft8B14lFMoHOBnokXUKytLBGRdlRC/mhcysh0CNRSbr8Bfb4TCYJVAASqBpIoNrwEuhHwH+tz0ORtyPZ/OYIX7YygX4D3JRsAclSUhUHmoHOqcE1EgJtgP3kD6A66thdukigXEigaiCBasNLoMOC/bfbAXOTzW+68GNNJtBvga7JFpAsPwKXmfa8micH10gIdH/JwVFtWgF/WJ8kUC4kUDWQQLXhJdDuwHTr8zGJ4TqnCLdMYgL9Xvh+X54Xg0MaNw23KZAQqHD/VC/uA162PkmgXEigaiCBasNLoOcEWz3OAK5NNr93nS0uE8IE+qNj1I100QP40Pp8PPhcQkqgwv1TvZgSfFBBAuVCAlUDCVQbXgK1hhKxPjfnoGmy+U0ABotFMoH+AnRItoBkOQ1YbX3+k4e6e+w1yQt0D9BM/gh8wa9RsUBHnTtdOJYEmiFIoHqoUAL1hx8XHoXcZP78LV4WHiOZCfR3oF2S+SfL7nzUDyxdHhpiP3mBbgP+k8IxHBOYmlOtQDdWSkLqJNAMQQLVQ4US6LzwjXUnYGaS+YlPv8YEuhhok2T+yfJdqBGR9XDhCnsheYFuEO6f6kk3YKqpWqAvJzNpFQk0Q5BA9VChBGoPJWIzXHQ23wjDhadfYwJdGrZb2ng+XJk9dZFnDyyXvEBXCfdP9WRsYNApS6B/XXnOqhRycnAVkpjSlASaIUigeqhQAr0XeCuw9HXyzyiHCE+/xgS6ItDEKJ3cBEwJLvYOTiCSvECXROY4kuF34DzTFujo/YDmu1PIKkxRVSbQy0WjSaAZggSqhwol0LbAD4Gloshw6qI8CEwUi2QCFR95RJoTgXXBxZ+BJpY6kxdoii+7yvdH9RIm0MWX25OdKun+P8nKqaroIwESaIYggeqhQgn0OOSERs5oBmxMLr++wEdikUyga10DHaeD4kpoGE6cCswxuQLd2797tG4WANenchRXAt+b5sf1mPMuyBP+HyYhXYC64jPdkUAzBAlUDxVJoHvzI87pBnyaXH7sPvkLsUgm0PXAucllnyxzgcJwYnSgQSZHoC/HjrE3G7gllaMYAjyzs1cOsN848xGg1hL+Lhz21EaV59xz5SWCBJohSKB6qEgC/Qu4KLTMfqODksuvBzBbLJIJdBNwdnLZJ8szwKPhxOaq2O/7Mo5Ay5oCNTa5130RboQvxyzgTJYtmv/G8r8MOHFnKrlZfA5c6ctDQ8GHESTQDEEC1UNFEugUoFdo+Tvh0T1D3OCegz0BTKBbgDOSyz5Zrgc+j6SuYRI74OrR3yXSzkfWw8WBMev6pnIUxZWtTCv1X2c9s/Q1BLqnkptFT2CseaY97rXQAZBAMwMJVA8VSaBPOVpy7s7HQcnl1xH4WSySCXR7ag3UBWiKHMfV5Dd59lscHNb97X/+nj9l/FP9uhmXf+7e4xwr4AD3KFTvpDp7aHOW59Fzgu1A5zKdvppSdmbZwcjbYD7qvLxOCAk0Q5BA9VCRBHqz8ynmf4IdIb0pXxxzLddaeDZ5JtCd1vTJ6WR7Lg53phc9cXE1RFF7vTNiHtDw4uhBVF4NjYksy33ALUXhhvTsv6jqv6WU3zy7Zf9PwtP+kUAzBAlUDxVJoC2BleHEbcD7cfctuSp2NLpLnXsnhAl0D3CiWLAkX8W2P9r1Zf9T81wGdd1PtwWenA00ck2n9wIwPKXj2DV6mqMnUnkhcKz0FCEW/ewDKm+IPLE/WBJohiCB6qEiCbQeqpeFE+OAe+PtWn49kPN71MpWkXaXHJhAS4HjBI9Tjqe8ulLt9vk/6HVRm5vuGfrS+7NmVUfu95FtS3JRe5v1cNF1jz0SeC71g4l05dxyBNA5layOBpaxj1tFey2QQDMECVQPFUigkaFELH51vJKPpr91+dYtamULQLAqTKBmDo4RPE45OgFfxqx0v4V/mN0HR9I97JnqP2Rid8Y8DryS+sE4+sIvrAI8L5/TouBkKx8B1wjtQALNECRQPVQggc53/ShLa6AgzjvrZ5g+KyP/H/fak4BdYiVbAq2Eo8QPVYKjkLM1ZqVboDsbA2+EEuurIn9toCmTszvAw+HOrangHEzkeaCK+Gh00TwabCdQXBUFQpPdkUAzBAlUDxVIoOOBhxzJcwDvZt8Tc4H7e8e07zkWOYJtEy2BVkm6q2hS+HPQJHZtVDvQSUCD0APJB4KX1K+4X8/cC3yQ+tG4RmPqDOR0/idBdCJOCzV1uBz4SmQHEmiGIIHqoQIJlMniTUfyTmCC134z2U3ojeUrKqGW+xLvMFQVLNkSaEpTZfCZDnSJXRvdkP68wGBJjKL9gw919zR09Qf4X9IdsrxwCbSISRD7PSY1sMiqnFDbgtGCDVRJoBmCBKqHCiTQwvDcQTZvA709dptfHWhfZjdUdzfwOQgFgiVbAq2Fg5M52GQZ4jmpU7RA/6iM/EDTq6fCHT+fCczsHKRn8uOieuAeD7RkZG2m0AavSWQ0ArgnsLRa8CEyCTRDkED1oFygH90lOOxkjEAdQ4lY/AUUtGrXc8DICZ99HxlXZMUhwOlWY/MfgEP2OHcvCA0Az8USaJ1gtO/F1g8IPjpNhvbA17FrY7py3hb05t7G4etO61r0l3DAjcC81I8mekDl1R2tt3BXLU06o/Mj1ToeWC6wBwk0Q5BA9aBaoL/moanYH260QJ1DiViU14k0mMw5ofdkv7Vy07FAk4BOLwLGOeOrorHgMVoCrYsDTHPzy5dUYrmfLvtEMD6NkefR3DJGoJv2B6axzzeBFqF1A5wT6nVyX5VLEjsi/cxmrN5V7t/hHR+PTZVQrzS43E9sAgASaIYggepBtUAvYz/MQqGXOdECZVecF7pWPFPT1eo899S7p64/EzgoeOHzBdDUUVC5eMMkS6AHoeb4yysHsz7oG8E9RdkIHO+xOnYwkVHAcSWmeXJo1iTGhuqoFLq2++7w4MzuqeExpcfekQWs4s2S09urwM2h5dliQ1KTQDMECVQPigU63RbSIyKh0QKdAtweFbJj9U9fvjtmyN2dGkQ8Wit0RVZ+kqvFz27xvkWWQEM51rruxYOB/DGCuwryKWJ7SpleAt3bzHpYOg04ujS8rldoTJUtt+eyQ/OnfjiecyJtuInl3jKpxxdtAlMs2eytg6oCF7Ak0AxBAtWDWoGWsUupi9nF4icCsdECfQp4Jm7w0pevP9QWXv6M8LoJwDmRiK3sVlzwKC2BNrYy26/zZCaQtWewxVv28PcTZzAwymO1x3B2XwJ1NrKvzGHw5ZVQbQP7D+KN+uy4jpym4HDiTCo3uwZwdZnHhjjsqIaaEeF2Dk57nxgSaIYggepBrUDZPd4Ru9kVVMFf/Nhogd7iGv/Ng+Xjux5R/91IuqSR8w1LEkMkWwK9ETWueT84OObu7sxUZ/4ruLcIrYH5Hqu9xgNtB1wA1HOO09kFGGD+eb7138UDKY/faRFvVs5PKgF9xLN5H+gYSb0hNNYzCTRDkED1oFSgOxsC75gl5wDNEo9YsWpWrEBbCg8GEmKEc9D3Va7mPwmxBFq63KmU5yoDh3gpT5JDUNnLfF4CXW7N0YbBzlU/56DOvfls7bkKnn9axJ3WeFxOMoOVXO/qFuXLQwP+w24SaIYggepBqUCHAi3Yb2pdA3ZrmOC3NefqSui8K1qgrqFEhCiqg9zwCHZJzF9pCTSKr9ntcpWnf1UybaVprnX16o/gOSL9AMQMRB+YAq7u+GSnoItH/HnhBwG5ohMlldRBvrPvwtkiLQRIoBmCBKoHlQLdWCvYTHB+leA8vh7sef00Ww9nr3ML1B8cpiIZ7ne8FU5i/koPgZprrJGHkXfklfeMnZPyqfjIcVxOPAW6o2HMtB2zrJZb3dT9RcQXqDWGSRWhPpn2C0LXe/chIm8LSaAZggSqB5UC7RW+pX6Juchzhrf1Dx9kDyWcBxwxzyXQ+a4HbGKsq4oqoSHskpi/0kug5q6ujpGO27ydZAtJNw8CL3it954T6f3c2tHPLi7HcYLzOwmRQKClBlBnkVAuvaJq9YvItCgk0AxBAtWDQoEurozKoTtqdmGz/7KYiF+7VrH81GR00ac1gQLXoEDjZSavuCUyaOjX4vNXegrUNCf3a9OkUsihNTp9KH8/z27BF3qtjzOp3LqYU1Dyk9BQR6IkEKhZfAbQaK1AJuUNket+0XYocrlTT5NAMwQJVA8KBVromBNuz5nsjjzqR7u4S651a3rJJ9ajzl8OBfKdQ11GDSUixuJcFATP1zTx+SvjCNRizx/vD72huf1eBwXdviiNF5eQNbVQxbNVFGda47SRSKCmrwk7VdvMsrULJj/b/7rCJxbEqfSCmGk8egrMsEQCzRAkUD2oEyi7BKwVuSBZezC7wXvT8Sp6WVdrOovqt4YGkv/3VJa8LyKUtnGu2hLDpD1wjS2Hj8PjXHBJINAA216/ItBJqd69sZfRXErOAq7w3FIhBWouqw80bhi+9katK5/83kOi9wHD3GumCDx1IYFmCBKoHpQJtLyFe3ikb6x2OLVvmRtIrephGemAxx0/p61XsDUdw4o9DjkS3/xc+ydf9ZBm5za3Gk+KwRUoY9OL5+faHUgveifZW/m7mHi9e9dXTIGaC/dDNLWvGh49JkxTIKp1b3E11JjCKZoEmiFIoHpQJtB3gIauto8TD7R/ik2GrDHX3mE9+6z1sOsveu+GO9nKMxYGLiD35qOBTLHnOn71gjPtCgmUsXbkGTlWtgfe/WeisDWj3LOHfpCDvBneoRVUoOZnVVDzuIu7Pvj8xz/OfPj84Oyhee1cA+n9CTSL3q81kHNX4i5cJNAMQQLVgyqB7j4i5oFYyeQ29o1w7tnWT7J6P3dbR6sh/QuVwheQlwEXyJS7qkebc09sZA87kis6U4WgQBlrHm5oH2HL1+P2CPq4AAc5m+D/XTt+656KKlBzp7Pfw55vhlwauCZt9kKkMcJjHlf46y5gQc2dTznKP3vC3XefBJohSKB6UCXQp4GTY9vBbxxxUuBypsp/Y2bMtBrSf1HbcQEZPZRIMpRuWrpQeHhLcYGyjD++0p6KuK53N9PS+62L1KqRofN3nQJcHq9DQIUVaAx7F/Td336RdmfwW93VHPghJqz0Yfbl1J4USu54/lhg/xHOa9LizX/1e+xz7st69ZBAM1IsCVSOdezn5n0B+FOfA1Gpu8cgy3ZPpMU9rzrr2Hr2hWrOxyoORIRkBMpY9aA1dFPeCI9NGy+yHk2wY78/ZMYeQONNHpE22SNQRvFY+z+/3CvuuLrlMdZ/dI29Dv5Lq11vT3uIkVX9giO4Hu2Yxmleof3/T8PWAz9a7bF7+tAj0K1jurW9eRz/y3XFie6UEiRQPagR6IxDEowOWfKN5xj1zq6c21f+ONN7Brl0kKRA2aF+aA3YdHPM0775hzJ33lPUhW1sF7jZfR3IXxA3n6wSKGN2h0qOO4Q7PWPWW/+HnPin+U0g9mS7G+q5wQnvv7rM+WbqwMI3Ew+RwKH86w9KhIO1CHRTN8PoYBi38arlihPdKTVIoHpQIdC99+WyG7mEb1q89oqe0kMbSQuUKehm60lo1J3o6Hx2+fke+2EPZvfxp6xhaxbV8B7HLki2CdQ0/xlQz747OOikK/rETtNsUzaYXWPud4r93qntV6Y5/URrh+tWm+UfnWmtPOChkV1PDIm42tXvio0vtWXJ3I9XuNZsGn4McNQE0fEStAh0kNFndfnf3Q2P+a/ix4nulBokUD0oEOgK63dyymJ+oJusEqhpjmSaOPxXx4od11qvWQLVnlgNOPhbs6gp0ClBHtknUHbMUz9a8E/iMzXrkEDTp7sCA+mXvmhJt9rt1qwhaPCofWm+67sXegT7J+zX5aN4DcOK578z+uE7Op1/wsGBZrjH3jUtFDr72sDeaDZZ7DvUIdCVRvv17GOZUZj4VZkrTnSnFCGB6iF1gU6szS447ky+32OWCdT8vACoGRkC//cT2K+5S+gt9YKDgapvsXv5YxPdmGWjQEXYcAlw9KjID2db/yoB2x0zbovDEiVTbwi8NKx9ff8gDzw++uVJU2cs/H3ZrOHXHZ+HGGpc9dxyc/OIpnbieOviFs09R1mIRodAJxqD7M8+RuIGIK440Z1ShASqh1QFWmzd29b/TGLPbBOoufhoIPdxtrDx08FtrPdK+Y679dUnB37vCcfl2FcFapZ9NtN9a728A/syTnuvLLoZ067JnWrEWjKa3HrHndv+tv82CyaPsi8+a3Sba5a93cRabDWHf0g6BDrUCLz4fM143vpY92y3tt2He/Rdc8VF7ZQuSKB6SFGgv1iXBpeul9k16wRq+q33JUa7RsHfdUPXhMNFbax1byTMYJ8VqAdz77cvsGLbgRZPal8tjjgbFz70wgdf/7Ex9C2tfqltaGLBU8cEHsHuHWdPxnJRjyA3xRtAQYdA+xqB3sfTjKHs35+vNozrDNtngccAAA1rSURBVKNwVmjzfa95xbl3Shsk0LTh3+xnBG81UxJo+Wh2bZA/XM4K2SdQc+8d4d96pZNu2+DeWNYXuDXx/v+fBBrEsyH99qmTgkx48clH+vfq3uHKy657YrpX86+Smf1OQK2ejiaoe549yGXdbt7z4ukQaA8j8OZ0ntGfndyuxgvbzR3jjcJQP95rhnnFuRJOdm5NgVHnRdGq1XnnnXqyJEcc5qQZW3NqdP4OTgns1CpYbqsEoV60jCq8OSf+rHDkUc6jPEa2st60jC347JOPPaxeges5U9WCgnqNDztathDrfuro2ZKnfItvSyp/MSmwyeeT3XVEZSDv2M7Dpq332Pje05x8/dLlpsYWn8+fmZK3blZQ5aX/utPrHq7j/CPu67kTq/OmRJlGtUmTEug1xhr781ejp2lOMgK+HG2E5kYMC9QV50o4KfKlQB/+gxGiItJlZSqnPfuYOXLqqkwfA7H80/cY02fMmPFo/nGrpbKIum6VEmjHsAu7m2Y/IzCD1d9Gj2iBuuJcCRJoKuxXECR2NJw0UavgkMZHn2TTtDGjfkFB1VTyqzM2lZNOECkzfaHcfioE2sMItGKbZ9xjmtcZjw+3eNxoHy1QV5wr4aQ8FYo3R7FmRfSaeJTy8t4qmhNjw9Klq5MIl2Zn9EHu+iftZW7z+nJ8vi3luxPtVRyJ3ROzcVcKp7zEV5LC3qng9/kyU/AuX1lGyt3t8xXzo9JC8eYMFbzX5/P8gw+jQKD9jMCz2enGEHOPEWGv+Wkk4XPHuRPpg14i6UHtvPDJkIUvkVKFXiLpQ08zpqn25wTjObO8k+FoAvyzdS1aeJP173Z3nDuRPkigeiCBaoQEqg89DekDF5H3GJ+b5l3BZ6B7/g39dYVv4V1xrkT6IIHqgQSqERKoPvR05exotU5d17rQb5qvGI/bKycYoam+wgJ1xbkS6YMEqgcSqEZIoPrQNJjIgGJzax/D6pK2/Rpj7A6z9PPCtmuCW8MCdcW5E2mDBKoHEqhGSKD60DOc3Y1GYa/WRi/72/26jWHc0N5o/VVoa0SgrjhXIm2QQPVAAtUICVQfmgZUfv7Gwu7jgyP0LXumd/seT3oOfuuKcyXSBQlUDyRQjZBA9UFTemSkWBKoNkig2iCBciGBqoEEqg0SqDZIoFxIoGoggWqDBKoNEigXEqgaSKDaIIFqgwTKhQSqBhKoNkig2iCBciGBqoEEqg0SqDZIoFxIoGoggWqDBKoNEigXEqgaSKDaIIFqgwTKhQSqBhKoNkig2iCBciGBqoEEqg0SqDZIoFxIoGoggWqDBKoNEigXEqgaSKDaIIFqgwTKhQSqBhKoNkig2iCBciGBqoEEqg0SqDZIoFxIoGoggWqDBKoNEigXEqgaSKDaIIFqgwTKhQSqBhKoNkig2iCBciGBqoEEqg0SqDZIoFxIoGoggWqDBKoNEigXEqgaSKDaIIFqgwTKhQSqBhKoNkig2iCBciGBqoEEqg0SqDZIoFxIoGoggWqDBKoNEigXEqgaSKDaIIFqgwTKhQSqBhKoNkig2iCBciGBqoEEqg0SqDZIoFxIoGoggWqDBKoNEiiXfU6guzNzxkuLinZlpOCSoowUaxYVZeqnVVpUlqGSi4sy9GXvLcqMQPcWFe3JSMHM3TsyVHBZcr/kfU6gBEEQuiCBEgRBSEICJQiCkIQEShAEIQkJlCAIQhISKEEQhCQkUIIgCElIoARBEJKQQAmCICQhgRIEQUhCAiUIgpCEBEoQBCEJCZQgCEISEiiPZSN6d+g5bEUgsXVMt7Y3j4uMQzTd+DewsNMXpNS5b9zwCozK+mYNYpU2y7+8p+MNj6x075uNJ1lphbMFwTp7EjecBMphQVvDuK61UTjVSmzqZhgdDOO20Khm5QNC3+MEI4jzjy1+eMVFVX27GGGWaq2ADIKVLn/aMDoXGoU/OPfNxpOsrMLZdJbF6uxdo/hfEQk0McWdjMe2mcXjjcIVLDXI6LO6/O/uxsjAxrLJRuh7HOYllPjhFRZl9XX8IS7TW4XkEa30FKPjb+aeF4yuzquvLDzJ6iqcRWdZsM7eNYr/FZFAE/OF0a3E+hxuDDPNlUb79Wx5mVFoDZf9/YjuRvh7vNNYGbNvgvAKi7L6bg7e4s81BmVmMOAkEKz07uuMheyjrI8xJ7JvNp5kdRXOorMsWGfPGiU4ySTQxLxoTLA/fzZ6muZEY5Cd6GNMZ/8+a/83Ffgeyzu1LonZN354xUVdfQPs6XmtP82HnDqClZ5v9LI/p/ebHNk3G0+ywgoHyIazLFjnIO4aJQgngSbmIeNr+5P9H2SaQ42P7cRrxvPs343Lli27Jvg9bjd6xO4bP7zioq6+AcYZC9J7wCoQrPQLxpux+2bjSVZY4QDZcJYF6xzEXaME4STQxKxYHHj8M9243TT72nc0pjnNGBrc3CX4PS4xBs8ZfPvAV10zYcUPr7iora+5pPWwtB9y6ghW+hFjbuy+2XiSFVc4O86yYJ0DRNUoQTgJVIiiW6z/jHsYf9qpeUb/4PrQ9zjLKLSv6zvPd+wUP7zCo6i+5fe2WavngFXAq/RdxqKv+3boOsj1TjqLT7KqCmfVWebV2Sa6RgnCSaAirO1jdN1mmtcYa+zkr9ZjFJvQ9/iWYbyyonhRP6PDpshe8cMrOqrqu9AYremIFcCtdDfjcfZfRmtWdcde2XuSlVU4m84yt8420TVKEE4C5VMysb3RxWrT0DH8PXYPbgp9j58N+8L6KL3DGBXZL354xUZZfcv7tMvQROrJI1Dp9obx1CZz9+Q2xs+R/bL1JKurcBadZYE6W8TUKEE4CZTLyl6Gcb/9hfYwFttr5hn3BLdF/1hmGXeY5tABjLdEwisk6ur7vTFczyGnjkilrzfutVu2vGQ8lPUnWWGFs+csi/5lh2skcJJJoDw+b2fcMCvQJKyfEXgaNN0YEtwY/WNZaRSWBtriPiYSXhFRWN9HjZ+0HHLqCFW6tzHN/vzTuMHM8pOsssJZc5aF/7LDNRI4ySRQDl8ZxtBQP4yhht0NzJxgPBdcE/1jWWd0ijS/5YdXQBTW19+mW1laj1UZYpUeGPwZbTBaR0YAyMqTrLLCWXOWhf+yY2uUIJwEmph/2xkTwoqYGPwP6B7j8+Ca4Pe4q1evwKn53ugb2TdueAVGZX0nGa+l/XiVIFZp80Vjiv35q9UQhh9egVFZ4Ww5y4J1Nr1qlCCcBJqY8aHurxYrjY5b2ce61oWhXgqh73GAEeirMTDY3YETXnFRWd8+xqL0H7AKBCv9k3G7fSE2zHhaJLwCo7LC2XKWBetsetUoQTgJNDHdjfn+ANY3OMgYUGxu7RN59Rz6HucabaeXmv5njRt3OXaOG15xUVjfLUbhHp2HLo9gpcv7GIM2WMNRtF/n2DkLT7LKCmfNWRass3eN4oeTQBNSEhmbxWrAsOlGo7BXa6NXeHCa8Pf4kmEUdjGMrq7/u+KHV1RU1neWcbe+A08F4UqvYTXubBjtZzr3zr6TrLTC2XKWhevsWaP44STQhKx1f+3m1udvLOw+fmd4e/h7LF/wwI0d7h673b173PCKisr6jjDGaTnmlBGutOkb3a3d7U//4949606y0gpny1kWr7NnjeKGk0AJgiAkIYESBEFIQgIlCIKQhARKEAQhCQmUIAhCEhIoQRCEJCRQgiAISUigBEEQkpBACYIgJCGBEgRBSEICJQiCkIQEShAEIQkJlCAIQhISKEEQhCQkUCI7GYsoxmb6iIj/h5BAiezEQ6BzgJMyfVjE/y9IoER28tsIm+uBzoGl30ighHZIoERW8zYwPrRMAiV0QwIlshqnQPesW+fL4KEQ/w8hgRJZjVOgBKEbEiiR1bgEWgOPWB8HYHL5y6fXqnHay+XmtvuaVK1/3mfBgK2Pnl6nWtPr5pRn4EiJfRESKJHVeAv03faBN/P9Vx4eWHjJ3j7nwOAb+xt2eWZGEElCAiWyGm+BHod2H8y+rxLQADdM+fI2oGA3W7+oGirfNOaNew8COmTocIl9DBIokdV4CxT9rZv0R9i15ghrxS3AItMsb4FD/rKSRYXA1AwcK7HvQQIlshpvgR5q36IvAU4psxa+BD4xzbnA9EDc9vq4VveBEvskJFAiq/EWaBc7WQz0sxeYSaeY5gDULQsGXoNGWo+S2FchgRJZjbdA77OTu4Dn7IWltkAvd3b8rKb/UIl9EBIokdV4C/QBO8kEOsZeCAi0uavrfIn+YyX2PUigRFaThEBPwX/2RqCmoIQCSKBEVpOEQC9EAVmTUAsJlMhqkhBob2BlMPDNUV9oPUpiX4UESmQ1SQj0Y6BHIO5PGn6ZUAMJlMhqkhDo3sOQN9FK7miBKn7dB0rsk5BAiawmCYGaM3KAdqPeG9oIeFX7gRL7JCRQIqtJRqDmpGqBJkz5Q3UfJrGPQgIlspqkBGr+0++EmjWb91im+SCJfRYSKEEQhCQkUIIgCElIoARBEJKQQAmCICQhgRIEQUhCAiUIgpCEBEoQBCEJCZQgCEISEihBEIQkJFCCIAhJSKAEQRCSkEAJgiAkIYESBEFIQgIlCIKQhARKEAQhyf8BEu2TfAztGo8AAAAASUVORK5CYII=" width="672" /></p>
-</div>
-<div id="scatter-plot" class="section level3">
-<h3>Scatter plot</h3>
-<p>A scatter plot that compares the number of incidents reported and the number of distinct reporters.</p>
-<pre class="r"><code>qplot(myproblems$numberOfReporters, myproblems$numberOfIncidents) + 
-  theme_minimal() + ylab(&quot;Number of Incidents&quot;) + 
-  xlab(&quot;Number of Reporters&quot;) + ggtitle(&quot;Number of Reporters vs. Number of Incidents reported to AERI&quot;)</code></pre>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-</div>
-</div>
-
-
-
-
-</div>
-
-<script>
-
-// add bootstrap table styles to pandoc tables
-function bootstrapStylePandocTables() {
-  $('tr.header').parent('thead').parent('table').addClass('table table-condensed');
-}
-$(document).ready(function () {
-  bootstrapStylePandocTables();
-});
-
-
-</script>
-
-<!-- dynamically load mathjax for compatibility with self-contained -->
-<script>
-  (function () {
-    var script = document.createElement("script");
-    script.type = "text/javascript";
-    script.src  = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
-    document.getElementsByTagName("head")[0].appendChild(script);
-  })();
-</script>
-
-</body>
-</html>
diff --git a/datasets/aeri_stacktraces/problems_analysis.pdf b/datasets/aeri_stacktraces/problems_analysis.pdf
deleted file mode 100644
index 76aedb436fbcfca6fbdbbc96736927e18aa15315..0000000000000000000000000000000000000000
Binary files a/datasets/aeri_stacktraces/problems_analysis.pdf and /dev/null differ
diff --git a/datasets/aeri_stacktraces/problems_analysis.rmd b/datasets/aeri_stacktraces/problems_analysis.rmd
deleted file mode 100644
index 987aee11131751da57017b4cf2346dd77a27ccf6..0000000000000000000000000000000000000000
--- a/datasets/aeri_stacktraces/problems_analysis.rmd
+++ /dev/null
@@ -1,571 +0,0 @@
----
-title: "StackTraces -- Problems"
-subtitle: "R Analysis document"
-author: "Boris Baldassari -- Castalia Solutions"
-output:
-  pdf_document:
-    toc: yes
-    toc_depth: 3
-    keep_tex: true
-    extra_dependencies:
-      - grffile
-  html_document:
-    toc: yes
-    toc_depth: 2
-  word_document:
-    toc: yes
-    toc_depth: '2'
----
-
-```{r init, message=FALSE, echo=FALSE}
-library(ggplot2)
-library(ggthemes)
-library(knitr)
-library(kableExtra)
-library(parsedate)
-library(magrittr)
-
-# Read csv file
-file.in <- "../problems_extract.csv"
-myproblems <- read.csv(file.in, header=T)
-
-# Create xts object
-require(xts)
-myp.xts <- xts(x = myproblems, order.by = parse_iso_8601(myproblems$createdOn))
-```
-
-# Introduction
-
-## About this dataset
-
-The [Automated Error Reporting](https://wiki.eclipse.org/EPP/Logging) (AERI) system retrieves [information about exceptions](https://www.codetrails.com/error-analytics/manual/). It is installed by default in the [Eclipse IDE](http://www.eclipse.org/ide/) and has helped hundreds of projects better support their users and resolve bugs.  
-
-This dataset is a dump of all records over a couple of years, with useful information about the exceptions and environment.
-
-* **Generated date**: `r date()`
-* **First date**: `r first(index(myp.xts))`
-* **Last date**: `r last(index(myp.xts))`
-* **Number of problems**: `r nrow(myp.xts)`
-* **Number of attributes**: `r ncol(myp.xts)`
-
-## Terminology
-
-* **Incidents** When an exception occurs and is trapped by the AERI system, it constitutes an incident (or error report). An incident can be reported by several different people, can be reported multiple times, and can be linked to different environments.
-* **Problems** As soon as an error report arrives on the server, it will be analyzed and subsequently assigned to one or more problems. A problem thus represents a set of (similar) error reports which usually have the same root cause – for example a bug in your software. (Extract from the [AERI system documentation](https://www.codetrails.com/error-analytics/manual/concepts/error-reports-problems-bugs-projects.html))
-
-This dataset targets only the Problems of the AERI dataset. There is another dedicated document for the Incidents.
-
-## Privacy concerns
-
-We value privacy and intend to make everything we can to prevent misuse of the dataset. If you think we failed somewhere in the process, please [let us know](https://www.crossminer.org/contact) so we can do better.
-
-The AERI system itself doesn't gather much private information, and takes a great care of it. Ths dataset goes a step further and removes all identifiable information. 
-
-* There is **no email address** in this dataset, **nor any UUID**. 
-* People not willing to share their traces to the AERI system can tick the private option. This choice has been respected, and all classes that do not belong to public hierarchy have been hidden thanks to an anonymisation mechanism.
-
-The anonymisation technique used basically encrypts information and then throws away the private key. Please refer to the [documentation published on github](https://github.com/borisbaldassari/data-anonymiser) for more details.
-
-
-## About this document
-
-This document is a [R Markdown document](http://rmarkdown.rstudio.com) and is composed of both text (like this one) and dynamically computed information (mostly in the Anaysis section below) executed on the data itself. This ensures that the documentation is always synchronised with the data, and serves as a test suite for the dataset.
-
-
-# Structure of data
-
-The plugin collects a [lot of useful information](https://www.codetrails.com/error-analytics/manual/misc/sent-data.html). We only use a subset of it, as required by research interest and privacy protection concerns. 
-
-The Problems dataset comes in two flavours: `All problems`, in JSON format, and `Problems extract`, in CSV format.
-
-## All problems (JSON)
-
-**All problems** is the most complete dataset, with all attributes, stacktraces and bundles. Since the stacktraces and bundles structures are too complex for CSV, only the JSON export contains them. The dataset comes as a quite large compressed archive, with one JSON file per problem. This represents a total of `r nrow(myproblems)` files (problems).
-
-The structure of a problem file is examplified below:
-
-    {
-      "summary": "NoStackTrace in RedeliveryErrorHandler.logFailedDelivery",
-      "kind": "NORMAL",
-      "v1status",
-      "osgiArch": "x86_64",
-      "osgiOs": "MacOSX",
-      "osgiOsVersion": "10.9.4",
-      "osgiWs": "cocoa",
-      "createdOn": "2014-09-14T05:39:21.554Z",
-      "modifiedOn": "2014-09-14T05:39:21.554Z",
-      "savedOn": "2016-05-23T07:22:10.479Z",
-      "eclipseBuildId": "4.4.0.I20140606-1215",
-      "eclipseProduct": "org.eclipse.epp.package.standard.product",
-      "javaRuntimeVersion": "1.8.0-b132",
-      "numberOfIncidents": 0,
-      "numberOfReporters": 74,
-      "products": [
-        { product },
-        { product }
-      ],
-      "bundles": [
-        { bundle },
-        { bundle }
-      ],
-      "stacktraces": [
-        [ "stacktrace for incident" ],
-        [ "stacktrace for cause" ],
-        [ "stacktrace for exception" ]
-      ]
-    }
-
-The structure used in the mongodb for stacktraces has been kept as is: it is composed of fields with all information relevant to each line of the stacktrace. Each stacktrace is an array of objects as shown below:
-
-    [
-      {
-        "cN": "sun.net.www.http.HttpClient",
-        "mN": "parseHTTPHeader",
-        "fN": "HttpClient.java",
-        "lN": 786,
-      }
-    ]
-
-Bundles have the following format:
-
-    {
-      "bundleFrequency": 1,
-      "bundleName": "org.eclipse.egit.core",
-      "bundleVersion": "4.1.1.201511131810-r"
-    },
-
-Products have the following format:
-
-    {
-      "buildId": "4.5.2.M20160212-1500",
-      "frequency": 3,
-      "productId": "org.eclipse.epp.package.jee.product"
-    }
-
-
-## Problems extract (CSV)
-
-The **Problems extract** CSV dataset provides the same information as the full JSON dataset, excluding complex structures that cannot be easily formatted in CSV: stacktraces, bundles, products.
-
-Attributes are: ``r names(myproblems)``.
-
-Examples are provided at the end of this file to demonstrate how to use it in R.
-
-
-# Attributes
-
-## Summary
-
-* Description: A short text summarising the error.
-* Type: String
-
-## Number of reporters {#attr_number_of_reporters}
-
-* Description: The number of people who reported this incident or problem.
-* Type: integer
-
-```{r numberRep.init, warning=FALSE, echo=FALSE}
-mysum <- summary(myproblems$numberOfReporters)
-```
-
-Statistical summary:
-
-* Range [ `r mysum[[1]]` : `r format(mysum[[6]], scientific = FALSE)` ]
-* 1st Quartile `r mysum[[2]]`
-* Median `r mysum[[3]]`
-* Mean `r format(mysum[[4]], scientific = FALSE)`
-* 3rd Quartile `r format(mysum[[5]], scientific = FALSE)`
-
-
-## Number of incidents {#attr_number_of_incidents}
-
-* Description: The number of times this problem was identified in incidents.
-* Type: Integer
-
-```{r numberInc.init, warning=FALSE, echo=FALSE}
-mysum <- summary(myproblems$numberOfIncidents)
-```
-
-Statistical summary:
-
-* Range [ `r mysum[[1]]` : `r format(mysum[[6]], scientific = FALSE)` ]
-* 1st Quartile `r mysum[[2]]`
-* Median `r mysum[[3]]`
-* Mean `r format(mysum[[4]], scientific = FALSE)`
-* 3rd Quartile `r format(mysum[[5]], scientific = FALSE)`
-* NAs `r mysum[[7]]`
-
-## V1 Status {#attr_status}
-
-* Description: The status of the problem attached to the error report.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.status, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-statuses <- table(myproblems$v1status)
-t <- lapply(names(statuses), function(x) paste('* ', x, ' (count: ', statuses[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Note: The name of this attribute in the original file is `v1status`.
-
-## Kind {#attr_kind}
-
-* Description: The type of error recorded, as identified by the AERI system.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.kind, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-kinds <- table(myproblems$kind)
-t <- lapply(names(kinds), function(x) paste('* ', x, ' (count: ', kinds[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-**Notes**
-
-There are different kinds of incidents described in the [official documentation](https://www.codetrails.com/error-analytics/manual/concepts/incident-kinds.html):
-
-* Normal Error: Normal errors are all exceptions that were reported by a client but that are not of kind defined below. Common examples of a normal error are a `NullPointerException` or `IllegalArgumentException`.
-  - An `OutOfMemoryError` is a special kind of exception. Unlike for normal errors, the stack frame (implicitly) throwing the exception is only sometimes indicative of the root cause of the problem.
-  - A `StackOverflowError` is a special kind of exception, whose unique characteristic is a repeating pattern of stack frames near the top of the stack trace.
-* UI Freeze: A UI freeze is caused by a long-running operation or even a deadlock on the UI thread. 
-* Third-Party Error: Third-party errors are reports that were received by the Codetrails Error Analytics Server, which deemed neither the configured projects nor their dependencies at fault. 
-* Third-Party UI Freeze: Third-Party UI Freezes are UI freezes that were received by the Codetrails Error Analytics Server, which deemed neither the configured projects nor their dependencies at fault. 
-
-
-## Created On {#attr_created_on}
-
-* Description: The time of first appearance of the problem in an incident.
-* Type: Date (ISO8601)
-
-```{r attr.createdOn, echo=FALSE}
-myp.xts.createdOn <- xts(x = data.frame(c <- rep.int(1,nrow(myproblems))), order.by = parse_iso_8601(myproblems$createdOn))
-```
-
-Dates range from `r first(index(myp.xts.createdOn))` to `r last(index(myp.xts.createdOn))`.
-
-```{r attr.createdOn.plot}
-xts.createdOn <- as.xts(apply.weekly(myp.xts.createdOn, sum))
-autoplot(xts.createdOn, geom='line') + 
-  theme_bw() + ylab("Problems CreatedOn") + ggtitle("Weekly number of Problems CreatedOn")
-```
-
-
-## Modified On {#attr_modified_on}
-
-* Description: The time of last update of the problem in an incident.
-* Type: Date (ISO8601)
-
-```{r attr.modifiedOn, echo=FALSE}
-myp.xts.modifiedOn <- xts(x = data.frame(c <- rep.int(1,nrow(myproblems))), order.by = parse_iso_8601(myproblems$modifiedOn))
-```
-
-Dates range from `r first(index(myp.xts.modifiedOn))` to `r last(index(myp.xts.modifiedOn))`.
-
-```{r attr.modifiedOn.plot}
-xts.modifiedOn <- as.xts(apply.weekly(myp.xts.modifiedOn, sum))
-autoplot(xts.modifiedOn, geom='line') + 
-  theme_bw() + ylab("Problems ModifiedOn") + ggtitle("Weekly number of Problems ModifiedOn")
-```
-
-
-## Saved On {#attr_saved_on}
-
-* Description: The time of last save of the problem.
-* Type: Date (ISO8601)
-
-```{r attr.savedOn, echo=FALSE}
-myp.xts.savedOn <- xts(x = data.frame(c <- rep.int(1,nrow(myproblems))), order.by = parse_iso_8601(myproblems$savedOn))
-```
-
-Dates range from `r first(index(myp.xts.savedOn))` to `r last(index(myp.xts.savedOn))`.
-
-```{r attr.savedOn.plot}
-xts.savedOn <- as.xts(apply.weekly(myp.xts.savedOn, sum))
-autoplot(xts.savedOn, geom='line') + 
-  theme_bw() + ylab("Problems SavedOn") + ggtitle("Weekly number of Problems SavedOn")
-```
-
-
-## OSGi Architecture {#attr_osgi_arch}
-
-* Description: The architecture of the host, as specified in the OSGi bundle definition.
-* Type: Factors
-
-Possible values found in the dataset for this attribute are:
-  
-```{r attr.osgi.arch, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-archs <- table(myproblems$osgiArch)
-t <- lapply(names(archs), function(x) paste('* ', x, ' (count: ', archs[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Repartition of architectures:
-
-```{r osgiArch, echo=FALSE, message=FALSE}
-archs.df <- as.data.frame(archs)
-ggplot(archs.df, aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_minimal() + xlab("OSGi Architecture") + ggtitle("Repartition of OSGi Architectures in dataset")
-```
-
-
-## OSGi OS {#attr_osgi_os}
-
-* Description: The host operating system, as reported in OSGi.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.osgi.os, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-oses <- table(myproblems$osgiOs)
-oses <- oses[order(oses, decreasing = TRUE)]
-t <- lapply(names(oses), function(x) paste('* ', x, ' (count: ', oses[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the various operating systems used in the dataset:
-
-```{r attr.osgi.os.plot, echo=FALSE}
-oses.df <- as.data.frame(oses)
-ggplot(oses.df, aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_minimal() + xlab("OSGi Operating System") + ggtitle("Repartition of OSGi OS in dataset")
-```
-
-
-## OSGi OS Version {#attr_osgi_os_version}
-
-* Description: The host operating system version, as reported in OSGi.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.osgi.os.version, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-occurences.max.osv <- 500
-oses <- data.frame(table(myproblems$osgiOsVersion))
-oses <- oses[order(-oses$Freq),]
-oses.top <- oses[oses[,c('Freq')] >= occurences.max.osv,]
-t <- lapply(oses.top$Var1, function(x) paste('* ', x, ' (count: ', oses.top[oses.top$Var1 == x,c("Freq")], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the various operating system versions used in the dataset:
-
-```{r attr.osgi.os.version.plot, echo=FALSE}
-ggplot(oses.top, aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_minimal() + xlab("OSGi Operating System Version") + ggtitle("Repartition of most used OSGi OS versions in dataset")
-```
-
-
-## OSGi Window Manager {#attr_osgi_ws}
-
-* Description: The Window Manager used by the host, as reported in OSGi.
-* Type: Factors
-
-The possible values found in the dataset for this attributes are:
-
-```{r attr.osgi.ws, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-oses <- table(myproblems$osgiWs)
-oses <- oses[order(oses, decreasing = TRUE)]
-t <- lapply(names(oses), function(x) paste('* ', x, ' (count: ', oses[[x]], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-Visualisation of the various Window managers used in the dataset:
-
-```{r attr.osgi.ws.plot, echo=FALSE}
-oses.df <- as.data.frame(oses)
-ggplot(oses.df, aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_minimal() + xlab("OSGi Window Managers") + ggtitle("Repartition of OSGi Window managers in dataset")
-```
-
-
-## Eclipse Product {#attr_eclipse_product}
-
-* Description: The Eclipse product impacted by the exception.
-* Type: Factors
-
-```{r attr.ep.init, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-occurences.max.ep <- 500
-eps <- data.frame(table(myproblems$eclipseProduct))
-eps <- eps[order(-eps$Freq),]
-```
-
-There are `r nrow(eps)` different values found in the dataset for this attribute. The following table and bar plot only display the values with more than `r occurences.max.ep` occurrences:
-
-```{r attr.ep, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-eps.top <- eps[eps[,c('Freq')] >= occurences.max.osv,]
-t <- lapply(eps.top$Var1, function(x) paste('* ', x, ' (count: ', eps.top[eps.top$Var1 == x,c("Freq")], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-```{r attr.ep.plot, echo=FALSE}
-ggplot(eps.top, aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_minimal() + xlab("Eclipse Products") + ggtitle("Repartition of most used Eclipse Products in dataset")
-```
-
-
-## Eclipse Build ID {#attr_eclipse_build_id}
-
-* Description: The Build ID of the Eclipse instance running when the exception occurred.
-* Type: Factors
-
-```{r attr.eb.id.init, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-occurences.max.ebi <- 500
-ebis <- data.frame(table(myproblems$eclipseBuildId))
-ebis <- ebis[order(-ebis$Freq),]
-```
-
-There are `r nrow(ebis)` different values found in the dataset for this attribute. The following table and bar plot only display the values with more than `r occurences.max.ebi` occurrences:
-
-```{r attr.eb.id, message=FALSE, echo=FALSE, warning=FALSE, results='asis'}
-ebis.top <- ebis[ebis[,c('Freq')] >= occurences.max.osv,]
-t <- lapply(ebis.top$Var1, function(x) paste('* ', x, ' (count: ', ebis.top[ebis.top$Var1 == x,c("Freq")], ")", sep=''))
-t <- paste(t, collapse="\n")
-cat(t)
-```
-
-```{r attr.eb.id.plot, echo=FALSE}
-ggplot(ebis.top, aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_minimal() + xlab("Eclipse Builds") + ggtitle("Repartition of most used Eclipse Build IDs in dataset")
-```
-
-
-## Java runtime version {#attr_javaruntime}
-
-* Description: The Java runtime of the host.
-* Type: Factors
-
-```{r jrv.kable.init}
-occurences.max.jrv <- 500
-myjrvs <- data.frame(table(myproblems$javaRuntimeVersion))
-myjrvs <- myjrvs[order(-myjrvs$Freq),]
-myjrvs.top <- myjrvs[myjrvs[,c('Freq')] >= occurences.max.jrv,]
-```
-
-There are `r nrow(myjrvs)` different values found in the dataset for this attribute. The following bar plot only displays the values with more than `r occurences.max.jrv` occurrences:
-
-```{r jrv.kable, eval=FALSE, include=FALSE, results='asis'}
-kable(data.frame(myjrvs.top), row.names = F) %>% 
-  kable_styling(full_width = T, latex_options = c("striped", "hold_position"))
-```
-
-```{r jrv.plot, echo=FALSE, message=FALSE}
-myjrvs.df <- as.data.frame(myjrvs.top)
-ggplot(myjrvs.df, aes(x=reorder(Var1, Freq), y=Freq)) + geom_bar(stat='identity') + coord_flip() + 
-  theme_minimal() + xlab("Java runtime version") + ggtitle("Repartition of top Java runtime versions in dataset")
-```
-
-
-# Using the dataset
-
-## Reading CSV file
-
-Reading file from `r file.in`. 
-
-```{r examples.init, echo=T}
-myproblems <- read.csv(file.in, header=T)
-myproblems[,c("bug", "status")] <- NULL
-```
-
-There are ``r ncol(myproblems)`` columns and ``r nrow(myproblems)`` entries in this dataset:
-
-```{r examples.ncol, echo=T}
-ncol(myproblems)
-```
-
-```{r examples.nrow, echo=T}
-nrow(myproblems)
-```
-
-Names of columns: 
-
-```{r examples.names, echo=T}
-names(myproblems)
-```
-
-
-## Using time series (xts)
-
-The dataset needs to be converted to a `xts` object. We can use one of the 3 dates
-
-```
-require(xts)
-myp.xts <- xts(x = myproblems, order.by = parse_iso_8601(myproblems$createdOn))
-```
-
-
-## Raw Reporters
-
-Let's plot the number of reporters for each error report on a timeline.
-
-```{r xts.plot.reporters}
-xts.reporters <- xts(as.integer(myp.xts[,c("numberOfReporters")]), order.by = index(myp.xts))
-autoplot(xts.reporters, geom='line') + 
-  theme_minimal() + ylab("Number of Reporters") + xlab("Time") + ggtitle("Raw number of distinct reporters")
-```
-
-## Weekly reporters
-
-The previous plots used the `xts` object as it is, which is there is one point for each error report. When considering the timeline of the dataset, it can be misleading when there several submissions on a short period of time, compared to sparse time ranges. We'll use the `apply.weekly` function from `xts` to normalise the total number of weekly submissions.
-
-Applied to the `numberOfReporters` attribute summed up with a week range, we get the following plot:
-
-```{r xts.weekly.reporters}
-xts.reporters.weekly <- as.xts(apply.weekly(xts.reporters, sum))
-autoplot(xts.reporters.weekly, geom='line') + 
-  theme_minimal() + ylab("Number of Reporters") + xlab("Time") + ggtitle("Weekly number of distinct reporters")
-```
-
-## Raw Number of Incidents
-
-Let's plot the number of incidents for each error report on a timeline.
-
-```{r xts.plot.incidents}
-xts.incidents <- xts(as.integer(myp.xts[,c("numberOfIncidents")]), order.by = index(myp.xts))
-autoplot(xts.incidents, geom='line') + 
-  theme_minimal() + ylab("Number of Incidents") + xlab("Time") + ggtitle("Raw number of reported incidents")
-```
-
-
-## Weelky Number of Incidents
-
-The previous plots used the `xts` object as it is, which is there is one point for each error report. When considering the timeline of the dataset, it can be misleading when there several submissions on a short period of time, compared to sparse time ranges. We'll use the `apply.weekly` function from `xts` to normalise the total number of weekly submissions.
-
-Applied to the `numberOfIncidents` attribute summed up with a week range, we get the following plot:
-
-```{r xts.weekly.incidents}
-xts.incidents.weekly <- as.xts(apply.weekly(xts.incidents, sum))
-autoplot(xts.incidents.weekly, geom='line') + 
-  theme_minimal() + ylab("Number of Incidents") + xlab("Time") + ggtitle("Weekly number of reported incidents")
-```
-
-
-## Scatter plot 
-
-A scatter plot that compares the number of incidents reported and the number of distinct reporters.
-
-```{r numberInc.qplot, warning=FALSE}
-qplot(myproblems$numberOfReporters, myproblems$numberOfIncidents) + 
-  theme_minimal() + ylab("Number of Incidents") + 
-  xlab("Number of Reporters") + ggtitle("Number of Reporters vs. Number of Incidents reported to AERI")
-```
-
-
-
-
-
-
-
-
-
-
-
diff --git a/datasets/aeri_stacktraces/scava_aeri_readme.html b/datasets/aeri_stacktraces/scava_aeri_readme.html
deleted file mode 100644
index 62e023257762b258d2a47ddf5395a9c84833d2eb..0000000000000000000000000000000000000000
--- a/datasets/aeri_stacktraces/scava_aeri_readme.html
+++ /dev/null
@@ -1,289 +0,0 @@
-<!DOCTYPE html><html><head>
-      <title>scava_aeri_readme</title>
-      <meta charset="utf-8">
-      <meta name="viewport" content="width=device-width, initial-scale=1.0">
-      
-      <link rel="stylesheet" href="file:////home/boris/.atom/packages/markdown-preview-enhanced/node_modules/@shd101wyy/mume/dependencies/katex/katex.min.css">
-      
-      
-      
-      
-      
-      
-      
-      
-      
-
-      <style> 
-      /**
- * prism.js Github theme based on GitHub's theme.
- * @author Sam Clarke
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: #333;
-  background: none;
-  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.4;
-
-  -moz-tab-size: 8;
-  -o-tab-size: 8;
-  tab-size: 8;
-
-  -webkit-hyphens: none;
-  -moz-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-  padding: .8em;
-  overflow: auto;
-  /* border: 1px solid #ddd; */
-  border-radius: 3px;
-  /* background: #fff; */
-  background: #f5f5f5;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: .1em;
-  border-radius: .3em;
-  white-space: normal;
-  background: #f5f5f5;
-}
-
-.token.comment,
-.token.blockquote {
-  color: #969896;
-}
-
-.token.cdata {
-  color: #183691;
-}
-
-.token.doctype,
-.token.punctuation,
-.token.variable,
-.token.macro.property {
-  color: #333;
-}
-
-.token.operator,
-.token.important,
-.token.keyword,
-.token.rule,
-.token.builtin {
-  color: #a71d5d;
-}
-
-.token.string,
-.token.url,
-.token.regex,
-.token.attr-value {
-  color: #183691;
-}
-
-.token.property,
-.token.number,
-.token.boolean,
-.token.entity,
-.token.atrule,
-.token.constant,
-.token.symbol,
-.token.command,
-.token.code {
-  color: #0086b3;
-}
-
-.token.tag,
-.token.selector,
-.token.prolog {
-  color: #63a35c;
-}
-
-.token.function,
-.token.namespace,
-.token.pseudo-element,
-.token.class,
-.token.class-name,
-.token.pseudo-class,
-.token.id,
-.token.url-reference .token.variable,
-.token.attr-name {
-  color: #795da3;
-}
-
-.token.entity {
-  cursor: help;
-}
-
-.token.title,
-.token.title .token.punctuation {
-  font-weight: bold;
-  color: #1d3e81;
-}
-
-.token.list {
-  color: #ed6a43;
-}
-
-.token.inserted {
-  background-color: #eaffea;
-  color: #55a532;
-}
-
-.token.deleted {
-  background-color: #ffecec;
-  color: #bd2c00;
-}
-
-.token.bold {
-  font-weight: bold;
-}
-
-.token.italic {
-  font-style: italic;
-}
-
-
-/* JSON */
-.language-json .token.property {
-  color: #183691;
-}
-
-.language-markup .token.tag .token.punctuation {
-  color: #333;
-}
-
-/* CSS */
-code.language-css,
-.language-css .token.function {
-  color: #0086b3;
-}
-
-/* YAML */
-.language-yaml .token.atrule {
-  color: #63a35c;
-}
-
-code.language-yaml {
-  color: #183691;
-}
-
-/* Ruby */
-.language-ruby .token.function {
-  color: #333;
-}
-
-/* Markdown */
-.language-markdown .token.url {
-  color: #795da3;
-}
-
-/* Makefile */
-.language-makefile .token.symbol {
-  color: #795da3;
-}
-
-.language-makefile .token.variable {
-  color: #183691;
-}
-
-.language-makefile .token.builtin {
-  color: #0086b3;
-}
-
-/* Bash */
-.language-bash .token.keyword {
-  color: #0086b3;
-}
-
-/* highlight */
-pre[data-line] {
-  position: relative;
-  padding: 1em 0 1em 3em;
-}
-pre[data-line] .line-highlight-wrapper {
-  position: absolute;
-  top: 0;
-  left: 0;
-  background-color: transparent;
-  display: block;
-  width: 100%;
-}
-
-pre[data-line] .line-highlight {
-  position: absolute;
-  left: 0;
-  right: 0;
-  padding: inherit 0;
-  margin-top: 1em;
-  background: hsla(24, 20%, 50%,.08);
-  background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
-  pointer-events: none;
-  line-height: inherit;
-  white-space: pre;
-}
-
-pre[data-line] .line-highlight:before, 
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-start);
-  position: absolute;
-  top: .4em;
-  left: .6em;
-  min-width: 1em;
-  padding: 0 .5em;
-  background-color: hsla(24, 20%, 50%,.4);
-  color: hsl(24, 20%, 95%);
-  font: bold 65%/1.5 sans-serif;
-  text-align: center;
-  vertical-align: .3em;
-  border-radius: 999px;
-  text-shadow: none;
-  box-shadow: 0 1px white;
-}
-
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-end);
-  top: auto;
-  bottom: .4em;
-}html body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ul,html body>ol{margin-bottom:16px}html body ul,html body ol{padding-left:2em}html body ul.no-list,html body ol.no-list{padding:0;list-style-type:none}html body ul ul,html body ul ol,html body ol ol,html body ol ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:bold;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em !important;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::before,html body code::after{letter-spacing:-0.2em;content:"\00a0"}html body pre>code{padding:0;margin:0;font-size:.85em !important;word-break:normal;white-space:pre;background:transparent;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;font-size:.85em !important;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:before,html body pre tt:before,html body pre code:after,html body pre tt:after{content:normal}html body p,html body blockquote,html body ul,html body ol,html body dl,html body pre{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body pre,html body code{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview .pagebreak,.markdown-preview .newpage{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center !important}.markdown-preview:not([for="preview"]) .code-chunk .btn-group{display:none}.markdown-preview:not([for="preview"]) .code-chunk .status{display:none}.markdown-preview:not([for="preview"]) .code-chunk .output-div{margin-bottom:16px}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0}@media screen and (min-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px)}}@media screen and (max-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{font-size:14px !important;padding:1em}}@media print{html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,0.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{padding:0 1.6em;margin-top:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc li{margin-bottom:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{list-style-type:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% -  300px);padding:2em calc(50% - 457px -  150px);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
-/* Please visit the URL below for more information: */
-/*   https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */
- 
-      </style>
-    </head>
-    <body for="html-export">
-      <div class="mume markdown-preview   ">
-      <h1 class="mume-header" id="release-notes-for-the-aeri-dataset">Release notes for the AERI dataset</h1>
-
-<p>The database dump contains information about errors encountered by people when using Eclipse. It is composed of several mongodb tables and uses the bson format. Only two tables contain stack traces: <code>problems</code> and <code>incidents</code>.</p>
-<p>The bson files can be read using the bsondump utility, provided with the mongodb client package (mongodb-clients on Debian).</p>
-<pre data-role="codeBlock" data-info class="language-"><code>bsondump problems.bson --type json &gt; problems.json
-</code></pre><p>After conversion the two files are quite big: 37GB for incidents and 2.1 GB for problems.</p>
-<p>Unfortunately the utility adds some progress information in the UI that needs to be removed from the output:</p>
-<pre data-role="codeBlock" data-info class="language-"><code>grep -v &apos;Progress: &apos; problems.json &gt; problems_clean.json
-</code></pre><p>We also had to remove a few (approx. a dozen of) lines because they embed unparseable source code, characters or asian/binary/utf8/16/256 text. The script tries to JSON-decode all lines one by one, and on failure simply goes to the next line.</p>
-<p>For <code>problems</code> (the file is reasonably small) the script generates for each line a separate JSON file with only information related to that line. The script for problems extraction is <code>parse_json_problems.pl</code>. Output is 820MB and processing time is roughly 45mn.</p>
-<p>For <code>incidents</code> (file is 37GB) the script generates for each line a separate JSON file with only information related to that line. For the records, trying to generate a single file requires at least twice the size of the file in RAM/SWAP (i.e. roughly 74GB). There are 2084328 files in the output for 17GB. The script for incidents extraction is <code>parse_json_incidents.pl</code>. To get an idea of the resources required to process that, the final incidents extraction took roughly 16h on a quite powerful box.</p>
-
-      </div>
-      
-      
-    
-    
-    
-    
-    
-    
-    
-    
-  
-    </body></html>
\ No newline at end of file
diff --git a/datasets/aeri_stacktraces/scava_aeri_readme.md b/datasets/aeri_stacktraces/scava_aeri_readme.md
deleted file mode 100644
index ff801dedb216e26773ac30d9b684507b440e3909..0000000000000000000000000000000000000000
--- a/datasets/aeri_stacktraces/scava_aeri_readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-# Release notes for the AERI dataset
-
-The database dump contains information about errors encountered by people when using Eclipse. It is composed of several mongodb tables and uses the bson format. Only two tables contain stack traces: `problems` and `incidents`.
-
-The bson files can be read using the bsondump utility, provided with the mongodb client package (mongodb-clients on Debian).
-```
-bsondump problems.bson --type json > problems.json
-```
-
-After conversion the two files are quite big: 37GB for incidents and 2.1 GB for problems.
-
-Unfortunately the utility adds some progress information in the UI that needs to be removed from the output:
-```
-grep -v 'Progress: ' problems.json > problems_clean.json
-```
-
-We also had to remove a few (approx. a dozen of) lines because they embed unparseable source code, characters or asian/binary/utf8/16/256 text. The script tries to JSON-decode all lines one by one, and on failure simply goes to the next line.
-
-For `problems` (the file is reasonably small) the script generates for each line a separate JSON file with only information related to that line. The script for problems extraction is `parse_json_problems.pl`. Output is 820MB and processing time is roughly 45mn.
-
-For `incidents` (file is 37GB) the script generates for each line a separate JSON file with only information related to that line. For the records, trying to generate a single file requires at least twice the size of the file in RAM/SWAP (i.e. roughly 74GB). There are 2084328 files in the output for 17GB. The script for incidents extraction is `parse_json_incidents.pl`. To get an idea of the resources required to process that, the final incidents extraction took roughly 16h on a quite powerful box.
diff --git a/datasets/eclipse_mls/eclipse_mls.html b/datasets/eclipse_mls/eclipse_mls.html
deleted file mode 100644
index af46da5a12ace0201c38f8862ca8120bda01a3fc..0000000000000000000000000000000000000000
--- a/datasets/eclipse_mls/eclipse_mls.html
+++ /dev/null
@@ -1,714 +0,0 @@
-<!DOCTYPE html><html><head>
-      <title>eclipse_mls</title>
-      <meta charset="utf-8">
-      <meta name="viewport" content="width=device-width, initial-scale=1.0">
-      
-      <link rel="stylesheet" href="file:////home/boris/.atom/packages/markdown-preview-enhanced/node_modules/@shd101wyy/mume/dependencies/katex/katex.min.css">
-      
-      
-      
-      
-      
-      
-      
-      
-      
-
-      <style> 
-      /**
- * prism.js Github theme based on GitHub's theme.
- * @author Sam Clarke
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: #333;
-  background: none;
-  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.4;
-
-  -moz-tab-size: 8;
-  -o-tab-size: 8;
-  tab-size: 8;
-
-  -webkit-hyphens: none;
-  -moz-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-  padding: .8em;
-  overflow: auto;
-  /* border: 1px solid #ddd; */
-  border-radius: 3px;
-  /* background: #fff; */
-  background: #f5f5f5;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: .1em;
-  border-radius: .3em;
-  white-space: normal;
-  background: #f5f5f5;
-}
-
-.token.comment,
-.token.blockquote {
-  color: #969896;
-}
-
-.token.cdata {
-  color: #183691;
-}
-
-.token.doctype,
-.token.punctuation,
-.token.variable,
-.token.macro.property {
-  color: #333;
-}
-
-.token.operator,
-.token.important,
-.token.keyword,
-.token.rule,
-.token.builtin {
-  color: #a71d5d;
-}
-
-.token.string,
-.token.url,
-.token.regex,
-.token.attr-value {
-  color: #183691;
-}
-
-.token.property,
-.token.number,
-.token.boolean,
-.token.entity,
-.token.atrule,
-.token.constant,
-.token.symbol,
-.token.command,
-.token.code {
-  color: #0086b3;
-}
-
-.token.tag,
-.token.selector,
-.token.prolog {
-  color: #63a35c;
-}
-
-.token.function,
-.token.namespace,
-.token.pseudo-element,
-.token.class,
-.token.class-name,
-.token.pseudo-class,
-.token.id,
-.token.url-reference .token.variable,
-.token.attr-name {
-  color: #795da3;
-}
-
-.token.entity {
-  cursor: help;
-}
-
-.token.title,
-.token.title .token.punctuation {
-  font-weight: bold;
-  color: #1d3e81;
-}
-
-.token.list {
-  color: #ed6a43;
-}
-
-.token.inserted {
-  background-color: #eaffea;
-  color: #55a532;
-}
-
-.token.deleted {
-  background-color: #ffecec;
-  color: #bd2c00;
-}
-
-.token.bold {
-  font-weight: bold;
-}
-
-.token.italic {
-  font-style: italic;
-}
-
-
-/* JSON */
-.language-json .token.property {
-  color: #183691;
-}
-
-.language-markup .token.tag .token.punctuation {
-  color: #333;
-}
-
-/* CSS */
-code.language-css,
-.language-css .token.function {
-  color: #0086b3;
-}
-
-/* YAML */
-.language-yaml .token.atrule {
-  color: #63a35c;
-}
-
-code.language-yaml {
-  color: #183691;
-}
-
-/* Ruby */
-.language-ruby .token.function {
-  color: #333;
-}
-
-/* Markdown */
-.language-markdown .token.url {
-  color: #795da3;
-}
-
-/* Makefile */
-.language-makefile .token.symbol {
-  color: #795da3;
-}
-
-.language-makefile .token.variable {
-  color: #183691;
-}
-
-.language-makefile .token.builtin {
-  color: #0086b3;
-}
-
-/* Bash */
-.language-bash .token.keyword {
-  color: #0086b3;
-}
-
-/* highlight */
-pre[data-line] {
-  position: relative;
-  padding: 1em 0 1em 3em;
-}
-pre[data-line] .line-highlight-wrapper {
-  position: absolute;
-  top: 0;
-  left: 0;
-  background-color: transparent;
-  display: block;
-  width: 100%;
-}
-
-pre[data-line] .line-highlight {
-  position: absolute;
-  left: 0;
-  right: 0;
-  padding: inherit 0;
-  margin-top: 1em;
-  background: hsla(24, 20%, 50%,.08);
-  background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
-  pointer-events: none;
-  line-height: inherit;
-  white-space: pre;
-}
-
-pre[data-line] .line-highlight:before, 
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-start);
-  position: absolute;
-  top: .4em;
-  left: .6em;
-  min-width: 1em;
-  padding: 0 .5em;
-  background-color: hsla(24, 20%, 50%,.4);
-  color: hsl(24, 20%, 95%);
-  font: bold 65%/1.5 sans-serif;
-  text-align: center;
-  vertical-align: .3em;
-  border-radius: 999px;
-  text-shadow: none;
-  box-shadow: 0 1px white;
-}
-
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-end);
-  top: auto;
-  bottom: .4em;
-}html body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ul,html body>ol{margin-bottom:16px}html body ul,html body ol{padding-left:2em}html body ul.no-list,html body ol.no-list{padding:0;list-style-type:none}html body ul ul,html body ul ol,html body ol ol,html body ol ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:bold;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em !important;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::before,html body code::after{letter-spacing:-0.2em;content:"\00a0"}html body pre>code{padding:0;margin:0;font-size:.85em !important;word-break:normal;white-space:pre;background:transparent;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;font-size:.85em !important;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:before,html body pre tt:before,html body pre code:after,html body pre tt:after{content:normal}html body p,html body blockquote,html body ul,html body ol,html body dl,html body pre{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body pre,html body code{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview .pagebreak,.markdown-preview .newpage{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center !important}.markdown-preview:not([for="preview"]) .code-chunk .btn-group{display:none}.markdown-preview:not([for="preview"]) .code-chunk .status{display:none}.markdown-preview:not([for="preview"]) .code-chunk .output-div{margin-bottom:16px}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0}@media screen and (min-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px)}}@media screen and (max-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{font-size:14px !important;padding:1em}}@media print{html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,0.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{padding:0 1.6em;margin-top:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc li{margin-bottom:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{list-style-type:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% -  300px);padding:2em calc(50% - 457px -  150px);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
-/* Please visit the URL below for more information: */
-/*   https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */
- 
-      </style>
-    </head>
-    <body for="html-export">
-      <div class="mume markdown-preview   ">
-      <h1 class="mume-header" id="the-eclipse-mailing-lists-datasets">The Eclipse mailing lists datasets</h1>
-
-<h2 class="mume-header" id="about-this-datasets">About this datasets</h2>
-
-<p>The <a href="https://eclipse.org">Eclipse Foundation</a> provides individuals and organizations with a commercially focused environment for open source software innovation. It includes git repositories, reviews, issues management, continuous integration, forums and mailing lists among other services. Many well-known and widely used projects are hosted on the forge, including the Eclipse IDE itself, several projects about IoT, modeling, and the new Java working group.</p>
-<p>This dataset is published under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons BY-Attribution-Share Alike 4.0 (International) licence</a>.</p>
-<h2 class="mume-header" id="the-csv-extract">The CSV extract</h2>
-
-<p>This dataset is a dump of all posts sent on all mailing lists hosted at the Eclipse Forge. It only includes the list name, post ID, sent date, author name and address, and post subject. the body of messages is dismissed.</p>
-<p>Although this is public data (the mailing lists can be browsed on the <a href="https://accounts.eclipse.org/mailing-list">official mailman page</a>) all data has been anonymised to prevent any misuse.<br>
-The privacy issues identified, along with the anonymisation process, have been covered in a <a href="../../docs/datasets_privacy.html">dedicated document</a>.</p>
-<p><strong>Downloads</strong></p>
-<ul>
-<li><strong>Download the Eclipse mailing lists dataset</strong> <a href="eclipse_mls.gz">here</a>.
-<ul>
-<li>Content: roughly 400K entries, 6 attributes</li>
-<li>Size: 12M compressed, 63M raw</li>
-</ul>
-</li>
-<li>Check the <strong>documentation</strong> for the dataset <a href="mbox_csv_analysis.html">here</a>. For reproducibility we also provide the <a href="mbox_csv_analysis.rmd">R Markdown document</a> for the dataset analysis and documentation.</li>
-</ul>
-<h2 class="mume-header" id="project-mboxes">Project mboxes</h2>
-
-<p>This dataset provides all Eclipse mailing lists as mboxes, compressed using gzip. Exhaustive list of downloads is as follows:</p>
-<ul>
-<li><a href="mboxes/4diac-dev.mbox.gz">4diac-dev</a> (size: 6,0M)</li>
-<li><a href="mboxes/acceleo-dev.mbox.gz">acceleo-dev</a> (size: 340K)</li>
-<li><a href="mboxes/actf-dev.mbox.gz">actf-dev</a> (size: 9,8M)</li>
-<li><a href="mboxes/acute-dev.mbox.gz">acute-dev</a> (size: 20K)</li>
-<li><a href="mboxes/aether-build.mbox.gz">aether-build</a> (size: 100K)</li>
-<li><a href="mboxes/aether-dev.mbox.gz">aether-dev</a> (size: 152K)</li>
-<li><a href="mboxes/aether-users.mbox.gz">aether-users</a> (size: 652K)</li>
-<li><a href="mboxes/agail-dev.mbox.gz">agail-dev</a> (size: 124K)</li>
-<li><a href="mboxes/ajdt-dev.mbox.gz">ajdt-dev</a> (size: 5,0M)</li>
-<li><a href="mboxes/albireo-dev.mbox.gz">albireo-dev</a> (size: 884K)</li>
-<li><a href="mboxes/alf-dev.mbox.gz">alf-dev</a> (size: 3,5M)</li>
-<li><a href="mboxes/alf-events.mbox.gz">alf-events</a> (size: 148K)</li>
-<li><a href="mboxes/alf-req.mbox.gz">alf-req</a> (size: 192K)</li>
-<li><a href="mboxes/amalgam-dev.mbox.gz">amalgam-dev</a> (size: 200K)</li>
-<li><a href="mboxes/amalgam-releng.mbox.gz">amalgam-releng</a> (size: 4,0K)</li>
-<li><a href="mboxes/amp-dev.mbox.gz">amp-dev</a> (size: 344K)</li>
-<li><a href="mboxes/andmore-dev.mbox.gz">andmore-dev</a> (size: 1,8M)</li>
-<li><a href="mboxes/antenna-dev.mbox.gz">antenna-dev</a> (size: 76K)</li>
-<li><a href="mboxes/aperi-dev.mbox.gz">aperi-dev</a> (size: 22M)</li>
-<li><a href="mboxes/aperi-news.mbox.gz">aperi-news</a> (size: 184K)</li>
-<li><a href="mboxes/aperi-survey.mbox.gz">aperi-survey</a> (size: 8,0K)</li>
-<li><a href="mboxes/apogee-dev.mbox.gz">apogee-dev</a> (size: 16K)</li>
-<li><a href="mboxes/apogy-dev.mbox.gz">apogy-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/app4mc-dev.mbox.gz">app4mc-dev</a> (size: 36K)</li>
-<li><a href="mboxes/apricot-dev.mbox.gz">apricot-dev</a> (size: 16K)</li>
-<li><a href="mboxes/apricot-users.mbox.gz">apricot-users</a> (size: 8,0K)</li>
-<li><a href="mboxes/articles_editor.mbox.gz">articles_editor</a> (size: 4,0K)</li>
-<li><a href="mboxes/aspectj-announce.mbox.gz">aspectj-announce</a> (size: 428K)</li>
-<li><a href="mboxes/aspectj-dev.mbox.gz">aspectj-dev</a> (size: 11M)</li>
-<li><a href="mboxes/aspectj-users.mbox.gz">aspectj-users</a> (size: 53M)</li>
-<li><a href="mboxes/atf-dev.mbox.gz">atf-dev</a> (size: 1,9M)</li>
-<li><a href="mboxes/athena-dev.mbox.gz">athena-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/austin-ec.mbox.gz">austin-ec</a> (size: 28K)</li>
-<li><a href="mboxes/auto-iwg.mbox.gz">auto-iwg</a> (size: 35M)</li>
-<li><a href="mboxes/avsys-dev.mbox.gz">avsys-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/b3-dev.mbox.gz">b3-dev</a> (size: 60K)</li>
-<li><a href="mboxes/b3.mbox.gz">b3</a> (size: 16K)</li>
-<li><a href="mboxes/babel-dev.mbox.gz">babel-dev</a> (size: 5,6M)</li>
-<li><a href="mboxes/basyx-dev.mbox.gz">basyx-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/bayarea-ec.mbox.gz">bayarea-ec</a> (size: 36K)</li>
-<li><a href="mboxes/belgium-ec.mbox.gz">belgium-ec</a> (size: 16K)</li>
-<li><a href="mboxes/birt-charting-dev.mbox.gz">birt-charting-dev</a> (size: 13M)</li>
-<li><a href="mboxes/birt-dev.mbox.gz">birt-dev</a> (size: 23M)</li>
-<li><a href="mboxes/birt-news.mbox.gz">birt-news</a> (size: 1,1M)</li>
-<li><a href="mboxes/birt-pmc.mbox.gz">birt-pmc</a> (size: 6,0M)</li>
-<li><a href="mboxes/birt-proposal.mbox.gz">birt-proposal</a> (size: 16K)</li>
-<li><a href="mboxes/birt-report-designer-dev.mbox.gz">birt-report-designer-dev</a> (size: 444K)</li>
-<li><a href="mboxes/birt-report-engine-dev.mbox.gz">birt-report-engine-dev</a> (size: 380K)</li>
-<li><a href="mboxes/blinki-dev.mbox.gz">blinki-dev</a> (size: 12K)</li>
-<li><a href="mboxes/bpel-dev.mbox.gz">bpel-dev</a> (size: 12M)</li>
-<li><a href="mboxes/bpmn2-modeler-dev.mbox.gz">bpmn2-modeler-dev</a> (size: 1,6M)</li>
-<li><a href="mboxes/bpmn-dev.mbox.gz">bpmn-dev</a> (size: 88K)</li>
-<li><a href="mboxes/bpmn-user.mbox.gz">bpmn-user</a> (size: 6,6M)</li>
-<li><a href="mboxes/brazil-ec.mbox.gz">brazil-ec</a> (size: 8,0K)</li>
-<li><a href="mboxes/bridgeiot-dev.mbox.gz">bridgeiot-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/buckminster-dev.mbox.gz">buckminster-dev</a> (size: 7,8M)</li>
-<li><a href="mboxes/budapest-ec.mbox.gz">budapest-ec</a> (size: 12K)</li>
-<li><a href="mboxes/buildship-dev.mbox.gz">buildship-dev</a> (size: 296K)</li>
-<li><a href="mboxes/bulgaria-ec.mbox.gz">bulgaria-ec</a> (size: 12K)</li>
-<li><a href="mboxes/bulgaria-ec-news.mbox.gz">bulgaria-ec-news</a> (size: 32K)</li>
-<li><a href="mboxes/ca-dev.mbox.gz">ca-dev</a> (size: 12K)</li>
-<li><a href="mboxes/camf-dev.mbox.gz">camf-dev</a> (size: 1,1M)</li>
-<li><a href="mboxes/camf-users.mbox.gz">camf-users</a> (size: 8,0K)</li>
-<li><a href="mboxes/capra-dev.mbox.gz">capra-dev</a> (size: 92K)</li>
-<li><a href="mboxes/cbi-dev.mbox.gz">cbi-dev</a> (size: 6,0M)</li>
-<li><a href="mboxes/cdt-build-inbox.mbox.gz">cdt-build-inbox</a> (size: 4,0K)</li>
-<li><a href="mboxes/cdt-contrib-dev.mbox.gz">cdt-contrib-dev</a> (size: 60K)</li>
-<li><a href="mboxes/cdt-core-dev.mbox.gz">cdt-core-dev</a> (size: 1,2M)</li>
-<li><a href="mboxes/cdt-cpp-extensions-dev.mbox.gz">cdt-cpp-extensions-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/cdt-cppunit-inbox.mbox.gz">cdt-cppunit-inbox</a> (size: 104K)</li>
-<li><a href="mboxes/cdt-cvs.mbox.gz">cdt-cvs</a> (size: 108K)</li>
-<li><a href="mboxes/cdt-debug-dev.mbox.gz">cdt-debug-dev</a> (size: 2,7M)</li>
-<li><a href="mboxes/cdt-dev.mbox.gz">cdt-dev</a> (size: 124M)</li>
-<li><a href="mboxes/cdt-doc-dev.mbox.gz">cdt-doc-dev</a> (size: 260K)</li>
-<li><a href="mboxes/cdt-doc-inbox.mbox.gz">cdt-doc-inbox</a> (size: 2,6M)</li>
-<li><a href="mboxes/cdt-generic-extensions-dev.mbox.gz">cdt-generic-extensions-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/cdtk-dev.mbox.gz">cdtk-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/cdt-launch-inbox.mbox.gz">cdt-launch-inbox</a> (size: 136K)</li>
-<li><a href="mboxes/cdt-lpex-dev.mbox.gz">cdt-lpex-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/cdt-patch.mbox.gz">cdt-patch</a> (size: 26M)</li>
-<li><a href="mboxes/cdt-releng-inbox.mbox.gz">cdt-releng-inbox</a> (size: 168K)</li>
-<li><a href="mboxes/cdt-test-dev.mbox.gz">cdt-test-dev</a> (size: 1,6M)</li>
-<li><a href="mboxes/cdt-ui-dev.mbox.gz">cdt-ui-dev</a> (size: 320K)</li>
-<li><a href="mboxes/ceylon-dev.mbox.gz">ceylon-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/cf-dev.mbox.gz">cf-dev</a> (size: 5,6M)</li>
-<li><a href="mboxes/cft-dev.mbox.gz">cft-dev</a> (size: 220K)</li>
-<li><a href="mboxes/che-dev.mbox.gz">che-dev</a> (size: 26M)</li>
-<li><a href="mboxes/chemclipse-dev.mbox.gz">chemclipse-dev</a> (size: 14M)</li>
-<li><a href="mboxes/chicago-ec.mbox.gz">chicago-ec</a> (size: 8,0K)</li>
-<li><a href="mboxes/cloud-dev.mbox.gz">cloud-dev</a> (size: 3,7M)</li>
-<li><a href="mboxes/cloudfree-dev.mbox.gz">cloudfree-dev</a> (size: 188K)</li>
-<li><a href="mboxes/cme-dev.mbox.gz">cme-dev</a> (size: 184K)</li>
-<li><a href="mboxes/cme-users.mbox.gz">cme-users</a> (size: 236K)</li>
-<li><a href="mboxes/cobol-dev.mbox.gz">cobol-dev</a> (size: 1,1M)</li>
-<li><a href="mboxes/cognicrypt-dev.mbox.gz">cognicrypt-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/collections-dev.mbox.gz">collections-dev</a> (size: 176K)</li>
-<li><a href="mboxes/community-outreach.mbox.gz">community-outreach</a> (size: 16K)</li>
-<li><a href="mboxes/concierge-dev.mbox.gz">concierge-dev</a> (size: 768K)</li>
-<li><a href="mboxes/configjsr-discuss.mbox.gz">configjsr-discuss</a> (size: 44K)</li>
-<li><a href="mboxes/configjsr-experts.mbox.gz">configjsr-experts</a> (size: 356K)</li>
-<li><a href="mboxes/context-dev.mbox.gz">context-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/corona-dev.mbox.gz">corona-dev</a> (size: 3,8M)</li>
-<li><a href="mboxes/corona-req.mbox.gz">corona-req</a> (size: 4,0K)</li>
-<li><a href="mboxes/corrosion-dev.mbox.gz">corrosion-dev</a> (size: 28K)</li>
-<li><a href="mboxes/cosmos-dev.mbox.gz">cosmos-dev</a> (size: 17M)</li>
-<li><a href="mboxes/cosmos-mgmt.mbox.gz">cosmos-mgmt</a> (size: 128K)</li>
-<li><a href="mboxes/cosmos-pmc.mbox.gz">cosmos-pmc</a> (size: 16K)</li>
-<li><a href="mboxes/crossmeter-dev.mbox.gz">crossmeter-dev</a> (size: 28K)</li>
-<li><a href="mboxes/cross-project-issues-dev.mbox.gz">cross-project-issues-dev</a> (size: 87M)</li>
-<li><a href="mboxes/cu-dev.mbox.gz">cu-dev</a> (size: 16K)</li>
-<li><a href="mboxes/cyclonedds-dev.mbox.gz">cyclonedds-dev</a> (size: 116K)</li>
-<li><a href="mboxes/dali-dev.mbox.gz">dali-dev</a> (size: 3,2M)</li>
-<li><a href="mboxes/damos-dev.mbox.gz">damos-dev</a> (size: 20K)</li>
-<li><a href="mboxes/dash-dev.mbox.gz">dash-dev</a> (size: 2,5M)</li>
-<li><a href="mboxes/dawnsci-dev.mbox.gz">dawnsci-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/deeplearning4j-dev.mbox.gz">deeplearning4j-dev</a> (size: 12K)</li>
-<li><a href="mboxes/detroit-ec.mbox.gz">detroit-ec</a> (size: 4,0K)</li>
-<li><a href="mboxes/diffmerge-dev.mbox.gz">diffmerge-dev</a> (size: 44K)</li>
-<li><a href="mboxes/dirigible-dev.mbox.gz">dirigible-dev</a> (size: 1,1M)</li>
-<li><a href="mboxes/distro-program.mbox.gz">distro-program</a> (size: 4,0K)</li>
-<li><a href="mboxes/ditto-dev.mbox.gz">ditto-dev</a> (size: 72K)</li>
-<li><a href="mboxes/dltk-dev.mbox.gz">dltk-dev</a> (size: 4,6M)</li>
-<li><a href="mboxes/doc2model-dev.mbox.gz">doc2model-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/dsdp-dd-dev.mbox.gz">dsdp-dd-dev</a> (size: 3,8M)</li>
-<li><a href="mboxes/dsdp-dev.mbox.gz">dsdp-dev</a> (size: 2,5M)</li>
-<li><a href="mboxes/dsdp-ercp-dev.mbox.gz">dsdp-ercp-dev</a> (size: 8,7M)</li>
-<li><a href="mboxes/dsdp-japan-wg.mbox.gz">dsdp-japan-wg</a> (size: 8,0K)</li>
-<li><a href="mboxes/dsdp-mtj-dev.mbox.gz">dsdp-mtj-dev</a> (size: 6,7M)</li>
-<li><a href="mboxes/dsdp-nab-dev-jp.mbox.gz">dsdp-nab-dev-jp</a> (size: 8,0K)</li>
-<li><a href="mboxes/dsdp-nab-dev.mbox.gz">dsdp-nab-dev</a> (size: 36K)</li>
-<li><a href="mboxes/dsdp-pmc.mbox.gz">dsdp-pmc</a> (size: 18M)</li>
-<li><a href="mboxes/dsdp-rtsc-dev.mbox.gz">dsdp-rtsc-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/dsdp-sequoyah-dev.mbox.gz">dsdp-sequoyah-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/dsdp-tcf-dev.mbox.gz">dsdp-tcf-dev</a> (size: 452K)</li>
-<li><a href="mboxes/dsdp-tm-dev.mbox.gz">dsdp-tm-dev</a> (size: 8,7M)</li>
-<li><a href="mboxes/dsdp-tml-dev.mbox.gz">dsdp-tml-dev</a> (size: 392K)</li>
-<li><a href="mboxes/dtp-arch.mbox.gz">dtp-arch</a> (size: 4,0K)</li>
-<li><a href="mboxes/dtp-connect-dev.mbox.gz">dtp-connect-dev</a> (size: 492K)</li>
-<li><a href="mboxes/dtp-dev.mbox.gz">dtp-dev</a> (size: 14M)</li>
-<li><a href="mboxes/dtp-incubator-dev.mbox.gz">dtp-incubator-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/dtp-models-dev.mbox.gz">dtp-models-dev</a> (size: 20K)</li>
-<li><a href="mboxes/dtp-plan.mbox.gz">dtp-plan</a> (size: 4,0K)</li>
-<li><a href="mboxes/dtp-pmc.mbox.gz">dtp-pmc</a> (size: 2,9M)</li>
-<li><a href="mboxes/dtp-reqs.mbox.gz">dtp-reqs</a> (size: 4,0K)</li>
-<li><a href="mboxes/dtp-sqldevtools-dev.mbox.gz">dtp-sqldevtools-dev</a> (size: 1,7M)</li>
-<li><a href="mboxes/duttile-dev.mbox.gz">duttile-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/e4-dev.mbox.gz">e4-dev</a> (size: 31M)</li>
-<li><a href="mboxes/ease-dev.mbox.gz">ease-dev</a> (size: 3,3M)</li>
-<li><a href="mboxes/eatop-dev.mbox.gz">eatop-dev</a> (size: 92K)</li>
-<li><a href="mboxes/eavp-dev.mbox.gz">eavp-dev</a> (size: 3,5M)</li>
-<li><a href="mboxes/ebam-dev.mbox.gz">ebam-dev</a> (size: 24K)</li>
-<li><a href="mboxes/ebam-user.mbox.gz">ebam-user</a> (size: 228K)</li>
-<li><a href="mboxes/ebpm-dev.mbox.gz">ebpm-dev</a> (size: 32K)</li>
-<li><a href="mboxes/ebpm-user.mbox.gz">ebpm-user</a> (size: 24K)</li>
-<li><a href="mboxes/ebr-dev.mbox.gz">ebr-dev</a> (size: 172K)</li>
-<li><a href="mboxes/ecd-pmc.mbox.gz">ecd-pmc</a> (size: 948K)</li>
-<li><a href="mboxes/ecd-tools-wg.mbox.gz">ecd-tools-wg</a> (size: 8,0K)</li>
-<li><a href="mboxes/ecesis-dev.mbox.gz">ecesis-dev</a> (size: 24K)</li>
-<li><a href="mboxes/ecf-build.mbox.gz">ecf-build</a> (size: 3,6M)</li>
-<li><a href="mboxes/ecf-def.mbox.gz">ecf-def</a> (size: 4,0K)</li>
-<li><a href="mboxes/ecf-dev.mbox.gz">ecf-dev</a> (size: 23M)</li>
-<li><a href="mboxes/eclemma-dev.mbox.gz">eclemma-dev</a> (size: 580K)</li>
-<li><a href="mboxes/eclipse-announce-europe.mbox.gz">eclipse-announce-europe</a> (size: 88K)</li>
-<li><a href="mboxes/eclipsecon2011announce.mbox.gz">eclipsecon2011announce</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipse-dev.mbox.gz">eclipse-dev</a> (size: 19M)</li>
-<li><a href="mboxes/eclipse-ide-dev.mbox.gz">eclipse-ide-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipse-incubator-e4-dev.mbox.gz">eclipse-incubator-e4-dev</a> (size: 5,5M)</li>
-<li><a href="mboxes/eclipselink-dev.mbox.gz">eclipselink-dev</a> (size: 20M)</li>
-<li><a href="mboxes/eclipselink-users.mbox.gz">eclipselink-users</a> (size: 31M)</li>
-<li><a href="mboxes/eclipse-live.mbox.gz">eclipse-live</a> (size: 76K)</li>
-<li><a href="mboxes/eclipse-mirrors.mbox.gz">eclipse-mirrors</a> (size: 1,3M)</li>
-<li><a href="mboxes/eclipse.org-architecture-council.mbox.gz">eclipse.org-architecture-council</a> (size: 22M)</li>
-<li><a href="mboxes/eclipse.org-committers.mbox.gz">eclipse.org-committers</a> (size: 9,0M)</li>
-<li><a href="mboxes/eclipse.org-feep-stakeholders.mbox.gz">eclipse.org-feep-stakeholders</a> (size: 128K)</li>
-<li><a href="mboxes/eclipse.org-member-marketing.mbox.gz">eclipse.org-member-marketing</a> (size: 28M)</li>
-<li><a href="mboxes/eclipse.org-members-committers.mbox.gz">eclipse.org-members-committers</a> (size: 5,3M)</li>
-<li><a href="mboxes/eclipse.org-migration.mbox.gz">eclipse.org-migration</a> (size: 1,5M)</li>
-<li><a href="mboxes/eclipse.org-planning-council.mbox.gz">eclipse.org-planning-council</a> (size: 14M)</li>
-<li><a href="mboxes/eclipse.org-prc.mbox.gz">eclipse.org-prc</a> (size: 3,7M)</li>
-<li><a href="mboxes/eclipse.org-project-leadership.mbox.gz">eclipse.org-project-leadership</a> (size: 788K)</li>
-<li><a href="mboxes/eclipse.org-project-leads.mbox.gz">eclipse.org-project-leads</a> (size: 92K)</li>
-<li><a href="mboxes/eclipse.org-requirements-council.mbox.gz">eclipse.org-requirements-council</a> (size: 3,8M)</li>
-<li><a href="mboxes/eclipse.org-strategic-consumer.mbox.gz">eclipse.org-strategic-consumer</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipse.org-strategic-developer.mbox.gz">eclipse.org-strategic-developer</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipse.org-sustaining-members.mbox.gz">eclipse.org-sustaining-members</a> (size: 8,0K)</li>
-<li><a href="mboxes/eclipse.org-test.mbox.gz">eclipse.org-test</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipse.org-unaffiliated-committer.mbox.gz">eclipse.org-unaffiliated-committer</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipse-pmc.mbox.gz">eclipse-pmc</a> (size: 9,8M)</li>
-<li><a href="mboxes/eclipse-scripting-dev.mbox.gz">eclipse-scripting-dev</a> (size: 928K)</li>
-<li><a href="mboxes/eclipse-soc.mbox.gz">eclipse-soc</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipse-tools-announce.mbox.gz">eclipse-tools-announce</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipsezilla-business.mbox.gz">eclipsezilla-business</a> (size: 8,0K)</li>
-<li><a href="mboxes/eclipsezilla-developer.mbox.gz">eclipsezilla-developer</a> (size: 112K)</li>
-<li><a href="mboxes/eclipsezilla-special.mbox.gz">eclipsezilla-special</a> (size: 4,0K)</li>
-<li><a href="mboxes/eclipsezilla-user.mbox.gz">eclipsezilla-user</a> (size: 12K)</li>
-<li><a href="mboxes/edapt-dev.mbox.gz">edapt-dev</a> (size: 64K)</li>
-<li><a href="mboxes/edje-dev.mbox.gz">edje-dev</a> (size: 32K)</li>
-<li><a href="mboxes/edt-dev.mbox.gz">edt-dev</a> (size: 460K)</li>
-<li><a href="mboxes/ee4j-build.mbox.gz">ee4j-build</a> (size: 4,7M)</li>
-<li><a href="mboxes/ee4j-community.mbox.gz">ee4j-community</a> (size: 14M)</li>
-<li><a href="mboxes/ee4j-dev.mbox.gz">ee4j-dev</a> (size: 20K)</li>
-<li><a href="mboxes/ee4j-pmc.mbox.gz">ee4j-pmc</a> (size: 5,9M)</li>
-<li><a href="mboxes/ee.next-wg.mbox.gz">ee.next-wg</a> (size: 28K)</li>
-<li><a href="mboxes/efm-dev.mbox.gz">efm-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/efxclipse-dev.mbox.gz">efxclipse-dev</a> (size: 20K)</li>
-<li><a href="mboxes/egerrit-dev.mbox.gz">egerrit-dev</a> (size: 304K)</li>
-<li><a href="mboxes/egf-dev.mbox.gz">egf-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/egit-build.mbox.gz">egit-build</a> (size: 3,4M)</li>
-<li><a href="mboxes/egit-dev.mbox.gz">egit-dev</a> (size: 16M)</li>
-<li><a href="mboxes/ejb-dev.mbox.gz">ejb-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/el-dev.mbox.gz">el-dev</a> (size: 20K)</li>
-<li><a href="mboxes/elk-dev.mbox.gz">elk-dev</a> (size: 408K)</li>
-<li><a href="mboxes/elogbook-dev.mbox.gz">elogbook-dev</a> (size: 12K)</li>
-<li><a href="mboxes/emfcompare-build.mbox.gz">emfcompare-build</a> (size: 6,8M)</li>
-<li><a href="mboxes/emf-compare-dev.mbox.gz">emf-compare-dev</a> (size: 68K)</li>
-<li><a href="mboxes/emfcp-dev.mbox.gz">emfcp-dev</a> (size: 484K)</li>
-<li><a href="mboxes/emf-dev.mbox.gz">emf-dev</a> (size: 6,0M)</li>
-<li><a href="mboxes/emf.index-dev.mbox.gz">emf.index-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/emfindex-dev.mbox.gz">emfindex-dev</a> (size: 92K)</li>
-<li><a href="mboxes/emfparsley-dev.mbox.gz">emfparsley-dev</a> (size: 24K)</li>
-<li><a href="mboxes/emfrefactor-dev.mbox.gz">emfrefactor-dev</a> (size: 48K)</li>
-<li><a href="mboxes/emfstore-dev.mbox.gz">emfstore-dev</a> (size: 1,2M)</li>
-<li><a href="mboxes/emft-dev.mbox.gz">emft-dev</a> (size: 2,8M)</li>
-<li><a href="mboxes/epf-dev.mbox.gz">epf-dev</a> (size: 96M)</li>
-<li><a href="mboxes/epf-dev-pt.mbox.gz">epf-dev-pt</a> (size: 108K)</li>
-<li><a href="mboxes/epl-discuss.mbox.gz">epl-discuss</a> (size: 4,5M)</li>
-<li><a href="mboxes/epp-dev.mbox.gz">epp-dev</a> (size: 19M)</li>
-<li><a href="mboxes/epsilon-dev.mbox.gz">epsilon-dev</a> (size: 748K)</li>
-<li><a href="mboxes/equinox-dev.mbox.gz">equinox-dev</a> (size: 31M)</li>
-<li><a href="mboxes/ercp-dev.mbox.gz">ercp-dev</a> (size: 336K)</li>
-<li><a href="mboxes/es-dev.mbox.gz">es-dev</a> (size: 256K)</li>
-<li><a href="mboxes/esl-dev.mbox.gz">esl-dev</a> (size: 12K)</li>
-<li><a href="mboxes/etrice-dev.mbox.gz">etrice-dev</a> (size: 840K)</li>
-<li><a href="mboxes/etrice-users.mbox.gz">etrice-users</a> (size: 76K)</li>
-<li><a href="mboxes/europa-build-workshop.mbox.gz">europa-build-workshop</a> (size: 1,2M)</li>
-<li><a href="mboxes/evangelists.mbox.gz">evangelists</a> (size: 12K)</li>
-<li><a href="mboxes/examples-dev.mbox.gz">examples-dev</a> (size: 36K)</li>
-<li><a href="mboxes/facet-dev.mbox.gz">facet-dev</a> (size: 16K)</li>
-<li><a href="mboxes/fairfax-ec.mbox.gz">fairfax-ec</a> (size: 4,0K)</li>
-<li><a href="mboxes/featuremodel-dev.mbox.gz">featuremodel-dev</a> (size: 40K)</li>
-<li><a href="mboxes/flux-dev.mbox.gz">flux-dev</a> (size: 972K)</li>
-<li><a href="mboxes/flux-releng.mbox.gz">flux-releng</a> (size: 4,0K)</li>
-<li><a href="mboxes/fmc-dev.mbox.gz">fmc-dev</a> (size: 28K)</li>
-<li><a href="mboxes/fog05-dev.mbox.gz">fog05-dev</a> (size: 28K)</li>
-<li><a href="mboxes/forum-admins.mbox.gz">forum-admins</a> (size: 12K)</li>
-<li><a href="mboxes/forums-admin.mbox.gz">forums-admin</a> (size: 4,0K)</li>
-<li><a href="mboxes/fproj-dev.mbox.gz">fproj-dev</a> (size: 16K)</li>
-<li><a href="mboxes/franca-dev.mbox.gz">franca-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/france-ec.mbox.gz">france-ec</a> (size: 364K)</li>
-<li><a href="mboxes/france-southwest-ec.mbox.gz">france-southwest-ec</a> (size: 4,0K)</li>
-<li><a href="mboxes/geclipse-dev.mbox.gz">geclipse-dev</a> (size: 8,5M)</li>
-<li><a href="mboxes/geclipse-user.mbox.gz">geclipse-user</a> (size: 344K)</li>
-<li><a href="mboxes/gef3d-dev.mbox.gz">gef3d-dev</a> (size: 476K)</li>
-<li><a href="mboxes/gef-dev.mbox.gz">gef-dev</a> (size: 4,8M)</li>
-<li><a href="mboxes/gemini-dev.mbox.gz">gemini-dev</a> (size: 7,0M)</li>
-<li><a href="mboxes/gemoc-dev.mbox.gz">gemoc-dev</a> (size: 468K)</li>
-<li><a href="mboxes/gemoc-rc.mbox.gz">gemoc-rc</a> (size: 8,0K)</li>
-<li><a href="mboxes/gemoc-users.mbox.gz">gemoc-users</a> (size: 8,0K)</li>
-<li><a href="mboxes/gendoc-dev.mbox.gz">gendoc-dev</a> (size: 116K)</li>
-<li><a href="mboxes/gendoc-users.mbox.gz">gendoc-users</a> (size: 20K)</li>
-<li><a href="mboxes/geoperil-dev.mbox.gz">geoperil-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/germany-north-ec.mbox.gz">germany-north-ec</a> (size: 8,0K)</li>
-<li><a href="mboxes/germany-south-ec.mbox.gz">germany-south-ec</a> (size: 8,0K)</li>
-<li><a href="mboxes/git.mbox.gz">git</a> (size: 124K)</li>
-<li><a href="mboxes/glassfish-dev.mbox.gz">glassfish-dev</a> (size: 72K)</li>
-<li><a href="mboxes/glassfish-tools-dev.mbox.gz">glassfish-tools-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/glimmer-dev.mbox.gz">glimmer-dev</a> (size: 20K)</li>
-<li><a href="mboxes/gmf-dev.mbox.gz">gmf-dev</a> (size: 8,5M)</li>
-<li><a href="mboxes/gmf-releng.mbox.gz">gmf-releng</a> (size: 108M)</li>
-<li><a href="mboxes/gmt-dev.mbox.gz">gmt-dev</a> (size: 1,3M)</li>
-<li><a href="mboxes/golo-dev.mbox.gz">golo-dev</a> (size: 436K)</li>
-<li><a href="mboxes/graphiti-dev.mbox.gz">graphiti-dev</a> (size: 656K)</li>
-<li><a href="mboxes/handly-dev.mbox.gz">handly-dev</a> (size: 740K)</li>
-<li><a href="mboxes/henshin-user.mbox.gz">henshin-user</a> (size: 1,7M)</li>
-<li><a href="mboxes/hono-dev.mbox.gz">hono-dev</a> (size: 6,2M)</li>
-<li><a href="mboxes/ice-build.mbox.gz">ice-build</a> (size: 11M)</li>
-<li><a href="mboxes/ide-dev.mbox.gz">ide-dev</a> (size: 20M)</li>
-<li><a href="mboxes/iot-kapua-sp.mbox.gz">iot-kapua-sp</a> (size: 8,0K)</li>
-<li><a href="mboxes/iot-pmc.mbox.gz">iot-pmc</a> (size: 37M)</li>
-<li><a href="mboxes/iot-sc.mbox.gz">iot-sc</a> (size: 7,2M)</li>
-<li><a href="mboxes/iot-wg-integration.mbox.gz">iot-wg-integration</a> (size: 492K)</li>
-<li><a href="mboxes/iot-wg.mbox.gz">iot-wg</a> (size: 88M)</li>
-<li><a href="mboxes/jakarta.ee-community.mbox.gz">jakarta.ee-community</a> (size: 17M)</li>
-<li><a href="mboxes/jakartaee-tck-dev.mbox.gz">jakartaee-tck-dev</a> (size: 1,2M)</li>
-<li><a href="mboxes/jakarta.ee-wg.mbox.gz">jakarta.ee-wg</a> (size: 9,5M)</li>
-<li><a href="mboxes/javamail-dev.mbox.gz">javamail-dev</a> (size: 40K)</li>
-<li><a href="mboxes/jaxrs-dev.mbox.gz">jaxrs-dev</a> (size: 3,1M)</li>
-<li><a href="mboxes/jdt-core-dev.mbox.gz">jdt-core-dev</a> (size: 3,8M)</li>
-<li><a href="mboxes/jdt-dev.mbox.gz">jdt-dev</a> (size: 4,7M)</li>
-<li><a href="mboxes/jemo-dev.mbox.gz">jemo-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/jersey-dev.mbox.gz">jersey-dev</a> (size: 264K)</li>
-<li><a href="mboxes/jetty-announce.mbox.gz">jetty-announce</a> (size: 5,4M)</li>
-<li><a href="mboxes/jetty-dev.mbox.gz">jetty-dev</a> (size: 23M)</li>
-<li><a href="mboxes/jetty-users.mbox.gz">jetty-users</a> (size: 33M)</li>
-<li><a href="mboxes/jgit-build.mbox.gz">jgit-build</a> (size: 2,0M)</li>
-<li><a href="mboxes/jgit-dev.mbox.gz">jgit-dev</a> (size: 8,0M)</li>
-<li><a href="mboxes/jms-dev.mbox.gz">jms-dev</a> (size: 128K)</li>
-<li><a href="mboxes/jnosql-dev.mbox.gz">jnosql-dev</a> (size: 5,5M)</li>
-<li><a href="mboxes/jsonp-dev.mbox.gz">jsonp-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/kapua-dev.mbox.gz">kapua-dev</a> (size: 14M)</li>
-<li><a href="mboxes/kura-commit.mbox.gz">kura-commit</a> (size: 2,2M)</li>
-<li><a href="mboxes/kura-dev.mbox.gz">kura-dev</a> (size: 26M)</li>
-<li><a href="mboxes/ldt-dev.mbox.gz">ldt-dev</a> (size: 300K)</li>
-<li><a href="mboxes/leshan-commit.mbox.gz">leshan-commit</a> (size: 448K)</li>
-<li><a href="mboxes/leshan-dev.mbox.gz">leshan-dev</a> (size: 6,6M)</li>
-<li><a href="mboxes/linuxtools-dev.mbox.gz">linuxtools-dev</a> (size: 11M)</li>
-<li><a href="mboxes/lsp4e-dev.mbox.gz">lsp4e-dev</a> (size: 732K)</li>
-<li><a href="mboxes/lsp4j-dev.mbox.gz">lsp4j-dev</a> (size: 64K)</li>
-<li><a href="mboxes/lsphub-dev.mbox.gz">lsphub-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/lts-iwg.mbox.gz">lts-iwg</a> (size: 6,0M)</li>
-<li><a href="mboxes/lyo-dev.mbox.gz">lyo-dev</a> (size: 13M)</li>
-<li><a href="mboxes/m2e-dev.mbox.gz">m2e-dev</a> (size: 6,5M)</li>
-<li><a href="mboxes/m2e-users.mbox.gz">m2e-users</a> (size: 23M)</li>
-<li><a href="mboxes/m2t-dev.mbox.gz">m2t-dev</a> (size: 2,1M)</li>
-<li><a href="mboxes/mat-dev.mbox.gz">mat-dev</a> (size: 3,0M)</li>
-<li><a href="mboxes/mdmbl-dev.mbox.gz">mdmbl-dev</a> (size: 1,3M)</li>
-<li><a href="mboxes/mdt-ocl.dev.mbox.gz">mdt-ocl.dev</a> (size: 5,0M)</li>
-<li><a href="mboxes/mdt-papyrus.dev.mbox.gz">mdt-papyrus.dev</a> (size: 58M)</li>
-<li><a href="mboxes/microprofile-dev.mbox.gz">microprofile-dev</a> (size: 1,6M)</li>
-<li><a href="mboxes/milo-dev.mbox.gz">milo-dev</a> (size: 2,2M)</li>
-<li><a href="mboxes/modeling-pmc.mbox.gz">modeling-pmc</a> (size: 29M)</li>
-<li><a href="mboxes/modisco-dev.mbox.gz">modisco-dev</a> (size: 76K)</li>
-<li><a href="mboxes/mojarra-dev.mbox.gz">mojarra-dev</a> (size: 48K)</li>
-<li><a href="mboxes/mosquitto-dev.mbox.gz">mosquitto-dev</a> (size: 8,0M)</li>
-<li><a href="mboxes/mylyn-dev.mbox.gz">mylyn-dev</a> (size: 7,8M)</li>
-<li><a href="mboxes/mylyn-docs-dev.mbox.gz">mylyn-docs-dev</a> (size: 940K)</li>
-<li><a href="mboxes/mylyn-pmc.mbox.gz">mylyn-pmc</a> (size: 1,4M)</li>
-<li><a href="mboxes/nattable-dev.mbox.gz">nattable-dev</a> (size: 624K)</li>
-<li><a href="mboxes/nebula-dev.mbox.gz">nebula-dev</a> (size: 17M)</li>
-<li><a href="mboxes/omr-dev.mbox.gz">omr-dev</a> (size: 284K)</li>
-<li><a href="mboxes/oomph-dev.mbox.gz">oomph-dev</a> (size: 668K)</li>
-<li><a href="mboxes/openadx.mbox.gz">openadx</a> (size: 1,4M)</li>
-<li><a href="mboxes/opengenesis-wg.mbox.gz">opengenesis-wg</a> (size: 72K)</li>
-<li><a href="mboxes/openmdm-wg-members.mbox.gz">openmdm-wg-members</a> (size: 1,9M)</li>
-<li><a href="mboxes/open-measured-data-wg.mbox.gz">open-measured-data-wg</a> (size: 62M)</li>
-<li><a href="mboxes/openmobility.mbox.gz">openmobility</a> (size: 1,5M)</li>
-<li><a href="mboxes/openpass-wg.mbox.gz">openpass-wg</a> (size: 1,1M)</li>
-<li><a href="mboxes/orb-dev.mbox.gz">orb-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/orbit-dev.mbox.gz">orbit-dev</a> (size: 7,4M)</li>
-<li><a href="mboxes/orion-releng.mbox.gz">orion-releng</a> (size: 315M)</li>
-<li><a href="mboxes/osbea-wg.mbox.gz">osbea-wg</a> (size: 16K)</li>
-<li><a href="mboxes/p2-dev.mbox.gz">p2-dev</a> (size: 19M)</li>
-<li><a href="mboxes/paho-dev.mbox.gz">paho-dev</a> (size: 36M)</li>
-<li><a href="mboxes/papyrus-ic.mbox.gz">papyrus-ic</a> (size: 11M)</li>
-<li><a href="mboxes/passage-dev.mbox.gz">passage-dev</a> (size: 44K)</li>
-<li><a href="mboxes/pde-dev.mbox.gz">pde-dev</a> (size: 8,5M)</li>
-<li><a href="mboxes/photran.mbox.gz">photran</a> (size: 11M)</li>
-<li><a href="mboxes/platform-dev.mbox.gz">platform-dev</a> (size: 3,2M)</li>
-<li><a href="mboxes/platform-releng-dev.mbox.gz">platform-releng-dev</a> (size: 30M)</li>
-<li><a href="mboxes/platform-swt-dev.mbox.gz">platform-swt-dev</a> (size: 31M)</li>
-<li><a href="mboxes/platform-ui-dev.mbox.gz">platform-ui-dev</a> (size: 27M)</li>
-<li><a href="mboxes/ptp-dev.mbox.gz">ptp-dev</a> (size: 44M)</li>
-<li><a href="mboxes/ptp-user.mbox.gz">ptp-user</a> (size: 36M)</li>
-<li><a href="mboxes/qvto-dev.mbox.gz">qvto-dev</a> (size: 9,1M)</li>
-<li><a href="mboxes/rap-dev.mbox.gz">rap-dev</a> (size: 6,6M)</li>
-<li><a href="mboxes/rdf4j-dev.mbox.gz">rdf4j-dev</a> (size: 9,4M)</li>
-<li><a href="mboxes/recommenders-dev.mbox.gz">recommenders-dev</a> (size: 38M)</li>
-<li><a href="mboxes/reddeer-dev.mbox.gz">reddeer-dev</a> (size: 28K)</li>
-<li><a href="mboxes/scada-dev.mbox.gz">scada-dev</a> (size: 508K)</li>
-<li><a href="mboxes/scava-dev.mbox.gz">scava-dev</a> (size: 352K)</li>
-<li><a href="mboxes/science-iwg.mbox.gz">science-iwg</a> (size: 58M)</li>
-<li><a href="mboxes/science-pmc.mbox.gz">science-pmc</a> (size: 1,3M)</li>
-<li><a href="mboxes/scout-dev.mbox.gz">scout-dev</a> (size: 464K)</li>
-<li><a href="mboxes/simopenpass-dev.mbox.gz">simopenpass-dev</a> (size: 4,0K)</li>
-<li><a href="mboxes/sirius-dev.mbox.gz">sirius-dev</a> (size: 332K)</li>
-<li><a href="mboxes/smarthome-dev.mbox.gz">smarthome-dev</a> (size: 192K)</li>
-<li><a href="mboxes/soa-pmc.mbox.gz">soa-pmc</a> (size: 58M)</li>
-<li><a href="mboxes/soc-dev.mbox.gz">soc-dev</a> (size: 9,2M)</li>
-<li><a href="mboxes/sparkplug-wg.mbox.gz">sparkplug-wg</a> (size: 4,0K)</li>
-<li><a href="mboxes/sphinx-dev.mbox.gz">sphinx-dev</a> (size: 20K)</li>
-<li><a href="mboxes/sprotty-dev.mbox.gz">sprotty-dev</a> (size: 8,0K)</li>
-<li><a href="mboxes/statet-dev.mbox.gz">statet-dev</a> (size: 12K)</li>
-<li><a href="mboxes/statet-users.mbox.gz">statet-users</a> (size: 36K)</li>
-<li><a href="mboxes/stem-dev.mbox.gz">stem-dev</a> (size: 19M)</li>
-<li><a href="mboxes/sumo-announce.mbox.gz">sumo-announce</a> (size: 28K)</li>
-<li><a href="mboxes/sumo-dev.mbox.gz">sumo-dev</a> (size: 3,8M)</li>
-<li><a href="mboxes/sumo-user.mbox.gz">sumo-user</a> (size: 118M)</li>
-<li><a href="mboxes/sw360-dev.mbox.gz">sw360-dev</a> (size: 14M)</li>
-<li><a href="mboxes/sw360-users.mbox.gz">sw360-users</a> (size: 8,0K)</li>
-<li><a href="mboxes/swtchart-dev.mbox.gz">swtchart-dev</a> (size: 140K)</li>
-<li><a href="mboxes/tcf-dev.mbox.gz">tcf-dev</a> (size: 5,3M)</li>
-<li><a href="mboxes/technology-pmc.mbox.gz">technology-pmc</a> (size: 24M)</li>
-<li><a href="mboxes/thingweb-dev.mbox.gz">thingweb-dev</a> (size: 20K)</li>
-<li><a href="mboxes/tinydtls-dev.mbox.gz">tinydtls-dev</a> (size: 784K)</li>
-<li><a href="mboxes/tm4e-dev.mbox.gz">tm4e-dev</a> (size: 84K)</li>
-<li><a href="mboxes/tm-dev.mbox.gz">tm-dev</a> (size: 5,1M)</li>
-<li><a href="mboxes/tools-pmc.mbox.gz">tools-pmc</a> (size: 16M)</li>
-<li><a href="mboxes/tracecompass-dev.mbox.gz">tracecompass-dev</a> (size: 12M)</li>
-<li><a href="mboxes/tycho-dev.mbox.gz">tycho-dev</a> (size: 2,1M)</li>
-<li><a href="mboxes/tycho-user.mbox.gz">tycho-user</a> (size: 34M)</li>
-<li><a href="mboxes/unide-dev.mbox.gz">unide-dev</a> (size: 1,6M)</li>
-<li><a href="mboxes/usssdk-dev.mbox.gz">usssdk-dev</a> (size: 20K)</li>
-<li><a href="mboxes/viatra-dev.mbox.gz">viatra-dev</a> (size: 2,3M)</li>
-<li><a href="mboxes/wakaama-dev.mbox.gz">wakaama-dev</a> (size: 4,9M)</li>
-<li><a href="mboxes/websocket-dev.mbox.gz">websocket-dev</a> (size: 24K)</li>
-<li><a href="mboxes/wildwebdeveloper-dev.mbox.gz">wildwebdeveloper-dev</a> (size: 16K)</li>
-<li><a href="mboxes/winery-dev.mbox.gz">winery-dev</a> (size: 468K)</li>
-<li><a href="mboxes/wtp-dev.mbox.gz">wtp-dev</a> (size: 48M)</li>
-<li><a href="mboxes/wtp-pmc.mbox.gz">wtp-pmc</a> (size: 19M)</li>
-<li><a href="mboxes/wtp-releng.mbox.gz">wtp-releng</a> (size: 19M)</li>
-<li><a href="mboxes/xacc-dev.mbox.gz">xacc-dev</a> (size: 140K)</li>
-<li><a href="mboxes/xtext-dev.mbox.gz">xtext-dev</a> (size: 3,8M)</li>
-<li><a href="mboxes/yasson-dev.mbox.gz">yasson-dev</a> (size: 32K)</li>
-</ul>
-<hr>
-<p>Note: list obtained through the following command:</p>
-<pre class="language-text">for i in `ls`; do
-     s=`du -sh $i | cut -f1`;
-     echo &quot;* [${i%%.mbox.gz}]($i) (size: $s)&quot; &gt;&gt; list.txt;
-done
-</pre>
-
-      </div>
-      
-      
-    
-    
-    
-    
-    
-    
-    
-    
-  
-    </body></html>
\ No newline at end of file
diff --git a/datasets/eclipse_mls/eclipse_mls.md b/datasets/eclipse_mls/eclipse_mls.md
deleted file mode 100644
index f10dc40c04e0ae2b8da98c5b3743987c6976246d..0000000000000000000000000000000000000000
--- a/datasets/eclipse_mls/eclipse_mls.md
+++ /dev/null
@@ -1,440 +0,0 @@
-
-# The Eclipse mailing lists datasets
-
-## About this datasets
-
-The [Eclipse Foundation](https://eclipse.org) provides individuals and organizations with a commercially focused environment for open source software innovation. It includes git repositories, reviews, issues management, continuous integration, forums and mailing lists among other services. Many well-known and widely used projects are hosted on the forge, including the Eclipse IDE itself, several projects about IoT, modeling, and the new Java working group.
-
-This dataset is published under the [Creative Commons BY-Attribution-Share Alike 4.0 (International) licence](https://creativecommons.org/licenses/by-sa/4.0/).
-
-## The CSV extract
-
-This dataset is a dump of all posts sent on all mailing lists hosted at the Eclipse Forge. It only includes the list name, post ID, sent date, author name and address, and post subject. the body of messages is dismissed.
-
-Although this is public data (the mailing lists can be browsed on the [official mailman page](https://accounts.eclipse.org/mailing-list)) all data has been anonymised to prevent any misuse.
-The privacy issues identified, along with the anonymisation process, have been covered in a [dedicated document](../../docs/datasets_privacy.html).
-
-**Downloads**
-
-* **Download the Eclipse mailing lists dataset** [here](eclipse_mls.gz).
-    * Content: roughly 400K entries, 6 attributes
-    * Size: 12M compressed, 63M raw
-* Check the **documentation** for the dataset [here](mbox_csv_analysis.html). For reproducibility we also provide the [R Markdown document](mbox_csv_analysis.rmd) for the dataset analysis and documentation.
-
-
-## Project mboxes
-
-This dataset provides all Eclipse mailing lists as mboxes, compressed using gzip. Exhaustive list of downloads is as follows:
-
-* [4diac-dev](mboxes/4diac-dev.mbox.gz) (size: 6,0M)
-* [acceleo-dev](mboxes/acceleo-dev.mbox.gz) (size: 340K)
-* [actf-dev](mboxes/actf-dev.mbox.gz) (size: 9,8M)
-* [acute-dev](mboxes/acute-dev.mbox.gz) (size: 20K)
-* [aether-build](mboxes/aether-build.mbox.gz) (size: 100K)
-* [aether-dev](mboxes/aether-dev.mbox.gz) (size: 152K)
-* [aether-users](mboxes/aether-users.mbox.gz) (size: 652K)
-* [agail-dev](mboxes/agail-dev.mbox.gz) (size: 124K)
-* [ajdt-dev](mboxes/ajdt-dev.mbox.gz) (size: 5,0M)
-* [albireo-dev](mboxes/albireo-dev.mbox.gz) (size: 884K)
-* [alf-dev](mboxes/alf-dev.mbox.gz) (size: 3,5M)
-* [alf-events](mboxes/alf-events.mbox.gz) (size: 148K)
-* [alf-req](mboxes/alf-req.mbox.gz) (size: 192K)
-* [amalgam-dev](mboxes/amalgam-dev.mbox.gz) (size: 200K)
-* [amalgam-releng](mboxes/amalgam-releng.mbox.gz) (size: 4,0K)
-* [amp-dev](mboxes/amp-dev.mbox.gz) (size: 344K)
-* [andmore-dev](mboxes/andmore-dev.mbox.gz) (size: 1,8M)
-* [antenna-dev](mboxes/antenna-dev.mbox.gz) (size: 76K)
-* [aperi-dev](mboxes/aperi-dev.mbox.gz) (size: 22M)
-* [aperi-news](mboxes/aperi-news.mbox.gz) (size: 184K)
-* [aperi-survey](mboxes/aperi-survey.mbox.gz) (size: 8,0K)
-* [apogee-dev](mboxes/apogee-dev.mbox.gz) (size: 16K)
-* [apogy-dev](mboxes/apogy-dev.mbox.gz) (size: 8,0K)
-* [app4mc-dev](mboxes/app4mc-dev.mbox.gz) (size: 36K)
-* [apricot-dev](mboxes/apricot-dev.mbox.gz) (size: 16K)
-* [apricot-users](mboxes/apricot-users.mbox.gz) (size: 8,0K)
-* [articles_editor](mboxes/articles_editor.mbox.gz) (size: 4,0K)
-* [aspectj-announce](mboxes/aspectj-announce.mbox.gz) (size: 428K)
-* [aspectj-dev](mboxes/aspectj-dev.mbox.gz) (size: 11M)
-* [aspectj-users](mboxes/aspectj-users.mbox.gz) (size: 53M)
-* [atf-dev](mboxes/atf-dev.mbox.gz) (size: 1,9M)
-* [athena-dev](mboxes/athena-dev.mbox.gz) (size: 4,0K)
-* [austin-ec](mboxes/austin-ec.mbox.gz) (size: 28K)
-* [auto-iwg](mboxes/auto-iwg.mbox.gz) (size: 35M)
-* [avsys-dev](mboxes/avsys-dev.mbox.gz) (size: 4,0K)
-* [b3-dev](mboxes/b3-dev.mbox.gz) (size: 60K)
-* [b3](mboxes/b3.mbox.gz) (size: 16K)
-* [babel-dev](mboxes/babel-dev.mbox.gz) (size: 5,6M)
-* [basyx-dev](mboxes/basyx-dev.mbox.gz) (size: 8,0K)
-* [bayarea-ec](mboxes/bayarea-ec.mbox.gz) (size: 36K)
-* [belgium-ec](mboxes/belgium-ec.mbox.gz) (size: 16K)
-* [birt-charting-dev](mboxes/birt-charting-dev.mbox.gz) (size: 13M)
-* [birt-dev](mboxes/birt-dev.mbox.gz) (size: 23M)
-* [birt-news](mboxes/birt-news.mbox.gz) (size: 1,1M)
-* [birt-pmc](mboxes/birt-pmc.mbox.gz) (size: 6,0M)
-* [birt-proposal](mboxes/birt-proposal.mbox.gz) (size: 16K)
-* [birt-report-designer-dev](mboxes/birt-report-designer-dev.mbox.gz) (size: 444K)
-* [birt-report-engine-dev](mboxes/birt-report-engine-dev.mbox.gz) (size: 380K)
-* [blinki-dev](mboxes/blinki-dev.mbox.gz) (size: 12K)
-* [bpel-dev](mboxes/bpel-dev.mbox.gz) (size: 12M)
-* [bpmn2-modeler-dev](mboxes/bpmn2-modeler-dev.mbox.gz) (size: 1,6M)
-* [bpmn-dev](mboxes/bpmn-dev.mbox.gz) (size: 88K)
-* [bpmn-user](mboxes/bpmn-user.mbox.gz) (size: 6,6M)
-* [brazil-ec](mboxes/brazil-ec.mbox.gz) (size: 8,0K)
-* [bridgeiot-dev](mboxes/bridgeiot-dev.mbox.gz) (size: 4,0K)
-* [buckminster-dev](mboxes/buckminster-dev.mbox.gz) (size: 7,8M)
-* [budapest-ec](mboxes/budapest-ec.mbox.gz) (size: 12K)
-* [buildship-dev](mboxes/buildship-dev.mbox.gz) (size: 296K)
-* [bulgaria-ec](mboxes/bulgaria-ec.mbox.gz) (size: 12K)
-* [bulgaria-ec-news](mboxes/bulgaria-ec-news.mbox.gz) (size: 32K)
-* [ca-dev](mboxes/ca-dev.mbox.gz) (size: 12K)
-* [camf-dev](mboxes/camf-dev.mbox.gz) (size: 1,1M)
-* [camf-users](mboxes/camf-users.mbox.gz) (size: 8,0K)
-* [capra-dev](mboxes/capra-dev.mbox.gz) (size: 92K)
-* [cbi-dev](mboxes/cbi-dev.mbox.gz) (size: 6,0M)
-* [cdt-build-inbox](mboxes/cdt-build-inbox.mbox.gz) (size: 4,0K)
-* [cdt-contrib-dev](mboxes/cdt-contrib-dev.mbox.gz) (size: 60K)
-* [cdt-core-dev](mboxes/cdt-core-dev.mbox.gz) (size: 1,2M)
-* [cdt-cpp-extensions-dev](mboxes/cdt-cpp-extensions-dev.mbox.gz) (size: 8,0K)
-* [cdt-cppunit-inbox](mboxes/cdt-cppunit-inbox.mbox.gz) (size: 104K)
-* [cdt-cvs](mboxes/cdt-cvs.mbox.gz) (size: 108K)
-* [cdt-debug-dev](mboxes/cdt-debug-dev.mbox.gz) (size: 2,7M)
-* [cdt-dev](mboxes/cdt-dev.mbox.gz) (size: 124M)
-* [cdt-doc-dev](mboxes/cdt-doc-dev.mbox.gz) (size: 260K)
-* [cdt-doc-inbox](mboxes/cdt-doc-inbox.mbox.gz) (size: 2,6M)
-* [cdt-generic-extensions-dev](mboxes/cdt-generic-extensions-dev.mbox.gz) (size: 8,0K)
-* [cdtk-dev](mboxes/cdtk-dev.mbox.gz) (size: 8,0K)
-* [cdt-launch-inbox](mboxes/cdt-launch-inbox.mbox.gz) (size: 136K)
-* [cdt-lpex-dev](mboxes/cdt-lpex-dev.mbox.gz) (size: 8,0K)
-* [cdt-patch](mboxes/cdt-patch.mbox.gz) (size: 26M)
-* [cdt-releng-inbox](mboxes/cdt-releng-inbox.mbox.gz) (size: 168K)
-* [cdt-test-dev](mboxes/cdt-test-dev.mbox.gz) (size: 1,6M)
-* [cdt-ui-dev](mboxes/cdt-ui-dev.mbox.gz) (size: 320K)
-* [ceylon-dev](mboxes/ceylon-dev.mbox.gz) (size: 4,0K)
-* [cf-dev](mboxes/cf-dev.mbox.gz) (size: 5,6M)
-* [cft-dev](mboxes/cft-dev.mbox.gz) (size: 220K)
-* [che-dev](mboxes/che-dev.mbox.gz) (size: 26M)
-* [chemclipse-dev](mboxes/chemclipse-dev.mbox.gz) (size: 14M)
-* [chicago-ec](mboxes/chicago-ec.mbox.gz) (size: 8,0K)
-* [cloud-dev](mboxes/cloud-dev.mbox.gz) (size: 3,7M)
-* [cloudfree-dev](mboxes/cloudfree-dev.mbox.gz) (size: 188K)
-* [cme-dev](mboxes/cme-dev.mbox.gz) (size: 184K)
-* [cme-users](mboxes/cme-users.mbox.gz) (size: 236K)
-* [cobol-dev](mboxes/cobol-dev.mbox.gz) (size: 1,1M)
-* [cognicrypt-dev](mboxes/cognicrypt-dev.mbox.gz) (size: 8,0K)
-* [collections-dev](mboxes/collections-dev.mbox.gz) (size: 176K)
-* [community-outreach](mboxes/community-outreach.mbox.gz) (size: 16K)
-* [concierge-dev](mboxes/concierge-dev.mbox.gz) (size: 768K)
-* [configjsr-discuss](mboxes/configjsr-discuss.mbox.gz) (size: 44K)
-* [configjsr-experts](mboxes/configjsr-experts.mbox.gz) (size: 356K)
-* [context-dev](mboxes/context-dev.mbox.gz) (size: 4,0K)
-* [corona-dev](mboxes/corona-dev.mbox.gz) (size: 3,8M)
-* [corona-req](mboxes/corona-req.mbox.gz) (size: 4,0K)
-* [corrosion-dev](mboxes/corrosion-dev.mbox.gz) (size: 28K)
-* [cosmos-dev](mboxes/cosmos-dev.mbox.gz) (size: 17M)
-* [cosmos-mgmt](mboxes/cosmos-mgmt.mbox.gz) (size: 128K)
-* [cosmos-pmc](mboxes/cosmos-pmc.mbox.gz) (size: 16K)
-* [crossmeter-dev](mboxes/crossmeter-dev.mbox.gz) (size: 28K)
-* [cross-project-issues-dev](mboxes/cross-project-issues-dev.mbox.gz) (size: 87M)
-* [cu-dev](mboxes/cu-dev.mbox.gz) (size: 16K)
-* [cyclonedds-dev](mboxes/cyclonedds-dev.mbox.gz) (size: 116K)
-* [dali-dev](mboxes/dali-dev.mbox.gz) (size: 3,2M)
-* [damos-dev](mboxes/damos-dev.mbox.gz) (size: 20K)
-* [dash-dev](mboxes/dash-dev.mbox.gz) (size: 2,5M)
-* [dawnsci-dev](mboxes/dawnsci-dev.mbox.gz) (size: 8,0K)
-* [deeplearning4j-dev](mboxes/deeplearning4j-dev.mbox.gz) (size: 12K)
-* [detroit-ec](mboxes/detroit-ec.mbox.gz) (size: 4,0K)
-* [diffmerge-dev](mboxes/diffmerge-dev.mbox.gz) (size: 44K)
-* [dirigible-dev](mboxes/dirigible-dev.mbox.gz) (size: 1,1M)
-* [distro-program](mboxes/distro-program.mbox.gz) (size: 4,0K)
-* [ditto-dev](mboxes/ditto-dev.mbox.gz) (size: 72K)
-* [dltk-dev](mboxes/dltk-dev.mbox.gz) (size: 4,6M)
-* [doc2model-dev](mboxes/doc2model-dev.mbox.gz) (size: 8,0K)
-* [dsdp-dd-dev](mboxes/dsdp-dd-dev.mbox.gz) (size: 3,8M)
-* [dsdp-dev](mboxes/dsdp-dev.mbox.gz) (size: 2,5M)
-* [dsdp-ercp-dev](mboxes/dsdp-ercp-dev.mbox.gz) (size: 8,7M)
-* [dsdp-japan-wg](mboxes/dsdp-japan-wg.mbox.gz) (size: 8,0K)
-* [dsdp-mtj-dev](mboxes/dsdp-mtj-dev.mbox.gz) (size: 6,7M)
-* [dsdp-nab-dev-jp](mboxes/dsdp-nab-dev-jp.mbox.gz) (size: 8,0K)
-* [dsdp-nab-dev](mboxes/dsdp-nab-dev.mbox.gz) (size: 36K)
-* [dsdp-pmc](mboxes/dsdp-pmc.mbox.gz) (size: 18M)
-* [dsdp-rtsc-dev](mboxes/dsdp-rtsc-dev.mbox.gz) (size: 4,0K)
-* [dsdp-sequoyah-dev](mboxes/dsdp-sequoyah-dev.mbox.gz) (size: 4,0K)
-* [dsdp-tcf-dev](mboxes/dsdp-tcf-dev.mbox.gz) (size: 452K)
-* [dsdp-tm-dev](mboxes/dsdp-tm-dev.mbox.gz) (size: 8,7M)
-* [dsdp-tml-dev](mboxes/dsdp-tml-dev.mbox.gz) (size: 392K)
-* [dtp-arch](mboxes/dtp-arch.mbox.gz) (size: 4,0K)
-* [dtp-connect-dev](mboxes/dtp-connect-dev.mbox.gz) (size: 492K)
-* [dtp-dev](mboxes/dtp-dev.mbox.gz) (size: 14M)
-* [dtp-incubator-dev](mboxes/dtp-incubator-dev.mbox.gz) (size: 4,0K)
-* [dtp-models-dev](mboxes/dtp-models-dev.mbox.gz) (size: 20K)
-* [dtp-plan](mboxes/dtp-plan.mbox.gz) (size: 4,0K)
-* [dtp-pmc](mboxes/dtp-pmc.mbox.gz) (size: 2,9M)
-* [dtp-reqs](mboxes/dtp-reqs.mbox.gz) (size: 4,0K)
-* [dtp-sqldevtools-dev](mboxes/dtp-sqldevtools-dev.mbox.gz) (size: 1,7M)
-* [duttile-dev](mboxes/duttile-dev.mbox.gz) (size: 4,0K)
-* [e4-dev](mboxes/e4-dev.mbox.gz) (size: 31M)
-* [ease-dev](mboxes/ease-dev.mbox.gz) (size: 3,3M)
-* [eatop-dev](mboxes/eatop-dev.mbox.gz) (size: 92K)
-* [eavp-dev](mboxes/eavp-dev.mbox.gz) (size: 3,5M)
-* [ebam-dev](mboxes/ebam-dev.mbox.gz) (size: 24K)
-* [ebam-user](mboxes/ebam-user.mbox.gz) (size: 228K)
-* [ebpm-dev](mboxes/ebpm-dev.mbox.gz) (size: 32K)
-* [ebpm-user](mboxes/ebpm-user.mbox.gz) (size: 24K)
-* [ebr-dev](mboxes/ebr-dev.mbox.gz) (size: 172K)
-* [ecd-pmc](mboxes/ecd-pmc.mbox.gz) (size: 948K)
-* [ecd-tools-wg](mboxes/ecd-tools-wg.mbox.gz) (size: 8,0K)
-* [ecesis-dev](mboxes/ecesis-dev.mbox.gz) (size: 24K)
-* [ecf-build](mboxes/ecf-build.mbox.gz) (size: 3,6M)
-* [ecf-def](mboxes/ecf-def.mbox.gz) (size: 4,0K)
-* [ecf-dev](mboxes/ecf-dev.mbox.gz) (size: 23M)
-* [eclemma-dev](mboxes/eclemma-dev.mbox.gz) (size: 580K)
-* [eclipse-announce-europe](mboxes/eclipse-announce-europe.mbox.gz) (size: 88K)
-* [eclipsecon2011announce](mboxes/eclipsecon2011announce.mbox.gz) (size: 4,0K)
-* [eclipse-dev](mboxes/eclipse-dev.mbox.gz) (size: 19M)
-* [eclipse-ide-dev](mboxes/eclipse-ide-dev.mbox.gz) (size: 4,0K)
-* [eclipse-incubator-e4-dev](mboxes/eclipse-incubator-e4-dev.mbox.gz) (size: 5,5M)
-* [eclipselink-dev](mboxes/eclipselink-dev.mbox.gz) (size: 20M)
-* [eclipselink-users](mboxes/eclipselink-users.mbox.gz) (size: 31M)
-* [eclipse-live](mboxes/eclipse-live.mbox.gz) (size: 76K)
-* [eclipse-mirrors](mboxes/eclipse-mirrors.mbox.gz) (size: 1,3M)
-* [eclipse.org-architecture-council](mboxes/eclipse.org-architecture-council.mbox.gz) (size: 22M)
-* [eclipse.org-committers](mboxes/eclipse.org-committers.mbox.gz) (size: 9,0M)
-* [eclipse.org-feep-stakeholders](mboxes/eclipse.org-feep-stakeholders.mbox.gz) (size: 128K)
-* [eclipse.org-member-marketing](mboxes/eclipse.org-member-marketing.mbox.gz) (size: 28M)
-* [eclipse.org-members-committers](mboxes/eclipse.org-members-committers.mbox.gz) (size: 5,3M)
-* [eclipse.org-migration](mboxes/eclipse.org-migration.mbox.gz) (size: 1,5M)
-* [eclipse.org-planning-council](mboxes/eclipse.org-planning-council.mbox.gz) (size: 14M)
-* [eclipse.org-prc](mboxes/eclipse.org-prc.mbox.gz) (size: 3,7M)
-* [eclipse.org-project-leadership](mboxes/eclipse.org-project-leadership.mbox.gz) (size: 788K)
-* [eclipse.org-project-leads](mboxes/eclipse.org-project-leads.mbox.gz) (size: 92K)
-* [eclipse.org-requirements-council](mboxes/eclipse.org-requirements-council.mbox.gz) (size: 3,8M)
-* [eclipse.org-strategic-consumer](mboxes/eclipse.org-strategic-consumer.mbox.gz) (size: 4,0K)
-* [eclipse.org-strategic-developer](mboxes/eclipse.org-strategic-developer.mbox.gz) (size: 4,0K)
-* [eclipse.org-sustaining-members](mboxes/eclipse.org-sustaining-members.mbox.gz) (size: 8,0K)
-* [eclipse.org-test](mboxes/eclipse.org-test.mbox.gz) (size: 4,0K)
-* [eclipse.org-unaffiliated-committer](mboxes/eclipse.org-unaffiliated-committer.mbox.gz) (size: 4,0K)
-* [eclipse-pmc](mboxes/eclipse-pmc.mbox.gz) (size: 9,8M)
-* [eclipse-scripting-dev](mboxes/eclipse-scripting-dev.mbox.gz) (size: 928K)
-* [eclipse-soc](mboxes/eclipse-soc.mbox.gz) (size: 4,0K)
-* [eclipse-tools-announce](mboxes/eclipse-tools-announce.mbox.gz) (size: 4,0K)
-* [eclipsezilla-business](mboxes/eclipsezilla-business.mbox.gz) (size: 8,0K)
-* [eclipsezilla-developer](mboxes/eclipsezilla-developer.mbox.gz) (size: 112K)
-* [eclipsezilla-special](mboxes/eclipsezilla-special.mbox.gz) (size: 4,0K)
-* [eclipsezilla-user](mboxes/eclipsezilla-user.mbox.gz) (size: 12K)
-* [edapt-dev](mboxes/edapt-dev.mbox.gz) (size: 64K)
-* [edje-dev](mboxes/edje-dev.mbox.gz) (size: 32K)
-* [edt-dev](mboxes/edt-dev.mbox.gz) (size: 460K)
-* [ee4j-build](mboxes/ee4j-build.mbox.gz) (size: 4,7M)
-* [ee4j-community](mboxes/ee4j-community.mbox.gz) (size: 14M)
-* [ee4j-dev](mboxes/ee4j-dev.mbox.gz) (size: 20K)
-* [ee4j-pmc](mboxes/ee4j-pmc.mbox.gz) (size: 5,9M)
-* [ee.next-wg](mboxes/ee.next-wg.mbox.gz) (size: 28K)
-* [efm-dev](mboxes/efm-dev.mbox.gz) (size: 4,0K)
-* [efxclipse-dev](mboxes/efxclipse-dev.mbox.gz) (size: 20K)
-* [egerrit-dev](mboxes/egerrit-dev.mbox.gz) (size: 304K)
-* [egf-dev](mboxes/egf-dev.mbox.gz) (size: 8,0K)
-* [egit-build](mboxes/egit-build.mbox.gz) (size: 3,4M)
-* [egit-dev](mboxes/egit-dev.mbox.gz) (size: 16M)
-* [ejb-dev](mboxes/ejb-dev.mbox.gz) (size: 8,0K)
-* [el-dev](mboxes/el-dev.mbox.gz) (size: 20K)
-* [elk-dev](mboxes/elk-dev.mbox.gz) (size: 408K)
-* [elogbook-dev](mboxes/elogbook-dev.mbox.gz) (size: 12K)
-* [emfcompare-build](mboxes/emfcompare-build.mbox.gz) (size: 6,8M)
-* [emf-compare-dev](mboxes/emf-compare-dev.mbox.gz) (size: 68K)
-* [emfcp-dev](mboxes/emfcp-dev.mbox.gz) (size: 484K)
-* [emf-dev](mboxes/emf-dev.mbox.gz) (size: 6,0M)
-* [emf.index-dev](mboxes/emf.index-dev.mbox.gz) (size: 4,0K)
-* [emfindex-dev](mboxes/emfindex-dev.mbox.gz) (size: 92K)
-* [emfparsley-dev](mboxes/emfparsley-dev.mbox.gz) (size: 24K)
-* [emfrefactor-dev](mboxes/emfrefactor-dev.mbox.gz) (size: 48K)
-* [emfstore-dev](mboxes/emfstore-dev.mbox.gz) (size: 1,2M)
-* [emft-dev](mboxes/emft-dev.mbox.gz) (size: 2,8M)
-* [epf-dev](mboxes/epf-dev.mbox.gz) (size: 96M)
-* [epf-dev-pt](mboxes/epf-dev-pt.mbox.gz) (size: 108K)
-* [epl-discuss](mboxes/epl-discuss.mbox.gz) (size: 4,5M)
-* [epp-dev](mboxes/epp-dev.mbox.gz) (size: 19M)
-* [epsilon-dev](mboxes/epsilon-dev.mbox.gz) (size: 748K)
-* [equinox-dev](mboxes/equinox-dev.mbox.gz) (size: 31M)
-* [ercp-dev](mboxes/ercp-dev.mbox.gz) (size: 336K)
-* [es-dev](mboxes/es-dev.mbox.gz) (size: 256K)
-* [esl-dev](mboxes/esl-dev.mbox.gz) (size: 12K)
-* [etrice-dev](mboxes/etrice-dev.mbox.gz) (size: 840K)
-* [etrice-users](mboxes/etrice-users.mbox.gz) (size: 76K)
-* [europa-build-workshop](mboxes/europa-build-workshop.mbox.gz) (size: 1,2M)
-* [evangelists](mboxes/evangelists.mbox.gz) (size: 12K)
-* [examples-dev](mboxes/examples-dev.mbox.gz) (size: 36K)
-* [facet-dev](mboxes/facet-dev.mbox.gz) (size: 16K)
-* [fairfax-ec](mboxes/fairfax-ec.mbox.gz) (size: 4,0K)
-* [featuremodel-dev](mboxes/featuremodel-dev.mbox.gz) (size: 40K)
-* [flux-dev](mboxes/flux-dev.mbox.gz) (size: 972K)
-* [flux-releng](mboxes/flux-releng.mbox.gz) (size: 4,0K)
-* [fmc-dev](mboxes/fmc-dev.mbox.gz) (size: 28K)
-* [fog05-dev](mboxes/fog05-dev.mbox.gz) (size: 28K)
-* [forum-admins](mboxes/forum-admins.mbox.gz) (size: 12K)
-* [forums-admin](mboxes/forums-admin.mbox.gz) (size: 4,0K)
-* [fproj-dev](mboxes/fproj-dev.mbox.gz) (size: 16K)
-* [franca-dev](mboxes/franca-dev.mbox.gz) (size: 4,0K)
-* [france-ec](mboxes/france-ec.mbox.gz) (size: 364K)
-* [france-southwest-ec](mboxes/france-southwest-ec.mbox.gz) (size: 4,0K)
-* [geclipse-dev](mboxes/geclipse-dev.mbox.gz) (size: 8,5M)
-* [geclipse-user](mboxes/geclipse-user.mbox.gz) (size: 344K)
-* [gef3d-dev](mboxes/gef3d-dev.mbox.gz) (size: 476K)
-* [gef-dev](mboxes/gef-dev.mbox.gz) (size: 4,8M)
-* [gemini-dev](mboxes/gemini-dev.mbox.gz) (size: 7,0M)
-* [gemoc-dev](mboxes/gemoc-dev.mbox.gz) (size: 468K)
-* [gemoc-rc](mboxes/gemoc-rc.mbox.gz) (size: 8,0K)
-* [gemoc-users](mboxes/gemoc-users.mbox.gz) (size: 8,0K)
-* [gendoc-dev](mboxes/gendoc-dev.mbox.gz) (size: 116K)
-* [gendoc-users](mboxes/gendoc-users.mbox.gz) (size: 20K)
-* [geoperil-dev](mboxes/geoperil-dev.mbox.gz) (size: 4,0K)
-* [germany-north-ec](mboxes/germany-north-ec.mbox.gz) (size: 8,0K)
-* [germany-south-ec](mboxes/germany-south-ec.mbox.gz) (size: 8,0K)
-* [git](mboxes/git.mbox.gz) (size: 124K)
-* [glassfish-dev](mboxes/glassfish-dev.mbox.gz) (size: 72K)
-* [glassfish-tools-dev](mboxes/glassfish-tools-dev.mbox.gz) (size: 4,0K)
-* [glimmer-dev](mboxes/glimmer-dev.mbox.gz) (size: 20K)
-* [gmf-dev](mboxes/gmf-dev.mbox.gz) (size: 8,5M)
-* [gmf-releng](mboxes/gmf-releng.mbox.gz) (size: 108M)
-* [gmt-dev](mboxes/gmt-dev.mbox.gz) (size: 1,3M)
-* [golo-dev](mboxes/golo-dev.mbox.gz) (size: 436K)
-* [graphiti-dev](mboxes/graphiti-dev.mbox.gz) (size: 656K)
-* [handly-dev](mboxes/handly-dev.mbox.gz) (size: 740K)
-* [henshin-user](mboxes/henshin-user.mbox.gz) (size: 1,7M)
-* [hono-dev](mboxes/hono-dev.mbox.gz) (size: 6,2M)
-* [ice-build](mboxes/ice-build.mbox.gz) (size: 11M)
-* [ide-dev](mboxes/ide-dev.mbox.gz) (size: 20M)
-* [iot-kapua-sp](mboxes/iot-kapua-sp.mbox.gz) (size: 8,0K)
-* [iot-pmc](mboxes/iot-pmc.mbox.gz) (size: 37M)
-* [iot-sc](mboxes/iot-sc.mbox.gz) (size: 7,2M)
-* [iot-wg-integration](mboxes/iot-wg-integration.mbox.gz) (size: 492K)
-* [iot-wg](mboxes/iot-wg.mbox.gz) (size: 88M)
-* [jakarta.ee-community](mboxes/jakarta.ee-community.mbox.gz) (size: 17M)
-* [jakartaee-tck-dev](mboxes/jakartaee-tck-dev.mbox.gz) (size: 1,2M)
-* [jakarta.ee-wg](mboxes/jakarta.ee-wg.mbox.gz) (size: 9,5M)
-* [javamail-dev](mboxes/javamail-dev.mbox.gz) (size: 40K)
-* [jaxrs-dev](mboxes/jaxrs-dev.mbox.gz) (size: 3,1M)
-* [jdt-core-dev](mboxes/jdt-core-dev.mbox.gz) (size: 3,8M)
-* [jdt-dev](mboxes/jdt-dev.mbox.gz) (size: 4,7M)
-* [jemo-dev](mboxes/jemo-dev.mbox.gz) (size: 4,0K)
-* [jersey-dev](mboxes/jersey-dev.mbox.gz) (size: 264K)
-* [jetty-announce](mboxes/jetty-announce.mbox.gz) (size: 5,4M)
-* [jetty-dev](mboxes/jetty-dev.mbox.gz) (size: 23M)
-* [jetty-users](mboxes/jetty-users.mbox.gz) (size: 33M)
-* [jgit-build](mboxes/jgit-build.mbox.gz) (size: 2,0M)
-* [jgit-dev](mboxes/jgit-dev.mbox.gz) (size: 8,0M)
-* [jms-dev](mboxes/jms-dev.mbox.gz) (size: 128K)
-* [jnosql-dev](mboxes/jnosql-dev.mbox.gz) (size: 5,5M)
-* [jsonp-dev](mboxes/jsonp-dev.mbox.gz) (size: 4,0K)
-* [kapua-dev](mboxes/kapua-dev.mbox.gz) (size: 14M)
-* [kura-commit](mboxes/kura-commit.mbox.gz) (size: 2,2M)
-* [kura-dev](mboxes/kura-dev.mbox.gz) (size: 26M)
-* [ldt-dev](mboxes/ldt-dev.mbox.gz) (size: 300K)
-* [leshan-commit](mboxes/leshan-commit.mbox.gz) (size: 448K)
-* [leshan-dev](mboxes/leshan-dev.mbox.gz) (size: 6,6M)
-* [linuxtools-dev](mboxes/linuxtools-dev.mbox.gz) (size: 11M)
-* [lsp4e-dev](mboxes/lsp4e-dev.mbox.gz) (size: 732K)
-* [lsp4j-dev](mboxes/lsp4j-dev.mbox.gz) (size: 64K)
-* [lsphub-dev](mboxes/lsphub-dev.mbox.gz) (size: 8,0K)
-* [lts-iwg](mboxes/lts-iwg.mbox.gz) (size: 6,0M)
-* [lyo-dev](mboxes/lyo-dev.mbox.gz) (size: 13M)
-* [m2e-dev](mboxes/m2e-dev.mbox.gz) (size: 6,5M)
-* [m2e-users](mboxes/m2e-users.mbox.gz) (size: 23M)
-* [m2t-dev](mboxes/m2t-dev.mbox.gz) (size: 2,1M)
-* [mat-dev](mboxes/mat-dev.mbox.gz) (size: 3,0M)
-* [mdmbl-dev](mboxes/mdmbl-dev.mbox.gz) (size: 1,3M)
-* [mdt-ocl.dev](mboxes/mdt-ocl.dev.mbox.gz) (size: 5,0M)
-* [mdt-papyrus.dev](mboxes/mdt-papyrus.dev.mbox.gz) (size: 58M)
-* [microprofile-dev](mboxes/microprofile-dev.mbox.gz) (size: 1,6M)
-* [milo-dev](mboxes/milo-dev.mbox.gz) (size: 2,2M)
-* [modeling-pmc](mboxes/modeling-pmc.mbox.gz) (size: 29M)
-* [modisco-dev](mboxes/modisco-dev.mbox.gz) (size: 76K)
-* [mojarra-dev](mboxes/mojarra-dev.mbox.gz) (size: 48K)
-* [mosquitto-dev](mboxes/mosquitto-dev.mbox.gz) (size: 8,0M)
-* [mylyn-dev](mboxes/mylyn-dev.mbox.gz) (size: 7,8M)
-* [mylyn-docs-dev](mboxes/mylyn-docs-dev.mbox.gz) (size: 940K)
-* [mylyn-pmc](mboxes/mylyn-pmc.mbox.gz) (size: 1,4M)
-* [nattable-dev](mboxes/nattable-dev.mbox.gz) (size: 624K)
-* [nebula-dev](mboxes/nebula-dev.mbox.gz) (size: 17M)
-* [omr-dev](mboxes/omr-dev.mbox.gz) (size: 284K)
-* [oomph-dev](mboxes/oomph-dev.mbox.gz) (size: 668K)
-* [openadx](mboxes/openadx.mbox.gz) (size: 1,4M)
-* [opengenesis-wg](mboxes/opengenesis-wg.mbox.gz) (size: 72K)
-* [openmdm-wg-members](mboxes/openmdm-wg-members.mbox.gz) (size: 1,9M)
-* [open-measured-data-wg](mboxes/open-measured-data-wg.mbox.gz) (size: 62M)
-* [openmobility](mboxes/openmobility.mbox.gz) (size: 1,5M)
-* [openpass-wg](mboxes/openpass-wg.mbox.gz) (size: 1,1M)
-* [orb-dev](mboxes/orb-dev.mbox.gz) (size: 8,0K)
-* [orbit-dev](mboxes/orbit-dev.mbox.gz) (size: 7,4M)
-* [orion-releng](mboxes/orion-releng.mbox.gz) (size: 315M)
-* [osbea-wg](mboxes/osbea-wg.mbox.gz) (size: 16K)
-* [p2-dev](mboxes/p2-dev.mbox.gz) (size: 19M)
-* [paho-dev](mboxes/paho-dev.mbox.gz) (size: 36M)
-* [papyrus-ic](mboxes/papyrus-ic.mbox.gz) (size: 11M)
-* [passage-dev](mboxes/passage-dev.mbox.gz) (size: 44K)
-* [pde-dev](mboxes/pde-dev.mbox.gz) (size: 8,5M)
-* [photran](mboxes/photran.mbox.gz) (size: 11M)
-* [platform-dev](mboxes/platform-dev.mbox.gz) (size: 3,2M)
-* [platform-releng-dev](mboxes/platform-releng-dev.mbox.gz) (size: 30M)
-* [platform-swt-dev](mboxes/platform-swt-dev.mbox.gz) (size: 31M)
-* [platform-ui-dev](mboxes/platform-ui-dev.mbox.gz) (size: 27M)
-* [ptp-dev](mboxes/ptp-dev.mbox.gz) (size: 44M)
-* [ptp-user](mboxes/ptp-user.mbox.gz) (size: 36M)
-* [qvto-dev](mboxes/qvto-dev.mbox.gz) (size: 9,1M)
-* [rap-dev](mboxes/rap-dev.mbox.gz) (size: 6,6M)
-* [rdf4j-dev](mboxes/rdf4j-dev.mbox.gz) (size: 9,4M)
-* [recommenders-dev](mboxes/recommenders-dev.mbox.gz) (size: 38M)
-* [reddeer-dev](mboxes/reddeer-dev.mbox.gz) (size: 28K)
-* [scada-dev](mboxes/scada-dev.mbox.gz) (size: 508K)
-* [scava-dev](mboxes/scava-dev.mbox.gz) (size: 352K)
-* [science-iwg](mboxes/science-iwg.mbox.gz) (size: 58M)
-* [science-pmc](mboxes/science-pmc.mbox.gz) (size: 1,3M)
-* [scout-dev](mboxes/scout-dev.mbox.gz) (size: 464K)
-* [simopenpass-dev](mboxes/simopenpass-dev.mbox.gz) (size: 4,0K)
-* [sirius-dev](mboxes/sirius-dev.mbox.gz) (size: 332K)
-* [smarthome-dev](mboxes/smarthome-dev.mbox.gz) (size: 192K)
-* [soa-pmc](mboxes/soa-pmc.mbox.gz) (size: 58M)
-* [soc-dev](mboxes/soc-dev.mbox.gz) (size: 9,2M)
-* [sparkplug-wg](mboxes/sparkplug-wg.mbox.gz) (size: 4,0K)
-* [sphinx-dev](mboxes/sphinx-dev.mbox.gz) (size: 20K)
-* [sprotty-dev](mboxes/sprotty-dev.mbox.gz) (size: 8,0K)
-* [statet-dev](mboxes/statet-dev.mbox.gz) (size: 12K)
-* [statet-users](mboxes/statet-users.mbox.gz) (size: 36K)
-* [stem-dev](mboxes/stem-dev.mbox.gz) (size: 19M)
-* [sumo-announce](mboxes/sumo-announce.mbox.gz) (size: 28K)
-* [sumo-dev](mboxes/sumo-dev.mbox.gz) (size: 3,8M)
-* [sumo-user](mboxes/sumo-user.mbox.gz) (size: 118M)
-* [sw360-dev](mboxes/sw360-dev.mbox.gz) (size: 14M)
-* [sw360-users](mboxes/sw360-users.mbox.gz) (size: 8,0K)
-* [swtchart-dev](mboxes/swtchart-dev.mbox.gz) (size: 140K)
-* [tcf-dev](mboxes/tcf-dev.mbox.gz) (size: 5,3M)
-* [technology-pmc](mboxes/technology-pmc.mbox.gz) (size: 24M)
-* [thingweb-dev](mboxes/thingweb-dev.mbox.gz) (size: 20K)
-* [tinydtls-dev](mboxes/tinydtls-dev.mbox.gz) (size: 784K)
-* [tm4e-dev](mboxes/tm4e-dev.mbox.gz) (size: 84K)
-* [tm-dev](mboxes/tm-dev.mbox.gz) (size: 5,1M)
-* [tools-pmc](mboxes/tools-pmc.mbox.gz) (size: 16M)
-* [tracecompass-dev](mboxes/tracecompass-dev.mbox.gz) (size: 12M)
-* [tycho-dev](mboxes/tycho-dev.mbox.gz) (size: 2,1M)
-* [tycho-user](mboxes/tycho-user.mbox.gz) (size: 34M)
-* [unide-dev](mboxes/unide-dev.mbox.gz) (size: 1,6M)
-* [usssdk-dev](mboxes/usssdk-dev.mbox.gz) (size: 20K)
-* [viatra-dev](mboxes/viatra-dev.mbox.gz) (size: 2,3M)
-* [wakaama-dev](mboxes/wakaama-dev.mbox.gz) (size: 4,9M)
-* [websocket-dev](mboxes/websocket-dev.mbox.gz) (size: 24K)
-* [wildwebdeveloper-dev](mboxes/wildwebdeveloper-dev.mbox.gz) (size: 16K)
-* [winery-dev](mboxes/winery-dev.mbox.gz) (size: 468K)
-* [wtp-dev](mboxes/wtp-dev.mbox.gz) (size: 48M)
-* [wtp-pmc](mboxes/wtp-pmc.mbox.gz) (size: 19M)
-* [wtp-releng](mboxes/wtp-releng.mbox.gz) (size: 19M)
-* [xacc-dev](mboxes/xacc-dev.mbox.gz) (size: 140K)
-* [xtext-dev](mboxes/xtext-dev.mbox.gz) (size: 3,8M)
-* [yasson-dev](mboxes/yasson-dev.mbox.gz) (size: 32K)
-
-----
-
-Note: list obtained through the following command:
-
-    for i in `ls`; do
-         s=`du -sh $i | cut -f1`;
-         echo "* [${i%%.mbox.gz}]($i) (size: $s)" >> list.txt;
-    done
diff --git a/datasets/eclipse_mls/mbox_csv_analysis.html b/datasets/eclipse_mls/mbox_csv_analysis.html
deleted file mode 100644
index 89808d21bd264dadc77cbfe31bd4d339c9973ffc..0000000000000000000000000000000000000000
--- a/datasets/eclipse_mls/mbox_csv_analysis.html
+++ /dev/null
@@ -1,828 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-
-<head>
-
-<meta charset="utf-8" />
-<meta name="generator" content="pandoc" />
-<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
-
-
-<meta name="author" content="Boris Baldassari -- Castalia Solutions" />
-
-
-<title>Eclipse mailing lists</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,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK"></script>
-<link href="data:text/css;charset=utf-8,%2Ehljs%2Dliteral%20%7B%0Acolor%3A%20%23990073%3B%0A%7D%0A%2Ehljs%2Dnumber%20%7B%0Acolor%3A%20%23099%3B%0A%7D%0A%2Ehljs%2Dcomment%20%7B%0Acolor%3A%20%23998%3B%0Afont%2Dstyle%3A%20italic%3B%0A%7D%0A%2Ehljs%2Dkeyword%20%7B%0Acolor%3A%20%23900%3B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0A%2Ehljs%2Dstring%20%7B%0Acolor%3A%20%23d14%3B%0A%7D%0A" rel="stylesheet" />
-<script src="data:application/x-javascript;base64,LyohIGhpZ2hsaWdodC5qcyB2OS4xMi4wIHwgQlNEMyBMaWNlbnNlIHwgZ2l0LmlvL2hsanNsaWNlbnNlICovCiFmdW5jdGlvbihlKXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93fHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGY7InVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzP2UoZXhwb3J0cyk6biYmKG4uaGxqcz1lKHt9KSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gbi5obGpzfSkpfShmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcihlLG4pe3ZhciB0PWUmJmUuZXhlYyhuKTtyZXR1cm4gdCYmMD09PXQuaW5kZXh9ZnVuY3Rpb24gYShlKXtyZXR1cm4gay50ZXN0KGUpfWZ1bmN0aW9uIGkoZSl7dmFyIG4sdCxyLGksbz1lLmNsYXNzTmFtZSsiICI7aWYobys9ZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5jbGFzc05hbWU6IiIsdD1CLmV4ZWMobykpcmV0dXJuIHcodFsxXSk/dFsxXToibm8taGlnaGxpZ2h0Ijtmb3Iobz1vLnNwbGl0KC9ccysvKSxuPTAscj1vLmxlbmd0aDtyPm47bisrKWlmKGk9b1tuXSxhKGkpfHx3KGkpKXJldHVybiBpfWZ1bmN0aW9uIG8oZSl7dmFyIG4sdD17fSxyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IobiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGUpe2ZvcihuIGluIGUpdFtuXT1lW25dfSksdH1mdW5jdGlvbiB1KGUpe3ZhciBuPVtdO3JldHVybiBmdW5jdGlvbiByKGUsYSl7Zm9yKHZhciBpPWUuZmlyc3RDaGlsZDtpO2k9aS5uZXh0U2libGluZykzPT09aS5ub2RlVHlwZT9hKz1pLm5vZGVWYWx1ZS5sZW5ndGg6MT09PWkubm9kZVR5cGUmJihuLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OmEsbm9kZTppfSksYT1yKGksYSksdChpKS5tYXRjaCgvYnJ8aHJ8aW1nfGlucHV0Lyl8fG4ucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDphLG5vZGU6aX0pKTtyZXR1cm4gYX0oZSwwKSxufWZ1bmN0aW9uIGMoZSxyLGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5sZW5ndGgmJnIubGVuZ3RoP2VbMF0ub2Zmc2V0IT09clswXS5vZmZzZXQ/ZVswXS5vZmZzZXQ8clswXS5vZmZzZXQ/ZTpyOiJzdGFydCI9PT1yWzBdLmV2ZW50P2U6cjplLmxlbmd0aD9lOnJ9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiByKGUpe3JldHVybiIgIitlLm5vZGVOYW1lKyc9IicrbihlLnZhbHVlKS5yZXBsYWNlKCciJywiJnF1b3Q7IikrJyInfXMrPSI8Iit0KGUpK0UubWFwLmNhbGwoZS5hdHRyaWJ1dGVzLHIpLmpvaW4oIiIpKyI+In1mdW5jdGlvbiB1KGUpe3MrPSI8LyIrdChlKSsiPiJ9ZnVuY3Rpb24gYyhlKXsoInN0YXJ0Ij09PWUuZXZlbnQ/bzp1KShlLm5vZGUpfWZvcih2YXIgbD0wLHM9IiIsZj1bXTtlLmxlbmd0aHx8ci5sZW5ndGg7KXt2YXIgZz1pKCk7aWYocys9bihhLnN1YnN0cmluZyhsLGdbMF0ub2Zmc2V0KSksbD1nWzBdLm9mZnNldCxnPT09ZSl7Zi5yZXZlcnNlKCkuZm9yRWFjaCh1KTtkbyBjKGcuc3BsaWNlKDAsMSlbMF0pLGc9aSgpO3doaWxlKGc9PT1lJiZnLmxlbmd0aCYmZ1swXS5vZmZzZXQ9PT1sKTtmLnJldmVyc2UoKS5mb3JFYWNoKG8pfWVsc2Uic3RhcnQiPT09Z1swXS5ldmVudD9mLnB1c2goZ1swXS5ub2RlKTpmLnBvcCgpLGMoZy5zcGxpY2UoMCwxKVswXSl9cmV0dXJuIHMrbihhLnN1YnN0cihsKSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS52JiYhZS5jYWNoZWRfdmFyaWFudHMmJihlLmNhY2hlZF92YXJpYW50cz1lLnYubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKGUse3Y6bnVsbH0sbil9KSksZS5jYWNoZWRfdmFyaWFudHN8fGUuZVcmJltvKGUpXXx8W2VdfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5zb3VyY2V8fGV9ZnVuY3Rpb24gdCh0LHIpe3JldHVybiBuZXcgUmVnRXhwKG4odCksIm0iKyhlLmNJPyJpIjoiIikrKHI/ImciOiIiKSl9ZnVuY3Rpb24gcihhLGkpe2lmKCFhLmNvbXBpbGVkKXtpZihhLmNvbXBpbGVkPSEwLGEuaz1hLmt8fGEuYkssYS5rKXt2YXIgbz17fSx1PWZ1bmN0aW9uKG4sdCl7ZS5jSSYmKHQ9dC50b0xvd2VyQ2FzZSgpKSx0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCJ8Iik7b1t0WzBdXT1bbix0WzFdP051bWJlcih0WzFdKToxXX0pfTsic3RyaW5nIj09dHlwZW9mIGEuaz91KCJrZXl3b3JkIixhLmspOngoYS5rKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3UoZSxhLmtbZV0pfSksYS5rPW99YS5sUj10KGEubHx8L1x3Ky8sITApLGkmJihhLmJLJiYoYS5iPSJcXGIoIithLmJLLnNwbGl0KCIgIikuam9pbigifCIpKyIpXFxiIiksYS5ifHwoYS5iPS9cQnxcYi8pLGEuYlI9dChhLmIpLGEuZXx8YS5lV3x8KGEuZT0vXEJ8XGIvKSxhLmUmJihhLmVSPXQoYS5lKSksYS50RT1uKGEuZSl8fCIiLGEuZVcmJmkudEUmJihhLnRFKz0oYS5lPyJ8IjoiIikraS50RSkpLGEuaSYmKGEuaVI9dChhLmkpKSxudWxsPT1hLnImJihhLnI9MSksYS5jfHwoYS5jPVtdKSxhLmM9QXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBsKCJzZWxmIj09PWU/YTplKX0pKSxhLmMuZm9yRWFjaChmdW5jdGlvbihlKXtyKGUsYSl9KSxhLnN0YXJ0cyYmcihhLnN0YXJ0cyxpKTt2YXIgYz1hLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJLPyJcXC4/KCIrZS5iKyIpXFwuPyI6ZS5ifSkuY29uY2F0KFthLnRFLGEuaV0pLm1hcChuKS5maWx0ZXIoQm9vbGVhbik7YS50PWMubGVuZ3RoP3QoYy5qb2luKCJ8IiksITApOntleGVjOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX19cihlKX1mdW5jdGlvbiBmKGUsdCxhLGkpe2Z1bmN0aW9uIG8oZSxuKXt2YXIgdCxhO2Zvcih0PTAsYT1uLmMubGVuZ3RoO2E+dDt0KyspaWYocihuLmNbdF0uYlIsZSkpcmV0dXJuIG4uY1t0XX1mdW5jdGlvbiB1KGUsbil7aWYocihlLmVSLG4pKXtmb3IoO2UuZW5kc1BhcmVudCYmZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9cmV0dXJuIGUuZVc/dShlLnBhcmVudCxuKTp2b2lkIDB9ZnVuY3Rpb24gYyhlLG4pe3JldHVybiFhJiZyKG4uaVIsZSl9ZnVuY3Rpb24gbChlLG4pe3ZhciB0PU4uY0k/blswXS50b0xvd2VyQ2FzZSgpOm5bMF07cmV0dXJuIGUuay5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5rW3RdfWZ1bmN0aW9uIHAoZSxuLHQscil7dmFyIGE9cj8iIjpJLmNsYXNzUHJlZml4LGk9JzxzcGFuIGNsYXNzPSInK2Esbz10PyIiOkM7cmV0dXJuIGkrPWUrJyI+JyxpK24rb31mdW5jdGlvbiBoKCl7dmFyIGUsdCxyLGE7aWYoIUUuaylyZXR1cm4gbihrKTtmb3IoYT0iIix0PTAsRS5sUi5sYXN0SW5kZXg9MCxyPUUubFIuZXhlYyhrKTtyOylhKz1uKGsuc3Vic3RyaW5nKHQsci5pbmRleCkpLGU9bChFLHIpLGU/KEIrPWVbMV0sYSs9cChlWzBdLG4oclswXSkpKTphKz1uKHJbMF0pLHQ9RS5sUi5sYXN0SW5kZXgscj1FLmxSLmV4ZWMoayk7cmV0dXJuIGErbihrLnN1YnN0cih0KSl9ZnVuY3Rpb24gZCgpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgRS5zTDtpZihlJiYheVtFLnNMXSlyZXR1cm4gbihrKTt2YXIgdD1lP2YoRS5zTCxrLCEwLHhbRS5zTF0pOmcoayxFLnNMLmxlbmd0aD9FLnNMOnZvaWQgMCk7cmV0dXJuIEUucj4wJiYoQis9dC5yKSxlJiYoeFtFLnNMXT10LnRvcCkscCh0Lmxhbmd1YWdlLHQudmFsdWUsITEsITApfWZ1bmN0aW9uIGIoKXtMKz1udWxsIT1FLnNMP2QoKTpoKCksaz0iIn1mdW5jdGlvbiB2KGUpe0wrPWUuY04/cChlLmNOLCIiLCEwKToiIixFPU9iamVjdC5jcmVhdGUoZSx7cGFyZW50Ont2YWx1ZTpFfX0pfWZ1bmN0aW9uIG0oZSxuKXtpZihrKz1lLG51bGw9PW4pcmV0dXJuIGIoKSwwO3ZhciB0PW8obixFKTtpZih0KXJldHVybiB0LnNraXA/ays9bjoodC5lQiYmKGsrPW4pLGIoKSx0LnJCfHx0LmVCfHwoaz1uKSksdih0LG4pLHQuckI/MDpuLmxlbmd0aDt2YXIgcj11KEUsbik7aWYocil7dmFyIGE9RTthLnNraXA/ays9bjooYS5yRXx8YS5lRXx8KGsrPW4pLGIoKSxhLmVFJiYoaz1uKSk7ZG8gRS5jTiYmKEwrPUMpLEUuc2tpcHx8KEIrPUUuciksRT1FLnBhcmVudDt3aGlsZShFIT09ci5wYXJlbnQpO3JldHVybiByLnN0YXJ0cyYmdihyLnN0YXJ0cywiIiksYS5yRT8wOm4ubGVuZ3RofWlmKGMobixFKSl0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgbGV4ZW1lICInK24rJyIgZm9yIG1vZGUgIicrKEUuY058fCI8dW5uYW1lZD4iKSsnIicpO3JldHVybiBrKz1uLG4ubGVuZ3RofHwxfXZhciBOPXcoZSk7aWYoIU4pdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlOiAiJytlKyciJyk7cyhOKTt2YXIgUixFPWl8fE4seD17fSxMPSIiO2ZvcihSPUU7UiE9PU47Uj1SLnBhcmVudClSLmNOJiYoTD1wKFIuY04sIiIsITApK0wpO3ZhciBrPSIiLEI9MDt0cnl7Zm9yKHZhciBNLGosTz0wOzspe2lmKEUudC5sYXN0SW5kZXg9TyxNPUUudC5leGVjKHQpLCFNKWJyZWFrO2o9bSh0LnN1YnN0cmluZyhPLE0uaW5kZXgpLE1bMF0pLE89TS5pbmRleCtqfWZvcihtKHQuc3Vic3RyKE8pKSxSPUU7Ui5wYXJlbnQ7Uj1SLnBhcmVudClSLmNOJiYoTCs9Qyk7cmV0dXJue3I6Qix2YWx1ZTpMLGxhbmd1YWdlOmUsdG9wOkV9fWNhdGNoKFQpe2lmKFQubWVzc2FnZSYmLTEhPT1ULm1lc3NhZ2UuaW5kZXhPZigiSWxsZWdhbCIpKXJldHVybntyOjAsdmFsdWU6bih0KX07dGhyb3cgVH19ZnVuY3Rpb24gZyhlLHQpe3Q9dHx8SS5sYW5ndWFnZXN8fHgoeSk7dmFyIHI9e3I6MCx2YWx1ZTpuKGUpfSxhPXI7cmV0dXJuIHQuZmlsdGVyKHcpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHQ9ZihuLGUsITEpO3QubGFuZ3VhZ2U9bix0LnI+YS5yJiYoYT10KSx0LnI+ci5yJiYoYT1yLHI9dCl9KSxhLmxhbmd1YWdlJiYoci5zZWNvbmRfYmVzdD1hKSxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIEkudGFiUmVwbGFjZXx8SS51c2VCUj9lLnJlcGxhY2UoTSxmdW5jdGlvbihlLG4pe3JldHVybiBJLnVzZUJSJiYiXG4iPT09ZT8iPGJyPiI6SS50YWJSZXBsYWNlP24ucmVwbGFjZSgvXHQvZyxJLnRhYlJlcGxhY2UpOiIifSk6ZX1mdW5jdGlvbiBoKGUsbix0KXt2YXIgcj1uP0xbbl06dCxhPVtlLnRyaW0oKV07cmV0dXJuIGUubWF0Y2goL1xiaGxqc1xiLyl8fGEucHVzaCgiaGxqcyIpLC0xPT09ZS5pbmRleE9mKHIpJiZhLnB1c2gociksYS5qb2luKCIgIikudHJpbSgpfWZ1bmN0aW9uIGQoZSl7dmFyIG4sdCxyLG8sbCxzPWkoZSk7YShzKXx8KEkudXNlQlI/KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksbi5pbm5lckhUTUw9ZS5pbm5lckhUTUwucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvPGJyWyBcL10qPi9nLCJcbiIpKTpuPWUsbD1uLnRleHRDb250ZW50LHI9cz9mKHMsbCwhMCk6ZyhsKSx0PXUobiksdC5sZW5ndGgmJihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLG8uaW5uZXJIVE1MPXIudmFsdWUsci52YWx1ZT1jKHQsdShvKSxsKSksci52YWx1ZT1wKHIudmFsdWUpLGUuaW5uZXJIVE1MPXIudmFsdWUsZS5jbGFzc05hbWU9aChlLmNsYXNzTmFtZSxzLHIubGFuZ3VhZ2UpLGUucmVzdWx0PXtsYW5ndWFnZTpyLmxhbmd1YWdlLHJlOnIucn0sci5zZWNvbmRfYmVzdCYmKGUuc2Vjb25kX2Jlc3Q9e2xhbmd1YWdlOnIuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UscmU6ci5zZWNvbmRfYmVzdC5yfSkpfWZ1bmN0aW9uIGIoZSl7ST1vKEksZSl9ZnVuY3Rpb24gdigpe2lmKCF2LmNhbGxlZCl7di5jYWxsZWQ9ITA7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicHJlIGNvZGUiKTtFLmZvckVhY2guY2FsbChlLGQpfX1mdW5jdGlvbiBtKCl7YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdiwhMSksYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsdiwhMSl9ZnVuY3Rpb24gTihuLHQpe3ZhciByPXlbbl09dChlKTtyLmFsaWFzZXMmJnIuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bn0pfWZ1bmN0aW9uIFIoKXtyZXR1cm4geCh5KX1mdW5jdGlvbiB3KGUpe3JldHVybiBlPShlfHwiIikudG9Mb3dlckNhc2UoKSx5W2VdfHx5W0xbZV1dfXZhciBFPVtdLHg9T2JqZWN0LmtleXMseT17fSxMPXt9LGs9L14obm8tP2hpZ2hsaWdodHxwbGFpbnx0ZXh0KSQvaSxCPS9cYmxhbmcoPzp1YWdlKT8tKFtcdy1dKylcYi9pLE09LygoXig8W14+XSs+fFx0fCkrfCg/OlxuKSkpL2dtLEM9Ijwvc3Bhbj4iLEk9e2NsYXNzUHJlZml4OiJobGpzLSIsdGFiUmVwbGFjZTpudWxsLHVzZUJSOiExLGxhbmd1YWdlczp2b2lkIDB9O3JldHVybiBlLmhpZ2hsaWdodD1mLGUuaGlnaGxpZ2h0QXV0bz1nLGUuZml4TWFya3VwPXAsZS5oaWdobGlnaHRCbG9jaz1kLGUuY29uZmlndXJlPWIsZS5pbml0SGlnaGxpZ2h0aW5nPXYsZS5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkPW0sZS5yZWdpc3Rlckxhbmd1YWdlPU4sZS5saXN0TGFuZ3VhZ2VzPVIsZS5nZXRMYW5ndWFnZT13LGUuaW5oZXJpdD1vLGUuSVI9IlthLXpBLVpdXFx3KiIsZS5VSVI9IlthLXpBLVpfXVxcdyoiLGUuTlI9IlxcYlxcZCsoXFwuXFxkKyk/IixlLkNOUj0iKC0/KShcXGIwW3hYXVthLWZBLUYwLTldK3woXFxiXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoW2VFXVstK10/XFxkKyk/KSIsZS5CTlI9IlxcYigwYlswMV0rKSIsZS5SU1I9IiF8IT18IT09fCV8JT18JnwmJnwmPXxcXCp8XFwqPXxcXCt8XFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+IixlLkJFPXtiOiJcXFxcW1xcc1xcU10iLHI6MH0sZS5BU009e2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGk6IlxcbiIsYzpbZS5CRV19LGUuUVNNPXtjTjoic3RyaW5nIixiOiciJyxlOiciJyxpOiJcXG4iLGM6W2UuQkVdfSxlLlBXTT17YjovXGIoYXxhbnx0aGV8YXJlfEknbXxpc24ndHxkb24ndHxkb2Vzbid0fHdvbid0fGJ1dHxqdXN0fHNob3VsZHxwcmV0dHl8c2ltcGx5fGVub3VnaHxnb25uYXxnb2luZ3x3dGZ8c298c3VjaHx3aWxsfHlvdXx5b3VyfHRoZXl8bGlrZXxtb3JlKVxiL30sZS5DPWZ1bmN0aW9uKG4sdCxyKXt2YXIgYT1lLmluaGVyaXQoe2NOOiJjb21tZW50IixiOm4sZTp0LGM6W119LHJ8fHt9KTtyZXR1cm4gYS5jLnB1c2goZS5QV00pLGEuYy5wdXNoKHtjTjoiZG9jdGFnIixiOiIoPzpUT0RPfEZJWE1FfE5PVEV8QlVHfFhYWCk6IixyOjB9KSxhfSxlLkNMQ009ZS5DKCIvLyIsIiQiKSxlLkNCQ009ZS5DKCIvXFwqIiwiXFwqLyIpLGUuSENNPWUuQygiIyIsIiQiKSxlLk5NPXtjTjoibnVtYmVyIixiOmUuTlIscjowfSxlLkNOTT17Y046Im51bWJlciIsYjplLkNOUixyOjB9LGUuQk5NPXtjTjoibnVtYmVyIixiOmUuQk5SLHI6MH0sZS5DU1NOTT17Y046Im51bWJlciIsYjplLk5SKyIoJXxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjfHB4fGRlZ3xncmFkfHJhZHx0dXJufHN8bXN8SHp8a0h6fGRwaXxkcGNtfGRwcHgpPyIscjowfSxlLlJNPXtjTjoicmVnZXhwIixiOi9cLy8sZTovXC9bZ2ltdXldKi8saTovXG4vLGM6W2UuQkUse2I6L1xbLyxlOi9cXS8scjowLGM6W2UuQkVdfV19LGUuVE09e2NOOiJ0aXRsZSIsYjplLklSLHI6MH0sZS5VVE09e2NOOiJ0aXRsZSIsYjplLlVJUixyOjB9LGUuTUVUSE9EX0dVQVJEPXtiOiJcXC5cXHMqIitlLlVJUixyOjB9LGV9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInNxbCIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5DKCItLSIsIiQiKTtyZXR1cm57Y0k6ITAsaTovWzw+e30qI10vLGM6W3tiSzoiYmVnaW4gZW5kIHN0YXJ0IGNvbW1pdCByb2xsYmFjayBzYXZlcG9pbnQgbG9jayBhbHRlciBjcmVhdGUgZHJvcCByZW5hbWUgY2FsbCBkZWxldGUgZG8gaGFuZGxlciBpbnNlcnQgbG9hZCByZXBsYWNlIHNlbGVjdCB0cnVuY2F0ZSB1cGRhdGUgc2V0IHNob3cgcHJhZ21hIGdyYW50IG1lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlIHVubG9jayBwdXJnZSByZXNldCBjaGFuZ2Ugc3RvcCBhbmFseXplIGNhY2hlIGZsdXNoIG9wdGltaXplIHJlcGFpciBraWxsIGluc3RhbGwgdW5pbnN0YWxsIGNoZWNrc3VtIHJlc3RvcmUgY2hlY2sgYmFja3VwIHJldm9rZSBjb21tZW50IixlOi87LyxlVzohMCxsOi9bXHdcLl0rLyxrOntrZXl3b3JkOiJhYm9ydCBhYnMgYWJzb2x1dGUgYWNjIGFjY2UgYWNjZXAgYWNjZXB0IGFjY2VzcyBhY2Nlc3NlZCBhY2Nlc3NpYmxlIGFjY291bnQgYWNvcyBhY3Rpb24gYWN0aXZhdGUgYWRkIGFkZHRpbWUgYWRtaW4gYWRtaW5pc3RlciBhZHZhbmNlZCBhZHZpc2UgYWVzX2RlY3J5cHQgYWVzX2VuY3J5cHQgYWZ0ZXIgYWdlbnQgYWdncmVnYXRlIGFsaSBhbGlhIGFsaWFzIGFsbG9jYXRlIGFsbG93IGFsdGVyIGFsd2F5cyBhbmFseXplIGFuY2lsbGFyeSBhbmQgYW55IGFueWRhdGEgYW55ZGF0YXNldCBhbnlzY2hlbWEgYW55dHlwZSBhcHBseSBhcmNoaXZlIGFyY2hpdmVkIGFyY2hpdmVsb2cgYXJlIGFzIGFzYyBhc2NpaSBhc2luIGFzc2VtYmx5IGFzc2VydGlvbiBhc3NvY2lhdGUgYXN5bmNocm9ub3VzIGF0IGF0YW4gYXRuMiBhdHRyIGF0dHJpIGF0dHJpYiBhdHRyaWJ1IGF0dHJpYnV0IGF0dHJpYnV0ZSBhdHRyaWJ1dGVzIGF1ZGl0IGF1dGhlbnRpY2F0ZWQgYXV0aGVudGljYXRpb24gYXV0aGlkIGF1dGhvcnMgYXV0byBhdXRvYWxsb2NhdGUgYXV0b2RibGluayBhdXRvZXh0ZW5kIGF1dG9tYXRpYyBhdmFpbGFiaWxpdHkgYXZnIGJhY2t1cCBiYWRmaWxlIGJhc2ljZmlsZSBiZWZvcmUgYmVnaW4gYmVnaW5uaW5nIGJlbmNobWFyayBiZXR3ZWVuIGJmaWxlIGJmaWxlX2Jhc2UgYmlnIGJpZ2ZpbGUgYmluIGJpbmFyeV9kb3VibGUgYmluYXJ5X2Zsb2F0IGJpbmxvZyBiaXRfYW5kIGJpdF9jb3VudCBiaXRfbGVuZ3RoIGJpdF9vciBiaXRfeG9yIGJpdG1hcCBibG9iX2Jhc2UgYmxvY2sgYmxvY2tzaXplIGJvZHkgYm90aCBib3VuZCBidWZmZXJfY2FjaGUgYnVmZmVyX3Bvb2wgYnVpbGQgYnVsayBieSBieXRlIGJ5dGVvcmRlcm1hcmsgYnl0ZXMgY2FjaGUgY2FjaGluZyBjYWxsIGNhbGxpbmcgY2FuY2VsIGNhcGFjaXR5IGNhc2NhZGUgY2FzY2FkZWQgY2FzZSBjYXN0IGNhdGFsb2cgY2F0ZWdvcnkgY2VpbCBjZWlsaW5nIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJfYmFzZSBjaGFyX2xlbmd0aCBjaGFyYWN0ZXJfbGVuZ3RoIGNoYXJhY3RlcnMgY2hhcmFjdGVyc2V0IGNoYXJpbmRleCBjaGFyc2V0IGNoYXJzZXRmb3JtIGNoYXJzZXRpZCBjaGVjayBjaGVja3N1bSBjaGVja3N1bV9hZ2cgY2hpbGQgY2hvb3NlIGNociBjaHVuayBjbGFzcyBjbGVhbnVwIGNsZWFyIGNsaWVudCBjbG9iIGNsb2JfYmFzZSBjbG9uZSBjbG9zZSBjbHVzdGVyX2lkIGNsdXN0ZXJfcHJvYmFiaWxpdHkgY2x1c3Rlcl9zZXQgY2x1c3RlcmluZyBjb2FsZXNjZSBjb2VyY2liaWxpdHkgY29sIGNvbGxhdGUgY29sbGF0aW9uIGNvbGxlY3QgY29sdSBjb2x1bSBjb2x1bW4gY29sdW1uX3ZhbHVlIGNvbHVtbnMgY29sdW1uc191cGRhdGVkIGNvbW1lbnQgY29tbWl0IGNvbXBhY3QgY29tcGF0aWJpbGl0eSBjb21waWxlZCBjb21wbGV0ZSBjb21wb3NpdGVfbGltaXQgY29tcG91bmQgY29tcHJlc3MgY29tcHV0ZSBjb25jYXQgY29uY2F0X3dzIGNvbmN1cnJlbnQgY29uZmlybSBjb25uIGNvbm5lYyBjb25uZWN0IGNvbm5lY3RfYnlfaXNjeWNsZSBjb25uZWN0X2J5X2lzbGVhZiBjb25uZWN0X2J5X3Jvb3QgY29ubmVjdF90aW1lIGNvbm5lY3Rpb24gY29uc2lkZXIgY29uc2lzdGVudCBjb25zdGFudCBjb25zdHJhaW50IGNvbnN0cmFpbnRzIGNvbnN0cnVjdG9yIGNvbnRhaW5lciBjb250ZW50IGNvbnRlbnRzIGNvbnRleHQgY29udHJpYnV0b3JzIGNvbnRyb2xmaWxlIGNvbnYgY29udmVydCBjb252ZXJ0X3R6IGNvcnIgY29ycl9rIGNvcnJfcyBjb3JyZXNwb25kaW5nIGNvcnJ1cHRpb24gY29zIGNvc3QgY291bnQgY291bnRfYmlnIGNvdW50ZWQgY292YXJfcG9wIGNvdmFyX3NhbXAgY3B1X3Blcl9jYWxsIGNwdV9wZXJfc2Vzc2lvbiBjcmMzMiBjcmVhdGUgY3JlYXRpb24gY3JpdGljYWwgY3Jvc3MgY3ViZSBjdW1lX2Rpc3QgY3VyZGF0ZSBjdXJyZW50IGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUgY3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyIGN1cnNvciBjdXJ0aW1lIGN1c3RvbWRhdHVtIGN5Y2xlIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRhdGFmaWxlIGRhdGFmaWxlcyBkYXRhbGVuZ3RoIGRhdGVfYWRkIGRhdGVfY2FjaGUgZGF0ZV9mb3JtYXQgZGF0ZV9zdWIgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlZnJvbXBhcnRzIGRhdGVuYW1lIGRhdGVwYXJ0IGRhdGV0aW1lMmZyb21wYXJ0cyBkYXkgZGF5X3RvX3NlY29uZCBkYXluYW1lIGRheW9mbW9udGggZGF5b2Z3ZWVrIGRheW9meWVhciBkYXlzIGRiX3JvbGVfY2hhbmdlIGRidGltZXpvbmUgZGRsIGRlYWxsb2NhdGUgZGVjbGFyZSBkZWNvZGUgZGVjb21wb3NlIGRlY3JlbWVudCBkZWNyeXB0IGRlZHVwbGljYXRlIGRlZiBkZWZhIGRlZmF1IGRlZmF1bCBkZWZhdWx0IGRlZmF1bHRzIGRlZmVycmVkIGRlZmkgZGVmaW4gZGVmaW5lIGRlZ3JlZXMgZGVsYXllZCBkZWxlZ2F0ZSBkZWxldGUgZGVsZXRlX2FsbCBkZWxpbWl0ZWQgZGVtYW5kIGRlbnNlX3JhbmsgZGVwdGggZGVxdWV1ZSBkZXNfZGVjcnlwdCBkZXNfZW5jcnlwdCBkZXNfa2V5X2ZpbGUgZGVzYyBkZXNjciBkZXNjcmkgZGVzY3JpYiBkZXNjcmliZSBkZXNjcmlwdG9yIGRldGVybWluaXN0aWMgZGlhZ25vc3RpY3MgZGlmZmVyZW5jZSBkaW1lbnNpb24gZGlyZWN0X2xvYWQgZGlyZWN0b3J5IGRpc2FibGUgZGlzYWJsZV9hbGwgZGlzYWxsb3cgZGlzYXNzb2NpYXRlIGRpc2NhcmRmaWxlIGRpc2Nvbm5lY3QgZGlza2dyb3VwIGRpc3RpbmN0IGRpc3RpbmN0cm93IGRpc3RyaWJ1dGUgZGlzdHJpYnV0ZWQgZGl2IGRvIGRvY3VtZW50IGRvbWFpbiBkb3RuZXQgZG91YmxlIGRvd25ncmFkZSBkcm9wIGR1bXBmaWxlIGR1cGxpY2F0ZSBkdXJhdGlvbiBlYWNoIGVkaXRpb24gZWRpdGlvbmFibGUgZWRpdGlvbnMgZWxlbWVudCBlbGxpcHNpcyBlbHNlIGVsc2lmIGVsdCBlbXB0eSBlbmFibGUgZW5hYmxlX2FsbCBlbmNsb3NlZCBlbmNvZGUgZW5jb2RpbmcgZW5jcnlwdCBlbmQgZW5kLWV4ZWMgZW5kaWFuIGVuZm9yY2VkIGVuZ2luZSBlbmdpbmVzIGVucXVldWUgZW50ZXJwcmlzZSBlbnRpdHllc2NhcGluZyBlb21vbnRoIGVycm9yIGVycm9ycyBlc2NhcGVkIGV2YWxuYW1lIGV2YWx1YXRlIGV2ZW50IGV2ZW50ZGF0YSBldmVudHMgZXhjZXB0IGV4Y2VwdGlvbiBleGNlcHRpb25zIGV4Y2hhbmdlIGV4Y2x1ZGUgZXhjbHVkaW5nIGV4ZWN1IGV4ZWN1dCBleGVjdXRlIGV4ZW1wdCBleGlzdHMgZXhpdCBleHAgZXhwaXJlIGV4cGxhaW4gZXhwb3J0IGV4cG9ydF9zZXQgZXh0ZW5kZWQgZXh0ZW50IGV4dGVybmFsIGV4dGVybmFsXzEgZXh0ZXJuYWxfMiBleHRlcm5hbGx5IGV4dHJhY3QgZmFpbGVkIGZhaWxlZF9sb2dpbl9hdHRlbXB0cyBmYWlsb3ZlciBmYWlsdXJlIGZhciBmYXN0IGZlYXR1cmVfc2V0IGZlYXR1cmVfdmFsdWUgZmV0Y2ggZmllbGQgZmllbGRzIGZpbGUgZmlsZV9uYW1lX2NvbnZlcnQgZmlsZXN5c3RlbV9saWtlX2xvZ2dpbmcgZmluYWwgZmluaXNoIGZpcnN0IGZpcnN0X3ZhbHVlIGZpeGVkIGZsYXNoX2NhY2hlIGZsYXNoYmFjayBmbG9vciBmbHVzaCBmb2xsb3dpbmcgZm9sbG93cyBmb3IgZm9yYWxsIGZvcmNlIGZvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyBmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lIGdsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4IGhpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCBpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSBpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzIGtlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxheCBsY2FzZSBsZWFkIGxlYWRpbmcgbGVhc3QgbGVhdmVzIGxlZnQgbGVuIGxlbmdodCBsZW5ndGggbGVzcyBsZXZlbCBsZXZlbHMgbGlicmFyeSBsaWtlIGxpa2UyIGxpa2U0IGxpa2VjIGxpbWl0IGxpbmVzIGxpbmsgbGlzdCBsaXN0YWdnIGxpdHRsZSBsbiBsb2FkIGxvYWRfZmlsZSBsb2IgbG9icyBsb2NhbCBsb2NhbHRpbWUgbG9jYWx0aW1lc3RhbXAgbG9jYXRlIGxvY2F0b3IgbG9jayBsb2NrZWQgbG9nIGxvZzEwIGxvZzIgbG9nZmlsZSBsb2dmaWxlcyBsb2dnaW5nIGxvZ2ljYWwgbG9naWNhbF9yZWFkc19wZXJfY2FsbCBsb2dvZmYgbG9nb24gbG9ncyBsb25nIGxvb3AgbG93IGxvd19wcmlvcml0eSBsb3dlciBscGFkIGxydHJpbSBsdHJpbSBtYWluIG1ha2Vfc2V0IG1ha2VkYXRlIG1ha2V0aW1lIG1hbmFnZWQgbWFuYWdlbWVudCBtYW51YWwgbWFwIG1hcHBpbmcgbWFzayBtYXN0ZXIgbWFzdGVyX3Bvc193YWl0IG1hdGNoIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1heCBtYXhleHRlbnRzIG1heGltaXplIG1heGluc3RhbmNlcyBtYXhsZW4gbWF4bG9nZmlsZXMgbWF4bG9naGlzdG9yeSBtYXhsb2dtZW1iZXJzIG1heHNpemUgbWF4dHJhbnMgbWQ1IG1lYXN1cmVzIG1lZGlhbiBtZWRpdW0gbWVtYmVyIG1lbWNvbXByZXNzIG1lbW9yeSBtZXJnZSBtaWNyb3NlY29uZCBtaWQgbWlncmF0aW9uIG1pbiBtaW5leHRlbnRzIG1pbmltdW0gbWluaW5nIG1pbnVzIG1pbnV0ZSBtaW52YWx1ZSBtaXNzaW5nIG1vZCBtb2RlIG1vZGVsIG1vZGlmaWNhdGlvbiBtb2RpZnkgbW9kdWxlIG1vbml0b3JpbmcgbW9udGggbW9udGhzIG1vdW50IG1vdmUgbW92ZW1lbnQgbXVsdGlzZXQgbXV0ZXggbmFtZSBuYW1lX2NvbnN0IG5hbWVzIG5hbiBuYXRpb25hbCBuYXRpdmUgbmF0dXJhbCBuYXYgbmNoYXIgbmNsb2IgbmVzdGVkIG5ldmVyIG5ldyBuZXdsaW5lIG5leHQgbmV4dHZhbCBubyBub193cml0ZV90b19iaW5sb2cgbm9hcmNoaXZlbG9nIG5vYXVkaXQgbm9iYWRmaWxlIG5vY2hlY2sgbm9jb21wcmVzcyBub2NvcHkgbm9jeWNsZSBub2RlbGF5IG5vZGlzY2FyZGZpbGUgbm9lbnRpdHllc2NhcGluZyBub2d1YXJhbnRlZSBub2tlZXAgbm9sb2dmaWxlIG5vbWFwcGluZyBub21heHZhbHVlIG5vbWluaW1pemUgbm9taW52YWx1ZSBub21vbml0b3Jpbmcgbm9uZSBub25lZGl0aW9uYWJsZSBub25zY2hlbWEgbm9vcmRlciBub3ByIG5vcHJvIG5vcHJvbSBub3Byb21wIG5vcHJvbXB0IG5vcmVseSBub3Jlc2V0bG9ncyBub3JldmVyc2Ugbm9ybWFsIG5vcm93ZGVwZW5kZW5jaWVzIG5vc2NoZW1hY2hlY2sgbm9zd2l0Y2ggbm90IG5vdGhpbmcgbm90aWNlIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSBudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciBvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSBvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSBwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgcGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4IHBjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyBwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiBwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiBwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlIHByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCBwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgcXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgcmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCByZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5IHJlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lIHJlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgcmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSByaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzIHJ0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCBzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2VjdGlvbiBzZWN1cmVmaWxlIHNlY3VyaXR5IHNlZWQgc2VnbWVudCBzZWxlY3Qgc2VsZiBzZXF1ZW5jZSBzZXF1ZW50aWFsIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2VydmVyZXJyb3Igc2Vzc2lvbiBzZXNzaW9uX3VzZXIgc2Vzc2lvbnNfcGVyX3VzZXIgc2V0IHNldHMgc2V0dGluZ3Mgc2hhIHNoYTEgc2hhMiBzaGFyZSBzaGFyZWQgc2hhcmVkX3Bvb2wgc2hvcnQgc2hvdyBzaHJpbmsgc2h1dGRvd24gc2lfYXZlcmFnZWNvbG9yIHNpX2NvbG9yaGlzdG9ncmFtIHNpX2ZlYXR1cmVsaXN0IHNpX3Bvc2l0aW9uYWxjb2xvciBzaV9zdGlsbGltYWdlIHNpX3RleHR1cmUgc2libGluZ3Mgc2lkIHNpZ24gc2luIHNpemUgc2l6ZV90IHNpemVzIHNraXAgc2xhdmUgc2xlZXAgc21hbGxkYXRldGltZWZyb21wYXJ0cyBzbWFsbGZpbGUgc25hcHNob3Qgc29tZSBzb25hbWUgc29ydCBzb3VuZGV4IHNvdXJjZSBzcGFjZSBzcGFyc2Ugc3BmaWxlIHNwbGl0IHNxbCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91bmRfcm93cyBzcWxfc21hbGxfcmVzdWx0IHNxbF92YXJpYW50X3Byb3BlcnR5IHNxbGNvZGUgc3FsZGF0YSBzcWxlcnJvciBzcWxuYW1lIHNxbHN0YXRlIHNxcnQgc3F1YXJlIHN0YW5kYWxvbmUgc3RhbmRieSBzdGFydCBzdGFydGluZyBzdGFydHVwIHN0YXRlbWVudCBzdGF0aWMgc3RhdGlzdGljcyBzdGF0c19iaW5vbWlhbF90ZXN0IHN0YXRzX2Nyb3NzdGFiIHN0YXRzX2tzX3Rlc3Qgc3RhdHNfbW9kZSBzdGF0c19td190ZXN0IHN0YXRzX29uZV93YXlfYW5vdmEgc3RhdHNfdF90ZXN0XyBzdGF0c190X3Rlc3RfaW5kZXAgc3RhdHNfdF90ZXN0X29uZSBzdGF0c190X3Rlc3RfcGFpcmVkIHN0YXRzX3dzcl90ZXN0IHN0YXR1cyBzdGQgc3RkZGV2IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RkZXYgc3RvcCBzdG9yYWdlIHN0b3JlIHN0b3JlZCBzdHIgc3RyX3RvX2RhdGUgc3RyYWlnaHRfam9pbiBzdHJjbXAgc3RyaWN0IHN0cmluZyBzdHJ1Y3Qgc3R1ZmYgc3R5bGUgc3ViZGF0ZSBzdWJwYXJ0aXRpb24gc3VicGFydGl0aW9ucyBzdWJzdGl0dXRhYmxlIHN1YnN0ciBzdWJzdHJpbmcgc3VidGltZSBzdWJ0cmluZ19pbmRleCBzdWJ0eXBlIHN1Y2Nlc3Mgc3VtIHN1c3BlbmQgc3dpdGNoIHN3aXRjaG9mZnNldCBzd2l0Y2hvdmVyIHN5bmMgc3luY2hyb25vdXMgc3lub255bSBzeXMgc3lzX3htbGFnZyBzeXNhc20gc3lzYXV4IHN5c2RhdGUgc3lzZGF0ZXRpbWVvZmZzZXQgc3lzZGJhIHN5c29wZXIgc3lzdGVtIHN5c3RlbV91c2VyIHN5c3V0Y2RhdGV0aW1lIHRhYmxlIHRhYmxlcyB0YWJsZXNwYWNlIHRhbiB0ZG8gdGVtcGxhdGUgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdGVydGlhcnlfd2VpZ2h0cyB0ZXN0IHRoYW4gdGhlbiB0aHJlYWQgdGhyb3VnaCB0aWVyIHRpZXMgdGltZSB0aW1lX2Zvcm1hdCB0aW1lX3pvbmUgdGltZWRpZmYgdGltZWZyb21wYXJ0cyB0aW1lb3V0IHRpbWVzdGFtcCB0aW1lc3RhbXBhZGQgdGltZXN0YW1wZGlmZiB0aW1lem9uZV9hYmJyIHRpbWV6b25lX21pbnV0ZSB0aW1lem9uZV9yZWdpb24gdG8gdG9fYmFzZTY0IHRvX2RhdGUgdG9fZGF5cyB0b19zZWNvbmRzIHRvZGF0ZXRpbWVvZmZzZXQgdHJhY2UgdHJhY2tpbmcgdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25hbCB0cmFuc2xhdGUgdHJhbnNsYXRpb24gdHJlYXQgdHJpZ2dlciB0cmlnZ2VyX25lc3RsZXZlbCB0cmlnZ2VycyB0cmltIHRydW5jYXRlIHRyeV9jYXN0IHRyeV9jb252ZXJ0IHRyeV9wYXJzZSB0eXBlIHViMSB1YjIgdWI0IHVjYXNlIHVuYXJjaGl2ZWQgdW5ib3VuZGVkIHVuY29tcHJlc3MgdW5kZXIgdW5kbyB1bmhleCB1bmljb2RlIHVuaWZvcm0gdW5pbnN0YWxsIHVuaW9uIHVuaXF1ZSB1bml4X3RpbWVzdGFtcCB1bmtub3duIHVubGltaXRlZCB1bmxvY2sgdW5waXZvdCB1bnJlY292ZXJhYmxlIHVuc2FmZSB1bnNpZ25lZCB1bnRpbCB1bnRydXN0ZWQgdW51c2FibGUgdW51c2VkIHVwZGF0ZSB1cGRhdGVkIHVwZ3JhZGUgdXBwZWQgdXBwZXIgdXBzZXJ0IHVybCB1cm93aWQgdXNhYmxlIHVzYWdlIHVzZSB1c2Vfc3RvcmVkX291dGxpbmVzIHVzZXIgdXNlcl9kYXRhIHVzZXJfcmVzb3VyY2VzIHVzZXJzIHVzaW5nIHV0Y19kYXRlIHV0Y190aW1lc3RhbXAgdXVpZCB1dWlkX3Nob3J0IHZhbGlkYXRlIHZhbGlkYXRlX3Bhc3N3b3JkX3N0cmVuZ3RoIHZhbGlkYXRpb24gdmFsaXN0IHZhbHVlIHZhbHVlcyB2YXIgdmFyX3NhbXAgdmFyY2hhcmMgdmFyaSB2YXJpYSB2YXJpYWIgdmFyaWFibCB2YXJpYWJsZSB2YXJpYWJsZXMgdmFyaWFuY2UgdmFycCB2YXJyYXcgdmFycmF3YyB2YXJyYXkgdmVyaWZ5IHZlcnNpb24gdmVyc2lvbnMgdmlldyB2aXJ0dWFsIHZpc2libGUgdm9pZCB3YWl0IHdhbGxldCB3YXJuaW5nIHdhcm5pbmdzIHdlZWsgd2Vla2RheSB3ZWVrb2Z5ZWFyIHdlbGxmb3JtZWQgd2hlbiB3aGVuZSB3aGVuZXYgd2hlbmV2ZSB3aGVuZXZlciB3aGVyZSB3aGlsZSB3aGl0ZXNwYWNlIHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkIHhkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgeG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlayIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSBudWxsIixidWlsdF9pbjoiYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sZWFuIGNoYXIgY2hhcmFjdGVyIGRhdGUgZGVjIGRlY2ltYWwgZmxvYXQgaW50IGludDggaW50ZWdlciBpbnRlcnZhbCBudW1iZXIgbnVtZXJpYyByZWFsIHJlY29yZCBzZXJpYWwgc2VyaWFsOCBzbWFsbGludCB0ZXh0IHZhcmNoYXIgdmFyeWluZyB2b2lkIn0sYzpbe2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGM6W2UuQkUse2I6IicnIn1dfSx7Y046InN0cmluZyIsYjonIicsZTonIicsYzpbZS5CRSx7YjonIiInfV19LHtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFXX0sZS5DTk0sZS5DQkNNLHRdfSxlLkNCQ00sdF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJyIixmdW5jdGlvbihlKXt2YXIgcj0iKFthLXpBLVpdfFxcLlthLXpBLVouXSlbYS16QS1aMC05Ll9dKiI7cmV0dXJue2M6W2UuSENNLHtiOnIsbDpyLGs6e2tleXdvcmQ6ImZ1bmN0aW9uIGlmIGluIGJyZWFrIG5leHQgcmVwZWF0IGVsc2UgZm9yIHJldHVybiBzd2l0Y2ggd2hpbGUgdHJ5IHRyeUNhdGNoIHN0b3Agd2FybmluZyByZXF1aXJlIGxpYnJhcnkgYXR0YWNoIGRldGFjaCBzb3VyY2Ugc2V0TWV0aG9kIHNldEdlbmVyaWMgc2V0R3JvdXBHZW5lcmljIHNldENsYXNzIC4uLiIsbGl0ZXJhbDoiTlVMTCBOQSBUUlVFIEZBTFNFIFQgRiBJbmYgTmFOIE5BX2ludGVnZXJffDEwIE5BX3JlYWxffDEwIE5BX2NoYXJhY3Rlcl98MTAgTkFfY29tcGxleF98MTAifSxyOjB9LHtjTjoibnVtYmVyIixiOiIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrXFwuKD8hXFxkKSg/OmlcXGIpPyIscjowfSx7Y046Im51bWJlciIsYjoiXFxkKyg/OlxcLlxcZCopPyg/OltlRV1bK1xcLV0/XFxkKik/aT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixyOjB9LHtiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixjOltlLkJFXSx2Olt7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJwZXJsIixmdW5jdGlvbihlKXt2YXIgdD0iZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjIG1hIHN5c3dyaXRlIHRyIHNlbmQgdW1hc2sgc3lzb3BlbiBzaG13cml0ZSB2ZWMgcXggdXRpbWUgbG9jYWwgb2N0IHNlbWN0bCBsb2NhbHRpbWUgcmVhZHBpcGUgZG8gcmV0dXJuIGZvcm1hdCByZWFkIHNwcmludGYgZGJtb3BlbiBwb3AgZ2V0cGdycCBub3QgZ2V0cHduYW0gcmV3aW5kZGlyIHFxZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50IHNodXRkb3duIGR1bXAgY2hvbXAgY29ubmVjdCBnZXRzb2NrbmFtZSBkaWUgc29ja2V0cGFpciBjbG9zZSBmbG9jayBleGlzdHMgaW5kZXggc2htZ2V0c3ViIGZvciBlbmRwd2VudCByZWRvIGxzdGF0IG1zZ2N0bCBzZXRwZ3JwIGFicyBleGl0IHNlbGVjdCBwcmludCByZWYgZ2V0aG9zdGJ5YWRkciB1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCBnZXRwZWVybmFtZSByZWN2IGxvZyBzZXRzb2Nrb3B0IGNvcyBsYXN0IHJldmVyc2UgZ2V0aG9zdGJ5bmFtZSBnZXRncm5hbSBzdHVkeSBmb3JtbGluZSBlbmRob3N0ZW50IHRpbWVzIGNob3AgbGVuZ3RoIGdldGhvc3RlbnQgZ2V0bmV0ZW50IHBhY2sgZ2V0cHJvdG9lbnQgZ2V0c2VydmJ5bmFtZSByYW5kIG1rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgZ2V0c29ja29wdCBnZXRwcmlvcml0eSByaW5kZXggd2FudGFycmF5IGhleCBzeXN0ZW0gZ2V0c2VydmJ5cG9ydCBlbmRzZXJ2ZW50IGludCBjaHIgdW50aWUgcm1kaXIgcHJvdG90eXBlIHRlbGwgbGlzdGVuIGZvcmsgc2htcmVhZCB1Y2ZpcnN0IHNldHByb3RvZW50IGVsc2Ugc3lzc2VlayBsaW5rIGdldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciBsY2ZpcnN0IHVudGlsIHdhcm4gd2hpbGUgdmFsdWVzIHNoaWZ0IHRlbGxkaXIgZ2V0cHd1aWQgbXkgZ2V0cHJvdG9ieW51bWJlciBkZWxldGUgYW5kIHNvcnQgdWMgZGVmaW5lZCBzcmFuZCBhY2NlcHQgcGFja2FnZSBzZWVrZGlyIGdldHByb3RvYnluYW1lIHNlbW9wIG91ciByZW5hbWUgc2VlayBpZiBxfDAgY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoIHRpZSBzaW4gbXNnZ2V0IG1hcCBzdGF0IGdldGxvZ2luIHVubGVzcyBlbHNpZiB0cnVuY2F0ZSBleGVjIGtleXMgZ2xvYiB0aWVkIGNsb3NlZGlyaW9jdGwgc29ja2V0IHJlYWRsaW5rIGV2YWwgeG9yIHJlYWRsaW5lIGJpbm1vZGUgc2V0c2VydmVudCBlb2Ygb3JkIGJpbmQgYWxhcm0gcGlwZSBhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbiIscj17Y046InN1YnN0IixiOiJbJEBdXFx7IixlOiJcXH0iLGs6dH0scz17YjoiLT57IixlOiJ9In0sbj17djpbe2I6L1wkXGQvfSx7YjovW1wkJUBdKFxeXHdcYnwjXHcrKDo6XHcrKSp8e1x3K318XHcrKDo6XHcqKSopL30se2I6L1tcJCVAXVteXHNcd3tdLyxyOjB9XX0saT1bZS5CRSxyLG5dLG89W24sZS5IQ00sZS5DKCJeXFw9XFx3IiwiXFw9Y3V0Iix7ZVc6ITB9KSxzLHtjTjoic3RyaW5nIixjOmksdjpbe2I6InFbcXd4cl0/XFxzKlxcKCIsZToiXFwpIixyOjV9LHtiOiJxW3F3eHJdP1xccypcXFsiLGU6IlxcXSIscjo1fSx7YjoicVtxd3hyXT9cXHMqXFx7IixlOiJcXH0iLHI6NX0se2I6InFbcXd4cl0/XFxzKlxcfCIsZToiXFx8IixyOjV9LHtiOiJxW3F3eHJdP1xccypcXDwiLGU6IlxcPiIscjo1fSx7YjoicXdcXHMrcSIsZToicSIscjo1fSx7YjoiJyIsZToiJyIsYzpbZS5CRV19LHtiOiciJyxlOiciJ30se2I6ImAiLGU6ImAiLGM6W2UuQkVdfSx7Yjoie1xcdyt9IixjOltdLHI6MH0se2I6Ii0/XFx3K1xccypcXD1cXD4iLGM6W10scjowfV19LHtjTjoibnVtYmVyIixiOiIoXFxiMFswLTdfXSspfChcXGIweFswLTlhLWZBLUZfXSspfChcXGJbMS05XVswLTlfXSooXFwuWzAtOV9dKyk/KXxbMF9dXFxiIixyOjB9LHtiOiIoXFwvXFwvfCIrZS5SU1IrInxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXGIpXFxzKiIsazoic3BsaXQgcmV0dXJuIHByaW50IHJldmVyc2UgZ3JlcCIscjowLGM6W2UuSENNLHtjTjoicmVnZXhwIixiOiIoc3x0cnx5KS8oXFxcXC58W14vXSkqLyhcXFxcLnxbXi9dKSovW2Etel0qIixyOjEwfSx7Y046InJlZ2V4cCIsYjoiKG18cXIpPy8iLGU6Ii9bYS16XSoiLGM6W2UuQkVdLHI6MH1dfSx7Y046ImZ1bmN0aW9uIixiSzoic3ViIixlOiIoXFxzKlxcKC4qP1xcKSk/Wzt7XSIsZUU6ITAscjo1LGM6W2UuVE1dfSx7YjoiLVxcd1xcYiIscjowfSx7YjoiXl9fREFUQV9fJCIsZToiXl9fRU5EX18kIixzTDoibW9qb2xpY2lvdXMiLGM6W3tiOiJeQEAuKiIsZToiJCIsY046ImNvbW1lbnQifV19XTtyZXR1cm4gci5jPW8scy5jPW8se2FsaWFzZXM6WyJwbCIsInBtIl0sbDovW1x3XC5dKy8sazp0LGM6b319KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImluaSIsZnVuY3Rpb24oZSl7dmFyIGI9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOiInJyciLGU6IicnJyIscjoxMH0se2I6JyIiIicsZTonIiIiJyxyOjEwfSx7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfTtyZXR1cm57YWxpYXNlczpbInRvbWwiXSxjSTohMCxpOi9cUy8sYzpbZS5DKCI7IiwiJCIpLGUuSENNLHtjTjoic2VjdGlvbiIsYjovXlxzKlxbKy8sZTovXF0rL30se2I6L15bYS16MC05XFtcXV8tXStccyo9XHMqLyxlOiIkIixyQjohMCxjOlt7Y046ImF0dHIiLGI6L1thLXowLTlcW1xdXy1dKy99LHtiOi89LyxlVzohMCxyOjAsYzpbe2NOOiJsaXRlcmFsIixiOi9cYm9ufG9mZnx0cnVlfGZhbHNlfHllc3xub1xiL30se2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQiXVtcd1xkX10qL30se2I6L1wkXHsoLio/KX0vfV19LGIse2NOOiJudW1iZXIiLGI6LyhbXCtcLV0rKT9bXGRdK19bXGRfXSsvfSxlLk5NXX1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJkaWZmIixmdW5jdGlvbihlKXtyZXR1cm57YWxpYXNlczpbInBhdGNoIl0sYzpbe2NOOiJtZXRhIixyOjEwLHY6W3tiOi9eQEAgK1wtXGQrLFxkKyArXCtcZCssXGQrICtAQCQvfSx7YjovXlwqXCpcKiArXGQrLFxkKyArXCpcKlwqXCokL30se2I6L15cLVwtXC0gK1xkKyxcZCsgK1wtXC1cLVwtJC99XX0se2NOOiJjb21tZW50Iix2Olt7YjovSW5kZXg6IC8sZTovJC99LHtiOi89ezMsfS8sZTovJC99LHtiOi9eXC17M30vLGU6LyQvfSx7YjovXlwqezN9IC8sZTovJC99LHtiOi9eXCt7M30vLGU6LyQvfSx7YjovXCp7NX0vLGU6L1wqezV9JC99XX0se2NOOiJhZGRpdGlvbiIsYjoiXlxcKyIsZToiJCJ9LHtjTjoiZGVsZXRpb24iLGI6Il5cXC0iLGU6IiQifSx7Y046ImFkZGl0aW9uIixiOiJeXFwhIixlOiIkIn1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiZ28iLGZ1bmN0aW9uKGUpe3ZhciB0PXtrZXl3b3JkOiJicmVhayBkZWZhdWx0IGZ1bmMgaW50ZXJmYWNlIHNlbGVjdCBjYXNlIG1hcCBzdHJ1Y3QgY2hhbiBlbHNlIGdvdG8gcGFja2FnZSBzd2l0Y2ggY29uc3QgZmFsbHRocm91Z2ggaWYgcmFuZ2UgdHlwZSBjb250aW51ZSBmb3IgaW1wb3J0IHJldHVybiB2YXIgZ28gZGVmZXIgYm9vbCBieXRlIGNvbXBsZXg2NCBjb21wbGV4MTI4IGZsb2F0MzIgZmxvYXQ2NCBpbnQ4IGludDE2IGludDMyIGludDY0IHN0cmluZyB1aW50OCB1aW50MTYgdWludDMyIHVpbnQ2NCBpbnQgdWludCB1aW50cHRyIHJ1bmUiLGxpdGVyYWw6InRydWUgZmFsc2UgaW90YSBuaWwiLGJ1aWx0X2luOiJhcHBlbmQgY2FwIGNsb3NlIGNvbXBsZXggY29weSBpbWFnIGxlbiBtYWtlIG5ldyBwYW5pYyBwcmludCBwcmludGxuIHJlYWwgcmVjb3ZlciBkZWxldGUifTtyZXR1cm57YWxpYXNlczpbImdvbGFuZyJdLGs6dCxpOiI8LyIsYzpbZS5DTENNLGUuQ0JDTSx7Y046InN0cmluZyIsdjpbZS5RU00se2I6IiciLGU6IlteXFxcXF0nIn0se2I6ImAiLGU6ImAifV19LHtjTjoibnVtYmVyIix2Olt7YjplLkNOUisiW2RmbHNpXSIscjoxfSxlLkNOTV19LHtiOi86PS99LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jIixlOi9ccypcey8sZUU6ITAsYzpbZS5UTSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnQsaTovWyInXS99XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiYmFzaCIsZnVuY3Rpb24oZSl7dmFyIHQ9e2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQjQF1bXHdcZF9dKi99LHtiOi9cJFx7KC4qPyl9L31dfSxzPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLHQse2NOOiJ2YXJpYWJsZSIsYjovXCRcKC8sZTovXCkvLGM6W2UuQkVdfV19LGE9e2NOOiJzdHJpbmciLGI6LycvLGU6LycvfTtyZXR1cm57YWxpYXNlczpbInNoIiwienNoIl0sbDovXGItP1thLXpcLl9dK1xiLyxrOntrZXl3b3JkOiJpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24iLGxpdGVyYWw6InRydWUgZmFsc2UiLGJ1aWx0X2luOiJicmVhayBjZCBjb250aW51ZSBldmFsIGV4ZWMgZXhpdCBleHBvcnQgZ2V0b3B0cyBoYXNoIHB3ZCByZWFkb25seSByZXR1cm4gc2hpZnQgdGVzdCB0aW1lcyB0cmFwIHVtYXNrIHVuc2V0IGFsaWFzIGJpbmQgYnVpbHRpbiBjYWxsZXIgY29tbWFuZCBkZWNsYXJlIGVjaG8gZW5hYmxlIGhlbHAgbGV0IGxvY2FsIGxvZ291dCBtYXBmaWxlIHByaW50ZiByZWFkIHJlYWRhcnJheSBzb3VyY2UgdHlwZSB0eXBlc2V0IHVsaW1pdCB1bmFsaWFzIHNldCBzaG9wdCBhdXRvbG9hZCBiZyBiaW5ka2V5IGJ5ZSBjYXAgY2hkaXIgY2xvbmUgY29tcGFyZ3VtZW50cyBjb21wY2FsbCBjb21wY3RsIGNvbXBkZXNjcmliZSBjb21wZmlsZXMgY29tcGdyb3VwcyBjb21wcXVvdGUgY29tcHRhZ3MgY29tcHRyeSBjb21wdmFsdWVzIGRpcnMgZGlzYWJsZSBkaXNvd24gZWNob3RjIGVjaG90aSBlbXVsYXRlIGZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgcHVzaGQgcHVzaGxuIHJlaGFzaCBzY2hlZCBzZXRjYXAgc2V0b3B0IHN0YXQgc3VzcGVuZCB0dHljdGwgdW5mdW5jdGlvbiB1bmhhc2ggdW5saW1pdCB1bnNldG9wdCB2YXJlZCB3YWl0IHdoZW5jZSB3aGVyZSB3aGljaCB6Y29tcGlsZSB6Zm9ybWF0IHpmdHAgemxlIHptb2Rsb2FkIHpwYXJzZW9wdHMgenByb2YgenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwIixfOiItbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEifSxjOlt7Y046Im1ldGEiLGI6L14jIVteXG5dK3NoXHMqJC8scjoxMH0se2NOOiJmdW5jdGlvbiIsYjovXHdbXHdcZF9dKlxzKlwoXHMqXClccypcey8sckI6ITAsYzpbZS5pbmhlcml0KGUuVE0se2I6L1x3W1x3XGRfXSovfSldLHI6MH0sZS5IQ00scyxhLHRdfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicHl0aG9uIixmdW5jdGlvbihlKXt2YXIgcj17a2V5d29yZDoiYW5kIGVsaWYgaXMgZ2xvYmFsIGFzIGluIGlmIGZyb20gcmFpc2UgZm9yIGV4Y2VwdCBmaW5hbGx5IHByaW50IGltcG9ydCBwYXNzIHJldHVybiBleGVjIGVsc2UgYnJlYWsgbm90IHdpdGggY2xhc3MgYXNzZXJ0IHlpZWxkIHRyeSB3aGlsZSBjb250aW51ZSBkZWwgb3IgZGVmIGxhbWJkYSBhc3luYyBhd2FpdCBub25sb2NhbHwxMCBOb25lIFRydWUgRmFsc2UiLGJ1aWx0X2luOiJFbGxpcHNpcyBOb3RJbXBsZW1lbnRlZCJ9LGI9e2NOOiJtZXRhIixiOi9eKD4+PnxcLlwuXC4pIC99LGM9e2NOOiJzdWJzdCIsYjovXHsvLGU6L1x9LyxrOnIsaTovIy99LGE9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOi8odXxiKT9yPycnJy8sZTovJycnLyxjOltiXSxyOjEwfSx7YjovKHV8Yik/cj8iIiIvLGU6LyIiIi8sYzpbYl0scjoxMH0se2I6LyhmcnxyZnxmKScnJy8sZTovJycnLyxjOltiLGNdfSx7YjovKGZyfHJmfGYpIiIiLyxlOi8iIiIvLGM6W2IsY119LHtiOi8odXxyfHVyKScvLGU6LycvLHI6MTB9LHtiOi8odXxyfHVyKSIvLGU6LyIvLHI6MTB9LHtiOi8oYnxiciknLyxlOi8nL30se2I6LyhifGJyKSIvLGU6LyIvfSx7YjovKGZyfHJmfGYpJy8sZTovJy8sYzpbY119LHtiOi8oZnJ8cmZ8ZikiLyxlOi8iLyxjOltjXX0sZS5BU00sZS5RU01dfSxzPXtjTjoibnVtYmVyIixyOjAsdjpbe2I6ZS5CTlIrIltsTGpKXT8ifSx7YjoiXFxiKDBvWzAtN10rKVtsTGpKXT8ifSx7YjplLkNOUisiW2xMakpdPyJ9XX0saT17Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxjOlsic2VsZiIsYixzLGFdfTtyZXR1cm4gYy5jPVthLHMsYl0se2FsaWFzZXM6WyJweSIsImd5cCJdLGs6cixpOi8oPFwvfC0+fFw/KXw9Pi8sYzpbYixzLGEsZS5IQ00se3Y6W3tjTjoiZnVuY3Rpb24iLGJLOiJkZWYifSx7Y046ImNsYXNzIixiSzoiY2xhc3MifV0sZTovOi8saTovWyR7PTtcbixdLyxjOltlLlVUTSxpLHtiOi8tPi8sZVc6ITAsazoiTm9uZSJ9XX0se2NOOiJtZXRhIixiOi9eW1x0IF0qQC8sZTovJC99LHtiOi9cYihwcmludHxleGVjKVwoL31dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianVsaWEiLGZ1bmN0aW9uKGUpe3ZhciByPXtrZXl3b3JkOiJpbiBpc2Egd2hlcmUgYmFyZW1vZHVsZSBiZWdpbiBicmVhayBjYXRjaCBjY2FsbCBjb25zdCBjb250aW51ZSBkbyBlbHNlIGVsc2VpZiBlbmQgZXhwb3J0IGZhbHNlIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbXBvcnQgaW1wb3J0YWxsIGxldCBsb2NhbCBtYWNybyBtb2R1bGUgcXVvdGUgcmV0dXJuIHRydWUgdHJ5IHVzaW5nIHdoaWxlIHR5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAiLGxpdGVyYWw6InRydWUgZmFsc2UgQVJHUyBDX05VTEwgRGV2TnVsbCBFTkRJQU5fQk9NIEVOViBJIEluZiBJbmYxNiBJbmYzMiBJbmY2NCBJbnNlcnRpb25Tb3J0IEpVTElBX0hPTUUgTE9BRF9QQVRIIE1lcmdlU29ydCBOYU4gTmFOMTYgTmFOMzIgTmFONjQgUFJPR1JBTV9GSUxFIFF1aWNrU29ydCBSb3VuZERvd24gUm91bmRGcm9tWmVybyBSb3VuZE5lYXJlc3QgUm91bmROZWFyZXN0VGllc0F3YXkgUm91bmROZWFyZXN0VGllc1VwIFJvdW5kVG9aZXJvIFJvdW5kVXAgU1RERVJSIFNURElOIFNURE9VVCBWRVJTSU9OIGNhdGFsYW4gZXwwIGV1fDAgZXVsZXJnYW1tYSBnb2xkZW4gaW0gbm90aGluZyBwaSDOsyDPgCDPhiAiLGJ1aWx0X2luOiJBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0IEFic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsIEJpZ0Zsb2F0IEJpZ0ludCBCaXRBcnJheSBCaXRNYXRyaXggQml0VmVjdG9yIEJvb2wgQm91bmRzRXJyb3IgQnVmZmVyU3RyZWFtIENhY2hpbmdQb29sIENhcHR1cmVkRXhjZXB0aW9uIENhcnRlc2lhbkluZGV4IENhcnRlc2lhblJhbmdlIENjaGFyIENkb3VibGUgQ2Zsb2F0IENoYW5uZWwgQ2hhciBDaW50IENpbnRtYXhfdCBDbG9uZyBDbG9uZ2xvbmcgQ2x1c3Rlck1hbmFnZXIgQ21kIENvZGVJbmZvIENvbG9uIENvbXBsZXggQ29tcGxleDEyOCBDb21wbGV4MzIgQ29tcGxleDY0IENvbXBvc2l0ZUV4Y2VwdGlvbiBDb25kaXRpb24gQ29uakFycmF5IENvbmpNYXRyaXggQ29ualZlY3RvciBDcHRyZGlmZl90IENzaG9ydCBDc2l6ZV90IENzc2l6ZV90IENzdHJpbmcgQ3VjaGFyIEN1aW50IEN1aW50bWF4X3QgQ3Vsb25nIEN1bG9uZ2xvbmcgQ3VzaG9ydCBDd2NoYXJfdCBDd3N0cmluZyBEYXRhVHlwZSBEYXRlIERhdGVGb3JtYXQgRGF0ZVRpbWUgRGVuc2VBcnJheSBEZW5zZU1hdHJpeCBEZW5zZVZlY09yTWF0IERlbnNlVmVjdG9yIERpYWdvbmFsIERpY3QgRGltZW5zaW9uTWlzbWF0Y2ggRGltcyBEaXJlY3RJbmRleFN0cmluZyBEaXNwbGF5IERpdmlkZUVycm9yIERvbWFpbkVycm9yIEVPRkVycm9yIEVhY2hMaW5lIEVudW0gRW51bWVyYXRlIEVycm9yRXhjZXB0aW9uIEV4Y2VwdGlvbiBFeHBvbmVudGlhbEJhY2tPZmYgRXhwciBGYWN0b3JpemF0aW9uIEZpbGVNb25pdG9yIEZsb2F0MTYgRmxvYXQzMiBGbG9hdDY0IEZ1bmN0aW9uIEZ1dHVyZSBHbG9iYWxSZWYgR290b05vZGUgSFRNTCBIZXJtaXRpYW4gSU8gSU9CdWZmZXIgSU9Db250ZXh0IElPU3RyZWFtIElQQWRkciBJUHY0IElQdjYgSW5kZXhDYXJ0ZXNpYW4gSW5kZXhMaW5lYXIgSW5kZXhTdHlsZSBJbmV4YWN0RXJyb3IgSW5pdEVycm9yIEludCBJbnQxMjggSW50MTYgSW50MzIgSW50NjQgSW50OCBJbnRTZXQgSW50ZWdlciBJbnRlcnJ1cHRFeGNlcHRpb24gSW52YWxpZFN0YXRlRXhjZXB0aW9uIElycmF0aW9uYWwgS2V5RXJyb3IgTGFiZWxOb2RlIExpblNwYWNlIExpbmVOdW1iZXJOb2RlIExvYWRFcnJvciBMb3dlclRyaWFuZ3VsYXIgTUlNRSBNYXRyaXggTWVyc2VubmVUd2lzdGVyIE1ldGhvZCBNZXRob2RFcnJvciBNZXRob2RUYWJsZSBNb2R1bGUgTlR1cGxlIE5ld3Zhck5vZGUgTnVsbEV4Y2VwdGlvbiBOdWxsYWJsZSBOdW1iZXIgT2JqZWN0SWREaWN0IE9yZGluYWxSYW5nZSBPdXRPZk1lbW9yeUVycm9yIE92ZXJmbG93RXJyb3IgUGFpciBQYXJzZUVycm9yIFBhcnRpYWxRdWlja1NvcnQgUGVybXV0ZWREaW1zQXJyYXkgUGlwZSBQb2xsaW5nRmlsZVdhdGNoZXIgUHJvY2Vzc0V4aXRlZEV4Y2VwdGlvbiBQdHIgUXVvdGVOb2RlIFJhbmRvbURldmljZSBSYW5nZSBSYW5nZUluZGV4IFJhdGlvbmFsIFJhd0ZEIFJlYWRPbmx5TWVtb3J5RXJyb3IgUmVhbCBSZWVudHJhbnRMb2NrIFJlZiBSZWdleCBSZWdleE1hdGNoIFJlbW90ZUNoYW5uZWwgUmVtb3RlRXhjZXB0aW9uIFJldlN0cmluZyBSb3VuZGluZ01vZGUgUm93VmVjdG9yIFNTQVZhbHVlIFNlZ21lbnRhdGlvbkZhdWx0IFNlcmlhbGl6YXRpb25TdGF0ZSBTZXQgU2hhcmVkQXJyYXkgU2hhcmVkTWF0cml4IFNoYXJlZFZlY3RvciBTaWduZWQgU2ltcGxlVmVjdG9yIFNsb3QgU2xvdE51bWJlciBTcGFyc2VNYXRyaXhDU0MgU3BhcnNlVmVjdG9yIFN0YWNrRnJhbWUgU3RhY2tPdmVyZmxvd0Vycm9yIFN0YWNrVHJhY2UgU3RlcFJhbmdlIFN0ZXBSYW5nZUxlbiBTdHJpZGVkQXJyYXkgU3RyaWRlZE1hdHJpeCBTdHJpZGVkVmVjT3JNYXQgU3RyaWRlZFZlY3RvciBTdHJpbmcgU3ViQXJyYXkgU3ViU3RyaW5nIFN5bVRyaWRpYWdvbmFsIFN5bWJvbCBTeW1tZXRyaWMgU3lzdGVtRXJyb3IgVENQU29ja2V0IFRhc2sgVGV4dCBUZXh0RGlzcGxheSBUaW1lciBUcmlkaWFnb25hbCBUdXBsZSBUeXBlIFR5cGVFcnJvciBUeXBlTWFwRW50cnkgVHlwZU1hcExldmVsIFR5cGVOYW1lIFR5cGVWYXIgVHlwZWRTbG90IFVEUFNvY2tldCBVSW50IFVJbnQxMjggVUludDE2IFVJbnQzMiBVSW50NjQgVUludDggVW5kZWZSZWZFcnJvciBVbmRlZlZhckVycm9yIFVuaWNvZGVFcnJvciBVbmlmb3JtU2NhbGluZyBVbmlvbiBVbmlvbkFsbCBVbml0UmFuZ2UgVW5zaWduZWQgVXBwZXJUcmlhbmd1bGFyIFZhbCBWYXJhcmcgVmVjRWxlbWVudCBWZWNPck1hdCBWZWN0b3IgVmVyc2lvbk51bWJlciBWb2lkIFdlYWtLZXlEaWN0IFdlYWtSZWYgV29ya2VyQ29uZmlnIFdvcmtlclBvb2wgIn0sdD0iW0EtWmEtel9cXHUwMEExLVxcdUZGRkZdW0EtWmEtel8wLTlcXHUwMEExLVxcdUZGRkZdKiIsYT17bDp0LGs6cixpOi88XC8vfSxuPXtjTjoibnVtYmVyIixiOi8oXGIweFtcZF9dKihcLltcZF9dKik/fDB4XC5cZFtcZF9dKilwWy0rXT9cZCt8XGIwW2JveF1bYS1mQS1GMC05XVthLWZBLUYwLTlfXSp8KFxiXGRbXGRfXSooXC5bXGRfXSopP3xcLlxkW1xkX10qKShbZUVmRl1bLStdP1xkKyk/LyxyOjB9LG89e2NOOiJzdHJpbmciLGI6LycoLnxcXFt4WHVVXVthLXpBLVowLTldKyknL30saT17Y046InN1YnN0IixiOi9cJFwoLyxlOi9cKS8sazpyfSxsPXtjTjoidmFyaWFibGUiLGI6IlxcJCIrdH0sYz17Y046InN0cmluZyIsYzpbZS5CRSxpLGxdLHY6W3tiOi9cdyoiIiIvLGU6LyIiIlx3Ki8scjoxMH0se2I6L1x3KiIvLGU6LyJcdyovfV19LHM9e2NOOiJzdHJpbmciLGM6W2UuQkUsaSxsXSxiOiJgIixlOiJgIn0sZD17Y046Im1ldGEiLGI6IkAiK3R9LHU9e2NOOiJjb21tZW50Iix2Olt7YjoiIz0iLGU6Ij0jIixyOjEwfSx7YjoiIyIsZToiJCJ9XX07cmV0dXJuIGEuYz1bbixvLGMscyxkLHUsZS5IQ00se2NOOiJrZXl3b3JkIixiOiJcXGIoKChhYnN0cmFjdHxwcmltaXRpdmUpXFxzKyl0eXBlfChtdXRhYmxlXFxzKyk/c3RydWN0KVxcYiJ9LHtiOi88Oi99XSxpLmM9YS5jLGF9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImNvZmZlZXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIGM9e2tleXdvcmQ6ImluIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIHN1cGVyIHlpZWxkIGltcG9ydCBleHBvcnQgZnJvbSBhcyBkZWZhdWx0IGF3YWl0IHRoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgeWVzIG5vIG9uIG9mZiIsYnVpbHRfaW46Im5wbSByZXF1aXJlIGNvbnNvbGUgcHJpbnQgbW9kdWxlIGdsb2JhbCB3aW5kb3cgZG9jdW1lbnQifSxuPSJbQS1aYS16JF9dWzAtOUEtWmEteiRfXSoiLHI9e2NOOiJzdWJzdCIsYjovI1x7LyxlOi99LyxrOmN9LGk9W2UuQk5NLGUuaW5oZXJpdChlLkNOTSx7c3RhcnRzOntlOiIoXFxzKi8pPyIscjowfX0pLHtjTjoic3RyaW5nIix2Olt7YjovJycnLyxlOi8nJycvLGM6W2UuQkVdfSx7YjovJy8sZTovJy8sYzpbZS5CRV19LHtiOi8iIiIvLGU6LyIiIi8sYzpbZS5CRSxyXX0se2I6LyIvLGU6LyIvLGM6W2UuQkUscl19XX0se2NOOiJyZWdleHAiLHY6W3tiOiIvLy8iLGU6Ii8vLyIsYzpbcixlLkhDTV19LHtiOiIvL1tnaW1dKiIscjowfSx7YjovXC8oPyFbICpdKShcXFwvfC4pKj9cL1tnaW1dKig/PVxXfCQpL31dfSx7YjoiQCIrbn0se3NMOiJqYXZhc2NyaXB0IixlQjohMCxlRTohMCx2Olt7YjoiYGBgIixlOiJgYGAifSx7YjoiYCIsZToiYCJ9XX1dO3IuYz1pO3ZhciBzPWUuaW5oZXJpdChlLlRNLHtiOm59KSx0PSIoXFwoLipcXCkpP1xccypcXEJbLT1dPiIsbz17Y046InBhcmFtcyIsYjoiXFwoW15cXChdIixyQjohMCxjOlt7YjovXCgvLGU6L1wpLyxrOmMsYzpbInNlbGYiXS5jb25jYXQoaSl9XX07cmV0dXJue2FsaWFzZXM6WyJjb2ZmZWUiLCJjc29uIiwiaWNlZCJdLGs6YyxpOi9cL1wqLyxjOmkuY29uY2F0KFtlLkMoIiMjIyIsIiMjIyIpLGUuSENNLHtjTjoiZnVuY3Rpb24iLGI6Il5cXHMqIituKyJcXHMqPVxccyoiK3QsZToiWy09XT4iLHJCOiEwLGM6W3Msb119LHtiOi9bOlwoLD1dXHMqLyxyOjAsYzpbe2NOOiJmdW5jdGlvbiIsYjp0LGU6IlstPV0+IixyQjohMCxjOltvXX1dfSx7Y046ImNsYXNzIixiSzoiY2xhc3MiLGU6IiQiLGk6L1s6PSJcW1xdXS8sYzpbe2JLOiJleHRlbmRzIixlVzohMCxpOi9bOj0iXFtcXV0vLGM6W3NdfSxzXX0se2I6bisiOiIsZToiOiIsckI6ITAsckU6ITAscjowfV0pfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiY3BwIixmdW5jdGlvbih0KXt2YXIgZT17Y046ImtleXdvcmQiLGI6IlxcYlthLXpcXGRfXSpfdFxcYiJ9LHI9e2NOOiJzdHJpbmciLHY6W3tiOicodTg/fFUpP0w/IicsZTonIicsaToiXFxuIixjOlt0LkJFXX0se2I6Jyh1OD98VSk/UiInLGU6JyInLGM6W3QuQkVdfSx7YjoiJ1xcXFw/LiIsZToiJyIsaToiLiJ9XX0scz17Y046Im51bWJlciIsdjpbe2I6IlxcYigwYlswMSddKykifSx7YjoiKC0/KVxcYihbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKSh1fFV8bHxMfHVsfFVMfGZ8RnxifEIpIn0se2I6IigtPykoXFxiMFt4WF1bYS1mQS1GMC05J10rfChcXGJbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKShbZUVdWy0rXT9bXFxkJ10rKT8pIn1dLHI6MH0saT17Y046Im1ldGEiLGI6LyNccypbYS16XStcYi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6ImlmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lIHByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSJ9LGM6W3tiOi9cXFxuLyxyOjB9LHQuaW5oZXJpdChyLHtjTjoibWV0YS1zdHJpbmcifSkse2NOOiJtZXRhLXN0cmluZyIsYjovPFteXG4+XSo+LyxlOi8kLyxpOiJcXG4ifSx0LkNMQ00sdC5DQkNNXX0sYT10LklSKyJcXHMqXFwoIixjPXtrZXl3b3JkOiJpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mIGR5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgZGVjbHR5cGUgbm9leGNlcHQgc3RhdGljX2Fzc2VydCB0aHJlYWRfbG9jYWwgcmVzdHJpY3QgX0Jvb2wgY29tcGxleCBfQ29tcGxleCBfSW1hZ2luYXJ5IGF0b21pY19ib29sIGF0b21pY19jaGFyIGF0b21pY19zY2hhciBhdG9taWNfdWNoYXIgYXRvbWljX3Nob3J0IGF0b21pY191c2hvcnQgYXRvbWljX2ludCBhdG9taWNfdWludCBhdG9taWNfbG9uZyBhdG9taWNfdWxvbmcgYXRvbWljX2xsb25nIGF0b21pY191bGxvbmcgbmV3IHRocm93IHJldHVybiBhbmQgb3Igbm90IixidWlsdF9pbjoic3RkIHN0cmluZyBjaW4gY291dCBjZXJyIGNsb2cgc3RkaW4gc3Rkb3V0IHN0ZGVyciBzdHJpbmdzdHJlYW0gaXN0cmluZ3N0cmVhbSBvc3RyaW5nc3RyZWFtIGF1dG9fcHRyIGRlcXVlIGxpc3QgcXVldWUgc3RhY2sgdmVjdG9yIG1hcCBzZXQgYml0c2V0IG11bHRpc2V0IG11bHRpbWFwIHVub3JkZXJlZF9zZXQgdW5vcmRlcmVkX21hcCB1bm9yZGVyZWRfbXVsdGlzZXQgdW5vcmRlcmVkX211bHRpbWFwIGFycmF5IHNoYXJlZF9wdHIgYWJvcnQgYWJzIGFjb3MgYXNpbiBhdGFuMiBhdGFuIGNhbGxvYyBjZWlsIGNvc2ggY29zIGV4aXQgZXhwIGZhYnMgZmxvb3IgZm1vZCBmcHJpbnRmIGZwdXRzIGZyZWUgZnJleHAgZnNjYW5mIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyBwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuIHZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHIiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbHB0ciBOVUxMIn0sbj1bZSx0LkNMQ00sdC5DQkNNLHMscl07cmV0dXJue2FsaWFzZXM6WyJjIiwiY2MiLCJoIiwiYysrIiwiaCsrIiwiaHBwIl0sazpjLGk6IjwvIixjOm4uY29uY2F0KFtpLHtiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YyxjOlsic2VsZiIsZV19LHtiOnQuSVIrIjo6IixrOmN9LHt2Olt7YjovPS8sZTovOy99LHtiOi9cKC8sZTovXCkvfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIsZTovOy99XSxrOmMsYzpuLmNvbmNhdChbe2I6L1woLyxlOi9cKS8sazpjLGM6bi5jb25jYXQoWyJzZWxmIl0pLHI6MH1dKSxyOjB9LHtjTjoiZnVuY3Rpb24iLGI6IigiK3QuSVIrIltcXComXFxzXSspKyIrYSxyQjohMCxlOi9bezs9XS8sZUU6ITAsazpjLGk6L1teXHdcc1wqJl0vLGM6W3tiOmEsckI6ITAsYzpbdC5UTV0scjowfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOmMscjowLGM6W3QuQ0xDTSx0LkNCQ00scixzLGVdfSx0LkNMQ00sdC5DQkNNLGldfSx7Y046ImNsYXNzIixiSzoiY2xhc3Mgc3RydWN0IixlOi9bezs6XS8sYzpbe2I6LzwvLGU6Lz4vLGM6WyJzZWxmIl19LHQuVE1dfV0pLGV4cG9ydHM6e3ByZXByb2Nlc3NvcjppLHN0cmluZ3M6cixrOmN9fX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicnVieSIsZnVuY3Rpb24oZSl7dmFyIGI9IlthLXpBLVpfXVxcdypbIT89XT98Wy0rfl1cXEB8PDx8Pj58PX58PT09P3w8PT58Wzw+XT0/fFxcKlxcKnxbLS8rJV4mKn5gfF18XFxbXFxdPT8iLHI9e2tleXdvcmQ6ImFuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuIG5leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSByZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3IiLGxpdGVyYWw6InRydWUgZmFsc2UgbmlsIn0sYz17Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9LGE9e2I6IiM8IixlOiI+In0scz1bZS5DKCIjIiwiJCIse2M6W2NdfSksZS5DKCJeXFw9YmVnaW4iLCJeXFw9ZW5kIix7YzpbY10scjoxMH0pLGUuQygiXl9fRU5EX18iLCJcXG4kIildLG49e2NOOiJzdWJzdCIsYjoiI1xceyIsZToifSIsazpyfSx0PXtjTjoic3RyaW5nIixjOltlLkJFLG5dLHY6W3tiOi8nLyxlOi8nL30se2I6LyIvLGU6LyIvfSx7YjovYC8sZTovYC99LHtiOiIlW3FRd1d4XT9cXCgiLGU6IlxcKSJ9LHtiOiIlW3FRd1d4XT9cXFsiLGU6IlxcXSJ9LHtiOiIlW3FRd1d4XT97IixlOiJ9In0se2I6IiVbcVF3V3hdPzwiLGU6Ij4ifSx7YjoiJVtxUXdXeF0/LyIsZToiLyJ9LHtiOiIlW3FRd1d4XT8lIixlOiIlIn0se2I6IiVbcVF3V3hdPy0iLGU6Ii0ifSx7YjoiJVtxUXdXeF0/XFx8IixlOiJcXHwifSx7YjovXEJcPyhcXFxkezEsM318XFx4W0EtRmEtZjAtOV17MSwyfXxcXHVbQS1GYS1mMC05XXs0fXxcXD9cUylcYi99LHtiOi88PCgtPylcdyskLyxlOi9eXHMqXHcrJC99XX0saT17Y046InBhcmFtcyIsYjoiXFwoIixlOiJcXCkiLGVuZHNQYXJlbnQ6ITAsazpyfSxkPVt0LGEse2NOOiJjbGFzcyIsYks6ImNsYXNzIG1vZHVsZSIsZToiJHw7IixpOi89LyxjOltlLmluaGVyaXQoZS5UTSx7YjoiW0EtWmEtel9dXFx3Kig6OlxcdyspKihcXD98XFwhKT8ifSkse2I6IjxcXHMqIixjOlt7YjoiKCIrZS5JUisiOjopPyIrZS5JUn1dfV0uY29uY2F0KHMpfSx7Y046ImZ1bmN0aW9uIixiSzoiZGVmIixlOiIkfDsiLGM6W2UuaW5oZXJpdChlLlRNLHtiOmJ9KSxpXS5jb25jYXQocyl9LHtiOmUuSVIrIjo6In0se2NOOiJzeW1ib2wiLGI6ZS5VSVIrIihcXCF8XFw/KT86IixyOjB9LHtjTjoic3ltYm9sIixiOiI6KD8hXFxzKSIsYzpbdCx7YjpifV0scjowfSx7Y046Im51bWJlciIsYjoiKFxcYjBbMC03X10rKXwoXFxiMHhbMC05YS1mQS1GX10rKXwoXFxiWzEtOV1bMC05X10qKFxcLlswLTlfXSspPyl8WzBfXVxcYiIscjowfSx7YjoiKFxcJFxcVyl8KChcXCR8XFxAXFxAPykoXFx3KykpIn0se2NOOiJwYXJhbXMiLGI6L1x8LyxlOi9cfC8sazpyfSx7YjoiKCIrZS5SU1IrInx1bmxlc3MpXFxzKiIsazoidW5sZXNzIixjOlthLHtjTjoicmVnZXhwIixjOltlLkJFLG5dLGk6L1xuLyx2Olt7YjoiLyIsZToiL1thLXpdKiJ9LHtiOiIlcnsiLGU6In1bYS16XSoifSx7YjoiJXJcXCgiLGU6IlxcKVthLXpdKiJ9LHtiOiIlciEiLGU6IiFbYS16XSoifSx7YjoiJXJcXFsiLGU6IlxcXVthLXpdKiJ9XX1dLmNvbmNhdChzKSxyOjB9XS5jb25jYXQocyk7bi5jPWQsaS5jPWQ7dmFyIGw9Ils+P10+IixvPSJbXFx3I10rXFwoXFx3K1xcKTpcXGQrOlxcZCs+Iix1PSIoXFx3Ky0pP1xcZCtcXC5cXGQrXFwuXFxkKHBcXGQrKT9bXj5dKz4iLHc9W3tiOi9eXHMqPT4vLHN0YXJ0czp7ZToiJCIsYzpkfX0se2NOOiJtZXRhIixiOiJeKCIrbCsifCIrbysifCIrdSsiKSIsc3RhcnRzOntlOiIkIixjOmR9fV07cmV0dXJue2FsaWFzZXM6WyJyYiIsImdlbXNwZWMiLCJwb2RzcGVjIiwidGhvciIsImlyYiJdLGs6cixpOi9cL1wqLyxjOnMuY29uY2F0KHcpLmNvbmNhdChkKX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInlhbWwiLGZ1bmN0aW9uKGUpe3ZhciBiPSJ0cnVlIGZhbHNlIHllcyBubyBudWxsIixhPSJeWyBcXC1dKiIscj0iW2EtekEtWl9dW1xcd1xcLV0qIix0PXtjTjoiYXR0ciIsdjpbe2I6YStyKyI6In0se2I6YSsnIicrcisnIjonfSx7YjphKyInIityKyInOiJ9XX0sYz17Y046InRlbXBsYXRlLXZhcmlhYmxlIix2Olt7Yjoie3siLGU6In19In0se2I6IiV7IixlOiJ9In1dfSxsPXtjTjoic3RyaW5nIixyOjAsdjpbe2I6LycvLGU6LycvfSx7YjovIi8sZTovIi99LHtiOi9cUysvfV0sYzpbZS5CRSxjXX07cmV0dXJue2NJOiEwLGFsaWFzZXM6WyJ5bWwiLCJZQU1MIiwieWFtbCJdLGM6W3Qse2NOOiJtZXRhIixiOiJeLS0tcyokIixyOjEwfSx7Y046InN0cmluZyIsYjoiW1xcfD5dICokIixyRTohMCxjOmwuYyxlOnQudlswXS5ifSx7YjoiPCVbJT0tXT8iLGU6IlslLV0/JT4iLHNMOiJydWJ5IixlQjohMCxlRTohMCxyOjB9LHtjTjoidHlwZSIsYjoiISEiK2UuVUlSfSx7Y046Im1ldGEiLGI6IiYiK2UuVUlSKyIkIn0se2NOOiJtZXRhIixiOiJcXCoiK2UuVUlSKyIkIn0se2NOOiJidWxsZXQiLGI6Il4gKi0iLHI6MH0sZS5IQ00se2JLOmIsazp7bGl0ZXJhbDpifX0sZS5DTk0sbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJjc3MiLGZ1bmN0aW9uKGUpe3ZhciBjPSJbYS16QS1aLV1bYS16QS1aMC05Xy1dKiIsdD17YjovW0EtWlxfXC5cLV0rXHMqOi8sckI6ITAsZToiOyIsZVc6ITAsYzpbe2NOOiJhdHRyaWJ1dGUiLGI6L1xTLyxlOiI6IixlRTohMCxzdGFydHM6e2VXOiEwLGVFOiEwLGM6W3tiOi9bXHctXStcKC8sckI6ITAsYzpbe2NOOiJidWlsdF9pbiIsYjovW1x3LV0rL30se2I6L1woLyxlOi9cKS8sYzpbZS5BU00sZS5RU01dfV19LGUuQ1NTTk0sZS5RU00sZS5BU00sZS5DQkNNLHtjTjoibnVtYmVyIixiOiIjWzAtOUEtRmEtZl0rIn0se2NOOiJtZXRhIixiOiIhaW1wb3J0YW50In1dfX1dfTtyZXR1cm57Y0k6ITAsaTovWz1cL3wnXCRdLyxjOltlLkNCQ00se2NOOiJzZWxlY3Rvci1pZCIsYjovI1tBLVphLXowLTlfLV0rL30se2NOOiJzZWxlY3Rvci1jbGFzcyIsYjovXC5bQS1aYS16MC05Xy1dKy99LHtjTjoic2VsZWN0b3ItYXR0ciIsYjovXFsvLGU6L1xdLyxpOiIkIn0se2NOOiJzZWxlY3Rvci1wc2V1ZG8iLGI6LzooOik/W2EtekEtWjAtOVxfXC1cK1woXCkiJy5dKy99LHtiOiJAKGZvbnQtZmFjZXxwYWdlKSIsbDoiW2Etei1dKyIsazoiZm9udC1mYWNlIHBhZ2UifSx7YjoiQCIsZToiW3s7XSIsaTovOi8sYzpbe2NOOiJrZXl3b3JkIixiOi9cdysvfSx7YjovXHMvLGVXOiEwLGVFOiEwLHI6MCxjOltlLkFTTSxlLlFTTSxlLkNTU05NXX1dfSx7Y046InNlbGVjdG9yLXRhZyIsYjpjLHI6MH0se2I6InsiLGU6In0iLGk6L1xTLyxjOltlLkNCQ00sdF19XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImZvcnRyYW4iLGZ1bmN0aW9uKGUpe3ZhciB0PXtjTjoicGFyYW1zIixiOiJcXCgiLGU6IlxcKSJ9LG49e2xpdGVyYWw6Ii5GYWxzZS4gLlRydWUuIixrZXl3b3JkOiJraW5kIGRvIHdoaWxlIHByaXZhdGUgY2FsbCBpbnRyaW5zaWMgd2hlcmUgZWxzZXdoZXJlIHR5cGUgZW5kdHlwZSBlbmRtb2R1bGUgZW5kc2VsZWN0IGVuZGludGVyZmFjZSBlbmQgZW5kZG8gZW5kaWYgaWYgZm9yYWxsIGVuZGZvcmFsbCBvbmx5IGNvbnRhaW5zIGRlZmF1bHQgcmV0dXJuIHN0b3AgdGhlbiBwdWJsaWMgc3Vicm91dGluZXwxMCBmdW5jdGlvbiBwcm9ncmFtIC5hbmQuIC5vci4gLm5vdC4gLmxlLiAuZXEuIC5nZS4gLmd0LiAubHQuIGdvdG8gc2F2ZSBlbHNlIHVzZSBtb2R1bGUgc2VsZWN0IGNhc2UgYWNjZXNzIGJsYW5rIGRpcmVjdCBleGlzdCBmaWxlIGZtdCBmb3JtIGZvcm1hdHRlZCBpb3N0YXQgbmFtZSBuYW1lZCBuZXh0cmVjIG51bWJlciBvcGVuZWQgcmVjIHJlY2wgc2VxdWVudGlhbCBzdGF0dXMgdW5mb3JtYXR0ZWQgdW5pdCBjb250aW51ZSBmb3JtYXQgcGF1c2UgY3ljbGUgZXhpdCBjX251bGxfY2hhciBjX2FsZXJ0IGNfYmFja3NwYWNlIGNfZm9ybV9mZWVkIGZsdXNoIHdhaXQgZGVjaW1hbCByb3VuZCBpb21zZyBzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGFic3RyYWN0IGV4dGVuZHMgaW1wb3J0IG5vbl9pbnRyaW5zaWMgdmFsdWUgZGVmZXJyZWQgZ2VuZXJpYyBmaW5hbCBlbnVtZXJhdG9yIGNsYXNzIGFzc29jaWF0ZSBiaW5kIGVudW0gY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyIGNfbmV3X2xpbmUgY19jYXJyaWFnZV9yZXR1cm4gY19ob3Jpem9udGFsX3RhYiBjX3ZlcnRpY2FsX3RhYiBpc29fY19iaW5kaW5nIGNfbG9jIGNfZnVubG9jIGNfYXNzb2NpYXRlZCAgY19mX3BvaW50ZXIgY19wdHIgY19mdW5wdHIgaXNvX2ZvcnRyYW5fZW52IGNoYXJhY3Rlcl9zdG9yYWdlX3NpemUgZXJyb3JfdW5pdCBmaWxlX3N0b3JhZ2Vfc2l6ZSBpbnB1dF91bml0IGlvc3RhdF9lbmQgaW9zdGF0X2VvciBudW1lcmljX3N0b3JhZ2Vfc2l6ZSBvdXRwdXRfdW5pdCBjX2ZfcHJvY3BvaW50ZXIgaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSBuZXd1bml0IGNvbnRpZ3VvdXMgcmVjdXJzaXZlIHBhZCBwb3NpdGlvbiBhY3Rpb24gZGVsaW0gcmVhZHdyaXRlIGVvciBhZHZhbmNlIG5tbCBpbnRlcmZhY2UgcHJvY2VkdXJlIG5hbWVsaXN0IGluY2x1ZGUgc2VxdWVuY2UgZWxlbWVudGFsIHB1cmUgaW50ZWdlciByZWFsIGNoYXJhY3RlciBjb21wbGV4IGxvZ2ljYWwgZGltZW5zaW9uIGFsbG9jYXRhYmxlfDEwIHBhcmFtZXRlciBleHRlcm5hbCBpbXBsaWNpdHwxMCBub25lIGRvdWJsZSBwcmVjaXNpb24gYXNzaWduIGludGVudCBvcHRpb25hbCBwb2ludGVyIHRhcmdldCBpbiBvdXQgY29tbW9uIGVxdWl2YWxlbmNlIGRhdGEiLGJ1aWx0X2luOiJhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hIGlxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yIGF0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyIG51bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSJ9O3JldHVybntjSTohMCxhbGlhc2VzOlsiZjkwIiwiZjk1Il0sazpuLGk6L1wvXCovLGM6W2UuaW5oZXJpdChlLkFTTSx7Y046InN0cmluZyIscjowfSksZS5pbmhlcml0KGUuUVNNLHtjTjoic3RyaW5nIixyOjB9KSx7Y046ImZ1bmN0aW9uIixiSzoic3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtIixpOiJbJHs9XFxuXSIsYzpbZS5VVE0sdF19LGUuQygiISIsIiQiLHtyOjB9KSx7Y046Im51bWJlciIsYjoiKD89XFxifFxcK3xcXC18XFwuKSg/PVxcLlxcZHxcXGQpKD86XFxkKyk/KD86XFwuP1xcZCopKD86W2RlXVsrLV0/XFxkKyk/XFxiXFwuPyIscjowfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJhd2siLGZ1bmN0aW9uKGUpe3ZhciByPXtjTjoidmFyaWFibGUiLHY6W3tiOi9cJFtcd1xkI0BdW1x3XGRfXSovfSx7YjovXCRceyguKj8pfS99XX0sYj0iQkVHSU4gRU5EIGlmIGVsc2Ugd2hpbGUgZG8gZm9yIGluIGJyZWFrIGNvbnRpbnVlIGRlbGV0ZSBuZXh0IG5leHRmaWxlIGZ1bmN0aW9uIGZ1bmMgZXhpdHwxMCIsbj17Y046InN0cmluZyIsYzpbZS5CRV0sdjpbe2I6Lyh1fGIpP3I/JycnLyxlOi8nJycvLHI6MTB9LHtiOi8odXxiKT9yPyIiIi8sZTovIiIiLyxyOjEwfSx7YjovKHV8cnx1ciknLyxlOi8nLyxyOjEwfSx7YjovKHV8cnx1cikiLyxlOi8iLyxyOjEwfSx7YjovKGJ8YnIpJy8sZTovJy99LHtiOi8oYnxicikiLyxlOi8iL30sZS5BU00sZS5RU01dfTtyZXR1cm57azp7a2V5d29yZDpifSxjOltyLG4sZS5STSxlLkhDTSxlLk5NXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoIm1ha2VmaWxlIixmdW5jdGlvbihlKXt2YXIgaT17Y046InZhcmlhYmxlIix2Olt7YjoiXFwkXFwoIitlLlVJUisiXFwpIixjOltlLkJFXX0se2I6L1wkW0AlPD9cXlwrXCpdL31dfSxyPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLGldfSxhPXtjTjoidmFyaWFibGUiLGI6L1wkXChbXHctXStccy8sZTovXCkvLGs6e2J1aWx0X2luOiJzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgd29yZCB3b3JkbGlzdCBmaXJzdHdvcmQgbGFzdHdvcmQgZGlyIG5vdGRpciBzdWZmaXggYmFzZW5hbWUgYWRkc3VmZml4IGFkZHByZWZpeCBqb2luIHdpbGRjYXJkIHJlYWxwYXRoIGFic3BhdGggZXJyb3Igd2FybmluZyBzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlIn0sYzpbaV19LG49e2I6Il4iK2UuVUlSKyJcXHMqWzorP10/PSIsaToiXFxuIixyQjohMCxjOlt7YjoiXiIrZS5VSVIsZToiWzorP10/PSIsZUU6ITB9XX0sdD17Y046Im1ldGEiLGI6L15cLlBIT05ZOi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6Ii5QSE9OWSJ9LGw6L1tcLlx3XSsvfSxsPXtjTjoic2VjdGlvbiIsYjovXlteXHNdKzovLGU6LyQvLGM6W2ldfTtyZXR1cm57YWxpYXNlczpbIm1rIiwibWFrIl0sazoiZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCIsbDovW1x3LV0rLyxjOltlLkhDTSxpLHIsYSxuLHQsbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJqYXZhIixmdW5jdGlvbihlKXt2YXIgYT0iW8OALcq4YS16QS1aXyRdW8OALcq4YS16QS1aXyQwLTldKiIsdD1hKyIoPCIrYSsiKFxccyosXFxzKiIrYSsiKSo+KT8iLHI9ImZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBjYXRjaCBpbnN0YW5jZW9mIGJ5dGUgc3VwZXIgdm9sYXRpbGUgY2FzZSBhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUgbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8iLHM9IlxcYigwW2JCXShbMDFdK1swMV9dK1swMV0rfFswMV0rKXwwW3hYXShbYS1mQS1GMC05XStbYS1mQS1GMC05X10rW2EtZkEtRjAtOV0rfFthLWZBLUYwLTldKyl8KChbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykoXFwuKFtcXGRdK1tcXGRfXStbXFxkXSt8W1xcZF0rKSk/fFxcLihbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykpKFtlRV1bLStdP1xcZCspPylbbExmRl0/IixjPXtjTjoibnVtYmVyIixiOnMscjowfTtyZXR1cm57YWxpYXNlczpbImpzcCJdLGs6cixpOi88XC98Iy8sYzpbZS5DKCIvXFwqXFwqIiwiXFwqLyIse3I6MCxjOlt7YjovXHcrQC8scjowfSx7Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9XX0pLGUuQ0xDTSxlLkNCQ00sZS5BU00sZS5RU00se2NOOiJjbGFzcyIsYks6ImNsYXNzIGludGVyZmFjZSIsZTovW3s7PV0vLGVFOiEwLGs6ImNsYXNzIGludGVyZmFjZSIsaTovWzoiXFtcXV0vLGM6W3tiSzoiZXh0ZW5kcyBpbXBsZW1lbnRzIn0sZS5VVE1dfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIscjowfSx7Y046ImZ1bmN0aW9uIixiOiIoIit0KyJcXHMrKSsiK2UuVUlSKyJcXHMqXFwoIixyQjohMCxlOi9bezs9XS8sZUU6ITAsazpyLGM6W3tiOmUuVUlSKyJcXHMqXFwoIixyQjohMCxyOjAsYzpbZS5VVE1dfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnIscjowLGM6W2UuQVNNLGUuUVNNLGUuQ05NLGUuQ0JDTV19LGUuQ0xDTSxlLkNCQ01dfSxjLHtjTjoibWV0YSIsYjoiQFtBLVphLXpdKyJ9XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInN0YW4iLGZ1bmN0aW9uKGUpe3JldHVybntjOltlLkhDTSxlLkNMQ00sZS5DQkNNLHtiOmUuVUlSLGw6ZS5VSVIsazp7bmFtZToiZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UiLHN5bWJvbDoiYmVybm91bGxpIGJlcm5vdWxsaV9sb2dpdCBiaW5vbWlhbCBiaW5vbWlhbF9sb2dpdCBiZXRhX2Jpbm9taWFsIGh5cGVyZ2VvbWV0cmljIGNhdGVnb3JpY2FsIGNhdGVnb3JpY2FsX2xvZ2l0IG9yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yIG5lZ19iaW5vbWlhbF8yX2xvZyBwb2lzc29uIHBvaXNzb25fbG9nIG11bHRpbm9taWFsIG5vcm1hbCBleHBfbW9kX25vcm1hbCBza2V3X25vcm1hbCBzdHVkZW50X3QgY2F1Y2h5IGRvdWJsZV9leHBvbmVudGlhbCBsb2dpc3RpYyBndW1iZWwgbG9nbm9ybWFsIGNoaV9zcXVhcmUgaW52X2NoaV9zcXVhcmUgc2NhbGVkX2ludl9jaGlfc3F1YXJlIGV4cG9uZW50aWFsIGludl9nYW1tYSB3ZWlidWxsIGZyZWNoZXQgcmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtIG11bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgbXVsdGlfZ3BfY2hvbGVza3kgbXVsdGlfc3R1ZGVudF90IGdhdXNzaWFuX2RsbV9vYnMgZGlyaWNobGV0IGxral9jb3JyIGxral9jb3JyX2Nob2xlc2t5IHdpc2hhcnQgaW52X3dpc2hhcnQiLCJzZWxlY3Rvci10YWciOiJpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgcm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiBjb3JyX21hdHJpeCBjb3ZfbWF0cml4Iix0aXRsZToiZnVuY3Rpb25zIG1vZGVsIGRhdGEgcGFyYW1ldGVycyBxdWFudGl0aWVzIHRyYW5zZm9ybWVkIGdlbmVyYXRlZCIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSJ9LHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP0xcXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCtcXC4oPyFcXGQpKD86aVxcYik/IixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86XFwuXFxkKik/KD86W2VFXVsrXFwtXT9cXGQqKT9pP1xcYiIscjowfSx7Y046Im51bWJlciIsYjoiXFwuXFxkKyg/OltlRV1bK1xcLV0/XFxkKik/aT9cXGIiLHI6MH1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiamF2YXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIHI9IltBLVphLXokX11bMC05QS1aYS16JF9dKiIsdD17a2V5d29yZDoiaW4gb2YgaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgbGV0IHlpZWxkIGNvbnN0IGV4cG9ydCBzdXBlciBkZWJ1Z2dlciBhcyBhc3luYyBhd2FpdCBzdGF0aWMgaW1wb3J0IGZyb20gYXMiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5IixidWlsdF9pbjoiZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yIFR5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlIG1vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBTeW1ib2wgU2V0IE1hcCBXZWFrU2V0IFdlYWtNYXAgUHJveHkgUmVmbGVjdCBQcm9taXNlIn0sYT17Y046Im51bWJlciIsdjpbe2I6IlxcYigwW2JCXVswMV0rKSJ9LHtiOiJcXGIoMFtvT11bMC03XSspIn0se2I6ZS5DTlJ9XSxyOjB9LG49e2NOOiJzdWJzdCIsYjoiXFwkXFx7IixlOiJcXH0iLGs6dCxjOltdfSxjPXtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFLG5dfTtuLmM9W2UuQVNNLGUuUVNNLGMsYSxlLlJNXTt2YXIgcz1uLmMuY29uY2F0KFtlLkNCQ00sZS5DTENNXSk7cmV0dXJue2FsaWFzZXM6WyJqcyIsImpzeCJdLGs6dCxjOlt7Y046Im1ldGEiLHI6MTAsYjovXlxzKlsnIl11c2UgKHN0cmljdHxhc20pWyciXS99LHtjTjoibWV0YSIsYjovXiMhLyxlOi8kL30sZS5BU00sZS5RU00sYyxlLkNMQ00sZS5DQkNNLGEse2I6L1t7LF1ccyovLHI6MCxjOlt7YjpyKyJcXHMqOiIsckI6ITAscjowLGM6W3tjTjoiYXR0ciIsYjpyLHI6MH1dfV19LHtiOiIoIitlLlJTUisifFxcYihjYXNlfHJldHVybnx0aHJvdylcXGIpXFxzKiIsazoicmV0dXJuIHRocm93IGNhc2UiLGM6W2UuQ0xDTSxlLkNCQ00sZS5STSx7Y046ImZ1bmN0aW9uIixiOiIoXFwoLio/XFwpfCIrcisiKVxccyo9PiIsckI6ITAsZToiXFxzKj0+IixjOlt7Y046InBhcmFtcyIsdjpbe2I6cn0se2I6L1woXHMqXCkvfSx7YjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxrOnQsYzpzfV19XX0se2I6LzwvLGU6LyhcL1x3K3xcdytcLyk+LyxzTDoieG1sIixjOlt7YjovPFx3K1xzKlwvPi8sc2tpcDohMH0se2I6LzxcdysvLGU6LyhcL1x3K3xcdytcLyk+Lyxza2lwOiEwLGM6W3tiOi88XHcrXHMqXC8+Lyxza2lwOiEwfSwic2VsZiJdfV19XSxyOjB9LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jdGlvbiIsZTovXHsvLGVFOiEwLGM6W2UuaW5oZXJpdChlLlRNLHtiOnJ9KSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxjOnN9XSxpOi9cW3wlL30se2I6L1wkWyguXS99LGUuTUVUSE9EX0dVQVJELHtjTjoiY2xhc3MiLGJLOiJjbGFzcyIsZTovW3s7PV0vLGVFOiEwLGk6L1s6IlxbXF1dLyxjOlt7Yks6ImV4dGVuZHMifSxlLlVUTV19LHtiSzoiY29uc3RydWN0b3IiLGU6L1x7LyxlRTohMH1dLGk6LyMoPyEhKS99fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJ0ZXgiLGZ1bmN0aW9uKGMpe3ZhciBlPXtjTjoidGFnIixiOi9cXC8scjowLGM6W3tjTjoibmFtZSIsdjpbe2I6L1thLXpBLVrQsC3Rj9CQLdGPXStbKl0/L30se2I6L1teYS16QS1a0LAt0Y/QkC3RjzAtOV0vfV0sc3RhcnRzOntlVzohMCxyOjAsYzpbe2NOOiJzdHJpbmciLHY6W3tiOi9cWy8sZTovXF0vfSx7YjovXHsvLGU6L1x9L31dfSx7YjovXHMqPVxzKi8sZVc6ITAscjowLGM6W3tjTjoibnVtYmVyIixiOi8tP1xkKlwuP1xkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk/L31dfV19fV19O3JldHVybntjOltlLHtjTjoiZm9ybXVsYSIsYzpbZV0scjowLHY6W3tiOi9cJFwkLyxlOi9cJFwkL30se2I6L1wkLyxlOi9cJC99XX0sYy5DKCIlIiwiJCIse3I6MH0pXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInhtbCIsZnVuY3Rpb24ocyl7dmFyIGU9IltBLVphLXowLTlcXC5fOi1dKyIsdD17ZVc6ITAsaTovPC8scjowLGM6W3tjTjoiYXR0ciIsYjplLHI6MH0se2I6Lz1ccyovLHI6MCxjOlt7Y046InN0cmluZyIsZW5kc1BhcmVudDohMCx2Olt7YjovIi8sZTovIi99LHtiOi8nLyxlOi8nL30se2I6L1teXHMiJz08PmBdKy99XX1dfV19O3JldHVybnthbGlhc2VzOlsiaHRtbCIsInhodG1sIiwicnNzIiwiYXRvbSIsInhqYiIsInhzZCIsInhzbCIsInBsaXN0Il0sY0k6ITAsYzpbe2NOOiJtZXRhIixiOiI8IURPQ1RZUEUiLGU6Ij4iLHI6MTAsYzpbe2I6IlxcWyIsZToiXFxdIn1dfSxzLkMoIjwhLS0iLCItLT4iLHtyOjEwfSkse2I6IjxcXCFcXFtDREFUQVxcWyIsZToiXFxdXFxdPiIscjoxMH0se2I6LzxcPyhwaHApPy8sZTovXD8+LyxzTDoicGhwIixjOlt7YjoiL1xcKiIsZToiXFwqLyIsc2tpcDohMH1dfSx7Y046InRhZyIsYjoiPHN0eWxlKD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InN0eWxlIn0sYzpbdF0sc3RhcnRzOntlOiI8L3N0eWxlPiIsckU6ITAsc0w6WyJjc3MiLCJ4bWwiXX19LHtjTjoidGFnIixiOiI8c2NyaXB0KD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InNjcmlwdCJ9LGM6W3RdLHN0YXJ0czp7ZToiPC9zY3JpcHQ+IixyRTohMCxzTDpbImFjdGlvbnNjcmlwdCIsImphdmFzY3JpcHQiLCJoYW5kbGViYXJzIiwieG1sIl19fSx7Y046Im1ldGEiLHY6W3tiOi88XD94bWwvLGU6L1w/Pi8scjoxMH0se2I6LzxcP1x3Ky8sZTovXD8+L31dfSx7Y046InRhZyIsYjoiPC8/IixlOiIvPz4iLGM6W3tjTjoibmFtZSIsYjovW15cLz48XHNdKy8scjowfSx0XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgibWFya2Rvd24iLGZ1bmN0aW9uKGUpe3JldHVybnthbGlhc2VzOlsibWQiLCJta2Rvd24iLCJta2QiXSxjOlt7Y046InNlY3Rpb24iLHY6W3tiOiJeI3sxLDZ9IixlOiIkIn0se2I6Il4uKz9cXG5bPS1dezIsfSQifV19LHtiOiI8IixlOiI+IixzTDoieG1sIixyOjB9LHtjTjoiYnVsbGV0IixiOiJeKFsqKy1dfChcXGQrXFwuKSlcXHMrIn0se2NOOiJzdHJvbmciLGI6IlsqX117Mn0uKz9bKl9dezJ9In0se2NOOiJlbXBoYXNpcyIsdjpbe2I6IlxcKi4rP1xcKiJ9LHtiOiJfLis/XyIscjowfV19LHtjTjoicXVvdGUiLGI6Il4+XFxzKyIsZToiJCJ9LHtjTjoiY29kZSIsdjpbe2I6Il5gYGB3KnMqJCIsZToiXmBgYHMqJCJ9LHtiOiJgLis/YCJ9LHtiOiJeKCB7NH18CSkiLGU6IiQiLHI6MH1dfSx7YjoiXlstXFwqXXszLH0iLGU6IiQifSx7YjoiXFxbLis/XFxdW1xcKFxcW10uKj9bXFwpXFxdXSIsckI6ITAsYzpbe2NOOiJzdHJpbmciLGI6IlxcWyIsZToiXFxdIixlQjohMCxyRTohMCxyOjB9LHtjTjoibGluayIsYjoiXFxdXFwoIixlOiJcXCkiLGVCOiEwLGVFOiEwfSx7Y046InN5bWJvbCIsYjoiXFxdXFxbIixlOiJcXF0iLGVCOiEwLGVFOiEwfV0scjoxMH0se2I6L15cW1teXG5dK1xdOi8sckI6ITAsYzpbe2NOOiJzeW1ib2wiLGI6L1xbLyxlOi9cXS8sZUI6ITAsZUU6ITB9LHtjTjoibGluayIsYjovOlxzKi8sZTovJC8sZUI6ITB9XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianNvbiIsZnVuY3Rpb24oZSl7dmFyIGk9e2xpdGVyYWw6InRydWUgZmFsc2UgbnVsbCJ9LG49W2UuUVNNLGUuQ05NXSxyPXtlOiIsIixlVzohMCxlRTohMCxjOm4sazppfSx0PXtiOiJ7IixlOiJ9IixjOlt7Y046ImF0dHIiLGI6LyIvLGU6LyIvLGM6W2UuQkVdLGk6IlxcbiJ9LGUuaW5oZXJpdChyLHtiOi86L30pXSxpOiJcXFMifSxjPXtiOiJcXFsiLGU6IlxcXSIsYzpbZS5pbmhlcml0KHIpXSxpOiJcXFMifTtyZXR1cm4gbi5zcGxpY2Uobi5sZW5ndGgsMCx0LGMpLHtjOm4sazppLGk6IlxcUyJ9fSk7"></script>
-<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbChjb2RlKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCFlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgICAgdHJ5IHsKICAgICAgICByZXN1bHQgPSBldmFsKCIoIiArIGNvZGUgKyAiKSIpOwogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICBmdW5jdGlvbiBpbml0U2l6aW5nKGVsKSB7CiAgICB2YXIgc2l6aW5nID0gc2l6aW5nUG9saWN5KGVsKTsKICAgIGlmICghc2l6aW5nKQogICAgICByZXR1cm47CgogICAgdmFyIGNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sd2lkZ2V0X2NvbnRhaW5lciIpOwogICAgaWYgKCFjZWwpCiAgICAgIHJldHVybjsKCiAgICBpZiAodHlwZW9mKHNpemluZy5wYWRkaW5nKSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMCI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZyA9IHBhZGRpbmdUb0Nzcyh1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKSk7CiAgICB9CgogICAgaWYgKHNpemluZy5maWxsKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgaWYgKGNlbCkgewogICAgICAgIGNlbC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICAgICAgdmFyIHBhZCA9IHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpOwogICAgICAgIGNlbC5zdHlsZS50b3AgPSBwYWQudG9wICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUucmlnaHQgPSBwYWQucmlnaHQgKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5ib3R0b20gPSBwYWQuYm90dG9tICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUubGVmdCA9IHBhZC5sZWZ0ICsgInB4IjsKICAgICAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwub2Zmc2V0SGVpZ2h0OyB9CiAgICAgIH07CgogICAgfSBlbHNlIHsKICAgICAgZWwuc3R5bGUud2lkdGggPSBweChzaXppbmcud2lkdGgpOwogICAgICBlbC5zdHlsZS5oZWlnaHQgPSBweChzaXppbmcuaGVpZ2h0KTsKCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0V2lkdGg7IH0sCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwogICAgfQogIH0KCiAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIG1ldGhvZHMKICB2YXIgZGVmYXVsdHMgPSB7CiAgICBmaW5kOiBmdW5jdGlvbihzY29wZSkgewogICAgICByZXR1cm4gcXVlcnlTZWxlY3RvckFsbChzY29wZSwgIi4iICsgdGhpcy5uYW1lKTsKICAgIH0sCiAgICByZW5kZXJFcnJvcjogZnVuY3Rpb24oZWwsIGVycikgewogICAgICB2YXIgJGVsID0gJChlbCk7CgogICAgICB0aGlzLmNsZWFyRXJyb3IoZWwpOwoKICAgICAgLy8gQWRkIGFsbCB0aGVzZSBlcnJvciBjbGFzc2VzLCBhcyBTaGlueSBkb2VzCiAgICAgIHZhciBlcnJDbGFzcyA9ICJzaGlueS1vdXRwdXQtZXJyb3IiOwogICAgICBpZiAoZXJyLnR5cGUgIT09IG51bGwpIHsKICAgICAgICAvLyB1c2UgdGhlIGNsYXNzZXMgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiBhcyBDU1MgY2xhc3MgbmFtZXMKICAgICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiAiICsgJC5tYXAoYXNBcnJheShlcnIudHlwZSksIGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgIHJldHVybiBlcnJDbGFzcyArICItIiArIHR5cGU7CiAgICAgICAgfSkuam9pbigiICIpOwogICAgICB9CiAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiIGh0bWx3aWRnZXRzLWVycm9yIjsKCiAgICAgIC8vIElzIGVsIGlubGluZSBvciBibG9jaz8gSWYgaW5saW5lIG9yIGlubGluZS1ibG9jaywganVzdCBkaXNwbGF5Om5vbmUgaXQKICAgICAgLy8gYW5kIGFkZCBhbiBpbmxpbmUgZXJyb3IuCiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmNzcygiZGlzcGxheSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBkaXNwbGF5KTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgICRlbC5oaWRlKCk7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yU3BhbiA9ICQoIjxzcGFuPiIpLmFkZENsYXNzKGVyckNsYXNzKTsKICAgICAgICAgIGVycm9yU3Bhbi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvclNwYW4pOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKSB7CiAgICAgICAgLy8gSWYgYmxvY2ssIGFkZCBhbiBlcnJvciBqdXN0IGFmdGVyIHRoZSBlbCwgc2V0IHZpc2liaWxpdHk6bm9uZSBvbiB0aGUKICAgICAgICAvLyBlbCwgYW5kIHBvc2l0aW9uIHRoZSBlcnJvciB0byBiZSBvbiB0b3Agb2YgdGhlIGVsLgogICAgICAgIC8vIE1hcmsgaXQgd2l0aCBhIHVuaXF1ZSBJRCBhbmQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgbGF0ZXIuCiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JEaXYgPSAkKCI8ZGl2PiIpLmFkZENsYXNzKGVyckNsYXNzKS5jc3MoInBvc2l0aW9uIiwgImFic29sdXRlIikKICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgLy8gc2V0dGluZyB3aWR0aCBjYW4gcHVzaCBvdXQgdGhlIHBhZ2Ugc2l6ZSwgZm9yY2luZyBvdGhlcndpc2UKICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgc2Nyb2xsYmFycyB0byBhcHBlYXIgYW5kIG1ha2luZyBpdCBpbXBvc3NpYmxlIGZvcgogICAgICAgICAgICAvLyB0aGUgZWxlbWVudCB0byBzaHJpbms7IHNvIHVzZSBtYXgtd2lkdGggaW5zdGVhZAogICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgZXJyb3JEaXYudGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JEaXYpOwoKICAgICAgICAgIC8vIFJlYWxseSBkdW1iIHdheSB0byBrZWVwIHRoZSBzaXplL3Bvc2l0aW9uIG9mIHRoZSBlcnJvciBpbiBzeW5jIHdpdGgKICAgICAgICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBhcyB0aGUgd2luZG93IGlzIHJlc2l6ZWQgb3Igd2hhdGV2ZXIuCiAgICAgICAgICB2YXIgaW50SWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCFlcnJvckRpdlswXS5wYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRJZCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVycm9yRGl2CiAgICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgY2xlYXJFcnJvcjogZnVuY3Rpb24oZWwpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwogICAgICB2YXIgZGlzcGxheSA9ICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBudWxsKTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgIGlmIChkaXNwbGF5KQogICAgICAgICAgJGVsLmNzcygiZGlzcGxheSIsIGRpc3BsYXkpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIil7CiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJpbmhlcml0Iik7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfQogICAgfSwKICAgIHNpemluZzoge30KICB9OwoKICAvLyBDYWxsZWQgYnkgd2lkZ2V0IGJpbmRpbmdzIHRvIHJlZ2lzdGVyIGEgbmV3IHR5cGUgb2Ygd2lkZ2V0LiBUaGUgZGVmaW5pdGlvbgogIC8vIG9iamVjdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgLy8gLSBuYW1lIChyZXF1aXJlZCkgLSBBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBiaW5kaW5nIG5hbWUsIHdoaWNoIHdpbGwgYmUKICAvLyAgIHVzZWQgYnkgZGVmYXVsdCBhcyB0aGUgQ1NTIGNsYXNzbmFtZSB0byBsb29rIGZvci4KICAvLyAtIGluaXRpYWxpemUgKG9wdGlvbmFsKSAtIEEgZnVuY3Rpb24oZWwpIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIHdpZGdldCBlbGVtZW50OyBpZiBhIHZhbHVlIGlzIHJldHVybmVkLCBpdCB3aWxsIGJlIHBhc3NlZCBhcyB0aGUgdGhpcmQKICAvLyAgIHZhbHVlIHRvIHJlbmRlclZhbHVlLgogIC8vIC0gcmVuZGVyVmFsdWUgKHJlcXVpcmVkKSAtIEEgZnVuY3Rpb24oZWwsIGRhdGEsIGluaXRWYWx1ZSkgdGhhdCB3aWxsIGJlCiAgLy8gICBjYWxsZWQgd2l0aCBkYXRhLiBTdGF0aWMgY29udGV4dHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgZWxlbWVudDsgU2hpbnkgYXBwcyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHBlcgogIC8vICAgZWxlbWVudCwgYXMgdGhlIGRhdGEgY2hhbmdlcy4KICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0ID0gZnVuY3Rpb24oZGVmaW5pdGlvbikgewogICAgaWYgKCFkZWZpbml0aW9uLm5hbWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgfQogICAgaWYgKCFkZWZpbml0aW9uLnR5cGUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgdHlwZSIpOwogICAgfQogICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvdXRwdXQgd2lkZ2V0cwogICAgaWYgKGRlZmluaXRpb24udHlwZSAhPT0gIm91dHB1dCIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgd2lkZ2V0IHR5cGUgJyIgKyBkZWZpbml0aW9uLnR5cGUgKyAiJyIpOwogICAgfQogICAgLy8gVE9ETzogVmVyaWZ5IHRoYXQgLm5hbWUgaXMgYSB2YWxpZCBDU1MgY2xhc3NuYW1lCgogICAgLy8gU3VwcG9ydCBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMuIE9sZC1zdHlsZSBjbGFzcy1ib3VuZAogICAgLy8gZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0ICJvYmplY3QiIHBlciB3aWRnZXQgcGVyIHR5cGUvY2xhc3Mgb2YKICAgIC8vIHdpZGdldDsgdGhlIHJlbmRlclZhbHVlIGFuZCByZXNpemUgbWV0aG9kcyBvbiBzdWNoIHdpZGdldCBvYmplY3RzCiAgICAvLyB0YWtlIGVsIGFuZCBpbnN0YW5jZSBhcmd1bWVudHMsIGJlY2F1c2UgdGhlIHdpZGdldCBvYmplY3QgY2FuJ3QKICAgIC8vIHN0b3JlIHRoZW0uIE5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQKICAgIC8vIG9iamVjdCBwZXIgd2lkZ2V0IGluc3RhbmNlOyB0aGUgZGVmaW5pdGlvbiB0aGF0J3MgcGFzc2VkIGluIGRvZXNuJ3QKICAgIC8vIHByb3ZpZGUgcmVuZGVyVmFsdWUgb3IgcmVzaXplIG1ldGhvZHMgYXQgYWxsLCBqdXN0IHRoZSBzaW5nbGUgbWV0aG9kCiAgICAvLyAgIGZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpCiAgICAvLyB3aGljaCByZXR1cm5zIGFuIG9iamVjdCB0aGF0IGhhcyByZW5kZXJWYWx1ZSh4KSBhbmQgcmVzaXplKHcsIGgpLgogICAgLy8gVGhpcyBlbmFibGVzIGEgZmFyIG1vcmUgbmF0dXJhbCBwcm9ncmFtbWluZyBzdHlsZSBmb3IgdGhlIHdpZGdldAogICAgLy8gYXV0aG9yLCB3aG8gY2FuIHN0b3JlIHBlci1pbnN0YW5jZSBzdGF0ZSB1c2luZyBlaXRoZXIgT08tc3R5bGUKICAgIC8vIGluc3RhbmNlIGZpZWxkcyBvciBmdW5jdGlvbmFsLXN0eWxlIGNsb3N1cmUgdmFyaWFibGVzIChJIGd1ZXNzIHRoaXMKICAgIC8vIGlzIGluIGNvbnRyYXN0IHRvIHdoYXQgY2FuIG9ubHkgYmUgY2FsbGVkIEMtc3R5bGUgcHNldWRvLU9PIHdoaWNoIGlzCiAgICAvLyB3aGF0IHdlIHJlcXVpcmVkIGJlZm9yZSkuCiAgICBpZiAoZGVmaW5pdGlvbi5mYWN0b3J5KSB7CiAgICAgIGRlZmluaXRpb24gPSBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZpbml0aW9uKTsKICAgIH0KCiAgICBpZiAoIWRlZmluaXRpb24ucmVuZGVyVmFsdWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgcmVuZGVyVmFsdWUgZnVuY3Rpb24iKTsKICAgIH0KCiAgICAvLyBGb3Igc3RhdGljIHJlbmRlcmluZyAobm9uLVNoaW55KSwgdXNlIGEgc2ltcGxlIHdpZGdldCByZWdpc3RyYXRpb24KICAgIC8vIHNjaGVtZS4gV2UgYWxzbyB1c2UgdGhpcyBzY2hlbWUgZm9yIFNoaW55IGFwcHMvZG9jdW1lbnRzIHRoYXQgYWxzbwogICAgLy8gY29udGFpbiBzdGF0aWMgd2lkZ2V0cy4KICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICB2YXIgc3RhdGljQmluZGluZyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwogICAgb3ZlcnJpZGVNZXRob2Qoc3RhdGljQmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBzdXBlcmZ1bmMoc2NvcGUpOwogICAgICAgIC8vIEZpbHRlciBvdXQgU2hpbnkgb3V0cHV0cywgd2Ugb25seSB3YW50IHRoZSBzdGF0aWMga2luZAogICAgICAgIHJldHVybiBmaWx0ZXJCeUNsYXNzKHJlc3VsdHMsICJodG1sLXdpZGdldC1vdXRwdXQiLCBmYWxzZSk7CiAgICAgIH07CiAgICB9KTsKICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzLnB1c2goc3RhdGljQmluZGluZyk7CgogICAgaWYgKHNoaW55TW9kZSkgewogICAgICAvLyBTaGlueSBpcyBydW5uaW5nLiBSZWdpc3RlciB0aGUgZGVmaW5pdGlvbiB3aXRoIGFuIG91dHB1dCBiaW5kaW5nLgogICAgICAvLyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgd2lsbCBub3QgYmUgdGhlIG91dHB1dCBiaW5kaW5nLCBpbnN0ZWFkCiAgICAgIC8vIHdlIHdpbGwgbWFrZSBhbiBvdXRwdXQgYmluZGluZyBvYmplY3QgdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlCiAgICAgIC8vIGRlZmluaXRpb24uIFRoaXMgaXMgYmVjYXVzZSB3ZSBmb29saXNobHkgdXNlZCB0aGUgc2FtZSBtZXRob2QKICAgICAgLy8gbmFtZSAocmVuZGVyVmFsdWUpIGZvciBodG1sd2lkZ2V0cyBkZWZpbml0aW9uIGFuZCBTaGlueSBiaW5kaW5ncwogICAgICAvLyBidXQgdGhleSBhY3R1YWxseSBoYXZlIHF1aXRlIGRpZmZlcmVudCBzZW1hbnRpY3MgKHRoZSBTaGlueQogICAgICAvLyBiaW5kaW5ncyByZWNlaXZlIGRhdGEgdGhhdCBpbmNsdWRlcyBsb3RzIG9mIG1ldGFkYXRhIHRoYXQgaXQKICAgICAgLy8gc3RyaXBzIG9mZiBiZWZvcmUgY2FsbGluZyBodG1sd2lkZ2V0cyByZW5kZXJWYWx1ZSkuIFdlIGNhbid0CiAgICAgIC8vIGp1c3QgaWdub3JlIHRoZSBkaWZmZXJlbmNlIGJlY2F1c2UgaW4gc29tZSB3aWRnZXRzIGl0J3MgaGVscGZ1bAogICAgICAvLyB0byBjYWxsIHRoaXMucmVuZGVyVmFsdWUoKSBmcm9tIGluc2lkZSBvZiByZXNpemUoKSwgYW5kIGlmCiAgICAgIC8vIHdlJ3JlIG5vdCBkZWxlZ2F0aW5nLCB0aGVuIHRoYXQgY2FsbCB3aWxsIGdvIHRvIHRoZSBTaGlueQogICAgICAvLyB2ZXJzaW9uIGluc3RlYWQgb2YgdGhlIGh0bWx3aWRnZXRzIHZlcnNpb24uCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyB3aXRoIGRlZmluaXRpb24sIHdpdGhvdXQgbXV0YXRpbmcgZWl0aGVyLgogICAgICB2YXIgYmluZGluZ0RlZiA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwoKICAgICAgLy8gVGhpcyBvYmplY3Qgd2lsbCBiZSBvdXIgYWN0dWFsIFNoaW55IGJpbmRpbmcuCiAgICAgIHZhciBzaGlueUJpbmRpbmcgPSBuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpOwoKICAgICAgLy8gV2l0aCBhIGZldyBleGNlcHRpb25zLCB3ZSdsbCB3YW50IHRvIHNpbXBseSB1c2UgdGhlIGJpbmRpbmdEZWYncwogICAgICAvLyB2ZXJzaW9uIG9mIG1ldGhvZHMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCiAgICAgIC8vIFNoaW55J3MgZGVmYXVsdHMuIE5PVEU6IElmIFNoaW55J3Mgb3V0cHV0IGJpbmRpbmdzIGdhaW4gYWRkaXRpb25hbAogICAgICAvLyBtZXRob2RzIGluIHRoZSBmdXR1cmUsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgb3ZlcnJpZGVhYmxlIGJ5CiAgICAgIC8vIEhUTUxXaWRnZXQgYmluZGluZyBkZWZpbml0aW9ucywgdGhlbiB3ZSdsbCBuZWVkIHRvIGFkZCB0aGVtIHRvIHRoaXMKICAgICAgLy8gbGlzdC4KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiZ2V0SWQiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUNoYW5nZSIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAicmVuZGVyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiY2xlYXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJzaG93UHJvZ3Jlc3MiKTsKCiAgICAgIC8vIFRoZSBmaW5kLCByZW5kZXJWYWx1ZSwgYW5kIHJlc2l6ZSBhcmUgaGFuZGxlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB3ZQogICAgICAvLyB3YW50IHRvIGFjdHVhbGx5IGRlY29yYXRlIHRoZSBiZWhhdmlvciBvZiB0aGUgYmluZGluZ0RlZiBtZXRob2RzLgoKICAgICAgc2hpbnlCaW5kaW5nLmZpbmQgPSBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gYmluZGluZ0RlZi5maW5kKHNjb3BlKTsKCiAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgdmFyIGR5bmFtaWNSZXN1bHRzID0gcmVzdWx0cy5maWx0ZXIoIi5odG1sLXdpZGdldC1vdXRwdXQiKTsKCiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdoYXRldmVyIGNhdXNlZCBTaGlueSB0byB0aGluayB0aGVyZSBtaWdodCBiZQogICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAvLyBTaW5jZSB0aGVyZSBtaWdodCBiZSBsb3RzIG9mIGRpZmZlcmVudCBodG1sd2lkZ2V0cyBiaW5kaW5ncywgd2UKICAgICAgICAvLyBzY2hlZHVsZSBleGVjdXRpb24gZm9yIGxhdGVyLS1ubyBuZWVkIHRvIHN0YXRpY1JlbmRlciBtdWx0aXBsZQogICAgICAgIC8vIHRpbWVzLgogICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gZHluYW1pY1Jlc3VsdHMubGVuZ3RoKQogICAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXIoKTsKCiAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICB9OwoKICAgICAgLy8gV3JhcCByZW5kZXJWYWx1ZSB0byBoYW5kbGUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRlbHkgaXNuJ3QKICAgICAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGJ5IFNoaW55IGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZy4KCiAgICAgIHNoaW55QmluZGluZy5yZW5kZXJWYWx1ZSA9IGZ1bmN0aW9uKGVsLCBkYXRhKSB7CiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBkYXRhLmV2YWxzICYmIGkgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2ldKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFiaW5kaW5nRGVmLnJlbmRlck9uTnVsbFZhbHVlKSB7CiAgICAgICAgICBpZiAoZGF0YS54ID09PSBudWxsKSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgIGluaXRTaXppbmcoZWwpOwoKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiLCB0cnVlKTsKICAgICAgICAgIGlmIChiaW5kaW5nRGVmLmluaXRpYWxpemUpIHsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGJpbmRpbmdEZWYuaW5pdGlhbGl6ZShlbCwgZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIsIHJlc3VsdCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJpbmRpbmdEZWYucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSwgW2VsLCBkYXRhLnhdKTsKICAgICAgfTsKCiAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcmVzaXplIGlmIGJpbmRpbmdEZWYgaW1wbGVtZW50cyBpdAogICAgICBpZiAoYmluZGluZ0RlZi5yZXNpemUpIHsKICAgICAgICBzaGlueUJpbmRpbmcucmVzaXplID0gZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICAgIC8vIFNoaW55IGNhbiBjYWxsIHJlc2l6ZSBiZWZvcmUgaW5pdGlhbGl6ZS9yZW5kZXJWYWx1ZSBoYXZlIGJlZW4KICAgICAgICAgIC8vIGNhbGxlZCwgd2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlIGZvciB3aWRnZXRzLgogICAgICAgICAgaWYgKGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgICBiaW5kaW5nRGVmLnJlc2l6ZShlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9CgogICAgICBTaGlueS5vdXRwdXRCaW5kaW5ncy5yZWdpc3RlcihzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYubmFtZSk7CiAgICB9CiAgfTsKCiAgdmFyIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgZnVuY3Rpb24gc2NoZWR1bGVTdGF0aWNSZW5kZXIoKSB7CiAgICBpZiAoIXNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCkgewogICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9LCAxKTsKICAgIH0KICB9CgogIC8vIFJlbmRlciBzdGF0aWMgd2lkZ2V0cyBhZnRlciB0aGUgZG9jdW1lbnQgZmluaXNoZXMgbG9hZGluZwogIC8vIFN0YXRpY2FsbHkgcmVuZGVyIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBvZiB0aGlzIHdpZGdldCdzIGNsYXNzCiAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGJpbmRpbmdzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7CiAgICAgIHZhciBtYXRjaGVzID0gYmluZGluZy5maW5kKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CiAgICAgIGZvckVhY2gobWF0Y2hlcywgZnVuY3Rpb24oZWwpIHsKICAgICAgICB2YXIgc2l6ZU9iaiA9IGluaXRTaXppbmcoZWwsIGJpbmRpbmcpOwoKICAgICAgICBpZiAoaGFzQ2xhc3MoZWwsICJodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiKSkKICAgICAgICAgIHJldHVybjsKICAgICAgICBlbC5jbGFzc05hbWUgPSBlbC5jbGFzc05hbWUgKyAiIGh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCI7CgogICAgICAgIHZhciBpbml0UmVzdWx0OwogICAgICAgIGlmIChiaW5kaW5nLmluaXRpYWxpemUpIHsKICAgICAgICAgIGluaXRSZXN1bHQgPSBiaW5kaW5nLmluaXRpYWxpemUoZWwsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICk7CiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsKICAgICAgICAgIHZhciBsYXN0U2l6ZSA9IHsKICAgICAgICAgICAgdzogc2l6ZU9iaiA/IHNpemVPYmouZ2V0V2lkdGgoKSA6IGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgfTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJzaG93bi5odG1sd2lkZ2V0cyBzaG93bi5icy50YWIuaHRtbHdpZGdldHMgc2hvd24uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgImhpZGRlbi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMudGFiLmh0bWx3aWRnZXRzIGhpZGRlbi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lmaWMgY2FzZSBvZiBpb3NsaWRlcywgd2hpY2gKICAgICAgICAgIC8vIGZsaXBzIHNsaWRlcyBiZXR3ZWVuIGRpc3BsYXk6bm9uZSBhbmQgZGlzcGxheTpibG9jay4KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUKICAgICAgICAgIC8vIGhlcmUsIGJ1dCByYXRoZXIgaGF2ZSBpb3NsaWRlcyByYWlzZSBhIGdlbmVyaWMgZXZlbnQsCiAgICAgICAgICAvLyBidXQgdGhlIHJtYXJrZG93biBwYWNrYWdlIGp1c3Qgd2VudCB0byBDUkFOIHNvIHRoZQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4KICAgICAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGxpbWl0IHRoaXMgdG8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cwogICAgICAgICAgICAvLyBzdWNoIGJyb3dzZXJzLgogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlZW50ZXIiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc2NyaXB0RGF0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXSIpOwogICAgICAgIGlmIChzY3JpcHREYXRhKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOwogICAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2tdKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGluaXRSZXN1bHQsIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwoKICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOwogIH0KCgogIGZ1bmN0aW9uIGhhc19qUXVlcnkzKCkgewogICAgaWYgKCF3aW5kb3cualF1ZXJ5KSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHZhciAkdmVyc2lvbiA9IHdpbmRvdy5qUXVlcnkuZm4uanF1ZXJ5OwogICAgdmFyICRtYWpvcl92ZXJzaW9uID0gcGFyc2VJbnQoJHZlcnNpb24uc3BsaXQoIi4iKVswXSk7CiAgICByZXR1cm4gJG1ham9yX3ZlcnNpb24gPj0gMzsKICB9CgogIC8qCiAgLyBTaGlueSAxLjQgYnVtcGVkIGpRdWVyeSBmcm9tIDEueCB0byAzLnggd2hpY2ggbWVhbnMgalF1ZXJ5J3MKICAvIG9uLXJlYWR5IGhhbmRsZXIgKGkuZS4sICQoZm4pKSBpcyBub3cgYXN5bmNyb25vdXMgKGkuZS4sIGl0IG5vdwogIC8gcmVhbGx5IG1lYW5zICQoc2V0VGltZW91dChmbikpLgogIC8gaHR0cHM6Ly9qcXVlcnkuY29tL3VwZ3JhZGUtZ3VpZGUvMy4wLyNicmVha2luZy1jaGFuZ2UtZG9jdW1lbnQtcmVhZHktaGFuZGxlcnMtYXJlLW5vdy1hc3luY2hyb25vdXMKICAvCiAgLyBTaW5jZSBTaGlueSB1c2VzICQoKSB0byBzY2hlZHVsZSBpbml0U2hpbnksIHNoaW55Pj0xLjQgY2FsbHMgaW5pdFNoaW55CiAgLyBvbmUgdGljayBsYXRlciB0aGFuIGl0IGRpZCBiZWZvcmUsIHdoaWNoIG1lYW5zIHN0YXRpY1JlbmRlcigpIGlzCiAgLyBjYWxsZWQgcmVuZGVyVmFsdWUoKSBlYXJsaWVyIHRoYW4gKGFkdmFuY2VkKSB3aWRnZXQgYXV0aG9ycyBtaWdodCBiZSBleHBlY3RpbmcuCiAgLyBodHRwczovL2dpdGh1Yi5jb20vcnN0dWRpby9zaGlueS9pc3N1ZXMvMjYzMAogIC8KICAvIEZvciBhIGNvbmNyZXRlIGV4YW1wbGUsIGxlYWZsZXQgaGFzIHNvbWUgbWV0aG9kcyAoZS5nLiwgdXBkYXRlQm91bmRzKQogIC8gd2hpY2ggcmVmZXJlbmNlIFNoaW55IG1ldGhvZHMgcmVnaXN0ZXJlZCBpbiBpbml0U2hpbnkgKGUuZy4sIHNldElucHV0VmFsdWUpLgogIC8gU2luY2UgbGVhZmxldCBpcyBwcml2eSB0byB0aGlzIGxpZmUtY3ljbGUsIGl0IGtub3dzIHRvIHVzZSBzZXRUaW1lb3V0KCkgdG8KICAvIGRlbGF5IGV4ZWN1dGlvbiBvZiB0aG9zZSBtZXRob2RzICh1bnRpbCBTaGlueSBtZXRob2RzIGFyZSByZWFkeSkKICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL2xlYWZsZXQvYmxvYi8xOGVjOTgxL2phdmFzY3JpcHQvc3JjL2luZGV4LmpzI0wyNjYtTDI2OAogIC8KICAvIElkZWFsbHkgd2lkZ2V0IGF1dGhvcnMgd291bGRuJ3QgbmVlZCB0byB1c2UgdGhpcyBzZXRUaW1lb3V0KCkgaGFjayB0aGF0CiAgLyBsZWFmbGV0IHVzZXMgdG8gY2FsbCBTaGlueSBtZXRob2RzIG9uIGEgc3RhdGljUmVuZGVyKCkuIEluIHRoZSBsb25nIHJ1biwKICAvIHRoZSBsb2dpYyBpbml0U2hpbnkgc2hvdWxkIGJlIGJyb2tlbiB1cCBzbyB0aGF0IG1ldGhvZCByZWdpc3RyYXRpb24gaGFwcGVucwogIC8gcmlnaHQgYXdheSwgYnV0IGJpbmRpbmcgaGFwcGVucyBsYXRlci4KICAqLwogIGZ1bmN0aW9uIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKSB7CiAgICBpZiAoc2hpbnlNb2RlICYmIGhhc19qUXVlcnkzKCkpIHsKICAgICAgd2luZG93LmpRdWVyeSh3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgIH0KICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBhcmd1bWVudHMuY2FsbGVlLCBmYWxzZSk7CiAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgIH0sIGZhbHNlKTsKICB9IGVsc2UgaWYgKGRvY3VtZW50LmF0dGFjaEV2ZW50KSB7CiAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7CiAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CiAgICAgICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgICAgfQogICAgfSk7CiAgfQoKCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEF0dGFjaG1lbnRVcmwgPSBmdW5jdGlvbihkZXBuYW1lLCBrZXkpIHsKICAgIC8vIElmIG5vIGtleSwgZGVmYXVsdCB0byB0aGUgZmlyc3QgaXRlbQogICAgaWYgKHR5cGVvZihrZXkpID09PSAidW5kZWZpbmVkIikKICAgICAga2V5ID0gMTsKCiAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlcG5hbWUgKyAiLSIgKyBrZXkgKyAiLWF0dGFjaG1lbnQiKTsKICAgIGlmICghbGluaykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0dGFjaG1lbnQgIiArIGRlcG5hbWUgKyAiLyIgKyBrZXkgKyAiIG5vdCBmb3VuZCBpbiBkb2N1bWVudCIpOwogICAgfQogICAgcmV0dXJuIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMgPSBmdW5jdGlvbihkZikgewogICAgdmFyIG5hbWVzID0gW107CiAgICB2YXIgbGVuZ3RoOwogICAgZm9yICh2YXIgbmFtZSBpbiBkZikgewogICAgICAgIGlmIChkZi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkKICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lKTsKICAgICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyIpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKGxlbmd0aCkgIT09ICJ1bmRlZmluZWQiICYmIGxlbmd0aCAhPT0gZGZbbmFtZV0ubGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsKICAgICAgICB9CiAgICAgICAgbGVuZ3RoID0gZGZbbmFtZV0ubGVuZ3RoOwogICAgfQogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBpdGVtOwogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbGVuZ3RoOyByb3crKykgewogICAgICAgIGl0ZW0gPSB7fTsKICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBuYW1lcy5sZW5ndGg7IGNvbCsrKSB7CiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltuYW1lc1tjb2xdXVtyb3ddOwogICAgICAgIH0KICAgICAgICByZXN1bHRzLnB1c2goaXRlbSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMudHJhbnNwb3NlQXJyYXkyRCA9IGZ1bmN0aW9uKGFycmF5KSB7CiAgICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHJldHVybiBhcnJheTsKICAgICAgdmFyIG5ld0FycmF5ID0gYXJyYXlbMF0ubWFwKGZ1bmN0aW9uKGNvbCwgaSkgewogICAgICAgICAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbihyb3cpIHsKICAgICAgICAgICAgICByZXR1cm4gcm93W2ldCiAgICAgICAgICB9KQogICAgICB9KTsKICAgICAgcmV0dXJuIG5ld0FycmF5OwogIH07CiAgLy8gU3BsaXQgdmFsdWUgYXQgc3BsaXRDaGFyLCBidXQgYWxsb3cgc3BsaXRDaGFyIHRvIGJlIGVzY2FwZWQKICAvLyB1c2luZyBlc2NhcGVDaGFyLiBBbnkgb3RoZXIgY2hhcmFjdGVycyBlc2NhcGVkIGJ5IGVzY2FwZUNoYXIKICAvLyB3aWxsIGJlIGluY2x1ZGVkIGFzIHVzdWFsIChpbmNsdWRpbmcgZXNjYXBlQ2hhciBpdHNlbGYpLgogIGZ1bmN0aW9uIHNwbGl0V2l0aEVzY2FwZSh2YWx1ZSwgc3BsaXRDaGFyLCBlc2NhcGVDaGFyKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgIHZhciBjdXJyZW50UmVzdWx0ID0gIiI7CiAgICBmb3IgKHZhciBwb3MgPSAwOyBwb3MgPCB2YWx1ZS5sZW5ndGg7IHBvcysrKSB7CiAgICAgIGlmICghZXNjYXBlTW9kZSkgewogICAgICAgIGlmICh2YWx1ZVtwb3NdID09PSBzcGxpdENoYXIpIHsKICAgICAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlW3Bvc10gPT09IGVzY2FwZUNoYXIpIHsKICAgICAgICAgIGVzY2FwZU1vZGUgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICBlc2NhcGVNb2RlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmIChjdXJyZW50UmVzdWx0ICE9PSAiIikgewogICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9CiAgLy8gRnVuY3Rpb24gYXV0aG9yZWQgYnkgWWlodWkvSkogQWxsYWlyZQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlciA9IGZ1bmN0aW9uKG8sIG1lbWJlcikgewogICAgdmFyIHBhcnRzID0gc3BsaXRXaXRoRXNjYXBlKG1lbWJlciwgJy4nLCAnXFwnKTsKICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV07CiAgICAgIC8vIHBhcnQgbWF5IGJlIGEgY2hhcmFjdGVyIG9yICdudW1lcmljJyBtZW1iZXIgbmFtZQogICAgICBpZiAobyAhPT0gbnVsbCAmJiB0eXBlb2YgbyA9PT0gIm9iamVjdCIgJiYgcGFydCBpbiBvKSB7CiAgICAgICAgaWYgKGkgPT0gKGwgLSAxKSkgeyAvLyBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGVuIGV2YWx1bGF0ZQogICAgICAgICAgaWYgKHR5cGVvZiBvW3BhcnRdID09PSAic3RyaW5nIikKICAgICAgICAgICAgb1twYXJ0XSA9IHRyeUV2YWwob1twYXJ0XSk7CiAgICAgICAgfSBlbHNlIHsgLy8gb3RoZXJ3aXNlIGNvbnRpbnVlIHRvIG5leHQgZW1iZWRkZWQgb2JqZWN0CiAgICAgICAgICBvID0gb1twYXJ0XTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICAvLyBSZXRyaWV2ZSB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuCiAgLy8gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCwgb3IgbnVsbCBpZiBub25lLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpOwogIH07CgogIC8vIEZpbmRzIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzY29wZSB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yLAogIC8vIGFuZCByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YKICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGVsZW1lbnQsIGlmIGFueS4gSWYgbm8gZWxlbWVudCBtYXRjaGVzIHRoZQogIC8vIHNlbGVjdG9yLCBvciB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBoYXMgbm8gSFRNTFdpZGdldAogIC8vIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBudWxsIGlzIHJldHVybmVkLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIGVsID0gc2NvcGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICBpZiAoZWwgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKGVsKTsKICAgIH0KICB9OwoKICAvLyBGaW5kcyBhbGwgZWxlbWVudHMgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLCBhbmQKICAvLyByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlcyBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50cywgaW4gYW4gYXJyYXkuIElmIGVsZW1lbnRzIHRoYXQKICAvLyBtYXRjaCB0aGUgc2VsZWN0b3IgZG9uJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIEhUTUxXaWRnZXQKICAvLyBpbnN0YW5jZSwgdGhlIHJldHVybmVkIGFycmF5IHdpbGwgY29udGFpbiBudWxscy4KICAvLwogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4KICB3aW5kb3cuSFRNTFdpZGdldHMuZmluZEFsbCA9IGZ1bmN0aW9uKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICBzZWxlY3RvciA9IHNjb3BlOwogICAgICBzY29wZSA9IGRvY3VtZW50OwogICAgfQoKICAgIHZhciBub2RlcyA9IHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKICAgICAgcmVzdWx0cy5wdXNoKHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShub2Rlc1tpXSkpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgdmFyIHBvc3RSZW5kZXJIYW5kbGVycyA9IFtdOwogIGZ1bmN0aW9uIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpIHsKICAgIHdoaWxlIChwb3N0UmVuZGVySGFuZGxlcnMubGVuZ3RoKSB7CiAgICAgIHZhciBoYW5kbGVyID0gcG9zdFJlbmRlckhhbmRsZXJzLnNoaWZ0KCk7CiAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgaGFuZGxlcigpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZWdpc3RlciB0aGUgZ2l2ZW4gY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUKICAvLyBuZXh0IHRpbWUgc3RhdGljIHdpZGdldHMgYXJlIHJlbmRlcmVkLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICBwb3N0UmVuZGVySGFuZGxlcnMucHVzaChjYWxsYmFjayk7CiAgfTsKCiAgLy8gVGFrZXMgYSBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbiwgYW5kIHJldHVybnMgYW4KICAvLyBvbGQtc3R5bGUgY2xhc3MtYm91bmQgZGVmaW5pdGlvbi4gVGhpcyBzYXZlcyB1cyBmcm9tIGhhdmluZwogIC8vIHRvIHJld3JpdGUgYWxsIHRoZSBsb2dpYyBpbiB0aGlzIGZpbGUgdG8gYWNjb21vZGF0ZSBib3RoCiAgLy8gdHlwZXMgb2YgZGVmaW5pdGlvbnMuCiAgZnVuY3Rpb24gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmbikgewogICAgdmFyIHJlc3VsdCA9IHsKICAgICAgbmFtZTogZGVmbi5uYW1lLAogICAgICB0eXBlOiBkZWZuLnR5cGUsCiAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgcmV0dXJuIGRlZm4uZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0sCiAgICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgeCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVuZGVyVmFsdWUoeCk7CiAgICAgIH0sCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgfQogICAgfTsKCiAgICBpZiAoZGVmbi5maW5kKQogICAgICByZXN1bHQuZmluZCA9IGRlZm4uZmluZDsKICAgIGlmIChkZWZuLnJlbmRlckVycm9yKQogICAgICByZXN1bHQucmVuZGVyRXJyb3IgPSBkZWZuLnJlbmRlckVycm9yOwogICAgaWYgKGRlZm4uY2xlYXJFcnJvcikKICAgICAgcmVzdWx0LmNsZWFyRXJyb3IgPSBkZWZuLmNsZWFyRXJyb3I7CgogICAgcmV0dXJuIHJlc3VsdDsKICB9Cn0pKCk7Cgo="></script>
-<script src="data:application/x-javascript;base64,CkhUTUxXaWRnZXRzLndpZGdldCh7CiAgbmFtZTogInBsb3RseSIsCiAgdHlwZTogIm91dHB1dCIsCgogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICByZXR1cm4ge307CiAgfSwKCiAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgIGlmIChpbnN0YW5jZS5hdXRvc2l6ZSkgewogICAgICB2YXIgd2lkdGggPSBpbnN0YW5jZS53aWR0aCB8fCB3aWR0aDsKICAgICAgdmFyIGhlaWdodCA9IGluc3RhbmNlLmhlaWdodCB8fCBoZWlnaHQ7CiAgICAgIFBsb3RseS5yZWxheW91dChlbC5pZCwge3dpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgIH0KICB9LCAgCiAgCiAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgCiAgICAvLyBQbG90bHkucmVsYXlvdXQoKSBtdXRhdGVzIHRoZSBwbG90IGlucHV0IG9iamVjdCwgc28gbWFrZSBzdXJlIHRvIAogICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgdXNlci1zdXBwbGllZCB3aWR0aC9oZWlnaHQgKmJlZm9yZSoKICAgIC8vIHdlIGNhbGwgUGxvdGx5LnBsb3QoKTsKICAgIHZhciBsYXkgPSB4LmxheW91dCB8fCB7fTsKICAgIGluc3RhbmNlLndpZHRoID0gbGF5LndpZHRoOwogICAgaW5zdGFuY2UuaGVpZ2h0ID0gbGF5LmhlaWdodDsKICAgIGluc3RhbmNlLmF1dG9zaXplID0gbGF5LmF1dG9zaXplIHx8IHRydWU7CiAgICAKICAgIC8qIAogICAgLyAnaW5mb3JtIHRoZSB3b3JsZCcgYWJvdXQgaGlnaGxpZ2h0aW5nIG9wdGlvbnMgdGhpcyBpcyBzbyBvdGhlcgogICAgLyBjcm9zc3RhbGsgbGlicmFyaWVzIGhhdmUgYSBjaGFuY2UgdG8gcmVzcG9uZCB0byBzcGVjaWFsIHNldHRpbmdzIAogICAgLyBzdWNoIGFzIHBlcnNpc3RlbnQgc2VsZWN0aW9uLiAKICAgIC8gQUZBSUssIGxlYWZsZXQgaXMgdGhlIG9ubHkgbGlicmFyeSB3aXRoIHN1Y2ggaW50ZXJncmF0aW9uCiAgICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL2xlYWZsZXQvcHVsbC8zNDYvZmlsZXMjZGlmZi1hZDBjMmQ1MWNlNWZkZjhjOTBjNzM5NWIxMDJmNDI2NVIxNTQKICAgICovCiAgICB2YXIgY3RDb25maWcgPSBjcm9zc3RhbGsudmFyKCdwbG90bHlDcm9zc3RhbGtPcHRzJykuc2V0KHguaGlnaGxpZ2h0KTsKICAgICAgCiAgICBpZiAodHlwZW9mKHdpbmRvdykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIC8vIG1ha2Ugc3VyZSBwbG90cyBkb24ndCBnZXQgY3JlYXRlZCBvdXRzaWRlIHRoZSBuZXR3b3JrIChmb3Igb24tcHJlbSkKICAgICAgd2luZG93LlBMT1RMWUVOViA9IHdpbmRvdy5QTE9UTFlFTlYgfHwge307CiAgICAgIHdpbmRvdy5QTE9UTFlFTlYuQkFTRV9VUkwgPSB4LmJhc2VfdXJsOwogICAgICAKICAgICAgLy8gRW5hYmxlIHBlcnNpc3RlbnQgc2VsZWN0aW9uIHdoZW4gc2hpZnQga2V5IGlzIGRvd24KICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTgyODYxMy9jaGVjay1pZi1hLWtleS1pcy1kb3duCiAgICAgIHZhciBwZXJzaXN0T25TaGlmdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZiAoIWUpIHdpbmRvdy5ldmVudDsKICAgICAgICBpZiAoZS5zaGlmdEtleSkgeyAKICAgICAgICAgIHguaGlnaGxpZ2h0LnBlcnNpc3RlbnQgPSB0cnVlOyAKICAgICAgICAgIHguaGlnaGxpZ2h0LnBlcnNpc3RlbnRTaGlmdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHguaGlnaGxpZ2h0LnBlcnNpc3RlbnQgPSBmYWxzZTsgCiAgICAgICAgICB4LmhpZ2hsaWdodC5wZXJzaXN0ZW50U2hpZnQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH07CiAgICAgIAogICAgICAvLyBPbmx5IHJlbGV2YW50IGlmIHdlIGhhdmVuJ3QgZm9yY2VkIHBlcnNpc3RlbnQgbW9kZSBhdCBjb21tYW5kIGxpbmUKICAgICAgaWYgKCF4LmhpZ2hsaWdodC5wZXJzaXN0ZW50KSB7CiAgICAgICAgd2luZG93Lm9ubW91c2Vtb3ZlID0gcGVyc2lzdE9uU2hpZnQ7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgZ3JhcGhEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbC5pZCk7CiAgICAKICAgIC8vIFRPRE86IG1vdmUgdGhlIGNvbnRyb2wgcGFuZWwgaW5qZWN0aW9uIHN0cmF0ZWd5IGluc2lkZSBoZXJlLi4uCiAgICBIVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlcihmdW5jdGlvbigpIHsKICAgICAgCiAgICAgIC8vIGxvd2VyIHRoZSB6LWluZGV4IG9mIHRoZSBtb2RlYmFyIHRvIHByZXZlbnQgaXQgZnJvbSBoaWdoamFja2luZyBob3ZlcgogICAgICAvLyAoVE9ETzogZG8gdGhpcyB2aWEgQ1NTPykKICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JvcGVuc2NpL3Bsb3RseS9pc3N1ZXMvOTU2CiAgICAgIC8vIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvcHJvcF9zdHlsZV96aW5kZXguYXNwCiAgICAgIHZhciBtb2RlYmFycyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5qcy1wbG90bHktcGxvdCAucGxvdGx5IC5tb2RlYmFyIik7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW9kZWJhcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBtb2RlYmFyc1tpXS5zdHlsZS56SW5kZXggPSAxOwogICAgICB9CiAgICB9KTsKICAgICAgCiAgICAgIC8vIGluamVjdCBhICJjb250cm9sIHBhbmVsIiBob2xkaW5nIHNlbGVjdGl6ZS9keW5hbWljIGNvbG9yIHdpZGdldChzKQogICAgaWYgKHguc2VsZWN0aXplIHx8IHguaGlnaGxpZ2h0LmR5bmFtaWMgJiYgIWluc3RhbmNlLnBsb3RseSkgewogICAgICB2YXIgZmxleCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBmbGV4LmNsYXNzID0gInBsb3RseS1jcm9zc3RhbGstY29udHJvbC1wYW5lbCI7CiAgICAgIGZsZXguc3R5bGUgPSAiZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwIjsKICAgICAgCiAgICAgIC8vIGluamVjdCB0aGUgY29sb3VycGlja2VyIEhUTUwgY29udGFpbmVyIGludG8gdGhlIGZsZXhib3gKICAgICAgaWYgKHguaGlnaGxpZ2h0LmR5bmFtaWMpIHsKICAgICAgICB2YXIgcGlja2VyRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgCiAgICAgICAgdmFyIHBpY2tlcklucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBwaWNrZXJJbnB1dC5pZCA9IGVsLmlkICsgIi1jb2xvdXJwaWNrZXIiOwogICAgICAgIHBpY2tlcklucHV0LnBsYWNlaG9sZGVyID0gImFzZGFzZCI7CiAgICAgICAgCiAgICAgICAgdmFyIHBpY2tlckxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKICAgICAgICBwaWNrZXJMYWJlbC5mb3IgPSBwaWNrZXJJbnB1dC5pZDsKICAgICAgICBwaWNrZXJMYWJlbC5pbm5lckhUTUwgPSAiQnJ1c2ggY29sb3ImbmJzcDsmbmJzcDsiOwogICAgICAgIAogICAgICAgIHBpY2tlckRpdi5hcHBlbmRDaGlsZChwaWNrZXJMYWJlbCk7CiAgICAgICAgcGlja2VyRGl2LmFwcGVuZENoaWxkKHBpY2tlcklucHV0KTsKICAgICAgICBmbGV4LmFwcGVuZENoaWxkKHBpY2tlckRpdik7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIGluamVjdCBzZWxlY3RpemUgSFRNTCBjb250YWluZXJzIChvbmUgZm9yIGV2ZXJ5IGNyb3NzdGFsayBncm91cCkKICAgICAgaWYgKHguc2VsZWN0aXplKSB7CiAgICAgICAgdmFyIGlkcyA9IE9iamVjdC5rZXlzKHguc2VsZWN0aXplKTsKICAgICAgICAKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgY29udGFpbmVyLmlkID0gaWRzW2ldOwogICAgICAgICAgY29udGFpbmVyLnN0eWxlID0gIndpZHRoOiA4MCU7IGhlaWdodDogMTAlIjsKICAgICAgICAgIGNvbnRhaW5lci5jbGFzcyA9ICJmb3JtLWdyb3VwIGNyb3NzdGFsay1pbnB1dC1wbG90bHktaGlnaGxpZ2h0IjsKICAgICAgICAgIAogICAgICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKICAgICAgICAgIGxhYmVsLmZvciA9IGlkc1tpXTsKICAgICAgICAgIGxhYmVsLmlubmVySFRNTCA9IHguc2VsZWN0aXplW2lkc1tpXV0uZ3JvdXA7CiAgICAgICAgICBsYWJlbC5jbGFzcyA9ICJjb250cm9sLWxhYmVsIjsKICAgICAgICAgIAogICAgICAgICAgdmFyIHNlbGVjdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwogICAgICAgICAgc2VsZWN0Lm11bHRpcGxlID0gdHJ1ZTsKICAgICAgICAgIAogICAgICAgICAgc2VsZWN0RGl2LmFwcGVuZENoaWxkKHNlbGVjdCk7CiAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHNlbGVjdERpdik7CiAgICAgICAgICBmbGV4LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAvLyBmaW5hbGx5LCBpbnNlcnQgdGhlIGZsZXhib3ggaW5zaWRlIHRoZSBodG1sd2lkZ2V0IGNvbnRhaW5lciwKICAgICAgLy8gYnV0IGJlZm9yZSB0aGUgcGxvdGx5IGdyYXBoIGRpdgogICAgICBncmFwaERpdi5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShmbGV4LCBncmFwaERpdik7CiAgICAgIAogICAgICBpZiAoeC5oaWdobGlnaHQuZHluYW1pYykgewogICAgICAgIHZhciBwaWNrZXIgPSAkKCIjIiArIHBpY2tlcklucHV0LmlkKTsKICAgICAgICB2YXIgY29sb3JzID0geC5oaWdobGlnaHQuY29sb3IgfHwgW107CiAgICAgICAgLy8gVE9ETzogbGV0IHVzZXJzIHNwZWNpZnkgb3B0aW9ucz8KICAgICAgICB2YXIgb3B0cyA9IHsKICAgICAgICAgIHZhbHVlOiBjb2xvcnNbMF0sCiAgICAgICAgICBzaG93Q29sb3VyOiAiYm90aCIsCiAgICAgICAgICBwYWxldHRlOiAibGltaXRlZCIsCiAgICAgICAgICBhbGxvd2VkQ29sczogY29sb3JzLmpvaW4oIiAiKSwKICAgICAgICAgIHdpZHRoOiAiMjAlIiwKICAgICAgICAgIGhlaWdodDogIjEwJSIKICAgICAgICB9OwogICAgICAgIHBpY2tlci5jb2xvdXJwaWNrZXIoe2NoYW5nZURlbGF5OiAwfSk7CiAgICAgICAgcGlja2VyLmNvbG91cnBpY2tlcigic2V0dGluZ3MiLCBvcHRzKTsKICAgICAgICBwaWNrZXIuY29sb3VycGlja2VyKCJ2YWx1ZSIsIG9wdHMudmFsdWUpOwogICAgICAgIC8vIGluZm9ybSBjcm9zc3RhbGsgYWJvdXQgYSBjaGFuZ2UgaW4gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGNvbG91cgogICAgICAgIHZhciBncnBzID0geC5oaWdobGlnaHQuY3RHcm91cHMgfHwgW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncnBzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBjcm9zc3RhbGsuZ3JvdXAoZ3Jwc1tpXSkudmFyKCdwbG90bHlTZWxlY3Rpb25Db2xvdXInKQogICAgICAgICAgICAuc2V0KHBpY2tlci5jb2xvdXJwaWNrZXIoJ3ZhbHVlJykpOwogICAgICAgIH0KICAgICAgICBwaWNrZXIub24oImNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncnBzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGNyb3NzdGFsay5ncm91cChncnBzW2ldKS52YXIoJ3Bsb3RseVNlbGVjdGlvbkNvbG91cicpCiAgICAgICAgICAgICAgLnNldChwaWNrZXIuY29sb3VycGlja2VyKCd2YWx1ZScpKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgfQogICAgCiAgICAvLyBpZiBubyBwbG90IGV4aXN0cyB5ZXQsIGNyZWF0ZSBvbmUgd2l0aCBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbgogICAgaWYgKCFpbnN0YW5jZS5wbG90bHkpIHsKICAgICAgCiAgICAgIHZhciBwbG90ID0gUGxvdGx5LnBsb3QoZ3JhcGhEaXYsIHgpOwogICAgICBpbnN0YW5jZS5wbG90bHkgPSB0cnVlOwogICAgICAKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICAvLyB0aGlzIGlzIGVzc2VudGlhbGx5IGVxdWl2YWxlbnQgdG8gUGxvdGx5Lm5ld1Bsb3QoKSwgYnV0IGF2b2lkcyBjcmVhdGluZyAKICAgICAgLy8gYSBuZXcgd2ViZ2wgY29udGV4dAogICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGxvdGx5L3Bsb3RseS5qcy9ibG9iLzJiMjRmOWRlZjkwMTgzMWU2MTI4MjA3NmNmM2Y4MzU1OThkNTZmMGUvc3JjL3Bsb3RfYXBpL3Bsb3RfYXBpLmpzI0w1MzEtTDUzMgoKICAgICAgLy8gVE9ETzogcmVzdG9yZSBjcm9zc3RhbGsgc2VsZWN0aW9ucz8KICAgICAgUGxvdGx5LnB1cmdlKGdyYXBoRGl2KTsKICAgICAgLy8gVE9ETzogd2h5IGlzIHRoaXMgbmVjZXNzYXJ5IHRvIGdldCBjcm9zc3RhbGsgd29ya2luZz8KICAgICAgZ3JhcGhEaXYuZGF0YSA9IHVuZGVmaW5lZDsKICAgICAgZ3JhcGhEaXYubGF5b3V0ID0gdW5kZWZpbmVkOwogICAgICB2YXIgcGxvdCA9IFBsb3RseS5wbG90KGdyYXBoRGl2LCB4KTsKICAgIH0KICAgIAogICAgLy8gVHJpZ2dlciBwbG90bHkuanMgY2FsbHMgZGVmaW5lZCB2aWEgYHBsb3RseVByb3h5KClgCiAgICBwbG90LnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgIGlmIChIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHsKICAgICAgICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigicGxvdGx5LWNhbGxzIiwgZnVuY3Rpb24obXNnKSB7CiAgICAgICAgICB2YXIgZ2QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtc2cuaWQpOwogICAgICAgICAgaWYgKCFnZCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGZpbmQgcGxvdGx5IGdyYXBoIHdpdGggaWQ6ICIgKyBtc2cuaWQpOwogICAgICAgICAgfQogICAgICAgICAgLy8gVGhpcyBpc24ndCBhbiBvZmZpY2lhbCBwbG90bHkuanMgbWV0aG9kLCBidXQgaXQncyB0aGUgb25seSBjdXJyZW50IHdheSB0byAKICAgICAgICAgIC8vIGNoYW5nZSBqdXN0IHRoZSBjb25maWd1cmF0aW9uIG9mIGEgcGxvdCAKICAgICAgICAgIC8vIGh0dHBzOi8vY29tbXVuaXR5LnBsb3QubHkvdC91cGRhdGUtY29uZmlnLWZ1bmN0aW9uLzkwNTcKICAgICAgICAgIGlmIChtc2cubWV0aG9kID09ICJyZWNvbmZpZyIpIHsKICAgICAgICAgICAgUGxvdGx5LnJlYWN0KGdkLCBnZC5kYXRhLCBnZC5sYXlvdXQsIG1zZy5hcmdzKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgaWYgKCFQbG90bHlbbXNnLm1ldGhvZF0pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1ldGhvZCAiICsgbXNnLm1ldGhvZCk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgYXJncyA9IFtnZF0uY29uY2F0KG1zZy5hcmdzKTsKICAgICAgICAgIFBsb3RseVttc2cubWV0aG9kXS5hcHBseShudWxsLCBhcmdzKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICAKICAgICAgLy8gcGxvdGx5J3MgbWFwYm94IEFQSSBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHNldHRpbmcgYm91bmRpbmcgYm94ZXMKICAgICAgLy8gaHR0cHM6Ly93d3cubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvZXhhbXBsZS9maXRib3VuZHMvCiAgICAgIC8vIHNvIHdlIGRvIHRoaXMgbWFudWFsbHkuLi4KICAgICAgLy8gVE9ETzogbWFrZSBzdXJlIHRoaXMgdHJpZ2dlcnMgb24gYSByZWRyYXcgYW5kIHJlbGF5b3V0IGFzIHdlbGwgYXMgb24gaW5pdGlhbCBkcmF3CiAgICAgIHZhciBtYXBib3hJRHMgPSBncmFwaERpdi5fZnVsbExheW91dC5fc3VicGxvdHMubWFwYm94IHx8IFtdOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcGJveElEcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBpZCA9IG1hcGJveElEc1tpXTsKICAgICAgICB2YXIgbWFwT3B0cyA9IHgubGF5b3V0W2lkXSB8fCB7fTsKICAgICAgICB2YXIgYXJncyA9IG1hcE9wdHMuX2ZpdEJvdW5kcyB8fCB7fTsKICAgICAgICBpZiAoIWFyZ3MpIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB2YXIgbWFwT2JqID0gZ3JhcGhEaXYuX2Z1bGxMYXlvdXRbaWRdLl9zdWJwbG90Lm1hcDsKICAgICAgICBtYXBPYmouZml0Qm91bmRzKGFyZ3MuYm91bmRzLCBhcmdzLm9wdGlvbnMpOwogICAgICB9CiAgICAgIAogICAgfSk7CiAgICAKICAgIC8vIEF0dGFjaCBhdHRyaWJ1dGVzIChlLmcuLCAia2V5IiwgInoiKSB0byBwbG90bHkgZXZlbnQgZGF0YQogICAgZnVuY3Rpb24gZXZlbnREYXRhV2l0aEtleShldmVudERhdGEpIHsKICAgICAgaWYgKGV2ZW50RGF0YSA9PT0gdW5kZWZpbmVkIHx8ICFldmVudERhdGEuaGFzT3duUHJvcGVydHkoInBvaW50cyIpKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgcmV0dXJuIGV2ZW50RGF0YS5wb2ludHMubWFwKGZ1bmN0aW9uKHB0KSB7CiAgICAgICAgdmFyIG9iaiA9IHsKICAgICAgICAgIGN1cnZlTnVtYmVyOiBwdC5jdXJ2ZU51bWJlciwgCiAgICAgICAgICBwb2ludE51bWJlcjogcHQucG9pbnROdW1iZXIsIAogICAgICAgICAgeDogcHQueCwKICAgICAgICAgIHk6IHB0LnkKICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vIElmICd6JyBpcyByZXBvcnRlZCB3aXRoIHRoZSBldmVudCBkYXRhLCB0aGVuIHVzZSBpdCEKICAgICAgICBpZiAocHQuaGFzT3duUHJvcGVydHkoInoiKSkgewogICAgICAgICAgb2JqLnogPSBwdC56OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAocHQuaGFzT3duUHJvcGVydHkoImN1c3RvbWRhdGEiKSkgewogICAgICAgICAgb2JqLmN1c3RvbWRhdGEgPSBwdC5jdXN0b21kYXRhOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiAKICAgICAgICAgIFRMO0RSOiAoSSB0aGluaykgd2UgaGF2ZSB0byBzZWxlY3QgdGhlIGdyYXBoIGRpdiAoYWdhaW4pIHRvIGF0dGFjaCBrZXlzLi4uCiAgICAgICAgICAKICAgICAgICAgIFdoeT8gUmVtZW1iZXIgdGhhdCBjcm9zc3RhbGsgd2lsbCBkeW5hbWljYWxseSBhZGQvZGVsZXRlIHRyYWNlcyAKICAgICAgICAgIChzZWUgdHJhY2VNYW5hZ2VyLnByb3RvdHlwZS51cGRhdGVTZWxlY3Rpb24oKSBiZWxvdykKICAgICAgICAgIEZvciB0aGlzIHJlYXNvbiwgd2UgY2FuJ3Qgc2ltcGx5IGdyYWIga2V5cyBmcm9tIHguZGF0YSAobGlrZSB3ZSBkaWQgcHJldmlvdXNseSkKICAgICAgICAgIE1vcmVvdmVyLCB3ZSBjYW4ndCB1c2UgX2Z1bGxEYXRhLCBzaW5jZSB0aGF0IGRvZXNuJ3QgaW5jbHVkZSAKICAgICAgICAgIHVub2ZmaWNpYWwgYXR0cmlidXRlcy4gSXQncyB0cnVlIHRoYXQgY2xpY2svaG92ZXIgZXZlbnRzIGZpcmUgd2l0aCAKICAgICAgICAgIHB0LmRhdGEsIGJ1dCBkcmFnIGV2ZW50cyBkb24ndC4uLgogICAgICAgICovCiAgICAgICAgdmFyIGdkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwuaWQpOwogICAgICAgIHZhciB0cmFjZSA9IGdkLmRhdGFbcHQuY3VydmVOdW1iZXJdOwogICAgICAgIAogICAgICAgIGlmICghdHJhY2UuX2lzU2ltcGxlS2V5KSB7CiAgICAgICAgICB2YXIgYXR0cnNUb0F0dGFjaCA9IFsia2V5Il07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIHNpbXBsZSBrZXlzIGZpcmUgdGhlIHdob2xlIGtleQogICAgICAgICAgb2JqLmtleSA9IHRyYWNlLmtleTsKICAgICAgICAgIHZhciBhdHRyc1RvQXR0YWNoID0gW107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnNUb0F0dGFjaC5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGF0dHIgPSB0cmFjZVthdHRyc1RvQXR0YWNoW2ldXTsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHIpKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgcHQucG9pbnROdW1iZXIgPT09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgb2JqW2F0dHJzVG9BdHRhY2hbaV1dID0gYXR0cltwdC5wb2ludE51bWJlcl07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwdC5wb2ludE51bWJlcikpIHsKICAgICAgICAgICAgICBvYmpbYXR0cnNUb0F0dGFjaFtpXV0gPSBhdHRyW3B0LnBvaW50TnVtYmVyWzBdXVtwdC5wb2ludE51bWJlclsxXV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwdC5wb2ludE51bWJlcnMpKSB7CiAgICAgICAgICAgICAgb2JqW2F0dHJzVG9BdHRhY2hbaV1dID0gcHQucG9pbnROdW1iZXJzLm1hcChmdW5jdGlvbihpZHgpIHsgcmV0dXJuIGF0dHJbaWR4XTsgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9iajsKICAgICAgfSk7CiAgICB9CiAgICAKICAgIAogICAgdmFyIGxlZ2VuZEV2ZW50RGF0YSA9IGZ1bmN0aW9uKGQpIHsKICAgICAgLy8gaWYgbGVnZW5kZ3JvdXAgaXMgbm90IHJlbGV2YW50IGp1c3QgcmV0dXJuIHRoZSB0cmFjZQogICAgICB2YXIgdHJhY2UgPSBkLmRhdGFbZC5jdXJ2ZU51bWJlcl07CiAgICAgIGlmICghdHJhY2UubGVnZW5kZ3JvdXApIHJldHVybiB0cmFjZTsKICAgICAgCiAgICAgIC8vIGlmIGxlZ2VuZGdyb3VwIHdhcyBzcGVjaWZpZWQsIHJldHVybiBhbGwgdHJhY2VzIHRoYXQgbWF0Y2ggdGhlIGdyb3VwCiAgICAgIHZhciBsZWdlbmRncnBzID0gZC5kYXRhLm1hcChmdW5jdGlvbih0cmFjZSl7IHJldHVybiB0cmFjZS5sZWdlbmRncm91cDsgfSk7CiAgICAgIHZhciB0cmFjZXMgPSBbXTsKICAgICAgZm9yIChpID0gMDsgaSA8IGxlZ2VuZGdycHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAobGVnZW5kZ3Jwc1tpXSA9PSB0cmFjZS5sZWdlbmRncm91cCkgewogICAgICAgICAgdHJhY2VzLnB1c2goZC5kYXRhW2ldKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiB0cmFjZXM7CiAgICB9OwoKICAgIAogICAgLy8gc2VuZCB1c2VyIGlucHV0IGV2ZW50IGRhdGEgdG8gc2hpbnkKICAgIGlmIChIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgU2hpbnkuc2V0SW5wdXRWYWx1ZSkgewogICAgICAKICAgICAgLy8gU29tZSBldmVudHMgY2xlYXIgb3RoZXIgaW5wdXQgdmFsdWVzCiAgICAgIC8vIFRPRE86IGFsd2F5cyByZWdpc3RlciB0aGVzZT8KICAgICAgdmFyIGV2ZW50Q2xlYXJNYXAgPSB7CiAgICAgICAgcGxvdGx5X2Rlc2VsZWN0OiBbInBsb3RseV9zZWxlY3RlZCIsICJwbG90bHlfc2VsZWN0aW5nIiwgInBsb3RseV9icnVzaGVkIiwgInBsb3RseV9icnVzaGluZyIsICJwbG90bHlfY2xpY2siXSwKICAgICAgICBwbG90bHlfdW5ob3ZlcjogWyJwbG90bHlfaG92ZXIiXSwKICAgICAgICBwbG90bHlfZG91YmxlY2xpY2s6IFsicGxvdGx5X2NsaWNrIl0KICAgICAgfTsKICAgIAogICAgICBPYmplY3Qua2V5cyhldmVudENsZWFyTWFwKS5tYXAoZnVuY3Rpb24oZXZ0KSB7CiAgICAgICAgZ3JhcGhEaXYub24oZXZ0LCBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciBpbnB1dHNUb0NsZWFyID0gZXZlbnRDbGVhck1hcFtldnRdOwogICAgICAgICAgaW5wdXRzVG9DbGVhci5tYXAoZnVuY3Rpb24oaW5wdXQpIHsKICAgICAgICAgICAgU2hpbnkuc2V0SW5wdXRWYWx1ZShpbnB1dCArICItIiArIHguc291cmNlLCBudWxsLCB7cHJpb3JpdHk6ICJldmVudCJ9KTsKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgCiAgICAgIHZhciBldmVudERhdGFGdW5jdGlvbk1hcCA9IHsKICAgICAgICBwbG90bHlfY2xpY2s6IGV2ZW50RGF0YVdpdGhLZXksCiAgICAgICAgcGxvdGx5X3N1bmJ1cnN0Y2xpY2s6IGV2ZW50RGF0YVdpdGhLZXksCiAgICAgICAgcGxvdGx5X2hvdmVyOiBldmVudERhdGFXaXRoS2V5LAogICAgICAgIHBsb3RseV91bmhvdmVyOiBldmVudERhdGFXaXRoS2V5LAogICAgICAgIC8vIElmICdwbG90bHlfc2VsZWN0ZWQnIGhhcyBhbHJlYWR5IGJlZW4gZmlyZWQsIGFuZCB5b3UgY2xpY2sKICAgICAgICAvLyBvbiB0aGUgcGxvdCBhZnRlcndhcmRzLCB0aGlzIGV2ZW50IGZpcmVzIGB1bmRlZmluZWRgPyE/CiAgICAgICAgLy8gVGhhdCBtaWdodCBiZSBjb25zaWRlcmVkIGEgcGxvdGx5LmpzIGJ1ZywgYnV0IGl0IGRvZXNuJ3QgbWFrZSAKICAgICAgICAvLyBzZW5zZSBmb3IgdGhpcyBpbnB1dCBjaGFuZ2UgdG8gb2NjdXIgaWYgYGRgIGlzIGZhbHN5IGJlY2F1c2UsCiAgICAgICAgLy8gZXZlbiBpbiB0aGUgZW1wdHkgc2VsZWN0aW9uIGNhc2UsIGBkYCBpcyB0cnV0aHkgKGFuIG9iamVjdCksCiAgICAgICAgLy8gYW5kIHRoZSAncGxvdGx5X2Rlc2VsZWN0JyBldmVudCB3aWxsIHJlc2V0IHRoaXMgaW5wdXQKICAgICAgICBwbG90bHlfc2VsZWN0ZWQ6IGZ1bmN0aW9uKGQpIHsgaWYgKGQpIHsgcmV0dXJuIGV2ZW50RGF0YVdpdGhLZXkoZCk7IH0gfSwKICAgICAgICBwbG90bHlfc2VsZWN0aW5nOiBmdW5jdGlvbihkKSB7IGlmIChkKSB7IHJldHVybiBldmVudERhdGFXaXRoS2V5KGQpOyB9IH0sCiAgICAgICAgcGxvdGx5X2JydXNoZWQ6IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgIGlmIChkKSB7IHJldHVybiBkLnJhbmdlID8gZC5yYW5nZSA6IGQubGFzc29Qb2ludHM7IH0KICAgICAgICB9LAogICAgICAgIHBsb3RseV9icnVzaGluZzogZnVuY3Rpb24oZCkgewogICAgICAgICAgaWYgKGQpIHsgcmV0dXJuIGQucmFuZ2UgPyBkLnJhbmdlIDogZC5sYXNzb1BvaW50czsgfQogICAgICAgIH0sCiAgICAgICAgcGxvdGx5X2xlZ2VuZGNsaWNrOiBsZWdlbmRFdmVudERhdGEsCiAgICAgICAgcGxvdGx5X2xlZ2VuZGRvdWJsZWNsaWNrOiBsZWdlbmRFdmVudERhdGEsCiAgICAgICAgcGxvdGx5X2NsaWNrYW5ub3RhdGlvbjogZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5mdWxsQW5ub3RhdGlvbiB9CiAgICAgIH07CiAgICAgIAogICAgICB2YXIgcmVnaXN0ZXJTaGlueVZhbHVlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICB2YXIgZXZlbnREYXRhUHJlUHJvY2Vzc29yID0gZXZlbnREYXRhRnVuY3Rpb25NYXBbZXZlbnRdIHx8IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQgPyBkIDogZWwuaWQgfTsKICAgICAgICAvLyBzb21lIGV2ZW50cyBhcmUgdW5pcXVlIHRvIHRoZSBSIHBhY2thZ2UKICAgICAgICB2YXIgcGxvdGx5SlNldmVudCA9IChldmVudCA9PSAicGxvdGx5X2JydXNoZWQiKSA/ICJwbG90bHlfc2VsZWN0ZWQiIDogKGV2ZW50ID09ICJwbG90bHlfYnJ1c2hpbmciKSA/ICJwbG90bHlfc2VsZWN0aW5nIiA6IGV2ZW50OwogICAgICAgIC8vIHJlZ2lzdGVyIHRoZSBldmVudAogICAgICAgIGdyYXBoRGl2Lm9uKHBsb3RseUpTZXZlbnQsIGZ1bmN0aW9uKGQpIHsKICAgICAgICAgIFNoaW55LnNldElucHV0VmFsdWUoCiAgICAgICAgICAgIGV2ZW50ICsgIi0iICsgeC5zb3VyY2UsCiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGV2ZW50RGF0YVByZVByb2Nlc3NvcihkKSksCiAgICAgICAgICAgIHtwcmlvcml0eTogImV2ZW50In0KICAgICAgICAgICk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIAogICAgICB2YXIgc2hpbnlFdmVudHMgPSB4LnNoaW55RXZlbnRzIHx8IFtdOwogICAgICBzaGlueUV2ZW50cy5tYXAocmVnaXN0ZXJTaGlueVZhbHVlKTsKICAgIH0KICAgIAogICAgLy8gR2l2ZW4gYW4gYXJyYXkgb2Yge2N1cnZlTnVtYmVyOiB4LCBwb2ludE51bWJlcjogeX0gb2JqZWN0cywKICAgIC8vIHJldHVybiBhIGhhc2ggb2YgewogICAgLy8gICBzZXQxOiB7dmFsdWU6IFtrZXkxLCBrZXkyLCAuLi5dLCBfaXNTaW1wbGVLZXk6IGZhbHNlfSwgCiAgICAvLyAgIHNldDI6IHt2YWx1ZTogW2tleTMsIGtleTQsIC4uLl0sIF9pc1NpbXBsZUtleTogZmFsc2V9CiAgICAvLyB9CiAgICBmdW5jdGlvbiBwb2ludHNUb0tleXMocG9pbnRzKSB7CiAgICAgIHZhciBrZXlzQnlTZXQgPSB7fTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAKICAgICAgICB2YXIgdHJhY2UgPSBncmFwaERpdi5kYXRhW3BvaW50c1tpXS5jdXJ2ZU51bWJlcl07CiAgICAgICAgaWYgKCF0cmFjZS5rZXkgfHwgIXRyYWNlLnNldCkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIHNldCBkZWZhdWx0cyBmb3IgdGhpcyBrZXlTZXQKICAgICAgICAvLyBub3RlIHRoYXQgd2UgZG9uJ3QgdHJhY2sgdGhlIG5lc3RlZCBwcm9wZXJ0eSAoeWV0KSBzaW5jZSB3ZSBhbHdheXMgCiAgICAgICAgLy8gZW1pdCB0aGUgdW5pb24gLS0gaHR0cDovL2Nwc2lldmVydC5naXRodWIuaW8vdGFsa3MvMjAxNjEyMTJiLyMyMQogICAgICAgIGtleXNCeVNldFt0cmFjZS5zZXRdID0ga2V5c0J5U2V0W3RyYWNlLnNldF0gfHwgewogICAgICAgICAgdmFsdWU6IFtdLAogICAgICAgICAgX2lzU2ltcGxlS2V5OiB0cmFjZS5faXNTaW1wbGVLZXkKICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vIFVzZSBwb2ludE51bWJlciBieSBkZWZhdWx0LCBidXQgYWdncmVnYXRlZCB0cmFjZXMgc2hvdWxkIGVtaXQgcG9pbnROdW1iZXJzCiAgICAgICAgdmFyIHB0TnVtID0gcG9pbnRzW2ldLnBvaW50TnVtYmVyOwogICAgICAgIHZhciBoYXNQdE51bSA9IHR5cGVvZiBwdE51bSA9PT0gIm51bWJlciI7CiAgICAgICAgdmFyIHB0TnVtID0gaGFzUHROdW0gPyBwdE51bSA6IHBvaW50c1tpXS5wb2ludE51bWJlcnM7CiAgICAgICAgCiAgICAgICAgLy8gc2VsZWN0aW5nIGEgcG9pbnQgb2YgYSAic2ltcGxlIiB0cmFjZSBtZWFuczogc2VsZWN0IHRoZSAKICAgICAgICAvLyBlbnRpcmUga2V5IGF0dGFjaGVkIHRvIHRoaXMgdHJhY2UsIHdoaWNoIGlzIHVzZWZ1bCBmb3IsCiAgICAgICAgLy8gc2F5IGNsaWNraW5nIG9uIGEgZml0dGVkIGxpbmUgdG8gc2VsZWN0IGNvcnJlc3BvbmRpbmcgb2JzZXJ2YXRpb25zIAogICAgICAgIHZhciBrZXkgPSB0cmFjZS5faXNTaW1wbGVLZXkgPyB0cmFjZS5rZXkgOiBBcnJheS5pc0FycmF5KHB0TnVtKSA/IHB0TnVtLm1hcChmdW5jdGlvbihpZHgpIHsgcmV0dXJuIHRyYWNlLmtleVtpZHhdOyB9KSA6IHRyYWNlLmtleVtwdE51bV07CiAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDg2NTAyNS9tZXJnZS1mbGF0dGVuLWFuLWFycmF5LW9mLWFycmF5cy1pbi1qYXZhc2NyaXB0CiAgICAgICAgdmFyIGtleUZsYXQgPSB0cmFjZS5faXNOZXN0ZWRLZXkgPyBbXS5jb25jYXQuYXBwbHkoW10sIGtleSkgOiBrZXk7CiAgICAgICAgCiAgICAgICAgLy8gVE9ETzogYmV0dGVyIHRvIG9ubHkgYWRkIG5ldyB2YWx1ZXM/CiAgICAgICAga2V5c0J5U2V0W3RyYWNlLnNldF0udmFsdWUgPSBrZXlzQnlTZXRbdHJhY2Uuc2V0XS52YWx1ZS5jb25jYXQoa2V5RmxhdCk7CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiBrZXlzQnlTZXQ7CiAgICB9CiAgICAKICAgIAogICAgeC5oaWdobGlnaHQuY29sb3IgPSB4LmhpZ2hsaWdodC5jb2xvciB8fCBbXTsKICAgIC8vIG1ha2Ugc3VyZSBoaWdobGlnaHQgY29sb3IgaXMgYW4gYXJyYXkKICAgIGlmICghQXJyYXkuaXNBcnJheSh4LmhpZ2hsaWdodC5jb2xvcikpIHsKICAgICAgeC5oaWdobGlnaHQuY29sb3IgPSBbeC5oaWdobGlnaHQuY29sb3JdOwogICAgfQoKICAgIHZhciB0cmFjZU1hbmFnZXIgPSBuZXcgVHJhY2VNYW5hZ2VyKGdyYXBoRGl2LCB4LmhpZ2hsaWdodCk7CgogICAgLy8gR2F0aGVyIGFsbCAqdW5pcXVlKiBzZXRzLgogICAgdmFyIGFsbFNldHMgPSBbXTsKICAgIGZvciAodmFyIGN1cnZlSWR4ID0gMDsgY3VydmVJZHggPCB4LmRhdGEubGVuZ3RoOyBjdXJ2ZUlkeCsrKSB7CiAgICAgIHZhciBuZXdTZXQgPSB4LmRhdGFbY3VydmVJZHhdLnNldDsKICAgICAgaWYgKG5ld1NldCkgewogICAgICAgIGlmIChhbGxTZXRzLmluZGV4T2YobmV3U2V0KSA9PT0gLTEpIHsKICAgICAgICAgIGFsbFNldHMucHVzaChuZXdTZXQpOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIHJlZ2lzdGVyIGV2ZW50IGxpc3RlbmVycyBmb3IgYWxsIHNldHMKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsU2V0cy5sZW5ndGg7IGkrKykgewogICAgICAKICAgICAgdmFyIHNldCA9IGFsbFNldHNbaV07CiAgICAgIHZhciBzZWxlY3Rpb24gPSBuZXcgY3Jvc3N0YWxrLlNlbGVjdGlvbkhhbmRsZShzZXQpOwogICAgICB2YXIgZmlsdGVyID0gbmV3IGNyb3NzdGFsay5GaWx0ZXJIYW5kbGUoc2V0KTsKICAgICAgCiAgICAgIHZhciBmaWx0ZXJDaGFuZ2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmVtb3ZlQnJ1c2goZWwpOwogICAgICAgIHRyYWNlTWFuYWdlci51cGRhdGVGaWx0ZXIoc2V0LCBlLnZhbHVlKTsKICAgICAgfTsKICAgICAgZmlsdGVyLm9uKCJjaGFuZ2UiLCBmaWx0ZXJDaGFuZ2UpOwogICAgICAKICAgICAgCiAgICAgIHZhciBzZWxlY3Rpb25DaGFuZ2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgCiAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgJ3Bsb3RseV9zZWxlY3RlZCcgbm93IGZpcmluZyBwcmV2aW91c2x5IHNlbGVjdGVkCiAgICAgICAgLy8gcG9pbnRzIChpbiBhZGRpdGlvbiB0byBuZXcgb25lcykgd2hlbiBob2xkaW5nIHNoaWZ0IGtleS4gSW4gb3VyIGNhc2UsCiAgICAgICAgLy8gd2UganVzdCB3YW50IHRoZSBuZXcga2V5cyAKICAgICAgICBpZiAoeC5oaWdobGlnaHQub24gPT09ICJwbG90bHlfc2VsZWN0ZWQiICYmIHguaGlnaGxpZ2h0LnBlcnNpc3RlbnRTaGlmdCkgewogICAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTE4NzUxOC9ob3ctdG8tZ2V0LXRoZS1kaWZmZXJlbmNlLWJldHdlZW4tdHdvLWFycmF5cy1pbi1qYXZhc2NyaXB0CiAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZGlmZiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oaSkge3JldHVybiBhLmluZGV4T2YoaSkgPCAwO30pOwogICAgICAgICAgfTsKICAgICAgICAgIGUudmFsdWUgPSBlLnZhbHVlLmRpZmYoZS5vbGRWYWx1ZSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIGFycmF5IG9mICJldmVudCBvYmplY3RzIiB0cmFja2luZyB0aGUgc2VsZWN0aW9uIGhpc3RvcnkKICAgICAgICAvLyB0aGlzIGlzIHVzZWQgdG8gYXZvaWQgYWRkaW5nIHJlZHVuZGFudCBzZWxlY3Rpb25zCiAgICAgICAgdmFyIHNlbGVjdGlvbkhpc3RvcnkgPSBjcm9zc3RhbGsudmFyKCJwbG90bHlTZWxlY3Rpb25IaXN0b3J5IikuZ2V0KCkgfHwgW107CiAgICAgICAgCiAgICAgICAgLy8gQ29uc3RydWN0IGFuIGV2ZW50IG9iamVjdCAiZGVmaW5pbmciIHRoZSBjdXJyZW50IGV2ZW50LiAKICAgICAgICB2YXIgZXZlbnQgPSB7CiAgICAgICAgICByZWNlaXZlcklEOiB0cmFjZU1hbmFnZXIuZ2QuaWQsCiAgICAgICAgICBwbG90bHlTZWxlY3Rpb25Db2xvdXI6IGNyb3NzdGFsay5ncm91cChzZXQpLnZhcigicGxvdGx5U2VsZWN0aW9uQ29sb3VyIikuZ2V0KCkKICAgICAgICB9OwogICAgICAgIGV2ZW50W3NldF0gPSBlLnZhbHVlOwogICAgICAgIC8vIFRPRE86IGlzIHRoZXJlIGEgc21hcnRlciB3YXkgdG8gY2hlY2sgb2JqZWN0IGVxdWFsaXR5PwogICAgICAgIGlmIChzZWxlY3Rpb25IaXN0b3J5Lmxlbmd0aCA+IDApIHsKICAgICAgICAgIHZhciBldiA9IEpTT04uc3RyaW5naWZ5KGV2ZW50KTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0aW9uSGlzdG9yeS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgc2VsID0gSlNPTi5zdHJpbmdpZnkoc2VsZWN0aW9uSGlzdG9yeVtpXSk7CiAgICAgICAgICAgIGlmIChzZWwgPT0gZXYpIHsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gYWNjdW11bGF0ZSBoaXN0b3J5IGZvciBwZXJzaXN0ZW50IHNlbGVjdGlvbgogICAgICAgIGlmICgheC5oaWdobGlnaHQucGVyc2lzdGVudCkgewogICAgICAgICAgc2VsZWN0aW9uSGlzdG9yeSA9IFtldmVudF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHNlbGVjdGlvbkhpc3RvcnkucHVzaChldmVudCk7CiAgICAgICAgfQogICAgICAgIGNyb3NzdGFsay52YXIoInBsb3RseVNlbGVjdGlvbkhpc3RvcnkiKS5zZXQoc2VsZWN0aW9uSGlzdG9yeSk7CiAgICAgICAgCiAgICAgICAgLy8gZG8gdGhlIGFjdHVhbCB1cGRhdGluZyBvZiB0cmFjZXMsIGZyYW1lcywgYW5kIHRoZSBzZWxlY3RpemUgd2lkZ2V0CiAgICAgICAgdHJhY2VNYW5hZ2VyLnVwZGF0ZVNlbGVjdGlvbihzZXQsIGUudmFsdWUpOwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWxlY3RpemUvc2VsZWN0aXplLmpzL2Jsb2IvbWFzdGVyL2RvY3MvYXBpLm1kI21ldGhvZHNfaXRlbXMKICAgICAgICBpZiAoeC5zZWxlY3RpemUpIHsKICAgICAgICAgIGlmICgheC5oaWdobGlnaHQucGVyc2lzdGVudCB8fCBlLnZhbHVlID09PSBudWxsKSB7CiAgICAgICAgICAgIHNlbGVjdGl6ZS5jbGVhcih0cnVlKTsKICAgICAgICAgIH0KICAgICAgICAgIHNlbGVjdGl6ZS5hZGRJdGVtcyhlLnZhbHVlLCB0cnVlKTsKICAgICAgICAgIHNlbGVjdGl6ZS5jbG9zZSgpOwogICAgICAgIH0KICAgICAgfQogICAgICBzZWxlY3Rpb24ub24oImNoYW5nZSIsIHNlbGVjdGlvbkNoYW5nZSk7CiAgICAgIAogICAgICAvLyBTZXQgYSBjcm9zc3RhbGsgdmFyaWFibGUgc2VsZWN0aW9uIHZhbHVlLCB0cmlnZ2VyaW5nIGFuIHVwZGF0ZQogICAgICB2YXIgdHVybk9uID0gZnVuY3Rpb24oZSkgewogICAgICAgIGlmIChlKSB7CiAgICAgICAgICB2YXIgc2VsZWN0ZWRLZXlzID0gcG9pbnRzVG9LZXlzKGUucG9pbnRzKTsKICAgICAgICAgIC8vIEtleXMgYXJlIGdyb3VwIG5hbWVzLCB2YWx1ZXMgYXJlIGFycmF5IG9mIHNlbGVjdGVkIGtleXMgZnJvbSBncm91cC4KICAgICAgICAgIGZvciAodmFyIHNldCBpbiBzZWxlY3RlZEtleXMpIHsKICAgICAgICAgICAgaWYgKHNlbGVjdGVkS2V5cy5oYXNPd25Qcm9wZXJ0eShzZXQpKSB7CiAgICAgICAgICAgICAgc2VsZWN0aW9uLnNldChzZWxlY3RlZEtleXNbc2V0XS52YWx1ZSwge3NlbmRlcjogZWx9KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfTsKICAgICAgaWYgKHguaGlnaGxpZ2h0LmRlYm91bmNlID4gMCkgewogICAgICAgIHR1cm5PbiA9IGRlYm91bmNlKHR1cm5PbiwgeC5oaWdobGlnaHQuZGVib3VuY2UpOwogICAgICB9CiAgICAgIGdyYXBoRGl2Lm9uKHguaGlnaGxpZ2h0Lm9uLCB0dXJuT24pOwogICAgICAKICAgICAgZ3JhcGhEaXYub24oeC5oaWdobGlnaHQub2ZmLCBmdW5jdGlvbiB0dXJuT2ZmKGUpIHsKICAgICAgICAvLyByZW1vdmUgYW55IHZpc3VhbCBjbHVlcwogICAgICAgIHJlbW92ZUJydXNoKGVsKTsKICAgICAgICAvLyByZW1vdmUgYW55IHNlbGVjdGlvbiBoaXN0b3J5CiAgICAgICAgY3Jvc3N0YWxrLnZhcigicGxvdGx5U2VsZWN0aW9uSGlzdG9yeSIpLnNldChudWxsKTsKICAgICAgICAvLyB0cmlnZ2VyIHRoZSBhY3R1YWwgcmVtb3ZhbCBvZiBzZWxlY3Rpb24gdHJhY2VzCiAgICAgICAgc2VsZWN0aW9uLnNldChudWxsLCB7c2VuZGVyOiBlbH0pOwogICAgICB9KTsKICAgICAgICAgIAogICAgICAvLyByZWdpc3RlciBhIGNhbGxiYWNrIGZvciBzZWxlY3RpemUgc28gdGhhdCB0aGVyZSBpcyBiaS1kaXJlY3Rpb25hbAogICAgICAvLyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHdpZGdldCBhbmQgZGlyZWN0IG1hbmlwdWxhdGlvbiBldmVudHMKICAgICAgaWYgKHguc2VsZWN0aXplKSB7CiAgICAgICAgdmFyIHNlbGVjdGl6ZUlEID0gT2JqZWN0LmtleXMoeC5zZWxlY3RpemUpW2ldOwogICAgICAgIHZhciBpdGVtcyA9IHguc2VsZWN0aXplW3NlbGVjdGl6ZUlEXS5pdGVtczsKICAgICAgICB2YXIgZmlyc3QgPSBbe3ZhbHVlOiAiIiwgbGFiZWw6ICIoQWxsKSJ9XTsKICAgICAgICB2YXIgb3B0cyA9IHsKICAgICAgICAgIG9wdGlvbnM6IGZpcnN0LmNvbmNhdChpdGVtcyksCiAgICAgICAgICBzZWFyY2hGaWVsZDogImxhYmVsIiwKICAgICAgICAgIHZhbHVlRmllbGQ6ICJ2YWx1ZSIsCiAgICAgICAgICBsYWJlbEZpZWxkOiAibGFiZWwiLAogICAgICAgICAgbWF4SXRlbXM6IDUwCiAgICAgICAgfTsKICAgICAgICB2YXIgc2VsZWN0ID0gJCgiIyIgKyBzZWxlY3RpemVJRCkuZmluZCgic2VsZWN0IilbMF07CiAgICAgICAgdmFyIHNlbGVjdGl6ZSA9ICQoc2VsZWN0KS5zZWxlY3RpemUob3B0cylbMF0uc2VsZWN0aXplOwogICAgICAgIC8vIE5PVEU6IHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gKmRpcmVjdGx5KiBhbHRlcmluZyAKICAgICAgICAvLyBkcm9wZG93biBpdGVtcwogICAgICAgIHNlbGVjdGl6ZS5vbigiY2hhbmdlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgY3VycmVudEl0ZW1zID0gdHJhY2VNYW5hZ2VyLmdyb3VwU2VsZWN0aW9uc1tzZXRdIHx8IFtdOwogICAgICAgICAgaWYgKCF4LmhpZ2hsaWdodC5wZXJzaXN0ZW50KSB7CiAgICAgICAgICAgIHJlbW92ZUJydXNoKGVsKTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50SXRlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBzZWxlY3RpemUucmVtb3ZlSXRlbShjdXJyZW50SXRlbXNbaV0sIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgbmV3SXRlbXMgPSBzZWxlY3RpemUuaXRlbXMuZmlsdGVyKGZ1bmN0aW9uKGlkeCkgeyAKICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtcy5pbmRleE9mKGlkeCkgPCAwOwogICAgICAgICAgfSk7CiAgICAgICAgICBpZiAobmV3SXRlbXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICB0cmFjZU1hbmFnZXIudXBkYXRlU2VsZWN0aW9uKHNldCwgbmV3SXRlbXMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gSXRlbSBoYXMgYmVlbiByZW1vdmVkLi4uCiAgICAgICAgICAgIC8vIFRPRE86IHRoaXMgbG9naWMgd29uJ3Qgd29yayBmb3IgZHluYW1pY2FsbHkgY2hhbmdpbmcgcGFsZXR0ZSAKICAgICAgICAgICAgdHJhY2VNYW5hZ2VyLnVwZGF0ZVNlbGVjdGlvbihzZXQsIG51bGwpOwogICAgICAgICAgICB0cmFjZU1hbmFnZXIudXBkYXRlU2VsZWN0aW9uKHNldCwgc2VsZWN0aXplLml0ZW1zKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgfSAvLyBlbmQgb2Ygc2VsZWN0aW9uQ2hhbmdlCiAgICAKICB9IC8vIGVuZCBvZiByZW5kZXJWYWx1ZQp9KTsgLy8gZW5kIG9mIHdpZGdldCBkZWZpbml0aW9uCgovKioKICogQHBhcmFtIGdyYXBoRGl2IFRoZSBQbG90bHkgZ3JhcGggZGl2CiAqIEBwYXJhbSBoaWdobGlnaHQgQW4gb2JqZWN0IHdpdGggb3B0aW9ucyBmb3IgdXBkYXRpbmcgc2VsZWN0aW9uKHMpCiAqLwpmdW5jdGlvbiBUcmFjZU1hbmFnZXIoZ3JhcGhEaXYsIGhpZ2hsaWdodCkgewogIC8vIFRoZSBQbG90bHkgZ3JhcGggZGl2CiAgdGhpcy5nZCA9IGdyYXBoRGl2OwoKICAvLyBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgZGF0YS4KICAvLyBUT0RPOiB0cnkgdXNpbmcgTGliLmV4dGVuZEZsYXQoKSBhcyBkb25lIGluICAKICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGxvdGx5L3Bsb3RseS5qcy9wdWxsLzExMzYgCiAgdGhpcy5vcmlnRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZ3JhcGhEaXYuZGF0YSkpOwogIAogIC8vIGF2b2lkIGRvaW5nIHRoaXMgb3ZlciBhbmQgb3ZlcgogIHRoaXMub3JpZ09wYWNpdHkgPSBbXTsKICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3JpZ0RhdGEubGVuZ3RoOyBpKyspIHsKICAgIHRoaXMub3JpZ09wYWNpdHlbaV0gPSB0aGlzLm9yaWdEYXRhW2ldLm9wYWNpdHkgPT09IDAgPyAwIDogKHRoaXMub3JpZ0RhdGFbaV0ub3BhY2l0eSB8fCAxKTsKICB9CgogIC8vIGtleTogZ3JvdXAgbmFtZSwgdmFsdWU6IG51bGwgb3IgYXJyYXkgb2Yga2V5cyByZXByZXNlbnRpbmcgdGhlCiAgLy8gbW9zdCByZWNlbnRseSByZWNlaXZlZCBzZWxlY3Rpb24gZm9yIHRoYXQgZ3JvdXAuCiAgdGhpcy5ncm91cFNlbGVjdGlvbnMgPSB7fTsKICAKICAvLyBzZWxlY3Rpb24gcGFyYW1ldGVycyAoZS5nLiwgdHJhbnNpZW50IHZlcnN1cyBwZXJzaXN0ZW50IHNlbGVjdGlvbikKICB0aGlzLmhpZ2hsaWdodCA9IGhpZ2hsaWdodDsKfQoKVHJhY2VNYW5hZ2VyLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkgewogIC8vIFRPRE86IFVuaG9vayBhbGwgZXZlbnQgaGFuZGxlcnMKfTsKClRyYWNlTWFuYWdlci5wcm90b3R5cGUudXBkYXRlRmlsdGVyID0gZnVuY3Rpb24oZ3JvdXAsIGtleXMpIHsKCiAgaWYgKHR5cGVvZihrZXlzKSA9PT0gInVuZGVmaW5lZCIgfHwga2V5cyA9PT0gbnVsbCkgewogICAgCiAgICB0aGlzLmdkLmRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ0RhdGEpKTsKICAgIAogIH0gZWxzZSB7CiAgCiAgICB2YXIgdHJhY2VzID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3JpZ0RhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIHRyYWNlID0gdGhpcy5vcmlnRGF0YVtpXTsKICAgICAgaWYgKCF0cmFjZS5rZXkgfHwgdHJhY2Uuc2V0ICE9PSBncm91cCkgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIHZhciBtYXRjaEZ1bmMgPSBnZXRNYXRjaEZ1bmModHJhY2UpOwogICAgICB2YXIgbWF0Y2hlcyA9IG1hdGNoRnVuYyh0cmFjZS5rZXksIGtleXMpOwogICAgICAKICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkgewogICAgICAgIGlmICghdHJhY2UuX2lzU2ltcGxlS2V5KSB7CiAgICAgICAgICAvLyBzdWJzZXRBcnJheUF0dHJzIGRvZXNuJ3QgbXV0YXRlIHRyYWNlIChpdCBtYWtlcyBhIG1vZGlmaWVkIGNsb25lKQogICAgICAgICAgdHJhY2UgPSBzdWJzZXRBcnJheUF0dHJzKHRyYWNlLCBtYXRjaGVzKTsKICAgICAgICB9CiAgICAgICAgdHJhY2VzLnB1c2godHJhY2UpOwogICAgICB9CiAgICB9CiAgfQogIAogIHRoaXMuZ2QuZGF0YSA9IHRyYWNlczsKICBQbG90bHkucmVkcmF3KHRoaXMuZ2QpOwogIAogIC8vIE5PVEU6IHdlIHB1cnBvc2VseSBkbyBfbm90XyByZXN0b3JlIHNlbGVjdGlvbihzKSwgc2luY2Ugb24gZmlsdGVyLAogIC8vIGF4aXMgbGlrZWx5IHdpbGwgdXBkYXRlLCBjaGFuZ2luZyB0aGUgcGl4ZWwgLT4gZGF0YSBtYXBwaW5nLCBsZWFkaW5nIAogIC8vIHRvIGEgbGlrZWx5IG1pc21hdGNoIGluIHRoZSBicnVzaCBvdXRsaW5lIGFuZCBoaWdobGlnaHRlZCBtYXJrcwogIAp9OwoKVHJhY2VNYW5hZ2VyLnByb3RvdHlwZS51cGRhdGVTZWxlY3Rpb24gPSBmdW5jdGlvbihncm91cCwga2V5cykgewogIAogIGlmIChrZXlzICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KGtleXMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQga2V5cyBhcmd1bWVudDsgbnVsbCBvciBhcnJheSBleHBlY3RlZCIpOwogIH0KICAKICAvLyBpZiBzZWxlY3Rpb24gaGFzIGJlZW4gY2xlYXJlZCwgb3IgaWYgdGhpcyBpcyB0cmFuc2llbnQKICAvLyBzZWxlY3Rpb24sIGRlbGV0ZSB0aGUgInNlbGVjdGlvbiB0cmFjZXMiCiAgdmFyIG5OZXdUcmFjZXMgPSB0aGlzLmdkLmRhdGEubGVuZ3RoIC0gdGhpcy5vcmlnRGF0YS5sZW5ndGg7CiAgaWYgKGtleXMgPT09IG51bGwgfHwgIXRoaXMuaGlnaGxpZ2h0LnBlcnNpc3RlbnQgJiYgbk5ld1RyYWNlcyA+IDApIHsKICAgIHZhciB0cmFjZXNUb1JlbW92ZSA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmdkLmRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRoaXMuZ2QuZGF0YVtpXS5faXNDcm9zc3RhbGtUcmFjZSkgdHJhY2VzVG9SZW1vdmUucHVzaChpKTsKICAgIH0KICAgIFBsb3RseS5kZWxldGVUcmFjZXModGhpcy5nZCwgdHJhY2VzVG9SZW1vdmUpOwogICAgdGhpcy5ncm91cFNlbGVjdGlvbnNbZ3JvdXBdID0ga2V5czsKICB9IGVsc2UgewogICAgLy8gYWRkIHRvIHRoZSBncm91cFNlbGVjdGlvbiwgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgaXQKICAgIC8vIFRPRE86IGNhbiB0aGlzIGJlIHJlbW92ZWQ/CiAgICB0aGlzLmdyb3VwU2VsZWN0aW9uc1tncm91cF0gPSB0aGlzLmdyb3VwU2VsZWN0aW9uc1tncm91cF0gfHwgW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGsgPSBrZXlzW2ldOwogICAgICBpZiAodGhpcy5ncm91cFNlbGVjdGlvbnNbZ3JvdXBdLmluZGV4T2YoaykgPCAwKSB7CiAgICAgICAgdGhpcy5ncm91cFNlbGVjdGlvbnNbZ3JvdXBdLnB1c2goayk7CiAgICAgIH0KICAgIH0KICB9CiAgCiAgaWYgKGtleXMgPT09IG51bGwpIHsKICAgIAogICAgUGxvdGx5LnJlc3R5bGUodGhpcy5nZCwgeyJvcGFjaXR5IjogdGhpcy5vcmlnT3BhY2l0eX0pOwogICAgCiAgfSBlbHNlIGlmIChrZXlzLmxlbmd0aCA+PSAxKSB7CiAgICAKICAgIC8vIHBsYWNlaG9sZGVyIGZvciBuZXcgInNlbGVjdGlvbiB0cmFjZXMiCiAgICB2YXIgdHJhY2VzID0gW107CiAgICAvLyB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBSL2hpZ2hsaWdodC5SCiAgICB2YXIgc2VsZWN0aW9uQ29sb3VyID0gY3Jvc3N0YWxrLmdyb3VwKGdyb3VwKS52YXIoInBsb3RseVNlbGVjdGlvbkNvbG91ciIpLmdldCgpIHx8IAogICAgICB0aGlzLmhpZ2hsaWdodC5jb2xvclswXTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3JpZ0RhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgLy8gVE9ETzogdHJ5IHVzaW5nIExpYi5leHRlbmRGbGF0KCkgYXMgZG9uZSBpbiAgCiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wbG90bHkvcGxvdGx5LmpzL3B1bGwvMTEzNiAKICAgICAgdmFyIHRyYWNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdkLmRhdGFbaV0pKTsKICAgICAgaWYgKCF0cmFjZS5rZXkgfHwgdHJhY2Uuc2V0ICE9PSBncm91cCkgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIC8vIEdldCBzb3J0ZWQgYXJyYXkgb2YgbWF0Y2hpbmcgaW5kaWNlcyBpbiB0cmFjZS5rZXkKICAgICAgdmFyIG1hdGNoRnVuYyA9IGdldE1hdGNoRnVuYyh0cmFjZSk7CiAgICAgIHZhciBtYXRjaGVzID0gbWF0Y2hGdW5jKHRyYWNlLmtleSwga2V5cyk7CiAgICAgIAogICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgLy8gSWYgdGhpcyBpcyBhICJzaW1wbGUiIGtleSwgdGhhdCBtZWFucyBzZWxlY3QgdGhlIGVudGlyZSB0cmFjZQogICAgICAgIGlmICghdHJhY2UuX2lzU2ltcGxlS2V5KSB7CiAgICAgICAgICB0cmFjZSA9IHN1YnNldEFycmF5QXR0cnModHJhY2UsIG1hdGNoZXMpOwogICAgICAgIH0KICAgICAgICAvLyByZWFjaCBpbnRvIHRoZSBmdWxsIHRyYWNlIG9iamVjdCBzbyB3ZSBjYW4gcHJvcGVybHkgcmVmbGVjdCB0aGUgCiAgICAgICAgLy8gc2VsZWN0aW9uIGF0dHJpYnV0ZXMgaW4gZXZlcnkgdmlldwogICAgICAgIHZhciBkID0gdGhpcy5nZC5fZnVsbERhdGFbaV07CiAgICAgICAgCiAgICAgICAgLyogCiAgICAgICAgLyBSZWN1cnNpdmVseSBpbmhlcml0IHNlbGVjdGlvbiBhdHRyaWJ1dGVzIGZyb20gdmFyaW91cyBzb3VyY2VzLCAKICAgICAgICAvIGluIG9yZGVyIG9mIHByZWZlcmVuY2U6CiAgICAgICAgLyAgKDEpIG9mZmljaWFsIHBsb3RseS5qcyBzZWxlY3RlZCBhdHRyaWJ1dGUKICAgICAgICAvICAoMikgaGlnaGxpZ2h0KHNlbGVjdGVkID0gYXR0cnNfc2VsZWN0ZWQoLi4uKSkKICAgICAgICAqLwogICAgICAgIC8vIFRPRE86IGl0IHdvdWxkIGJlIG5lYXQgdG8gaGF2ZSBhIGRyb3Bkb3duIHRvIGR5bmFtaWNhbGx5IHNwZWNpZnkgdGhlc2UhCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdHJhY2UsIHRoaXMuaGlnaGxpZ2h0LnNlbGVjdGVkKTsKICAgICAgICAKICAgICAgICAvLyBpZiBpdCBpcyBkZWZpbmVkLCBvdmVycmlkZSBjb2xvciB3aXRoIHRoZSAiZHluYW1pYyBicnVzaCBjb2xvciIiCiAgICAgICAgaWYgKGQubWFya2VyKSB7CiAgICAgICAgICB0cmFjZS5tYXJrZXIgPSB0cmFjZS5tYXJrZXIgfHwge307CiAgICAgICAgICB0cmFjZS5tYXJrZXIuY29sb3IgPSAgc2VsZWN0aW9uQ29sb3VyIHx8IHRyYWNlLm1hcmtlci5jb2xvciB8fCBkLm1hcmtlci5jb2xvcjsKICAgICAgICB9CiAgICAgICAgaWYgKGQubGluZSkgewogICAgICAgICAgdHJhY2UubGluZSA9IHRyYWNlLmxpbmUgfHwge307CiAgICAgICAgICB0cmFjZS5saW5lLmNvbG9yID0gIHNlbGVjdGlvbkNvbG91ciB8fCB0cmFjZS5saW5lLmNvbG9yIHx8IGQubGluZS5jb2xvcjsKICAgICAgICB9CiAgICAgICAgaWYgKGQudGV4dGZvbnQpIHsKICAgICAgICAgIHRyYWNlLnRleHRmb250ID0gdHJhY2UudGV4dGZvbnQgfHwge307CiAgICAgICAgICB0cmFjZS50ZXh0Zm9udC5jb2xvciA9ICBzZWxlY3Rpb25Db2xvdXIgfHwgdHJhY2UudGV4dGZvbnQuY29sb3IgfHwgZC50ZXh0Zm9udC5jb2xvcjsKICAgICAgICB9CiAgICAgICAgaWYgKGQuZmlsbGNvbG9yKSB7CiAgICAgICAgICAvLyBUT0RPOiBzaG91bGQgc2VsZWN0aW9uQ29sb3VyIGluaGVyaXQgYWxwaGEgZnJvbSB0aGUgZXhpc3RpbmcgZmlsbGNvbG9yPwogICAgICAgICAgdHJhY2UuZmlsbGNvbG9yID0gc2VsZWN0aW9uQ29sb3VyIHx8IHRyYWNlLmZpbGxjb2xvciB8fCBkLmZpbGxjb2xvcjsKICAgICAgICB9CiAgICAgICAgLy8gYXR0YWNoIGEgc2Vuc2libGUgbmFtZS9sZWdlbmRncm91cAogICAgICAgIHRyYWNlLm5hbWUgPSB0cmFjZS5uYW1lIHx8IGtleXMuam9pbigiPGJyIC8+Iik7CiAgICAgICAgdHJhY2UubGVnZW5kZ3JvdXAgPSB0cmFjZS5sZWdlbmRncm91cCB8fCBrZXlzLmpvaW4oIjxiciAvPiIpOwogICAgICAgIAogICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgbWFwcGluZyBiZXR3ZWVuIHRoaXMgbmV3IHRyYWNlIGFuZCB0aGUgdHJhY2UgaXQgdGFyZ2V0cwogICAgICAgIC8vIChuZWNlc3NhcnkgZm9yIHVwZGF0aW5nIGZyYW1lcyB0byByZWZsZWN0IHRoZSBzZWxlY3Rpb24gdHJhY2VzKQogICAgICAgIHRyYWNlLl9vcmlnaW5hbEluZGV4ID0gaTsKICAgICAgICB0cmFjZS5fbmV3SW5kZXggPSB0aGlzLmdkLl9mdWxsRGF0YS5sZW5ndGggKyB0cmFjZXMubGVuZ3RoOwogICAgICAgIHRyYWNlLl9pc0Nyb3NzdGFsa1RyYWNlID0gdHJ1ZTsKICAgICAgICB0cmFjZXMucHVzaCh0cmFjZSk7CiAgICAgIH0KICAgIH0KICAgIAogICAgaWYgKHRyYWNlcy5sZW5ndGggPiAwKSB7CiAgICAgIAogICAgICBQbG90bHkuYWRkVHJhY2VzKHRoaXMuZ2QsIHRyYWNlcykudGhlbihmdW5jdGlvbihnZCkgewogICAgICAgIC8vIGluY3JlbWVudGFsbHkgYWRkIHNlbGVjdGlvbiB0cmFjZXMgdG8gZnJhbWVzCiAgICAgICAgLy8gKHRoaXMgaXMgaGVhdmlseSBpbnNwaXJlZCBieSBQbG90bHkuUGxvdHMubW9kaWZ5RnJhbWVzKCkgCiAgICAgICAgLy8gaW4gc3JjL3Bsb3RzL3Bsb3RzLmpzKQogICAgICAgIHZhciBfaGFzaCA9IGdkLl90cmFuc2l0aW9uRGF0YS5fZnJhbWVIYXNoOwogICAgICAgIHZhciBfZnJhbWVzID0gZ2QuX3RyYW5zaXRpb25EYXRhLl9mcmFtZXMgfHwgW107CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfZnJhbWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAKICAgICAgICAgIC8vIGFkZCB0byBfZnJhbWVzW2ldLnRyYWNlcyAqaWYqIHRoaXMgZnJhbWUgcmVmZXJlbmNlcyBzZWxlY3RlZCB0cmFjZShzKQogICAgICAgICAgdmFyIG5ld0luZGljZXMgPSBbXTsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdHJhY2VzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgIHZhciB0ciA9IHRyYWNlc1tqXTsKICAgICAgICAgICAgaWYgKF9mcmFtZXNbaV0udHJhY2VzLmluZGV4T2YodHIuX29yaWdpbmFsSW5kZXgpID4gLTEpIHsKICAgICAgICAgICAgICBuZXdJbmRpY2VzLnB1c2godHIuX25ld0luZGV4KTsKICAgICAgICAgICAgICBfZnJhbWVzW2ldLnRyYWNlcy5wdXNoKHRyLl9uZXdJbmRleCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgLy8gbm90aGluZyB0byBkby4uLgogICAgICAgICAgaWYgKG5ld0luZGljZXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICB2YXIgY3RyID0gMDsKICAgICAgICAgIHZhciBuRnJhbWVUcmFjZXMgPSBfZnJhbWVzW2ldLmRhdGEubGVuZ3RoOwogICAgICAgICAgCiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5GcmFtZVRyYWNlczsgaisrKSB7CiAgICAgICAgICAgIHZhciBmcmFtZVRyYWNlID0gX2ZyYW1lc1tpXS5kYXRhW2pdOwogICAgICAgICAgICBpZiAoIWZyYW1lVHJhY2Uua2V5IHx8IGZyYW1lVHJhY2Uuc2V0ICE9PSBncm91cCkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgbWF0Y2hGdW5jID0gZ2V0TWF0Y2hGdW5jKGZyYW1lVHJhY2UpOwogICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IG1hdGNoRnVuYyhmcmFtZVRyYWNlLmtleSwga2V5cyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgaWYgKCF0cmFjZS5faXNTaW1wbGVLZXkpIHsKICAgICAgICAgICAgICAgIGZyYW1lVHJhY2UgPSBzdWJzZXRBcnJheUF0dHJzKGZyYW1lVHJhY2UsIG1hdGNoZXMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgZCA9IGdkLl9mdWxsRGF0YVtuZXdJbmRpY2VzW2N0cl1dOwogICAgICAgICAgICAgIGlmIChkLm1hcmtlcikgewogICAgICAgICAgICAgICAgZnJhbWVUcmFjZS5tYXJrZXIgPSBkLm1hcmtlcjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGQubGluZSkgewogICAgICAgICAgICAgICAgZnJhbWVUcmFjZS5saW5lID0gZC5saW5lOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoZC50ZXh0Zm9udCkgewogICAgICAgICAgICAgICAgZnJhbWVUcmFjZS50ZXh0Zm9udCA9IGQudGV4dGZvbnQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGN0ciA9IGN0ciArIDE7CiAgICAgICAgICAgICAgX2ZyYW1lc1tpXS5kYXRhLnB1c2goZnJhbWVUcmFjZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgLy8gdXBkYXRlIGdkLl90cmFuc2l0aW9uRGF0YS5fZnJhbWVIYXNoCiAgICAgICAgICBfaGFzaFtfZnJhbWVzW2ldLm5hbWVdID0gX2ZyYW1lc1tpXTsKICAgICAgICB9CiAgICAgIAogICAgICB9KTsKICAgICAgCiAgICAgIC8vIGRpbSB0cmFjZXMgdGhhdCBoYXZlIGEgc2V0IG1hdGNoaW5nIHRoZSBzZXQgb2Ygc2VsZWN0aW9uIHNldHMKICAgICAgdmFyIHRyYWNlc1RvRGltID0gW10sCiAgICAgICAgICBvcGFjaXRpZXMgPSBbXSwKICAgICAgICAgIHNldHMgPSBPYmplY3Qua2V5cyh0aGlzLmdyb3VwU2VsZWN0aW9ucyksCiAgICAgICAgICBuID0gdGhpcy5vcmlnRGF0YS5sZW5ndGg7CiAgICAgICAgICAKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICB2YXIgb3BhY2l0eSA9IHRoaXMub3JpZ09wYWNpdHlbaV0gfHwgMTsKICAgICAgICAvLyBoYXZlIHdlIGFscmVhZHkgZGltbWVkIHRoaXMgdHJhY2U/IE9yIGlzIHRoaXMgZXZlbiB3b3J0aCBkb2luZz8KICAgICAgICBpZiAob3BhY2l0eSAhPT0gdGhpcy5nZC5fZnVsbERhdGFbaV0ub3BhY2l0eSB8fCB0aGlzLmhpZ2hsaWdodC5vcGFjaXR5RGltID09PSAxKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgLy8gaXMgdGhpcyBzZXQgYW4gZWxlbWVudCBvZiB0aGUgc2V0IG9mIHNlbGVjdGlvbiBzZXRzPwogICAgICAgIHZhciBtYXRjaGVzID0gZmluZE1hdGNoZXMoc2V0cywgW3RoaXMuZ2QuZGF0YVtpXS5zZXRdKTsKICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpIHsKICAgICAgICAgIHRyYWNlc1RvRGltLnB1c2goaSk7CiAgICAgICAgICBvcGFjaXRpZXMucHVzaChvcGFjaXR5ICogdGhpcy5oaWdobGlnaHQub3BhY2l0eURpbSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICBpZiAodHJhY2VzVG9EaW0ubGVuZ3RoID4gMCkgewogICAgICAgIFBsb3RseS5yZXN0eWxlKHRoaXMuZ2QsIHsib3BhY2l0eSI6IG9wYWNpdGllc30sIHRyYWNlc1RvRGltKTsKICAgICAgICAvLyB0dXJuIG9mZiB0aGUgc2VsZWN0ZWQvdW5zZWxlY3RlZCBBUEkKICAgICAgICBQbG90bHkucmVzdHlsZSh0aGlzLmdkLCB7InNlbGVjdGVkcG9pbnRzIjogbnVsbH0pOwogICAgICB9CiAgICAgIAogICAgfQogICAgCiAgfQp9OwoKLyogCk5vdGU6IGluIGFsbCBvZiB0aGVzZSBtYXRjaCBmdW5jdGlvbnMsIHdlIGFzc3VtZSBuZWVkbGVTZXQgKGkuZS4gdGhlIHNlbGVjdGVkIGtleXMpCmlzIGEgMUQgKG9yIGZsYXQpIGFycmF5LiBUaGUgcmVhbCBkaWZmZXJlbmNlIGlzIHRoZSBtZWFuaW5nIG9mIGhheXN0YWNrLgpmaW5kTWF0Y2hlcygpIGRvZXMgdGhlIHVzdWFsIHRoaW5nIHlvdSdkIGV4cGVjdCBmb3IgCmxpbmtlZCBicnVzaGluZyBvbiBhIHNjYXR0ZXJwbG90IG1hdHJpeC4gZmluZFNpbXBsZU1hdGNoZXMoKSByZXR1cm5zIGEgbWF0Y2ggaWZmIApoYXlzdGFjayBpcyBhIHN1YnNldCBvZiB0aGUgbmVlZGxlU2V0LiBmaW5kTmVzdGVkTWF0Y2hlcygpIHJldHVybnMgCiovCgpmdW5jdGlvbiBnZXRNYXRjaEZ1bmModHJhY2UpIHsKICByZXR1cm4gKHRyYWNlLl9pc05lc3RlZEtleSkgPyBmaW5kTmVzdGVkTWF0Y2hlcyA6IAogICAgKHRyYWNlLl9pc1NpbXBsZUtleSkgPyBmaW5kU2ltcGxlTWF0Y2hlcyA6IGZpbmRNYXRjaGVzOwp9CgovLyBmaW5kIG1hdGNoZXMgZm9yICJmbGF0IiBrZXlzCmZ1bmN0aW9uIGZpbmRNYXRjaGVzKGhheXN0YWNrLCBuZWVkbGVTZXQpIHsKICB2YXIgbWF0Y2hlcyA9IFtdOwogIGhheXN0YWNrLmZvckVhY2goZnVuY3Rpb24ob2JqLCBpKSB7CiAgICBpZiAob2JqID09PSBudWxsIHx8IG5lZWRsZVNldC5pbmRleE9mKG9iaikgPj0gMCkgewogICAgICBtYXRjaGVzLnB1c2goaSk7CiAgICB9CiAgfSk7CiAgcmV0dXJuIG1hdGNoZXM7Cn0KCi8vIGZpbmQgbWF0Y2hlcyBmb3IgInNpbXBsZSIga2V5cwpmdW5jdGlvbiBmaW5kU2ltcGxlTWF0Y2hlcyhoYXlzdGFjaywgbmVlZGxlU2V0KSB7CiAgdmFyIG1hdGNoID0gaGF5c3RhY2suZXZlcnkoZnVuY3Rpb24odmFsKSB7CiAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IG5lZWRsZVNldC5pbmRleE9mKHZhbCkgPj0gMDsKICB9KTsKICAvLyB5ZXMsIHRoaXMgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2Ugb3RoZXIgdGhhbiBjb25mb3JtaW5nIAogIC8vIHRvIHRoZSBvdXRwdXQgdHlwZSBvZiB0aGUgb3RoZXIgbWF0Y2ggZnVuY3Rpb25zCiAgcmV0dXJuIChtYXRjaCkgPyBbMF0gOiBbXQp9CgovLyBmaW5kIG1hdGNoZXMgZm9yIGEgIm5lc3RlZCIgaGF5c3RhY2sgKDJEIGFycmF5cykKZnVuY3Rpb24gZmluZE5lc3RlZE1hdGNoZXMoaGF5c3RhY2ssIG5lZWRsZVNldCkgewogIHZhciBtYXRjaGVzID0gW107CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYXlzdGFjay5sZW5ndGg7IGkrKykgewogICAgdmFyIGhheSA9IGhheXN0YWNrW2ldOwogICAgdmFyIG1hdGNoID0gaGF5LmV2ZXJ5KGZ1bmN0aW9uKHZhbCkgeyAKICAgICAgcmV0dXJuIHZhbCA9PT0gbnVsbCB8fCBuZWVkbGVTZXQuaW5kZXhPZih2YWwpID49IDA7IAogICAgfSk7CiAgICBpZiAobWF0Y2gpIHsKICAgICAgbWF0Y2hlcy5wdXNoKGkpOwogICAgfQogIH0KICByZXR1cm4gbWF0Y2hlczsKfQoKZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHsKICByZXR1cm4gKAogICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nICYmCiAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gT2JqZWN0LnByb3RvdHlwZQogICk7Cn0KCmZ1bmN0aW9uIHN1YnNldEFycmF5QXR0cnMob2JqLCBpbmRpY2VzKSB7CiAgdmFyIG5ld09iaiA9IHt9OwogIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICB2YXIgdmFsID0gb2JqW2tdOwoKICAgIGlmIChrLmNoYXJBdCgwKSA9PT0gIl8iKSB7CiAgICAgIG5ld09ialtrXSA9IHZhbDsKICAgIH0gZWxzZSBpZiAoayA9PT0gInRyYW5zZm9ybXMiICYmIEFycmF5LmlzQXJyYXkodmFsKSkgewogICAgICBuZXdPYmpba10gPSB2YWwubWFwKGZ1bmN0aW9uKHRyYW5zZm9ybSkgewogICAgICAgIHJldHVybiBzdWJzZXRBcnJheUF0dHJzKHRyYW5zZm9ybSwgaW5kaWNlcyk7CiAgICAgIH0pOwogICAgfSBlbHNlIGlmIChrID09PSAiY29sb3JzY2FsZSIgJiYgQXJyYXkuaXNBcnJheSh2YWwpKSB7CiAgICAgIG5ld09ialtrXSA9IHZhbDsKICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7CiAgICAgIG5ld09ialtrXSA9IHN1YnNldEFycmF5QXR0cnModmFsLCBpbmRpY2VzKTsKICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7CiAgICAgIG5ld09ialtrXSA9IHN1YnNldEFycmF5KHZhbCwgaW5kaWNlcyk7CiAgICB9IGVsc2UgewogICAgICBuZXdPYmpba10gPSB2YWw7CiAgICB9CiAgfSk7CiAgcmV0dXJuIG5ld09iajsKfQoKZnVuY3Rpb24gc3Vic2V0QXJyYXkoYXJyLCBpbmRpY2VzKSB7CiAgdmFyIHJlc3VsdCA9IFtdOwogIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykgewogICAgcmVzdWx0LnB1c2goYXJyW2luZGljZXNbaV1dKTsKICB9CiAgcmV0dXJuIHJlc3VsdDsKfQoKLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHJlbW92aW5nIHBsb3RseSdzIGJydXNoIApmdW5jdGlvbiByZW1vdmVCcnVzaChlbCkgewogIHZhciBvdXRsaW5lcyA9IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5zZWxlY3Qtb3V0bGluZSIpOwogIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0bGluZXMubGVuZ3RoOyBpKyspIHsKICAgIG91dGxpbmVzW2ldLnJlbW92ZSgpOwogIH0KfQoKCi8vIGh0dHBzOi8vZGF2aWR3YWxzaC5uYW1lL2phdmFzY3JpcHQtZGVib3VuY2UtZnVuY3Rpb24KCi8vIFJldHVybnMgYSBmdW5jdGlvbiwgdGhhdCwgYXMgbG9uZyBhcyBpdCBjb250aW51ZXMgdG8gYmUgaW52b2tlZCwgd2lsbCBub3QKLy8gYmUgdHJpZ2dlcmVkLiBUaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgaXQgc3RvcHMgYmVpbmcgY2FsbGVkIGZvcgovLyBOIG1pbGxpc2Vjb25kcy4gSWYgYGltbWVkaWF0ZWAgaXMgcGFzc2VkLCB0cmlnZ2VyIHRoZSBmdW5jdGlvbiBvbiB0aGUKLy8gbGVhZGluZyBlZGdlLCBpbnN0ZWFkIG9mIHRoZSB0cmFpbGluZy4KZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7Cgl2YXIgdGltZW91dDsKCXJldHVybiBmdW5jdGlvbigpIHsKCQl2YXIgY29udGV4dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7CgkJdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7CgkJCXRpbWVvdXQgPSBudWxsOwoJCQlpZiAoIWltbWVkaWF0ZSkgZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTsKCQl9OwoJCXZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0OwoJCWNsZWFyVGltZW91dCh0aW1lb3V0KTsKCQl0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7CgkJaWYgKGNhbGxOb3cpIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7Cgl9Owp9Owo="></script>
-<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKGdsb2JhbCl7InVzZSBzdHJpY3QiO3ZhciB1bmRlZmluZWQ9dm9pZCAwO3ZhciBNQVhfQVJSQVlfTEVOR1RIPTFlNTtmdW5jdGlvbiBUeXBlKHYpe3N3aXRjaCh0eXBlb2Ygdil7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiJ1bmRlZmluZWQiO2Nhc2UiYm9vbGVhbiI6cmV0dXJuImJvb2xlYW4iO2Nhc2UibnVtYmVyIjpyZXR1cm4ibnVtYmVyIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7ZGVmYXVsdDpyZXR1cm4gdj09PW51bGw/Im51bGwiOiJvYmplY3QifX1mdW5jdGlvbiBDbGFzcyh2KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHYpLnJlcGxhY2UoL15cW29iamVjdCAqfFxdJC9nLCIiKX1mdW5jdGlvbiBJc0NhbGxhYmxlKG8pe3JldHVybiB0eXBlb2Ygbz09PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gVG9PYmplY3Qodil7aWYodj09PW51bGx8fHY9PT11bmRlZmluZWQpdGhyb3cgVHlwZUVycm9yKCk7cmV0dXJuIE9iamVjdCh2KX1mdW5jdGlvbiBUb0ludDMyKHYpe3JldHVybiB2Pj4wfWZ1bmN0aW9uIFRvVWludDMyKHYpe3JldHVybiB2Pj4+MH12YXIgTE4yPU1hdGguTE4yLGFicz1NYXRoLmFicyxmbG9vcj1NYXRoLmZsb29yLGxvZz1NYXRoLmxvZyxtYXg9TWF0aC5tYXgsbWluPU1hdGgubWluLHBvdz1NYXRoLnBvdyxyb3VuZD1NYXRoLnJvdW5kOyhmdW5jdGlvbigpe3ZhciBvcmlnPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZG9tX29ubHk9IWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIngiLHt9KX1jYXRjaChfKXtyZXR1cm4gZmFsc2V9fSgpO2lmKCFvcmlnfHxkb21fb25seSl7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKG8scHJvcCxkZXNjKXtpZihvcmlnKXRyeXtyZXR1cm4gb3JpZyhvLHByb3AsZGVzYyl9Y2F0Y2goXyl7fWlmKG8hPT1PYmplY3QobykpdGhyb3cgVHlwZUVycm9yKCJPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbGVkIG9uIG5vbi1vYmplY3QiKTtpZihPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18mJiJnZXQiaW4gZGVzYylPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18uY2FsbChvLHByb3AsZGVzYy5nZXQpO2lmKE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXyYmInNldCJpbiBkZXNjKU9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXy5jYWxsKG8scHJvcCxkZXNjLnNldCk7aWYoInZhbHVlImluIGRlc2Mpb1twcm9wXT1kZXNjLnZhbHVlO3JldHVybiBvfX19KSgpO2Z1bmN0aW9uIG1ha2VBcnJheUFjY2Vzc29ycyhvYmope2lmKG9iai5sZW5ndGg+TUFYX0FSUkFZX0xFTkdUSCl0aHJvdyBSYW5nZUVycm9yKCJBcnJheSB0b28gbGFyZ2UgZm9yIHBvbHlmaWxsIik7ZnVuY3Rpb24gbWFrZUFycmF5QWNjZXNzb3IoaW5kZXgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosaW5kZXgse2dldDpmdW5jdGlvbigpe3JldHVybiBvYmouX2dldHRlcihpbmRleCl9LHNldDpmdW5jdGlvbih2KXtvYmouX3NldHRlcihpbmRleCx2KX0sZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTpmYWxzZX0pfXZhciBpO2ZvcihpPTA7aTxvYmoubGVuZ3RoO2krPTEpe21ha2VBcnJheUFjY2Vzc29yKGkpfX1mdW5jdGlvbiBhc19zaWduZWQodmFsdWUsYml0cyl7dmFyIHM9MzItYml0cztyZXR1cm4gdmFsdWU8PHM+PnN9ZnVuY3Rpb24gYXNfdW5zaWduZWQodmFsdWUsYml0cyl7dmFyIHM9MzItYml0cztyZXR1cm4gdmFsdWU8PHM+Pj5zfWZ1bmN0aW9uIHBhY2tJOChuKXtyZXR1cm5bbiYyNTVdfWZ1bmN0aW9uIHVucGFja0k4KGJ5dGVzKXtyZXR1cm4gYXNfc2lnbmVkKGJ5dGVzWzBdLDgpfWZ1bmN0aW9uIHBhY2tVOChuKXtyZXR1cm5bbiYyNTVdfWZ1bmN0aW9uIHVucGFja1U4KGJ5dGVzKXtyZXR1cm4gYXNfdW5zaWduZWQoYnl0ZXNbMF0sOCl9ZnVuY3Rpb24gcGFja1U4Q2xhbXBlZChuKXtuPXJvdW5kKE51bWJlcihuKSk7cmV0dXJuW248MD8wOm4+MjU1PzI1NTpuJjI1NV19ZnVuY3Rpb24gcGFja0kxNihuKXtyZXR1cm5bbj4+OCYyNTUsbiYyNTVdfWZ1bmN0aW9uIHVucGFja0kxNihieXRlcyl7cmV0dXJuIGFzX3NpZ25lZChieXRlc1swXTw8OHxieXRlc1sxXSwxNil9ZnVuY3Rpb24gcGFja1UxNihuKXtyZXR1cm5bbj4+OCYyNTUsbiYyNTVdfWZ1bmN0aW9uIHVucGFja1UxNihieXRlcyl7cmV0dXJuIGFzX3Vuc2lnbmVkKGJ5dGVzWzBdPDw4fGJ5dGVzWzFdLDE2KX1mdW5jdGlvbiBwYWNrSTMyKG4pe3JldHVybltuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LG4mMjU1XX1mdW5jdGlvbiB1bnBhY2tJMzIoYnl0ZXMpe3JldHVybiBhc19zaWduZWQoYnl0ZXNbMF08PDI0fGJ5dGVzWzFdPDwxNnxieXRlc1syXTw8OHxieXRlc1szXSwzMil9ZnVuY3Rpb24gcGFja1UzMihuKXtyZXR1cm5bbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSxuJjI1NV19ZnVuY3Rpb24gdW5wYWNrVTMyKGJ5dGVzKXtyZXR1cm4gYXNfdW5zaWduZWQoYnl0ZXNbMF08PDI0fGJ5dGVzWzFdPDwxNnxieXRlc1syXTw8OHxieXRlc1szXSwzMil9ZnVuY3Rpb24gcGFja0lFRUU3NTQodixlYml0cyxmYml0cyl7dmFyIGJpYXM9KDE8PGViaXRzLTEpLTEscyxlLGYsbG4saSxiaXRzLHN0cixieXRlcztmdW5jdGlvbiByb3VuZFRvRXZlbihuKXt2YXIgdz1mbG9vcihuKSxmPW4tdztpZihmPC41KXJldHVybiB3O2lmKGY+LjUpcmV0dXJuIHcrMTtyZXR1cm4gdyUyP3crMTp3fWlmKHYhPT12KXtlPSgxPDxlYml0cyktMTtmPXBvdygyLGZiaXRzLTEpO3M9MH1lbHNlIGlmKHY9PT1JbmZpbml0eXx8dj09PS1JbmZpbml0eSl7ZT0oMTw8ZWJpdHMpLTE7Zj0wO3M9djwwPzE6MH1lbHNlIGlmKHY9PT0wKXtlPTA7Zj0wO3M9MS92PT09LUluZmluaXR5PzE6MH1lbHNle3M9djwwO3Y9YWJzKHYpO2lmKHY+PXBvdygyLDEtYmlhcykpe2U9bWluKGZsb29yKGxvZyh2KS9MTjIpLDEwMjMpO2Y9cm91bmRUb0V2ZW4odi9wb3coMixlKSpwb3coMixmYml0cykpO2lmKGYvcG93KDIsZmJpdHMpPj0yKXtlPWUrMTtmPTF9aWYoZT5iaWFzKXtlPSgxPDxlYml0cyktMTtmPTB9ZWxzZXtlPWUrYmlhcztmPWYtcG93KDIsZmJpdHMpfX1lbHNle2U9MDtmPXJvdW5kVG9FdmVuKHYvcG93KDIsMS1iaWFzLWZiaXRzKSl9fWJpdHM9W107Zm9yKGk9ZmJpdHM7aTtpLT0xKXtiaXRzLnB1c2goZiUyPzE6MCk7Zj1mbG9vcihmLzIpfWZvcihpPWViaXRzO2k7aS09MSl7Yml0cy5wdXNoKGUlMj8xOjApO2U9Zmxvb3IoZS8yKX1iaXRzLnB1c2gocz8xOjApO2JpdHMucmV2ZXJzZSgpO3N0cj1iaXRzLmpvaW4oIiIpO2J5dGVzPVtdO3doaWxlKHN0ci5sZW5ndGgpe2J5dGVzLnB1c2gocGFyc2VJbnQoc3RyLnN1YnN0cmluZygwLDgpLDIpKTtzdHI9c3RyLnN1YnN0cmluZyg4KX1yZXR1cm4gYnl0ZXN9ZnVuY3Rpb24gdW5wYWNrSUVFRTc1NChieXRlcyxlYml0cyxmYml0cyl7dmFyIGJpdHM9W10saSxqLGIsc3RyLGJpYXMscyxlLGY7Zm9yKGk9Ynl0ZXMubGVuZ3RoO2k7aS09MSl7Yj1ieXRlc1tpLTFdO2ZvcihqPTg7ajtqLT0xKXtiaXRzLnB1c2goYiUyPzE6MCk7Yj1iPj4xfX1iaXRzLnJldmVyc2UoKTtzdHI9Yml0cy5qb2luKCIiKTtiaWFzPSgxPDxlYml0cy0xKS0xO3M9cGFyc2VJbnQoc3RyLnN1YnN0cmluZygwLDEpLDIpPy0xOjE7ZT1wYXJzZUludChzdHIuc3Vic3RyaW5nKDEsMStlYml0cyksMik7Zj1wYXJzZUludChzdHIuc3Vic3RyaW5nKDErZWJpdHMpLDIpO2lmKGU9PT0oMTw8ZWJpdHMpLTEpe3JldHVybiBmIT09MD9OYU46cypJbmZpbml0eX1lbHNlIGlmKGU+MCl7cmV0dXJuIHMqcG93KDIsZS1iaWFzKSooMStmL3BvdygyLGZiaXRzKSl9ZWxzZSBpZihmIT09MCl7cmV0dXJuIHMqcG93KDIsLShiaWFzLTEpKSooZi9wb3coMixmYml0cykpfWVsc2V7cmV0dXJuIHM8MD8tMDowfX1mdW5jdGlvbiB1bnBhY2tGNjQoYil7cmV0dXJuIHVucGFja0lFRUU3NTQoYiwxMSw1Mil9ZnVuY3Rpb24gcGFja0Y2NCh2KXtyZXR1cm4gcGFja0lFRUU3NTQodiwxMSw1Mil9ZnVuY3Rpb24gdW5wYWNrRjMyKGIpe3JldHVybiB1bnBhY2tJRUVFNzU0KGIsOCwyMyl9ZnVuY3Rpb24gcGFja0YzMih2KXtyZXR1cm4gcGFja0lFRUU3NTQodiw4LDIzKX0oZnVuY3Rpb24oKXtmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpe2xlbmd0aD1Ub0ludDMyKGxlbmd0aCk7aWYobGVuZ3RoPDApdGhyb3cgUmFuZ2VFcnJvcigiQXJyYXlCdWZmZXIgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnl0ZUxlbmd0aCIse3ZhbHVlOmxlbmd0aH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfYnl0ZXMiLHt2YWx1ZTpBcnJheShsZW5ndGgpfSk7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSs9MSl0aGlzLl9ieXRlc1tpXT0wfWdsb2JhbC5BcnJheUJ1ZmZlcj1nbG9iYWwuQXJyYXlCdWZmZXJ8fEFycmF5QnVmZmVyO2Z1bmN0aW9uICRUeXBlZEFycmF5JCgpe2lmKCFhcmd1bWVudHMubGVuZ3RofHx0eXBlb2YgYXJndW1lbnRzWzBdIT09Im9iamVjdCIpe3JldHVybiBmdW5jdGlvbihsZW5ndGgpe2xlbmd0aD1Ub0ludDMyKGxlbmd0aCk7aWYobGVuZ3RoPDApdGhyb3cgUmFuZ2VFcnJvcigibGVuZ3RoIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsZW5ndGgiLHt2YWx1ZTpsZW5ndGh9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnl0ZUxlbmd0aCIse3ZhbHVlOmxlbmd0aCp0aGlzLkJZVEVTX1BFUl9FTEVNRU5UfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImJ1ZmZlciIse3ZhbHVlOm5ldyBBcnJheUJ1ZmZlcih0aGlzLmJ5dGVMZW5ndGgpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImJ5dGVPZmZzZXQiLHt2YWx1ZTowfSl9LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1pZihhcmd1bWVudHMubGVuZ3RoPj0xJiZUeXBlKGFyZ3VtZW50c1swXSk9PT0ib2JqZWN0IiYmYXJndW1lbnRzWzBdaW5zdGFuY2VvZiAkVHlwZWRBcnJheSQpe3JldHVybiBmdW5jdGlvbih0eXBlZEFycmF5KXtpZih0aGlzLmNvbnN0cnVjdG9yIT09dHlwZWRBcnJheS5jb25zdHJ1Y3Rvcil0aHJvdyBUeXBlRXJyb3IoKTt2YXIgYnl0ZUxlbmd0aD10eXBlZEFycmF5Lmxlbmd0aCp0aGlzLkJZVEVTX1BFUl9FTEVNRU5UO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJidWZmZXIiLHt2YWx1ZTpuZXcgQXJyYXlCdWZmZXIoYnl0ZUxlbmd0aCl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnl0ZUxlbmd0aCIse3ZhbHVlOmJ5dGVMZW5ndGh9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnl0ZU9mZnNldCIse3ZhbHVlOjB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibGVuZ3RoIix7dmFsdWU6dHlwZWRBcnJheS5sZW5ndGh9KTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krPTEpdGhpcy5fc2V0dGVyKGksdHlwZWRBcnJheS5fZ2V0dGVyKGkpKX0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWlmKGFyZ3VtZW50cy5sZW5ndGg+PTEmJlR5cGUoYXJndW1lbnRzWzBdKT09PSJvYmplY3QiJiYhKGFyZ3VtZW50c1swXWluc3RhbmNlb2YgJFR5cGVkQXJyYXkkKSYmIShhcmd1bWVudHNbMF1pbnN0YW5jZW9mIEFycmF5QnVmZmVyfHxDbGFzcyhhcmd1bWVudHNbMF0pPT09IkFycmF5QnVmZmVyIikpe3JldHVybiBmdW5jdGlvbihhcnJheSl7dmFyIGJ5dGVMZW5ndGg9YXJyYXkubGVuZ3RoKnRoaXMuQllURVNfUEVSX0VMRU1FTlQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImJ1ZmZlciIse3ZhbHVlOm5ldyBBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJieXRlTGVuZ3RoIix7dmFsdWU6Ynl0ZUxlbmd0aH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJieXRlT2Zmc2V0Iix7dmFsdWU6MH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsZW5ndGgiLHt2YWx1ZTphcnJheS5sZW5ndGh9KTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krPTEpe3ZhciBzPWFycmF5W2ldO3RoaXMuX3NldHRlcihpLE51bWJlcihzKSl9fS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9aWYoYXJndW1lbnRzLmxlbmd0aD49MSYmVHlwZShhcmd1bWVudHNbMF0pPT09Im9iamVjdCImJihhcmd1bWVudHNbMF1pbnN0YW5jZW9mIEFycmF5QnVmZmVyfHxDbGFzcyhhcmd1bWVudHNbMF0pPT09IkFycmF5QnVmZmVyIikpe3JldHVybiBmdW5jdGlvbihidWZmZXIsYnl0ZU9mZnNldCxsZW5ndGgpe2J5dGVPZmZzZXQ9VG9VaW50MzIoYnl0ZU9mZnNldCk7aWYoYnl0ZU9mZnNldD5idWZmZXIuYnl0ZUxlbmd0aCl0aHJvdyBSYW5nZUVycm9yKCJieXRlT2Zmc2V0IG91dCBvZiByYW5nZSIpO2lmKGJ5dGVPZmZzZXQldGhpcy5CWVRFU19QRVJfRUxFTUVOVCl0aHJvdyBSYW5nZUVycm9yKCJidWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUuIik7aWYobGVuZ3RoPT09dW5kZWZpbmVkKXt2YXIgYnl0ZUxlbmd0aD1idWZmZXIuYnl0ZUxlbmd0aC1ieXRlT2Zmc2V0O2lmKGJ5dGVMZW5ndGgldGhpcy5CWVRFU19QRVJfRUxFTUVOVCl0aHJvdyBSYW5nZUVycm9yKCJsZW5ndGggb2YgYnVmZmVyIG1pbnVzIGJ5dGVPZmZzZXQgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSIpO2xlbmd0aD1ieXRlTGVuZ3RoL3RoaXMuQllURVNfUEVSX0VMRU1FTlR9ZWxzZXtsZW5ndGg9VG9VaW50MzIobGVuZ3RoKTtieXRlTGVuZ3RoPWxlbmd0aCp0aGlzLkJZVEVTX1BFUl9FTEVNRU5UfWlmKGJ5dGVPZmZzZXQrYnl0ZUxlbmd0aD5idWZmZXIuYnl0ZUxlbmd0aCl0aHJvdyBSYW5nZUVycm9yKCJieXRlT2Zmc2V0IGFuZCBsZW5ndGggcmVmZXJlbmNlIGFuIGFyZWEgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJidWZmZXIiLHt2YWx1ZTpidWZmZXJ9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnl0ZUxlbmd0aCIse3ZhbHVlOmJ5dGVMZW5ndGh9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnl0ZU9mZnNldCIse3ZhbHVlOmJ5dGVPZmZzZXR9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibGVuZ3RoIix7dmFsdWU6bGVuZ3RofSl9LmFwcGx5KHRoaXMsYXJndW1lbnRzKX10aHJvdyBUeXBlRXJyb3IoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoJFR5cGVkQXJyYXkkLCJmcm9tIix7dmFsdWU6ZnVuY3Rpb24oaXRlcmFibGUpe3JldHVybiBuZXcgdGhpcyhpdGVyYWJsZSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JCwib2YiLHt2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdGhpcyhhcmd1bWVudHMpfX0pO3ZhciAkVHlwZWRBcnJheVByb3RvdHlwZSQ9e307JFR5cGVkQXJyYXkkLnByb3RvdHlwZT0kVHlwZWRBcnJheVByb3RvdHlwZSQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsIl9nZXR0ZXIiLHt2YWx1ZTpmdW5jdGlvbihpbmRleCl7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXRocm93IFN5bnRheEVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO2luZGV4PVRvVWludDMyKGluZGV4KTtpZihpbmRleD49dGhpcy5sZW5ndGgpcmV0dXJuIHVuZGVmaW5lZDt2YXIgYnl0ZXM9W10saSxvO2ZvcihpPTAsbz10aGlzLmJ5dGVPZmZzZXQraW5kZXgqdGhpcy5CWVRFU19QRVJfRUxFTUVOVDtpPHRoaXMuQllURVNfUEVSX0VMRU1FTlQ7aSs9MSxvKz0xKXtieXRlcy5wdXNoKHRoaXMuYnVmZmVyLl9ieXRlc1tvXSl9cmV0dXJuIHRoaXMuX3VucGFjayhieXRlcyl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsImdldCIse3ZhbHVlOiRUeXBlZEFycmF5JC5wcm90b3R5cGUuX2dldHRlcn0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJfc2V0dGVyIix7dmFsdWU6ZnVuY3Rpb24oaW5kZXgsdmFsdWUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBTeW50YXhFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiKTtpbmRleD1Ub1VpbnQzMihpbmRleCk7aWYoaW5kZXg+PXRoaXMubGVuZ3RoKXJldHVybjt2YXIgYnl0ZXM9dGhpcy5fcGFjayh2YWx1ZSksaSxvO2ZvcihpPTAsbz10aGlzLmJ5dGVPZmZzZXQraW5kZXgqdGhpcy5CWVRFU19QRVJfRUxFTUVOVDtpPHRoaXMuQllURVNfUEVSX0VMRU1FTlQ7aSs9MSxvKz0xKXt0aGlzLmJ1ZmZlci5fYnl0ZXNbb109Ynl0ZXNbaV19fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJjb25zdHJ1Y3RvciIse3ZhbHVlOiRUeXBlZEFycmF5JH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJjb3B5V2l0aGluIix7dmFsdWU6ZnVuY3Rpb24odGFyZ2V0LHN0YXJ0KXt2YXIgZW5kPWFyZ3VtZW50c1syXTt2YXIgbz1Ub09iamVjdCh0aGlzKTt2YXIgbGVuVmFsPW8ubGVuZ3RoO3ZhciBsZW49VG9VaW50MzIobGVuVmFsKTtsZW49bWF4KGxlbiwwKTt2YXIgcmVsYXRpdmVUYXJnZXQ9VG9JbnQzMih0YXJnZXQpO3ZhciB0bztpZihyZWxhdGl2ZVRhcmdldDwwKXRvPW1heChsZW4rcmVsYXRpdmVUYXJnZXQsMCk7ZWxzZSB0bz1taW4ocmVsYXRpdmVUYXJnZXQsbGVuKTt2YXIgcmVsYXRpdmVTdGFydD1Ub0ludDMyKHN0YXJ0KTt2YXIgZnJvbTtpZihyZWxhdGl2ZVN0YXJ0PDApZnJvbT1tYXgobGVuK3JlbGF0aXZlU3RhcnQsMCk7ZWxzZSBmcm9tPW1pbihyZWxhdGl2ZVN0YXJ0LGxlbik7dmFyIHJlbGF0aXZlRW5kO2lmKGVuZD09PXVuZGVmaW5lZClyZWxhdGl2ZUVuZD1sZW47ZWxzZSByZWxhdGl2ZUVuZD1Ub0ludDMyKGVuZCk7dmFyIGZpbmFsO2lmKHJlbGF0aXZlRW5kPDApZmluYWw9bWF4KGxlbityZWxhdGl2ZUVuZCwwKTtlbHNlIGZpbmFsPW1pbihyZWxhdGl2ZUVuZCxsZW4pO3ZhciBjb3VudD1taW4oZmluYWwtZnJvbSxsZW4tdG8pO3ZhciBkaXJlY3Rpb247aWYoZnJvbTx0byYmdG88ZnJvbStjb3VudCl7ZGlyZWN0aW9uPS0xO2Zyb209ZnJvbStjb3VudC0xO3RvPXRvK2NvdW50LTF9ZWxzZXtkaXJlY3Rpb249MX13aGlsZShjb3VudD4wKXtvLl9zZXR0ZXIodG8sby5fZ2V0dGVyKGZyb20pKTtmcm9tPWZyb20rZGlyZWN0aW9uO3RvPXRvK2RpcmVjdGlvbjtjb3VudD1jb3VudC0xfXJldHVybiBvfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJldmVyeSIse3ZhbHVlOmZ1bmN0aW9uKGNhbGxiYWNrZm4pe2lmKHRoaXM9PT11bmRlZmluZWR8fHRoaXM9PT1udWxsKXRocm93IFR5cGVFcnJvcigpO3ZhciB0PU9iamVjdCh0aGlzKTt2YXIgbGVuPVRvVWludDMyKHQubGVuZ3RoKTtpZighSXNDYWxsYWJsZShjYWxsYmFja2ZuKSl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdGhpc0FyZz1hcmd1bWVudHNbMV07Zm9yKHZhciBpPTA7aTxsZW47aSsrKXtpZighY2FsbGJhY2tmbi5jYWxsKHRoaXNBcmcsdC5fZ2V0dGVyKGkpLGksdCkpcmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJmaWxsIix7dmFsdWU6ZnVuY3Rpb24odmFsdWUpe3ZhciBzdGFydD1hcmd1bWVudHNbMV0sZW5kPWFyZ3VtZW50c1syXTt2YXIgbz1Ub09iamVjdCh0aGlzKTt2YXIgbGVuVmFsPW8ubGVuZ3RoO3ZhciBsZW49VG9VaW50MzIobGVuVmFsKTtsZW49bWF4KGxlbiwwKTt2YXIgcmVsYXRpdmVTdGFydD1Ub0ludDMyKHN0YXJ0KTt2YXIgaztpZihyZWxhdGl2ZVN0YXJ0PDApaz1tYXgobGVuK3JlbGF0aXZlU3RhcnQsMCk7ZWxzZSBrPW1pbihyZWxhdGl2ZVN0YXJ0LGxlbik7dmFyIHJlbGF0aXZlRW5kO2lmKGVuZD09PXVuZGVmaW5lZClyZWxhdGl2ZUVuZD1sZW47ZWxzZSByZWxhdGl2ZUVuZD1Ub0ludDMyKGVuZCk7dmFyIGZpbmFsO2lmKHJlbGF0aXZlRW5kPDApZmluYWw9bWF4KGxlbityZWxhdGl2ZUVuZCwwKTtlbHNlIGZpbmFsPW1pbihyZWxhdGl2ZUVuZCxsZW4pO3doaWxlKGs8ZmluYWwpe28uX3NldHRlcihrLHZhbHVlKTtrKz0xfXJldHVybiBvfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJmaWx0ZXIiLHt2YWx1ZTpmdW5jdGlvbihjYWxsYmFja2ZuKXtpZih0aGlzPT09dW5kZWZpbmVkfHx0aGlzPT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdD1PYmplY3QodGhpcyk7dmFyIGxlbj1Ub1VpbnQzMih0Lmxlbmd0aCk7aWYoIUlzQ2FsbGFibGUoY2FsbGJhY2tmbikpdGhyb3cgVHlwZUVycm9yKCk7dmFyIHJlcz1bXTt2YXIgdGhpc3A9YXJndW1lbnRzWzFdO2Zvcih2YXIgaT0wO2k8bGVuO2krKyl7dmFyIHZhbD10Ll9nZXR0ZXIoaSk7aWYoY2FsbGJhY2tmbi5jYWxsKHRoaXNwLHZhbCxpLHQpKXJlcy5wdXNoKHZhbCl9cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHJlcyl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsImZpbmQiLHt2YWx1ZTpmdW5jdGlvbihwcmVkaWNhdGUpe3ZhciBvPVRvT2JqZWN0KHRoaXMpO3ZhciBsZW5WYWx1ZT1vLmxlbmd0aDt2YXIgbGVuPVRvVWludDMyKGxlblZhbHVlKTtpZighSXNDYWxsYWJsZShwcmVkaWNhdGUpKXRocm93IFR5cGVFcnJvcigpO3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dW5kZWZpbmVkO3ZhciBrPTA7d2hpbGUoazxsZW4pe3ZhciBrVmFsdWU9by5fZ2V0dGVyKGspO3ZhciB0ZXN0UmVzdWx0PXByZWRpY2F0ZS5jYWxsKHQsa1ZhbHVlLGssbyk7aWYoQm9vbGVhbih0ZXN0UmVzdWx0KSlyZXR1cm4ga1ZhbHVlOysra31yZXR1cm4gdW5kZWZpbmVkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJmaW5kSW5kZXgiLHt2YWx1ZTpmdW5jdGlvbihwcmVkaWNhdGUpe3ZhciBvPVRvT2JqZWN0KHRoaXMpO3ZhciBsZW5WYWx1ZT1vLmxlbmd0aDt2YXIgbGVuPVRvVWludDMyKGxlblZhbHVlKTtpZighSXNDYWxsYWJsZShwcmVkaWNhdGUpKXRocm93IFR5cGVFcnJvcigpO3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dW5kZWZpbmVkO3ZhciBrPTA7d2hpbGUoazxsZW4pe3ZhciBrVmFsdWU9by5fZ2V0dGVyKGspO3ZhciB0ZXN0UmVzdWx0PXByZWRpY2F0ZS5jYWxsKHQsa1ZhbHVlLGssbyk7aWYoQm9vbGVhbih0ZXN0UmVzdWx0KSlyZXR1cm4gazsrK2t9cmV0dXJuLTF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsImZvckVhY2giLHt2YWx1ZTpmdW5jdGlvbihjYWxsYmFja2ZuKXtpZih0aGlzPT09dW5kZWZpbmVkfHx0aGlzPT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdD1PYmplY3QodGhpcyk7dmFyIGxlbj1Ub1VpbnQzMih0Lmxlbmd0aCk7aWYoIUlzQ2FsbGFibGUoY2FsbGJhY2tmbikpdGhyb3cgVHlwZUVycm9yKCk7dmFyIHRoaXNwPWFyZ3VtZW50c1sxXTtmb3IodmFyIGk9MDtpPGxlbjtpKyspY2FsbGJhY2tmbi5jYWxsKHRoaXNwLHQuX2dldHRlcihpKSxpLHQpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJpbmRleE9mIix7dmFsdWU6ZnVuY3Rpb24oc2VhcmNoRWxlbWVudCl7aWYodGhpcz09PXVuZGVmaW5lZHx8dGhpcz09PW51bGwpdGhyb3cgVHlwZUVycm9yKCk7dmFyIHQ9T2JqZWN0KHRoaXMpO3ZhciBsZW49VG9VaW50MzIodC5sZW5ndGgpO2lmKGxlbj09PTApcmV0dXJuLTE7dmFyIG49MDtpZihhcmd1bWVudHMubGVuZ3RoPjApe249TnVtYmVyKGFyZ3VtZW50c1sxXSk7aWYobiE9PW4pe249MH1lbHNlIGlmKG4hPT0wJiZuIT09MS8wJiZuIT09LSgxLzApKXtuPShuPjB8fC0xKSpmbG9vcihhYnMobikpfX1pZihuPj1sZW4pcmV0dXJuLTE7dmFyIGs9bj49MD9uOm1heChsZW4tYWJzKG4pLDApO2Zvcig7azxsZW47aysrKXtpZih0Ll9nZXR0ZXIoayk9PT1zZWFyY2hFbGVtZW50KXtyZXR1cm4ga319cmV0dXJuLTF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsImpvaW4iLHt2YWx1ZTpmdW5jdGlvbihzZXBhcmF0b3Ipe2lmKHRoaXM9PT11bmRlZmluZWR8fHRoaXM9PT1udWxsKXRocm93IFR5cGVFcnJvcigpO3ZhciB0PU9iamVjdCh0aGlzKTt2YXIgbGVuPVRvVWludDMyKHQubGVuZ3RoKTt2YXIgdG1wPUFycmF5KGxlbik7Zm9yKHZhciBpPTA7aTxsZW47KytpKXRtcFtpXT10Ll9nZXR0ZXIoaSk7cmV0dXJuIHRtcC5qb2luKHNlcGFyYXRvcj09PXVuZGVmaW5lZD8iLCI6c2VwYXJhdG9yKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJFR5cGVkQXJyYXkkLnByb3RvdHlwZSwibGFzdEluZGV4T2YiLHt2YWx1ZTpmdW5jdGlvbihzZWFyY2hFbGVtZW50KXtpZih0aGlzPT09dW5kZWZpbmVkfHx0aGlzPT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdD1PYmplY3QodGhpcyk7dmFyIGxlbj1Ub1VpbnQzMih0Lmxlbmd0aCk7aWYobGVuPT09MClyZXR1cm4tMTt2YXIgbj1sZW47aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtuPU51bWJlcihhcmd1bWVudHNbMV0pO2lmKG4hPT1uKXtuPTB9ZWxzZSBpZihuIT09MCYmbiE9PTEvMCYmbiE9PS0oMS8wKSl7bj0obj4wfHwtMSkqZmxvb3IoYWJzKG4pKX19dmFyIGs9bj49MD9taW4obixsZW4tMSk6bGVuLWFicyhuKTtmb3IoO2s+PTA7ay0tKXtpZih0Ll9nZXR0ZXIoayk9PT1zZWFyY2hFbGVtZW50KXJldHVybiBrfXJldHVybi0xfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJtYXAiLHt2YWx1ZTpmdW5jdGlvbihjYWxsYmFja2ZuKXtpZih0aGlzPT09dW5kZWZpbmVkfHx0aGlzPT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdD1PYmplY3QodGhpcyk7dmFyIGxlbj1Ub1VpbnQzMih0Lmxlbmd0aCk7aWYoIUlzQ2FsbGFibGUoY2FsbGJhY2tmbikpdGhyb3cgVHlwZUVycm9yKCk7dmFyIHJlcz1bXTtyZXMubGVuZ3RoPWxlbjt2YXIgdGhpc3A9YXJndW1lbnRzWzFdO2Zvcih2YXIgaT0wO2k8bGVuO2krKylyZXNbaV09Y2FsbGJhY2tmbi5jYWxsKHRoaXNwLHQuX2dldHRlcihpKSxpLHQpO3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcihyZXMpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkVHlwZWRBcnJheSQucHJvdG90eXBlLCJyZWR1Y2UiLHt2YWx1ZTpmdW5jdGlvbihjYWxsYmFja2ZuKXtpZih0aGlzPT09dW5kZWZpbmVkfHx0aGlzPT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdD1PYmplY3QodGhpcyk7dmFyIGxlbj1Ub1VpbnQzMih0Lmxlbmd0aCk7aWYoIUlzQ2FsbGFibGUoY2FsbGJhY2tmbikpdGhyb3cgVHlwZUVycm9yKCk7aWYobGVuPT09MCYmYXJndW1lbnRzLmxlbmd0aD09PTEpdGhyb3cgVHlwZUVycm9yKCk7dmFyIGs9MDt2YXIgYWNjdW11bGF0b3I7aWYoYXJndW1lbnRzLmxlbmd0aD49Mil7YWNjdW11bGF0b3I9YXJndW1lbnRzWzFdfWVsc2V7YWNjdW11bGF0b3I9dC5fZ2V0dGVyKGsrKyl9d2hpbGUoazxsZW4pe2FjY3VtdWxhdG9yPWNhbGxiYWNrZm4uY2FsbCh1bmRlZmluZWQsYWNjdW11bGF0b3IsdC5fZ2V0dGVyKGspLGssdCk7aysrfXJldHVybiBhY2N1bXVsYXRvcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJFR5cGVkQXJyYXkkLnByb3RvdHlwZSwicmVkdWNlUmlnaHQiLHt2YWx1ZTpmdW5jdGlvbihjYWxsYmFja2ZuKXtpZih0aGlzPT09dW5kZWZpbmVkfHx0aGlzPT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdD1PYmplY3QodGhpcyk7dmFyIGxlbj1Ub1VpbnQzMih0Lmxlbmd0aCk7aWYoIUlzQ2FsbGFibGUoY2FsbGJhY2tmbikpdGhyb3cgVHlwZUVycm9yKCk7aWYobGVuPT09MCYmYXJndW1lbnRzLmxlbmd0aD09PTEpdGhyb3cgVHlwZUVycm9yKCk7dmFyIGs9bGVuLTE7dmFyIGFjY3VtdWxhdG9yO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpe2FjY3VtdWxhdG9yPWFyZ3VtZW50c1sxXX1lbHNle2FjY3VtdWxhdG9yPXQuX2dldHRlcihrLS0pfXdoaWxlKGs+PTApe2FjY3VtdWxhdG9yPWNhbGxiYWNrZm4uY2FsbCh1bmRlZmluZWQsYWNjdW11bGF0b3IsdC5fZ2V0dGVyKGspLGssdCk7ay0tfXJldHVybiBhY2N1bXVsYXRvcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJFR5cGVkQXJyYXkkLnByb3RvdHlwZSwicmV2ZXJzZSIse3ZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcz09PXVuZGVmaW5lZHx8dGhpcz09PW51bGwpdGhyb3cgVHlwZUVycm9yKCk7dmFyIHQ9T2JqZWN0KHRoaXMpO3ZhciBsZW49VG9VaW50MzIodC5sZW5ndGgpO3ZhciBoYWxmPWZsb29yKGxlbi8yKTtmb3IodmFyIGk9MCxqPWxlbi0xO2k8aGFsZjsrK2ksLS1qKXt2YXIgdG1wPXQuX2dldHRlcihpKTt0Ll9zZXR0ZXIoaSx0Ll9nZXR0ZXIoaikpO3QuX3NldHRlcihqLHRtcCl9cmV0dXJuIHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsInNldCIse3ZhbHVlOmZ1bmN0aW9uKGluZGV4LHZhbHVlKXtpZihhcmd1bWVudHMubGVuZ3RoPDEpdGhyb3cgU3ludGF4RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7dmFyIGFycmF5LHNlcXVlbmNlLG9mZnNldCxsZW4saSxzLGQsYnl0ZU9mZnNldCxieXRlTGVuZ3RoLHRtcDtpZih0eXBlb2YgYXJndW1lbnRzWzBdPT09Im9iamVjdCImJmFyZ3VtZW50c1swXS5jb25zdHJ1Y3Rvcj09PXRoaXMuY29uc3RydWN0b3Ipe2FycmF5PWFyZ3VtZW50c1swXTtvZmZzZXQ9VG9VaW50MzIoYXJndW1lbnRzWzFdKTtpZihvZmZzZXQrYXJyYXkubGVuZ3RoPnRoaXMubGVuZ3RoKXt0aHJvdyBSYW5nZUVycm9yKCJPZmZzZXQgcGx1cyBsZW5ndGggb2YgYXJyYXkgaXMgb3V0IG9mIHJhbmdlIil9Ynl0ZU9mZnNldD10aGlzLmJ5dGVPZmZzZXQrb2Zmc2V0KnRoaXMuQllURVNfUEVSX0VMRU1FTlQ7Ynl0ZUxlbmd0aD1hcnJheS5sZW5ndGgqdGhpcy5CWVRFU19QRVJfRUxFTUVOVDtpZihhcnJheS5idWZmZXI9PT10aGlzLmJ1ZmZlcil7dG1wPVtdO2ZvcihpPTAscz1hcnJheS5ieXRlT2Zmc2V0O2k8Ynl0ZUxlbmd0aDtpKz0xLHMrPTEpe3RtcFtpXT1hcnJheS5idWZmZXIuX2J5dGVzW3NdfWZvcihpPTAsZD1ieXRlT2Zmc2V0O2k8Ynl0ZUxlbmd0aDtpKz0xLGQrPTEpe3RoaXMuYnVmZmVyLl9ieXRlc1tkXT10bXBbaV19fWVsc2V7Zm9yKGk9MCxzPWFycmF5LmJ5dGVPZmZzZXQsZD1ieXRlT2Zmc2V0O2k8Ynl0ZUxlbmd0aDtpKz0xLHMrPTEsZCs9MSl7dGhpcy5idWZmZXIuX2J5dGVzW2RdPWFycmF5LmJ1ZmZlci5fYnl0ZXNbc119fX1lbHNlIGlmKHR5cGVvZiBhcmd1bWVudHNbMF09PT0ib2JqZWN0IiYmdHlwZW9mIGFyZ3VtZW50c1swXS5sZW5ndGghPT0idW5kZWZpbmVkIil7c2VxdWVuY2U9YXJndW1lbnRzWzBdO2xlbj1Ub1VpbnQzMihzZXF1ZW5jZS5sZW5ndGgpO29mZnNldD1Ub1VpbnQzMihhcmd1bWVudHNbMV0pO2lmKG9mZnNldCtsZW4+dGhpcy5sZW5ndGgpe3Rocm93IFJhbmdlRXJyb3IoIk9mZnNldCBwbHVzIGxlbmd0aCBvZiBhcnJheSBpcyBvdXQgb2YgcmFuZ2UiKX1mb3IoaT0wO2k8bGVuO2krPTEpe3M9c2VxdWVuY2VbaV07dGhpcy5fc2V0dGVyKG9mZnNldCtpLE51bWJlcihzKSl9fWVsc2V7dGhyb3cgVHlwZUVycm9yKCJVbmV4cGVjdGVkIGFyZ3VtZW50IHR5cGUocykiKX19fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsInNsaWNlIix7dmFsdWU6ZnVuY3Rpb24oc3RhcnQsZW5kKXt2YXIgbz1Ub09iamVjdCh0aGlzKTt2YXIgbGVuVmFsPW8ubGVuZ3RoO3ZhciBsZW49VG9VaW50MzIobGVuVmFsKTt2YXIgcmVsYXRpdmVTdGFydD1Ub0ludDMyKHN0YXJ0KTt2YXIgaz1yZWxhdGl2ZVN0YXJ0PDA/bWF4KGxlbityZWxhdGl2ZVN0YXJ0LDApOm1pbihyZWxhdGl2ZVN0YXJ0LGxlbik7dmFyIHJlbGF0aXZlRW5kPWVuZD09PXVuZGVmaW5lZD9sZW46VG9JbnQzMihlbmQpO3ZhciBmaW5hbD1yZWxhdGl2ZUVuZDwwP21heChsZW4rcmVsYXRpdmVFbmQsMCk6bWluKHJlbGF0aXZlRW5kLGxlbik7dmFyIGNvdW50PWZpbmFsLWs7dmFyIGM9by5jb25zdHJ1Y3Rvcjt2YXIgYT1uZXcgYyhjb3VudCk7dmFyIG49MDt3aGlsZShrPGZpbmFsKXt2YXIga1ZhbHVlPW8uX2dldHRlcihrKTthLl9zZXR0ZXIobixrVmFsdWUpOysrazsrK259cmV0dXJuIGF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KCRUeXBlZEFycmF5JC5wcm90b3R5cGUsInNvbWUiLHt2YWx1ZTpmdW5jdGlvbihjYWxsYmFja2ZuKXtpZih0aGlzPT09dW5kZWZpbmVkfHx0aGlzPT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoKTt2YXIgdD1PYmplY3QodGhpcyk7dmFyIGxlbj1Ub1VpbnQzMih0Lmxlbmd0aCk7aWYoIUlzQ2FsbGFibGUoY2FsbGJhY2tmbikpdGhyb3cgVHlwZUVycm9yKCk7dmFyIHRoaXNwPWFyZ3VtZW50c1sxXTtmb3IodmFyIGk9MDtpPGxlbjtpKyspe2lmKGNhbGxiYWNrZm4uY2FsbCh0aGlzcCx0Ll9nZXR0ZXIoaSksaSx0KSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJFR5cGVkQXJyYXkkLnByb3RvdHlwZSwic29ydCIse3ZhbHVlOmZ1bmN0aW9uKGNvbXBhcmVmbil7aWYodGhpcz09PXVuZGVmaW5lZHx8dGhpcz09PW51bGwpdGhyb3cgVHlwZUVycm9yKCk7dmFyIHQ9T2JqZWN0KHRoaXMpO3ZhciBsZW49VG9VaW50MzIodC5sZW5ndGgpO3ZhciB0bXA9QXJyYXkobGVuKTtmb3IodmFyIGk9MDtpPGxlbjsrK2kpdG1wW2ldPXQuX2dldHRlcihpKTtpZihjb21wYXJlZm4pdG1wLnNvcnQoY29tcGFyZWZuKTtlbHNlIHRtcC5zb3J0KCk7Zm9yKGk9MDtpPGxlbjsrK2kpdC5fc2V0dGVyKGksdG1wW2ldKTtyZXR1cm4gdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoJFR5cGVkQXJyYXkkLnByb3RvdHlwZSwic3ViYXJyYXkiLHt2YWx1ZTpmdW5jdGlvbihzdGFydCxlbmQpe2Z1bmN0aW9uIGNsYW1wKHYsbWluLG1heCl7cmV0dXJuIHY8bWluP21pbjp2Pm1heD9tYXg6dn1zdGFydD1Ub0ludDMyKHN0YXJ0KTtlbmQ9VG9JbnQzMihlbmQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSl7c3RhcnQ9MH1pZihhcmd1bWVudHMubGVuZ3RoPDIpe2VuZD10aGlzLmxlbmd0aH1pZihzdGFydDwwKXtzdGFydD10aGlzLmxlbmd0aCtzdGFydH1pZihlbmQ8MCl7ZW5kPXRoaXMubGVuZ3RoK2VuZH1zdGFydD1jbGFtcChzdGFydCwwLHRoaXMubGVuZ3RoKTtlbmQ9Y2xhbXAoZW5kLDAsdGhpcy5sZW5ndGgpO3ZhciBsZW49ZW5kLXN0YXJ0O2lmKGxlbjwwKXtsZW49MH1yZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3N0YXJ0KnRoaXMuQllURVNfUEVSX0VMRU1FTlQsbGVuKX19KTtmdW5jdGlvbiBtYWtlVHlwZWRBcnJheShlbGVtZW50U2l6ZSxwYWNrLHVucGFjayl7dmFyIFR5cGVkQXJyYXk9ZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29uc3RydWN0b3IiLHt2YWx1ZTpUeXBlZEFycmF5fSk7JFR5cGVkQXJyYXkkLmFwcGx5KHRoaXMsYXJndW1lbnRzKTttYWtlQXJyYXlBY2Nlc3NvcnModGhpcyl9O2lmKCJfX3Byb3RvX18iaW4gVHlwZWRBcnJheSl7VHlwZWRBcnJheS5fX3Byb3RvX189JFR5cGVkQXJyYXkkfWVsc2V7VHlwZWRBcnJheS5mcm9tPSRUeXBlZEFycmF5JC5mcm9tO1R5cGVkQXJyYXkub2Y9JFR5cGVkQXJyYXkkLm9mfVR5cGVkQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ9ZWxlbWVudFNpemU7dmFyIFR5cGVkQXJyYXlQcm90b3R5cGU9ZnVuY3Rpb24oKXt9O1R5cGVkQXJyYXlQcm90b3R5cGUucHJvdG90eXBlPSRUeXBlZEFycmF5UHJvdG90eXBlJDtUeXBlZEFycmF5LnByb3RvdHlwZT1uZXcgVHlwZWRBcnJheVByb3RvdHlwZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVHlwZWRBcnJheS5wcm90b3R5cGUsIkJZVEVTX1BFUl9FTEVNRU5UIix7dmFsdWU6ZWxlbWVudFNpemV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVHlwZWRBcnJheS5wcm90b3R5cGUsIl9wYWNrIix7dmFsdWU6cGFja30pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShUeXBlZEFycmF5LnByb3RvdHlwZSwiX3VucGFjayIse3ZhbHVlOnVucGFja30pO3JldHVybiBUeXBlZEFycmF5fXZhciBJbnQ4QXJyYXk9bWFrZVR5cGVkQXJyYXkoMSxwYWNrSTgsdW5wYWNrSTgpO3ZhciBVaW50OEFycmF5PW1ha2VUeXBlZEFycmF5KDEscGFja1U4LHVucGFja1U4KTt2YXIgVWludDhDbGFtcGVkQXJyYXk9bWFrZVR5cGVkQXJyYXkoMSxwYWNrVThDbGFtcGVkLHVucGFja1U4KTt2YXIgSW50MTZBcnJheT1tYWtlVHlwZWRBcnJheSgyLHBhY2tJMTYsdW5wYWNrSTE2KTt2YXIgVWludDE2QXJyYXk9bWFrZVR5cGVkQXJyYXkoMixwYWNrVTE2LHVucGFja1UxNik7dmFyIEludDMyQXJyYXk9bWFrZVR5cGVkQXJyYXkoNCxwYWNrSTMyLHVucGFja0kzMik7dmFyIFVpbnQzMkFycmF5PW1ha2VUeXBlZEFycmF5KDQscGFja1UzMix1bnBhY2tVMzIpO3ZhciBGbG9hdDMyQXJyYXk9bWFrZVR5cGVkQXJyYXkoNCxwYWNrRjMyLHVucGFja0YzMik7dmFyIEZsb2F0NjRBcnJheT1tYWtlVHlwZWRBcnJheSg4LHBhY2tGNjQsdW5wYWNrRjY0KTtnbG9iYWwuSW50OEFycmF5PWdsb2JhbC5JbnQ4QXJyYXl8fEludDhBcnJheTtnbG9iYWwuVWludDhBcnJheT1nbG9iYWwuVWludDhBcnJheXx8VWludDhBcnJheTtnbG9iYWwuVWludDhDbGFtcGVkQXJyYXk9Z2xvYmFsLlVpbnQ4Q2xhbXBlZEFycmF5fHxVaW50OENsYW1wZWRBcnJheTtnbG9iYWwuSW50MTZBcnJheT1nbG9iYWwuSW50MTZBcnJheXx8SW50MTZBcnJheTtnbG9iYWwuVWludDE2QXJyYXk9Z2xvYmFsLlVpbnQxNkFycmF5fHxVaW50MTZBcnJheTtnbG9iYWwuSW50MzJBcnJheT1nbG9iYWwuSW50MzJBcnJheXx8SW50MzJBcnJheTtnbG9iYWwuVWludDMyQXJyYXk9Z2xvYmFsLlVpbnQzMkFycmF5fHxVaW50MzJBcnJheTtnbG9iYWwuRmxvYXQzMkFycmF5PWdsb2JhbC5GbG9hdDMyQXJyYXl8fEZsb2F0MzJBcnJheTtnbG9iYWwuRmxvYXQ2NEFycmF5PWdsb2JhbC5GbG9hdDY0QXJyYXl8fEZsb2F0NjRBcnJheX0pKCk7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihhcnJheSxpbmRleCl7cmV0dXJuIElzQ2FsbGFibGUoYXJyYXkuZ2V0KT9hcnJheS5nZXQoaW5kZXgpOmFycmF5W2luZGV4XX12YXIgSVNfQklHX0VORElBTj1mdW5jdGlvbigpe3ZhciB1MTZhcnJheT1uZXcgVWludDE2QXJyYXkoWzQ2NjBdKSx1OGFycmF5PW5ldyBVaW50OEFycmF5KHUxNmFycmF5LmJ1ZmZlcik7cmV0dXJuIHIodThhcnJheSwwKT09PTE4fSgpO2Z1bmN0aW9uIERhdGFWaWV3KGJ1ZmZlcixieXRlT2Zmc2V0LGJ5dGVMZW5ndGgpe2lmKCEoYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fENsYXNzKGJ1ZmZlcik9PT0iQXJyYXlCdWZmZXIiKSl0aHJvdyBUeXBlRXJyb3IoKTtieXRlT2Zmc2V0PVRvVWludDMyKGJ5dGVPZmZzZXQpO2lmKGJ5dGVPZmZzZXQ+YnVmZmVyLmJ5dGVMZW5ndGgpdGhyb3cgUmFuZ2VFcnJvcigiYnl0ZU9mZnNldCBvdXQgb2YgcmFuZ2UiKTtpZihieXRlTGVuZ3RoPT09dW5kZWZpbmVkKWJ5dGVMZW5ndGg9YnVmZmVyLmJ5dGVMZW5ndGgtYnl0ZU9mZnNldDtlbHNlIGJ5dGVMZW5ndGg9VG9VaW50MzIoYnl0ZUxlbmd0aCk7aWYoYnl0ZU9mZnNldCtieXRlTGVuZ3RoPmJ1ZmZlci5ieXRlTGVuZ3RoKXRocm93IFJhbmdlRXJyb3IoImJ5dGVPZmZzZXQgYW5kIGxlbmd0aCByZWZlcmVuY2UgYW4gYXJlYSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImJ1ZmZlciIse3ZhbHVlOmJ1ZmZlcn0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJieXRlTGVuZ3RoIix7dmFsdWU6Ynl0ZUxlbmd0aH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJieXRlT2Zmc2V0Iix7dmFsdWU6Ynl0ZU9mZnNldH0pfWZ1bmN0aW9uIG1ha2VHZXR0ZXIoYXJyYXlUeXBlKXtyZXR1cm4gZnVuY3Rpb24gR2V0Vmlld1ZhbHVlKGJ5dGVPZmZzZXQsbGl0dGxlRW5kaWFuKXtieXRlT2Zmc2V0PVRvVWludDMyKGJ5dGVPZmZzZXQpO2lmKGJ5dGVPZmZzZXQrYXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5UPnRoaXMuYnl0ZUxlbmd0aCl0aHJvdyBSYW5nZUVycm9yKCJBcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UiKTtieXRlT2Zmc2V0Kz10aGlzLmJ5dGVPZmZzZXQ7dmFyIHVpbnQ4QXJyYXk9bmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIsYnl0ZU9mZnNldCxhcnJheVR5cGUuQllURVNfUEVSX0VMRU1FTlQpLGJ5dGVzPVtdO2Zvcih2YXIgaT0wO2k8YXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5UO2krPTEpYnl0ZXMucHVzaChyKHVpbnQ4QXJyYXksaSkpO2lmKEJvb2xlYW4obGl0dGxlRW5kaWFuKT09PUJvb2xlYW4oSVNfQklHX0VORElBTikpYnl0ZXMucmV2ZXJzZSgpO3JldHVybiByKG5ldyBhcnJheVR5cGUobmV3IFVpbnQ4QXJyYXkoYnl0ZXMpLmJ1ZmZlciksMCl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhVmlldy5wcm90b3R5cGUsImdldFVpbnQ4Iix7dmFsdWU6bWFrZUdldHRlcihVaW50OEFycmF5KX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhVmlldy5wcm90b3R5cGUsImdldEludDgiLHt2YWx1ZTptYWtlR2V0dGVyKEludDhBcnJheSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YVZpZXcucHJvdG90eXBlLCJnZXRVaW50MTYiLHt2YWx1ZTptYWtlR2V0dGVyKFVpbnQxNkFycmF5KX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhVmlldy5wcm90b3R5cGUsImdldEludDE2Iix7dmFsdWU6bWFrZUdldHRlcihJbnQxNkFycmF5KX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhVmlldy5wcm90b3R5cGUsImdldFVpbnQzMiIse3ZhbHVlOm1ha2VHZXR0ZXIoVWludDMyQXJyYXkpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWaWV3LnByb3RvdHlwZSwiZ2V0SW50MzIiLHt2YWx1ZTptYWtlR2V0dGVyKEludDMyQXJyYXkpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWaWV3LnByb3RvdHlwZSwiZ2V0RmxvYXQzMiIse3ZhbHVlOm1ha2VHZXR0ZXIoRmxvYXQzMkFycmF5KX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhVmlldy5wcm90b3R5cGUsImdldEZsb2F0NjQiLHt2YWx1ZTptYWtlR2V0dGVyKEZsb2F0NjRBcnJheSl9KTtmdW5jdGlvbiBtYWtlU2V0dGVyKGFycmF5VHlwZSl7cmV0dXJuIGZ1bmN0aW9uIFNldFZpZXdWYWx1ZShieXRlT2Zmc2V0LHZhbHVlLGxpdHRsZUVuZGlhbil7Ynl0ZU9mZnNldD1Ub1VpbnQzMihieXRlT2Zmc2V0KTtpZihieXRlT2Zmc2V0K2FycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVD50aGlzLmJ5dGVMZW5ndGgpdGhyb3cgUmFuZ2VFcnJvcigiQXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlIik7dmFyIHR5cGVBcnJheT1uZXcgYXJyYXlUeXBlKFt2YWx1ZV0pLGJ5dGVBcnJheT1uZXcgVWludDhBcnJheSh0eXBlQXJyYXkuYnVmZmVyKSxieXRlcz1bXSxpLGJ5dGVWaWV3O2ZvcihpPTA7aTxhcnJheVR5cGUuQllURVNfUEVSX0VMRU1FTlQ7aSs9MSlieXRlcy5wdXNoKHIoYnl0ZUFycmF5LGkpKTtpZihCb29sZWFuKGxpdHRsZUVuZGlhbik9PT1Cb29sZWFuKElTX0JJR19FTkRJQU4pKWJ5dGVzLnJldmVyc2UoKTtieXRlVmlldz1uZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcixieXRlT2Zmc2V0LGFycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVCk7Ynl0ZVZpZXcuc2V0KGJ5dGVzKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWaWV3LnByb3RvdHlwZSwic2V0VWludDgiLHt2YWx1ZTptYWtlU2V0dGVyKFVpbnQ4QXJyYXkpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWaWV3LnByb3RvdHlwZSwic2V0SW50OCIse3ZhbHVlOm1ha2VTZXR0ZXIoSW50OEFycmF5KX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhVmlldy5wcm90b3R5cGUsInNldFVpbnQxNiIse3ZhbHVlOm1ha2VTZXR0ZXIoVWludDE2QXJyYXkpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWaWV3LnByb3RvdHlwZSwic2V0SW50MTYiLHt2YWx1ZTptYWtlU2V0dGVyKEludDE2QXJyYXkpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWaWV3LnByb3RvdHlwZSwic2V0VWludDMyIix7dmFsdWU6bWFrZVNldHRlcihVaW50MzJBcnJheSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YVZpZXcucHJvdG90eXBlLCJzZXRJbnQzMiIse3ZhbHVlOm1ha2VTZXR0ZXIoSW50MzJBcnJheSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YVZpZXcucHJvdG90eXBlLCJzZXRGbG9hdDMyIix7dmFsdWU6bWFrZVNldHRlcihGbG9hdDMyQXJyYXkpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWaWV3LnByb3RvdHlwZSwic2V0RmxvYXQ2NCIse3ZhbHVlOm1ha2VTZXR0ZXIoRmxvYXQ2NEFycmF5KX0pO2dsb2JhbC5EYXRhVmlldz1nbG9iYWwuRGF0YVZpZXd8fERhdGFWaWV3fSkoKX0pKHRoaXMpOw=="></script>
-<link href="data:text/css;charset=utf-8,%0A%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%20%7B%0Amargin%2Dleft%3A%20%2D30px%3B%0Amargin%2Dright%3A%20%2D30px%3B%0Awhite%2Dspace%3A%20normal%3B%0A%7D%0A%0Abody%20%3E%20%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%20%7B%0Amargin%2Dleft%3A%20auto%3B%0Amargin%2Dright%3A%20auto%3B%0A%7D%0A%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%20%7B%0Adisplay%3A%20inline%2Dblock%3B%0Apadding%2Dright%3A%2012px%3B%0Avertical%2Dalign%3A%20top%3B%0A%7D%0A%40media%20only%20screen%20and%20%28max%2Dwidth%3A480px%29%20%7B%0A%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%20%7B%0Adisplay%3A%20block%3B%0Apadding%2Dright%3A%20inherit%3B%0A%7D%0A%7D%0A" rel="stylesheet" />
-<script src="data:application/x-javascript;base64,IWZ1bmN0aW9uIG8odSxhLGwpe2Z1bmN0aW9uIHMobixlKXtpZighYVtuXSl7aWYoIXVbbl0pe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFlJiZ0KXJldHVybiB0KG4sITApO2lmKGYpcmV0dXJuIGYobiwhMCk7dmFyIHI9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJyIpO3Rocm93IHIuY29kZT0iTU9EVUxFX05PVF9GT1VORCIscn12YXIgaT1hW25dPXtleHBvcnRzOnt9fTt1W25dWzBdLmNhbGwoaS5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXVbbl1bMV1bZV07cmV0dXJuIHModHx8ZSl9LGksaS5leHBvcnRzLG8sdSxhLGwpfXJldHVybiBhW25dLmV4cG9ydHN9Zm9yKHZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGU9MDtlPGwubGVuZ3RoO2UrKylzKGxbZV0pO3JldHVybiBzfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5fdHlwZXM9e30sdGhpcy5fc2VxPTB9cmV0dXJuIHIoZSxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fdHlwZXNbZV07bnx8KG49dGhpcy5fdHlwZXNbZV09e30pO3ZhciByPSJzdWIiK3RoaXMuX3NlcSsrO3JldHVybiBuW3JdPXQscn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl90eXBlc1tlXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSYmbltyXT09PXQpcmV0dXJuIGRlbGV0ZSBuW3JdLHI7cmV0dXJuITF9aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiEoIW58fCFuW3RdKSYmKGRlbGV0ZSBuW3RdLHQpO3Rocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB0eXBlIGZvciBsaXN0ZW5lciIpfX0se2tleToidHJpZ2dlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3R5cGVzW2VdO2Zvcih2YXIgaSBpbiByKXIuaGFzT3duUHJvcGVydHkoaSkmJnJbaV0uY2FsbChuLHQpfX1dKSxlfSgpO24uZGVmYXVsdD1pfSx7fV0sMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5GaWx0ZXJIYW5kbGU9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGk9bChlKCIuL2V2ZW50cyIpKSxvPWwoZSgiLi9maWx0ZXJzZXQiKSksdT1sKGUoIi4vZ3JvdXAiKSksYT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBzPTE7bi5GaWx0ZXJIYW5kbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IGEuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX2ZpbHRlclNldD1udWxsLHRoaXMuX2ZpbHRlclZhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPWEuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5faWQ9ImZpbHRlciIrcysrLHRoaXMuc2V0R3JvdXAoZSl9cmV0dXJuIHIobixbe2tleToic2V0R3JvdXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzO2lmKHRoaXMuX2dyb3VwIT09ZSYmKCh0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl9maWx0ZXJWYXImJih0aGlzLl9maWx0ZXJWYXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLmNsZWFyKCksdGhpcy5fdmFyT25DaGFuZ2VTdWI9bnVsbCx0aGlzLl9maWx0ZXJWYXI9bnVsbCx0aGlzLl9maWx0ZXJTZXQ9bnVsbCksdGhpcy5fZ3JvdXA9ZSkpKXtlPSgwLHUuZGVmYXVsdCkoZSksdGhpcy5fZmlsdGVyU2V0PSh0PWUudmFyKCJmaWx0ZXJzZXQiKSwobj10LmdldCgpKXx8KG49bmV3IG8uZGVmYXVsdCx0LnNldChuKSksbiksdGhpcy5fZmlsdGVyVmFyPSgwLHUuZGVmYXVsdCkoZSkudmFyKCJmaWx0ZXIiKTt2YXIgaT10aGlzLl9maWx0ZXJWYXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7ci5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUscil9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1pfX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGEuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5jbGVhcigpLHRoaXMuc2V0R3JvdXAobnVsbCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LmNsZWFyKHRoaXMuX2lkKSx0aGlzLl9vbkNoYW5nZShlKSl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LnVwZGF0ZSh0aGlzLl9pZCxlKSx0aGlzLl9vbkNoYW5nZSh0KSl9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vbihlLHQpfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9lbWl0dGVyLm9mZihlLHQpfX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9maWx0ZXJTZXQmJnRoaXMuX2ZpbHRlclZhci5zZXQodGhpcy5fZmlsdGVyU2V0LnZhbHVlLHRoaXMuX21lcmdlRXh0cmFJbmZvKGUpKX19LHtrZXk6ImZpbHRlcmVkS2V5cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpbHRlclNldD90aGlzLl9maWx0ZXJTZXQudmFsdWU6bnVsbH19XSksbn0oKX0seyIuL2V2ZW50cyI6MSwiLi9maWx0ZXJzZXQiOjMsIi4vZ3JvdXAiOjQsIi4vdXRpbCI6MTF9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxhPWUoIi4vdXRpbCIpO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZT09PXQ/MDplPHQ/LTE6dDxlPzE6dm9pZCAwfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMucmVzZXQoKX1yZXR1cm4gcihlLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9oYW5kbGVzPXt9LHRoaXMuX2tleXM9e30sdGhpcy5fdmFsdWU9bnVsbCx0aGlzLl9hY3RpdmVIYW5kbGVzPTB9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7bnVsbCE9PXQmJih0PXQuc2xpY2UoMCkpLnNvcnQobCk7dmFyIG49KDAsYS5kaWZmU29ydGVkTGlzdHMpKHRoaXMuX2hhbmRsZXNbZV0sdCkscj1uLmFkZGVkLGk9bi5yZW1vdmVkO3RoaXMuX2hhbmRsZXNbZV09dDtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyl0aGlzLl9rZXlzW3Jbb11dPSh0aGlzLl9rZXlzW3Jbb11dfHwwKSsxO2Zvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKXRoaXMuX2tleXNbaVt1XV0tLTt0aGlzLl91cGRhdGVWYWx1ZSh0KX19LHtrZXk6Il91cGRhdGVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5fYWxsS2V5cyx0PU9iamVjdC5rZXlzKHRoaXMuX2hhbmRsZXMpLmxlbmd0aDtpZigwPT09dCl0aGlzLl92YWx1ZT1udWxsO2Vsc2V7dGhpcy5fdmFsdWU9W107Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3RoaXMuX2tleXNbZVtuXV09PT10JiZ0aGlzLl92YWx1ZS5wdXNoKGVbbl0pfX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dGhpcy5faGFuZGxlc1tlXSl7dmFyIHQ9dGhpcy5faGFuZGxlc1tlXTt0fHwodD1bXSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5fa2V5c1t0W25dXS0tO2RlbGV0ZSB0aGlzLl9oYW5kbGVzW2VdLHRoaXMuX3VwZGF0ZVZhbHVlKCl9fX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6Il9hbGxLZXlzIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Qua2V5cyh0aGlzLl9rZXlzKTtyZXR1cm4gZS5zb3J0KGwpLGV9fV0pLGV9KCk7bi5kZWZhdWx0PWl9LHsiLi91dGlsIjoxMX1dLDQ6W2Z1bmN0aW9uKGwsZSxzKXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfTtzLmRlZmF1bHQ9ZnVuY3Rpb24gZSh0KXt7aWYodCYmInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB1Lmhhc093blByb3BlcnR5KHQpfHwodVt0XT1uZXcgYSh0KSksdVt0XTtpZigib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpJiZ0Ll92YXJzJiZ0LnZhcilyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpJiYxPT10Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0WzBdKXJldHVybiBlKHRbMF0pO3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBncm91cE5hbWUgYXJndW1lbnQiKX19O3ZhciB0LGk9bCgiLi92YXIiKSxvPSh0PWkpJiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fTtlLl9fY3Jvc3N0YWxrX2dyb3Vwcz1lLl9fY3Jvc3N0YWxrX2dyb3Vwc3x8e307dmFyIHU9ZS5fX2Nyb3NzdGFsa19ncm91cHM7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMubmFtZT1lLHRoaXMuX3ZhcnM9e319cmV0dXJuIG4odCxbe2tleToidmFyIix2YWx1ZTpmdW5jdGlvbihlKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YXIgbmFtZSIpO3JldHVybiB0aGlzLl92YXJzLmhhc093blByb3BlcnR5KGUpfHwodGhpcy5fdmFyc1tlXT1uZXcgby5kZWZhdWx0KHRoaXMsZSkpLHRoaXMuX3ZhcnNbZV19fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhciBuYW1lIik7cmV0dXJuIHRoaXMuX3ZhcnMuaGFzT3duUHJvcGVydHkoZSl9fV0pLHR9KCl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi92YXIiOjEyfV0sNTpbZnVuY3Rpb24oZixlLGMpeyhmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0LG49ZigiLi9ncm91cCIpLHI9KHQ9bikmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9LGk9ZigiLi9zZWxlY3Rpb24iKSxvPWYoIi4vZmlsdGVyIiksdT1mKCIuL2lucHV0Iik7ZigiLi9pbnB1dF9zZWxlY3RpemUiKSxmKCIuL2lucHV0X2NoZWNrYm94Z3JvdXAiKSxmKCIuL2lucHV0X3NsaWRlciIpO3ZhciBhPSgwLHIuZGVmYXVsdCkoImRlZmF1bHQiKTtmdW5jdGlvbiBsKGUpe3JldHVybiBhLnZhcihlKX1lLlNoaW55JiZlLlNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCJ1cGRhdGUtY2xpZW50LXZhbHVlIixmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUuZ3JvdXA/KDAsci5kZWZhdWx0KShlLmdyb3VwKS52YXIoZS5uYW1lKS5zZXQoZS52YWx1ZSk6bChlLm5hbWUpLnNldChlLnZhbHVlKX0pO3ZhciBzPXtncm91cDpyLmRlZmF1bHQsdmFyOmwsaGFzOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhcyhlKX0sU2VsZWN0aW9uSGFuZGxlOmkuU2VsZWN0aW9uSGFuZGxlLEZpbHRlckhhbmRsZTpvLkZpbHRlckhhbmRsZSxiaW5kOnUuYmluZH07Yy5kZWZhdWx0PXMsZS5jcm9zc3RhbGs9c30pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2ZpbHRlciI6MiwiLi9ncm91cCI6NCwiLi9pbnB1dCI6NiwiLi9pbnB1dF9jaGVja2JveGdyb3VwIjo3LCIuL2lucHV0X3NlbGVjdGl6ZSI6OCwiLi9pbnB1dF9zbGlkZXIiOjksIi4vc2VsZWN0aW9uIjoxMH1dLDY6W2Z1bmN0aW9uKGUsdCxhKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhLnJlZ2lzdGVyPWZ1bmN0aW9uKGUpe3JbZS5jbGFzc05hbWVdPWUsdC5kb2N1bWVudCYmImNvbXBsZXRlIiE9PXQuZG9jdW1lbnQucmVhZHlTdGF0ZT9vKGZ1bmN0aW9uKCl7bigpfSk6dC5kb2N1bWVudCYmc2V0VGltZW91dChuLDEwMCl9LGEuYmluZD1uO3ZhciBvPXQualF1ZXJ5LHI9e307ZnVuY3Rpb24gbigpe09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49cltlXTtvKCIuIituLmNsYXNzTmFtZSkubm90KCIuY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikuZWFjaChmdW5jdGlvbihlLHQpe2kobix0KX0pfSl9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPW8odCkuZmluZCgic2NyaXB0W3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXVtkYXRhLWZvcj0nIit0LmlkLnJlcGxhY2UoLyhbISIjJCUmJygpKissLi86Ozw9Pj9AW1xcXF1eYHt8fX5dKS9nLCJcXCQxIikrIiddIikscj1KU09OLnBhcnNlKG5bMF0uaW5uZXJUZXh0KSxpPWUuZmFjdG9yeSh0LHIpO28odCkuZGF0YSgiY3Jvc3N0YWxrLWluc3RhbmNlIixpKSxvKHQpLmFkZENsYXNzKCJjcm9zc3RhbGstaW5wdXQtYm91bmQiKX1pZih0LlNoaW55KXt2YXIgZT1uZXcgdC5TaGlueS5JbnB1dEJpbmRpbmcsdT10LmpRdWVyeTt1LmV4dGVuZChlLHtmaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLmZpbmQoIi5jcm9zc3RhbGstaW5wdXQiKX0saW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgdCxuO3UoZSkuaGFzQ2xhc3MoImNyb3NzdGFsay1pbnB1dC1ib3VuZCIpfHwobj1vKHQ9ZSksT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtuLmhhc0NsYXNzKGUpJiYhbi5oYXNDbGFzcygiY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikmJmkocltlXSx0KX0pKX0sZ2V0SWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWR9LGdldFZhbHVlOmZ1bmN0aW9uKGUpe30sc2V0VmFsdWU6ZnVuY3Rpb24oZSx0KXt9LHJlY2VpdmVNZXNzYWdlOmZ1bmN0aW9uKGUsdCl7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSx0KXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnJlc3VtZSgpfSx1bnN1YnNjcmliZTpmdW5jdGlvbihlKXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnN1c3BlbmQoKX19KSx0LlNoaW55LmlucHV0QmluZGluZ3MucmVnaXN0ZXIoZSwiY3Jvc3N0YWxrLmlucHV0QmluZGluZyIpfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDc6W2Z1bmN0aW9uKHIsZSx0KXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShyKCIuL2lucHV0IikpLG49cigiLi9maWx0ZXIiKTt2YXIgYT1lLmpRdWVyeTt0LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1jaGVja2JveGdyb3VwIixmYWN0b3J5OmZ1bmN0aW9uKGUscil7dmFyIGk9bmV3IG4uRmlsdGVySGFuZGxlKHIuZ3JvdXApLG89dm9pZCAwLHU9YShlKTtyZXR1cm4gdS5vbigiY2hhbmdlIiwiaW5wdXRbdHlwZT0nY2hlY2tib3gnXSIsZnVuY3Rpb24oKXt2YXIgZT11LmZpbmQoImlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCIpO2lmKDA9PT1lLmxlbmd0aClvPW51bGwsaS5jbGVhcigpO2Vsc2V7dmFyIHQ9e307ZS5lYWNoKGZ1bmN0aW9uKCl7ci5tYXBbdGhpcy52YWx1ZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLnNvcnQoKSxvPW4saS5zZXQobil9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXtpLmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe28mJmkuc2V0KG8pfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjZ9XSw4OltmdW5jdGlvbihyLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1uKHIoIi4vaW5wdXQiKSksbD1uKHIoIi4vdXRpbCIpKSxzPXIoIi4vZmlsdGVyIik7ZnVuY3Rpb24gbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9dmFyIGY9ZS5qUXVlcnk7dC5yZWdpc3Rlcih7Y2xhc3NOYW1lOiJjcm9zc3RhbGstaW5wdXQtc2VsZWN0IixmYWN0b3J5OmZ1bmN0aW9uKGUsbil7dmFyIHQ9bC5kYXRhZnJhbWVUb0QzKG4uaXRlbXMpLHI9e29wdGlvbnM6W3t2YWx1ZToiIixsYWJlbDoiKEFsbCkifV0uY29uY2F0KHQpLHZhbHVlRmllbGQ6InZhbHVlIixsYWJlbEZpZWxkOiJsYWJlbCIsc2VhcmNoRmllbGQ6ImxhYmVsIn0saT1mKGUpLmZpbmQoInNlbGVjdCIpWzBdLG89ZihpKS5zZWxlY3RpemUocilbMF0uc2VsZWN0aXplLHU9bmV3IHMuRmlsdGVySGFuZGxlKG4uZ3JvdXApLGE9dm9pZCAwO3JldHVybiBvLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoMD09PW8uaXRlbXMubGVuZ3RoKWE9bnVsbCx1LmNsZWFyKCk7ZWxzZXt2YXIgdD17fTtvLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7bi5tYXBbZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgZT1PYmplY3Qua2V5cyh0KTtlLnNvcnQoKSxhPWUsdS5zZXQoZSl9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXt1LmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe2EmJnUuc2V0KGEpfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjYsIi4vdXRpbCI6MTF9XSw5OltmdW5jdGlvbihuLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgdSxhPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0odT1hLm5leHQoKSkuZG9uZSkmJihuLnB1c2godS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe2k9ITAsbz1lfWZpbmFsbHl7dHJ5eyFyJiZhLnJldHVybiYmYS5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319cmV0dXJuIG59KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSx0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShuKCIuL2lucHV0IikpLGE9bigiLi9maWx0ZXIiKTt2YXIgdj1lLmpRdWVyeSxwPWUuc3RyZnRpbWU7ZnVuY3Rpb24geShlLHQpe2Zvcih2YXIgbj1lLnRvU3RyaW5nKCk7bi5sZW5ndGg8dDspbj0iMCIrbjtyZXR1cm4gbn10LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1zbGlkZXIiLGZhY3Rvcnk6ZnVuY3Rpb24oZSxsKXt2YXIgcz1uZXcgYS5GaWx0ZXJIYW5kbGUobC5ncm91cCksdD17fSxmPXYoZSkuZmluZCgiaW5wdXQiKSxuPWYuZGF0YSgiZGF0YS10eXBlIikscj1mLmRhdGEoInRpbWUtZm9ybWF0IiksaT1mLmRhdGEoInJvdW5kIiksbz12b2lkIDA7aWYoImRhdGUiPT09bilvPXAudXRjKCksdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX07ZWxzZSBpZigiZGF0ZXRpbWUiPT09bil7dmFyIHU9Zi5kYXRhKCJ0aW1lem9uZSIpO289dT9wLnRpbWV6b25lKHUpOnAsdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX19ZWxzZSJudW1iZXIiPT09biYmdm9pZCAwIT09aSYmKHQucHJldHRpZnk9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5wb3coMTAsaSk7cmV0dXJuIE1hdGgucm91bmQoZSp0KS90fSk7ZnVuY3Rpb24gYygpe3ZhciBlPWYuZGF0YSgiaW9uUmFuZ2VTbGlkZXIiKS5yZXN1bHQsdD12b2lkIDAsbj1mLmRhdGEoImRhdGEtdHlwZSIpO3JldHVybiB0PSJkYXRlIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuKHQ9bmV3IERhdGUoK2UpKWluc3RhbmNlb2YgRGF0ZT90LmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3kodC5nZXRVVENNb250aCgpKzEsMikrIi0iK3kodC5nZXRVVENEYXRlKCksMik6bnVsbDt2YXIgdH06ImRhdGV0aW1lIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuK2UvMWUzfTpmdW5jdGlvbihlKXtyZXR1cm4rZX0sImRvdWJsZSI9PT1mLmRhdGEoImlvblJhbmdlU2xpZGVyIikub3B0aW9ucy50eXBlP1t0KGUuZnJvbSksdChlLnRvKV06dChlLmZyb20pfWYuaW9uUmFuZ2VTbGlkZXIodCk7dmFyIGg9bnVsbDtyZXR1cm4gZi5vbigiY2hhbmdlLmNyb3NzdGFsa1NsaWRlcklucHV0IixmdW5jdGlvbihlKXtpZighZi5kYXRhKCJ1cGRhdGluZyIpJiYhZi5kYXRhKCJhbmltYXRpbmciKSl7Zm9yKHZhciB0PWMoKSxuPWQodCwyKSxyPW5bMF0saT1uWzFdLG89W10sdT0wO3U8bC52YWx1ZXMubGVuZ3RoO3UrKyl7dmFyIGE9bC52YWx1ZXNbdV07cjw9YSYmYTw9aSYmby5wdXNoKGwua2V5c1t1XSl9by5zb3J0KCkscy5zZXQobyksaD1vfX0pLHtzdXNwZW5kOmZ1bmN0aW9uKCl7cy5jbGVhcigpfSxyZXN1bWU6ZnVuY3Rpb24oKXtoJiZzLnNldChoKX19fX0pfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vZmlsdGVyIjoyLCIuL2lucHV0Ijo2fV0sMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uU2VsZWN0aW9uSGFuZGxlPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxpPWEoZSgiLi9ldmVudHMiKSksbz1hKGUoIi4vZ3JvdXAiKSksdT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fW4uU2VsZWN0aW9uSGFuZGxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IHUuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX3Zhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPXUuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5zZXRHcm91cChlKX1yZXR1cm4gcihuLFt7a2V5OiJzZXRHcm91cCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLl9ncm91cCE9PWUmJih0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl92YXImJih0aGlzLl92YXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLl92YXI9bnVsbCx0aGlzLl92YXJPbkNoYW5nZVN1Yj1udWxsKSx0aGlzLl9ncm91cD1lKSl7dGhpcy5fdmFyPSgwLG8uZGVmYXVsdCkoZSkudmFyKCJzZWxlY3Rpb24iKTt2YXIgbj10aGlzLl92YXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7dC5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUsdCl9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1ufX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl92YXImJnRoaXMuX3Zhci5zZXQoZSx0aGlzLl9tZXJnZUV4dHJhSW5mbyh0KSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fdmFyJiZ0aGlzLnNldCh2b2lkIDAsdGhpcy5fbWVyZ2VFeHRyYUluZm8oZSkpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2VtaXR0ZXIub24oZSx0KX19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vZmYoZSx0KX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5zZXRHcm91cChudWxsKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFyP3RoaXMuX3Zhci5nZXQoKTpudWxsfX1dKSxufSgpfSx7Ii4vZXZlbnRzIjoxLCIuL2dyb3VwIjo0LCIuL3V0aWwiOjExfV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGw9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O2Z1bmN0aW9uIHUoZSl7Zm9yKHZhciB0PTE7dDxlLmxlbmd0aDt0KyspaWYoZVt0XTw9ZVt0LTFdKXRocm93IG5ldyBFcnJvcigiTGlzdCBpcyBub3Qgc29ydGVkIG9yIGNvbnRhaW5zIGR1cGxpY2F0ZSIpfW4uZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkoMTx0P3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKG51bGwhPW8pZm9yKHZhciB1IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh1KSYmKGVbdV09b1t1XSl9cmV0dXJuIGV9LG4uY2hlY2tTb3J0ZWQ9dSxuLmRpZmZTb3J0ZWRMaXN0cz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj0wO2V8fChlPVtdKTt0fHwodD1bXSk7dmFyIGk9W10sbz1bXTt1KGUpLHUodCk7Zm9yKDtuPGUubGVuZ3RoJiZyPHQubGVuZ3RoOyllW25dPT09dFtyXT8obisrLHIrKyk6ZVtuXTx0W3JdP2kucHVzaChlW24rK10pOm8ucHVzaCh0W3IrK10pO248ZS5sZW5ndGgmJihpPWkuY29uY2F0KGUuc2xpY2UobikpKTtyPHQubGVuZ3RoJiYobz1vLmNvbmNhdCh0LnNsaWNlKHIpKSk7cmV0dXJue3JlbW92ZWQ6aSxhZGRlZDpvfX0sbi5kYXRhZnJhbWVUb0QzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49dm9pZCAwO2Zvcih2YXIgciBpbiBlKXtpZihlLmhhc093blByb3BlcnR5KHIpJiZ0LnB1c2gociksIm9iamVjdCIhPT1sKGVbcl0pfHx2b2lkIDA9PT1lW3JdLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTtpZih2b2lkIDAhPT1uJiZuIT09ZVtyXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpO249ZVtyXS5sZW5ndGh9Zm9yKHZhciBpPVtdLG89dm9pZCAwLHU9MDt1PG47dSsrKXtvPXt9O2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKW9bdFthXV09ZVt0W2FdXVt1XTtpLnB1c2gobyl9cmV0dXJuIGl9O24uU3Vic2NyaXB0aW9uVHJhY2tlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5fZW1pdHRlcj1lLHRoaXMuX3N1YnM9e319cmV0dXJuIHIodCxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZW1pdHRlci5vbihlLHQpO3JldHVybiB0aGlzLl9zdWJzW25dPWUsbn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9lbWl0dGVyLm9mZihlLHQpO3JldHVybiBuJiZkZWxldGUgdGhpcy5fc3Vic1tuXSxufX0se2tleToicmVtb3ZlQWxsTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj10aGlzLl9zdWJzO3RoaXMuX3N1YnM9e30sT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbihlKXt0Ll9lbWl0dGVyLm9mZihuW2VdLGUpfSl9fV0pLHR9KCl9LHt9XSwxMjpbZnVuY3Rpb24oYSxlLGwpeyhmdW5jdGlvbihvKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCksbj1hKCIuL2V2ZW50cyIpLGk9KGU9bikmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9O3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQsbil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsciksdGhpcy5fZ3JvdXA9ZSx0aGlzLl9uYW1lPXQsdGhpcy5fdmFsdWU9bix0aGlzLl9ldmVudHM9bmV3IGkuZGVmYXVsdH1yZXR1cm4gdChyLFt7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKHRoaXMuX3ZhbHVlIT09ZSl7dmFyIG49dGhpcy5fdmFsdWU7dGhpcy5fdmFsdWU9ZTt2YXIgcj17fTtpZih0JiYib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnUodCkpKWZvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJihyW2ldPXRbaV0pO3Iub2xkVmFsdWU9bixyLnZhbHVlPWUsdGhpcy5fZXZlbnRzLnRyaWdnZXIoImNoYW5nZSIscix0aGlzKSxvLlNoaW55JiZvLlNoaW55Lm9uSW5wdXRDaGFuZ2UmJm8uU2hpbnkub25JbnB1dENoYW5nZSgiLmNsaWVudFZhbHVlLSIrKG51bGwhPT10aGlzLl9ncm91cC5uYW1lP3RoaXMuX2dyb3VwLm5hbWUrIi0iOiIiKSt0aGlzLl9uYW1lLHZvaWQgMD09PWU/bnVsbDplKX19fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZXZlbnRzLm9uKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2V2ZW50cy5vZmYoZSx0KX19XSkscn0oKTtsLmRlZmF1bHQ9cn0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2V2ZW50cyI6MX1dfSx7fSxbNV0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1jcm9zc3RhbGsubWluLmpzLm1hcA=="></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,LyoqCiogcGxvdGx5LmpzIHYxLjUyLjIKKiBDb3B5cmlnaHQgMjAxMi0yMDIwLCBQbG90bHksIEluYy4KKiBBbGwgcmlnaHRzIHJlc2VydmVkLgoqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQoqLwohZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz10KCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSx0KTtlbHNleygidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpLlBsb3RseT10KCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB0KGUscixuKXtmdW5jdGlvbiBhKG8scyl7aWYoIXJbb10pe2lmKCFlW29dKXt2YXIgbD0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighcyYmbClyZXR1cm4gbChvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBjPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK28rIiciKTt0aHJvdyBjLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGN9dmFyIHU9cltvXT17ZXhwb3J0czp7fX07ZVtvXVswXS5jYWxsKHUuZXhwb3J0cyxmdW5jdGlvbih0KXtyZXR1cm4gYShlW29dWzFdW3RdfHx0KX0sdSx1LmV4cG9ydHMsdCxlLHIsbil9cmV0dXJuIHJbb10uZXhwb3J0c31mb3IodmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsbz0wO288bi5sZW5ndGg7bysrKWEobltvXSk7cmV0dXJuIGF9fSgpKHsxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NyYy9saWIiKSxhPXsiWCxYIGRpdiI6ImRpcmVjdGlvbjpsdHI7Zm9udC1mYW1pbHk6J09wZW4gU2FucycsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmO21hcmdpbjowO3BhZGRpbmc6MDsiLCJYIGlucHV0LFggYnV0dG9uIjoiZm9udC1mYW1pbHk6J09wZW4gU2FucycsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmOyIsIlggaW5wdXQ6Zm9jdXMsWCBidXR0b246Zm9jdXMiOiJvdXRsaW5lOm5vbmU7IiwiWCBhIjoidGV4dC1kZWNvcmF0aW9uOm5vbmU7IiwiWCBhOmhvdmVyIjoidGV4dC1kZWNvcmF0aW9uOm5vbmU7IiwiWCAuY3Jpc3AiOiJzaGFwZS1yZW5kZXJpbmc6Y3Jpc3BFZGdlczsiLCJYIC51c2VyLXNlbGVjdC1ub25lIjoiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstby11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7IiwiWCBzdmciOiJvdmVyZmxvdzpoaWRkZW47IiwiWCBzdmcgYSI6ImZpbGw6IzQ0N2FkYjsiLCJYIHN2ZyBhOmhvdmVyIjoiZmlsbDojM2M2ZGM1OyIsIlggLm1haW4tc3ZnIjoicG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3BvaW50ZXItZXZlbnRzOm5vbmU7IiwiWCAubWFpbi1zdmcgLmRyYWdsYXllciI6InBvaW50ZXItZXZlbnRzOmFsbDsiLCJYIC5jdXJzb3ItZGVmYXVsdCI6ImN1cnNvcjpkZWZhdWx0OyIsIlggLmN1cnNvci1wb2ludGVyIjoiY3Vyc29yOnBvaW50ZXI7IiwiWCAuY3Vyc29yLWNyb3NzaGFpciI6ImN1cnNvcjpjcm9zc2hhaXI7IiwiWCAuY3Vyc29yLW1vdmUiOiJjdXJzb3I6bW92ZTsiLCJYIC5jdXJzb3ItY29sLXJlc2l6ZSI6ImN1cnNvcjpjb2wtcmVzaXplOyIsIlggLmN1cnNvci1yb3ctcmVzaXplIjoiY3Vyc29yOnJvdy1yZXNpemU7IiwiWCAuY3Vyc29yLW5zLXJlc2l6ZSI6ImN1cnNvcjpucy1yZXNpemU7IiwiWCAuY3Vyc29yLWV3LXJlc2l6ZSI6ImN1cnNvcjpldy1yZXNpemU7IiwiWCAuY3Vyc29yLXN3LXJlc2l6ZSI6ImN1cnNvcjpzdy1yZXNpemU7IiwiWCAuY3Vyc29yLXMtcmVzaXplIjoiY3Vyc29yOnMtcmVzaXplOyIsIlggLmN1cnNvci1zZS1yZXNpemUiOiJjdXJzb3I6c2UtcmVzaXplOyIsIlggLmN1cnNvci13LXJlc2l6ZSI6ImN1cnNvcjp3LXJlc2l6ZTsiLCJYIC5jdXJzb3ItZS1yZXNpemUiOiJjdXJzb3I6ZS1yZXNpemU7IiwiWCAuY3Vyc29yLW53LXJlc2l6ZSI6ImN1cnNvcjpudy1yZXNpemU7IiwiWCAuY3Vyc29yLW4tcmVzaXplIjoiY3Vyc29yOm4tcmVzaXplOyIsIlggLmN1cnNvci1uZS1yZXNpemUiOiJjdXJzb3I6bmUtcmVzaXplOyIsIlggLmN1cnNvci1ncmFiIjoiY3Vyc29yOi13ZWJraXQtZ3JhYjtjdXJzb3I6Z3JhYjsiLCJYIC5tb2RlYmFyIjoicG9zaXRpb246YWJzb2x1dGU7dG9wOjJweDtyaWdodDoycHg7IiwiWCAuZWFzZS1iZyI6Ii13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSAwczstbW96LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UgMHM7LW1zLXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UgMHM7LW8tdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSAwczt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlIDBzOyIsIlggLm1vZGViYXItLWhvdmVyPjpub3QoLndhdGVybWFyaykiOiJvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBlYXNlIDBzOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgZWFzZSAwczstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgZWFzZSAwczstby10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBlYXNlIDBzO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzIGVhc2UgMHM7IiwiWDpob3ZlciAubW9kZWJhci0taG92ZXIgLm1vZGViYXItZ3JvdXAiOiJvcGFjaXR5OjE7IiwiWCAubW9kZWJhci1ncm91cCI6ImZsb2F0OmxlZnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctbGVmdDo4cHg7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDsiLCJYIC5tb2RlYmFyLWJ0biI6InBvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToxNnB4O3BhZGRpbmc6M3B4IDRweDtoZWlnaHQ6MjJweDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDpub3JtYWw7Ym94LXNpemluZzpib3JkZXItYm94OyIsIlggLm1vZGViYXItYnRuIHN2ZyI6InBvc2l0aW9uOnJlbGF0aXZlO3RvcDoycHg7IiwiWCAubW9kZWJhci52ZXJ0aWNhbCI6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC13cmFwOndyYXA7YWxpZ24tY29udGVudDpmbGV4LWVuZDttYXgtaGVpZ2h0OjEwMCU7IiwiWCAubW9kZWJhci52ZXJ0aWNhbCBzdmciOiJ0b3A6LTFweDsiLCJYIC5tb2RlYmFyLnZlcnRpY2FsIC5tb2RlYmFyLWdyb3VwIjoiZGlzcGxheTpibG9jaztmbG9hdDpub25lO3BhZGRpbmctbGVmdDowcHg7cGFkZGluZy1ib3R0b206OHB4OyIsIlggLm1vZGViYXIudmVydGljYWwgLm1vZGViYXItZ3JvdXAgLm1vZGViYXItYnRuIjoiZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjsiLCJYIFtkYXRhLXRpdGxlXTpiZWZvcmUsWCBbZGF0YS10aXRsZV06YWZ0ZXIiOiJwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApOy1vLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7ZGlzcGxheTpub25lO29wYWNpdHk6MDt6LWluZGV4OjEwMDE7cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MTEwJTtyaWdodDo1MCU7IiwiWCBbZGF0YS10aXRsZV06aG92ZXI6YmVmb3JlLFggW2RhdGEtdGl0bGVdOmhvdmVyOmFmdGVyIjoiZGlzcGxheTpibG9jaztvcGFjaXR5OjE7IiwiWCBbZGF0YS10aXRsZV06YmVmb3JlIjoiY29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjo2cHggc29saWQgdHJhbnNwYXJlbnQ7ei1pbmRleDoxMDAyO21hcmdpbi10b3A6LTEycHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNjk3MzhhO21hcmdpbi1yaWdodDotNnB4OyIsIlggW2RhdGEtdGl0bGVdOmFmdGVyIjoiY29udGVudDphdHRyKGRhdGEtdGl0bGUpO2JhY2tncm91bmQ6IzY5NzM4YTtjb2xvcjp3aGl0ZTtwYWRkaW5nOjhweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEycHg7d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1yaWdodDotMThweDtib3JkZXItcmFkaXVzOjJweDsiLCJYIC52ZXJ0aWNhbCBbZGF0YS10aXRsZV06YmVmb3JlLFggLnZlcnRpY2FsIFtkYXRhLXRpdGxlXTphZnRlciI6InRvcDowJTtyaWdodDoyMDAlOyIsIlggLnZlcnRpY2FsIFtkYXRhLXRpdGxlXTpiZWZvcmUiOiJib3JkZXI6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0LWNvbG9yOiM2OTczOGE7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLXJpZ2h0Oi0zMHB4OyIsIlggLnNlbGVjdC1vdXRsaW5lIjoiZmlsbDpub25lO3N0cm9rZS13aWR0aDoxO3NoYXBlLXJlbmRlcmluZzpjcmlzcEVkZ2VzOyIsIlggLnNlbGVjdC1vdXRsaW5lLTEiOiJzdHJva2U6d2hpdGU7IiwiWCAuc2VsZWN0LW91dGxpbmUtMiI6InN0cm9rZTpibGFjaztzdHJva2UtZGFzaGFycmF5OjJweCAycHg7IixZOiJmb250LWZhbWlseTonT3BlbiBTYW5zJztwb3NpdGlvbjpmaXhlZDt0b3A6NTBweDtyaWdodDoyMHB4O3otaW5kZXg6MTAwMDA7Zm9udC1zaXplOjEwcHQ7bWF4LXdpZHRoOjE4MHB4OyIsIlkgcCI6Im1hcmdpbjowOyIsIlkgLm5vdGlmaWVyLW5vdGUiOiJtaW4td2lkdGg6MTgwcHg7bWF4LXdpZHRoOjI1MHB4O2JvcmRlcjoxcHggc29saWQgI2ZmZjt6LWluZGV4OjMwMDA7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojOGM5N2FmO2JhY2tncm91bmQtY29sb3I6cmdiYSgxNDAsMTUxLDE3NSwwLjkpO2NvbG9yOiNmZmY7cGFkZGluZzoxMHB4O292ZXJmbG93LXdyYXA6YnJlYWstd29yZDt3b3JkLXdyYXA6YnJlYWstd29yZDstbXMtaHlwaGVuczphdXRvOy13ZWJraXQtaHlwaGVuczphdXRvO2h5cGhlbnM6YXV0bzsiLCJZIC5ub3RpZmllci1jbG9zZSI6ImNvbG9yOiNmZmY7b3BhY2l0eTowLjg7ZmxvYXQ6cmlnaHQ7cGFkZGluZzowIDVweDtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoyMHB4OyIsIlkgLm5vdGlmaWVyLWNsb3NlOmhvdmVyIjoiY29sb3I6IzQ0NDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjsifTtmb3IodmFyIGkgaW4gYSl7dmFyIG89aS5yZXBsYWNlKC9eLC8sIiAsIikucmVwbGFjZSgvWC9nLCIuanMtcGxvdGx5LXBsb3QgLnBsb3RseSIpLnJlcGxhY2UoL1kvZywiLnBsb3RseS1ub3RpZmllciIpO24uYWRkU3R5bGVSdWxlKG8sYVtpXSl9fSx7Ii4uL3NyYy9saWIiOjcxN31dLDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFuc2Zvcm1zL2FnZ3JlZ2F0ZSIpfSx7Ii4uL3NyYy90cmFuc2Zvcm1zL2FnZ3JlZ2F0ZSI6MTI5N31dLDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvYmFyIil9LHsiLi4vc3JjL3RyYWNlcy9iYXIiOjg2NH1dLDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvYmFycG9sYXIiKX0seyIuLi9zcmMvdHJhY2VzL2JhcnBvbGFyIjo4Nzd9XSw1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2JveCIpfSx7Ii4uL3NyYy90cmFjZXMvYm94Ijo4ODd9XSw2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvY29tcG9uZW50cy9jYWxlbmRhcnMiKX0seyIuLi9zcmMvY29tcG9uZW50cy9jYWxlbmRhcnMiOjU5MH1dLDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvY2FuZGxlc3RpY2siKX0seyIuLi9zcmMvdHJhY2VzL2NhbmRsZXN0aWNrIjo4OTZ9XSw4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2NhcnBldCIpfSx7Ii4uL3NyYy90cmFjZXMvY2FycGV0Ijo5MTV9XSw5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2Nob3JvcGxldGgiKX0seyIuLi9zcmMvdHJhY2VzL2Nob3JvcGxldGgiOjkyOX1dLDEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2Nob3JvcGxldGhtYXBib3giKX0seyIuLi9zcmMvdHJhY2VzL2Nob3JvcGxldGhtYXBib3giOjkzNn1dLDExOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2NvbmUiKX0seyIuLi9zcmMvdHJhY2VzL2NvbmUiOjk0Mn1dLDEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2NvbnRvdXIiKX0seyIuLi9zcmMvdHJhY2VzL2NvbnRvdXIiOjk1N31dLDEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2NvbnRvdXJjYXJwZXQiKX0seyIuLi9zcmMvdHJhY2VzL2NvbnRvdXJjYXJwZXQiOjk2OH1dLDE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvY29yZSIpfSx7Ii4uL3NyYy9jb3JlIjo2OTV9XSwxNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9kZW5zaXR5bWFwYm94Iil9LHsiLi4vc3JjL3RyYWNlcy9kZW5zaXR5bWFwYm94Ijo5NzZ9XSwxNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYW5zZm9ybXMvZmlsdGVyIil9LHsiLi4vc3JjL3RyYW5zZm9ybXMvZmlsdGVyIjoxMjk4fV0sMTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvZnVubmVsIil9LHsiLi4vc3JjL3RyYWNlcy9mdW5uZWwiOjk4Nn1dLDE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2Z1bm5lbGFyZWEiKX0seyIuLi9zcmMvdHJhY2VzL2Z1bm5lbGFyZWEiOjk5NX1dLDE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhbnNmb3Jtcy9ncm91cGJ5Iil9LHsiLi4vc3JjL3RyYW5zZm9ybXMvZ3JvdXBieSI6MTI5OX1dLDIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2hlYXRtYXAiKX0seyIuLi9zcmMvdHJhY2VzL2hlYXRtYXAiOjEwMDh9XSwyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9oZWF0bWFwZ2wiKX0seyIuLi9zcmMvdHJhY2VzL2hlYXRtYXBnbCI6MTAxN31dLDIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2hpc3RvZ3JhbSIpfSx7Ii4uL3NyYy90cmFjZXMvaGlzdG9ncmFtIjoxMDI5fV0sMjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaGlzdG9ncmFtMmQiKX0seyIuLi9zcmMvdHJhY2VzL2hpc3RvZ3JhbTJkIjoxMDM1fV0sMjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaGlzdG9ncmFtMmRjb250b3VyIil9LHsiLi4vc3JjL3RyYWNlcy9oaXN0b2dyYW0yZGNvbnRvdXIiOjEwMzl9XSwyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9pbWFnZSIpfSx7Ii4uL3NyYy90cmFjZXMvaW1hZ2UiOjEwNDZ9XSwyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvcmUiKTtuLnJlZ2lzdGVyKFt0KCIuL2JhciIpLHQoIi4vYm94IiksdCgiLi9oZWF0bWFwIiksdCgiLi9oaXN0b2dyYW0iKSx0KCIuL2hpc3RvZ3JhbTJkIiksdCgiLi9oaXN0b2dyYW0yZGNvbnRvdXIiKSx0KCIuL2NvbnRvdXIiKSx0KCIuL3NjYXR0ZXJ0ZXJuYXJ5IiksdCgiLi92aW9saW4iKSx0KCIuL2Z1bm5lbCIpLHQoIi4vd2F0ZXJmYWxsIiksdCgiLi9pbWFnZSIpLHQoIi4vcGllIiksdCgiLi9zdW5idXJzdCIpLHQoIi4vdHJlZW1hcCIpLHQoIi4vZnVubmVsYXJlYSIpLHQoIi4vc2NhdHRlcjNkIiksdCgiLi9zdXJmYWNlIiksdCgiLi9pc29zdXJmYWNlIiksdCgiLi92b2x1bWUiKSx0KCIuL21lc2gzZCIpLHQoIi4vY29uZSIpLHQoIi4vc3RyZWFtdHViZSIpLHQoIi4vc2NhdHRlcmdlbyIpLHQoIi4vY2hvcm9wbGV0aCIpLHQoIi4vc2NhdHRlcmdsIiksdCgiLi9zcGxvbSIpLHQoIi4vcG9pbnRjbG91ZCIpLHQoIi4vaGVhdG1hcGdsIiksdCgiLi9wYXJjb29yZHMiKSx0KCIuL3BhcmNhdHMiKSx0KCIuL3NjYXR0ZXJtYXBib3giKSx0KCIuL2Nob3JvcGxldGhtYXBib3giKSx0KCIuL2RlbnNpdHltYXBib3giKSx0KCIuL3NhbmtleSIpLHQoIi4vaW5kaWNhdG9yIiksdCgiLi90YWJsZSIpLHQoIi4vY2FycGV0IiksdCgiLi9zY2F0dGVyY2FycGV0IiksdCgiLi9jb250b3VyY2FycGV0IiksdCgiLi9vaGxjIiksdCgiLi9jYW5kbGVzdGljayIpLHQoIi4vc2NhdHRlcnBvbGFyIiksdCgiLi9zY2F0dGVycG9sYXJnbCIpLHQoIi4vYmFycG9sYXIiKV0pLG4ucmVnaXN0ZXIoW3QoIi4vYWdncmVnYXRlIiksdCgiLi9maWx0ZXIiKSx0KCIuL2dyb3VwYnkiKSx0KCIuL3NvcnQiKV0pLG4ucmVnaXN0ZXIoW3QoIi4vY2FsZW5kYXJzIildKSxlLmV4cG9ydHM9bn0seyIuL2FnZ3JlZ2F0ZSI6MiwiLi9iYXIiOjMsIi4vYmFycG9sYXIiOjQsIi4vYm94Ijo1LCIuL2NhbGVuZGFycyI6NiwiLi9jYW5kbGVzdGljayI6NywiLi9jYXJwZXQiOjgsIi4vY2hvcm9wbGV0aCI6OSwiLi9jaG9yb3BsZXRobWFwYm94IjoxMCwiLi9jb25lIjoxMSwiLi9jb250b3VyIjoxMiwiLi9jb250b3VyY2FycGV0IjoxMywiLi9jb3JlIjoxNCwiLi9kZW5zaXR5bWFwYm94IjoxNSwiLi9maWx0ZXIiOjE2LCIuL2Z1bm5lbCI6MTcsIi4vZnVubmVsYXJlYSI6MTgsIi4vZ3JvdXBieSI6MTksIi4vaGVhdG1hcCI6MjAsIi4vaGVhdG1hcGdsIjoyMSwiLi9oaXN0b2dyYW0iOjIyLCIuL2hpc3RvZ3JhbTJkIjoyMywiLi9oaXN0b2dyYW0yZGNvbnRvdXIiOjI0LCIuL2ltYWdlIjoyNSwiLi9pbmRpY2F0b3IiOjI3LCIuL2lzb3N1cmZhY2UiOjI4LCIuL21lc2gzZCI6MjksIi4vb2hsYyI6MzAsIi4vcGFyY2F0cyI6MzEsIi4vcGFyY29vcmRzIjozMiwiLi9waWUiOjMzLCIuL3BvaW50Y2xvdWQiOjM0LCIuL3NhbmtleSI6MzUsIi4vc2NhdHRlcjNkIjozNiwiLi9zY2F0dGVyY2FycGV0IjozNywiLi9zY2F0dGVyZ2VvIjozOCwiLi9zY2F0dGVyZ2wiOjM5LCIuL3NjYXR0ZXJtYXBib3giOjQwLCIuL3NjYXR0ZXJwb2xhciI6NDEsIi4vc2NhdHRlcnBvbGFyZ2wiOjQyLCIuL3NjYXR0ZXJ0ZXJuYXJ5Ijo0MywiLi9zb3J0Ijo0NCwiLi9zcGxvbSI6NDUsIi4vc3RyZWFtdHViZSI6NDYsIi4vc3VuYnVyc3QiOjQ3LCIuL3N1cmZhY2UiOjQ4LCIuL3RhYmxlIjo0OSwiLi90cmVlbWFwIjo1MCwiLi92aW9saW4iOjUxLCIuL3ZvbHVtZSI6NTIsIi4vd2F0ZXJmYWxsIjo1M31dLDI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2luZGljYXRvciIpfSx7Ii4uL3NyYy90cmFjZXMvaW5kaWNhdG9yIjoxMDU0fV0sMjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaXNvc3VyZmFjZSIpfSx7Ii4uL3NyYy90cmFjZXMvaXNvc3VyZmFjZSI6MTA2MH1dLDI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL21lc2gzZCIpfSx7Ii4uL3NyYy90cmFjZXMvbWVzaDNkIjoxMDY1fV0sMzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvb2hsYyIpfSx7Ii4uL3NyYy90cmFjZXMvb2hsYyI6MTA3MH1dLDMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3BhcmNhdHMiKX0seyIuLi9zcmMvdHJhY2VzL3BhcmNhdHMiOjEwNzl9XSwzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9wYXJjb29yZHMiKX0seyIuLi9zcmMvdHJhY2VzL3BhcmNvb3JkcyI6MTA4OX1dLDMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3BpZSIpfSx7Ii4uL3NyYy90cmFjZXMvcGllIjoxMTAwfV0sMzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvcG9pbnRjbG91ZCIpfSx7Ii4uL3NyYy90cmFjZXMvcG9pbnRjbG91ZCI6MTEwOX1dLDM1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3NhbmtleSIpfSx7Ii4uL3NyYy90cmFjZXMvc2Fua2V5IjoxMTE1fV0sMzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcjNkIil9LHsiLi4vc3JjL3RyYWNlcy9zY2F0dGVyM2QiOjExNTJ9XSwzNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zY2F0dGVyY2FycGV0Iil9LHsiLi4vc3JjL3RyYWNlcy9zY2F0dGVyY2FycGV0IjoxMTU5fV0sMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcmdlbyIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcmdlbyI6MTE2N31dLDM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJnbCIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcmdsIjoxMTgwfV0sNDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcm1hcGJveCIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcm1hcGJveCI6MTE5MH1dLDQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJwb2xhciIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcnBvbGFyIjoxMTk4fV0sNDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcnBvbGFyZ2wiKX0seyIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJwb2xhcmdsIjoxMjA1fV0sNDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcnRlcm5hcnkiKX0seyIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJ0ZXJuYXJ5IjoxMjEzfV0sNDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFuc2Zvcm1zL3NvcnQiKX0seyIuLi9zcmMvdHJhbnNmb3Jtcy9zb3J0IjoxMzAxfV0sNDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc3Bsb20iKX0seyIuLi9zcmMvdHJhY2VzL3NwbG9tIjoxMjIyfV0sNDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc3RyZWFtdHViZSIpfSx7Ii4uL3NyYy90cmFjZXMvc3RyZWFtdHViZSI6MTIzMH1dLDQ3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3N1bmJ1cnN0Iil9LHsiLi4vc3JjL3RyYWNlcy9zdW5idXJzdCI6MTIzOH1dLDQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3N1cmZhY2UiKX0seyIuLi9zcmMvdHJhY2VzL3N1cmZhY2UiOjEyNDd9XSw0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy90YWJsZSIpfSx7Ii4uL3NyYy90cmFjZXMvdGFibGUiOjEyNTV9XSw1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy90cmVlbWFwIil9LHsiLi4vc3JjL3RyYWNlcy90cmVlbWFwIjoxMjY0fV0sNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvdmlvbGluIil9LHsiLi4vc3JjL3RyYWNlcy92aW9saW4iOjEyNzZ9XSw1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy92b2x1bWUiKX0seyIuLi9zcmMvdHJhY2VzL3ZvbHVtZSI6MTI4NH1dLDUzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3dhdGVyZmFsbCIpfSx7Ii4uL3NyYy90cmFjZXMvd2F0ZXJmYWxsIjoxMjkyfV0sNTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPSh0PXR8fHt9KS5leWV8fFswLDAsMV0scj10LmNlbnRlcnx8WzAsMCwwXSxzPXQudXB8fFswLDEsMF0sbD10LmRpc3RhbmNlTGltaXRzfHxbMCwxLzBdLGM9dC5tb2RlfHwidHVybnRhYmxlIix1PW4oKSxoPWEoKSxmPWkoKTtyZXR1cm4gdS5zZXREaXN0YW5jZUxpbWl0cyhsWzBdLGxbMV0pLHUubG9va0F0KDAsZSxyLHMpLGguc2V0RGlzdGFuY2VMaW1pdHMobFswXSxsWzFdKSxoLmxvb2tBdCgwLGUscixzKSxmLnNldERpc3RhbmNlTGltaXRzKGxbMF0sbFsxXSksZi5sb29rQXQoMCxlLHIscyksbmV3IG8oe3R1cm50YWJsZTp1LG9yYml0OmgsbWF0cml4OmZ9LGMpfTt2YXIgbj10KCJ0dXJudGFibGUtY2FtZXJhLWNvbnRyb2xsZXIiKSxhPXQoIm9yYml0LWNhbWVyYS1jb250cm9sbGVyIiksaT10KCJtYXRyaXgtY2FtZXJhLWNvbnRyb2xsZXIiKTtmdW5jdGlvbiBvKHQsZSl7dGhpcy5fY29udHJvbGxlck5hbWVzPU9iamVjdC5rZXlzKHQpLHRoaXMuX2NvbnRyb2xsZXJMaXN0PXRoaXMuX2NvbnRyb2xsZXJOYW1lcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSx0aGlzLl9tb2RlPWUsdGhpcy5fYWN0aXZlPXRbZV0sdGhpcy5fYWN0aXZlfHwodGhpcy5fbW9kZT0idHVybnRhYmxlIix0aGlzLl9hY3RpdmU9dC50dXJudGFibGUpLHRoaXMubW9kZXM9dGhpcy5fY29udHJvbGxlck5hbWVzLHRoaXMuY29tcHV0ZWRNYXRyaXg9dGhpcy5fYWN0aXZlLmNvbXB1dGVkTWF0cml4LHRoaXMuY29tcHV0ZWRFeWU9dGhpcy5fYWN0aXZlLmNvbXB1dGVkRXllLHRoaXMuY29tcHV0ZWRVcD10aGlzLl9hY3RpdmUuY29tcHV0ZWRVcCx0aGlzLmNvbXB1dGVkQ2VudGVyPXRoaXMuX2FjdGl2ZS5jb21wdXRlZENlbnRlcix0aGlzLmNvbXB1dGVkUmFkaXVzPXRoaXMuX2FjdGl2ZS5jb21wdXRlZFJhZGl1c312YXIgcz1vLnByb3RvdHlwZTtbWyJmbHVzaCIsMV0sWyJpZGxlIiwxXSxbImxvb2tBdCIsNF0sWyJyb3RhdGUiLDRdLFsicGFuIiw0XSxbInRyYW5zbGF0ZSIsNF0sWyJzZXRNYXRyaXgiLDJdLFsic2V0RGlzdGFuY2VMaW1pdHMiLDJdLFsic2V0RGlzdGFuY2UiLDJdXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdLHI9W10sbj0wO248dFsxXTsrK24pci5wdXNoKCJhIituKTt2YXIgYT0idmFyIGNjPXRoaXMuX2NvbnRyb2xsZXJMaXN0O2Zvcih2YXIgaT0wO2k8Y2MubGVuZ3RoOysraSl7Y2NbaV0uIit0WzBdKyIoIityLmpvaW4oKSsiKX0iO3NbZV09RnVuY3Rpb24uYXBwbHkobnVsbCxyLmNvbmNhdChhKSl9KSxzLnJlY2FsY01hdHJpeD1mdW5jdGlvbih0KXt0aGlzLl9hY3RpdmUucmVjYWxjTWF0cml4KHQpfSxzLmdldERpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hY3RpdmUuZ2V0RGlzdGFuY2UodCl9LHMuZ2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FjdGl2ZS5nZXREaXN0YW5jZUxpbWl0cyh0KX0scy5sYXN0VD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmUubGFzdFQoKX0scy5zZXRNb2RlPWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlzLl9tb2RlKXt2YXIgZT10aGlzLl9jb250cm9sbGVyTmFtZXMuaW5kZXhPZih0KTtpZighKGU8MCkpe3ZhciByPXRoaXMuX2FjdGl2ZSxuPXRoaXMuX2NvbnRyb2xsZXJMaXN0W2VdLGE9TWF0aC5tYXgoci5sYXN0VCgpLG4ubGFzdFQoKSk7ci5yZWNhbGNNYXRyaXgoYSksbi5zZXRNYXRyaXgoYSxyLmNvbXB1dGVkTWF0cml4KSx0aGlzLl9hY3RpdmU9bix0aGlzLl9tb2RlPXQsdGhpcy5jb21wdXRlZE1hdHJpeD10aGlzLl9hY3RpdmUuY29tcHV0ZWRNYXRyaXgsdGhpcy5jb21wdXRlZEV5ZT10aGlzLl9hY3RpdmUuY29tcHV0ZWRFeWUsdGhpcy5jb21wdXRlZFVwPXRoaXMuX2FjdGl2ZS5jb21wdXRlZFVwLHRoaXMuY29tcHV0ZWRDZW50ZXI9dGhpcy5fYWN0aXZlLmNvbXB1dGVkQ2VudGVyLHRoaXMuY29tcHV0ZWRSYWRpdXM9dGhpcy5fYWN0aXZlLmNvbXB1dGVkUmFkaXVzfX19LHMuZ2V0TW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb2RlfX0seyJtYXRyaXgtY2FtZXJhLWNvbnRyb2xsZXIiOjQzNSwib3JiaXQtY2FtZXJhLWNvbnRyb2xsZXIiOjQ1OCwidHVybnRhYmxlLWNhbWVyYS1jb250cm9sbGVyIjo1NDF9XSw1NTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE7bj10aGlzLGE9ZnVuY3Rpb24odCxlLHIsbixhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC50YXJnZXQuZGVwdGh9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0LnNvdXJjZUxpbmtzLmxlbmd0aD90LmRlcHRoOmUtMX1mdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1hPWEmJmEuaGFzT3duUHJvcGVydHkoImRlZmF1bHQiKT9hLmRlZmF1bHQ6YTt2YXIgbD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH07ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBoKHQuc291cmNlLGUuc291cmNlKXx8dC5pbmRleC1lLmluZGV4fWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gaCh0LnRhcmdldCxlLnRhcmdldCl8fHQuaW5kZXgtZS5pbmRleH1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIHQucGFydE9mQ3ljbGU9PT1lLnBhcnRPZkN5Y2xlP3QueTAtZS55MDoidG9wIj09PXQuY2lyY3VsYXJMaW5rVHlwZXx8ImJvdHRvbSI9PT1lLmNpcmN1bGFyTGlua1R5cGU/LTE6MX1mdW5jdGlvbiBmKHQpe3JldHVybiB0LnZhbHVlfWZ1bmN0aW9uIHAodCl7cmV0dXJuKHQueTArdC55MSkvMn1mdW5jdGlvbiBkKHQpe3JldHVybiBwKHQuc291cmNlKX1mdW5jdGlvbiBnKHQpe3JldHVybiBwKHQudGFyZ2V0KX1mdW5jdGlvbiB2KHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIG0odCl7cmV0dXJuIHQubm9kZXN9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdC5saW5rc31mdW5jdGlvbiB4KHQsZSl7dmFyIHI9dC5nZXQoZSk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiByfWZ1bmN0aW9uIGIodCxlKXtyZXR1cm4gZSh0KX12YXIgXz0yNSx3PTEwLGs9LjM7ZnVuY3Rpb24gVCh0LGUpe3ZhciByPTAsbj0wO3QubGlua3MuZm9yRWFjaChmdW5jdGlvbihhKXthLmNpcmN1bGFyJiYoYS5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZXx8YS50YXJnZXQuY2lyY3VsYXJMaW5rVHlwZT9hLmNpcmN1bGFyTGlua1R5cGU9YS5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZT9hLnNvdXJjZS5jaXJjdWxhckxpbmtUeXBlOmEudGFyZ2V0LmNpcmN1bGFyTGlua1R5cGU6YS5jaXJjdWxhckxpbmtUeXBlPXI8bj8idG9wIjoiYm90dG9tIiwidG9wIj09YS5jaXJjdWxhckxpbmtUeXBlP3IrPTE6bis9MSx0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7Yih0LGUpIT1iKGEuc291cmNlLGUpJiZiKHQsZSkhPWIoYS50YXJnZXQsZSl8fCh0LmNpcmN1bGFyTGlua1R5cGU9YS5jaXJjdWxhckxpbmtUeXBlKX0pKX0pLHQubGlua3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNpcmN1bGFyJiYodC5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZT09dC50YXJnZXQuY2lyY3VsYXJMaW5rVHlwZSYmKHQuY2lyY3VsYXJMaW5rVHlwZT10LnNvdXJjZS5jaXJjdWxhckxpbmtUeXBlKSxZKHQsZSkmJih0LmNpcmN1bGFyTGlua1R5cGU9dC5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZSkpfSl9ZnVuY3Rpb24gTSh0KXt2YXIgZT1NYXRoLmFicyh0LnkxLXQueTApLHI9TWF0aC5hYnModC50YXJnZXQueDAtdC5zb3VyY2UueDEpO3JldHVybiBNYXRoLmF0YW4oci9lKX1mdW5jdGlvbiBBKHQsZSl7dmFyIHI9MDt0LnNvdXJjZUxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7cj10LmNpcmN1bGFyJiYhWSh0LGUpP3IrMTpyfSk7dmFyIG49MDtyZXR1cm4gdC50YXJnZXRMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe249dC5jaXJjdWxhciYmIVkodCxlKT9uKzE6bn0pLHIrbn1mdW5jdGlvbiBTKHQpe3ZhciBlPXQuc291cmNlLnNvdXJjZUxpbmtzLHI9MDtlLmZvckVhY2goZnVuY3Rpb24odCl7cj10LmNpcmN1bGFyP3IrMTpyfSk7dmFyIG49dC50YXJnZXQudGFyZ2V0TGlua3MsYT0wO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24odCl7YT10LmNpcmN1bGFyP2ErMTphfSksIShyPjF8fGE+MSl9ZnVuY3Rpb24gRSh0LGUscil7cmV0dXJuIHQuc29ydChDKSx0LmZvckVhY2goZnVuY3Rpb24obixhKXt2YXIgaSxvLHM9MDtpZihZKG4scikmJlMobikpbi5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsQnVmZmVyPXMrbi53aWR0aC8yO2Vsc2V7Zm9yKHZhciBsPTA7bDxhO2wrKylpZihpPXRbYV0sbz10W2xdLCEoaS5zb3VyY2UuY29sdW1uPG8udGFyZ2V0LmNvbHVtbnx8aS50YXJnZXQuY29sdW1uPm8uc291cmNlLmNvbHVtbikpe3ZhciBjPXRbbF0uY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEJ1ZmZlcit0W2xdLndpZHRoLzIrZTtzPWM+cz9jOnN9bi5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsQnVmZmVyPXMrbi53aWR0aC8yfX0pLHR9ZnVuY3Rpb24gTCh0LHIsYSxpKXt2YXIgbz1lLm1pbih0LmxpbmtzLGZ1bmN0aW9uKHQpe3JldHVybiB0LnNvdXJjZS55MH0pO3QubGlua3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNpcmN1bGFyJiYodC5jaXJjdWxhclBhdGhEYXRhPXt9KX0pLEUodC5saW5rcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuInRvcCI9PXQuY2lyY3VsYXJMaW5rVHlwZX0pLHIsaSksRSh0LmxpbmtzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4iYm90dG9tIj09dC5jaXJjdWxhckxpbmtUeXBlfSkscixpKSx0LmxpbmtzLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZS5jaXJjdWxhcil7aWYoZS5jaXJjdWxhclBhdGhEYXRhLmFyY1JhZGl1cz1lLndpZHRoK3csZS5jaXJjdWxhclBhdGhEYXRhLmxlZnROb2RlQnVmZmVyPTUsZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0Tm9kZUJ1ZmZlcj01LGUuY2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VXaWR0aD1lLnNvdXJjZS54MS1lLnNvdXJjZS54MCxlLmNpcmN1bGFyUGF0aERhdGEuc291cmNlWD1lLnNvdXJjZS54MCtlLmNpcmN1bGFyUGF0aERhdGEuc291cmNlV2lkdGgsZS5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFg9ZS50YXJnZXQueDAsZS5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVk9ZS55MCxlLmNpcmN1bGFyUGF0aERhdGEudGFyZ2V0WT1lLnkxLFkoZSxpKSYmUyhlKSllLmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJjUmFkaXVzPXcrZS53aWR0aC8yLGUuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNSYWRpdXM9dytlLndpZHRoLzIsZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0U21hbGxBcmNSYWRpdXM9dytlLndpZHRoLzIsZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXM9dytlLndpZHRoLzIsImJvdHRvbSI9PWUuY2lyY3VsYXJMaW5rVHlwZT8oZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudD1lLnNvdXJjZS55MStfK2UuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEJ1ZmZlcixlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudC1lLmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzLGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbFJpZ2h0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudC1lLmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cyk6KGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQ9ZS5zb3VyY2UueTAtXy1lLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxCdWZmZXIsZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsTGVmdElubmVyRXh0ZW50PWUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQrZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cyxlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxSaWdodElubmVyRXh0ZW50PWUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQrZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMpO2Vsc2V7dmFyIHM9ZS5zb3VyY2UuY29sdW1uLGw9ZS5jaXJjdWxhckxpbmtUeXBlLGM9dC5saW5rcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuc291cmNlLmNvbHVtbj09cyYmdC5jaXJjdWxhckxpbmtUeXBlPT1sfSk7ImJvdHRvbSI9PWUuY2lyY3VsYXJMaW5rVHlwZT9jLnNvcnQoTyk6Yy5zb3J0KFApO3ZhciB1PTA7Yy5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5jaXJjdWxhckxpbmtJRD09ZS5jaXJjdWxhckxpbmtJRCYmKGUuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0U21hbGxBcmNSYWRpdXM9dytlLndpZHRoLzIrdSxlLmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzPXcrZS53aWR0aC8yK24qcit1KSx1Kz10LndpZHRofSkscz1lLnRhcmdldC5jb2x1bW4sYz10LmxpbmtzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC50YXJnZXQuY29sdW1uPT1zJiZ0LmNpcmN1bGFyTGlua1R5cGU9PWx9KSwiYm90dG9tIj09ZS5jaXJjdWxhckxpbmtUeXBlP2Muc29ydChJKTpjLnNvcnQoeiksdT0wLGMuZm9yRWFjaChmdW5jdGlvbih0LG4pe3QuY2lyY3VsYXJMaW5rSUQ9PWUuY2lyY3VsYXJMaW5rSUQmJihlLmNpcmN1bGFyUGF0aERhdGEucmlnaHRTbWFsbEFyY1JhZGl1cz13K2Uud2lkdGgvMit1LGUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzPXcrZS53aWR0aC8yK24qcit1KSx1Kz10LndpZHRofSksImJvdHRvbSI9PWUuY2lyY3VsYXJMaW5rVHlwZT8oZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudD1NYXRoLm1heChhLGUuc291cmNlLnkxLGUudGFyZ2V0LnkxKStfK2UuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEJ1ZmZlcixlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudC1lLmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzLGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbFJpZ2h0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudC1lLmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cyk6KGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQ9by1fLWUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEJ1ZmZlcixlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudCtlLmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzLGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbFJpZ2h0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudCtlLmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cyl9ZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRJbm5lckV4dGVudD1lLmNpcmN1bGFyUGF0aERhdGEuc291cmNlWCtlLmNpcmN1bGFyUGF0aERhdGEubGVmdE5vZGVCdWZmZXIsZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFgtZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0Tm9kZUJ1ZmZlcixlLmNpcmN1bGFyUGF0aERhdGEubGVmdEZ1bGxFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVgrZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cytlLmNpcmN1bGFyUGF0aERhdGEubGVmdE5vZGVCdWZmZXIsZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0RnVsbEV4dGVudD1lLmNpcmN1bGFyUGF0aERhdGEudGFyZ2V0WC1lLmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cy1lLmNpcmN1bGFyUGF0aERhdGEucmlnaHROb2RlQnVmZmVyfWlmKGUuY2lyY3VsYXIpZS5wYXRoPWZ1bmN0aW9uKHQpe3ZhciBlPSIiO2U9InRvcCI9PXQuY2lyY3VsYXJMaW5rVHlwZT8iTSIrdC5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVgrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VZKyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRJbm5lckV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVkrIiBBIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzKyIgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJjUmFkaXVzKyIgMCAwIDAgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdEZ1bGxFeHRlbnQrIiAiKyh0LmNpcmN1bGFyUGF0aERhdGEuc291cmNlWS10LmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJjUmFkaXVzKSsiIEwiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0RnVsbEV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsTGVmdElubmVyRXh0ZW50KyIgQSIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cysiICIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cysiIDAgMCAwICIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRJbm5lckV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudCsiIEwiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodElubmVyRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxGdWxsRXh0ZW50KyIgQSIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzKyIgMCAwIDAgIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRGdWxsRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxSaWdodElubmVyRXh0ZW50KyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0RnVsbEV4dGVudCsiICIrKHQuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRZLXQuY2lyY3VsYXJQYXRoRGF0YS5yaWdodFNtYWxsQXJjUmFkaXVzKSsiIEEiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzKyIgIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRTbWFsbEFyY1JhZGl1cysiIDAgMCAwICIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0SW5uZXJFeHRlbnQrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRZKyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFgrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRZOiJNIit0LmNpcmN1bGFyUGF0aERhdGEuc291cmNlWCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVkrIiBMIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdElubmVyRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEuc291cmNlWSsiIEEiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNSYWRpdXMrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0U21hbGxBcmNSYWRpdXMrIiAwIDAgMSAiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0RnVsbEV4dGVudCsiICIrKHQuY2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VZK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0U21hbGxBcmNSYWRpdXMpKyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRGdWxsRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQrIiBBIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzKyIgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzKyIgMCAwIDEgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdElubmVyRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxGdWxsRXh0ZW50KyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0SW5uZXJFeHRlbnQrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQrIiBBIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cysiICIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMrIiAwIDAgMSAiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodEZ1bGxFeHRlbnQrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbFJpZ2h0SW5uZXJFeHRlbnQrIiBMIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRGdWxsRXh0ZW50KyIgIisodC5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFkrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0U21hbGxBcmNSYWRpdXMpKyIgQSIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodFNtYWxsQXJjUmFkaXVzKyIgMCAwIDEgIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRJbm5lckV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFkrIiBMIit0LmNpcmN1bGFyUGF0aERhdGEudGFyZ2V0WCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFk7cmV0dXJuIGV9KGUpO2Vsc2V7dmFyIGg9bi5saW5rSG9yaXpvbnRhbCgpLnNvdXJjZShmdW5jdGlvbih0KXtyZXR1cm5bdC5zb3VyY2UueDArKHQuc291cmNlLngxLXQuc291cmNlLngwKSx0LnkwXX0pLnRhcmdldChmdW5jdGlvbih0KXtyZXR1cm5bdC50YXJnZXQueDAsdC55MV19KTtlLnBhdGg9aChlKX19KX1mdW5jdGlvbiBDKHQsZSl7cmV0dXJuIEQodCk9PUQoZSk/ImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlwZT9PKHQsZSk6UCh0LGUpOkQoZSktRCh0KX1mdW5jdGlvbiBQKHQsZSl7cmV0dXJuIHQueTAtZS55MH1mdW5jdGlvbiBPKHQsZSl7cmV0dXJuIGUueTAtdC55MH1mdW5jdGlvbiB6KHQsZSl7cmV0dXJuIHQueTEtZS55MX1mdW5jdGlvbiBJKHQsZSl7cmV0dXJuIGUueTEtdC55MX1mdW5jdGlvbiBEKHQpe3JldHVybiB0LnRhcmdldC5jb2x1bW4tdC5zb3VyY2UuY29sdW1ufWZ1bmN0aW9uIFIodCl7cmV0dXJuIHQudGFyZ2V0LngwLXQuc291cmNlLngxfWZ1bmN0aW9uIEYodCxlKXt2YXIgcj1NKHQpLG49UihlKS9NYXRoLnRhbihyKTtyZXR1cm4idXAiPT1HKHQpP3QueTErbjp0LnkxLW59ZnVuY3Rpb24gQih0LGUpe3ZhciByPU0odCksbj1SKGUpL01hdGgudGFuKHIpO3JldHVybiJ1cCI9PUcodCk/dC55MS1uOnQueTErbn1mdW5jdGlvbiBOKHQsZSxyLG4pe3QubGlua3MuZm9yRWFjaChmdW5jdGlvbihhKXtpZighYS5jaXJjdWxhciYmYS50YXJnZXQuY29sdW1uLWEuc291cmNlLmNvbHVtbj4xKXt2YXIgaT1hLnNvdXJjZS5jb2x1bW4rMSxvPWEudGFyZ2V0LmNvbHVtbi0xLHM9MSxsPW8taSsxO2ZvcihzPTE7aTw9bztpKysscysrKXQubm9kZXMuZm9yRWFjaChmdW5jdGlvbihvKXtpZihvLmNvbHVtbj09aSl7dmFyIGMsdT1zLyhsKzEpLGg9TWF0aC5wb3coMS11LDMpLGY9Myp1Kk1hdGgucG93KDEtdSwyKSxwPTMqTWF0aC5wb3codSwyKSooMS11KSxkPU1hdGgucG93KHUsMyksZz1oKmEueTArZiphLnkwK3AqYS55MStkKmEueTEsdj1nLWEud2lkdGgvMixtPWcrYS53aWR0aC8yO3Y+by55MCYmdjxvLnkxPyhjPW8ueTEtdisxMCxjPSJib3R0b20iPT1vLmNpcmN1bGFyTGlua1R5cGU/YzotYyxvPVYobyxjLGUsciksdC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2IodCxuKSE9YihvLG4pJiZ0LmNvbHVtbj09by5jb2x1bW4mJmoobyx0KSYmVih0LGMsZSxyKX0pKTptPm8ueTAmJm08by55MT8oYz1tLW8ueTArMTAsbz1WKG8sYyxlLHIpLHQubm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXtiKHQsbikhPWIobyxuKSYmdC5jb2x1bW49PW8uY29sdW1uJiZ0LnkwPG8ueTEmJnQueTE+by55MSYmVih0LGMsZSxyKX0pKTp2PG8ueTAmJm0+by55MSYmKGM9bS1vLnkwKzEwLG89VihvLGMsZSxyKSx0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7Yih0LG4pIT1iKG8sbikmJnQuY29sdW1uPT1vLmNvbHVtbiYmdC55MDxvLnkxJiZ0LnkxPm8ueTEmJlYodCxjLGUscil9KSl9fSl9fSl9ZnVuY3Rpb24gaih0LGUpe3JldHVybiB0LnkwPmUueTAmJnQueTA8ZS55MXx8KHQueTE+ZS55MCYmdC55MTxlLnkxfHx0LnkwPGUueTAmJnQueTE+ZS55MSl9ZnVuY3Rpb24gVih0LGUscixuKXtyZXR1cm4gdC55MCtlPj1yJiZ0LnkxK2U8PW4mJih0LnkwPXQueTArZSx0LnkxPXQueTErZSx0LnRhcmdldExpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC55MT10LnkxK2V9KSx0LnNvdXJjZUxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC55MD10LnkwK2V9KSksdH1mdW5jdGlvbiBVKHQsZSxyLG4pe3Qubm9kZXMuZm9yRWFjaChmdW5jdGlvbihhKXtuJiZhLnkrKGEueTEtYS55MCk+ZSYmKGEueT1hLnktKGEueSsoYS55MS1hLnkwKS1lKSk7dmFyIGk9dC5saW5rcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGIodC5zb3VyY2Uscik9PWIoYSxyKX0pLG89aS5sZW5ndGg7bz4xJiZpLnNvcnQoZnVuY3Rpb24odCxlKXtpZighdC5jaXJjdWxhciYmIWUuY2lyY3VsYXIpe2lmKHQudGFyZ2V0LmNvbHVtbj09ZS50YXJnZXQuY29sdW1uKXJldHVybiB0LnkxLWUueTE7aWYoIUgodCxlKSlyZXR1cm4gdC55MS1lLnkxO2lmKHQudGFyZ2V0LmNvbHVtbj5lLnRhcmdldC5jb2x1bW4pe3ZhciByPUIoZSx0KTtyZXR1cm4gdC55MS1yfWlmKGUudGFyZ2V0LmNvbHVtbj50LnRhcmdldC5jb2x1bW4pcmV0dXJuIEIodCxlKS1lLnkxfXJldHVybiB0LmNpcmN1bGFyJiYhZS5jaXJjdWxhcj8idG9wIj09dC5jaXJjdWxhckxpbmtUeXBlPy0xOjE6ZS5jaXJjdWxhciYmIXQuY2lyY3VsYXI/InRvcCI9PWUuY2lyY3VsYXJMaW5rVHlwZT8xOi0xOnQuY2lyY3VsYXImJmUuY2lyY3VsYXI/dC5jaXJjdWxhckxpbmtUeXBlPT09ZS5jaXJjdWxhckxpbmtUeXBlJiYidG9wIj09dC5jaXJjdWxhckxpbmtUeXBlP3QudGFyZ2V0LmNvbHVtbj09PWUudGFyZ2V0LmNvbHVtbj90LnRhcmdldC55MS1lLnRhcmdldC55MTplLnRhcmdldC5jb2x1bW4tdC50YXJnZXQuY29sdW1uOnQuY2lyY3VsYXJMaW5rVHlwZT09PWUuY2lyY3VsYXJMaW5rVHlwZSYmImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlwZT90LnRhcmdldC5jb2x1bW49PT1lLnRhcmdldC5jb2x1bW4/ZS50YXJnZXQueTEtdC50YXJnZXQueTE6dC50YXJnZXQuY29sdW1uLWUudGFyZ2V0LmNvbHVtbjoidG9wIj09dC5jaXJjdWxhckxpbmtUeXBlPy0xOjE6dm9pZCAwfSk7dmFyIHM9YS55MDtpLmZvckVhY2goZnVuY3Rpb24odCl7dC55MD1zK3Qud2lkdGgvMixzKz10LndpZHRofSksaS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7aWYoImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlwZSl7Zm9yKHZhciByPWUrMSxuPTA7cjxvO3IrKyluKz1pW3JdLndpZHRoO3QueTA9YS55MS1uLXQud2lkdGgvMn19KX0pfWZ1bmN0aW9uIHEodCxlLHIpe3Qubm9kZXMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbj10LmxpbmtzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gYih0LnRhcmdldCxyKT09YihlLHIpfSksYT1uLmxlbmd0aDthPjEmJm4uc29ydChmdW5jdGlvbih0LGUpe2lmKCF0LmNpcmN1bGFyJiYhZS5jaXJjdWxhcil7aWYodC5zb3VyY2UuY29sdW1uPT1lLnNvdXJjZS5jb2x1bW4pcmV0dXJuIHQueTAtZS55MDtpZighSCh0LGUpKXJldHVybiB0LnkwLWUueTA7aWYoZS5zb3VyY2UuY29sdW1uPHQuc291cmNlLmNvbHVtbil7dmFyIHI9RihlLHQpO3JldHVybiB0LnkwLXJ9aWYodC5zb3VyY2UuY29sdW1uPGUuc291cmNlLmNvbHVtbilyZXR1cm4gRih0LGUpLWUueTB9cmV0dXJuIHQuY2lyY3VsYXImJiFlLmNpcmN1bGFyPyJ0b3AiPT10LmNpcmN1bGFyTGlua1R5cGU/LTE6MTplLmNpcmN1bGFyJiYhdC5jaXJjdWxhcj8idG9wIj09ZS5jaXJjdWxhckxpbmtUeXBlPzE6LTE6dC5jaXJjdWxhciYmZS5jaXJjdWxhcj90LmNpcmN1bGFyTGlua1R5cGU9PT1lLmNpcmN1bGFyTGlua1R5cGUmJiJ0b3AiPT10LmNpcmN1bGFyTGlua1R5cGU/dC5zb3VyY2UuY29sdW1uPT09ZS5zb3VyY2UuY29sdW1uP3Quc291cmNlLnkxLWUuc291cmNlLnkxOnQuc291cmNlLmNvbHVtbi1lLnNvdXJjZS5jb2x1bW46dC5jaXJjdWxhckxpbmtUeXBlPT09ZS5jaXJjdWxhckxpbmtUeXBlJiYiYm90dG9tIj09dC5jaXJjdWxhckxpbmtUeXBlP3Quc291cmNlLmNvbHVtbj09PWUuc291cmNlLmNvbHVtbj90LnNvdXJjZS55MS1lLnNvdXJjZS55MTplLnNvdXJjZS5jb2x1bW4tdC5zb3VyY2UuY29sdW1uOiJ0b3AiPT10LmNpcmN1bGFyTGlua1R5cGU/LTE6MTp2b2lkIDB9KTt2YXIgaT1lLnkwO24uZm9yRWFjaChmdW5jdGlvbih0KXt0LnkxPWkrdC53aWR0aC8yLGkrPXQud2lkdGh9KSxuLmZvckVhY2goZnVuY3Rpb24odCxyKXtpZigiYm90dG9tIj09dC5jaXJjdWxhckxpbmtUeXBlKXtmb3IodmFyIGk9cisxLG89MDtpPGE7aSsrKW8rPW5baV0ud2lkdGg7dC55MT1lLnkxLW8tdC53aWR0aC8yfX0pfSl9ZnVuY3Rpb24gSCh0LGUpe3JldHVybiBHKHQpPT1HKGUpfWZ1bmN0aW9uIEcodCl7cmV0dXJuIHQueTAtdC55MT4wPyJ1cCI6ImRvd24ifWZ1bmN0aW9uIFkodCxlKXtyZXR1cm4gYih0LnNvdXJjZSxlKT09Yih0LnRhcmdldCxlKX10LnNhbmtleUNpcmN1bGFyPWZ1bmN0aW9uKCl7dmFyIHQsbixpPTAsYj0wLE09MSxTPTEsRT0yNCxDPXYsUD1vLE89bSx6PXksST0zMixEPTIsUj1udWxsO2Z1bmN0aW9uIEYoKXt2YXIgbz17bm9kZXM6Ty5hcHBseShudWxsLGFyZ3VtZW50cyksbGlua3M6ei5hcHBseShudWxsLGFyZ3VtZW50cyl9OyFmdW5jdGlvbih0KXt0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmluZGV4PWUsdC5zb3VyY2VMaW5rcz1bXSx0LnRhcmdldExpbmtzPVtdfSk7dmFyIGU9ci5tYXAodC5ub2RlcyxDKTt0LmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCxyKXt0LmluZGV4PXI7dmFyIG49dC5zb3VyY2UsYT10LnRhcmdldDsib2JqZWN0IiE9PSgidW5kZWZpbmVkIj09dHlwZW9mIG4/InVuZGVmaW5lZCI6bChuKSkmJihuPXQuc291cmNlPXgoZSxuKSksIm9iamVjdCIhPT0oInVuZGVmaW5lZCI9PXR5cGVvZiBhPyJ1bmRlZmluZWQiOmwoYSkpJiYoYT10LnRhcmdldD14KGUsYSkpLG4uc291cmNlTGlua3MucHVzaCh0KSxhLnRhcmdldExpbmtzLnB1c2godCl9KX0obyksZnVuY3Rpb24odCxlLHIpe3ZhciBuPTA7aWYobnVsbD09PXIpe2Zvcih2YXIgaT1bXSxvPTA7bzx0LmxpbmtzLmxlbmd0aDtvKyspe3ZhciBzPXQubGlua3Nbb10sbD1zLnNvdXJjZS5pbmRleCxjPXMudGFyZ2V0LmluZGV4O2lbbF18fChpW2xdPVtdKSxpW2NdfHwoaVtjXT1bXSksLTE9PT1pW2xdLmluZGV4T2YoYykmJmlbbF0ucHVzaChjKX12YXIgdT1hKGkpO3Uuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aC1lLmxlbmd0aH0pO3ZhciBoPXt9O2ZvcihvPTA7bzx1Lmxlbmd0aDtvKyspe3ZhciBmPXVbb10scD1mLnNsaWNlKC0yKTtoW3BbMF1dfHwoaFtwWzBdXT17fSksaFtwWzBdXVtwWzFdXT0hMH10LmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQuaW5kZXgscj10LnNvdXJjZS5pbmRleDtlPT09cnx8aFtyXSYmaFtyXVtlXT8odC5jaXJjdWxhcj0hMCx0LmNpcmN1bGFyTGlua0lEPW4sbis9MSk6dC5jaXJjdWxhcj0hMX0pfWVsc2UgdC5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Quc291cmNlW3JdPHQudGFyZ2V0W3JdP3QuY2lyY3VsYXI9ITE6KHQuY2lyY3VsYXI9ITAsdC5jaXJjdWxhckxpbmtJRD1uLG4rPTEpfSl9KG8sMCxSKSxmdW5jdGlvbih0KXt0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dC5wYXJ0T2ZDeWNsZT0hMSx0LnZhbHVlPU1hdGgubWF4KGUuc3VtKHQuc291cmNlTGlua3MsZiksZS5zdW0odC50YXJnZXRMaW5rcyxmKSksdC5zb3VyY2VMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2lyY3VsYXImJih0LnBhcnRPZkN5Y2xlPSEwLHQuY2lyY3VsYXJMaW5rVHlwZT1lLmNpcmN1bGFyTGlua1R5cGUpfSksdC50YXJnZXRMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2lyY3VsYXImJih0LnBhcnRPZkN5Y2xlPSEwLHQuY2lyY3VsYXJMaW5rVHlwZT1lLmNpcmN1bGFyTGlua1R5cGUpfSl9KX0obyksZnVuY3Rpb24odCl7dmFyIGUscixuO2ZvcihlPXQubm9kZXMscj1bXSxuPTA7ZS5sZW5ndGg7KytuLGU9cixyPVtdKWUuZm9yRWFjaChmdW5jdGlvbih0KXt0LmRlcHRoPW4sdC5zb3VyY2VMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IuaW5kZXhPZih0LnRhcmdldCk8MCYmIXQuY2lyY3VsYXImJnIucHVzaCh0LnRhcmdldCl9KX0pO2ZvcihlPXQubm9kZXMscj1bXSxuPTA7ZS5sZW5ndGg7KytuLGU9cixyPVtdKWUuZm9yRWFjaChmdW5jdGlvbih0KXt0LmhlaWdodD1uLHQudGFyZ2V0TGlua3MuZm9yRWFjaChmdW5jdGlvbih0KXtyLmluZGV4T2YodC5zb3VyY2UpPDAmJiF0LmNpcmN1bGFyJiZyLnB1c2godC5zb3VyY2UpfSl9KTt0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jb2x1bW49TWF0aC5mbG9vcihQLmNhbGwobnVsbCx0LG4pKX0pfShvKSxUKG8sQyksZnVuY3Rpb24oYSxvLHMpe3ZhciBsPXIubmVzdCgpLmtleShmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2x1bW59KS5zb3J0S2V5cyhlLmFzY2VuZGluZykuZW50cmllcyhhLm5vZGVzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWVzfSk7KGZ1bmN0aW9uKHIpe2lmKG4pe3ZhciBvPTEvMDtsLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9UypuLyh0Lmxlbmd0aCsxKTtvPWU8bz9lOm99KSx0PW99dmFyIHM9ZS5taW4obCxmdW5jdGlvbihyKXtyZXR1cm4oUy1iLShyLmxlbmd0aC0xKSp0KS9lLnN1bShyLGYpfSk7cyo9ayxhLmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC53aWR0aD10LnZhbHVlKnN9KTt2YXIgYz1mdW5jdGlvbih0KXt2YXIgcj0wLG49MCxhPTAsaT0wLG89ZS5tYXgodC5ub2RlcyxmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2x1bW59KTtyZXR1cm4gdC5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuY2lyY3VsYXImJigidG9wIj09dC5jaXJjdWxhckxpbmtUeXBlP3IrPXQud2lkdGg6bis9dC53aWR0aCwwPT10LnRhcmdldC5jb2x1bW4mJihpKz10LndpZHRoKSx0LnNvdXJjZS5jb2x1bW49PW8mJihhKz10LndpZHRoKSl9KSx7dG9wOnI9cj4wP3IrXyt3OnIsYm90dG9tOm49bj4wP24rXyt3Om4sbGVmdDppPWk+MD9pK18rdzppLHJpZ2h0OmE9YT4wP2ErXyt3OmF9fShhKSx1PWZ1bmN0aW9uKHQscil7dmFyIG49ZS5tYXgodC5ub2RlcyxmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2x1bW59KSxhPU0taSxvPVMtYixzPWErci5yaWdodCtyLmxlZnQsbD1vK3IudG9wK3IuYm90dG9tLGM9YS9zLHU9by9sO3JldHVybiBpPWkqYytyLmxlZnQsTT0wPT1yLnJpZ2h0P006TSpjLGI9Yip1K3IudG9wLFMqPXUsdC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QueDA9aSt0LmNvbHVtbiooKE0taS1FKS9uKSx0LngxPXQueDArRX0pLHV9KGEsYyk7cyo9dSxhLmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC53aWR0aD10LnZhbHVlKnN9KSxsLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7dC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kZXB0aD09bC5sZW5ndGgtMSYmMT09ZT8odC55MD1TLzItdC52YWx1ZSpzLHQueTE9dC55MCt0LnZhbHVlKnMpOjA9PXQuZGVwdGgmJjE9PWU/KHQueTA9Uy8yLXQudmFsdWUqcyx0LnkxPXQueTArdC52YWx1ZSpzKTp0LnBhcnRPZkN5Y2xlPzA9PUEodCxyKT8odC55MD1TLzIrbix0LnkxPXQueTArdC52YWx1ZSpzKToidG9wIj09dC5jaXJjdWxhckxpbmtUeXBlPyh0LnkwPWIrbix0LnkxPXQueTArdC52YWx1ZSpzKToodC55MD1TLXQudmFsdWUqcy1uLHQueTE9dC55MCt0LnZhbHVlKnMpOjA9PWMudG9wfHwwPT1jLmJvdHRvbT8odC55MD0oUy1iKS9lKm4sdC55MT10LnkwK3QudmFsdWUqcyk6KHQueTA9KFMtYikvMi1lLzIrbix0LnkxPXQueTArdC52YWx1ZSpzKX0pfSl9KShzKSxtKCk7Zm9yKHZhciBjPTEsdT1vO3U+MDstLXUpdihjKj0uOTkscyksbSgpO2Z1bmN0aW9uIHYodCxyKXt2YXIgbj1sLmxlbmd0aDtsLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGk9YS5sZW5ndGgsbz1hWzBdLmRlcHRoO2EuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcztpZihhLnNvdXJjZUxpbmtzLmxlbmd0aHx8YS50YXJnZXRMaW5rcy5sZW5ndGgpaWYoYS5wYXJ0T2ZDeWNsZSYmQShhLHIpPjApO2Vsc2UgaWYoMD09byYmMT09aSlzPWEueTEtYS55MCxhLnkwPVMvMi1zLzIsYS55MT1TLzIrcy8yO2Vsc2UgaWYobz09bi0xJiYxPT1pKXM9YS55MS1hLnkwLGEueTA9Uy8yLXMvMixhLnkxPVMvMitzLzI7ZWxzZXt2YXIgbD1lLm1lYW4oYS5zb3VyY2VMaW5rcyxnKSxjPWUubWVhbihhLnRhcmdldExpbmtzLGQpLHU9KChsJiZjPyhsK2MpLzI6bHx8YyktcChhKSkqdDthLnkwKz11LGEueTErPXV9fSl9KX1mdW5jdGlvbiBtKCl7bC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByLG4sYSxpPWIsbz1lLmxlbmd0aDtmb3IoZS5zb3J0KGgpLGE9MDthPG87KythKXI9ZVthXSwobj1pLXIueTApPjAmJihyLnkwKz1uLHIueTErPW4pLGk9ci55MSt0O2lmKChuPWktdC1TKT4wKWZvcihpPXIueTAtPW4sci55MS09bixhPW8tMjthPj0wOy0tYSlyPWVbYV0sKG49ci55MSt0LWkpPjAmJihyLnkwLT1uLHIueTEtPW4pLGk9ci55MH0pfX0obyxJLEMpLEIobyk7Zm9yKHZhciBzPTA7czw0O3MrKylVKG8sUyxDKSxxKG8sMCxDKSxOKG8sYixTLEMpLFUobyxTLEMpLHEobywwLEMpO3JldHVybiBmdW5jdGlvbih0LHIsbil7dmFyIGE9dC5ub2RlcyxpPXQubGlua3Msbz0hMSxzPSExO2lmKGkuZm9yRWFjaChmdW5jdGlvbih0KXsidG9wIj09dC5jaXJjdWxhckxpbmtUeXBlP289ITA6ImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlwZSYmKHM9ITApfSksMD09b3x8MD09cyl7dmFyIGw9ZS5taW4oYSxmdW5jdGlvbih0KXtyZXR1cm4gdC55MH0pLGM9ZS5tYXgoYSxmdW5jdGlvbih0KXtyZXR1cm4gdC55MX0pLHU9Yy1sLGg9bi1yLGY9aC91O2EuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0odC55MS10LnkwKSpmO3QueTA9KHQueTAtbCkqZix0LnkxPXQueTArZX0pLGkuZm9yRWFjaChmdW5jdGlvbih0KXt0LnkwPSh0LnkwLWwpKmYsdC55MT0odC55MS1sKSpmLHQud2lkdGg9dC53aWR0aCpmfSl9fShvLGIsUyksTChvLEQsUyxDKSxvfWZ1bmN0aW9uIEIodCl7dC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Quc291cmNlTGlua3Muc29ydCh1KSx0LnRhcmdldExpbmtzLnNvcnQoYyl9KSx0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC55MCxyPWUsbj10LnkxLGE9bjt0LnNvdXJjZUxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jaXJjdWxhcj8odC55MD1uLXQud2lkdGgvMixuLT10LndpZHRoKToodC55MD1lK3Qud2lkdGgvMixlKz10LndpZHRoKX0pLHQudGFyZ2V0TGlua3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNpcmN1bGFyPyh0LnkxPWEtdC53aWR0aC8yLGEtPXQud2lkdGgpOih0LnkxPXIrdC53aWR0aC8yLHIrPXQud2lkdGgpfSl9KX1yZXR1cm4gRi5ub2RlSWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzKHQpLEYpOkN9LEYubm9kZUFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhQPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cyh0KSxGKTpQfSxGLm5vZGVXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0rdCxGKTpFfSxGLm5vZGVQYWRkaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStlLEYpOnR9LEYubm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzKHQpLEYpOk99LEYubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHo9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzKHQpLEYpOnp9LEYuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1iPTAsTT0rdFswXSxTPSt0WzFdLEYpOltNLWksUy1iXX0sRi5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3RbMF1bMF0sTT0rdFsxXVswXSxiPSt0WzBdWzFdLFM9K3RbMV1bMV0sRik6W1tpLGJdLFtNLFNdXX0sRi5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhJPSt0LEYpOkl9LEYuY2lyY3VsYXJMaW5rR2FwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhEPSt0LEYpOkR9LEYubm9kZVBhZGRpbmdSYXRpbz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxGKTpufSxGLnNvcnROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUj10LEYpOlJ9LEYudXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBUKHQsQyksQih0KSx0LmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jaXJjdWxhciYmKHQuY2lyY3VsYXJMaW5rVHlwZT10LnkwK3QueTE8Uz8idG9wIjoiYm90dG9tIix0LnNvdXJjZS5jaXJjdWxhckxpbmtUeXBlPXQuY2lyY3VsYXJMaW5rVHlwZSx0LnRhcmdldC5jaXJjdWxhckxpbmtUeXBlPXQuY2lyY3VsYXJMaW5rVHlwZSl9KSxVKHQsUyxDLCExKSxxKHQsMCxDKSxMKHQsRCxTLEMpLHR9LEZ9LHQuc2Fua2V5Q2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldExpbmtzLmxlbmd0aD90LmRlcHRoOnQuc291cmNlTGlua3MubGVuZ3RoP2UubWluKHQuc291cmNlTGlua3MsaSktMTowfSx0LnNhbmtleUxlZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVwdGh9LHQuc2Fua2V5UmlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS0xLXQuaGVpZ2h0fSx0LnNhbmtleUp1c3RpZnk9byxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LCJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP2Eocix0KCJkMy1hcnJheSIpLHQoImQzLWNvbGxlY3Rpb24iKSx0KCJkMy1zaGFwZSIpLHQoImVsZW1lbnRhcnktY2lyY3VpdHMtZGlyZWN0ZWQtZ3JhcGgiKSk6YShuLmQzPW4uZDN8fHt9LG4uZDMsbi5kMyxuLmQzLG51bGwpfSx7ImQzLWFycmF5IjoxNTQsImQzLWNvbGxlY3Rpb24iOjE1NSwiZDMtc2hhcGUiOjE2MywiZWxlbWVudGFyeS1jaXJjdWl0cy1kaXJlY3RlZC1ncmFwaCI6MTc1fV0sNTY6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbixhO249dGhpcyxhPWZ1bmN0aW9uKHQsZSxyLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKHQpe3JldHVybiB0LnRhcmdldC5kZXB0aH1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHQuc291cmNlTGlua3MubGVuZ3RoP3QuZGVwdGg6ZS0xfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gYyh0LnNvdXJjZSxlLnNvdXJjZSl8fHQuaW5kZXgtZS5pbmRleH1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIGModC50YXJnZXQsZS50YXJnZXQpfHx0LmluZGV4LWUuaW5kZXh9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0LnkwLWUueTB9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC52YWx1ZX1mdW5jdGlvbiBoKHQpe3JldHVybih0LnkwK3QueTEpLzJ9ZnVuY3Rpb24gZih0KXtyZXR1cm4gaCh0LnNvdXJjZSkqdC52YWx1ZX1mdW5jdGlvbiBwKHQpe3JldHVybiBoKHQudGFyZ2V0KSp0LnZhbHVlfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuaW5kZXh9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdC5ub2Rlc31mdW5jdGlvbiB2KHQpe3JldHVybiB0LmxpbmtzfWZ1bmN0aW9uIG0odCxlKXt2YXIgcj10LmdldChlKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrZSk7cmV0dXJuIHJ9ZnVuY3Rpb24geSh0KXtyZXR1cm5bdC5zb3VyY2UueDEsdC55MF19ZnVuY3Rpb24geCh0KXtyZXR1cm5bdC50YXJnZXQueDAsdC55MV19dC5zYW5rZXk9ZnVuY3Rpb24oKXt2YXIgdD0wLG49MCxhPTEseT0xLHg9MjQsYj04LF89ZCx3PWksaz1nLFQ9dixNPTMyLEE9Mi8zO2Z1bmN0aW9uIFMoKXt2YXIgaT17bm9kZXM6ay5hcHBseShudWxsLGFyZ3VtZW50cyksbGlua3M6VC5hcHBseShudWxsLGFyZ3VtZW50cyl9O3JldHVybiBmdW5jdGlvbih0KXt0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmluZGV4PWUsdC5zb3VyY2VMaW5rcz1bXSx0LnRhcmdldExpbmtzPVtdfSk7dmFyIGU9ci5tYXAodC5ub2RlcyxfKTt0LmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCxyKXt0LmluZGV4PXI7dmFyIG49dC5zb3VyY2UsYT10LnRhcmdldDsib2JqZWN0IiE9dHlwZW9mIG4mJihuPXQuc291cmNlPW0oZSxuKSksIm9iamVjdCIhPXR5cGVvZiBhJiYoYT10LnRhcmdldD1tKGUsYSkpLG4uc291cmNlTGlua3MucHVzaCh0KSxhLnRhcmdldExpbmtzLnB1c2godCl9KX0oaSksZnVuY3Rpb24odCl7dC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QudmFsdWU9TWF0aC5tYXgoZS5zdW0odC5zb3VyY2VMaW5rcyx1KSxlLnN1bSh0LnRhcmdldExpbmtzLHUpKX0pfShpKSxmdW5jdGlvbihlKXt2YXIgcixuLGk7Zm9yKHI9ZS5ub2RlcyxuPVtdLGk9MDtyLmxlbmd0aDsrK2kscj1uLG49W10pci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZGVwdGg9aSx0LnNvdXJjZUxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7bi5pbmRleE9mKHQudGFyZ2V0KTwwJiZuLnB1c2godC50YXJnZXQpfSl9KTtmb3Iocj1lLm5vZGVzLG49W10saT0wO3IubGVuZ3RoOysraSxyPW4sbj1bXSlyLmZvckVhY2goZnVuY3Rpb24odCl7dC5oZWlnaHQ9aSx0LnRhcmdldExpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7bi5pbmRleE9mKHQuc291cmNlKTwwJiZuLnB1c2godC5zb3VyY2UpfSl9KTt2YXIgbz0oYS10LXgpLyhpLTEpO2Uubm9kZXMuZm9yRWFjaChmdW5jdGlvbihlKXtlLngxPShlLngwPXQrTWF0aC5tYXgoMCxNYXRoLm1pbihpLTEsTWF0aC5mbG9vcih3LmNhbGwobnVsbCxlLGkpKSkpKm8pK3h9KX0oaSksZnVuY3Rpb24odCl7dmFyIGE9ci5uZXN0KCkua2V5KGZ1bmN0aW9uKHQpe3JldHVybiB0LngwfSkuc29ydEtleXMoZS5hc2NlbmRpbmcpLmVudHJpZXModC5ub2RlcykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlc30pOyhmdW5jdGlvbigpe3ZhciByPWUubWF4KGEsZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSksaT1BKih5LW4pLyhyLTEpO2I+aSYmKGI9aSk7dmFyIG89ZS5taW4oYSxmdW5jdGlvbih0KXtyZXR1cm4oeS1uLSh0Lmxlbmd0aC0xKSpiKS9lLnN1bSh0LHUpfSk7YS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaChmdW5jdGlvbih0LGUpe3QueTE9KHQueTA9ZSkrdC52YWx1ZSpvfSl9KSx0LmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC53aWR0aD10LnZhbHVlKm99KX0pKCksZCgpO2Zvcih2YXIgaT0xLG89TTtvPjA7LS1vKWwoaSo9Ljk5KSxkKCkscyhpKSxkKCk7ZnVuY3Rpb24gcyh0KXthLmZvckVhY2goZnVuY3Rpb24ocil7ci5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lmKHIudGFyZ2V0TGlua3MubGVuZ3RoKXt2YXIgbj0oZS5zdW0oci50YXJnZXRMaW5rcyxmKS9lLnN1bShyLnRhcmdldExpbmtzLHUpLWgocikpKnQ7ci55MCs9bixyLnkxKz1ufX0pfSl9ZnVuY3Rpb24gbCh0KXthLnNsaWNlKCkucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24ocil7ci5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lmKHIuc291cmNlTGlua3MubGVuZ3RoKXt2YXIgbj0oZS5zdW0oci5zb3VyY2VMaW5rcyxwKS9lLnN1bShyLnNvdXJjZUxpbmtzLHUpLWgocikpKnQ7ci55MCs9bixyLnkxKz1ufX0pfSl9ZnVuY3Rpb24gZCgpe2EuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZSxyLGEsaT1uLG89dC5sZW5ndGg7Zm9yKHQuc29ydChjKSxhPTA7YTxvOysrYSllPXRbYV0sKHI9aS1lLnkwKT4wJiYoZS55MCs9cixlLnkxKz1yKSxpPWUueTErYjtpZigocj1pLWIteSk+MClmb3IoaT1lLnkwLT1yLGUueTEtPXIsYT1vLTI7YT49MDstLWEpZT10W2FdLChyPWUueTErYi1pKT4wJiYoZS55MC09cixlLnkxLT1yKSxpPWUueTB9KX19KGkpLEUoaSksaX1mdW5jdGlvbiBFKHQpe3Qubm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnNvdXJjZUxpbmtzLnNvcnQobCksdC50YXJnZXRMaW5rcy5zb3J0KHMpfSksdC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQueTAscj1lO3Quc291cmNlTGlua3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LnkwPWUrdC53aWR0aC8yLGUrPXQud2lkdGh9KSx0LnRhcmdldExpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC55MT1yK3Qud2lkdGgvMixyKz10LndpZHRofSl9KX1yZXR1cm4gUy51cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIEUodCksdH0sUy5ub2RlSWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpvKHQpLFMpOl99LFMubm9kZUFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6byh0KSxTKTp3fSxTLm5vZGVXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0rdCxTKTp4fSxTLm5vZGVQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPSt0LFMpOmJ9LFMubm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpvKHQpLFMpOmt9LFMubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpvKHQpLFMpOlR9LFMuc2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uPTAsYT0rZVswXSx5PStlWzFdLFMpOlthLXQseS1uXX0sUy5leHRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K2VbMF1bMF0sYT0rZVsxXVswXSxuPStlWzBdWzFdLHk9K2VbMV1bMV0sUyk6W1t0LG5dLFthLHldXX0sUy5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPSt0LFMpOk19LFN9LHQuc2Fua2V5Q2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldExpbmtzLmxlbmd0aD90LmRlcHRoOnQuc291cmNlTGlua3MubGVuZ3RoP2UubWluKHQuc291cmNlTGlua3MsYSktMTowfSx0LnNhbmtleUxlZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVwdGh9LHQuc2Fua2V5UmlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS0xLXQuaGVpZ2h0fSx0LnNhbmtleUp1c3RpZnk9aSx0LnNhbmtleUxpbmtIb3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuIG4ubGlua0hvcml6b250YWwoKS5zb3VyY2UoeSkudGFyZ2V0KHgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LCJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP2Eocix0KCJkMy1hcnJheSIpLHQoImQzLWNvbGxlY3Rpb24iKSx0KCJkMy1zaGFwZSIpKTphKG4uZDM9bi5kM3x8e30sbi5kMyxuLmQzLG4uZDMpfSx7ImQzLWFycmF5IjoxNTQsImQzLWNvbGxlY3Rpb24iOjE1NSwiZDMtc2hhcGUiOjE2M31dLDU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj10KCJAdHVyZi9tZXRhIiksYT02Mzc4MTM3O2Z1bmN0aW9uIGkodCl7dmFyIGU9MDtpZih0JiZ0Lmxlbmd0aD4wKXtlKz1NYXRoLmFicyhvKHRbMF0pKTtmb3IodmFyIHI9MTtyPHQubGVuZ3RoO3IrKyllLT1NYXRoLmFicyhvKHRbcl0pKX1yZXR1cm4gZX1mdW5jdGlvbiBvKHQpe3ZhciBlLHIsbixpLG8sbCxjPTAsdT10Lmxlbmd0aDtpZih1PjIpe2ZvcihsPTA7bDx1O2wrKylsPT09dS0yPyhuPXUtMixpPXUtMSxvPTApOmw9PT11LTE/KG49dS0xLGk9MCxvPTEpOihuPWwsaT1sKzEsbz1sKzIpLGU9dFtuXSxyPXRbaV0sYys9KHModFtvXVswXSktcyhlWzBdKSkqTWF0aC5zaW4ocyhyWzFdKSk7Yz1jKmEqYS8yfXJldHVybiBjfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQqTWF0aC5QSS8xODB9ci5kZWZhdWx0PWZ1bmN0aW9uKHQpe3JldHVybiBuLmdlb21SZWR1Y2UodCxmdW5jdGlvbih0LGUpe3JldHVybiB0K2Z1bmN0aW9uKHQpe3ZhciBlLHI9MDtzd2l0Y2godC50eXBlKXtjYXNlIlBvbHlnb24iOnJldHVybiBpKHQuY29vcmRpbmF0ZXMpO2Nhc2UiTXVsdGlQb2x5Z29uIjpmb3IoZT0wO2U8dC5jb29yZGluYXRlcy5sZW5ndGg7ZSsrKXIrPWkodC5jb29yZGluYXRlc1tlXSk7cmV0dXJuIHI7Y2FzZSJQb2ludCI6Y2FzZSJNdWx0aVBvaW50IjpjYXNlIkxpbmVTdHJpbmciOmNhc2UiTXVsdGlMaW5lU3RyaW5nIjpyZXR1cm4gMH1yZXR1cm4gMH0oZSl9LDApfX0seyJAdHVyZi9tZXRhIjo2MX1dLDU4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj10KCJAdHVyZi9tZXRhIik7ci5kZWZhdWx0PWZ1bmN0aW9uKHQpe3ZhciBlPVsxLzAsMS8wLC0xLzAsLTEvMF07cmV0dXJuIG4uY29vcmRFYWNoKHQsZnVuY3Rpb24odCl7ZVswXT50WzBdJiYoZVswXT10WzBdKSxlWzFdPnRbMV0mJihlWzFdPXRbMV0pLGVbMl08dFswXSYmKGVbMl09dFswXSksZVszXTx0WzFdJiYoZVszXT10WzFdKX0pLGV9fSx7IkB0dXJmL21ldGEiOjYxfV0sNTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXQoIkB0dXJmL21ldGEiKSxhPXQoIkB0dXJmL2hlbHBlcnMiKTtyLmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHI9MCxpPTAsbz0wO3JldHVybiBuLmNvb3JkRWFjaCh0LGZ1bmN0aW9uKHQpe3IrPXRbMF0saSs9dFsxXSxvKyt9KSxhLnBvaW50KFtyL28saS9vXSxlLnByb3BlcnRpZXMpfX0seyJAdHVyZi9oZWxwZXJzIjo2MCwiQHR1cmYvbWV0YSI6NjF9XSw2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG49e3R5cGU6IkZlYXR1cmUifTtyZXR1cm4oMD09PXIuaWR8fHIuaWQpJiYobi5pZD1yLmlkKSxyLmJib3gmJihuLmJib3g9ci5iYm94KSxuLnByb3BlcnRpZXM9ZXx8e30sbi5nZW9tZXRyeT10LG59ZnVuY3Rpb24gYSh0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSxuKHt0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiBpKHQsZSxyKXt2b2lkIDA9PT1yJiYocj17fSk7Zm9yKHZhciBhPTAsaT10O2E8aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2FdO2lmKG8ubGVuZ3RoPDQpdGhyb3cgbmV3IEVycm9yKCJFYWNoIExpbmVhclJpbmcgb2YgYSBQb2x5Z29uIG11c3QgaGF2ZSA0IG9yIG1vcmUgUG9zaXRpb25zLiIpO2Zvcih2YXIgcz0wO3M8b1tvLmxlbmd0aC0xXS5sZW5ndGg7cysrKWlmKG9bby5sZW5ndGgtMV1bc10hPT1vWzBdW3NdKXRocm93IG5ldyBFcnJvcigiRmlyc3QgYW5kIGxhc3QgUG9zaXRpb24gYXJlIG5vdCBlcXVpdmFsZW50LiIpfXJldHVybiBuKHt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczp0fSxlLHIpfWZ1bmN0aW9uIG8odCxlLHIpe2lmKHZvaWQgMD09PXImJihyPXt9KSx0Lmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiY29vcmRpbmF0ZXMgbXVzdCBiZSBhbiBhcnJheSBvZiB0d28gb3IgbW9yZSBwb3NpdGlvbnMiKTtyZXR1cm4gbih7dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiBzKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciByPXt0eXBlOiJGZWF0dXJlQ29sbGVjdGlvbiJ9O3JldHVybiBlLmlkJiYoci5pZD1lLmlkKSxlLmJib3gmJihyLmJib3g9ZS5iYm94KSxyLmZlYXR1cmVzPXQscn1mdW5jdGlvbiBsKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLG4oe3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiBjKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLG4oe3R5cGU6Ik11bHRpUG9pbnQiLGNvb3JkaW5hdGVzOnR9LGUscil9ZnVuY3Rpb24gdSh0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSxuKHt0eXBlOiJNdWx0aVBvbHlnb24iLGNvb3JkaW5hdGVzOnR9LGUscil9ZnVuY3Rpb24gaCh0LGUpe3ZvaWQgMD09PWUmJihlPSJraWxvbWV0ZXJzIik7dmFyIG49ci5mYWN0b3JzW2VdO2lmKCFuKXRocm93IG5ldyBFcnJvcihlKyIgdW5pdHMgaXMgaW52YWxpZCIpO3JldHVybiB0Km59ZnVuY3Rpb24gZih0LGUpe3ZvaWQgMD09PWUmJihlPSJraWxvbWV0ZXJzIik7dmFyIG49ci5mYWN0b3JzW2VdO2lmKCFuKXRocm93IG5ldyBFcnJvcihlKyIgdW5pdHMgaXMgaW52YWxpZCIpO3JldHVybiB0L259ZnVuY3Rpb24gcCh0KXtyZXR1cm4gMTgwKih0JSgyKk1hdGguUEkpKS9NYXRoLlBJfWZ1bmN0aW9uIGQodCl7cmV0dXJuIWlzTmFOKHQpJiZudWxsIT09dCYmIUFycmF5LmlzQXJyYXkodCkmJiEvXlxzKiQvLnRlc3QodCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHIuZWFydGhSYWRpdXM9NjM3MTAwOC44LHIuZmFjdG9ycz17Y2VudGltZXRlcnM6MTAwKnIuZWFydGhSYWRpdXMsY2VudGltZXRyZXM6MTAwKnIuZWFydGhSYWRpdXMsZGVncmVlczpyLmVhcnRoUmFkaXVzLzExMTMyNSxmZWV0OjMuMjgwODQqci5lYXJ0aFJhZGl1cyxpbmNoZXM6MzkuMzcqci5lYXJ0aFJhZGl1cyxraWxvbWV0ZXJzOnIuZWFydGhSYWRpdXMvMWUzLGtpbG9tZXRyZXM6ci5lYXJ0aFJhZGl1cy8xZTMsbWV0ZXJzOnIuZWFydGhSYWRpdXMsbWV0cmVzOnIuZWFydGhSYWRpdXMsbWlsZXM6ci5lYXJ0aFJhZGl1cy8xNjA5LjM0NCxtaWxsaW1ldGVyczoxZTMqci5lYXJ0aFJhZGl1cyxtaWxsaW1ldHJlczoxZTMqci5lYXJ0aFJhZGl1cyxuYXV0aWNhbG1pbGVzOnIuZWFydGhSYWRpdXMvMTg1MixyYWRpYW5zOjEseWFyZHM6ci5lYXJ0aFJhZGl1cy8xLjA5MzZ9LHIudW5pdHNGYWN0b3JzPXtjZW50aW1ldGVyczoxMDAsY2VudGltZXRyZXM6MTAwLGRlZ3JlZXM6MS8xMTEzMjUsZmVldDozLjI4MDg0LGluY2hlczozOS4zNyxraWxvbWV0ZXJzOi4wMDEsa2lsb21ldHJlczouMDAxLG1ldGVyczoxLG1ldHJlczoxLG1pbGVzOjEvMTYwOS4zNDQsbWlsbGltZXRlcnM6MWUzLG1pbGxpbWV0cmVzOjFlMyxuYXV0aWNhbG1pbGVzOjEvMTg1MixyYWRpYW5zOjEvci5lYXJ0aFJhZGl1cyx5YXJkczoxLzEuMDkzNn0sci5hcmVhRmFjdG9ycz17YWNyZXM6MjQ3MTA1ZS05LGNlbnRpbWV0ZXJzOjFlNCxjZW50aW1ldHJlczoxZTQsZmVldDoxMC43NjM5MTA0MTcsaW5jaGVzOjE1NTAuMDAzMTAwMDA2LGtpbG9tZXRlcnM6MWUtNixraWxvbWV0cmVzOjFlLTYsbWV0ZXJzOjEsbWV0cmVzOjEsbWlsZXM6My44NmUtNyxtaWxsaW1ldGVyczoxZTYsbWlsbGltZXRyZXM6MWU2LHlhcmRzOjEuMTk1OTkwMDQ2fSxyLmZlYXR1cmU9bixyLmdlb21ldHJ5PWZ1bmN0aW9uKHQsZSxyKXtzd2l0Y2godm9pZCAwPT09ciYmKHI9e30pLHQpe2Nhc2UiUG9pbnQiOnJldHVybiBhKGUpLmdlb21ldHJ5O2Nhc2UiTGluZVN0cmluZyI6cmV0dXJuIG8oZSkuZ2VvbWV0cnk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gaShlKS5nZW9tZXRyeTtjYXNlIk11bHRpUG9pbnQiOnJldHVybiBjKGUpLmdlb21ldHJ5O2Nhc2UiTXVsdGlMaW5lU3RyaW5nIjpyZXR1cm4gbChlKS5nZW9tZXRyeTtjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIHUoZSkuZ2VvbWV0cnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IodCsiIGlzIGludmFsaWQiKX19LHIucG9pbnQ9YSxyLnBvaW50cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSxzKHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBhKHQsZSl9KSxyKX0sci5wb2x5Z29uPWksci5wb2x5Z29ucz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSxzKHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBpKHQsZSl9KSxyKX0sci5saW5lU3RyaW5nPW8sci5saW5lU3RyaW5ncz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSxzKHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBvKHQsZSl9KSxyKX0sci5mZWF0dXJlQ29sbGVjdGlvbj1zLHIubXVsdGlMaW5lU3RyaW5nPWwsci5tdWx0aVBvaW50PWMsci5tdWx0aVBvbHlnb249dSxyLmdlb21ldHJ5Q29sbGVjdGlvbj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9KSxuKHt0eXBlOiJHZW9tZXRyeUNvbGxlY3Rpb24iLGdlb21ldHJpZXM6dH0sZSxyKX0sci5yb3VuZD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPTApLGUmJiEoZT49MCkpdGhyb3cgbmV3IEVycm9yKCJwcmVjaXNpb24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO3ZhciByPU1hdGgucG93KDEwLGV8fDApO3JldHVybiBNYXRoLnJvdW5kKHQqcikvcn0sci5yYWRpYW5zVG9MZW5ndGg9aCxyLmxlbmd0aFRvUmFkaWFucz1mLHIubGVuZ3RoVG9EZWdyZWVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAoZih0LGUpKX0sci5iZWFyaW5nVG9BemltdXRoPWZ1bmN0aW9uKHQpe3ZhciBlPXQlMzYwO3JldHVybiBlPDAmJihlKz0zNjApLGV9LHIucmFkaWFuc1RvRGVncmVlcz1wLHIuZGVncmVlc1RvUmFkaWFucz1mdW5jdGlvbih0KXtyZXR1cm4gdCUzNjAqTWF0aC5QSS8xODB9LHIuY29udmVydExlbmd0aD1mdW5jdGlvbih0LGUscil7aWYodm9pZCAwPT09ZSYmKGU9ImtpbG9tZXRlcnMiKSx2b2lkIDA9PT1yJiYocj0ia2lsb21ldGVycyIpLCEodD49MCkpdGhyb3cgbmV3IEVycm9yKCJsZW5ndGggbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO3JldHVybiBoKGYodCxlKSxyKX0sci5jb252ZXJ0QXJlYT1mdW5jdGlvbih0LGUsbil7aWYodm9pZCAwPT09ZSYmKGU9Im1ldGVycyIpLHZvaWQgMD09PW4mJihuPSJraWxvbWV0ZXJzIiksISh0Pj0wKSl0aHJvdyBuZXcgRXJyb3IoImFyZWEgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO3ZhciBhPXIuYXJlYUZhY3RvcnNbZV07aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIG9yaWdpbmFsIHVuaXRzIik7dmFyIGk9ci5hcmVhRmFjdG9yc1tuXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZmluYWwgdW5pdHMiKTtyZXR1cm4gdC9hKml9LHIuaXNOdW1iZXI9ZCxyLmlzT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiEhdCYmdC5jb25zdHJ1Y3Rvcj09PU9iamVjdH0sci52YWxpZGF0ZUJCb3g9ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJiYm94IGlzIHJlcXVpcmVkIik7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IEVycm9yKCJiYm94IG11c3QgYmUgYW4gQXJyYXkiKTtpZig0IT09dC5sZW5ndGgmJjYhPT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImJib3ggbXVzdCBiZSBhbiBBcnJheSBvZiA0IG9yIDYgbnVtYmVycyIpO3QuZm9yRWFjaChmdW5jdGlvbih0KXtpZighZCh0KSl0aHJvdyBuZXcgRXJyb3IoImJib3ggbXVzdCBvbmx5IGNvbnRhaW4gbnVtYmVycyIpfSl9LHIudmFsaWRhdGVJZD1mdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoImlkIGlzIHJlcXVpcmVkIik7aWYoLTE9PT1bInN0cmluZyIsIm51bWJlciJdLmluZGV4T2YodHlwZW9mIHQpKXRocm93IG5ldyBFcnJvcigiaWQgbXVzdCBiZSBhIG51bWJlciBvciBhIHN0cmluZyIpfSxyLnJhZGlhbnMyZGVncmVlcz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYHJhZGlhbnNUb0RlZ3JlZXNgIil9LHIuZGVncmVlczJyYWRpYW5zPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJtZXRob2QgaGFzIGJlZW4gcmVuYW1lZCB0byBgZGVncmVlc1RvUmFkaWFuc2AiKX0sci5kaXN0YW5jZVRvRGVncmVlcz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGxlbmd0aFRvRGVncmVlc2AiKX0sci5kaXN0YW5jZVRvUmFkaWFucz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGxlbmd0aFRvUmFkaWFuc2AiKX0sci5yYWRpYW5zVG9EaXN0YW5jZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYHJhZGlhbnNUb0xlbmd0aGAiKX0sci5iZWFyaW5nVG9BbmdsZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGJlYXJpbmdUb0F6aW11dGhgIil9LHIuY29udmVydERpc3RhbmNlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJtZXRob2QgaGFzIGJlZW4gcmVuYW1lZCB0byBgY29udmVydExlbmd0aGAiKX19LHt9XSw2MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49dCgiQHR1cmYvaGVscGVycyIpO2Z1bmN0aW9uIGEodCxlLHIpe2lmKG51bGwhPT10KWZvcih2YXIgbixpLG8scyxsLGMsdSxoLGY9MCxwPTAsZD10LnR5cGUsZz0iRmVhdHVyZUNvbGxlY3Rpb24iPT09ZCx2PSJGZWF0dXJlIj09PWQsbT1nP3QuZmVhdHVyZXMubGVuZ3RoOjEseT0wO3k8bTt5Kyspe2w9KGg9ISEodT1nP3QuZmVhdHVyZXNbeV0uZ2VvbWV0cnk6dj90Lmdlb21ldHJ5OnQpJiYiR2VvbWV0cnlDb2xsZWN0aW9uIj09PXUudHlwZSk/dS5nZW9tZXRyaWVzLmxlbmd0aDoxO2Zvcih2YXIgeD0wO3g8bDt4Kyspe3ZhciBiPTAsXz0wO2lmKG51bGwhPT0ocz1oP3UuZ2VvbWV0cmllc1t4XTp1KSl7Yz1zLmNvb3JkaW5hdGVzO3ZhciB3PXMudHlwZTtzd2l0Y2goZj0hcnx8IlBvbHlnb24iIT09dyYmIk11bHRpUG9seWdvbiIhPT13PzA6MSx3KXtjYXNlIG51bGw6YnJlYWs7Y2FzZSJQb2ludCI6aWYoITE9PT1lKGMscCx5LGIsXykpcmV0dXJuITE7cCsrLGIrKzticmVhaztjYXNlIkxpbmVTdHJpbmciOmNhc2UiTXVsdGlQb2ludCI6Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7aWYoITE9PT1lKGNbbl0scCx5LGIsXykpcmV0dXJuITE7cCsrLCJNdWx0aVBvaW50Ij09PXcmJmIrK30iTGluZVN0cmluZyI9PT13JiZiKys7YnJlYWs7Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpTGluZVN0cmluZyI6Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7Zm9yKGk9MDtpPGNbbl0ubGVuZ3RoLWY7aSsrKXtpZighMT09PWUoY1tuXVtpXSxwLHksYixfKSlyZXR1cm4hMTtwKyt9Ik11bHRpTGluZVN0cmluZyI9PT13JiZiKyssIlBvbHlnb24iPT09dyYmXysrfSJQb2x5Z29uIj09PXcmJmIrKzticmVhaztjYXNlIk11bHRpUG9seWdvbiI6Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7Zm9yKF89MCxpPTA7aTxjW25dLmxlbmd0aDtpKyspe2ZvcihvPTA7bzxjW25dW2ldLmxlbmd0aC1mO28rKyl7aWYoITE9PT1lKGNbbl1baV1bb10scCx5LGIsXykpcmV0dXJuITE7cCsrfV8rK31iKyt9YnJlYWs7Y2FzZSJHZW9tZXRyeUNvbGxlY3Rpb24iOmZvcihuPTA7bjxzLmdlb21ldHJpZXMubGVuZ3RoO24rKylpZighMT09PWEocy5nZW9tZXRyaWVzW25dLGUscikpcmV0dXJuITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gR2VvbWV0cnkgVHlwZSIpfX19fX1mdW5jdGlvbiBpKHQsZSl7dmFyIHI7c3dpdGNoKHQudHlwZSl7Y2FzZSJGZWF0dXJlQ29sbGVjdGlvbiI6Zm9yKHI9MDtyPHQuZmVhdHVyZXMubGVuZ3RoJiYhMSE9PWUodC5mZWF0dXJlc1tyXS5wcm9wZXJ0aWVzLHIpO3IrKyk7YnJlYWs7Y2FzZSJGZWF0dXJlIjplKHQucHJvcGVydGllcywwKX19ZnVuY3Rpb24gbyh0LGUpe2lmKCJGZWF0dXJlIj09PXQudHlwZSllKHQsMCk7ZWxzZSBpZigiRmVhdHVyZUNvbGxlY3Rpb24iPT09dC50eXBlKWZvcih2YXIgcj0wO3I8dC5mZWF0dXJlcy5sZW5ndGgmJiExIT09ZSh0LmZlYXR1cmVzW3JdLHIpO3IrKyk7fWZ1bmN0aW9uIHModCxlKXt2YXIgcixuLGEsaSxvLHMsbCxjLHUsaCxmPTAscD0iRmVhdHVyZUNvbGxlY3Rpb24iPT09dC50eXBlLGQ9IkZlYXR1cmUiPT09dC50eXBlLGc9cD90LmZlYXR1cmVzLmxlbmd0aDoxO2ZvcihyPTA7cjxnO3IrKyl7Zm9yKHM9cD90LmZlYXR1cmVzW3JdLmdlb21ldHJ5OmQ/dC5nZW9tZXRyeTp0LGM9cD90LmZlYXR1cmVzW3JdLnByb3BlcnRpZXM6ZD90LnByb3BlcnRpZXM6e30sdT1wP3QuZmVhdHVyZXNbcl0uYmJveDpkP3QuYmJveDp2b2lkIDAsaD1wP3QuZmVhdHVyZXNbcl0uaWQ6ZD90LmlkOnZvaWQgMCxvPShsPSEhcyYmIkdlb21ldHJ5Q29sbGVjdGlvbiI9PT1zLnR5cGUpP3MuZ2VvbWV0cmllcy5sZW5ndGg6MSxhPTA7YTxvO2ErKylpZihudWxsIT09KGk9bD9zLmdlb21ldHJpZXNbYV06cykpc3dpdGNoKGkudHlwZSl7Y2FzZSJQb2ludCI6Y2FzZSJMaW5lU3RyaW5nIjpjYXNlIk11bHRpUG9pbnQiOmNhc2UiUG9seWdvbiI6Y2FzZSJNdWx0aUxpbmVTdHJpbmciOmNhc2UiTXVsdGlQb2x5Z29uIjppZighMT09PWUoaSxmLGMsdSxoKSlyZXR1cm4hMTticmVhaztjYXNlIkdlb21ldHJ5Q29sbGVjdGlvbiI6Zm9yKG49MDtuPGkuZ2VvbWV0cmllcy5sZW5ndGg7bisrKWlmKCExPT09ZShpLmdlb21ldHJpZXNbbl0sZixjLHUsaCkpcmV0dXJuITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gR2VvbWV0cnkgVHlwZSIpfWVsc2UgaWYoITE9PT1lKG51bGwsZixjLHUsaCkpcmV0dXJuITE7ZisrfX1mdW5jdGlvbiBsKHQsZSl7cyh0LGZ1bmN0aW9uKHQscixhLGksbyl7dmFyIHMsbD1udWxsPT09dD9udWxsOnQudHlwZTtzd2l0Y2gobCl7Y2FzZSBudWxsOmNhc2UiUG9pbnQiOmNhc2UiTGluZVN0cmluZyI6Y2FzZSJQb2x5Z29uIjpyZXR1cm4hMSE9PWUobi5mZWF0dXJlKHQsYSx7YmJveDppLGlkOm99KSxyLDApJiZ2b2lkIDB9c3dpdGNoKGwpe2Nhc2UiTXVsdGlQb2ludCI6cz0iUG9pbnQiO2JyZWFrO2Nhc2UiTXVsdGlMaW5lU3RyaW5nIjpzPSJMaW5lU3RyaW5nIjticmVhaztjYXNlIk11bHRpUG9seWdvbiI6cz0iUG9seWdvbiJ9Zm9yKHZhciBjPTA7Yzx0LmNvb3JkaW5hdGVzLmxlbmd0aDtjKyspe3ZhciB1PXt0eXBlOnMsY29vcmRpbmF0ZXM6dC5jb29yZGluYXRlc1tjXX07aWYoITE9PT1lKG4uZmVhdHVyZSh1LGEpLHIsYykpcmV0dXJuITF9fSl9ZnVuY3Rpb24gYyh0LGUpe2wodCxmdW5jdGlvbih0LHIsaSl7dmFyIG89MDtpZih0Lmdlb21ldHJ5KXt2YXIgcz10Lmdlb21ldHJ5LnR5cGU7aWYoIlBvaW50IiE9PXMmJiJNdWx0aVBvaW50IiE9PXMpe3ZhciBsLGM9MCx1PTAsaD0wO3JldHVybiExIT09YSh0LGZ1bmN0aW9uKGEscyxmLHAsZCl7aWYodm9pZCAwPT09bHx8cj5jfHxwPnV8fGQ+aClyZXR1cm4gbD1hLGM9cix1PXAsaD1kLHZvaWQobz0wKTt2YXIgZz1uLmxpbmVTdHJpbmcoW2wsYV0sdC5wcm9wZXJ0aWVzKTtpZighMT09PWUoZyxyLGksZCxvKSlyZXR1cm4hMTtvKyssbD1hfSkmJnZvaWQgMH19fSl9ZnVuY3Rpb24gdSh0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiZ2VvanNvbiBpcyByZXF1aXJlZCIpO2wodCxmdW5jdGlvbih0LHIsYSl7aWYobnVsbCE9PXQuZ2VvbWV0cnkpe3ZhciBpPXQuZ2VvbWV0cnkudHlwZSxvPXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7c3dpdGNoKGkpe2Nhc2UiTGluZVN0cmluZyI6aWYoITE9PT1lKHQscixhLDAsMCkpcmV0dXJuITE7YnJlYWs7Y2FzZSJQb2x5Z29uIjpmb3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKylpZighMT09PWUobi5saW5lU3RyaW5nKG9bc10sdC5wcm9wZXJ0aWVzKSxyLGEscykpcmV0dXJuITF9fX0pfXIuY29vcmRFYWNoPWEsci5jb29yZFJlZHVjZT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT1yO3JldHVybiBhKHQsZnVuY3Rpb24odCxuLGEsbyxzKXtpPTA9PT1uJiZ2b2lkIDA9PT1yP3Q6ZShpLHQsbixhLG8scyl9LG4pLGl9LHIucHJvcEVhY2g9aSxyLnByb3BSZWR1Y2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXI7cmV0dXJuIGkodCxmdW5jdGlvbih0LGEpe249MD09PWEmJnZvaWQgMD09PXI/dDplKG4sdCxhKX0pLG59LHIuZmVhdHVyZUVhY2g9byxyLmZlYXR1cmVSZWR1Y2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXI7cmV0dXJuIG8odCxmdW5jdGlvbih0LGEpe249MD09PWEmJnZvaWQgMD09PXI/dDplKG4sdCxhKX0pLG59LHIuY29vcmRBbGw9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGEodCxmdW5jdGlvbih0KXtlLnB1c2godCl9KSxlfSxyLmdlb21FYWNoPXMsci5nZW9tUmVkdWNlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yO3JldHVybiBzKHQsZnVuY3Rpb24odCxhLGksbyxzKXtuPTA9PT1hJiZ2b2lkIDA9PT1yP3Q6ZShuLHQsYSxpLG8scyl9KSxufSxyLmZsYXR0ZW5FYWNoPWwsci5mbGF0dGVuUmVkdWNlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yO3JldHVybiBsKHQsZnVuY3Rpb24odCxhLGkpe249MD09PWEmJjA9PT1pJiZ2b2lkIDA9PT1yP3Q6ZShuLHQsYSxpKX0pLG59LHIuc2VnbWVudEVhY2g9YyxyLnNlZ21lbnRSZWR1Y2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIsYT0hMTtyZXR1cm4gYyh0LGZ1bmN0aW9uKHQsaSxvLHMsbCl7bj0hMT09PWEmJnZvaWQgMD09PXI/dDplKG4sdCxpLG8scyxsKSxhPSEwfSksbn0sci5saW5lRWFjaD11LHIubGluZVJlZHVjZT1mdW5jdGlvbih0LGUscil7dmFyIG49cjtyZXR1cm4gdSh0LGZ1bmN0aW9uKHQsYSxpLG8pe249MD09PWEmJnZvaWQgMD09PXI/dDplKG4sdCxhLGksbyl9KSxufSxyLmZpbmRTZWdtZW50PWZ1bmN0aW9uKHQsZSl7aWYoZT1lfHx7fSwhbi5pc09iamVjdChlKSl0aHJvdyBuZXcgRXJyb3IoIm9wdGlvbnMgaXMgaW52YWxpZCIpO3ZhciByLGE9ZS5mZWF0dXJlSW5kZXh8fDAsaT1lLm11bHRpRmVhdHVyZUluZGV4fHwwLG89ZS5nZW9tZXRyeUluZGV4fHwwLHM9ZS5zZWdtZW50SW5kZXh8fDAsbD1lLnByb3BlcnRpZXM7c3dpdGNoKHQudHlwZSl7Y2FzZSJGZWF0dXJlQ29sbGVjdGlvbiI6YTwwJiYoYT10LmZlYXR1cmVzLmxlbmd0aCthKSxsPWx8fHQuZmVhdHVyZXNbYV0ucHJvcGVydGllcyxyPXQuZmVhdHVyZXNbYV0uZ2VvbWV0cnk7YnJlYWs7Y2FzZSJGZWF0dXJlIjpsPWx8fHQucHJvcGVydGllcyxyPXQuZ2VvbWV0cnk7YnJlYWs7Y2FzZSJQb2ludCI6Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gbnVsbDtjYXNlIkxpbmVTdHJpbmciOmNhc2UiUG9seWdvbiI6Y2FzZSJNdWx0aUxpbmVTdHJpbmciOmNhc2UiTXVsdGlQb2x5Z29uIjpyPXQ7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImdlb2pzb24gaXMgaW52YWxpZCIpfWlmKG51bGw9PT1yKXJldHVybiBudWxsO3ZhciBjPXIuY29vcmRpbmF0ZXM7c3dpdGNoKHIudHlwZSl7Y2FzZSJQb2ludCI6Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gbnVsbDtjYXNlIkxpbmVTdHJpbmciOnJldHVybiBzPDAmJihzPWMubGVuZ3RoK3MtMSksbi5saW5lU3RyaW5nKFtjW3NdLGNbcysxXV0sbCxlKTtjYXNlIlBvbHlnb24iOnJldHVybiBvPDAmJihvPWMubGVuZ3RoK28pLHM8MCYmKHM9Y1tvXS5sZW5ndGgrcy0xKSxuLmxpbmVTdHJpbmcoW2Nbb11bc10sY1tvXVtzKzFdXSxsLGUpO2Nhc2UiTXVsdGlMaW5lU3RyaW5nIjpyZXR1cm4gaTwwJiYoaT1jLmxlbmd0aCtpKSxzPDAmJihzPWNbaV0ubGVuZ3RoK3MtMSksbi5saW5lU3RyaW5nKFtjW2ldW3NdLGNbaV1bcysxXV0sbCxlKTtjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIGk8MCYmKGk9Yy5sZW5ndGgraSksbzwwJiYobz1jW2ldLmxlbmd0aCtvKSxzPDAmJihzPWNbaV1bb10ubGVuZ3RoLXMtMSksbi5saW5lU3RyaW5nKFtjW2ldW29dW3NdLGNbaV1bb11bcysxXV0sbCxlKX10aHJvdyBuZXcgRXJyb3IoImdlb2pzb24gaXMgaW52YWxpZCIpfSxyLmZpbmRQb2ludD1mdW5jdGlvbih0LGUpe2lmKGU9ZXx8e30sIW4uaXNPYmplY3QoZSkpdGhyb3cgbmV3IEVycm9yKCJvcHRpb25zIGlzIGludmFsaWQiKTt2YXIgcixhPWUuZmVhdHVyZUluZGV4fHwwLGk9ZS5tdWx0aUZlYXR1cmVJbmRleHx8MCxvPWUuZ2VvbWV0cnlJbmRleHx8MCxzPWUuY29vcmRJbmRleHx8MCxsPWUucHJvcGVydGllcztzd2l0Y2godC50eXBlKXtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjphPDAmJihhPXQuZmVhdHVyZXMubGVuZ3RoK2EpLGw9bHx8dC5mZWF0dXJlc1thXS5wcm9wZXJ0aWVzLHI9dC5mZWF0dXJlc1thXS5nZW9tZXRyeTticmVhaztjYXNlIkZlYXR1cmUiOmw9bHx8dC5wcm9wZXJ0aWVzLHI9dC5nZW9tZXRyeTticmVhaztjYXNlIlBvaW50IjpjYXNlIk11bHRpUG9pbnQiOnJldHVybiBudWxsO2Nhc2UiTGluZVN0cmluZyI6Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpTGluZVN0cmluZyI6Y2FzZSJNdWx0aVBvbHlnb24iOnI9dDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiZ2VvanNvbiBpcyBpbnZhbGlkIil9aWYobnVsbD09PXIpcmV0dXJuIG51bGw7dmFyIGM9ci5jb29yZGluYXRlcztzd2l0Y2goci50eXBlKXtjYXNlIlBvaW50IjpyZXR1cm4gbi5wb2ludChjLGwsZSk7Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gaTwwJiYoaT1jLmxlbmd0aCtpKSxuLnBvaW50KGNbaV0sbCxlKTtjYXNlIkxpbmVTdHJpbmciOnJldHVybiBzPDAmJihzPWMubGVuZ3RoK3MpLG4ucG9pbnQoY1tzXSxsLGUpO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG88MCYmKG89Yy5sZW5ndGgrbyksczwwJiYocz1jW29dLmxlbmd0aCtzKSxuLnBvaW50KGNbb11bc10sbCxlKTtjYXNlIk11bHRpTGluZVN0cmluZyI6cmV0dXJuIGk8MCYmKGk9Yy5sZW5ndGgraSksczwwJiYocz1jW2ldLmxlbmd0aCtzKSxuLnBvaW50KGNbaV1bc10sbCxlKTtjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIGk8MCYmKGk9Yy5sZW5ndGgraSksbzwwJiYobz1jW2ldLmxlbmd0aCtvKSxzPDAmJihzPWNbaV1bb10ubGVuZ3RoLXMpLG4ucG9pbnQoY1tpXVtvXVtzXSxsLGUpfXRocm93IG5ldyBFcnJvcigiZ2VvanNvbiBpcyBpbnZhbGlkIil9fSx7IkB0dXJmL2hlbHBlcnMiOjYwfV0sNjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49InVuZGVmaW5lZCI9PXR5cGVvZiBXZWFrTWFwP3QoIndlYWstbWFwIik6V2Vha01hcCxhPXQoImdsLWJ1ZmZlciIpLGk9dCgiZ2wtdmFvIiksbz1uZXcgbjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9by5nZXQodCkscj1lJiYoZS5fdHJpYW5nbGVCdWZmZXIuaGFuZGxlfHxlLl90cmlhbmdsZUJ1ZmZlci5idWZmZXIpO2lmKCFyfHwhdC5pc0J1ZmZlcihyKSl7dmFyIG49YSh0LG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC0xLDQsNCwtMV0pKTsoZT1pKHQsW3tidWZmZXI6bix0eXBlOnQuRkxPQVQsc2l6ZToyfV0pKS5fdHJpYW5nbGVCdWZmZXI9bixvLnNldCh0LGUpfWUuYmluZCgpLHQuZHJhd0FycmF5cyh0LlRSSUFOR0xFUywwLDMpLGUudW5iaW5kKCl9fSx7ImdsLWJ1ZmZlciI6MjQ0LCJnbC12YW8iOjMyOSwid2Vhay1tYXAiOjU1MX1dLDYzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPTAscj0wLG49MCxhPTA7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3ZhciBpPSh0PXQuc2xpY2UoKSlbMF0sbz1pLnRvVXBwZXJDYXNlKCk7aWYoaSE9bylzd2l0Y2godFswXT1vLGkpe2Nhc2UiYSI6dFs2XSs9bix0WzddKz1hO2JyZWFrO2Nhc2UidiI6dFsxXSs9YTticmVhaztjYXNlImgiOnRbMV0rPW47YnJlYWs7ZGVmYXVsdDpmb3IodmFyIHM9MTtzPHQubGVuZ3RoOyl0W3MrK10rPW4sdFtzKytdKz1hfXN3aXRjaChvKXtjYXNlIloiOm49ZSxhPXI7YnJlYWs7Y2FzZSJIIjpuPXRbMV07YnJlYWs7Y2FzZSJWIjphPXRbMV07YnJlYWs7Y2FzZSJNIjpuPWU9dFsxXSxhPXI9dFsyXTticmVhaztkZWZhdWx0Om49dFt0Lmxlbmd0aC0yXSxhPXRbdC5sZW5ndGgtMV19cmV0dXJuIHR9KX19LHt9XSw2NDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoInBhZC1sZWZ0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtlPSJudW1iZXIiPT10eXBlb2YgZT9lOjEscj1yfHwiOiAiO3ZhciBhPXQuc3BsaXQoL1xyP1xuLyksaT1TdHJpbmcoYS5sZW5ndGgrZS0xKS5sZW5ndGg7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKHQsYSl7dmFyIG89YStlLHM9U3RyaW5nKG8pLmxlbmd0aCxsPW4obyxpLXMpO3JldHVybiBsK3IrdH0pLmpvaW4oIlxuIil9fSx7InBhZC1sZWZ0Ijo0NTl9XSw2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7aWYoMD09PWUpcmV0dXJuW107aWYoMT09PWUpcmV0dXJuWzBdO2Zvcih2YXIgcj10WzBdLmxlbmd0aCxuPVt0WzBdXSxpPVswXSxvPTE7bzxlOysrbylpZihuLnB1c2godFtvXSksYShuLHIpKXtpZihpLnB1c2gobyksaS5sZW5ndGg9PT1yKzEpcmV0dXJuIGl9ZWxzZSBuLnBvcCgpO3JldHVybiBpfTt2YXIgbj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKTtmdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheShlKzEpLGE9MDthPHQubGVuZ3RoOysrYSlyW2FdPXRbYV07Zm9yKGE9MDthPD10Lmxlbmd0aDsrK2Epe2Zvcih2YXIgaT10Lmxlbmd0aDtpPD1lOysraSl7Zm9yKHZhciBvPW5ldyBBcnJheShlKSxzPTA7czxlOysrcylvW3NdPU1hdGgucG93KGkrMS1hLHMpO3JbaV09b31pZihuLmFwcGx5KHZvaWQgMCxyKSlyZXR1cm4hMH1yZXR1cm4hMX19LHsicm9idXN0LW9yaWVudGF0aW9uIjo1MDl9XSw2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbihlKS5maWx0ZXIoZnVuY3Rpb24ocil7Zm9yKHZhciBuPW5ldyBBcnJheShyLmxlbmd0aCksaT0wO2k8ci5sZW5ndGg7KytpKW5baV09ZVtyW2ldXTtyZXR1cm4gYShuKSp0PDF9KX07dmFyIG49dCgiZGVsYXVuYXktdHJpYW5ndWxhdGUiKSxhPXQoImNpcmN1bXJhZGl1cyIpfSx7Y2lyY3VtcmFkaXVzOjExNiwiZGVsYXVuYXktdHJpYW5ndWxhdGUiOjE2N31dLDY3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEobih0LGUpKX07dmFyIG49dCgiYWxwaGEtY29tcGxleCIpLGE9dCgic2ltcGxpY2lhbC1jb21wbGV4LWJvdW5kYXJ5Iil9LHsiYWxwaGEtY29tcGxleCI6NjYsInNpbXBsaWNpYWwtY29tcGxleC1ib3VuZGFyeSI6NTE2fV0sNjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIXR8fG51bGw9PXQubGVuZ3RoKXRocm93IEVycm9yKCJBcmd1bWVudCBzaG91bGQgYmUgYW4gYXJyYXkiKTtlPW51bGw9PWU/MTpNYXRoLmZsb29yKGUpO2Zvcih2YXIgcj1BcnJheSgyKmUpLG49MDtuPGU7bisrKXtmb3IodmFyIGE9LTEvMCxpPTEvMCxvPW4scz10Lmxlbmd0aDtvPHM7bys9ZSl0W29dPmEmJihhPXRbb10pLHRbb108aSYmKGk9dFtvXSk7cltuXT1pLHJbZStuXT1hfXJldHVybiByfX0se31dLDY5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9Im51bWJlciI9PXR5cGVvZiB0LG49Im51bWJlciI9PXR5cGVvZiBlO3ImJiFuPyhlPXQsdD0wKTpyfHxufHwodD0wLGU9MCk7dmFyIGE9KGV8PTApLSh0fD0wKTtpZihhPDApdGhyb3cgbmV3IEVycm9yKCJhcnJheSBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpO2Zvcih2YXIgaT1uZXcgQXJyYXkoYSksbz0wLHM9dDtvPGE7bysrLHMrKylpW29dPXM7cmV0dXJuIGl9fSx7fV0sNzA6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBhKHQsZSl7aWYodD09PWUpcmV0dXJuIDA7Zm9yKHZhciByPXQubGVuZ3RoLG49ZS5sZW5ndGgsYT0wLGk9TWF0aC5taW4ocixuKTthPGk7KythKWlmKHRbYV0hPT1lW2FdKXtyPXRbYV0sbj1lW2FdO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH1mdW5jdGlvbiBpKHQpe3JldHVybiByLkJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIHIuQnVmZmVyLmlzQnVmZmVyP3IuQnVmZmVyLmlzQnVmZmVyKHQpOiEobnVsbD09dHx8IXQuX2lzQnVmZmVyKX12YXIgbz10KCJ1dGlsLyIpLHM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxsPUFycmF5LnByb3RvdHlwZS5zbGljZSxjPSJmb28iPT09ZnVuY3Rpb24oKXt9Lm5hbWU7ZnVuY3Rpb24gdSh0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIWkodCkmJigiZnVuY3Rpb24iPT10eXBlb2Ygci5BcnJheUJ1ZmZlciYmKCJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KHQpOiEhdCYmKHQgaW5zdGFuY2VvZiBEYXRhVmlld3x8ISEodC5idWZmZXImJnQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKSkpfXZhciBmPWUuZXhwb3J0cz15LHA9L1xzKmZ1bmN0aW9uXHMrKFteXChcc10qKVxzKi87ZnVuY3Rpb24gZCh0KXtpZihvLmlzRnVuY3Rpb24odCkpe2lmKGMpcmV0dXJuIHQubmFtZTt2YXIgZT10LnRvU3RyaW5nKCkubWF0Y2gocCk7cmV0dXJuIGUmJmVbMV19fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC5sZW5ndGg8ZT90OnQuc2xpY2UoMCxlKTp0fWZ1bmN0aW9uIHYodCl7aWYoY3x8IW8uaXNGdW5jdGlvbih0KSlyZXR1cm4gby5pbnNwZWN0KHQpO3ZhciBlPWQodCk7cmV0dXJuIltGdW5jdGlvbiIrKGU/IjogIitlOiIiKSsiXSJ9ZnVuY3Rpb24gbSh0LGUscixuLGEpe3Rocm93IG5ldyBmLkFzc2VydGlvbkVycm9yKHttZXNzYWdlOnIsYWN0dWFsOnQsZXhwZWN0ZWQ6ZSxvcGVyYXRvcjpuLHN0YWNrU3RhcnRGdW5jdGlvbjphfSl9ZnVuY3Rpb24geSh0LGUpe3R8fG0odCwhMCxlLCI9PSIsZi5vayl9ZnVuY3Rpb24geCh0LGUscixuKXtpZih0PT09ZSlyZXR1cm4hMDtpZihpKHQpJiZpKGUpKXJldHVybiAwPT09YSh0LGUpO2lmKG8uaXNEYXRlKHQpJiZvLmlzRGF0ZShlKSlyZXR1cm4gdC5nZXRUaW1lKCk9PT1lLmdldFRpbWUoKTtpZihvLmlzUmVnRXhwKHQpJiZvLmlzUmVnRXhwKGUpKXJldHVybiB0LnNvdXJjZT09PWUuc291cmNlJiZ0Lmdsb2JhbD09PWUuZ2xvYmFsJiZ0Lm11bHRpbGluZT09PWUubXVsdGlsaW5lJiZ0Lmxhc3RJbmRleD09PWUubGFzdEluZGV4JiZ0Lmlnbm9yZUNhc2U9PT1lLmlnbm9yZUNhc2U7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8bnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSl7aWYoaCh0KSYmaChlKSYmdSh0KT09PXUoZSkmJiEodCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkpcmV0dXJuIDA9PT1hKG5ldyBVaW50OEFycmF5KHQuYnVmZmVyKSxuZXcgVWludDhBcnJheShlLmJ1ZmZlcikpO2lmKGkodCkhPT1pKGUpKXJldHVybiExO3ZhciBzPShuPW58fHthY3R1YWw6W10sZXhwZWN0ZWQ6W119KS5hY3R1YWwuaW5kZXhPZih0KTtyZXR1cm4tMSE9PXMmJnM9PT1uLmV4cGVjdGVkLmluZGV4T2YoZSl8fChuLmFjdHVhbC5wdXNoKHQpLG4uZXhwZWN0ZWQucHVzaChlKSxmdW5jdGlvbih0LGUscixuKXtpZihudWxsPT10fHxudWxsPT1lKXJldHVybiExO2lmKG8uaXNQcmltaXRpdmUodCl8fG8uaXNQcmltaXRpdmUoZSkpcmV0dXJuIHQ9PT1lO2lmKHImJk9iamVjdC5nZXRQcm90b3R5cGVPZih0KSE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSlyZXR1cm4hMTt2YXIgYT1iKHQpLGk9YihlKTtpZihhJiYhaXx8IWEmJmkpcmV0dXJuITE7aWYoYSlyZXR1cm4gdD1sLmNhbGwodCksZT1sLmNhbGwoZSkseCh0LGUscik7dmFyIHMsYyx1PWsodCksaD1rKGUpO2lmKHUubGVuZ3RoIT09aC5sZW5ndGgpcmV0dXJuITE7Zm9yKHUuc29ydCgpLGguc29ydCgpLGM9dS5sZW5ndGgtMTtjPj0wO2MtLSlpZih1W2NdIT09aFtjXSlyZXR1cm4hMTtmb3IoYz11Lmxlbmd0aC0xO2M+PTA7Yy0tKWlmKHM9dVtjXSwheCh0W3NdLGVbc10scixuKSlyZXR1cm4hMTtyZXR1cm4hMH0odCxlLHIsbikpfXJldHVybiByP3Q9PT1lOnQ9PWV9ZnVuY3Rpb24gYih0KXtyZXR1cm4iW29iamVjdCBBcmd1bWVudHNdIj09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF8odCxlKXtpZighdHx8IWUpcmV0dXJuITE7aWYoIltvYmplY3QgUmVnRXhwXSI9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gZS50ZXN0KHQpO3RyeXtpZih0IGluc3RhbmNlb2YgZSlyZXR1cm4hMH1jYXRjaCh0KXt9cmV0dXJuIUVycm9yLmlzUHJvdG90eXBlT2YoZSkmJiEwPT09ZS5jYWxsKHt9LHQpfWZ1bmN0aW9uIHcodCxlLHIsbil7dmFyIGE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignImJsb2NrIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTsic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj1udWxsKSxhPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXt0KCl9Y2F0Y2godCl7ZT10fXJldHVybiBlfShlKSxuPShyJiZyLm5hbWU/IiAoIityLm5hbWUrIikuIjoiLiIpKyhuPyIgIituOiIuIiksdCYmIWEmJm0oYSxyLCJNaXNzaW5nIGV4cGVjdGVkIGV4Y2VwdGlvbiIrbik7dmFyIGk9InN0cmluZyI9PXR5cGVvZiBuLHM9IXQmJmEmJiFyO2lmKCghdCYmby5pc0Vycm9yKGEpJiZpJiZfKGEscil8fHMpJiZtKGEsciwiR290IHVud2FudGVkIGV4Y2VwdGlvbiIrbiksdCYmYSYmciYmIV8oYSxyKXx8IXQmJmEpdGhyb3cgYX1mLkFzc2VydGlvbkVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlO3RoaXMubmFtZT0iQXNzZXJ0aW9uRXJyb3IiLHRoaXMuYWN0dWFsPXQuYWN0dWFsLHRoaXMuZXhwZWN0ZWQ9dC5leHBlY3RlZCx0aGlzLm9wZXJhdG9yPXQub3BlcmF0b3IsdC5tZXNzYWdlPyh0aGlzLm1lc3NhZ2U9dC5tZXNzYWdlLHRoaXMuZ2VuZXJhdGVkTWVzc2FnZT0hMSk6KHRoaXMubWVzc2FnZT1nKHYoKGU9dGhpcykuYWN0dWFsKSwxMjgpKyIgIitlLm9wZXJhdG9yKyIgIitnKHYoZS5leHBlY3RlZCksMTI4KSx0aGlzLmdlbmVyYXRlZE1lc3NhZ2U9ITApO3ZhciByPXQuc3RhY2tTdGFydEZ1bmN0aW9ufHxtO2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMscik7ZWxzZXt2YXIgbj1uZXcgRXJyb3I7aWYobi5zdGFjayl7dmFyIGE9bi5zdGFjayxpPWQociksbz1hLmluZGV4T2YoIlxuIitpKTtpZihvPj0wKXt2YXIgcz1hLmluZGV4T2YoIlxuIixvKzEpO2E9YS5zdWJzdHJpbmcocysxKX10aGlzLnN0YWNrPWF9fX0sby5pbmhlcml0cyhmLkFzc2VydGlvbkVycm9yLEVycm9yKSxmLmZhaWw9bSxmLm9rPXksZi5lcXVhbD1mdW5jdGlvbih0LGUscil7dCE9ZSYmbSh0LGUsciwiPT0iLGYuZXF1YWwpfSxmLm5vdEVxdWFsPWZ1bmN0aW9uKHQsZSxyKXt0PT1lJiZtKHQsZSxyLCIhPSIsZi5ub3RFcXVhbCl9LGYuZGVlcEVxdWFsPWZ1bmN0aW9uKHQsZSxyKXt4KHQsZSwhMSl8fG0odCxlLHIsImRlZXBFcXVhbCIsZi5kZWVwRXF1YWwpfSxmLmRlZXBTdHJpY3RFcXVhbD1mdW5jdGlvbih0LGUscil7eCh0LGUsITApfHxtKHQsZSxyLCJkZWVwU3RyaWN0RXF1YWwiLGYuZGVlcFN0cmljdEVxdWFsKX0sZi5ub3REZWVwRXF1YWw9ZnVuY3Rpb24odCxlLHIpe3godCxlLCExKSYmbSh0LGUsciwibm90RGVlcEVxdWFsIixmLm5vdERlZXBFcXVhbCl9LGYubm90RGVlcFN0cmljdEVxdWFsPWZ1bmN0aW9uIHQoZSxyLG4pe3goZSxyLCEwKSYmbShlLHIsbiwibm90RGVlcFN0cmljdEVxdWFsIix0KX0sZi5zdHJpY3RFcXVhbD1mdW5jdGlvbih0LGUscil7dCE9PWUmJm0odCxlLHIsIj09PSIsZi5zdHJpY3RFcXVhbCl9LGYubm90U3RyaWN0RXF1YWw9ZnVuY3Rpb24odCxlLHIpe3Q9PT1lJiZtKHQsZSxyLCIhPT0iLGYubm90U3RyaWN0RXF1YWwpfSxmLnRocm93cz1mdW5jdGlvbih0LGUscil7dyghMCx0LGUscil9LGYuZG9lc05vdFRocm93PWZ1bmN0aW9uKHQsZSxyKXt3KCExLHQsZSxyKX0sZi5pZkVycm9yPWZ1bmN0aW9uKHQpe2lmKHQpdGhyb3cgdH0sZi5zdHJpY3Q9bihmdW5jdGlvbiB0KGUscil7ZXx8bShlLCEwLHIsIj09Iix0KX0sZix7ZXF1YWw6Zi5zdHJpY3RFcXVhbCxkZWVwRXF1YWw6Zi5kZWVwU3RyaWN0RXF1YWwsbm90RXF1YWw6Zi5ub3RTdHJpY3RFcXVhbCxub3REZWVwRXF1YWw6Zi5ub3REZWVwU3RyaWN0RXF1YWx9KSxmLnN0cmljdC5zdHJpY3Q9Zi5zdHJpY3Q7dmFyIGs9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KXMuY2FsbCh0LHIpJiZlLnB1c2gocik7cmV0dXJuIGV9fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Im9iamVjdC1hc3NpZ24iOjQ1NiwidXRpbC8iOjczfV0sNzE6W2Z1bmN0aW9uKHQsZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LnN1cGVyXz1lLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pfTplLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fX0se31dLDcyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvcHkmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmZpbGwmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlYWRVSW50OH19LHt9XSw3MzpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlLG4pe3ZhciBhPS8lW3NkaiVdL2c7ci5mb3JtYXQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpe2Zvcih2YXIgZT1bXSxyPTA7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyllLnB1c2gocyhhcmd1bWVudHNbcl0pKTtyZXR1cm4gZS5qb2luKCIgIil9cj0xO2Zvcih2YXIgbj1hcmd1bWVudHMsaT1uLmxlbmd0aCxvPVN0cmluZyh0KS5yZXBsYWNlKGEsZnVuY3Rpb24odCl7aWYoIiUlIj09PXQpcmV0dXJuIiUiO2lmKHI+PWkpcmV0dXJuIHQ7c3dpdGNoKHQpe2Nhc2UiJXMiOnJldHVybiBTdHJpbmcobltyKytdKTtjYXNlIiVkIjpyZXR1cm4gTnVtYmVyKG5bcisrXSk7Y2FzZSIlaiI6dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShuW3IrK10pfWNhdGNoKHQpe3JldHVybiJbQ2lyY3VsYXJdIn1kZWZhdWx0OnJldHVybiB0fX0pLGw9bltyXTtyPGk7bD1uWysrcl0pZyhsKXx8IWIobCk/bys9IiAiK2w6bys9IiAiK3MobCk7cmV0dXJuIG99LHIuZGVwcmVjYXRlPWZ1bmN0aW9uKHQsYSl7aWYoeShuLnByb2Nlc3MpKXJldHVybiBmdW5jdGlvbigpe3JldHVybiByLmRlcHJlY2F0ZSh0LGEpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07aWYoITA9PT1lLm5vRGVwcmVjYXRpb24pcmV0dXJuIHQ7dmFyIGk9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWkpe2lmKGUudGhyb3dEZXByZWNhdGlvbil0aHJvdyBuZXcgRXJyb3IoYSk7ZS50cmFjZURlcHJlY2F0aW9uP2NvbnNvbGUudHJhY2UoYSk6Y29uc29sZS5lcnJvcihhKSxpPSEwfXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19O3ZhciBpLG89e307ZnVuY3Rpb24gcyh0LGUpe3ZhciBuPXtzZWVuOltdLHN0eWxpemU6Y307cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTMmJihuLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD49NCYmKG4uY29sb3JzPWFyZ3VtZW50c1szXSksZChlKT9uLnNob3dIaWRkZW49ZTplJiZyLl9leHRlbmQobixlKSx5KG4uc2hvd0hpZGRlbikmJihuLnNob3dIaWRkZW49ITEpLHkobi5kZXB0aCkmJihuLmRlcHRoPTIpLHkobi5jb2xvcnMpJiYobi5jb2xvcnM9ITEpLHkobi5jdXN0b21JbnNwZWN0KSYmKG4uY3VzdG9tSW5zcGVjdD0hMCksbi5jb2xvcnMmJihuLnN0eWxpemU9bCksdShuLHQsbi5kZXB0aCl9ZnVuY3Rpb24gbCh0LGUpe3ZhciByPXMuc3R5bGVzW2VdO3JldHVybiByPyJceDFiWyIrcy5jb2xvcnNbcl1bMF0rIm0iK3QrIlx4MWJbIitzLmNvbG9yc1tyXVsxXSsibSI6dH1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHR9ZnVuY3Rpb24gdSh0LGUsbil7aWYodC5jdXN0b21JbnNwZWN0JiZlJiZrKGUuaW5zcGVjdCkmJmUuaW5zcGVjdCE9PXIuaW5zcGVjdCYmKCFlLmNvbnN0cnVjdG9yfHxlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSE9PWUpKXt2YXIgYT1lLmluc3BlY3Qobix0KTtyZXR1cm4gbShhKXx8KGE9dSh0LGEsbikpLGF9dmFyIGk9ZnVuY3Rpb24odCxlKXtpZih5KGUpKXJldHVybiB0LnN0eWxpemUoInVuZGVmaW5lZCIsInVuZGVmaW5lZCIpO2lmKG0oZSkpe3ZhciByPSInIitKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKC9eInwiJC9nLCIiKS5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykrIiciO3JldHVybiB0LnN0eWxpemUociwic3RyaW5nIil9aWYodihlKSlyZXR1cm4gdC5zdHlsaXplKCIiK2UsIm51bWJlciIpO2lmKGQoZSkpcmV0dXJuIHQuc3R5bGl6ZSgiIitlLCJib29sZWFuIik7aWYoZyhlKSlyZXR1cm4gdC5zdHlsaXplKCJudWxsIiwibnVsbCIpfSh0LGUpO2lmKGkpcmV0dXJuIGk7dmFyIG89T2JqZWN0LmtleXMoZSkscz1mdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQscil7ZVt0XT0hMH0pLGV9KG8pO2lmKHQuc2hvd0hpZGRlbiYmKG89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkpLHcoZSkmJihvLmluZGV4T2YoIm1lc3NhZ2UiKT49MHx8by5pbmRleE9mKCJkZXNjcmlwdGlvbiIpPj0wKSlyZXR1cm4gaChlKTtpZigwPT09by5sZW5ndGgpe2lmKGsoZSkpe3ZhciBsPWUubmFtZT8iOiAiK2UubmFtZToiIjtyZXR1cm4gdC5zdHlsaXplKCJbRnVuY3Rpb24iK2wrIl0iLCJzcGVjaWFsIil9aWYoeChlKSlyZXR1cm4gdC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSwicmVnZXhwIik7aWYoXyhlKSlyZXR1cm4gdC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSksImRhdGUiKTtpZih3KGUpKXJldHVybiBoKGUpfXZhciBjLGI9IiIsVD0hMSxNPVsieyIsIn0iXTsocChlKSYmKFQ9ITAsTT1bIlsiLCJdIl0pLGsoZSkpJiYoYj0iIFtGdW5jdGlvbiIrKGUubmFtZT8iOiAiK2UubmFtZToiIikrIl0iKTtyZXR1cm4geChlKSYmKGI9IiAiK1JlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSksXyhlKSYmKGI9IiAiK0RhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwoZSkpLHcoZSkmJihiPSIgIitoKGUpKSwwIT09by5sZW5ndGh8fFQmJjAhPWUubGVuZ3RoP248MD94KGUpP3Quc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSksInJlZ2V4cCIpOnQuc3R5bGl6ZSgiW09iamVjdF0iLCJzcGVjaWFsIik6KHQuc2Vlbi5wdXNoKGUpLGM9VD9mdW5jdGlvbih0LGUscixuLGEpe2Zvcih2YXIgaT1bXSxvPTAscz1lLmxlbmd0aDtvPHM7KytvKVMoZSxTdHJpbmcobykpP2kucHVzaChmKHQsZSxyLG4sU3RyaW5nKG8pLCEwKSk6aS5wdXNoKCIiKTtyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EubWF0Y2goL15cZCskLyl8fGkucHVzaChmKHQsZSxyLG4sYSwhMCkpfSksaX0odCxlLG4scyxvKTpvLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gZih0LGUsbixzLHIsVCl9KSx0LnNlZW4ucG9wKCksZnVuY3Rpb24odCxlLHIpe2lmKHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDAsZS5pbmRleE9mKCJcbiIpPj0wJiYwLHQrZS5yZXBsYWNlKC9cdTAwMWJcW1xkXGQ/bS9nLCIiKS5sZW5ndGgrMX0sMCk+NjApcmV0dXJuIHJbMF0rKCIiPT09ZT8iIjplKyJcbiAiKSsiICIrdC5qb2luKCIsXG4gICIpKyIgIityWzFdO3JldHVybiByWzBdK2UrIiAiK3Quam9pbigiLCAiKSsiICIrclsxXX0oYyxiLE0pKTpNWzBdK2IrTVsxXX1mdW5jdGlvbiBoKHQpe3JldHVybiJbIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSsiXSJ9ZnVuY3Rpb24gZih0LGUscixuLGEsaSl7dmFyIG8scyxsO2lmKChsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxhKXx8e3ZhbHVlOmVbYV19KS5nZXQ/cz1sLnNldD90LnN0eWxpemUoIltHZXR0ZXIvU2V0dGVyXSIsInNwZWNpYWwiKTp0LnN0eWxpemUoIltHZXR0ZXJdIiwic3BlY2lhbCIpOmwuc2V0JiYocz10LnN0eWxpemUoIltTZXR0ZXJdIiwic3BlY2lhbCIpKSxTKG4sYSl8fChvPSJbIithKyJdIiksc3x8KHQuc2Vlbi5pbmRleE9mKGwudmFsdWUpPDA/KHM9ZyhyKT91KHQsbC52YWx1ZSxudWxsKTp1KHQsbC52YWx1ZSxyLTEpKS5pbmRleE9mKCJcbiIpPi0xJiYocz1pP3Muc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiIgICIrdH0pLmpvaW4oIlxuIikuc3Vic3RyKDIpOiJcbiIrcy5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIiAgICIrdH0pLmpvaW4oIlxuIikpOnM9dC5zdHlsaXplKCJbQ2lyY3VsYXJdIiwic3BlY2lhbCIpKSx5KG8pKXtpZihpJiZhLm1hdGNoKC9eXGQrJC8pKXJldHVybiBzOyhvPUpTT04uc3RyaW5naWZ5KCIiK2EpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pPyhvPW8uc3Vic3RyKDEsby5sZW5ndGgtMiksbz10LnN0eWxpemUobywibmFtZSIpKToobz1vLnJlcGxhY2UoLycvZywiXFwnIikucmVwbGFjZSgvXFwiL2csJyInKS5yZXBsYWNlKC8oXiJ8IiQpL2csIiciKSxvPXQuc3R5bGl6ZShvLCJzdHJpbmciKSl9cmV0dXJuIG8rIjogIitzfWZ1bmN0aW9uIHAodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGcodCl7cmV0dXJuIG51bGw9PT10fWZ1bmN0aW9uIHYodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fWZ1bmN0aW9uIG0odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fWZ1bmN0aW9uIHkodCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVuY3Rpb24geCh0KXtyZXR1cm4gYih0KSYmIltvYmplY3QgUmVnRXhwXSI9PT1UKHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dH1mdW5jdGlvbiBfKHQpe3JldHVybiBiKHQpJiYiW29iamVjdCBEYXRlXSI9PT1UKHQpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIGIodCkmJigiW29iamVjdCBFcnJvcl0iPT09VCh0KXx8dCBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiBrKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIFQodCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBNKHQpe3JldHVybiB0PDEwPyIwIit0LnRvU3RyaW5nKDEwKTp0LnRvU3RyaW5nKDEwKX1yLmRlYnVnbG9nPWZ1bmN0aW9uKHQpe2lmKHkoaSkmJihpPWUuZW52Lk5PREVfREVCVUd8fCIiKSx0PXQudG9VcHBlckNhc2UoKSwhb1t0XSlpZihuZXcgUmVnRXhwKCJcXGIiK3QrIlxcYiIsImkiKS50ZXN0KGkpKXt2YXIgbj1lLnBpZDtvW3RdPWZ1bmN0aW9uKCl7dmFyIGU9ci5mb3JtYXQuYXBwbHkocixhcmd1bWVudHMpO2NvbnNvbGUuZXJyb3IoIiVzICVkOiAlcyIsdCxuLGUpfX1lbHNlIG9bdF09ZnVuY3Rpb24oKXt9O3JldHVybiBvW3RdfSxyLmluc3BlY3Q9cyxzLmNvbG9ycz17Ym9sZDpbMSwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGludmVyc2U6WzcsMjddLHdoaXRlOlszNywzOV0sZ3JleTpbOTAsMzldLGJsYWNrOlszMCwzOV0sYmx1ZTpbMzQsMzldLGN5YW46WzM2LDM5XSxncmVlbjpbMzIsMzldLG1hZ2VudGE6WzM1LDM5XSxyZWQ6WzMxLDM5XSx5ZWxsb3c6WzMzLDM5XX0scy5zdHlsZXM9e3NwZWNpYWw6ImN5YW4iLG51bWJlcjoieWVsbG93Iixib29sZWFuOiJ5ZWxsb3ciLHVuZGVmaW5lZDoiZ3JleSIsbnVsbDoiYm9sZCIsc3RyaW5nOiJncmVlbiIsZGF0ZToibWFnZW50YSIscmVnZXhwOiJyZWQifSxyLmlzQXJyYXk9cCxyLmlzQm9vbGVhbj1kLHIuaXNOdWxsPWcsci5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dH0sci5pc051bWJlcj12LHIuaXNTdHJpbmc9bSxyLmlzU3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH0sci5pc1VuZGVmaW5lZD15LHIuaXNSZWdFeHA9eCxyLmlzT2JqZWN0PWIsci5pc0RhdGU9XyxyLmlzRXJyb3I9dyxyLmlzRnVuY3Rpb249ayxyLmlzUHJpbWl0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dHx8ImJvb2xlYW4iPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0fHwic3RyaW5nIj09dHlwZW9mIHR8fCJzeW1ib2wiPT10eXBlb2YgdHx8InVuZGVmaW5lZCI9PXR5cGVvZiB0fSxyLmlzQnVmZmVyPXQoIi4vc3VwcG9ydC9pc0J1ZmZlciIpO3ZhciBBPVsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl07ZnVuY3Rpb24gUyh0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX1yLmxvZz1mdW5jdGlvbigpe3ZhciB0LGU7Y29uc29sZS5sb2coIiVzIC0gJXMiLCh0PW5ldyBEYXRlLGU9W00odC5nZXRIb3VycygpKSxNKHQuZ2V0TWludXRlcygpKSxNKHQuZ2V0U2Vjb25kcygpKV0uam9pbigiOiIpLFt0LmdldERhdGUoKSxBW3QuZ2V0TW9udGgoKV0sZV0uam9pbigiICIpKSxyLmZvcm1hdC5hcHBseShyLGFyZ3VtZW50cykpfSxyLmluaGVyaXRzPXQoImluaGVyaXRzIiksci5fZXh0ZW5kPWZ1bmN0aW9uKHQsZSl7aWYoIWV8fCFiKGUpKXJldHVybiB0O2Zvcih2YXIgcj1PYmplY3Qua2V5cyhlKSxuPXIubGVuZ3RoO24tLTspdFtyW25dXT1lW3Jbbl1dO3JldHVybiB0fX0pLmNhbGwodGhpcyx0KCJfcHJvY2VzcyIpLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vc3VwcG9ydC9pc0J1ZmZlciI6NzIsX3Byb2Nlc3M6NDg0LGluaGVyaXRzOjcxfV0sNzQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGF0b2IodCl9fSx7fV0sNzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUubGVuZ3RoLGk9bmV3IEFycmF5KHIrMSksbz0wO288cjsrK28pe2Zvcih2YXIgcz1uZXcgQXJyYXkocisxKSxsPTA7bDw9cjsrK2wpc1tsXT10W2xdW29dO2lbb109c31pW3JdPW5ldyBBcnJheShyKzEpO2Zvcih2YXIgbz0wO288PXI7KytvKWlbcl1bb109MTtmb3IodmFyIGM9bmV3IEFycmF5KHIrMSksbz0wO288cjsrK28pY1tvXT1lW29dO2Nbcl09MTt2YXIgdT1uKGksYyksaD1hKHVbcisxXSk7MD09PWgmJihoPTEpO2Zvcih2YXIgZj1uZXcgQXJyYXkocisxKSxvPTA7bzw9cjsrK28pZltvXT1hKHVbb10pL2g7cmV0dXJuIGZ9O3ZhciBuPXQoInJvYnVzdC1saW5lYXItc29sdmUiKTtmdW5jdGlvbiBhKHQpe2Zvcih2YXIgZT0wLHI9MDtyPHQubGVuZ3RoOysrcillKz10W3JdO3JldHVybiBlfX0seyJyb2J1c3QtbGluZWFyLXNvbHZlIjo1MDh9XSw3NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLmJ5dGVMZW5ndGg9ZnVuY3Rpb24odCl7dmFyIGU9Yyh0KSxyPWVbMF0sbj1lWzFdO3JldHVybiAzKihyK24pLzQtbn0sci50b0J5dGVBcnJheT1mdW5jdGlvbih0KXt2YXIgZSxyLG49Yyh0KSxvPW5bMF0scz1uWzFdLGw9bmV3IGkoZnVuY3Rpb24odCxlLHIpe3JldHVybiAzKihlK3IpLzQtcn0oMCxvLHMpKSx1PTAsaD1zPjA/by00Om87Zm9yKHI9MDtyPGg7cis9NCllPWFbdC5jaGFyQ29kZUF0KHIpXTw8MTh8YVt0LmNoYXJDb2RlQXQocisxKV08PDEyfGFbdC5jaGFyQ29kZUF0KHIrMildPDw2fGFbdC5jaGFyQ29kZUF0KHIrMyldLGxbdSsrXT1lPj4xNiYyNTUsbFt1KytdPWU+PjgmMjU1LGxbdSsrXT0yNTUmZTsyPT09cyYmKGU9YVt0LmNoYXJDb2RlQXQocildPDwyfGFbdC5jaGFyQ29kZUF0KHIrMSldPj40LGxbdSsrXT0yNTUmZSk7MT09PXMmJihlPWFbdC5jaGFyQ29kZUF0KHIpXTw8MTB8YVt0LmNoYXJDb2RlQXQocisxKV08PDR8YVt0LmNoYXJDb2RlQXQocisyKV0+PjIsbFt1KytdPWU+PjgmMjU1LGxbdSsrXT0yNTUmZSk7cmV0dXJuIGx9LHIuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbih0KXtmb3IodmFyIGUscj10Lmxlbmd0aCxhPXIlMyxpPVtdLG89MCxzPXItYTtvPHM7bys9MTYzODMpaS5wdXNoKHUodCxvLG8rMTYzODM+cz9zOm8rMTYzODMpKTsxPT09YT8oZT10W3ItMV0saS5wdXNoKG5bZT4+Ml0rbltlPDw0JjYzXSsiPT0iKSk6Mj09PWEmJihlPSh0W3ItMl08PDgpK3Rbci0xXSxpLnB1c2gobltlPj4xMF0rbltlPj40JjYzXStuW2U8PDImNjNdKyI9IikpO3JldHVybiBpLmpvaW4oIiIpfTtmb3IodmFyIG49W10sYT1bXSxpPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LG89IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHM9MCxsPW8ubGVuZ3RoO3M8bDsrK3MpbltzXT1vW3NdLGFbby5jaGFyQ29kZUF0KHMpXT1zO2Z1bmN0aW9uIGModCl7dmFyIGU9dC5sZW5ndGg7aWYoZSU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIHI9dC5pbmRleE9mKCI9Iik7cmV0dXJuLTE9PT1yJiYocj1lKSxbcixyPT09ZT8wOjQtciU0XX1mdW5jdGlvbiB1KHQsZSxyKXtmb3IodmFyIGEsaSxvPVtdLHM9ZTtzPHI7cys9MylhPSh0W3NdPDwxNiYxNjcxMTY4MCkrKHRbcysxXTw8OCY2NTI4MCkrKDI1NSZ0W3MrMl0pLG8ucHVzaChuWyhpPWEpPj4xOCY2M10rbltpPj4xMiY2M10rbltpPj42JjYzXStuWzYzJmldKTtyZXR1cm4gby5qb2luKCIiKX1hWyItIi5jaGFyQ29kZUF0KDApXT02MixhWyJfIi5jaGFyQ29kZUF0KDApXT02M30se31dLDc3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL3JhdGlvbmFsaXplIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odFswXS5tdWwoZVsxXSkuYWRkKGVbMF0ubXVsKHRbMV0pKSx0WzFdLm11bChlWzFdKSl9fSx7Ii4vbGliL3JhdGlvbmFsaXplIjo4N31dLDc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdLm11bChlWzFdKS5jbXAoZVswXS5tdWwodFsxXSkpfX0se31dLDc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL3JhdGlvbmFsaXplIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odFswXS5tdWwoZVsxXSksdFsxXS5tdWwoZVswXSkpfX0seyIuL2xpYi9yYXRpb25hbGl6ZSI6ODd9XSw4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzLXJhdCIpLGE9dCgiLi9saWIvaXMtYm4iKSxpPXQoIi4vbGliL251bS10by1ibiIpLG89dCgiLi9saWIvc3RyLXRvLWJuIikscz10KCIuL2xpYi9yYXRpb25hbGl6ZSIpLGw9dCgiLi9kaXYiKTtlLmV4cG9ydHM9ZnVuY3Rpb24gdChlLHIpe2lmKG4oZSkpcmV0dXJuIHI/bChlLHQocikpOltlWzBdLmNsb25lKCksZVsxXS5jbG9uZSgpXTt2YXIgYz0wO3ZhciB1LGg7aWYoYShlKSl1PWUuY2xvbmUoKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl1PW8oZSk7ZWxzZXtpZigwPT09ZSlyZXR1cm5baSgwKSxpKDEpXTtpZihlPT09TWF0aC5mbG9vcihlKSl1PWkoZSk7ZWxzZXtmb3IoO2UhPT1NYXRoLmZsb29yKGUpOyllKj1NYXRoLnBvdygyLDI1NiksYy09MjU2O3U9aShlKX19aWYobihyKSl1Lm11bChyWzFdKSxoPXJbMF0uY2xvbmUoKTtlbHNlIGlmKGEocikpaD1yLmNsb25lKCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHIpaD1vKHIpO2Vsc2UgaWYocilpZihyPT09TWF0aC5mbG9vcihyKSloPWkocik7ZWxzZXtmb3IoO3IhPT1NYXRoLmZsb29yKHIpOylyKj1NYXRoLnBvdygyLDI1NiksYys9MjU2O2g9aShyKX1lbHNlIGg9aSgxKTtjPjA/dT11LnVzaGxuKGMpOmM8MCYmKGg9aC51c2hsbigtYykpO3JldHVybiBzKHUsaCl9fSx7Ii4vZGl2Ijo3OSwiLi9pcy1yYXQiOjgxLCIuL2xpYi9pcy1ibiI6ODUsIi4vbGliL251bS10by1ibiI6ODYsIi4vbGliL3JhdGlvbmFsaXplIjo4NywiLi9saWIvc3RyLXRvLWJuIjo4OH1dLDgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL2lzLWJuIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYyPT09dC5sZW5ndGgmJm4odFswXSkmJm4odFsxXSl9fSx7Ii4vbGliL2lzLWJuIjo4NX1dLDgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJuLmpzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNtcChuZXcgbigwKSl9fSx7ImJuLmpzIjo5Nn1dLDgzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vYm4tc2lnbiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxyPXQud29yZHMsYT0wO2lmKDE9PT1lKWE9clswXTtlbHNlIGlmKDI9PT1lKWE9clswXSs2NzEwODg2NCpyWzFdO2Vsc2UgZm9yKHZhciBpPTA7aTxlO2krKyl7dmFyIG89cltpXTthKz1vKk1hdGgucG93KDY3MTA4ODY0LGkpfXJldHVybiBuKHQpKmF9fSx7Ii4vYm4tc2lnbiI6ODJ9XSw4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkb3VibGUtYml0cyIpLGE9dCgiYml0LXR3aWRkbGUiKS5jb3VudFRyYWlsaW5nWmVyb3M7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWEobi5sbyh0KSk7aWYoZTwzMilyZXR1cm4gZTt2YXIgcj1hKG4uaGkodCkpO2lmKHI+MjApcmV0dXJuIDUyO3JldHVybiByKzMyfX0seyJiaXQtdHdpZGRsZSI6OTQsImRvdWJsZS1iaXRzIjoxNjl9XSw4NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt0KCJibi5qcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZCb29sZWFuKHQud29yZHMpfX0seyJibi5qcyI6OTZ9XSw4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJibi5qcyIpLGE9dCgiZG91YmxlLWJpdHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9YS5leHBvbmVudCh0KTtyZXR1cm4gZTw1Mj9uZXcgbih0KTpuZXcgbih0Kk1hdGgucG93KDIsNTItZSkpLnVzaGxuKGUtNTIpfX0seyJibi5qcyI6OTYsImRvdWJsZS1iaXRzIjoxNjl9XSw4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL251bS10by1ibiIpLGE9dCgiLi9ibi1zaWduIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YSh0KSxpPWEoZSk7aWYoMD09PXIpcmV0dXJuW24oMCksbigxKV07aWYoMD09PWkpcmV0dXJuW24oMCksbigwKV07aTwwJiYodD10Lm5lZygpLGU9ZS5uZWcoKSk7dmFyIG89dC5nY2QoZSk7aWYoby5jbXBuKDEpKXJldHVyblt0LmRpdihvKSxlLmRpdihvKV07cmV0dXJuW3QsZV19fSx7Ii4vYm4tc2lnbiI6ODIsIi4vbnVtLXRvLWJuIjo4Nn1dLDg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJuLmpzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbih0KX19LHsiYm4uanMiOjk2fV0sODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvcmF0aW9uYWxpemUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0WzBdLm11bChlWzBdKSx0WzFdLm11bChlWzFdKSl9fSx7Ii4vbGliL3JhdGlvbmFsaXplIjo4N31dLDkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL2JuLXNpZ24iKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4odFswXSkqbih0WzFdKX19LHsiLi9saWIvYm4tc2lnbiI6ODJ9XSw5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9yYXRpb25hbGl6ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuKHRbMF0ubXVsKGVbMV0pLnN1Yih0WzFdLm11bChlWzBdKSksdFsxXS5tdWwoZVsxXSkpfX0seyIuL2xpYi9yYXRpb25hbGl6ZSI6ODd9XSw5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9ibi10by1udW0iKSxhPXQoIi4vbGliL2N0eiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXTtpZigwPT09ZS5jbXBuKDApKXJldHVybiAwO3ZhciBpPWUuYWJzKCkuZGl2bW9kKHIuYWJzKCkpLG89aS5kaXYscz1uKG8pLGw9aS5tb2QsYz1lLm5lZ2F0aXZlIT09ci5uZWdhdGl2ZT8tMToxO2lmKDA9PT1sLmNtcG4oMCkpcmV0dXJuIGMqcztpZihzKXt2YXIgdT1hKHMpKzQsaD1uKGwudXNobG4odSkuZGl2Um91bmQocikpO3JldHVybiBjKihzK2gqTWF0aC5wb3coMiwtdSkpfXZhciBmPXIuYml0TGVuZ3RoKCktbC5iaXRMZW5ndGgoKSs1MyxoPW4obC51c2hsbihmKS5kaXZSb3VuZChyKSk7cmV0dXJuIGY8MTAyMz9jKmgqTWF0aC5wb3coMiwtZik6KGgqPU1hdGgucG93KDIsLTEwMjMpLGMqaCpNYXRoLnBvdygyLDEwMjMtZikpfX0seyIuL2xpYi9ibi10by1udW0iOjgzLCIuL2xpYi9jdHoiOjg0fV0sOTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGEsaSl7dmFyIG89WyJmdW5jdGlvbiAiLHQsIihhLGwsaCwiLG4uam9pbigiLCIpLCIpeyIsaT8iIjoidmFyIGk9IixyPyJsLTEiOiJoKzEiLCI7d2hpbGUobDw9aCl7dmFyIG09KGwraCk+Pj4xLHg9YSIsYT8iLmdldChtKSI6IlttXSJdO3JldHVybiBpP2UuaW5kZXhPZigiYyIpPDA/by5wdXNoKCI7aWYoeD09PXkpe3JldHVybiBtfWVsc2UgaWYoeDw9eSl7Iik6by5wdXNoKCI7dmFyIHA9Yyh4LHkpO2lmKHA9PT0wKXtyZXR1cm4gbX1lbHNlIGlmKHA8PTApeyIpOm8ucHVzaCgiO2lmKCIsZSwiKXtpPW07Iikscj9vLnB1c2goImw9bSsxfWVsc2V7aD1tLTF9Iik6by5wdXNoKCJoPW0tMX1lbHNle2w9bSsxfSIpLG8ucHVzaCgifSIpLGk/by5wdXNoKCJyZXR1cm4gLTF9OyIpOm8ucHVzaCgicmV0dXJuIGl9OyIpLG8uam9pbigiIil9ZnVuY3Rpb24gYSh0LGUscixhKXtyZXR1cm4gbmV3IEZ1bmN0aW9uKFtuKCJBIiwieCIrdCsieSIsZSxbInkiXSwhMSxhKSxuKCJCIiwieCIrdCsieSIsZSxbInkiXSwhMCxhKSxuKCJQIiwiYyh4LHkpIit0KyIwIixlLFsieSIsImMiXSwhMSxhKSxuKCJRIiwiYyh4LHkpIit0KyIwIixlLFsieSIsImMiXSwhMCxhKSwiZnVuY3Rpb24gZGlzcGF0Y2hCc2VhcmNoIixyLCIoYSx5LGMsbCxoKXtpZihhLnNoYXBlKXtpZih0eXBlb2YoYyk9PT0nZnVuY3Rpb24nKXtyZXR1cm4gUShhLChsPT09dW5kZWZpbmVkKT8wOmx8MCwoaD09PXVuZGVmaW5lZCk/YS5zaGFwZVswXS0xOmh8MCx5LGMpfWVsc2V7cmV0dXJuIEIoYSwoYz09PXVuZGVmaW5lZCk/MDpjfDAsKGw9PT11bmRlZmluZWQpP2Euc2hhcGVbMF0tMTpsfDAseSl9fWVsc2V7aWYodHlwZW9mKGMpPT09J2Z1bmN0aW9uJyl7cmV0dXJuIFAoYSwobD09PXVuZGVmaW5lZCk/MDpsfDAsKGg9PT11bmRlZmluZWQpP2EubGVuZ3RoLTE6aHwwLHksYyl9ZWxzZXtyZXR1cm4gQShhLChjPT09dW5kZWZpbmVkKT8wOmN8MCwobD09PXVuZGVmaW5lZCk/YS5sZW5ndGgtMTpsfDAseSl9fX1yZXR1cm4gZGlzcGF0Y2hCc2VhcmNoIixyXS5qb2luKCIiKSkoKX1lLmV4cG9ydHM9e2dlOmEoIj49IiwhMSwiR0UiKSxndDphKCI+IiwhMSwiR1QiKSxsdDphKCI8IiwhMCwiTFQiKSxsZTphKCI8PSIsITAsIkxFIiksZXE6YSgiLSIsITAsIkVRIiwhMCl9fSx7fV0sOTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2YXIgZT0zMjtyZXR1cm4odCY9LXQpJiZlLS0sNjU1MzUmdCYmKGUtPTE2KSwxNjcxMTkzNSZ0JiYoZS09OCksMjUyNjQ1MTM1JnQmJihlLT00KSw4NTg5OTM0NTkmdCYmKGUtPTIpLDE0MzE2NTU3NjUmdCYmKGUtPTEpLGV9ci5JTlRfQklUUz0zMixyLklOVF9NQVg9MjE0NzQ4MzY0NyxyLklOVF9NSU49LTE8PDMxLHIuc2lnbj1mdW5jdGlvbih0KXtyZXR1cm4odD4wKS0odDwwKX0sci5hYnM9ZnVuY3Rpb24odCl7dmFyIGU9dD4+MzE7cmV0dXJuKHReZSktZX0sci5taW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gZV4odF5lKSYtKHQ8ZSl9LHIubWF4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHReKHReZSkmLSh0PGUpfSxyLmlzUG93Mj1mdW5jdGlvbih0KXtyZXR1cm4hKHQmdC0xfHwhdCl9LHIubG9nMj1mdW5jdGlvbih0KXt2YXIgZSxyO3JldHVybiBlPSh0PjY1NTM1KTw8NCxlfD1yPSgodD4+Pj1lKT4yNTUpPDwzLGV8PXI9KCh0Pj4+PXIpPjE1KTw8MiwoZXw9cj0oKHQ+Pj49cik+Myk8PDEpfCh0Pj4+PXIpPj4xfSxyLmxvZzEwPWZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xZTk/OTp0Pj0xZTg/ODp0Pj0xZTc/Nzp0Pj0xZTY/Njp0Pj0xZTU/NTp0Pj0xZTQ/NDp0Pj0xZTM/Mzp0Pj0xMDA/Mjp0Pj0xMD8xOjB9LHIucG9wQ291bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDE2ODQzMDA5KigodD0oODU4OTkzNDU5Jih0LT10Pj4+MSYxNDMxNjU1NzY1KSkrKHQ+Pj4yJjg1ODk5MzQ1OSkpKyh0Pj4+NCkmMjUyNjQ1MTM1KT4+PjI0fSxyLmNvdW50VHJhaWxpbmdaZXJvcz1uLHIubmV4dFBvdzI9ZnVuY3Rpb24odCl7cmV0dXJuIHQrPTA9PT10LC0tdCx0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCwodHw9dD4+PjE2KSsxfSxyLnByZXZQb3cyPWZ1bmN0aW9uKHQpe3JldHVybiB0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCwodHw9dD4+PjE2KS0odD4+PjEpfSxyLnBhcml0eT1mdW5jdGlvbih0KXtyZXR1cm4gdF49dD4+PjE2LHRePXQ+Pj44LHRePXQ+Pj40LDI3MDMwPj4+KHQmPTE1KSYxfTt2YXIgYT1uZXcgQXJyYXkoMjU2KTshZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTwyNTY7KytlKXt2YXIgcj1lLG49ZSxhPTc7Zm9yKHI+Pj49MTtyO3I+Pj49MSluPDw9MSxufD0xJnIsLS1hO3RbZV09bjw8YSYyNTV9fShhKSxyLnJldmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFbMjU1JnRdPDwyNHxhW3Q+Pj44JjI1NV08PDE2fGFbdD4+PjE2JjI1NV08PDh8YVt0Pj4+MjQmMjU1XX0sci5pbnRlcmxlYXZlMj1mdW5jdGlvbih0LGUpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQmPTY1NTM1KXx0PDw4KSl8dDw8NCkpfHQ8PDIpKXx0PDwxKSl8KGU9MTQzMTY1NTc2NSYoKGU9ODU4OTkzNDU5JigoZT0yNTI2NDUxMzUmKChlPTE2NzExOTM1JigoZSY9NjU1MzUpfGU8PDgpKXxlPDw0KSl8ZTw8MikpfGU8PDEpKTw8MX0sci5kZWludGVybGVhdmUyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQ9NjU1MzUmKCh0PTE2NzExOTM1JigodD0yNTI2NDUxMzUmKCh0PTg1ODk5MzQ1OSYoKHQ9dD4+PmUmMTQzMTY1NTc2NSl8dD4+PjEpKXx0Pj4+MikpfHQ+Pj40KSl8dD4+PjE2KSk8PDE2Pj4xNn0sci5pbnRlcmxlYXZlMz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9MTIyNzEzMzUxMyYoKHQ9MzI3MjM1NjAzNSYoKHQ9MjUxNzE5Njk1JigodD00Mjc4MTkwMzM1JigodCY9MTAyMyl8dDw8MTYpKXx0PDw4KSl8dDw8NCkpfHQ8PDIpLCh0fD0oZT0xMjI3MTMzNTEzJigoZT0zMjcyMzU2MDM1JigoZT0yNTE3MTk2OTUmKChlPTQyNzgxOTAzMzUmKChlJj0xMDIzKXxlPDwxNikpfGU8PDgpKXxlPDw0KSl8ZTw8MikpPDwxKXwocj0xMjI3MTMzNTEzJigocj0zMjcyMzU2MDM1Jigocj0yNTE3MTk2OTUmKChyPTQyNzgxOTAzMzUmKChyJj0xMDIzKXxyPDwxNikpfHI8PDgpKXxyPDw0KSl8cjw8MikpPDwyfSxyLmRlaW50ZXJsZWF2ZTM9ZnVuY3Rpb24odCxlKXtyZXR1cm4odD0xMDIzJigodD00Mjc4MTkwMzM1JigodD0yNTE3MTk2OTUmKCh0PTMyNzIzNTYwMzUmKCh0PXQ+Pj5lJjEyMjcxMzM1MTMpfHQ+Pj4yKSl8dD4+PjQpKXx0Pj4+OCkpfHQ+Pj4xNikpPDwyMj4+MjJ9LHIubmV4dENvbWJpbmF0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXR8dC0xO3JldHVybiBlKzF8KH5lJi1+ZSktMT4+Pm4odCkrMX19LHt9XSw5NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjbGFtcCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2V8fChlPXt9KTt2YXIgcixvLHMsbCxjLHUsaCxmLHAsZCxnLHY9bnVsbD09ZS5jdXRvZmY/LjI1OmUuY3V0b2ZmLG09bnVsbD09ZS5yYWRpdXM/ODplLnJhZGl1cyx5PWUuY2hhbm5lbHx8MDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCl8fEFycmF5LmlzQXJyYXkodCkpe2lmKCFlLndpZHRofHwhZS5oZWlnaHQpdGhyb3cgRXJyb3IoIkZvciByYXcgZGF0YSB3aWR0aCBhbmQgaGVpZ2h0IHNob3VsZCBiZSBwcm92aWRlZCBieSBvcHRpb25zIik7cj1lLndpZHRoLG89ZS5oZWlnaHQsbD10LHU9ZS5zdHJpZGU/ZS5zdHJpZGU6TWF0aC5mbG9vcih0Lmxlbmd0aC9yL28pfWVsc2Ugd2luZG93LkhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxDYW52YXNFbGVtZW50PyhoPShmPXQpLmdldENvbnRleHQoIjJkIikscj1mLndpZHRoLG89Zi5oZWlnaHQscD1oLmdldEltYWdlRGF0YSgwLDAscixvKSxsPXAuZGF0YSx1PTQpOndpbmRvdy5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQmJnQgaW5zdGFuY2VvZiB3aW5kb3cuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPyhmPXQuY2FudmFzLGg9dCxyPWYud2lkdGgsbz1mLmhlaWdodCxwPWguZ2V0SW1hZ2VEYXRhKDAsMCxyLG8pLGw9cC5kYXRhLHU9NCk6d2luZG93LkltYWdlRGF0YSYmdCBpbnN0YW5jZW9mIHdpbmRvdy5JbWFnZURhdGEmJihwPXQscj10LndpZHRoLG89dC5oZWlnaHQsbD1wLmRhdGEsdT00KTtpZihzPU1hdGgubWF4KHIsbyksd2luZG93LlVpbnQ4Q2xhbXBlZEFycmF5JiZsIGluc3RhbmNlb2Ygd2luZG93LlVpbnQ4Q2xhbXBlZEFycmF5fHx3aW5kb3cuVWludDhBcnJheSYmbCBpbnN0YW5jZW9mIHdpbmRvdy5VaW50OEFycmF5KWZvcihjPWwsbD1BcnJheShyKm8pLGQ9MCxnPWMubGVuZ3RoO2Q8ZztkKyspbFtkXT1jW2QqdSt5XS8yNTU7ZWxzZSBpZigxIT09dSl0aHJvdyBFcnJvcigiUmF3IGRhdGEgY2FuIGhhdmUgb25seSAxIHZhbHVlIHBlciBwaXhlbCIpO3ZhciB4PUFycmF5KHIqbyksYj1BcnJheShyKm8pLF89QXJyYXkocyksdz1BcnJheShzKSxrPUFycmF5KHMrMSksVD1BcnJheShzKTtmb3IoZD0wLGc9cipvO2Q8ZztkKyspe3ZhciBNPWxbZF07eFtkXT0xPT09TT8wOjA9PT1NP2E6TWF0aC5wb3coTWF0aC5tYXgoMCwuNS1NKSwyKSxiW2RdPTE9PT1NP2E6MD09PU0/MDpNYXRoLnBvdyhNYXRoLm1heCgwLE0tLjUpLDIpfWkoeCxyLG8sXyx3LFQsayksaShiLHIsbyxfLHcsVCxrKTt2YXIgQT13aW5kb3cuRmxvYXQzMkFycmF5P25ldyBGbG9hdDMyQXJyYXkocipvKTpuZXcgQXJyYXkocipvKTtmb3IoZD0wLGc9cipvO2Q8ZztkKyspQVtkXT1uKDEtKCh4W2RdLWJbZF0pL20rdiksMCwxKTtyZXR1cm4gQX07dmFyIGE9MWUyMDtmdW5jdGlvbiBpKHQsZSxyLG4sYSxpLHMpe2Zvcih2YXIgbD0wO2w8ZTtsKyspe2Zvcih2YXIgYz0wO2M8cjtjKyspbltjXT10W2MqZStsXTtmb3IobyhuLGEsaSxzLHIpLGM9MDtjPHI7YysrKXRbYyplK2xdPWFbY119Zm9yKGM9MDtjPHI7YysrKXtmb3IobD0wO2w8ZTtsKyspbltsXT10W2MqZStsXTtmb3IobyhuLGEsaSxzLGUpLGw9MDtsPGU7bCsrKXRbYyplK2xdPU1hdGguc3FydChhW2xdKX19ZnVuY3Rpb24gbyh0LGUscixuLGkpe3JbMF09MCxuWzBdPS1hLG5bMV09K2E7Zm9yKHZhciBvPTEscz0wO288aTtvKyspe2Zvcih2YXIgbD0odFtvXStvKm8tKHRbcltzXV0rcltzXSpyW3NdKSkvKDIqby0yKnJbc10pO2w8PW5bc107KXMtLSxsPSh0W29dK28qby0odFtyW3NdXStyW3NdKnJbc10pKS8oMipvLTIqcltzXSk7clsrK3NdPW8sbltzXT1sLG5bcysxXT0rYX1mb3Iobz0wLHM9MDtvPGk7bysrKXtmb3IoO25bcysxXTxvOylzKys7ZVtvXT0oby1yW3NdKSooby1yW3NdKSt0W3Jbc11dfX19LHtjbGFtcDoxMTd9XSw5NjpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbihlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGV8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gYSh0LGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gaSh0LGUscil7aWYoaS5pc0JOKHQpKXJldHVybiB0O3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT10JiYoImxlIiE9PWUmJiJiZSIhPT1lfHwocj1lLGU9MTApLHRoaXMuX2luaXQodHx8MCxlfHwxMCxyfHwiYmUiKSl9dmFyIG87Im9iamVjdCI9PXR5cGVvZiBlP2UuZXhwb3J0cz1pOnIuQk49aSxpLkJOPWksaS53b3JkU2l6ZT0yNjt0cnl7bz10KCJidWZmZXIiKS5CdWZmZXJ9Y2F0Y2godCl7fWZ1bmN0aW9uIHModCxlLHIpe2Zvcih2YXIgbj0wLGE9TWF0aC5taW4odC5sZW5ndGgsciksaT1lO2k8YTtpKyspe3ZhciBvPXQuY2hhckNvZGVBdChpKS00ODtuPDw9NCxufD1vPj00OSYmbzw9NTQ/by00OSsxMDpvPj0xNyYmbzw9MjI/by0xNysxMDoxNSZvfXJldHVybiBufWZ1bmN0aW9uIGwodCxlLHIsbil7Zm9yKHZhciBhPTAsaT1NYXRoLm1pbih0Lmxlbmd0aCxyKSxvPWU7bzxpO28rKyl7dmFyIHM9dC5jaGFyQ29kZUF0KG8pLTQ4O2EqPW4sYSs9cz49NDk/cy00OSsxMDpzPj0xNz9zLTE3KzEwOnN9cmV0dXJuIGF9aS5pc0JOPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgaXx8bnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PWkud29yZFNpemUmJkFycmF5LmlzQXJyYXkodC53b3Jkcyl9LGkubWF4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY21wKGUpPjA/dDplfSxpLm1pbj1mdW5jdGlvbih0LGUpe3JldHVybiB0LmNtcChlKTwwP3Q6ZX0saS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCxlLHIpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdGhpcy5faW5pdE51bWJlcih0LGUscik7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXJldHVybiB0aGlzLl9pbml0QXJyYXkodCxlLHIpOyJoZXgiPT09ZSYmKGU9MTYpLG4oZT09PSgwfGUpJiZlPj0yJiZlPD0zNik7dmFyIGE9MDsiLSI9PT0odD10LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmYSsrLDE2PT09ZT90aGlzLl9wYXJzZUhleCh0LGEpOnRoaXMuX3BhcnNlQmFzZSh0LGUsYSksIi0iPT09dFswXSYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpLCJsZSI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksZSxyKX0saS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24odCxlLHIpe3Q8MCYmKHRoaXMubmVnYXRpdmU9MSx0PS10KSx0PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ0XSx0aGlzLmxlbmd0aD0xKTp0PDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJnQsdC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KG4odDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ0LHQvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PXImJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxlLHIpfSxpLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHQsZSxyKXtpZihuKCJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpLHQubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKHQubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGE9MDthPHRoaXMubGVuZ3RoO2ErKyl0aGlzLndvcmRzW2FdPTA7dmFyIGksbyxzPTA7aWYoImJlIj09PXIpZm9yKGE9dC5sZW5ndGgtMSxpPTA7YT49MDthLT0zKW89dFthXXx0W2EtMV08PDh8dFthLTJdPDwxNix0aGlzLndvcmRzW2ldfD1vPDxzJjY3MTA4ODYzLHRoaXMud29yZHNbaSsxXT1vPj4+MjYtcyY2NzEwODg2Mywocys9MjQpPj0yNiYmKHMtPTI2LGkrKyk7ZWxzZSBpZigibGUiPT09cilmb3IoYT0wLGk9MDthPHQubGVuZ3RoO2ErPTMpbz10W2FdfHRbYSsxXTw8OHx0W2ErMl08PDE2LHRoaXMud29yZHNbaV18PW88PHMmNjcxMDg4NjMsdGhpcy53b3Jkc1tpKzFdPW8+Pj4yNi1zJjY3MTA4ODYzLChzKz0yNCk+PTI2JiYocy09MjYsaSsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24odCxlKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHQubGVuZ3RoLWUpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl0aGlzLndvcmRzW3JdPTA7dmFyIG4sYSxpPTA7Zm9yKHI9dC5sZW5ndGgtNixuPTA7cj49ZTtyLT02KWE9cyh0LHIscis2KSx0aGlzLndvcmRzW25dfD1hPDxpJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9YT4+PjI2LWkmNDE5NDMwMywoaSs9MjQpPj0yNiYmKGktPTI2LG4rKyk7cis2IT09ZSYmKGE9cyh0LGUscis2KSx0aGlzLndvcmRzW25dfD1hPDxpJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9YT4+PjI2LWkmNDE5NDMwMyksdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgbj0wLGE9MTthPD02NzEwODg2MzthKj1lKW4rKztuLS0sYT1hL2V8MDtmb3IodmFyIGk9dC5sZW5ndGgtcixvPWklbixzPU1hdGgubWluKGksaS1vKStyLGM9MCx1PXI7dTxzO3UrPW4pYz1sKHQsdSx1K24sZSksdGhpcy5pbXVsbihhKSx0aGlzLndvcmRzWzBdK2M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Yzp0aGlzLl9pYWRkbihjKTtpZigwIT09byl7dmFyIGg9MTtmb3IoYz1sKHQsdSx0Lmxlbmd0aCxlKSx1PTA7dTxvO3UrKyloKj1lO3RoaXMuaW11bG4oaCksdGhpcy53b3Jkc1swXStjPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWM6dGhpcy5faWFkZG4oYyl9fSxpLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3Qud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl0LndvcmRzW2VdPXRoaXMud29yZHNbZV07dC5sZW5ndGg9dGhpcy5sZW5ndGgsdC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHQucmVkPXRoaXMucmVkfSxpLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBpKG51bGwpO3JldHVybiB0aGlzLmNvcHkodCksdH0saS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbih0KXtmb3IoO3RoaXMubGVuZ3RoPHQ7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30saS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxpLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30saS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgYz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSx1PVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLGg9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gZih0LGUscil7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmU7dmFyIG49dC5sZW5ndGgrZS5sZW5ndGh8MDtyLmxlbmd0aD1uLG49bi0xfDA7dmFyIGE9MHx0LndvcmRzWzBdLGk9MHxlLndvcmRzWzBdLG89YSppLHM9NjcxMDg4NjMmbyxsPW8vNjcxMDg4NjR8MDtyLndvcmRzWzBdPXM7Zm9yKHZhciBjPTE7YzxuO2MrKyl7Zm9yKHZhciB1PWw+Pj4yNixoPTY3MTA4ODYzJmwsZj1NYXRoLm1pbihjLGUubGVuZ3RoLTEpLHA9TWF0aC5tYXgoMCxjLXQubGVuZ3RoKzEpO3A8PWY7cCsrKXt2YXIgZD1jLXB8MDt1Kz0obz0oYT0wfHQud29yZHNbZF0pKihpPTB8ZS53b3Jkc1twXSkraCkvNjcxMDg4NjR8MCxoPTY3MTA4ODYzJm99ci53b3Jkc1tjXT0wfGgsbD0wfHV9cmV0dXJuIDAhPT1sP3Iud29yZHNbY109MHxsOnIubGVuZ3RoLS0sci5zdHJpcCgpfWkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHQsZSl7dmFyIHI7aWYoZT0wfGV8fDEsMTY9PT0odD10fHwxMCl8fCJoZXgiPT09dCl7cj0iIjtmb3IodmFyIGE9MCxpPTAsbz0wO288dGhpcy5sZW5ndGg7bysrKXt2YXIgcz10aGlzLndvcmRzW29dLGw9KDE2Nzc3MjE1JihzPDxhfGkpKS50b1N0cmluZygxNik7cj0wIT09KGk9cz4+PjI0LWEmMTY3NzcyMTUpfHxvIT09dGhpcy5sZW5ndGgtMT9jWzYtbC5sZW5ndGhdK2wrcjpsK3IsKGErPTIpPj0yNiYmKGEtPTI2LG8tLSl9Zm9yKDAhPT1pJiYocj1pLnRvU3RyaW5nKDE2KStyKTtyLmxlbmd0aCVlIT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9aWYodD09PSgwfHQpJiZ0Pj0yJiZ0PD0zNil7dmFyIGY9dVt0XSxwPWhbdF07cj0iIjt2YXIgZD10aGlzLmNsb25lKCk7Zm9yKGQubmVnYXRpdmU9MDshZC5pc1plcm8oKTspe3ZhciBnPWQubW9kbihwKS50b1N0cmluZyh0KTtyPShkPWQuaWRpdm4ocCkpLmlzWmVybygpP2crcjpjW2YtZy5sZW5ndGhdK2crcn1mb3IodGhpcy5pc1plcm8oKSYmKHI9IjAiK3IpO3IubGVuZ3RoJWUhPTA7KXI9IjAiK3I7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYocj0iLSIrcikscn1uKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LGkucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP3QrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT90Kz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmbighMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LXQ6dH0saS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxpLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbih0LGUpe3JldHVybiBuKCJ1bmRlZmluZWQiIT10eXBlb2YgbyksdGhpcy50b0FycmF5TGlrZShvLHQsZSl9LGkucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx0LGUpfSxpLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5ieXRlTGVuZ3RoKCksaT1yfHxNYXRoLm1heCgxLGEpO24oYTw9aSwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLG4oaT4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIG8scyxsPSJsZSI9PT1lLGM9bmV3IHQoaSksdT10aGlzLmNsb25lKCk7aWYobCl7Zm9yKHM9MDshdS5pc1plcm8oKTtzKyspbz11LmFuZGxuKDI1NSksdS5pdXNocm4oOCksY1tzXT1vO2Zvcig7czxpO3MrKyljW3NdPTB9ZWxzZXtmb3Iocz0wO3M8aS1hO3MrKyljW3NdPTA7Zm9yKHM9MDshdS5pc1plcm8oKTtzKyspbz11LmFuZGxuKDI1NSksdS5pdXNocm4oOCksY1tpLXMtMV09b31yZXR1cm4gY30sTWF0aC5jbHozMj9pLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3JldHVybiAzMi1NYXRoLmNsejMyKHQpfTppLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQscj0wO3JldHVybiBlPj00MDk2JiYocis9MTMsZT4+Pj0xMyksZT49NjQmJihyKz03LGU+Pj49NyksZT49OCYmKHIrPTQsZT4+Pj00KSxlPj0yJiYocis9MixlPj4+PTIpLHIrZX0saS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHQpe2lmKDA9PT10KXJldHVybiAyNjt2YXIgZT10LHI9MDtyZXR1cm4gMD09KDgxOTEmZSkmJihyKz0xMyxlPj4+PTEzKSwwPT0oMTI3JmUpJiYocis9NyxlPj4+PTcpLDA9PSgxNSZlKSYmKHIrPTQsZT4+Pj00KSwwPT0oMyZlKSYmKHIrPTIsZT4+Pj0yKSwwPT0oMSZlKSYmcisrLHJ9LGkucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0sZT10aGlzLl9jb3VudEJpdHModCk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStlfSxpLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciB0PTAsZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKXt2YXIgcj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2VdKTtpZih0Kz1yLDI2IT09cilicmVha31yZXR1cm4gdH0saS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0saS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHQpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKHQpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0saS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGVzdG4odC0xKT90aGlzLm5vdG4odCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0saS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LGkucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxpLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxpLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHQpe2Zvcig7dGhpcy5sZW5ndGg8dC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLndvcmRzW2VdPXRoaXMud29yZHNbZV18dC53b3Jkc1tlXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24odCl7cmV0dXJuIG4oMD09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih0KX0saS5wcm90b3R5cGUub3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IodCk6dC5jbG9uZSgpLmlvcih0aGlzKX0saS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih0KTp0LmNsb25lKCkuaXVvcih0aGlzKX0saS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24odCl7dmFyIGU7ZT10aGlzLmxlbmd0aD50Lmxlbmd0aD90OnRoaXM7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdGhpcy53b3Jkc1tyXT10aGlzLndvcmRzW3JdJnQud29yZHNbcl07cmV0dXJuIHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT0odGhpcy5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSksdGhpcy5pdWFuZCh0KX0saS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh0KTp0LmNsb25lKCkuaWFuZCh0aGlzKX0saS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKHQpOnQuY2xvbmUoKS5pdWFuZCh0aGlzKX0saS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24odCl7dmFyIGUscjt0aGlzLmxlbmd0aD50Lmxlbmd0aD8oZT10aGlzLHI9dCk6KGU9dCxyPXRoaXMpO2Zvcih2YXIgbj0wO248ci5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09ZS53b3Jkc1tuXV5yLndvcmRzW25dO2lmKHRoaXMhPT1lKWZvcig7bjxlLmxlbmd0aDtuKyspdGhpcy53b3Jkc1tuXT1lLndvcmRzW25dO3JldHVybiB0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLnN0cmlwKCl9LGkucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24odCl7cmV0dXJuIG4oMD09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IodCl9LGkucHJvdG90eXBlLnhvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IodCk6dC5jbG9uZSgpLml4b3IodGhpcyl9LGkucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcih0KTp0LmNsb25lKCkuaXV4b3IodGhpcyl9LGkucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT0wfE1hdGguY2VpbCh0LzI2KSxyPXQlMjY7dGhpcy5fZXhwYW5kKGUpLHI+MCYmZS0tO2Zvcih2YXIgYT0wO2E8ZTthKyspdGhpcy53b3Jkc1thXT02NzEwODg2MyZ+dGhpcy53b3Jkc1thXTtyZXR1cm4gcj4wJiYodGhpcy53b3Jkc1thXT1+dGhpcy53b3Jkc1thXSY2NzEwODg2Mz4+MjYtciksdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4odCl9LGkucHJvdG90eXBlLnNldG49ZnVuY3Rpb24odCxlKXtuKCJudW1iZXIiPT10eXBlb2YgdCYmdD49MCk7dmFyIHI9dC8yNnwwLGE9dCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKHIrMSksdGhpcy53b3Jkc1tyXT1lP3RoaXMud29yZHNbcl18MTw8YTp0aGlzLndvcmRzW3JdJn4oMTw8YSksdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbjtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXQubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxlPXRoaXMuaXN1Yih0KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT10Lm5lZ2F0aXZlKXJldHVybiB0Lm5lZ2F0aXZlPTAsZT10aGlzLmlzdWIodCksdC5uZWdhdGl2ZT0xLGUuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+dC5sZW5ndGg/KHI9dGhpcyxuPXQpOihyPXQsbj10aGlzKTtmb3IodmFyIGE9MCxpPTA7aTxuLmxlbmd0aDtpKyspZT0oMHxyLndvcmRzW2ldKSsoMHxuLndvcmRzW2ldKSthLHRoaXMud29yZHNbaV09NjcxMDg4NjMmZSxhPWU+Pj4yNjtmb3IoOzAhPT1hJiZpPHIubGVuZ3RoO2krKyllPSgwfHIud29yZHNbaV0pK2EsdGhpcy53b3Jkc1tpXT02NzEwODg2MyZlLGE9ZT4+PjI2O2lmKHRoaXMubGVuZ3RoPXIubGVuZ3RoLDAhPT1hKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWEsdGhpcy5sZW5ndGgrKztlbHNlIGlmKHIhPT10aGlzKWZvcig7aTxyLmxlbmd0aDtpKyspdGhpcy53b3Jkc1tpXT1yLndvcmRzW2ldO3JldHVybiB0aGlzfSxpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIDAhPT10Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8odC5uZWdhdGl2ZT0wLGU9dGhpcy5zdWIodCksdC5uZWdhdGl2ZV49MSxlKTowPT09dC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxlPXQuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxlKTp0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh0KTp0LmNsb25lKCkuaWFkZCh0aGlzKX0saS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0KXtpZigwIT09dC5uZWdhdGl2ZSl7dC5uZWdhdGl2ZT0wO3ZhciBlPXRoaXMuaWFkZCh0KTtyZXR1cm4gdC5uZWdhdGl2ZT0xLGUuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQodCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIHIsbixhPXRoaXMuY21wKHQpO2lmKDA9PT1hKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpczthPjA/KHI9dGhpcyxuPXQpOihyPXQsbj10aGlzKTtmb3IodmFyIGk9MCxvPTA7bzxuLmxlbmd0aDtvKyspaT0oZT0oMHxyLndvcmRzW29dKS0oMHxuLndvcmRzW29dKStpKT4+MjYsdGhpcy53b3Jkc1tvXT02NzEwODg2MyZlO2Zvcig7MCE9PWkmJm88ci5sZW5ndGg7bysrKWk9KGU9KDB8ci53b3Jkc1tvXSkraSk+PjI2LHRoaXMud29yZHNbb109NjcxMDg4NjMmZTtpZigwPT09aSYmbzxyLmxlbmd0aCYmciE9PXRoaXMpZm9yKDtvPHIubGVuZ3RoO28rKyl0aGlzLndvcmRzW29dPXIud29yZHNbb107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLG8pLHIhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LGkucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIodCl9O3ZhciBwPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGksbz10LndvcmRzLHM9ZS53b3JkcyxsPXIud29yZHMsYz0wLHU9MHxvWzBdLGg9ODE5MSZ1LGY9dT4+PjEzLHA9MHxvWzFdLGQ9ODE5MSZwLGc9cD4+PjEzLHY9MHxvWzJdLG09ODE5MSZ2LHk9dj4+PjEzLHg9MHxvWzNdLGI9ODE5MSZ4LF89eD4+PjEzLHc9MHxvWzRdLGs9ODE5MSZ3LFQ9dz4+PjEzLE09MHxvWzVdLEE9ODE5MSZNLFM9TT4+PjEzLEU9MHxvWzZdLEw9ODE5MSZFLEM9RT4+PjEzLFA9MHxvWzddLE89ODE5MSZQLHo9UD4+PjEzLEk9MHxvWzhdLEQ9ODE5MSZJLFI9ST4+PjEzLEY9MHxvWzldLEI9ODE5MSZGLE49Rj4+PjEzLGo9MHxzWzBdLFY9ODE5MSZqLFU9aj4+PjEzLHE9MHxzWzFdLEg9ODE5MSZxLEc9cT4+PjEzLFk9MHxzWzJdLFc9ODE5MSZZLFg9WT4+PjEzLFo9MHxzWzNdLEo9ODE5MSZaLEs9Wj4+PjEzLFE9MHxzWzRdLCQ9ODE5MSZRLHR0PVE+Pj4xMyxldD0wfHNbNV0scnQ9ODE5MSZldCxudD1ldD4+PjEzLGF0PTB8c1s2XSxpdD04MTkxJmF0LG90PWF0Pj4+MTMsc3Q9MHxzWzddLGx0PTgxOTEmc3QsY3Q9c3Q+Pj4xMyx1dD0wfHNbOF0saHQ9ODE5MSZ1dCxmdD11dD4+PjEzLHB0PTB8c1s5XSxkdD04MTkxJnB0LGd0PXB0Pj4+MTM7ci5uZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVnYXRpdmUsci5sZW5ndGg9MTk7dmFyIHZ0PShjKyhuPU1hdGguaW11bChoLFYpKXwwKSsoKDgxOTEmKGE9KGE9TWF0aC5pbXVsKGgsVSkpK01hdGguaW11bChmLFYpfDApKTw8MTMpfDA7Yz0oKGk9TWF0aC5pbXVsKGYsVSkpKyhhPj4+MTMpfDApKyh2dD4+PjI2KXwwLHZ0Jj02NzEwODg2MyxuPU1hdGguaW11bChkLFYpLGE9KGE9TWF0aC5pbXVsKGQsVSkpK01hdGguaW11bChnLFYpfDAsaT1NYXRoLmltdWwoZyxVKTt2YXIgbXQ9KGMrKG49bitNYXRoLmltdWwoaCxIKXwwKXwwKSsoKDgxOTEmKGE9KGE9YStNYXRoLmltdWwoaCxHKXwwKStNYXRoLmltdWwoZixIKXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKGYsRyl8MCkrKGE+Pj4xMyl8MCkrKG10Pj4+MjYpfDAsbXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKG0sViksYT0oYT1NYXRoLmltdWwobSxVKSkrTWF0aC5pbXVsKHksVil8MCxpPU1hdGguaW11bCh5LFUpLG49bitNYXRoLmltdWwoZCxIKXwwLGE9KGE9YStNYXRoLmltdWwoZCxHKXwwKStNYXRoLmltdWwoZyxIKXwwLGk9aStNYXRoLmltdWwoZyxHKXwwO3ZhciB5dD0oYysobj1uK01hdGguaW11bChoLFcpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChoLFgpfDApK01hdGguaW11bChmLFcpfDApKTw8MTMpfDA7Yz0oKGk9aStNYXRoLmltdWwoZixYKXwwKSsoYT4+PjEzKXwwKSsoeXQ+Pj4yNil8MCx5dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoYixWKSxhPShhPU1hdGguaW11bChiLFUpKStNYXRoLmltdWwoXyxWKXwwLGk9TWF0aC5pbXVsKF8sVSksbj1uK01hdGguaW11bChtLEgpfDAsYT0oYT1hK01hdGguaW11bChtLEcpfDApK01hdGguaW11bCh5LEgpfDAsaT1pK01hdGguaW11bCh5LEcpfDAsbj1uK01hdGguaW11bChkLFcpfDAsYT0oYT1hK01hdGguaW11bChkLFgpfDApK01hdGguaW11bChnLFcpfDAsaT1pK01hdGguaW11bChnLFgpfDA7dmFyIHh0PShjKyhuPW4rTWF0aC5pbXVsKGgsSil8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGgsSyl8MCkrTWF0aC5pbXVsKGYsSil8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChmLEspfDApKyhhPj4+MTMpfDApKyh4dD4+PjI2KXwwLHh0Jj02NzEwODg2MyxuPU1hdGguaW11bChrLFYpLGE9KGE9TWF0aC5pbXVsKGssVSkpK01hdGguaW11bChULFYpfDAsaT1NYXRoLmltdWwoVCxVKSxuPW4rTWF0aC5pbXVsKGIsSCl8MCxhPShhPWErTWF0aC5pbXVsKGIsRyl8MCkrTWF0aC5pbXVsKF8sSCl8MCxpPWkrTWF0aC5pbXVsKF8sRyl8MCxuPW4rTWF0aC5pbXVsKG0sVyl8MCxhPShhPWErTWF0aC5pbXVsKG0sWCl8MCkrTWF0aC5pbXVsKHksVyl8MCxpPWkrTWF0aC5pbXVsKHksWCl8MCxuPW4rTWF0aC5pbXVsKGQsSil8MCxhPShhPWErTWF0aC5pbXVsKGQsSyl8MCkrTWF0aC5pbXVsKGcsSil8MCxpPWkrTWF0aC5pbXVsKGcsSyl8MDt2YXIgYnQ9KGMrKG49bitNYXRoLmltdWwoaCwkKXwwKXwwKSsoKDgxOTEmKGE9KGE9YStNYXRoLmltdWwoaCx0dCl8MCkrTWF0aC5pbXVsKGYsJCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChmLHR0KXwwKSsoYT4+PjEzKXwwKSsoYnQ+Pj4yNil8MCxidCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQSxWKSxhPShhPU1hdGguaW11bChBLFUpKStNYXRoLmltdWwoUyxWKXwwLGk9TWF0aC5pbXVsKFMsVSksbj1uK01hdGguaW11bChrLEgpfDAsYT0oYT1hK01hdGguaW11bChrLEcpfDApK01hdGguaW11bChULEgpfDAsaT1pK01hdGguaW11bChULEcpfDAsbj1uK01hdGguaW11bChiLFcpfDAsYT0oYT1hK01hdGguaW11bChiLFgpfDApK01hdGguaW11bChfLFcpfDAsaT1pK01hdGguaW11bChfLFgpfDAsbj1uK01hdGguaW11bChtLEopfDAsYT0oYT1hK01hdGguaW11bChtLEspfDApK01hdGguaW11bCh5LEopfDAsaT1pK01hdGguaW11bCh5LEspfDAsbj1uK01hdGguaW11bChkLCQpfDAsYT0oYT1hK01hdGguaW11bChkLHR0KXwwKStNYXRoLmltdWwoZywkKXwwLGk9aStNYXRoLmltdWwoZyx0dCl8MDt2YXIgX3Q9KGMrKG49bitNYXRoLmltdWwoaCxydCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGgsbnQpfDApK01hdGguaW11bChmLHJ0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKGYsbnQpfDApKyhhPj4+MTMpfDApKyhfdD4+PjI2KXwwLF90Jj02NzEwODg2MyxuPU1hdGguaW11bChMLFYpLGE9KGE9TWF0aC5pbXVsKEwsVSkpK01hdGguaW11bChDLFYpfDAsaT1NYXRoLmltdWwoQyxVKSxuPW4rTWF0aC5pbXVsKEEsSCl8MCxhPShhPWErTWF0aC5pbXVsKEEsRyl8MCkrTWF0aC5pbXVsKFMsSCl8MCxpPWkrTWF0aC5pbXVsKFMsRyl8MCxuPW4rTWF0aC5pbXVsKGssVyl8MCxhPShhPWErTWF0aC5pbXVsKGssWCl8MCkrTWF0aC5pbXVsKFQsVyl8MCxpPWkrTWF0aC5pbXVsKFQsWCl8MCxuPW4rTWF0aC5pbXVsKGIsSil8MCxhPShhPWErTWF0aC5pbXVsKGIsSyl8MCkrTWF0aC5pbXVsKF8sSil8MCxpPWkrTWF0aC5pbXVsKF8sSyl8MCxuPW4rTWF0aC5pbXVsKG0sJCl8MCxhPShhPWErTWF0aC5pbXVsKG0sdHQpfDApK01hdGguaW11bCh5LCQpfDAsaT1pK01hdGguaW11bCh5LHR0KXwwLG49bitNYXRoLmltdWwoZCxydCl8MCxhPShhPWErTWF0aC5pbXVsKGQsbnQpfDApK01hdGguaW11bChnLHJ0KXwwLGk9aStNYXRoLmltdWwoZyxudCl8MDt2YXIgd3Q9KGMrKG49bitNYXRoLmltdWwoaCxpdCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGgsb3QpfDApK01hdGguaW11bChmLGl0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKGYsb3QpfDApKyhhPj4+MTMpfDApKyh3dD4+PjI2KXwwLHd0Jj02NzEwODg2MyxuPU1hdGguaW11bChPLFYpLGE9KGE9TWF0aC5pbXVsKE8sVSkpK01hdGguaW11bCh6LFYpfDAsaT1NYXRoLmltdWwoeixVKSxuPW4rTWF0aC5pbXVsKEwsSCl8MCxhPShhPWErTWF0aC5pbXVsKEwsRyl8MCkrTWF0aC5pbXVsKEMsSCl8MCxpPWkrTWF0aC5pbXVsKEMsRyl8MCxuPW4rTWF0aC5pbXVsKEEsVyl8MCxhPShhPWErTWF0aC5pbXVsKEEsWCl8MCkrTWF0aC5pbXVsKFMsVyl8MCxpPWkrTWF0aC5pbXVsKFMsWCl8MCxuPW4rTWF0aC5pbXVsKGssSil8MCxhPShhPWErTWF0aC5pbXVsKGssSyl8MCkrTWF0aC5pbXVsKFQsSil8MCxpPWkrTWF0aC5pbXVsKFQsSyl8MCxuPW4rTWF0aC5pbXVsKGIsJCl8MCxhPShhPWErTWF0aC5pbXVsKGIsdHQpfDApK01hdGguaW11bChfLCQpfDAsaT1pK01hdGguaW11bChfLHR0KXwwLG49bitNYXRoLmltdWwobSxydCl8MCxhPShhPWErTWF0aC5pbXVsKG0sbnQpfDApK01hdGguaW11bCh5LHJ0KXwwLGk9aStNYXRoLmltdWwoeSxudCl8MCxuPW4rTWF0aC5pbXVsKGQsaXQpfDAsYT0oYT1hK01hdGguaW11bChkLG90KXwwKStNYXRoLmltdWwoZyxpdCl8MCxpPWkrTWF0aC5pbXVsKGcsb3QpfDA7dmFyIGt0PShjKyhuPW4rTWF0aC5pbXVsKGgsbHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChoLGN0KXwwKStNYXRoLmltdWwoZixsdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChmLGN0KXwwKSsoYT4+PjEzKXwwKSsoa3Q+Pj4yNil8MCxrdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoRCxWKSxhPShhPU1hdGguaW11bChELFUpKStNYXRoLmltdWwoUixWKXwwLGk9TWF0aC5pbXVsKFIsVSksbj1uK01hdGguaW11bChPLEgpfDAsYT0oYT1hK01hdGguaW11bChPLEcpfDApK01hdGguaW11bCh6LEgpfDAsaT1pK01hdGguaW11bCh6LEcpfDAsbj1uK01hdGguaW11bChMLFcpfDAsYT0oYT1hK01hdGguaW11bChMLFgpfDApK01hdGguaW11bChDLFcpfDAsaT1pK01hdGguaW11bChDLFgpfDAsbj1uK01hdGguaW11bChBLEopfDAsYT0oYT1hK01hdGguaW11bChBLEspfDApK01hdGguaW11bChTLEopfDAsaT1pK01hdGguaW11bChTLEspfDAsbj1uK01hdGguaW11bChrLCQpfDAsYT0oYT1hK01hdGguaW11bChrLHR0KXwwKStNYXRoLmltdWwoVCwkKXwwLGk9aStNYXRoLmltdWwoVCx0dCl8MCxuPW4rTWF0aC5pbXVsKGIscnQpfDAsYT0oYT1hK01hdGguaW11bChiLG50KXwwKStNYXRoLmltdWwoXyxydCl8MCxpPWkrTWF0aC5pbXVsKF8sbnQpfDAsbj1uK01hdGguaW11bChtLGl0KXwwLGE9KGE9YStNYXRoLmltdWwobSxvdCl8MCkrTWF0aC5pbXVsKHksaXQpfDAsaT1pK01hdGguaW11bCh5LG90KXwwLG49bitNYXRoLmltdWwoZCxsdCl8MCxhPShhPWErTWF0aC5pbXVsKGQsY3QpfDApK01hdGguaW11bChnLGx0KXwwLGk9aStNYXRoLmltdWwoZyxjdCl8MDt2YXIgVHQ9KGMrKG49bitNYXRoLmltdWwoaCxodCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGgsZnQpfDApK01hdGguaW11bChmLGh0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKGYsZnQpfDApKyhhPj4+MTMpfDApKyhUdD4+PjI2KXwwLFR0Jj02NzEwODg2MyxuPU1hdGguaW11bChCLFYpLGE9KGE9TWF0aC5pbXVsKEIsVSkpK01hdGguaW11bChOLFYpfDAsaT1NYXRoLmltdWwoTixVKSxuPW4rTWF0aC5pbXVsKEQsSCl8MCxhPShhPWErTWF0aC5pbXVsKEQsRyl8MCkrTWF0aC5pbXVsKFIsSCl8MCxpPWkrTWF0aC5pbXVsKFIsRyl8MCxuPW4rTWF0aC5pbXVsKE8sVyl8MCxhPShhPWErTWF0aC5pbXVsKE8sWCl8MCkrTWF0aC5pbXVsKHosVyl8MCxpPWkrTWF0aC5pbXVsKHosWCl8MCxuPW4rTWF0aC5pbXVsKEwsSil8MCxhPShhPWErTWF0aC5pbXVsKEwsSyl8MCkrTWF0aC5pbXVsKEMsSil8MCxpPWkrTWF0aC5pbXVsKEMsSyl8MCxuPW4rTWF0aC5pbXVsKEEsJCl8MCxhPShhPWErTWF0aC5pbXVsKEEsdHQpfDApK01hdGguaW11bChTLCQpfDAsaT1pK01hdGguaW11bChTLHR0KXwwLG49bitNYXRoLmltdWwoayxydCl8MCxhPShhPWErTWF0aC5pbXVsKGssbnQpfDApK01hdGguaW11bChULHJ0KXwwLGk9aStNYXRoLmltdWwoVCxudCl8MCxuPW4rTWF0aC5pbXVsKGIsaXQpfDAsYT0oYT1hK01hdGguaW11bChiLG90KXwwKStNYXRoLmltdWwoXyxpdCl8MCxpPWkrTWF0aC5pbXVsKF8sb3QpfDAsbj1uK01hdGguaW11bChtLGx0KXwwLGE9KGE9YStNYXRoLmltdWwobSxjdCl8MCkrTWF0aC5pbXVsKHksbHQpfDAsaT1pK01hdGguaW11bCh5LGN0KXwwLG49bitNYXRoLmltdWwoZCxodCl8MCxhPShhPWErTWF0aC5pbXVsKGQsZnQpfDApK01hdGguaW11bChnLGh0KXwwLGk9aStNYXRoLmltdWwoZyxmdCl8MDt2YXIgTXQ9KGMrKG49bitNYXRoLmltdWwoaCxkdCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGgsZ3QpfDApK01hdGguaW11bChmLGR0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKGYsZ3QpfDApKyhhPj4+MTMpfDApKyhNdD4+PjI2KXwwLE10Jj02NzEwODg2MyxuPU1hdGguaW11bChCLEgpLGE9KGE9TWF0aC5pbXVsKEIsRykpK01hdGguaW11bChOLEgpfDAsaT1NYXRoLmltdWwoTixHKSxuPW4rTWF0aC5pbXVsKEQsVyl8MCxhPShhPWErTWF0aC5pbXVsKEQsWCl8MCkrTWF0aC5pbXVsKFIsVyl8MCxpPWkrTWF0aC5pbXVsKFIsWCl8MCxuPW4rTWF0aC5pbXVsKE8sSil8MCxhPShhPWErTWF0aC5pbXVsKE8sSyl8MCkrTWF0aC5pbXVsKHosSil8MCxpPWkrTWF0aC5pbXVsKHosSyl8MCxuPW4rTWF0aC5pbXVsKEwsJCl8MCxhPShhPWErTWF0aC5pbXVsKEwsdHQpfDApK01hdGguaW11bChDLCQpfDAsaT1pK01hdGguaW11bChDLHR0KXwwLG49bitNYXRoLmltdWwoQSxydCl8MCxhPShhPWErTWF0aC5pbXVsKEEsbnQpfDApK01hdGguaW11bChTLHJ0KXwwLGk9aStNYXRoLmltdWwoUyxudCl8MCxuPW4rTWF0aC5pbXVsKGssaXQpfDAsYT0oYT1hK01hdGguaW11bChrLG90KXwwKStNYXRoLmltdWwoVCxpdCl8MCxpPWkrTWF0aC5pbXVsKFQsb3QpfDAsbj1uK01hdGguaW11bChiLGx0KXwwLGE9KGE9YStNYXRoLmltdWwoYixjdCl8MCkrTWF0aC5pbXVsKF8sbHQpfDAsaT1pK01hdGguaW11bChfLGN0KXwwLG49bitNYXRoLmltdWwobSxodCl8MCxhPShhPWErTWF0aC5pbXVsKG0sZnQpfDApK01hdGguaW11bCh5LGh0KXwwLGk9aStNYXRoLmltdWwoeSxmdCl8MDt2YXIgQXQ9KGMrKG49bitNYXRoLmltdWwoZCxkdCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGQsZ3QpfDApK01hdGguaW11bChnLGR0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKGcsZ3QpfDApKyhhPj4+MTMpfDApKyhBdD4+PjI2KXwwLEF0Jj02NzEwODg2MyxuPU1hdGguaW11bChCLFcpLGE9KGE9TWF0aC5pbXVsKEIsWCkpK01hdGguaW11bChOLFcpfDAsaT1NYXRoLmltdWwoTixYKSxuPW4rTWF0aC5pbXVsKEQsSil8MCxhPShhPWErTWF0aC5pbXVsKEQsSyl8MCkrTWF0aC5pbXVsKFIsSil8MCxpPWkrTWF0aC5pbXVsKFIsSyl8MCxuPW4rTWF0aC5pbXVsKE8sJCl8MCxhPShhPWErTWF0aC5pbXVsKE8sdHQpfDApK01hdGguaW11bCh6LCQpfDAsaT1pK01hdGguaW11bCh6LHR0KXwwLG49bitNYXRoLmltdWwoTCxydCl8MCxhPShhPWErTWF0aC5pbXVsKEwsbnQpfDApK01hdGguaW11bChDLHJ0KXwwLGk9aStNYXRoLmltdWwoQyxudCl8MCxuPW4rTWF0aC5pbXVsKEEsaXQpfDAsYT0oYT1hK01hdGguaW11bChBLG90KXwwKStNYXRoLmltdWwoUyxpdCl8MCxpPWkrTWF0aC5pbXVsKFMsb3QpfDAsbj1uK01hdGguaW11bChrLGx0KXwwLGE9KGE9YStNYXRoLmltdWwoayxjdCl8MCkrTWF0aC5pbXVsKFQsbHQpfDAsaT1pK01hdGguaW11bChULGN0KXwwLG49bitNYXRoLmltdWwoYixodCl8MCxhPShhPWErTWF0aC5pbXVsKGIsZnQpfDApK01hdGguaW11bChfLGh0KXwwLGk9aStNYXRoLmltdWwoXyxmdCl8MDt2YXIgU3Q9KGMrKG49bitNYXRoLmltdWwobSxkdCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKG0sZ3QpfDApK01hdGguaW11bCh5LGR0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKHksZ3QpfDApKyhhPj4+MTMpfDApKyhTdD4+PjI2KXwwLFN0Jj02NzEwODg2MyxuPU1hdGguaW11bChCLEopLGE9KGE9TWF0aC5pbXVsKEIsSykpK01hdGguaW11bChOLEopfDAsaT1NYXRoLmltdWwoTixLKSxuPW4rTWF0aC5pbXVsKEQsJCl8MCxhPShhPWErTWF0aC5pbXVsKEQsdHQpfDApK01hdGguaW11bChSLCQpfDAsaT1pK01hdGguaW11bChSLHR0KXwwLG49bitNYXRoLmltdWwoTyxydCl8MCxhPShhPWErTWF0aC5pbXVsKE8sbnQpfDApK01hdGguaW11bCh6LHJ0KXwwLGk9aStNYXRoLmltdWwoeixudCl8MCxuPW4rTWF0aC5pbXVsKEwsaXQpfDAsYT0oYT1hK01hdGguaW11bChMLG90KXwwKStNYXRoLmltdWwoQyxpdCl8MCxpPWkrTWF0aC5pbXVsKEMsb3QpfDAsbj1uK01hdGguaW11bChBLGx0KXwwLGE9KGE9YStNYXRoLmltdWwoQSxjdCl8MCkrTWF0aC5pbXVsKFMsbHQpfDAsaT1pK01hdGguaW11bChTLGN0KXwwLG49bitNYXRoLmltdWwoayxodCl8MCxhPShhPWErTWF0aC5pbXVsKGssZnQpfDApK01hdGguaW11bChULGh0KXwwLGk9aStNYXRoLmltdWwoVCxmdCl8MDt2YXIgRXQ9KGMrKG49bitNYXRoLmltdWwoYixkdCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGIsZ3QpfDApK01hdGguaW11bChfLGR0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKF8sZ3QpfDApKyhhPj4+MTMpfDApKyhFdD4+PjI2KXwwLEV0Jj02NzEwODg2MyxuPU1hdGguaW11bChCLCQpLGE9KGE9TWF0aC5pbXVsKEIsdHQpKStNYXRoLmltdWwoTiwkKXwwLGk9TWF0aC5pbXVsKE4sdHQpLG49bitNYXRoLmltdWwoRCxydCl8MCxhPShhPWErTWF0aC5pbXVsKEQsbnQpfDApK01hdGguaW11bChSLHJ0KXwwLGk9aStNYXRoLmltdWwoUixudCl8MCxuPW4rTWF0aC5pbXVsKE8saXQpfDAsYT0oYT1hK01hdGguaW11bChPLG90KXwwKStNYXRoLmltdWwoeixpdCl8MCxpPWkrTWF0aC5pbXVsKHosb3QpfDAsbj1uK01hdGguaW11bChMLGx0KXwwLGE9KGE9YStNYXRoLmltdWwoTCxjdCl8MCkrTWF0aC5pbXVsKEMsbHQpfDAsaT1pK01hdGguaW11bChDLGN0KXwwLG49bitNYXRoLmltdWwoQSxodCl8MCxhPShhPWErTWF0aC5pbXVsKEEsZnQpfDApK01hdGguaW11bChTLGh0KXwwLGk9aStNYXRoLmltdWwoUyxmdCl8MDt2YXIgTHQ9KGMrKG49bitNYXRoLmltdWwoayxkdCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGssZ3QpfDApK01hdGguaW11bChULGR0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKFQsZ3QpfDApKyhhPj4+MTMpfDApKyhMdD4+PjI2KXwwLEx0Jj02NzEwODg2MyxuPU1hdGguaW11bChCLHJ0KSxhPShhPU1hdGguaW11bChCLG50KSkrTWF0aC5pbXVsKE4scnQpfDAsaT1NYXRoLmltdWwoTixudCksbj1uK01hdGguaW11bChELGl0KXwwLGE9KGE9YStNYXRoLmltdWwoRCxvdCl8MCkrTWF0aC5pbXVsKFIsaXQpfDAsaT1pK01hdGguaW11bChSLG90KXwwLG49bitNYXRoLmltdWwoTyxsdCl8MCxhPShhPWErTWF0aC5pbXVsKE8sY3QpfDApK01hdGguaW11bCh6LGx0KXwwLGk9aStNYXRoLmltdWwoeixjdCl8MCxuPW4rTWF0aC5pbXVsKEwsaHQpfDAsYT0oYT1hK01hdGguaW11bChMLGZ0KXwwKStNYXRoLmltdWwoQyxodCl8MCxpPWkrTWF0aC5pbXVsKEMsZnQpfDA7dmFyIEN0PShjKyhuPW4rTWF0aC5pbXVsKEEsZHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChBLGd0KXwwKStNYXRoLmltdWwoUyxkdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChTLGd0KXwwKSsoYT4+PjEzKXwwKSsoQ3Q+Pj4yNil8MCxDdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQixpdCksYT0oYT1NYXRoLmltdWwoQixvdCkpK01hdGguaW11bChOLGl0KXwwLGk9TWF0aC5pbXVsKE4sb3QpLG49bitNYXRoLmltdWwoRCxsdCl8MCxhPShhPWErTWF0aC5pbXVsKEQsY3QpfDApK01hdGguaW11bChSLGx0KXwwLGk9aStNYXRoLmltdWwoUixjdCl8MCxuPW4rTWF0aC5pbXVsKE8saHQpfDAsYT0oYT1hK01hdGguaW11bChPLGZ0KXwwKStNYXRoLmltdWwoeixodCl8MCxpPWkrTWF0aC5pbXVsKHosZnQpfDA7dmFyIFB0PShjKyhuPW4rTWF0aC5pbXVsKEwsZHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChMLGd0KXwwKStNYXRoLmltdWwoQyxkdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChDLGd0KXwwKSsoYT4+PjEzKXwwKSsoUHQ+Pj4yNil8MCxQdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQixsdCksYT0oYT1NYXRoLmltdWwoQixjdCkpK01hdGguaW11bChOLGx0KXwwLGk9TWF0aC5pbXVsKE4sY3QpLG49bitNYXRoLmltdWwoRCxodCl8MCxhPShhPWErTWF0aC5pbXVsKEQsZnQpfDApK01hdGguaW11bChSLGh0KXwwLGk9aStNYXRoLmltdWwoUixmdCl8MDt2YXIgT3Q9KGMrKG49bitNYXRoLmltdWwoTyxkdCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKE8sZ3QpfDApK01hdGguaW11bCh6LGR0KXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKHosZ3QpfDApKyhhPj4+MTMpfDApKyhPdD4+PjI2KXwwLE90Jj02NzEwODg2MyxuPU1hdGguaW11bChCLGh0KSxhPShhPU1hdGguaW11bChCLGZ0KSkrTWF0aC5pbXVsKE4saHQpfDAsaT1NYXRoLmltdWwoTixmdCk7dmFyIHp0PShjKyhuPW4rTWF0aC5pbXVsKEQsZHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChELGd0KXwwKStNYXRoLmltdWwoUixkdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChSLGd0KXwwKSsoYT4+PjEzKXwwKSsoenQ+Pj4yNil8MCx6dCY9NjcxMDg4NjM7dmFyIEl0PShjKyhuPU1hdGguaW11bChCLGR0KSl8MCkrKCg4MTkxJihhPShhPU1hdGguaW11bChCLGd0KSkrTWF0aC5pbXVsKE4sZHQpfDApKTw8MTMpfDA7cmV0dXJuIGM9KChpPU1hdGguaW11bChOLGd0KSkrKGE+Pj4xMyl8MCkrKEl0Pj4+MjYpfDAsSXQmPTY3MTA4ODYzLGxbMF09dnQsbFsxXT1tdCxsWzJdPXl0LGxbM109eHQsbFs0XT1idCxsWzVdPV90LGxbNl09d3QsbFs3XT1rdCxsWzhdPVR0LGxbOV09TXQsbFsxMF09QXQsbFsxMV09U3QsbFsxMl09RXQsbFsxM109THQsbFsxNF09Q3QsbFsxNV09UHQsbFsxNl09T3QsbFsxN109enQsbFsxOF09SXQsMCE9PWMmJihsWzE5XT1jLHIubGVuZ3RoKyspLHJ9O2Z1bmN0aW9uIGQodCxlLHIpe3JldHVybihuZXcgZykubXVscCh0LGUscil9ZnVuY3Rpb24gZyh0LGUpe3RoaXMueD10LHRoaXMueT1lfU1hdGguaW11bHx8KHA9ZiksaS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxlbmd0aCt0Lmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT10Lmxlbmd0aD9wKHRoaXMsdCxlKTpyPDYzP2YodGhpcyx0LGUpOnI8MTAyND9mdW5jdGlvbih0LGUscil7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmUsci5sZW5ndGg9dC5sZW5ndGgrZS5sZW5ndGg7Zm9yKHZhciBuPTAsYT0wLGk9MDtpPHIubGVuZ3RoLTE7aSsrKXt2YXIgbz1hO2E9MDtmb3IodmFyIHM9NjcxMDg4NjMmbixsPU1hdGgubWluKGksZS5sZW5ndGgtMSksYz1NYXRoLm1heCgwLGktdC5sZW5ndGgrMSk7Yzw9bDtjKyspe3ZhciB1PWktYyxoPSgwfHQud29yZHNbdV0pKigwfGUud29yZHNbY10pLGY9NjcxMDg4NjMmaDtzPTY3MTA4ODYzJihmPWYrc3wwKSxhKz0obz0obz1vKyhoLzY3MTA4ODY0fDApfDApKyhmPj4+MjYpfDApPj4+MjYsbyY9NjcxMDg4NjN9ci53b3Jkc1tpXT1zLG49byxvPWF9cmV0dXJuIDAhPT1uP3Iud29yZHNbaV09bjpyLmxlbmd0aC0tLHIuc3RyaXAoKX0odGhpcyx0LGUpOmQodGhpcyx0LGUpfSxnLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj1pLnByb3RvdHlwZS5fY291bnRCaXRzKHQpLTEsbj0wO248dDtuKyspZVtuXT10aGlzLnJldkJpbihuLHIsdCk7cmV0dXJuIGV9LGcucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbih0LGUscil7aWYoMD09PXR8fHQ9PT1yLTEpcmV0dXJuIHQ7Zm9yKHZhciBuPTAsYT0wO2E8ZTthKyspbnw9KDEmdCk8PGUtYS0xLHQ+Pj0xO3JldHVybiBufSxnLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtmb3IodmFyIG89MDtvPGk7bysrKW5bb109ZVt0W29dXSxhW29dPXJbdFtvXV19LGcucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUscixuLGEsaSl7dGhpcy5wZXJtdXRlKGksdCxlLHIsbixhKTtmb3IodmFyIG89MTtvPGE7bzw8PTEpZm9yKHZhciBzPW88PDEsbD1NYXRoLmNvcygyKk1hdGguUEkvcyksYz1NYXRoLnNpbigyKk1hdGguUEkvcyksdT0wO3U8YTt1Kz1zKWZvcih2YXIgaD1sLGY9YyxwPTA7cDxvO3ArKyl7dmFyIGQ9clt1K3BdLGc9blt1K3BdLHY9clt1K3Arb10sbT1uW3UrcCtvXSx5PWgqdi1mKm07bT1oKm0rZip2LHY9eSxyW3UrcF09ZCt2LG5bdStwXT1nK20sclt1K3Arb109ZC12LG5bdStwK29dPWctbSxwIT09cyYmKHk9bCpoLWMqZixmPWwqZitjKmgsaD15KX19LGcucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MXxNYXRoLm1heChlLHQpLG49MSZyLGE9MDtmb3Iocj1yLzJ8MDtyO3I+Pj49MSlhKys7cmV0dXJuIDE8PGErMStufSxnLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24odCxlLHIpe2lmKCEocjw9MSkpZm9yKHZhciBuPTA7bjxyLzI7bisrKXt2YXIgYT10W25dO3Rbbl09dFtyLW4tMV0sdFtyLW4tMV09YSxhPWVbbl0sZVtuXT0tZVtyLW4tMV0sZVtyLW4tMV09LWF9fSxnLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPTA7bjxlLzI7bisrKXt2YXIgYT04MTkyKk1hdGgucm91bmQodFsyKm4rMV0vZSkrTWF0aC5yb3VuZCh0WzIqbl0vZSkrcjt0W25dPTY3MTA4ODYzJmEscj1hPDY3MTA4ODY0PzA6YS82NzEwODg2NHwwfXJldHVybiB0fSxnLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHQsZSxyLGEpe2Zvcih2YXIgaT0wLG89MDtvPGU7bysrKWkrPTB8dFtvXSxyWzIqb109ODE5MSZpLGk+Pj49MTMsclsyKm8rMV09ODE5MSZpLGk+Pj49MTM7Zm9yKG89MiplO288YTsrK28pcltvXT0wO24oMD09PWkpLG4oMD09KC04MTkyJmkpKX0sZy5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09MDtyZXR1cm4gZX0sZy5wcm90b3R5cGUubXVscD1mdW5jdGlvbih0LGUscil7dmFyIG49Mip0aGlzLmd1ZXNzTGVuMTNiKHQubGVuZ3RoLGUubGVuZ3RoKSxhPXRoaXMubWFrZVJCVChuKSxpPXRoaXMuc3R1YihuKSxvPW5ldyBBcnJheShuKSxzPW5ldyBBcnJheShuKSxsPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKSx1PW5ldyBBcnJheShuKSxoPW5ldyBBcnJheShuKSxmPXIud29yZHM7Zi5sZW5ndGg9bix0aGlzLmNvbnZlcnQxM2IodC53b3Jkcyx0Lmxlbmd0aCxvLG4pLHRoaXMuY29udmVydDEzYihlLndvcmRzLGUubGVuZ3RoLGMsbiksdGhpcy50cmFuc2Zvcm0obyxpLHMsbCxuLGEpLHRoaXMudHJhbnNmb3JtKGMsaSx1LGgsbixhKTtmb3IodmFyIHA9MDtwPG47cCsrKXt2YXIgZD1zW3BdKnVbcF0tbFtwXSpoW3BdO2xbcF09c1twXSpoW3BdK2xbcF0qdVtwXSxzW3BdPWR9cmV0dXJuIHRoaXMuY29uanVnYXRlKHMsbCxuKSx0aGlzLnRyYW5zZm9ybShzLGwsZixpLG4sYSksdGhpcy5jb25qdWdhdGUoZixpLG4pLHRoaXMubm9ybWFsaXplMTNiKGYsbiksci5uZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVnYXRpdmUsci5sZW5ndGg9dC5sZW5ndGgrZS5sZW5ndGgsci5zdHJpcCgpfSxpLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGkobnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSx0aGlzLm11bFRvKHQsZSl9LGkucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGkobnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSxkKHRoaXMsdCxlKX0saS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHQsdGhpcyl9LGkucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpO2Zvcih2YXIgZT0wLHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl7dmFyIGE9KDB8dGhpcy53b3Jkc1tyXSkqdCxpPSg2NzEwODg2MyZhKSsoNjcxMDg4NjMmZSk7ZT4+PTI2LGUrPWEvNjcxMDg4NjR8MCxlKz1pPj4+MjYsdGhpcy53b3Jkc1tyXT02NzEwODg2MyZpfXJldHVybiAwIT09ZSYmKHRoaXMud29yZHNbcl09ZSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxpLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4odCl9LGkucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0saS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0saS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5iaXRMZW5ndGgoKSkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1yLzI2fDAsYT1yJTI2O2Vbcl09KHQud29yZHNbbl0mMTw8YSk+Pj5hfXJldHVybiBlfSh0KTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG5ldyBpKDEpO2Zvcih2YXIgcj10aGlzLG49MDtuPGUubGVuZ3RoJiYwPT09ZVtuXTtuKysscj1yLnNxcigpKTtpZigrK248ZS5sZW5ndGgpZm9yKHZhciBhPXIuc3FyKCk7bjxlLmxlbmd0aDtuKyssYT1hLnNxcigpKTAhPT1lW25dJiYocj1yLm11bChhKSk7cmV0dXJuIHJ9LGkucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih0KXtuKCJudW1iZXIiPT10eXBlb2YgdCYmdD49MCk7dmFyIGUscj10JTI2LGE9KHQtcikvMjYsaT02NzEwODg2Mz4+PjI2LXI8PDI2LXI7aWYoMCE9PXIpe3ZhciBvPTA7Zm9yKGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl7dmFyIHM9dGhpcy53b3Jkc1tlXSZpLGw9KDB8dGhpcy53b3Jkc1tlXSktczw8cjt0aGlzLndvcmRzW2VdPWx8byxvPXM+Pj4yNi1yfW8mJih0aGlzLndvcmRzW2VdPW8sdGhpcy5sZW5ndGgrKyl9aWYoMCE9PWEpe2ZvcihlPXRoaXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy53b3Jkc1tlK2FdPXRoaXMud29yZHNbZV07Zm9yKGU9MDtlPGE7ZSsrKXRoaXMud29yZHNbZV09MDt0aGlzLmxlbmd0aCs9YX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4odCl9LGkucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbih0LGUscil7dmFyIGE7bigibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTApLGE9ZT8oZS1lJTI2KS8yNjowO3ZhciBpPXQlMjYsbz1NYXRoLm1pbigodC1pKS8yNix0aGlzLmxlbmd0aCkscz02NzEwODg2M142NzEwODg2Mz4+Pmk8PGksbD1yO2lmKGEtPW8sYT1NYXRoLm1heCgwLGEpLGwpe2Zvcih2YXIgYz0wO2M8bztjKyspbC53b3Jkc1tjXT10aGlzLndvcmRzW2NdO2wubGVuZ3RoPW99aWYoMD09PW8pO2Vsc2UgaWYodGhpcy5sZW5ndGg+bylmb3IodGhpcy5sZW5ndGgtPW8sYz0wO2M8dGhpcy5sZW5ndGg7YysrKXRoaXMud29yZHNbY109dGhpcy53b3Jkc1tjK29dO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIHU9MDtmb3IoYz10aGlzLmxlbmd0aC0xO2M+PTAmJigwIT09dXx8Yz49YSk7Yy0tKXt2YXIgaD0wfHRoaXMud29yZHNbY107dGhpcy53b3Jkc1tjXT11PDwyNi1pfGg+Pj5pLHU9aCZzfXJldHVybiBsJiYwIT09dSYmKGwud29yZHNbbC5sZW5ndGgrK109dSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybih0LGUscil9LGkucHJvdG90eXBlLnNobG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbih0KX0saS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4odCl9LGkucHJvdG90eXBlLnNocm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybih0KX0saS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4odCl9LGkucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LHI9KHQtZSkvMjYsYT0xPDxlO3JldHVybiEodGhpcy5sZW5ndGg8PXIpJiYhISh0aGlzLndvcmRzW3JdJmEpfSxpLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24odCl7bigibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTApO3ZhciBlPXQlMjYscj0odC1lKS8yNjtpZihuKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9cilyZXR1cm4gdGhpcztpZigwIT09ZSYmcisrLHRoaXMubGVuZ3RoPU1hdGgubWluKHIsdGhpcy5sZW5ndGgpLDAhPT1lKXt2YXIgYT02NzEwODg2M142NzEwODg2Mz4+PmU8PGU7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9YX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbih0KX0saS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24odCl7cmV0dXJuIG4oIm51bWJlciI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpLHQ8MD90aGlzLmlzdWJuKC10KTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPHQ/KHRoaXMud29yZHNbMF09dC0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKHQpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbih0KX0saS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKHQpe3RoaXMud29yZHNbMF0rPXQ7Zm9yKHZhciBlPTA7ZTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tlXT49NjcxMDg4NjQ7ZSsrKXRoaXMud29yZHNbZV0tPTY3MTA4ODY0LGU9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbZSsxXT0xOnRoaXMud29yZHNbZSsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxlKzEpLHRoaXN9LGkucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKHQpe2lmKG4oIm51bWJlciI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpLHQ8MClyZXR1cm4gdGhpcy5pYWRkbigtdCk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHQpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPXQsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2VdPDA7ZSsrKXRoaXMud29yZHNbZV0rPTY3MTA4ODY0LHRoaXMud29yZHNbZSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4odCl9LGkucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih0KX0saS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30saS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LGkucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih0LGUscil7dmFyIGEsaSxvPXQubGVuZ3RoK3I7dGhpcy5fZXhwYW5kKG8pO3ZhciBzPTA7Zm9yKGE9MDthPHQubGVuZ3RoO2ErKyl7aT0oMHx0aGlzLndvcmRzW2Ercl0pK3M7dmFyIGw9KDB8dC53b3Jkc1thXSkqZTtzPSgoaS09NjcxMDg4NjMmbCk+PjI2KS0obC82NzEwODg2NHwwKSx0aGlzLndvcmRzW2Ercl09NjcxMDg4NjMmaX1mb3IoO2E8dGhpcy5sZW5ndGgtcjthKyspcz0oaT0oMHx0aGlzLndvcmRzW2Ercl0pK3MpPj4yNix0aGlzLndvcmRzW2Ercl09NjcxMDg4NjMmaTtpZigwPT09cylyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihuKC0xPT09cykscz0wLGE9MDthPHRoaXMubGVuZ3RoO2ErKylzPShpPS0oMHx0aGlzLndvcmRzW2FdKStzKT4+MjYsdGhpcy53b3Jkc1thXT02NzEwODg2MyZpO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih0LGUpe3ZhciByPSh0aGlzLmxlbmd0aCx0Lmxlbmd0aCksbj10aGlzLmNsb25lKCksYT10LG89MHxhLndvcmRzW2EubGVuZ3RoLTFdOzAhPT0ocj0yNi10aGlzLl9jb3VudEJpdHMobykpJiYoYT1hLnVzaGxuKHIpLG4uaXVzaGxuKHIpLG89MHxhLndvcmRzW2EubGVuZ3RoLTFdKTt2YXIgcyxsPW4ubGVuZ3RoLWEubGVuZ3RoO2lmKCJtb2QiIT09ZSl7KHM9bmV3IGkobnVsbCkpLmxlbmd0aD1sKzEscy53b3Jkcz1uZXcgQXJyYXkocy5sZW5ndGgpO2Zvcih2YXIgYz0wO2M8cy5sZW5ndGg7YysrKXMud29yZHNbY109MH12YXIgdT1uLmNsb25lKCkuX2lzaGxuc3VibXVsKGEsMSxsKTswPT09dS5uZWdhdGl2ZSYmKG49dSxzJiYocy53b3Jkc1tsXT0xKSk7Zm9yKHZhciBoPWwtMTtoPj0wO2gtLSl7dmFyIGY9NjcxMDg4NjQqKDB8bi53b3Jkc1thLmxlbmd0aCtoXSkrKDB8bi53b3Jkc1thLmxlbmd0aCtoLTFdKTtmb3IoZj1NYXRoLm1pbihmL298MCw2NzEwODg2Myksbi5faXNobG5zdWJtdWwoYSxmLGgpOzAhPT1uLm5lZ2F0aXZlOylmLS0sbi5uZWdhdGl2ZT0wLG4uX2lzaGxuc3VibXVsKGEsMSxoKSxuLmlzWmVybygpfHwobi5uZWdhdGl2ZV49MSk7cyYmKHMud29yZHNbaF09Zil9cmV0dXJuIHMmJnMuc3RyaXAoKSxuLnN0cmlwKCksImRpdiIhPT1lJiYwIT09ciYmbi5pdXNocm4ocikse2RpdjpzfHxudWxsLG1vZDpufX0saS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbighdC5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBpKDApLG1vZDpuZXcgaSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT10Lm5lZ2F0aXZlPyhzPXRoaXMubmVnKCkuZGl2bW9kKHQsZSksIm1vZCIhPT1lJiYoYT1zLmRpdi5uZWcoKSksImRpdiIhPT1lJiYobz1zLm1vZC5uZWcoKSxyJiYwIT09by5uZWdhdGl2ZSYmby5pYWRkKHQpKSx7ZGl2OmEsbW9kOm99KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXQubmVnYXRpdmU/KHM9dGhpcy5kaXZtb2QodC5uZWcoKSxlKSwibW9kIiE9PWUmJihhPXMuZGl2Lm5lZygpKSx7ZGl2OmEsbW9kOnMubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmdC5uZWdhdGl2ZSk/KHM9dGhpcy5uZWcoKS5kaXZtb2QodC5uZWcoKSxlKSwiZGl2IiE9PWUmJihvPXMubW9kLm5lZygpLHImJjAhPT1vLm5lZ2F0aXZlJiZvLmlzdWIodCkpLHtkaXY6cy5kaXYsbW9kOm99KTp0Lmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAodCk8MD97ZGl2Om5ldyBpKDApLG1vZDp0aGlzfToxPT09dC5sZW5ndGg/ImRpdiI9PT1lP3tkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PWU/e2RpdjpudWxsLG1vZDpuZXcgaSh0aGlzLm1vZG4odC53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bih0LndvcmRzWzBdKSxtb2Q6bmV3IGkodGhpcy5tb2RuKHQud29yZHNbMF0pKX06dGhpcy5fd29yZERpdih0LGUpO3ZhciBhLG8sc30saS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpdm1vZCh0LCJkaXYiLCExKS5kaXZ9LGkucHJvdG90eXBlLm1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCwibW9kIiwhMSkubW9kfSxpLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpdm1vZCh0LCJtb2QiLCEwKS5tb2R9LGkucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGl2bW9kKHQpO2lmKGUubW9kLmlzWmVybygpKXJldHVybiBlLmRpdjt2YXIgcj0wIT09ZS5kaXYubmVnYXRpdmU/ZS5tb2QuaXN1Yih0KTplLm1vZCxuPXQudXNocm4oMSksYT10LmFuZGxuKDEpLGk9ci5jbXAobik7cmV0dXJuIGk8MHx8MT09PWEmJjA9PT1pP2UuZGl2OjAhPT1lLmRpdi5uZWdhdGl2ZT9lLmRpdi5pc3VibigxKTplLmRpdi5pYWRkbigxKX0saS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbih0KXtuKHQ8PTY3MTA4ODYzKTtmb3IodmFyIGU9KDE8PDI2KSV0LHI9MCxhPXRoaXMubGVuZ3RoLTE7YT49MDthLS0pcj0oZSpyKygwfHRoaXMud29yZHNbYV0pKSV0O3JldHVybiByfSxpLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbih0KXtuKHQ8PTY3MTA4ODYzKTtmb3IodmFyIGU9MCxyPXRoaXMubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciBhPSgwfHRoaXMud29yZHNbcl0pKzY3MTA4ODY0KmU7dGhpcy53b3Jkc1tyXT1hL3R8MCxlPWEldH1yZXR1cm4gdGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4odCl9LGkucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24odCl7bigwPT09dC5uZWdhdGl2ZSksbighdC5pc1plcm8oKSk7dmFyIGU9dGhpcyxyPXQuY2xvbmUoKTtlPTAhPT1lLm5lZ2F0aXZlP2UudW1vZCh0KTplLmNsb25lKCk7Zm9yKHZhciBhPW5ldyBpKDEpLG89bmV3IGkoMCkscz1uZXcgaSgwKSxsPW5ldyBpKDEpLGM9MDtlLmlzRXZlbigpJiZyLmlzRXZlbigpOyllLml1c2hybigxKSxyLml1c2hybigxKSwrK2M7Zm9yKHZhciB1PXIuY2xvbmUoKSxoPWUuY2xvbmUoKTshZS5pc1plcm8oKTspe2Zvcih2YXIgZj0wLHA9MTswPT0oZS53b3Jkc1swXSZwKSYmZjwyNjsrK2YscDw8PTEpO2lmKGY+MClmb3IoZS5pdXNocm4oZik7Zi0tID4wOykoYS5pc09kZCgpfHxvLmlzT2RkKCkpJiYoYS5pYWRkKHUpLG8uaXN1YihoKSksYS5pdXNocm4oMSksby5pdXNocm4oMSk7Zm9yKHZhciBkPTAsZz0xOzA9PShyLndvcmRzWzBdJmcpJiZkPDI2OysrZCxnPDw9MSk7aWYoZD4wKWZvcihyLml1c2hybihkKTtkLS0gPjA7KShzLmlzT2RkKCl8fGwuaXNPZGQoKSkmJihzLmlhZGQodSksbC5pc3ViKGgpKSxzLml1c2hybigxKSxsLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGEuaXN1YihzKSxvLmlzdWIobCkpOihyLmlzdWIoZSkscy5pc3ViKGEpLGwuaXN1YihvKSl9cmV0dXJue2E6cyxiOmwsZ2NkOnIuaXVzaGxuKGMpfX0saS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgYSxvPW5ldyBpKDEpLHM9bmV3IGkoMCksbD1yLmNsb25lKCk7ZS5jbXBuKDEpPjAmJnIuY21wbigxKT4wOyl7Zm9yKHZhciBjPTAsdT0xOzA9PShlLndvcmRzWzBdJnUpJiZjPDI2OysrYyx1PDw9MSk7aWYoYz4wKWZvcihlLml1c2hybihjKTtjLS0gPjA7KW8uaXNPZGQoKSYmby5pYWRkKGwpLG8uaXVzaHJuKDEpO2Zvcih2YXIgaD0wLGY9MTswPT0oci53b3Jkc1swXSZmKSYmaDwyNjsrK2gsZjw8PTEpO2lmKGg+MClmb3Ioci5pdXNocm4oaCk7aC0tID4wOylzLmlzT2RkKCkmJnMuaWFkZChsKSxzLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLG8uaXN1YihzKSk6KHIuaXN1YihlKSxzLmlzdWIobykpfXJldHVybihhPTA9PT1lLmNtcG4oMSk/bzpzKS5jbXBuKDApPDAmJmEuaWFkZCh0KSxhfSxpLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24odCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gdC5hYnMoKTtpZih0LmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBlPXRoaXMuY2xvbmUoKSxyPXQuY2xvbmUoKTtlLm5lZ2F0aXZlPTAsci5uZWdhdGl2ZT0wO2Zvcih2YXIgbj0wO2UuaXNFdmVuKCkmJnIuaXNFdmVuKCk7bisrKWUuaXVzaHJuKDEpLHIuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtlLmlzRXZlbigpOyllLml1c2hybigxKTtmb3IoO3IuaXNFdmVuKCk7KXIuaXVzaHJuKDEpO3ZhciBhPWUuY21wKHIpO2lmKGE8MCl7dmFyIGk9ZTtlPXIscj1pfWVsc2UgaWYoMD09PWF8fDA9PT1yLmNtcG4oMSkpYnJlYWs7ZS5pc3ViKHIpfXJldHVybiByLml1c2hsbihuKX0saS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lZ2NkKHQpLmEudW1vZCh0KX0saS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxpLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0saS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud29yZHNbMF0mdH0saS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24odCl7bigibnVtYmVyIj09dHlwZW9mIHQpO3ZhciBlPXQlMjYscj0odC1lKS8yNixhPTE8PGU7aWYodGhpcy5sZW5ndGg8PXIpcmV0dXJuIHRoaXMuX2V4cGFuZChyKzEpLHRoaXMud29yZHNbcl18PWEsdGhpcztmb3IodmFyIGk9YSxvPXI7MCE9PWkmJm88dGhpcy5sZW5ndGg7bysrKXt2YXIgcz0wfHRoaXMud29yZHNbb107aT0ocys9aSk+Pj4yNixzJj02NzEwODg2Myx0aGlzLndvcmRzW29dPXN9cmV0dXJuIDAhPT1pJiYodGhpcy53b3Jkc1tvXT1pLHRoaXMubGVuZ3RoKyspLHRoaXN9LGkucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxpLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dDwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhcilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmcilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSllPTE7ZWxzZXtyJiYodD0tdCksbih0PD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgYT0wfHRoaXMud29yZHNbMF07ZT1hPT09dD8wOmE8dD8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1lOmV9LGkucHJvdG90eXBlLmNtcD1mdW5jdGlvbih0KXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXQubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT10Lm5lZ2F0aXZlKXJldHVybiAxO3ZhciBlPXRoaXMudWNtcCh0KTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtZTplfSxpLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKHQpe2lmKHRoaXMubGVuZ3RoPnQubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPHQubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgZT0wLHI9dGhpcy5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIG49MHx0aGlzLndvcmRzW3JdLGE9MHx0LndvcmRzW3JdO2lmKG4hPT1hKXtuPGE/ZT0tMTpuPmEmJihlPTEpO2JyZWFrfX1yZXR1cm4gZX0saS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dGhpcy5jbXBuKHQpfSxpLnByb3RvdHlwZS5ndD1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXRoaXMuY21wKHQpfSxpLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcG4odCk+PTB9LGkucHJvdG90eXBlLmd0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXAodCk+PTB9LGkucHJvdG90eXBlLmx0bj1mdW5jdGlvbih0KXtyZXR1cm4tMT09PXRoaXMuY21wbih0KX0saS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24odCl7cmV0dXJuLTE9PT10aGlzLmNtcCh0KX0saS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXBuKHQpPD0wfSxpLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQpPD0wfSxpLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10aGlzLmNtcG4odCl9LGkucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5jbXAodCl9LGkucmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdyh0KX0saS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksbigwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx0LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQodCl9LGkucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxpLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVkPXQsdGhpc30saS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQodCl9LGkucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLHQpfSxpLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyx0KX0saS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsdCl9LGkucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLHQpfSxpLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyx0KX0saS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5tdWwodGhpcyx0KX0saS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsdCksdGhpcy5yZWQuaW11bCh0aGlzLHQpfSxpLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0saS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LGkucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxpLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0saS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LGkucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCYmIXQucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLHQpfTt2YXIgdj17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIG0odCxlKXt0aGlzLm5hbWU9dCx0aGlzLnA9bmV3IGkoZSwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IGkoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIHkoKXttLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24geCgpe20uY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7bS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIF8oKXttLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gdyh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPWkuX3ByaW1lKHQpO3RoaXMubT1lLnAsdGhpcy5wcmltZT1lfWVsc2Ugbih0Lmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPXQsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGsodCl7dy5jYWxsKHRoaXMsdCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgaSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1tLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGkobnVsbCk7cmV0dXJuIHQud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSx0fSxtLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dDtkb3t0aGlzLnNwbGl0KHIsdGhpcy50bXApLGU9KHI9KHI9dGhpcy5pbXVsSyhyKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKGU+dGhpcy5uKTt2YXIgbj1lPHRoaXMubj8tMTpyLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PW4/KHIud29yZHNbMF09MCxyLmxlbmd0aD0xKTpuPjA/ci5pc3ViKHRoaXMucCk6ci5zdHJpcCgpLHJ9LG0ucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHQsZSl7dC5pdXNocm4odGhpcy5uLDAsZSl9LG0ucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHQpe3JldHVybiB0LmltdWwodGhpcy5rKX0sYSh5LG0pLHkucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPU1hdGgubWluKHQubGVuZ3RoLDkpLG49MDtuPHI7bisrKWUud29yZHNbbl09dC53b3Jkc1tuXTtpZihlLmxlbmd0aD1yLHQubGVuZ3RoPD05KXJldHVybiB0LndvcmRzWzBdPTAsdm9pZCh0Lmxlbmd0aD0xKTt2YXIgYT10LndvcmRzWzldO2ZvcihlLndvcmRzW2UubGVuZ3RoKytdPTQxOTQzMDMmYSxuPTEwO248dC5sZW5ndGg7bisrKXt2YXIgaT0wfHQud29yZHNbbl07dC53b3Jkc1tuLTEwXT0oNDE5NDMwMyZpKTw8NHxhPj4+MjIsYT1pfWE+Pj49MjIsdC53b3Jkc1tuLTEwXT1hLDA9PT1hJiZ0Lmxlbmd0aD4xMD90Lmxlbmd0aC09MTA6dC5sZW5ndGgtPTl9LHkucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHQpe3Qud29yZHNbdC5sZW5ndGhdPTAsdC53b3Jkc1t0Lmxlbmd0aCsxXT0wLHQubGVuZ3RoKz0yO2Zvcih2YXIgZT0wLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49MHx0LndvcmRzW3JdO2UrPTk3NypuLHQud29yZHNbcl09NjcxMDg4NjMmZSxlPTY0Km4rKGUvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT10LndvcmRzW3QubGVuZ3RoLTFdJiYodC5sZW5ndGgtLSwwPT09dC53b3Jkc1t0Lmxlbmd0aC0xXSYmdC5sZW5ndGgtLSksdH0sYSh4LG0pLGEoYixtKSxhKF8sbSksXy5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj0xOSooMHx0LndvcmRzW3JdKStlLGE9NjcxMDg4NjMmbjtuPj4+PTI2LHQud29yZHNbcl09YSxlPW59cmV0dXJuIDAhPT1lJiYodC53b3Jkc1t0Lmxlbmd0aCsrXT1lKSx0fSxpLl9wcmltZT1mdW5jdGlvbih0KXtpZih2W3RdKXJldHVybiB2W3RdO3ZhciBlO2lmKCJrMjU2Ij09PXQpZT1uZXcgeTtlbHNlIGlmKCJwMjI0Ij09PXQpZT1uZXcgeDtlbHNlIGlmKCJwMTkyIj09PXQpZT1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09dCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIit0KTtlPW5ldyBffXJldHVybiB2W3RdPWUsZX0sdy5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24odCl7bigwPT09dC5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxuKHQucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LHcucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKHQsZSl7bigwPT0odC5uZWdhdGl2ZXxlLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxuKHQucmVkJiZ0LnJlZD09PWUucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LHcucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKHQpLl9mb3JjZVJlZCh0aGlzKTp0LnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LHcucHJvdG90eXBlLm5lZz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc1plcm8oKT90LmNsb25lKCk6dGhpcy5tLnN1Yih0KS5fZm9yY2VSZWQodGhpcyl9LHcucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmFkZChlKTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LHcucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5pYWRkKGUpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyfSx3LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5zdWIoZSk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sdy5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmlzdWIoZSk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyfSx3LnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh0KSx0aGlzLmltb2QodC51c2hsbihlKSl9LHcucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih0LGUpLHRoaXMuaW1vZCh0LmltdWwoZSkpfSx3LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih0LGUpLHRoaXMuaW1vZCh0Lm11bChlKSl9LHcucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW11bCh0LHQuY2xvbmUoKSl9LHcucHJvdG90eXBlLnNxcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tdWwodCx0KX0sdy5wcm90b3R5cGUuc3FydD1mdW5jdGlvbih0KXtpZih0LmlzWmVybygpKXJldHVybiB0LmNsb25lKCk7dmFyIGU9dGhpcy5tLmFuZGxuKDMpO2lmKG4oZSUyPT0xKSwzPT09ZSl7dmFyIHI9dGhpcy5tLmFkZChuZXcgaSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyh0LHIpfWZvcih2YXIgYT10aGlzLm0uc3VibigxKSxvPTA7IWEuaXNaZXJvKCkmJjA9PT1hLmFuZGxuKDEpOylvKyssYS5pdXNocm4oMSk7bighYS5pc1plcm8oKSk7dmFyIHM9bmV3IGkoMSkudG9SZWQodGhpcyksbD1zLnJlZE5lZygpLGM9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLHU9dGhpcy5tLmJpdExlbmd0aCgpO2Zvcih1PW5ldyBpKDIqdSp1KS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3codSxjKS5jbXAobCk7KXUucmVkSUFkZChsKTtmb3IodmFyIGg9dGhpcy5wb3codSxhKSxmPXRoaXMucG93KHQsYS5hZGRuKDEpLml1c2hybigxKSkscD10aGlzLnBvdyh0LGEpLGQ9bzswIT09cC5jbXAocyk7KXtmb3IodmFyIGc9cCx2PTA7MCE9PWcuY21wKHMpO3YrKylnPWcucmVkU3FyKCk7bih2PGQpO3ZhciBtPXRoaXMucG93KGgsbmV3IGkoMSkuaXVzaGxuKGQtdi0xKSk7Zj1mLnJlZE11bChtKSxoPW0ucmVkU3FyKCkscD1wLnJlZE11bChoKSxkPXZ9cmV0dXJuIGZ9LHcucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7dmFyIGU9dC5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PWUubmVnYXRpdmU/KGUubmVnYXRpdmU9MCx0aGlzLmltb2QoZSkucmVkTmVnKCkpOnRoaXMuaW1vZChlKX0sdy5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHQsZSl7aWYoZS5pc1plcm8oKSlyZXR1cm4gbmV3IGkoMSkudG9SZWQodGhpcyk7aWYoMD09PWUuY21wbigxKSlyZXR1cm4gdC5jbG9uZSgpO3ZhciByPW5ldyBBcnJheSgxNik7clswXT1uZXcgaSgxKS50b1JlZCh0aGlzKSxyWzFdPXQ7Zm9yKHZhciBuPTI7bjxyLmxlbmd0aDtuKyspcltuXT10aGlzLm11bChyW24tMV0sdCk7dmFyIGE9clswXSxvPTAscz0wLGw9ZS5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PWwmJihsPTI2KSxuPWUubGVuZ3RoLTE7bj49MDtuLS0pe2Zvcih2YXIgYz1lLndvcmRzW25dLHU9bC0xO3U+PTA7dS0tKXt2YXIgaD1jPj51JjE7YSE9PXJbMF0mJihhPXRoaXMuc3FyKGEpKSwwIT09aHx8MCE9PW8/KG88PD0xLG98PWgsKDQ9PT0rK3N8fDA9PT1uJiYwPT09dSkmJihhPXRoaXMubXVsKGEscltvXSkscz0wLG89MCkpOnM9MH1sPTI2fXJldHVybiBhfSx3LnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24odCl7dmFyIGU9dC51bW9kKHRoaXMubSk7cmV0dXJuIGU9PT10P2UuY2xvbmUoKTplfSx3LnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih0KXt2YXIgZT10LmNsb25lKCk7cmV0dXJuIGUucmVkPW51bGwsZX0saS5tb250PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgayh0KX0sYShrLHcpLGsucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbW9kKHQudXNobG4odGhpcy5zaGlmdCkpfSxrLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmltb2QodC5tdWwodGhpcy5yaW52KSk7cmV0dXJuIGUucmVkPW51bGwsZX0say5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0LGUpe2lmKHQuaXNaZXJvKCl8fGUuaXNaZXJvKCkpcmV0dXJuIHQud29yZHNbMF09MCx0Lmxlbmd0aD0xLHQ7dmFyIHI9dC5pbXVsKGUpLG49ci5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksYT1yLmlzdWIobikuaXVzaHJuKHRoaXMuc2hpZnQpLGk9YTtyZXR1cm4gYS5jbXAodGhpcy5tKT49MD9pPWEuaXN1Yih0aGlzLm0pOmEuY21wbigwKTwwJiYoaT1hLmlhZGQodGhpcy5tKSksaS5fZm9yY2VSZWQodGhpcyl9LGsucHJvdG90eXBlLm11bD1mdW5jdGlvbih0LGUpe2lmKHQuaXNaZXJvKCl8fGUuaXNaZXJvKCkpcmV0dXJuIG5ldyBpKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgcj10Lm11bChlKSxuPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGE9ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxvPWE7cmV0dXJuIGEuY21wKHRoaXMubSk+PTA/bz1hLmlzdWIodGhpcy5tKTphLmNtcG4oMCk8MCYmKG89YS5pYWRkKHRoaXMubSkpLG8uX2ZvcmNlUmVkKHRoaXMpfSxrLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmltb2QodC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KCJ1bmRlZmluZWQiPT10eXBlb2YgZXx8ZSx0aGlzKX0se2J1ZmZlcjoxMDV9XSw5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixuLGE9dC5sZW5ndGgsaT0wO2ZvcihlPTA7ZTxhOysrZSlpKz10W2VdLmxlbmd0aDt2YXIgbz1uZXcgQXJyYXkoaSkscz0wO2ZvcihlPTA7ZTxhOysrZSl7dmFyIGw9dFtlXSxjPWwubGVuZ3RoO2ZvcihyPTA7cjxjOysrcil7dmFyIHU9b1tzKytdPW5ldyBBcnJheShjLTEpLGg9MDtmb3Iobj0wO248YzsrK24pbiE9PXImJih1W2grK109bFtuXSk7aWYoMSZyKXt2YXIgZj11WzFdO3VbMV09dVswXSx1WzBdPWZ9fX1yZXR1cm4gb319LHt9XSw5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIG49W10sYyhhPXQsYSx1LCEwKSxuO2Nhc2UgMjpyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9jKHQsdCxlLCEwKTpmdW5jdGlvbih0LGUpe3JldHVybiBuPVtdLGModCxlLHUsITEpLG59KHQsZSk7Y2FzZSAzOnJldHVybiBjKHQsZSxyLCExKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiYm94LWludGVyc2VjdDogSW52YWxpZCBhcmd1bWVudHMiKX12YXIgYX07dmFyIG4sYT10KCJ0eXBlZGFycmF5LXBvb2wiKSxpPXQoIi4vbGliL3N3ZWVwIiksbz10KCIuL2xpYi9pbnRlcnNlY3QiKTtmdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciByPTA7cjx0OysrcilpZighKGVbcl08PWVbcit0XSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbCh0LGUscixuKXtmb3IodmFyIGE9MCxpPTAsbz0wLGw9dC5sZW5ndGg7bzxsOysrbyl7dmFyIGM9dFtvXTtpZighcyhlLGMpKXtmb3IodmFyIHU9MDt1PDIqZTsrK3UpclthKytdPWNbdV07bltpKytdPW99fXJldHVybiBpfWZ1bmN0aW9uIGModCxlLHIsbil7dmFyIHM9dC5sZW5ndGgsYz1lLmxlbmd0aDtpZighKHM8PTB8fGM8PTApKXt2YXIgdT10WzBdLmxlbmd0aD4+PjE7aWYoISh1PD0wKSl7dmFyIGgsZj1hLm1hbGxvY0RvdWJsZSgyKnUqcykscD1hLm1hbGxvY0ludDMyKHMpO2lmKChzPWwodCx1LGYscCkpPjApe2lmKDE9PT11JiZuKWkuaW5pdChzKSxoPWkuc3dlZXBDb21wbGV0ZSh1LHIsMCxzLGYscCwwLHMsZixwKTtlbHNle3ZhciBkPWEubWFsbG9jRG91YmxlKDIqdSpjKSxnPWEubWFsbG9jSW50MzIoYyk7KGM9bChlLHUsZCxnKSk+MCYmKGkuaW5pdChzK2MpLGg9MT09PXU/aS5zd2VlcEJpcGFydGl0ZSh1LHIsMCxzLGYscCwwLGMsZCxnKTpvKHUscixuLHMsZixwLGMsZCxnKSxhLmZyZWUoZCksYS5mcmVlKGcpKX1hLmZyZWUoZiksYS5mcmVlKHApfXJldHVybiBofX19ZnVuY3Rpb24gdSh0LGUpe24ucHVzaChbdCxlXSl9fSx7Ii4vbGliL2ludGVyc2VjdCI6MTAwLCIuL2xpYi9zd2VlcCI6MTA0LCJ0eXBlZGFycmF5LXBvb2wiOjU0NH1dLDk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPSJkIixhPSJheCIsaT0idnYiLG89ImZwIixzPSJlcyIsbD0icnMiLGM9InJlIix1PSJyYiIsaD0icmkiLGY9InJwIixwPSJicyIsZD0iYmUiLGc9ImJiIix2PSJiaSIsbT0iYnAiLHk9InJ2Iix4PSJRIixiPVtuLGEsaSxsLGMsdSxoLHAsZCxnLHZdO2Z1bmN0aW9uIF8odCl7dmFyIGU9ImJydXRlRm9yY2UiKyh0PyJGdWxsIjoiUGFydGlhbCIpLHI9W10sXz1iLnNsaWNlKCk7dHx8Xy5zcGxpY2UoMywwLG8pO3ZhciB3PVsiZnVuY3Rpb24gIitlKyIoIitfLmpvaW4oKSsiKXsiXTtmdW5jdGlvbiBrKGUsbyl7dmFyIF89ZnVuY3Rpb24odCxlLHIpe3ZhciBvPSJicnV0ZUZvcmNlIisodD8iUmVkIjoiQmx1ZSIpKyhlPyJGbGlwIjoiIikrKHI/IkZ1bGwiOiIiKSxfPVsiZnVuY3Rpb24gIixvLCIoIixiLmpvaW4oKSwiKXsiLCJ2YXIgIixzLCI9MioiLG4sIjsiXSx3PSJmb3IodmFyIGk9IitsKyIsIitmKyI9IitzKyIqIitsKyI7aTwiK2MrIjsrK2ksIitmKyIrPSIrcysiKXt2YXIgeDA9Iit1KyJbIithKyIrIitmKyJdLHgxPSIrdSsiWyIrYSsiKyIrZisiKyIrbisiXSx4aT0iK2grIltpXTsiLGs9ImZvcih2YXIgaj0iK3ArIiwiK20rIj0iK3MrIioiK3ArIjtqPCIrZCsiOysraiwiK20rIis9IitzKyIpe3ZhciB5MD0iK2crIlsiK2ErIisiK20rIl0sIisocj8ieTE9IitnKyJbIithKyIrIittKyIrIituKyJdLCI6IiIpKyJ5aT0iK3YrIltqXTsiO3JldHVybiB0P18ucHVzaCh3LHgsIjoiLGspOl8ucHVzaChrLHgsIjoiLHcpLHI/Xy5wdXNoKCJpZih5MTx4MHx8eDE8eTApY29udGludWU7Iik6ZT9fLnB1c2goImlmKHkwPD14MHx8eDE8eTApY29udGludWU7Iik6Xy5wdXNoKCJpZih5MDx4MHx8eDE8eTApY29udGludWU7IiksXy5wdXNoKCJmb3IodmFyIGs9IithKyIrMTtrPCIrbisiOysrayl7dmFyIHIwPSIrdSsiW2srIitmKyJdLHIxPSIrdSsiW2srIituKyIrIitmKyJdLGIwPSIrZysiW2srIittKyJdLGIxPSIrZysiW2srIituKyIrIittKyJdO2lmKHIxPGIwfHxiMTxyMCljb250aW51ZSAiK3grIjt9dmFyICIreSsiPSIraSsiKCIpLGU/Xy5wdXNoKCJ5aSx4aSIpOl8ucHVzaCgieGkseWkiKSxfLnB1c2goIik7aWYoIit5KyIhPT12b2lkIDApcmV0dXJuICIreSsiO319fSIpLHtuYW1lOm8sY29kZTpfLmpvaW4oIiIpfX0oZSxvLHQpO3IucHVzaChfLmNvZGUpLHcucHVzaCgicmV0dXJuICIrXy5uYW1lKyIoIitiLmpvaW4oKSsiKTsiKX13LnB1c2goImlmKCIrYysiLSIrbCsiPiIrZCsiLSIrcCsiKXsiKSx0PyhrKCEwLCExKSx3LnB1c2goIn1lbHNleyIpLGsoITEsITEpKToody5wdXNoKCJpZigiK28rIil7IiksayghMCwhMCksdy5wdXNoKCJ9ZWxzZXsiKSxrKCEwLCExKSx3LnB1c2goIn19ZWxzZXtpZigiK28rIil7IiksayghMSwhMCksdy5wdXNoKCJ9ZWxzZXsiKSxrKCExLCExKSx3LnB1c2goIn0iKSksdy5wdXNoKCJ9fXJldHVybiAiK2UpO3ZhciBUPXIuam9pbigiIikrdy5qb2luKCIiKTtyZXR1cm4gbmV3IEZ1bmN0aW9uKFQpKCl9ci5wYXJ0aWFsPV8oITEpLHIuZnVsbD1fKCEwKX0se31dLDEwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSx1LFMsRSxMLEMpeyFmdW5jdGlvbih0LGUpe3ZhciByPTgqYS5sb2cyKGUrMSkqKHQrMSl8MCxpPWEubmV4dFBvdzIoYipyKTt3Lmxlbmd0aDxpJiYobi5mcmVlKHcpLHc9bi5tYWxsb2NJbnQzMihpKSk7dmFyIG89YS5uZXh0UG93MihfKnIpO2s8byYmKG4uZnJlZShrKSxrPW4ubWFsbG9jRG91YmxlKG8pKX0odCxpK0UpO3ZhciBQLE89MCx6PTIqdDtUKE8rKywwLDAsaSwwLEUscj8xNjowLC0xLzAsMS8wKSxyfHxUKE8rKywwLDAsRSwwLGksMSwtMS8wLDEvMCk7Zm9yKDtPPjA7KXt2YXIgST0oTy09MSkqYixEPXdbSV0sUj13W0krMV0sRj13W0krMl0sQj13W0krM10sTj13W0krNF0saj13W0krNV0sVj1PKl8sVT1rW1ZdLHE9a1tWKzFdLEg9MSZqLEc9ISEoMTYmaiksWT11LFc9UyxYPUwsWj1DO2lmKEgmJihZPUwsVz1DLFg9dSxaPVMpLCEoMiZqJiYoRj12KHQsRCxSLEYsWSxXLHEpLFI+PUYpfHw0JmomJihSPW0odCxELFIsRixZLFcsVSkpPj1GKSl7dmFyIEo9Ri1SLEs9Ti1CO2lmKEcpe2lmKHQqSiooSitLKTxwKXtpZih2b2lkIDAhPT0oUD1sLnNjYW5Db21wbGV0ZSh0LEQsZSxSLEYsWSxXLEIsTixYLFopKSlyZXR1cm4gUDtjb250aW51ZX19ZWxzZXtpZih0Kk1hdGgubWluKEosSyk8aCl7aWYodm9pZCAwIT09KFA9byh0LEQsZSxILFIsRixZLFcsQixOLFgsWikpKXJldHVybiBQO2NvbnRpbnVlfWlmKHQqSipLPGYpe2lmKHZvaWQgMCE9PShQPWwuc2NhbkJpcGFydGl0ZSh0LEQsZSxILFIsRixZLFcsQixOLFgsWikpKXJldHVybiBQO2NvbnRpbnVlfX12YXIgUT1kKHQsRCxSLEYsWSxXLFUscSk7aWYoUjxRKWlmKHQqKFEtUik8aCl7aWYodm9pZCAwIT09KFA9cyh0LEQrMSxlLFIsUSxZLFcsQixOLFgsWikpKXJldHVybiBQfWVsc2UgaWYoRD09PXQtMil7aWYodm9pZCAwIT09KFA9SD9sLnN3ZWVwQmlwYXJ0aXRlKHQsZSxCLE4sWCxaLFIsUSxZLFcpOmwuc3dlZXBCaXBhcnRpdGUodCxlLFIsUSxZLFcsQixOLFgsWikpKXJldHVybiBQfWVsc2UgVChPKyssRCsxLFIsUSxCLE4sSCwtMS8wLDEvMCksVChPKyssRCsxLEIsTixSLFEsMV5ILC0xLzAsMS8wKTtpZihRPEYpe3ZhciAkPWModCxELEIsTixYLFopLHR0PVhbeiokK0RdLGV0PWcodCxELCQsTixYLFosdHQpO2lmKGV0PE4mJlQoTysrLEQsUSxGLGV0LE4sKDR8SCkrKEc/MTY6MCksdHQscSksQjwkJiZUKE8rKyxELFEsRixCLCQsKDJ8SCkrKEc/MTY6MCksVSx0dCksJCsxPT09ZXQpe2lmKHZvaWQgMCE9PShQPUc/QSh0LEQsZSxRLEYsWSxXLCQsWCxaWyRdKTpNKHQsRCxlLEgsUSxGLFksVywkLFgsWlskXSkpKXJldHVybiBQfWVsc2UgaWYoJDxldCl7dmFyIHJ0O2lmKEcpe2lmKHJ0PXkodCxELFEsRixZLFcsdHQpLFE8cnQpe3ZhciBudD1nKHQsRCxRLHJ0LFksVyx0dCk7aWYoRD09PXQtMil7aWYoUTxudCYmdm9pZCAwIT09KFA9bC5zd2VlcENvbXBsZXRlKHQsZSxRLG50LFksVywkLGV0LFgsWikpKXJldHVybiBQO2lmKG50PHJ0JiZ2b2lkIDAhPT0oUD1sLnN3ZWVwQmlwYXJ0aXRlKHQsZSxudCxydCxZLFcsJCxldCxYLFopKSlyZXR1cm4gUH1lbHNlIFE8bnQmJlQoTysrLEQrMSxRLG50LCQsZXQsMTYsLTEvMCwxLzApLG50PHJ0JiYoVChPKyssRCsxLG50LHJ0LCQsZXQsMCwtMS8wLDEvMCksVChPKyssRCsxLCQsZXQsbnQscnQsMSwtMS8wLDEvMCkpfX1lbHNlIHJ0PUg/eCh0LEQsUSxGLFksVyx0dCk6eSh0LEQsUSxGLFksVyx0dCksUTxydCYmKEQ9PT10LTI/UD1IP2wuc3dlZXBCaXBhcnRpdGUodCxlLCQsZXQsWCxaLFEscnQsWSxXKTpsLnN3ZWVwQmlwYXJ0aXRlKHQsZSxRLHJ0LFksVywkLGV0LFgsWik6KFQoTysrLEQrMSxRLHJ0LCQsZXQsSCwtMS8wLDEvMCksVChPKyssRCsxLCQsZXQsUSxydCwxXkgsLTEvMCwxLzApKSl9fX19fTt2YXIgbj10KCJ0eXBlZGFycmF5LXBvb2wiKSxhPXQoImJpdC10d2lkZGxlIiksaT10KCIuL2JydXRlIiksbz1pLnBhcnRpYWwscz1pLmZ1bGwsbD10KCIuL3N3ZWVwIiksYz10KCIuL21lZGlhbiIpLHU9dCgiLi9wYXJ0aXRpb24iKSxoPTEyOCxmPTE8PDIyLHA9MTw8MjIsZD11KCIhKGxvPj1wMCkmJiEocDE+PWhpKSIsWyJwMCIsInAxIl0pLGc9dSgibG89PT1wMCIsWyJwMCJdKSx2PXUoImxvPHAwIixbInAwIl0pLG09dSgiaGk8PXAwIixbInAwIl0pLHk9dSgibG88PXAwJiZwMDw9aGkiLFsicDAiXSkseD11KCJsbzxwMCYmcDA8PWhpIixbInAwIl0pLGI9NixfPTIsdz1uLm1hbGxvY0ludDMyKDEwMjQpLGs9bi5tYWxsb2NEb3VibGUoMTAyNCk7ZnVuY3Rpb24gVCh0LGUscixuLGEsaSxvLHMsbCl7dmFyIGM9Yip0O3dbY109ZSx3W2MrMV09cix3W2MrMl09bix3W2MrM109YSx3W2MrNF09aSx3W2MrNV09bzt2YXIgdT1fKnQ7a1t1XT1zLGtbdSsxXT1sfWZ1bmN0aW9uIE0odCxlLHIsbixhLGksbyxzLGwsYyx1KXt2YXIgaD0yKnQsZj1sKmgscD1jW2YrZV07dDpmb3IodmFyIGQ9YSxnPWEqaDtkPGk7KytkLGcrPWgpe3ZhciB2PW9bZytlXSxtPW9bZytlK3RdO2lmKCEocDx2fHxtPHApJiYoIW58fHAhPT12KSl7Zm9yKHZhciB5LHg9c1tkXSxiPWUrMTtiPHQ7KytiKXt2PW9bZytiXSxtPW9bZytiK3RdO3ZhciBfPWNbZitiXSx3PWNbZitiK3RdO2lmKG08X3x8dzx2KWNvbnRpbnVlIHR9aWYodm9pZCAwIT09KHk9bj9yKHUseCk6cih4LHUpKSlyZXR1cm4geX19fWZ1bmN0aW9uIEEodCxlLHIsbixhLGksbyxzLGwsYyl7dmFyIHU9Mip0LGg9cyp1LGY9bFtoK2VdO3Q6Zm9yKHZhciBwPW4sZD1uKnU7cDxhOysrcCxkKz11KXt2YXIgZz1vW3BdO2lmKGchPT1jKXt2YXIgdj1pW2QrZV0sbT1pW2QrZSt0XTtpZighKGY8dnx8bTxmKSl7Zm9yKHZhciB5PWUrMTt5PHQ7Kyt5KXt2PWlbZCt5XSxtPWlbZCt5K3RdO3ZhciB4PWxbaCt5XSxiPWxbaCt5K3RdO2lmKG08eHx8Yjx2KWNvbnRpbnVlIHR9dmFyIF89cihnLGMpO2lmKHZvaWQgMCE9PV8pcmV0dXJuIF99fX19fSx7Ii4vYnJ1dGUiOjk5LCIuL21lZGlhbiI6MTAxLCIuL3BhcnRpdGlvbiI6MTAyLCIuL3N3ZWVwIjoxMDQsImJpdC10d2lkZGxlIjo5NCwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwxMDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8scyxsKXtpZihvPD1yKzEpcmV0dXJuIHI7dmFyIGM9cix1PW8saD1vK3I+Pj4xLGY9Mip0LHA9aCxkPXNbZipoK2VdO2Zvcig7Yzx1Oyl7aWYodS1jPGEpe2kodCxlLGMsdSxzLGwpLGQ9c1tmKmgrZV07YnJlYWt9dmFyIGc9dS1jLHY9TWF0aC5yYW5kb20oKSpnK2N8MCxtPXNbZip2K2VdLHk9TWF0aC5yYW5kb20oKSpnK2N8MCx4PXNbZip5K2VdLGI9TWF0aC5yYW5kb20oKSpnK2N8MCxfPXNbZipiK2VdO208PXg/Xz49eD8ocD15LGQ9eCk6bT49Xz8ocD12LGQ9bSk6KHA9YixkPV8pOng+PV8/KHA9eSxkPXgpOl8+PW0/KHA9dixkPW0pOihwPWIsZD1fKTtmb3IodmFyIHc9ZioodS0xKSxrPWYqcCxUPTA7VDxmOysrVCwrK3csKytrKXt2YXIgTT1zW3ddO3Nbd109c1trXSxzW2tdPU19dmFyIEE9bFt1LTFdO2xbdS0xXT1sW3BdLGxbcF09QSxwPW4odCxlLGMsdS0xLHMsbCxkKTtmb3IodmFyIHc9ZioodS0xKSxrPWYqcCxUPTA7VDxmOysrVCwrK3csKytrKXt2YXIgTT1zW3ddO3Nbd109c1trXSxzW2tdPU19dmFyIEE9bFt1LTFdO2lmKGxbdS0xXT1sW3BdLGxbcF09QSxoPHApe2Zvcih1PXAtMTtjPHUmJnNbZioodS0xKStlXT09PWQ7KXUtPTE7dSs9MX1lbHNle2lmKCEocDxoKSlicmVhaztmb3IoYz1wKzE7Yzx1JiZzW2YqYytlXT09PWQ7KWMrPTF9fXJldHVybiBuKHQsZSxyLGgscyxsLHNbZipoK2VdKX07dmFyIG49dCgiLi9wYXJ0aXRpb24iKSgibG88cDAiLFsicDAiXSksYT04O2Z1bmN0aW9uIGkodCxlLHIsbixhLGkpe2Zvcih2YXIgbz0yKnQscz1vKihyKzEpK2UsbD1yKzE7bDxuOysrbCxzKz1vKWZvcih2YXIgYz1hW3NdLHU9bCxoPW8qKGwtMSk7dT5yJiZhW2grZV0+YzstLXUsaC09byl7Zm9yKHZhciBmPWgscD1oK28sZD0wO2Q8bzsrK2QsKytmLCsrcCl7dmFyIGc9YVtmXTthW2ZdPWFbcF0sYVtwXT1nfXZhciB2PWlbdV07aVt1XT1pW3UtMV0saVt1LTFdPXZ9fX0seyIuL3BhcnRpdGlvbiI6MTAyfV0sMTAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPSJhYmNkZWYiLnNwbGl0KCIiKS5jb25jYXQoZSksYT1bXTt0LmluZGV4T2YoImxvIik+PTAmJmEucHVzaCgibG89ZVtrK25dIik7dC5pbmRleE9mKCJoaSIpPj0wJiZhLnB1c2goImhpPWVbaytvXSIpO3JldHVybiByLnB1c2gobi5yZXBsYWNlKCJfIixhLmpvaW4oKSkucmVwbGFjZSgiJCIsdCkpLEZ1bmN0aW9uLmFwcGx5KHZvaWQgMCxyKX07dmFyIG49ImZvcih2YXIgaj0yKmEsaz1qKmMsbD1rLG09YyxuPWIsbz1hK2IscD1jO2Q+cDsrK3Asays9ail7dmFyIF87aWYoJClpZihtPT09cCltKz0xLGwrPWo7ZWxzZXtmb3IodmFyIHM9MDtqPnM7KytzKXt2YXIgdD1lW2src107ZVtrK3NdPWVbbF0sZVtsKytdPXR9dmFyIHU9ZltwXTtmW3BdPWZbbV0sZlttKytdPXV9fXJldHVybiBtIn0se31dLDEwMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlPD00Km4/YSgwLGUtMSx0KTpmdW5jdGlvbiB0KGUscixoKXt2YXIgZj0oci1lKzEpLzZ8MCxwPWUrZixkPXItZixnPWUrcj4+MSx2PWctZixtPWcrZix5PXAseD12LGI9ZyxfPW0sdz1kLGs9ZSsxLFQ9ci0xLE09MDtjKHkseCxoKSYmKE09eSx5PXgseD1NKTtjKF8sdyxoKSYmKE09XyxfPXcsdz1NKTtjKHksYixoKSYmKE09eSx5PWIsYj1NKTtjKHgsYixoKSYmKE09eCx4PWIsYj1NKTtjKHksXyxoKSYmKE09eSx5PV8sXz1NKTtjKGIsXyxoKSYmKE09YixiPV8sXz1NKTtjKHgsdyxoKSYmKE09eCx4PXcsdz1NKTtjKHgsYixoKSYmKE09eCx4PWIsYj1NKTtjKF8sdyxoKSYmKE09XyxfPXcsdz1NKTt2YXIgQT1oWzIqeF07dmFyIFM9aFsyKngrMV07dmFyIEU9aFsyKl9dO3ZhciBMPWhbMipfKzFdO3ZhciBDPTIqeTt2YXIgUD0yKmI7dmFyIE89Mip3O3ZhciB6PTIqcDt2YXIgST0yKmc7dmFyIEQ9MipkO2Zvcih2YXIgUj0wO1I8MjsrK1Ipe3ZhciBGPWhbQytSXSxCPWhbUCtSXSxOPWhbTytSXTtoW3orUl09RixoW0krUl09QixoW0QrUl09Tn1vKHYsZSxoKTtvKG0scixoKTtmb3IodmFyIGo9aztqPD1UOysrailpZih1KGosQSxTLGgpKWohPT1rJiZpKGosayxoKSwrK2s7ZWxzZSBpZighdShqLEUsTCxoKSlmb3IoOzspe2lmKHUoVCxFLEwsaCkpe3UoVCxBLFMsaCk/KHMoaixrLFQsaCksKytrLC0tVCk6KGkoaixULGgpLC0tVCk7YnJlYWt9aWYoLS1UPGopYnJlYWt9bChlLGstMSxBLFMsaCk7bChyLFQrMSxFLEwsaCk7ay0yLWU8PW4/YShlLGstMixoKTp0KGUsay0yLGgpO3ItKFQrMik8PW4/YShUKzIscixoKTp0KFQrMixyLGgpO1Qtazw9bj9hKGssVCxoKTp0KGssVCxoKX0oMCxlLTEsdCl9O3ZhciBuPTMyO2Z1bmN0aW9uIGEodCxlLHIpe2Zvcih2YXIgbj0yKih0KzEpLGE9dCsxO2E8PWU7KythKXtmb3IodmFyIGk9cltuKytdLG89cltuKytdLHM9YSxsPW4tMjtzLS0gPnQ7KXt2YXIgYz1yW2wtMl0sdT1yW2wtMV07aWYoYzxpKWJyZWFrO2lmKGM9PT1pJiZ1PG8pYnJlYWs7cltsXT1jLHJbbCsxXT11LGwtPTJ9cltsXT1pLHJbbCsxXT1vfX1mdW5jdGlvbiBpKHQsZSxyKXtlKj0yO3ZhciBuPXJbdCo9Ml0sYT1yW3QrMV07clt0XT1yW2VdLHJbdCsxXT1yW2UrMV0scltlXT1uLHJbZSsxXT1hfWZ1bmN0aW9uIG8odCxlLHIpe2UqPTIsclt0Kj0yXT1yW2VdLHJbdCsxXT1yW2UrMV19ZnVuY3Rpb24gcyh0LGUscixuKXtlKj0yLHIqPTI7dmFyIGE9blt0Kj0yXSxpPW5bdCsxXTtuW3RdPW5bZV0sblt0KzFdPW5bZSsxXSxuW2VdPW5bcl0sbltlKzFdPW5bcisxXSxuW3JdPWEsbltyKzFdPWl9ZnVuY3Rpb24gbCh0LGUscixuLGEpe2UqPTIsYVt0Kj0yXT1hW2VdLGFbZV09cixhW3QrMV09YVtlKzFdLGFbZSsxXT1ufWZ1bmN0aW9uIGModCxlLHIpe2UqPTI7dmFyIG49clt0Kj0yXSxhPXJbZV07cmV0dXJuIShuPGEpJiYobiE9PWF8fHJbdCsxXT5yW2UrMV0pfWZ1bmN0aW9uIHUodCxlLHIsbil7dmFyIGE9blt0Kj0yXTtyZXR1cm4gYTxlfHxhPT09ZSYmblt0KzFdPHJ9fSx7fV0sMTA0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17aW5pdDpmdW5jdGlvbih0KXt2YXIgZT1hLm5leHRQb3cyKHQpO3MubGVuZ3RoPGUmJihuLmZyZWUocykscz1uLm1hbGxvY0ludDMyKGUpKTtsLmxlbmd0aDxlJiYobi5mcmVlKGwpLGw9bi5tYWxsb2NJbnQzMihlKSk7Yy5sZW5ndGg8ZSYmKG4uZnJlZShjKSxjPW4ubWFsbG9jSW50MzIoZSkpO3UubGVuZ3RoPGUmJihuLmZyZWUodSksdT1uLm1hbGxvY0ludDMyKGUpKTtoLmxlbmd0aDxlJiYobi5mcmVlKGgpLGg9bi5tYWxsb2NJbnQzMihlKSk7Zi5sZW5ndGg8ZSYmKG4uZnJlZShmKSxmPW4ubWFsbG9jSW50MzIoZSkpO3ZhciByPTgqZTtwLmxlbmd0aDxyJiYobi5mcmVlKHApLHA9bi5tYWxsb2NEb3VibGUocikpfSxzd2VlcEJpcGFydGl0ZTpmdW5jdGlvbih0LGUscixuLGEsaCxmLHYsbSx5KXtmb3IodmFyIHg9MCxiPTIqdCxfPXQtMSx3PWItMSxrPXI7azxuOysrayl7dmFyIFQ9aFtrXSxNPWIqaztwW3grK109YVtNK19dLHBbeCsrXT0tKFQrMSkscFt4KytdPWFbTSt3XSxwW3grK109VH1mb3IodmFyIGs9ZjtrPHY7KytrKXt2YXIgVD15W2tdK28sQT1iKms7cFt4KytdPW1bQStfXSxwW3grK109LVQscFt4KytdPW1bQSt3XSxwW3grK109VH12YXIgUz14Pj4+MTtpKHAsUyk7Zm9yKHZhciBFPTAsTD0wLGs9MDtrPFM7KytrKXt2YXIgQz0wfHBbMiprKzFdO2lmKEM+PW8pZChjLHUsTC0tLEM9Qy1vfDApO2Vsc2UgaWYoQz49MClkKHMsbCxFLS0sQyk7ZWxzZSBpZihDPD0tbyl7Qz0tQy1vfDA7Zm9yKHZhciBQPTA7UDxFOysrUCl7dmFyIE89ZShzW1BdLEMpO2lmKHZvaWQgMCE9PU8pcmV0dXJuIE99ZyhjLHUsTCsrLEMpfWVsc2V7Qz0tQy0xfDA7Zm9yKHZhciBQPTA7UDxMOysrUCl7dmFyIE89ZShDLGNbUF0pO2lmKHZvaWQgMCE9PU8pcmV0dXJuIE99ZyhzLGwsRSsrLEMpfX19LHN3ZWVwQ29tcGxldGU6ZnVuY3Rpb24odCxlLHIsbixhLG8sdixtLHkseCl7Zm9yKHZhciBiPTAsXz0yKnQsdz10LTEsaz1fLTEsVD1yO1Q8bjsrK1Qpe3ZhciBNPW9bVF0rMTw8MSxBPV8qVDtwW2IrK109YVtBK3ddLHBbYisrXT0tTSxwW2IrK109YVtBK2tdLHBbYisrXT1NfWZvcih2YXIgVD12O1Q8bTsrK1Qpe3ZhciBNPXhbVF0rMTw8MSxTPV8qVDtwW2IrK109eVtTK3ddLHBbYisrXT0xfC1NLHBbYisrXT15W1Mra10scFtiKytdPTF8TX12YXIgRT1iPj4+MTtpKHAsRSk7Zm9yKHZhciBMPTAsQz0wLFA9MCxUPTA7VDxFOysrVCl7dmFyIE89MHxwWzIqVCsxXSx6PTEmTztpZihUPEUtMSYmTz4+MT09cFsyKlQrM10+PjEmJih6PTIsVCs9MSksTzwwKXtmb3IodmFyIEk9LShPPj4xKS0xLEQ9MDtEPFA7KytEKXt2YXIgUj1lKGhbRF0sSSk7aWYodm9pZCAwIT09UilyZXR1cm4gUn1pZigwIT09eilmb3IodmFyIEQ9MDtEPEw7KytEKXt2YXIgUj1lKHNbRF0sSSk7aWYodm9pZCAwIT09UilyZXR1cm4gUn1pZigxIT09eilmb3IodmFyIEQ9MDtEPEM7KytEKXt2YXIgUj1lKGNbRF0sSSk7aWYodm9pZCAwIT09UilyZXR1cm4gUn0wPT09ej9nKHMsbCxMKyssSSk6MT09PXo/ZyhjLHUsQysrLEkpOjI9PT16JiZnKGgsZixQKyssSSl9ZWxzZXt2YXIgST0oTz4+MSktMTswPT09ej9kKHMsbCxMLS0sSSk6MT09PXo/ZChjLHUsQy0tLEkpOjI9PT16JiZkKGgsZixQLS0sSSl9fX0sc2NhbkJpcGFydGl0ZTpmdW5jdGlvbih0LGUscixuLGEsYyx1LGgsZix2LG0seSl7dmFyIHg9MCxiPTIqdCxfPWUsdz1lK3Qsaz0xLFQ9MTtuP1Q9bzprPW87Zm9yKHZhciBNPWE7TTxjOysrTSl7dmFyIEE9TStrLFM9YipNO3BbeCsrXT11W1MrX10scFt4KytdPS1BLHBbeCsrXT11W1Mrd10scFt4KytdPUF9Zm9yKHZhciBNPWY7TTx2OysrTSl7dmFyIEE9TStULEU9YipNO3BbeCsrXT1tW0UrX10scFt4KytdPS1BfXZhciBMPXg+Pj4xO2kocCxMKTtmb3IodmFyIEM9MCxNPTA7TTxMOysrTSl7dmFyIFA9MHxwWzIqTSsxXTtpZihQPDApe3ZhciBBPS1QLE89ITE7aWYoQT49bz8oTz0hbixBLT1vKTooTz0hIW4sQS09MSksTylnKHMsbCxDKyssQSk7ZWxzZXt2YXIgej15W0FdLEk9YipBLEQ9bVtJK2UrMV0sUj1tW0krZSsxK3RdO3Q6Zm9yKHZhciBGPTA7RjxDOysrRil7dmFyIEI9c1tGXSxOPWIqQjtpZighKFI8dVtOK2UrMV18fHVbTitlKzErdF08RCkpe2Zvcih2YXIgaj1lKzI7ajx0OysrailpZihtW0krait0XTx1W04ral18fHVbTitqK3RdPG1bSStqXSljb250aW51ZSB0O3ZhciBWLFU9aFtCXTtpZih2b2lkIDAhPT0oVj1uP3IoeixVKTpyKFUseikpKXJldHVybiBWfX19fWVsc2UgZChzLGwsQy0tLFAtayl9fSxzY2FuQ29tcGxldGU6ZnVuY3Rpb24odCxlLHIsbixhLGwsYyx1LGgsZixkKXtmb3IodmFyIGc9MCx2PTIqdCxtPWUseT1lK3QseD1uO3g8YTsrK3gpe3ZhciBiPXgrbyxfPXYqeDtwW2crK109bFtfK21dLHBbZysrXT0tYixwW2crK109bFtfK3ldLHBbZysrXT1ifWZvcih2YXIgeD11O3g8aDsrK3gpe3ZhciBiPXgrMSx3PXYqeDtwW2crK109Zlt3K21dLHBbZysrXT0tYn12YXIgaz1nPj4+MTtpKHAsayk7Zm9yKHZhciBUPTAseD0wO3g8azsrK3gpe3ZhciBNPTB8cFsyKngrMV07aWYoTTwwKXt2YXIgYj0tTTtpZihiPj1vKXNbVCsrXT1iLW87ZWxzZXt2YXIgQT1kW2ItPTFdLFM9dipiLEU9ZltTK2UrMV0sTD1mW1MrZSsxK3RdO3Q6Zm9yKHZhciBDPTA7QzxUOysrQyl7dmFyIFA9c1tDXSxPPWNbUF07aWYoTz09PUEpYnJlYWs7dmFyIHo9dipQO2lmKCEoTDxsW3orZSsxXXx8bFt6K2UrMSt0XTxFKSl7Zm9yKHZhciBJPWUrMjtJPHQ7KytJKWlmKGZbUytJK3RdPGxbeitJXXx8bFt6K0krdF08ZltTK0ldKWNvbnRpbnVlIHQ7dmFyIEQ9cihPLEEpO2lmKHZvaWQgMCE9PUQpcmV0dXJuIER9fX19ZWxzZXtmb3IodmFyIGI9TS1vLEM9VC0xO0M+PTA7LS1DKWlmKHNbQ109PT1iKXtmb3IodmFyIEk9QysxO0k8VDsrK0kpc1tJLTFdPXNbSV07YnJlYWt9LS1UfX19fTt2YXIgbj10KCJ0eXBlZGFycmF5LXBvb2wiKSxhPXQoImJpdC10d2lkZGxlIiksaT10KCIuL3NvcnQiKSxvPTE8PDI4LHM9bi5tYWxsb2NJbnQzMigxMDI0KSxsPW4ubWFsbG9jSW50MzIoMTAyNCksYz1uLm1hbGxvY0ludDMyKDEwMjQpLHU9bi5tYWxsb2NJbnQzMigxMDI0KSxoPW4ubWFsbG9jSW50MzIoMTAyNCksZj1uLm1hbGxvY0ludDMyKDEwMjQpLHA9bi5tYWxsb2NEb3VibGUoODE5Mik7ZnVuY3Rpb24gZCh0LGUscixuKXt2YXIgYT1lW25dLGk9dFtyLTFdO3RbYV09aSxlW2ldPWF9ZnVuY3Rpb24gZyh0LGUscixuKXt0W3JdPW4sZVtuXT1yfX0seyIuL3NvcnQiOjEwMywiYml0LXR3aWRkbGUiOjk0LCJ0eXBlZGFycmF5LXBvb2wiOjU0NH1dLDEwNTpbZnVuY3Rpb24odCxlLHIpe30se31dLDEwNjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZS5wcm90b3R5cGU9dCxuZXcgZX0sYT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJmUucHVzaChyKTtyZXR1cm4gcn0saT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fTtmdW5jdGlvbiBvKCl7dGhpcy5fZXZlbnRzJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcywiX2V2ZW50cyIpfHwodGhpcy5fZXZlbnRzPW4obnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfWUuZXhwb3J0cz1vLG8uRXZlbnRFbWl0dGVyPW8sby5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAsby5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDA7dmFyIHMsbD0xMDt0cnl7dmFyIGM9e307T2JqZWN0LmRlZmluZVByb3BlcnR5JiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYywieCIse3ZhbHVlOjB9KSxzPTA9PT1jLnh9Y2F0Y2godCl7cz0hMX1mdW5jdGlvbiB1KHQpe3JldHVybiB2b2lkIDA9PT10Ll9tYXhMaXN0ZW5lcnM/by5kZWZhdWx0TWF4TGlzdGVuZXJzOnQuX21heExpc3RlbmVyc31mdW5jdGlvbiBoKHQsZSxyLGEpe3ZhciBpLG8scztpZigiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO2lmKChvPXQuX2V2ZW50cyk/KG8ubmV3TGlzdGVuZXImJih0LmVtaXQoIm5ld0xpc3RlbmVyIixlLHIubGlzdGVuZXI/ci5saXN0ZW5lcjpyKSxvPXQuX2V2ZW50cykscz1vW2VdKToobz10Ll9ldmVudHM9bihudWxsKSx0Ll9ldmVudHNDb3VudD0wKSxzKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcz9zPW9bZV09YT9bcixzXTpbcyxyXTphP3MudW5zaGlmdChyKTpzLnB1c2gociksIXMud2FybmVkJiYoaT11KHQpKSYmaT4wJiZzLmxlbmd0aD5pKXtzLndhcm5lZD0hMDt2YXIgbD1uZXcgRXJyb3IoIlBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gIitzLmxlbmd0aCsnICInK1N0cmluZyhlKSsnIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0LicpO2wubmFtZT0iTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nIixsLmVtaXR0ZXI9dCxsLnR5cGU9ZSxsLmNvdW50PXMubGVuZ3RoLCJvYmplY3QiPT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIiVzOiAlcyIsbC5uYW1lLGwubWVzc2FnZSl9fWVsc2Ugcz1vW2VdPXIsKyt0Ll9ldmVudHNDb3VudDtyZXR1cm4gdH1mdW5jdGlvbiBmKCl7aWYoIXRoaXMuZmlyZWQpc3dpdGNoKHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCxhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7Y2FzZSAxOnJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQsYXJndW1lbnRzWzBdKTtjYXNlIDI6cmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCxhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTtjYXNlIDM6cmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCxhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7ZGVmYXVsdDpmb3IodmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoOysrZSl0W2VdPWFyZ3VtZW50c1tlXTt0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LHQpfX1mdW5jdGlvbiBwKHQsZSxyKXt2YXIgbj17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6dCx0eXBlOmUsbGlzdGVuZXI6cn0sYT1pLmNhbGwoZixuKTtyZXR1cm4gYS5saXN0ZW5lcj1yLG4ud3JhcEZuPWEsYX1mdW5jdGlvbiBkKHQsZSxyKXt2YXIgbj10Ll9ldmVudHM7aWYoIW4pcmV0dXJuW107dmFyIGE9bltlXTtyZXR1cm4gYT8iZnVuY3Rpb24iPT10eXBlb2YgYT9yP1thLmxpc3RlbmVyfHxhXTpbYV06cj9mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPTA7cjxlLmxlbmd0aDsrK3IpZVtyXT10W3JdLmxpc3RlbmVyfHx0W3JdO3JldHVybiBlfShhKTp2KGEsYS5sZW5ndGgpOltdfWZ1bmN0aW9uIGcodCl7dmFyIGU9dGhpcy5fZXZlbnRzO2lmKGUpe3ZhciByPWVbdF07aWYoImZ1bmN0aW9uIj09dHlwZW9mIHIpcmV0dXJuIDE7aWYocilyZXR1cm4gci5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gdih0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24pcltuXT10W25dO3JldHVybiByfXM/T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImRlZmF1bHRNYXhMaXN0ZW5lcnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5cGVvZiB0fHx0PDB8fHQhPXQpdGhyb3cgbmV3IFR5cGVFcnJvcignImRlZmF1bHRNYXhMaXN0ZW5lcnMiIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtsPXR9fSk6by5kZWZhdWx0TWF4TGlzdGVuZXJzPWwsby5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiIT10eXBlb2YgdHx8dDwwfHxpc05hTih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibiIgYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9dCx0aGlzfSxvLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdSh0aGlzKX0sby5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpLG8scz0iZXJyb3IiPT09dDtpZihvPXRoaXMuX2V2ZW50cylzPXMmJm51bGw9PW8uZXJyb3I7ZWxzZSBpZighcylyZXR1cm4hMTtpZihzKXtpZihhcmd1bWVudHMubGVuZ3RoPjEmJihlPWFyZ3VtZW50c1sxXSksZSBpbnN0YW5jZW9mIEVycm9yKXRocm93IGU7dmFyIGw9bmV3IEVycm9yKCdVbmhhbmRsZWQgImVycm9yIiBldmVudC4gKCcrZSsiKSIpO3Rocm93IGwuY29udGV4dD1lLGx9aWYoIShyPW9bdF0pKXJldHVybiExO3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiByO3N3aXRjaChuPWFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTohZnVuY3Rpb24odCxlLHIpe2lmKGUpdC5jYWxsKHIpO2Vsc2UgZm9yKHZhciBuPXQubGVuZ3RoLGE9dih0LG4pLGk9MDtpPG47KytpKWFbaV0uY2FsbChyKX0ocixjLHRoaXMpO2JyZWFrO2Nhc2UgMjohZnVuY3Rpb24odCxlLHIsbil7aWYoZSl0LmNhbGwocixuKTtlbHNlIGZvcih2YXIgYT10Lmxlbmd0aCxpPXYodCxhKSxvPTA7bzxhOysrbylpW29dLmNhbGwocixuKX0ocixjLHRoaXMsYXJndW1lbnRzWzFdKTticmVhaztjYXNlIDM6IWZ1bmN0aW9uKHQsZSxyLG4sYSl7aWYoZSl0LmNhbGwocixuLGEpO2Vsc2UgZm9yKHZhciBpPXQubGVuZ3RoLG89dih0LGkpLHM9MDtzPGk7KytzKW9bc10uY2FsbChyLG4sYSl9KHIsYyx0aGlzLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pO2JyZWFrO2Nhc2UgNDohZnVuY3Rpb24odCxlLHIsbixhLGkpe2lmKGUpdC5jYWxsKHIsbixhLGkpO2Vsc2UgZm9yKHZhciBvPXQubGVuZ3RoLHM9dih0LG8pLGw9MDtsPG87KytsKXNbbF0uY2FsbChyLG4sYSxpKX0ocixjLHRoaXMsYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSxhcmd1bWVudHNbM10pO2JyZWFrO2RlZmF1bHQ6Zm9yKGE9bmV3IEFycmF5KG4tMSksaT0xO2k8bjtpKyspYVtpLTFdPWFyZ3VtZW50c1tpXTshZnVuY3Rpb24odCxlLHIsbil7aWYoZSl0LmFwcGx5KHIsbik7ZWxzZSBmb3IodmFyIGE9dC5sZW5ndGgsaT12KHQsYSksbz0wO288YTsrK28paVtvXS5hcHBseShyLG4pfShyLGMsdGhpcyxhKX1yZXR1cm4hMH0sby5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaCh0aGlzLHQsZSwhMSl9LG8ucHJvdG90eXBlLm9uPW8ucHJvdG90eXBlLmFkZExpc3RlbmVyLG8ucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBoKHRoaXMsdCxlLCEwKX0sby5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7cmV0dXJuIHRoaXMub24odCxwKHRoaXMsdCxlKSksdGhpc30sby5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7cmV0dXJuIHRoaXMucHJlcGVuZExpc3RlbmVyKHQscCh0aGlzLHQsZSkpLHRoaXN9LG8ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYSxpLG8scztpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO2lmKCEoYT10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKCEocj1hW3RdKSlyZXR1cm4gdGhpcztpZihyPT09ZXx8ci5saXN0ZW5lcj09PWUpMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9bihudWxsKTooZGVsZXRlIGFbdF0sYS5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsdCxyLmxpc3RlbmVyfHxlKSk7ZWxzZSBpZigiZnVuY3Rpb24iIT10eXBlb2Ygcil7Zm9yKGk9LTEsbz1yLmxlbmd0aC0xO28+PTA7by0tKWlmKHJbb109PT1lfHxyW29dLmxpc3RlbmVyPT09ZSl7cz1yW29dLmxpc3RlbmVyLGk9bzticmVha31pZihpPDApcmV0dXJuIHRoaXM7MD09PWk/ci5zaGlmdCgpOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUsbj1yKzEsYT10Lmxlbmd0aDtuPGE7cis9MSxuKz0xKXRbcl09dFtuXTt0LnBvcCgpfShyLGkpLDE9PT1yLmxlbmd0aCYmKGFbdF09clswXSksYS5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsdCxzfHxlKX1yZXR1cm4gdGhpc30sby5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsaTtpZighKHI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZighci5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1uKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnJbdF0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1uKG51bGwpOmRlbGV0ZSByW3RdKSx0aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgbyxzPWEocik7Zm9yKGk9MDtpPHMubGVuZ3RoOysraSkicmVtb3ZlTGlzdGVuZXIiIT09KG89c1tpXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKG8pO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygicmVtb3ZlTGlzdGVuZXIiKSx0aGlzLl9ldmVudHM9bihudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoImZ1bmN0aW9uIj09dHlwZW9mKGU9clt0XSkpdGhpcy5yZW1vdmVMaXN0ZW5lcih0LGUpO2Vsc2UgaWYoZSlmb3IoaT1lLmxlbmd0aC0xO2k+PTA7aS0tKXRoaXMucmVtb3ZlTGlzdGVuZXIodCxlW2ldKTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBkKHRoaXMsdCwhMCl9LG8ucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4gZCh0aGlzLHQsITEpfSxvLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdC5saXN0ZW5lckNvdW50P3QubGlzdGVuZXJDb3VudChlKTpnLmNhbGwodCxlKX0sby5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1nLG8ucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD9SZWZsZWN0Lm93bktleXModGhpcy5fZXZlbnRzKTpbXX19LHt9XSwxMDc6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJhc2U2NC1qcyIpLGE9dCgiaWVlZTc1NCIpLGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbC5mb3I/U3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKTpudWxsO3IuQnVmZmVyPWUsci5TbG93QnVmZmVyPWZ1bmN0aW9uKHQpeyt0IT10JiYodD0wKTtyZXR1cm4gZS5hbGxvYygrdCl9LHIuSU5TUEVDVF9NQVhfQllURVM9NTA7dmFyIG89MjE0NzQ4MzY0NztmdW5jdGlvbiBzKHQpe2lmKHQ+byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK3QrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpO3ZhciByPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YocixlLnByb3RvdHlwZSkscn1mdW5jdGlvbiBlKHQsZSxyKXtpZigibnVtYmVyIj09dHlwZW9mIHQpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gdSh0KX1yZXR1cm4gbCh0LGUscil9ZnVuY3Rpb24gbCh0LHIsbil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBmdW5jdGlvbih0LHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO2lmKCFlLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIityKTt2YXIgbj0wfHAodCxyKSxhPXMobiksaT1hLndyaXRlKHQscik7aSE9PW4mJihhPWEuc2xpY2UoMCxpKSk7cmV0dXJuIGF9KHQscik7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQpKXJldHVybiBoKHQpO2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgdCk7aWYoaih0LEFycmF5QnVmZmVyKXx8dCYmaih0LmJ1ZmZlcixBcnJheUJ1ZmZlcikpcmV0dXJuIGZ1bmN0aW9uKHQscixuKXtpZihyPDB8fHQuYnl0ZUxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCcib2Zmc2V0IiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJsZW5ndGgiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO3ZhciBhO2E9dm9pZCAwPT09ciYmdm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0KTp2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQscik6bmV3IFVpbnQ4QXJyYXkodCxyLG4pO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoYSxlLnByb3RvdHlwZSksYX0odCxyLG4pO2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTt2YXIgYT10LnZhbHVlT2YmJnQudmFsdWVPZigpO2lmKG51bGwhPWEmJmEhPT10KXJldHVybiBlLmZyb20oYSxyLG4pO3ZhciBpPWZ1bmN0aW9uKHQpe2lmKGUuaXNCdWZmZXIodCkpe3ZhciByPTB8Zih0Lmxlbmd0aCksbj1zKHIpO3JldHVybiAwPT09bi5sZW5ndGg/bjoodC5jb3B5KG4sMCwwLHIpLG4pfWlmKHZvaWQgMCE9PXQubGVuZ3RoKXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fFYodC5sZW5ndGgpP3MoMCk6aCh0KTtpZigiQnVmZmVyIj09PXQudHlwZSYmQXJyYXkuaXNBcnJheSh0LmRhdGEpKXJldHVybiBoKHQuZGF0YSl9KHQpO2lmKGkpcmV0dXJuIGk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPVN5bWJvbC50b1ByaW1pdGl2ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRbU3ltYm9sLnRvUHJpbWl0aXZlXSlyZXR1cm4gZS5mcm9tKHRbU3ltYm9sLnRvUHJpbWl0aXZlXSgic3RyaW5nIikscixuKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiB0KX1mdW5jdGlvbiBjKHQpe2lmKCJudW1iZXIiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlcicpO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK3QrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGModCkscyh0PDA/MDowfGYodCkpfWZ1bmN0aW9uIGgodCl7Zm9yKHZhciBlPXQubGVuZ3RoPDA/MDowfGYodC5sZW5ndGgpLHI9cyhlKSxuPTA7bjxlO24rPTEpcltuXT0yNTUmdFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBmKHQpe2lmKHQ+PW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK28udG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHx0fWZ1bmN0aW9uIHAodCxyKXtpZihlLmlzQnVmZmVyKHQpKXJldHVybiB0Lmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCl8fGoodCxBcnJheUJ1ZmZlcikpcmV0dXJuIHQuYnl0ZUxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHQpO3ZhciBuPXQubGVuZ3RoLGE9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighYSYmMD09PW4pcmV0dXJuIDA7Zm9yKHZhciBpPSExOzspc3dpdGNoKHIpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIG47Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gRih0KS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKm47Y2FzZSJoZXgiOnJldHVybiBuPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIEIodCkubGVuZ3RoO2RlZmF1bHQ6aWYoaSlyZXR1cm4gYT8tMTpGKHQpLmxlbmd0aDtyPSgiIityKS50b0xvd2VyQ2FzZSgpLGk9ITB9fWZ1bmN0aW9uIGQodCxlLHIpe3ZhciBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1mdW5jdGlvbiBnKHQscixuLGEsaSl7aWYoMD09PXQubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygbj8oYT1uLG49MCk6bj4yMTQ3NDgzNjQ3P249MjE0NzQ4MzY0NzpuPC0yMTQ3NDgzNjQ4JiYobj0tMjE0NzQ4MzY0OCksVihuPStuKSYmKG49aT8wOnQubGVuZ3RoLTEpLG48MCYmKG49dC5sZW5ndGgrbiksbj49dC5sZW5ndGgpe2lmKGkpcmV0dXJuLTE7bj10Lmxlbmd0aC0xfWVsc2UgaWYobjwwKXtpZighaSlyZXR1cm4tMTtuPTB9aWYoInN0cmluZyI9PXR5cGVvZiByJiYocj1lLmZyb20ocixhKSksZS5pc0J1ZmZlcihyKSlyZXR1cm4gMD09PXIubGVuZ3RoPy0xOnYodCxyLG4sYSxpKTtpZigibnVtYmVyIj09dHlwZW9mIHIpcmV0dXJuIHImPTI1NSwiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9pP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0LHIsbik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbCh0LHIsbik6dih0LFtyXSxuLGEsaSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gdih0LGUscixuLGEpe3ZhciBpLG89MSxzPXQubGVuZ3RoLGw9ZS5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYodC5sZW5ndGg8Mnx8ZS5sZW5ndGg8MilyZXR1cm4tMTtvPTIscy89MixsLz0yLHIvPTJ9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiAxPT09bz90W2VdOnQucmVhZFVJbnQxNkJFKGUqbyl9aWYoYSl7dmFyIHU9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGModCxpKT09PWMoZSwtMT09PXU/MDppLXUpKXtpZigtMT09PXUmJih1PWkpLGktdSsxPT09bClyZXR1cm4gdSpvfWVsc2UtMSE9PXUmJihpLT1pLXUpLHU9LTF9ZWxzZSBmb3IocitsPnMmJihyPXMtbCksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGg9ITAsZj0wO2Y8bDtmKyspaWYoYyh0LGkrZikhPT1jKGUsZikpe2g9ITE7YnJlYWt9aWYoaClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBtKHQsZSxyLG4pe3I9TnVtYmVyKHIpfHwwO3ZhciBhPXQubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPmEmJihuPWEpOm49YTt2YXIgaT1lLmxlbmd0aDtuPmkvMiYmKG49aS8yKTtmb3IodmFyIG89MDtvPG47KytvKXt2YXIgcz1wYXJzZUludChlLnN1YnN0cigyKm8sMiksMTYpO2lmKFYocykpcmV0dXJuIG87dFtyK29dPXN9cmV0dXJuIG99ZnVuY3Rpb24geSh0LGUscixuKXtyZXR1cm4gTihGKGUsdC5sZW5ndGgtciksdCxyLG4pfWZ1bmN0aW9uIHgodCxlLHIsbil7cmV0dXJuIE4oZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9MDtyPHQubGVuZ3RoOysrcillLnB1c2goMjU1JnQuY2hhckNvZGVBdChyKSk7cmV0dXJuIGV9KGUpLHQscixuKX1mdW5jdGlvbiBiKHQsZSxyLG4pe3JldHVybiB4KHQsZSxyLG4pfWZ1bmN0aW9uIF8odCxlLHIsbil7cmV0dXJuIE4oQihlKSx0LHIsbil9ZnVuY3Rpb24gdyh0LGUscixuKXtyZXR1cm4gTihmdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGEsaT1bXSxvPTA7bzx0Lmxlbmd0aCYmISgoZS09Mik8MCk7KytvKXI9dC5jaGFyQ29kZUF0KG8pLG49cj4+OCxhPXIlMjU2LGkucHVzaChhKSxpLnB1c2gobik7cmV0dXJuIGl9KGUsdC5sZW5ndGgtciksdCxyLG4pfWZ1bmN0aW9uIGsodCxlLHIpe3JldHVybiAwPT09ZSYmcj09PXQubGVuZ3RoP24uZnJvbUJ5dGVBcnJheSh0KTpuLmZyb21CeXRlQXJyYXkodC5zbGljZShlLHIpKX1mdW5jdGlvbiBUKHQsZSxyKXtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxhPWU7YTxyOyl7dmFyIGksbyxzLGwsYz10W2FdLHU9bnVsbCxoPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoYStoPD1yKXN3aXRjaChoKXtjYXNlIDE6YzwxMjgmJih1PWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKGk9dFthKzFdKSkmJihsPSgzMSZjKTw8Nnw2MyZpKT4xMjcmJih1PWwpO2JyZWFrO2Nhc2UgMzppPXRbYSsxXSxvPXRbYSsyXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZvKSYmKGw9KDE1JmMpPDwxMnwoNjMmaSk8PDZ8NjMmbyk+MjA0NyYmKGw8NTUyOTZ8fGw+NTczNDMpJiYodT1sKTticmVhaztjYXNlIDQ6aT10W2ErMV0sbz10W2ErMl0scz10W2ErM10sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJjEyOD09KDE5MiZzKSYmKGw9KDE1JmMpPDwxOHwoNjMmaSk8PDEyfCg2MyZvKTw8Nnw2MyZzKT42NTUzNSYmbDwxMTE0MTEyJiYodT1sKX1udWxsPT09dT8odT02NTUzMyxoPTEpOnU+NjU1MzUmJih1LT02NTUzNixuLnB1c2godT4+PjEwJjEwMjN8NTUyOTYpLHU9NTYzMjB8MTAyMyZ1KSxuLnB1c2godSksYSs9aH1yZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7aWYoZTw9TSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdCk7dmFyIHI9IiIsbj0wO2Zvcig7bjxlOylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx0LnNsaWNlKG4sbis9TSkpO3JldHVybiByfShuKX1yLmtNYXhMZW5ndGg9byxlLlRZUEVEX0FSUkFZX1NVUFBPUlQ9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoMSksZT17Zm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKSw0Mj09PXQuZm9vKCl9Y2F0Y2godCl7cmV0dXJuITF9fSgpLGUuVFlQRURfQVJSQVlfU1VQUE9SVHx8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlfHwiZnVuY3Rpb24iIT10eXBlb2YgY29uc29sZS5lcnJvcnx8Y29uc29sZS5lcnJvcigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXJlbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKGUuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwib2Zmc2V0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihlLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ5dGVPZmZzZXR9fSksInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPVN5bWJvbC5zcGVjaWVzJiZlW1N5bWJvbC5zcGVjaWVzXT09PWUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC5zcGVjaWVzLHt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksZS5wb29sU2l6ZT04MTkyLGUuZnJvbT1mdW5jdGlvbih0LGUscil7cmV0dXJuIGwodCxlLHIpfSxPYmplY3Quc2V0UHJvdG90eXBlT2YoZS5wcm90b3R5cGUsVWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihlLFVpbnQ4QXJyYXkpLGUuYWxsb2M9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBmdW5jdGlvbih0LGUscil7cmV0dXJuIGModCksdDw9MD9zKHQpOnZvaWQgMCE9PWU/InN0cmluZyI9PXR5cGVvZiByP3ModCkuZmlsbChlLHIpOnModCkuZmlsbChlKTpzKHQpfSh0LGUscil9LGUuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odCl7cmV0dXJuIHUodCl9LGUuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHQpe3JldHVybiB1KHQpfSxlLmlzQnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYhMD09PXQuX2lzQnVmZmVyJiZ0IT09ZS5wcm90b3R5cGV9LGUuY29tcGFyZT1mdW5jdGlvbih0LHIpe2lmKGoodCxVaW50OEFycmF5KSYmKHQ9ZS5mcm9tKHQsdC5vZmZzZXQsdC5ieXRlTGVuZ3RoKSksaihyLFVpbnQ4QXJyYXkpJiYocj1lLmZyb20ocixyLm9mZnNldCxyLmJ5dGVMZW5ndGgpKSwhZS5pc0J1ZmZlcih0KXx8IWUuaXNCdWZmZXIocikpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJidWYxIiwgImJ1ZjIiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYodD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPXQubGVuZ3RoLGE9ci5sZW5ndGgsaT0wLG89TWF0aC5taW4obixhKTtpPG87KytpKWlmKHRbaV0hPT1yW2ldKXtuPXRbaV0sYT1yW2ldO2JyZWFrfXJldHVybiBuPGE/LTE6YTxuPzE6MH0sZS5pc0VuY29kaW5nPWZ1bmN0aW9uKHQpe3N3aXRjaChTdHJpbmcodCkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxlLmNvbmNhdD1mdW5jdGlvbih0LHIpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIGUuYWxsb2MoMCk7dmFyIG47aWYodm9pZCAwPT09cilmb3Iocj0wLG49MDtuPHQubGVuZ3RoOysrbilyKz10W25dLmxlbmd0aDt2YXIgYT1lLmFsbG9jVW5zYWZlKHIpLGk9MDtmb3Iobj0wO248dC5sZW5ndGg7KytuKXt2YXIgbz10W25dO2lmKGoobyxVaW50OEFycmF5KSYmKG89ZS5mcm9tKG8pKSwhZS5pc0J1ZmZlcihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7by5jb3B5KGEsaSksaSs9by5sZW5ndGh9cmV0dXJuIGF9LGUuYnl0ZUxlbmd0aD1wLGUucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxlLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxlbmd0aDtpZih0JTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciBlPTA7ZTx0O2UrPTIpZCh0aGlzLGUsZSsxKTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgZT0wO2U8dDtlKz00KWQodGhpcyxlLGUrMyksZCh0aGlzLGUrMSxlKzIpO3JldHVybiB0aGlzfSxlLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxlbmd0aDtpZih0JTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciBlPTA7ZTx0O2UrPTgpZCh0aGlzLGUsZSs3KSxkKHRoaXMsZSsxLGUrNiksZCh0aGlzLGUrMixlKzUpLGQodGhpcyxlKzMsZSs0KTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxlbmd0aDtyZXR1cm4gMD09PXQ/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/VCh0aGlzLDAsdCk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPSExO2lmKCh2b2lkIDA9PT1lfHxlPDApJiYoZT0wKSxlPnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKCh2b2lkIDA9PT1yfHxyPnRoaXMubGVuZ3RoKSYmKHI9dGhpcy5sZW5ndGgpLHI8PTApcmV0dXJuIiI7aWYoKHI+Pj49MCk8PShlPj4+PTApKXJldHVybiIiO2Zvcih0fHwodD0idXRmOCIpOzspc3dpdGNoKHQpe2Nhc2UiaGV4IjpyZXR1cm4gRSh0aGlzLGUscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gVCh0aGlzLGUscik7Y2FzZSJhc2NpaSI6cmV0dXJuIEEodGhpcyxlLHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIFModGhpcyxlLHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gayh0aGlzLGUscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBMKHRoaXMsZSxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIit0KTt0PSh0KyIiKS50b0xvd2VyQ2FzZSgpLG49ITB9fS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPWUucHJvdG90eXBlLnRvU3RyaW5nLGUucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT10fHwwPT09ZS5jb21wYXJlKHRoaXMsdCl9LGUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgdD0iIixlPXIuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIHQ9dGhpcy50b1N0cmluZygiaGV4IiwwLGUpLnJlcGxhY2UoLyguezJ9KS9nLCIkMSAiKS50cmltKCksdGhpcy5sZW5ndGg+ZSYmKHQrPSIgLi4uICIpLCI8QnVmZmVyICIrdCsiPiJ9LGkmJihlLnByb3RvdHlwZVtpXT1lLnByb3RvdHlwZS5pbnNwZWN0KSxlLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKHQscixuLGEsaSl7aWYoaih0LFVpbnQ4QXJyYXkpJiYodD1lLmZyb20odCx0Lm9mZnNldCx0LmJ5dGVMZW5ndGgpKSwhZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInRhcmdldCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtpZih2b2lkIDA9PT1yJiYocj0wKSx2b2lkIDA9PT1uJiYobj10P3QubGVuZ3RoOjApLHZvaWQgMD09PWEmJihhPTApLHZvaWQgMD09PWkmJihpPXRoaXMubGVuZ3RoKSxyPDB8fG4+dC5sZW5ndGh8fGE8MHx8aT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYoYT49aSYmcj49bilyZXR1cm4gMDtpZihhPj1pKXJldHVybi0xO2lmKHI+PW4pcmV0dXJuIDE7aWYodGhpcz09PXQpcmV0dXJuIDA7Zm9yKHZhciBvPShpPj4+PTApLShhPj4+PTApLHM9KG4+Pj49MCktKHI+Pj49MCksbD1NYXRoLm1pbihvLHMpLGM9dGhpcy5zbGljZShhLGkpLHU9dC5zbGljZShyLG4pLGg9MDtoPGw7KytoKWlmKGNbaF0hPT11W2hdKXtvPWNbaF0scz11W2hdO2JyZWFrfXJldHVybiBvPHM/LTE6czxvPzE6MH0sZS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHQsZSxyKX0sZS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIGcodGhpcyx0LGUsciwhMCl9LGUucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZyh0aGlzLHQsZSxyLCExKX0sZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLHIsbil7aWYodm9pZCAwPT09ZSluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLGU9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10eXBlb2YgZSluPWUscj10aGlzLmxlbmd0aCxlPTA7ZWxzZXtpZighaXNGaW5pdGUoZSkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO2U+Pj49MCxpc0Zpbml0ZShyKT8ocj4+Pj0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBhPXRoaXMubGVuZ3RoLWU7aWYoKHZvaWQgMD09PXJ8fHI+YSkmJihyPWEpLHQubGVuZ3RoPjAmJihyPDB8fGU8MCl8fGU+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIGk9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBtKHRoaXMsdCxlLHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIHkodGhpcyx0LGUscik7Y2FzZSJhc2NpaSI6cmV0dXJuIHgodGhpcyx0LGUscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gYih0aGlzLHQsZSxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIF8odGhpcyx0LGUscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB3KHRoaXMsdCxlLHIpO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksaT0hMH19LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIE09NDA5NjtmdW5jdGlvbiBBKHQsZSxyKXt2YXIgbj0iIjtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2Zvcih2YXIgYT1lO2E8cjsrK2Epbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmdFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gUyh0LGUscil7dmFyIG49IiI7cj1NYXRoLm1pbih0Lmxlbmd0aCxyKTtmb3IodmFyIGE9ZTthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUodFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gRSh0LGUscil7dmFyIG49dC5sZW5ndGg7KCFlfHxlPDApJiYoZT0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBhPSIiLGk9ZTtpPHI7KytpKWErPVIodFtpXSk7cmV0dXJuIGF9ZnVuY3Rpb24gTCh0LGUscil7Zm9yKHZhciBuPXQuc2xpY2UoZSxyKSxhPSIiLGk9MDtpPG4ubGVuZ3RoO2krPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW2ldKzI1NipuW2krMV0pO3JldHVybiBhfWZ1bmN0aW9uIEModCxlLHIpe2lmKHQlMSE9MHx8dDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZih0K2U+cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIFAodCxyLG4sYSxpLG8pe2lmKCFlLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihyPml8fHI8byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYobithPnQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBPKHQsZSxyLG4sYSxpKXtpZihyK24+dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24geih0LGUscixuLGkpe3JldHVybiBlPStlLHI+Pj49MCxpfHxPKHQsMCxyLDQpLGEud3JpdGUodCxlLHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gSSh0LGUscixuLGkpe3JldHVybiBlPStlLHI+Pj49MCxpfHxPKHQsMCxyLDgpLGEud3JpdGUodCxlLHIsbiw1Miw4KSxyKzh9ZS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24odCxyKXt2YXIgbj10aGlzLmxlbmd0aDsodD1+fnQpPDA/KHQrPW4pPDAmJih0PTApOnQ+biYmKHQ9biksKHI9dm9pZCAwPT09cj9uOn5+cik8MD8ocis9bik8MCYmKHI9MCk6cj5uJiYocj1uKSxyPHQmJihyPXQpO3ZhciBhPXRoaXMuc3ViYXJyYXkodCxyKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKGEsZS5wcm90b3R5cGUpLGF9LGUucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8Qyh0LGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW3RdLGE9MSxpPTA7KytpPGUmJihhKj0yNTYpOyluKz10aGlzW3QraV0qYTtyZXR1cm4gbn0sZS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxDKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdCstLWVdLGE9MTtlPjAmJihhKj0yNTYpOyluKz10aGlzW3QrLS1lXSphO3JldHVybiBufSxlLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCwxLHRoaXMubGVuZ3RoKSx0aGlzW3RdfSxlLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCwyLHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OH0sZS5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxDKHQsMix0aGlzLmxlbmd0aCksdGhpc1t0XTw8OHx0aGlzW3QrMV19LGUucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDQsdGhpcy5sZW5ndGgpLCh0aGlzW3RdfHRoaXNbdCsxXTw8OHx0aGlzW3QrMl08PDE2KSsxNjc3NzIxNip0aGlzW3QrM119LGUucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbdF0rKHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXSl9LGUucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxDKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdF0sYT0xLGk9MDsrK2k8ZSYmKGEqPTI1Nik7KW4rPXRoaXNbdCtpXSphO3JldHVybiBuPj0oYSo9MTI4KSYmKG4tPU1hdGgucG93KDIsOCplKSksbn0sZS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEModCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49ZSxhPTEsaT10aGlzW3QrLS1uXTtuPjAmJihhKj0yNTYpOylpKz10aGlzW3QrLS1uXSphO3JldHVybiBpPj0oYSo9MTI4KSYmKGktPU1hdGgucG93KDIsOCplKSksaX0sZS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1t0XT8tMSooMjU1LXRoaXNbdF0rMSk6dGhpc1t0XX0sZS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24odCxlKXt0Pj4+PTAsZXx8Qyh0LDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbdF18dGhpc1t0KzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxlLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbih0LGUpe3Q+Pj49MCxlfHxDKHQsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1t0KzFdfHRoaXNbdF08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGUucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxDKHQsNCx0aGlzLmxlbmd0aCksdGhpc1t0XXx0aGlzW3QrMV08PDh8dGhpc1t0KzJdPDwxNnx0aGlzW3QrM108PDI0fSxlLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDQsdGhpcy5sZW5ndGgpLHRoaXNbdF08PDI0fHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXX0sZS5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCw0LHRoaXMubGVuZ3RoKSxhLnJlYWQodGhpcyx0LCEwLDIzLDQpfSxlLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDQsdGhpcy5sZW5ndGgpLGEucmVhZCh0aGlzLHQsITEsMjMsNCl9LGUucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDgsdGhpcy5sZW5ndGgpLGEucmVhZCh0aGlzLHQsITAsNTIsOCl9LGUucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDgsdGhpcy5sZW5ndGgpLGEucmVhZCh0aGlzLHQsITEsNTIsOCl9LGUucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKHQsZSxyLG4peyh0PSt0LGU+Pj49MCxyPj4+PTAsbil8fFAodGhpcyx0LGUscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT0xLGk9MDtmb3IodGhpc1tlXT0yNTUmdDsrK2k8ciYmKGEqPTI1Nik7KXRoaXNbZStpXT10L2EmMjU1O3JldHVybiBlK3J9LGUucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHQsZSxyLG4peyh0PSt0LGU+Pj49MCxyPj4+PTAsbil8fFAodGhpcyx0LGUscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT1yLTEsaT0xO2Zvcih0aGlzW2UrYV09MjU1JnQ7LS1hPj0wJiYoaSo9MjU2KTspdGhpc1tlK2FdPXQvaSYyNTU7cmV0dXJuIGUrcn0sZS5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMSwyNTUsMCksdGhpc1tlXT0yNTUmdCxlKzF9LGUucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDIsNjU1MzUsMCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsZSsyfSxlLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDY1NTM1LDApLHRoaXNbZV09dD4+PjgsdGhpc1tlKzFdPTI1NSZ0LGUrMn0sZS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbZSszXT10Pj4+MjQsdGhpc1tlKzJdPXQ+Pj4xNix0aGlzW2UrMV09dD4+PjgsdGhpc1tlXT0yNTUmdCxlKzR9LGUucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDQsNDI5NDk2NzI5NSwwKSx0aGlzW2VdPXQ+Pj4yNCx0aGlzW2UrMV09dD4+PjE2LHRoaXNbZSsyXT10Pj4+OCx0aGlzW2UrM109MjU1JnQsZSs0fSxlLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT4+Pj0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsdCxlLHIsYS0xLC1hKX12YXIgaT0wLG89MSxzPTA7Zm9yKHRoaXNbZV09MjU1JnQ7KytpPHImJihvKj0yNTYpOyl0PDAmJjA9PT1zJiYwIT09dGhpc1tlK2ktMV0mJihzPTEpLHRoaXNbZStpXT0odC9vPj4wKS1zJjI1NTtyZXR1cm4gZStyfSxlLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT4+Pj0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsdCxlLHIsYS0xLC1hKX12YXIgaT1yLTEsbz0xLHM9MDtmb3IodGhpc1tlK2ldPTI1NSZ0Oy0taT49MCYmKG8qPTI1Nik7KXQ8MCYmMD09PXMmJjAhPT10aGlzW2UraSsxXSYmKHM9MSksdGhpc1tlK2ldPSh0L28+PjApLXMmMjU1O3JldHVybiBlK3J9LGUucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMSwxMjcsLTEyOCksdDwwJiYodD0yNTUrdCsxKSx0aGlzW2VdPTI1NSZ0LGUrMX0sZS5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsZSsyfSxlLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCxlKzJ9LGUucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCx0aGlzW2UrMl09dD4+PjE2LHRoaXNbZSszXT10Pj4+MjQsZSs0fSxlLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdDwwJiYodD00Mjk0OTY3Mjk1K3QrMSksdGhpc1tlXT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tlKzNdPTI1NSZ0LGUrNH0sZS5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4geih0aGlzLHQsZSwhMCxyKX0sZS5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4geih0aGlzLHQsZSwhMSxyKX0sZS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIEkodGhpcyx0LGUsITAscil9LGUucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBJKHRoaXMsdCxlLCExLHIpfSxlLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQscixuLGEpe2lmKCFlLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlciIpO2lmKG58fChuPTApLGF8fDA9PT1hfHwoYT10aGlzLmxlbmd0aCkscj49dC5sZW5ndGgmJihyPXQubGVuZ3RoKSxyfHwocj0wKSxhPjAmJmE8biYmKGE9biksYT09PW4pcmV0dXJuIDA7aWYoMD09PXQubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwfHxuPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYoYTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO2E+dGhpcy5sZW5ndGgmJihhPXRoaXMubGVuZ3RoKSx0Lmxlbmd0aC1yPGEtbiYmKGE9dC5sZW5ndGgtcituKTt2YXIgaT1hLW47aWYodGhpcz09PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluKXRoaXMuY29weVdpdGhpbihyLG4sYSk7ZWxzZSBpZih0aGlzPT09dCYmbjxyJiZyPGEpZm9yKHZhciBvPWktMTtvPj0wOy0tbyl0W28rcl09dGhpc1tvK25dO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwodCx0aGlzLnN1YmFycmF5KG4sYSkscik7cmV0dXJuIGl9LGUucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24odCxyLG4sYSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZigic3RyaW5nIj09dHlwZW9mIHI/KGE9cixyPTAsbj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiBuJiYoYT1uLG49dGhpcy5sZW5ndGgpLHZvaWQgMCE9PWEmJiJzdHJpbmciIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBhJiYhZS5pc0VuY29kaW5nKGEpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrYSk7aWYoMT09PXQubGVuZ3RoKXt2YXIgaT10LmNoYXJDb2RlQXQoMCk7KCJ1dGY4Ij09PWEmJmk8MTI4fHwibGF0aW4xIj09PWEpJiYodD1pKX19ZWxzZSJudW1iZXIiPT10eXBlb2YgdD90Jj0yNTU6ImJvb2xlYW4iPT10eXBlb2YgdCYmKHQ9TnVtYmVyKHQpKTtpZihyPDB8fHRoaXMubGVuZ3RoPHJ8fHRoaXMubGVuZ3RoPG4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKG48PXIpcmV0dXJuIHRoaXM7dmFyIG87aWYocj4+Pj0wLG49dm9pZCAwPT09bj90aGlzLmxlbmd0aDpuPj4+MCx0fHwodD0wKSwibnVtYmVyIj09dHlwZW9mIHQpZm9yKG89cjtvPG47KytvKXRoaXNbb109dDtlbHNle3ZhciBzPWUuaXNCdWZmZXIodCk/dDplLmZyb20odCxhKSxsPXMubGVuZ3RoO2lmKDA9PT1sKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSAiJyt0KyciIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3Iobz0wO288bi1yOysrbyl0aGlzW28rcl09c1tvJWxdfXJldHVybiB0aGlzfTt2YXIgRD0vW14rLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIFIodCl7cmV0dXJuIHQ8MTY/IjAiK3QudG9TdHJpbmcoMTYpOnQudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIEYodCxlKXt2YXIgcjtlPWV8fDEvMDtmb3IodmFyIG49dC5sZW5ndGgsYT1udWxsLGk9W10sbz0wO288bjsrK28pe2lmKChyPXQuY2hhckNvZGVBdChvKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFhKXtpZihyPjU2MzE5KXsoZS09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYobysxPT09bil7KGUtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWE9cjtjb250aW51ZX1pZihyPDU2MzIwKXsoZS09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksYT1yO2NvbnRpbnVlfXI9NjU1MzYrKGEtNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgYSYmKGUtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKGE9bnVsbCxyPDEyOCl7aWYoKGUtPTEpPDApYnJlYWs7aS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigoZS09Mik8MClicmVhaztpLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKGUtPTMpPDApYnJlYWs7aS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigoZS09NCk8MClicmVhaztpLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBpfWZ1bmN0aW9uIEIodCl7cmV0dXJuIG4udG9CeXRlQXJyYXkoZnVuY3Rpb24odCl7aWYoKHQ9KHQ9dC5zcGxpdCgiPSIpWzBdKS50cmltKCkucmVwbGFjZShELCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDt0Lmxlbmd0aCU0IT0wOyl0Kz0iPSI7cmV0dXJuIHR9KHQpKX1mdW5jdGlvbiBOKHQsZSxyLG4pe2Zvcih2YXIgYT0wO2E8biYmIShhK3I+PWUubGVuZ3RofHxhPj10Lmxlbmd0aCk7KythKWVbYStyXT10W2FdO3JldHVybiBhfWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV8fG51bGwhPXQmJm51bGwhPXQuY29uc3RydWN0b3ImJm51bGwhPXQuY29uc3RydWN0b3IubmFtZSYmdC5jb25zdHJ1Y3Rvci5uYW1lPT09ZS5uYW1lfWZ1bmN0aW9uIFYodCl7cmV0dXJuIHQhPXR9fSkuY2FsbCh0aGlzLHQoImJ1ZmZlciIpLkJ1ZmZlcil9LHsiYmFzZTY0LWpzIjo3NixidWZmZXI6MTA3LGllZWU3NTQ6NDE0fV0sMTA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL21vbm90b25lIiksYT10KCIuL2xpYi90cmlhbmd1bGF0aW9uIiksaT10KCIuL2xpYi9kZWxhdW5heSIpLG89dCgiLi9saWIvZmlsdGVyIik7ZnVuY3Rpb24gcyh0KXtyZXR1cm5bTWF0aC5taW4odFswXSx0WzFdKSxNYXRoLm1heCh0WzBdLHRbMV0pXX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfWZ1bmN0aW9uIGModCxlLHIpe3JldHVybiBlIGluIHQ/dFtlXTpyfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7QXJyYXkuaXNBcnJheShlKT8ocj1yfHx7fSxlPWV8fFtdKToocj1lfHx7fSxlPVtdKTt2YXIgdT0hIWMociwiZGVsYXVuYXkiLCEwKSxoPSEhYyhyLCJpbnRlcmlvciIsITApLGY9ISFjKHIsImV4dGVyaW9yIiwhMCkscD0hIWMociwiaW5maW5pdHkiLCExKTtpZighaCYmIWZ8fDA9PT10Lmxlbmd0aClyZXR1cm5bXTt2YXIgZD1uKHQsZSk7aWYodXx8aCE9PWZ8fHApe2Zvcih2YXIgZz1hKHQubGVuZ3RoLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChzKS5zb3J0KGwpfShlKSksdj0wO3Y8ZC5sZW5ndGg7Kyt2KXt2YXIgbT1kW3ZdO2cuYWRkVHJpYW5nbGUobVswXSxtWzFdLG1bMl0pfXJldHVybiB1JiZpKHQsZyksZj9oP3A/byhnLDAscCk6Zy5jZWxscygpOm8oZywxLHApOm8oZywtMSl9cmV0dXJuIGR9fSx7Ii4vbGliL2RlbGF1bmF5IjoxMDksIi4vbGliL2ZpbHRlciI6MTEwLCIuL2xpYi9tb25vdG9uZSI6MTExLCIuL2xpYi90cmlhbmd1bGF0aW9uIjoxMTJ9XSwxMDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicm9idXN0LWluLXNwaGVyZSIpWzRdO3QoImJpbmFyeS1zZWFyY2gtYm91bmRzIik7ZnVuY3Rpb24gYSh0LGUscixhLGksbyl7dmFyIHM9ZS5vcHBvc2l0ZShhLGkpO2lmKCEoczwwKSl7aWYoaTxhKXt2YXIgbD1hO2E9aSxpPWwsbD1vLG89cyxzPWx9ZS5pc0NvbnN0cmFpbnQoYSxpKXx8bih0W2FdLHRbaV0sdFtvXSx0W3NdKTwwJiZyLnB1c2goYSxpKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLGk9dC5sZW5ndGgsbz1lLnN0YXJzLHM9MDtzPGk7KytzKWZvcih2YXIgbD1vW3NdLGM9MTtjPGwubGVuZ3RoO2MrPTIpe3ZhciB1PWxbY107aWYoISh1PHMpJiYhZS5pc0NvbnN0cmFpbnQocyx1KSl7Zm9yKHZhciBoPWxbYy0xXSxmPS0xLHA9MTtwPGwubGVuZ3RoO3ArPTIpaWYobFtwLTFdPT09dSl7Zj1sW3BdO2JyZWFrfWY8MHx8bih0W3NdLHRbdV0sdFtoXSx0W2ZdKTwwJiZyLnB1c2gocyx1KX19Zm9yKDtyLmxlbmd0aD4wOyl7Zm9yKHZhciB1PXIucG9wKCkscz1yLnBvcCgpLGg9LTEsZj0tMSxsPW9bc10sZD0xO2Q8bC5sZW5ndGg7ZCs9Mil7dmFyIGc9bFtkLTFdLHY9bFtkXTtnPT09dT9mPXY6dj09PXUmJihoPWcpfWg8MHx8ZjwwfHwobih0W3NdLHRbdV0sdFtoXSx0W2ZdKT49MHx8KGUuZmxpcChzLHUpLGEodCxlLHIsaCxzLGYpLGEodCxlLHIscyxmLGgpLGEodCxlLHIsZix1LGgpLGEodCxlLHIsdSxoLGYpKSl9fX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MTEzLCJyb2J1c3QtaW4tc3BoZXJlIjo1MDd9XSwxMTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4sYT10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpO2Z1bmN0aW9uIGkodCxlLHIsbixhLGksbyl7dGhpcy5jZWxscz10LHRoaXMubmVpZ2hib3I9ZSx0aGlzLmZsYWdzPW4sdGhpcy5jb25zdHJhaW50PXIsdGhpcy5hY3RpdmU9YSx0aGlzLm5leHQ9aSx0aGlzLmJvdW5kYXJ5PW99ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXXx8dFsyXS1lWzJdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jZWxscygpLG49ci5sZW5ndGgsYT0wO2E8bjsrK2Epe3ZhciBzPXJbYV0sbD1zWzBdLGM9c1sxXSx1PXNbMl07Yzx1P2M8bCYmKHNbMF09YyxzWzFdPXUsc1syXT1sKTp1PGwmJihzWzBdPXUsc1sxXT1sLHNbMl09Yyl9ci5zb3J0KG8pO2Zvcih2YXIgaD1uZXcgQXJyYXkobiksYT0wO2E8aC5sZW5ndGg7KythKWhbYV09MDt2YXIgZj1bXSxwPVtdLGQ9bmV3IEFycmF5KDMqbiksZz1uZXcgQXJyYXkoMypuKSx2PW51bGw7ZSYmKHY9W10pO2Zvcih2YXIgbT1uZXcgaShyLGQsZyxoLGYscCx2KSxhPTA7YTxuOysrYSlmb3IodmFyIHM9clthXSx5PTA7eTwzOysreSl7dmFyIGw9c1t5XSxjPXNbKHkrMSklM10seD1kWzMqYSt5XT1tLmxvY2F0ZShjLGwsdC5vcHBvc2l0ZShjLGwpKSxiPWdbMyphK3ldPXQuaXNDb25zdHJhaW50KGwsYyk7eDwwJiYoYj9wLnB1c2goYSk6KGYucHVzaChhKSxoW2FdPTEpLGUmJnYucHVzaChbYyxsLC0xXSkpfXJldHVybiBtfSh0LHIpO2lmKDA9PT1lKXJldHVybiByP24uY2VsbHMuY29uY2F0KG4uYm91bmRhcnkpOm4uY2VsbHM7dmFyIGE9MSxzPW4uYWN0aXZlLGw9bi5uZXh0LGM9bi5mbGFncyx1PW4uY2VsbHMsaD1uLmNvbnN0cmFpbnQsZj1uLm5laWdoYm9yO2Zvcig7cy5sZW5ndGg+MHx8bC5sZW5ndGg+MDspe2Zvcig7cy5sZW5ndGg+MDspe3ZhciBwPXMucG9wKCk7aWYoY1twXSE9PS1hKXtjW3BdPWE7dVtwXTtmb3IodmFyIGQ9MDtkPDM7KytkKXt2YXIgZz1mWzMqcCtkXTtnPj0wJiYwPT09Y1tnXSYmKGhbMypwK2RdP2wucHVzaChnKToocy5wdXNoKGcpLGNbZ109YSkpfX19dmFyIHY9bDtsPXMscz12LGwubGVuZ3RoPTAsYT0tYX12YXIgbT1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTAsYT0wO2E8dC5sZW5ndGg7KythKWVbYV09PT1yJiYodFtuKytdPXRbYV0pO3JldHVybiB0Lmxlbmd0aD1uLHR9KHUsYyxlKTtpZihyKXJldHVybiBtLmNvbmNhdChuLmJvdW5kYXJ5KTtyZXR1cm4gbX0saS5wcm90b3R5cGUubG9jYXRlPShuPVswLDAsMF0sZnVuY3Rpb24odCxlLHIpe3ZhciBpPXQscz1lLGw9cjtyZXR1cm4gZTxyP2U8dCYmKGk9ZSxzPXIsbD10KTpyPHQmJihpPXIscz10LGw9ZSksaTwwPy0xOihuWzBdPWksblsxXT1zLG5bMl09bCxhLmVxKHRoaXMuY2VsbHMsbixvKSl9KX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MTEzfV0sMTExOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksYT10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXSxpPTAsbz0xLHM9MjtmdW5jdGlvbiBsKHQsZSxyLG4sYSl7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy5pZHg9cix0aGlzLmxvd2VySWRzPW4sdGhpcy51cHBlcklkcz1hfWZ1bmN0aW9uIGModCxlLHIsbil7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy50eXBlPXIsdGhpcy5pZHg9bn1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9dC5hWzBdLWUuYVswXXx8dC5hWzFdLWUuYVsxXXx8dC50eXBlLWUudHlwZTtyZXR1cm4gcnx8KHQudHlwZSE9PWkmJihyPWEodC5hLHQuYixlLmIpKT9yOnQuaWR4LWUuaWR4KX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIGEodC5hLHQuYixlKX1mdW5jdGlvbiBmKHQsZSxyLGksbyl7Zm9yKHZhciBzPW4ubHQoZSxpLGgpLGw9bi5ndChlLGksaCksYz1zO2M8bDsrK2Mpe2Zvcih2YXIgdT1lW2NdLGY9dS5sb3dlcklkcyxwPWYubGVuZ3RoO3A+MSYmYShyW2ZbcC0yXV0scltmW3AtMV1dLGkpPjA7KXQucHVzaChbZltwLTFdLGZbcC0yXSxvXSkscC09MTtmLmxlbmd0aD1wLGYucHVzaChvKTt2YXIgZD11LnVwcGVySWRzO2ZvcihwPWQubGVuZ3RoO3A+MSYmYShyW2RbcC0yXV0scltkW3AtMV1dLGkpPDA7KXQucHVzaChbZFtwLTJdLGRbcC0xXSxvXSkscC09MTtkLmxlbmd0aD1wLGQucHVzaChvKX19ZnVuY3Rpb24gcCh0LGUpe3ZhciByO3JldHVybihyPXQuYVswXTxlLmFbMF0/YSh0LmEsdC5iLGUuYSk6YShlLmIsZS5hLHQuYSkpP3I6KHI9ZS5iWzBdPHQuYlswXT9hKHQuYSx0LmIsZS5iKTphKGUuYixlLmEsdC5iKSl8fHQuaWR4LWUuaWR4fWZ1bmN0aW9uIGQodCxlLHIpe3ZhciBhPW4ubGUodCxyLHApLGk9dFthXSxvPWkudXBwZXJJZHMscz1vW28ubGVuZ3RoLTFdO2kudXBwZXJJZHM9W3NdLHQuc3BsaWNlKGErMSwwLG5ldyBsKHIuYSxyLmIsci5pZHgsW3NdLG8pKX1mdW5jdGlvbiBnKHQsZSxyKXt2YXIgYT1yLmE7ci5hPXIuYixyLmI9YTt2YXIgaT1uLmVxKHQscixwKSxvPXRbaV07dFtpLTFdLnVwcGVySWRzPW8udXBwZXJJZHMsdC5zcGxpY2UoaSwxKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1lLmxlbmd0aCxhPVtdLGg9MDtoPHI7KytoKWEucHVzaChuZXcgYyh0W2hdLG51bGwsaSxoKSk7Zm9yKHZhciBoPTA7aDxuOysraCl7dmFyIHA9ZVtoXSx2PXRbcFswXV0sbT10W3BbMV1dO3ZbMF08bVswXT9hLnB1c2gobmV3IGModixtLHMsaCksbmV3IGMobSx2LG8saCkpOnZbMF0+bVswXSYmYS5wdXNoKG5ldyBjKG0sdixzLGgpLG5ldyBjKHYsbSxvLGgpKX1hLnNvcnQodSk7Zm9yKHZhciB5PWFbMF0uYVswXS0oMStNYXRoLmFicyhhWzBdLmFbMF0pKSpNYXRoLnBvdygyLC01MikseD1bbmV3IGwoW3ksMV0sW3ksMF0sLTEsW10sW10sW10sW10pXSxiPVtdLGg9MCxfPWEubGVuZ3RoO2g8XzsrK2gpe3ZhciB3PWFbaF0saz13LnR5cGU7az09PWk/ZihiLHgsdCx3LmEsdy5pZHgpOms9PT1zP2QoeCx0LHcpOmcoeCx0LHcpfXJldHVybiBifX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MTEzLCJyb2J1c3Qtb3JpZW50YXRpb24iOjUwOX1dLDExMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpO2Z1bmN0aW9uIGEodCxlKXt0aGlzLnN0YXJzPXQsdGhpcy5lZGdlcz1lfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodCksbj0wO248dDsrK24pcltuXT1bXTtyZXR1cm4gbmV3IGEocixlKX07dmFyIGk9YS5wcm90b3R5cGU7ZnVuY3Rpb24gbyh0LGUscil7Zm9yKHZhciBuPTEsYT10Lmxlbmd0aDtuPGE7bis9MilpZih0W24tMV09PT1lJiZ0W25dPT09cilyZXR1cm4gdFtuLTFdPXRbYS0yXSx0W25dPXRbYS0xXSx2b2lkKHQubGVuZ3RoPWEtMil9aS5pc0NvbnN0cmFpbnQ9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwXTtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfXJldHVybiBmdW5jdGlvbihyLGEpe3JldHVybiB0WzBdPU1hdGgubWluKHIsYSksdFsxXT1NYXRoLm1heChyLGEpLG4uZXEodGhpcy5lZGdlcyx0LGUpPj0wfX0oKSxpLnJlbW92ZVRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnN0YXJzO28oblt0XSxlLHIpLG8obltlXSxyLHQpLG8obltyXSx0LGUpfSxpLmFkZFRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnN0YXJzO25bdF0ucHVzaChlLHIpLG5bZV0ucHVzaChyLHQpLG5bcl0ucHVzaCh0LGUpfSxpLm9wcG9zaXRlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuc3RhcnNbZV0sbj0xLGE9ci5sZW5ndGg7bjxhO24rPTIpaWYocltuXT09PXQpcmV0dXJuIHJbbi0xXTtyZXR1cm4tMX0saS5mbGlwPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5vcHBvc2l0ZSh0LGUpLG49dGhpcy5vcHBvc2l0ZShlLHQpO3RoaXMucmVtb3ZlVHJpYW5nbGUodCxlLHIpLHRoaXMucmVtb3ZlVHJpYW5nbGUoZSx0LG4pLHRoaXMuYWRkVHJpYW5nbGUodCxuLHIpLHRoaXMuYWRkVHJpYW5nbGUoZSxyLG4pfSxpLmVkZ2VzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3RhcnMsZT1bXSxyPTAsbj10Lmxlbmd0aDtyPG47KytyKWZvcih2YXIgYT10W3JdLGk9MCxvPWEubGVuZ3RoO2k8bztpKz0yKWUucHVzaChbYVtpXSxhW2krMV1dKTtyZXR1cm4gZX0saS5jZWxscz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnN0YXJzLGU9W10scj0wLG49dC5sZW5ndGg7cjxuOysrcilmb3IodmFyIGE9dFtyXSxpPTAsbz1hLmxlbmd0aDtpPG87aSs9Mil7dmFyIHM9YVtpXSxsPWFbaSsxXTtyPE1hdGgubWluKHMsbCkmJmUucHVzaChbcixzLGxdKX1yZXR1cm4gZX19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjExM31dLDExMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4sYSl7dmFyIGk9WyJmdW5jdGlvbiAiLHQsIihhLGwsaCwiLG4uam9pbigiLCIpLCIpeyIsYT8iIjoidmFyIGk9IixyPyJsLTEiOiJoKzEiLCI7d2hpbGUobDw9aCl7dmFyIG09KGwraCk+Pj4xLHg9YVttXSJdO3JldHVybiBhP2UuaW5kZXhPZigiYyIpPDA/aS5wdXNoKCI7aWYoeD09PXkpe3JldHVybiBtfWVsc2UgaWYoeDw9eSl7Iik6aS5wdXNoKCI7dmFyIHA9Yyh4LHkpO2lmKHA9PT0wKXtyZXR1cm4gbX1lbHNlIGlmKHA8PTApeyIpOmkucHVzaCgiO2lmKCIsZSwiKXtpPW07Iikscj9pLnB1c2goImw9bSsxfWVsc2V7aD1tLTF9Iik6aS5wdXNoKCJoPW0tMX1lbHNle2w9bSsxfSIpLGkucHVzaCgifSIpLGE/aS5wdXNoKCJyZXR1cm4gLTF9OyIpOmkucHVzaCgicmV0dXJuIGl9OyIpLGkuam9pbigiIil9ZnVuY3Rpb24gYSh0LGUscixhKXtyZXR1cm4gbmV3IEZ1bmN0aW9uKFtuKCJBIiwieCIrdCsieSIsZSxbInkiXSxhKSxuKCJQIiwiYyh4LHkpIit0KyIwIixlLFsieSIsImMiXSxhKSwiZnVuY3Rpb24gZGlzcGF0Y2hCc2VhcmNoIixyLCIoYSx5LGMsbCxoKXtpZih0eXBlb2YoYyk9PT0nZnVuY3Rpb24nKXtyZXR1cm4gUChhLChsPT09dm9pZCAwKT8wOmx8MCwoaD09PXZvaWQgMCk/YS5sZW5ndGgtMTpofDAseSxjKX1lbHNle3JldHVybiBBKGEsKGM9PT12b2lkIDApPzA6Y3wwLChsPT09dm9pZCAwKT9hLmxlbmd0aC0xOmx8MCx5KX19cmV0dXJuIGRpc3BhdGNoQnNlYXJjaCIscl0uam9pbigiIikpKCl9ZS5leHBvcnRzPXtnZTphKCI+PSIsITEsIkdFIiksZ3Q6YSgiPiIsITEsIkdUIiksbHQ6YSgiPCIsITAsIkxUIiksbGU6YSgiPD0iLCEwLCJMRSIpLGVxOmEoIi0iLCEwLCJFUSIsITApfX0se31dLDExNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTEscj0xO3I8dC5sZW5ndGg7KytyKWZvcih2YXIgbj0wO248cjsrK24paWYodFtyXTx0W25dKWU9LWU7ZWxzZSBpZih0W25dPT09dFtyXSlyZXR1cm4gMDtyZXR1cm4gZX19LHt9XSwxMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZHVwIiksYT10KCJyb2J1c3QtbGluZWFyLXNvbHZlIik7ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgsYT0wO2E8bjsrK2Epcis9dFthXSplW2FdO3JldHVybiByfWZ1bmN0aW9uIG8odCl7dmFyIGU9dC5sZW5ndGg7aWYoMD09PWUpcmV0dXJuW107dFswXS5sZW5ndGg7dmFyIHI9bihbdC5sZW5ndGgrMSx0Lmxlbmd0aCsxXSwxKSxvPW4oW3QubGVuZ3RoKzFdLDEpO3JbZV1bZV09MDtmb3IodmFyIHM9MDtzPGU7KytzKXtmb3IodmFyIGw9MDtsPD1zOysrbClyW2xdW3NdPXJbc11bbF09MippKHRbc10sdFtsXSk7b1tzXT1pKHRbc10sdFtzXSl9dmFyIGM9YShyLG8pLHU9MCxoPWNbZSsxXTtmb3Iocz0wO3M8aC5sZW5ndGg7KytzKXUrPWhbc107dmFyIGY9bmV3IEFycmF5KGUpO2ZvcihzPTA7czxlOysrcyl7aD1jW3NdO3ZhciBwPTA7Zm9yKGw9MDtsPGgubGVuZ3RoOysrbClwKz1oW2xdO2Zbc109cC91fXJldHVybiBmfWZ1bmN0aW9uIHModCl7aWYoMD09PXQubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgZT10WzBdLmxlbmd0aCxyPW4oW2VdKSxhPW8odCksaT0wO2k8dC5sZW5ndGg7KytpKWZvcih2YXIgcz0wO3M8ZTsrK3MpcltzXSs9dFtpXVtzXSphW2ldO3JldHVybiByfXMuYmFyeWNlbmV0cmljPW8sZS5leHBvcnRzPXN9LHtkdXA6MTcyLCJyb2J1c3QtbGluZWFyLXNvbHZlIjo1MDh9XSwxMTY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW4odCkscj0wLGE9MDthPHQubGVuZ3RoOysrYSlmb3IodmFyIGk9dFthXSxvPTA7bzxlLmxlbmd0aDsrK28pcis9TWF0aC5wb3coaVtvXS1lW29dLDIpO3JldHVybiBNYXRoLnNxcnQoci90Lmxlbmd0aCl9O3ZhciBuPXQoImNpcmN1bWNlbnRlciIpfSx7Y2lyY3VtY2VudGVyOjExNX1dLDExNzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGU8cj90PGU/ZTp0PnI/cjp0OnQ8cj9yOnQ+ZT9lOnR9fSx7fV0sMTE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG47aWYocil7bj1lO2Zvcih2YXIgYT1uZXcgQXJyYXkoZS5sZW5ndGgpLGk9MDtpPGUubGVuZ3RoOysraSl7dmFyIG89ZVtpXTthW2ldPVtvWzBdLG9bMV0scltpXV19ZT1hfXZhciBzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1kKHQsW10scCh0KSk7cmV0dXJuIG0oZSxuLHIpLCEhbn0odCxlLCEhcik7Zm9yKDt5KHQsZSwhIXIpOylzPSEwO2lmKHImJnMpe24ubGVuZ3RoPTAsci5sZW5ndGg9MDtmb3IodmFyIGk9MDtpPGUubGVuZ3RoOysraSl7dmFyIG89ZVtpXTtuLnB1c2goW29bMF0sb1sxXV0pLHIucHVzaChvWzJdKX19cmV0dXJuIHN9O3ZhciBuPXQoInVuaW9uLWZpbmQiKSxhPXQoImJveC1pbnRlcnNlY3QiKSxpPXQoInJvYnVzdC1zZWdtZW50LWludGVyc2VjdCIpLG89dCgiYmlnLXJhdCIpLHM9dCgiYmlnLXJhdC9jbXAiKSxsPXQoImJpZy1yYXQvdG8tZmxvYXQiKSxjPXQoInJhdC12ZWMiKSx1PXQoIm5leHRhZnRlciIpLGg9dCgiLi9saWIvcmF0LXNlZy1pbnRlcnNlY3QiKTtmdW5jdGlvbiBmKHQpe3ZhciBlPWwodCk7cmV0dXJuW3UoZSwtMS8wKSx1KGUsMS8wKV19ZnVuY3Rpb24gcCh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBuPXRbcl07ZVtyXT1bdShuWzBdLC0xLzApLHUoblsxXSwtMS8wKSx1KG5bMF0sMS8wKSx1KG5bMV0sMS8wKV19cmV0dXJuIGV9ZnVuY3Rpb24gZCh0LGUscil7Zm9yKHZhciBpPWUubGVuZ3RoLG89bmV3IG4oaSkscz1bXSxsPTA7bDxlLmxlbmd0aDsrK2wpe3ZhciBjPWVbbF0saD1mKGNbMF0pLHA9ZihjWzFdKTtzLnB1c2goW3UoaFswXSwtMS8wKSx1KHBbMF0sLTEvMCksdShoWzFdLDEvMCksdShwWzFdLDEvMCldKX1hKHMsZnVuY3Rpb24odCxlKXtvLmxpbmsodCxlKX0pO3ZhciBkPSEwLGc9bmV3IEFycmF5KGkpO2ZvcihsPTA7bDxpOysrbCl7KG09by5maW5kKGwpKSE9PWwmJihkPSExLHRbbV09W01hdGgubWluKHRbbF1bMF0sdFttXVswXSksTWF0aC5taW4odFtsXVsxXSx0W21dWzFdKV0pfWlmKGQpcmV0dXJuIG51bGw7dmFyIHY9MDtmb3IobD0wO2w8aTsrK2wpe3ZhciBtOyhtPW8uZmluZChsKSk9PT1sPyhnW2xdPXYsdFt2KytdPXRbbF0pOmdbbF09LTF9dC5sZW5ndGg9djtmb3IobD0wO2w8aTsrK2wpZ1tsXTwwJiYoZ1tsXT1nW28uZmluZChsKV0pO3JldHVybiBnfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFdLWVbMV19ZnVuY3Rpb24gdih0LGUpe3ZhciByPXRbMF0tZVswXXx8dFsxXS1lWzFdO3JldHVybiByfHwodFsyXTxlWzJdPy0xOnRbMl0+ZVsyXT8xOjApfWZ1bmN0aW9uIG0odCxlLHIpe2lmKDAhPT10Lmxlbmd0aCl7aWYoZSlmb3IodmFyIG49MDtuPHQubGVuZ3RoOysrbil7dmFyIGE9ZVsobz10W25dKVswXV0saT1lW29bMV1dO29bMF09TWF0aC5taW4oYSxpKSxvWzFdPU1hdGgubWF4KGEsaSl9ZWxzZSBmb3Iobj0wO248dC5sZW5ndGg7KytuKXt2YXIgbzthPShvPXRbbl0pWzBdLGk9b1sxXTtvWzBdPU1hdGgubWluKGEsaSksb1sxXT1NYXRoLm1heChhLGkpfXI/dC5zb3J0KHYpOnQuc29ydChnKTt2YXIgcz0xO2ZvcihuPTE7bjx0Lmxlbmd0aDsrK24pe3ZhciBsPXRbbi0xXSxjPXRbbl07KGNbMF0hPT1sWzBdfHxjWzFdIT09bFsxXXx8ciYmY1syXSE9PWxbMl0pJiYodFtzKytdPWMpfXQubGVuZ3RoPXN9fWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheShlLmxlbmd0aCksbj0wO248ZS5sZW5ndGg7KytuKXt2YXIgYT1lW25dLGk9dFthWzBdXSxvPXRbYVsxXV07cltuXT1bdShNYXRoLm1pbihpWzBdLG9bMF0pLC0xLzApLHUoTWF0aC5taW4oaVsxXSxvWzFdKSwtMS8wKSx1KE1hdGgubWF4KGlbMF0sb1swXSksMS8wKSx1KE1hdGgubWF4KGlbMV0sb1sxXSksMS8wKV19cmV0dXJuIHJ9KHQsZSksZj1mdW5jdGlvbih0LGUscil7dmFyIG49W107cmV0dXJuIGEocixmdW5jdGlvbihyLGEpe3ZhciBvPWVbcl0scz1lW2FdO2lmKG9bMF0hPT1zWzBdJiZvWzBdIT09c1sxXSYmb1sxXSE9PXNbMF0mJm9bMV0hPT1zWzFdKXt2YXIgbD10W29bMF1dLGM9dFtvWzFdXSx1PXRbc1swXV0saD10W3NbMV1dO2kobCxjLHUsaCkmJm4ucHVzaChbcixhXSl9fSksbn0odCxlLG4pLGc9cCh0KSx2PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBvPVtdO3JldHVybiBhKHIsbixmdW5jdGlvbihyLG4pe3ZhciBhPWVbcl07aWYoYVswXSE9PW4mJmFbMV0hPT1uKXt2YXIgcz10W25dLGw9dFthWzBdXSxjPXRbYVsxXV07aShsLGMscyxzKSYmby5wdXNoKFtyLG5dKX19KSxvfSh0LGUsbixnKSx5PWQodCxmdW5jdGlvbih0LGUscixuLGEpe3ZhciBpLHUsZj10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm5bbyh0WzBdKSxvKHRbMV0pXX0pO2ZvcihpPTA7aTxyLmxlbmd0aDsrK2kpe3ZhciBwPXJbaV07dT1wWzBdO3ZhciBkPXBbMV0sZz1lW3VdLHY9ZVtkXSxtPWgoYyh0W2dbMF1dKSxjKHRbZ1sxXV0pLGModFt2WzBdXSksYyh0W3ZbMV1dKSk7aWYobSl7dmFyIHk9dC5sZW5ndGg7dC5wdXNoKFtsKG1bMF0pLGwobVsxXSldKSxmLnB1c2gobSksbi5wdXNoKFt1LHldLFtkLHldKX19Zm9yKG4uc29ydChmdW5jdGlvbih0LGUpe2lmKHRbMF0hPT1lWzBdKXJldHVybiB0WzBdLWVbMF07dmFyIHI9Zlt0WzFdXSxuPWZbZVsxXV07cmV0dXJuIHMoclswXSxuWzBdKXx8cyhyWzFdLG5bMV0pfSksaT1uLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgeD1lW3U9KFM9bltpXSlbMF1dLGI9eFswXSxfPXhbMV0sdz10W2JdLGs9dFtfXTtpZigod1swXS1rWzBdfHx3WzFdLWtbMV0pPDApe3ZhciBUPWI7Yj1fLF89VH14WzBdPWI7dmFyIE0sQT14WzFdPVNbMV07Zm9yKGEmJihNPXhbMl0pO2k+MCYmbltpLTFdWzBdPT09dTspe3ZhciBTLEU9KFM9blstLWldKVsxXTthP2UucHVzaChbQSxFLE1dKTplLnB1c2goW0EsRV0pLEE9RX1hP2UucHVzaChbQSxfLE1dKTplLnB1c2goW0EsX10pfXJldHVybiBmfSh0LGUsZix2LHIpKTtyZXR1cm4gbShlLHksciksISF5fHwoZi5sZW5ndGg+MHx8di5sZW5ndGg+MCl9fSx7Ii4vbGliL3JhdC1zZWctaW50ZXJzZWN0IjoxMTksImJpZy1yYXQiOjgwLCJiaWctcmF0L2NtcCI6NzgsImJpZy1yYXQvdG8tZmxvYXQiOjkyLCJib3gtaW50ZXJzZWN0Ijo5OCxuZXh0YWZ0ZXI6NDUzLCJyYXQtdmVjIjo0ODgsInJvYnVzdC1zZWdtZW50LWludGVyc2VjdCI6NTEyLCJ1bmlvbi1maW5kIjo1NDV9XSwxMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXMoZSx0KSxoPXMobixyKSxmPXUoaSxoKTtpZigwPT09byhmKSlyZXR1cm4gbnVsbDt2YXIgcD1zKHQsciksZD11KGgscCksZz1hKGQsZiksdj1jKGksZyk7cmV0dXJuIGwodCx2KX07dmFyIG49dCgiYmlnLXJhdC9tdWwiKSxhPXQoImJpZy1yYXQvZGl2IiksaT10KCJiaWctcmF0L3N1YiIpLG89dCgiYmlnLXJhdC9zaWduIikscz10KCJyYXQtdmVjL3N1YiIpLGw9dCgicmF0LXZlYy9hZGQiKSxjPXQoInJhdC12ZWMvbXVscyIpO2Z1bmN0aW9uIHUodCxlKXtyZXR1cm4gaShuKHRbMF0sZVsxXSksbih0WzFdLGVbMF0pKX19LHsiYmlnLXJhdC9kaXYiOjc5LCJiaWctcmF0L211bCI6ODksImJpZy1yYXQvc2lnbiI6OTAsImJpZy1yYXQvc3ViIjo5MSwicmF0LXZlYy9hZGQiOjQ4NywicmF0LXZlYy9tdWxzIjo0ODksInJhdC12ZWMvc3ViIjo0OTB9XSwxMjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY2xhbXAiKTtmdW5jdGlvbiBhKHQsZSl7bnVsbD09ZSYmKGU9ITApO3ZhciByPXRbMF0sYT10WzFdLGk9dFsyXSxvPXRbM107cmV0dXJuIG51bGw9PW8mJihvPWU/MToyNTUpLGUmJihyKj0yNTUsYSo9MjU1LGkqPTI1NSxvKj0yNTUpLDE2Nzc3MjE2KihyPTI1NSZuKHIsMCwyNTUpKSsoKGE9MjU1Jm4oYSwwLDI1NSkpPDwxNikrKChpPTI1NSZuKGksMCwyNTUpKTw8OCkrKG89MjU1Jm4obywwLDI1NSkpfWUuZXhwb3J0cz1hLGUuZXhwb3J0cy50bz1hLGUuZXhwb3J0cy5mcm9tPWZ1bmN0aW9uKHQsZSl7dmFyIHI9KHQ9K3QpPj4+MjQsbj0oMTY3MTE2ODAmdCk+Pj4xNixhPSg2NTI4MCZ0KT4+PjgsaT0yNTUmdDtyZXR1cm4hMT09PWU/W3IsbixhLGldOltyLzI1NSxuLzI1NSxhLzI1NSxpLzI1NV19fSx7Y2xhbXA6MTE3fV0sMTIxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YWxpY2VibHVlOlsyNDAsMjQ4LDI1NV0sYW50aXF1ZXdoaXRlOlsyNTAsMjM1LDIxNV0sYXF1YTpbMCwyNTUsMjU1XSxhcXVhbWFyaW5lOlsxMjcsMjU1LDIxMl0sYXp1cmU6WzI0MCwyNTUsMjU1XSxiZWlnZTpbMjQ1LDI0NSwyMjBdLGJpc3F1ZTpbMjU1LDIyOCwxOTZdLGJsYWNrOlswLDAsMF0sYmxhbmNoZWRhbG1vbmQ6WzI1NSwyMzUsMjA1XSxibHVlOlswLDAsMjU1XSxibHVldmlvbGV0OlsxMzgsNDMsMjI2XSxicm93bjpbMTY1LDQyLDQyXSxidXJseXdvb2Q6WzIyMiwxODQsMTM1XSxjYWRldGJsdWU6Wzk1LDE1OCwxNjBdLGNoYXJ0cmV1c2U6WzEyNywyNTUsMF0sY2hvY29sYXRlOlsyMTAsMTA1LDMwXSxjb3JhbDpbMjU1LDEyNyw4MF0sY29ybmZsb3dlcmJsdWU6WzEwMCwxNDksMjM3XSxjb3Juc2lsazpbMjU1LDI0OCwyMjBdLGNyaW1zb246WzIyMCwyMCw2MF0sY3lhbjpbMCwyNTUsMjU1XSxkYXJrYmx1ZTpbMCwwLDEzOV0sZGFya2N5YW46WzAsMTM5LDEzOV0sZGFya2dvbGRlbnJvZDpbMTg0LDEzNCwxMV0sZGFya2dyYXk6WzE2OSwxNjksMTY5XSxkYXJrZ3JlZW46WzAsMTAwLDBdLGRhcmtncmV5OlsxNjksMTY5LDE2OV0sZGFya2toYWtpOlsxODksMTgzLDEwN10sZGFya21hZ2VudGE6WzEzOSwwLDEzOV0sZGFya29saXZlZ3JlZW46Wzg1LDEwNyw0N10sZGFya29yYW5nZTpbMjU1LDE0MCwwXSxkYXJrb3JjaGlkOlsxNTMsNTAsMjA0XSxkYXJrcmVkOlsxMzksMCwwXSxkYXJrc2FsbW9uOlsyMzMsMTUwLDEyMl0sZGFya3NlYWdyZWVuOlsxNDMsMTg4LDE0M10sZGFya3NsYXRlYmx1ZTpbNzIsNjEsMTM5XSxkYXJrc2xhdGVncmF5Ols0Nyw3OSw3OV0sZGFya3NsYXRlZ3JleTpbNDcsNzksNzldLGRhcmt0dXJxdW9pc2U6WzAsMjA2LDIwOV0sZGFya3Zpb2xldDpbMTQ4LDAsMjExXSxkZWVwcGluazpbMjU1LDIwLDE0N10sZGVlcHNreWJsdWU6WzAsMTkxLDI1NV0sZGltZ3JheTpbMTA1LDEwNSwxMDVdLGRpbWdyZXk6WzEwNSwxMDUsMTA1XSxkb2RnZXJibHVlOlszMCwxNDQsMjU1XSxmaXJlYnJpY2s6WzE3OCwzNCwzNF0sZmxvcmFsd2hpdGU6WzI1NSwyNTAsMjQwXSxmb3Jlc3RncmVlbjpbMzQsMTM5LDM0XSxmdWNoc2lhOlsyNTUsMCwyNTVdLGdhaW5zYm9ybzpbMjIwLDIyMCwyMjBdLGdob3N0d2hpdGU6WzI0OCwyNDgsMjU1XSxnb2xkOlsyNTUsMjE1LDBdLGdvbGRlbnJvZDpbMjE4LDE2NSwzMl0sZ3JheTpbMTI4LDEyOCwxMjhdLGdyZWVuOlswLDEyOCwwXSxncmVlbnllbGxvdzpbMTczLDI1NSw0N10sZ3JleTpbMTI4LDEyOCwxMjhdLGhvbmV5ZGV3OlsyNDAsMjU1LDI0MF0saG90cGluazpbMjU1LDEwNSwxODBdLGluZGlhbnJlZDpbMjA1LDkyLDkyXSxpbmRpZ286Wzc1LDAsMTMwXSxpdm9yeTpbMjU1LDI1NSwyNDBdLGtoYWtpOlsyNDAsMjMwLDE0MF0sbGF2ZW5kZXI6WzIzMCwyMzAsMjUwXSxsYXZlbmRlcmJsdXNoOlsyNTUsMjQwLDI0NV0sbGF3bmdyZWVuOlsxMjQsMjUyLDBdLGxlbW9uY2hpZmZvbjpbMjU1LDI1MCwyMDVdLGxpZ2h0Ymx1ZTpbMTczLDIxNiwyMzBdLGxpZ2h0Y29yYWw6WzI0MCwxMjgsMTI4XSxsaWdodGN5YW46WzIyNCwyNTUsMjU1XSxsaWdodGdvbGRlbnJvZHllbGxvdzpbMjUwLDI1MCwyMTBdLGxpZ2h0Z3JheTpbMjExLDIxMSwyMTFdLGxpZ2h0Z3JlZW46WzE0NCwyMzgsMTQ0XSxsaWdodGdyZXk6WzIxMSwyMTEsMjExXSxsaWdodHBpbms6WzI1NSwxODIsMTkzXSxsaWdodHNhbG1vbjpbMjU1LDE2MCwxMjJdLGxpZ2h0c2VhZ3JlZW46WzMyLDE3OCwxNzBdLGxpZ2h0c2t5Ymx1ZTpbMTM1LDIwNiwyNTBdLGxpZ2h0c2xhdGVncmF5OlsxMTksMTM2LDE1M10sbGlnaHRzbGF0ZWdyZXk6WzExOSwxMzYsMTUzXSxsaWdodHN0ZWVsYmx1ZTpbMTc2LDE5NiwyMjJdLGxpZ2h0eWVsbG93OlsyNTUsMjU1LDIyNF0sbGltZTpbMCwyNTUsMF0sbGltZWdyZWVuOls1MCwyMDUsNTBdLGxpbmVuOlsyNTAsMjQwLDIzMF0sbWFnZW50YTpbMjU1LDAsMjU1XSxtYXJvb246WzEyOCwwLDBdLG1lZGl1bWFxdWFtYXJpbmU6WzEwMiwyMDUsMTcwXSxtZWRpdW1ibHVlOlswLDAsMjA1XSxtZWRpdW1vcmNoaWQ6WzE4Niw4NSwyMTFdLG1lZGl1bXB1cnBsZTpbMTQ3LDExMiwyMTldLG1lZGl1bXNlYWdyZWVuOls2MCwxNzksMTEzXSxtZWRpdW1zbGF0ZWJsdWU6WzEyMywxMDQsMjM4XSxtZWRpdW1zcHJpbmdncmVlbjpbMCwyNTAsMTU0XSxtZWRpdW10dXJxdW9pc2U6WzcyLDIwOSwyMDRdLG1lZGl1bXZpb2xldHJlZDpbMTk5LDIxLDEzM10sbWlkbmlnaHRibHVlOlsyNSwyNSwxMTJdLG1pbnRjcmVhbTpbMjQ1LDI1NSwyNTBdLG1pc3R5cm9zZTpbMjU1LDIyOCwyMjVdLG1vY2Nhc2luOlsyNTUsMjI4LDE4MV0sbmF2YWpvd2hpdGU6WzI1NSwyMjIsMTczXSxuYXZ5OlswLDAsMTI4XSxvbGRsYWNlOlsyNTMsMjQ1LDIzMF0sb2xpdmU6WzEyOCwxMjgsMF0sb2xpdmVkcmFiOlsxMDcsMTQyLDM1XSxvcmFuZ2U6WzI1NSwxNjUsMF0sb3JhbmdlcmVkOlsyNTUsNjksMF0sb3JjaGlkOlsyMTgsMTEyLDIxNF0scGFsZWdvbGRlbnJvZDpbMjM4LDIzMiwxNzBdLHBhbGVncmVlbjpbMTUyLDI1MSwxNTJdLHBhbGV0dXJxdW9pc2U6WzE3NSwyMzgsMjM4XSxwYWxldmlvbGV0cmVkOlsyMTksMTEyLDE0N10scGFwYXlhd2hpcDpbMjU1LDIzOSwyMTNdLHBlYWNocHVmZjpbMjU1LDIxOCwxODVdLHBlcnU6WzIwNSwxMzMsNjNdLHBpbms6WzI1NSwxOTIsMjAzXSxwbHVtOlsyMjEsMTYwLDIyMV0scG93ZGVyYmx1ZTpbMTc2LDIyNCwyMzBdLHB1cnBsZTpbMTI4LDAsMTI4XSxyZWJlY2NhcHVycGxlOlsxMDIsNTEsMTUzXSxyZWQ6WzI1NSwwLDBdLHJvc3licm93bjpbMTg4LDE0MywxNDNdLHJveWFsYmx1ZTpbNjUsMTA1LDIyNV0sc2FkZGxlYnJvd246WzEzOSw2OSwxOV0sc2FsbW9uOlsyNTAsMTI4LDExNF0sc2FuZHlicm93bjpbMjQ0LDE2NCw5Nl0sc2VhZ3JlZW46WzQ2LDEzOSw4N10sc2Vhc2hlbGw6WzI1NSwyNDUsMjM4XSxzaWVubmE6WzE2MCw4Miw0NV0sc2lsdmVyOlsxOTIsMTkyLDE5Ml0sc2t5Ymx1ZTpbMTM1LDIwNiwyMzVdLHNsYXRlYmx1ZTpbMTA2LDkwLDIwNV0sc2xhdGVncmF5OlsxMTIsMTI4LDE0NF0sc2xhdGVncmV5OlsxMTIsMTI4LDE0NF0sc25vdzpbMjU1LDI1MCwyNTBdLHNwcmluZ2dyZWVuOlswLDI1NSwxMjddLHN0ZWVsYmx1ZTpbNzAsMTMwLDE4MF0sdGFuOlsyMTAsMTgwLDE0MF0sdGVhbDpbMCwxMjgsMTI4XSx0aGlzdGxlOlsyMTYsMTkxLDIxNl0sdG9tYXRvOlsyNTUsOTksNzFdLHR1cnF1b2lzZTpbNjQsMjI0LDIwOF0sdmlvbGV0OlsyMzgsMTMwLDIzOF0sd2hlYXQ6WzI0NSwyMjIsMTc5XSx3aGl0ZTpbMjU1LDI1NSwyNTVdLHdoaXRlc21va2U6WzI0NSwyNDUsMjQ1XSx5ZWxsb3c6WzI1NSwyNTUsMF0seWVsbG93Z3JlZW46WzE1NCwyMDUsNTBdfX0se31dLDEyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjb2xvci1yZ2JhIiksYT10KCJjbGFtcCIpLGk9dCgiZHR5cGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXsiZmxvYXQiIT09ZSYmZXx8KGU9ImFycmF5IiksInVpbnQiPT09ZSYmKGU9InVpbnQ4IiksInVpbnRfY2xhbXBlZCI9PT1lJiYoZT0idWludDhfY2xhbXBlZCIpO3ZhciByPW5ldyhpKGUpKSg0KSxvPSJ1aW50OCIhPT1lJiYidWludDhfY2xhbXBlZCIhPT1lO3JldHVybiB0Lmxlbmd0aCYmInN0cmluZyIhPXR5cGVvZiB0fHwoKHQ9bih0KSlbMF0vPTI1NSx0WzFdLz0yNTUsdFsyXS89MjU1KSxmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8ISEoQXJyYXkuaXNBcnJheSh0KSYmKHRbMF0+MXx8MD09PXRbMF0pJiYodFsxXT4xfHwwPT09dFsxXSkmJih0WzJdPjF8fDA9PT10WzJdKSYmKCF0WzNdfHx0WzNdPjEpKX0odCk/KHJbMF09dFswXSxyWzFdPXRbMV0sclsyXT10WzJdLHJbM109bnVsbCE9dFszXT90WzNdOjI1NSxvJiYoclswXS89MjU1LHJbMV0vPTI1NSxyWzJdLz0yNTUsclszXS89MjU1KSxyKToobz8oclswXT10WzBdLHJbMV09dFsxXSxyWzJdPXRbMl0sclszXT1udWxsIT10WzNdP3RbM106MSk6KHJbMF09YShNYXRoLmZsb29yKDI1NSp0WzBdKSwwLDI1NSksclsxXT1hKE1hdGguZmxvb3IoMjU1KnRbMV0pLDAsMjU1KSxyWzJdPWEoTWF0aC5mbG9vcigyNTUqdFsyXSksMCwyNTUpLHJbM109bnVsbD09dFszXT8yNTU6YShNYXRoLmZsb29yKDI1NSp0WzNdKSwwLDI1NSkpLHIpfX0se2NsYW1wOjExNywiY29sb3ItcmdiYSI6MTI0LGR0eXBlOjE3MX1dLDEyMzpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY29sb3ItbmFtZSIpLGE9dCgiaXMtcGxhaW4tb2JqIiksaT10KCJkZWZpbmVkIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHMsbD1bXSxjPTE7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKG5bdF0pbD1uW3RdLnNsaWNlKCkscz0icmdiIjtlbHNlIGlmKCJ0cmFuc3BhcmVudCI9PT10KWM9MCxzPSJyZ2IiLGw9WzAsMCwwXTtlbHNlIGlmKC9eI1tBLUZhLWYwLTldKyQvLnRlc3QodCkpe3ZhciB1PXQuc2xpY2UoMSksaD11Lmxlbmd0aCxmPWg8PTQ7Yz0xLGY/KGw9W3BhcnNlSW50KHVbMF0rdVswXSwxNikscGFyc2VJbnQodVsxXSt1WzFdLDE2KSxwYXJzZUludCh1WzJdK3VbMl0sMTYpXSw0PT09aCYmKGM9cGFyc2VJbnQodVszXSt1WzNdLDE2KS8yNTUpKToobD1bcGFyc2VJbnQodVswXSt1WzFdLDE2KSxwYXJzZUludCh1WzJdK3VbM10sMTYpLHBhcnNlSW50KHVbNF0rdVs1XSwxNildLDg9PT1oJiYoYz1wYXJzZUludCh1WzZdK3VbN10sMTYpLzI1NSkpLGxbMF18fChsWzBdPTApLGxbMV18fChsWzFdPTApLGxbMl18fChsWzJdPTApLHM9InJnYiJ9ZWxzZSBpZihlPS9eKCg/OnJnYnxoc1tsdmJdfGh3YnxjbXlrP3x4eVt6eV18Z3JheXxsYWJ8bGNodT92P3xbbHlddXZ8bG1zKWE/KVxzKlwoKFteXCldKilcKS8uZXhlYyh0KSl7dmFyIHA9ZVsxXSxkPSJyZ2IiPT09cCx1PXAucmVwbGFjZSgvYSQvLCIiKTtzPXU7dmFyIGg9ImNteWsiPT09dT80OiJncmF5Ij09PXU/MTozO2w9ZVsyXS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoZnVuY3Rpb24odCxlKXtpZigvJSQvLnRlc3QodCkpcmV0dXJuIGU9PT1oP3BhcnNlRmxvYXQodCkvMTAwOiJyZ2IiPT09dT8yNTUqcGFyc2VGbG9hdCh0KS8xMDA6cGFyc2VGbG9hdCh0KTtpZigiaCI9PT11W2VdKXtpZigvZGVnJC8udGVzdCh0KSlyZXR1cm4gcGFyc2VGbG9hdCh0KTtpZih2b2lkIDAhPT1vW3RdKXJldHVybiBvW3RdfXJldHVybiBwYXJzZUZsb2F0KHQpfSkscD09PXUmJmwucHVzaCgxKSxjPWQ/MTp2b2lkIDA9PT1sW2hdPzE6bFtoXSxsPWwuc2xpY2UoMCxoKX1lbHNlIHQubGVuZ3RoPjEwJiYvWzAtOV0oPzpcc3xcLykvLnRlc3QodCkmJihsPXQubWF0Y2goLyhbMC05XSspL2cpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KX0pLHM9dC5tYXRjaCgvKFthLXpdKS9naSkuam9pbigiIikudG9Mb3dlckNhc2UoKSk7ZWxzZSBpZihpc05hTih0KSlpZihhKHQpKXt2YXIgZz1pKHQucix0LnJlZCx0LlIsbnVsbCk7bnVsbCE9PWc/KHM9InJnYiIsbD1bZyxpKHQuZyx0LmdyZWVuLHQuRyksaSh0LmIsdC5ibHVlLHQuQildKToocz0iaHNsIixsPVtpKHQuaCx0Lmh1ZSx0LkgpLGkodC5zLHQuc2F0dXJhdGlvbix0LlMpLGkodC5sLHQubGlnaHRuZXNzLHQuTCx0LmIsdC5icmlnaHRuZXNzKV0pLGM9aSh0LmEsdC5hbHBoYSx0Lm9wYWNpdHksMSksbnVsbCE9dC5vcGFjaXR5JiYoYy89MTAwKX1lbHNlKEFycmF5LmlzQXJyYXkodCl8fHIuQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldyYmQXJyYXlCdWZmZXIuaXNWaWV3KHQpKSYmKGw9W3RbMF0sdFsxXSx0WzJdXSxzPSJyZ2IiLGM9ND09PXQubGVuZ3RoP3RbM106MSk7ZWxzZSBzPSJyZ2IiLGw9W3Q+Pj4xNiwoNjUyODAmdCk+Pj44LDI1NSZ0XTtyZXR1cm57c3BhY2U6cyx2YWx1ZXM6bCxhbHBoYTpjfX07dmFyIG89e3JlZDowLG9yYW5nZTo2MCx5ZWxsb3c6MTIwLGdyZWVuOjE4MCxibHVlOjI0MCxwdXJwbGU6MzAwfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyJjb2xvci1uYW1lIjoxMjEsZGVmaW5lZDoxNjYsImlzLXBsYWluLW9iaiI6NDI0fV0sMTI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNvbG9yLXBhcnNlIiksYT10KCJjb2xvci1zcGFjZS9oc2wiKSxpPXQoImNsYW1wIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHI9bih0KTtyZXR1cm4gci5zcGFjZT8oKGU9QXJyYXkoMykpWzBdPWkoci52YWx1ZXNbMF0sMCwyNTUpLGVbMV09aShyLnZhbHVlc1sxXSwwLDI1NSksZVsyXT1pKHIudmFsdWVzWzJdLDAsMjU1KSwiaCI9PT1yLnNwYWNlWzBdJiYoZT1hLnJnYihlKSksZS5wdXNoKGkoci5hbHBoYSwwLDEpKSxlKTpbXX19LHtjbGFtcDoxMTcsImNvbG9yLXBhcnNlIjoxMjMsImNvbG9yLXNwYWNlL2hzbCI6MTI1fV0sMTI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vcmdiIik7ZS5leHBvcnRzPXtuYW1lOiJoc2wiLG1pbjpbMCwwLDBdLG1heDpbMzYwLDEwMCwxMDBdLGNoYW5uZWw6WyJodWUiLCJzYXR1cmF0aW9uIiwibGlnaHRuZXNzIl0sYWxpYXM6WyJIU0wiXSxyZ2I6ZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaSxvPXRbMF0vMzYwLHM9dFsxXS8xMDAsbD10WzJdLzEwMDtpZigwPT09cylyZXR1cm5baT0yNTUqbCxpLGldO2U9MipsLShyPWw8LjU/bCooMStzKTpsK3MtbCpzKSxhPVswLDAsMF07Zm9yKHZhciBjPTA7YzwzO2MrKykobj1vKzEvMyotKGMtMSkpPDA/bisrOm4+MSYmbi0tLGk9NipuPDE/ZSs2KihyLWUpKm46MipuPDE/cjozKm48Mj9lKyhyLWUpKigyLzMtbikqNjplLGFbY109MjU1Kmk7cmV0dXJuIGF9fSxuLmhzbD1mdW5jdGlvbih0KXt2YXIgZSxyLG49dFswXS8yNTUsYT10WzFdLzI1NSxpPXRbMl0vMjU1LG89TWF0aC5taW4obixhLGkpLHM9TWF0aC5tYXgobixhLGkpLGw9cy1vO3JldHVybiBzPT09bz9lPTA6bj09PXM/ZT0oYS1pKS9sOmE9PT1zP2U9MisoaS1uKS9sOmk9PT1zJiYoZT00KyhuLWEpL2wpLChlPU1hdGgubWluKDYwKmUsMzYwKSk8MCYmKGUrPTM2MCkscj0obytzKS8yLFtlLDEwMCoocz09PW8/MDpyPD0uNT9sLyhzK28pOmwvKDItcy1vKSksMTAwKnJdfX0seyIuL3JnYiI6MTI2fV0sMTI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bmFtZToicmdiIixtaW46WzAsMCwwXSxtYXg6WzI1NSwyNTUsMjU1XSxjaGFubmVsOlsicmVkIiwiZ3JlZW4iLCJibHVlIl0sYWxpYXM6WyJSR0IiXX19LHt9XSwxMjc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9e2pldDpbe2luZGV4OjAscmdiOlswLDAsMTMxXX0se2luZGV4Oi4xMjUscmdiOlswLDYwLDE3MF19LHtpbmRleDouMzc1LHJnYjpbNSwyNTUsMjU1XX0se2luZGV4Oi42MjUscmdiOlsyNTUsMjU1LDBdfSx7aW5kZXg6Ljg3NSxyZ2I6WzI1MCwwLDBdfSx7aW5kZXg6MSxyZ2I6WzEyOCwwLDBdfV0saHN2Olt7aW5kZXg6MCxyZ2I6WzI1NSwwLDBdfSx7aW5kZXg6LjE2OSxyZ2I6WzI1MywyNTUsMl19LHtpbmRleDouMTczLHJnYjpbMjQ3LDI1NSwyXX0se2luZGV4Oi4zMzcscmdiOlswLDI1Miw0XX0se2luZGV4Oi4zNDEscmdiOlswLDI1MiwxMF19LHtpbmRleDouNTA2LHJnYjpbMSwyNDksMjU1XX0se2luZGV4Oi42NzEscmdiOlsyLDAsMjUzXX0se2luZGV4Oi42NzUscmdiOls4LDAsMjUzXX0se2luZGV4Oi44MzkscmdiOlsyNTUsMCwyNTFdfSx7aW5kZXg6Ljg0MyxyZ2I6WzI1NSwwLDI0NV19LHtpbmRleDoxLHJnYjpbMjU1LDAsNl19XSxob3Q6W3tpbmRleDowLHJnYjpbMCwwLDBdfSx7aW5kZXg6LjMscmdiOlsyMzAsMCwwXX0se2luZGV4Oi42LHJnYjpbMjU1LDIxMCwwXX0se2luZGV4OjEscmdiOlsyNTUsMjU1LDI1NV19XSxjb29sOlt7aW5kZXg6MCxyZ2I6WzAsMjU1LDI1NV19LHtpbmRleDoxLHJnYjpbMjU1LDAsMjU1XX1dLHNwcmluZzpbe2luZGV4OjAscmdiOlsyNTUsMCwyNTVdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMF19XSxzdW1tZXI6W3tpbmRleDowLHJnYjpbMCwxMjgsMTAyXX0se2luZGV4OjEscmdiOlsyNTUsMjU1LDEwMl19XSxhdXR1bW46W3tpbmRleDowLHJnYjpbMjU1LDAsMF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwwXX1dLHdpbnRlcjpbe2luZGV4OjAscmdiOlswLDAsMjU1XX0se2luZGV4OjEscmdiOlswLDI1NSwxMjhdfV0sYm9uZTpbe2luZGV4OjAscmdiOlswLDAsMF19LHtpbmRleDouMzc2LHJnYjpbODQsODQsMTE2XX0se2luZGV4Oi43NTMscmdiOlsxNjksMjAwLDIwMF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyNTVdfV0sY29wcGVyOlt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2luZGV4Oi44MDQscmdiOlsyNTUsMTYwLDEwMl19LHtpbmRleDoxLHJnYjpbMjU1LDE5OSwxMjddfV0sZ3JleXM6W3tpbmRleDowLHJnYjpbMCwwLDBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjU1XX1dLHlpZ25idTpbe2luZGV4OjAscmdiOls4LDI5LDg4XX0se2luZGV4Oi4xMjUscmdiOlszNyw1MiwxNDhdfSx7aW5kZXg6LjI1LHJnYjpbMzQsOTQsMTY4XX0se2luZGV4Oi4zNzUscmdiOlsyOSwxNDUsMTkyXX0se2luZGV4Oi41LHJnYjpbNjUsMTgyLDE5Nl19LHtpbmRleDouNjI1LHJnYjpbMTI3LDIwNSwxODddfSx7aW5kZXg6Ljc1LHJnYjpbMTk5LDIzMywxODBdfSx7aW5kZXg6Ljg3NSxyZ2I6WzIzNywyNDgsMjE3XX0se2luZGV4OjEscmdiOlsyNTUsMjU1LDIxN119XSxncmVlbnM6W3tpbmRleDowLHJnYjpbMCw2OCwyN119LHtpbmRleDouMTI1LHJnYjpbMCwxMDksNDRdfSx7aW5kZXg6LjI1LHJnYjpbMzUsMTM5LDY5XX0se2luZGV4Oi4zNzUscmdiOls2NSwxNzEsOTNdfSx7aW5kZXg6LjUscmdiOlsxMTYsMTk2LDExOF19LHtpbmRleDouNjI1LHJnYjpbMTYxLDIxNywxNTVdfSx7aW5kZXg6Ljc1LHJnYjpbMTk5LDIzMywxOTJdfSx7aW5kZXg6Ljg3NSxyZ2I6WzIyOSwyNDUsMjI0XX0se2luZGV4OjEscmdiOlsyNDcsMjUyLDI0NV19XSx5aW9ycmQ6W3tpbmRleDowLHJnYjpbMTI4LDAsMzhdfSx7aW5kZXg6LjEyNSxyZ2I6WzE4OSwwLDM4XX0se2luZGV4Oi4yNSxyZ2I6WzIyNywyNiwyOF19LHtpbmRleDouMzc1LHJnYjpbMjUyLDc4LDQyXX0se2luZGV4Oi41LHJnYjpbMjUzLDE0MSw2MF19LHtpbmRleDouNjI1LHJnYjpbMjU0LDE3OCw3Nl19LHtpbmRleDouNzUscmdiOlsyNTQsMjE3LDExOF19LHtpbmRleDouODc1LHJnYjpbMjU1LDIzNywxNjBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjA0XX1dLGJsdWVyZWQ6W3tpbmRleDowLHJnYjpbMCwwLDI1NV19LHtpbmRleDoxLHJnYjpbMjU1LDAsMF19XSxyZGJ1Olt7aW5kZXg6MCxyZ2I6WzUsMTAsMTcyXX0se2luZGV4Oi4zNSxyZ2I6WzEwNiwxMzcsMjQ3XX0se2luZGV4Oi41LHJnYjpbMTkwLDE5MCwxOTBdfSx7aW5kZXg6LjYscmdiOlsyMjAsMTcwLDEzMl19LHtpbmRleDouNyxyZ2I6WzIzMCwxNDUsOTBdfSx7aW5kZXg6MSxyZ2I6WzE3OCwxMCwyOF19XSxwaWNuaWM6W3tpbmRleDowLHJnYjpbMCwwLDI1NV19LHtpbmRleDouMSxyZ2I6WzUxLDE1MywyNTVdfSx7aW5kZXg6LjIscmdiOlsxMDIsMjA0LDI1NV19LHtpbmRleDouMyxyZ2I6WzE1MywyMDQsMjU1XX0se2luZGV4Oi40LHJnYjpbMjA0LDIwNCwyNTVdfSx7aW5kZXg6LjUscmdiOlsyNTUsMjU1LDI1NV19LHtpbmRleDouNixyZ2I6WzI1NSwyMDQsMjU1XX0se2luZGV4Oi43LHJnYjpbMjU1LDE1MywyNTVdfSx7aW5kZXg6LjgscmdiOlsyNTUsMTAyLDIwNF19LHtpbmRleDouOSxyZ2I6WzI1NSwxMDIsMTAyXX0se2luZGV4OjEscmdiOlsyNTUsMCwwXX1dLHJhaW5ib3c6W3tpbmRleDowLHJnYjpbMTUwLDAsOTBdfSx7aW5kZXg6LjEyNSxyZ2I6WzAsMCwyMDBdfSx7aW5kZXg6LjI1LHJnYjpbMCwyNSwyNTVdfSx7aW5kZXg6LjM3NSxyZ2I6WzAsMTUyLDI1NV19LHtpbmRleDouNSxyZ2I6WzQ0LDI1NSwxNTBdfSx7aW5kZXg6LjYyNSxyZ2I6WzE1MSwyNTUsMF19LHtpbmRleDouNzUscmdiOlsyNTUsMjM0LDBdfSx7aW5kZXg6Ljg3NSxyZ2I6WzI1NSwxMTEsMF19LHtpbmRleDoxLHJnYjpbMjU1LDAsMF19XSxwb3J0bGFuZDpbe2luZGV4OjAscmdiOlsxMiw1MSwxMzFdfSx7aW5kZXg6LjI1LHJnYjpbMTAsMTM2LDE4Nl19LHtpbmRleDouNSxyZ2I6WzI0MiwyMTEsNTZdfSx7aW5kZXg6Ljc1LHJnYjpbMjQyLDE0Myw1Nl19LHtpbmRleDoxLHJnYjpbMjE3LDMwLDMwXX1dLGJsYWNrYm9keTpbe2luZGV4OjAscmdiOlswLDAsMF19LHtpbmRleDouMixyZ2I6WzIzMCwwLDBdfSx7aW5kZXg6LjQscmdiOlsyMzAsMjEwLDBdfSx7aW5kZXg6LjcscmdiOlsyNTUsMjU1LDI1NV19LHtpbmRleDoxLHJnYjpbMTYwLDIwMCwyNTVdfV0sZWFydGg6W3tpbmRleDowLHJnYjpbMCwwLDEzMF19LHtpbmRleDouMSxyZ2I6WzAsMTgwLDE4MF19LHtpbmRleDouMixyZ2I6WzQwLDIxMCw0MF19LHtpbmRleDouNCxyZ2I6WzIzMCwyMzAsNTBdfSx7aW5kZXg6LjYscmdiOlsxMjAsNzAsMjBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjU1XX1dLGVsZWN0cmljOlt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2luZGV4Oi4xNSxyZ2I6WzMwLDAsMTAwXX0se2luZGV4Oi40LHJnYjpbMTIwLDAsMTAwXX0se2luZGV4Oi42LHJnYjpbMTYwLDkwLDBdfSx7aW5kZXg6LjgscmdiOlsyMzAsMjAwLDBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTAsMjIwXX1dLGFscGhhOlt7aW5kZXg6MCxyZ2I6WzI1NSwyNTUsMjU1LDBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjU1LDFdfV0sdmlyaWRpczpbe2luZGV4OjAscmdiOls2OCwxLDg0XX0se2luZGV4Oi4xMyxyZ2I6WzcxLDQ0LDEyMl19LHtpbmRleDouMjUscmdiOls1OSw4MSwxMzldfSx7aW5kZXg6LjM4LHJnYjpbNDQsMTEzLDE0Ml19LHtpbmRleDouNSxyZ2I6WzMzLDE0NCwxNDFdfSx7aW5kZXg6LjYzLHJnYjpbMzksMTczLDEyOV19LHtpbmRleDouNzUscmdiOls5MiwyMDAsOTldfSx7aW5kZXg6Ljg4LHJnYjpbMTcwLDIyMCw1MF19LHtpbmRleDoxLHJnYjpbMjUzLDIzMSwzN119XSxpbmZlcm5vOlt7aW5kZXg6MCxyZ2I6WzAsMCw0XX0se2luZGV4Oi4xMyxyZ2I6WzMxLDEyLDcyXX0se2luZGV4Oi4yNSxyZ2I6Wzg1LDE1LDEwOV19LHtpbmRleDouMzgscmdiOlsxMzYsMzQsMTA2XX0se2luZGV4Oi41LHJnYjpbMTg2LDU0LDg1XX0se2luZGV4Oi42MyxyZ2I6WzIyNyw4OSw1MV19LHtpbmRleDouNzUscmdiOlsyNDksMTQwLDEwXX0se2luZGV4Oi44OCxyZ2I6WzI0OSwyMDEsNTBdfSx7aW5kZXg6MSxyZ2I6WzI1MiwyNTUsMTY0XX1dLG1hZ21hOlt7aW5kZXg6MCxyZ2I6WzAsMCw0XX0se2luZGV4Oi4xMyxyZ2I6WzI4LDE2LDY4XX0se2luZGV4Oi4yNSxyZ2I6Wzc5LDE4LDEyM119LHtpbmRleDouMzgscmdiOlsxMjksMzcsMTI5XX0se2luZGV4Oi41LHJnYjpbMTgxLDU0LDEyMl19LHtpbmRleDouNjMscmdiOlsyMjksODAsMTAwXX0se2luZGV4Oi43NSxyZ2I6WzI1MSwxMzUsOTddfSx7aW5kZXg6Ljg4LHJnYjpbMjU0LDE5NCwxMzVdfSx7aW5kZXg6MSxyZ2I6WzI1MiwyNTMsMTkxXX1dLHBsYXNtYTpbe2luZGV4OjAscmdiOlsxMyw4LDEzNV19LHtpbmRleDouMTMscmdiOls3NSwzLDE2MV19LHtpbmRleDouMjUscmdiOlsxMjUsMywxNjhdfSx7aW5kZXg6LjM4LHJnYjpbMTY4LDM0LDE1MF19LHtpbmRleDouNSxyZ2I6WzIwMyw3MCwxMjFdfSx7aW5kZXg6LjYzLHJnYjpbMjI5LDEwNyw5M119LHtpbmRleDouNzUscmdiOlsyNDgsMTQ4LDY1XX0se2luZGV4Oi44OCxyZ2I6WzI1MywxOTUsNDBdfSx7aW5kZXg6MSxyZ2I6WzI0MCwyNDksMzNdfV0sd2FybTpbe2luZGV4OjAscmdiOlsxMjUsMCwxNzldfSx7aW5kZXg6LjEzLHJnYjpbMTcyLDAsMTg3XX0se2luZGV4Oi4yNSxyZ2I6WzIxOSwwLDE3MF19LHtpbmRleDouMzgscmdiOlsyNTUsMCwxMzBdfSx7aW5kZXg6LjUscmdiOlsyNTUsNjMsNzRdfSx7aW5kZXg6LjYzLHJnYjpbMjU1LDEyMywwXX0se2luZGV4Oi43NSxyZ2I6WzIzNCwxNzYsMF19LHtpbmRleDouODgscmdiOlsxOTAsMjI4LDBdfSx7aW5kZXg6MSxyZ2I6WzE0NywyNTUsMF19XSxjb29sOlt7aW5kZXg6MCxyZ2I6WzEyNSwwLDE3OV19LHtpbmRleDouMTMscmdiOlsxMTYsMCwyMThdfSx7aW5kZXg6LjI1LHJnYjpbOTgsNzQsMjM3XX0se2luZGV4Oi4zOCxyZ2I6WzY4LDE0NiwyMzFdfSx7aW5kZXg6LjUscmdiOlswLDIwNCwxOTddfSx7aW5kZXg6LjYzLHJnYjpbMCwyNDcsMTQ2XX0se2luZGV4Oi43NSxyZ2I6WzAsMjU1LDg4XX0se2luZGV4Oi44OCxyZ2I6WzQwLDI1NSw4XX0se2luZGV4OjEscmdiOlsxNDcsMjU1LDBdfV0sInJhaW5ib3ctc29mdCI6W3tpbmRleDowLHJnYjpbMTI1LDAsMTc5XX0se2luZGV4Oi4xLHJnYjpbMTk5LDAsMTgwXX0se2luZGV4Oi4yLHJnYjpbMjU1LDAsMTIxXX0se2luZGV4Oi4zLHJnYjpbMjU1LDEwOCwwXX0se2luZGV4Oi40LHJnYjpbMjIyLDE5NCwwXX0se2luZGV4Oi41LHJnYjpbMTUwLDI1NSwwXX0se2luZGV4Oi42LHJnYjpbMCwyNTUsNTVdfSx7aW5kZXg6LjcscmdiOlswLDI0NiwxNTBdfSx7aW5kZXg6LjgscmdiOls1MCwxNjcsMjIyXX0se2luZGV4Oi45LHJnYjpbMTAzLDUxLDIzNV19LHtpbmRleDoxLHJnYjpbMTI0LDAsMTg2XX1dLGJhdGh5bWV0cnk6W3tpbmRleDowLHJnYjpbNDAsMjYsNDRdfSx7aW5kZXg6LjEzLHJnYjpbNTksNDksOTBdfSx7aW5kZXg6LjI1LHJnYjpbNjQsNzYsMTM5XX0se2luZGV4Oi4zOCxyZ2I6WzYzLDExMCwxNTFdfSx7aW5kZXg6LjUscmdiOls3MiwxNDIsMTU4XX0se2luZGV4Oi42MyxyZ2I6Wzg1LDE3NCwxNjNdfSx7aW5kZXg6Ljc1LHJnYjpbMTIwLDIwNiwxNjNdfSx7aW5kZXg6Ljg4LHJnYjpbMTg3LDIzMCwxNzJdfSx7aW5kZXg6MSxyZ2I6WzI1MywyNTQsMjA0XX1dLGNkb206W3tpbmRleDowLHJnYjpbNDcsMTUsNjJdfSx7aW5kZXg6LjEzLHJnYjpbODcsMjMsODZdfSx7aW5kZXg6LjI1LHJnYjpbMTMwLDI4LDk5XX0se2luZGV4Oi4zOCxyZ2I6WzE3MSw0MSw5Nl19LHtpbmRleDouNSxyZ2I6WzIwNiw2Nyw4Nl19LHtpbmRleDouNjMscmdiOlsyMzAsMTA2LDg0XX0se2luZGV4Oi43NSxyZ2I6WzI0MiwxNDksMTAzXX0se2luZGV4Oi44OCxyZ2I6WzI0OSwxOTMsMTM1XX0se2luZGV4OjEscmdiOlsyNTQsMjM3LDE3Nl19XSxjaGxvcm9waHlsbDpbe2luZGV4OjAscmdiOlsxOCwzNiwyMF19LHtpbmRleDouMTMscmdiOlsyNSw2Myw0MV19LHtpbmRleDouMjUscmdiOlsyNCw5MSw1OV19LHtpbmRleDouMzgscmdiOlsxMywxMTksNzJdfSx7aW5kZXg6LjUscmdiOlsxOCwxNDgsODBdfSx7aW5kZXg6LjYzLHJnYjpbODAsMTczLDg5XX0se2luZGV4Oi43NSxyZ2I6WzEzMiwxOTYsMTIyXX0se2luZGV4Oi44OCxyZ2I6WzE3NSwyMjEsMTYyXX0se2luZGV4OjEscmdiOlsyMTUsMjQ5LDIwOF19XSxkZW5zaXR5Olt7aW5kZXg6MCxyZ2I6WzU0LDE0LDM2XX0se2luZGV4Oi4xMyxyZ2I6Wzg5LDIzLDgwXX0se2luZGV4Oi4yNSxyZ2I6WzExMCw0NSwxMzJdfSx7aW5kZXg6LjM4LHJnYjpbMTIwLDc3LDE3OF19LHtpbmRleDouNSxyZ2I6WzEyMCwxMTMsMjEzXX0se2luZGV4Oi42MyxyZ2I6WzExNSwxNTEsMjI4XX0se2luZGV4Oi43NSxyZ2I6WzEzNCwxODUsMjI3XX0se2luZGV4Oi44OCxyZ2I6WzE3NywyMTQsMjI3XX0se2luZGV4OjEscmdiOlsyMzAsMjQxLDI0MV19XSwiZnJlZXN1cmZhY2UtYmx1ZSI6W3tpbmRleDowLHJnYjpbMzAsNCwxMTBdfSx7aW5kZXg6LjEzLHJnYjpbNDcsMTQsMTc2XX0se2luZGV4Oi4yNSxyZ2I6WzQxLDQ1LDIzNl19LHtpbmRleDouMzgscmdiOlsyNSw5OSwyMTJdfSx7aW5kZXg6LjUscmdiOls2OCwxMzEsMjAwXX0se2luZGV4Oi42MyxyZ2I6WzExNCwxNTYsMTk3XX0se2luZGV4Oi43NSxyZ2I6WzE1NywxODEsMjAzXX0se2luZGV4Oi44OCxyZ2I6WzIwMCwyMDgsMjE2XX0se2luZGV4OjEscmdiOlsyNDEsMjM3LDIzNl19XSwiZnJlZXN1cmZhY2UtcmVkIjpbe2luZGV4OjAscmdiOls2MCw5LDE4XX0se2luZGV4Oi4xMyxyZ2I6WzEwMCwxNywyN119LHtpbmRleDouMjUscmdiOlsxNDIsMjAsMjldfSx7aW5kZXg6LjM4LHJnYjpbMTc3LDQzLDI3XX0se2luZGV4Oi41LHJnYjpbMTkyLDg3LDYzXX0se2luZGV4Oi42MyxyZ2I6WzIwNSwxMjUsMTA1XX0se2luZGV4Oi43NSxyZ2I6WzIxNiwxNjIsMTQ4XX0se2luZGV4Oi44OCxyZ2I6WzIyNywxOTksMTkzXX0se2luZGV4OjEscmdiOlsyNDEsMjM3LDIzNl19XSxveHlnZW46W3tpbmRleDowLHJnYjpbNjQsNSw1XX0se2luZGV4Oi4xMyxyZ2I6WzEwNiw2LDE1XX0se2luZGV4Oi4yNSxyZ2I6WzE0NCwyNiw3XX0se2luZGV4Oi4zOCxyZ2I6WzE2OCw2NCwzXX0se2luZGV4Oi41LHJnYjpbMTg4LDEwMCw0XX0se2luZGV4Oi42MyxyZ2I6WzIwNiwxMzYsMTFdfSx7aW5kZXg6Ljc1LHJnYjpbMjIwLDE3NCwyNV19LHtpbmRleDouODgscmdiOlsyMzEsMjE1LDQ0XX0se2luZGV4OjEscmdiOlsyNDgsMjU0LDEwNV19XSxwYXI6W3tpbmRleDowLHJnYjpbNTEsMjAsMjRdfSx7aW5kZXg6LjEzLHJnYjpbOTAsMzIsMzVdfSx7aW5kZXg6LjI1LHJnYjpbMTI5LDQ0LDM0XX0se2luZGV4Oi4zOCxyZ2I6WzE1OSw2OCwyNV19LHtpbmRleDouNSxyZ2I6WzE4Miw5OSwxOV19LHtpbmRleDouNjMscmdiOlsxOTksMTM0LDIyXX0se2luZGV4Oi43NSxyZ2I6WzIxMiwxNzEsMzVdfSx7aW5kZXg6Ljg4LHJnYjpbMjIxLDIxMCw1NF19LHtpbmRleDoxLHJnYjpbMjI1LDI1Myw3NV19XSxwaGFzZTpbe2luZGV4OjAscmdiOlsxNDUsMTA1LDE4XX0se2luZGV4Oi4xMyxyZ2I6WzE4NCw3MSwzOF19LHtpbmRleDouMjUscmdiOlsxODYsNTgsMTE1XX0se2luZGV4Oi4zOCxyZ2I6WzE2MCw3MSwxODVdfSx7aW5kZXg6LjUscmdiOlsxMTAsOTcsMjE4XX0se2luZGV4Oi42MyxyZ2I6WzUwLDEyMywxNjRdfSx7aW5kZXg6Ljc1LHJnYjpbMzEsMTMxLDExMF19LHtpbmRleDouODgscmdiOls3NywxMjksMzRdfSx7aW5kZXg6MSxyZ2I6WzE0NSwxMDUsMThdfV0sc2FsaW5pdHk6W3tpbmRleDowLHJnYjpbNDIsMjQsMTA4XX0se2luZGV4Oi4xMyxyZ2I6WzMzLDUwLDE2Ml19LHtpbmRleDouMjUscmdiOlsxNSw5MCwxNDVdfSx7aW5kZXg6LjM4LHJnYjpbNDAsMTE4LDEzN119LHtpbmRleDouNSxyZ2I6WzU5LDE0NiwxMzVdfSx7aW5kZXg6LjYzLHJnYjpbNzksMTc1LDEyNl19LHtpbmRleDouNzUscmdiOlsxMjAsMjAzLDEwNF19LHtpbmRleDouODgscmdiOlsxOTMsMjIxLDEwMF19LHtpbmRleDoxLHJnYjpbMjUzLDIzOSwxNTRdfV0sdGVtcGVyYXR1cmU6W3tpbmRleDowLHJnYjpbNCwzNSw1MV19LHtpbmRleDouMTMscmdiOlsyMyw1MSwxMjJdfSx7aW5kZXg6LjI1LHJnYjpbODUsNTksMTU3XX0se2luZGV4Oi4zOCxyZ2I6WzEyOSw3OSwxNDNdfSx7aW5kZXg6LjUscmdiOlsxNzUsOTUsMTMwXX0se2luZGV4Oi42MyxyZ2I6WzIyMiwxMTIsMTAxXX0se2luZGV4Oi43NSxyZ2I6WzI0OSwxNDYsNjZdfSx7aW5kZXg6Ljg4LHJnYjpbMjQ5LDE5Niw2NV19LHtpbmRleDoxLHJnYjpbMjMyLDI1MCw5MV19XSx0dXJiaWRpdHk6W3tpbmRleDowLHJnYjpbMzQsMzEsMjddfSx7aW5kZXg6LjEzLHJnYjpbNjUsNTAsNDFdfSx7aW5kZXg6LjI1LHJnYjpbOTgsNjksNTJdfSx7aW5kZXg6LjM4LHJnYjpbMTMxLDg5LDU3XX0se2luZGV4Oi41LHJnYjpbMTYxLDExMiw1OV19LHtpbmRleDouNjMscmdiOlsxODUsMTQwLDY2XX0se2luZGV4Oi43NSxyZ2I6WzIwMiwxNzQsODhdfSx7aW5kZXg6Ljg4LHJnYjpbMjE2LDIwOSwxMjZdfSx7aW5kZXg6MSxyZ2I6WzIzMywyNDYsMTcxXX1dLCJ2ZWxvY2l0eS1ibHVlIjpbe2luZGV4OjAscmdiOlsxNywzMiw2NF19LHtpbmRleDouMTMscmdiOlszNSw1MiwxMTZdfSx7aW5kZXg6LjI1LHJnYjpbMjksODEsMTU2XX0se2luZGV4Oi4zOCxyZ2I6WzMxLDExMywxNjJdfSx7aW5kZXg6LjUscmdiOls1MCwxNDQsMTY5XX0se2luZGV4Oi42MyxyZ2I6Wzg3LDE3MywxNzZdfSx7aW5kZXg6Ljc1LHJnYjpbMTQ5LDE5NiwxODldfSx7aW5kZXg6Ljg4LHJnYjpbMjAzLDIyMSwyMTFdfSx7aW5kZXg6MSxyZ2I6WzI1NCwyNTEsMjMwXX1dLCJ2ZWxvY2l0eS1ncmVlbiI6W3tpbmRleDowLHJnYjpbMjMsMzUsMTldfSx7aW5kZXg6LjEzLHJnYjpbMjQsNjQsMzhdfSx7aW5kZXg6LjI1LHJnYjpbMTEsOTUsNDVdfSx7aW5kZXg6LjM4LHJnYjpbMzksMTIzLDM1XX0se2luZGV4Oi41LHJnYjpbOTUsMTQ2LDEyXX0se2luZGV4Oi42MyxyZ2I6WzE1MiwxNjUsMThdfSx7aW5kZXg6Ljc1LHJnYjpbMjAxLDE4Niw2OV19LHtpbmRleDouODgscmdiOlsyMzMsMjE2LDEzN119LHtpbmRleDoxLHJnYjpbMjU1LDI1MywyMDVdfV0sY3ViZWhlbGl4Olt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2luZGV4Oi4wNyxyZ2I6WzIyLDUsNTldfSx7aW5kZXg6LjEzLHJnYjpbNjAsNCwxMDVdfSx7aW5kZXg6LjIscmdiOlsxMDksMSwxMzVdfSx7aW5kZXg6LjI3LHJnYjpbMTYxLDAsMTQ3XX0se2luZGV4Oi4zMyxyZ2I6WzIxMCwyLDE0Ml19LHtpbmRleDouNCxyZ2I6WzI1MSwxMSwxMjNdfSx7aW5kZXg6LjQ3LHJnYjpbMjU1LDI5LDk3XX0se2luZGV4Oi41MyxyZ2I6WzI1NSw1NCw2OV19LHtpbmRleDouNixyZ2I6WzI1NSw4NSw0Nl19LHtpbmRleDouNjcscmdiOlsyNTUsMTIwLDM0XX0se2luZGV4Oi43MyxyZ2I6WzI1NSwxNTcsMzddfSx7aW5kZXg6LjgscmdiOlsyNDEsMTkxLDU3XX0se2luZGV4Oi44NyxyZ2I6WzIyNCwyMjAsOTNdfSx7aW5kZXg6LjkzLHJnYjpbMjE4LDI0MSwxNDJdfSx7aW5kZXg6MSxyZ2I6WzIyNywyNTMsMTk4XX1dfX0se31dLDEyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbG9yU2NhbGUiKSxhPXQoImxlcnAiKTtmdW5jdGlvbiBpKHQpe3JldHVyblt0WzBdLzI1NSx0WzFdLzI1NSx0WzJdLzI1NSx0WzNdXX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZSxyPSIjIixuPTA7bjwzOysrbilyKz0oIjAwIisoZT0oZT10W25dKS50b1N0cmluZygxNikpKS5zdWJzdHIoZS5sZW5ndGgpO3JldHVybiByfWZ1bmN0aW9uIHModCl7cmV0dXJuInJnYmEoIit0LmpvaW4oIiwiKSsiKSJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbCxjLHUsaCxmLHAsZCxnO3R8fCh0PXt9KTtwPSh0Lm5zaGFkZXN8fDcyKS0xLGY9dC5mb3JtYXR8fCJoZXgiLChoPXQuY29sb3JtYXApfHwoaD0iamV0Iik7aWYoInN0cmluZyI9PXR5cGVvZiBoKXtpZihoPWgudG9Mb3dlckNhc2UoKSwhbltoXSl0aHJvdyBFcnJvcihoKyIgbm90IGEgc3VwcG9ydGVkIGNvbG9yc2NhbGUiKTt1PW5baF19ZWxzZXtpZighQXJyYXkuaXNBcnJheShoKSl0aHJvdyBFcnJvcigidW5zdXBwb3J0ZWQgY29sb3JtYXAgb3B0aW9uIixoKTt1PWguc2xpY2UoKX1pZih1Lmxlbmd0aD5wKzEpdGhyb3cgbmV3IEVycm9yKGgrIiBtYXAgcmVxdWlyZXMgbnNoYWRlcyB0byBiZSBhdCBsZWFzdCBzaXplICIrdS5sZW5ndGgpO2Q9QXJyYXkuaXNBcnJheSh0LmFscGhhKT8yIT09dC5hbHBoYS5sZW5ndGg/WzEsMV06dC5hbHBoYS5zbGljZSgpOiJudW1iZXIiPT10eXBlb2YgdC5hbHBoYT9bdC5hbHBoYSx0LmFscGhhXTpbMSwxXTtlPXUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQuaW5kZXgqcCl9KSxkWzBdPU1hdGgubWluKE1hdGgubWF4KGRbMF0sMCksMSksZFsxXT1NYXRoLm1pbihNYXRoLm1heChkWzFdLDApLDEpO3ZhciB2PXUubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dVtlXS5pbmRleCxuPXVbZV0ucmdiLnNsaWNlKCk7cmV0dXJuIDQ9PT1uLmxlbmd0aCYmblszXT49MCYmblszXTw9MT9uOihuWzNdPWRbMF0rKGRbMV0tZFswXSkqcixuKX0pLG09W107Zm9yKGc9MDtnPGUubGVuZ3RoLTE7KytnKXtjPWVbZysxXS1lW2ddLHI9dltnXSxsPXZbZysxXTtmb3IodmFyIHk9MDt5PGM7eSsrKXt2YXIgeD15L2M7bS5wdXNoKFtNYXRoLnJvdW5kKGEoclswXSxsWzBdLHgpKSxNYXRoLnJvdW5kKGEoclsxXSxsWzFdLHgpKSxNYXRoLnJvdW5kKGEoclsyXSxsWzJdLHgpKSxhKHJbM10sbFszXSx4KV0pfX1tLnB1c2godVt1Lmxlbmd0aC0xXS5yZ2IuY29uY2F0KGRbMV0pKSwiaGV4Ij09PWY/bT1tLm1hcChvKToicmdiYVN0cmluZyI9PT1mP209bS5tYXAocyk6ImZsb2F0Ij09PWYmJihtPW0ubWFwKGkpKTtyZXR1cm4gbX19LHsiLi9jb2xvclNjYWxlIjoxMjcsbGVycDo0Mjd9XSwxMjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPW4oZSxyLGkpO2lmKDA9PT1vKXt2YXIgcz1hKG4odCxlLHIpKSxjPWEobih0LGUsaSkpO2lmKHM9PT1jKXtpZigwPT09cyl7dmFyIHU9bCh0LGUsciksaD1sKHQsZSxpKTtyZXR1cm4gdT09PWg/MDp1PzE6LTF9cmV0dXJuIDB9cmV0dXJuIDA9PT1jP3M+MD8tMTpsKHQsZSxpKT8tMToxOjA9PT1zP2M+MD8xOmwodCxlLHIpPzE6LTE6YShjLXMpfXZhciBmPW4odCxlLHIpO2lmKGY+MClyZXR1cm4gbz4wJiZuKHQsZSxpKT4wPzE6LTE7aWYoZjwwKXJldHVybiBvPjB8fG4odCxlLGkpPjA/MTotMTt2YXIgcD1uKHQsZSxpKTtyZXR1cm4gcD4wPzE6bCh0LGUscik/MTotMX07dmFyIG49dCgicm9idXN0LW9yaWVudGF0aW9uIiksYT10KCJzaWdudW0iKSxpPXQoInR3by1zdW0iKSxvPXQoInJvYnVzdC1wcm9kdWN0Iikscz10KCJyb2J1c3Qtc3VtIik7ZnVuY3Rpb24gbCh0LGUscil7dmFyIG49aSh0WzBdLC1lWzBdKSxhPWkodFsxXSwtZVsxXSksbD1pKHJbMF0sLWVbMF0pLGM9aShyWzFdLC1lWzFdKSx1PXMobyhuLGwpLG8oYSxjKSk7cmV0dXJuIHVbdS5sZW5ndGgtMV0+PTB9fSx7InJvYnVzdC1vcmllbnRhdGlvbiI6NTA5LCJyb2J1c3QtcHJvZHVjdCI6NTEwLCJyb2J1c3Qtc3VtIjo1MTQsc2lnbnVtOjUxNSwidHdvLXN1bSI6NTQzfV0sMTMwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5sZW5ndGgsaT10Lmxlbmd0aC1lLmxlbmd0aDtpZihpKXJldHVybiBpO3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIDA7Y2FzZSAxOnJldHVybiB0WzBdLWVbMF07Y2FzZSAyOnJldHVybiB0WzBdK3RbMV0tZVswXS1lWzFdfHxuKHRbMF0sdFsxXSktbihlWzBdLGVbMV0pO2Nhc2UgMzp2YXIgbz10WzBdK3RbMV0scz1lWzBdK2VbMV07aWYoaT1vK3RbMl0tKHMrZVsyXSkpcmV0dXJuIGk7dmFyIGw9bih0WzBdLHRbMV0pLGM9bihlWzBdLGVbMV0pO3JldHVybiBuKGwsdFsyXSktbihjLGVbMl0pfHxuKGwrdFsyXSxvKS1uKGMrZVsyXSxzKTtjYXNlIDQ6dmFyIHU9dFswXSxoPXRbMV0sZj10WzJdLHA9dFszXSxkPWVbMF0sZz1lWzFdLHY9ZVsyXSxtPWVbM107cmV0dXJuIHUraCtmK3AtKGQrZyt2K20pfHxuKHUsaCxmLHApLW4oZCxnLHYsbSxkKXx8bih1K2gsdStmLHUrcCxoK2YsaCtwLGYrcCktbihkK2csZCt2LGQrbSxnK3YsZyttLHYrbSl8fG4odStoK2YsdStoK3AsdStmK3AsaCtmK3ApLW4oZCtnK3YsZCtnK20sZCt2K20sZyt2K20pO2RlZmF1bHQ6Zm9yKHZhciB5PXQuc2xpY2UoKS5zb3J0KGEpLHg9ZS5zbGljZSgpLnNvcnQoYSksYj0wO2I8cjsrK2IpaWYoaT15W2JdLXhbYl0pcmV0dXJuIGk7cmV0dXJuIDB9fTt2YXIgbj1NYXRoLm1pbjtmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHQtZX19LHt9XSwxMzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY29tcGFyZS1jZWxsIiksYT10KCJjZWxsLW9yaWVudGF0aW9uIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxlKXx8YSh0KS1hKGUpfX0seyJjZWxsLW9yaWVudGF0aW9uIjoxMTQsImNvbXBhcmUtY2VsbCI6MTMwfV0sMTMyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL2NoMWQiKSxhPXQoIi4vbGliL2NoMmQiKSxpPXQoIi4vbGliL2NobmQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7aWYoMD09PWUpcmV0dXJuW107aWYoMT09PWUpcmV0dXJuW1swXV07dmFyIHI9dFswXS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuW107aWYoMT09PXIpcmV0dXJuIG4odCk7aWYoMj09PXIpcmV0dXJuIGEodCk7cmV0dXJuIGkodCxyKX19LHsiLi9saWIvY2gxZCI6MTMzLCIuL2xpYi9jaDJkIjoxMzQsIi4vbGliL2NobmQiOjEzNX1dLDEzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj0wLG49MTtuPHQubGVuZ3RoOysrbil0W25dWzBdPHRbZV1bMF0mJihlPW4pLHRbbl1bMF0+dFtyXVswXSYmKHI9bik7cmV0dXJuIGU8cj9bW2VdLFtyXV06ZT5yP1tbcl0sW2VdXTpbW2VdXX19LHt9XSwxMzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW4odCkscj1lLmxlbmd0aDtpZihyPD0yKXJldHVybltdO2Zvcih2YXIgYT1uZXcgQXJyYXkociksaT1lW3ItMV0sbz0wO288cjsrK28pe3ZhciBzPWVbb107YVtvXT1baSxzXSxpPXN9cmV0dXJuIGF9O3ZhciBuPXQoIm1vbm90b25lLWNvbnZleC1odWxsLTJkIil9LHsibW9ub3RvbmUtY29udmV4LWh1bGwtMmQiOjQzNn1dLDEzNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIG4odCwhMCl9Y2F0Y2gocyl7dmFyIHI9YSh0KTtpZihyLmxlbmd0aDw9ZSlyZXR1cm5bXTt2YXIgaT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxhPTA7YTxlLmxlbmd0aDsrK2EpblthXT10W2VbYV1dO2Zvcih2YXIgaT1lLmxlbmd0aCxhPTA7YTxyOysrYSllLmluZGV4T2YoYSk8MCYmKG5baSsrXT10W2FdKTtyZXR1cm4gbn0odCxyKSxvPW4oaSwhMCk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49ZS5sZW5ndGgsYT0wO2E8cjsrK2EpZm9yKHZhciBpPXRbYV0sbz0wO288aS5sZW5ndGg7KytvKXt2YXIgcz1pW29dO2lmKHM8bilpW29dPWVbc107ZWxzZXtzLT1uO2Zvcih2YXIgbD0wO2w8bjsrK2wpcz49ZVtsXSYmKHMrPTEpO2lbb109c319cmV0dXJuIHR9KG8scil9fTt2YXIgbj10KCJpbmNyZW1lbnRhbC1jb252ZXgtaHVsbCIpLGE9dCgiYWZmaW5lLWh1bGwiKX0seyJhZmZpbmUtaHVsbCI6NjUsImluY3JlbWVudGFsLWNvbnZleC1odWxsIjo0MTV9XSwxMzY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9e0FGRzoiYWZnaGFuIixBTEE6IlxcYlxcd2xhbmQiLEFMQjoiYWxiYW5pYSIsRFpBOiJhbGdlcmlhIixBU006Il4oPz0uKmFtZXJpYykuKnNhbW9hIixBTkQ6ImFuZG9ycmEiLEFHTzoiYW5nb2xhIixBSUE6ImFuZ3VpbGw/YSIsQVRBOiJhbnRhcmN0aWNhIixBVEc6ImFudGlndWEiLEFSRzoiYXJnZW50aW4iLEFSTToiYXJtZW5pYSIsQUJXOiJeKD8hLipib25haXJlKS4qXFxiYXJ1YmEiLEFVUzoiYXVzdHJhbGlhIixBVVQ6Il4oPyEuKmh1bmdhcnkpLiphdXN0cmlhfFxcYmF1c3RyaS4qXFxiZW1wIixBWkU6ImF6ZXJiYWlqYW4iLEJIUzoiYmFoYW1hcyIsQkhSOiJiYWhyYWluIixCR0Q6ImJhbmdsYWRlc2h8Xig/PS4qZWFzdCkuKnBha2k/c3RhbiIsQlJCOiJiYXJiYWRvcyIsQkxSOiJiZWxhcnVzfGJ5ZWxvIixCRUw6Il4oPyEuKmx1eGVtKS4qYmVsZ2l1bSIsQkxaOiJiZWxpemV8Xig/PS4qYnJpdGlzaCkuKmhvbmR1cmFzIixCRU46ImJlbmlufGRhaG9tZSIsQk1VOiJiZXJtdWRhIixCVE46ImJodXRhbiIsQk9MOiJib2xpdmlhIixCRVM6Il4oPz0uKmJvbmFpcmUpLipldXN0YXRpdXN8Xig/PS4qY2FyaWIpLipuZXRoZXJsYW5kc3xcXGJiZXMuP2lzbGFuZHMiLEJJSDoiaGVyemVnb3ZpbmF8Ym9zbmlhIixCV0E6ImJvdHN3YW5hfGJlY2h1YW5hIixCVlQ6ImJvdXZldCIsQlJBOiJicmF6aWwiLElPVDoiYnJpdGlzaC4/aW5kaWFuLj9vY2VhbiIsQlJOOiJicnVuZWkiLEJHUjoiYnVsZ2FyaWEiLEJGQToiYnVya2luYXxcXGJmYXNvfHVwcGVyLj92b2x0YSIsQkRJOiJidXJ1bmRpIixDUFY6InZlcmRlIixLSE06ImNhbWJvZGlhfGthbXB1Y2hlYXxraG1lciIsQ01SOiJjYW1lcm9vbiIsQ0FOOiJjYW5hZGEiLENZTToiY2F5bWFuIixDQUY6IlxcYmNlbnRyYWwuYWZyaWNhbi5yZXB1YmxpYyIsVENEOiJcXGJjaGFkIixDSEw6IlxcYmNoaWxlIixDSE46Il4oPyEuKlxcYm1hYykoPyEuKlxcYmhvbmcpKD8hLipcXGJ0YWkpKD8hLipcXGJyZXApLipjaGluYXxeKD89LipwZW8pKD89LipyZXApLipjaGluYSIsQ1hSOiJjaHJpc3RtYXMiLENDSzoiXFxiY29jb3N8a2VlbGluZyIsQ09MOiJjb2xvbWJpYSIsQ09NOiJjb21vcm8iLENPRzoiXig/IS4qXFxiZGVtKSg/IS4qXFxiZFtcXC5dP3IpKD8hLipraW5zaGFzYSkoPyEuKnphaXJlKSg/IS4qYmVsZykoPyEuKmwub3BvbGR2aWxsZSkoPyEuKmZyZWUpLipcXGJjb25nbyIsQ09LOiJcXGJjb29rIixDUkk6ImNvc3RhLj9yaWNhIixDSVY6Iml2b2lyZXxpdm9yeSIsSFJWOiJjcm9hdGlhIixDVUI6IlxcYmN1YmEiLENVVzoiXig/IS4qYm9uYWlyZSkuKlxcYmN1cmEoY3xceGU3KWFvIixDWVA6ImN5cHJ1cyIsQ1NLOiJjemVjaG9zbG92YWtpYSIsQ1pFOiJeKD89LipyZXApLipjemVjaHxjemVjaGlhfGJvaGVtaWEiLENPRDoiXFxiZGVtLipjb25nb3xjb25nby4qXFxiZGVtfGNvbmdvLipcXGJkW1xcLl0/cnxcXGJkW1xcLl0/ci4qY29uZ298YmVsZ2lhbi4/Y29uZ298Y29uZ28uP2ZyZWUuP3N0YXRlfGtpbnNoYXNhfHphaXJlfGwub3BvbGR2aWxsZXxkcmN8ZHJvY3xyZGMiLEROSzoiZGVubWFyayIsREpJOiJkamlib3V0aSIsRE1BOiJkb21pbmljYSg/IW4pIixET006ImRvbWluaWNhbi5yZXAiLEVDVToiZWN1YWRvciIsRUdZOiJlZ3lwdCIsU0xWOiJlbC4/c2FsdmFkb3IiLEdOUToiZ3VpbmUuKmVxfGVxLipndWluZXxeKD89LipzcGFuKS4qZ3VpbmVhIixFUkk6ImVyaXRyZWEiLEVTVDoiZXN0b25pYSIsRVRIOiJldGhpb3BpYXxhYnlzc2luaWEiLEZMSzoiZmFsa2xhbmR8bWFsdmluYXMiLEZSTzoiZmFyb2V8ZmFlcm9lIixGSkk6ImZpamkiLEZJTjoiZmlubGFuZCIsRlJBOiJeKD8hLipcXGJkZXApKD8hLiptYXJ0aW5pcXVlKS4qZnJhbmNlfGZyZW5jaC4/cmVwdWJsaWN8XFxiZ2F1bCIsR1VGOiJeKD89LipmcmVuY2gpLipndWlhbmEiLFBZRjoiZnJlbmNoLj9wb2x5bmVzaWF8dGFoaXRpIixBVEY6ImZyZW5jaC4/c291dGhlcm4iLEdBQjoiZ2Fib24iLEdNQjoiZ2FtYmlhIixHRU86Il4oPyEuKnNvdXRoKS4qZ2VvcmdpYSIsRERSOiJnZXJtYW4uP2RlbW9jcmF0aWMuP3JlcHVibGljfGRlbW9jcmF0aWMuP3JlcHVibGljLipnZXJtYW55fGVhc3QuZ2VybWFueSIsREVVOiJeKD8hLiplYXN0KS4qZ2VybWFueXxeKD89LipcXGJmZWQuKlxcYnJlcCkuKmdlcm1hbiIsR0hBOiJnaGFuYXxnb2xkLj9jb2FzdCIsR0lCOiJnaWJyYWx0YXIiLEdSQzoiZ3JlZWNlfGhlbGxlbmljfGhlbGxhcyIsR1JMOiJncmVlbmxhbmQiLEdSRDoiZ3JlbmFkYSIsR0xQOiJndWFkZWxvdXBlIixHVU06IlxcYmd1YW0iLEdUTToiZ3VhdGVtYWxhIixHR1k6Imd1ZXJuc2V5IixHSU46Il4oPyEuKmVxKSg/IS4qc3BhbikoPyEuKmJpc3NhdSkoPyEuKnBvcnR1KSg/IS4qbmV3KS4qZ3VpbmVhIixHTkI6ImJpc3NhdXxeKD89Lipwb3J0dSkuKmd1aW5lYSIsR1VZOiJndXlhbmF8YnJpdGlzaC4/Z3VpYW5hIixIVEk6ImhhaXRpIixITUQ6ImhlYXJkLiptY2RvbmFsZCIsVkFUOiJob2x5Lj9zZWV8dmF0aWNhbnxwYXBhbC4/c3QiLEhORDoiXig/IS4qYnJpdCkuKmhvbmR1cmFzIixIS0c6ImhvbmcuP2tvbmciLEhVTjoiXig/IS4qYXVzdHIpLipodW5nYXJ5IixJU0w6ImljZWxhbmQiLElORDoiaW5kaWEoPyEuKm9jZWEpIixJRE46ImluZG9uZXNpYSIsSVJOOiJcXGJpcmFufHBlcnNpYSIsSVJROiJcXGJpcmFxfG1lc29wb3RhbWlhIixJUkw6IiheaXJlbGFuZCl8KF5yZXB1YmxpYy4qaXJlbGFuZCkiLElNTjoiXig/PS4qaXNsZSkuKlxcYm1hbiIsSVNSOiJpc3JhZWwiLElUQToiaXRhbHkiLEpBTToiamFtYWljYSIsSlBOOiJqYXBhbiIsSkVZOiJqZXJzZXkiLEpPUjoiam9yZGFuIixLQVo6ImthemFrIixLRU46ImtlbnlhfGJyaXRpc2guP2Vhc3QuP2FmcmljYXxlYXN0Lj9hZnJpY2EuP3Byb3QiLEtJUjoia2lyaWJhdGkiLFBSSzoiXig/PS4qZGVtb2NyYXR8cGVvcGxlfG5vcnRofGQuKnAuKi5yKS4qXFxia29yZWF8ZHBya3xrb3JlYS4qKGQuKnAuKnIpIixLV1Q6Imt1d2FpdCIsS0daOiJreXJneXp8a2lyZ2hpeiIsTEFPOiJcXGJsYW9zP1xcYiIsTFZBOiJsYXR2aWEiLExCTjoibGViYW5vbiIsTFNPOiJsZXNvdGhvfGJhc3V0byIsTEJSOiJsaWJlcmlhIixMQlk6ImxpYnlhIixMSUU6ImxpZWNodGVuc3RlaW4iLExUVToibGl0aHVhbmlhIixMVVg6Il4oPyEuKmJlbGcpLipsdXhlbSIsTUFDOiJtYWNhKG98dSkiLE1ERzoibWFkYWdhc2NhcnxtYWxhZ2FzeSIsTVdJOiJtYWxhd2l8bnlhc2EiLE1ZUzoibWFsYXlzaWEiLE1EVjoibWFsZGl2ZSIsTUxJOiJcXGJtYWxpXFxiIixNTFQ6IlxcYm1hbHRhIixNSEw6Im1hcnNoYWxsIixNVFE6Im1hcnRpbmlxdWUiLE1SVDoibWF1cml0YW5pYSIsTVVTOiJtYXVyaXRpdXMiLE1ZVDoiXFxibWF5b3R0ZSIsTUVYOiJcXGJtZXhpYyIsRlNNOiJmZWQuKm1pY3JvbmVzaWF8bWljcm9uZXNpYS4qZmVkIixNQ086Im1vbmFjbyIsTU5HOiJtb25nb2xpYSIsTU5FOiJeKD8hLipzZXJiaWEpLiptb250ZW5lZ3JvIixNU1I6Im1vbnRzZXJyYXQiLE1BUjoibW9yb2Njb3xcXGJtYXJvYyIsTU9aOiJtb3phbWJpcXVlIixNTVI6Im15YW5tYXJ8YnVybWEiLE5BTToibmFtaWJpYSIsTlJVOiJuYXVydSIsTlBMOiJuZXBhbCIsTkxEOiJeKD8hLipcXGJhbnQpKD8hLipcXGJjYXJpYikuKm5ldGhlcmxhbmRzIixBTlQ6Il4oPz0uKlxcYmFudCkuKihuZXRoZXJ8ZHV0Y2gpIixOQ0w6Im5ldy4/Y2FsZWRvbmlhIixOWkw6Im5ldy4/emVhbGFuZCIsTklDOiJuaWNhcmFndWEiLE5FUjoiXFxibmlnZXIoPyFpYSkiLE5HQToibmlnZXJpYSIsTklVOiJuaXVlIixORks6Im5vcmZvbGsiLE1OUDoibWFyaWFuYSIsTk9SOiJub3J3YXkiLE9NTjoiXFxib21hbnx0cnVjaWFsIixQQUs6Il4oPyEuKmVhc3QpLipwYWtpP3N0YW4iLFBMVzoicGFsYXUiLFBTRToicGFsZXN0aW58XFxiZ2F6YXx3ZXN0Lj9iYW5rIixQQU46InBhbmFtYSIsUE5HOiJwYXB1YXxuZXcuP2d1aW5lYSIsUFJZOiJwYXJhZ3VheSIsUEVSOiJwZXJ1IixQSEw6InBoaWxpcHBpbmVzIixQQ046InBpdGNhaXJuIixQT0w6InBvbGFuZCIsUFJUOiJwb3J0dWdhbCIsUFJJOiJwdWVydG8uP3JpY28iLFFBVDoicWF0YXIiLEtPUjoiXig/IS4qZC4qcC4qcikoPyEuKmRlbW9jcmF0KSg/IS4qcGVvcGxlKSg/IS4qbm9ydGgpLipcXGJrb3JlYSg/IS4qZC4qcC4qcikiLE1EQToibW9sZG92fGIoYXxlKXNzYXJhYmlhIixSRVU6InIoZXxceGU5KXVuaW9uIixST1U6InIob3x1fG91KW1hbmlhIixSVVM6IlxcYnJ1c3NpYXxzb3ZpZXQuP3VuaW9ufHVcXC4/c1xcLj9zXFwuP3J8c29jaWFsaXN0Lj9yZXB1YmxpY3MiLFJXQToicndhbmRhIixCTE06ImJhcnRoKGV8XHhlOSlsZW15IixTSE46ImhlbGVuYSIsS05BOiJraXR0c3xcXGJuZXZpcyIsTENBOiJcXGJsdWNpYSIsTUFGOiJeKD89Lipjb2xsZWN0aXZpdHkpLiptYXJ0aW58Xig/PS4qZnJhbmNlKS4qbWFydGluKD8haXF1ZSl8Xig/PS4qZnJlbmNoKS4qbWFydGluKD8haXF1ZSkiLFNQTToibWlxdWVsb24iLFZDVDoidmluY2VudCIsV1NNOiJeKD8hLiphbWVyKS4qc2Ftb2EiLFNNUjoic2FuLj9tYXJpbm8iLFNUUDoiXFxicyhhfFx4ZTMpby4/dG9tKGV8XHhlOSkiLFNBVToiXFxic2FcXHcqLj9hcmFiaWEiLFNFTjoic2VuZWdhbCIsU1JCOiJeKD8hLiptb250ZSkuKnNlcmJpYSIsU1lDOiJzZXljaGVsbCIsU0xFOiJzaWVycmEiLFNHUDoic2luZ2Fwb3JlIixTWE06Il4oPyEuKm1hcnRpbikoPyEuKnNhYmEpLiptYWFydGVuIixTVks6Il4oPyEuKmN6ZSkuKnNsb3ZhayIsU1ZOOiJzbG92ZW5pYSIsU0xCOiJzb2xvbW9uIixTT006InNvbWFsaSIsWkFGOiJzb3V0aC5hZnJpY2F8c1xcXFwuLj9hZnJpY2EiLFNHUzoic291dGguP2dlb3JnaWF8c2FuZHdpY2giLFNTRDoiXFxic1xcdyouP3N1ZGFuIixFU1A6InNwYWluIixMS0E6InNyaS4/bGFua2F8Y2V5bG9uIixTRE46Il4oPyEuKlxcYnMoPyF1KSkuKnN1ZGFuIixTVVI6InN1cmluYW18ZHV0Y2guP2d1aWFuYSIsU0pNOiJzdmFsYmFyZCIsU1daOiJzd2F6aWxhbmQiLFNXRToic3dlZGVuIixDSEU6InN3aXR6fHN3aXNzIixTWVI6InN5cmlhIixUV046InRhaXdhbnx0YWlwZWl8Zm9ybW9zYXxeKD8hLipwZW8pKD89LipyZXApLipjaGluYSIsVEpLOiJ0YWppayIsVEhBOiJ0aGFpbGFuZHxcXGJzaWFtIixNS0Q6Im1hY2Vkb25pYXxmeXJvbSIsVExTOiJeKD89LipsZXN0ZSkuKnRpbW9yfF4oPz0uKmVhc3QpLip0aW1vciIsVEdPOiJ0b2dvIixUS0w6InRva2VsYXUiLFRPTjoidG9uZ2EiLFRUTzoidHJpbmlkYWR8dG9iYWdvIixUVU46InR1bmlzaWEiLFRVUjoidHVya2V5IixUS006InR1cmttZW4iLFRDQToidHVya3MiLFRVVjoidHV2YWx1IixVR0E6InVnYW5kYSIsVUtSOiJ1a3JhaW4iLEFSRToiZW1pcmF0ZXN8XnVcXC4/YVxcLj9lXFwuPyR8dW5pdGVkLj9hcmFiLj9lbSIsR0JSOiJ1bml0ZWQuP2tpbmdkb218YnJpdGFpbnxedVxcLj9rXFwuPyQiLFRaQToidGFuemFuaWEiLFVTQToidW5pdGVkLj9zdGF0ZXNcXGIoPyEuKmlzbGFuZHMpfFxcYnVcXC4/c1xcLj9hXFwuP1xcYnxeXFxzKnVcXC4/c1xcLj9cXGIoPyEuKmlzbGFuZHMpIixVTUk6Im1pbm9yLj9vdXRseWluZy4/aXMiLFVSWToidXJ1Z3VheSIsVVpCOiJ1emJlayIsVlVUOiJ2YW51YXR1fG5ldy4/aGVicmlkZXMiLFZFTjoidmVuZXp1ZWxhIixWTk06Il4oPyEuKnJlcHVibGljKS4qdmlldC4/bmFtfF4oPz0uKnNvY2lhbGlzdCkuKnZpZXQuP25hbSIsVkdCOiJeKD89LipcXGJ1XFwuP1xccz9rKS4qdmlyZ2lufF4oPz0uKmJyaXQpLip2aXJnaW58Xig/PS4qa2luZ2RvbSkuKnZpcmdpbiIsVklSOiJeKD89LipcXGJ1XFwuP1xccz9zKS4qdmlyZ2lufF4oPz0uKnN0YXRlcykuKnZpcmdpbiIsV0xGOiJmdXR1bmF8d2FsbGlzIixFU0g6Indlc3Rlcm4uc2FoYXJhIixZRU06Il4oPyEuKmFyYWIpKD8hLipub3J0aCkoPyEuKnNhbmEpKD8hLipwZW8pKD8hLipkZW0pKD8hLipzb3V0aCkoPyEuKmFkZW4pKD8hLipcXGJwXFwuP2RcXC4/cikuKnllbWVuIixZTUQ6Il4oPz0uKnBlbykuKnllbWVufF4oPyEuKnJlcCkoPz0uKmRlbSkuKnllbWVufF4oPz0uKnNvdXRoKS4qeWVtZW58Xig/PS4qYWRlbikuKnllbWVufF4oPz0uKlxcYnBcXC4/ZFxcLj9yKS4qeWVtZW4iLFlVRzoieXVnb3NsYXZpYSIsWk1COiJ6YW1iaWF8bm9ydGhlcm4uP3Job2Rlc2lhIixFQVo6InphbnppYmFyIixaV0U6InppbWJhYndlfF4oPyEuKm5vcnRoZXJuKS4qcmhvZGVzaWEifX0se31dLDEzNzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bInh4LXNtYWxsIiwieC1zbWFsbCIsInNtYWxsIiwibWVkaXVtIiwibGFyZ2UiLCJ4LWxhcmdlIiwieHgtbGFyZ2UiLCJsYXJnZXIiLCJzbWFsbGVyIl19LHt9XSwxMzg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9WyJub3JtYWwiLCJjb25kZW5zZWQiLCJzZW1pLWNvbmRlbnNlZCIsImV4dHJhLWNvbmRlbnNlZCIsInVsdHJhLWNvbmRlbnNlZCIsImV4cGFuZGVkIiwic2VtaS1leHBhbmRlZCIsImV4dHJhLWV4cGFuZGVkIiwidWx0cmEtZXhwYW5kZWQiXX0se31dLDEzOTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bIm5vcm1hbCIsIml0YWxpYyIsIm9ibGlxdWUiXX0se31dLDE0MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bIm5vcm1hbCIsImJvbGQiLCJib2xkZXIiLCJsaWdodGVyIiwiMTAwIiwiMjAwIiwiMzAwIiwiNDAwIiwiNTAwIiwiNjAwIiwiNzAwIiwiODAwIiwiOTAwIl19LHt9XSwxNDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtwYXJzZTp0KCIuL3BhcnNlIiksc3RyaW5naWZ5OnQoIi4vc3RyaW5naWZ5Iil9fSx7Ii4vcGFyc2UiOjE0MywiLi9zdHJpbmdpZnkiOjE0NH1dLDE0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjc3MtZm9udC1zaXplLWtleXdvcmRzIik7ZS5leHBvcnRzPXtpc1NpemU6ZnVuY3Rpb24odCl7cmV0dXJuL15bXGRcLl0vLnRlc3QodCl8fC0xIT09dC5pbmRleE9mKCIvIil8fC0xIT09bi5pbmRleE9mKHQpfX19LHsiY3NzLWZvbnQtc2l6ZS1rZXl3b3JkcyI6MTM3fV0sMTQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInVucXVvdGUiKSxhPXQoImNzcy1nbG9iYWwta2V5d29yZHMiKSxpPXQoImNzcy1zeXN0ZW0tZm9udC1rZXl3b3JkcyIpLG89dCgiY3NzLWZvbnQtd2VpZ2h0LWtleXdvcmRzIikscz10KCJjc3MtZm9udC1zdHlsZS1rZXl3b3JkcyIpLGw9dCgiY3NzLWZvbnQtc3RyZXRjaC1rZXl3b3JkcyIpLGM9dCgic3RyaW5nLXNwbGl0LWJ5IiksdT10KCIuL2xpYi91dGlsIikuaXNTaXplO2UuZXhwb3J0cz1mO3ZhciBoPWYuY2FjaGU9e307ZnVuY3Rpb24gZih0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJGb250IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIik7aWYoaFt0XSlyZXR1cm4gaFt0XTtpZigiIj09PXQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcGFyc2UgYW4gZW1wdHkgc3RyaW5nLiIpO2lmKC0xIT09aS5pbmRleE9mKHQpKXJldHVybiBoW3RdPXtzeXN0ZW06dH07Zm9yKHZhciBlLHI9e3N0eWxlOiJub3JtYWwiLHZhcmlhbnQ6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHN0cmV0Y2g6Im5vcm1hbCIsbGluZUhlaWdodDoibm9ybWFsIixzaXplOiIxcmVtIixmYW1pbHk6WyJzZXJpZiJdfSxmPWModCwvXHMrLyk7ZT1mLnNoaWZ0KCk7KXtpZigtMSE9PWEuaW5kZXhPZihlKSlyZXR1cm5bInN0eWxlIiwidmFyaWFudCIsIndlaWdodCIsInN0cmV0Y2giXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JbdF09ZX0pLGhbdF09cjtpZigtMT09PXMuaW5kZXhPZihlKSlpZigibm9ybWFsIiE9PWUmJiJzbWFsbC1jYXBzIiE9PWUpaWYoLTE9PT1sLmluZGV4T2YoZSkpe2lmKC0xPT09by5pbmRleE9mKGUpKXtpZih1KGUpKXt2YXIgZD1jKGUsIi8iKTtpZihyLnNpemU9ZFswXSxudWxsIT1kWzFdP3IubGluZUhlaWdodD1wKGRbMV0pOiIvIj09PWZbMF0mJihmLnNoaWZ0KCksci5saW5lSGVpZ2h0PXAoZi5zaGlmdCgpKSksIWYubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1aXJlZCBmb250LWZhbWlseS4iKTtyZXR1cm4gci5mYW1pbHk9YyhmLmpvaW4oIiAiKSwvXHMqLFxzKi8pLm1hcChuKSxoW3RdPXJ9dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG9yIHVuc3VwcG9ydGVkIGZvbnQgdG9rZW46ICIrZSl9ci53ZWlnaHQ9ZX1lbHNlIHIuc3RyZXRjaD1lO2Vsc2Ugci52YXJpYW50PWU7ZWxzZSByLnN0eWxlPWV9dGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIGZvbnQtc2l6ZS4iKX1mdW5jdGlvbiBwKHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIGUudG9TdHJpbmcoKT09PXQ/ZTp0fX0seyIuL2xpYi91dGlsIjoxNDIsImNzcy1mb250LXN0cmV0Y2gta2V5d29yZHMiOjEzOCwiY3NzLWZvbnQtc3R5bGUta2V5d29yZHMiOjEzOSwiY3NzLWZvbnQtd2VpZ2h0LWtleXdvcmRzIjoxNDAsImNzcy1nbG9iYWwta2V5d29yZHMiOjE0NSwiY3NzLXN5c3RlbS1mb250LWtleXdvcmRzIjoxNDYsInN0cmluZy1zcGxpdC1ieSI6NTI4LHVucXVvdGU6NTQ3fV0sMTQ0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInBpY2stYnktYWxpYXMiKSxhPXQoIi4vbGliL3V0aWwiKS5pc1NpemUsaT1nKHQoImNzcy1nbG9iYWwta2V5d29yZHMiKSksbz1nKHQoImNzcy1zeXN0ZW0tZm9udC1rZXl3b3JkcyIpKSxzPWcodCgiY3NzLWZvbnQtd2VpZ2h0LWtleXdvcmRzIikpLGw9Zyh0KCJjc3MtZm9udC1zdHlsZS1rZXl3b3JkcyIpKSxjPWcodCgiY3NzLWZvbnQtc3RyZXRjaC1rZXl3b3JkcyIpKSx1PXtub3JtYWw6MSwic21hbGwtY2FwcyI6MX0saD17c2VyaWY6MSwic2Fucy1zZXJpZiI6MSxtb25vc3BhY2U6MSxjdXJzaXZlOjEsZmFudGFzeToxLCJzeXN0ZW0tdWkiOjF9LGY9IjFyZW0iLHA9InNlcmlmIjtmdW5jdGlvbiBkKHQsZSl7aWYodCYmIWVbdF0mJiFpW3RdKXRocm93IEVycm9yKCJVbmtub3duIGtleXdvcmQgYCIrdCsiYCIpO3JldHVybiB0fWZ1bmN0aW9uIGcodCl7Zm9yKHZhciBlPXt9LHI9MDtyPHQubGVuZ3RoO3IrKyllW3Rbcl1dPTE7cmV0dXJuIGV9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCh0PW4odCx7c3R5bGU6InN0eWxlIGZvbnRzdHlsZSBmb250U3R5bGUgZm9udC1zdHlsZSBzbG9wZSBkaXN0aW5jdGlvbiIsdmFyaWFudDoidmFyaWFudCBmb250LXZhcmlhbnQgZm9udFZhcmlhbnQgZm9udHZhcmlhbnQgdmFyIGNhcGl0YWxpemF0aW9uIix3ZWlnaHQ6IndlaWdodCB3IGZvbnQtd2VpZ2h0IGZvbnRXZWlnaHQgZm9udHdlaWdodCIsc3RyZXRjaDoic3RyZXRjaCBmb250LXN0cmV0Y2ggZm9udFN0cmV0Y2ggZm9udHN0cmV0Y2ggd2lkdGgiLHNpemU6InNpemUgcyBmb250LXNpemUgZm9udFNpemUgZm9udHNpemUgaGVpZ2h0IGVtIGVtU2l6ZSIsbGluZUhlaWdodDoibGggbGluZS1oZWlnaHQgbGluZUhlaWdodCBsaW5laGVpZ2h0IGxlYWRpbmciLGZhbWlseToiZm9udCBmYW1pbHkgZm9udEZhbWlseSBmb250LWZhbWlseSBmb250ZmFtaWx5IHR5cGUgdHlwZWZhY2UgZmFjZSIsc3lzdGVtOiJzeXN0ZW0gcmVzZXJ2ZWQgZGVmYXVsdCBnbG9iYWwifSkpLnN5c3RlbSlyZXR1cm4gdC5zeXN0ZW0mJmQodC5zeXN0ZW0sbyksdC5zeXN0ZW07aWYoZCh0LnN0eWxlLGwpLGQodC52YXJpYW50LHUpLGQodC53ZWlnaHQscyksZCh0LnN0cmV0Y2gsYyksbnVsbD09dC5zaXplJiYodC5zaXplPWYpLCJudW1iZXIiPT10eXBlb2YgdC5zaXplJiYodC5zaXplKz0icHgiKSwhYSl0aHJvdyBFcnJvcigiQmFkIHNpemUgdmFsdWUgYCIrdC5zaXplKyJgIik7dC5mYW1pbHl8fCh0LmZhbWlseT1wKSxBcnJheS5pc0FycmF5KHQuZmFtaWx5KSYmKHQuZmFtaWx5Lmxlbmd0aHx8KHQuZmFtaWx5PVtwXSksdC5mYW1pbHk9dC5mYW1pbHkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBoW3RdP3Q6JyInK3QrJyInfSkuam9pbigiLCAiKSk7dmFyIGU9W107cmV0dXJuIGUucHVzaCh0LnN0eWxlKSx0LnZhcmlhbnQhPT10LnN0eWxlJiZlLnB1c2godC52YXJpYW50KSx0LndlaWdodCE9PXQudmFyaWFudCYmdC53ZWlnaHQhPT10LnN0eWxlJiZlLnB1c2godC53ZWlnaHQpLHQuc3RyZXRjaCE9PXQud2VpZ2h0JiZ0LnN0cmV0Y2ghPT10LnZhcmlhbnQmJnQuc3RyZXRjaCE9PXQuc3R5bGUmJmUucHVzaCh0LnN0cmV0Y2gpLGUucHVzaCh0LnNpemUrKG51bGw9PXQubGluZUhlaWdodHx8Im5vcm1hbCI9PT10LmxpbmVIZWlnaHR8fHQubGluZUhlaWdodCsiIj09IjEiPyIiOiIvIit0LmxpbmVIZWlnaHQpKSxlLnB1c2godC5mYW1pbHkpLGUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKX19LHsiLi9saWIvdXRpbCI6MTQyLCJjc3MtZm9udC1zdHJldGNoLWtleXdvcmRzIjoxMzgsImNzcy1mb250LXN0eWxlLWtleXdvcmRzIjoxMzksImNzcy1mb250LXdlaWdodC1rZXl3b3JkcyI6MTQwLCJjc3MtZ2xvYmFsLWtleXdvcmRzIjoxNDUsImNzcy1zeXN0ZW0tZm9udC1rZXl3b3JkcyI6MTQ2LCJwaWNrLWJ5LWFsaWFzIjo0Njd9XSwxNDU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9WyJpbmhlcml0IiwiaW5pdGlhbCIsInVuc2V0Il19LHt9XSwxNDY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9WyJjYXB0aW9uIiwiaWNvbiIsIm1lbnUiLCJtZXNzYWdlLWJveCIsInNtYWxsLWNhcHRpb24iLCJzdGF0dXMtYmFyIl19LHt9XSwxNDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbz1hLTEscz1hKmEsbD1vKm8sYz0oMSsyKmEpKmwsdT1hKmwsaD1zKigzLTIqYSksZj1zKm87aWYodC5sZW5ndGgpe2l8fChpPW5ldyBBcnJheSh0Lmxlbmd0aCkpO2Zvcih2YXIgcD10Lmxlbmd0aC0xO3A+PTA7LS1wKWlbcF09Yyp0W3BdK3UqZVtwXStoKnJbcF0rZipuW3BdO3JldHVybiBpfXJldHVybiBjKnQrdSplK2gqcitmKm59LGUuZXhwb3J0cy5kZXJpdmF0aXZlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbz02KmEqYS02KmEscz0zKmEqYS00KmErMSxsPS02KmEqYSs2KmEsYz0zKmEqYS0yKmE7aWYodC5sZW5ndGgpe2l8fChpPW5ldyBBcnJheSh0Lmxlbmd0aCkpO2Zvcih2YXIgdT10Lmxlbmd0aC0xO3U+PTA7LS11KWlbdV09byp0W3VdK3MqZVt1XStsKnJbdV0rYypuW3VdO3JldHVybiBpfXJldHVybiBvKnQrcyplK2wqclt1XStjKm59fSx7fV0sMTQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL3RodW5rLmpzIik7ZnVuY3Rpb24gYSgpe3RoaXMuYXJnVHlwZXM9W10sdGhpcy5zaGltQXJncz1bXSx0aGlzLmFycmF5QXJncz1bXSx0aGlzLmFycmF5QmxvY2tJbmRpY2VzPVtdLHRoaXMuc2NhbGFyQXJncz1bXSx0aGlzLm9mZnNldEFyZ3M9W10sdGhpcy5vZmZzZXRBcmdJbmRleD1bXSx0aGlzLmluZGV4QXJncz1bXSx0aGlzLnNoYXBlQXJncz1bXSx0aGlzLmZ1bmNOYW1lPSIiLHRoaXMucHJlPW51bGwsdGhpcy5ib2R5PW51bGwsdGhpcy5wb3N0PW51bGwsdGhpcy5kZWJ1Zz0hMX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGE7ZS5wcmU9dC5wcmUsZS5ib2R5PXQuYm9keSxlLnBvc3Q9dC5wb3N0O3ZhciByPXQuYXJncy5zbGljZSgwKTtlLmFyZ1R5cGVzPXI7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDsrK2kpe3ZhciBvPXJbaV07aWYoImFycmF5Ij09PW98fCJvYmplY3QiPT10eXBlb2YgbyYmby5ibG9ja0luZGljZXMpe2lmKGUuYXJnVHlwZXNbaV09ImFycmF5IixlLmFycmF5QXJncy5wdXNoKGkpLGUuYXJyYXlCbG9ja0luZGljZXMucHVzaChvLmJsb2NrSW5kaWNlcz9vLmJsb2NrSW5kaWNlczowKSxlLnNoaW1BcmdzLnB1c2goImFycmF5IitpKSxpPGUucHJlLmFyZ3MubGVuZ3RoJiZlLnByZS5hcmdzW2ldLmNvdW50PjApdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogcHJlKCkgYmxvY2sgbWF5IG5vdCByZWZlcmVuY2UgYXJyYXkgYXJncyIpO2lmKGk8ZS5wb3N0LmFyZ3MubGVuZ3RoJiZlLnBvc3QuYXJnc1tpXS5jb3VudD4wKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHBvc3QoKSBibG9jayBtYXkgbm90IHJlZmVyZW5jZSBhcnJheSBhcmdzIil9ZWxzZSBpZigic2NhbGFyIj09PW8pZS5zY2FsYXJBcmdzLnB1c2goaSksZS5zaGltQXJncy5wdXNoKCJzY2FsYXIiK2kpO2Vsc2UgaWYoImluZGV4Ij09PW8pe2lmKGUuaW5kZXhBcmdzLnB1c2goaSksaTxlLnByZS5hcmdzLmxlbmd0aCYmZS5wcmUuYXJnc1tpXS5jb3VudD4wKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHByZSgpIGJsb2NrIG1heSBub3QgcmVmZXJlbmNlIGFycmF5IGluZGV4Iik7aWYoaTxlLmJvZHkuYXJncy5sZW5ndGgmJmUuYm9keS5hcmdzW2ldLmx2YWx1ZSl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBib2R5KCkgYmxvY2sgbWF5IG5vdCB3cml0ZSB0byBhcnJheSBpbmRleCIpO2lmKGk8ZS5wb3N0LmFyZ3MubGVuZ3RoJiZlLnBvc3QuYXJnc1tpXS5jb3VudD4wKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHBvc3QoKSBibG9jayBtYXkgbm90IHJlZmVyZW5jZSBhcnJheSBpbmRleCIpfWVsc2UgaWYoInNoYXBlIj09PW8pe2lmKGUuc2hhcGVBcmdzLnB1c2goaSksaTxlLnByZS5hcmdzLmxlbmd0aCYmZS5wcmUuYXJnc1tpXS5sdmFsdWUpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogcHJlKCkgYmxvY2sgbWF5IG5vdCB3cml0ZSB0byBhcnJheSBzaGFwZSIpO2lmKGk8ZS5ib2R5LmFyZ3MubGVuZ3RoJiZlLmJvZHkuYXJnc1tpXS5sdmFsdWUpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogYm9keSgpIGJsb2NrIG1heSBub3Qgd3JpdGUgdG8gYXJyYXkgc2hhcGUiKTtpZihpPGUucG9zdC5hcmdzLmxlbmd0aCYmZS5wb3N0LmFyZ3NbaV0ubHZhbHVlKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHBvc3QoKSBibG9jayBtYXkgbm90IHdyaXRlIHRvIGFycmF5IHNoYXBlIil9ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIG98fCFvLm9mZnNldCl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBVbmtub3duIGFyZ3VtZW50IHR5cGUgIityW2ldKTtlLmFyZ1R5cGVzW2ldPSJvZmZzZXQiLGUub2Zmc2V0QXJncy5wdXNoKHthcnJheTpvLmFycmF5LG9mZnNldDpvLm9mZnNldH0pLGUub2Zmc2V0QXJnSW5kZXgucHVzaChpKX19aWYoZS5hcnJheUFyZ3MubGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IE5vIGFycmF5IGFyZ3VtZW50cyBzcGVjaWZpZWQiKTtpZihlLnByZS5hcmdzLmxlbmd0aD5yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBUb28gbWFueSBhcmd1bWVudHMgaW4gcHJlKCkgYmxvY2siKTtpZihlLmJvZHkuYXJncy5sZW5ndGg+ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogVG9vIG1hbnkgYXJndW1lbnRzIGluIGJvZHkoKSBibG9jayIpO2lmKGUucG9zdC5hcmdzLmxlbmd0aD5yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBUb28gbWFueSBhcmd1bWVudHMgaW4gcG9zdCgpIGJsb2NrIik7cmV0dXJuIGUuZGVidWc9ISF0LnByaW50Q29kZXx8ISF0LmRlYnVnLGUuZnVuY05hbWU9dC5mdW5jTmFtZXx8ImN3aXNlIixlLmJsb2NrU2l6ZT10LmJsb2NrU2l6ZXx8NjQsbihlKX19LHsiLi9saWIvdGh1bmsuanMiOjE1MH1dLDE0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ1bmlxIik7ZnVuY3Rpb24gYSh0LGUscil7dmFyIG4sYSxpPXQubGVuZ3RoLG89ZS5hcnJheUFyZ3MubGVuZ3RoLHM9ZS5pbmRleEFyZ3MubGVuZ3RoPjAsbD1bXSxjPVtdLHU9MCxoPTA7Zm9yKG49MDtuPGk7KytuKWMucHVzaChbImkiLG4sIj0wIl0uam9pbigiIikpO2ZvcihhPTA7YTxvOysrYSlmb3Iobj0wO248aTsrK24paD11LHU9dFtuXSwwPT09bj9jLnB1c2goWyJkIixhLCJzIixuLCI9dCIsYSwicCIsdV0uam9pbigiIikpOmMucHVzaChbImQiLGEsInMiLG4sIj0odCIsYSwicCIsdSwiLXMiLGgsIip0IixhLCJwIixoLCIpIl0uam9pbigiIikpO2ZvcihjLmxlbmd0aD4wJiZsLnB1c2goInZhciAiK2Muam9pbigiLCIpKSxuPWktMTtuPj0wOy0tbil1PXRbbl0sbC5wdXNoKFsiZm9yKGkiLG4sIj0wO2kiLG4sIjxzIix1LCI7KytpIixuLCIpeyJdLmpvaW4oIiIpKTtmb3IobC5wdXNoKHIpLG49MDtuPGk7KytuKXtmb3IoaD11LHU9dFtuXSxhPTA7YTxvOysrYSlsLnB1c2goWyJwIixhLCIrPWQiLGEsInMiLG5dLmpvaW4oIiIpKTtzJiYobj4wJiZsLnB1c2goWyJpbmRleFsiLGgsIl0tPXMiLGhdLmpvaW4oIiIpKSxsLnB1c2goWyIrK2luZGV4WyIsdSwiXSJdLmpvaW4oIiIpKSksbC5wdXNoKCJ9Iil9cmV0dXJuIGwuam9pbigiXG4iKX1mdW5jdGlvbiBpKHQsZSxyKXtmb3IodmFyIG49dC5ib2R5LGE9W10saT1bXSxvPTA7bzx0LmFyZ3MubGVuZ3RoOysrbyl7dmFyIHM9dC5hcmdzW29dO2lmKCEocy5jb3VudDw9MCkpe3ZhciBsPW5ldyBSZWdFeHAocy5uYW1lLCJnIiksYz0iIix1PWUuYXJyYXlBcmdzLmluZGV4T2Yobyk7c3dpdGNoKGUuYXJnVHlwZXNbb10pe2Nhc2Uib2Zmc2V0Ijp2YXIgaD1lLm9mZnNldEFyZ0luZGV4LmluZGV4T2Yobyk7dT1lLm9mZnNldEFyZ3NbaF0uYXJyYXksYz0iK3EiK2g7Y2FzZSJhcnJheSI6Yz0icCIrdStjO3ZhciBmPSJsIitvLHA9ImEiK3U7aWYoMD09PWUuYXJyYXlCbG9ja0luZGljZXNbdV0pMT09PXMuY291bnQ/ImdlbmVyaWMiPT09clt1XT9zLmx2YWx1ZT8oYS5wdXNoKFsidmFyICIsZiwiPSIscCwiLmdldCgiLGMsIikiXS5qb2luKCIiKSksbj1uLnJlcGxhY2UobCxmKSxpLnB1c2goW3AsIi5zZXQoIixjLCIsIixmLCIpIl0uam9pbigiIikpKTpuPW4ucmVwbGFjZShsLFtwLCIuZ2V0KCIsYywiKSJdLmpvaW4oIiIpKTpuPW4ucmVwbGFjZShsLFtwLCJbIixjLCJdIl0uam9pbigiIikpOiJnZW5lcmljIj09PXJbdV0/KGEucHVzaChbInZhciAiLGYsIj0iLHAsIi5nZXQoIixjLCIpIl0uam9pbigiIikpLG49bi5yZXBsYWNlKGwsZikscy5sdmFsdWUmJmkucHVzaChbcCwiLnNldCgiLGMsIiwiLGYsIikiXS5qb2luKCIiKSkpOihhLnB1c2goWyJ2YXIgIixmLCI9IixwLCJbIixjLCJdIl0uam9pbigiIikpLG49bi5yZXBsYWNlKGwsZikscy5sdmFsdWUmJmkucHVzaChbcCwiWyIsYywiXT0iLGZdLmpvaW4oIiIpKSk7ZWxzZXtmb3IodmFyIGQ9W3MubmFtZV0sZz1bY10sdj0wO3Y8TWF0aC5hYnMoZS5hcnJheUJsb2NrSW5kaWNlc1t1XSk7disrKWQucHVzaCgiXFxzKlxcWyhbXlxcXV0rKVxcXSIpLGcucHVzaCgiJCIrKHYrMSkrIip0Iit1KyJiIit2KTtpZihsPW5ldyBSZWdFeHAoZC5qb2luKCIiKSwiZyIpLGM9Zy5qb2luKCIrIiksImdlbmVyaWMiPT09clt1XSl0aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBHZW5lcmljIGFycmF5cyBub3Qgc3VwcG9ydGVkIGluIGNvbWJpbmF0aW9uIHdpdGggYmxvY2tzISIpO249bi5yZXBsYWNlKGwsW3AsIlsiLGMsIl0iXS5qb2luKCIiKSl9YnJlYWs7Y2FzZSJzY2FsYXIiOm49bi5yZXBsYWNlKGwsIlkiK2Uuc2NhbGFyQXJncy5pbmRleE9mKG8pKTticmVhaztjYXNlImluZGV4IjpuPW4ucmVwbGFjZShsLCJpbmRleCIpO2JyZWFrO2Nhc2Uic2hhcGUiOm49bi5yZXBsYWNlKGwsInNoYXBlIil9fX1yZXR1cm5bYS5qb2luKCJcbiIpLG4saS5qb2luKCJcbiIpXS5qb2luKCJcbiIpLnRyaW0oKX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9ITAsbj0wO248dC5sZW5ndGg7KytuKXt2YXIgYT10W25dLGk9YS5tYXRjaCgvXGQrLyk7aT1pP2lbMF06IiIsMD09PWEuY2hhckF0KDApP2Vbbl09InUiK2EuY2hhckF0KDEpK2k6ZVtuXT1hLmNoYXJBdCgwKStpLG4+MCYmKHI9ciYmZVtuXT09PWVbbi0xXSl9cmV0dXJuIHI/ZVswXTplLmpvaW4oIiIpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lWzFdLmxlbmd0aC1NYXRoLmFicyh0LmFycmF5QmxvY2tJbmRpY2VzWzBdKXwwLHM9bmV3IEFycmF5KHQuYXJyYXlBcmdzLmxlbmd0aCksbD1uZXcgQXJyYXkodC5hcnJheUFyZ3MubGVuZ3RoKSxjPTA7Yzx0LmFycmF5QXJncy5sZW5ndGg7KytjKWxbY109ZVsyKmNdLHNbY109ZVsyKmMrMV07dmFyIHU9W10saD1bXSxmPVtdLHA9W10sZD1bXTtmb3IoYz0wO2M8dC5hcnJheUFyZ3MubGVuZ3RoOysrYyl7dC5hcnJheUJsb2NrSW5kaWNlc1tjXTwwPyhmLnB1c2goMCkscC5wdXNoKHIpLHUucHVzaChyKSxoLnB1c2gocit0LmFycmF5QmxvY2tJbmRpY2VzW2NdKSk6KGYucHVzaCh0LmFycmF5QmxvY2tJbmRpY2VzW2NdKSxwLnB1c2godC5hcnJheUJsb2NrSW5kaWNlc1tjXStyKSx1LnB1c2goMCksaC5wdXNoKHQuYXJyYXlCbG9ja0luZGljZXNbY10pKTtmb3IodmFyIGc9W10sdj0wO3Y8c1tjXS5sZW5ndGg7disrKWZbY108PXNbY11bdl0mJnNbY11bdl08cFtjXSYmZy5wdXNoKHNbY11bdl0tZltjXSk7ZC5wdXNoKGcpfXZhciBtPVsiU1MiXSx5PVsiJ3VzZSBzdHJpY3QnIl0seD1bXTtmb3Iodj0wO3Y8cjsrK3YpeC5wdXNoKFsicyIsdiwiPVNTWyIsdiwiXSJdLmpvaW4oIiIpKTtmb3IoYz0wO2M8dC5hcnJheUFyZ3MubGVuZ3RoOysrYyl7Zm9yKG0ucHVzaCgiYSIrYyksbS5wdXNoKCJ0IitjKSxtLnB1c2goInAiK2MpLHY9MDt2PHI7Kyt2KXgucHVzaChbInQiLGMsInAiLHYsIj10IixjLCJbIixmW2NdK3YsIl0iXS5qb2luKCIiKSk7Zm9yKHY9MDt2PE1hdGguYWJzKHQuYXJyYXlCbG9ja0luZGljZXNbY10pOysrdil4LnB1c2goWyJ0IixjLCJiIix2LCI9dCIsYywiWyIsdVtjXSt2LCJdIl0uam9pbigiIikpfWZvcihjPTA7Yzx0LnNjYWxhckFyZ3MubGVuZ3RoOysrYyltLnB1c2goIlkiK2MpO2lmKHQuc2hhcGVBcmdzLmxlbmd0aD4wJiZ4LnB1c2goInNoYXBlPVNTLnNsaWNlKDApIiksdC5pbmRleEFyZ3MubGVuZ3RoPjApe3ZhciBiPW5ldyBBcnJheShyKTtmb3IoYz0wO2M8cjsrK2MpYltjXT0iMCI7eC5wdXNoKFsiaW5kZXg9WyIsYi5qb2luKCIsIiksIl0iXS5qb2luKCIiKSl9Zm9yKGM9MDtjPHQub2Zmc2V0QXJncy5sZW5ndGg7KytjKXt2YXIgXz10Lm9mZnNldEFyZ3NbY10sdz1bXTtmb3Iodj0wO3Y8Xy5vZmZzZXQubGVuZ3RoOysrdikwIT09Xy5vZmZzZXRbdl0mJigxPT09Xy5vZmZzZXRbdl0/dy5wdXNoKFsidCIsXy5hcnJheSwicCIsdl0uam9pbigiIikpOncucHVzaChbXy5vZmZzZXRbdl0sIip0IixfLmFycmF5LCJwIix2XS5qb2luKCIiKSkpOzA9PT13Lmxlbmd0aD94LnB1c2goInEiK2MrIj0wIik6eC5wdXNoKFsicSIsYywiPSIsdy5qb2luKCIrIildLmpvaW4oIiIpKX12YXIgaz1uKFtdLmNvbmNhdCh0LnByZS50aGlzVmFycykuY29uY2F0KHQuYm9keS50aGlzVmFycykuY29uY2F0KHQucG9zdC50aGlzVmFycykpO2ZvcigoeD14LmNvbmNhdChrKSkubGVuZ3RoPjAmJnkucHVzaCgidmFyICIreC5qb2luKCIsIikpLGM9MDtjPHQuYXJyYXlBcmdzLmxlbmd0aDsrK2MpeS5wdXNoKCJwIitjKyJ8PTAiKTt0LnByZS5ib2R5Lmxlbmd0aD4zJiZ5LnB1c2goaSh0LnByZSx0LGwpKTt2YXIgVD1pKHQuYm9keSx0LGwpLE09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10WzBdLmxlbmd0aDtlPHI7KXtmb3IodmFyIG49MTtuPHQubGVuZ3RoOysrbilpZih0W25dW2VdIT09dFswXVtlXSlyZXR1cm4gZTsrK2V9cmV0dXJuIGV9KGQpO008cj95LnB1c2goZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPWUubGVuZ3RoLG89ci5hcnJheUFyZ3MubGVuZ3RoLHM9ci5ibG9ja1NpemUsbD1yLmluZGV4QXJncy5sZW5ndGg+MCxjPVtdLHU9MDt1PG87Kyt1KWMucHVzaChbInZhciBvZmZzZXQiLHUsIj1wIix1XS5qb2luKCIiKSk7Zm9yKHU9dDt1PGk7Kyt1KWMucHVzaChbImZvcih2YXIgaiIrdSsiPVNTWyIsZVt1XSwiXXwwO2oiLHUsIj4wOyl7Il0uam9pbigiIikpLGMucHVzaChbImlmKGoiLHUsIjwiLHMsIil7Il0uam9pbigiIikpLGMucHVzaChbInMiLGVbdV0sIj1qIix1XS5qb2luKCIiKSksYy5wdXNoKFsiaiIsdSwiPTAiXS5qb2luKCIiKSksYy5wdXNoKFsifWVsc2V7cyIsZVt1XSwiPSIsc10uam9pbigiIikpLGMucHVzaChbImoiLHUsIi09IixzLCJ9Il0uam9pbigiIikpLGwmJmMucHVzaChbImluZGV4WyIsZVt1XSwiXT1qIix1XS5qb2luKCIiKSk7Zm9yKHU9MDt1PG87Kyt1KXtmb3IodmFyIGg9WyJvZmZzZXQiK3VdLGY9dDtmPGk7KytmKWgucHVzaChbImoiLGYsIip0Iix1LCJwIixlW2ZdXS5qb2luKCIiKSk7Yy5wdXNoKFsicCIsdSwiPSgiLGguam9pbigiKyIpLCIpIl0uam9pbigiIikpfWZvcihjLnB1c2goYShlLHIsbikpLHU9dDt1PGk7Kyt1KWMucHVzaCgifSIpO3JldHVybiBjLmpvaW4oIlxuIil9KE0sZFswXSx0LFQpKTp5LnB1c2goYShkWzBdLHQsVCkpLHQucG9zdC5ib2R5Lmxlbmd0aD4zJiZ5LnB1c2goaSh0LnBvc3QsdCxsKSksdC5kZWJ1ZyYmY29uc29sZS5sb2coIi0tLS0tR2VuZXJhdGVkIGN3aXNlIHJvdXRpbmUgZm9yICIsZSwiOlxuIit5LmpvaW4oIlxuIikrIlxuLS0tLS0tLS0tLSIpO3ZhciBBPVt0LmZ1bmNOYW1lfHwidW5uYW1lZCIsIl9jd2lzZV9sb29wXyIsc1swXS5qb2luKCJzIiksIm0iLE0sbyhsKV0uam9pbigiIik7cmV0dXJuIG5ldyBGdW5jdGlvbihbImZ1bmN0aW9uICIsQSwiKCIsbS5qb2luKCIsIiksIil7Iix5LmpvaW4oIlxuIiksIn0gcmV0dXJuICIsQV0uam9pbigiIikpKCl9fSx7dW5pcTo1NDZ9XSwxNTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb21waWxlLmpzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVsiJ3VzZSBzdHJpY3QnIiwidmFyIENBQ0hFRD17fSJdLHI9W10sYT10LmZ1bmNOYW1lKyJfY3dpc2VfdGh1bmsiO2UucHVzaChbInJldHVybiBmdW5jdGlvbiAiLGEsIigiLHQuc2hpbUFyZ3Muam9pbigiLCIpLCIpeyJdLmpvaW4oIiIpKTtmb3IodmFyIGk9W10sbz1bXSxzPVtbImFycmF5Iix0LmFycmF5QXJnc1swXSwiLnNoYXBlLnNsaWNlKCIsTWF0aC5tYXgoMCx0LmFycmF5QmxvY2tJbmRpY2VzWzBdKSx0LmFycmF5QmxvY2tJbmRpY2VzWzBdPDA/IiwiK3QuYXJyYXlCbG9ja0luZGljZXNbMF0rIikiOiIpIl0uam9pbigiIildLGw9W10sYz1bXSx1PTA7dTx0LmFycmF5QXJncy5sZW5ndGg7Kyt1KXt2YXIgaD10LmFycmF5QXJnc1t1XTtyLnB1c2goWyJ0IixoLCI9YXJyYXkiLGgsIi5kdHlwZSwiLCJyIixoLCI9YXJyYXkiLGgsIi5vcmRlciJdLmpvaW4oIiIpKSxpLnB1c2goInQiK2gpLGkucHVzaCgiciIraCksby5wdXNoKCJ0IitoKSxvLnB1c2goInIiK2grIi5qb2luKCkiKSxzLnB1c2goImFycmF5IitoKyIuZGF0YSIpLHMucHVzaCgiYXJyYXkiK2grIi5zdHJpZGUiKSxzLnB1c2goImFycmF5IitoKyIub2Zmc2V0fDAiKSx1PjAmJihsLnB1c2goImFycmF5Iit0LmFycmF5QXJnc1swXSsiLnNoYXBlLmxlbmd0aD09PWFycmF5IitoKyIuc2hhcGUubGVuZ3RoKyIrKE1hdGguYWJzKHQuYXJyYXlCbG9ja0luZGljZXNbMF0pLU1hdGguYWJzKHQuYXJyYXlCbG9ja0luZGljZXNbdV0pKSksYy5wdXNoKCJhcnJheSIrdC5hcnJheUFyZ3NbMF0rIi5zaGFwZVtzaGFwZUluZGV4KyIrTWF0aC5tYXgoMCx0LmFycmF5QmxvY2tJbmRpY2VzWzBdKSsiXT09PWFycmF5IitoKyIuc2hhcGVbc2hhcGVJbmRleCsiK01hdGgubWF4KDAsdC5hcnJheUJsb2NrSW5kaWNlc1t1XSkrIl0iKSl9Zm9yKHQuYXJyYXlBcmdzLmxlbmd0aD4xJiYoZS5wdXNoKCJpZiAoISgiK2wuam9pbigiICYmICIpKyIpKSB0aHJvdyBuZXcgRXJyb3IoJ2N3aXNlOiBBcnJheXMgZG8gbm90IGFsbCBoYXZlIHRoZSBzYW1lIGRpbWVuc2lvbmFsaXR5IScpIiksZS5wdXNoKCJmb3IodmFyIHNoYXBlSW5kZXg9YXJyYXkiK3QuYXJyYXlBcmdzWzBdKyIuc2hhcGUubGVuZ3RoLSIrTWF0aC5hYnModC5hcnJheUJsb2NrSW5kaWNlc1swXSkrIjsgc2hhcGVJbmRleC0tXHgzZTA7KSB7IiksZS5wdXNoKCJpZiAoISgiK2Muam9pbigiICYmICIpKyIpKSB0aHJvdyBuZXcgRXJyb3IoJ2N3aXNlOiBBcnJheXMgZG8gbm90IGFsbCBoYXZlIHRoZSBzYW1lIHNoYXBlIScpIiksZS5wdXNoKCJ9IikpLHU9MDt1PHQuc2NhbGFyQXJncy5sZW5ndGg7Kyt1KXMucHVzaCgic2NhbGFyIit0LnNjYWxhckFyZ3NbdV0pO3JldHVybiByLnB1c2goWyJ0eXBlPVsiLG8uam9pbigiLCIpLCJdLmpvaW4oKSJdLmpvaW4oIiIpKSxyLnB1c2goInByb2M9Q0FDSEVEW3R5cGVdIiksZS5wdXNoKCJ2YXIgIityLmpvaW4oIiwiKSksZS5wdXNoKFsiaWYoIXByb2MpeyIsIkNBQ0hFRFt0eXBlXT1wcm9jPWNvbXBpbGUoWyIsaS5qb2luKCIsIiksIl0pfSIsInJldHVybiBwcm9jKCIscy5qb2luKCIsIiksIil9Il0uam9pbigiIikpLHQuZGVidWcmJmNvbnNvbGUubG9nKCItLS0tLUdlbmVyYXRlZCB0aHVuazpcbiIrZS5qb2luKCJcbiIpKyJcbi0tLS0tLS0tLS0iKSxuZXcgRnVuY3Rpb24oImNvbXBpbGUiLGUuam9pbigiXG4iKSkobi5iaW5kKHZvaWQgMCx0KSl9fSx7Ii4vY29tcGlsZS5qcyI6MTQ5fV0sMTUxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoImN3aXNlLWNvbXBpbGVyIil9LHsiY3dpc2UtY29tcGlsZXIiOjE0OH1dLDE1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhPXQoImVzNS1leHQvb2JqZWN0L2NvcHkiKSxpPXQoImVzNS1leHQvb2JqZWN0L25vcm1hbGl6ZS1vcHRpb25zIiksbz10KCJlczUtZXh0L29iamVjdC92YWxpZC1jYWxsYWJsZSIpLHM9dCgiZXM1LWV4dC9vYmplY3QvbWFwIiksbD10KCJlczUtZXh0L29iamVjdC92YWxpZC1jYWxsYWJsZSIpLGM9dCgiZXM1LWV4dC9vYmplY3QvdmFsaWQtdmFsdWUiKSx1PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLGg9T2JqZWN0LmRlZmluZVByb3BlcnR5LGY9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtuPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpPWMoZSkmJmwoZS52YWx1ZSk7cmV0dXJuIGRlbGV0ZShuPWEoZSkpLndyaXRhYmxlLGRlbGV0ZSBuLnZhbHVlLG4uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIXIub3ZlcndyaXRlRGVmaW5pdGlvbiYmZi5jYWxsKHRoaXMsdCk/aTooZS52YWx1ZT11LmNhbGwoaSxyLnJlc29sdmVDb250ZXh0P3IucmVzb2x2ZUNvbnRleHQodGhpcyk6dGhpcyksaCh0aGlzLHQsZSksdGhpc1t0XSl9LG59LGUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1pKGFyZ3VtZW50c1sxXSk7cmV0dXJuIG51bGwhPWUucmVzb2x2ZUNvbnRleHQmJm8oZS5yZXNvbHZlQ29udGV4dCkscyh0LGZ1bmN0aW9uKHQscil7cmV0dXJuIG4ocix0LGUpfSl9fSx7ImVzNS1leHQvb2JqZWN0L2NvcHkiOjE5MiwiZXM1LWV4dC9vYmplY3QvbWFwIjoyMDEsImVzNS1leHQvb2JqZWN0L25vcm1hbGl6ZS1vcHRpb25zIjoyMDIsImVzNS1leHQvb2JqZWN0L3ZhbGlkLWNhbGxhYmxlIjoyMDYsImVzNS1leHQvb2JqZWN0L3ZhbGlkLXZhbHVlIjoyMDh9XSwxNTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZXM1LWV4dC9vYmplY3QvYXNzaWduIiksYT10KCJlczUtZXh0L29iamVjdC9ub3JtYWxpemUtb3B0aW9ucyIpLGk9dCgiZXM1LWV4dC9vYmplY3QvaXMtY2FsbGFibGUiKSxvPXQoImVzNS1leHQvc3RyaW5nLyMvY29udGFpbnMiKTsoZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsaSxzLGwsYztyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyfHwic3RyaW5nIiE9dHlwZW9mIHQ/KGw9ZSxlPXQsdD1udWxsKTpsPWFyZ3VtZW50c1syXSxudWxsPT10PyhyPXM9ITAsaT0hMSk6KHI9by5jYWxsKHQsImMiKSxpPW8uY2FsbCh0LCJlIikscz1vLmNhbGwodCwidyIpKSxjPXt2YWx1ZTplLGNvbmZpZ3VyYWJsZTpyLGVudW1lcmFibGU6aSx3cml0YWJsZTpzfSxsP24oYShsKSxjKTpjfSkuZ3M9ZnVuY3Rpb24odCxlLHIpe3ZhciBzLGwsYyx1O3JldHVybiJzdHJpbmciIT10eXBlb2YgdD8oYz1yLHI9ZSxlPXQsdD1udWxsKTpjPWFyZ3VtZW50c1szXSxudWxsPT1lP2U9dm9pZCAwOmkoZSk/bnVsbD09cj9yPXZvaWQgMDppKHIpfHwoYz1yLHI9dm9pZCAwKTooYz1lLGU9cj12b2lkIDApLG51bGw9PXQ/KHM9ITAsbD0hMSk6KHM9by5jYWxsKHQsImMiKSxsPW8uY2FsbCh0LCJlIikpLHU9e2dldDplLHNldDpyLGNvbmZpZ3VyYWJsZTpzLGVudW1lcmFibGU6bH0sYz9uKGEoYyksdSk6dX19LHsiZXM1LWV4dC9vYmplY3QvYXNzaWduIjoxODksImVzNS1leHQvb2JqZWN0L2lzLWNhbGxhYmxlIjoxOTUsImVzNS1leHQvb2JqZWN0L25vcm1hbGl6ZS1vcHRpb25zIjoyMDIsImVzNS1leHQvc3RyaW5nLyMvY29udGFpbnMiOjIwOX1dLDE1NDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuO249dGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZSh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiByKHQpe3ZhciByO3JldHVybiAxPT09dC5sZW5ndGgmJihyPXQsdD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHIodCksbil9KSx7bGVmdDpmdW5jdGlvbihlLHIsbixhKXtmb3IobnVsbD09biYmKG49MCksbnVsbD09YSYmKGE9ZS5sZW5ndGgpO248YTspe3ZhciBpPW4rYT4+PjE7dChlW2ldLHIpPDA/bj1pKzE6YT1pfXJldHVybiBufSxyaWdodDpmdW5jdGlvbihlLHIsbixhKXtmb3IobnVsbD09biYmKG49MCksbnVsbD09YSYmKGE9ZS5sZW5ndGgpO248YTspe3ZhciBpPW4rYT4+PjE7dChlW2ldLHIpPjA/YT1pOm49aSsxfXJldHVybiBufX19dmFyIG49cihlKSxhPW4ucmlnaHQsaT1uLmxlZnQ7ZnVuY3Rpb24gbyh0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIHModCl7cmV0dXJuIG51bGw9PT10P05hTjordH1mdW5jdGlvbiBsKHQsZSl7dmFyIHIsbixhPXQubGVuZ3RoLGk9MCxvPS0xLGw9MCxjPTA7aWYobnVsbD09ZSlmb3IoOysrbzxhOylpc05hTihyPXModFtvXSkpfHwoYys9KG49ci1sKSooci0obCs9bi8rK2kpKSk7ZWxzZSBmb3IoOysrbzxhOylpc05hTihyPXMoZSh0W29dLG8sdCkpKXx8KGMrPShuPXItbCkqKHItKGwrPW4vKytpKSkpO2lmKGk+MSlyZXR1cm4gYy8oaS0xKX1mdW5jdGlvbiBjKHQsZSl7dmFyIHI9bCh0LGUpO3JldHVybiByP01hdGguc3FydChyKTpyfWZ1bmN0aW9uIHUodCxlKXt2YXIgcixuLGEsaT10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPGk7KWlmKG51bGwhPShyPXRbb10pJiZyPj1yKWZvcihuPWE9cjsrK288aTspbnVsbCE9KHI9dFtvXSkmJihuPnImJihuPXIpLGE8ciYmKGE9cikpfWVsc2UgZm9yKDsrK288aTspaWYobnVsbCE9KHI9ZSh0W29dLG8sdCkpJiZyPj1yKWZvcihuPWE9cjsrK288aTspbnVsbCE9KHI9ZSh0W29dLG8sdCkpJiYobj5yJiYobj1yKSxhPHImJihhPXIpKTtyZXR1cm5bbixhXX12YXIgaD1BcnJheS5wcm90b3R5cGUsZj1oLnNsaWNlLHA9aC5tYXA7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdH1mdW5jdGlvbiB2KHQsZSxyKXt0PSt0LGU9K2Uscj0oYT1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOmE8Mz8xOityO2Zvcih2YXIgbj0tMSxhPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvcikpLGk9bmV3IEFycmF5KGEpOysrbjxhOylpW25dPXQrbipyO3JldHVybiBpfXZhciBtPU1hdGguc3FydCg1MCkseT1NYXRoLnNxcnQoMTApLHg9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIGIodCxlLHIpe3ZhciBuPShlLXQpL01hdGgubWF4KDAsciksYT1NYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCksaT1uL01hdGgucG93KDEwLGEpO3JldHVybiBhPj0wPyhpPj1tPzEwOmk+PXk/NTppPj14PzI6MSkqTWF0aC5wb3coMTAsYSk6LU1hdGgucG93KDEwLC1hKS8oaT49bT8xMDppPj15PzU6aT49eD8yOjEpfWZ1bmN0aW9uIF8odCxlLHIpe3ZhciBuPU1hdGguYWJzKGUtdCkvTWF0aC5tYXgoMCxyKSxhPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5MTjEwKSksaT1uL2E7cmV0dXJuIGk+PW0/YSo9MTA6aT49eT9hKj01Omk+PXgmJihhKj0yKSxlPHQ/LWE6YX1mdW5jdGlvbiB3KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIGsodCxlLHIpe2lmKG51bGw9PXImJihyPXMpLG49dC5sZW5ndGgpe2lmKChlPStlKTw9MHx8bjwyKXJldHVybityKHRbMF0sMCx0KTtpZihlPj0xKXJldHVybityKHRbbi0xXSxuLTEsdCk7dmFyIG4sYT0obi0xKSplLGk9TWF0aC5mbG9vcihhKSxvPStyKHRbaV0saSx0KTtyZXR1cm4gbysoK3IodFtpKzFdLGkrMSx0KS1vKSooYS1pKX19ZnVuY3Rpb24gVCh0LGUpe3ZhciByLG4sYT10Lmxlbmd0aCxpPS0xO2lmKG51bGw9PWUpe2Zvcig7KytpPGE7KWlmKG51bGwhPShyPXRbaV0pJiZyPj1yKWZvcihuPXI7KytpPGE7KW51bGwhPShyPXRbaV0pJiZuPnImJihuPXIpfWVsc2UgZm9yKDsrK2k8YTspaWYobnVsbCE9KHI9ZSh0W2ldLGksdCkpJiZyPj1yKWZvcihuPXI7KytpPGE7KW51bGwhPShyPWUodFtpXSxpLHQpKSYmbj5yJiYobj1yKTtyZXR1cm4gbn1mdW5jdGlvbiBNKHQpe2lmKCEoYT10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBlPS0xLHI9VCh0LEEpLG49bmV3IEFycmF5KHIpOysrZTxyOylmb3IodmFyIGEsaT0tMSxvPW5bZV09bmV3IEFycmF5KGEpOysraTxhOylvW2ldPXRbaV1bZV07cmV0dXJuIG59ZnVuY3Rpb24gQSh0KXtyZXR1cm4gdC5sZW5ndGh9dC5iaXNlY3Q9YSx0LmJpc2VjdFJpZ2h0PWEsdC5iaXNlY3RMZWZ0PWksdC5hc2NlbmRpbmc9ZSx0LmJpc2VjdG9yPXIsdC5jcm9zcz1mdW5jdGlvbih0LGUscil7dmFyIG4sYSxpLHMsbD10Lmxlbmd0aCxjPWUubGVuZ3RoLHU9bmV3IEFycmF5KGwqYyk7Zm9yKG51bGw9PXImJihyPW8pLG49aT0wO248bDsrK24pZm9yKHM9dFtuXSxhPTA7YTxjOysrYSwrK2kpdVtpXT1yKHMsZVthXSk7cmV0dXJuIHV9LHQuZGVzY2VuZGluZz1mdW5jdGlvbih0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn0sdC5kZXZpYXRpb249Yyx0LmV4dGVudD11LHQuaGlzdG9ncmFtPWZ1bmN0aW9uKCl7dmFyIHQ9ZyxlPXUscj13O2Z1bmN0aW9uIG4obil7dmFyIGksbyxzPW4ubGVuZ3RoLGw9bmV3IEFycmF5KHMpO2ZvcihpPTA7aTxzOysraSlsW2ldPXQobltpXSxpLG4pO3ZhciBjPWUobCksdT1jWzBdLGg9Y1sxXSxmPXIobCx1LGgpO0FycmF5LmlzQXJyYXkoZil8fChmPV8odSxoLGYpLGY9dihNYXRoLmNlaWwodS9mKSpmLGgsZikpO2Zvcih2YXIgcD1mLmxlbmd0aDtmWzBdPD11OylmLnNoaWZ0KCksLS1wO2Zvcig7ZltwLTFdPmg7KWYucG9wKCksLS1wO3ZhciBkLGc9bmV3IEFycmF5KHArMSk7Zm9yKGk9MDtpPD1wOysraSkoZD1nW2ldPVtdKS54MD1pPjA/ZltpLTFdOnUsZC54MT1pPHA/ZltpXTpoO2ZvcihpPTA7aTxzOysraSl1PD0obz1sW2ldKSYmbzw9aCYmZ1thKGYsbywwLHApXS5wdXNoKG5baV0pO3JldHVybiBnfXJldHVybiBuLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZChlKSxuKTp0fSxuLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmQoW3RbMF0sdFsxXV0pLG4pOmV9LG4udGhyZXNob2xkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk/ZChmLmNhbGwodCkpOmQodCksbik6cn0sbn0sdC50aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzPWZ1bmN0aW9uKHQscixuKXtyZXR1cm4gdD1wLmNhbGwodCxzKS5zb3J0KGUpLE1hdGguY2VpbCgobi1yKS8oMiooayh0LC43NSktayh0LC4yNSkpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHQudGhyZXNob2xkU2NvdHQ9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBNYXRoLmNlaWwoKHItZSkvKDMuNSpjKHQpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHQudGhyZXNob2xkU3R1cmdlcz13LHQubWF4PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPXQubGVuZ3RoLGk9LTE7aWYobnVsbD09ZSl7Zm9yKDsrK2k8YTspaWYobnVsbCE9KHI9dFtpXSkmJnI+PXIpZm9yKG49cjsrK2k8YTspbnVsbCE9KHI9dFtpXSkmJnI+biYmKG49cil9ZWxzZSBmb3IoOysraTxhOylpZihudWxsIT0ocj1lKHRbaV0saSx0KSkmJnI+PXIpZm9yKG49cjsrK2k8YTspbnVsbCE9KHI9ZSh0W2ldLGksdCkpJiZyPm4mJihuPXIpO3JldHVybiBufSx0Lm1lYW49ZnVuY3Rpb24odCxlKXt2YXIgcixuPXQubGVuZ3RoLGE9bixpPS0xLG89MDtpZihudWxsPT1lKWZvcig7KytpPG47KWlzTmFOKHI9cyh0W2ldKSk/LS1hOm8rPXI7ZWxzZSBmb3IoOysraTxuOylpc05hTihyPXMoZSh0W2ldLGksdCkpKT8tLWE6bys9cjtpZihhKXJldHVybiBvL2F9LHQubWVkaWFuPWZ1bmN0aW9uKHQscil7dmFyIG4sYT10Lmxlbmd0aCxpPS0xLG89W107aWYobnVsbD09cilmb3IoOysraTxhOylpc05hTihuPXModFtpXSkpfHxvLnB1c2gobik7ZWxzZSBmb3IoOysraTxhOylpc05hTihuPXMocih0W2ldLGksdCkpKXx8by5wdXNoKG4pO3JldHVybiBrKG8uc29ydChlKSwuNSl9LHQubWVyZ2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixhPXQubGVuZ3RoLGk9LTEsbz0wOysraTxhOylvKz10W2ldLmxlbmd0aDtmb3Iocj1uZXcgQXJyYXkobyk7LS1hPj0wOylmb3IoZT0obj10W2FdKS5sZW5ndGg7LS1lPj0wOylyWy0tb109bltlXTtyZXR1cm4gcn0sdC5taW49VCx0LnBhaXJzPWZ1bmN0aW9uKHQsZSl7bnVsbD09ZSYmKGU9byk7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0xLGE9dFswXSxpPW5ldyBBcnJheShuPDA/MDpuKTtyPG47KWlbcl09ZShhLGE9dFsrK3JdKTtyZXR1cm4gaX0sdC5wZXJtdXRlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUubGVuZ3RoLG49bmV3IEFycmF5KHIpO3ItLTspbltyXT10W2Vbcl1dO3JldHVybiBufSx0LnF1YW50aWxlPWssdC5yYW5nZT12LHQuc2Nhbj1mdW5jdGlvbih0LHIpe2lmKG49dC5sZW5ndGgpe3ZhciBuLGEsaT0wLG89MCxzPXRbb107Zm9yKG51bGw9PXImJihyPWUpOysraTxuOykocihhPXRbaV0scyk8MHx8MCE9PXIocyxzKSkmJihzPWEsbz1pKTtyZXR1cm4gMD09PXIocyxzKT9vOnZvaWQgMH19LHQuc2h1ZmZsZT1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuLGEsaT0obnVsbD09cj90Lmxlbmd0aDpyKS0oZT1udWxsPT1lPzA6K2UpO2k7KWE9TWF0aC5yYW5kb20oKSppLS18MCxuPXRbaStlXSx0W2krZV09dFthK2VdLHRbYStlXT1uO3JldHVybiB0fSx0LnN1bT1mdW5jdGlvbih0LGUpe3ZhciByLG49dC5sZW5ndGgsYT0tMSxpPTA7aWYobnVsbD09ZSlmb3IoOysrYTxuOykocj0rdFthXSkmJihpKz1yKTtlbHNlIGZvcig7KythPG47KShyPStlKHRbYV0sYSx0KSkmJihpKz1yKTtyZXR1cm4gaX0sdC50aWNrcz1mdW5jdGlvbih0LGUscil7dmFyIG4sYSxpLG8scz0tMTtpZihyPStyLCh0PSt0KT09KGU9K2UpJiZyPjApcmV0dXJuW3RdO2lmKChuPWU8dCkmJihhPXQsdD1lLGU9YSksMD09PShvPWIodCxlLHIpKXx8IWlzRmluaXRlKG8pKXJldHVybltdO2lmKG8+MClmb3IodD1NYXRoLmNlaWwodC9vKSxlPU1hdGguZmxvb3IoZS9vKSxpPW5ldyBBcnJheShhPU1hdGguY2VpbChlLXQrMSkpOysrczxhOylpW3NdPSh0K3MpKm87ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqbyksZT1NYXRoLmNlaWwoZSpvKSxpPW5ldyBBcnJheShhPU1hdGguY2VpbCh0LWUrMSkpOysrczxhOylpW3NdPSh0LXMpL287cmV0dXJuIG4mJmkucmV2ZXJzZSgpLGl9LHQudGlja0luY3JlbWVudD1iLHQudGlja1N0ZXA9Xyx0LnRyYW5zcG9zZT1NLHQudmFyaWFuY2U9bCx0LnppcD1mdW5jdGlvbigpe3JldHVybiBNKGFyZ3VtZW50cyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9mIGU/cjpuLmQzPW4uZDN8fHt9KX0se31dLDE1NTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuO249dGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiByKHQscil7dmFyIG49bmV3IGU7aWYodCBpbnN0YW5jZW9mIGUpdC5lYWNoKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGEsaT0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PXIpZm9yKDsrK2k8bzspbi5zZXQoaSx0W2ldKTtlbHNlIGZvcig7KytpPG87KW4uc2V0KHIoYT10W2ldLGksdCksYSl9ZWxzZSBpZih0KWZvcih2YXIgcyBpbiB0KW4uc2V0KHMsdFtzXSk7cmV0dXJuIG59ZnVuY3Rpb24gbigpe3JldHVybnt9fWZ1bmN0aW9uIGEodCxlLHIpe3RbZV09cn1mdW5jdGlvbiBpKCl7cmV0dXJuIHIoKX1mdW5jdGlvbiBvKHQsZSxyKXt0LnNldChlLHIpfWZ1bmN0aW9uIHMoKXt9ZS5wcm90b3R5cGU9ci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiIkIit0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1siJCIrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzWyIkIit0XT1lLHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT0iJCIrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcykiJCI9PT10WzBdJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKSIkIj09PWVbMF0mJnQucHVzaChlLnNsaWNlKDEpKTtyZXR1cm4gdH0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpIiQiPT09ZVswXSYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpIiQiPT09ZVswXSYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKSIkIj09PWVbMF0mJisrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcylpZigiJCI9PT10WzBdKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKSIkIj09PWVbMF0mJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIGw9ci5wcm90b3R5cGU7ZnVuY3Rpb24gYyh0LGUpe3ZhciByPW5ldyBzO2lmKHQgaW5zdGFuY2VvZiBzKXQuZWFjaChmdW5jdGlvbih0KXtyLmFkZCh0KX0pO2Vsc2UgaWYodCl7dmFyIG49LTEsYT10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytuPGE7KXIuYWRkKHRbbl0pO2Vsc2UgZm9yKDsrK248YTspci5hZGQoZSh0W25dLG4sdCkpfXJldHVybiByfXMucHJvdG90eXBlPWMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpzLGhhczpsLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbIiQiKyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOmwucmVtb3ZlLGNsZWFyOmwuY2xlYXIsdmFsdWVzOmwua2V5cyxzaXplOmwuc2l6ZSxlbXB0eTpsLmVtcHR5LGVhY2g6bC5lYWNofSx0Lm5lc3Q9ZnVuY3Rpb24oKXt2YXIgdCxlLHMsbD1bXSxjPVtdO2Z1bmN0aW9uIHUobixhLGksbyl7aWYoYT49bC5sZW5ndGgpcmV0dXJuIG51bGwhPXQmJm4uc29ydCh0KSxudWxsIT1lP2Uobik6bjtmb3IodmFyIHMsYyxoLGY9LTEscD1uLmxlbmd0aCxkPWxbYSsrXSxnPXIoKSx2PWkoKTsrK2Y8cDspKGg9Zy5nZXQocz1kKGM9bltmXSkrIiIpKT9oLnB1c2goYyk6Zy5zZXQocyxbY10pO3JldHVybiBnLmVhY2goZnVuY3Rpb24odCxlKXtvKHYsZSx1KHQsYSxpLG8pKX0pLHZ9cmV0dXJuIHM9e29iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdSh0LDAsbixhKX0sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiB1KHQsMCxpLG8pfSxlbnRyaWVzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiB0KHIsbil7aWYoKytuPmwubGVuZ3RoKXJldHVybiByO3ZhciBhLGk9Y1tuLTFdO3JldHVybiBudWxsIT1lJiZuPj1sLmxlbmd0aD9hPXIuZW50cmllcygpOihhPVtdLHIuZWFjaChmdW5jdGlvbihlLHIpe2EucHVzaCh7a2V5OnIsdmFsdWVzOnQoZSxuKX0pfSkpLG51bGwhPWk/YS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodC5rZXksZS5rZXkpfSk6YX0odSh0LDAsaSxvKSwwKX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiBsLnB1c2godCksc30sc29ydEtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGNbbC5sZW5ndGgtMV09dCxzfSxzb3J0VmFsdWVzOmZ1bmN0aW9uKGUpe3JldHVybiB0PWUsc30scm9sbHVwOmZ1bmN0aW9uKHQpe3JldHVybiBlPXQsc319fSx0LnNldD1jLHQubWFwPXIsdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaChyKTtyZXR1cm4gZX0sdC52YWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHRbcl0pO3JldHVybiBlfSx0LmVudHJpZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHtrZXk6cix2YWx1ZTp0W3JdfSk7cmV0dXJuIGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9mIGU/cjpuLmQzPW4uZDN8fHt9KX0se31dLDE1NjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuO249dGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZSh0LGUscil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9cixyLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gcih0LGUpe3ZhciByPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgbiBpbiBlKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBuKCl7fXZhciBhPSJcXHMqKFsrLV0/XFxkKylcXHMqIixpPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLG89IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLHM9L14jKFswLTlhLWZdezMsOH0pJC8sbD1uZXcgUmVnRXhwKCJecmdiXFwoIitbYSxhLGFdKyJcXCkkIiksYz1uZXcgUmVnRXhwKCJecmdiXFwoIitbbyxvLG9dKyJcXCkkIiksdT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2EsYSxhLGldKyJcXCkkIiksaD1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW28sbyxvLGldKyJcXCkkIiksZj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbaSxvLG9dKyJcXCkkIikscD1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW2ksbyxvLGldKyJcXCkkIiksZD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBnKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gdigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIG0odCl7dmFyIGUscjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9cy5leGVjKHQpKT8ocj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT1yP3koZSk6Mz09PXI/bmV3IHcoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1yP25ldyB3KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1yP25ldyB3KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9bC5leGVjKHQpKT9uZXcgdyhlWzFdLGVbMl0sZVszXSwxKTooZT1jLmV4ZWModCkpP25ldyB3KDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPXUuZXhlYyh0KSk/eChlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1oLmV4ZWModCkpP3goMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9Zi5leGVjKHQpKT9BKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9cC5leGVjKHQpKT9BKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6ZC5oYXNPd25Qcm9wZXJ0eSh0KT95KGRbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyB3KE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24geSh0KXtyZXR1cm4gbmV3IHcodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHgodCxlLHIsbil7cmV0dXJuIG48PTAmJih0PWU9cj1OYU4pLG5ldyB3KHQsZSxyLG4pfWZ1bmN0aW9uIGIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBufHwodD1tKHQpKSx0P25ldyB3KCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyB3fWZ1bmN0aW9uIF8odCxlLHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2IodCk6bmV3IHcodCxlLHIsbnVsbD09bj8xOm4pfWZ1bmN0aW9uIHcodCxlLHIsbil7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIGsoKXtyZXR1cm4iIyIrTSh0aGlzLnIpK00odGhpcy5nKStNKHRoaXMuYil9ZnVuY3Rpb24gVCgpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIE0odCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBBKHQsZSxyLG4pe3JldHVybiBuPD0wP3Q9ZT1yPU5hTjpyPD0wfHxyPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgTCh0LGUscixuKX1mdW5jdGlvbiBTKHQpe2lmKHQgaW5zdGFuY2VvZiBMKXJldHVybiBuZXcgTCh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBufHwodD1tKHQpKSwhdClyZXR1cm4gbmV3IEw7aWYodCBpbnN0YW5jZW9mIEwpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUscj10LmcvMjU1LGE9dC5iLzI1NSxpPU1hdGgubWluKGUscixhKSxvPU1hdGgubWF4KGUscixhKSxzPU5hTixsPW8taSxjPShvK2kpLzI7cmV0dXJuIGw/KHM9ZT09PW8/KHItYSkvbCs2KihyPGEpOnI9PT1vPyhhLWUpL2wrMjooZS1yKS9sKzQsbC89YzwuNT9vK2k6Mi1vLWkscyo9NjApOmw9Yz4wJiZjPDE/MDpzLG5ldyBMKHMsbCxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gRSh0LGUscixuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Uyh0KTpuZXcgTCh0LGUscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gTCh0LGUscixuKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gQyh0LGUscil7cmV0dXJuIDI1NSoodDw2MD9lKyhyLWUpKnQvNjA6dDwxODA/cjp0PDI0MD9lKyhyLWUpKigyNDAtdCkvNjA6ZSl9ZShuLG0se2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6Zyxmb3JtYXRIZXg6Zyxmb3JtYXRIc2w6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOnYsdG9TdHJpbmc6dn0pLGUodyxfLHIobix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8xLy43Ok1hdGgucG93KDEvLjcsdCksbmV3IHcodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Ljc6TWF0aC5wb3coLjcsdCksbmV3IHcodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDprLGZvcm1hdEhleDprLGZvcm1hdFJnYjpULHRvU3RyaW5nOlR9KSksZShMLEUscihuLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10PzEvLjc6TWF0aC5wb3coMS8uNyx0KSxuZXcgTCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10Py43Ok1hdGgucG93KC43LHQpLG5ldyBMKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLHI9dGhpcy5sLG49cisocjwuNT9yOjEtcikqZSxhPTIqci1uO3JldHVybiBuZXcgdyhDKHQ+PTI0MD90LTI0MDp0KzEyMCxhLG4pLEModCxhLG4pLEModDwxMjA/dCsyNDA6dC0xMjAsYSxuKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgUD1NYXRoLlBJLzE4MCxPPTE4MC9NYXRoLlBJLHo9Ljk2NDIyLEk9MSxEPS44MjUyMSxSPTQvMjksRj02LzI5LEI9MypGKkYsTj1GKkYqRjtmdW5jdGlvbiBqKHQpe2lmKHQgaW5zdGFuY2VvZiBVKXJldHVybiBuZXcgVSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBaKXJldHVybiBKKHQpO3QgaW5zdGFuY2VvZiB3fHwodD1iKHQpKTt2YXIgZSxyLG49WSh0LnIpLGE9WSh0LmcpLGk9WSh0LmIpLG89cSgoLjIyMjUwNDUqbisuNzE2ODc4NiphKy4wNjA2MTY5KmkpL0kpO3JldHVybiBuPT09YSYmYT09PWk/ZT1yPW86KGU9cSgoLjQzNjA3NDcqbisuMzg1MDY0OSphKy4xNDMwODA0KmkpL3opLHI9cSgoLjAxMzkzMjIqbisuMDk3MTA0NSphKy43MTQxNzMzKmkpL0QpKSxuZXcgVSgxMTYqby0xNiw1MDAqKGUtbyksMjAwKihvLXIpLHQub3BhY2l0eSl9ZnVuY3Rpb24gVih0LGUscixuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/aih0KTpuZXcgVSh0LGUscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gVSh0LGUscixuKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gcSh0KXtyZXR1cm4gdD5OP01hdGgucG93KHQsMS8zKTp0L0IrUn1mdW5jdGlvbiBIKHQpe3JldHVybiB0PkY/dCp0KnQ6QioodC1SKX1mdW5jdGlvbiBHKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gWSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBXKHQpe2lmKHQgaW5zdGFuY2VvZiBaKXJldHVybiBuZXcgWih0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBVfHwodD1qKHQpKSwwPT09dC5hJiYwPT09dC5iKXJldHVybiBuZXcgWihOYU4sMDx0LmwmJnQubDwxMDA/MDpOYU4sdC5sLHQub3BhY2l0eSk7dmFyIGU9TWF0aC5hdGFuMih0LmIsdC5hKSpPO3JldHVybiBuZXcgWihlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBYKHQsZSxyLG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9XKHQpOm5ldyBaKHQsZSxyLG51bGw9PW4/MTpuKX1mdW5jdGlvbiBaKHQsZSxyLG4pe3RoaXMuaD0rdCx0aGlzLmM9K2UsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBKKHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyBVKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgZT10LmgqUDtyZXR1cm4gbmV3IFUodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1lKFUsVixyKG4se2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVSh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFUodGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsZT1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLHI9aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gbmV3IHcoRygzLjEzMzg1NjEqKGU9eipIKGUpKS0xLjYxNjg2NjcqKHQ9SSpIKHQpKS0uNDkwNjE0Nioocj1EKkgocikpKSxHKC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqciksRyguMDcxOTQ1MyplLS4yMjg5OTE0KnQrMS40MDUyNDI3KnIpLHRoaXMub3BhY2l0eSl9fSkpLGUoWixYLHIobix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBaKHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWih0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBKKHRoaXMpLnJnYigpfX0pKTt2YXIgSz0tLjE0ODYxLFE9MS43ODI3NywkPS0uMjkyMjcsdHQ9LS45MDY0OSxldD0xLjk3Mjk0LHJ0PWV0KnR0LG50PWV0KlEsYXQ9USokLXR0Kks7ZnVuY3Rpb24gaXQodCxlLHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2Z1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBvdClyZXR1cm4gbmV3IG90KHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIHd8fCh0PWIodCkpO3ZhciBlPXQuci8yNTUscj10LmcvMjU1LG49dC5iLzI1NSxhPShhdCpuK3J0KmUtbnQqcikvKGF0K3J0LW50KSxpPW4tYSxvPShldCooci1hKS0kKmkpL3R0LHM9TWF0aC5zcXJ0KG8qbytpKmkpLyhldCphKigxLWEpKSxsPXM/TWF0aC5hdGFuMihvLGkpKk8tMTIwOk5hTjtyZXR1cm4gbmV3IG90KGw8MD9sKzM2MDpsLHMsYSx0Lm9wYWNpdHkpfSh0KTpuZXcgb3QodCxlLHIsbnVsbD09bj8xOm4pfWZ1bmN0aW9uIG90KHQsZSxyLG4pe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn1lKG90LGl0LHIobix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8xLy43Ok1hdGgucG93KDEvLjcsdCksbmV3IG90KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Ljc6TWF0aC5wb3coLjcsdCksbmV3IG90KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpQLGU9K3RoaXMubCxyPWlzTmFOKHRoaXMucyk/MDp0aGlzLnMqZSooMS1lKSxuPU1hdGguY29zKHQpLGE9TWF0aC5zaW4odCk7cmV0dXJuIG5ldyB3KDI1NSooZStyKihLKm4rUSphKSksMjU1KihlK3IqKCQqbit0dCphKSksMjU1KihlK3IqKGV0Km4pKSx0aGlzLm9wYWNpdHkpfX0pKSx0LmNvbG9yPW0sdC5jdWJlaGVsaXg9aXQsdC5ncmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBVKHQsMCwwLG51bGw9PWU/MTplKX0sdC5oY2w9WCx0LmhzbD1FLHQubGFiPVYsdC5sY2g9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1codCk6bmV3IFoocixlLHQsbnVsbD09bj8xOm4pfSx0LnJnYj1fLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9mIGU/cjoobj1ufHxzZWxmKS5kMz1uLmQzfHx7fSl9LHt9XSwxNTc6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbjtuPXRoaXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQsZT0wLHI9YXJndW1lbnRzLmxlbmd0aCxhPXt9O2U8cjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGEpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7YVt0XT1bXX1yZXR1cm4gbmV3IG4oYSl9ZnVuY3Rpb24gbih0KXt0aGlzLl89dH1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByLG49MCxhPXQubGVuZ3RoO248YTsrK24paWYoKHI9dFtuXSkubmFtZT09PWUpcmV0dXJuIHIudmFsdWV9ZnVuY3Rpb24gaSh0LHIsbil7Zm9yKHZhciBhPTAsaT10Lmxlbmd0aDthPGk7KythKWlmKHRbYV0ubmFtZT09PXIpe3RbYV09ZSx0PXQuc2xpY2UoMCxhKS5jb25jYXQodC5zbGljZShhKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOnIsdmFsdWU6bn0pLHR9bi5wcm90b3R5cGU9ci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm4sb246ZnVuY3Rpb24odCxlKXt2YXIgcixuLG89dGhpcy5fLHM9KG49bywodCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbih0KXt2YXIgZT0iIixyPXQuaW5kZXhPZigiLiIpO2lmKHI+PTAmJihlPXQuc2xpY2UocisxKSx0PXQuc2xpY2UoMCxyKSksdCYmIW4uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOmV9fSkpLGw9LTEsYz1zLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrbDxjOylpZihyPSh0PXNbbF0pLnR5cGUpb1tyXT1pKG9bcl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IociBpbiBvKW9bcl09aShvW3JdLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbDxjOylpZigocj0odD1zW2xdKS50eXBlKSYmKHI9YShvW3JdLHQubmFtZSkpKXJldHVybiByfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdLnNsaWNlKCk7cmV0dXJuIG5ldyBuKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKHI9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgcixuLGE9bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWFbaV09YXJndW1lbnRzW2krMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IoaT0wLHI9KG49dGhpcy5fW3RdKS5sZW5ndGg7aTxyOysraSluW2ldLnZhbHVlLmFwcGx5KGUsYSl9LGFwcGx5OmZ1bmN0aW9uKHQsZSxyKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgbj10aGlzLl9bdF0sYT0wLGk9bi5sZW5ndGg7YTxpOysrYSluW2FdLnZhbHVlLmFwcGx5KGUscil9fSx0LmRpc3BhdGNoPXIsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSgib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9yOm4uZDM9bi5kM3x8e30pfSx7fV0sMTU4OltmdW5jdGlvbih0LGUscil7dmFyIG4sYTtuPXRoaXMsYT1mdW5jdGlvbih0LGUscixuLGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19LG89ZnVuY3Rpb24oKXtyZXR1cm4gMWUtNiooTWF0aC5yYW5kb20oKS0uNSl9O2Z1bmN0aW9uIHModCl7cmV0dXJuIHQueCt0LnZ4fWZ1bmN0aW9uIGwodCl7cmV0dXJuIHQueSt0LnZ5fWZ1bmN0aW9uIGModCl7cmV0dXJuIHQuaW5kZXh9ZnVuY3Rpb24gdSh0LGUpe3ZhciByPXQuZ2V0KGUpO2lmKCFyKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIitlKTtyZXR1cm4gcn1mdW5jdGlvbiBoKHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gZih0KXtyZXR1cm4gdC55fXZhciBwPTEwLGQ9TWF0aC5QSSooMy1NYXRoLnNxcnQoNSkpO3QuZm9yY2VDZW50ZXI9ZnVuY3Rpb24odCxlKXt2YXIgcjtmdW5jdGlvbiBuKCl7dmFyIG4sYSxpPXIubGVuZ3RoLG89MCxzPTA7Zm9yKG49MDtuPGk7KytuKW8rPShhPXJbbl0pLngscys9YS55O2ZvcihvPW8vaS10LHM9cy9pLWUsbj0wO248aTsrK24pKGE9cltuXSkueC09byxhLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihlPTApLG4uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtyPXR9LG4ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxuKTp0fSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qsbik6ZX0sbn0sdC5mb3JjZUNvbGxpZGU9ZnVuY3Rpb24odCl7dmFyIHIsbixhPTEsYz0xO2Z1bmN0aW9uIHUoKXtmb3IodmFyIHQsaSx1LGYscCxkLGcsdj1yLmxlbmd0aCxtPTA7bTxjOysrbSlmb3IoaT1lLnF1YWR0cmVlKHIscyxsKS52aXNpdEFmdGVyKGgpLHQ9MDt0PHY7Kyt0KXU9clt0XSxkPW5bdS5pbmRleF0sZz1kKmQsZj11LngrdS52eCxwPXUueSt1LnZ5LGkudmlzaXQoeSk7ZnVuY3Rpb24geSh0LGUscixuLGkpe3ZhciBzPXQuZGF0YSxsPXQucixjPWQrbDtpZighcylyZXR1cm4gZT5mK2N8fG48Zi1jfHxyPnArY3x8aTxwLWM7aWYocy5pbmRleD51LmluZGV4KXt2YXIgaD1mLXMueC1zLnZ4LHY9cC1zLnktcy52eSxtPWgqaCt2KnY7bTxjKmMmJigwPT09aCYmKG0rPShoPW8oKSkqaCksMD09PXYmJihtKz0odj1vKCkpKnYpLG09KGMtKG09TWF0aC5zcXJ0KG0pKSkvbSphLHUudngrPShoKj1tKSooYz0obCo9bCkvKGcrbCkpLHUudnkrPSh2Kj1tKSpjLHMudngtPWgqKGM9MS1jKSxzLnZ5LT12KmMpfX19ZnVuY3Rpb24gaCh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIGYoKXtpZihyKXt2YXIgZSxhLGk9ci5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGkpLGU9MDtlPGk7KytlKWE9cltlXSxuW2EuaW5kZXhdPSt0KGEsZSxyKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWkobnVsbD09dD8xOit0KSksdS5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe3I9dCxmKCl9LHUuaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdCx1KTpjfSx1LnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LHUpOmF9LHUucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6aSgrZSksZigpLHUpOnR9LHV9LHQuZm9yY2VMaW5rPWZ1bmN0aW9uKHQpe3ZhciBlLG4sYSxzLGwsaD1jLGY9ZnVuY3Rpb24odCl7cmV0dXJuIDEvTWF0aC5taW4oc1t0LnNvdXJjZS5pbmRleF0sc1t0LnRhcmdldC5pbmRleF0pfSxwPWkoMzApLGQ9MTtmdW5jdGlvbiBnKHIpe2Zvcih2YXIgYT0wLGk9dC5sZW5ndGg7YTxkOysrYSlmb3IodmFyIHMsYyx1LGgsZixwLGcsdj0wO3Y8aTsrK3YpYz0ocz10W3ZdKS5zb3VyY2UsaD0odT1zLnRhcmdldCkueCt1LnZ4LWMueC1jLnZ4fHxvKCksZj11LnkrdS52eS1jLnktYy52eXx8bygpLGgqPXA9KChwPU1hdGguc3FydChoKmgrZipmKSktblt2XSkvcCpyKmVbdl0sZio9cCx1LnZ4LT1oKihnPWxbdl0pLHUudnktPWYqZyxjLnZ4Kz1oKihnPTEtZyksYy52eSs9ZipnfWZ1bmN0aW9uIHYoKXtpZihhKXt2YXIgaSxvLGM9YS5sZW5ndGgsZj10Lmxlbmd0aCxwPXIubWFwKGEsaCk7Zm9yKGk9MCxzPW5ldyBBcnJheShjKTtpPGY7KytpKShvPXRbaV0pLmluZGV4PWksIm9iamVjdCIhPXR5cGVvZiBvLnNvdXJjZSYmKG8uc291cmNlPXUocCxvLnNvdXJjZSkpLCJvYmplY3QiIT10eXBlb2Ygby50YXJnZXQmJihvLnRhcmdldD11KHAsby50YXJnZXQpKSxzW28uc291cmNlLmluZGV4XT0oc1tvLnNvdXJjZS5pbmRleF18fDApKzEsc1tvLnRhcmdldC5pbmRleF09KHNbby50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihpPTAsbD1uZXcgQXJyYXkoZik7aTxmOysraSlvPXRbaV0sbFtpXT1zW28uc291cmNlLmluZGV4XS8oc1tvLnNvdXJjZS5pbmRleF0rc1tvLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KGYpLG0oKSxuPW5ldyBBcnJheShmKSx5KCl9fWZ1bmN0aW9uIG0oKXtpZihhKWZvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuOysrcillW3JdPStmKHRbcl0scix0KX1mdW5jdGlvbiB5KCl7aWYoYSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rcCh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxnLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7YT10LHYoKX0sZy5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHYoKSxnKTp0fSxnLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQsZyk6aH0sZy5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0LGcpOmR9LGcuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSxtKCksZyk6Zn0sZy5kaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmkoK3QpLHkoKSxnKTpwfSxnfSx0LmZvcmNlTWFueUJvZHk9ZnVuY3Rpb24oKXt2YXIgdCxyLG4sYSxzPWkoLTMwKSxsPTEsYz0xLzAsdT0uODE7ZnVuY3Rpb24gcChhKXt2YXIgaSxvPXQubGVuZ3RoLHM9ZS5xdWFkdHJlZSh0LGgsZikudmlzaXRBZnRlcihnKTtmb3Iobj1hLGk9MDtpPG87KytpKXI9dFtpXSxzLnZpc2l0KHYpfWZ1bmN0aW9uIGQoKXtpZih0KXt2YXIgZSxyLG49dC5sZW5ndGg7Zm9yKGE9bmV3IEFycmF5KG4pLGU9MDtlPG47KytlKXI9dFtlXSxhW3IuaW5kZXhdPStzKHIsZSx0KX19ZnVuY3Rpb24gZyh0KXt2YXIgZSxyLG4saSxvLHM9MCxsPTA7aWYodC5sZW5ndGgpe2ZvcihuPWk9bz0wO288NDsrK28pKGU9dFtvXSkmJihyPU1hdGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsbCs9cixuKz1yKmUueCxpKz1yKmUueSk7dC54PW4vbCx0Lnk9aS9sfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97cys9YVtlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24gdih0LGUsaSxzKXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgaD10Lngtci54LGY9dC55LXIueSxwPXMtZSxkPWgqaCtmKmY7aWYocCpwL3U8ZClyZXR1cm4gZDxjJiYoMD09PWgmJihkKz0oaD1vKCkpKmgpLDA9PT1mJiYoZCs9KGY9bygpKSpmKSxkPGwmJihkPU1hdGguc3FydChsKmQpKSxyLnZ4Kz1oKnQudmFsdWUqbi9kLHIudnkrPWYqdC52YWx1ZSpuL2QpLCEwO2lmKCEodC5sZW5ndGh8fGQ+PWMpKXsodC5kYXRhIT09cnx8dC5uZXh0KSYmKDA9PT1oJiYoZCs9KGg9bygpKSpoKSwwPT09ZiYmKGQrPShmPW8oKSkqZiksZDxsJiYoZD1NYXRoLnNxcnQobCpkKSkpO2Rve3QuZGF0YSE9PXImJihwPWFbdC5kYXRhLmluZGV4XSpuL2Qsci52eCs9aCpwLHIudnkrPWYqcCl9d2hpbGUodD10Lm5leHQpfX1yZXR1cm4gcC5pbml0aWFsaXplPWZ1bmN0aW9uKGUpe3Q9ZSxkKCl9LHAuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSxkKCkscCk6c30scC5kaXN0YW5jZU1pbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10KnQscCk6TWF0aC5zcXJ0KGwpfSxwLmRpc3RhbmNlTWF4PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQqdCxwKTpNYXRoLnNxcnQoYyl9LHAudGhldGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCp0LHApOk1hdGguc3FydCh1KX0scH0sdC5mb3JjZVJhZGlhbD1mdW5jdGlvbih0LGUscil7dmFyIG4sYSxvLHM9aSguMSk7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIGk9MCxzPW4ubGVuZ3RoO2k8czsrK2kpe3ZhciBsPW5baV0sYz1sLngtZXx8MWUtNix1PWwueS1yfHwxZS02LGg9TWF0aC5zcXJ0KGMqYyt1KnUpLGY9KG9baV0taCkqYVtpXSp0L2g7bC52eCs9YypmLGwudnkrPXUqZn19ZnVuY3Rpb24gYygpe2lmKG4pe3ZhciBlLHI9bi5sZW5ndGg7Zm9yKGE9bmV3IEFycmF5KHIpLG89bmV3IEFycmF5KHIpLGU9MDtlPHI7KytlKW9bZV09K3QobltlXSxlLG4pLGFbZV09aXNOYU4ob1tlXSk/MDorcyhuW2VdLGUsbil9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1pKCt0KSksbnVsbD09ZSYmKGU9MCksbnVsbD09ciYmKHI9MCksbC5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dCxjKCl9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSxjKCksbCk6c30sbC5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTppKCtlKSxjKCksbCk6dH0sbC54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0LGwpOmV9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxsKTpyfSxsfSx0LmZvcmNlU2ltdWxhdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxpPTEsbz0uMDAxLHM9MS1NYXRoLnBvdyhvLDEvMzAwKSxsPTAsYz0uNix1PXIubWFwKCksaD1hLnRpbWVyKGcpLGY9bi5kaXNwYXRjaCgidGljayIsImVuZCIpO2Z1bmN0aW9uIGcoKXt2KCksZi5jYWxsKCJ0aWNrIixlKSxpPG8mJihoLnN0b3AoKSxmLmNhbGwoImVuZCIsZSkpfWZ1bmN0aW9uIHYoKXt2YXIgZSxyLG49dC5sZW5ndGg7Zm9yKGkrPShsLWkpKnMsdS5lYWNoKGZ1bmN0aW9uKHQpe3QoaSl9KSxlPTA7ZTxuOysrZSludWxsPT0ocj10W2VdKS5meD9yLngrPXIudngqPWM6KHIueD1yLmZ4LHIudng9MCksbnVsbD09ci5meT9yLnkrPXIudnkqPWM6KHIueT1yLmZ5LHIudnk9MCl9ZnVuY3Rpb24gbSgpe2Zvcih2YXIgZSxyPTAsbj10Lmxlbmd0aDtyPG47KytyKXtpZigoZT10W3JdKS5pbmRleD1yLGlzTmFOKGUueCl8fGlzTmFOKGUueSkpe3ZhciBhPXAqTWF0aC5zcXJ0KHIpLGk9cipkO2UueD1hKk1hdGguY29zKGkpLGUueT1hKk1hdGguc2luKGkpfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiB5KGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksbSgpLGU9e3RpY2s6dixyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGgucmVzdGFydChnKSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGguc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXIsbSgpLHUuZWFjaCh5KSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGUpOitzfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdCxlKTpsfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTEtdCxlKToxLWN9LGZvcmNlOmZ1bmN0aW9uKHQscil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09cj91LnJlbW92ZSh0KTp1LnNldCh0LHkocikpLGUpOnUuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUscixuKXt2YXIgYSxpLG8scyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1uP249MS8wOm4qPW4sYz0wO2M8dTsrK2MpKG89KGE9ZS0ocz10W2NdKS54KSphKyhpPXItcy55KSppKTxuJiYobD1zLG49byk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQscil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oZi5vbih0LHIpLGUpOmYub24odCl9fX0sdC5mb3JjZVg9ZnVuY3Rpb24odCl7dmFyIGUscixuLGE9aSguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGEsaT0wLG89ZS5sZW5ndGg7aTxvOysraSkoYT1lW2ldKS52eCs9KG5baV0tYS54KSpyW2ldKnR9ZnVuY3Rpb24gcygpe2lmKGUpe3ZhciBpLG89ZS5sZW5ndGg7Zm9yKHI9bmV3IEFycmF5KG8pLG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKXJbaV09aXNOYU4obltpXT0rdChlW2ldLGksZSkpPzA6K2EoZVtpXSxpLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9aShudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LHMoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmkoK3QpLHMoKSxvKTphfSxvLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTppKCtlKSxzKCksbyk6dH0sb30sdC5mb3JjZVk9ZnVuY3Rpb24odCl7dmFyIGUscixuLGE9aSguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGEsaT0wLG89ZS5sZW5ndGg7aTxvOysraSkoYT1lW2ldKS52eSs9KG5baV0tYS55KSpyW2ldKnR9ZnVuY3Rpb24gcygpe2lmKGUpe3ZhciBpLG89ZS5sZW5ndGg7Zm9yKHI9bmV3IEFycmF5KG8pLG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKXJbaV09aXNOYU4obltpXT0rdChlW2ldLGksZSkpPzA6K2EoZVtpXSxpLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9aShudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LHMoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmkoK3QpLHMoKSxvKTphfSxvLnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTppKCtlKSxzKCksbyk6dH0sb30sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9hKHIsdCgiZDMtcXVhZHRyZWUiKSx0KCJkMy1jb2xsZWN0aW9uIiksdCgiZDMtZGlzcGF0Y2giKSx0KCJkMy10aW1lciIpKTphKG4uZDM9bi5kM3x8e30sbi5kMyxuLmQzLG4uZDMsbi5kMyl9LHsiZDMtY29sbGVjdGlvbiI6MTU1LCJkMy1kaXNwYXRjaCI6MTU3LCJkMy1xdWFkdHJlZSI6MTYyLCJkMy10aW1lciI6MTY0fV0sMTU5OltmdW5jdGlvbih0LGUscil7dmFyIG47bj10aGlzLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gdCtlLnh9ZnVuY3Rpb24gbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUueSl9ZnVuY3Rpb24gYSh0KXt2YXIgZT0wLHI9dC5jaGlsZHJlbixuPXImJnIubGVuZ3RoO2lmKG4pZm9yKDstLW4+PTA7KWUrPXJbbl0udmFsdWU7ZWxzZSBlPTE7dC52YWx1ZT1lfWZ1bmN0aW9uIGkodCxlKXt2YXIgcixuLGEsaSxzLHU9bmV3IGModCksaD0rdC52YWx1ZSYmKHUudmFsdWU9dC52YWx1ZSksZj1bdV07Zm9yKG51bGw9PWUmJihlPW8pO3I9Zi5wb3AoKTspaWYoaCYmKHIudmFsdWU9K3IuZGF0YS52YWx1ZSksKGE9ZShyLmRhdGEpKSYmKHM9YS5sZW5ndGgpKWZvcihyLmNoaWxkcmVuPW5ldyBBcnJheShzKSxpPXMtMTtpPj0wOy0taSlmLnB1c2gobj1yLmNoaWxkcmVuW2ldPW5ldyBjKGFbaV0pKSxuLnBhcmVudD1yLG4uZGVwdGg9ci5kZXB0aCsxO3JldHVybiB1LmVhY2hCZWZvcmUobCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC5jaGlsZHJlbn1mdW5jdGlvbiBzKHQpe3QuZGF0YT10LmRhdGEuZGF0YX1mdW5jdGlvbiBsKHQpe3ZhciBlPTA7ZG97dC5oZWlnaHQ9ZX13aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrZSl9ZnVuY3Rpb24gYyh0KXt0aGlzLmRhdGE9dCx0aGlzLmRlcHRoPXRoaXMuaGVpZ2h0PTAsdGhpcy5wYXJlbnQ9bnVsbH1jLnByb3RvdHlwZT1pLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Yyxjb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2hBZnRlcihhKX0sZWFjaDpmdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpPXRoaXMsbz1baV07ZG97Zm9yKGU9by5yZXZlcnNlKCksbz1bXTtpPWUucG9wKCk7KWlmKHQoaSkscj1pLmNoaWxkcmVuKWZvcihuPTAsYT1yLmxlbmd0aDtuPGE7KytuKW8ucHVzaChyW25dKX13aGlsZShvLmxlbmd0aCk7cmV0dXJuIHRoaXN9LGVhY2hBZnRlcjpmdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGE9dGhpcyxpPVthXSxvPVtdO2E9aS5wb3AoKTspaWYoby5wdXNoKGEpLGU9YS5jaGlsZHJlbilmb3Iocj0wLG49ZS5sZW5ndGg7cjxuOysrcilpLnB1c2goZVtyXSk7Zm9yKDthPW8ucG9wKCk7KXQoYSk7cmV0dXJuIHRoaXN9LGVhY2hCZWZvcmU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbj10aGlzLGE9W25dO249YS5wb3AoKTspaWYodChuKSxlPW4uY2hpbGRyZW4pZm9yKHI9ZS5sZW5ndGgtMTtyPj0wOy0tcilhLnB1c2goZVtyXSk7cmV0dXJuIHRoaXN9LHN1bTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoZnVuY3Rpb24oZSl7Zm9yKHZhciByPSt0KGUuZGF0YSl8fDAsbj1lLmNoaWxkcmVuLGE9biYmbi5sZW5ndGg7LS1hPj0wOylyKz1uW2FdLnZhbHVlO2UudmFsdWU9cn0pfSxzb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5zb3J0KHQpfSl9LHBhdGg6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMscj1mdW5jdGlvbih0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciByPXQuYW5jZXN0b3JzKCksbj1lLmFuY2VzdG9ycygpLGE9bnVsbDtmb3IodD1yLnBvcCgpLGU9bi5wb3AoKTt0PT09ZTspYT10LHQ9ci5wb3AoKSxlPW4ucG9wKCk7cmV0dXJuIGF9KGUsdCksbj1bZV07ZSE9PXI7KWU9ZS5wYXJlbnQsbi5wdXNoKGUpO2Zvcih2YXIgYT1uLmxlbmd0aDt0IT09cjspbi5zcGxpY2UoYSwwLHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIG59LGFuY2VzdG9yczpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0KTtyZXR1cm4gZX0sZGVzY2VuZGFudHM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pLHR9LGxlYXZlczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8dC5wdXNoKGUpfSksdH0sbGlua3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHQuZWFjaChmdW5jdGlvbihyKXtyIT09dCYmZS5wdXNoKHtzb3VyY2U6ci5wYXJlbnQsdGFyZ2V0OnJ9KX0pLGV9LGNvcHk6ZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzKS5lYWNoQmVmb3JlKHMpfX07dmFyIHU9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGgodCl7Zm9yKHZhciBlLHIsbj0wLGE9KHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbj10Lmxlbmd0aDtuOylyPU1hdGgucmFuZG9tKCkqbi0tfDAsZT10W25dLHRbbl09dFtyXSx0W3JdPWU7cmV0dXJuIHR9KHUuY2FsbCh0KSkpLmxlbmd0aCxpPVtdO248YTspZT10W25dLHImJmQocixlKT8rK246KHI9dihpPWYoaSxlKSksbj0wKTtyZXR1cm4gcn1mdW5jdGlvbiBmKHQsZSl7dmFyIHIsbjtpZihnKGUsdCkpcmV0dXJuW2VdO2ZvcihyPTA7cjx0Lmxlbmd0aDsrK3IpaWYocChlLHRbcl0pJiZnKG0odFtyXSxlKSx0KSlyZXR1cm5bdFtyXSxlXTtmb3Iocj0wO3I8dC5sZW5ndGgtMTsrK3IpZm9yKG49cisxO248dC5sZW5ndGg7KytuKWlmKHAobSh0W3JdLHRbbl0pLGUpJiZwKG0odFtyXSxlKSx0W25dKSYmcChtKHRbbl0sZSksdFtyXSkmJmcoeSh0W3JdLHRbbl0sZSksdCkpcmV0dXJuW3Rbcl0sdFtuXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gcCh0LGUpe3ZhciByPXQuci1lLnIsbj1lLngtdC54LGE9ZS55LXQueTtyZXR1cm4gcjwwfHxyKnI8bipuK2EqYX1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9dC5yLWUucisxZS02LG49ZS54LXQueCxhPWUueS10Lnk7cmV0dXJuIHI+MCYmcipyPm4qbithKmF9ZnVuY3Rpb24gZyh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KytyKWlmKCFkKHQsZVtyXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gdih0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm57eDooZT10WzBdKS54LHk6ZS55LHI6ZS5yfTtjYXNlIDI6cmV0dXJuIG0odFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIHkodFswXSx0WzFdLHRbMl0pfXZhciBlfWZ1bmN0aW9uIG0odCxlKXt2YXIgcj10Lngsbj10LnksYT10LnIsaT1lLngsbz1lLnkscz1lLnIsbD1pLXIsYz1vLW4sdT1zLWEsaD1NYXRoLnNxcnQobCpsK2MqYyk7cmV0dXJue3g6KHIraStsL2gqdSkvMix5OihuK28rYy9oKnUpLzIscjooaCthK3MpLzJ9fWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPXQueCxhPXQueSxpPXQucixvPWUueCxzPWUueSxsPWUucixjPXIueCx1PXIueSxoPXIucixmPW4tbyxwPW4tYyxkPWEtcyxnPWEtdSx2PWwtaSxtPWgtaSx5PW4qbithKmEtaSppLHg9eS1vKm8tcypzK2wqbCxiPXktYypjLXUqdStoKmgsXz1wKmQtZipnLHc9KGQqYi1nKngpLygyKl8pLW4saz0oZyp2LWQqbSkvXyxUPShwKngtZipiKS8oMipfKS1hLE09KGYqbS1wKnYpL18sQT1rKmsrTSpNLTEsUz0yKihpK3cqaytUKk0pLEU9dyp3K1QqVC1pKmksTD0tKEE/KFMrTWF0aC5zcXJ0KFMqUy00KkEqRSkpLygyKkEpOkUvUyk7cmV0dXJue3g6bit3K2sqTCx5OmErVCtNKkwscjpMfX1mdW5jdGlvbiB4KHQsZSxyKXt2YXIgbixhLGksbyxzPXQueC1lLngsbD10LnktZS55LGM9cypzK2wqbDtjPyhhPWUucityLnIsYSo9YSxvPXQucityLnIsYT4obyo9byk/KG49KGMrby1hKS8oMipjKSxpPU1hdGguc3FydChNYXRoLm1heCgwLG8vYy1uKm4pKSxyLng9dC54LW4qcy1pKmwsci55PXQueS1uKmwraSpzKToobj0oYythLW8pLygyKmMpLGk9TWF0aC5zcXJ0KE1hdGgubWF4KDAsYS9jLW4qbikpLHIueD1lLngrbipzLWkqbCxyLnk9ZS55K24qbCtpKnMpKTooci54PWUueCtyLnIsci55PWUueSl9ZnVuY3Rpb24gYih0LGUpe3ZhciByPXQucitlLnItMWUtNixuPWUueC10LngsYT1lLnktdC55O3JldHVybiByPjAmJnIqcj5uKm4rYSphfWZ1bmN0aW9uIF8odCl7dmFyIGU9dC5fLHI9dC5uZXh0Ll8sbj1lLnIrci5yLGE9KGUueCpyLnIrci54KmUucikvbixpPShlLnkqci5yK3IueSplLnIpL247cmV0dXJuIGEqYStpKml9ZnVuY3Rpb24gdyh0KXt0aGlzLl89dCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGx9ZnVuY3Rpb24gayh0KXtpZighKGE9dC5sZW5ndGgpKXJldHVybiAwO3ZhciBlLHIsbixhLGksbyxzLGwsYyx1LGY7aWYoKGU9dFswXSkueD0wLGUueT0wLCEoYT4xKSlyZXR1cm4gZS5yO2lmKHI9dFsxXSxlLng9LXIucixyLng9ZS5yLHIueT0wLCEoYT4yKSlyZXR1cm4gZS5yK3Iucjt4KHIsZSxuPXRbMl0pLGU9bmV3IHcoZSkscj1uZXcgdyhyKSxuPW5ldyB3KG4pLGUubmV4dD1uLnByZXZpb3VzPXIsci5uZXh0PWUucHJldmlvdXM9bixuLm5leHQ9ci5wcmV2aW91cz1lO3Q6Zm9yKHM9MztzPGE7KytzKXt4KGUuXyxyLl8sbj10W3NdKSxuPW5ldyB3KG4pLGw9ci5uZXh0LGM9ZS5wcmV2aW91cyx1PXIuXy5yLGY9ZS5fLnI7ZG97aWYodTw9Zil7aWYoYihsLl8sbi5fKSl7cj1sLGUubmV4dD1yLHIucHJldmlvdXM9ZSwtLXM7Y29udGludWUgdH11Kz1sLl8ucixsPWwubmV4dH1lbHNle2lmKGIoYy5fLG4uXykpeyhlPWMpLm5leHQ9cixyLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9Zis9Yy5fLnIsYz1jLnByZXZpb3VzfX13aGlsZShsIT09Yy5uZXh0KTtmb3Iobi5wcmV2aW91cz1lLG4ubmV4dD1yLGUubmV4dD1yLnByZXZpb3VzPXI9bixpPV8oZSk7KG49bi5uZXh0KSE9PXI7KShvPV8obikpPGkmJihlPW4saT1vKTtyPWUubmV4dH1mb3IoZT1bci5fXSxuPXI7KG49bi5uZXh0KSE9PXI7KWUucHVzaChuLl8pO2ZvcihuPWgoZSkscz0wO3M8YTsrK3MpKGU9dFtzXSkueC09bi54LGUueS09bi55O3JldHVybiBuLnJ9ZnVuY3Rpb24gVCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24gTSgpe3JldHVybiAwfWZ1bmN0aW9uIEEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFModCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBFKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLmNoaWxkcmVufHwoZS5yPU1hdGgubWF4KDAsK3QoZSl8fDApKX19ZnVuY3Rpb24gTCh0LGUpe3JldHVybiBmdW5jdGlvbihyKXtpZihuPXIuY2hpbGRyZW4pe3ZhciBuLGEsaSxvPW4ubGVuZ3RoLHM9dChyKSplfHwwO2lmKHMpZm9yKGE9MDthPG87KythKW5bYV0ucis9cztpZihpPWsobikscylmb3IoYT0wO2E8bzsrK2EpblthXS5yLT1zO3Iucj1pK3N9fX1mdW5jdGlvbiBDKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1lLnBhcmVudDtlLnIqPXQsciYmKGUueD1yLngrdCplLngsZS55PXIueSt0KmUueSl9fWZ1bmN0aW9uIFAodCl7dC54MD1NYXRoLnJvdW5kKHQueDApLHQueTA9TWF0aC5yb3VuZCh0LnkwKSx0LngxPU1hdGgucm91bmQodC54MSksdC55MT1NYXRoLnJvdW5kKHQueTEpfWZ1bmN0aW9uIE8odCxlLHIsbixhKXtmb3IodmFyIGksbz10LmNoaWxkcmVuLHM9LTEsbD1vLmxlbmd0aCxjPXQudmFsdWUmJihuLWUpL3QudmFsdWU7KytzPGw7KShpPW9bc10pLnkwPXIsaS55MT1hLGkueDA9ZSxpLngxPWUrPWkudmFsdWUqY312YXIgej0iJCIsST17ZGVwdGg6LTF9LEQ9e307ZnVuY3Rpb24gUih0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBGKHQpe3JldHVybiB0LnBhcmVudElkfWZ1bmN0aW9uIEIodCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gTih0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbMF06dC50fWZ1bmN0aW9uIGoodCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lW2UubGVuZ3RoLTFdOnQudH1mdW5jdGlvbiBWKHQsZSxyKXt2YXIgbj1yLyhlLmktdC5pKTtlLmMtPW4sZS5zKz1yLHQuYys9bixlLnorPXIsZS5tKz1yfWZ1bmN0aW9uIFUodCxlLHIpe3JldHVybiB0LmEucGFyZW50PT09ZS5wYXJlbnQ/dC5hOnJ9ZnVuY3Rpb24gcSh0LGUpe3RoaXMuXz10LHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1udWxsLHRoaXMuQT1udWxsLHRoaXMuYT10aGlzLHRoaXMuej0wLHRoaXMubT0wLHRoaXMuYz0wLHRoaXMucz0wLHRoaXMudD1udWxsLHRoaXMuaT1lfWZ1bmN0aW9uIEgodCxlLHIsbixhKXtmb3IodmFyIGksbz10LmNoaWxkcmVuLHM9LTEsbD1vLmxlbmd0aCxjPXQudmFsdWUmJihhLXIpL3QudmFsdWU7KytzPGw7KShpPW9bc10pLngwPWUsaS54MT1uLGkueTA9cixpLnkxPXIrPWkudmFsdWUqY31xLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMucHJvdG90eXBlKTt2YXIgRz0oMStNYXRoLnNxcnQoNSkpLzI7ZnVuY3Rpb24gWSh0LGUscixuLGEsaSl7Zm9yKHZhciBvLHMsbCxjLHUsaCxmLHAsZCxnLHYsbT1bXSx5PWUuY2hpbGRyZW4seD0wLGI9MCxfPXkubGVuZ3RoLHc9ZS52YWx1ZTt4PF87KXtsPWEtcixjPWktbjtkb3t1PXlbYisrXS52YWx1ZX13aGlsZSghdSYmYjxfKTtmb3IoaD1mPXUsdj11KnUqKGc9TWF0aC5tYXgoYy9sLGwvYykvKHcqdCkpLGQ9TWF0aC5tYXgoZi92LHYvaCk7YjxfOysrYil7aWYodSs9cz15W2JdLnZhbHVlLHM8aCYmKGg9cykscz5mJiYoZj1zKSx2PXUqdSpnLChwPU1hdGgubWF4KGYvdix2L2gpKT5kKXt1LT1zO2JyZWFrfWQ9cH1tLnB1c2gobz17dmFsdWU6dSxkaWNlOmw8YyxjaGlsZHJlbjp5LnNsaWNlKHgsYil9KSxvLmRpY2U/TyhvLHIsbixhLHc/bis9Yyp1L3c6aSk6SChvLHIsbix3P3IrPWwqdS93OmEsaSksdy09dSx4PWJ9cmV0dXJuIG19dmFyIFc9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKHQscixuLGEsaSl7WShlLHQscixuLGEsaSl9cmV0dXJuIHIucmF0aW89ZnVuY3Rpb24oZSl7cmV0dXJuIHQoKGU9K2UpPjE/ZToxKX0scn0oRyksWD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIodCxyLG4sYSxpKXtpZigobz10Ll9zcXVhcmlmeSkmJm8ucmF0aW89PT1lKWZvcih2YXIgbyxzLGwsYyx1LGg9LTEsZj1vLmxlbmd0aCxwPXQudmFsdWU7KytoPGY7KXtmb3IobD0ocz1vW2hdKS5jaGlsZHJlbixjPXMudmFsdWU9MCx1PWwubGVuZ3RoO2M8dTsrK2Mpcy52YWx1ZSs9bFtjXS52YWx1ZTtzLmRpY2U/TyhzLHIsbixhLG4rPShpLW4pKnMudmFsdWUvcCk6SChzLHIsbixyKz0oYS1yKSpzLnZhbHVlL3AsaSkscC09cy52YWx1ZX1lbHNlIHQuX3NxdWFyaWZ5PW89WShlLHQscixuLGEsaSksby5yYXRpbz1lfXJldHVybiByLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LHJ9KEcpO3QuY2x1c3Rlcj1mdW5jdGlvbigpe3ZhciB0PWUsYT0xLGk9MSxvPSExO2Z1bmN0aW9uIHMoZSl7dmFyIHMsbD0wO2UuZWFjaEFmdGVyKGZ1bmN0aW9uKGUpe3ZhciBhPWUuY2hpbGRyZW47YT8oZS54PWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZShyLDApL3QubGVuZ3RofShhKSxlLnk9ZnVuY3Rpb24odCl7cmV0dXJuIDErdC5yZWR1Y2UobiwwKX0oYSkpOihlLng9cz9sKz10KGUscyk6MCxlLnk9MCxzPWUpfSk7dmFyIGM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lWzBdO3JldHVybiB0fShlKSx1PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVtlLmxlbmd0aC0xXTtyZXR1cm4gdH0oZSksaD1jLngtdChjLHUpLzIsZj11LngrdCh1LGMpLzI7cmV0dXJuIGUuZWFjaEFmdGVyKG8/ZnVuY3Rpb24odCl7dC54PSh0LngtZS54KSphLHQueT0oZS55LXQueSkqaX06ZnVuY3Rpb24odCl7dC54PSh0LngtaCkvKGYtaCkqYSx0Lnk9KDEtKGUueT90LnkvZS55OjEpKSppfSl9cmV0dXJuIHMuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHMpOnR9LHMuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0hMSxhPSt0WzBdLGk9K3RbMV0scyk6bz9udWxsOlthLGldfSxzLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSEwLGE9K3RbMF0saT0rdFsxXSxzKTpvP1thLGldOm51bGx9LHN9LHQuaGllcmFyY2h5PWksdC5wYWNrPWZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxlPTEscj0xLG49TTtmdW5jdGlvbiBhKGEpe3JldHVybiBhLng9ZS8yLGEueT1yLzIsdD9hLmVhY2hCZWZvcmUoRSh0KSkuZWFjaEFmdGVyKEwobiwuNSkpLmVhY2hCZWZvcmUoQygxKSk6YS5lYWNoQmVmb3JlKEUoUykpLmVhY2hBZnRlcihMKE0sMSkpLmVhY2hBZnRlcihMKG4sYS5yL01hdGgubWluKGUscikpKS5lYWNoQmVmb3JlKEMoTWF0aC5taW4oZSxyKS8oMiphLnIpKSksYX1yZXR1cm4gYS5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bnVsbD09KHI9ZSk/bnVsbDpUKHIpLGEpOnQ7dmFyIHJ9LGEuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxyPSt0WzFdLGEpOltlLHJdfSxhLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBKCt0KSxhKTpufSxhfSx0LnBhY2tFbmNsb3NlPWgsdC5wYWNrU2libGluZ3M9ZnVuY3Rpb24odCl7cmV0dXJuIGsodCksdH0sdC5wYXJ0aXRpb249ZnVuY3Rpb24oKXt2YXIgdD0xLGU9MSxyPTAsbj0hMTtmdW5jdGlvbiBhKGEpe3ZhciBpPWEuaGVpZ2h0KzE7cmV0dXJuIGEueDA9YS55MD1yLGEueDE9dCxhLnkxPWUvaSxhLmVhY2hCZWZvcmUoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7bi5jaGlsZHJlbiYmTyhuLG4ueDAsdCoobi5kZXB0aCsxKS9lLG4ueDEsdCoobi5kZXB0aCsyKS9lKTt2YXIgYT1uLngwLGk9bi55MCxvPW4ueDEtcixzPW4ueTEtcjtvPGEmJihhPW89KGErbykvMiksczxpJiYoaT1zPShpK3MpLzIpLG4ueDA9YSxuLnkwPWksbi54MT1vLG4ueTE9c319KGUsaSkpLG4mJmEuZWFjaEJlZm9yZShQKSxhfXJldHVybiBhLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSEhdCxhKTpufSxhLnNpemU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K3JbMF0sZT0rclsxXSxhKTpbdCxlXX0sYS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGEpOnJ9LGF9LHQuc3RyYXRpZnk9ZnVuY3Rpb24oKXt2YXIgdD1SLGU9RjtmdW5jdGlvbiByKHIpe3ZhciBuLGEsaSxvLHMsdSxoLGY9ci5sZW5ndGgscD1uZXcgQXJyYXkoZiksZD17fTtmb3IoYT0wO2E8ZjsrK2Epbj1yW2FdLHM9cFthXT1uZXcgYyhuKSxudWxsIT0odT10KG4sYSxyKSkmJih1Kz0iIikmJihkW2g9eisocy5pZD11KV09aCBpbiBkP0Q6cyk7Zm9yKGE9MDthPGY7KythKWlmKHM9cFthXSxudWxsIT0odT1lKHJbYV0sYSxyKSkmJih1Kz0iIikpe2lmKCEobz1kW3ordV0pKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIit1KTtpZihvPT09RCl0aHJvdyBuZXcgRXJyb3IoImFtYmlndW91czogIit1KTtvLmNoaWxkcmVuP28uY2hpbGRyZW4ucHVzaChzKTpvLmNoaWxkcmVuPVtzXSxzLnBhcmVudD1vfWVsc2V7aWYoaSl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIHJvb3RzIik7aT1zfWlmKCFpKXRocm93IG5ldyBFcnJvcigibm8gcm9vdCIpO2lmKGkucGFyZW50PUksaS5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QuZGVwdGg9dC5wYXJlbnQuZGVwdGgrMSwtLWZ9KS5lYWNoQmVmb3JlKGwpLGkucGFyZW50PW51bGwsZj4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gaX1yZXR1cm4gci5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1UKGUpLHIpOnR9LHIucGFyZW50SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9VCh0KSxyKTplfSxyfSx0LnRyZWU9ZnVuY3Rpb24oKXt2YXIgdD1CLGU9MSxyPTEsbj1udWxsO2Z1bmN0aW9uIGEoYSl7dmFyIGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixhLGksbz1uZXcgcSh0LDApLHM9W29dO2U9cy5wb3AoKTspaWYobj1lLl8uY2hpbGRyZW4pZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KGk9bi5sZW5ndGgpLGE9aS0xO2E+PTA7LS1hKXMucHVzaChyPWUuY2hpbGRyZW5bYV09bmV3IHEoblthXSxhKSksci5wYXJlbnQ9ZTtyZXR1cm4oby5wYXJlbnQ9bmV3IHEobnVsbCwwKSkuY2hpbGRyZW49W29dLG99KGEpO2lmKGwuZWFjaEFmdGVyKGkpLGwucGFyZW50Lm09LWwueixsLmVhY2hCZWZvcmUobyksbilhLmVhY2hCZWZvcmUocyk7ZWxzZXt2YXIgYz1hLHU9YSxoPWE7YS5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QueDxjLngmJihjPXQpLHQueD51LngmJih1PXQpLHQuZGVwdGg+aC5kZXB0aCYmKGg9dCl9KTt2YXIgZj1jPT09dT8xOnQoYyx1KS8yLHA9Zi1jLngsZD1lLyh1LngrZitwKSxnPXIvKGguZGVwdGh8fDEpO2EuZWFjaEJlZm9yZShmdW5jdGlvbih0KXt0Lng9KHQueCtwKSpkLHQueT10LmRlcHRoKmd9KX1yZXR1cm4gYX1mdW5jdGlvbiBpKGUpe3ZhciByPWUuY2hpbGRyZW4sbj1lLnBhcmVudC5jaGlsZHJlbixhPWUuaT9uW2UuaS0xXTpudWxsO2lmKHIpeyFmdW5jdGlvbih0KXtmb3IodmFyIGUscj0wLG49MCxhPXQuY2hpbGRyZW4saT1hLmxlbmd0aDstLWk+PTA7KShlPWFbaV0pLnorPXIsZS5tKz1yLHIrPWUucysobis9ZS5jKX0oZSk7dmFyIGk9KHJbMF0ueityW3IubGVuZ3RoLTFdLnopLzI7YT8oZS56PWEueit0KGUuXyxhLl8pLGUubT1lLnotaSk6ZS56PWl9ZWxzZSBhJiYoZS56PWEueit0KGUuXyxhLl8pKTtlLnBhcmVudC5BPWZ1bmN0aW9uKGUscixuKXtpZihyKXtmb3IodmFyIGEsaT1lLG89ZSxzPXIsbD1pLnBhcmVudC5jaGlsZHJlblswXSxjPWkubSx1PW8ubSxoPXMubSxmPWwubTtzPWoocyksaT1OKGkpLHMmJmk7KWw9TihsKSwobz1qKG8pKS5hPWUsKGE9cy56K2gtaS56LWMrdChzLl8saS5fKSk+MCYmKFYoVShzLGUsbiksZSxhKSxjKz1hLHUrPWEpLGgrPXMubSxjKz1pLm0sZis9bC5tLHUrPW8ubTtzJiYhaihvKSYmKG8udD1zLG8ubSs9aC11KSxpJiYhTihsKSYmKGwudD1pLGwubSs9Yy1mLG49ZSl9cmV0dXJuIG59KGUsYSxlLnBhcmVudC5BfHxuWzBdKX1mdW5jdGlvbiBvKHQpe3QuXy54PXQueit0LnBhcmVudC5tLHQubSs9dC5wYXJlbnQubX1mdW5jdGlvbiBzKHQpe3QueCo9ZSx0Lnk9dC5kZXB0aCpyfXJldHVybiBhLnNlcGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxhKTp0fSxhLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ITEsZT0rdFswXSxyPSt0WzFdLGEpOm4/bnVsbDpbZSxyXX0sYS5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hMCxlPSt0WzBdLHI9K3RbMV0sYSk6bj9bZSxyXTpudWxsfSxhfSx0LnRyZWVtYXA9ZnVuY3Rpb24oKXt2YXIgdD1XLGU9ITEscj0xLG49MSxhPVswXSxpPU0sbz1NLHM9TSxsPU0sYz1NO2Z1bmN0aW9uIHUodCl7cmV0dXJuIHQueDA9dC55MD0wLHQueDE9cix0LnkxPW4sdC5lYWNoQmVmb3JlKGgpLGE9WzBdLGUmJnQuZWFjaEJlZm9yZShQKSx0fWZ1bmN0aW9uIGgoZSl7dmFyIHI9YVtlLmRlcHRoXSxuPWUueDArcix1PWUueTArcixoPWUueDEtcixmPWUueTEtcjtoPG4mJihuPWg9KG4raCkvMiksZjx1JiYodT1mPSh1K2YpLzIpLGUueDA9bixlLnkwPXUsZS54MT1oLGUueTE9ZixlLmNoaWxkcmVuJiYocj1hW2UuZGVwdGgrMV09aShlKS8yLG4rPWMoZSktcix1Kz1vKGUpLXIsKGgtPXMoZSktcik8biYmKG49aD0obitoKS8yKSwoZi09bChlKS1yKTx1JiYodT1mPSh1K2YpLzIpLHQoZSxuLHUsaCxmKSl9cmV0dXJuIHUucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ISF0LHUpOmV9LHUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdFswXSxuPSt0WzFdLHUpOltyLG5dfSx1LnRpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9VChlKSx1KTp0fSx1LnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOnUucGFkZGluZ0lubmVyKCl9LHUucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QSgrdCksdSk6aX0sdS5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nVG9wKHQpLnBhZGRpbmdSaWdodCh0KS5wYWRkaW5nQm90dG9tKHQpLnBhZGRpbmdMZWZ0KHQpOnUucGFkZGluZ1RvcCgpfSx1LnBhZGRpbmdUb3A9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBKCt0KSx1KTpvfSx1LnBhZGRpbmdSaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkEoK3QpLHUpOnN9LHUucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkEoK3QpLHUpOmx9LHUucGFkZGluZ0xlZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBKCt0KSx1KTpjfSx1fSx0LnRyZWVtYXBCaW5hcnk9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaSxvLHM9dC5jaGlsZHJlbixsPXMubGVuZ3RoLGM9bmV3IEFycmF5KGwrMSk7Zm9yKGNbMF09bz1pPTA7aTxsOysraSljW2krMV09bys9c1tpXS52YWx1ZTshZnVuY3Rpb24gdChlLHIsbixhLGksbyxsKXtpZihlPj1yLTEpe3ZhciB1PXNbZV07cmV0dXJuIHUueDA9YSx1LnkwPWksdS54MT1vLHZvaWQodS55MT1sKX1mb3IodmFyIGg9Y1tlXSxmPW4vMitoLHA9ZSsxLGQ9ci0xO3A8ZDspe3ZhciBnPXArZD4+PjE7Y1tnXTxmP3A9ZysxOmQ9Z31mLWNbcC0xXTxjW3BdLWYmJmUrMTxwJiYtLXA7dmFyIHY9Y1twXS1oLG09bi12O2lmKG8tYT5sLWkpe3ZhciB5PShhKm0rbyp2KS9uO3QoZSxwLHYsYSxpLHksbCksdChwLHIsbSx5LGksbyxsKX1lbHNle3ZhciB4PShpKm0rbCp2KS9uO3QoZSxwLHYsYSxpLG8seCksdChwLHIsbSxhLHgsbyxsKX19KDAsbCx0LnZhbHVlLGUscixuLGEpfSx0LnRyZWVtYXBEaWNlPU8sdC50cmVlbWFwUmVzcXVhcmlmeT1YLHQudHJlZW1hcFNsaWNlPUgsdC50cmVlbWFwU2xpY2VEaWNlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7KDEmdC5kZXB0aD9IOk8pKHQsZSxyLG4sYSl9LHQudHJlZW1hcFNxdWFyaWZ5PVcsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSgib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9yOihuPW58fHNlbGYpLmQzPW4uZDN8fHt9KX0se31dLDE2MDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE7bj10aGlzLGE9ZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUscixuLGEpe3ZhciBpPXQqdCxvPWkqdDtyZXR1cm4oKDEtMyp0KzMqaS1vKSplKyg0LTYqaSszKm8pKnIrKDErMyp0KzMqaS0zKm8pKm4rbyphKS82fWZ1bmN0aW9uIG4odCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGE9bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLGk9dFthXSxvPXRbYSsxXSxzPWE+MD90W2EtMV06MippLW8sbD1hPGUtMT90W2ErMl06MipvLWk7cmV0dXJuIHIoKG4tYS9lKSplLHMsaSxvLGwpfX1mdW5jdGlvbiBhKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgYT1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSksaT10WyhhK2UtMSklZV0sbz10W2ElZV0scz10WyhhKzEpJWVdLGw9dFsoYSsyKSVlXTtyZXR1cm4gcigobi1hL2UpKmUsaSxvLHMsbCl9fWZ1bmN0aW9uIGkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQrciplfX1mdW5jdGlvbiBzKHQsZSl7dmFyIHI9ZS10O3JldHVybiByP28odCxyPjE4MHx8cjwtMTgwP3ItMzYwKk1hdGgucm91bmQoci8zNjApOnIpOmkoaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBsKHQpe3JldHVybiAxPT0odD0rdCk/YzpmdW5jdGlvbihlLHIpe3JldHVybiByLWU/ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PU1hdGgucG93KHQsciksZT1NYXRoLnBvdyhlLHIpLXQscj0xL3IsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucG93KHQrbiplLHIpfX0oZSxyLHQpOmkoaXNOYU4oZSk/cjplKX19ZnVuY3Rpb24gYyh0LGUpe3ZhciByPWUtdDtyZXR1cm4gcj9vKHQscik6aShpc05hTih0KT9lOnQpfXZhciB1PWZ1bmN0aW9uIHQocil7dmFyIG49bChyKTtmdW5jdGlvbiBhKHQscil7dmFyIGE9bigodD1lLnJnYih0KSkuciwocj1lLnJnYihyKSkuciksaT1uKHQuZyxyLmcpLG89bih0LmIsci5iKSxzPWModC5vcGFjaXR5LHIub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9YShlKSx0Lmc9aShlKSx0LmI9byhlKSx0Lm9wYWNpdHk9cyhlKSx0KyIifX1yZXR1cm4gYS5nYW1tYT10LGF9KDEpO2Z1bmN0aW9uIGgodCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuLGEsaT1yLmxlbmd0aCxvPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKSxsPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pYT1lLnJnYihyW25dKSxvW25dPWEucnx8MCxzW25dPWEuZ3x8MCxsW25dPWEuYnx8MDtyZXR1cm4gbz10KG8pLHM9dChzKSxsPXQobCksYS5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIGEucj1vKHQpLGEuZz1zKHQpLGEuYj1sKHQpLGErIiJ9fX12YXIgZj1oKG4pLHA9aChhKTtmdW5jdGlvbiBkKHQsZSl7ZXx8KGU9W10pO3ZhciByLG49dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxhPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24oaSl7Zm9yKHI9MDtyPG47KytyKWFbcl09dFtyXSooMS1pKStlW3JdKmk7cmV0dXJuIGF9fWZ1bmN0aW9uIGcodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIHYodCxlKXt2YXIgcixuPWU/ZS5sZW5ndGg6MCxhPXQ/TWF0aC5taW4obix0Lmxlbmd0aCk6MCxpPW5ldyBBcnJheShhKSxvPW5ldyBBcnJheShuKTtmb3Iocj0wO3I8YTsrK3IpaVtyXT1rKHRbcl0sZVtyXSk7Zm9yKDtyPG47KytyKW9bcl09ZVtyXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHI9MDtyPGE7KytyKW9bcl09aVtyXSh0KTtyZXR1cm4gb319ZnVuY3Rpb24gbSh0LGUpe3ZhciByPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHIuc2V0VGltZSh0KigxLW4pK2Uqbikscn19ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIHQqKDEtcikrZSpyfX1mdW5jdGlvbiB4KHQsZSl7dmFyIHIsbj17fSxhPXt9O2ZvcihyIGluIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfHwoZT17fSksZSlyIGluIHQ/bltyXT1rKHRbcl0sZVtyXSk6YVtyXT1lW3JdO3JldHVybiBmdW5jdGlvbih0KXtmb3IociBpbiBuKWFbcl09bltyXSh0KTtyZXR1cm4gYX19dmFyIGI9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLF89bmV3IFJlZ0V4cChiLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIHcodCxlKXt2YXIgcixuLGEsaT1iLmxhc3RJbmRleD1fLmxhc3RJbmRleD0wLG89LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsocj1iLmV4ZWModCkpJiYobj1fLmV4ZWMoZSkpOykoYT1uLmluZGV4KT5pJiYoYT1lLnNsaWNlKGksYSksc1tvXT9zW29dKz1hOnNbKytvXT1hKSwocj1yWzBdKT09PShuPW5bMF0pP3Nbb10/c1tvXSs9bjpzWysrb109bjooc1srK29dPW51bGwsbC5wdXNoKHtpOm8seDp5KHIsbil9KSksaT1fLmxhc3RJbmRleDtyZXR1cm4gaTxlLmxlbmd0aCYmKGE9ZS5zbGljZShpKSxzW29dP3Nbb10rPWE6c1srK29dPWEpLHMubGVuZ3RoPDI/bFswXT9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fShsWzBdLngpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0oZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciByLG49MDtuPGU7KytuKXNbKHI9bFtuXSkuaV09ci54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gayh0LHIpe3ZhciBuLGE9dHlwZW9mIHI7cmV0dXJuIG51bGw9PXJ8fCJib29sZWFuIj09PWE/aShyKTooIm51bWJlciI9PT1hP3k6InN0cmluZyI9PT1hPyhuPWUuY29sb3IocikpPyhyPW4sdSk6dzpyIGluc3RhbmNlb2YgZS5jb2xvcj91OnIgaW5zdGFuY2VvZiBEYXRlP206ZyhyKT9kOkFycmF5LmlzQXJyYXkocik/djoiZnVuY3Rpb24iIT10eXBlb2Ygci52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2Ygci50b1N0cmluZ3x8aXNOYU4ocik/eDp5KSh0LHIpfXZhciBULE0sQSxTLEU9MTgwL01hdGguUEksTD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBDKHQsZSxyLG4sYSxpKXt2YXIgbyxzLGw7cmV0dXJuKG89TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPW8sZS89byksKGw9dCpyK2UqbikmJihyLT10Kmwsbi09ZSpsKSwocz1NYXRoLnNxcnQocipyK24qbikpJiYoci89cyxuLz1zLGwvPXMpLHQqbjxlKnImJih0PS10LGU9LWUsbD0tbCxvPS1vKSx7dHJhbnNsYXRlWDphLHRyYW5zbGF0ZVk6aSxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKkUsc2tld1g6TWF0aC5hdGFuKGwpKkUsc2NhbGVYOm8sc2NhbGVZOnN9fWZ1bmN0aW9uIFAodCxlLHIsbil7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKGksbyl7dmFyIHM9W10sbD1bXTtyZXR1cm4gaT10KGkpLG89dChvKSxmdW5jdGlvbih0LG4sYSxpLG8scyl7aWYodCE9PWF8fG4hPT1pKXt2YXIgbD1vLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLHIpO3MucHVzaCh7aTpsLTQseDp5KHQsYSl9LHtpOmwtMix4OnkobixpKX0pfWVsc2UoYXx8aSkmJm8ucHVzaCgidHJhbnNsYXRlKCIrYStlK2krcil9KGkudHJhbnNsYXRlWCxpLnRyYW5zbGF0ZVksby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxzLGwpLGZ1bmN0aW9uKHQsZSxyLGkpe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxpLnB1c2goe2k6ci5wdXNoKGEocikrInJvdGF0ZSgiLG51bGwsbiktMix4OnkodCxlKX0pKTplJiZyLnB1c2goYShyKSsicm90YXRlKCIrZStuKX0oaS5yb3RhdGUsby5yb3RhdGUscyxsKSxmdW5jdGlvbih0LGUscixpKXt0IT09ZT9pLnB1c2goe2k6ci5wdXNoKGEocikrInNrZXdYKCIsbnVsbCxuKS0yLHg6eSh0LGUpfSk6ZSYmci5wdXNoKGEocikrInNrZXdYKCIrZStuKX0oaS5za2V3WCxvLnNrZXdYLHMsbCksZnVuY3Rpb24odCxlLHIsbixpLG8pe2lmKHQhPT1yfHxlIT09bil7dmFyIHM9aS5wdXNoKGEoaSkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO28ucHVzaCh7aTpzLTQseDp5KHQscil9LHtpOnMtMix4OnkoZSxuKX0pfWVsc2UgMT09PXImJjE9PT1ufHxpLnB1c2goYShpKSsic2NhbGUoIityKyIsIituKyIpIil9KGkuc2NhbGVYLGkuc2NhbGVZLG8uc2NhbGVYLG8uc2NhbGVZLHMsbCksaT1vPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9LTEsbj1sLmxlbmd0aDsrK3I8bjspc1soZT1sW3JdKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgTz1QKGZ1bmN0aW9uKHQpe3JldHVybiJub25lIj09PXQ/TDooVHx8KFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksTT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsQT1kb2N1bWVudC5kZWZhdWx0VmlldyksVC5zdHlsZS50cmFuc2Zvcm09dCx0PUEuZ2V0Q29tcHV0ZWRTdHlsZShNLmFwcGVuZENoaWxkKFQpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLE0ucmVtb3ZlQ2hpbGQoVCksQygrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSwicHgsICIsInB4KSIsImRlZykiKSx6PVAoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/TDooU3x8KFM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksUy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9Uy50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9DKCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOkwpfSwiLCAiLCIpIiwiKSIpLEk9TWF0aC5TUVJUMixEPTIsUj00LEY9MWUtMTI7ZnVuY3Rpb24gQih0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn1mdW5jdGlvbiBOKHQpe3JldHVybiBmdW5jdGlvbihyLG4pe3ZhciBhPXQoKHI9ZS5oc2wocikpLmgsKG49ZS5oc2wobikpLmgpLGk9YyhyLnMsbi5zKSxvPWMoci5sLG4ubCkscz1jKHIub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gci5oPWEodCksci5zPWkodCksci5sPW8odCksci5vcGFjaXR5PXModCkscisiIn19fXZhciBqPU4ocyksVj1OKGMpO2Z1bmN0aW9uIFUodCl7cmV0dXJuIGZ1bmN0aW9uKHIsbil7dmFyIGE9dCgocj1lLmhjbChyKSkuaCwobj1lLmhjbChuKSkuaCksaT1jKHIuYyxuLmMpLG89YyhyLmwsbi5sKSxzPWMoci5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByLmg9YSh0KSxyLmM9aSh0KSxyLmw9byh0KSxyLm9wYWNpdHk9cyh0KSxyKyIifX19dmFyIHE9VShzKSxIPVUoYyk7ZnVuY3Rpb24gRyh0KXtyZXR1cm4gZnVuY3Rpb24gcihuKXtmdW5jdGlvbiBhKHIsYSl7dmFyIGk9dCgocj1lLmN1YmVoZWxpeChyKSkuaCwoYT1lLmN1YmVoZWxpeChhKSkuaCksbz1jKHIucyxhLnMpLHM9YyhyLmwsYS5sKSxsPWMoci5vcGFjaXR5LGEub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByLmg9aSh0KSxyLnM9byh0KSxyLmw9cyhNYXRoLnBvdyh0LG4pKSxyLm9wYWNpdHk9bCh0KSxyKyIifX1yZXR1cm4gbj0rbixhLmdhbW1hPXIsYX0oMSl9dmFyIFk9RyhzKSxXPUcoYyk7dC5pbnRlcnBvbGF0ZT1rLHQuaW50ZXJwb2xhdGVBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybihnKGUpP2Q6dikodCxlKX0sdC5pbnRlcnBvbGF0ZUJhc2lzPW4sdC5pbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkPWEsdC5pbnRlcnBvbGF0ZUN1YmVoZWxpeD1ZLHQuaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nPVcsdC5pbnRlcnBvbGF0ZURhdGU9bSx0LmludGVycG9sYXRlRGlzY3JldGU9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0W01hdGgubWF4KDAsTWF0aC5taW4oZS0xLE1hdGguZmxvb3IociplKSkpXX19LHQuaW50ZXJwb2xhdGVIY2w9cSx0LmludGVycG9sYXRlSGNsTG9uZz1ILHQuaW50ZXJwb2xhdGVIc2w9aix0LmludGVycG9sYXRlSHNsTG9uZz1WLHQuaW50ZXJwb2xhdGVIdWU9ZnVuY3Rpb24odCxlKXt2YXIgcj1zKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9cih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fSx0LmludGVycG9sYXRlTGFiPWZ1bmN0aW9uKHQscil7dmFyIG49YygodD1lLmxhYih0KSkubCwocj1lLmxhYihyKSkubCksYT1jKHQuYSxyLmEpLGk9Yyh0LmIsci5iKSxvPWModC5vcGFjaXR5LHIub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0Lmw9bihlKSx0LmE9YShlKSx0LmI9aShlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX0sdC5pbnRlcnBvbGF0ZU51bWJlcj15LHQuaW50ZXJwb2xhdGVOdW1iZXJBcnJheT1kLHQuaW50ZXJwb2xhdGVPYmplY3Q9eCx0LmludGVycG9sYXRlUmdiPXUsdC5pbnRlcnBvbGF0ZVJnYkJhc2lzPWYsdC5pbnRlcnBvbGF0ZVJnYkJhc2lzQ2xvc2VkPXAsdC5pbnRlcnBvbGF0ZVJvdW5kPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5yb3VuZCh0KigxLXIpK2Uqcil9fSx0LmludGVycG9sYXRlU3RyaW5nPXcsdC5pbnRlcnBvbGF0ZVRyYW5zZm9ybUNzcz1PLHQuaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc9eix0LmludGVycG9sYXRlWm9vbT1mdW5jdGlvbih0LGUpe3ZhciByLG4sYT10WzBdLGk9dFsxXSxvPXRbMl0scz1lWzBdLGw9ZVsxXSxjPWVbMl0sdT1zLWEsaD1sLWksZj11KnUraCpoO2lmKGY8RiluPU1hdGgubG9nKGMvbykvSSxyPWZ1bmN0aW9uKHQpe3JldHVyblthK3QqdSxpK3QqaCxvKk1hdGguZXhwKEkqdCpuKV19O2Vsc2V7dmFyIHA9TWF0aC5zcXJ0KGYpLGQ9KGMqYy1vKm8rUipmKS8oMipvKkQqcCksZz0oYypjLW8qby1SKmYpLygyKmMqRCpwKSx2PU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCksbT1NYXRoLmxvZyhNYXRoLnNxcnQoZypnKzEpLWcpO249KG0tdikvSSxyPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dCpuLHM9Qih2KSxsPW8vKEQqcCkqKHMqKGU9SSpyK3YsKChlPU1hdGguZXhwKDIqZSkpLTEpLyhlKzEpKS1mdW5jdGlvbih0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn0odikpO3JldHVyblthK2wqdSxpK2wqaCxvKnMvQihJKnIrdildfX1yZXR1cm4gci5kdXJhdGlvbj0xZTMqbixyfSx0LnBpZWNld2lzZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGgtMSxhPWVbMF0saT1uZXcgQXJyYXkobjwwPzA6bik7cjxuOylpW3JdPXQoYSxhPWVbKytyXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0aC5taW4obi0xLE1hdGguZmxvb3IodCo9bikpKTtyZXR1cm4gaVtlXSh0LWUpfX0sdC5xdWFudGl6ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24pcltuXT10KG4vKGUtMSkpO3JldHVybiByfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LCJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP2Eocix0KCJkMy1jb2xvciIpKTphKChuPW58fHNlbGYpLmQzPW4uZDN8fHt9LG4uZDMpfSx7ImQzLWNvbG9yIjoxNTZ9XSwxNjE6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbjtuPXRoaXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPU1hdGguUEkscj0yKmUsbj1yLTFlLTY7ZnVuY3Rpb24gYSgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IGF9YS5wcm90b3R5cGU9aS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmEsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K3IpKyIsIisodGhpcy5feTE9K24pfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtyKyIsIisgK24rIiwiKyh0aGlzLl94MT0rYSkrIiwiKyh0aGlzLl95MT0raSl9LGFyY1RvOmZ1bmN0aW9uKHQscixuLGEsaSl7dD0rdCxyPStyLG49K24sYT0rYSxpPStpO3ZhciBvPXRoaXMuX3gxLHM9dGhpcy5feTEsbD1uLXQsYz1hLXIsdT1vLXQsaD1zLXIsZj11KnUraCpoO2lmKGk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitpKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9cik7ZWxzZSBpZihmPjFlLTYpaWYoTWF0aC5hYnMoaCpsLWMqdSk+MWUtNiYmaSl7dmFyIHA9bi1vLGQ9YS1zLGc9bCpsK2MqYyx2PXAqcCtkKmQsbT1NYXRoLnNxcnQoZykseT1NYXRoLnNxcnQoZikseD1pKk1hdGgudGFuKChlLU1hdGguYWNvcygoZytmLXYpLygyKm0qeSkpKS8yKSxiPXgveSxfPXgvbTtNYXRoLmFicyhiLTEpPjFlLTYmJih0aGlzLl8rPSJMIisodCtiKnUpKyIsIisocitiKmgpKSx0aGlzLl8rPSJBIitpKyIsIitpKyIsMCwwLCIrICsoaCpwPnUqZCkrIiwiKyh0aGlzLl94MT10K18qbCkrIiwiKyh0aGlzLl95MT1yK18qYyl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1yKTtlbHNlO30sYXJjOmZ1bmN0aW9uKHQsYSxpLG8scyxsKXt0PSt0LGE9K2E7dmFyIGM9KGk9K2kpKk1hdGguY29zKG8pLHU9aSpNYXRoLnNpbihvKSxoPXQrYyxmPWErdSxwPTFebCxkPWw/by1zOnMtbztpZihpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIraSk7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2grIiwiK2Y6KE1hdGguYWJzKHRoaXMuX3gxLWgpPjFlLTZ8fE1hdGguYWJzKHRoaXMuX3kxLWYpPjFlLTYpJiYodGhpcy5fKz0iTCIraCsiLCIrZiksaSYmKGQ8MCYmKGQ9ZCVyK3IpLGQ+bj90aGlzLl8rPSJBIitpKyIsIitpKyIsMCwxLCIrcCsiLCIrKHQtYykrIiwiKyhhLXUpKyJBIitpKyIsIitpKyIsMCwxLCIrcCsiLCIrKHRoaXMuX3gxPWgpKyIsIisodGhpcy5feTE9Zik6ZD4xZS02JiYodGhpcy5fKz0iQSIraSsiLCIraSsiLDAsIisgKyhkPj1lKSsiLCIrcCsiLCIrKHRoaXMuX3gxPXQraSpNYXRoLmNvcyhzKSkrIiwiKyh0aGlzLl95MT1hK2kqTWF0aC5zaW4ocykpKSl9LHJlY3Q6ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKSsiaCIrICtyKyJ2IisgK24rImgiKy1yKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX0sdC5wYXRoPWksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSgib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9yOm4uZDM9bi5kM3x8e30pfSx7fV0sMTYyOltmdW5jdGlvbih0LGUscil7dmFyIG47bj10aGlzLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKHQsZSxyLG4pe2lmKGlzTmFOKGUpfHxpc05hTihyKSlyZXR1cm4gdDt2YXIgYSxpLG8scyxsLGMsdSxoLGYscD10Ll9yb290LGQ9e2RhdGE6bn0sZz10Ll94MCx2PXQuX3kwLG09dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1kLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KGk9KGcrbSkvMikpP2c9aTptPWksKHU9cj49KG89KHYreSkvMikpP3Y9bzp5PW8sYT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIGFbaF09ZCx0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmcj09PWwpcmV0dXJuIGQubmV4dD1wLGE/YVtoXT1kOnQuX3Jvb3Q9ZCx0O2Rve2E9YT9hW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0oaT0oZyttKS8yKSk/Zz1pOm09aSwodT1yPj0obz0odit5KS8yKSk/dj1vOnk9b313aGlsZSgoaD11PDwxfGMpPT0oZj0obD49byk8PDF8cz49aSkpO3JldHVybiBhW2ZdPXAsYVtoXT1kLHR9dmFyIHI9ZnVuY3Rpb24odCxlLHIsbixhKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1yLHRoaXMueDE9bix0aGlzLnkxPWF9O2Z1bmN0aW9uIG4odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBpKHQsZSxyKXt2YXIgaT1uZXcgbyhudWxsPT1lP246ZSxudWxsPT1yP2E6cixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P2k6aS5hZGRBbGwodCl9ZnVuY3Rpb24gbyh0LGUscixuLGEsaSl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1yLHRoaXMuX3kwPW4sdGhpcy5feDE9YSx0aGlzLl95MT1pLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIHModCl7Zm9yKHZhciBlPXtkYXRhOnQuZGF0YX0scj1lO3Q9dC5uZXh0OylyPXIubmV4dD17ZGF0YTp0LmRhdGF9O3JldHVybiBlfXZhciBsPWkucHJvdG90eXBlPW8ucHJvdG90eXBlO2wuY29weT1mdW5jdGlvbigpe3ZhciB0LGUscj1uZXcgbyh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLG49dGhpcy5fcm9vdDtpZighbilyZXR1cm4gcjtpZighbi5sZW5ndGgpcmV0dXJuIHIuX3Jvb3Q9cyhuKSxyO2Zvcih0PVt7c291cmNlOm4sdGFyZ2V0OnIuX3Jvb3Q9bmV3IEFycmF5KDQpfV07bj10LnBvcCgpOylmb3IodmFyIGE9MDthPDQ7KythKShlPW4uc291cmNlW2FdKSYmKGUubGVuZ3RoP3QucHVzaCh7c291cmNlOmUsdGFyZ2V0Om4udGFyZ2V0W2FdPW5ldyBBcnJheSg0KX0pOm4udGFyZ2V0W2FdPXMoZSkpO3JldHVybiByfSxsLmFkZD1mdW5jdGlvbih0KXt2YXIgcj0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIGUodGhpcy5jb3ZlcihyLG4pLHIsbix0KX0sbC5hZGRBbGw9ZnVuY3Rpb24odCl7dmFyIHIsbixhLGksbz10Lmxlbmd0aCxzPW5ldyBBcnJheShvKSxsPW5ldyBBcnJheShvKSxjPTEvMCx1PTEvMCxoPS0xLzAsZj0tMS8wO2ZvcihuPTA7bjxvOysrbilpc05hTihhPSt0aGlzLl94LmNhbGwobnVsbCxyPXRbbl0pKXx8aXNOYU4oaT0rdGhpcy5feS5jYWxsKG51bGwscikpfHwoc1tuXT1hLGxbbl09aSxhPGMmJihjPWEpLGE+aCYmKGg9YSksaTx1JiYodT1pKSxpPmYmJihmPWkpKTtmb3IoaDxjJiYoYz10aGlzLl94MCxoPXRoaXMuX3gxKSxmPHUmJih1PXRoaXMuX3kwLGY9dGhpcy5feTEpLHRoaXMuY292ZXIoYyx1KS5jb3ZlcihoLGYpLG49MDtuPG87KytuKWUodGhpcyxzW25dLGxbbl0sdFtuXSk7cmV0dXJuIHRoaXN9LGwuY292ZXI9ZnVuY3Rpb24odCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIHI9dGhpcy5feDAsbj10aGlzLl95MCxhPXRoaXMuX3gxLGk9dGhpcy5feTE7aWYoaXNOYU4ocikpYT0ocj1NYXRoLmZsb29yKHQpKSsxLGk9KG49TWF0aC5mbG9vcihlKSkrMTtlbHNle2lmKCEocj50fHx0PmF8fG4+ZXx8ZT5pKSlyZXR1cm4gdGhpczt2YXIgbyxzLGw9YS1yLGM9dGhpcy5fcm9vdDtzd2l0Y2gocz0oZTwobitpKS8yKTw8MXx0PChyK2EpLzIpe2Nhc2UgMDpkb3sobz1uZXcgQXJyYXkoNCkpW3NdPWMsYz1vfXdoaWxlKGk9bisobCo9MiksdD4oYT1yK2wpfHxlPmkpO2JyZWFrO2Nhc2UgMTpkb3sobz1uZXcgQXJyYXkoNCkpW3NdPWMsYz1vfXdoaWxlKGk9bisobCo9MiksKHI9YS1sKT50fHxlPmkpO2JyZWFrO2Nhc2UgMjpkb3sobz1uZXcgQXJyYXkoNCkpW3NdPWMsYz1vfXdoaWxlKG49aS0obCo9MiksdD4oYT1yK2wpfHxuPmUpO2JyZWFrO2Nhc2UgMzpkb3sobz1uZXcgQXJyYXkoNCkpW3NdPWMsYz1vfXdoaWxlKG49aS0obCo9MiksKHI9YS1sKT50fHxuPmUpfXRoaXMuX3Jvb3QmJnRoaXMuX3Jvb3QubGVuZ3RoJiYodGhpcy5fcm9vdD1jKX1yZXR1cm4gdGhpcy5feDA9cix0aGlzLl95MD1uLHRoaXMuX3gxPWEsdGhpcy5feTE9aSx0aGlzfSxsLmRhdGE9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97dC5wdXNoKGUuZGF0YSl9d2hpbGUoZT1lLm5leHQpfSksdH0sbC5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LGwuZmluZD1mdW5jdGlvbih0LGUsbil7dmFyIGEsaSxvLHMsbCxjLHUsaD10aGlzLl94MCxmPXRoaXMuX3kwLHA9dGhpcy5feDEsZD10aGlzLl95MSxnPVtdLHY9dGhpcy5fcm9vdDtmb3IodiYmZy5wdXNoKG5ldyByKHYsaCxmLHAsZCkpLG51bGw9PW4/bj0xLzA6KGg9dC1uLGY9ZS1uLHA9dCtuLGQ9ZStuLG4qPW4pO2M9Zy5wb3AoKTspaWYoISghKHY9Yy5ub2RlKXx8KGk9Yy54MCk+cHx8KG89Yy55MCk+ZHx8KHM9Yy54MSk8aHx8KGw9Yy55MSk8ZikpaWYodi5sZW5ndGgpe3ZhciBtPShpK3MpLzIseT0obytsKS8yO2cucHVzaChuZXcgcih2WzNdLG0seSxzLGwpLG5ldyByKHZbMl0saSx5LG0sbCksbmV3IHIodlsxXSxtLG8scyx5KSxuZXcgcih2WzBdLGksbyxtLHkpKSwodT0oZT49eSk8PDF8dD49bSkmJihjPWdbZy5sZW5ndGgtMV0sZ1tnLmxlbmd0aC0xXT1nW2cubGVuZ3RoLTEtdV0sZ1tnLmxlbmd0aC0xLXVdPWMpfWVsc2V7dmFyIHg9dC0rdGhpcy5feC5jYWxsKG51bGwsdi5kYXRhKSxiPWUtK3RoaXMuX3kuY2FsbChudWxsLHYuZGF0YSksXz14KngrYipiO2lmKF88bil7dmFyIHc9TWF0aC5zcXJ0KG49Xyk7aD10LXcsZj1lLXcscD10K3csZD1lK3csYT12LmRhdGF9fXJldHVybiBhfSxsLnJlbW92ZT1mdW5jdGlvbih0KXtpZihpc05hTihpPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKG89K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscD10aGlzLl9yb290LGQ9dGhpcy5feDAsZz10aGlzLl95MCx2PXRoaXMuX3gxLG09dGhpcy5feTE7aWYoIXApcmV0dXJuIHRoaXM7aWYocC5sZW5ndGgpZm9yKDs7KXtpZigoYz1pPj0ocz0oZCt2KS8yKSk/ZD1zOnY9cywodT1vPj0obD0oZyttKS8yKSk/Zz1sOm09bCxlPXAsIShwPXBbaD11PDwxfGNdKSlyZXR1cm4gdGhpcztpZighcC5sZW5ndGgpYnJlYWs7KGVbaCsxJjNdfHxlW2grMiYzXXx8ZVtoKzMmM10pJiYocj1lLGY9aCl9Zm9yKDtwLmRhdGEhPT10OylpZihuPXAsIShwPXAubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKGE9cC5uZXh0KSYmZGVsZXRlIHAubmV4dCxuPyhhP24ubmV4dD1hOmRlbGV0ZSBuLm5leHQsdGhpcyk6ZT8oYT9lW2hdPWE6ZGVsZXRlIGVbaF0sKHA9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJnA9PT0oZVszXXx8ZVsyXXx8ZVsxXXx8ZVswXSkmJiFwLmxlbmd0aCYmKHI/cltmXT1wOnRoaXMuX3Jvb3Q9cCksdGhpcyk6KHRoaXMuX3Jvb3Q9YSx0aGlzKX0sbC5yZW1vdmVBbGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXRoaXMucmVtb3ZlKHRbZV0pO3JldHVybiB0aGlzfSxsLnJvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdH0sbC5zaXplPWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97Kyt0fXdoaWxlKGU9ZS5uZXh0KX0pLHR9LGwudmlzaXQ9ZnVuY3Rpb24odCl7dmFyIGUsbixhLGksbyxzLGw9W10sYz10aGlzLl9yb290O2ZvcihjJiZsLnB1c2gobmV3IHIoYyx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9bC5wb3AoKTspaWYoIXQoYz1lLm5vZGUsYT1lLngwLGk9ZS55MCxvPWUueDEscz1lLnkxKSYmYy5sZW5ndGgpe3ZhciB1PShhK28pLzIsaD0oaStzKS8yOyhuPWNbM10pJiZsLnB1c2gobmV3IHIobix1LGgsbyxzKSksKG49Y1syXSkmJmwucHVzaChuZXcgcihuLGEsaCx1LHMpKSwobj1jWzFdKSYmbC5wdXNoKG5ldyByKG4sdSxpLG8saCkpLChuPWNbMF0pJiZsLnB1c2gobmV3IHIobixhLGksdSxoKSl9cmV0dXJuIHRoaXN9LGwudmlzaXRBZnRlcj1mdW5jdGlvbih0KXt2YXIgZSxuPVtdLGE9W107Zm9yKHRoaXMuX3Jvb3QmJm4ucHVzaChuZXcgcih0aGlzLl9yb290LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1uLnBvcCgpOyl7dmFyIGk9ZS5ub2RlO2lmKGkubGVuZ3RoKXt2YXIgbyxzPWUueDAsbD1lLnkwLGM9ZS54MSx1PWUueTEsaD0ocytjKS8yLGY9KGwrdSkvMjsobz1pWzBdKSYmbi5wdXNoKG5ldyByKG8scyxsLGgsZikpLChvPWlbMV0pJiZuLnB1c2gobmV3IHIobyxoLGwsYyxmKSksKG89aVsyXSkmJm4ucHVzaChuZXcgcihvLHMsZixoLHUpKSwobz1pWzNdKSYmbi5wdXNoKG5ldyByKG8saCxmLGMsdSkpfWEucHVzaChlKX1mb3IoO2U9YS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LGwueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feD10LHRoaXMpOnRoaXMuX3h9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feT10LHRoaXMpOnRoaXMuX3l9LHQucXVhZHRyZWU9aSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KCJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP3I6bi5kMz1uLmQzfHx7fSl9LHt9XSwxNjM6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbixhO249dGhpcyxhPWZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBuPU1hdGguYWJzLGE9TWF0aC5hdGFuMixpPU1hdGguY29zLG89TWF0aC5tYXgscz1NYXRoLm1pbixsPU1hdGguc2luLGM9TWF0aC5zcXJ0LHU9MWUtMTIsaD1NYXRoLlBJLGY9aC8yLHA9MipoO2Z1bmN0aW9uIGQodCl7cmV0dXJuIHQ+PTE/Zjp0PD0tMT8tZjpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiB2KHQpe3JldHVybiB0Lm91dGVyUmFkaXVzfWZ1bmN0aW9uIG0odCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiB5KHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQmJnQucGFkQW5nbGV9ZnVuY3Rpb24gYih0LGUscixuLGEsaSxzKXt2YXIgbD10LXIsdT1lLW4saD0ocz9pOi1pKS9jKGwqbCt1KnUpLGY9aCp1LHA9LWgqbCxkPXQrZixnPWUrcCx2PXIrZixtPW4rcCx5PShkK3YpLzIseD0oZyttKS8yLGI9di1kLF89bS1nLHc9YipiK18qXyxrPWEtaSxUPWQqbS12KmcsTT0oXzwwPy0xOjEpKmMobygwLGsqayp3LVQqVCkpLEE9KFQqXy1iKk0pL3csUz0oLVQqYi1fKk0pL3csRT0oVCpfK2IqTSkvdyxMPSgtVCpiK18qTSkvdyxDPUEteSxQPVMteCxPPUUteSx6PUwteDtyZXR1cm4gQypDK1AqUD5PKk8reip6JiYoQT1FLFM9TCkse2N4OkEsY3k6Uyx4MDE6LWYseTAxOi1wLHgxMTpBKihhL2stMSkseTExOlMqKGEvay0xKX19ZnVuY3Rpb24gXyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbmV3IF8odCl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBUKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIE0oKXt2YXIgdD1rLG49VCxhPXIoITApLGk9bnVsbCxvPXcscz1udWxsO2Z1bmN0aW9uIGwocil7dmFyIGwsYyx1LGg9ci5sZW5ndGgsZj0hMTtmb3IobnVsbD09aSYmKHM9byh1PWUucGF0aCgpKSksbD0wO2w8PWg7KytsKSEobDxoJiZhKGM9cltsXSxsLHIpKT09PWYmJigoZj0hZik/cy5saW5lU3RhcnQoKTpzLmxpbmVFbmQoKSksZiYmcy5wb2ludCgrdChjLGwsciksK24oYyxsLHIpKTtpZih1KXJldHVybiBzPW51bGwsdSsiInx8bnVsbH1yZXR1cm4gbC54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6cigrZSksbCk6dH0sbC55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksbCk6bn0sbC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cighIXQpLGwpOmF9LGwuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxudWxsIT1pJiYocz1vKGkpKSxsKTpvfSxsLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1zPW51bGw6cz1vKGk9dCksbCk6aX0sbH1mdW5jdGlvbiBBKCl7dmFyIHQ9ayxuPW51bGwsYT1yKDApLGk9VCxvPXIoITApLHM9bnVsbCxsPXcsYz1udWxsO2Z1bmN0aW9uIHUocil7dmFyIHUsaCxmLHAsZCxnPXIubGVuZ3RoLHY9ITEsbT1uZXcgQXJyYXkoZykseT1uZXcgQXJyYXkoZyk7Zm9yKG51bGw9PXMmJihjPWwoZD1lLnBhdGgoKSkpLHU9MDt1PD1nOysrdSl7aWYoISh1PGcmJm8ocD1yW3VdLHUscikpPT09dilpZih2PSF2KWg9dSxjLmFyZWFTdGFydCgpLGMubGluZVN0YXJ0KCk7ZWxzZXtmb3IoYy5saW5lRW5kKCksYy5saW5lU3RhcnQoKSxmPXUtMTtmPj1oOy0tZiljLnBvaW50KG1bZl0seVtmXSk7Yy5saW5lRW5kKCksYy5hcmVhRW5kKCl9diYmKG1bdV09K3QocCx1LHIpLHlbdV09K2EocCx1LHIpLGMucG9pbnQobj8rbihwLHUscik6bVt1XSxpPytpKHAsdSxyKTp5W3VdKSl9aWYoZClyZXR1cm4gYz1udWxsLGQrIiJ8fG51bGx9ZnVuY3Rpb24gaCgpe3JldHVybiBNKCkuZGVmaW5lZChvKS5jdXJ2ZShsKS5jb250ZXh0KHMpfXJldHVybiB1Lng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpyKCtlKSxuPW51bGwsdSk6dH0sdS54MD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnIoK2UpLHUpOnR9LHUueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksdSk6bn0sdS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksaT1udWxsLHUpOmF9LHUueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSx1KTphfSx1LnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLHUpOml9LHUubGluZVgwPXUubGluZVkwPWZ1bmN0aW9uKCl7cmV0dXJuIGgoKS54KHQpLnkoYSl9LHUubGluZVkxPWZ1bmN0aW9uKCl7cmV0dXJuIGgoKS54KHQpLnkoaSl9LHUubGluZVgxPWZ1bmN0aW9uKCl7cmV0dXJuIGgoKS54KG4pLnkoYSl9LHUuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoISF0KSx1KTpvfSx1LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQsbnVsbCE9cyYmKGM9bChzKSksdSk6bH0sdS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P3M9Yz1udWxsOmM9bChzPXQpLHUpOnN9LHV9ZnVuY3Rpb24gUyh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBFKHQpe3JldHVybiB0fV8ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX07dmFyIEw9UCh3KTtmdW5jdGlvbiBDKHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24gUCh0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBuZXcgQyh0KGUpKX1yZXR1cm4gZS5fY3VydmU9dCxlfWZ1bmN0aW9uIE8odCl7dmFyIGU9dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoUCh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiB6KCl7cmV0dXJuIE8oTSgpLmN1cnZlKEwpKX1mdW5jdGlvbiBJKCl7dmFyIHQ9QSgpLmN1cnZlKEwpLGU9dC5jdXJ2ZSxyPXQubGluZVgwLG49dC5saW5lWDEsYT10LmxpbmVZMCxpPXQubGluZVkxO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQuc3RhcnRBbmdsZT10LngwLGRlbGV0ZSB0LngwLHQuZW5kQW5nbGU9dC54MSxkZWxldGUgdC54MSx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmlubmVyUmFkaXVzPXQueTAsZGVsZXRlIHQueTAsdC5vdXRlclJhZGl1cz10LnkxLGRlbGV0ZSB0LnkxLHQubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gTyhyKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gTyhuKCkpfSxkZWxldGUgdC5saW5lWDEsdC5saW5lSW5uZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gTyhhKCkpfSxkZWxldGUgdC5saW5lWTAsdC5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gTyhpKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKFAodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gRCh0LGUpe3JldHVyblsoZT0rZSkqTWF0aC5jb3ModC09TWF0aC5QSS8yKSxlKk1hdGguc2luKHQpXX1DLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYVN0YXJ0KCl9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhRW5kKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX2N1cnZlLnBvaW50KGUqTWF0aC5zaW4odCksZSotTWF0aC5jb3ModCkpfX07dmFyIFI9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIEYodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIEIodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIE4odCl7dmFyIG49RixhPUIsaT1rLG89VCxzPW51bGw7ZnVuY3Rpb24gbCgpe3ZhciByLGw9Ui5jYWxsKGFyZ3VtZW50cyksYz1uLmFwcGx5KHRoaXMsbCksdT1hLmFwcGx5KHRoaXMsbCk7aWYoc3x8KHM9cj1lLnBhdGgoKSksdChzLCtpLmFwcGx5KHRoaXMsKGxbMF09YyxsKSksK28uYXBwbHkodGhpcyxsKSwraS5hcHBseSh0aGlzLChsWzBdPXUsbCkpLCtvLmFwcGx5KHRoaXMsbCkpLHIpcmV0dXJuIHM9bnVsbCxyKyIifHxudWxsfXJldHVybiBsLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGwpOm59LGwudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbCk6YX0sbC54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksbCk6aX0sbC55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksbCk6b30sbC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW51bGw9PXQ/bnVsbDp0LGwpOnN9LGx9ZnVuY3Rpb24gaih0LGUscixuLGEpe3QubW92ZVRvKGUsciksdC5iZXppZXJDdXJ2ZVRvKGU9KGUrbikvMixyLGUsYSxuLGEpfWZ1bmN0aW9uIFYodCxlLHIsbixhKXt0Lm1vdmVUbyhlLHIpLHQuYmV6aWVyQ3VydmVUbyhlLHI9KHIrYSkvMixuLHIsbixhKX1mdW5jdGlvbiBVKHQsZSxyLG4sYSl7dmFyIGk9RChlLHIpLG89RChlLHI9KHIrYSkvMikscz1EKG4sciksbD1EKG4sYSk7dC5tb3ZlVG8oaVswXSxpWzFdKSx0LmJlemllckN1cnZlVG8ob1swXSxvWzFdLHNbMF0sc1sxXSxsWzBdLGxbMV0pfXZhciBxPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KGUvaCk7dC5tb3ZlVG8ociwwKSx0LmFyYygwLDAsciwwLHApfX0sSD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGguc3FydChlLzUpLzI7dC5tb3ZlVG8oLTMqciwtciksdC5saW5lVG8oLXIsLXIpLHQubGluZVRvKC1yLC0zKnIpLHQubGluZVRvKHIsLTMqciksdC5saW5lVG8ociwtciksdC5saW5lVG8oMypyLC1yKSx0LmxpbmVUbygzKnIsciksdC5saW5lVG8ocixyKSx0LmxpbmVUbyhyLDMqciksdC5saW5lVG8oLXIsMypyKSx0LmxpbmVUbygtcixyKSx0LmxpbmVUbygtMypyLHIpLHQuY2xvc2VQYXRoKCl9fSxHPU1hdGguc3FydCgxLzMpLFk9MipHLFc9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRoLnNxcnQoZS9ZKSxuPXIqRzt0Lm1vdmVUbygwLC1yKSx0LmxpbmVUbyhuLDApLHQubGluZVRvKDAsciksdC5saW5lVG8oLW4sMCksdC5jbG9zZVBhdGgoKX19LFg9TWF0aC5zaW4oaC8xMCkvTWF0aC5zaW4oNypoLzEwKSxaPU1hdGguc2luKHAvMTApKlgsSj0tTWF0aC5jb3MocC8xMCkqWCxLPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KC44OTA4MTMwOTE1MjkyODUyKmUpLG49WipyLGE9SipyO3QubW92ZVRvKDAsLXIpLHQubGluZVRvKG4sYSk7Zm9yKHZhciBpPTE7aTw1OysraSl7dmFyIG89cCppLzUscz1NYXRoLmNvcyhvKSxsPU1hdGguc2luKG8pO3QubGluZVRvKGwqciwtcypyKSx0LmxpbmVUbyhzKm4tbCphLGwqbitzKmEpfXQuY2xvc2VQYXRoKCl9fSxRPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KGUpLG49LXIvMjt0LnJlY3QobixuLHIscil9fSwkPU1hdGguc3FydCgzKSx0dD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciByPS1NYXRoLnNxcnQoZS8oMyokKSk7dC5tb3ZlVG8oMCwyKnIpLHQubGluZVRvKC0kKnIsLXIpLHQubGluZVRvKCQqciwtciksdC5jbG9zZVBhdGgoKX19LGV0PS0uNSxydD1NYXRoLnNxcnQoMykvMixudD0xL01hdGguc3FydCgxMiksYXQ9MyoobnQvMisxKSxpdD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGguc3FydChlL2F0KSxuPXIvMixhPXIqbnQsaT1uLG89cipudCtyLHM9LWksbD1vO3QubW92ZVRvKG4sYSksdC5saW5lVG8oaSxvKSx0LmxpbmVUbyhzLGwpLHQubGluZVRvKGV0Km4tcnQqYSxydCpuK2V0KmEpLHQubGluZVRvKGV0KmktcnQqbyxydCppK2V0Km8pLHQubGluZVRvKGV0KnMtcnQqbCxydCpzK2V0KmwpLHQubGluZVRvKGV0Km4rcnQqYSxldCphLXJ0Km4pLHQubGluZVRvKGV0KmkrcnQqbyxldCpvLXJ0KmkpLHQubGluZVRvKGV0KnMrcnQqbCxldCpsLXJ0KnMpLHQuY2xvc2VQYXRoKCl9fSxvdD1bcSxILFcsUSxLLHR0LGl0XTtmdW5jdGlvbiBzdCgpe31mdW5jdGlvbiBsdCh0LGUscil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErcikvNil9ZnVuY3Rpb24gY3QodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHV0KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBodCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gZnQodCxlKXt0aGlzLl9iYXNpcz1uZXcgY3QodCksdGhpcy5fYmV0YT1lfWN0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6bHQodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5feDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6bHQodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LHV0LnByb3RvdHlwZT17YXJlYVN0YXJ0OnN0LGFyZWFFbmQ6c3QsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyKzIqdGhpcy5feDMpLzMsKHRoaXMuX3kyKzIqdGhpcy5feTMpLzMpLHRoaXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MysyKnRoaXMuX3gyKS8zLCh0aGlzLl95MysyKnRoaXMuX3kyKS8zKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9dCx0aGlzLl95Mj1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND10LHRoaXMuX3k0PWUsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNiwodGhpcy5feTArNCp0aGlzLl95MStlKS82KTticmVhaztkZWZhdWx0Omx0KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxodC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgcj0odGhpcy5feDArNCp0aGlzLl94MSt0KS82LG49KHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNjt0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHIsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8ocixuKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0Omx0KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxmdC5wcm90b3R5cGU9e2xpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXSx0aGlzLl9iYXNpcy5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LHI9dC5sZW5ndGgtMTtpZihyPjApZm9yKHZhciBuLGE9dFswXSxpPWVbMF0sbz10W3JdLWEscz1lW3JdLWksbD0tMTsrK2w8PXI7KW49bC9yLHRoaXMuX2Jhc2lzLnBvaW50KHRoaXMuX2JldGEqdFtsXSsoMS10aGlzLl9iZXRhKSooYStuKm8pLHRoaXMuX2JldGEqZVtsXSsoMS10aGlzLl9iZXRhKSooaStuKnMpKTt0aGlzLl94PXRoaXMuX3k9bnVsbCx0aGlzLl9iYXNpcy5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5feC5wdXNoKCt0KSx0aGlzLl95LnB1c2goK2UpfX07dmFyIHB0PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gMT09PWU/bmV3IGN0KHQpOm5ldyBmdCh0LGUpfXJldHVybiByLmJldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxyfSguODUpO2Z1bmN0aW9uIGR0KHQsZSxyKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8odC5feDErdC5fayoodC5feDItdC5feDApLHQuX3kxK3QuX2sqKHQuX3kyLXQuX3kwKSx0Ll94Mit0Ll9rKih0Ll94MS1lKSx0Ll95Mit0Ll9rKih0Ll95MS1yKSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gZ3QodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fWd0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzpkdCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDE9dCx0aGlzLl95MT1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6ZHQodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciB2dD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIG5ldyBndCh0LGUpfXJldHVybiByLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxyfSgwKTtmdW5jdGlvbiBtdCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9bXQucHJvdG90eXBlPXthcmVhU3RhcnQ6c3QsYXJlYUVuZDpzdCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0OmR0KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgeXQ9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKHQpe3JldHVybiBuZXcgbXQodCxlKX1yZXR1cm4gci50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0scn0oMCk7ZnVuY3Rpb24geHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fXh0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OmR0KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgYnQ9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKHQpe3JldHVybiBuZXcgeHQodCxlKX1yZXR1cm4gci50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0scn0oMCk7ZnVuY3Rpb24gX3QodCxlLHIpe3ZhciBuPXQuX3gxLGE9dC5feTEsaT10Ll94MixvPXQuX3kyO2lmKHQuX2wwMV9hPnUpe3ZhciBzPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGw9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO249KG4qcy10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9sLGE9KGEqcy10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9sfWlmKHQuX2wyM19hPnUpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGg9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO2k9KGkqYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL2gsbz0obypjK3QuX3kxKnQuX2wyM18yYS1yKnQuX2wxMl8yYSkvaH10Ll9jb250ZXh0LmJlemllckN1cnZlVG8obixhLGksbyx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gd3QodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX13dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItdCxuPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Ol90KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGt0PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZT9uZXcgd3QodCxlKTpuZXcgZ3QodCwwKX1yZXR1cm4gci5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LHJ9KC41KTtmdW5jdGlvbiBUdCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfVR0LnByb3RvdHlwZT17YXJlYVN0YXJ0OnN0LGFyZWFFbmQ6c3QsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciByPXRoaXMuX3gyLXQsbj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cocipyK24qbix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6X3QodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgTXQ9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKHQpe3JldHVybiBlP25ldyBUdCh0LGUpOm5ldyBtdCh0LDApfXJldHVybiByLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0scn0oLjUpO2Z1bmN0aW9uIEF0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9QXQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgcj10aGlzLl94Mi10LG49dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KHIqcituKm4sdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0Ol90KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIFN0PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZT9uZXcgQXQodCxlKTpuZXcgeHQodCwwKX1yZXR1cm4gci5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LHJ9KC41KTtmdW5jdGlvbiBFdCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gTHQodCl7cmV0dXJuIHQ8MD8tMToxfWZ1bmN0aW9uIEN0KHQsZSxyKXt2YXIgbj10Ll94MS10Ll94MCxhPWUtdC5feDEsaT0odC5feTEtdC5feTApLyhufHxhPDAmJi0wKSxvPShyLXQuX3kxKS8oYXx8bjwwJiYtMCkscz0oaSphK28qbikvKG4rYSk7cmV0dXJuKEx0KGkpK0x0KG8pKSpNYXRoLm1pbihNYXRoLmFicyhpKSxNYXRoLmFicyhvKSwuNSpNYXRoLmFicyhzKSl8fDB9ZnVuY3Rpb24gUHQodCxlKXt2YXIgcj10Ll94MS10Ll94MDtyZXR1cm4gcj8oMyoodC5feTEtdC5feTApL3ItZSkvMjplfWZ1bmN0aW9uIE90KHQsZSxyKXt2YXIgbj10Ll94MCxhPXQuX3kwLGk9dC5feDEsbz10Ll95MSxzPShpLW4pLzM7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG4rcyxhK3MqZSxpLXMsby1zKnIsaSxvKX1mdW5jdGlvbiB6dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gSXQodCl7dGhpcy5fY29udGV4dD1uZXcgRHQodCl9ZnVuY3Rpb24gRHQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFJ0KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBGdCh0KXt2YXIgZSxyLG49dC5sZW5ndGgtMSxhPW5ldyBBcnJheShuKSxpPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKTtmb3IoYVswXT0wLGlbMF09MixvWzBdPXRbMF0rMip0WzFdLGU9MTtlPG4tMTsrK2UpYVtlXT0xLGlbZV09NCxvW2VdPTQqdFtlXSsyKnRbZSsxXTtmb3IoYVtuLTFdPTIsaVtuLTFdPTcsb1tuLTFdPTgqdFtuLTFdK3Rbbl0sZT0xO2U8bjsrK2Upcj1hW2VdL2lbZS0xXSxpW2VdLT1yLG9bZV0tPXIqb1tlLTFdO2ZvcihhW24tMV09b1tuLTFdL2lbbi0xXSxlPW4tMjtlPj0wOy0tZSlhW2VdPShvW2VdLWFbZSsxXSkvaVtlXTtmb3IoaVtuLTFdPSh0W25dK2Fbbi0xXSkvMixlPTA7ZTxuLTE7KytlKWlbZV09Mip0W2UrMV0tYVtlKzFdO3JldHVyblthLGldfWZ1bmN0aW9uIEJ0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX3Q9ZX1mdW5jdGlvbiBOdCh0LGUpe2lmKChhPXQubGVuZ3RoKT4xKWZvcih2YXIgcixuLGEsaT0xLG89dFtlWzBdXSxzPW8ubGVuZ3RoO2k8YTsrK2kpZm9yKG49byxvPXRbZVtpXV0scj0wO3I8czsrK3Ipb1tyXVsxXSs9b1tyXVswXT1pc05hTihuW3JdWzFdKT9uW3JdWzBdOm5bcl1bMV19ZnVuY3Rpb24ganQodCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IEFycmF5KGUpOy0tZT49MDspcltlXT1lO3JldHVybiByfWZ1bmN0aW9uIFZ0KHQsZSl7cmV0dXJuIHRbZV19ZnVuY3Rpb24gVXQodCl7dmFyIGU9dC5tYXAocXQpO3JldHVybiBqdCh0KS5zb3J0KGZ1bmN0aW9uKHQscil7cmV0dXJuIGVbdF0tZVtyXX0pfWZ1bmN0aW9uIHF0KHQpe2Zvcih2YXIgZSxyPS0xLG49MCxhPXQubGVuZ3RoLGk9LTEvMDsrK3I8YTspKGU9K3Rbcl1bMV0pPmkmJihpPWUsbj1yKTtyZXR1cm4gbn1mdW5jdGlvbiBIdCh0KXt2YXIgZT10Lm1hcChHdCk7cmV0dXJuIGp0KHQpLnNvcnQoZnVuY3Rpb24odCxyKXtyZXR1cm4gZVt0XS1lW3JdfSl9ZnVuY3Rpb24gR3QodCl7Zm9yKHZhciBlLHI9MCxuPS0xLGE9dC5sZW5ndGg7KytuPGE7KShlPSt0W25dWzFdKSYmKHIrPWUpO3JldHVybiByfUV0LnByb3RvdHlwZT17YXJlYVN0YXJ0OnN0LGFyZWFFbmQ6c3QsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0senQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOk90KHRoaXMsdGhpcy5fdDAsUHQodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgcj1OYU47aWYoZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLE90KHRoaXMsUHQodGhpcyxyPUN0KHRoaXMsdCxlKSkscik7YnJlYWs7ZGVmYXVsdDpPdCh0aGlzLHRoaXMuX3QwLHI9Q3QodGhpcyx0LGUpKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWUsdGhpcy5fdDA9cn19fSwoSXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoenQucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxlKXt6dC5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLGUsdCl9LER0LnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUscixuLGEsaSl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxuLHIsaSxhKX19LFJ0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LHI9dC5sZW5ndGg7aWYocilpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sZVswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxlWzBdKSwyPT09cil0aGlzLl9jb250ZXh0LmxpbmVUbyh0WzFdLGVbMV0pO2Vsc2UgZm9yKHZhciBuPUZ0KHQpLGE9RnQoZSksaT0wLG89MTtvPHI7KytpLCsrbyl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oblswXVtpXSxhWzBdW2ldLG5bMV1baV0sYVsxXVtpXSx0W29dLGVbb10pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXIpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LEJ0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsZSksdGhpcy5fY29udGV4dC5saW5lVG8odCxlKTtlbHNle3ZhciByPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKHIsdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8ocixlKX19dGhpcy5feD10LHRoaXMuX3k9ZX19LHQuYXJjPWZ1bmN0aW9uKCl7dmFyIHQ9ZyxvPXYsXz1yKDApLHc9bnVsbCxrPW0sVD15LE09eCxBPW51bGw7ZnVuY3Rpb24gUygpe3ZhciByLGcsdixtPSt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx5PStvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx4PWsuYXBwbHkodGhpcyxhcmd1bWVudHMpLWYsUz1ULmFwcGx5KHRoaXMsYXJndW1lbnRzKS1mLEU9bihTLXgpLEw9Uz54O2lmKEF8fChBPXI9ZS5wYXRoKCkpLHk8bSYmKGc9eSx5PW0sbT1nKSx5PnUpaWYoRT5wLXUpQS5tb3ZlVG8oeSppKHgpLHkqbCh4KSksQS5hcmMoMCwwLHkseCxTLCFMKSxtPnUmJihBLm1vdmVUbyhtKmkoUyksbSpsKFMpKSxBLmFyYygwLDAsbSxTLHgsTCkpO2Vsc2V7dmFyIEMsUCxPPXgsej1TLEk9eCxEPVMsUj1FLEY9RSxCPU0uYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsTj1CPnUmJih3Pyt3LmFwcGx5KHRoaXMsYXJndW1lbnRzKTpjKG0qbSt5KnkpKSxqPXMobih5LW0pLzIsK18uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxWPWosVT1qO2lmKE4+dSl7dmFyIHE9ZChOL20qbChCKSksSD1kKE4veSpsKEIpKTsoUi09MipxKT51PyhJKz1xKj1MPzE6LTEsRC09cSk6KFI9MCxJPUQ9KHgrUykvMiksKEYtPTIqSCk+dT8oTys9SCo9TD8xOi0xLHotPUgpOihGPTAsTz16PSh4K1MpLzIpfXZhciBHPXkqaShPKSxZPXkqbChPKSxXPW0qaShEKSxYPW0qbChEKTtpZihqPnUpe3ZhciBaLEo9eSppKHopLEs9eSpsKHopLFE9bSppKEkpLCQ9bSpsKEkpO2lmKEU8aCYmKFo9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzKXt2YXIgbD1yLXQsYz1uLWUsaD1vLWEsZj1zLWkscD1mKmwtaCpjO2lmKCEocCpwPHUpKXJldHVyblt0KyhwPShoKihlLWkpLWYqKHQtYSkpL3ApKmwsZStwKmNdfShHLFksUSwkLEosSyxXLFgpKSl7dmFyIHR0PUctWlswXSxldD1ZLVpbMV0scnQ9Si1aWzBdLG50PUstWlsxXSxhdD0xL2woKCh2PSh0dCpydCtldCpudCkvKGModHQqdHQrZXQqZXQpKmMocnQqcnQrbnQqbnQpKSk+MT8wOnY8LTE/aDpNYXRoLmFjb3ModikpLzIpLGl0PWMoWlswXSpaWzBdK1pbMV0qWlsxXSk7Vj1zKGosKG0taXQpLyhhdC0xKSksVT1zKGosKHktaXQpLyhhdCsxKSl9fUY+dT9VPnU/KEM9YihRLCQsRyxZLHksVSxMKSxQPWIoSixLLFcsWCx5LFUsTCksQS5tb3ZlVG8oQy5jeCtDLngwMSxDLmN5K0MueTAxKSxVPGo/QS5hcmMoQy5jeCxDLmN5LFUsYShDLnkwMSxDLngwMSksYShQLnkwMSxQLngwMSksIUwpOihBLmFyYyhDLmN4LEMuY3ksVSxhKEMueTAxLEMueDAxKSxhKEMueTExLEMueDExKSwhTCksQS5hcmMoMCwwLHksYShDLmN5K0MueTExLEMuY3grQy54MTEpLGEoUC5jeStQLnkxMSxQLmN4K1AueDExKSwhTCksQS5hcmMoUC5jeCxQLmN5LFUsYShQLnkxMSxQLngxMSksYShQLnkwMSxQLngwMSksIUwpKSk6KEEubW92ZVRvKEcsWSksQS5hcmMoMCwwLHksTyx6LCFMKSk6QS5tb3ZlVG8oRyxZKSxtPnUmJlI+dT9WPnU/KEM9YihXLFgsSixLLG0sLVYsTCksUD1iKEcsWSxRLCQsbSwtVixMKSxBLmxpbmVUbyhDLmN4K0MueDAxLEMuY3krQy55MDEpLFY8aj9BLmFyYyhDLmN4LEMuY3ksVixhKEMueTAxLEMueDAxKSxhKFAueTAxLFAueDAxKSwhTCk6KEEuYXJjKEMuY3gsQy5jeSxWLGEoQy55MDEsQy54MDEpLGEoQy55MTEsQy54MTEpLCFMKSxBLmFyYygwLDAsbSxhKEMuY3krQy55MTEsQy5jeCtDLngxMSksYShQLmN5K1AueTExLFAuY3grUC54MTEpLEwpLEEuYXJjKFAuY3gsUC5jeSxWLGEoUC55MTEsUC54MTEpLGEoUC55MDEsUC54MDEpLCFMKSkpOkEuYXJjKDAsMCxtLEQsSSxMKTpBLmxpbmVUbyhXLFgpfWVsc2UgQS5tb3ZlVG8oMCwwKTtpZihBLmNsb3NlUGF0aCgpLHIpcmV0dXJuIEE9bnVsbCxyKyIifHxudWxsfXJldHVybiBTLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIGU9KCt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK28uYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLHI9KCtrLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK1QuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLWgvMjtyZXR1cm5baShyKSplLGwocikqZV19LFMuaW5uZXJSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpyKCtlKSxTKTp0fSxTLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksUyk6b30sUy5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxTKTpffSxTLnBhZFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxTKTp3fSxTLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxTKTprfSxTLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksUyk6VH0sUy5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLFMpOk19LFMuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT1udWxsPT10P251bGw6dCxTKTpBfSxTfSx0LmFyZWE9QSx0LmxpbmU9TSx0LnBpZT1mdW5jdGlvbigpe3ZhciB0PUUsZT1TLG49bnVsbCxhPXIoMCksaT1yKHApLG89cigwKTtmdW5jdGlvbiBzKHIpe3ZhciBzLGwsYyx1LGgsZj1yLmxlbmd0aCxkPTAsZz1uZXcgQXJyYXkoZiksdj1uZXcgQXJyYXkoZiksbT0rYS5hcHBseSh0aGlzLGFyZ3VtZW50cykseT1NYXRoLm1pbihwLE1hdGgubWF4KC1wLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLW0pKSx4PU1hdGgubWluKE1hdGguYWJzKHkpL2Ysby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGI9eCooeTwwPy0xOjEpO2ZvcihzPTA7czxmOysrcykoaD12W2dbc109c109K3QocltzXSxzLHIpKT4wJiYoZCs9aCk7Zm9yKG51bGwhPWU/Zy5zb3J0KGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodlt0XSx2W3JdKX0pOm51bGwhPW4mJmcuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBuKHJbdF0scltlXSl9KSxzPTAsYz1kPyh5LWYqYikvZDowO3M8ZjsrK3MsbT11KWw9Z1tzXSx1PW0rKChoPXZbbF0pPjA/aCpjOjApK2IsdltsXT17ZGF0YTpyW2xdLGluZGV4OnMsdmFsdWU6aCxzdGFydEFuZ2xlOm0sZW5kQW5nbGU6dSxwYWRBbmdsZTp4fTtyZXR1cm4gdn1yZXR1cm4gcy52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnIoK2UpLHMpOnR9LHMuc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxzKTplfSxzLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwscyk6bn0scy5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCkscyk6YX0scy5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLHMpOml9LHMucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxzKTpvfSxzfSx0LmFyZWFSYWRpYWw9SSx0LnJhZGlhbEFyZWE9SSx0LmxpbmVSYWRpYWw9eix0LnJhZGlhbExpbmU9eix0LnBvaW50UmFkaWFsPUQsdC5saW5rSG9yaXpvbnRhbD1mdW5jdGlvbigpe3JldHVybiBOKGopfSx0LmxpbmtWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiBOKFYpfSx0LmxpbmtSYWRpYWw9ZnVuY3Rpb24oKXt2YXIgdD1OKFUpO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHR9LHQuc3ltYm9sPWZ1bmN0aW9uKCl7dmFyIHQ9cihxKSxuPXIoNjQpLGE9bnVsbDtmdW5jdGlvbiBpKCl7dmFyIHI7aWYoYXx8KGE9cj1lLnBhdGgoKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhhLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkscilyZXR1cm4gYT1udWxsLHIrIiJ8fG51bGx9cmV0dXJuIGkudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnIoZSksaSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksaSk6bn0saS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW51bGw9PXQ/bnVsbDp0LGkpOmF9LGl9LHQuc3ltYm9scz1vdCx0LnN5bWJvbENpcmNsZT1xLHQuc3ltYm9sQ3Jvc3M9SCx0LnN5bWJvbERpYW1vbmQ9Vyx0LnN5bWJvbFNxdWFyZT1RLHQuc3ltYm9sU3Rhcj1LLHQuc3ltYm9sVHJpYW5nbGU9dHQsdC5zeW1ib2xXeWU9aXQsdC5jdXJ2ZUJhc2lzQ2xvc2VkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdXQodCl9LHQuY3VydmVCYXNpc09wZW49ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBodCh0KX0sdC5jdXJ2ZUJhc2lzPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgY3QodCl9LHQuY3VydmVCdW5kbGU9cHQsdC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkPXl0LHQuY3VydmVDYXJkaW5hbE9wZW49YnQsdC5jdXJ2ZUNhcmRpbmFsPXZ0LHQuY3VydmVDYXRtdWxsUm9tQ2xvc2VkPU10LHQuY3VydmVDYXRtdWxsUm9tT3Blbj1TdCx0LmN1cnZlQ2F0bXVsbFJvbT1rdCx0LmN1cnZlTGluZWFyQ2xvc2VkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRXQodCl9LHQuY3VydmVMaW5lYXI9dyx0LmN1cnZlTW9ub3RvbmVYPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgenQodCl9LHQuY3VydmVNb25vdG9uZVk9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBJdCh0KX0sdC5jdXJ2ZU5hdHVyYWw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBSdCh0KX0sdC5jdXJ2ZVN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCdCh0LC41KX0sdC5jdXJ2ZVN0ZXBBZnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEJ0KHQsMSl9LHQuY3VydmVTdGVwQmVmb3JlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQnQodCwwKX0sdC5zdGFjaz1mdW5jdGlvbigpe3ZhciB0PXIoW10pLGU9anQsbj1OdCxhPVZ0O2Z1bmN0aW9uIGkocil7dmFyIGksbyxzPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGw9ci5sZW5ndGgsYz1zLmxlbmd0aCx1PW5ldyBBcnJheShjKTtmb3IoaT0wO2k8YzsrK2kpe2Zvcih2YXIgaCxmPXNbaV0scD11W2ldPW5ldyBBcnJheShsKSxkPTA7ZDxsOysrZClwW2RdPWg9WzAsK2EocltkXSxmLGQscildLGguZGF0YT1yW2RdO3Aua2V5PWZ9Zm9yKGk9MCxvPWUodSk7aTxjOysraSl1W29baV1dLmluZGV4PWk7cmV0dXJuIG4odSxvKSx1fXJldHVybiBpLmtleXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpyKFIuY2FsbChlKSksaSk6dH0saS52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLGkpOmF9LGkub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9qdDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoUi5jYWxsKHQpKSxpKTplfSxpLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P050OnQsaSk6bn0saX0sdC5zdGFja09mZnNldEV4cGFuZD1mdW5jdGlvbih0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIHIsbixhLGk9MCxvPXRbMF0ubGVuZ3RoO2k8bzsrK2kpe2ZvcihhPXI9MDtyPG47KytyKWErPXRbcl1baV1bMV18fDA7aWYoYSlmb3Iocj0wO3I8bjsrK3IpdFtyXVtpXVsxXS89YX1OdCh0LGUpfX0sdC5zdGFja09mZnNldERpdmVyZ2luZz1mdW5jdGlvbih0LGUpe2lmKChzPXQubGVuZ3RoKT4xKWZvcih2YXIgcixuLGEsaSxvLHMsbD0wLGM9dFtlWzBdXS5sZW5ndGg7bDxjOysrbClmb3IoaT1vPTAscj0wO3I8czsrK3IpKGE9KG49dFtlW3JdXVtsXSlbMV0tblswXSk+PTA/KG5bMF09aSxuWzFdPWkrPWEpOmE8MD8oblsxXT1vLG5bMF09bys9YSk6blswXT1pfSx0LnN0YWNrT2Zmc2V0Tm9uZT1OdCx0LnN0YWNrT2Zmc2V0U2lsaG91ZXR0ZT1mdW5jdGlvbih0LGUpe2lmKChyPXQubGVuZ3RoKT4wKXtmb3IodmFyIHIsbj0wLGE9dFtlWzBdXSxpPWEubGVuZ3RoO248aTsrK24pe2Zvcih2YXIgbz0wLHM9MDtvPHI7KytvKXMrPXRbb11bbl1bMV18fDA7YVtuXVsxXSs9YVtuXVswXT0tcy8yfU50KHQsZSl9fSx0LnN0YWNrT2Zmc2V0V2lnZ2xlPWZ1bmN0aW9uKHQsZSl7aWYoKGE9dC5sZW5ndGgpPjAmJihuPShyPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciByLG4sYSxpPTAsbz0xO288bjsrK28pe2Zvcih2YXIgcz0wLGw9MCxjPTA7czxhOysrcyl7Zm9yKHZhciB1PXRbZVtzXV0saD11W29dWzFdfHwwLGY9KGgtKHVbby0xXVsxXXx8MCkpLzIscD0wO3A8czsrK3Ape3ZhciBkPXRbZVtwXV07Zis9KGRbb11bMV18fDApLShkW28tMV1bMV18fDApfWwrPWgsYys9ZipofXJbby0xXVsxXSs9cltvLTFdWzBdPWksbCYmKGktPWMvbCl9cltvLTFdWzFdKz1yW28tMV1bMF09aSxOdCh0LGUpfX0sdC5zdGFja09yZGVyQXBwZWFyYW5jZT1VdCx0LnN0YWNrT3JkZXJBc2NlbmRpbmc9SHQsdC5zdGFja09yZGVyRGVzY2VuZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gSHQodCkucmV2ZXJzZSgpfSx0LnN0YWNrT3JkZXJJbnNpZGVPdXQ9ZnVuY3Rpb24odCl7dmFyIGUscixuPXQubGVuZ3RoLGE9dC5tYXAoR3QpLGk9VXQodCksbz0wLHM9MCxsPVtdLGM9W107Zm9yKGU9MDtlPG47KytlKXI9aVtlXSxvPHM/KG8rPWFbcl0sbC5wdXNoKHIpKToocys9YVtyXSxjLnB1c2gocikpO3JldHVybiBjLnJldmVyc2UoKS5jb25jYXQobCl9LHQuc3RhY2tPcmRlck5vbmU9anQsdC5zdGFja09yZGVyUmV2ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4ganQodCkucmV2ZXJzZSgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LCJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP2Eocix0KCJkMy1wYXRoIikpOmEobi5kMz1uLmQzfHx7fSxuLmQzKX0seyJkMy1wYXRoIjoxNjF9XSwxNjQ6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbjtuPXRoaXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlLHIsbj0wLGE9MCxpPTAsbz0xZTMscz0wLGw9MCxjPTAsdT0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxoPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIGYoKXtyZXR1cm4gbHx8KGgocCksbD11Lm5vdygpK2MpfWZ1bmN0aW9uIHAoKXtsPTB9ZnVuY3Rpb24gZCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gZyh0LGUscil7dmFyIG49bmV3IGQ7cmV0dXJuIG4ucmVzdGFydCh0LGUsciksbn1mdW5jdGlvbiB2KCl7ZigpLCsrbjtmb3IodmFyIHQscj1lO3I7KSh0PWwtci5fdGltZSk+PTAmJnIuX2NhbGwuY2FsbChudWxsLHQpLHI9ci5fbmV4dDstLW59ZnVuY3Rpb24gbSgpe2w9KHM9dS5ub3coKSkrYyxuPWE9MDt0cnl7digpfWZpbmFsbHl7bj0wLGZ1bmN0aW9uKCl7dmFyIHQsbixhPWUsaT0xLzA7Zm9yKDthOylhLl9jYWxsPyhpPmEuX3RpbWUmJihpPWEuX3RpbWUpLHQ9YSxhPWEuX25leHQpOihuPWEuX25leHQsYS5fbmV4dD1udWxsLGE9dD90Ll9uZXh0PW46ZT1uKTtyPXQseChpKX0oKSxsPTB9fWZ1bmN0aW9uIHkoKXt2YXIgdD11Lm5vdygpLGU9dC1zO2U+byYmKGMtPWUscz10KX1mdW5jdGlvbiB4KHQpe258fChhJiYoYT1jbGVhclRpbWVvdXQoYSkpLHQtbD4yND8odDwxLzAmJihhPXNldFRpbWVvdXQobSx0LXUubm93KCktYykpLGkmJihpPWNsZWFySW50ZXJ2YWwoaSkpKTooaXx8KHM9dS5ub3coKSxpPXNldEludGVydmFsKHksbykpLG49MSxoKG0pKSl9ZC5wcm90b3R5cGU9Zy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQscmVzdGFydDpmdW5jdGlvbih0LG4sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTthPShudWxsPT1hP2YoKTorYSkrKG51bGw9PW4/MDorbiksdGhpcy5fbmV4dHx8cj09PXRoaXN8fChyP3IuX25leHQ9dGhpczplPXRoaXMscj10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1hLHgoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAseCgpKX19LHQubm93PWYsdC50aW1lcj1nLHQudGltZXJGbHVzaD12LHQudGltZW91dD1mdW5jdGlvbih0LGUscil7dmFyIG49bmV3IGQ7cmV0dXJuIGU9bnVsbD09ZT8wOitlLG4ucmVzdGFydChmdW5jdGlvbihyKXtuLnN0b3AoKSx0KHIrZSl9LGUsciksbn0sdC5pbnRlcnZhbD1mdW5jdGlvbih0LGUscil7dmFyIG49bmV3IGQsYT1lO3JldHVybiBudWxsPT1lPyhuLnJlc3RhcnQodCxlLHIpLG4pOihlPStlLHI9bnVsbD09cj9mKCk6K3Isbi5yZXN0YXJ0KGZ1bmN0aW9uIGkobyl7bys9YSxuLnJlc3RhcnQoaSxhKz1lLHIpLHQobyl9LGUsciksbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9mIGU/cjpuLmQzPW4uZDN8fHt9KX0se31dLDE2NTpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbigpe3ZhciB0PXt2ZXJzaW9uOiIzLjUuMTcifSxyPVtdLnNsaWNlLG49ZnVuY3Rpb24odCl7cmV0dXJuIHIuY2FsbCh0KX0sYT10aGlzLmRvY3VtZW50O2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQmJih0Lm93bmVyRG9jdW1lbnR8fHQuZG9jdW1lbnR8fHQpLmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBvKHQpe3JldHVybiB0JiYodC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXcpfWlmKGEpdHJ5e24oYS5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcylbMF0ubm9kZVR5cGV9Y2F0Y2godCl7bj1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSk7ZS0tOylyW2VdPXRbZV07cmV0dXJuIHJ9fWlmKERhdGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9KSxhKXRyeXthLmNyZWF0ZUVsZW1lbnQoIkRJViIpLnN0eWxlLnNldFByb3BlcnR5KCJvcGFjaXR5IiwwLCIiKX1jYXRjaCh0KXt2YXIgcz10aGlzLkVsZW1lbnQucHJvdG90eXBlLGw9cy5zZXRBdHRyaWJ1dGUsYz1zLnNldEF0dHJpYnV0ZU5TLHU9dGhpcy5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSxoPXUuc2V0UHJvcGVydHk7cy5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXtsLmNhbGwodGhpcyx0LGUrIiIpfSxzLnNldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQsZSxyKXtjLmNhbGwodGhpcyx0LGUscisiIil9LHUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLHIpe2guY2FsbCh0aGlzLHQsZSsiIixyKX19ZnVuY3Rpb24gZih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24gZCh0KXtyZXR1cm4haXNOYU4odCl9ZnVuY3Rpb24gZyh0KXtyZXR1cm57bGVmdDpmdW5jdGlvbihlLHIsbixhKXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYobj0wKSxhcmd1bWVudHMubGVuZ3RoPDQmJihhPWUubGVuZ3RoKTtuPGE7KXt2YXIgaT1uK2E+Pj4xO3QoZVtpXSxyKTwwP249aSsxOmE9aX1yZXR1cm4gbn0scmlnaHQ6ZnVuY3Rpb24oZSxyLG4sYSl7Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKG49MCksYXJndW1lbnRzLmxlbmd0aDw0JiYoYT1lLmxlbmd0aCk7bjxhOyl7dmFyIGk9bithPj4+MTt0KGVbaV0scik+MD9hPWk6bj1pKzF9cmV0dXJuIG59fX10LmFzY2VuZGluZz1mLHQuZGVzY2VuZGluZz1mdW5jdGlvbih0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn0sdC5taW49ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9LTEsaT10Lmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK2E8aTspaWYobnVsbCE9KG49dFthXSkmJm4+PW4pe3I9bjticmVha31mb3IoOysrYTxpOyludWxsIT0obj10W2FdKSYmcj5uJiYocj1uKX1lbHNle2Zvcig7KythPGk7KWlmKG51bGwhPShuPWUuY2FsbCh0LHRbYV0sYSkpJiZuPj1uKXtyPW47YnJlYWt9Zm9yKDsrK2E8aTspbnVsbCE9KG49ZS5jYWxsKHQsdFthXSxhKSkmJnI+biYmKHI9bil9cmV0dXJuIHJ9LHQubWF4PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPS0xLGk9dC5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7KythPGk7KWlmKG51bGwhPShuPXRbYV0pJiZuPj1uKXtyPW47YnJlYWt9Zm9yKDsrK2E8aTspbnVsbCE9KG49dFthXSkmJm4+ciYmKHI9bil9ZWxzZXtmb3IoOysrYTxpOylpZihudWxsIT0obj1lLmNhbGwodCx0W2FdLGEpKSYmbj49bil7cj1uO2JyZWFrfWZvcig7KythPGk7KW51bGwhPShuPWUuY2FsbCh0LHRbYV0sYSkpJiZuPnImJihyPW4pfXJldHVybiByfSx0LmV4dGVudD1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpPS0xLG89dC5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7KytpPG87KWlmKG51bGwhPShuPXRbaV0pJiZuPj1uKXtyPWE9bjticmVha31mb3IoOysraTxvOyludWxsIT0obj10W2ldKSYmKHI+biYmKHI9biksYTxuJiYoYT1uKSl9ZWxzZXtmb3IoOysraTxvOylpZihudWxsIT0obj1lLmNhbGwodCx0W2ldLGkpKSYmbj49bil7cj1hPW47YnJlYWt9Zm9yKDsrK2k8bzspbnVsbCE9KG49ZS5jYWxsKHQsdFtpXSxpKSkmJihyPm4mJihyPW4pLGE8biYmKGE9bikpfXJldHVybltyLGFdfSx0LnN1bT1mdW5jdGlvbih0LGUpe3ZhciByLG49MCxhPXQubGVuZ3RoLGk9LTE7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2k8YTspZChyPSt0W2ldKSYmKG4rPXIpO2Vsc2UgZm9yKDsrK2k8YTspZChyPStlLmNhbGwodCx0W2ldLGkpKSYmKG4rPXIpO3JldHVybiBufSx0Lm1lYW49ZnVuY3Rpb24odCxlKXt2YXIgcixuPTAsYT10Lmxlbmd0aCxpPS0xLG89YTtpZigxPT09YXJndW1lbnRzLmxlbmd0aClmb3IoOysraTxhOylkKHI9cCh0W2ldKSk/bis9cjotLW87ZWxzZSBmb3IoOysraTxhOylkKHI9cChlLmNhbGwodCx0W2ldLGkpKSk/bis9cjotLW87aWYobylyZXR1cm4gbi9vfSx0LnF1YW50aWxlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9KHQubGVuZ3RoLTEpKmUrMSxuPU1hdGguZmxvb3IociksYT0rdFtuLTFdLGk9ci1uO3JldHVybiBpP2EraSoodFtuXS1hKTphfSx0Lm1lZGlhbj1mdW5jdGlvbihlLHIpe3ZhciBuLGE9W10saT1lLmxlbmd0aCxvPS0xO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytvPGk7KWQobj1wKGVbb10pKSYmYS5wdXNoKG4pO2Vsc2UgZm9yKDsrK288aTspZChuPXAoci5jYWxsKGUsZVtvXSxvKSkpJiZhLnB1c2gobik7aWYoYS5sZW5ndGgpcmV0dXJuIHQucXVhbnRpbGUoYS5zb3J0KGYpLC41KX0sdC52YXJpYW5jZT1mdW5jdGlvbih0LGUpe3ZhciByLG4sYT10Lmxlbmd0aCxpPTAsbz0wLHM9LTEsbD0wO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytzPGE7KWQocj1wKHRbc10pKSYmKG8rPShuPXItaSkqKHItKGkrPW4vKytsKSkpO2Vsc2UgZm9yKDsrK3M8YTspZChyPXAoZS5jYWxsKHQsdFtzXSxzKSkpJiYobys9KG49ci1pKSooci0oaSs9bi8rK2wpKSk7aWYobD4xKXJldHVybiBvLyhsLTEpfSx0LmRldmlhdGlvbj1mdW5jdGlvbigpe3ZhciBlPXQudmFyaWFuY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlP01hdGguc3FydChlKTplfTt2YXIgdj1nKGYpO2Z1bmN0aW9uIG0odCl7cmV0dXJuIHQubGVuZ3RofXQuYmlzZWN0TGVmdD12LmxlZnQsdC5iaXNlY3Q9dC5iaXNlY3RSaWdodD12LnJpZ2h0LHQuYmlzZWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGcoMT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7cmV0dXJuIGYodChlKSxyKX06dCl9LHQuc2h1ZmZsZT1mdW5jdGlvbih0LGUscil7KGk9YXJndW1lbnRzLmxlbmd0aCk8MyYmKHI9dC5sZW5ndGgsaTwyJiYoZT0wKSk7Zm9yKHZhciBuLGEsaT1yLWU7aTspYT1NYXRoLnJhbmRvbSgpKmktLXwwLG49dFtpK2VdLHRbaStlXT10W2ErZV0sdFthK2VdPW47cmV0dXJuIHR9LHQucGVybXV0ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lLmxlbmd0aCxuPW5ldyBBcnJheShyKTtyLS07KW5bcl09dFtlW3JdXTtyZXR1cm4gbn0sdC5wYWlycz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoLTEsbj10WzBdLGE9bmV3IEFycmF5KHI8MD8wOnIpO2U8cjspYVtlXT1bbixuPXRbKytlXV07cmV0dXJuIGF9LHQudHJhbnNwb3NlPWZ1bmN0aW9uKGUpe2lmKCEoaT1lLmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciByPS0xLG49dC5taW4oZSxtKSxhPW5ldyBBcnJheShuKTsrK3I8bjspZm9yKHZhciBpLG89LTEscz1hW3JdPW5ldyBBcnJheShpKTsrK288aTspc1tvXT1lW29dW3JdO3JldHVybiBhfSx0LnppcD1mdW5jdGlvbigpe3JldHVybiB0LnRyYW5zcG9zZShhcmd1bWVudHMpfSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHIpO3JldHVybiBlfSx0LnZhbHVlcz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2godFtyXSk7cmV0dXJuIGV9LHQuZW50cmllcz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2goe2tleTpyLHZhbHVlOnRbcl19KTtyZXR1cm4gZX0sdC5tZXJnZT1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGE9dC5sZW5ndGgsaT0tMSxvPTA7KytpPGE7KW8rPXRbaV0ubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShvKTstLWE+PTA7KWZvcihlPShuPXRbYV0pLmxlbmd0aDstLWU+PTA7KXJbLS1vXT1uW2VdO3JldHVybiByfTt2YXIgeT1NYXRoLmFicztmdW5jdGlvbiB4KHQsZSl7Zm9yKHZhciByIGluIGUpT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLHIse3ZhbHVlOmVbcl0sZW51bWVyYWJsZTohMX0pfWZ1bmN0aW9uIGIoKXt0aGlzLl89T2JqZWN0LmNyZWF0ZShudWxsKX10LnJhbmdlPWZ1bmN0aW9uKHQsZSxyKXtpZihhcmd1bWVudHMubGVuZ3RoPDMmJihyPTEsYXJndW1lbnRzLmxlbmd0aDwyJiYoZT10LHQ9MCkpLChlLXQpL3I9PTEvMCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIHJhbmdlIik7dmFyIG4sYT1bXSxpPWZ1bmN0aW9uKHQpe3ZhciBlPTE7Zm9yKDt0KmUlMTspZSo9MTA7cmV0dXJuIGV9KHkocikpLG89LTE7aWYodCo9aSxlKj1pLChyKj1pKTwwKWZvcig7KG49dCtyKisrbyk+ZTspYS5wdXNoKG4vaSk7ZWxzZSBmb3IoOyhuPXQrciorK28pPGU7KWEucHVzaChuL2kpO3JldHVybiBhfSx0Lm1hcD1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBiO2lmKHQgaW5zdGFuY2VvZiBiKXQuZm9yRWFjaChmdW5jdGlvbih0LGUpe3Iuc2V0KHQsZSl9KTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuLGE9LTEsaT10Lmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aClmb3IoOysrYTxpOylyLnNldChhLHRbYV0pO2Vsc2UgZm9yKDsrK2E8aTspci5zZXQoZS5jYWxsKHQsbj10W2FdLGEpLG4pfWVsc2UgZm9yKHZhciBvIGluIHQpci5zZXQobyx0W29dKTtyZXR1cm4gcn07dmFyIF89Il9fcHJvdG9fXyIsdz0iXDAiO2Z1bmN0aW9uIGsodCl7cmV0dXJuKHQrPSIiKT09PV98fHRbMF09PT13P3crdDp0fWZ1bmN0aW9uIFQodCl7cmV0dXJuKHQrPSIiKVswXT09PXc/dC5zbGljZSgxKTp0fWZ1bmN0aW9uIE0odCl7cmV0dXJuIGsodClpbiB0aGlzLl99ZnVuY3Rpb24gQSh0KXtyZXR1cm4odD1rKHQpKWluIHRoaXMuXyYmZGVsZXRlIHRoaXMuX1t0XX1mdW5jdGlvbiBTKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuXyl0LnB1c2goVChlKSk7cmV0dXJuIHR9ZnVuY3Rpb24gRSgpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMuXykrK3Q7cmV0dXJuIHR9ZnVuY3Rpb24gTCgpe2Zvcih2YXIgdCBpbiB0aGlzLl8pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQygpe3RoaXMuXz1PYmplY3QuY3JlYXRlKG51bGwpfWZ1bmN0aW9uIFAodCl7cmV0dXJuIHR9ZnVuY3Rpb24gTyh0LGUscil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ci5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q6bn19ZnVuY3Rpb24geih0LGUpe2lmKGUgaW4gdClyZXR1cm4gZTtlPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtmb3IodmFyIHI9MCxuPUkubGVuZ3RoO3I8bjsrK3Ipe3ZhciBhPUlbcl0rZTtpZihhIGluIHQpcmV0dXJuIGF9fXgoYix7aGFzOk0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9bayh0KV19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9bayh0KV09ZX0scmVtb3ZlOkEsa2V5czpTLHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLl8pdC5wdXNoKHRoaXMuX1tlXSk7cmV0dXJuIHR9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcy5fKXQucHVzaCh7a2V5OlQoZSksdmFsdWU6dGhpcy5fW2VdfSk7cmV0dXJuIHR9LHNpemU6RSxlbXB0eTpMLGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuXyl0LmNhbGwodGhpcyxUKGUpLHRoaXMuX1tlXSl9fSksdC5uZXN0PWZ1bmN0aW9uKCl7dmFyIGUscixuPXt9LGE9W10saT1bXTtmdW5jdGlvbiBvKHQsaSxzKXtpZihzPj1hLmxlbmd0aClyZXR1cm4gcj9yLmNhbGwobixpKTplP2kuc29ydChlKTppO2Zvcih2YXIgbCxjLHUsaCxmPS0xLHA9aS5sZW5ndGgsZD1hW3MrK10sZz1uZXcgYjsrK2Y8cDspKGg9Zy5nZXQobD1kKGM9aVtmXSkpKT9oLnB1c2goYyk6Zy5zZXQobCxbY10pO3JldHVybiB0PyhjPXQoKSx1PWZ1bmN0aW9uKGUscil7Yy5zZXQoZSxvKHQscixzKSl9KTooYz17fSx1PWZ1bmN0aW9uKGUscil7Y1tlXT1vKHQscixzKX0pLGcuZm9yRWFjaCh1KSxjfXJldHVybiBuLm1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBvKGUsdCwwKX0sbi5lbnRyaWVzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiB0KGUscil7aWYocj49YS5sZW5ndGgpcmV0dXJuIGU7dmFyIG49W10sbz1pW3IrK107cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlLGEpe24ucHVzaCh7a2V5OmUsdmFsdWVzOnQoYSxyKX0pfSksbz9uLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gbyh0LmtleSxlLmtleSl9KTpufShvKHQubWFwLGUsMCksMCl9LG4ua2V5PWZ1bmN0aW9uKHQpe3JldHVybiBhLnB1c2godCksbn0sbi5zb3J0S2V5cz1mdW5jdGlvbih0KXtyZXR1cm4gaVthLmxlbmd0aC0xXT10LG59LG4uc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gZT10LG59LG4ucm9sbHVwPWZ1bmN0aW9uKHQpe3JldHVybiByPXQsbn0sbn0sdC5zZXQ9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEM7aWYodClmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjsrK3IpZS5hZGQodFtyXSk7cmV0dXJuIGV9LHgoQyx7aGFzOk0sYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9bayh0Kz0iIildPSEwLHR9LHJlbW92ZTpBLHZhbHVlczpTLHNpemU6RSxlbXB0eTpMLGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuXyl0LmNhbGwodGhpcyxUKGUpKX19KSx0LmJlaGF2aW9yPXt9LHQucmViaW5kPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49MSxhPWFyZ3VtZW50cy5sZW5ndGg7KytuPGE7KXRbcj1hcmd1bWVudHNbbl1dPU8odCxlLGVbcl0pO3JldHVybiB0fTt2YXIgST1bIndlYmtpdCIsIm1zIiwibW96IiwiTW96IiwibyIsIk8iXTtmdW5jdGlvbiBEKCl7fWZ1bmN0aW9uIFIoKXt9ZnVuY3Rpb24gRih0KXt2YXIgZT1bXSxyPW5ldyBiO2Z1bmN0aW9uIG4oKXtmb3IodmFyIHIsbj1lLGE9LTEsaT1uLmxlbmd0aDsrK2E8aTspKHI9blthXS5vbikmJnIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0fXJldHVybiBuLm9uPWZ1bmN0aW9uKG4sYSl7dmFyIGksbz1yLmdldChuKTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP28mJm8ub246KG8mJihvLm9uPW51bGwsZT1lLnNsaWNlKDAsaT1lLmluZGV4T2YobykpLmNvbmNhdChlLnNsaWNlKGkrMSkpLHIucmVtb3ZlKG4pKSxhJiZlLnB1c2goci5zZXQobix7b246YX0pKSx0KX0sbn1mdW5jdGlvbiBCKCl7dC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIE4oKXtmb3IodmFyIGUscj10LmV2ZW50O2U9ci5zb3VyY2VFdmVudDspcj1lO3JldHVybiByfWZ1bmN0aW9uIGooZSl7Zm9yKHZhciByPW5ldyBSLG49MCxhPWFyZ3VtZW50cy5sZW5ndGg7KytuPGE7KXJbYXJndW1lbnRzW25dXT1GKHIpO3JldHVybiByLm9mPWZ1bmN0aW9uKG4sYSl7cmV0dXJuIGZ1bmN0aW9uKGkpe3RyeXt2YXIgbz1pLnNvdXJjZUV2ZW50PXQuZXZlbnQ7aS50YXJnZXQ9ZSx0LmV2ZW50PWkscltpLnR5cGVdLmFwcGx5KG4sYSl9ZmluYWxseXt0LmV2ZW50PW99fX0scn10LmRpc3BhdGNoPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBSLGU9LTEscj1hcmd1bWVudHMubGVuZ3RoOysrZTxyOyl0W2FyZ3VtZW50c1tlXV09Rih0KTtyZXR1cm4gdH0sUi5wcm90b3R5cGUub249ZnVuY3Rpb24odCxlKXt2YXIgcj10LmluZGV4T2YoIi4iKSxuPSIiO2lmKHI+PTAmJihuPXQuc2xpY2UocisxKSx0PXQuc2xpY2UoMCxyKSksdClyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3RoaXNbdF0ub24obik6dGhpc1t0XS5vbihuLGUpO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoKXtpZihudWxsPT1lKWZvcih0IGluIHRoaXMpdGhpcy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpc1t0XS5vbihuLG51bGwpO3JldHVybiB0aGlzfX0sdC5ldmVudD1udWxsLHQucmVxdW90ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKFYsIlxcJCYiKX07dmFyIFY9L1tcXFxeXCRcKlwrXD9cfFxbXF1cKFwpXC5ce1x9XS9nLFU9e30uX19wcm90b19fP2Z1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX06ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl19O2Z1bmN0aW9uIHEodCl7cmV0dXJuIFUodCxXKSx0fXZhciBIPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUucXVlcnlTZWxlY3Rvcih0KX0sRz1mdW5jdGlvbih0LGUpe3JldHVybiBlLnF1ZXJ5U2VsZWN0b3JBbGwodCl9LFk9ZnVuY3Rpb24odCxlKXt2YXIgcj10Lm1hdGNoZXN8fHRbeih0LCJtYXRjaGVzU2VsZWN0b3IiKV07cmV0dXJuKFk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5jYWxsKHQsZSl9KSh0LGUpfTsiZnVuY3Rpb24iPT10eXBlb2YgU2l6emxlJiYoSD1mdW5jdGlvbih0LGUpe3JldHVybiBTaXp6bGUodCxlKVswXXx8bnVsbH0sRz1TaXp6bGUsWT1TaXp6bGUubWF0Y2hlc1NlbGVjdG9yKSx0LnNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0LnNlbGVjdChhLmRvY3VtZW50RWxlbWVudCl9O3ZhciBXPXQuc2VsZWN0aW9uLnByb3RvdHlwZT1bXTtmdW5jdGlvbiBYKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gSCh0LHRoaXMpfX1mdW5jdGlvbiBaKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0LHRoaXMpfX1XLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpPVtdO3Q9WCh0KTtmb3IodmFyIG89LTEscz10aGlzLmxlbmd0aDsrK288czspe2kucHVzaChlPVtdKSxlLnBhcmVudE5vZGU9KG49dGhpc1tvXSkucGFyZW50Tm9kZTtmb3IodmFyIGw9LTEsYz1uLmxlbmd0aDsrK2w8YzspKGE9bltsXSk/KGUucHVzaChyPXQuY2FsbChhLGEuX19kYXRhX18sbCxvKSksciYmIl9fZGF0YV9fImluIGEmJihyLl9fZGF0YV9fPWEuX19kYXRhX18pKTplLnB1c2gobnVsbCl9cmV0dXJuIHEoaSl9LFcuc2VsZWN0QWxsPWZ1bmN0aW9uKHQpe3ZhciBlLHIsYT1bXTt0PVoodCk7Zm9yKHZhciBpPS0xLG89dGhpcy5sZW5ndGg7KytpPG87KWZvcih2YXIgcz10aGlzW2ldLGw9LTEsYz1zLmxlbmd0aDsrK2w8YzspKHI9c1tsXSkmJihhLnB1c2goZT1uKHQuY2FsbChyLHIuX19kYXRhX18sbCxpKSkpLGUucGFyZW50Tm9kZT1yKTtyZXR1cm4gcShhKX07dmFyIEo9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLEs9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOkoseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBRKGUscil7cmV0dXJuIGU9dC5ucy5xdWFsaWZ5KGUpLG51bGw9PXI/ZS5sb2NhbD9mdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKX06ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKX06ImZ1bmN0aW9uIj09dHlwZW9mIHI/ZS5sb2NhbD9mdW5jdGlvbigpe3ZhciB0PXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PXQ/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHQpfTpmdW5jdGlvbigpe3ZhciB0PXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PXQ/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSk6dGhpcy5zZXRBdHRyaWJ1dGUoZSx0KX06ZS5sb2NhbD9mdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHIpfTpmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKGUscil9fWZ1bmN0aW9uICQodCl7cmV0dXJuIHQudHJpbSgpLnJlcGxhY2UoL1xzKy9nLCIgIil9ZnVuY3Rpb24gdHQoZSl7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58XFxzKykiK3QucmVxdW90ZShlKSsiKD86XFxzK3wkKSIsImciKX1mdW5jdGlvbiBldCh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIHJ0KHQsZSl7dmFyIHI9KHQ9ZXQodCkubWFwKG50KSkubGVuZ3RoO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2Z1bmN0aW9uKCl7Zm9yKHZhciBuPS0xLGE9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7KytuPHI7KXRbbl0odGhpcyxhKX06ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPHI7KXRbbl0odGhpcyxlKX19ZnVuY3Rpb24gbnQodCl7dmFyIGU9dHQodCk7cmV0dXJuIGZ1bmN0aW9uKHIsbil7aWYoYT1yLmNsYXNzTGlzdClyZXR1cm4gbj9hLmFkZCh0KTphLnJlbW92ZSh0KTt2YXIgYT1yLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiI7bj8oZS5sYXN0SW5kZXg9MCxlLnRlc3QoYSl8fHIuc2V0QXR0cmlidXRlKCJjbGFzcyIsJChhKyIgIit0KSkpOnIuc2V0QXR0cmlidXRlKCJjbGFzcyIsJChhLnJlcGxhY2UoZSwiICIpKSl9fWZ1bmN0aW9uIGF0KHQsZSxyKXtyZXR1cm4gbnVsbD09ZT9mdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2Z1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxuLHIpfTpmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLHIpfX1mdW5jdGlvbiBpdCh0LGUpe3JldHVybiBudWxsPT1lP2Z1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2Z1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09cj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPXJ9OmZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBvdChlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9lOihlPXQubnMucXVhbGlmeShlKSkubG9jYWw/ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLnNwYWNlLGUubG9jYWwpfTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3duZXJEb2N1bWVudCxyPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiByPT09SiYmdC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09Sj90LmNyZWF0ZUVsZW1lbnQoZSk6dC5jcmVhdGVFbGVtZW50TlMocixlKX19ZnVuY3Rpb24gc3QoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBsdCh0KXtyZXR1cm57X19kYXRhX186dH19ZnVuY3Rpb24gY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyx0KX19ZnVuY3Rpb24gdXQodCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBhLGk9dFtyXSxvPTAscz1pLmxlbmd0aDtvPHM7bysrKShhPWlbb10pJiZlKGEsbyxyKTtyZXR1cm4gdH1mdW5jdGlvbiBodCh0KXtyZXR1cm4gVSh0LGZ0KSx0fXQubnM9e3ByZWZpeDpLLHF1YWxpZnk6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCI6Iikscj10O3JldHVybiBlPj0wJiYieG1sbnMiIT09KHI9dC5zbGljZSgwLGUpKSYmKHQ9dC5zbGljZShlKzEpKSxLLmhhc093blByb3BlcnR5KHIpP3tzcGFjZTpLW3JdLGxvY2FsOnR9OnR9fSxXLmF0dHI9ZnVuY3Rpb24oZSxyKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIG49dGhpcy5ub2RlKCk7cmV0dXJuKGU9dC5ucy5xdWFsaWZ5KGUpKS5sb2NhbD9uLmdldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk6bi5nZXRBdHRyaWJ1dGUoZSl9Zm9yKHIgaW4gZSl0aGlzLmVhY2goUShyLGVbcl0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKFEoZSxyKSl9LFcuY2xhc3NlZD1mdW5jdGlvbih0LGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgcj10aGlzLm5vZGUoKSxuPSh0PWV0KHQpKS5sZW5ndGgsYT0tMTtpZihlPXIuY2xhc3NMaXN0KXtmb3IoOysrYTxuOylpZighZS5jb250YWlucyh0W2FdKSlyZXR1cm4hMX1lbHNlIGZvcihlPXIuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOysrYTxuOylpZighdHQodFthXSkudGVzdChlKSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IoZSBpbiB0KXRoaXMuZWFjaChydChlLHRbZV0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKHJ0KHQsZSkpfSxXLnN0eWxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoO2lmKG48Myl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXtmb3IociBpbiBuPDImJihlPSIiKSx0KXRoaXMuZWFjaChhdChyLHRbcl0sZSkpO3JldHVybiB0aGlzfWlmKG48Mil7dmFyIGE9dGhpcy5ub2RlKCk7cmV0dXJuIG8oYSkuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpLmdldFByb3BlcnR5VmFsdWUodCl9cj0iIn1yZXR1cm4gdGhpcy5lYWNoKGF0KHQsZSxyKSl9LFcucHJvcGVydHk9ZnVuY3Rpb24odCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdGhpcy5ub2RlKClbdF07Zm9yKGUgaW4gdCl0aGlzLmVhY2goaXQoZSx0W2VdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChpdCh0LGUpKX0sVy50ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfTpudWxsPT10P2Z1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD0iIn06ZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9KTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0sVy5odG1sPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX06bnVsbD09dD9mdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPSIifTpmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9KTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LFcuYXBwZW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0PW90KHQpLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQodC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9LFcuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9b3QodCksZT1YKGUpLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfSxXLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goc3QpfSxXLmRhdGE9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9LTEsaT10aGlzLmxlbmd0aDtpZighYXJndW1lbnRzLmxlbmd0aCl7Zm9yKHQ9bmV3IEFycmF5KGk9KHI9dGhpc1swXSkubGVuZ3RoKTsrK2E8aTspKG49clthXSkmJih0W2FdPW4uX19kYXRhX18pO3JldHVybiB0fWZ1bmN0aW9uIG8odCxyKXt2YXIgbixhLGksbz10Lmxlbmd0aCx1PXIubGVuZ3RoLGg9TWF0aC5taW4obyx1KSxmPW5ldyBBcnJheSh1KSxwPW5ldyBBcnJheSh1KSxkPW5ldyBBcnJheShvKTtpZihlKXt2YXIgZyx2PW5ldyBiLG09bmV3IEFycmF5KG8pO2ZvcihuPS0xOysrbjxvOykoYT10W25dKSYmKHYuaGFzKGc9ZS5jYWxsKGEsYS5fX2RhdGFfXyxuKSk/ZFtuXT1hOnYuc2V0KGcsYSksbVtuXT1nKTtmb3Iobj0tMTsrK248dTspKGE9di5nZXQoZz1lLmNhbGwocixpPXJbbl0sbikpKT8hMCE9PWEmJihmW25dPWEsYS5fX2RhdGFfXz1pKTpwW25dPWx0KGkpLHYuc2V0KGcsITApO2ZvcihuPS0xOysrbjxvOyluIGluIG0mJiEwIT09di5nZXQobVtuXSkmJihkW25dPXRbbl0pfWVsc2V7Zm9yKG49LTE7KytuPGg7KWE9dFtuXSxpPXJbbl0sYT8oYS5fX2RhdGFfXz1pLGZbbl09YSk6cFtuXT1sdChpKTtmb3IoO248dTsrK24pcFtuXT1sdChyW25dKTtmb3IoO248bzsrK24pZFtuXT10W25dfXAudXBkYXRlPWYscC5wYXJlbnROb2RlPWYucGFyZW50Tm9kZT1kLnBhcmVudE5vZGU9dC5wYXJlbnROb2RlLHMucHVzaChwKSxsLnB1c2goZiksYy5wdXNoKGQpfXZhciBzPWh0KFtdKSxsPXEoW10pLGM9cShbXSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpZm9yKDsrK2E8aTspbyhyPXRoaXNbYV0sdC5jYWxsKHIsci5wYXJlbnROb2RlLl9fZGF0YV9fLGEpKTtlbHNlIGZvcig7KythPGk7KW8ocj10aGlzW2FdLHQpO3JldHVybiBsLmVudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHN9LGwuZXhpdD1mdW5jdGlvbigpe3JldHVybiBjfSxsfSxXLmRhdHVtPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIpfSxXLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYT1bXTsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Y3QodCkpO2Zvcih2YXIgaT0wLG89dGhpcy5sZW5ndGg7aTxvO2krKyl7YS5wdXNoKGU9W10pLGUucGFyZW50Tm9kZT0ocj10aGlzW2ldKS5wYXJlbnROb2RlO2Zvcih2YXIgcz0wLGw9ci5sZW5ndGg7czxsO3MrKykobj1yW3NdKSYmdC5jYWxsKG4sbi5fX2RhdGFfXyxzLGkpJiZlLnB1c2gobil9cmV0dXJuIHEoYSl9LFcub3JkZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTEsZT10aGlzLmxlbmd0aDsrK3Q8ZTspZm9yKHZhciByLG49dGhpc1t0XSxhPW4ubGVuZ3RoLTEsaT1uW2FdOy0tYT49MDspKHI9blthXSkmJihpJiZpIT09ci5uZXh0U2libGluZyYmaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLGkpLGk9cik7cmV0dXJuIHRoaXN9LFcuc29ydD1mdW5jdGlvbih0KXt0PWZ1bmN0aW9uKHQpe2FyZ3VtZW50cy5sZW5ndGh8fCh0PWYpO3JldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiBlJiZyP3QoZS5fX2RhdGFfXyxyLl9fZGF0YV9fKTohZS0hcn19LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtmb3IodmFyIGU9LTEscj10aGlzLmxlbmd0aDsrK2U8cjspdGhpc1tlXS5zb3J0KHQpO3JldHVybiB0aGlzLm9yZGVyKCl9LFcuZWFjaD1mdW5jdGlvbih0KXtyZXR1cm4gdXQodGhpcyxmdW5jdGlvbihlLHIsbil7dC5jYWxsKGUsZS5fX2RhdGFfXyxyLG4pfSl9LFcuY2FsbD1mdW5jdGlvbih0KXt2YXIgZT1uKGFyZ3VtZW50cyk7cmV0dXJuIHQuYXBwbHkoZVswXT10aGlzLGUpLHRoaXN9LFcuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ub2RlKCl9LFcubm9kZT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9dGhpcy5sZW5ndGg7dDxlO3QrKylmb3IodmFyIHI9dGhpc1t0XSxuPTAsYT1yLmxlbmd0aDtuPGE7bisrKXt2YXIgaT1yW25dO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9LFcuc2l6ZT1mdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIHV0KHRoaXMsZnVuY3Rpb24oKXsrK3R9KSx0fTt2YXIgZnQ9W107ZnVuY3Rpb24gcHQoZSxyLGEpe3ZhciBpPSJfX29uIitlLG89ZS5pbmRleE9mKCIuIikscz1ndDtvPjAmJihlPWUuc2xpY2UoMCxvKSk7dmFyIGw9ZHQuZ2V0KGUpO2Z1bmN0aW9uIGMoKXt2YXIgdD10aGlzW2ldO3QmJih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LHQuJCksZGVsZXRlIHRoaXNbaV0pfXJldHVybiBsJiYoZT1sLHM9dnQpLG8/cj9mdW5jdGlvbigpe3ZhciB0PXMocixuKGFyZ3VtZW50cykpO2MuY2FsbCh0aGlzKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZSx0aGlzW2ldPXQsdC4kPWEpLHQuXz1yfTpjOnI/RDpmdW5jdGlvbigpe3ZhciByLG49bmV3IFJlZ0V4cCgiXl9fb24oW14uXSspIit0LnJlcXVvdGUoZSkrIiQiKTtmb3IodmFyIGEgaW4gdGhpcylpZihyPWEubWF0Y2gobikpe3ZhciBpPXRoaXNbYV07dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHJbMV0saSxpLiQpLGRlbGV0ZSB0aGlzW2FdfX19dC5zZWxlY3Rpb24uZW50ZXI9aHQsdC5zZWxlY3Rpb24uZW50ZXIucHJvdG90eXBlPWZ0LGZ0LmFwcGVuZD1XLmFwcGVuZCxmdC5lbXB0eT1XLmVtcHR5LGZ0Lm5vZGU9Vy5ub2RlLGZ0LmNhbGw9Vy5jYWxsLGZ0LnNpemU9Vy5zaXplLGZ0LnNlbGVjdD1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGEsaSxvPVtdLHM9LTEsbD10aGlzLmxlbmd0aDsrK3M8bDspe249KGE9dGhpc1tzXSkudXBkYXRlLG8ucHVzaChlPVtdKSxlLnBhcmVudE5vZGU9YS5wYXJlbnROb2RlO2Zvcih2YXIgYz0tMSx1PWEubGVuZ3RoOysrYzx1OykoaT1hW2NdKT8oZS5wdXNoKG5bY109cj10LmNhbGwoYS5wYXJlbnROb2RlLGkuX19kYXRhX18sYyxzKSksci5fX2RhdGFfXz1pLl9fZGF0YV9fKTplLnB1c2gobnVsbCl9cmV0dXJuIHEobyl9LGZ0Lmluc2VydD1mdW5jdGlvbih0LGUpe3ZhciByLG4sYTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYocj10aGlzLGU9ZnVuY3Rpb24odCxlLGkpe3ZhciBvLHM9cltpXS51cGRhdGUsbD1zLmxlbmd0aDtmb3IoaSE9YSYmKGE9aSxuPTApLGU+PW4mJihuPWUrMSk7IShvPXNbbl0pJiYrK248bDspO3JldHVybiBvfSksVy5pbnNlcnQuY2FsbCh0aGlzLHQsZSl9LHQuc2VsZWN0PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8oZT1bSCh0LGEpXSkucGFyZW50Tm9kZT1hLmRvY3VtZW50RWxlbWVudDooZT1bdF0pLnBhcmVudE5vZGU9aSh0KSxxKFtlXSl9LHQuc2VsZWN0QWxsPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8oZT1uKEcodCxhKSkpLnBhcmVudE5vZGU9YS5kb2N1bWVudEVsZW1lbnQ6KGU9bih0KSkucGFyZW50Tm9kZT1udWxsLHEoW2VdKX0sVy5vbj1mdW5jdGlvbih0LGUscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aDtpZihuPDMpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7Zm9yKHIgaW4gbjwyJiYoZT0hMSksdCl0aGlzLmVhY2gocHQocix0W3JdLGUpKTtyZXR1cm4gdGhpc31pZihuPDIpcmV0dXJuKG49dGhpcy5ub2RlKClbIl9fb24iK3RdKSYmbi5fO3I9ITF9cmV0dXJuIHRoaXMuZWFjaChwdCh0LGUscikpfTt2YXIgZHQ9dC5tYXAoe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSk7ZnVuY3Rpb24gZ3QoZSxyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGE9dC5ldmVudDt0LmV2ZW50PW4sclswXT10aGlzLl9fZGF0YV9fO3RyeXtlLmFwcGx5KHRoaXMscil9ZmluYWxseXt0LmV2ZW50PWF9fX1mdW5jdGlvbiB2dCh0LGUpe3ZhciByPWd0KHQsZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVsYXRlZFRhcmdldDtlJiYoZT09PXRoaXN8fDgmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHIuY2FsbCh0aGlzLHQpfX1hJiZkdC5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJvbiIrdCBpbiBhJiZkdC5yZW1vdmUodCl9KTt2YXIgbXQseXQ9MDtmdW5jdGlvbiB4dChlKXt2YXIgcj0iLmRyYWdzdXBwcmVzcy0iKyArK3l0LG49ImNsaWNrIityLGE9dC5zZWxlY3QobyhlKSkub24oInRvdWNobW92ZSIrcixCKS5vbigiZHJhZ3N0YXJ0IityLEIpLm9uKCJzZWxlY3RzdGFydCIrcixCKTtpZihudWxsPT1tdCYmKG10PSEoIm9uc2VsZWN0c3RhcnQiaW4gZSkmJnooZS5zdHlsZSwidXNlclNlbGVjdCIpKSxtdCl7dmFyIHM9aShlKS5zdHlsZSxsPXNbbXRdO3NbbXRdPSJub25lIn1yZXR1cm4gZnVuY3Rpb24odCl7aWYoYS5vbihyLG51bGwpLG10JiYoc1ttdF09bCksdCl7dmFyIGU9ZnVuY3Rpb24oKXthLm9uKG4sbnVsbCl9O2Eub24obixmdW5jdGlvbigpe0IoKSxlKCl9LCEwKSxzZXRUaW1lb3V0KGUsMCl9fX10Lm1vdXNlPWZ1bmN0aW9uKHQpe3JldHVybiBfdCh0LE4oKSl9O3ZhciBidD10aGlzLm5hdmlnYXRvciYmL1dlYktpdC8udGVzdCh0aGlzLm5hdmlnYXRvci51c2VyQWdlbnQpPy0xOjA7ZnVuY3Rpb24gX3QoZSxyKXtyLmNoYW5nZWRUb3VjaGVzJiYocj1yLmNoYW5nZWRUb3VjaGVzWzBdKTt2YXIgbj1lLm93bmVyU1ZHRWxlbWVudHx8ZTtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgYT1uLmNyZWF0ZVNWR1BvaW50KCk7aWYoYnQ8MCl7dmFyIGk9byhlKTtpZihpLnNjcm9sbFh8fGkuc2Nyb2xsWSl7dmFyIHM9KG49dC5zZWxlY3QoImJvZHkiKS5hcHBlbmQoInN2ZyIpLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxwYWRkaW5nOjAsYm9yZGVyOiJub25lIn0sImltcG9ydGFudCIpKVswXVswXS5nZXRTY3JlZW5DVE0oKTtidD0hKHMuZnx8cy5lKSxuLnJlbW92ZSgpfX1yZXR1cm4gYnQ/KGEueD1yLnBhZ2VYLGEueT1yLnBhZ2VZKTooYS54PXIuY2xpZW50WCxhLnk9ci5jbGllbnRZKSxbKGE9YS5tYXRyaXhUcmFuc2Zvcm0oZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGEueV19dmFyIGw9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bci5jbGllbnRYLWwubGVmdC1lLmNsaWVudExlZnQsci5jbGllbnRZLWwudG9wLWUuY2xpZW50VG9wXX1mdW5jdGlvbiB3dCgpe3JldHVybiB0LmV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXJ9dC50b3VjaD1mdW5jdGlvbih0LGUscil7aWYoYXJndW1lbnRzLmxlbmd0aDwzJiYocj1lLGU9TigpLmNoYW5nZWRUb3VjaGVzKSxlKWZvcih2YXIgbixhPTAsaT1lLmxlbmd0aDthPGk7KythKWlmKChuPWVbYV0pLmlkZW50aWZpZXI9PT1yKXJldHVybiBfdCh0LG4pfSx0LmJlaGF2aW9yLmRyYWc9ZnVuY3Rpb24oKXt2YXIgZT1qKGksImRyYWciLCJkcmFnc3RhcnQiLCJkcmFnZW5kIikscj1udWxsLG49cyhELHQubW91c2UsbywibW91c2Vtb3ZlIiwibW91c2V1cCIpLGE9cyh3dCx0LnRvdWNoLFAsInRvdWNobW92ZSIsInRvdWNoZW5kIik7ZnVuY3Rpb24gaSgpe3RoaXMub24oIm1vdXNlZG93bi5kcmFnIixuKS5vbigidG91Y2hzdGFydC5kcmFnIixhKX1mdW5jdGlvbiBzKG4sYSxpLG8scyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGwsYz10LmV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudHx8dC5ldmVudC50YXJnZXQsdT10aGlzLnBhcmVudE5vZGUsaD1lLm9mKHRoaXMsYXJndW1lbnRzKSxmPTAscD1uKCksZD0iLmRyYWciKyhudWxsPT1wPyIiOiItIitwKSxnPXQuc2VsZWN0KGkoYykpLm9uKG8rZCxmdW5jdGlvbigpe3ZhciB0LGUscj1hKHUscCk7aWYoIXIpcmV0dXJuO3Q9clswXS1tWzBdLGU9clsxXS1tWzFdLGZ8PXR8ZSxtPXIsaCh7dHlwZToiZHJhZyIseDpyWzBdK2xbMF0seTpyWzFdK2xbMV0sZHg6dCxkeTplfSl9KS5vbihzK2QsZnVuY3Rpb24oKXtpZighYSh1LHApKXJldHVybjtnLm9uKG8rZCxudWxsKS5vbihzK2QsbnVsbCksdihmKSxoKHt0eXBlOiJkcmFnZW5kIn0pfSksdj14dChjKSxtPWEodSxwKTtsPXI/WyhsPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpKS54LW1bMF0sbC55LW1bMV1dOlswLDBdLGgoe3R5cGU6ImRyYWdzdGFydCJ9KX19cmV0dXJuIGkub3JpZ2luPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaSk6cn0sdC5yZWJpbmQoaSxlLCJvbiIpfSx0LnRvdWNoZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYoZT1OKCkudG91Y2hlcyksZT9uKGUpLm1hcChmdW5jdGlvbihlKXt2YXIgcj1fdCh0LGUpO3JldHVybiByLmlkZW50aWZpZXI9ZS5pZGVudGlmaWVyLHJ9KTpbXX07dmFyIGt0PTFlLTYsVHQ9a3Qqa3QsTXQ9TWF0aC5QSSxBdD0yKk10LFN0PUF0LWt0LEV0PU10LzIsTHQ9TXQvMTgwLEN0PTE4MC9NdDtmdW5jdGlvbiBQdCh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9ZnVuY3Rpb24gT3QodCxlLHIpe3JldHVybihlWzBdLXRbMF0pKihyWzFdLXRbMV0pLShlWzFdLXRbMV0pKihyWzBdLXRbMF0pfWZ1bmN0aW9uIHp0KHQpe3JldHVybiB0PjE/MDp0PC0xP010Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiBJdCh0KXtyZXR1cm4gdD4xP0V0OnQ8LTE/LUV0Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBEdCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn1mdW5jdGlvbiBSdCh0KXtyZXR1cm4odD1NYXRoLnNpbih0LzIpKSp0fXZhciBGdD1NYXRoLlNRUlQyO3QuaW50ZXJwb2xhdGVab29tPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPXRbMF0saT10WzFdLG89dFsyXSxzPWVbMF0sbD1lWzFdLGM9ZVsyXSx1PXMtYSxoPWwtaSxmPXUqdStoKmg7aWYoZjxUdCluPU1hdGgubG9nKGMvbykvRnQscj1mdW5jdGlvbih0KXtyZXR1cm5bYSt0KnUsaSt0KmgsbypNYXRoLmV4cChGdCp0Km4pXX07ZWxzZXt2YXIgcD1NYXRoLnNxcnQoZiksZD0oYypjLW8qbys0KmYpLygyKm8qMipwKSxnPShjKmMtbypvLTQqZikvKDIqYyoyKnApLHY9TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSxtPU1hdGgubG9nKE1hdGguc3FydChnKmcrMSktZyk7bj0obS12KS9GdCxyPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dCpuLHM9RHQodiksbD1vLygyKnApKihzKihlPUZ0KnIrdiwoKGU9TWF0aC5leHAoMiplKSktMSkvKGUrMSkpLWZ1bmN0aW9uKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfSh2KSk7cmV0dXJuW2ErbCp1LGkrbCpoLG8qcy9EdChGdCpyK3YpXX19cmV0dXJuIHIuZHVyYXRpb249MWUzKm4scn0sdC5iZWhhdmlvci56b29tPWZ1bmN0aW9uKCl7dmFyIGUscixuLGkscyxsLGMsdSxoLGY9e3g6MCx5OjAsazoxfSxwPVs5NjAsNTAwXSxkPWp0LGc9MjUwLHY9MCxtPSJtb3VzZWRvd24uem9vbSIseT0ibW91c2Vtb3ZlLnpvb20iLHg9Im1vdXNldXAuem9vbSIsYj0idG91Y2hzdGFydC56b29tIixfPWoodywiem9vbXN0YXJ0Iiwiem9vbSIsInpvb21lbmQiKTtmdW5jdGlvbiB3KHQpe3Qub24obSxQKS5vbihOdCsiLnpvb20iLHopLm9uKCJkYmxjbGljay56b29tIixJKS5vbihiLE8pfWZ1bmN0aW9uIGsodCl7cmV0dXJuWyh0WzBdLWYueCkvZi5rLCh0WzFdLWYueSkvZi5rXX1mdW5jdGlvbiBUKHQpe2Yuaz1NYXRoLm1heChkWzBdLE1hdGgubWluKGRbMV0sdCkpfWZ1bmN0aW9uIE0odCxlKXtlPWZ1bmN0aW9uKHQpe3JldHVyblt0WzBdKmYuaytmLngsdFsxXSpmLmsrZi55XX0oZSksZi54Kz10WzBdLWVbMF0sZi55Kz10WzFdLWVbMV19ZnVuY3Rpb24gQShlLG4sYSxpKXtlLl9fY2hhcnRfXz17eDpmLngseTpmLnksazpmLmt9LFQoTWF0aC5wb3coMixpKSksTShyPW4sYSksZT10LnNlbGVjdChlKSxnPjAmJihlPWUudHJhbnNpdGlvbigpLmR1cmF0aW9uKGcpKSxlLmNhbGwody5ldmVudCl9ZnVuY3Rpb24gUygpe2MmJmMuZG9tYWluKGwucmFuZ2UoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuKHQtZi54KS9mLmt9KS5tYXAobC5pbnZlcnQpKSxoJiZoLmRvbWFpbih1LnJhbmdlKCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybih0LWYueSkvZi5rfSkubWFwKHUuaW52ZXJ0KSl9ZnVuY3Rpb24gRSh0KXt2Kyt8fHQoe3R5cGU6Inpvb21zdGFydCJ9KX1mdW5jdGlvbiBMKHQpe1MoKSx0KHt0eXBlOiJ6b29tIixzY2FsZTpmLmssdHJhbnNsYXRlOltmLngsZi55XX0pfWZ1bmN0aW9uIEModCl7LS12fHwodCh7dHlwZToiem9vbWVuZCJ9KSxyPW51bGwpfWZ1bmN0aW9uIFAoKXt2YXIgZT10aGlzLHI9Xy5vZihlLGFyZ3VtZW50cyksbj0wLGE9dC5zZWxlY3QobyhlKSkub24oeSxmdW5jdGlvbigpe249MSxNKHQubW91c2UoZSksaSksTChyKX0pLm9uKHgsZnVuY3Rpb24oKXthLm9uKHksbnVsbCkub24oeCxudWxsKSxzKG4pLEMocil9KSxpPWsodC5tb3VzZShlKSkscz14dChlKTtwcy5jYWxsKGUpLEUocil9ZnVuY3Rpb24gTygpe3ZhciBlLHI9dGhpcyxuPV8ub2Yocixhcmd1bWVudHMpLGE9e30saT0wLG89Ii56b29tLSIrdC5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyLGw9InRvdWNobW92ZSIrbyxjPSJ0b3VjaGVuZCIrbyx1PVtdLGg9dC5zZWxlY3QocikscD14dChyKTtmdW5jdGlvbiBkKCl7dmFyIG49dC50b3VjaGVzKHIpO3JldHVybiBlPWYuayxuLmZvckVhY2goZnVuY3Rpb24odCl7dC5pZGVudGlmaWVyIGluIGEmJihhW3QuaWRlbnRpZmllcl09ayh0KSl9KSxufWZ1bmN0aW9uIGcoKXt2YXIgZT10LmV2ZW50LnRhcmdldDt0LnNlbGVjdChlKS5vbihsLHYpLm9uKGMseSksdS5wdXNoKGUpO2Zvcih2YXIgbj10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLG89MCxoPW4ubGVuZ3RoO288aDsrK28pYVtuW29dLmlkZW50aWZpZXJdPW51bGw7dmFyIHA9ZCgpLGc9RGF0ZS5ub3coKTtpZigxPT09cC5sZW5ndGgpe2lmKGctczw1MDApe3ZhciBtPXBbMF07QShyLG0sYVttLmlkZW50aWZpZXJdLE1hdGguZmxvb3IoTWF0aC5sb2coZi5rKS9NYXRoLkxOMikrMSksQigpfXM9Z31lbHNlIGlmKHAubGVuZ3RoPjEpe209cFswXTt2YXIgeD1wWzFdLGI9bVswXS14WzBdLF89bVsxXS14WzFdO2k9YipiK18qX319ZnVuY3Rpb24gdigpe3ZhciBvLGwsYyx1LGg9dC50b3VjaGVzKHIpO3BzLmNhbGwocik7Zm9yKHZhciBmPTAscD1oLmxlbmd0aDtmPHA7KytmLHU9bnVsbClpZihjPWhbZl0sdT1hW2MuaWRlbnRpZmllcl0pe2lmKGwpYnJlYWs7bz1jLGw9dX1pZih1KXt2YXIgZD0oZD1jWzBdLW9bMF0pKmQrKGQ9Y1sxXS1vWzFdKSpkLGc9aSYmTWF0aC5zcXJ0KGQvaSk7bz1bKG9bMF0rY1swXSkvMiwob1sxXStjWzFdKS8yXSxsPVsobFswXSt1WzBdKS8yLChsWzFdK3VbMV0pLzJdLFQoZyplKX1zPW51bGwsTShvLGwpLEwobil9ZnVuY3Rpb24geSgpe2lmKHQuZXZlbnQudG91Y2hlcy5sZW5ndGgpe2Zvcih2YXIgZT10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLHI9MCxpPWUubGVuZ3RoO3I8aTsrK3IpZGVsZXRlIGFbZVtyXS5pZGVudGlmaWVyXTtmb3IodmFyIHMgaW4gYSlyZXR1cm4gdm9pZCBkKCl9dC5zZWxlY3RBbGwodSkub24obyxudWxsKSxoLm9uKG0sUCkub24oYixPKSxwKCksQyhuKX1nKCksRShuKSxoLm9uKG0sbnVsbCkub24oYixnKX1mdW5jdGlvbiB6KCl7dmFyIGE9Xy5vZih0aGlzLGFyZ3VtZW50cyk7aT9jbGVhclRpbWVvdXQoaSk6KHBzLmNhbGwodGhpcyksZT1rKHI9bnx8dC5tb3VzZSh0aGlzKSksRShhKSksaT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aT1udWxsLEMoYSl9LDUwKSxCKCksVChNYXRoLnBvdygyLC4wMDIqQnQoKSkqZi5rKSxNKHIsZSksTChhKX1mdW5jdGlvbiBJKCl7dmFyIGU9dC5tb3VzZSh0aGlzKSxyPU1hdGgubG9nKGYuaykvTWF0aC5MTjI7QSh0aGlzLGUsayhlKSx0LmV2ZW50LnNoaWZ0S2V5P01hdGguY2VpbChyKS0xOk1hdGguZmxvb3IocikrMSl9cmV0dXJuIE50fHwoTnQ9Im9ud2hlZWwiaW4gYT8oQnQ9ZnVuY3Rpb24oKXtyZXR1cm4tdC5ldmVudC5kZWx0YVkqKHQuZXZlbnQuZGVsdGFNb2RlPzEyMDoxKX0sIndoZWVsIik6Im9ubW91c2V3aGVlbCJpbiBhPyhCdD1mdW5jdGlvbigpe3JldHVybiB0LmV2ZW50LndoZWVsRGVsdGF9LCJtb3VzZXdoZWVsIik6KEJ0PWZ1bmN0aW9uKCl7cmV0dXJuLXQuZXZlbnQuZGV0YWlsfSwiTW96TW91c2VQaXhlbFNjcm9sbCIpKSx3LmV2ZW50PWZ1bmN0aW9uKGUpe2UuZWFjaChmdW5jdGlvbigpe3ZhciBlPV8ub2YodGhpcyxhcmd1bWVudHMpLG49Zjt2cz90LnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgic3RhcnQuem9vbSIsZnVuY3Rpb24oKXtmPXRoaXMuX19jaGFydF9ffHx7eDowLHk6MCxrOjF9LEUoZSl9KS50d2Vlbigiem9vbTp6b29tIixmdW5jdGlvbigpe3ZhciBhPXBbMF0saT1wWzFdLG89cj9yWzBdOmEvMixzPXI/clsxXTppLzIsbD10LmludGVycG9sYXRlWm9vbShbKG8tZi54KS9mLmssKHMtZi55KS9mLmssYS9mLmtdLFsoby1uLngpL24uaywocy1uLnkpL24uayxhL24ua10pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj1sKHQpLG49YS9yWzJdO3RoaXMuX19jaGFydF9fPWY9e3g6by1yWzBdKm4seTpzLXJbMV0qbixrOm59LEwoZSl9fSkuZWFjaCgiaW50ZXJydXB0Lnpvb20iLGZ1bmN0aW9uKCl7QyhlKX0pLmVhY2goImVuZC56b29tIixmdW5jdGlvbigpe0MoZSl9KToodGhpcy5fX2NoYXJ0X189ZixFKGUpLEwoZSksQyhlKSl9KX0sdy50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9e3g6K3RbMF0seTordFsxXSxrOmYua30sUygpLHcpOltmLngsZi55XX0sdy5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj17eDpmLngseTpmLnksazpudWxsfSxUKCt0KSxTKCksdyk6Zi5rfSx3LnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPW51bGw9PXQ/anQ6Wyt0WzBdLCt0WzFdXSx3KTpkfSx3LmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10JiZbK3RbMF0sK3RbMV1dLHcpOm59LHcuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD10JiZbK3RbMF0sK3RbMV1dLHcpOnB9LHcuZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K3Qsdyk6Z30sdy54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQsbD10LmNvcHkoKSxmPXt4OjAseTowLGs6MX0sdyk6Y30sdy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQsdT10LmNvcHkoKSxmPXt4OjAseTowLGs6MX0sdyk6aH0sdC5yZWJpbmQodyxfLCJvbiIpfTt2YXIgQnQsTnQsanQ9WzAsMS8wXTtmdW5jdGlvbiBWdCgpe31mdW5jdGlvbiBVdCh0LGUscil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBVdD8odGhpcy5oPSt0LHRoaXMucz0rZSx2b2lkKHRoaXMubD0rcikpOmFyZ3VtZW50cy5sZW5ndGg8Mj90IGluc3RhbmNlb2YgVXQ/bmV3IFV0KHQuaCx0LnMsdC5sKTp1ZSgiIit0LGhlLFV0KTpuZXcgVXQodCxlLHIpfXQuY29sb3I9VnQsVnQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkrIiJ9LHQuaHNsPVV0O3ZhciBxdD1VdC5wcm90b3R5cGU9bmV3IFZ0O2Z1bmN0aW9uIEh0KHQsZSxyKXt2YXIgbixhO2Z1bmN0aW9uIGkodCl7cmV0dXJuIE1hdGgucm91bmQoMjU1KmZ1bmN0aW9uKHQpe3JldHVybiB0PjM2MD90LT0zNjA6dDwwJiYodCs9MzYwKSx0PDYwP24rKGEtbikqdC82MDp0PDE4MD9hOnQ8MjQwP24rKGEtbikqKDI0MC10KS82MDpufSh0KSl9cmV0dXJuIHQ9aXNOYU4odCk/MDoodCU9MzYwKTwwP3QrMzYwOnQsZT1pc05hTihlKT8wOmU8MD8wOmU+MT8xOmUsbj0yKihyPXI8MD8wOnI+MT8xOnIpLShhPXI8PS41P3IqKDErZSk6citlLXIqZSksbmV3IGllKGkodCsxMjApLGkodCksaSh0LTEyMCkpfWZ1bmN0aW9uIEd0KGUscixuKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEd0Pyh0aGlzLmg9K2UsdGhpcy5jPStyLHZvaWQodGhpcy5sPStuKSk6YXJndW1lbnRzLmxlbmd0aDwyP2UgaW5zdGFuY2VvZiBHdD9uZXcgR3QoZS5oLGUuYyxlLmwpOmVlKGUgaW5zdGFuY2VvZiBYdD9lLmw6KGU9ZmUoKGU9dC5yZ2IoZSkpLnIsZS5nLGUuYikpLmwsZS5hLGUuYik6bmV3IEd0KGUscixuKX1xdC5icmlnaHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP3Q6MSksbmV3IFV0KHRoaXMuaCx0aGlzLnMsdGhpcy5sL3QpfSxxdC5kYXJrZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD90OjEpLG5ldyBVdCh0aGlzLmgsdGhpcy5zLHQqdGhpcy5sKX0scXQucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIEh0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKX0sdC5oY2w9R3Q7dmFyIFl0PUd0LnByb3RvdHlwZT1uZXcgVnQ7ZnVuY3Rpb24gV3QodCxlLHIpe3JldHVybiBpc05hTih0KSYmKHQ9MCksaXNOYU4oZSkmJihlPTApLG5ldyBYdChyLE1hdGguY29zKHQqPUx0KSplLE1hdGguc2luKHQpKmUpfWZ1bmN0aW9uIFh0KHQsZSxyKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFh0Pyh0aGlzLmw9K3QsdGhpcy5hPStlLHZvaWQodGhpcy5iPStyKSk6YXJndW1lbnRzLmxlbmd0aDwyP3QgaW5zdGFuY2VvZiBYdD9uZXcgWHQodC5sLHQuYSx0LmIpOnQgaW5zdGFuY2VvZiBHdD9XdCh0LmgsdC5jLHQubCk6ZmUoKHQ9aWUodCkpLnIsdC5nLHQuYik6bmV3IFh0KHQsZSxyKX1ZdC5icmlnaHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEd0KHRoaXMuaCx0aGlzLmMsTWF0aC5taW4oMTAwLHRoaXMubCtadCooYXJndW1lbnRzLmxlbmd0aD90OjEpKSl9LFl0LmRhcmtlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEd0KHRoaXMuaCx0aGlzLmMsTWF0aC5tYXgoMCx0aGlzLmwtWnQqKGFyZ3VtZW50cy5sZW5ndGg/dDoxKSkpfSxZdC5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gV3QodGhpcy5oLHRoaXMuYyx0aGlzLmwpLnJnYigpfSx0LmxhYj1YdDt2YXIgWnQ9MTgsSnQ9Ljk1MDQ3LEt0PTEsUXQ9MS4wODg4MywkdD1YdC5wcm90b3R5cGU9bmV3IFZ0O2Z1bmN0aW9uIHRlKHQsZSxyKXt2YXIgbj0odCsxNikvMTE2LGE9bitlLzUwMCxpPW4tci8yMDA7cmV0dXJuIG5ldyBpZShhZSgzLjI0MDQ1NDIqKGE9cmUoYSkqSnQpLTEuNTM3MTM4NSoobj1yZShuKSpLdCktLjQ5ODUzMTQqKGk9cmUoaSkqUXQpKSxhZSgtLjk2OTI2NiphKzEuODc2MDEwOCpuKy4wNDE1NTYqaSksYWUoLjA1NTY0MzQqYS0uMjA0MDI1OSpuKzEuMDU3MjI1MippKSl9ZnVuY3Rpb24gZWUodCxlLHIpe3JldHVybiB0PjA/bmV3IEd0KE1hdGguYXRhbjIocixlKSpDdCxNYXRoLnNxcnQoZSplK3IqciksdCk6bmV3IEd0KE5hTixOYU4sdCl9ZnVuY3Rpb24gcmUodCl7cmV0dXJuIHQ+LjIwNjg5MzAzND90KnQqdDoodC00LzI5KS83Ljc4NzAzN31mdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD4uMDA4ODU2P01hdGgucG93KHQsMS8zKTo3Ljc4NzAzNyp0KzQvMjl9ZnVuY3Rpb24gYWUodCl7cmV0dXJuIE1hdGgucm91bmQoMjU1Kih0PD0uMDAzMDQ/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KSl9ZnVuY3Rpb24gaWUodCxlLHIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaWU/KHRoaXMucj1+fnQsdGhpcy5nPX5+ZSx2b2lkKHRoaXMuYj1+fnIpKTphcmd1bWVudHMubGVuZ3RoPDI/dCBpbnN0YW5jZW9mIGllP25ldyBpZSh0LnIsdC5nLHQuYik6dWUoIiIrdCxpZSxIdCk6bmV3IGllKHQsZSxyKX1mdW5jdGlvbiBvZSh0KXtyZXR1cm4gbmV3IGllKHQ+PjE2LHQ+PjgmMjU1LDI1NSZ0KX1mdW5jdGlvbiBzZSh0KXtyZXR1cm4gb2UodCkrIiJ9JHQuYnJpZ2h0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBYdChNYXRoLm1pbigxMDAsdGhpcy5sK1p0Kihhcmd1bWVudHMubGVuZ3RoP3Q6MSkpLHRoaXMuYSx0aGlzLmIpfSwkdC5kYXJrZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBYdChNYXRoLm1heCgwLHRoaXMubC1adCooYXJndW1lbnRzLmxlbmd0aD90OjEpKSx0aGlzLmEsdGhpcy5iKX0sJHQucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIHRlKHRoaXMubCx0aGlzLmEsdGhpcy5iKX0sdC5yZ2I9aWU7dmFyIGxlPWllLnByb3RvdHlwZT1uZXcgVnQ7ZnVuY3Rpb24gY2UodCl7cmV0dXJuIHQ8MTY/IjAiK01hdGgubWF4KDAsdCkudG9TdHJpbmcoMTYpOk1hdGgubWluKDI1NSx0KS50b1N0cmluZygxNil9ZnVuY3Rpb24gdWUodCxlLHIpe3ZhciBuLGEsaSxvPTAscz0wLGw9MDtpZihuPS8oW2Etel0rKVwoKC4qKVwpLy5leGVjKHQ9dC50b0xvd2VyQ2FzZSgpKSlzd2l0Y2goYT1uWzJdLnNwbGl0KCIsIiksblsxXSl7Y2FzZSJoc2wiOnJldHVybiByKHBhcnNlRmxvYXQoYVswXSkscGFyc2VGbG9hdChhWzFdKS8xMDAscGFyc2VGbG9hdChhWzJdKS8xMDApO2Nhc2UicmdiIjpyZXR1cm4gZShkZShhWzBdKSxkZShhWzFdKSxkZShhWzJdKSl9cmV0dXJuKGk9Z2UuZ2V0KHQpKT9lKGkucixpLmcsaS5iKToobnVsbD09dHx8IiMiIT09dC5jaGFyQXQoMCl8fGlzTmFOKGk9cGFyc2VJbnQodC5zbGljZSgxKSwxNikpfHwoND09PXQubGVuZ3RoPyhvPSgzODQwJmkpPj40LG98PW8+PjQscz0yNDAmaSxzfD1zPj40LGw9MTUmaSxsfD1sPDw0KTo3PT09dC5sZW5ndGgmJihvPSgxNjcxMTY4MCZpKT4+MTYscz0oNjUyODAmaSk+PjgsbD0yNTUmaSkpLGUobyxzLGwpKX1mdW5jdGlvbiBoZSh0LGUscil7dmFyIG4sYSxpPU1hdGgubWluKHQvPTI1NSxlLz0yNTUsci89MjU1KSxvPU1hdGgubWF4KHQsZSxyKSxzPW8taSxsPShvK2kpLzI7cmV0dXJuIHM/KGE9bDwuNT9zLyhvK2kpOnMvKDItby1pKSxuPXQ9PW8/KGUtcikvcysoZTxyPzY6MCk6ZT09bz8oci10KS9zKzI6KHQtZSkvcys0LG4qPTYwKToobj1OYU4sYT1sPjAmJmw8MT8wOm4pLG5ldyBVdChuLGEsbCl9ZnVuY3Rpb24gZmUodCxlLHIpe3ZhciBuPW5lKCguNDEyNDU2NCoodD1wZSh0KSkrLjM1NzU3NjEqKGU9cGUoZSkpKy4xODA0Mzc1KihyPXBlKHIpKSkvSnQpLGE9bmUoKC4yMTI2NzI5KnQrLjcxNTE1MjIqZSsuMDcyMTc1KnIpL0t0KTtyZXR1cm4gWHQoMTE2KmEtMTYsNTAwKihuLWEpLDIwMCooYS1uZSgoLjAxOTMzMzkqdCsuMTE5MTkyKmUrLjk1MDMwNDEqcikvUXQpKSl9ZnVuY3Rpb24gcGUodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gZGUodCl7dmFyIGU9cGFyc2VGbG9hdCh0KTtyZXR1cm4iJSI9PT10LmNoYXJBdCh0Lmxlbmd0aC0xKT9NYXRoLnJvdW5kKDIuNTUqZSk6ZX1sZS5icmlnaHRlcj1mdW5jdGlvbih0KXt0PU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/dDoxKTt2YXIgZT10aGlzLnIscj10aGlzLmcsbj10aGlzLmIsYT0zMDtyZXR1cm4gZXx8cnx8bj8oZSYmZTxhJiYoZT1hKSxyJiZyPGEmJihyPWEpLG4mJm48YSYmKG49YSksbmV3IGllKE1hdGgubWluKDI1NSxlL3QpLE1hdGgubWluKDI1NSxyL3QpLE1hdGgubWluKDI1NSxuL3QpKSk6bmV3IGllKGEsYSxhKX0sbGUuZGFya2VyPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaWUoKHQ9TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD90OjEpKSp0aGlzLnIsdCp0aGlzLmcsdCp0aGlzLmIpfSxsZS5oc2w9ZnVuY3Rpb24oKXtyZXR1cm4gaGUodGhpcy5yLHRoaXMuZyx0aGlzLmIpfSxsZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIjIitjZSh0aGlzLnIpK2NlKHRoaXMuZykrY2UodGhpcy5iKX07dmFyIGdlPXQubWFwKHthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9KTtmdW5jdGlvbiB2ZSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIG1lKHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgciYmKG49cixyPW51bGwpLHllKGUscix0LG4pfX1mdW5jdGlvbiB5ZShlLHIsYSxpKXt2YXIgbz17fSxzPXQuZGlzcGF0Y2goImJlZm9yZXNlbmQiLCJwcm9ncmVzcyIsImxvYWQiLCJlcnJvciIpLGw9e30sYz1uZXcgWE1MSHR0cFJlcXVlc3QsdT1udWxsO2Z1bmN0aW9uIGgoKXt2YXIgdCxlPWMuc3RhdHVzO2lmKCFlJiZmdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNlVHlwZTtyZXR1cm4gZSYmInRleHQiIT09ZT90LnJlc3BvbnNlOnQucmVzcG9uc2VUZXh0fShjKXx8ZT49MjAwJiZlPDMwMHx8MzA0PT09ZSl7dHJ5e3Q9YS5jYWxsKG8sYyl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgcy5lcnJvci5jYWxsKG8sdCl9cy5sb2FkLmNhbGwobyx0KX1lbHNlIHMuZXJyb3IuY2FsbChvLGMpfXJldHVybiF0aGlzLlhEb21haW5SZXF1ZXN0fHwid2l0aENyZWRlbnRpYWxzImluIGN8fCEvXihodHRwKHMpPzopP1wvXC8vLnRlc3QoZSl8fChjPW5ldyBYRG9tYWluUmVxdWVzdCksIm9ubG9hZCJpbiBjP2Mub25sb2FkPWMub25lcnJvcj1oOmMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPjMmJmgoKX0sYy5vbnByb2dyZXNzPWZ1bmN0aW9uKGUpe3ZhciByPXQuZXZlbnQ7dC5ldmVudD1lO3RyeXtzLnByb2dyZXNzLmNhbGwobyxjKX1maW5hbGx5e3QuZXZlbnQ9cn19LG8uaGVhZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9KHQrIiIpLnRvTG93ZXJDYXNlKCksYXJndW1lbnRzLmxlbmd0aDwyP2xbdF06KG51bGw9PWU/ZGVsZXRlIGxbdF06bFt0XT1lKyIiLG8pfSxvLm1pbWVUeXBlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PXQ/bnVsbDp0KyIiLG8pOnJ9LG8ucmVzcG9uc2VUeXBlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbyk6dX0sby5yZXNwb25zZT1mdW5jdGlvbih0KXtyZXR1cm4gYT10LG99LFsiZ2V0IiwicG9zdCJdLmZvckVhY2goZnVuY3Rpb24odCl7b1t0XT1mdW5jdGlvbigpe3JldHVybiBvLnNlbmQuYXBwbHkobyxbdF0uY29uY2F0KG4oYXJndW1lbnRzKSkpfX0pLG8uc2VuZD1mdW5jdGlvbih0LG4sYSl7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoYT1uLG49bnVsbCksYy5vcGVuKHQsZSwhMCksbnVsbD09cnx8ImFjY2VwdCJpbiBsfHwobC5hY2NlcHQ9cisiLCovKiIpLGMuc2V0UmVxdWVzdEhlYWRlcilmb3IodmFyIGkgaW4gbCljLnNldFJlcXVlc3RIZWFkZXIoaSxsW2ldKTtyZXR1cm4gbnVsbCE9ciYmYy5vdmVycmlkZU1pbWVUeXBlJiZjLm92ZXJyaWRlTWltZVR5cGUociksbnVsbCE9dSYmKGMucmVzcG9uc2VUeXBlPXUpLG51bGwhPWEmJm8ub24oImVycm9yIixhKS5vbigibG9hZCIsZnVuY3Rpb24odCl7YShudWxsLHQpfSkscy5iZWZvcmVzZW5kLmNhbGwobyxjKSxjLnNlbmQobnVsbD09bj9udWxsOm4pLG99LG8uYWJvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYy5hYm9ydCgpLG99LHQucmViaW5kKG8scywib24iKSxudWxsPT1pP286by5nZXQoZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lmxlbmd0aD9mdW5jdGlvbihlLHIpe3QobnVsbD09ZT9yOm51bGwpfTp0fShpKSl9Z2UuZm9yRWFjaChmdW5jdGlvbih0LGUpe2dlLnNldCh0LG9lKGUpKX0pLHQuZnVuY3Rvcj12ZSx0Lnhocj1tZShQKSx0LmRzdj1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBSZWdFeHAoJ1siJyt0KyJcbl0iKSxuPXQuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBhKHQscixuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPXIscj1udWxsKTt2YXIgYT15ZSh0LGUsbnVsbD09cj9pOm8ociksbik7cmV0dXJuIGEucm93PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2EucmVzcG9uc2UobnVsbD09KHI9dCk/aTpvKHQpKTpyfSxhfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGEucGFyc2UodC5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBhLnBhcnNlKGUucmVzcG9uc2VUZXh0LHQpfX1mdW5jdGlvbiBzKGUpe3JldHVybiBlLm1hcChsKS5qb2luKHQpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIHIudGVzdCh0KT8nIicrdC5yZXBsYWNlKC9cIi9nLCciIicpKyciJzp0fXJldHVybiBhLnBhcnNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI7cmV0dXJuIGEucGFyc2VSb3dzKHQsZnVuY3Rpb24odCxuKXtpZihyKXJldHVybiByKHQsbi0xKTt2YXIgYT1uZXcgRnVuY3Rpb24oImQiLCJyZXR1cm4geyIrdC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK2UrIl0ifSkuam9pbigiLCIpKyJ9Iik7cj1lP2Z1bmN0aW9uKHQscil7cmV0dXJuIGUoYSh0KSxyKX06YX0pfSxhLnBhcnNlUm93cz1mdW5jdGlvbih0LGUpe3ZhciByLGEsaT17fSxvPXt9LHM9W10sbD10Lmxlbmd0aCxjPTAsdT0wO2Z1bmN0aW9uIGgoKXtpZihjPj1sKXJldHVybiBvO2lmKGEpcmV0dXJuIGE9ITEsaTt2YXIgZT1jO2lmKDM0PT09dC5jaGFyQ29kZUF0KGUpKXtmb3IodmFyIHI9ZTtyKys8bDspaWYoMzQ9PT10LmNoYXJDb2RlQXQocikpe2lmKDM0IT09dC5jaGFyQ29kZUF0KHIrMSkpYnJlYWs7KytyfXJldHVybiBjPXIrMiwxMz09PShzPXQuY2hhckNvZGVBdChyKzEpKT8oYT0hMCwxMD09PXQuY2hhckNvZGVBdChyKzIpJiYrK2MpOjEwPT09cyYmKGE9ITApLHQuc2xpY2UoZSsxLHIpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2M8bDspe3ZhciBzLHU9MTtpZigxMD09PShzPXQuY2hhckNvZGVBdChjKyspKSlhPSEwO2Vsc2UgaWYoMTM9PT1zKWE9ITAsMTA9PT10LmNoYXJDb2RlQXQoYykmJigrK2MsKyt1KTtlbHNlIGlmKHMhPT1uKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKGUsYy11KX1yZXR1cm4gdC5zbGljZShlKX1mb3IoOyhyPWgoKSkhPT1vOyl7Zm9yKHZhciBmPVtdO3IhPT1pJiZyIT09bzspZi5wdXNoKHIpLHI9aCgpO2UmJm51bGw9PShmPWUoZix1KyspKXx8cy5wdXNoKGYpfXJldHVybiBzfSxhLmZvcm1hdD1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGVbMF0pKXJldHVybiBhLmZvcm1hdFJvd3MoZSk7dmFyIHI9bmV3IEMsbj1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KXIuaGFzKGUpfHxuLnB1c2goci5hZGQoZSkpfSksW24ubWFwKGwpLmpvaW4odCldLmNvbmNhdChlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGwoZVt0XSl9KS5qb2luKHQpfSkpLmpvaW4oIlxuIil9LGEuZm9ybWF0Um93cz1mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAocykuam9pbigiXG4iKX0sYX0sdC5jc3Y9dC5kc3YoIiwiLCJ0ZXh0L2NzdiIpLHQudHN2PXQuZHN2KCJcdCIsInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiKTt2YXIgeGUsYmUsX2Usd2Usa2U9dGhpc1t6KHRoaXMsInJlcXVlc3RBbmltYXRpb25GcmFtZSIpXXx8ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gVGUodCxlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg7bjwyJiYoZT0wKSxuPDMmJihyPURhdGUubm93KCkpO3ZhciBhPXtjOnQsdDpyK2UsbjpudWxsfTtyZXR1cm4gYmU/YmUubj1hOnhlPWEsYmU9YSxfZXx8KHdlPWNsZWFyVGltZW91dCh3ZSksX2U9MSxrZShNZSkpLGF9ZnVuY3Rpb24gTWUoKXt2YXIgdD1BZSgpLGU9U2UoKS10O2U+MjQ/KGlzRmluaXRlKGUpJiYoY2xlYXJUaW1lb3V0KHdlKSx3ZT1zZXRUaW1lb3V0KE1lLGUpKSxfZT0wKTooX2U9MSxrZShNZSkpfWZ1bmN0aW9uIEFlKCl7Zm9yKHZhciB0PURhdGUubm93KCksZT14ZTtlOyl0Pj1lLnQmJmUuYyh0LWUudCkmJihlLmM9bnVsbCksZT1lLm47cmV0dXJuIHR9ZnVuY3Rpb24gU2UoKXtmb3IodmFyIHQsZT14ZSxyPTEvMDtlOyllLmM/KGUudDxyJiYocj1lLnQpLGU9KHQ9ZSkubik6ZT10P3Qubj1lLm46eGU9ZS5uO3JldHVybiBiZT10LHJ9ZnVuY3Rpb24gRWUodCxlKXtyZXR1cm4gZS0odD9NYXRoLmNlaWwoTWF0aC5sb2codCkvTWF0aC5MTjEwKToxKX10LnRpbWVyPWZ1bmN0aW9uKCl7VGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0LnRpbWVyLmZsdXNoPWZ1bmN0aW9uKCl7QWUoKSxTZSgpfSx0LnJvdW5kPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/TWF0aC5yb3VuZCh0KihlPU1hdGgucG93KDEwLGUpKSkvZTpNYXRoLnJvdW5kKHQpfTt2YXIgTGU9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJceGI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl0ubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5wb3coMTAsMyp5KDgtZSkpO3JldHVybntzY2FsZTplPjg/ZnVuY3Rpb24odCl7cmV0dXJuIHQvcn06ZnVuY3Rpb24odCl7cmV0dXJuIHQqcn0sc3ltYm9sOnR9fSk7ZnVuY3Rpb24gQ2UoZSl7dmFyIHI9ZS5kZWNpbWFsLG49ZS50aG91c2FuZHMsYT1lLmdyb3VwaW5nLGk9ZS5jdXJyZW5jeSxvPWEmJm4/ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsaT1bXSxvPTAscz1hWzBdLGw9MDtyPjAmJnM+MCYmKGwrcysxPmUmJihzPU1hdGgubWF4KDEsZS1sKSksaS5wdXNoKHQuc3Vic3RyaW5nKHItPXMscitzKSksISgobCs9cysxKT5lKSk7KXM9YVtvPShvKzEpJWEubGVuZ3RoXTtyZXR1cm4gaS5yZXZlcnNlKCkuam9pbihuKX06UDtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49UGUuZXhlYyhlKSxhPW5bMV18fCIgIixzPW5bMl18fCI+IixsPW5bM118fCItIixjPW5bNF18fCIiLHU9bls1XSxoPStuWzZdLGY9bls3XSxwPW5bOF0sZD1uWzldLGc9MSx2PSIiLG09IiIseT0hMSx4PSEwO3N3aXRjaChwJiYocD0rcC5zdWJzdHJpbmcoMSkpLCh1fHwiMCI9PT1hJiYiPSI9PT1zKSYmKHU9YT0iMCIscz0iPSIpLGQpe2Nhc2UibiI6Zj0hMCxkPSJnIjticmVhaztjYXNlIiUiOmc9MTAwLG09IiUiLGQ9ImYiO2JyZWFrO2Nhc2UicCI6Zz0xMDAsbT0iJSIsZD0iciI7YnJlYWs7Y2FzZSJiIjpjYXNlIm8iOmNhc2UieCI6Y2FzZSJYIjoiIyI9PT1jJiYodj0iMCIrZC50b0xvd2VyQ2FzZSgpKTtjYXNlImMiOng9ITE7Y2FzZSJkIjp5PSEwLHA9MDticmVhaztjYXNlInMiOmc9LTEsZD0iciJ9IiQiPT09YyYmKHY9aVswXSxtPWlbMV0pLCJyIiE9ZHx8cHx8KGQ9ImciKSxudWxsIT1wJiYoImciPT1kP3A9TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxwKSk6ImUiIT1kJiYiZiIhPWR8fChwPU1hdGgubWF4KDAsTWF0aC5taW4oMjAscCkpKSksZD1PZS5nZXQoZCl8fHplO3ZhciBiPXUmJmY7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW07aWYoeSYmZSUxKXJldHVybiIiO3ZhciBpPWU8MHx8MD09PWUmJjEvZTwwPyhlPS1lLCItIik6Ii0iPT09bD8iIjpsO2lmKGc8MCl7dmFyIGM9dC5mb3JtYXRQcmVmaXgoZSxwKTtlPWMuc2NhbGUoZSksbj1jLnN5bWJvbCttfWVsc2UgZSo9Zzt2YXIgXyx3LGs9KGU9ZChlLHApKS5sYXN0SW5kZXhPZigiLiIpO2lmKGs8MCl7dmFyIFQ9eD9lLmxhc3RJbmRleE9mKCJlIik6LTE7VDwwPyhfPWUsdz0iIik6KF89ZS5zdWJzdHJpbmcoMCxUKSx3PWUuc3Vic3RyaW5nKFQpKX1lbHNlIF89ZS5zdWJzdHJpbmcoMCxrKSx3PXIrZS5zdWJzdHJpbmcoaysxKTshdSYmZiYmKF89byhfLDEvMCkpO3ZhciBNPXYubGVuZ3RoK18ubGVuZ3RoK3cubGVuZ3RoKyhiPzA6aS5sZW5ndGgpLEE9TTxoP25ldyBBcnJheShNPWgtTSsxKS5qb2luKGEpOiIiO3JldHVybiBiJiYoXz1vKEErXyxBLmxlbmd0aD9oLXcubGVuZ3RoOjEvMCkpLGkrPXYsZT1fK3csKCI8Ij09PXM/aStlK0E6Ij4iPT09cz9BK2krZToiXiI9PT1zP0Euc3Vic3RyaW5nKDAsTT4+PTEpK2krZStBLnN1YnN0cmluZyhNKTppKyhiP2U6QStlKSkrbn19fXQuZm9ybWF0UHJlZml4PWZ1bmN0aW9uKGUscil7dmFyIG49MDtyZXR1cm4oZT0rZSkmJihlPDAmJihlKj0tMSksciYmKGU9dC5yb3VuZChlLEVlKGUscikpKSxuPTErTWF0aC5mbG9vcigxZS0xMitNYXRoLmxvZyhlKS9NYXRoLkxOMTApLG49TWF0aC5tYXgoLTI0LE1hdGgubWluKDI0LDMqTWF0aC5mbG9vcigobi0xKS8zKSkpKSxMZVs4K24vM119O3ZhciBQZT0vKD86KFtee10pPyhbPD49Xl0pKT8oWytcLSBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC4tP1xkKyk/KFthLXolXSk/L2ksT2U9dC5tYXAoe2I6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcoOCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcoMTYpfSxYOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0V4cG9uZW50aWFsKGUpfSxmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9GaXhlZChlKX0scjpmdW5jdGlvbihlLHIpe3JldHVybihlPXQucm91bmQoZSxFZShlLHIpKSkudG9GaXhlZChNYXRoLm1heCgwLE1hdGgubWluKDIwLEVlKGUqKDErMWUtMTUpLHIpKSkpfX0pO2Z1bmN0aW9uIHplKHQpe3JldHVybiB0KyIifXZhciBJZT10LnRpbWU9e30sRGU9RGF0ZTtmdW5jdGlvbiBSZSgpe3RoaXMuXz1uZXcgRGF0ZShhcmd1bWVudHMubGVuZ3RoPjE/RGF0ZS5VVEMuYXBwbHkodGhpcyxhcmd1bWVudHMpOmFyZ3VtZW50c1swXSl9UmUucHJvdG90eXBlPXtnZXREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENEYXRlKCl9LGdldERheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDRGF5KCl9LGdldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENGdWxsWWVhcigpfSxnZXRIb3VyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDSG91cnMoKX0sZ2V0TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENNaWxsaXNlY29uZHMoKX0sZ2V0TWludXRlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWludXRlcygpfSxnZXRNb250aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTW9udGgoKX0sZ2V0U2Vjb25kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDU2Vjb25kcygpfSxnZXRUaW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRUaW1lKCl9LGdldFRpbWV6b25lT2Zmc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLnZhbHVlT2YoKX0sc2V0RGF0ZTpmdW5jdGlvbigpe0ZlLnNldFVUQ0RhdGUuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldERheTpmdW5jdGlvbigpe0ZlLnNldFVUQ0RheS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0RnVsbFllYXI6ZnVuY3Rpb24oKXtGZS5zZXRVVENGdWxsWWVhci5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0SG91cnM6ZnVuY3Rpb24oKXtGZS5zZXRVVENIb3Vycy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKCl7RmUuc2V0VVRDTWlsbGlzZWNvbmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNaW51dGVzOmZ1bmN0aW9uKCl7RmUuc2V0VVRDTWludXRlcy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TW9udGg6ZnVuY3Rpb24oKXtGZS5zZXRVVENNb250aC5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0U2Vjb25kczpmdW5jdGlvbigpe0ZlLnNldFVUQ1NlY29uZHMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldFRpbWU6ZnVuY3Rpb24oKXtGZS5zZXRUaW1lLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfX07dmFyIEZlPURhdGUucHJvdG90eXBlO2Z1bmN0aW9uIEJlKHQsZSxyKXtmdW5jdGlvbiBuKGUpe3ZhciByPXQoZSksbj1pKHIsMSk7cmV0dXJuIGUtcjxuLWU/cjpufWZ1bmN0aW9uIGEocil7cmV0dXJuIGUocj10KG5ldyBEZShyLTEpKSwxKSxyfWZ1bmN0aW9uIGkodCxyKXtyZXR1cm4gZSh0PW5ldyBEZSgrdCksciksdH1mdW5jdGlvbiBvKHQsbixpKXt2YXIgbz1hKHQpLHM9W107aWYoaT4xKWZvcig7bzxuOylyKG8pJWl8fHMucHVzaChuZXcgRGF0ZSgrbykpLGUobywxKTtlbHNlIGZvcig7bzxuOylzLnB1c2gobmV3IERhdGUoK28pKSxlKG8sMSk7cmV0dXJuIHN9dC5mbG9vcj10LHQucm91bmQ9bix0LmNlaWw9YSx0Lm9mZnNldD1pLHQucmFuZ2U9bzt2YXIgcz10LnV0Yz1OZSh0KTtyZXR1cm4gcy5mbG9vcj1zLHMucm91bmQ9TmUobikscy5jZWlsPU5lKGEpLHMub2Zmc2V0PU5lKGkpLHMucmFuZ2U9ZnVuY3Rpb24odCxlLHIpe3RyeXtEZT1SZTt2YXIgbj1uZXcgUmU7cmV0dXJuIG4uXz10LG8obixlLHIpfWZpbmFsbHl7RGU9RGF0ZX19LHR9ZnVuY3Rpb24gTmUodCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dHJ5e0RlPVJlO3ZhciBuPW5ldyBSZTtyZXR1cm4gbi5fPWUsdChuLHIpLl99ZmluYWxseXtEZT1EYXRlfX19ZnVuY3Rpb24gamUoZSl7dmFyIHI9ZS5kYXRlVGltZSxuPWUuZGF0ZSxhPWUudGltZSxpPWUucGVyaW9kcyxvPWUuZGF5cyxzPWUuc2hvcnREYXlzLGw9ZS5tb250aHMsYz1lLnNob3J0TW9udGhzO2Z1bmN0aW9uIHUodCl7dmFyIGU9dC5sZW5ndGg7ZnVuY3Rpb24gcihyKXtmb3IodmFyIG4sYSxpLG89W10scz0tMSxsPTA7KytzPGU7KTM3PT09dC5jaGFyQ29kZUF0KHMpJiYoby5wdXNoKHQuc2xpY2UobCxzKSksbnVsbCE9KGE9VmVbbj10LmNoYXJBdCgrK3MpXSkmJihuPXQuY2hhckF0KCsrcykpLChpPV9bbl0pJiYobj1pKHIsbnVsbD09YT8iZSI9PT1uPyIgIjoiMCI6YSkpLG8ucHVzaChuKSxsPXMrMSk7cmV0dXJuIG8ucHVzaCh0LnNsaWNlKGwscykpLG8uam9pbigiIil9cmV0dXJuIHIucGFyc2U9ZnVuY3Rpb24oZSl7dmFyIHI9e3k6MTkwMCxtOjAsZDoxLEg6MCxNOjAsUzowLEw6MCxaOm51bGx9O2lmKGgocix0LGUsMCkhPWUubGVuZ3RoKXJldHVybiBudWxsOyJwImluIHImJihyLkg9ci5IJTEyKzEyKnIucCk7dmFyIG49bnVsbCE9ci5aJiZEZSE9PVJlLGE9bmV3KG4/UmU6RGUpO3JldHVybiJqImluIHI/YS5zZXRGdWxsWWVhcihyLnksMCxyLmopOiJXImluIHJ8fCJVImluIHI/KCJ3ImluIHJ8fChyLnc9IlciaW4gcj8xOjApLGEuc2V0RnVsbFllYXIoci55LDAsMSksYS5zZXRGdWxsWWVhcihyLnksMCwiVyJpbiByPyhyLncrNiklNys3KnIuVy0oYS5nZXREYXkoKSs1KSU3OnIudys3KnIuVS0oYS5nZXREYXkoKSs2KSU3KSk6YS5zZXRGdWxsWWVhcihyLnksci5tLHIuZCksYS5zZXRIb3VycyhyLkgrKHIuWi8xMDB8MCksci5NK3IuWiUxMDAsci5TLHIuTCksbj9hLl86YX0sci50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxyfWZ1bmN0aW9uIGgodCxlLHIsbil7Zm9yKHZhciBhLGksbyxzPTAsbD1lLmxlbmd0aCxjPXIubGVuZ3RoO3M8bDspe2lmKG4+PWMpcmV0dXJuLTE7aWYoMzc9PT0oYT1lLmNoYXJDb2RlQXQocysrKSkpe2lmKG89ZS5jaGFyQXQocysrKSwhKGk9d1tvIGluIFZlP2UuY2hhckF0KHMrKyk6b10pfHwobj1pKHQscixuKSk8MClyZXR1cm4tMX1lbHNlIGlmKGEhPXIuY2hhckNvZGVBdChuKyspKXJldHVybi0xfXJldHVybiBufXUudXRjPWZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7ZnVuY3Rpb24gcih0KXt0cnl7dmFyIHI9bmV3KERlPVJlKTtyZXR1cm4gci5fPXQsZShyKX1maW5hbGx5e0RlPURhdGV9fXJldHVybiByLnBhcnNlPWZ1bmN0aW9uKHQpe3RyeXtEZT1SZTt2YXIgcj1lLnBhcnNlKHQpO3JldHVybiByJiZyLl99ZmluYWxseXtEZT1EYXRlfX0sci50b1N0cmluZz1lLnRvU3RyaW5nLHJ9LHUubXVsdGk9dS51dGMubXVsdGk9bHI7dmFyIGY9dC5tYXAoKSxwPUdlKG8pLGQ9WWUobyksZz1HZShzKSx2PVllKHMpLG09R2UobCkseT1ZZShsKSx4PUdlKGMpLGI9WWUoYyk7aS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7Zi5zZXQodC50b0xvd2VyQ2FzZSgpLGUpfSk7dmFyIF89e2E6ZnVuY3Rpb24odCl7cmV0dXJuIHNbdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24odCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdC5nZXRNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxjOnUociksZDpmdW5jdGlvbih0LGUpe3JldHVybiBIZSh0LmdldERhdGUoKSxlLDIpfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKHQuZ2V0RGF0ZSgpLGUsMil9LEg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGUodC5nZXRIb3VycygpLGUsMil9LEk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGUodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfSxqOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKDErSWUuZGF5T2ZZZWFyKHQpLGUsMyl9LEw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGUodC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfSxtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKHQuZ2V0TW9udGgoKSsxLGUsMil9LE06ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGUodC5nZXRNaW51dGVzKCksZSwyKX0scDpmdW5jdGlvbih0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0sUzpmdW5jdGlvbih0LGUpe3JldHVybiBIZSh0LmdldFNlY29uZHMoKSxlLDIpfSxVOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKEllLnN1bmRheU9mWWVhcih0KSxlLDIpfSx3OmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERheSgpfSxXOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKEllLm1vbmRheU9mWWVhcih0KSxlLDIpfSx4OnUobiksWDp1KGEpLHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGUodC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfSxZOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX0sWjpvciwiJSI6ZnVuY3Rpb24oKXtyZXR1cm4iJSJ9fSx3PXthOmZ1bmN0aW9uKHQsZSxyKXtnLmxhc3RJbmRleD0wO3ZhciBuPWcuZXhlYyhlLnNsaWNlKHIpKTtyZXR1cm4gbj8odC53PXYuZ2V0KG5bMF0udG9Mb3dlckNhc2UoKSkscituWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24odCxlLHIpe3AubGFzdEluZGV4PTA7dmFyIG49cC5leGVjKGUuc2xpY2UocikpO3JldHVybiBuPyh0Lnc9ZC5nZXQoblswXS50b0xvd2VyQ2FzZSgpKSxyK25bMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbih0LGUscil7eC5sYXN0SW5kZXg9MDt2YXIgbj14LmV4ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQubT1iLmdldChuWzBdLnRvTG93ZXJDYXNlKCkpLHIrblswXS5sZW5ndGgpOi0xfSxCOmZ1bmN0aW9uKHQsZSxyKXttLmxhc3RJbmRleD0wO3ZhciBuPW0uZXhlYyhlLnNsaWNlKHIpKTtyZXR1cm4gbj8odC5tPXkuZ2V0KG5bMF0udG9Mb3dlckNhc2UoKSkscituWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBoKHQsXy5jLnRvU3RyaW5nKCksZSxyKX0sZDp0cixlOnRyLEg6cnIsSTpycixqOmVyLEw6aXIsbTokZSxNOm5yLHA6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWYuZ2V0KGUuc2xpY2UocixyKz0yKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gbnVsbD09bj8tMToodC5wPW4scil9LFM6YXIsVTpYZSx3OldlLFc6WmUseDpmdW5jdGlvbih0LGUscil7cmV0dXJuIGgodCxfLngudG9TdHJpbmcoKSxlLHIpfSxYOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gaCh0LF8uWC50b1N0cmluZygpLGUscil9LHk6S2UsWTpKZSxaOlFlLCIlIjpzcn07cmV0dXJuIHV9SWUueWVhcj1CZShmdW5jdGlvbih0KXtyZXR1cm4odD1JZS5kYXkodCkpLnNldE1vbnRoKDAsMSksdH0sZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pLEllLnllYXJzPUllLnllYXIucmFuZ2UsSWUueWVhcnMudXRjPUllLnllYXIudXRjLnJhbmdlLEllLmRheT1CZShmdW5jdGlvbih0KXt2YXIgZT1uZXcgRGUoMmUzLDApO3JldHVybiBlLnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCkpLGV9LGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pLEllLmRheXM9SWUuZGF5LnJhbmdlLEllLmRheXMudXRjPUllLmRheS51dGMucmFuZ2UsSWUuZGF5T2ZZZWFyPWZ1bmN0aW9uKHQpe3ZhciBlPUllLnllYXIodCk7cmV0dXJuIE1hdGguZmxvb3IoKHQtZS02ZTQqKHQuZ2V0VGltZXpvbmVPZmZzZXQoKS1lLmdldFRpbWV6b25lT2Zmc2V0KCkpKS84NjRlNSl9LFsic3VuZGF5IiwibW9uZGF5IiwidHVlc2RheSIsIndlZG5lc2RheSIsInRodXJzZGF5IiwiZnJpZGF5Iiwic2F0dXJkYXkiXS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7ZT03LWU7dmFyIHI9SWVbdF09QmUoZnVuY3Rpb24odCl7cmV0dXJuKHQ9SWUuZGF5KHQpKS5zZXREYXRlKHQuZ2V0RGF0ZSgpLSh0LmdldERheSgpK2UpJTcpLHR9LGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqTWF0aC5mbG9vcihlKSl9LGZ1bmN0aW9uKHQpe3ZhciByPUllLnllYXIodCkuZ2V0RGF5KCk7cmV0dXJuIE1hdGguZmxvb3IoKEllLmRheU9mWWVhcih0KSsocitlKSU3KS83KS0ociE9PWUpfSk7SWVbdCsicyJdPXIucmFuZ2UsSWVbdCsicyJdLnV0Yz1yLnV0Yy5yYW5nZSxJZVt0KyJPZlllYXIiXT1mdW5jdGlvbih0KXt2YXIgcj1JZS55ZWFyKHQpLmdldERheSgpO3JldHVybiBNYXRoLmZsb29yKChJZS5kYXlPZlllYXIodCkrKHIrZSklNykvNyl9fSksSWUud2Vlaz1JZS5zdW5kYXksSWUud2Vla3M9SWUuc3VuZGF5LnJhbmdlLEllLndlZWtzLnV0Yz1JZS5zdW5kYXkudXRjLnJhbmdlLEllLndlZWtPZlllYXI9SWUuc3VuZGF5T2ZZZWFyO3ZhciBWZT17Ii0iOiIiLF86IiAiLDA6IjAifSxVZT0vXlxzKlxkKy8scWU9L14lLztmdW5jdGlvbiBIZSh0LGUscil7dmFyIG49dDwwPyItIjoiIixhPShuPy10OnQpKyIiLGk9YS5sZW5ndGg7cmV0dXJuIG4rKGk8cj9uZXcgQXJyYXkoci1pKzEpLmpvaW4oZSkrYTphKX1mdW5jdGlvbiBHZShlKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrZS5tYXAodC5yZXF1b3RlKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gWWUodCl7Zm9yKHZhciBlPW5ldyBiLHI9LTEsbj10Lmxlbmd0aDsrK3I8bjspZS5zZXQodFtyXS50b0xvd2VyQ2FzZSgpLHIpO3JldHVybiBlfWZ1bmN0aW9uIFdlKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocixyKzEpKTtyZXR1cm4gbj8odC53PStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFhlKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocikpO3JldHVybiBuPyh0LlU9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWmUodCxlLHIpe1VlLmxhc3RJbmRleD0wO3ZhciBuPVVlLmV4ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQuVz0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBKZSh0LGUscil7VWUubGFzdEluZGV4PTA7dmFyIG49VWUuZXhlYyhlLnNsaWNlKHIscis0KSk7cmV0dXJuIG4/KHQueT0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBLZSh0LGUscil7VWUubGFzdEluZGV4PTA7dmFyIG4sYT1VZS5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gYT8odC55PShuPSthWzBdKSsobj42OD8xOTAwOjJlMykscithWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUWUodCxlLHIpe3JldHVybi9eWystXVxkezR9JC8udGVzdChlPWUuc2xpY2UocixyKzUpKT8odC5aPS1lLHIrNSk6LTF9ZnVuY3Rpb24gJGUodCxlLHIpe1VlLmxhc3RJbmRleD0wO3ZhciBuPVVlLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0Lm09blswXS0xLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHRyKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5kPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGVyKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocixyKzMpKTtyZXR1cm4gbj8odC5qPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHJyKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5IPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG5yKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5NPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGFyKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5TPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGlyKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5leGVjKGUuc2xpY2UocixyKzMpKTtyZXR1cm4gbj8odC5MPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG9yKHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKSxyPWU+MD8iLSI6IisiLG49eShlKS82MHwwLGE9eShlKSU2MDtyZXR1cm4gcitIZShuLCIwIiwyKStIZShhLCIwIiwyKX1mdW5jdGlvbiBzcih0LGUscil7cWUubGFzdEluZGV4PTA7dmFyIG49cWUuZXhlYyhlLnNsaWNlKHIscisxKSk7cmV0dXJuIG4/cituWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBscih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj0tMTsrK3I8ZTspdFtyXVswXT10aGlzKHRbcl1bMF0pO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHI9MCxuPXRbcl07IW5bMV0oZSk7KW49dFsrK3JdO3JldHVybiBuWzBdKGUpfX10LmxvY2FsZT1mdW5jdGlvbih0KXtyZXR1cm57bnVtYmVyRm9ybWF0OkNlKHQpLHRpbWVGb3JtYXQ6amUodCl9fTt2YXIgY3I9dC5sb2NhbGUoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLGRhdGVUaW1lOiIlYSAlYiAlZSAlWCAlWSIsZGF0ZToiJW0vJWQvJVkiLHRpbWU6IiVIOiVNOiVTIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO2Z1bmN0aW9uIHVyKCl7fXQuZm9ybWF0PWNyLm51bWJlckZvcm1hdCx0Lmdlbz17fSx1ci5wcm90b3R5cGU9e3M6MCx0OjAsYWRkOmZ1bmN0aW9uKHQpe2ZyKHQsdGhpcy50LGhyKSxmcihoci5zLHRoaXMucyx0aGlzKSx0aGlzLnM/dGhpcy50Kz1oci50OnRoaXMucz1oci50fSxyZXNldDpmdW5jdGlvbigpe3RoaXMucz10aGlzLnQ9MH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgaHI9bmV3IHVyO2Z1bmN0aW9uIGZyKHQsZSxyKXt2YXIgbj1yLnM9dCtlLGE9bi10LGk9bi1hO3IudD10LWkrKGUtYSl9ZnVuY3Rpb24gcHIodCxlKXt0JiZnci5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpJiZnclt0LnR5cGVdKHQsZSl9dC5nZW8uc3RyZWFtPWZ1bmN0aW9uKHQsZSl7dCYmZHIuaGFzT3duUHJvcGVydHkodC50eXBlKT9kclt0LnR5cGVdKHQsZSk6cHIodCxlKX07dmFyIGRyPXtGZWF0dXJlOmZ1bmN0aW9uKHQsZSl7cHIodC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5mZWF0dXJlcyxuPS0xLGE9ci5sZW5ndGg7KytuPGE7KXByKHJbbl0uZ2VvbWV0cnksZSl9fSxncj17U3BoZXJlOmZ1bmN0aW9uKHQsZSl7ZS5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24odCxlKXt0PXQuY29vcmRpbmF0ZXMsZS5wb2ludCh0WzBdLHRbMV0sdFsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jb29yZGluYXRlcyxuPS0xLGE9ci5sZW5ndGg7KytuPGE7KXQ9cltuXSxlLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe3ZyKHQuY29vcmRpbmF0ZXMsZSwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY29vcmRpbmF0ZXMsbj0tMSxhPXIubGVuZ3RoOysrbjxhOyl2cihyW25dLGUsMCl9LFBvbHlnb246ZnVuY3Rpb24odCxlKXttcih0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jb29yZGluYXRlcyxuPS0xLGE9ci5sZW5ndGg7KytuPGE7KW1yKHJbbl0sZSl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmdlb21ldHJpZXMsbj0tMSxhPXIubGVuZ3RoOysrbjxhOylwcihyW25dLGUpfX07ZnVuY3Rpb24gdnIodCxlLHIpe3ZhciBuLGE9LTEsaT10Lmxlbmd0aC1yO2ZvcihlLmxpbmVTdGFydCgpOysrYTxpOyluPXRbYV0sZS5wb2ludChuWzBdLG5bMV0sblsyXSk7ZS5saW5lRW5kKCl9ZnVuY3Rpb24gbXIodCxlKXt2YXIgcj0tMSxuPXQubGVuZ3RoO2ZvcihlLnBvbHlnb25TdGFydCgpOysrcjxuOyl2cih0W3JdLGUsMSk7ZS5wb2x5Z29uRW5kKCl9dC5nZW8uYXJlYT1mdW5jdGlvbihlKXtyZXR1cm4geXI9MCx0Lmdlby5zdHJlYW0oZSxQcikseXJ9O3ZhciB5cix4cixicixfcix3cixrcixUcixNcixBcixTcixFcixMcixDcj1uZXcgdXIsUHI9e3NwaGVyZTpmdW5jdGlvbigpe3lyKz00Kk10fSxwb2ludDpELGxpbmVTdGFydDpELGxpbmVFbmQ6RCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtDci5yZXNldCgpLFByLmxpbmVTdGFydD1Pcn0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PTIqQ3I7eXIrPXQ8MD80Kk10K3Q6dCxQci5saW5lU3RhcnQ9UHIubGluZUVuZD1Qci5wb2ludD1EfX07ZnVuY3Rpb24gT3IoKXt2YXIgdCxlLHIsbixhO2Z1bmN0aW9uIGkodCxlKXtlPWUqTHQvMitNdC80O3ZhciBpPSh0Kj1MdCktcixvPWk+PTA/MTotMSxzPW8qaSxsPU1hdGguY29zKGUpLGM9TWF0aC5zaW4oZSksdT1hKmMsaD1uKmwrdSpNYXRoLmNvcyhzKSxmPXUqbypNYXRoLnNpbihzKTtDci5hZGQoTWF0aC5hdGFuMihmLGgpKSxyPXQsbj1sLGE9Y31Qci5wb2ludD1mdW5jdGlvbihvLHMpe1ByLnBvaW50PWkscj0odD1vKSpMdCxuPU1hdGguY29zKHM9KGU9cykqTHQvMitNdC80KSxhPU1hdGguc2luKHMpfSxQci5saW5lRW5kPWZ1bmN0aW9uKCl7aSh0LGUpfX1mdW5jdGlvbiB6cih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPU1hdGguY29zKHIpO3JldHVybltuKk1hdGguY29zKGUpLG4qTWF0aC5zaW4oZSksTWF0aC5zaW4ocildfWZ1bmN0aW9uIElyKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdfWZ1bmN0aW9uIERyKHQsZSl7cmV0dXJuW3RbMV0qZVsyXS10WzJdKmVbMV0sdFsyXSplWzBdLXRbMF0qZVsyXSx0WzBdKmVbMV0tdFsxXSplWzBdXX1mdW5jdGlvbiBScih0LGUpe3RbMF0rPWVbMF0sdFsxXSs9ZVsxXSx0WzJdKz1lWzJdfWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuW3RbMF0qZSx0WzFdKmUsdFsyXSplXX1mdW5jdGlvbiBCcih0KXt2YXIgZT1NYXRoLnNxcnQodFswXSp0WzBdK3RbMV0qdFsxXSt0WzJdKnRbMl0pO3RbMF0vPWUsdFsxXS89ZSx0WzJdLz1lfWZ1bmN0aW9uIE5yKHQpe3JldHVybltNYXRoLmF0YW4yKHRbMV0sdFswXSksSXQodFsyXSldfWZ1bmN0aW9uIGpyKHQsZSl7cmV0dXJuIHkodFswXS1lWzBdKTxrdCYmeSh0WzFdLWVbMV0pPGt0fXQuZ2VvLmJvdW5kcz1mdW5jdGlvbigpe3ZhciBlLHIsbixhLGksbyxzLGwsYyx1LGgsZj17cG9pbnQ6cCxsaW5lU3RhcnQ6ZyxsaW5lRW5kOnYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Zi5wb2ludD1tLGYubGluZVN0YXJ0PXgsZi5saW5lRW5kPWIsYz0wLFByLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7UHIucG9seWdvbkVuZCgpLGYucG9pbnQ9cCxmLmxpbmVTdGFydD1nLGYubGluZUVuZD12LENyPDA/KGU9LShuPTE4MCkscj0tKGE9OTApKTpjPmt0P2E9OTA6Yzwta3QmJihyPS05MCksaFswXT1lLGhbMV09bn19O2Z1bmN0aW9uIHAodCxpKXt1LnB1c2goaD1bZT10LG49dF0pLGk8ciYmKHI9aSksaT5hJiYoYT1pKX1mdW5jdGlvbiBkKHQsbyl7dmFyIHM9enIoW3QqTHQsbypMdF0pO2lmKGwpe3ZhciBjPURyKGwscyksdT1EcihbY1sxXSwtY1swXSwwXSxjKTtCcih1KSx1PU5yKHUpO3ZhciBoPXQtaSxmPWg+MD8xOi0xLGQ9dVswXSpDdCpmLGc9eShoKT4xODA7aWYoZ14oZippPGQmJmQ8Zip0KSkodj11WzFdKkN0KT5hJiYoYT12KTtlbHNlIGlmKGdeKGYqaTwoZD0oZCszNjApJTM2MC0xODApJiZkPGYqdCkpe3ZhciB2Oyh2PS11WzFdKkN0KTxyJiYocj12KX1lbHNlIG88ciYmKHI9byksbz5hJiYoYT1vKTtnP3Q8aT9fKGUsdCk+XyhlLG4pJiYobj10KTpfKHQsbik+XyhlLG4pJiYoZT10KTpuPj1lPyh0PGUmJihlPXQpLHQ+biYmKG49dCkpOnQ+aT9fKGUsdCk+XyhlLG4pJiYobj10KTpfKHQsbik+XyhlLG4pJiYoZT10KX1lbHNlIHAodCxvKTtsPXMsaT10fWZ1bmN0aW9uIGcoKXtmLnBvaW50PWR9ZnVuY3Rpb24gdigpe2hbMF09ZSxoWzFdPW4sZi5wb2ludD1wLGw9bnVsbH1mdW5jdGlvbiBtKHQsZSl7aWYobCl7dmFyIHI9dC1pO2MrPXkocik+MTgwP3IrKHI+MD8zNjA6LTM2MCk6cn1lbHNlIG89dCxzPWU7UHIucG9pbnQodCxlKSxkKHQsZSl9ZnVuY3Rpb24geCgpe1ByLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGIoKXttKG8scyksUHIubGluZUVuZCgpLHkoYyk+a3QmJihlPS0obj0xODApKSxoWzBdPWUsaFsxXT1uLGw9bnVsbH1mdW5jdGlvbiBfKHQsZSl7cmV0dXJuKGUtPXQpPDA/ZSszNjA6ZX1mdW5jdGlvbiB3KHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuIGVbMF08PWVbMV0/ZVswXTw9dCYmdDw9ZVsxXTp0PGVbMF18fGVbMV08dH1yZXR1cm4gZnVuY3Rpb24oaSl7aWYoYT1uPS0oZT1yPTEvMCksdT1bXSx0Lmdlby5zdHJlYW0oaSxmKSxjPXUubGVuZ3RoKXt1LnNvcnQodyk7Zm9yKHZhciBvPTEscz1bZz11WzBdXTtvPGM7KytvKWsoKHA9dVtvXSlbMF0sZyl8fGsocFsxXSxnKT8oXyhnWzBdLHBbMV0pPl8oZ1swXSxnWzFdKSYmKGdbMV09cFsxXSksXyhwWzBdLGdbMV0pPl8oZ1swXSxnWzFdKSYmKGdbMF09cFswXSkpOnMucHVzaChnPXApO2Zvcih2YXIgbCxjLHAsZD0tMS8wLGc9KG89MCxzW2M9cy5sZW5ndGgtMV0pO288PWM7Zz1wLCsrbylwPXNbb10sKGw9XyhnWzFdLHBbMF0pKT5kJiYoZD1sLGU9cFswXSxuPWdbMV0pfXJldHVybiB1PWg9bnVsbCxlPT09MS8wfHxyPT09MS8wP1tbTmFOLE5hTl0sW05hTixOYU5dXTpbW2Uscl0sW24sYV1dfX0oKSx0Lmdlby5jZW50cm9pZD1mdW5jdGlvbihlKXt4cj1icj1fcj13cj1rcj1Ucj1Ncj1Bcj1Tcj1Fcj1Mcj0wLHQuZ2VvLnN0cmVhbShlLFZyKTt2YXIgcj1TcixuPUVyLGE9THIsaT1yKnIrbipuK2EqYTtyZXR1cm4gaTxUdCYmKHI9VHIsbj1NcixhPUFyLGJyPGt0JiYocj1fcixuPXdyLGE9a3IpLChpPXIqcituKm4rYSphKTxUdCk/W05hTixOYU5dOltNYXRoLmF0YW4yKG4scikqQ3QsSXQoYS9NYXRoLnNxcnQoaSkpKkN0XX07dmFyIFZyPXtzcGhlcmU6RCxwb2ludDpVcixsaW5lU3RhcnQ6SHIsbGluZUVuZDpHcixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtWci5saW5lU3RhcnQ9WXJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtWci5saW5lU3RhcnQ9SHJ9fTtmdW5jdGlvbiBVcih0LGUpe3QqPUx0O3ZhciByPU1hdGguY29zKGUqPUx0KTtxcihyKk1hdGguY29zKHQpLHIqTWF0aC5zaW4odCksTWF0aC5zaW4oZSkpfWZ1bmN0aW9uIHFyKHQsZSxyKXtfcis9KHQtX3IpLysreHIsd3IrPShlLXdyKS94cixrcis9KHIta3IpL3hyfWZ1bmN0aW9uIEhyKCl7dmFyIHQsZSxyO2Z1bmN0aW9uIG4obixhKXtuKj1MdDt2YXIgaT1NYXRoLmNvcyhhKj1MdCksbz1pKk1hdGguY29zKG4pLHM9aSpNYXRoLnNpbihuKSxsPU1hdGguc2luKGEpLGM9TWF0aC5hdGFuMihNYXRoLnNxcnQoKGM9ZSpsLXIqcykqYysoYz1yKm8tdCpsKSpjKyhjPXQqcy1lKm8pKmMpLHQqbytlKnMrcipsKTticis9YyxUcis9YyoodCsodD1vKSksTXIrPWMqKGUrKGU9cykpLEFyKz1jKihyKyhyPWwpKSxxcih0LGUscil9VnIucG9pbnQ9ZnVuY3Rpb24oYSxpKXthKj1MdDt2YXIgbz1NYXRoLmNvcyhpKj1MdCk7dD1vKk1hdGguY29zKGEpLGU9bypNYXRoLnNpbihhKSxyPU1hdGguc2luKGkpLFZyLnBvaW50PW4scXIodCxlLHIpfX1mdW5jdGlvbiBHcigpe1ZyLnBvaW50PVVyfWZ1bmN0aW9uIFlyKCl7dmFyIHQsZSxyLG4sYTtmdW5jdGlvbiBpKHQsZSl7dCo9THQ7dmFyIGk9TWF0aC5jb3MoZSo9THQpLG89aSpNYXRoLmNvcyh0KSxzPWkqTWF0aC5zaW4odCksbD1NYXRoLnNpbihlKSxjPW4qbC1hKnMsdT1hKm8tcipsLGg9cipzLW4qbyxmPU1hdGguc3FydChjKmMrdSp1K2gqaCkscD1yKm8rbipzK2EqbCxkPWYmJi16dChwKS9mLGc9TWF0aC5hdGFuMihmLHApO1NyKz1kKmMsRXIrPWQqdSxMcis9ZCpoLGJyKz1nLFRyKz1nKihyKyhyPW8pKSxNcis9Zyoobisobj1zKSksQXIrPWcqKGErKGE9bCkpLHFyKHIsbixhKX1Wci5wb2ludD1mdW5jdGlvbihvLHMpe3Q9byxlPXMsVnIucG9pbnQ9aSxvKj1MdDt2YXIgbD1NYXRoLmNvcyhzKj1MdCk7cj1sKk1hdGguY29zKG8pLG49bCpNYXRoLnNpbihvKSxhPU1hdGguc2luKHMpLHFyKHIsbixhKX0sVnIubGluZUVuZD1mdW5jdGlvbigpe2kodCxlKSxWci5saW5lRW5kPUdyLFZyLnBvaW50PVVyfX1mdW5jdGlvbiBXcih0LGUpe2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gcj10KHIsbiksZShyWzBdLHJbMV0pfXJldHVybiB0LmludmVydCYmZS5pbnZlcnQmJihyLmludmVydD1mdW5jdGlvbihyLG4pe3JldHVybihyPWUuaW52ZXJ0KHIsbikpJiZ0LmludmVydChyWzBdLHJbMV0pfSkscn1mdW5jdGlvbiBYcigpe3JldHVybiEwfWZ1bmN0aW9uIFpyKHQsZSxyLG4sYSl7dmFyIGk9W10sbz1bXTtpZih0LmZvckVhY2goZnVuY3Rpb24odCl7aWYoISgoZT10Lmxlbmd0aC0xKTw9MCkpe3ZhciBlLHI9dFswXSxuPXRbZV07aWYoanIocixuKSl7YS5saW5lU3RhcnQoKTtmb3IodmFyIHM9MDtzPGU7KytzKWEucG9pbnQoKHI9dFtzXSlbMF0sclsxXSk7YS5saW5lRW5kKCl9ZWxzZXt2YXIgbD1uZXcgS3Iocix0LG51bGwsITApLGM9bmV3IEtyKHIsbnVsbCxsLCExKTtsLm89YyxpLnB1c2gobCksby5wdXNoKGMpLGw9bmV3IEtyKG4sdCxudWxsLCExKSxjPW5ldyBLcihuLG51bGwsbCwhMCksbC5vPWMsaS5wdXNoKGwpLG8ucHVzaChjKX19fSksby5zb3J0KGUpLEpyKGkpLEpyKG8pLGkubGVuZ3RoKXtmb3IodmFyIHM9MCxsPXIsYz1vLmxlbmd0aDtzPGM7KytzKW9bc10uZT1sPSFsO2Zvcih2YXIgdSxoLGY9aVswXTs7KXtmb3IodmFyIHA9ZixkPSEwO3AudjspaWYoKHA9cC5uKT09PWYpcmV0dXJuO3U9cC56LGEubGluZVN0YXJ0KCk7ZG97aWYocC52PXAuby52PSEwLHAuZSl7aWYoZClmb3Iocz0wLGM9dS5sZW5ndGg7czxjOysrcylhLnBvaW50KChoPXVbc10pWzBdLGhbMV0pO2Vsc2UgbihwLngscC5uLngsMSxhKTtwPXAubn1lbHNle2lmKGQpZm9yKHM9KHU9cC5wLnopLmxlbmd0aC0xO3M+PTA7LS1zKWEucG9pbnQoKGg9dVtzXSlbMF0saFsxXSk7ZWxzZSBuKHAueCxwLnAueCwtMSxhKTtwPXAucH11PShwPXAubykueixkPSFkfXdoaWxlKCFwLnYpO2EubGluZUVuZCgpfX19ZnVuY3Rpb24gSnIodCl7aWYoZT10Lmxlbmd0aCl7Zm9yKHZhciBlLHIsbj0wLGE9dFswXTsrK248ZTspYS5uPXI9dFtuXSxyLnA9YSxhPXI7YS5uPXI9dFswXSxyLnA9YX19ZnVuY3Rpb24gS3IodCxlLHIsbil7dGhpcy54PXQsdGhpcy56PWUsdGhpcy5vPXIsdGhpcy5lPW4sdGhpcy52PSExLHRoaXMubj10aGlzLnA9bnVsbH1mdW5jdGlvbiBRcihlLHIsbixhKXtyZXR1cm4gZnVuY3Rpb24oaSxvKXt2YXIgcyxsPXIobyksYz1pLmludmVydChhWzBdLGFbMV0pLHU9e3BvaW50OmgsbGluZVN0YXJ0OnAsbGluZUVuZDpkLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3UucG9pbnQ9Yix1LmxpbmVTdGFydD1fLHUubGluZUVuZD13LHM9W10sZz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3UucG9pbnQ9aCx1LmxpbmVTdGFydD1wLHUubGluZUVuZD1kLHM9dC5tZXJnZShzKTt2YXIgZT1mdW5jdGlvbih0LGUpe3ZhciByPXRbMF0sbj10WzFdLGE9W01hdGguc2luKHIpLC1NYXRoLmNvcyhyKSwwXSxpPTAsbz0wO0NyLnJlc2V0KCk7Zm9yKHZhciBzPTAsbD1lLmxlbmd0aDtzPGw7KytzKXt2YXIgYz1lW3NdLHU9Yy5sZW5ndGg7aWYodSlmb3IodmFyIGg9Y1swXSxmPWhbMF0scD1oWzFdLzIrTXQvNCxkPU1hdGguc2luKHApLGc9TWF0aC5jb3MocCksdj0xOzspe3Y9PT11JiYodj0wKTt2YXIgbT0odD1jW3ZdKVswXSx5PXRbMV0vMitNdC80LHg9TWF0aC5zaW4oeSksYj1NYXRoLmNvcyh5KSxfPW0tZix3PV8+PTA/MTotMSxrPXcqXyxUPWs+TXQsTT1kKng7aWYoQ3IuYWRkKE1hdGguYXRhbjIoTSp3Kk1hdGguc2luKGspLGcqYitNKk1hdGguY29zKGspKSksaSs9VD9fK3cqQXQ6XyxUXmY+PXJebT49cil7dmFyIEE9RHIoenIoaCksenIodCkpO0JyKEEpO3ZhciBTPURyKGEsQSk7QnIoUyk7dmFyIEU9KFReXz49MD8tMToxKSpJdChTWzJdKTsobj5FfHxuPT09RSYmKEFbMF18fEFbMV0pKSYmKG8rPVReXz49MD8xOi0xKX1pZighdisrKWJyZWFrO2Y9bSxkPXgsZz1iLGg9dH19cmV0dXJuKGk8LWt0fHxpPGt0JiZDcjwta3QpXjEmb30oYyxnKTtzLmxlbmd0aD8oeHx8KG8ucG9seWdvblN0YXJ0KCkseD0hMCksWnIocyxlbixlLG4sbykpOmUmJih4fHwoby5wb2x5Z29uU3RhcnQoKSx4PSEwKSxvLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsbyksby5saW5lRW5kKCkpLHgmJihvLnBvbHlnb25FbmQoKSx4PSExKSxzPWc9bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7by5wb2x5Z29uU3RhcnQoKSxvLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsbyksby5saW5lRW5kKCksby5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBoKHQscil7dmFyIG49aSh0LHIpO2UodD1uWzBdLHI9blsxXSkmJm8ucG9pbnQodCxyKX1mdW5jdGlvbiBmKHQsZSl7dmFyIHI9aSh0LGUpO2wucG9pbnQoclswXSxyWzFdKX1mdW5jdGlvbiBwKCl7dS5wb2ludD1mLGwubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZCgpe3UucG9pbnQ9aCxsLmxpbmVFbmQoKX12YXIgZyx2LG09dG4oKSx5PXIobSkseD0hMTtmdW5jdGlvbiBiKHQsZSl7di5wdXNoKFt0LGVdKTt2YXIgcj1pKHQsZSk7eS5wb2ludChyWzBdLHJbMV0pfWZ1bmN0aW9uIF8oKXt5LmxpbmVTdGFydCgpLHY9W119ZnVuY3Rpb24gdygpe2IodlswXVswXSx2WzBdWzFdKSx5LmxpbmVFbmQoKTt2YXIgdCxlPXkuY2xlYW4oKSxyPW0uYnVmZmVyKCksbj1yLmxlbmd0aDtpZih2LnBvcCgpLGcucHVzaCh2KSx2PW51bGwsbilpZigxJmUpe3ZhciBhLGk9LTE7aWYoKG49KHQ9clswXSkubGVuZ3RoLTEpPjApe2Zvcih4fHwoby5wb2x5Z29uU3RhcnQoKSx4PSEwKSxvLmxpbmVTdGFydCgpOysraTxuOylvLnBvaW50KChhPXRbaV0pWzBdLGFbMV0pO28ubGluZUVuZCgpfX1lbHNlIG4+MSYmMiZlJiZyLnB1c2goci5wb3AoKS5jb25jYXQoci5zaGlmdCgpKSkscy5wdXNoKHIuZmlsdGVyKCRyKSl9cmV0dXJuIHV9fWZ1bmN0aW9uICRyKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIHRuKCl7dmFyIHQsZT1bXTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7ZS5wdXNoKHQ9W10pfSxwb2ludDpmdW5jdGlvbihlLHIpe3QucHVzaChbZSxyXSl9LGxpbmVFbmQ6RCxidWZmZXI6ZnVuY3Rpb24oKXt2YXIgcj1lO3JldHVybiBlPVtdLHQ9bnVsbCxyfSxyZWpvaW46ZnVuY3Rpb24oKXtlLmxlbmd0aD4xJiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSl9fX1mdW5jdGlvbiBlbih0LGUpe3JldHVybigodD10LngpWzBdPDA/dFsxXS1FdC1rdDpFdC10WzFdKS0oKGU9ZS54KVswXTwwP2VbMV0tRXQta3Q6RXQtZVsxXSl9dmFyIHJuPVFyKFhyLGZ1bmN0aW9uKHQpe3ZhciBlLHI9TmFOLG49TmFOLGE9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGU9MX0scG9pbnQ6ZnVuY3Rpb24oaSxvKXt2YXIgcz1pPjA/TXQ6LU10LGw9eShpLXIpO3kobC1NdCk8a3Q/KHQucG9pbnQocixuPShuK28pLzI+MD9FdDotRXQpLHQucG9pbnQoYSxuKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxuKSx0LnBvaW50KGksbiksZT0wKTphIT09cyYmbD49TXQmJih5KHItYSk8a3QmJihyLT1hKmt0KSx5KGktcyk8a3QmJihpLT1zKmt0KSxuPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGksbz1NYXRoLnNpbih0LXIpO3JldHVybiB5KG8pPmt0P01hdGguYXRhbigoTWF0aC5zaW4oZSkqKGk9TWF0aC5jb3MobikpKk1hdGguc2luKHIpLU1hdGguc2luKG4pKihhPU1hdGguY29zKGUpKSpNYXRoLnNpbih0KSkvKGEqaSpvKSk6KGUrbikvMn0ocixuLGksbyksdC5wb2ludChhLG4pLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLG4pLGU9MCksdC5wb2ludChyPWksbj1vKSxhPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxyPW49TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWV9fX0sZnVuY3Rpb24odCxlLHIsbil7dmFyIGE7aWYobnVsbD09dClhPXIqRXQsbi5wb2ludCgtTXQsYSksbi5wb2ludCgwLGEpLG4ucG9pbnQoTXQsYSksbi5wb2ludChNdCwwKSxuLnBvaW50KE10LC1hKSxuLnBvaW50KDAsLWEpLG4ucG9pbnQoLU10LC1hKSxuLnBvaW50KC1NdCwwKSxuLnBvaW50KC1NdCxhKTtlbHNlIGlmKHkodFswXS1lWzBdKT5rdCl7dmFyIGk9dFswXTxlWzBdP010Oi1NdDthPXIqaS8yLG4ucG9pbnQoLWksYSksbi5wb2ludCgwLGEpLG4ucG9pbnQoaSxhKX1lbHNlIG4ucG9pbnQoZVswXSxlWzFdKX0sWy1NdCwtTXQvMl0pO2Z1bmN0aW9uIG5uKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbihhKXt2YXIgaSxvPWEuYSxzPWEuYixsPW8ueCxjPW8ueSx1PTAsaD0xLGY9cy54LWwscD1zLnktYztpZihpPXQtbCxmfHwhKGk+MCkpe2lmKGkvPWYsZjwwKXtpZihpPHUpcmV0dXJuO2k8aCYmKGg9aSl9ZWxzZSBpZihmPjApe2lmKGk+aClyZXR1cm47aT51JiYodT1pKX1pZihpPXItbCxmfHwhKGk8MCkpe2lmKGkvPWYsZjwwKXtpZihpPmgpcmV0dXJuO2k+dSYmKHU9aSl9ZWxzZSBpZihmPjApe2lmKGk8dSlyZXR1cm47aTxoJiYoaD1pKX1pZihpPWUtYyxwfHwhKGk+MCkpe2lmKGkvPXAscDwwKXtpZihpPHUpcmV0dXJuO2k8aCYmKGg9aSl9ZWxzZSBpZihwPjApe2lmKGk+aClyZXR1cm47aT51JiYodT1pKX1pZihpPW4tYyxwfHwhKGk8MCkpe2lmKGkvPXAscDwwKXtpZihpPmgpcmV0dXJuO2k+dSYmKHU9aSl9ZWxzZSBpZihwPjApe2lmKGk8dSlyZXR1cm47aTxoJiYoaD1pKX1yZXR1cm4gdT4wJiYoYS5hPXt4OmwrdSpmLHk6Yyt1KnB9KSxoPDEmJihhLmI9e3g6bCtoKmYseTpjK2gqcH0pLGF9fX19fX12YXIgYW49MWU5O2Z1bmN0aW9uIG9uKGUscixuLGEpe3JldHVybiBmdW5jdGlvbihsKXt2YXIgYyx1LGgsZixwLGQsZyx2LG0seSx4LGI9bCxfPXRuKCksdz1ubihlLHIsbixhKSxrPXtwb2ludDpBLGxpbmVTdGFydDpmdW5jdGlvbigpe2sucG9pbnQ9Uyx1JiZ1LnB1c2goaD1bXSk7eT0hMCxtPSExLGc9dj1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24oKXtjJiYoUyhmLHApLGQmJm0mJl8ucmVqb2luKCksYy5wdXNoKF8uYnVmZmVyKCkpKTtrLnBvaW50PUEsbSYmbC5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2w9XyxjPVtdLHU9W10seD0hMH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2w9YixjPXQubWVyZ2UoYyk7dmFyIHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj11Lmxlbmd0aCxuPXRbMV0sYT0wO2E8cjsrK2EpZm9yKHZhciBpLG89MSxzPXVbYV0sbD1zLmxlbmd0aCxjPXNbMF07bzxsOysrbylpPXNbb10sY1sxXTw9bj9pWzFdPm4mJk90KGMsaSx0KT4wJiYrK2U6aVsxXTw9biYmT3QoYyxpLHQpPDAmJi0tZSxjPWk7cmV0dXJuIDAhPT1lfShbZSxhXSksbj14JiZyLGk9Yy5sZW5ndGg7KG58fGkpJiYobC5wb2x5Z29uU3RhcnQoKSxuJiYobC5saW5lU3RhcnQoKSxUKG51bGwsbnVsbCwxLGwpLGwubGluZUVuZCgpKSxpJiZacihjLG8scixULGwpLGwucG9seWdvbkVuZCgpKSxjPXU9aD1udWxsfX07ZnVuY3Rpb24gVCh0LG8sbCxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT10fHwodT1pKHQsbCkpIT09KGg9aShvLGwpKXx8cyh0LG8pPDBebD4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P2U6bix1PjE/YTpyKX13aGlsZSgodT0odStsKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gTSh0LGkpe3JldHVybiBlPD10JiZ0PD1uJiZyPD1pJiZpPD1hfWZ1bmN0aW9uIEEodCxlKXtNKHQsZSkmJmwucG9pbnQodCxlKX1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9TSh0PU1hdGgubWF4KC1hbixNYXRoLm1pbihhbix0KSksZT1NYXRoLm1heCgtYW4sTWF0aC5taW4oYW4sZSkpKTtpZih1JiZoLnB1c2goW3QsZV0pLHkpZj10LHA9ZSxkPXIseT0hMSxyJiYobC5saW5lU3RhcnQoKSxsLnBvaW50KHQsZSkpO2Vsc2UgaWYociYmbSlsLnBvaW50KHQsZSk7ZWxzZXt2YXIgbj17YTp7eDpnLHk6dn0sYjp7eDp0LHk6ZX19O3cobik/KG18fChsLmxpbmVTdGFydCgpLGwucG9pbnQobi5hLngsbi5hLnkpKSxsLnBvaW50KG4uYi54LG4uYi55KSxyfHxsLmxpbmVFbmQoKSx4PSExKTpyJiYobC5saW5lU3RhcnQoKSxsLnBvaW50KHQsZSkseD0hMSl9Zz10LHY9ZSxtPXJ9cmV0dXJuIGt9O2Z1bmN0aW9uIGkodCxhKXtyZXR1cm4geSh0WzBdLWUpPGt0P2E+MD8wOjM6eSh0WzBdLW4pPGt0P2E+MD8yOjE6eSh0WzFdLXIpPGt0P2E+MD8xOjA6YT4wPzM6Mn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHModC54LGUueCl9ZnVuY3Rpb24gcyh0LGUpe3ZhciByPWkodCwxKSxuPWkoZSwxKTtyZXR1cm4gciE9PW4/ci1uOjA9PT1yP2VbMV0tdFsxXToxPT09cj90WzBdLWVbMF06Mj09PXI/dFsxXS1lWzFdOmVbMF0tdFswXX19ZnVuY3Rpb24gc24odCl7dmFyIGU9MCxyPU10LzMsbj1Qbih0KSxhPW4oZSxyKTtyZXR1cm4gYS5wYXJhbGxlbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihlPXRbMF0qTXQvMTgwLHI9dFsxXSpNdC8xODApOltlL010KjE4MCxyL010KjE4MF19LGF9ZnVuY3Rpb24gbG4odCxlKXt2YXIgcj1NYXRoLnNpbih0KSxuPShyK01hdGguc2luKGUpKS8yLGE9MStyKigyKm4tciksaT1NYXRoLnNxcnQoYSkvbjtmdW5jdGlvbiBvKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KGEtMipuKk1hdGguc2luKGUpKS9uO3JldHVybltyKk1hdGguc2luKHQqPW4pLGktcipNYXRoLmNvcyh0KV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9aS1lO3JldHVybltNYXRoLmF0YW4yKHQscikvbixJdCgoYS0odCp0K3IqcikqbipuKS8oMipuKSldfSxvfXQuZ2VvLmNsaXBFeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixhLGksbz17c3RyZWFtOmZ1bmN0aW9uKHQpe3JldHVybiBhJiYoYS52YWxpZD0hMSksKGE9aSh0KSkudmFsaWQ9ITAsYX0sZXh0ZW50OmZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW9uKHQ9K3NbMF1bMF0sZT0rc1swXVsxXSxyPStzWzFdWzBdLG49K3NbMV1bMV0pLGEmJihhLnZhbGlkPSExLGE9bnVsbCksbyk6W1t0LGVdLFtyLG5dXX19O3JldHVybiBvLmV4dGVudChbWzAsMF0sWzk2MCw1MDBdXSl9LCh0Lmdlby5jb25pY0VxdWFsQXJlYT1mdW5jdGlvbigpe3JldHVybiBzbihsbil9KS5yYXc9bG4sdC5nZW8uYWxiZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCl9LHQuZ2VvLmFsYmVyc1VzYT1mdW5jdGlvbigpe3ZhciBlLHIsbixhLGk9dC5nZW8uYWxiZXJzKCksbz10Lmdlby5jb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbMTU0LDBdKS5jZW50ZXIoWy0yLDU4LjVdKS5wYXJhbGxlbHMoWzU1LDY1XSkscz10Lmdlby5jb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbMTU3LDBdKS5jZW50ZXIoWy0zLDE5LjldKS5wYXJhbGxlbHMoWzgsMThdKSxsPXtwb2ludDpmdW5jdGlvbih0LHIpe2U9W3Qscl19fTtmdW5jdGlvbiBjKHQpe3ZhciBpPXRbMF0sbz10WzFdO3JldHVybiBlPW51bGwscihpLG8pLGV8fChuKGksbyksZSl8fGEoaSxvKSxlfXJldHVybiBjLmludmVydD1mdW5jdGlvbih0KXt2YXIgZT1pLnNjYWxlKCkscj1pLnRyYW5zbGF0ZSgpLG49KHRbMF0tclswXSkvZSxhPSh0WzFdLXJbMV0pL2U7cmV0dXJuKGE+PS4xMiYmYTwuMjM0JiZuPj0tLjQyNSYmbjwtLjIxND9vOmE+PS4xNjYmJmE8LjIzNCYmbj49LS4yMTQmJm48LS4xMTU/czppKS5pbnZlcnQodCl9LGMuc3RyZWFtPWZ1bmN0aW9uKHQpe3ZhciBlPWkuc3RyZWFtKHQpLHI9by5zdHJlYW0odCksbj1zLnN0cmVhbSh0KTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24odCxhKXtlLnBvaW50KHQsYSksci5wb2ludCh0LGEpLG4ucG9pbnQodCxhKX0sc3BoZXJlOmZ1bmN0aW9uKCl7ZS5zcGhlcmUoKSxyLnNwaGVyZSgpLG4uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UubGluZVN0YXJ0KCksci5saW5lU3RhcnQoKSxuLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7ZS5saW5lRW5kKCksci5saW5lRW5kKCksbi5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksci5wb2x5Z29uU3RhcnQoKSxuLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ZS5wb2x5Z29uRW5kKCksci5wb2x5Z29uRW5kKCksbi5wb2x5Z29uRW5kKCl9fX0sYy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkucHJlY2lzaW9uKHQpLG8ucHJlY2lzaW9uKHQpLHMucHJlY2lzaW9uKHQpLGMpOmkucHJlY2lzaW9uKCl9LGMuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkuc2NhbGUodCksby5zY2FsZSguMzUqdCkscy5zY2FsZSh0KSxjLnRyYW5zbGF0ZShpLnRyYW5zbGF0ZSgpKSk6aS5zY2FsZSgpfSxjLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaS50cmFuc2xhdGUoKTt2YXIgZT1pLnNjYWxlKCksdT0rdFswXSxoPSt0WzFdO3JldHVybiByPWkudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1t1LS40NTUqZSxoLS4yMzgqZV0sW3UrLjQ1NSplLGgrLjIzOCplXV0pLnN0cmVhbShsKS5wb2ludCxuPW8udHJhbnNsYXRlKFt1LS4zMDcqZSxoKy4yMDEqZV0pLmNsaXBFeHRlbnQoW1t1LS40MjUqZStrdCxoKy4xMiplK2t0XSxbdS0uMjE0KmUta3QsaCsuMjM0KmUta3RdXSkuc3RyZWFtKGwpLnBvaW50LGE9cy50cmFuc2xhdGUoW3UtLjIwNSplLGgrLjIxMiplXSkuY2xpcEV4dGVudChbW3UtLjIxNCplK2t0LGgrLjE2NiplK2t0XSxbdS0uMTE1KmUta3QsaCsuMjM0KmUta3RdXSkuc3RyZWFtKGwpLnBvaW50LGN9LGMuc2NhbGUoMTA3MCl9O3ZhciBjbix1bixobixmbixwbixkbixnbj17cG9pbnQ6RCxsaW5lU3RhcnQ6RCxsaW5lRW5kOkQscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dW49MCxnbi5saW5lU3RhcnQ9dm59LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtnbi5saW5lU3RhcnQ9Z24ubGluZUVuZD1nbi5wb2ludD1ELGNuKz15KHVuLzIpfX07ZnVuY3Rpb24gdm4oKXt2YXIgdCxlLHIsbjtmdW5jdGlvbiBhKHQsZSl7dW4rPW4qdC1yKmUscj10LG49ZX1nbi5wb2ludD1mdW5jdGlvbihpLG8pe2duLnBvaW50PWEsdD1yPWksZT1uPW99LGduLmxpbmVFbmQ9ZnVuY3Rpb24oKXthKHQsZSl9fXZhciBtbj17cG9pbnQ6ZnVuY3Rpb24odCxlKXt0PGhuJiYoaG49dCk7dD5wbiYmKHBuPXQpO2U8Zm4mJihmbj1lKTtlPmRuJiYoZG49ZSl9LGxpbmVTdGFydDpELGxpbmVFbmQ6RCxwb2x5Z29uU3RhcnQ6RCxwb2x5Z29uRW5kOkR9O2Z1bmN0aW9uIHluKCl7dmFyIHQ9eG4oNC41KSxlPVtdLHI9e3BvaW50Om4sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7ci5wb2ludD1hfSxsaW5lRW5kOm8scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7ci5saW5lRW5kPXN9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtyLmxpbmVFbmQ9byxyLnBvaW50PW59LHBvaW50UmFkaXVzOmZ1bmN0aW9uKGUpe3JldHVybiB0PXhuKGUpLHJ9LHJlc3VsdDpmdW5jdGlvbigpe2lmKGUubGVuZ3RoKXt2YXIgdD1lLmpvaW4oIiIpO3JldHVybiBlPVtdLHR9fX07ZnVuY3Rpb24gbihyLG4pe2UucHVzaCgiTSIsciwiLCIsbix0KX1mdW5jdGlvbiBhKHQsbil7ZS5wdXNoKCJNIix0LCIsIixuKSxyLnBvaW50PWl9ZnVuY3Rpb24gaSh0LHIpe2UucHVzaCgiTCIsdCwiLCIscil9ZnVuY3Rpb24gbygpe3IucG9pbnQ9bn1mdW5jdGlvbiBzKCl7ZS5wdXNoKCJaIil9cmV0dXJuIHJ9ZnVuY3Rpb24geG4odCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9dmFyIGJuLF9uPXtwb2ludDp3bixsaW5lU3RhcnQ6a24sbGluZUVuZDpUbixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtfbi5saW5lU3RhcnQ9TW59LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtfbi5wb2ludD13bixfbi5saW5lU3RhcnQ9a24sX24ubGluZUVuZD1Ubn19O2Z1bmN0aW9uIHduKHQsZSl7X3IrPXQsd3IrPWUsKytrcn1mdW5jdGlvbiBrbigpe3ZhciB0LGU7ZnVuY3Rpb24gcihyLG4pe3ZhciBhPXItdCxpPW4tZSxvPU1hdGguc3FydChhKmEraSppKTtUcis9byoodCtyKS8yLE1yKz1vKihlK24pLzIsQXIrPW8sd24odD1yLGU9bil9X24ucG9pbnQ9ZnVuY3Rpb24obixhKXtfbi5wb2ludD1yLHduKHQ9bixlPWEpfX1mdW5jdGlvbiBUbigpe19uLnBvaW50PXdufWZ1bmN0aW9uIE1uKCl7dmFyIHQsZSxyLG47ZnVuY3Rpb24gYSh0LGUpe3ZhciBhPXQtcixpPWUtbixvPU1hdGguc3FydChhKmEraSppKTtUcis9byoocit0KS8yLE1yKz1vKihuK2UpLzIsQXIrPW8sU3IrPShvPW4qdC1yKmUpKihyK3QpLEVyKz1vKihuK2UpLExyKz0zKm8sd24ocj10LG49ZSl9X24ucG9pbnQ9ZnVuY3Rpb24oaSxvKXtfbi5wb2ludD1hLHduKHQ9cj1pLGU9bj1vKX0sX24ubGluZUVuZD1mdW5jdGlvbigpe2EodCxlKX19ZnVuY3Rpb24gQW4odCl7dmFyIGU9NC41LHI9e3BvaW50Om4sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7ci5wb2ludD1hfSxsaW5lRW5kOm8scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7ci5saW5lRW5kPXN9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtyLmxpbmVFbmQ9byxyLnBvaW50PW59LHBvaW50UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiBlPXQscn0scmVzdWx0OkR9O2Z1bmN0aW9uIG4ocixuKXt0Lm1vdmVUbyhyK2UsbiksdC5hcmMocixuLGUsMCxBdCl9ZnVuY3Rpb24gYShlLG4pe3QubW92ZVRvKGUsbiksci5wb2ludD1pfWZ1bmN0aW9uIGkoZSxyKXt0LmxpbmVUbyhlLHIpfWZ1bmN0aW9uIG8oKXtyLnBvaW50PW59ZnVuY3Rpb24gcygpe3QuY2xvc2VQYXRoKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gU24odCl7dmFyIGU9LjUscj1NYXRoLmNvcygzMCpMdCksbj0xNjtmdW5jdGlvbiBhKGUpe3JldHVybihuP2Z1bmN0aW9uKGUpe3ZhciByLGEsbyxzLGwsYyx1LGgsZixwLGQsZyx2PXtwb2ludDptLGxpbmVTdGFydDp5LGxpbmVFbmQ6Yixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25TdGFydCgpLHYubGluZVN0YXJ0PV99LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25FbmQoKSx2LmxpbmVTdGFydD15fX07ZnVuY3Rpb24gbShyLG4pe3I9dChyLG4pLGUucG9pbnQoclswXSxyWzFdKX1mdW5jdGlvbiB5KCl7aD1OYU4sdi5wb2ludD14LGUubGluZVN0YXJ0KCl9ZnVuY3Rpb24geChyLGEpe3ZhciBvPXpyKFtyLGFdKSxzPXQocixhKTtpKGgsZix1LHAsZCxnLGg9c1swXSxmPXNbMV0sdT1yLHA9b1swXSxkPW9bMV0sZz1vWzJdLG4sZSksZS5wb2ludChoLGYpfWZ1bmN0aW9uIGIoKXt2LnBvaW50PW0sZS5saW5lRW5kKCl9ZnVuY3Rpb24gXygpe3koKSx2LnBvaW50PXcsdi5saW5lRW5kPWt9ZnVuY3Rpb24gdyh0LGUpe3gocj10LGUpLGE9aCxvPWYscz1wLGw9ZCxjPWcsdi5wb2ludD14fWZ1bmN0aW9uIGsoKXtpKGgsZix1LHAsZCxnLGEsbyxyLHMsbCxjLG4sZSksdi5saW5lRW5kPWIsYigpfXJldHVybiB2fTpmdW5jdGlvbihlKXtyZXR1cm4gTG4oZSxmdW5jdGlvbihyLG4pe3I9dChyLG4pLGUucG9pbnQoclswXSxyWzFdKX0pfSkoZSl9ZnVuY3Rpb24gaShuLGEsbyxzLGwsYyx1LGgsZixwLGQsZyx2LG0pe3ZhciB4PXUtbixiPWgtYSxfPXgqeCtiKmI7aWYoXz40KmUmJnYtLSl7dmFyIHc9cytwLGs9bCtkLFQ9YytnLE09TWF0aC5zcXJ0KHcqdytrKmsrVCpUKSxBPU1hdGguYXNpbihULz1NKSxTPXkoeShUKS0xKTxrdHx8eShvLWYpPGt0PyhvK2YpLzI6TWF0aC5hdGFuMihrLHcpLEU9dChTLEEpLEw9RVswXSxDPUVbMV0sUD1MLW4sTz1DLWEsej1iKlAteCpPOyh6KnovXz5lfHx5KCh4KlArYipPKS9fLS41KT4uM3x8cypwK2wqZCtjKmc8cikmJihpKG4sYSxvLHMsbCxjLEwsQyxTLHcvPU0say89TSxULHYsbSksbS5wb2ludChMLEMpLGkoTCxDLFMsdyxrLFQsdSxoLGYscCxkLGcsdixtKSl9fXJldHVybiBhLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0oZT10KnQpPjAmJjE2LGEpOk1hdGguc3FydChlKX0sYX1mdW5jdGlvbiBFbih0KXt0aGlzLnN0cmVhbT10fWZ1bmN0aW9uIExuKHQsZSl7cmV0dXJue3BvaW50OmUsc3BoZXJlOmZ1bmN0aW9uKCl7dC5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dC5wb2x5Z29uRW5kKCl9fX1mdW5jdGlvbiBDbih0KXtyZXR1cm4gUG4oZnVuY3Rpb24oKXtyZXR1cm4gdH0pKCl9ZnVuY3Rpb24gUG4oZSl7dmFyIHIsbixhLGksbyxzLGw9U24oZnVuY3Rpb24odCxlKXtyZXR1cm5bKHQ9cih0LGUpKVswXSpjK2ksby10WzFdKmNdfSksYz0xNTAsdT00ODAsaD0yNTAsZj0wLHA9MCxkPTAsZz0wLHY9MCxtPXJuLHg9UCxiPW51bGwsXz1udWxsO2Z1bmN0aW9uIHcodCl7cmV0dXJuWyh0PWEodFswXSpMdCx0WzFdKkx0KSlbMF0qYytpLG8tdFsxXSpjXX1mdW5jdGlvbiBrKHQpe3JldHVybih0PWEuaW52ZXJ0KCh0WzBdLWkpL2MsKG8tdFsxXSkvYykpJiZbdFswXSpDdCx0WzFdKkN0XX1mdW5jdGlvbiBUKCl7YT1XcihuPURuKGQsZyx2KSxyKTt2YXIgdD1yKGYscCk7cmV0dXJuIGk9dS10WzBdKmMsbz1oK3RbMV0qYyxNKCl9ZnVuY3Rpb24gTSgpe3JldHVybiBzJiYocy52YWxpZD0hMSxzPW51bGwpLHd9cmV0dXJuIHcuc3RyZWFtPWZ1bmN0aW9uKHQpe3JldHVybiBzJiYocy52YWxpZD0hMSksKHM9T24obShuLGwoeCh0KSkpKSkudmFsaWQ9ITAsc30sdy5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09bnVsbD09dD8oYj10LHJuKTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmNvcyh0KSxyPWU+MCxuPXkoZSk+a3Q7cmV0dXJuIFFyKGEsZnVuY3Rpb24odCl7dmFyIGUscyxsLGMsdTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7Yz1sPSExLHU9MX0scG9pbnQ6ZnVuY3Rpb24oaCxmKXt2YXIgcCxkPVtoLGZdLGc9YShoLGYpLHY9cj9nPzA6byhoLGYpOmc/byhoKyhoPDA/TXQ6LU10KSxmKTowO2lmKCFlJiYoYz1sPWcpJiZ0LmxpbmVTdGFydCgpLGchPT1sJiYocD1pKGUsZCksKGpyKGUscCl8fGpyKGQscCkpJiYoZFswXSs9a3QsZFsxXSs9a3QsZz1hKGRbMF0sZFsxXSkpKSxnIT09bCl1PTAsZz8odC5saW5lU3RhcnQoKSxwPWkoZCxlKSx0LnBvaW50KHBbMF0scFsxXSkpOihwPWkoZSxkKSx0LnBvaW50KHBbMF0scFsxXSksdC5saW5lRW5kKCkpLGU9cDtlbHNlIGlmKG4mJmUmJnJeZyl7dmFyIG07diZzfHwhKG09aShkLGUsITApKXx8KHU9MCxyPyh0LmxpbmVTdGFydCgpLHQucG9pbnQobVswXVswXSxtWzBdWzFdKSx0LnBvaW50KG1bMV1bMF0sbVsxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KG1bMV1bMF0sbVsxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KG1bMF1bMF0sbVswXVsxXSkpKX0hZ3x8ZSYmanIoZSxkKXx8dC5wb2ludChkWzBdLGRbMV0pLGU9ZCxsPWcscz12fSxsaW5lRW5kOmZ1bmN0aW9uKCl7bCYmdC5saW5lRW5kKCksZT1udWxsfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiB1fChjJiZsKTw8MX19fSxObih0LDYqTHQpLHI/WzAsLXRdOlstTXQsdC1NdF0pO2Z1bmN0aW9uIGEodCxyKXtyZXR1cm4gTWF0aC5jb3ModCkqTWF0aC5jb3Mocik+ZX1mdW5jdGlvbiBpKHQscixuKXt2YXIgYT1bMSwwLDBdLGk9RHIoenIodCksenIocikpLG89SXIoaSxpKSxzPWlbMF0sbD1vLXMqcztpZighbClyZXR1cm4hbiYmdDt2YXIgYz1lKm8vbCx1PS1lKnMvbCxoPURyKGEsaSksZj1GcihhLGMpO1JyKGYsRnIoaSx1KSk7dmFyIHA9aCxkPUlyKGYscCksZz1JcihwLHApLHY9ZCpkLWcqKElyKGYsZiktMSk7aWYoISh2PDApKXt2YXIgbT1NYXRoLnNxcnQodikseD1GcihwLCgtZC1tKS9nKTtpZihScih4LGYpLHg9TnIoeCksIW4pcmV0dXJuIHg7dmFyIGIsXz10WzBdLHc9clswXSxrPXRbMV0sVD1yWzFdO3c8XyYmKGI9XyxfPXcsdz1iKTt2YXIgTT13LV8sQT15KE0tTXQpPGt0O2lmKCFBJiZUPGsmJihiPWssaz1ULFQ9YiksQXx8TTxrdD9BP2srVD4wXnhbMV08KHkoeFswXS1fKTxrdD9rOlQpOms8PXhbMV0mJnhbMV08PVQ6TT5NdF4oXzw9eFswXSYmeFswXTw9dykpe3ZhciBTPUZyKHAsKC1kK20pL2cpO3JldHVybiBScihTLGYpLFt4LE5yKFMpXX19fWZ1bmN0aW9uIG8oZSxuKXt2YXIgYT1yP3Q6TXQtdCxpPTA7cmV0dXJuIGU8LWE/aXw9MTplPmEmJihpfD0yKSxuPC1hP2l8PTQ6bj5hJiYoaXw9OCksaX19KChiPSt0KSpMdCksTSgpKTpifSx3LmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89dCx4PXQ/b24odFswXVswXSx0WzBdWzFdLHRbMV1bMF0sdFsxXVsxXSk6UCxNKCkpOl99LHcuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsVCgpKTpjfSx3LnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdFswXSxoPSt0WzFdLFQoKSk6W3UsaF19LHcuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXRbMF0lMzYwKkx0LHA9dFsxXSUzNjAqTHQsVCgpKTpbZipDdCxwKkN0XX0sdy5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9dFswXSUzNjAqTHQsZz10WzFdJTM2MCpMdCx2PXQubGVuZ3RoPjI/dFsyXSUzNjAqTHQ6MCxUKCkpOltkKkN0LGcqQ3QsdipDdF19LHQucmViaW5kKHcsbCwicHJlY2lzaW9uIiksZnVuY3Rpb24oKXtyZXR1cm4gcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx3LmludmVydD1yLmludmVydCYmayxUKCl9fWZ1bmN0aW9uIE9uKHQpe3JldHVybiBMbih0LGZ1bmN0aW9uKGUscil7dC5wb2ludChlKkx0LHIqTHQpfSl9ZnVuY3Rpb24gem4odCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiBJbih0LGUpe3JldHVyblt0Pk10P3QtQXQ6dDwtTXQ/dCtBdDp0LGVdfWZ1bmN0aW9uIERuKHQsZSxyKXtyZXR1cm4gdD9lfHxyP1dyKEZuKHQpLEJuKGUscikpOkZuKHQpOmV8fHI/Qm4oZSxyKTpJbn1mdW5jdGlvbiBSbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm5bKGUrPXQpPk10P2UtQXQ6ZTwtTXQ/ZStBdDplLHJdfX1mdW5jdGlvbiBGbih0KXt2YXIgZT1Sbih0KTtyZXR1cm4gZS5pbnZlcnQ9Um4oLXQpLGV9ZnVuY3Rpb24gQm4odCxlKXt2YXIgcj1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpLGE9TWF0aC5jb3MoZSksaT1NYXRoLnNpbihlKTtmdW5jdGlvbiBvKHQsZSl7dmFyIG89TWF0aC5jb3MoZSkscz1NYXRoLmNvcyh0KSpvLGw9TWF0aC5zaW4odCkqbyxjPU1hdGguc2luKGUpLHU9YypyK3MqbjtyZXR1cm5bTWF0aC5hdGFuMihsKmEtdSppLHMqci1jKm4pLEl0KHUqYStsKmkpXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbz1NYXRoLmNvcyhlKSxzPU1hdGguY29zKHQpKm8sbD1NYXRoLnNpbih0KSpvLGM9TWF0aC5zaW4oZSksdT1jKmEtbCppO3JldHVybltNYXRoLmF0YW4yKGwqYStjKmkscypyK3UqbiksSXQodSpyLXMqbildfSxvfWZ1bmN0aW9uIE5uKHQsZSl7dmFyIHI9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gZnVuY3Rpb24oYSxpLG8scyl7dmFyIGw9byplO251bGwhPWE/KGE9am4ocixhKSxpPWpuKHIsaSksKG8+MD9hPGk6YT5pKSYmKGErPW8qQXQpKTooYT10K28qQXQsaT10LS41KmwpO2Zvcih2YXIgYyx1PWE7bz4wP3U+aTp1PGk7dS09bClzLnBvaW50KChjPU5yKFtyLC1uKk1hdGguY29zKHUpLC1uKk1hdGguc2luKHUpXSkpWzBdLGNbMV0pfX1mdW5jdGlvbiBqbih0LGUpe3ZhciByPXpyKGUpO3JbMF0tPXQsQnIocik7dmFyIG49enQoLXJbMV0pO3JldHVybigoLXJbMl08MD8tbjpuKSsyKk1hdGguUEkta3QpJSgyKk1hdGguUEkpfWZ1bmN0aW9uIFZuKGUscixuKXt2YXIgYT10LnJhbmdlKGUsci1rdCxuKS5jb25jYXQocik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBhLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bdCxlXX0pfX1mdW5jdGlvbiBVbihlLHIsbil7dmFyIGE9dC5yYW5nZShlLHIta3QsbikuY29uY2F0KHIpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdF19KX19ZnVuY3Rpb24gcW4odCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIEhuKHQpe3JldHVybiB0LnRhcmdldH10Lmdlby5wYXRoPWZ1bmN0aW9uKCl7dmFyIGUscixuLGEsaSxvPTQuNTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiYoImZ1bmN0aW9uIj09dHlwZW9mIG8mJmEucG9pbnRSYWRpdXMoK28uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxpJiZpLnZhbGlkfHwoaT1uKGEpKSx0Lmdlby5zdHJlYW0oZSxpKSksYS5yZXN1bHQoKX1mdW5jdGlvbiBsKCl7cmV0dXJuIGk9bnVsbCxzfXJldHVybiBzLmFyZWE9ZnVuY3Rpb24oZSl7cmV0dXJuIGNuPTAsdC5nZW8uc3RyZWFtKGUsbihnbikpLGNufSxzLmNlbnRyb2lkPWZ1bmN0aW9uKGUpe3JldHVybiBfcj13cj1rcj1Ucj1Ncj1Bcj1Tcj1Fcj1Mcj0wLHQuZ2VvLnN0cmVhbShlLG4oX24pKSxMcj9bU3IvTHIsRXIvTHJdOkFyP1tUci9BcixNci9Bcl06a3I/W19yL2tyLHdyL2tyXTpbTmFOLE5hTl19LHMuYm91bmRzPWZ1bmN0aW9uKGUpe3JldHVybiBwbj1kbj0tKGhuPWZuPTEvMCksdC5nZW8uc3RyZWFtKGUsbihtbikpLFtbaG4sZm5dLFtwbixkbl1dfSxzLnByb2plY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49KGU9dCk/dC5zdHJlYW18fChyPXQsYT1TbihmdW5jdGlvbih0LGUpe3JldHVybiByKFt0KkN0LGUqQ3RdKX0pLGZ1bmN0aW9uKHQpe3JldHVybiBPbihhKHQpKX0pOlAsbCgpKTplO3ZhciByLGF9LHMuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1udWxsPT0ocj10KT9uZXcgeW46bmV3IEFuKHQpLCJmdW5jdGlvbiIhPXR5cGVvZiBvJiZhLnBvaW50UmFkaXVzKG8pLGwoKSk6cn0scy5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihhLnBvaW50UmFkaXVzKCt0KSwrdCkscyk6b30scy5wcm9qZWN0aW9uKHQuZ2VvLmFsYmVyc1VzYSgpKS5jb250ZXh0KG51bGwpfSx0Lmdlby50cmFuc2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJue3N0cmVhbTpmdW5jdGlvbihlKXt2YXIgcj1uZXcgRW4oZSk7Zm9yKHZhciBuIGluIHQpcltuXT10W25dO3JldHVybiByfX19LEVuLnByb3RvdHlwZT17cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX0sdC5nZW8ucHJvamVjdGlvbj1Dbix0Lmdlby5wcm9qZWN0aW9uTXV0YXRvcj1QbiwodC5nZW8uZXF1aXJlY3Rhbmd1bGFyPWZ1bmN0aW9uKCl7cmV0dXJuIENuKHpuKX0pLnJhdz16bi5pbnZlcnQ9em4sdC5nZW8ucm90YXRpb249ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qTHQsZVsxXSpMdCkpWzBdKj1DdCxlWzFdKj1DdCxlfXJldHVybiB0PURuKHRbMF0lMzYwKkx0LHRbMV0qTHQsdC5sZW5ndGg+Mj90WzJdKkx0OjApLGUuaW52ZXJ0PWZ1bmN0aW9uKGUpe3JldHVybihlPXQuaW52ZXJ0KGVbMF0qTHQsZVsxXSpMdCkpWzBdKj1DdCxlWzFdKj1DdCxlfSxlfSxJbi5pbnZlcnQ9em4sdC5nZW8uY2lyY2xlPWZ1bmN0aW9uKCl7dmFyIHQsZSxyPVswLDBdLG49NjtmdW5jdGlvbiBhKCl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6cixuPURuKC10WzBdKkx0LC10WzFdKkx0LDApLmludmVydCxhPVtdO3JldHVybiBlKG51bGwsbnVsbCwxLHtwb2ludDpmdW5jdGlvbih0LGUpe2EucHVzaCh0PW4odCxlKSksdFswXSo9Q3QsdFsxXSo9Q3R9fSkse3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlthXX19cmV0dXJuIGEub3JpZ2luPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsYSk6cn0sYS5hbmdsZT1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1ObigodD0rcikqTHQsbipMdCksYSk6dH0sYS5wcmVjaXNpb249ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9Tm4odCpMdCwobj0rcikqTHQpLGEpOm59LGEuYW5nbGUoOTApfSx0Lmdlby5kaXN0YW5jZT1mdW5jdGlvbih0LGUpe3ZhciByLG49KGVbMF0tdFswXSkqTHQsYT10WzFdKkx0LGk9ZVsxXSpMdCxvPU1hdGguc2luKG4pLHM9TWF0aC5jb3MobiksbD1NYXRoLnNpbihhKSxjPU1hdGguY29zKGEpLHU9TWF0aC5zaW4oaSksaD1NYXRoLmNvcyhpKTtyZXR1cm4gTWF0aC5hdGFuMihNYXRoLnNxcnQoKHI9aCpvKSpyKyhyPWMqdS1sKmgqcykqciksbCp1K2MqaCpzKX0sdC5nZW8uZ3JhdGljdWxlPWZ1bmN0aW9uKCl7dmFyIGUscixuLGEsaSxvLHMsbCxjLHUsaCxmLHA9MTAsZD1wLGc9OTAsdj0zNjAsbT0yLjU7ZnVuY3Rpb24geCgpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOmIoKX19ZnVuY3Rpb24gYigpe3JldHVybiB0LnJhbmdlKE1hdGguY2VpbChhL2cpKmcsbixnKS5tYXAoaCkuY29uY2F0KHQucmFuZ2UoTWF0aC5jZWlsKGwvdikqdixzLHYpLm1hcChmKSkuY29uY2F0KHQucmFuZ2UoTWF0aC5jZWlsKHIvcCkqcCxlLHApLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4geSh0JWcpPmt0fSkubWFwKGMpKS5jb25jYXQodC5yYW5nZShNYXRoLmNlaWwoby9kKSpkLGksZCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB5KHQldik+a3R9KS5tYXAodSkpfXJldHVybiB4LmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGIoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSl9LHgub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbaChhKS5jb25jYXQoZihzKS5zbGljZSgxKSxoKG4pLnJldmVyc2UoKS5zbGljZSgxKSxmKGwpLnJldmVyc2UoKS5zbGljZSgxKSldfX0seC5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/eC5tYWpvckV4dGVudCh0KS5taW5vckV4dGVudCh0KTp4Lm1pbm9yRXh0ZW50KCl9LHgubWFqb3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3RbMF1bMF0sbj0rdFsxXVswXSxsPSt0WzBdWzFdLHM9K3RbMV1bMV0sYT5uJiYodD1hLGE9bixuPXQpLGw+cyYmKHQ9bCxsPXMscz10KSx4LnByZWNpc2lvbihtKSk6W1thLGxdLFtuLHNdXX0seC5taW5vckV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdFswXVswXSxlPSt0WzFdWzBdLG89K3RbMF1bMV0saT0rdFsxXVsxXSxyPmUmJih0PXIscj1lLGU9dCksbz5pJiYodD1vLG89aSxpPXQpLHgucHJlY2lzaW9uKG0pKTpbW3Isb10sW2UsaV1dfSx4LnN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/eC5tYWpvclN0ZXAodCkubWlub3JTdGVwKHQpOngubWlub3JTdGVwKCl9LHgubWFqb3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPSt0WzBdLHY9K3RbMV0seCk6W2csdl19LHgubWlub3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLGQ9K3RbMV0seCk6W3AsZF19LHgucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPSt0LGM9Vm4obyxpLDkwKSx1PVVuKHIsZSxtKSxoPVZuKGwscyw5MCksZj1VbihhLG4sbSkseCk6bX0seC5tYWpvckV4dGVudChbWy0xODAsLTkwK2t0XSxbMTgwLDkwLWt0XV0pLm1pbm9yRXh0ZW50KFtbLTE4MCwtODAta3RdLFsxODAsODAra3RdXSl9LHQuZ2VvLmdyZWF0QXJjPWZ1bmN0aW9uKCl7dmFyIGUscixuPXFuLGE9SG47ZnVuY3Rpb24gaSgpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpbZXx8bi5hcHBseSh0aGlzLGFyZ3VtZW50cykscnx8YS5hcHBseSh0aGlzLGFyZ3VtZW50cyldfX1yZXR1cm4gaS5kaXN0YW5jZT1mdW5jdGlvbigpe3JldHVybiB0Lmdlby5kaXN0YW5jZShlfHxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyfHxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGkuc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT0iZnVuY3Rpb24iPT10eXBlb2YgdD9udWxsOnQsaSk6bn0saS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P251bGw6dCxpKTphfSxpLnByZWNpc2lvbj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2k6MH0saX0sdC5nZW8uaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcj10WzBdKkx0LG49dFsxXSpMdCxhPWVbMF0qTHQsaT1lWzFdKkx0LG89TWF0aC5jb3Mobikscz1NYXRoLnNpbihuKSxsPU1hdGguY29zKGkpLGM9TWF0aC5zaW4oaSksdT1vKk1hdGguY29zKHIpLGg9bypNYXRoLnNpbihyKSxmPWwqTWF0aC5jb3MoYSkscD1sKk1hdGguc2luKGEpLGQ9MipNYXRoLmFzaW4oTWF0aC5zcXJ0KFJ0KGktbikrbypsKlJ0KGEtcikpKSxnPTEvTWF0aC5zaW4oZCksKHY9ZD9mdW5jdGlvbih0KXt2YXIgZT1NYXRoLnNpbih0Kj1kKSpnLHI9TWF0aC5zaW4oZC10KSpnLG49cip1K2UqZixhPXIqaCtlKnAsaT1yKnMrZSpjO3JldHVybltNYXRoLmF0YW4yKGEsbikqQ3QsTWF0aC5hdGFuMihpLE1hdGguc3FydChuKm4rYSphKSkqQ3RdfTpmdW5jdGlvbigpe3JldHVybltyKkN0LG4qQ3RdfSkuZGlzdGFuY2U9ZCx2O3ZhciByLG4sYSxpLG8scyxsLGMsdSxoLGYscCxkLGcsdn0sdC5nZW8ubGVuZ3RoPWZ1bmN0aW9uKGUpe3JldHVybiBibj0wLHQuZ2VvLnN0cmVhbShlLEduKSxibn07dmFyIEduPXtzcGhlcmU6RCxwb2ludDpELGxpbmVTdGFydDpmdW5jdGlvbigpe3ZhciB0LGUscjtmdW5jdGlvbiBuKG4sYSl7dmFyIGk9TWF0aC5zaW4oYSo9THQpLG89TWF0aC5jb3MoYSkscz15KChuKj1MdCktdCksbD1NYXRoLmNvcyhzKTtibis9TWF0aC5hdGFuMihNYXRoLnNxcnQoKHM9bypNYXRoLnNpbihzKSkqcysocz1yKmktZSpvKmwpKnMpLGUqaStyKm8qbCksdD1uLGU9aSxyPW99R24ucG9pbnQ9ZnVuY3Rpb24oYSxpKXt0PWEqTHQsZT1NYXRoLnNpbihpKj1MdCkscj1NYXRoLmNvcyhpKSxHbi5wb2ludD1ufSxHbi5saW5lRW5kPWZ1bmN0aW9uKCl7R24ucG9pbnQ9R24ubGluZUVuZD1EfX0sbGluZUVuZDpELHBvbHlnb25TdGFydDpELHBvbHlnb25FbmQ6RH07ZnVuY3Rpb24gWW4odCxlKXtmdW5jdGlvbiByKGUscil7dmFyIG49TWF0aC5jb3MoZSksYT1NYXRoLmNvcyhyKSxpPXQobiphKTtyZXR1cm5baSphKk1hdGguc2luKGUpLGkqTWF0aC5zaW4ocildfXJldHVybiByLmludmVydD1mdW5jdGlvbih0LHIpe3ZhciBuPU1hdGguc3FydCh0KnQrcipyKSxhPWUobiksaT1NYXRoLnNpbihhKSxvPU1hdGguY29zKGEpO3JldHVybltNYXRoLmF0YW4yKHQqaSxuKm8pLE1hdGguYXNpbihuJiZyKmkvbildfSxyfXZhciBXbj1ZbihmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KDIvKDErdCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gMipNYXRoLmFzaW4odC8yKX0pOyh0Lmdlby5hemltdXRoYWxFcXVhbEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gQ24oV24pfSkucmF3PVduO3ZhciBYbj1ZbihmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmFjb3ModCk7cmV0dXJuIGUmJmUvTWF0aC5zaW4oZSl9LFApO2Z1bmN0aW9uIFpuKHQsZSl7dmFyIHI9TWF0aC5jb3ModCksbj1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC50YW4oTXQvNCt0LzIpfSxhPXQ9PT1lP01hdGguc2luKHQpOk1hdGgubG9nKHIvTWF0aC5jb3MoZSkpL01hdGgubG9nKG4oZSkvbih0KSksaT1yKk1hdGgucG93KG4odCksYSkvYTtpZighYSlyZXR1cm4gUW47ZnVuY3Rpb24gbyh0LGUpe2k+MD9lPC1FdCtrdCYmKGU9LUV0K2t0KTplPkV0LWt0JiYoZT1FdC1rdCk7dmFyIHI9aS9NYXRoLnBvdyhuKGUpLGEpO3JldHVybltyKk1hdGguc2luKGEqdCksaS1yKk1hdGguY29zKGEqdCldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciByPWktZSxuPVB0KGEpKk1hdGguc3FydCh0KnQrcipyKTtyZXR1cm5bTWF0aC5hdGFuMih0LHIpL2EsMipNYXRoLmF0YW4oTWF0aC5wb3coaS9uLDEvYSkpLUV0XX0sb31mdW5jdGlvbiBKbih0LGUpe3ZhciByPU1hdGguY29zKHQpLG49dD09PWU/TWF0aC5zaW4odCk6KHItTWF0aC5jb3MoZSkpLyhlLXQpLGE9ci9uK3Q7aWYoeShuKTxrdClyZXR1cm4gem47ZnVuY3Rpb24gaSh0LGUpe3ZhciByPWEtZTtyZXR1cm5bcipNYXRoLnNpbihuKnQpLGEtcipNYXRoLmNvcyhuKnQpXX1yZXR1cm4gaS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1hLWU7cmV0dXJuW01hdGguYXRhbjIodCxyKS9uLGEtUHQobikqTWF0aC5zcXJ0KHQqdCtyKnIpXX0saX0odC5nZW8uYXppbXV0aGFsRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gQ24oWG4pfSkucmF3PVhuLCh0Lmdlby5jb25pY0NvbmZvcm1hbD1mdW5jdGlvbigpe3JldHVybiBzbihabil9KS5yYXc9Wm4sKHQuZ2VvLmNvbmljRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gc24oSm4pfSkucmF3PUpuO3ZhciBLbj1ZbihmdW5jdGlvbih0KXtyZXR1cm4gMS90fSxNYXRoLmF0YW4pO2Z1bmN0aW9uIFFuKHQsZSl7cmV0dXJuW3QsTWF0aC5sb2coTWF0aC50YW4oTXQvNCtlLzIpKV19ZnVuY3Rpb24gJG4odCl7dmFyIGUscj1Dbih0KSxuPXIuc2NhbGUsYT1yLnRyYW5zbGF0ZSxpPXIuY2xpcEV4dGVudDtyZXR1cm4gci5zY2FsZT1mdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkocixhcmd1bWVudHMpO3JldHVybiB0PT09cj9lP3IuY2xpcEV4dGVudChudWxsKTpyOnR9LHIudHJhbnNsYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9YS5hcHBseShyLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1yP2U/ci5jbGlwRXh0ZW50KG51bGwpOnI6dH0sci5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBvPWkuYXBwbHkocixhcmd1bWVudHMpO2lmKG89PT1yKXtpZihlPW51bGw9PXQpe3ZhciBzPU10Km4oKSxsPWEoKTtpKFtbbFswXS1zLGxbMV0tc10sW2xbMF0rcyxsWzFdK3NdXSl9fWVsc2UgZSYmKG89bnVsbCk7cmV0dXJuIG99LHIuY2xpcEV4dGVudChudWxsKX0odC5nZW8uZ25vbW9uaWM9ZnVuY3Rpb24oKXtyZXR1cm4gQ24oS24pfSkucmF3PUtuLFFuLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0LDIqTWF0aC5hdGFuKE1hdGguZXhwKGUpKS1FdF19LCh0Lmdlby5tZXJjYXRvcj1mdW5jdGlvbigpe3JldHVybiAkbihRbil9KS5yYXc9UW47dmFyIHRhPVluKGZ1bmN0aW9uKCl7cmV0dXJuIDF9LE1hdGguYXNpbik7KHQuZ2VvLm9ydGhvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBDbih0YSl9KS5yYXc9dGE7dmFyIGVhPVluKGZ1bmN0aW9uKHQpe3JldHVybiAxLygxK3QpfSxmdW5jdGlvbih0KXtyZXR1cm4gMipNYXRoLmF0YW4odCl9KTtmdW5jdGlvbiByYSh0LGUpe3JldHVybltNYXRoLmxvZyhNYXRoLnRhbihNdC80K2UvMikpLC10XX1mdW5jdGlvbiBuYSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBhYSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBpYSh0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1bMCwxXSxuPTIsYT0yO2E8ZTthKyspe2Zvcig7bj4xJiZPdCh0W3Jbbi0yXV0sdFtyW24tMV1dLHRbYV0pPD0wOyktLW47cltuKytdPWF9cmV0dXJuIHIuc2xpY2UoMCxuKX1mdW5jdGlvbiBvYSh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX0odC5nZW8uc3RlcmVvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBDbihlYSl9KS5yYXc9ZWEscmEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqTWF0aC5hdGFuKE1hdGguZXhwKHQpKS1FdF19LCh0Lmdlby50cmFuc3ZlcnNlTWVyY2F0b3I9ZnVuY3Rpb24oKXt2YXIgdD0kbihyYSksZT10LmNlbnRlcixyPXQucm90YXRlO3JldHVybiB0LmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdD9lKFstdFsxXSx0WzBdXSk6Wyh0PWUoKSlbMV0sLXRbMF1dfSx0LnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdD9yKFt0WzBdLHRbMV0sdC5sZW5ndGg+Mj90WzJdKzkwOjkwXSk6Wyh0PXIoKSlbMF0sdFsxXSx0WzJdLTkwXX0scihbMCwwLDkwXSl9KS5yYXc9cmEsdC5nZW9tPXt9LHQuZ2VvbS5odWxsPWZ1bmN0aW9uKHQpe3ZhciBlPW5hLHI9YWE7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbih0KTtmdW5jdGlvbiBuKHQpe2lmKHQubGVuZ3RoPDMpcmV0dXJuW107dmFyIG4sYT12ZShlKSxpPXZlKHIpLG89dC5sZW5ndGgscz1bXSxsPVtdO2ZvcihuPTA7bjxvO24rKylzLnB1c2goWythLmNhbGwodGhpcyx0W25dLG4pLCtpLmNhbGwodGhpcyx0W25dLG4pLG5dKTtmb3Iocy5zb3J0KG9hKSxuPTA7bjxvO24rKylsLnB1c2goW3Nbbl1bMF0sLXNbbl1bMV1dKTt2YXIgYz1pYShzKSx1PWlhKGwpLGg9dVswXT09PWNbMF0sZj11W3UubGVuZ3RoLTFdPT09Y1tjLmxlbmd0aC0xXSxwPVtdO2ZvcihuPWMubGVuZ3RoLTE7bj49MDstLW4pcC5wdXNoKHRbc1tjW25dXVsyXV0pO2ZvcihuPStoO248dS5sZW5ndGgtZjsrK24pcC5wdXNoKHRbc1t1W25dXVsyXV0pO3JldHVybiBwfXJldHVybiBuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxufSx0Lmdlb20ucG9seWdvbj1mdW5jdGlvbih0KXtyZXR1cm4gVSh0LHNhKSx0fTt2YXIgc2E9dC5nZW9tLnBvbHlnb24ucHJvdG90eXBlPVtdO2Z1bmN0aW9uIGxhKHQsZSxyKXtyZXR1cm4oclswXS1lWzBdKSoodFsxXS1lWzFdKTwoclsxXS1lWzFdKSoodFswXS1lWzBdKX1mdW5jdGlvbiBjYSh0LGUscixuKXt2YXIgYT10WzBdLGk9clswXSxvPWVbMF0tYSxzPW5bMF0taSxsPXRbMV0sYz1yWzFdLHU9ZVsxXS1sLGg9blsxXS1jLGY9KHMqKGwtYyktaCooYS1pKSkvKGgqby1zKnUpO3JldHVyblthK2YqbyxsK2YqdV19ZnVuY3Rpb24gdWEodCl7dmFyIGU9dFswXSxyPXRbdC5sZW5ndGgtMV07cmV0dXJuIShlWzBdLXJbMF18fGVbMV0tclsxXSl9c2EuYXJlYT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPS0xLHI9dGhpcy5sZW5ndGgsbj10aGlzW3ItMV0sYT0wOysrZTxyOyl0PW4sbj10aGlzW2VdLGErPXRbMV0qblswXS10WzBdKm5bMV07cmV0dXJuLjUqYX0sc2EuY2VudHJvaWQ9ZnVuY3Rpb24odCl7dmFyIGUscixuPS0xLGE9dGhpcy5sZW5ndGgsaT0wLG89MCxzPXRoaXNbYS0xXTtmb3IoYXJndW1lbnRzLmxlbmd0aHx8KHQ9LTEvKDYqdGhpcy5hcmVhKCkpKTsrK248YTspZT1zLHM9dGhpc1tuXSxyPWVbMF0qc1sxXS1zWzBdKmVbMV0saSs9KGVbMF0rc1swXSkqcixvKz0oZVsxXStzWzFdKSpyO3JldHVybltpKnQsbyp0XX0sc2EuY2xpcD1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGEsaSxvLHM9dWEodCksbD0tMSxjPXRoaXMubGVuZ3RoLXVhKHRoaXMpLHU9dGhpc1tjLTFdOysrbDxjOyl7Zm9yKGU9dC5zbGljZSgpLHQubGVuZ3RoPTAsYT10aGlzW2xdLGk9ZVsobj1lLmxlbmd0aC1zKS0xXSxyPS0xOysrcjxuOylsYShvPWVbcl0sdSxhKT8obGEoaSx1LGEpfHx0LnB1c2goY2EoaSxvLHUsYSkpLHQucHVzaChvKSk6bGEoaSx1LGEpJiZ0LnB1c2goY2EoaSxvLHUsYSkpLGk9bztzJiZ0LnB1c2godFswXSksdT1hfXJldHVybiB0fTt2YXIgaGEsZmEscGEsZGEsZ2EsdmE9W10sbWE9W107ZnVuY3Rpb24geWEoKXtSYSh0aGlzKSx0aGlzLmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24geGEodCl7dmFyIGU9dmEucG9wKCl8fG5ldyB5YTtyZXR1cm4gZS5zaXRlPXQsZX1mdW5jdGlvbiBiYSh0KXtMYSh0KSxwYS5yZW1vdmUodCksdmEucHVzaCh0KSxSYSh0KX1mdW5jdGlvbiBfYSh0KXt2YXIgZT10LmNpcmNsZSxyPWUueCxuPWUuY3ksYT17eDpyLHk6bn0saT10LlAsbz10Lk4scz1bdF07YmEodCk7Zm9yKHZhciBsPWk7bC5jaXJjbGUmJnkoci1sLmNpcmNsZS54KTxrdCYmeShuLWwuY2lyY2xlLmN5KTxrdDspaT1sLlAscy51bnNoaWZ0KGwpLGJhKGwpLGw9aTtzLnVuc2hpZnQobCksTGEobCk7Zm9yKHZhciBjPW87Yy5jaXJjbGUmJnkoci1jLmNpcmNsZS54KTxrdCYmeShuLWMuY2lyY2xlLmN5KTxrdDspbz1jLk4scy5wdXNoKGMpLGJhKGMpLGM9bztzLnB1c2goYyksTGEoYyk7dmFyIHUsaD1zLmxlbmd0aDtmb3IodT0xO3U8aDsrK3UpYz1zW3VdLGw9c1t1LTFdLHphKGMuZWRnZSxsLnNpdGUsYy5zaXRlLGEpO2w9c1swXSwoYz1zW2gtMV0pLmVkZ2U9T2EobC5zaXRlLGMuc2l0ZSxudWxsLGEpLEVhKGwpLEVhKGMpfWZ1bmN0aW9uIHdhKHQpe2Zvcih2YXIgZSxyLG4sYSxpPXQueCxvPXQueSxzPXBhLl87czspaWYoKG49a2EocyxvKS1pKT5rdClzPXMuTDtlbHNle2lmKCEoKGE9aS1UYShzLG8pKT5rdCkpe24+LWt0PyhlPXMuUCxyPXMpOmE+LWt0PyhlPXMscj1zLk4pOmU9cj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn12YXIgbD14YSh0KTtpZihwYS5pbnNlcnQoZSxsKSxlfHxyKXtpZihlPT09cilyZXR1cm4gTGEoZSkscj14YShlLnNpdGUpLHBhLmluc2VydChsLHIpLGwuZWRnZT1yLmVkZ2U9T2EoZS5zaXRlLGwuc2l0ZSksRWEoZSksdm9pZCBFYShyKTtpZihyKXtMYShlKSxMYShyKTt2YXIgYz1lLnNpdGUsdT1jLngsaD1jLnksZj10LngtdSxwPXQueS1oLGQ9ci5zaXRlLGc9ZC54LXUsdj1kLnktaCxtPTIqKGYqdi1wKmcpLHk9ZipmK3AqcCx4PWcqZyt2KnYsYj17eDoodip5LXAqeCkvbSt1LHk6KGYqeC1nKnkpL20raH07emEoci5lZGdlLGMsZCxiKSxsLmVkZ2U9T2EoYyx0LG51bGwsYiksci5lZGdlPU9hKHQsZCxudWxsLGIpLEVhKGUpLEVhKHIpfWVsc2UgbC5lZGdlPU9hKGUuc2l0ZSxsLnNpdGUpfX1mdW5jdGlvbiBrYSh0LGUpe3ZhciByPXQuc2l0ZSxuPXIueCxhPXIueSxpPWEtZTtpZighaSlyZXR1cm4gbjt2YXIgbz10LlA7aWYoIW8pcmV0dXJuLTEvMDt2YXIgcz0ocj1vLnNpdGUpLngsbD1yLnksYz1sLWU7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1uLGg9MS9pLTEvYyxmPXUvYztyZXR1cm4gaD8oLWYrTWF0aC5zcXJ0KGYqZi0yKmgqKHUqdS8oLTIqYyktbCtjLzIrYS1pLzIpKSkvaCtuOihuK3MpLzJ9ZnVuY3Rpb24gVGEodCxlKXt2YXIgcj10Lk47aWYocilyZXR1cm4ga2EocixlKTt2YXIgbj10LnNpdGU7cmV0dXJuIG4ueT09PWU/bi54OjEvMH1mdW5jdGlvbiBNYSh0KXt0aGlzLnNpdGU9dCx0aGlzLmVkZ2VzPVtdfWZ1bmN0aW9uIEFhKHQsZSl7cmV0dXJuIGUuYW5nbGUtdC5hbmdsZX1mdW5jdGlvbiBTYSgpe1JhKHRoaXMpLHRoaXMueD10aGlzLnk9dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBFYSh0KXt2YXIgZT10LlAscj10Lk47aWYoZSYmcil7dmFyIG49ZS5zaXRlLGE9dC5zaXRlLGk9ci5zaXRlO2lmKG4hPT1pKXt2YXIgbz1hLngscz1hLnksbD1uLngtbyxjPW4ueS1zLHU9aS54LW8saD0yKihsKih2PWkueS1zKS1jKnUpO2lmKCEoaD49LVR0KSl7dmFyIGY9bCpsK2MqYyxwPXUqdSt2KnYsZD0odipmLWMqcCkvaCxnPShsKnAtdSpmKS9oLHY9ZytzLG09bWEucG9wKCl8fG5ldyBTYTttLmFyYz10LG0uc2l0ZT1hLG0ueD1kK28sbS55PXYrTWF0aC5zcXJ0KGQqZCtnKmcpLG0uY3k9dix0LmNpcmNsZT1tO2Zvcih2YXIgeT1udWxsLHg9Z2EuXzt4OylpZihtLnk8eC55fHxtLnk9PT14LnkmJm0ueDw9eC54KXtpZigheC5MKXt5PXguUDticmVha314PXguTH1lbHNle2lmKCF4LlIpe3k9eDticmVha314PXguUn1nYS5pbnNlcnQoeSxtKSx5fHwoZGE9bSl9fX19ZnVuY3Rpb24gTGEodCl7dmFyIGU9dC5jaXJjbGU7ZSYmKGUuUHx8KGRhPWUuTiksZ2EucmVtb3ZlKGUpLG1hLnB1c2goZSksUmEoZSksdC5jaXJjbGU9bnVsbCl9ZnVuY3Rpb24gQ2EodCxlKXt2YXIgcj10LmI7aWYocilyZXR1cm4hMDt2YXIgbixhLGk9dC5hLG89ZVswXVswXSxzPWVbMV1bMF0sbD1lWzBdWzFdLGM9ZVsxXVsxXSx1PXQubCxoPXQucixmPXUueCxwPXUueSxkPWgueCxnPWgueSx2PShmK2QpLzIsbT0ocCtnKS8yO2lmKGc9PT1wKXtpZih2PG98fHY+PXMpcmV0dXJuO2lmKGY+ZCl7aWYoaSl7aWYoaS55Pj1jKXJldHVybn1lbHNlIGk9e3g6dix5Omx9O3I9e3g6dix5OmN9fWVsc2V7aWYoaSl7aWYoaS55PGwpcmV0dXJufWVsc2UgaT17eDp2LHk6Y307cj17eDp2LHk6bH19fWVsc2UgaWYoYT1tLShuPShmLWQpLyhnLXApKSp2LG48LTF8fG4+MSlpZihmPmQpe2lmKGkpe2lmKGkueT49YylyZXR1cm59ZWxzZSBpPXt4OihsLWEpL24seTpsfTtyPXt4OihjLWEpL24seTpjfX1lbHNle2lmKGkpe2lmKGkueTxsKXJldHVybn1lbHNlIGk9e3g6KGMtYSkvbix5OmN9O3I9e3g6KGwtYSkvbix5Omx9fWVsc2UgaWYocDxnKXtpZihpKXtpZihpLng+PXMpcmV0dXJufWVsc2UgaT17eDpvLHk6bipvK2F9O3I9e3g6cyx5Om4qcythfX1lbHNle2lmKGkpe2lmKGkueDxvKXJldHVybn1lbHNlIGk9e3g6cyx5Om4qcythfTtyPXt4Om8seTpuKm8rYX19cmV0dXJuIHQuYT1pLHQuYj1yLCEwfWZ1bmN0aW9uIFBhKHQsZSl7dGhpcy5sPXQsdGhpcy5yPWUsdGhpcy5hPXRoaXMuYj1udWxsfWZ1bmN0aW9uIE9hKHQsZSxyLG4pe3ZhciBhPW5ldyBQYSh0LGUpO3JldHVybiBoYS5wdXNoKGEpLHImJnphKGEsdCxlLHIpLG4mJnphKGEsZSx0LG4pLGZhW3QuaV0uZWRnZXMucHVzaChuZXcgSWEoYSx0LGUpKSxmYVtlLmldLmVkZ2VzLnB1c2gobmV3IElhKGEsZSx0KSksYX1mdW5jdGlvbiB6YSh0LGUscixuKXt0LmF8fHQuYj90Lmw9PT1yP3QuYj1uOnQuYT1uOih0LmE9bix0Lmw9ZSx0LnI9cil9ZnVuY3Rpb24gSWEodCxlLHIpe3ZhciBuPXQuYSxhPXQuYjt0aGlzLmVkZ2U9dCx0aGlzLnNpdGU9ZSx0aGlzLmFuZ2xlPXI/TWF0aC5hdGFuMihyLnktZS55LHIueC1lLngpOnQubD09PWU/TWF0aC5hdGFuMihhLngtbi54LG4ueS1hLnkpOk1hdGguYXRhbjIobi54LWEueCxhLnktbi55KX1mdW5jdGlvbiBEYSgpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIFJhKHQpe3QuVT10LkM9dC5MPXQuUj10LlA9dC5OPW51bGx9ZnVuY3Rpb24gRmEodCxlKXt2YXIgcj1lLG49ZS5SLGE9ci5VO2E/YS5MPT09cj9hLkw9bjphLlI9bjp0Ll89bixuLlU9YSxyLlU9bixyLlI9bi5MLHIuUiYmKHIuUi5VPXIpLG4uTD1yfWZ1bmN0aW9uIEJhKHQsZSl7dmFyIHI9ZSxuPWUuTCxhPXIuVTthP2EuTD09PXI/YS5MPW46YS5SPW46dC5fPW4sbi5VPWEsci5VPW4sci5MPW4uUixyLkwmJihyLkwuVT1yKSxuLlI9cn1mdW5jdGlvbiBOYSh0KXtmb3IoO3QuTDspdD10Lkw7cmV0dXJuIHR9ZnVuY3Rpb24gamEodCxlKXt2YXIgcixuLGEsaT10LnNvcnQoVmEpLnBvcCgpO2ZvcihoYT1bXSxmYT1uZXcgQXJyYXkodC5sZW5ndGgpLHBhPW5ldyBEYSxnYT1uZXcgRGE7OylpZihhPWRhLGkmJighYXx8aS55PGEueXx8aS55PT09YS55JiZpLng8YS54KSlpLng9PT1yJiZpLnk9PT1ufHwoZmFbaS5pXT1uZXcgTWEoaSksd2EoaSkscj1pLngsbj1pLnkpLGk9dC5wb3AoKTtlbHNle2lmKCFhKWJyZWFrO19hKGEuYXJjKX1lJiYoZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9aGEsbj1ubih0WzBdWzBdLHRbMF1bMV0sdFsxXVswXSx0WzFdWzFdKSxhPXIubGVuZ3RoO2EtLTspKCFDYShlPXJbYV0sdCl8fCFuKGUpfHx5KGUuYS54LWUuYi54KTxrdCYmeShlLmEueS1lLmIueSk8a3QpJiYoZS5hPWUuYj1udWxsLHIuc3BsaWNlKGEsMSkpfShlKSxmdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGEsaSxvLHMsbCxjLHUsaD10WzBdWzBdLGY9dFsxXVswXSxwPXRbMF1bMV0sZD10WzFdWzFdLGc9ZmEsdj1nLmxlbmd0aDt2LS07KWlmKChpPWdbdl0pJiZpLnByZXBhcmUoKSlmb3IobD0ocz1pLmVkZ2VzKS5sZW5ndGgsbz0wO288bDspbj0odT1zW29dLmVuZCgpKS54LGE9dS55LGU9KGM9c1srK28lbF0uc3RhcnQoKSkueCxyPWMueSwoeShuLWUpPmt0fHx5KGEtcik+a3QpJiYocy5zcGxpY2UobywwLG5ldyBJYSgobT1pLnNpdGUseD11LGI9eShuLWgpPGt0JiZkLWE+a3Q/e3g6aCx5OnkoZS1oKTxrdD9yOmR9OnkoYS1kKTxrdCYmZi1uPmt0P3t4Onkoci1kKTxrdD9lOmYseTpkfTp5KG4tZik8a3QmJmEtcD5rdD97eDpmLHk6eShlLWYpPGt0P3I6cH06eShhLXApPGt0JiZuLWg+a3Q/e3g6eShyLXApPGt0P2U6aCx5OnB9Om51bGwsXz12b2lkIDAsXz1uZXcgUGEobSxudWxsKSxfLmE9eCxfLmI9YixoYS5wdXNoKF8pLF8pLGkuc2l0ZSxudWxsKSksKytsKTt2YXIgbSx4LGIsX30oZSkpO3ZhciBvPXtjZWxsczpmYSxlZGdlczpoYX07cmV0dXJuIHBhPWdhPWhhPWZhPW51bGwsb31mdW5jdGlvbiBWYSh0LGUpe3JldHVybiBlLnktdC55fHxlLngtdC54fU1hLnByb3RvdHlwZS5wcmVwYXJlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcy5lZGdlcyxyPWUubGVuZ3RoO3ItLTspKHQ9ZVtyXS5lZGdlKS5iJiZ0LmF8fGUuc3BsaWNlKHIsMSk7cmV0dXJuIGUuc29ydChBYSksZS5sZW5ndGh9LElhLnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlLmw9PT10aGlzLnNpdGU/dGhpcy5lZGdlLmE6dGhpcy5lZGdlLmJ9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2UubD09PXRoaXMuc2l0ZT90aGlzLmVkZ2UuYjp0aGlzLmVkZ2UuYX19LERhLnByb3RvdHlwZT17aW5zZXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhO2lmKHQpe2lmKGUuUD10LGUuTj10Lk4sdC5OJiYodC5OLlA9ZSksdC5OPWUsdC5SKXtmb3IodD10LlI7dC5MOyl0PXQuTDt0Lkw9ZX1lbHNlIHQuUj1lO3I9dH1lbHNlIHRoaXMuXz8odD1OYSh0aGlzLl8pLGUuUD1udWxsLGUuTj10LHQuUD10Lkw9ZSxyPXQpOihlLlA9ZS5OPW51bGwsdGhpcy5fPWUscj1udWxsKTtmb3IoZS5MPWUuUj1udWxsLGUuVT1yLGUuQz0hMCx0PWU7ciYmci5DOylyPT09KG49ci5VKS5MPyhhPW4uUikmJmEuQz8oci5DPWEuQz0hMSxuLkM9ITAsdD1uKToodD09PXIuUiYmKEZhKHRoaXMscikscj0odD1yKS5VKSxyLkM9ITEsbi5DPSEwLEJhKHRoaXMsbikpOihhPW4uTCkmJmEuQz8oci5DPWEuQz0hMSxuLkM9ITAsdD1uKToodD09PXIuTCYmKEJhKHRoaXMscikscj0odD1yKS5VKSxyLkM9ITEsbi5DPSEwLEZhKHRoaXMsbikpLHI9dC5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24odCl7dC5OJiYodC5OLlA9dC5QKSx0LlAmJih0LlAuTj10Lk4pLHQuTj10LlA9bnVsbDt2YXIgZSxyLG4sYT10LlUsaT10Lkwsbz10LlI7aWYocj1pP28/TmEobyk6aTpvLGE/YS5MPT09dD9hLkw9cjphLlI9cjp0aGlzLl89cixpJiZvPyhuPXIuQyxyLkM9dC5DLHIuTD1pLGkuVT1yLHIhPT1vPyhhPXIuVSxyLlU9dC5VLHQ9ci5SLGEuTD10LHIuUj1vLG8uVT1yKTooci5VPWEsYT1yLHQ9ci5SKSk6KG49dC5DLHQ9ciksdCYmKHQuVT1hKSwhbilpZih0JiZ0LkMpdC5DPSExO2Vsc2V7ZG97aWYodD09PXRoaXMuXylicmVhaztpZih0PT09YS5MKXtpZigoZT1hLlIpLkMmJihlLkM9ITEsYS5DPSEwLEZhKHRoaXMsYSksZT1hLlIpLGUuTCYmZS5MLkN8fGUuUiYmZS5SLkMpe2UuUiYmZS5SLkN8fChlLkwuQz0hMSxlLkM9ITAsQmEodGhpcyxlKSxlPWEuUiksZS5DPWEuQyxhLkM9ZS5SLkM9ITEsRmEodGhpcyxhKSx0PXRoaXMuXzticmVha319ZWxzZSBpZigoZT1hLkwpLkMmJihlLkM9ITEsYS5DPSEwLEJhKHRoaXMsYSksZT1hLkwpLGUuTCYmZS5MLkN8fGUuUiYmZS5SLkMpe2UuTCYmZS5MLkN8fChlLlIuQz0hMSxlLkM9ITAsRmEodGhpcyxlKSxlPWEuTCksZS5DPWEuQyxhLkM9ZS5MLkM9ITEsQmEodGhpcyxhKSx0PXRoaXMuXzticmVha31lLkM9ITAsdD1hLGE9YS5VfXdoaWxlKCF0LkMpO3QmJih0LkM9ITEpfX19LHQuZ2VvbS52b3Jvbm9pPWZ1bmN0aW9uKHQpe3ZhciBlPW5hLHI9YWEsbj1lLGE9cixpPVVhO2lmKHQpcmV0dXJuIG8odCk7ZnVuY3Rpb24gbyh0KXt2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9aVswXVswXSxuPWlbMF1bMV0sYT1pWzFdWzBdLG89aVsxXVsxXTtyZXR1cm4gamEocyh0KSxpKS5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGkscyl7dmFyIGw9aS5lZGdlcyxjPWkuc2l0ZTsoZVtzXT1sLmxlbmd0aD9sLm1hcChmdW5jdGlvbih0KXt2YXIgZT10LnN0YXJ0KCk7cmV0dXJuW2UueCxlLnldfSk6Yy54Pj1yJiZjLng8PWEmJmMueT49biYmYy55PD1vP1tbcixvXSxbYSxvXSxbYSxuXSxbcixuXV06W10pLnBvaW50PXRbc119KSxlfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3g6TWF0aC5yb3VuZChuKHQsZSkva3QpKmt0LHk6TWF0aC5yb3VuZChhKHQsZSkva3QpKmt0LGk6ZX19KX1yZXR1cm4gby5saW5rcz1mdW5jdGlvbih0KXtyZXR1cm4gamEocyh0KSkuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmwmJnQucn0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm57c291cmNlOnRbZS5sLmldLHRhcmdldDp0W2Uuci5pXX19KX0sby50cmlhbmdsZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGphKHModCkpLmNlbGxzLmZvckVhY2goZnVuY3Rpb24ocixuKXtmb3IodmFyIGEsaSxvLHMsbD1yLnNpdGUsYz1yLmVkZ2VzLnNvcnQoQWEpLHU9LTEsaD1jLmxlbmd0aCxmPWNbaC0xXS5lZGdlLHA9Zi5sPT09bD9mLnI6Zi5sOysrdTxoOylmLGE9cCxwPShmPWNbdV0uZWRnZSkubD09PWw/Zi5yOmYubCxuPGEuaSYmbjxwLmkmJihvPWEscz1wLCgoaT1sKS54LXMueCkqKG8ueS1pLnkpLShpLngtby54KSoocy55LWkueSk8MCkmJmUucHVzaChbdFtuXSx0W2EuaV0sdFtwLmldXSl9KSxlfSxvLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dmUoZT10KSxvKTplfSxvLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dmUocj10KSxvKTpyfSxvLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9VYTp0LG8pOmk9PT1VYT9udWxsOml9LG8uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9vLmNsaXBFeHRlbnQodCYmW1swLDBdLHRdKTppPT09VWE/bnVsbDppJiZpWzFdfSxvfTt2YXIgVWE9W1stMWU2LC0xZTZdLFsxZTYsMWU2XV07ZnVuY3Rpb24gcWEodCl7cmV0dXJuIHQueH1mdW5jdGlvbiBIYSh0KXtyZXR1cm4gdC55fWZ1bmN0aW9uIEdhKGUscil7ZT10LnJnYihlKSxyPXQucmdiKHIpO3ZhciBuPWUucixhPWUuZyxpPWUuYixvPXIuci1uLHM9ci5nLWEsbD1yLmItaTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIiMiK2NlKE1hdGgucm91bmQobitvKnQpKStjZShNYXRoLnJvdW5kKGErcyp0KSkrY2UoTWF0aC5yb3VuZChpK2wqdCkpfX1mdW5jdGlvbiBZYSh0LGUpe3ZhciByLG49e30sYT17fTtmb3IociBpbiB0KXIgaW4gZT9uW3JdPUthKHRbcl0sZVtyXSk6YVtyXT10W3JdO2ZvcihyIGluIGUpciBpbiB0fHwoYVtyXT1lW3JdKTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHIgaW4gbilhW3JdPW5bcl0odCk7cmV0dXJuIGF9fWZ1bmN0aW9uIFdhKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihyKXtyZXR1cm4gdCooMS1yKStlKnJ9fWZ1bmN0aW9uIFhhKHQsZSl7dmFyIHIsbixhLGk9WmEubGFzdEluZGV4PUphLmxhc3RJbmRleD0wLG89LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsocj1aYS5leGVjKHQpKSYmKG49SmEuZXhlYyhlKSk7KShhPW4uaW5kZXgpPmkmJihhPWUuc2xpY2UoaSxhKSxzW29dP3Nbb10rPWE6c1srK29dPWEpLChyPXJbMF0pPT09KG49blswXSk/c1tvXT9zW29dKz1uOnNbKytvXT1uOihzWysrb109bnVsbCxsLnB1c2goe2k6byx4OldhKHIsbil9KSksaT1KYS5sYXN0SW5kZXg7cmV0dXJuIGk8ZS5sZW5ndGgmJihhPWUuc2xpY2UoaSksc1tvXT9zW29dKz1hOnNbKytvXT1hKSxzLmxlbmd0aDwyP2xbMF0/KGU9bFswXS54LGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpKyIifSk6ZnVuY3Rpb24oKXtyZXR1cm4gZX06KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciByLG49MDtuPGU7KytuKXNbKHI9bFtuXSkuaV09ci54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9dC5nZW9tLmRlbGF1bmF5PWZ1bmN0aW9uKGUpe3JldHVybiB0Lmdlb20udm9yb25vaSgpLnRyaWFuZ2xlcyhlKX0sdC5nZW9tLnF1YWR0cmVlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGksbz1uYSxzPWFhO2lmKGk9YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbz1xYSxzPUhhLDM9PT1pJiYoYT1yLG49ZSxyPWU9MCksbCh0KTtmdW5jdGlvbiBsKHQpe3ZhciBsLGMsdSxoLGYscCxkLGcsdixtPXZlKG8pLHg9dmUocyk7aWYobnVsbCE9ZSlwPWUsZD1yLGc9bix2PWE7ZWxzZSBpZihnPXY9LShwPWQ9MS8wKSxjPVtdLHU9W10sZj10Lmxlbmd0aCxpKWZvcihoPTA7aDxmOysraCkobD10W2hdKS54PHAmJihwPWwueCksbC55PGQmJihkPWwueSksbC54PmcmJihnPWwueCksbC55PnYmJih2PWwueSksYy5wdXNoKGwueCksdS5wdXNoKGwueSk7ZWxzZSBmb3IoaD0wO2g8ZjsrK2gpe3ZhciBiPSttKGw9dFtoXSxoKSxfPSt4KGwsaCk7YjxwJiYocD1iKSxfPGQmJihkPV8pLGI+ZyYmKGc9YiksXz52JiYodj1fKSxjLnB1c2goYiksdS5wdXNoKF8pfXZhciB3PWctcCxrPXYtZDtmdW5jdGlvbiBUKHQsZSxyLG4sYSxpLG8scyl7aWYoIWlzTmFOKHIpJiYhaXNOYU4obikpaWYodC5sZWFmKXt2YXIgbD10LngsYz10Lnk7aWYobnVsbCE9bClpZih5KGwtcikreShjLW4pPC4wMSlNKHQsZSxyLG4sYSxpLG8scyk7ZWxzZXt2YXIgdT10LnBvaW50O3QueD10Lnk9dC5wb2ludD1udWxsLE0odCx1LGwsYyxhLGksbyxzKSxNKHQsZSxyLG4sYSxpLG8scyl9ZWxzZSB0Lng9cix0Lnk9bix0LnBvaW50PWV9ZWxzZSBNKHQsZSxyLG4sYSxpLG8scyl9ZnVuY3Rpb24gTSh0LGUscixuLGEsaSxvLHMpe3ZhciBsPS41KihhK28pLGM9LjUqKGkrcyksdT1yPj1sLGg9bj49YyxmPWg8PDF8dTt0LmxlYWY9ITEsdT9hPWw6bz1sLGg/aT1jOnM9YyxUKHQ9dC5ub2Rlc1tmXXx8KHQubm9kZXNbZl09e2xlYWY6ITAsbm9kZXM6W10scG9pbnQ6bnVsbCx4Om51bGwseTpudWxsfSksZSxyLG4sYSxpLG8scyl9dz5rP3Y9ZCt3Omc9cCtrO3ZhciBBPXtsZWFmOiEwLG5vZGVzOltdLHBvaW50Om51bGwseDpudWxsLHk6bnVsbCxhZGQ6ZnVuY3Rpb24odCl7VChBLHQsK20odCwrK2gpLCt4KHQsaCkscCxkLGcsdil9fTtpZihBLnZpc2l0PWZ1bmN0aW9uKHQpeyFmdW5jdGlvbiB0KGUscixuLGEsaSxvKXtpZighZShyLG4sYSxpLG8pKXt2YXIgcz0uNSoobitpKSxsPS41KihhK28pLGM9ci5ub2RlcztjWzBdJiZ0KGUsY1swXSxuLGEscyxsKSxjWzFdJiZ0KGUsY1sxXSxzLGEsaSxsKSxjWzJdJiZ0KGUsY1syXSxuLGwscyxvKSxjWzNdJiZ0KGUsY1szXSxzLGwsaSxvKX19KHQsQSxwLGQsZyx2KX0sQS5maW5kPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUscixuLGEsaSxvKXt2YXIgcyxsPTEvMDtyZXR1cm4gZnVuY3Rpb24gdChjLHUsaCxmLHApe2lmKCEodT5pfHxoPm98fGY8bnx8cDxhKSl7aWYoZD1jLnBvaW50KXt2YXIgZCxnPWUtYy54LHY9ci1jLnksbT1nKmcrdip2O2lmKG08bCl7dmFyIHk9TWF0aC5zcXJ0KGw9bSk7bj1lLXksYT1yLXksaT1lK3ksbz1yK3kscz1kfX1mb3IodmFyIHg9Yy5ub2RlcyxiPS41Kih1K2YpLF89LjUqKGgrcCksdz0ocj49Xyk8PDF8ZT49YixrPXcrNDt3PGs7Kyt3KWlmKGM9eFszJnddKXN3aXRjaCgzJncpe2Nhc2UgMDp0KGMsdSxoLGIsXyk7YnJlYWs7Y2FzZSAxOnQoYyxiLGgsZixfKTticmVhaztjYXNlIDI6dChjLHUsXyxiLHApO2JyZWFrO2Nhc2UgMzp0KGMsYixfLGYscCl9fX0odCxuLGEsaSxvKSxzfShBLHRbMF0sdFsxXSxwLGQsZyx2KX0saD0tMSxudWxsPT1lKXtmb3IoOysraDxmOylUKEEsdFtoXSxjW2hdLHVbaF0scCxkLGcsdik7LS1ofWVsc2UgdC5mb3JFYWNoKEEuYWRkKTtyZXR1cm4gYz11PXQ9bD1udWxsLEF9cmV0dXJuIGwueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LGwpOm99LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGwpOnN9LGwuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2U9cj1uPWE9bnVsbDooZT0rdFswXVswXSxyPSt0WzBdWzFdLG49K3RbMV1bMF0sYT0rdFsxXVsxXSksbCk6bnVsbD09ZT9udWxsOltbZSxyXSxbbixhXV19LGwuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9lPXI9bj1hPW51bGw6KGU9cj0wLG49K3RbMF0sYT0rdFsxXSksbCk6bnVsbD09ZT9udWxsOltuLWUsYS1yXX0sbH0sdC5pbnRlcnBvbGF0ZVJnYj1HYSx0LmludGVycG9sYXRlT2JqZWN0PVlhLHQuaW50ZXJwb2xhdGVOdW1iZXI9V2EsdC5pbnRlcnBvbGF0ZVN0cmluZz1YYTt2YXIgWmE9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLEphPW5ldyBSZWdFeHAoWmEuc291cmNlLCJnIik7ZnVuY3Rpb24gS2EoZSxyKXtmb3IodmFyIG4sYT10LmludGVycG9sYXRvcnMubGVuZ3RoOy0tYT49MCYmIShuPXQuaW50ZXJwb2xhdG9yc1thXShlLHIpKTspO3JldHVybiBufWZ1bmN0aW9uIFFhKHQsZSl7dmFyIHIsbj1bXSxhPVtdLGk9dC5sZW5ndGgsbz1lLmxlbmd0aCxzPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKTtmb3Iocj0wO3I8czsrK3Ipbi5wdXNoKEthKHRbcl0sZVtyXSkpO2Zvcig7cjxpOysrcilhW3JdPXRbcl07Zm9yKDtyPG87KytyKWFbcl09ZVtyXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHI9MDtyPHM7KytyKWFbcl09bltyXSh0KTtyZXR1cm4gYX19dC5pbnRlcnBvbGF0ZT1LYSx0LmludGVycG9sYXRvcnM9W2Z1bmN0aW9uKHQsZSl7dmFyIHI9dHlwZW9mIGU7cmV0dXJuKCJzdHJpbmciPT09cj9nZS5oYXMoZS50b0xvd2VyQ2FzZSgpKXx8L14oI3xyZ2JcKHxoc2xcKCkvaS50ZXN0KGUpP0dhOlhhOmUgaW5zdGFuY2VvZiBWdD9HYTpBcnJheS5pc0FycmF5KGUpP1FhOiJvYmplY3QiPT09ciYmaXNOYU4oZSk/WWE6V2EpKHQsZSl9XSx0LmludGVycG9sYXRlQXJyYXk9UWE7dmFyICRhPWZ1bmN0aW9uKCl7cmV0dXJuIFB9LHRpPXQubWFwKHtsaW5lYXI6JGEscG9seTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KGUsdCl9fSxxdWFkOmZ1bmN0aW9uKCl7cmV0dXJuIGFpfSxjdWJpYzpmdW5jdGlvbigpe3JldHVybiBpaX0sc2luOmZ1bmN0aW9uKCl7cmV0dXJuIHNpfSxleHA6ZnVuY3Rpb24oKXtyZXR1cm4gbGl9LGNpcmNsZTpmdW5jdGlvbigpe3JldHVybiBjaX0sZWxhc3RpYzpmdW5jdGlvbih0LGUpe3ZhciByO2FyZ3VtZW50cy5sZW5ndGg8MiYmKGU9LjQ1KTthcmd1bWVudHMubGVuZ3RoP3I9ZS9BdCpNYXRoLmFzaW4oMS90KToodD0xLHI9ZS80KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIDErdCpNYXRoLnBvdygyLC0xMCpuKSpNYXRoLnNpbigobi1yKSpBdC9lKX19LGJhY2s6ZnVuY3Rpb24odCl7dHx8KHQ9MS43MDE1OCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlKmUqKCh0KzEpKmUtdCl9fSxib3VuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdWl9fSksZWk9dC5tYXAoe2luOlAsb3V0OnJpLCJpbi1vdXQiOm5pLCJvdXQtaW4iOmZ1bmN0aW9uKHQpe3JldHVybiBuaShyaSh0KSl9fSk7ZnVuY3Rpb24gcmkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAxLXQoMS1lKX19ZnVuY3Rpb24gbmkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi41KihlPC41P3QoMiplKToyLXQoMi0yKmUpKX19ZnVuY3Rpb24gYWkodCl7cmV0dXJuIHQqdH1mdW5jdGlvbiBpaSh0KXtyZXR1cm4gdCp0KnR9ZnVuY3Rpb24gb2kodCl7aWYodDw9MClyZXR1cm4gMDtpZih0Pj0xKXJldHVybiAxO3ZhciBlPXQqdCxyPWUqdDtyZXR1cm4gNCoodDwuNT9yOjMqKHQtZSkrci0uNzUpfWZ1bmN0aW9uIHNpKHQpe3JldHVybiAxLU1hdGguY29zKHQqRXQpfWZ1bmN0aW9uIGxpKHQpe3JldHVybiBNYXRoLnBvdygyLDEwKih0LTEpKX1mdW5jdGlvbiBjaSh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIHVpKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1PzcuNTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9ZnVuY3Rpb24gaGkodCxlKXtyZXR1cm4gZS09dCxmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5yb3VuZCh0K2Uqcil9fWZ1bmN0aW9uIGZpKHQpe3ZhciBlLHIsbixhPVt0LmEsdC5iXSxpPVt0LmMsdC5kXSxvPWRpKGEpLHM9cGkoYSxpKSxsPWRpKCgoZT1pKVswXSs9KG49LXMpKihyPWEpWzBdLGVbMV0rPW4qclsxXSxlKSl8fDA7YVswXSppWzFdPGlbMF0qYVsxXSYmKGFbMF0qPS0xLGFbMV0qPS0xLG8qPS0xLHMqPS0xKSx0aGlzLnJvdGF0ZT0obz9NYXRoLmF0YW4yKGFbMV0sYVswXSk6TWF0aC5hdGFuMigtaVswXSxpWzFdKSkqQ3QsdGhpcy50cmFuc2xhdGU9W3QuZSx0LmZdLHRoaXMuc2NhbGU9W28sbF0sdGhpcy5za2V3PWw/TWF0aC5hdGFuMihzLGwpKkN0OjB9ZnVuY3Rpb24gcGkodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXX1mdW5jdGlvbiBkaSh0KXt2YXIgZT1NYXRoLnNxcnQocGkodCx0KSk7cmV0dXJuIGUmJih0WzBdLz1lLHRbMV0vPWUpLGV9dC5lYXNlPWZ1bmN0aW9uKHQpe3ZhciBlLG49dC5pbmRleE9mKCItIiksYT1uPj0wP3Quc2xpY2UoMCxuKTp0LGk9bj49MD90LnNsaWNlKG4rMSk6ImluIjtyZXR1cm4gYT10aS5nZXQoYSl8fCRhLGk9ZWkuZ2V0KGkpfHxQLGU9aShhLmFwcGx5KG51bGwsci5jYWxsKGFyZ3VtZW50cywxKSkpLGZ1bmN0aW9uKHQpe3JldHVybiB0PD0wPzA6dD49MT8xOmUodCl9fSx0LmludGVycG9sYXRlSGNsPWZ1bmN0aW9uKGUscil7ZT10LmhjbChlKSxyPXQuaGNsKHIpO3ZhciBuPWUuaCxhPWUuYyxpPWUubCxvPXIuaC1uLHM9ci5jLWEsbD1yLmwtaTtpc05hTihzKSYmKHM9MCxhPWlzTmFOKGEpP3IuYzphKTtpc05hTihvKT8obz0wLG49aXNOYU4obik/ci5oOm4pOm8+MTgwP28tPTM2MDpvPC0xODAmJihvKz0zNjApO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gV3QobitvKnQsYStzKnQsaStsKnQpKyIifX0sdC5pbnRlcnBvbGF0ZUhzbD1mdW5jdGlvbihlLHIpe2U9dC5oc2woZSkscj10LmhzbChyKTt2YXIgbj1lLmgsYT1lLnMsaT1lLmwsbz1yLmgtbixzPXIucy1hLGw9ci5sLWk7aXNOYU4ocykmJihzPTAsYT1pc05hTihhKT9yLnM6YSk7aXNOYU4obyk/KG89MCxuPWlzTmFOKG4pP3IuaDpuKTpvPjE4MD9vLT0zNjA6bzwtMTgwJiYobys9MzYwKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEh0KG4rbyp0LGErcyp0LGkrbCp0KSsiIn19LHQuaW50ZXJwb2xhdGVMYWI9ZnVuY3Rpb24oZSxyKXtlPXQubGFiKGUpLHI9dC5sYWIocik7dmFyIG49ZS5sLGE9ZS5hLGk9ZS5iLG89ci5sLW4scz1yLmEtYSxsPXIuYi1pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdGUobitvKnQsYStzKnQsaStsKnQpKyIifX0sdC5pbnRlcnBvbGF0ZVJvdW5kPWhpLHQudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciByPWEuY3JlYXRlRWxlbWVudE5TKHQubnMucHJlZml4LnN2ZywiZyIpO3JldHVybih0LnRyYW5zZm9ybT1mdW5jdGlvbih0KXtpZihudWxsIT10KXtyLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KTt2YXIgZT1yLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCl9cmV0dXJuIG5ldyBmaShlP2UubWF0cml4OmdpKX0pKGUpfSxmaS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy50cmFuc2xhdGUrIilyb3RhdGUoIit0aGlzLnJvdGF0ZSsiKXNrZXdYKCIrdGhpcy5za2V3KyIpc2NhbGUoIit0aGlzLnNjYWxlKyIpIn07dmFyIGdpPXthOjEsYjowLGM6MCxkOjEsZTowLGY6MH07ZnVuY3Rpb24gdmkodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiwiOiIifWZ1bmN0aW9uIG1pKGUscil7dmFyIG49W10sYT1bXTtyZXR1cm4gZT10LnRyYW5zZm9ybShlKSxyPXQudHJhbnNmb3JtKHIpLGZ1bmN0aW9uKHQsZSxyLG4pe2lmKHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXSl7dmFyIGE9ci5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLCIsIixudWxsLCIpIik7bi5wdXNoKHtpOmEtNCx4OldhKHRbMF0sZVswXSl9LHtpOmEtMix4OldhKHRbMV0sZVsxXSl9KX1lbHNlKGVbMF18fGVbMV0pJiZyLnB1c2goInRyYW5zbGF0ZSgiK2UrIikiKX0oZS50cmFuc2xhdGUsci50cmFuc2xhdGUsbixhKSxmdW5jdGlvbih0LGUscixuKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksbi5wdXNoKHtpOnIucHVzaCh2aShyKSsicm90YXRlKCIsbnVsbCwiKSIpLTIseDpXYSh0LGUpfSkpOmUmJnIucHVzaCh2aShyKSsicm90YXRlKCIrZSsiKSIpfShlLnJvdGF0ZSxyLnJvdGF0ZSxuLGEpLGZ1bmN0aW9uKHQsZSxyLG4pe3QhPT1lP24ucHVzaCh7aTpyLnB1c2godmkocikrInNrZXdYKCIsbnVsbCwiKSIpLTIseDpXYSh0LGUpfSk6ZSYmci5wdXNoKHZpKHIpKyJza2V3WCgiK2UrIikiKX0oZS5za2V3LHIuc2tldyxuLGEpLGZ1bmN0aW9uKHQsZSxyLG4pe2lmKHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXSl7dmFyIGE9ci5wdXNoKHZpKHIpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtuLnB1c2goe2k6YS00LHg6V2EodFswXSxlWzBdKX0se2k6YS0yLHg6V2EodFsxXSxlWzFdKX0pfWVsc2UgMT09PWVbMF0mJjE9PT1lWzFdfHxyLnB1c2godmkocikrInNjYWxlKCIrZSsiKSIpfShlLnNjYWxlLHIuc2NhbGUsbixhKSxlPXI9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUscj0tMSxpPWEubGVuZ3RoOysrcjxpOyluWyhlPWFbcl0pLmldPWUueCh0KTtyZXR1cm4gbi5qb2luKCIiKX19ZnVuY3Rpb24geWkodCxlKXtyZXR1cm4gZT0oZS09dD0rdCl8fDEvZSxmdW5jdGlvbihyKXtyZXR1cm4oci10KS9lfX1mdW5jdGlvbiB4aSh0LGUpe3JldHVybiBlPShlLT10PSt0KXx8MS9lLGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDEsKHItdCkvZSkpfX1mdW5jdGlvbiBiaSh0KXtmb3IodmFyIGU9dC5zb3VyY2Uscj10LnRhcmdldCxuPWZ1bmN0aW9uKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIHI9X2kodCksbj1faShlKSxhPXIucG9wKCksaT1uLnBvcCgpLG89bnVsbDtmb3IoO2E9PT1pOylvPWEsYT1yLnBvcCgpLGk9bi5wb3AoKTtyZXR1cm4gb30oZSxyKSxhPVtlXTtlIT09bjspZT1lLnBhcmVudCxhLnB1c2goZSk7Zm9yKHZhciBpPWEubGVuZ3RoO3IhPT1uOylhLnNwbGljZShpLDAscikscj1yLnBhcmVudDtyZXR1cm4gYX1mdW5jdGlvbiBfaSh0KXtmb3IodmFyIGU9W10scj10LnBhcmVudDtudWxsIT1yOyllLnB1c2godCksdD1yLHI9ci5wYXJlbnQ7cmV0dXJuIGUucHVzaCh0KSxlfWZ1bmN0aW9uIHdpKHQpe3QuZml4ZWR8PTJ9ZnVuY3Rpb24ga2kodCl7dC5maXhlZCY9LTd9ZnVuY3Rpb24gVGkodCl7dC5maXhlZHw9NCx0LnB4PXQueCx0LnB5PXQueX1mdW5jdGlvbiBNaSh0KXt0LmZpeGVkJj0tNX10LmludGVycG9sYXRlVHJhbnNmb3JtPW1pLHQubGF5b3V0PXt9LHQubGF5b3V0LmJ1bmRsZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj0tMSxuPXQubGVuZ3RoOysrcjxuOyllLnB1c2goYmkodFtyXSkpO3JldHVybiBlfX0sdC5sYXlvdXQuY2hvcmQ9ZnVuY3Rpb24oKXt2YXIgZSxyLG4sYSxpLG8scyxsPXt9LGM9MDtmdW5jdGlvbiB1KCl7dmFyIGwsdSxmLHAsZCxnPXt9LHY9W10sbT10LnJhbmdlKGEpLHk9W107Zm9yKGU9W10scj1bXSxsPTAscD0tMTsrK3A8YTspe2Zvcih1PTAsZD0tMTsrK2Q8YTspdSs9bltwXVtkXTt2LnB1c2godSkseS5wdXNoKHQucmFuZ2UoYSkpLGwrPXV9Zm9yKGkmJm0uc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBpKHZbdF0sdltlXSl9KSxvJiZ5LmZvckVhY2goZnVuY3Rpb24odCxlKXt0LnNvcnQoZnVuY3Rpb24odCxyKXtyZXR1cm4gbyhuW2VdW3RdLG5bZV1bcl0pfSl9KSxsPShBdC1jKmEpL2wsdT0wLHA9LTE7KytwPGE7KXtmb3IoZj11LGQ9LTE7KytkPGE7KXt2YXIgeD1tW3BdLGI9eVt4XVtkXSxfPW5beF1bYl0sdz11LGs9dSs9XypsO2dbeCsiLSIrYl09e2luZGV4Ongsc3ViaW5kZXg6YixzdGFydEFuZ2xlOncsZW5kQW5nbGU6ayx2YWx1ZTpffX1yW3hdPXtpbmRleDp4LHN0YXJ0QW5nbGU6ZixlbmRBbmdsZTp1LHZhbHVlOnZbeF19LHUrPWN9Zm9yKHA9LTE7KytwPGE7KWZvcihkPXAtMTsrK2Q8YTspe3ZhciBUPWdbcCsiLSIrZF0sTT1nW2QrIi0iK3BdOyhULnZhbHVlfHxNLnZhbHVlKSYmZS5wdXNoKFQudmFsdWU8TS52YWx1ZT97c291cmNlOk0sdGFyZ2V0OlR9Ontzb3VyY2U6VCx0YXJnZXQ6TX0pfXMmJmgoKX1mdW5jdGlvbiBoKCl7ZS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMoKHQuc291cmNlLnZhbHVlK3QudGFyZ2V0LnZhbHVlKS8yLChlLnNvdXJjZS52YWx1ZStlLnRhcmdldC52YWx1ZSkvMil9KX1yZXR1cm4gbC5tYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9KG49dCkmJm4ubGVuZ3RoLGU9cj1udWxsLGwpOm59LGwucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LGU9cj1udWxsLGwpOmN9LGwuc29ydEdyb3Vwcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LGU9cj1udWxsLGwpOml9LGwuc29ydFN1Ymdyb3Vwcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LGU9bnVsbCxsKTpvfSxsLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCxlJiZoKCksbCk6c30sbC5jaG9yZHM9ZnVuY3Rpb24oKXtyZXR1cm4gZXx8dSgpLGV9LGwuZ3JvdXBzPWZ1bmN0aW9uKCl7cmV0dXJuIHJ8fHUoKSxyfSxsfSx0LmxheW91dC5mb3JjZT1mdW5jdGlvbigpe3ZhciBlLHIsbixhLGksbyxzPXt9LGw9dC5kaXNwYXRjaCgic3RhcnQiLCJ0aWNrIiwiZW5kIiksYz1bMSwxXSx1PS45LGg9QWksZj1TaSxwPS0zMCxkPUVpLGc9LjEsdj0uNjQsbT1bXSx5PVtdO2Z1bmN0aW9uIHgodCl7cmV0dXJuIGZ1bmN0aW9uKGUscixuLGEpe2lmKGUucG9pbnQhPT10KXt2YXIgaT1lLmN4LXQueCxvPWUuY3ktdC55LHM9YS1yLGw9aSppK28qbztpZihzKnMvdjxsKXtpZihsPGQpe3ZhciBjPWUuY2hhcmdlL2w7dC5weC09aSpjLHQucHktPW8qY31yZXR1cm4hMH1pZihlLnBvaW50JiZsJiZsPGQpe2M9ZS5wb2ludENoYXJnZS9sO3QucHgtPWkqYyx0LnB5LT1vKmN9fXJldHVybiFlLmNoYXJnZX19ZnVuY3Rpb24gYihlKXtlLnB4PXQuZXZlbnQueCxlLnB5PXQuZXZlbnQueSxzLnJlc3VtZSgpfXJldHVybiBzLnRpY2s9ZnVuY3Rpb24oKXtpZigobio9Ljk5KTwuMDA1KXJldHVybiBlPW51bGwsbC5lbmQoe3R5cGU6ImVuZCIsYWxwaGE6bj0wfSksITA7dmFyIHIscyxoLGYsZCx2LGIsXyx3LGs9bS5sZW5ndGgsVD15Lmxlbmd0aDtmb3Iocz0wO3M8VDsrK3MpZj0oaD15W3NdKS5zb3VyY2UsKHY9KF89KGQ9aC50YXJnZXQpLngtZi54KSpfKyh3PWQueS1mLnkpKncpJiYoXyo9dj1uKmlbc10qKCh2PU1hdGguc3FydCh2KSktYVtzXSkvdix3Kj12LGQueC09XyooYj1mLndlaWdodCtkLndlaWdodD9mLndlaWdodC8oZi53ZWlnaHQrZC53ZWlnaHQpOi41KSxkLnktPXcqYixmLngrPV8qKGI9MS1iKSxmLnkrPXcqYik7aWYoKGI9bipnKSYmKF89Y1swXS8yLHc9Y1sxXS8yLHM9LTEsYikpZm9yKDsrK3M8azspKGg9bVtzXSkueCs9KF8taC54KSpiLGgueSs9KHctaC55KSpiO2lmKHApZm9yKCFmdW5jdGlvbiB0KGUscixuKXt2YXIgYT0wLGk9MDtlLmNoYXJnZT0wO2lmKCFlLmxlYWYpZm9yKHZhciBvLHM9ZS5ub2RlcyxsPXMubGVuZ3RoLGM9LTE7KytjPGw7KW51bGwhPShvPXNbY10pJiYodChvLHIsbiksZS5jaGFyZ2UrPW8uY2hhcmdlLGErPW8uY2hhcmdlKm8uY3gsaSs9by5jaGFyZ2Uqby5jeSk7aWYoZS5wb2ludCl7ZS5sZWFmfHwoZS5wb2ludC54Kz1NYXRoLnJhbmRvbSgpLS41LGUucG9pbnQueSs9TWF0aC5yYW5kb20oKS0uNSk7dmFyIHU9cipuW2UucG9pbnQuaW5kZXhdO2UuY2hhcmdlKz1lLnBvaW50Q2hhcmdlPXUsYSs9dSplLnBvaW50LngsaSs9dSplLnBvaW50Lnl9ZS5jeD1hL2UuY2hhcmdlO2UuY3k9aS9lLmNoYXJnZX0ocj10Lmdlb20ucXVhZHRyZWUobSksbixvKSxzPS0xOysrczxrOykoaD1tW3NdKS5maXhlZHx8ci52aXNpdCh4KGgpKTtmb3Iocz0tMTsrK3M8azspKGg9bVtzXSkuZml4ZWQ/KGgueD1oLnB4LGgueT1oLnB5KTooaC54LT0oaC5weC0oaC5weD1oLngpKSp1LGgueS09KGgucHktKGgucHk9aC55KSkqdSk7bC50aWNrKHt0eXBlOiJ0aWNrIixhbHBoYTpufSl9LHMubm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09dCxzKTptfSxzLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PXQscyk6eX0scy5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQscyk6Y30scy5saW5rRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDordCxzKTpofSxzLmRpc3RhbmNlPXMubGlua0Rpc3RhbmNlLHMubGlua1N0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6K3Qscyk6Zn0scy5mcmljdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdCxzKTp1fSxzLmNoYXJnZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0iZnVuY3Rpb24iPT10eXBlb2YgdD90Oit0LHMpOnB9LHMuY2hhcmdlRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9dCp0LHMpOk1hdGguc3FydChkKX0scy5ncmF2aXR5PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPSt0LHMpOmd9LHMudGhldGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9dCp0LHMpOk1hdGguc3FydCh2KX0scy5hbHBoYT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rdCxuP3Q+MD9uPXQ6KGUuYz1udWxsLGUudD1OYU4sZT1udWxsLGwuZW5kKHt0eXBlOiJlbmQiLGFscGhhOm49MH0pKTp0PjAmJihsLnN0YXJ0KHt0eXBlOiJzdGFydCIsYWxwaGE6bj10fSksZT1UZShzLnRpY2spKSxzKTpufSxzLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG49bS5sZW5ndGgsbD15Lmxlbmd0aCx1PWNbMF0sZD1jWzFdO2Zvcih0PTA7dDxuOysrdCkocj1tW3RdKS5pbmRleD10LHIud2VpZ2h0PTA7Zm9yKHQ9MDt0PGw7Kyt0KSJudW1iZXIiPT10eXBlb2Yocj15W3RdKS5zb3VyY2UmJihyLnNvdXJjZT1tW3Iuc291cmNlXSksIm51bWJlciI9PXR5cGVvZiByLnRhcmdldCYmKHIudGFyZ2V0PW1bci50YXJnZXRdKSwrK3Iuc291cmNlLndlaWdodCwrK3IudGFyZ2V0LndlaWdodDtmb3IodD0wO3Q8bjsrK3Qpcj1tW3RdLGlzTmFOKHIueCkmJihyLng9ZygieCIsdSkpLGlzTmFOKHIueSkmJihyLnk9ZygieSIsZCkpLGlzTmFOKHIucHgpJiYoci5weD1yLngpLGlzTmFOKHIucHkpJiYoci5weT1yLnkpO2lmKGE9W10sImZ1bmN0aW9uIj09dHlwZW9mIGgpZm9yKHQ9MDt0PGw7Kyt0KWFbdF09K2guY2FsbCh0aGlzLHlbdF0sdCk7ZWxzZSBmb3IodD0wO3Q8bDsrK3QpYVt0XT1oO2lmKGk9W10sImZ1bmN0aW9uIj09dHlwZW9mIGYpZm9yKHQ9MDt0PGw7Kyt0KWlbdF09K2YuY2FsbCh0aGlzLHlbdF0sdCk7ZWxzZSBmb3IodD0wO3Q8bDsrK3QpaVt0XT1mO2lmKG89W10sImZ1bmN0aW9uIj09dHlwZW9mIHApZm9yKHQ9MDt0PG47Kyt0KW9bdF09K3AuY2FsbCh0aGlzLG1bdF0sdCk7ZWxzZSBmb3IodD0wO3Q8bjsrK3Qpb1t0XT1wO2Z1bmN0aW9uIGcocixhKXtpZighZSl7Zm9yKGU9bmV3IEFycmF5KG4pLGM9MDtjPG47KytjKWVbY109W107Zm9yKGM9MDtjPGw7KytjKXt2YXIgaT15W2NdO2VbaS5zb3VyY2UuaW5kZXhdLnB1c2goaS50YXJnZXQpLGVbaS50YXJnZXQuaW5kZXhdLnB1c2goaS5zb3VyY2UpfX1mb3IodmFyIG8scz1lW3RdLGM9LTEsdT1zLmxlbmd0aDsrK2M8dTspaWYoIWlzTmFOKG89c1tjXVtyXSkpcmV0dXJuIG87cmV0dXJuIE1hdGgucmFuZG9tKCkqYX1yZXR1cm4gcy5yZXN1bWUoKX0scy5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gcy5hbHBoYSguMSl9LHMuc3RvcD1mdW5jdGlvbigpe3JldHVybiBzLmFscGhhKDApfSxzLmRyYWc9ZnVuY3Rpb24oKXtpZihyfHwocj10LmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4oUCkub24oImRyYWdzdGFydC5mb3JjZSIsd2kpLm9uKCJkcmFnLmZvcmNlIixiKS5vbigiZHJhZ2VuZC5mb3JjZSIsa2kpKSwhYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gcjt0aGlzLm9uKCJtb3VzZW92ZXIuZm9yY2UiLFRpKS5vbigibW91c2VvdXQuZm9yY2UiLE1pKS5jYWxsKHIpfSx0LnJlYmluZChzLGwsIm9uIil9O3ZhciBBaT0yMCxTaT0xLEVpPTEvMDtmdW5jdGlvbiBMaShlLHIpe3JldHVybiB0LnJlYmluZChlLHIsInNvcnQiLCJjaGlsZHJlbiIsInZhbHVlIiksZS5ub2Rlcz1lLGUubGlua3M9RGksZX1mdW5jdGlvbiBDaSh0LGUpe2Zvcih2YXIgcj1bdF07bnVsbCE9KHQ9ci5wb3AoKSk7KWlmKGUodCksKGE9dC5jaGlsZHJlbikmJihuPWEubGVuZ3RoKSlmb3IodmFyIG4sYTstLW4+PTA7KXIucHVzaChhW25dKX1mdW5jdGlvbiBQaSh0LGUpe2Zvcih2YXIgcj1bdF0sbj1bXTtudWxsIT0odD1yLnBvcCgpKTspaWYobi5wdXNoKHQpLChpPXQuY2hpbGRyZW4pJiYoYT1pLmxlbmd0aCkpZm9yKHZhciBhLGksbz0tMTsrK288YTspci5wdXNoKGlbb10pO2Zvcig7bnVsbCE9KHQ9bi5wb3AoKSk7KWUodCl9ZnVuY3Rpb24gT2kodCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVuY3Rpb24gemkodCl7cmV0dXJuIHQudmFsdWV9ZnVuY3Rpb24gSWkodCxlKXtyZXR1cm4gZS52YWx1ZS10LnZhbHVlfWZ1bmN0aW9uIERpKGUpe3JldHVybiB0Lm1lcmdlKGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybih0LmNoaWxkcmVufHxbXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntzb3VyY2U6dCx0YXJnZXQ6ZX19KX0pKX10LmxheW91dC5oaWVyYXJjaHk9ZnVuY3Rpb24oKXt2YXIgdD1JaSxlPU9pLHI9emk7ZnVuY3Rpb24gbihhKXt2YXIgaSxvPVthXSxzPVtdO2ZvcihhLmRlcHRoPTA7bnVsbCE9KGk9by5wb3AoKSk7KWlmKHMucHVzaChpKSwoYz1lLmNhbGwobixpLGkuZGVwdGgpKSYmKGw9Yy5sZW5ndGgpKXtmb3IodmFyIGwsYyx1Oy0tbD49MDspby5wdXNoKHU9Y1tsXSksdS5wYXJlbnQ9aSx1LmRlcHRoPWkuZGVwdGgrMTtyJiYoaS52YWx1ZT0wKSxpLmNoaWxkcmVuPWN9ZWxzZSByJiYoaS52YWx1ZT0rci5jYWxsKG4saSxpLmRlcHRoKXx8MCksZGVsZXRlIGkuY2hpbGRyZW47cmV0dXJuIFBpKGEsZnVuY3Rpb24oZSl7dmFyIG4sYTt0JiYobj1lLmNoaWxkcmVuKSYmbi5zb3J0KHQpLHImJihhPWUucGFyZW50KSYmKGEudmFsdWUrPWUudmFsdWUpfSksc31yZXR1cm4gbi5zb3J0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5jaGlsZHJlbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4udmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLnJldmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHImJihDaSh0LGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW4mJih0LnZhbHVlPTApfSksUGkodCxmdW5jdGlvbih0KXt2YXIgZTt0LmNoaWxkcmVufHwodC52YWx1ZT0rci5jYWxsKG4sdCx0LmRlcHRoKXx8MCksKGU9dC5wYXJlbnQpJiYoZS52YWx1ZSs9dC52YWx1ZSl9KSksdH0sbn0sdC5sYXlvdXQucGFydGl0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dC5sYXlvdXQuaGllcmFyY2h5KCkscj1bMSwxXTtmdW5jdGlvbiBuKHQsbil7dmFyIGE9ZS5jYWxsKHRoaXMsdCxuKTtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbixhKXt2YXIgaT1lLmNoaWxkcmVuO2lmKGUueD1yLGUueT1lLmRlcHRoKmEsZS5keD1uLGUuZHk9YSxpJiYobz1pLmxlbmd0aCkpe3ZhciBvLHMsbCxjPS0xO2ZvcihuPWUudmFsdWU/bi9lLnZhbHVlOjA7KytjPG87KXQocz1pW2NdLHIsbD1zLnZhbHVlKm4sYSkscis9bH19KGFbMF0sMCxyWzBdLHJbMV0vZnVuY3Rpb24gdChlKXt2YXIgcj1lLmNoaWxkcmVuLG49MDtpZihyJiYoYT1yLmxlbmd0aCkpZm9yKHZhciBhLGk9LTE7KytpPGE7KW49TWF0aC5tYXgobix0KHJbaV0pKTtyZXR1cm4gMStufShhWzBdKSksYX1yZXR1cm4gbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sTGkobixlKX0sdC5sYXlvdXQucGllPWZ1bmN0aW9uKCl7dmFyIGU9TnVtYmVyLHI9Umksbj0wLGE9QXQsaT0wO2Z1bmN0aW9uIG8ocyl7dmFyIGwsYz1zLmxlbmd0aCx1PXMubWFwKGZ1bmN0aW9uKHQscil7cmV0dXJuK2UuY2FsbChvLHQscil9KSxoPSsoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksZj0oImZ1bmN0aW9uIj09dHlwZW9mIGE/YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YSktaCxwPU1hdGgubWluKE1hdGguYWJzKGYpL2MsKygiZnVuY3Rpb24iPT10eXBlb2YgaT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppKSksZD1wKihmPDA/LTE6MSksZz10LnN1bSh1KSx2PWc/KGYtYypkKS9nOjAsbT10LnJhbmdlKGMpLHk9W107cmV0dXJuIG51bGwhPXImJm0uc29ydChyPT09Umk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdVtlXS11W3RdfTpmdW5jdGlvbih0LGUpe3JldHVybiByKHNbdF0sc1tlXSl9KSxtLmZvckVhY2goZnVuY3Rpb24odCl7eVt0XT17ZGF0YTpzW3RdLHZhbHVlOmw9dVt0XSxzdGFydEFuZ2xlOmgsZW5kQW5nbGU6aCs9bCp2K2QscGFkQW5nbGU6cH19KSx5fXJldHVybiBvLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbyk6ZX0sby5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbyk6cn0sby5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsbyk6bn0sby5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LG8pOmF9LG8ucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxvKTppfSxvfTt2YXIgUmk9e307ZnVuY3Rpb24gRmkodCl7cmV0dXJuIHQueH1mdW5jdGlvbiBCaSh0KXtyZXR1cm4gdC55fWZ1bmN0aW9uIE5pKHQsZSxyKXt0LnkwPWUsdC55PXJ9dC5sYXlvdXQuc3RhY2s9ZnVuY3Rpb24oKXt2YXIgZT1QLHI9VWksbj1xaSxhPU5pLGk9Rmksbz1CaTtmdW5jdGlvbiBzKGwsYyl7aWYoIShwPWwubGVuZ3RoKSlyZXR1cm4gbDt2YXIgdT1sLm1hcChmdW5jdGlvbih0LHIpe3JldHVybiBlLmNhbGwocyx0LHIpfSksaD11Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5baS5jYWxsKHMsdCxlKSxvLmNhbGwocyx0LGUpXX0pfSksZj1yLmNhbGwocyxoLGMpO3U9dC5wZXJtdXRlKHUsZiksaD10LnBlcm11dGUoaCxmKTt2YXIgcCxkLGcsdixtPW4uY2FsbChzLGgsYykseT11WzBdLmxlbmd0aDtmb3IoZz0wO2c8eTsrK2cpZm9yKGEuY2FsbChzLHVbMF1bZ10sdj1tW2ddLGhbMF1bZ11bMV0pLGQ9MTtkPHA7KytkKWEuY2FsbChzLHVbZF1bZ10sdis9aFtkLTFdW2ddWzFdLGhbZF1bZ11bMV0pO3JldHVybiBsfXJldHVybiBzLnZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHMpOmV9LHMub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqaS5nZXQodCl8fFVpLHMpOnJ9LHMub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VmkuZ2V0KHQpfHxxaSxzKTpufSxzLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxzKTppfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxzKTpvfSxzLm91dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LHMpOmF9LHN9O3ZhciBqaT10Lm1hcCh7Imluc2lkZS1vdXQiOmZ1bmN0aW9uKGUpe3ZhciByLG4sYT1lLmxlbmd0aCxpPWUubWFwKEhpKSxvPWUubWFwKEdpKSxzPXQucmFuZ2UoYSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBpW3RdLWlbZV19KSxsPTAsYz0wLHU9W10saD1bXTtmb3Iocj0wO3I8YTsrK3Ipbj1zW3JdLGw8Yz8obCs9b1tuXSx1LnB1c2gobikpOihjKz1vW25dLGgucHVzaChuKSk7cmV0dXJuIGgucmV2ZXJzZSgpLmNvbmNhdCh1KX0scmV2ZXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5yYW5nZShlLmxlbmd0aCkucmV2ZXJzZSgpfSxkZWZhdWx0OlVpfSksVmk9dC5tYXAoe3NpbGhvdWV0dGU6ZnVuY3Rpb24odCl7dmFyIGUscixuLGE9dC5sZW5ndGgsaT10WzBdLmxlbmd0aCxvPVtdLHM9MCxsPVtdO2ZvcihyPTA7cjxpOysrcil7Zm9yKGU9MCxuPTA7ZTxhO2UrKyluKz10W2VdW3JdWzFdO24+cyYmKHM9biksby5wdXNoKG4pfWZvcihyPTA7cjxpOysrcilsW3JdPShzLW9bcl0pLzI7cmV0dXJuIGx9LHdpZ2dsZTpmdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpLG8scyxsLGMsdT10Lmxlbmd0aCxoPXRbMF0sZj1oLmxlbmd0aCxwPVtdO2ZvcihwWzBdPWw9Yz0wLHI9MTtyPGY7KytyKXtmb3IoZT0wLGE9MDtlPHU7KytlKWErPXRbZV1bcl1bMV07Zm9yKGU9MCxpPTAscz1oW3JdWzBdLWhbci0xXVswXTtlPHU7KytlKXtmb3Iobj0wLG89KHRbZV1bcl1bMV0tdFtlXVtyLTFdWzFdKS8oMipzKTtuPGU7KytuKW8rPSh0W25dW3JdWzFdLXRbbl1bci0xXVsxXSkvcztpKz1vKnRbZV1bcl1bMV19cFtyXT1sLT1hP2kvYSpzOjAsbDxjJiYoYz1sKX1mb3Iocj0wO3I8ZjsrK3IpcFtyXS09YztyZXR1cm4gcH0sZXhwYW5kOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhPXQubGVuZ3RoLGk9dFswXS5sZW5ndGgsbz0xL2Escz1bXTtmb3Iocj0wO3I8aTsrK3Ipe2ZvcihlPTAsbj0wO2U8YTtlKyspbis9dFtlXVtyXVsxXTtpZihuKWZvcihlPTA7ZTxhO2UrKyl0W2VdW3JdWzFdLz1uO2Vsc2UgZm9yKGU9MDtlPGE7ZSsrKXRbZV1bcl1bMV09b31mb3Iocj0wO3I8aTsrK3Ipc1tyXT0wO3JldHVybiBzfSx6ZXJvOnFpfSk7ZnVuY3Rpb24gVWkoZSl7cmV0dXJuIHQucmFuZ2UoZS5sZW5ndGgpfWZ1bmN0aW9uIHFpKHQpe2Zvcih2YXIgZT0tMSxyPXRbMF0ubGVuZ3RoLG49W107KytlPHI7KW5bZV09MDtyZXR1cm4gbn1mdW5jdGlvbiBIaSh0KXtmb3IodmFyIGUscj0xLG49MCxhPXRbMF1bMV0saT10Lmxlbmd0aDtyPGk7KytyKShlPXRbcl1bMV0pPmEmJihuPXIsYT1lKTtyZXR1cm4gbn1mdW5jdGlvbiBHaSh0KXtyZXR1cm4gdC5yZWR1Y2UoWWksMCl9ZnVuY3Rpb24gWWkodCxlKXtyZXR1cm4gdCtlWzFdfWZ1bmN0aW9uIFdpKHQsZSl7cmV0dXJuIFhpKHQsTWF0aC5jZWlsKE1hdGgubG9nKGUubGVuZ3RoKS9NYXRoLkxOMisxKSl9ZnVuY3Rpb24gWGkodCxlKXtmb3IodmFyIHI9LTEsbj0rdFswXSxhPSh0WzFdLW4pL2UsaT1bXTsrK3I8PWU7KWlbcl09YSpyK247cmV0dXJuIGl9ZnVuY3Rpb24gWmkoZSl7cmV0dXJuW3QubWluKGUpLHQubWF4KGUpXX1mdW5jdGlvbiBKaSh0LGUpe3JldHVybiB0LnZhbHVlLWUudmFsdWV9ZnVuY3Rpb24gS2kodCxlKXt2YXIgcj10Ll9wYWNrX25leHQ7dC5fcGFja19uZXh0PWUsZS5fcGFja19wcmV2PXQsZS5fcGFja19uZXh0PXIsci5fcGFja19wcmV2PWV9ZnVuY3Rpb24gUWkodCxlKXt0Ll9wYWNrX25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5jdGlvbiAkaSh0LGUpe3ZhciByPWUueC10Lngsbj1lLnktdC55LGE9dC5yK2UucjtyZXR1cm4uOTk5KmEqYT5yKnIrbipufWZ1bmN0aW9uIHRvKHQpe2lmKChlPXQuY2hpbGRyZW4pJiYobD1lLmxlbmd0aCkpe3ZhciBlLHIsbixhLGksbyxzLGwsYz0xLzAsdT0tMS8wLGg9MS8wLGY9LTEvMDtpZihlLmZvckVhY2goZW8pLChyPWVbMF0pLng9LXIucixyLnk9MCx4KHIpLGw+MSYmKChuPWVbMV0pLng9bi5yLG4ueT0wLHgobiksbD4yKSlmb3Iobm8ocixuLGE9ZVsyXSkseChhKSxLaShyLGEpLHIuX3BhY2tfcHJldj1hLEtpKGEsbiksbj1yLl9wYWNrX25leHQsaT0zO2k8bDtpKyspe25vKHIsbixhPWVbaV0pO3ZhciBwPTAsZD0xLGc9MTtmb3Iobz1uLl9wYWNrX25leHQ7byE9PW47bz1vLl9wYWNrX25leHQsZCsrKWlmKCRpKG8sYSkpe3A9MTticmVha31pZigxPT1wKWZvcihzPXIuX3BhY2tfcHJldjtzIT09by5fcGFja19wcmV2JiYhJGkocyxhKTtzPXMuX3BhY2tfcHJldixnKyspO3A/KGQ8Z3x8ZD09ZyYmbi5yPHIucj9RaShyLG49byk6UWkocj1zLG4pLGktLSk6KEtpKHIsYSksbj1hLHgoYSkpfXZhciB2PShjK3UpLzIsbT0oaCtmKS8yLHk9MDtmb3IoaT0wO2k8bDtpKyspKGE9ZVtpXSkueC09dixhLnktPW0seT1NYXRoLm1heCh5LGEucitNYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSk7dC5yPXksZS5mb3JFYWNoKHJvKX1mdW5jdGlvbiB4KHQpe2M9TWF0aC5taW4odC54LXQucixjKSx1PU1hdGgubWF4KHQueCt0LnIsdSksaD1NYXRoLm1pbih0LnktdC5yLGgpLGY9TWF0aC5tYXgodC55K3QucixmKX19ZnVuY3Rpb24gZW8odCl7dC5fcGFja19uZXh0PXQuX3BhY2tfcHJldj10fWZ1bmN0aW9uIHJvKHQpe2RlbGV0ZSB0Ll9wYWNrX25leHQsZGVsZXRlIHQuX3BhY2tfcHJldn1mdW5jdGlvbiBubyh0LGUscil7dmFyIG49dC5yK3IucixhPWUueC10LngsaT1lLnktdC55O2lmKG4mJihhfHxpKSl7dmFyIG89ZS5yK3IucixzPWEqYStpKmksbD0uNSsoKG4qPW4pLShvKj1vKSkvKDIqcyksYz1NYXRoLnNxcnQoTWF0aC5tYXgoMCwyKm8qKG4rcyktKG4tPXMpKm4tbypvKSkvKDIqcyk7ci54PXQueCtsKmErYyppLHIueT10LnkrbCppLWMqYX1lbHNlIHIueD10LngrbixyLnk9dC55fWZ1bmN0aW9uIGFvKHQsZSl7cmV0dXJuIHQucGFyZW50PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gaW8odCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZS5sZW5ndGg/ZVswXTp0LnR9ZnVuY3Rpb24gb28odCl7dmFyIGUscj10LmNoaWxkcmVuO3JldHVybihlPXIubGVuZ3RoKT9yW2UtMV06dC50fWZ1bmN0aW9uIHNvKHQsZSxyKXt2YXIgbj1yLyhlLmktdC5pKTtlLmMtPW4sZS5zKz1yLHQuYys9bixlLnorPXIsZS5tKz1yfWZ1bmN0aW9uIGxvKHQsZSxyKXtyZXR1cm4gdC5hLnBhcmVudD09PWUucGFyZW50P3QuYTpyfWZ1bmN0aW9uIGNvKHQpe3JldHVybnt4OnQueCx5OnQueSxkeDp0LmR4LGR5OnQuZHl9fWZ1bmN0aW9uIHVvKHQsZSl7dmFyIHI9dC54K2VbM10sbj10LnkrZVswXSxhPXQuZHgtZVsxXS1lWzNdLGk9dC5keS1lWzBdLWVbMl07cmV0dXJuIGE8MCYmKHIrPWEvMixhPTApLGk8MCYmKG4rPWkvMixpPTApLHt4OnIseTpuLGR4OmEsZHk6aX19ZnVuY3Rpb24gaG8odCl7dmFyIGU9dFswXSxyPXRbdC5sZW5ndGgtMV07cmV0dXJuIGU8cj9bZSxyXTpbcixlXX1mdW5jdGlvbiBmbyh0KXtyZXR1cm4gdC5yYW5nZUV4dGVudD90LnJhbmdlRXh0ZW50KCk6aG8odC5yYW5nZSgpKX1mdW5jdGlvbiBwbyh0LGUscixuKXt2YXIgYT1yKHRbMF0sdFsxXSksaT1uKGVbMF0sZVsxXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGEodCkpfX1mdW5jdGlvbiBnbyh0LGUpe3ZhciByLG49MCxhPXQubGVuZ3RoLTEsaT10W25dLG89dFthXTtyZXR1cm4gbzxpJiYocj1uLG49YSxhPXIscj1pLGk9byxvPXIpLHRbbl09ZS5mbG9vcihpKSx0W2FdPWUuY2VpbChvKSx0fWZ1bmN0aW9uIHZvKHQpe3JldHVybiB0P3tmbG9vcjpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlL3QpKnR9LGNlaWw6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguY2VpbChlL3QpKnR9fTptb310LmxheW91dC5oaXN0b2dyYW09ZnVuY3Rpb24oKXt2YXIgZT0hMCxyPU51bWJlcixuPVppLGE9V2k7ZnVuY3Rpb24gaShpLG8pe2Zvcih2YXIgcyxsLGM9W10sdT1pLm1hcChyLHRoaXMpLGg9bi5jYWxsKHRoaXMsdSxvKSxmPWEuY2FsbCh0aGlzLGgsdSxvKSxwPShvPS0xLHUubGVuZ3RoKSxkPWYubGVuZ3RoLTEsZz1lPzE6MS9wOysrbzxkOykocz1jW29dPVtdKS5keD1mW28rMV0tKHMueD1mW29dKSxzLnk9MDtpZihkPjApZm9yKG89LTE7KytvPHA7KShsPXVbb10pPj1oWzBdJiZsPD1oWzFdJiYoKHM9Y1t0LmJpc2VjdChmLGwsMSxkKS0xXSkueSs9ZyxzLnB1c2goaVtvXSkpO3JldHVybiBjfXJldHVybiBpLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaSk6cn0saS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj12ZSh0KSxpKTpufSxpLmJpbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9Im51bWJlciI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUpe3JldHVybiBYaShlLHQpfTp2ZSh0KSxpKTphfSxpLmZyZXF1ZW5jeT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsaSk6ZX0saX0sdC5sYXlvdXQucGFjaz1mdW5jdGlvbigpe3ZhciBlLHI9dC5sYXlvdXQuaGllcmFyY2h5KCkuc29ydChKaSksbj0wLGE9WzEsMV07ZnVuY3Rpb24gaSh0LGkpe3ZhciBvPXIuY2FsbCh0aGlzLHQsaSkscz1vWzBdLGw9YVswXSxjPWFbMV0sdT1udWxsPT1lP01hdGguc3FydDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOmZ1bmN0aW9uKCl7cmV0dXJuIGV9O2lmKHMueD1zLnk9MCxQaShzLGZ1bmN0aW9uKHQpe3Qucj0rdSh0LnZhbHVlKX0pLFBpKHMsdG8pLG4pe3ZhciBoPW4qKGU/MTpNYXRoLm1heCgyKnMuci9sLDIqcy5yL2MpKS8yO1BpKHMsZnVuY3Rpb24odCl7dC5yKz1ofSksUGkocyx0byksUGkocyxmdW5jdGlvbih0KXt0LnItPWh9KX1yZXR1cm4gZnVuY3Rpb24gdChlLHIsbixhKXt2YXIgaT1lLmNoaWxkcmVuO2UueD1yKz1hKmUueDtlLnk9bis9YSplLnk7ZS5yKj1hO2lmKGkpZm9yKHZhciBvPS0xLHM9aS5sZW5ndGg7KytvPHM7KXQoaVtvXSxyLG4sYSl9KHMsbC8yLGMvMixlPzE6MS9NYXRoLm1heCgyKnMuci9sLDIqcy5yL2MpKSxvfXJldHVybiBpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxpKTphfSxpLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10fHwiZnVuY3Rpb24iPT10eXBlb2YgdD90Oit0LGkpOmV9LGkucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxpKTpufSxMaShpLHIpfSx0LmxheW91dC50cmVlPWZ1bmN0aW9uKCl7dmFyIGU9dC5sYXlvdXQuaGllcmFyY2h5KCkuc29ydChudWxsKS52YWx1ZShudWxsKSxyPWFvLG49WzEsMV0sYT1udWxsO2Z1bmN0aW9uIGkodCxpKXt2YXIgYz1lLmNhbGwodGhpcyx0LGkpLHU9Y1swXSxoPWZ1bmN0aW9uKHQpe3ZhciBlLHI9e0E6bnVsbCxjaGlsZHJlbjpbdF19LG49W3JdO2Zvcig7bnVsbCE9KGU9bi5wb3AoKSk7KWZvcih2YXIgYSxpPWUuY2hpbGRyZW4sbz0wLHM9aS5sZW5ndGg7bzxzOysrbyluLnB1c2goKGlbb109YT17XzppW29dLHBhcmVudDplLGNoaWxkcmVuOihhPWlbb10uY2hpbGRyZW4pJiZhLnNsaWNlKCl8fFtdLEE6bnVsbCxhOm51bGwsejowLG06MCxjOjAsczowLHQ6bnVsbCxpOm99KS5hPWEpO3JldHVybiByLmNoaWxkcmVuWzBdfSh1KTtpZihQaShoLG8pLGgucGFyZW50Lm09LWgueixDaShoLHMpLGEpQ2kodSxsKTtlbHNle3ZhciBmPXUscD11LGQ9dTtDaSh1LGZ1bmN0aW9uKHQpe3QueDxmLngmJihmPXQpLHQueD5wLngmJihwPXQpLHQuZGVwdGg+ZC5kZXB0aCYmKGQ9dCl9KTt2YXIgZz1yKGYscCkvMi1mLngsdj1uWzBdLyhwLngrcihwLGYpLzIrZyksbT1uWzFdLyhkLmRlcHRofHwxKTtDaSh1LGZ1bmN0aW9uKHQpe3QueD0odC54K2cpKnYsdC55PXQuZGVwdGgqbX0pfXJldHVybiBjfWZ1bmN0aW9uIG8odCl7dmFyIGU9dC5jaGlsZHJlbixuPXQucGFyZW50LmNoaWxkcmVuLGE9dC5pP25bdC5pLTFdOm51bGw7aWYoZS5sZW5ndGgpeyFmdW5jdGlvbih0KXt2YXIgZSxyPTAsbj0wLGE9dC5jaGlsZHJlbixpPWEubGVuZ3RoO2Zvcig7LS1pPj0wOykoZT1hW2ldKS56Kz1yLGUubSs9cixyKz1lLnMrKG4rPWUuYyl9KHQpO3ZhciBpPShlWzBdLnorZVtlLmxlbmd0aC0xXS56KS8yO2E/KHQuej1hLnorcih0Ll8sYS5fKSx0Lm09dC56LWkpOnQuej1pfWVsc2UgYSYmKHQuej1hLnorcih0Ll8sYS5fKSk7dC5wYXJlbnQuQT1mdW5jdGlvbih0LGUsbil7aWYoZSl7Zm9yKHZhciBhLGk9dCxvPXQscz1lLGw9aS5wYXJlbnQuY2hpbGRyZW5bMF0sYz1pLm0sdT1vLm0saD1zLm0sZj1sLm07cz1vbyhzKSxpPWlvKGkpLHMmJmk7KWw9aW8obCksKG89b28obykpLmE9dCwoYT1zLnoraC1pLnotYytyKHMuXyxpLl8pKT4wJiYoc28obG8ocyx0LG4pLHQsYSksYys9YSx1Kz1hKSxoKz1zLm0sYys9aS5tLGYrPWwubSx1Kz1vLm07cyYmIW9vKG8pJiYoby50PXMsby5tKz1oLXUpLGkmJiFpbyhsKSYmKGwudD1pLGwubSs9Yy1mLG49dCl9cmV0dXJuIG59KHQsYSx0LnBhcmVudC5BfHxuWzBdKX1mdW5jdGlvbiBzKHQpe3QuXy54PXQueit0LnBhcmVudC5tLHQubSs9dC5wYXJlbnQubX1mdW5jdGlvbiBsKHQpe3QueCo9blswXSx0Lnk9dC5kZXB0aCpuWzFdfXJldHVybiBpLnNlcGFyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxpKTpyfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09KG49dCk/bDpudWxsLGkpOmE/bnVsbDpufSxpLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW51bGw9PShuPXQpP251bGw6bCxpKTphP246bnVsbH0sTGkoaSxlKX0sdC5sYXlvdXQuY2x1c3Rlcj1mdW5jdGlvbigpe3ZhciBlPXQubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQobnVsbCkudmFsdWUobnVsbCkscj1hbyxuPVsxLDFdLGE9ITE7ZnVuY3Rpb24gaShpLG8pe3ZhciBzLGw9ZS5jYWxsKHRoaXMsaSxvKSxjPWxbMF0sdT0wO1BpKGMsZnVuY3Rpb24oZSl7dmFyIG49ZS5jaGlsZHJlbjtuJiZuLmxlbmd0aD8oZS54PWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0K2UueH0sMCkvdC5sZW5ndGh9KG4pLGUueT1mdW5jdGlvbihlKXtyZXR1cm4gMSt0Lm1heChlLGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KX0obikpOihlLng9cz91Kz1yKGUscyk6MCxlLnk9MCxzPWUpfSk7dmFyIGg9ZnVuY3Rpb24gdChlKXt2YXIgcj1lLmNoaWxkcmVuO3JldHVybiByJiZyLmxlbmd0aD90KHJbMF0pOmV9KGMpLGY9ZnVuY3Rpb24gdChlKXt2YXIgcixuPWUuY2hpbGRyZW47cmV0dXJuIG4mJihyPW4ubGVuZ3RoKT90KG5bci0xXSk6ZX0oYykscD1oLngtcihoLGYpLzIsZD1mLngrcihmLGgpLzI7cmV0dXJuIFBpKGMsYT9mdW5jdGlvbih0KXt0Lng9KHQueC1jLngpKm5bMF0sdC55PShjLnktdC55KSpuWzFdfTpmdW5jdGlvbih0KXt0Lng9KHQueC1wKS8oZC1wKSpuWzBdLHQueT0oMS0oYy55P3QueS9jLnk6MSkpKm5bMV19KSxsfXJldHVybiBpLnNlcGFyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxpKTpyfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09KG49dCksaSk6YT9udWxsOm59LGkubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbCE9KG49dCksaSk6YT9uOm51bGx9LExpKGksZSl9LHQubGF5b3V0LnRyZWVtYXA9ZnVuY3Rpb24oKXt2YXIgZSxyPXQubGF5b3V0LmhpZXJhcmNoeSgpLG49TWF0aC5yb3VuZCxhPVsxLDFdLGk9bnVsbCxvPWNvLHM9ITEsbD0ic3F1YXJpZnkiLGM9LjUqKDErTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiB1KHQsZSl7Zm9yKHZhciByLG4sYT0tMSxpPXQubGVuZ3RoOysrYTxpOyluPShyPXRbYV0pLnZhbHVlKihlPDA/MDplKSxyLmFyZWE9aXNOYU4obil8fG48PTA/MDpufWZ1bmN0aW9uIGgodCl7dmFyIGU9dC5jaGlsZHJlbjtpZihlJiZlLmxlbmd0aCl7dmFyIHIsbixhLGk9byh0KSxzPVtdLGM9ZS5zbGljZSgpLGY9MS8wLGc9InNsaWNlIj09PWw/aS5keDoiZGljZSI9PT1sP2kuZHk6InNsaWNlLWRpY2UiPT09bD8xJnQuZGVwdGg/aS5keTppLmR4Ok1hdGgubWluKGkuZHgsaS5keSk7Zm9yKHUoYyxpLmR4KmkuZHkvdC52YWx1ZSkscy5hcmVhPTA7KGE9Yy5sZW5ndGgpPjA7KXMucHVzaChyPWNbYS0xXSkscy5hcmVhKz1yLmFyZWEsInNxdWFyaWZ5IiE9PWx8fChuPXAocyxnKSk8PWY/KGMucG9wKCksZj1uKToocy5hcmVhLT1zLnBvcCgpLmFyZWEsZChzLGcsaSwhMSksZz1NYXRoLm1pbihpLmR4LGkuZHkpLHMubGVuZ3RoPXMuYXJlYT0wLGY9MS8wKTtzLmxlbmd0aCYmKGQocyxnLGksITApLHMubGVuZ3RoPXMuYXJlYT0wKSxlLmZvckVhY2goaCl9fWZ1bmN0aW9uIGYodCl7dmFyIGU9dC5jaGlsZHJlbjtpZihlJiZlLmxlbmd0aCl7dmFyIHIsbj1vKHQpLGE9ZS5zbGljZSgpLGk9W107Zm9yKHUoYSxuLmR4Km4uZHkvdC52YWx1ZSksaS5hcmVhPTA7cj1hLnBvcCgpOylpLnB1c2gociksaS5hcmVhKz1yLmFyZWEsbnVsbCE9ci56JiYoZChpLHIuej9uLmR4Om4uZHksbiwhYS5sZW5ndGgpLGkubGVuZ3RoPWkuYXJlYT0wKTtlLmZvckVhY2goZil9fWZ1bmN0aW9uIHAodCxlKXtmb3IodmFyIHIsbj10LmFyZWEsYT0wLGk9MS8wLG89LTEscz10Lmxlbmd0aDsrK288czspKHI9dFtvXS5hcmVhKSYmKHI8aSYmKGk9cikscj5hJiYoYT1yKSk7cmV0dXJuIGUqPWUsKG4qPW4pP01hdGgubWF4KGUqYSpjL24sbi8oZSppKmMpKToxLzB9ZnVuY3Rpb24gZCh0LGUscixhKXt2YXIgaSxvPS0xLHM9dC5sZW5ndGgsbD1yLngsYz1yLnksdT1lP24odC5hcmVhL2UpOjA7aWYoZT09ci5keCl7Zm9yKChhfHx1PnIuZHkpJiYodT1yLmR5KTsrK288czspKGk9dFtvXSkueD1sLGkueT1jLGkuZHk9dSxsKz1pLmR4PU1hdGgubWluKHIueCtyLmR4LWwsdT9uKGkuYXJlYS91KTowKTtpLno9ITAsaS5keCs9ci54K3IuZHgtbCxyLnkrPXUsci5keS09dX1lbHNle2ZvcigoYXx8dT5yLmR4KSYmKHU9ci5keCk7KytvPHM7KShpPXRbb10pLng9bCxpLnk9YyxpLmR4PXUsYys9aS5keT1NYXRoLm1pbihyLnkrci5keS1jLHU/bihpLmFyZWEvdSk6MCk7aS56PSExLGkuZHkrPXIueStyLmR5LWMsci54Kz11LHIuZHgtPXV9fWZ1bmN0aW9uIGcodCl7dmFyIG49ZXx8cih0KSxpPW5bMF07cmV0dXJuIGkueD1pLnk9MCxpLnZhbHVlPyhpLmR4PWFbMF0saS5keT1hWzFdKTppLmR4PWkuZHk9MCxlJiZyLnJldmFsdWUoaSksdShbaV0saS5keCppLmR5L2kudmFsdWUpLChlP2Y6aCkoaSkscyYmKGU9biksbn1yZXR1cm4gZy5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsZyk6YX0sZy5wYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBpO2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHVvKGUsdCl9dmFyIHI7cmV0dXJuIG89bnVsbD09KGk9dCk/Y286ImZ1bmN0aW9uIj09KHI9dHlwZW9mIHQpP2Z1bmN0aW9uKGUpe3ZhciByPXQuY2FsbChnLGUsZS5kZXB0aCk7cmV0dXJuIG51bGw9PXI/Y28oZSk6dW8oZSwibnVtYmVyIj09dHlwZW9mIHI/W3IscixyLHJdOnIpfToibnVtYmVyIj09PXI/KHQ9W3QsdCx0LHRdLGUpOmUsZ30sZy5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10P01hdGgucm91bmQ6TnVtYmVyLGcpOm4hPU51bWJlcn0sZy5zdGlja3k9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCxlPW51bGwsZyk6c30sZy5yYXRpbz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LGcpOmN9LGcubW9kZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10KyIiLGcpOmx9LExpKGcscil9LHQucmFuZG9tPXtub3JtYWw6ZnVuY3Rpb24odCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByPDImJihlPTEpLHI8MSYmKHQ9MCksZnVuY3Rpb24oKXt2YXIgcixuLGE7ZG97YT0ocj0yKk1hdGgucmFuZG9tKCktMSkqcisobj0yKk1hdGgucmFuZG9tKCktMSkqbn13aGlsZSghYXx8YT4xKTtyZXR1cm4gdCtlKnIqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKGEpL2EpfX0sbG9nTm9ybWFsOmZ1bmN0aW9uKCl7dmFyIGU9dC5yYW5kb20ubm9ybWFsLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAoZSgpKX19LGJhdGVzOmZ1bmN0aW9uKGUpe3ZhciByPXQucmFuZG9tLmlyd2luSGFsbChlKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcigpL2V9fSxpcndpbkhhbGw6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAscj0wO3I8dDtyKyspZSs9TWF0aC5yYW5kb20oKTtyZXR1cm4gZX19fSx0LnNjYWxlPXt9O3ZhciBtbz17Zmxvb3I6UCxjZWlsOlB9O2Z1bmN0aW9uIHlvKGUscixuLGEpe3ZhciBpPVtdLG89W10scz0wLGw9TWF0aC5taW4oZS5sZW5ndGgsci5sZW5ndGgpLTE7Zm9yKGVbbF08ZVswXSYmKGU9ZS5zbGljZSgpLnJldmVyc2UoKSxyPXIuc2xpY2UoKS5yZXZlcnNlKCkpOysrczw9bDspaS5wdXNoKG4oZVtzLTFdLGVbc10pKSxvLnB1c2goYShyW3MtMV0scltzXSkpO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj10LmJpc2VjdChlLHIsMSxsKS0xO3JldHVybiBvW25dKGlbbl0ocikpfX1mdW5jdGlvbiB4byhlLHIpe3JldHVybiB0LnJlYmluZChlLHIsInJhbmdlIiwicmFuZ2VSb3VuZCIsImludGVycG9sYXRlIiwiY2xhbXAiKX1mdW5jdGlvbiBibyh0LGUpe3JldHVybiBnbyh0LHZvKF9vKHQsZSlbMl0pKSxnbyh0LHZvKF9vKHQsZSlbMl0pKSx0fWZ1bmN0aW9uIF9vKHQsZSl7bnVsbD09ZSYmKGU9MTApO3ZhciByPWhvKHQpLG49clsxXS1yWzBdLGE9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhuL2UpL01hdGguTE4xMCkpLGk9ZS9uKmE7cmV0dXJuIGk8PS4xNT9hKj0xMDppPD0uMzU/YSo9NTppPD0uNzUmJihhKj0yKSxyWzBdPU1hdGguY2VpbChyWzBdL2EpKmEsclsxXT1NYXRoLmZsb29yKHJbMV0vYSkqYSsuNSphLHJbMl09YSxyfWZ1bmN0aW9uIHdvKGUscil7cmV0dXJuIHQucmFuZ2UuYXBwbHkodCxfbyhlLHIpKX1mdW5jdGlvbiBrbyhlLHIsbil7dmFyIGE9X28oZSxyKTtpZihuKXt2YXIgaT1QZS5leGVjKG4pO2lmKGkuc2hpZnQoKSwicyI9PT1pWzhdKXt2YXIgbz10LmZvcm1hdFByZWZpeChNYXRoLm1heCh5KGFbMF0pLHkoYVsxXSkpKTtyZXR1cm4gaVs3XXx8KGlbN109Ii4iK01vKG8uc2NhbGUoYVsyXSkpKSxpWzhdPSJmIixuPXQuZm9ybWF0KGkuam9pbigiIikpLGZ1bmN0aW9uKHQpe3JldHVybiBuKG8uc2NhbGUodCkpK28uc3ltYm9sfX1pWzddfHwoaVs3XT0iLiIrZnVuY3Rpb24odCxlKXt2YXIgcj1NbyhlWzJdKTtyZXR1cm4gdCBpbiBUbz9NYXRoLmFicyhyLU1vKE1hdGgubWF4KHkoZVswXSkseShlWzFdKSkpKSsgKygiZSIhPT10KTpyLTIqKCIlIj09PXQpfShpWzhdLGEpKSxuPWkuam9pbigiIil9ZWxzZSBuPSIsLiIrTW8oYVsyXSkrImYiO3JldHVybiB0LmZvcm1hdChuKX10LnNjYWxlLmxpbmVhcj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB0KGUscixuLGEpe3ZhciBpLG87ZnVuY3Rpb24gcygpe3ZhciB0PU1hdGgubWluKGUubGVuZ3RoLHIubGVuZ3RoKT4yP3lvOnBvLHM9YT94aTp5aTtyZXR1cm4gaT10KGUscixzLG4pLG89dChyLGUscyxLYSksbH1mdW5jdGlvbiBsKHQpe3JldHVybiBpKHQpfWwuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBvKHQpfTtsLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10Lm1hcChOdW1iZXIpLHMoKSk6ZX07bC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LHMoKSk6cn07bC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBsLnJhbmdlKHQpLmludGVycG9sYXRlKGhpKX07bC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LHMoKSk6YX07bC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LHMoKSk6bn07bC50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gd28oZSx0KX07bC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQscil7cmV0dXJuIGtvKGUsdCxyKX07bC5uaWNlPWZ1bmN0aW9uKHQpe3JldHVybiBibyhlLHQpLHMoKX07bC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoZSxyLG4sYSl9O3JldHVybiBzKCl9KFswLDFdLFswLDFdLEthLCExKX07dmFyIFRvPXtzOjEsZzoxLHA6MSxyOjEsZToxfTtmdW5jdGlvbiBNbyh0KXtyZXR1cm4tTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMTArLjAxKX10LnNjYWxlLmxvZz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHIsbixhLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuKGE/TWF0aC5sb2codDwwPzA6dCk6LU1hdGgubG9nKHQ+MD8wOi10KSkvTWF0aC5sb2cobil9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gYT9NYXRoLnBvdyhuLHQpOi1NYXRoLnBvdyhuLC10KX1mdW5jdGlvbiBsKHQpe3JldHVybiByKG8odCkpfWwuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBzKHIuaW52ZXJ0KHQpKX07bC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dFswXT49MCxyLmRvbWFpbigoaT10Lm1hcChOdW1iZXIpKS5tYXAobykpLGwpOml9O2wuYmFzZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxyLmRvbWFpbihpLm1hcChvKSksbCk6bn07bC5uaWNlPWZ1bmN0aW9uKCl7dmFyIHQ9Z28oaS5tYXAobyksYT9NYXRoOlNvKTtyZXR1cm4gci5kb21haW4odCksaT10Lm1hcChzKSxsfTtsLnRpY2tzPWZ1bmN0aW9uKCl7dmFyIHQ9aG8oaSksZT1bXSxyPXRbMF0sbD10WzFdLGM9TWF0aC5mbG9vcihvKHIpKSx1PU1hdGguY2VpbChvKGwpKSxoPW4lMT8yOm47aWYoaXNGaW5pdGUodS1jKSl7aWYoYSl7Zm9yKDtjPHU7YysrKWZvcih2YXIgZj0xO2Y8aDtmKyspZS5wdXNoKHMoYykqZik7ZS5wdXNoKHMoYykpfWVsc2UgZm9yKGUucHVzaChzKGMpKTtjKys8dTspZm9yKHZhciBmPWgtMTtmPjA7Zi0tKWUucHVzaChzKGMpKmYpO2ZvcihjPTA7ZVtjXTxyO2MrKyk7Zm9yKHU9ZS5sZW5ndGg7ZVt1LTFdPmw7dS0tKTtlPWUuc2xpY2UoYyx1KX1yZXR1cm4gZX07bC50aWNrRm9ybWF0PWZ1bmN0aW9uKGUscil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIEFvO2FyZ3VtZW50cy5sZW5ndGg8Mj9yPUFvOiJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj10LmZvcm1hdChyKSk7dmFyIGE9TWF0aC5tYXgoMSxuKmUvbC50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXQvcyhNYXRoLnJvdW5kKG8odCkpKTtyZXR1cm4gZSpuPG4tLjUmJihlKj1uKSxlPD1hP3IodCk6IiJ9fTtsLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZShyLmNvcHkoKSxuLGEsaSl9O3JldHVybiB4byhsLHIpfSh0LnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCwxXSksMTAsITAsWzEsMTBdKX07dmFyIEFvPXQuZm9ybWF0KCIuMGUiKSxTbz17Zmxvb3I6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGguY2VpbCgtdCl9LGNlaWw6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGguZmxvb3IoLXQpfX07ZnVuY3Rpb24gRW8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LU1hdGgucG93KC1lLHQpOk1hdGgucG93KGUsdCl9fXQuc2NhbGUucG93PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHQoZSxyLG4pe3ZhciBhPUVvKHIpLGk9RW8oMS9yKTtmdW5jdGlvbiBvKHQpe3JldHVybiBlKGEodCkpfW8uaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKGUuaW52ZXJ0KHQpKX07by5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUuZG9tYWluKChuPXQubWFwKE51bWJlcikpLm1hcChhKSksbyk6bn07by50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gd28obix0KX07by50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGtvKG4sdCxlKX07by5uaWNlPWZ1bmN0aW9uKHQpe3JldHVybiBvLmRvbWFpbihibyhuLHQpKX07by5leHBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1FbyhyPXQpLGk9RW8oMS9yKSxlLmRvbWFpbihuLm1hcChhKSksbyk6cn07by5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoZS5jb3B5KCkscixuKX07cmV0dXJuIHhvKG8sZSl9KHQuc2NhbGUubGluZWFyKCksMSxbMCwxXSl9LHQuc2NhbGUuc3FydD1mdW5jdGlvbigpe3JldHVybiB0LnNjYWxlLnBvdygpLmV4cG9uZW50KC41KX0sdC5zY2FsZS5vcmRpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUocixuKXt2YXIgYSxpLG87ZnVuY3Rpb24gcyh0KXtyZXR1cm4gaVsoKGEuZ2V0KHQpfHwoInJhbmdlIj09PW4udD9hLnNldCh0LHIucHVzaCh0KSk6TmFOKSktMSklaS5sZW5ndGhdfWZ1bmN0aW9uIGwoZSxuKXtyZXR1cm4gdC5yYW5nZShyLmxlbmd0aCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlK24qdH0pfXMuZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiByO3I9W10sYT1uZXcgYjtmb3IodmFyIGUsaT0tMSxvPXQubGVuZ3RoOysraTxvOylhLmhhcyhlPXRbaV0pfHxhLnNldChlLHIucHVzaChlKSk7cmV0dXJuIHNbbi50XS5hcHBseShzLG4uYSl9O3MucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxvPTAsbj17dDoicmFuZ2UiLGE6YXJndW1lbnRzfSxzKTppfTtzLnJhbmdlUG9pbnRzPWZ1bmN0aW9uKHQsZSl7YXJndW1lbnRzLmxlbmd0aDwyJiYoZT0wKTt2YXIgYT10WzBdLGM9dFsxXSx1PXIubGVuZ3RoPDI/KGE9KGErYykvMiwwKTooYy1hKS8oci5sZW5ndGgtMStlKTtyZXR1cm4gaT1sKGErdSplLzIsdSksbz0wLG49e3Q6InJhbmdlUG9pbnRzIixhOmFyZ3VtZW50c30sc307cy5yYW5nZVJvdW5kUG9pbnRzPWZ1bmN0aW9uKHQsZSl7YXJndW1lbnRzLmxlbmd0aDwyJiYoZT0wKTt2YXIgYT10WzBdLGM9dFsxXSx1PXIubGVuZ3RoPDI/KGE9Yz1NYXRoLnJvdW5kKChhK2MpLzIpLDApOihjLWEpLyhyLmxlbmd0aC0xK2UpfDA7cmV0dXJuIGk9bChhK01hdGgucm91bmQodSplLzIrKGMtYS0oci5sZW5ndGgtMStlKSp1KS8yKSx1KSxvPTAsbj17dDoicmFuZ2VSb3VuZFBvaW50cyIsYTphcmd1bWVudHN9LHN9O3MucmFuZ2VCYW5kcz1mdW5jdGlvbih0LGUsYSl7YXJndW1lbnRzLmxlbmd0aDwyJiYoZT0wKSxhcmd1bWVudHMubGVuZ3RoPDMmJihhPWUpO3ZhciBjPXRbMV08dFswXSx1PXRbYy0wXSxoPXRbMS1jXSxmPShoLXUpLyhyLmxlbmd0aC1lKzIqYSk7cmV0dXJuIGk9bCh1K2YqYSxmKSxjJiZpLnJldmVyc2UoKSxvPWYqKDEtZSksbj17dDoicmFuZ2VCYW5kcyIsYTphcmd1bWVudHN9LHN9O3MucmFuZ2VSb3VuZEJhbmRzPWZ1bmN0aW9uKHQsZSxhKXthcmd1bWVudHMubGVuZ3RoPDImJihlPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGE9ZSk7dmFyIGM9dFsxXTx0WzBdLHU9dFtjLTBdLGg9dFsxLWNdLGY9TWF0aC5mbG9vcigoaC11KS8oci5sZW5ndGgtZSsyKmEpKTtyZXR1cm4gaT1sKHUrTWF0aC5yb3VuZCgoaC11LShyLmxlbmd0aC1lKSpmKS8yKSxmKSxjJiZpLnJldmVyc2UoKSxvPU1hdGgucm91bmQoZiooMS1lKSksbj17dDoicmFuZ2VSb3VuZEJhbmRzIixhOmFyZ3VtZW50c30sc307cy5yYW5nZUJhbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gb307cy5yYW5nZUV4dGVudD1mdW5jdGlvbigpe3JldHVybiBobyhuLmFbMF0pfTtzLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZShyLG4pfTtyZXR1cm4gcy5kb21haW4ocil9KFtdLHt0OiJyYW5nZSIsYTpbW11dfSl9LHQuc2NhbGUuY2F0ZWdvcnkxMD1mdW5jdGlvbigpe3JldHVybiB0LnNjYWxlLm9yZGluYWwoKS5yYW5nZShMbyl9LHQuc2NhbGUuY2F0ZWdvcnkyMD1mdW5jdGlvbigpe3JldHVybiB0LnNjYWxlLm9yZGluYWwoKS5yYW5nZShDbyl9LHQuc2NhbGUuY2F0ZWdvcnkyMGI9ZnVuY3Rpb24oKXtyZXR1cm4gdC5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoUG8pfSx0LnNjYWxlLmNhdGVnb3J5MjBjPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2NhbGUub3JkaW5hbCgpLnJhbmdlKE9vKX07dmFyIExvPVsyMDYyMjYwLDE2NzQ0MjA2LDI5MjQ1ODgsMTQwMzQ3MjgsOTcyNTg4NSw5MTk3MTMxLDE0OTA3MzMwLDgzNTU3MTEsMTIzNjkxODYsMTU1NjE3NV0ubWFwKHNlKSxDbz1bMjA2MjI2MCwxMTQ1NDQ0MCwxNjc0NDIwNiwxNjc1OTY3MiwyOTI0NTg4LDEwMDE4Njk4LDE0MDM0NzI4LDE2NzUwNzQyLDk3MjU4ODUsMTI5NTU4NjEsOTE5NzEzMSwxMjg4NTE0MCwxNDkwNzMzMCwxNjIzNDE5NCw4MzU1NzExLDEzMDkyODA3LDEyMzY5MTg2LDE0NDA4NTg5LDE1NTYxNzUsMTA0MTA3MjVdLm1hcChzZSksUG89WzM3NTA3NzcsNTM5NTYxOSw3MDQwNzE5LDEwMjY0Mjg2LDY1MTkwOTcsOTIxNjU5NCwxMTkxNTExNSwxMzU1NjYzNiw5MjAyOTkzLDEyNDI2ODA5LDE1MTg2NTE0LDE1MTkwOTMyLDg2NjYxNjksMTEzNTY0OTAsMTQwNDk2NDMsMTUxNzczNzIsODA3NzY4MywxMDgzNDMyNCwxMzUyODUwOSwxNDU4OTY1NF0ubWFwKHNlKSxPbz1bMzI0NDczMyw3MDU3MTEwLDEwNDA2NjI1LDEzMDMyNDMxLDE1MDk1MDUzLDE2NjE2NzY0LDE2NjI1MjU5LDE2NjM0MDE4LDMyNTMwNzYsNzY1MjQ3MCwxMDYwNzAwMywxMzEwMTUwNCw3Njk1MjgxLDEwMzk0MzEyLDEyMzY5MzcyLDE0MzQyODkxLDY1MTM1MDcsOTg2ODk1MCwxMjQzNDg3NywxNDI3NzA4MV0ubWFwKHNlKTtmdW5jdGlvbiB6bygpe3JldHVybiAwfXQuc2NhbGUucXVhbnRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZShyLG4pe3ZhciBhO2Z1bmN0aW9uIGkoKXt2YXIgZT0wLGk9bi5sZW5ndGg7Zm9yKGE9W107KytlPGk7KWFbZS0xXT10LnF1YW50aWxlKHIsZS9pKTtyZXR1cm4gb31mdW5jdGlvbiBvKGUpe2lmKCFpc05hTihlPStlKSlyZXR1cm4gblt0LmJpc2VjdChhLGUpXX1vLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10Lm1hcChwKS5maWx0ZXIoZCkuc29ydChmKSxpKCkpOnJ9O28ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxpKCkpOm59O28ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGF9O28uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybih0PW4uaW5kZXhPZih0KSk8MD9bTmFOLE5hTl06W3Q+MD9hW3QtMV06clswXSx0PGEubGVuZ3RoP2FbdF06cltyLmxlbmd0aC0xXV19O28uY29weT1mdW5jdGlvbigpe3JldHVybiBlKHIsbil9O3JldHVybiBpKCl9KFtdLFtdKX0sdC5zY2FsZS5xdWFudGl6ZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB0KGUscixuKXt2YXIgYSxpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIG5bTWF0aC5tYXgoMCxNYXRoLm1pbihpLE1hdGguZmxvb3IoYSoodC1lKSkpKV19ZnVuY3Rpb24gcygpe3JldHVybiBhPW4ubGVuZ3RoLyhyLWUpLGk9bi5sZW5ndGgtMSxvfW8uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLHI9K3RbdC5sZW5ndGgtMV0scygpKTpbZSxyXX07by5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LHMoKSk6bn07by5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuW3Q9KHQ9bi5pbmRleE9mKHQpKTwwP05hTjp0L2ErZSx0KzEvYV19O28uY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUscixuKX07cmV0dXJuIHMoKX0oMCwxLFswLDFdKX0sdC5zY2FsZS50aHJlc2hvbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZShyLG4pe2Z1bmN0aW9uIGEoZSl7aWYoZTw9ZSlyZXR1cm4gblt0LmJpc2VjdChyLGUpXX1hLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGEpOnJ9O2EucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxhKTpufTthLmludmVydEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdD1uLmluZGV4T2YodCksW3JbdC0xXSxyW3RdXX07YS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGUocixuKX07cmV0dXJuIGF9KFsuNV0sWzAsMV0pfSx0LnNjYWxlLmlkZW50aXR5PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4rdH1yLmludmVydD1yO3IuZG9tYWluPXIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dC5tYXAocikscik6ZX07ci50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gd28oZSx0KX07ci50aWNrRm9ybWF0PWZ1bmN0aW9uKHQscil7cmV0dXJuIGtvKGUsdCxyKX07ci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoZSl9O3JldHVybiByfShbMCwxXSl9LHQuc3ZnPXt9LHQuc3ZnLmFyYz1mdW5jdGlvbigpe3ZhciB0PURvLGU9Um8scj16byxuPUlvLGE9Rm8saT1CbyxvPU5vO2Z1bmN0aW9uIHMoKXt2YXIgcz1NYXRoLm1heCgwLCt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYz1NYXRoLm1heCgwLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1FdCxoPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLUV0LGY9TWF0aC5hYnMoaC11KSxwPXU+aD8wOjE7aWYoYzxzJiYoZD1jLGM9cyxzPWQpLGY+PVN0KXJldHVybiBsKGMscCkrKHM/bChzLDEtcCk6IiIpKyJaIjt2YXIgZCxnLHYsbSx5LHgsYixfLHcsayxULE0sQT0wLFM9MCxFPVtdO2lmKChtPSgrby5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDApLzIpJiYodj1uPT09SW8/TWF0aC5zcXJ0KHMqcytjKmMpOituLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxwfHwoUyo9LTEpLGMmJihTPUl0KHYvYypNYXRoLnNpbihtKSkpLHMmJihBPUl0KHYvcypNYXRoLnNpbihtKSkpKSxjKXt5PWMqTWF0aC5jb3ModStTKSx4PWMqTWF0aC5zaW4odStTKSxiPWMqTWF0aC5jb3MoaC1TKSxfPWMqTWF0aC5zaW4oaC1TKTt2YXIgTD1NYXRoLmFicyhoLXUtMipTKTw9TXQ/MDoxO2lmKFMmJmpvKHkseCxiLF8pPT09cF5MKXt2YXIgQz0odStoKS8yO3k9YypNYXRoLmNvcyhDKSx4PWMqTWF0aC5zaW4oQyksYj1fPW51bGx9fWVsc2UgeT14PTA7aWYocyl7dz1zKk1hdGguY29zKGgtQSksaz1zKk1hdGguc2luKGgtQSksVD1zKk1hdGguY29zKHUrQSksTT1zKk1hdGguc2luKHUrQSk7dmFyIFA9TWF0aC5hYnModS1oKzIqQSk8PU10PzA6MTtpZihBJiZqbyh3LGssVCxNKT09PTEtcF5QKXt2YXIgTz0odStoKS8yO3c9cypNYXRoLmNvcyhPKSxrPXMqTWF0aC5zaW4oTyksVD1NPW51bGx9fWVsc2Ugdz1rPTA7aWYoZj5rdCYmKGQ9TWF0aC5taW4oTWF0aC5hYnMoYy1zKS8yLCtyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpPi4wMDEpe2c9czxjXnA/MDoxO3ZhciB6PWQsST1kO2lmKGY8TXQpe3ZhciBEPW51bGw9PVQ/W3csa106bnVsbD09Yj9beSx4XTpjYShbeSx4XSxbVCxNXSxbYixfXSxbdyxrXSksUj15LURbMF0sRj14LURbMV0sQj1iLURbMF0sTj1fLURbMV0saj0xL01hdGguc2luKE1hdGguYWNvcygoUipCK0YqTikvKE1hdGguc3FydChSKlIrRipGKSpNYXRoLnNxcnQoQipCK04qTikpKS8yKSxWPU1hdGguc3FydChEWzBdKkRbMF0rRFsxXSpEWzFdKTtJPU1hdGgubWluKGQsKHMtVikvKGotMSkpLHo9TWF0aC5taW4oZCwoYy1WKS8oaisxKSl9aWYobnVsbCE9Yil7dmFyIFU9Vm8obnVsbD09VD9bdyxrXTpbVCxNXSxbeSx4XSxjLHoscCkscT1WbyhbYixfXSxbdyxrXSxjLHoscCk7ZD09PXo/RS5wdXNoKCJNIixVWzBdLCJBIix6LCIsIix6LCIgMCAwLCIsZywiICIsVVsxXSwiQSIsYywiLCIsYywiIDAgIiwxLXBeam8oVVsxXVswXSxVWzFdWzFdLHFbMV1bMF0scVsxXVsxXSksIiwiLHAsIiAiLHFbMV0sIkEiLHosIiwiLHosIiAwIDAsIixnLCIgIixxWzBdKTpFLnB1c2goIk0iLFVbMF0sIkEiLHosIiwiLHosIiAwIDEsIixnLCIgIixxWzBdKX1lbHNlIEUucHVzaCgiTSIseSwiLCIseCk7aWYobnVsbCE9VCl7dmFyIEg9Vm8oW3kseF0sW1QsTV0scywtSSxwKSxHPVZvKFt3LGtdLG51bGw9PWI/W3kseF06W2IsX10scywtSSxwKTtkPT09ST9FLnB1c2goIkwiLEdbMF0sIkEiLEksIiwiLEksIiAwIDAsIixnLCIgIixHWzFdLCJBIixzLCIsIixzLCIgMCAiLHBeam8oR1sxXVswXSxHWzFdWzFdLEhbMV1bMF0sSFsxXVsxXSksIiwiLDEtcCwiICIsSFsxXSwiQSIsSSwiLCIsSSwiIDAgMCwiLGcsIiAiLEhbMF0pOkUucHVzaCgiTCIsR1swXSwiQSIsSSwiLCIsSSwiIDAgMCwiLGcsIiAiLEhbMF0pfWVsc2UgRS5wdXNoKCJMIix3LCIsIixrKX1lbHNlIEUucHVzaCgiTSIseSwiLCIseCksbnVsbCE9YiYmRS5wdXNoKCJBIixjLCIsIixjLCIgMCAiLEwsIiwiLHAsIiAiLGIsIiwiLF8pLEUucHVzaCgiTCIsdywiLCIsayksbnVsbCE9VCYmRS5wdXNoKCJBIixzLCIsIixzLCIgMCAiLFAsIiwiLDEtcCwiICIsVCwiLCIsTSk7cmV0dXJuIEUucHVzaCgiWiIpLEUuam9pbigiIil9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiJNMCwiK3QrIkEiK3QrIiwiK3QrIiAwIDEsIitlKyIgMCwiKy10KyJBIit0KyIsIit0KyIgMCAxLCIrZSsiIDAsIit0fXJldHVybiBzLmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXZlKGUpLHMpOnR9LHMub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dmUodCkscyk6ZX0scy5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dmUodCkscyk6cn0scy5wYWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dD09SW8/SW86dmUodCkscyk6bn0scy5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXZlKHQpLHMpOmF9LHMuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dmUodCkscyk6aX0scy5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz12ZSh0KSxzKTpvfSxzLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIHI9KCt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLG49KCthLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK2kuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLUV0O3JldHVybltNYXRoLmNvcyhuKSpyLE1hdGguc2luKG4pKnJdfSxzfTt2YXIgSW89ImF1dG8iO2Z1bmN0aW9uIERvKHQpe3JldHVybiB0LmlubmVyUmFkaXVzfWZ1bmN0aW9uIFJvKHQpe3JldHVybiB0Lm91dGVyUmFkaXVzfWZ1bmN0aW9uIEZvKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gQm8odCl7cmV0dXJuIHQuZW5kQW5nbGV9ZnVuY3Rpb24gTm8odCl7cmV0dXJuIHQmJnQucGFkQW5nbGV9ZnVuY3Rpb24gam8odCxlLHIsbil7cmV0dXJuKHQtcikqZS0oZS1uKSp0PjA/MDoxfWZ1bmN0aW9uIFZvKHQsZSxyLG4sYSl7dmFyIGk9dFswXS1lWzBdLG89dFsxXS1lWzFdLHM9KGE/bjotbikvTWF0aC5zcXJ0KGkqaStvKm8pLGw9cypvLGM9LXMqaSx1PXRbMF0rbCxoPXRbMV0rYyxmPWVbMF0rbCxwPWVbMV0rYyxkPSh1K2YpLzIsZz0oaCtwKS8yLHY9Zi11LG09cC1oLHk9dip2K20qbSx4PXItbixiPXUqcC1mKmgsXz0obTwwPy0xOjEpKk1hdGguc3FydChNYXRoLm1heCgwLHgqeCp5LWIqYikpLHc9KGIqbS12Kl8pL3ksaz0oLWIqdi1tKl8pL3ksVD0oYiptK3YqXykveSxNPSgtYip2K20qXykveSxBPXctZCxTPWstZyxFPVQtZCxMPU0tZztyZXR1cm4gQSpBK1MqUz5FKkUrTCpMJiYodz1ULGs9TSksW1t3LWwsay1jXSxbdypyL3gsaypyL3hdXX1mdW5jdGlvbiBVbyh0KXt2YXIgZT1uYSxyPWFhLG49WHIsYT1IbyxpPWEua2V5LG89Ljc7ZnVuY3Rpb24gcyhpKXt2YXIgcyxsPVtdLGM9W10sdT0tMSxoPWkubGVuZ3RoLGY9dmUoZSkscD12ZShyKTtmdW5jdGlvbiBkKCl7bC5wdXNoKCJNIixhKHQoYyksbykpfWZvcig7Kyt1PGg7KW4uY2FsbCh0aGlzLHM9aVt1XSx1KT9jLnB1c2goWytmLmNhbGwodGhpcyxzLHUpLCtwLmNhbGwodGhpcyxzLHUpXSk6Yy5sZW5ndGgmJihkKCksYz1bXSk7cmV0dXJuIGMubGVuZ3RoJiZkKCksbC5sZW5ndGg/bC5qb2luKCIiKTpudWxsfXJldHVybiBzLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxzKTpyfSxzLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxzKTpufSxzLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P2E9dDooYT1xby5nZXQodCl8fEhvKS5rZXkscyk6aX0scy50ZW5zaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQscyk6b30sc310LnN2Zy5saW5lPWZ1bmN0aW9uKCl7cmV0dXJuIFVvKFApfTt2YXIgcW89dC5tYXAoe2xpbmVhcjpIbywibGluZWFyLWNsb3NlZCI6R28sc3RlcDpmdW5jdGlvbih0KXt2YXIgZT0wLHI9dC5sZW5ndGgsbj10WzBdLGE9W25bMF0sIiwiLG5bMV1dO2Zvcig7KytlPHI7KWEucHVzaCgiSCIsKG5bMF0rKG49dFtlXSlbMF0pLzIsIlYiLG5bMV0pO3I+MSYmYS5wdXNoKCJIIixuWzBdKTtyZXR1cm4gYS5qb2luKCIiKX0sInN0ZXAtYmVmb3JlIjpZbywic3RlcC1hZnRlciI6V28sYmFzaXM6Sm8sImJhc2lzLW9wZW4iOmZ1bmN0aW9uKHQpe2lmKHQubGVuZ3RoPDQpcmV0dXJuIEhvKHQpO3ZhciBlLHI9W10sbj0tMSxhPXQubGVuZ3RoLGk9WzBdLG89WzBdO2Zvcig7KytuPDM7KWU9dFtuXSxpLnB1c2goZVswXSksby5wdXNoKGVbMV0pO3IucHVzaChLbyh0cyxpKSsiLCIrS28odHMsbykpLC0tbjtmb3IoOysrbjxhOyllPXRbbl0saS5zaGlmdCgpLGkucHVzaChlWzBdKSxvLnNoaWZ0KCksby5wdXNoKGVbMV0pLGVzKHIsaSxvKTtyZXR1cm4gci5qb2luKCIiKX0sImJhc2lzLWNsb3NlZCI6ZnVuY3Rpb24odCl7dmFyIGUscixuPS0xLGE9dC5sZW5ndGgsaT1hKzQsbz1bXSxzPVtdO2Zvcig7KytuPDQ7KXI9dFtuJWFdLG8ucHVzaChyWzBdKSxzLnB1c2goclsxXSk7ZT1bS28odHMsbyksIiwiLEtvKHRzLHMpXSwtLW47Zm9yKDsrK248aTspcj10W24lYV0sby5zaGlmdCgpLG8ucHVzaChyWzBdKSxzLnNoaWZ0KCkscy5wdXNoKHJbMV0pLGVzKGUsbyxzKTtyZXR1cm4gZS5qb2luKCIiKX0sYnVuZGxlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5sZW5ndGgtMTtpZihyKWZvcih2YXIgbixhLGk9dFswXVswXSxvPXRbMF1bMV0scz10W3JdWzBdLWksbD10W3JdWzFdLW8sYz0tMTsrK2M8PXI7KW49dFtjXSxhPWMvcixuWzBdPWUqblswXSsoMS1lKSooaSthKnMpLG5bMV09ZSpuWzFdKygxLWUpKihvK2EqbCk7cmV0dXJuIEpvKHQpfSxjYXJkaW5hbDpmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aDwzP0hvKHQpOnRbMF0rWG8odCxabyh0LGUpKX0sImNhcmRpbmFsLW9wZW4iOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPDQ/SG8odCk6dFsxXStYbyh0LnNsaWNlKDEsLTEpLFpvKHQsZSkpfSwiY2FyZGluYWwtY2xvc2VkIjpmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aDwzP0dvKHQpOnRbMF0rWG8oKHQucHVzaCh0WzBdKSx0KSxabyhbdFt0Lmxlbmd0aC0yXV0uY29uY2F0KHQsW3RbMV1dKSxlKSl9LG1vbm90b25lOmZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aDwzP0hvKHQpOnRbMF0rWG8odCxmdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpPVtdLG89ZnVuY3Rpb24odCl7dmFyIGU9MCxyPXQubGVuZ3RoLTEsbj1bXSxhPXRbMF0saT10WzFdLG89blswXT1ycyhhLGkpO2Zvcig7KytlPHI7KW5bZV09KG8rKG89cnMoYT1pLGk9dFtlKzFdKSkpLzI7cmV0dXJuIG5bZV09byxufSh0KSxzPS0xLGw9dC5sZW5ndGgtMTtmb3IoOysrczxsOyllPXJzKHRbc10sdFtzKzFdKSx5KGUpPGt0P29bc109b1tzKzFdPTA6KHI9b1tzXS9lLG49b1tzKzFdL2UsKGE9cipyK24qbik+OSYmKGE9MyplL01hdGguc3FydChhKSxvW3NdPWEqcixvW3MrMV09YSpuKSk7cz0tMTtmb3IoOysrczw9bDspYT0odFtNYXRoLm1pbihsLHMrMSldWzBdLXRbTWF0aC5tYXgoMCxzLTEpXVswXSkvKDYqKDErb1tzXSpvW3NdKSksaS5wdXNoKFthfHwwLG9bc10qYXx8MF0pO3JldHVybiBpfSh0KSl9fSk7ZnVuY3Rpb24gSG8odCl7cmV0dXJuIHQubGVuZ3RoPjE/dC5qb2luKCJMIik6dCsiWiJ9ZnVuY3Rpb24gR28odCl7cmV0dXJuIHQuam9pbigiTCIpKyJaIn1mdW5jdGlvbiBZbyh0KXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoLG49dFswXSxhPVtuWzBdLCIsIixuWzFdXTsrK2U8cjspYS5wdXNoKCJWIiwobj10W2VdKVsxXSwiSCIsblswXSk7cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gV28odCl7Zm9yKHZhciBlPTAscj10Lmxlbmd0aCxuPXRbMF0sYT1bblswXSwiLCIsblsxXV07KytlPHI7KWEucHVzaCgiSCIsKG49dFtlXSlbMF0sIlYiLG5bMV0pO3JldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIFhvKHQsZSl7aWYoZS5sZW5ndGg8MXx8dC5sZW5ndGghPWUubGVuZ3RoJiZ0Lmxlbmd0aCE9ZS5sZW5ndGgrMilyZXR1cm4gSG8odCk7dmFyIHI9dC5sZW5ndGghPWUubGVuZ3RoLG49IiIsYT10WzBdLGk9dFsxXSxvPWVbMF0scz1vLGw9MTtpZihyJiYobis9IlEiKyhpWzBdLTIqb1swXS8zKSsiLCIrKGlbMV0tMipvWzFdLzMpKyIsIitpWzBdKyIsIitpWzFdLGE9dFsxXSxsPTIpLGUubGVuZ3RoPjEpe3M9ZVsxXSxpPXRbbF0sbCsrLG4rPSJDIisoYVswXStvWzBdKSsiLCIrKGFbMV0rb1sxXSkrIiwiKyhpWzBdLXNbMF0pKyIsIisoaVsxXS1zWzFdKSsiLCIraVswXSsiLCIraVsxXTtmb3IodmFyIGM9MjtjPGUubGVuZ3RoO2MrKyxsKyspaT10W2xdLHM9ZVtjXSxuKz0iUyIrKGlbMF0tc1swXSkrIiwiKyhpWzFdLXNbMV0pKyIsIitpWzBdKyIsIitpWzFdfWlmKHIpe3ZhciB1PXRbbF07bis9IlEiKyhpWzBdKzIqc1swXS8zKSsiLCIrKGlbMV0rMipzWzFdLzMpKyIsIit1WzBdKyIsIit1WzFdfXJldHVybiBufWZ1bmN0aW9uIFpvKHQsZSl7Zm9yKHZhciByLG49W10sYT0oMS1lKS8yLGk9dFswXSxvPXRbMV0scz0xLGw9dC5sZW5ndGg7KytzPGw7KXI9aSxpPW8sbz10W3NdLG4ucHVzaChbYSoob1swXS1yWzBdKSxhKihvWzFdLXJbMV0pXSk7cmV0dXJuIG59ZnVuY3Rpb24gSm8odCl7aWYodC5sZW5ndGg8MylyZXR1cm4gSG8odCk7dmFyIGU9MSxyPXQubGVuZ3RoLG49dFswXSxhPW5bMF0saT1uWzFdLG89W2EsYSxhLChuPXRbMV0pWzBdXSxzPVtpLGksaSxuWzFdXSxsPVthLCIsIixpLCJMIixLbyh0cyxvKSwiLCIsS28odHMscyldO2Zvcih0LnB1c2godFtyLTFdKTsrK2U8PXI7KW49dFtlXSxvLnNoaWZ0KCksby5wdXNoKG5bMF0pLHMuc2hpZnQoKSxzLnB1c2goblsxXSksZXMobCxvLHMpO3JldHVybiB0LnBvcCgpLGwucHVzaCgiTCIsbiksbC5qb2luKCIiKX1mdW5jdGlvbiBLbyh0LGUpe3JldHVybiB0WzBdKmVbMF0rdFsxXSplWzFdK3RbMl0qZVsyXSt0WzNdKmVbM119cW8uZm9yRWFjaChmdW5jdGlvbih0LGUpe2Uua2V5PXQsZS5jbG9zZWQ9Ly1jbG9zZWQkLy50ZXN0KHQpfSk7dmFyIFFvPVswLDIvMywxLzMsMF0sJG89WzAsMS8zLDIvMywwXSx0cz1bMCwxLzYsMi8zLDEvNl07ZnVuY3Rpb24gZXModCxlLHIpe3QucHVzaCgiQyIsS28oUW8sZSksIiwiLEtvKFFvLHIpLCIsIixLbygkbyxlKSwiLCIsS28oJG8sciksIiwiLEtvKHRzLGUpLCIsIixLbyh0cyxyKSl9ZnVuY3Rpb24gcnModCxlKXtyZXR1cm4oZVsxXS10WzFdKS8oZVswXS10WzBdKX1mdW5jdGlvbiBucyh0KXtmb3IodmFyIGUscixuLGE9LTEsaT10Lmxlbmd0aDsrK2E8aTspcj0oZT10W2FdKVswXSxuPWVbMV0tRXQsZVswXT1yKk1hdGguY29zKG4pLGVbMV09cipNYXRoLnNpbihuKTtyZXR1cm4gdH1mdW5jdGlvbiBhcyh0KXt2YXIgZT1uYSxyPW5hLG49MCxhPWFhLGk9WHIsbz1IbyxzPW8ua2V5LGw9byxjPSJMIix1PS43O2Z1bmN0aW9uIGgocyl7dmFyIGgsZixwLGQ9W10sZz1bXSx2PVtdLG09LTEseT1zLmxlbmd0aCx4PXZlKGUpLGI9dmUobiksXz1lPT09cj9mdW5jdGlvbigpe3JldHVybiBmfTp2ZShyKSx3PW49PT1hP2Z1bmN0aW9uKCl7cmV0dXJuIHB9OnZlKGEpO2Z1bmN0aW9uIGsoKXtkLnB1c2goIk0iLG8odCh2KSx1KSxjLGwodChnLnJldmVyc2UoKSksdSksIloiKX1mb3IoOysrbTx5OylpLmNhbGwodGhpcyxoPXNbbV0sbSk/KGcucHVzaChbZj0reC5jYWxsKHRoaXMsaCxtKSxwPStiLmNhbGwodGhpcyxoLG0pXSksdi5wdXNoKFsrXy5jYWxsKHRoaXMsaCxtKSwrdy5jYWxsKHRoaXMsaCxtKV0pKTpnLmxlbmd0aCYmKGsoKSxnPVtdLHY9W10pO3JldHVybiBnLmxlbmd0aCYmaygpLGQubGVuZ3RoP2Quam9pbigiIik6bnVsbH1yZXR1cm4gaC54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXI9dCxoKTpyfSxoLngwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsaCk6ZX0saC54MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGgpOnJ9LGgueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1hPXQsaCk6YX0saC55MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGgpOm59LGgueTE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxoKTphfSxoLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxoKTppfSxoLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P289dDoobz1xby5nZXQodCl8fEhvKS5rZXksbD1vLnJldmVyc2V8fG8sYz1vLmNsb3NlZD8iTSI6IkwiLGgpOnN9LGgudGVuc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LGgpOnV9LGh9ZnVuY3Rpb24gaXModCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIG9zKHQpe3JldHVyblt0LngsdC55XX1mdW5jdGlvbiBzcygpe3JldHVybiA2NH1mdW5jdGlvbiBscygpe3JldHVybiJjaXJjbGUifWZ1bmN0aW9uIGNzKHQpe3ZhciBlPU1hdGguc3FydCh0L010KTtyZXR1cm4iTTAsIitlKyJBIitlKyIsIitlKyIgMCAxLDEgMCwiKy1lKyJBIitlKyIsIitlKyIgMCAxLDEgMCwiK2UrIloifXQuc3ZnLmxpbmUucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIHQ9VW8obnMpO3JldHVybiB0LnJhZGl1cz10LngsZGVsZXRlIHQueCx0LmFuZ2xlPXQueSxkZWxldGUgdC55LHR9LFlvLnJldmVyc2U9V28sV28ucmV2ZXJzZT1Zbyx0LnN2Zy5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIGFzKFApfSx0LnN2Zy5hcmVhLnJhZGlhbD1mdW5jdGlvbigpe3ZhciB0PWFzKG5zKTtyZXR1cm4gdC5yYWRpdXM9dC54LGRlbGV0ZSB0LngsdC5pbm5lclJhZGl1cz10LngwLGRlbGV0ZSB0LngwLHQub3V0ZXJSYWRpdXM9dC54MSxkZWxldGUgdC54MSx0LmFuZ2xlPXQueSxkZWxldGUgdC55LHQuc3RhcnRBbmdsZT10LnkwLGRlbGV0ZSB0LnkwLHQuZW5kQW5nbGU9dC55MSxkZWxldGUgdC55MSx0fSx0LnN2Zy5jaG9yZD1mdW5jdGlvbigpe3ZhciB0PXFuLGU9SG4scj1pcyxuPUZvLGE9Qm87ZnVuY3Rpb24gaShyLG4pe3ZhciBhLGksYz1vKHRoaXMsdCxyLG4pLHU9byh0aGlzLGUscixuKTtyZXR1cm4iTSIrYy5wMCtzKGMucixjLnAxLGMuYTEtYy5hMCkrKGk9dSwoYT1jKS5hMD09aS5hMCYmYS5hMT09aS5hMT9sKGMucixjLnAxLGMucixjLnAwKTpsKGMucixjLnAxLHUucix1LnAwKStzKHUucix1LnAxLHUuYTEtdS5hMCkrbCh1LnIsdS5wMSxjLnIsYy5wMCkpKyJaIn1mdW5jdGlvbiBvKHQsZSxpLG8pe3ZhciBzPWUuY2FsbCh0LGksbyksbD1yLmNhbGwodCxzLG8pLGM9bi5jYWxsKHQscyxvKS1FdCx1PWEuY2FsbCh0LHMsbyktRXQ7cmV0dXJue3I6bCxhMDpjLGExOnUscDA6W2wqTWF0aC5jb3MoYyksbCpNYXRoLnNpbihjKV0scDE6W2wqTWF0aC5jb3ModSksbCpNYXRoLnNpbih1KV19fWZ1bmN0aW9uIHModCxlLHIpe3JldHVybiJBIit0KyIsIit0KyIgMCAiKyArKHI+TXQpKyIsMSAiK2V9ZnVuY3Rpb24gbCh0LGUscixuKXtyZXR1cm4iUSAwLDAgIitufXJldHVybiBpLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj12ZSh0KSxpKTpyfSxpLnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD12ZShlKSxpKTp0fSxpLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT12ZSh0KSxpKTplfSxpLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dmUodCksaSk6bn0saS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT12ZSh0KSxpKTphfSxpfSx0LnN2Zy5kaWFnb25hbD1mdW5jdGlvbigpe3ZhciB0PXFuLGU9SG4scj1vcztmdW5jdGlvbiBuKG4sYSl7dmFyIGk9dC5jYWxsKHRoaXMsbixhKSxvPWUuY2FsbCh0aGlzLG4sYSkscz0oaS55K28ueSkvMixsPVtpLHt4OmkueCx5OnN9LHt4Om8ueCx5OnN9LG9dO3JldHVybiJNIisobD1sLm1hcChyKSlbMF0rIkMiK2xbMV0rIiAiK2xbMl0rIiAiK2xbM119cmV0dXJuIG4uc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXZlKGUpLG4pOnR9LG4udGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXZlKHQpLG4pOmV9LG4ucHJvamVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG59LHQuc3ZnLmRpYWdvbmFsLnJhZGlhbD1mdW5jdGlvbigpe3ZhciBlPXQuc3ZnLmRpYWdvbmFsKCkscj1vcyxuPWUucHJvamVjdGlvbjtyZXR1cm4gZS5wcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykscj1lWzBdLG49ZVsxXS1FdDtyZXR1cm5bcipNYXRoLmNvcyhuKSxyKk1hdGguc2luKG4pXX19KHI9dCkpOnJ9LGV9LHQuc3ZnLnN5bWJvbD1mdW5jdGlvbigpe3ZhciB0PWxzLGU9c3M7ZnVuY3Rpb24gcihyLG4pe3JldHVybih1cy5nZXQodC5jYWxsKHRoaXMscixuKSl8fGNzKShlLmNhbGwodGhpcyxyLG4pKX1yZXR1cm4gci50eXBlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXZlKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT12ZSh0KSxyKTplfSxyfTt2YXIgdXM9dC5tYXAoe2NpcmNsZTpjcyxjcm9zczpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnNxcnQodC81KS8yO3JldHVybiJNIistMyplKyIsIistZSsiSCIrLWUrIlYiKy0zKmUrIkgiK2UrIlYiKy1lKyJIIiszKmUrIlYiK2UrIkgiK2UrIlYiKzMqZSsiSCIrLWUrIlYiK2UrIkgiKy0zKmUrIloifSxkaWFtb25kOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguc3FydCh0LygyKmZzKSkscj1lKmZzO3JldHVybiJNMCwiKy1lKyJMIityKyIsMCAwLCIrZSsiICIrLXIrIiwwWiJ9LHNxdWFyZTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnNxcnQodCkvMjtyZXR1cm4iTSIrLWUrIiwiKy1lKyJMIitlKyIsIistZSsiICIrZSsiLCIrZSsiICIrLWUrIiwiK2UrIloifSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5zcXJ0KHQvaHMpLHI9ZSpocy8yO3JldHVybiJNMCwiK3IrIkwiK2UrIiwiKy1yKyIgIistZSsiLCIrLXIrIloifSwidHJpYW5nbGUtdXAiOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguc3FydCh0L2hzKSxyPWUqaHMvMjtyZXR1cm4iTTAsIistcisiTCIrZSsiLCIrcisiICIrLWUrIiwiK3IrIloifX0pO3Quc3ZnLnN5bWJvbFR5cGVzPXVzLmtleXMoKTt2YXIgaHM9TWF0aC5zcXJ0KDMpLGZzPU1hdGgudGFuKDMwKkx0KTtXLnRyYW5zaXRpb249ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbj12c3x8Kyt4cyxhPXdzKHQpLGk9W10sbz1tc3x8e3RpbWU6RGF0ZS5ub3coKSxlYXNlOm9pLGRlbGF5OjAsZHVyYXRpb246MjUwfSxzPS0xLGw9dGhpcy5sZW5ndGg7KytzPGw7KXtpLnB1c2goZT1bXSk7Zm9yKHZhciBjPXRoaXNbc10sdT0tMSxoPWMubGVuZ3RoOysrdTxoOykocj1jW3VdKSYma3Mocix1LGEsbixvKSxlLnB1c2gocil9cmV0dXJuIGdzKGksYSxuKX0sVy5pbnRlcnJ1cHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaChudWxsPT10P3BzOmRzKHdzKHQpKSl9O3ZhciBwcz1kcyh3cygpKTtmdW5jdGlvbiBkcyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxyLG47KGU9dGhpc1t0XSkmJihuPWVbcj1lLmFjdGl2ZV0pJiYobi50aW1lci5jPW51bGwsbi50aW1lci50PU5hTiwtLWUuY291bnQ/ZGVsZXRlIGVbcl06ZGVsZXRlIHRoaXNbdF0sZS5hY3RpdmUrPS41LG4uZXZlbnQmJm4uZXZlbnQuaW50ZXJydXB0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLG4uaW5kZXgpKX19ZnVuY3Rpb24gZ3ModCxlLHIpe3JldHVybiBVKHQseXMpLHQubmFtZXNwYWNlPWUsdC5pZD1yLHR9dmFyIHZzLG1zLHlzPVtdLHhzPTA7ZnVuY3Rpb24gYnModCxlLHIsbil7dmFyIGE9dC5pZCxpPXQubmFtZXNwYWNlO3JldHVybiB1dCh0LCJmdW5jdGlvbiI9PXR5cGVvZiByP2Z1bmN0aW9uKHQsbyxzKXt0W2ldW2FdLnR3ZWVuLnNldChlLG4oci5jYWxsKHQsdC5fX2RhdGFfXyxvLHMpKSl9OihyPW4ociksZnVuY3Rpb24odCl7dFtpXVthXS50d2Vlbi5zZXQoZSxyKX0pKX1mdW5jdGlvbiBfcyh0KXtyZXR1cm4gbnVsbD09dCYmKHQ9IiIpLGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiB3cyh0KXtyZXR1cm4gbnVsbD09dD8iX190cmFuc2l0aW9uX18iOiJfX3RyYW5zaXRpb25fIit0KyJfXyJ9ZnVuY3Rpb24ga3ModCxlLHIsbixhKXt2YXIgaSxvLHMsbCxjLHU9dFtyXXx8KHRbcl09e2FjdGl2ZTowLGNvdW50OjB9KSxoPXVbbl07ZnVuY3Rpb24gZihyKXt2YXIgYT11LmFjdGl2ZSxmPXVbYV07Zm9yKHZhciBkIGluIGYmJihmLnRpbWVyLmM9bnVsbCxmLnRpbWVyLnQ9TmFOLC0tdS5jb3VudCxkZWxldGUgdVthXSxmLmV2ZW50JiZmLmV2ZW50LmludGVycnVwdC5jYWxsKHQsdC5fX2RhdGFfXyxmLmluZGV4KSksdSlpZigrZDxuKXt2YXIgZz11W2RdO2cudGltZXIuYz1udWxsLGcudGltZXIudD1OYU4sLS11LmNvdW50LGRlbGV0ZSB1W2RdfW8uYz1wLFRlKGZ1bmN0aW9uKCl7cmV0dXJuIG8uYyYmcChyfHwxKSYmKG8uYz1udWxsLG8udD1OYU4pLDF9LDAsaSksdS5hY3RpdmU9bixoLmV2ZW50JiZoLmV2ZW50LnN0YXJ0LmNhbGwodCx0Ll9fZGF0YV9fLGUpLGM9W10saC50d2Vlbi5mb3JFYWNoKGZ1bmN0aW9uKHIsbil7KG49bi5jYWxsKHQsdC5fX2RhdGFfXyxlKSkmJmMucHVzaChuKX0pLGw9aC5lYXNlLHM9aC5kdXJhdGlvbn1mdW5jdGlvbiBwKGEpe2Zvcih2YXIgaT1hL3Msbz1sKGkpLGY9Yy5sZW5ndGg7Zj4wOyljWy0tZl0uY2FsbCh0LG8pO2lmKGk+PTEpcmV0dXJuIGguZXZlbnQmJmguZXZlbnQuZW5kLmNhbGwodCx0Ll9fZGF0YV9fLGUpLC0tdS5jb3VudD9kZWxldGUgdVtuXTpkZWxldGUgdFtyXSwxfWh8fChpPWEudGltZSxvPVRlKGZ1bmN0aW9uKHQpe3ZhciBlPWguZGVsYXk7aWYoby50PWUraSxlPD10KXJldHVybiBmKHQtZSk7by5jPWZ9LDAsaSksaD11W25dPXt0d2VlbjpuZXcgYix0aW1lOmksdGltZXI6byxkZWxheTphLmRlbGF5LGR1cmF0aW9uOmEuZHVyYXRpb24sZWFzZTphLmVhc2UsaW5kZXg6ZX0sYT1udWxsLCsrdS5jb3VudCl9eXMuY2FsbD1XLmNhbGwseXMuZW1wdHk9Vy5lbXB0eSx5cy5ub2RlPVcubm9kZSx5cy5zaXplPVcuc2l6ZSx0LnRyYW5zaXRpb249ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZSYmZS50cmFuc2l0aW9uP3ZzP2UudHJhbnNpdGlvbihyKTplOnQuc2VsZWN0aW9uKCkudHJhbnNpdGlvbihlKX0sdC50cmFuc2l0aW9uLnByb3RvdHlwZT15cyx5cy5zZWxlY3Q9ZnVuY3Rpb24odCl7dmFyIGUscixuLGE9dGhpcy5pZCxpPXRoaXMubmFtZXNwYWNlLG89W107dD1YKHQpO2Zvcih2YXIgcz0tMSxsPXRoaXMubGVuZ3RoOysrczxsOyl7by5wdXNoKGU9W10pO2Zvcih2YXIgYz10aGlzW3NdLHU9LTEsaD1jLmxlbmd0aDsrK3U8aDspKG49Y1t1XSkmJihyPXQuY2FsbChuLG4uX19kYXRhX18sdSxzKSk/KCJfX2RhdGFfXyJpbiBuJiYoci5fX2RhdGFfXz1uLl9fZGF0YV9fKSxrcyhyLHUsaSxhLG5baV1bYV0pLGUucHVzaChyKSk6ZS5wdXNoKG51bGwpfXJldHVybiBncyhvLGksYSl9LHlzLnNlbGVjdEFsbD1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpLG89dGhpcy5pZCxzPXRoaXMubmFtZXNwYWNlLGw9W107dD1aKHQpO2Zvcih2YXIgYz0tMSx1PXRoaXMubGVuZ3RoOysrYzx1Oylmb3IodmFyIGg9dGhpc1tjXSxmPS0xLHA9aC5sZW5ndGg7KytmPHA7KWlmKG49aFtmXSl7aT1uW3NdW29dLHI9dC5jYWxsKG4sbi5fX2RhdGFfXyxmLGMpLGwucHVzaChlPVtdKTtmb3IodmFyIGQ9LTEsZz1yLmxlbmd0aDsrK2Q8ZzspKGE9cltkXSkmJmtzKGEsZCxzLG8saSksZS5wdXNoKGEpfXJldHVybiBncyhsLHMsbyl9LHlzLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgZSxyLG49W107ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWN0KHQpKTtmb3IodmFyIGE9MCxpPXRoaXMubGVuZ3RoO2E8aTthKyspe24ucHVzaChlPVtdKTtmb3IodmFyIG8scz0wLGw9KG89dGhpc1thXSkubGVuZ3RoO3M8bDtzKyspKHI9b1tzXSkmJnQuY2FsbChyLHIuX19kYXRhX18scyxhKSYmZS5wdXNoKHIpfXJldHVybiBncyhuLHRoaXMubmFtZXNwYWNlLHRoaXMuaWQpfSx5cy50d2Vlbj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuaWQsbj10aGlzLm5hbWVzcGFjZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3RoaXMubm9kZSgpW25dW3JdLnR3ZWVuLmdldCh0KTp1dCh0aGlzLG51bGw9PWU/ZnVuY3Rpb24oZSl7ZVtuXVtyXS50d2Vlbi5yZW1vdmUodCl9OmZ1bmN0aW9uKGEpe2Fbbl1bcl0udHdlZW4uc2V0KHQsZSl9KX0seXMuYXR0cj1mdW5jdGlvbihlLHIpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHIgaW4gZSl0aGlzLmF0dHIocixlW3JdKTtyZXR1cm4gdGhpc312YXIgbj0idHJhbnNmb3JtIj09ZT9taTpLYSxhPXQubnMucXVhbGlmeShlKTtmdW5jdGlvbiBpKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoYSl9ZnVuY3Rpb24gbygpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoYS5zcGFjZSxhLmxvY2FsKX1yZXR1cm4gYnModGhpcywiYXR0ci4iK2UscixhLmxvY2FsP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P286KHQrPSIiLGZ1bmN0aW9uKCl7dmFyIGUscj10aGlzLmdldEF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCk7cmV0dXJuIHIhPT10JiYoZT1uKHIsdCksZnVuY3Rpb24odCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwsZSh0KSl9KX0pfTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9pOih0Kz0iIixmdW5jdGlvbigpe3ZhciBlLHI9dGhpcy5nZXRBdHRyaWJ1dGUoYSk7cmV0dXJuIHIhPT10JiYoZT1uKHIsdCksZnVuY3Rpb24odCl7dGhpcy5zZXRBdHRyaWJ1dGUoYSxlKHQpKX0pfSl9KX0seXMuYXR0clR3ZWVuPWZ1bmN0aW9uKGUscil7dmFyIG49dC5ucy5xdWFsaWZ5KGUpO3JldHVybiB0aGlzLnR3ZWVuKCJhdHRyLiIrZSxuLmxvY2FsP2Z1bmN0aW9uKHQsZSl7dmFyIGE9ci5jYWxsKHRoaXMsdCxlLHRoaXMuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKSk7cmV0dXJuIGEmJmZ1bmN0aW9uKHQpe3RoaXMuc2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLGEodCkpfX06ZnVuY3Rpb24odCxlKXt2YXIgYT1yLmNhbGwodGhpcyx0LGUsdGhpcy5nZXRBdHRyaWJ1dGUobikpO3JldHVybiBhJiZmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJpYnV0ZShuLGEodCkpfX0pfSx5cy5zdHlsZT1mdW5jdGlvbih0LGUscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aDtpZihuPDMpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7Zm9yKHIgaW4gbjwyJiYoZT0iIiksdCl0aGlzLnN0eWxlKHIsdFtyXSxlKTtyZXR1cm4gdGhpc31yPSIifWZ1bmN0aW9uIGEoKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfXJldHVybiBicyh0aGlzLCJzdHlsZS4iK3QsZSxmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9hOihlKz0iIixmdW5jdGlvbigpe3ZhciBuLGE9byh0aGlzKS5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KTtyZXR1cm4gYSE9PWUmJihuPUthKGEsZSksZnVuY3Rpb24oZSl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4oZSkscil9KX0pfSl9LHlzLnN0eWxlVHdlZW49ZnVuY3Rpb24odCxlLHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDMmJihyPSIiKSx0aGlzLnR3ZWVuKCJzdHlsZS4iK3QsZnVuY3Rpb24obixhKXt2YXIgaT1lLmNhbGwodGhpcyxuLGEsbyh0aGlzKS5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KSk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxpKGUpLHIpfX0pfSx5cy50ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBicyh0aGlzLCJ0ZXh0Iix0LF9zKX0seXMucmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5uYW1lc3BhY2U7cmV0dXJuIHRoaXMuZWFjaCgiZW5kLnRyYW5zaXRpb24iLGZ1bmN0aW9uKCl7dmFyIGU7dGhpc1t0XS5jb3VudDwyJiYoZT10aGlzLnBhcmVudE5vZGUpJiZlLnJlbW92ZUNoaWxkKHRoaXMpfSl9LHlzLmVhc2U9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5pZCxuPXRoaXMubmFtZXNwYWNlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKClbbl1bcl0uZWFzZTooImZ1bmN0aW9uIiE9dHlwZW9mIGUmJihlPXQuZWFzZS5hcHBseSh0LGFyZ3VtZW50cykpLHV0KHRoaXMsZnVuY3Rpb24odCl7dFtuXVtyXS5lYXNlPWV9KSl9LHlzLmRlbGF5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaWQscj10aGlzLm5hbWVzcGFjZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpW3JdW2VdLmRlbGF5OnV0KHRoaXMsImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24obixhLGkpe25bcl1bZV0uZGVsYXk9K3QuY2FsbChuLG4uX19kYXRhX18sYSxpKX06KHQ9K3QsZnVuY3Rpb24obil7bltyXVtlXS5kZWxheT10fSkpfSx5cy5kdXJhdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5uYW1lc3BhY2U7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT90aGlzLm5vZGUoKVtyXVtlXS5kdXJhdGlvbjp1dCh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKG4sYSxpKXtuW3JdW2VdLmR1cmF0aW9uPU1hdGgubWF4KDEsdC5jYWxsKG4sbi5fX2RhdGFfXyxhLGkpKX06KHQ9TWF0aC5tYXgoMSx0KSxmdW5jdGlvbihuKXtuW3JdW2VdLmR1cmF0aW9uPXR9KSl9LHlzLmVhY2g9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLmlkLGE9dGhpcy5uYW1lc3BhY2U7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT1tcyxvPXZzO3RyeXt2cz1uLHV0KHRoaXMsZnVuY3Rpb24odCxyLGkpe21zPXRbYV1bbl0sZS5jYWxsKHQsdC5fX2RhdGFfXyxyLGkpfSl9ZmluYWxseXttcz1pLHZzPW99fWVsc2UgdXQodGhpcyxmdW5jdGlvbihpKXt2YXIgbz1pW2FdW25dOyhvLmV2ZW50fHwoby5ldmVudD10LmRpc3BhdGNoKCJzdGFydCIsImVuZCIsImludGVycnVwdCIpKSkub24oZSxyKX0pO3JldHVybiB0aGlzfSx5cy50cmFuc2l0aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUscixuPXRoaXMuaWQsYT0rK3hzLGk9dGhpcy5uYW1lc3BhY2Usbz1bXSxzPTAsbD10aGlzLmxlbmd0aDtzPGw7cysrKXtvLnB1c2godD1bXSk7Zm9yKHZhciBjLHU9MCxoPShjPXRoaXNbc10pLmxlbmd0aDt1PGg7dSsrKShlPWNbdV0pJiZrcyhlLHUsaSxhLHt0aW1lOihyPWVbaV1bbl0pLnRpbWUsZWFzZTpyLmVhc2UsZGVsYXk6ci5kZWxheStyLmR1cmF0aW9uLGR1cmF0aW9uOnIuZHVyYXRpb259KSx0LnB1c2goZSl9cmV0dXJuIGdzKG8saSxhKX0sdC5zdmcuYXhpcz1mdW5jdGlvbigpe3ZhciBlLHI9dC5zY2FsZS5saW5lYXIoKSxhPVRzLGk9NixvPTYscz0zLGw9WzEwXSxjPW51bGw7ZnVuY3Rpb24gdShuKXtuLmVhY2goZnVuY3Rpb24oKXt2YXIgbix1PXQuc2VsZWN0KHRoaXMpLGg9dGhpcy5fX2NoYXJ0X198fHIsZj10aGlzLl9fY2hhcnRfXz1yLmNvcHkoKSxwPW51bGw9PWM/Zi50aWNrcz9mLnRpY2tzLmFwcGx5KGYsbCk6Zi5kb21haW4oKTpjLGQ9bnVsbD09ZT9mLnRpY2tGb3JtYXQ/Zi50aWNrRm9ybWF0LmFwcGx5KGYsbCk6UDplLGc9dS5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShwLGYpLHY9Zy5lbnRlcigpLmluc2VydCgiZyIsIi5kb21haW4iKS5hdHRyKCJjbGFzcyIsInRpY2siKS5zdHlsZSgib3BhY2l0eSIsa3QpLG09dC50cmFuc2l0aW9uKGcuZXhpdCgpKS5zdHlsZSgib3BhY2l0eSIsa3QpLnJlbW92ZSgpLHk9dC50cmFuc2l0aW9uKGcub3JkZXIoKSkuc3R5bGUoIm9wYWNpdHkiLDEpLHg9TWF0aC5tYXgoaSwwKStzLGI9Zm8oZiksXz11LnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoWzBdKSx3PShfLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJkb21haW4iKSx0LnRyYW5zaXRpb24oXykpO3YuYXBwZW5kKCJsaW5lIiksdi5hcHBlbmQoInRleHQiKTt2YXIgayxULE0sQSxTPXYuc2VsZWN0KCJsaW5lIiksRT15LnNlbGVjdCgibGluZSIpLEw9Zy5zZWxlY3QoInRleHQiKS50ZXh0KGQpLEM9di5zZWxlY3QoInRleHQiKSxPPXkuc2VsZWN0KCJ0ZXh0Iiksej0idG9wIj09PWF8fCJsZWZ0Ij09PWE/LTE6MTtpZigiYm90dG9tIj09PWF8fCJ0b3AiPT09YT8obj1BcyxrPSJ4IixNPSJ5IixUPSJ4MiIsQT0ieTIiLEwuYXR0cigiZHkiLHo8MD8iMGVtIjoiLjcxZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSx3LmF0dHIoImQiLCJNIitiWzBdKyIsIit6Km8rIlYwSCIrYlsxXSsiViIreipvKSk6KG49U3Msaz0ieSIsTT0ieCIsVD0ieTIiLEE9IngyIixMLmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLHo8MD8iZW5kIjoic3RhcnQiKSx3LmF0dHIoImQiLCJNIit6Km8rIiwiK2JbMF0rIkgwViIrYlsxXSsiSCIreipvKSksUy5hdHRyKEEseippKSxDLmF0dHIoTSx6KngpLEUuYXR0cihULDApLmF0dHIoQSx6KmkpLE8uYXR0cihrLDApLmF0dHIoTSx6KngpLGYucmFuZ2VCYW5kKXt2YXIgST1mLEQ9SS5yYW5nZUJhbmQoKS8yO2g9Zj1mdW5jdGlvbih0KXtyZXR1cm4gSSh0KStEfX1lbHNlIGgucmFuZ2VCYW5kP2g9ZjptLmNhbGwobixmLGgpO3YuY2FsbChuLGgsZikseS5jYWxsKG4sZixmKX0pfXJldHVybiB1LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsdSk6cn0sdS5vcmllbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCBpbiBNcz90KyIiOlRzLHUpOmF9LHUudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1uKGFyZ3VtZW50cyksdSk6bH0sdS50aWNrVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQsdSk6Y30sdS50aWNrRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsdSk6ZX0sdS50aWNrU2l6ZT1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoO3JldHVybiBlPyhpPSt0LG89K2FyZ3VtZW50c1tlLTFdLHUpOml9LHUuaW5uZXJUaWNrU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCx1KTppfSx1Lm91dGVyVGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsdSk6b30sdS50aWNrUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCx1KTpzfSx1LnRpY2tTdWJkaXZpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCYmdX0sdX07dmFyIFRzPSJib3R0b20iLE1zPXt0b3A6MSxyaWdodDoxLGJvdHRvbToxLGxlZnQ6MX07ZnVuY3Rpb24gQXModCxlLHIpe3QuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXt2YXIgbj1lKHQpO3JldHVybiJ0cmFuc2xhdGUoIisoaXNGaW5pdGUobik/bjpyKHQpKSsiLDApIn0pfWZ1bmN0aW9uIFNzKHQsZSxyKXt0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7dmFyIG49ZSh0KTtyZXR1cm4idHJhbnNsYXRlKDAsIisoaXNGaW5pdGUobik/bjpyKHQpKSsiKSJ9KX10LnN2Zy5icnVzaD1mdW5jdGlvbigpe3ZhciBlLHIsbj1qKGYsImJydXNoc3RhcnQiLCJicnVzaCIsImJydXNoZW5kIiksYT1udWxsLGk9bnVsbCxzPVswLDBdLGw9WzAsMF0sYz0hMCx1PSEwLGg9THNbMF07ZnVuY3Rpb24gZihlKXtlLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10LnNlbGVjdCh0aGlzKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHYpLm9uKCJ0b3VjaHN0YXJ0LmJydXNoIix2KSxyPWUuc2VsZWN0QWxsKCIuYmFja2dyb3VuZCIpLmRhdGEoWzBdKTtyLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYWNrZ3JvdW5kIikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKS5zdHlsZSgiY3Vyc29yIiwiY3Jvc3NoYWlyIiksZS5zZWxlY3RBbGwoIi5leHRlbnQiKS5kYXRhKFswXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImV4dGVudCIpLnN0eWxlKCJjdXJzb3IiLCJtb3ZlIik7dmFyIG49ZS5zZWxlY3RBbGwoIi5yZXNpemUiKS5kYXRhKGgsUCk7bi5leGl0KCkucmVtb3ZlKCksbi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbih0KXtyZXR1cm4icmVzaXplICIrdH0pLnN0eWxlKCJjdXJzb3IiLGZ1bmN0aW9uKHQpe3JldHVybiBFc1t0XX0pLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybi9bZXddJC8udGVzdCh0KT8tMzpudWxsfSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuL15bbnNdLy50ZXN0KHQpPy0zOm51bGx9KS5hdHRyKCJ3aWR0aCIsNikuYXR0cigiaGVpZ2h0Iiw2KS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpLG4uc3R5bGUoImRpc3BsYXkiLGYuZW1wdHkoKT8ibm9uZSI6bnVsbCk7dmFyIG8scz10LnRyYW5zaXRpb24oZSksbD10LnRyYW5zaXRpb24ocik7YSYmKG89Zm8oYSksbC5hdHRyKCJ4IixvWzBdKS5hdHRyKCJ3aWR0aCIsb1sxXS1vWzBdKSxkKHMpKSxpJiYobz1mbyhpKSxsLmF0dHIoInkiLG9bMF0pLmF0dHIoImhlaWdodCIsb1sxXS1vWzBdKSxnKHMpKSxwKHMpfSl9ZnVuY3Rpb24gcCh0KXt0LnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3NbKy9lJC8udGVzdCh0KV0rIiwiK2xbKy9ecy8udGVzdCh0KV0rIikifSl9ZnVuY3Rpb24gZCh0KXt0LnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoIngiLHNbMF0pLHQuc2VsZWN0QWxsKCIuZXh0ZW50LC5uPnJlY3QsLnM+cmVjdCIpLmF0dHIoIndpZHRoIixzWzFdLXNbMF0pfWZ1bmN0aW9uIGcodCl7dC5zZWxlY3QoIi5leHRlbnQiKS5hdHRyKCJ5IixsWzBdKSx0LnNlbGVjdEFsbCgiLmV4dGVudCwuZT5yZWN0LC53PnJlY3QiKS5hdHRyKCJoZWlnaHQiLGxbMV0tbFswXSl9ZnVuY3Rpb24gdigpe3ZhciBoLHYsbT10aGlzLHk9dC5zZWxlY3QodC5ldmVudC50YXJnZXQpLHg9bi5vZihtLGFyZ3VtZW50cyksYj10LnNlbGVjdChtKSxfPXkuZGF0dW0oKSx3PSEvXihufHMpJC8udGVzdChfKSYmYSxrPSEvXihlfHcpJC8udGVzdChfKSYmaSxUPXkuY2xhc3NlZCgiZXh0ZW50IiksTT14dChtKSxBPXQubW91c2UobSksUz10LnNlbGVjdChvKG0pKS5vbigia2V5ZG93bi5icnVzaCIsZnVuY3Rpb24oKXszMj09dC5ldmVudC5rZXlDb2RlJiYoVHx8KGg9bnVsbCxBWzBdLT1zWzFdLEFbMV0tPWxbMV0sVD0yKSxCKCkpfSkub24oImtleXVwLmJydXNoIixmdW5jdGlvbigpezMyPT10LmV2ZW50LmtleUNvZGUmJjI9PVQmJihBWzBdKz1zWzFdLEFbMV0rPWxbMV0sVD0wLEIoKSl9KTtpZih0LmV2ZW50LmNoYW5nZWRUb3VjaGVzP1Mub24oInRvdWNobW92ZS5icnVzaCIsQykub24oInRvdWNoZW5kLmJydXNoIixPKTpTLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEMpLm9uKCJtb3VzZXVwLmJydXNoIixPKSxiLmludGVycnVwdCgpLnNlbGVjdEFsbCgiKiIpLmludGVycnVwdCgpLFQpQVswXT1zWzBdLUFbMF0sQVsxXT1sWzBdLUFbMV07ZWxzZSBpZihfKXt2YXIgRT0rL3ckLy50ZXN0KF8pLEw9Ky9ebi8udGVzdChfKTt2PVtzWzEtRV0tQVswXSxsWzEtTF0tQVsxXV0sQVswXT1zW0VdLEFbMV09bFtMXX1lbHNlIHQuZXZlbnQuYWx0S2V5JiYoaD1BLnNsaWNlKCkpO2Z1bmN0aW9uIEMoKXt2YXIgZT10Lm1vdXNlKG0pLHI9ITE7diYmKGVbMF0rPXZbMF0sZVsxXSs9dlsxXSksVHx8KHQuZXZlbnQuYWx0S2V5PyhofHwoaD1bKHNbMF0rc1sxXSkvMiwobFswXStsWzFdKS8yXSksQVswXT1zWysoZVswXTxoWzBdKV0sQVsxXT1sWysoZVsxXTxoWzFdKV0pOmg9bnVsbCksdyYmUChlLGEsMCkmJihkKGIpLHI9ITApLGsmJlAoZSxpLDEpJiYoZyhiKSxyPSEwKSxyJiYocChiKSx4KHt0eXBlOiJicnVzaCIsbW9kZTpUPyJtb3ZlIjoicmVzaXplIn0pKX1mdW5jdGlvbiBQKHQsbixhKXt2YXIgaSxvLGY9Zm8obikscD1mWzBdLGQ9ZlsxXSxnPUFbYV0sdj1hP2w6cyxtPXZbMV0tdlswXTtpZihUJiYocC09ZyxkLT1tK2cpLGk9KGE/dTpjKT9NYXRoLm1heChwLE1hdGgubWluKGQsdFthXSkpOnRbYV0sVD9vPShpKz1nKSttOihoJiYoZz1NYXRoLm1heChwLE1hdGgubWluKGQsMipoW2FdLWkpKSksZzxpPyhvPWksaT1nKTpvPWcpLHZbMF0hPWl8fHZbMV0hPW8pcmV0dXJuIGE/cj1udWxsOmU9bnVsbCx2WzBdPWksdlsxXT1vLCEwfWZ1bmN0aW9uIE8oKXtDKCksYi5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zZWxlY3RBbGwoIi5yZXNpemUiKS5zdHlsZSgiZGlzcGxheSIsZi5lbXB0eSgpPyJub25lIjpudWxsKSx0LnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLG51bGwpLFMub24oIm1vdXNlbW92ZS5icnVzaCIsbnVsbCkub24oIm1vdXNldXAuYnJ1c2giLG51bGwpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLG51bGwpLm9uKCJ0b3VjaGVuZC5icnVzaCIsbnVsbCkub24oImtleWRvd24uYnJ1c2giLG51bGwpLm9uKCJrZXl1cC5icnVzaCIsbnVsbCksTSgpLHgoe3R5cGU6ImJydXNoZW5kIn0pfWIuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKSx0LnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLHkuc3R5bGUoImN1cnNvciIpKSx4KHt0eXBlOiJicnVzaHN0YXJ0In0pLEMoKX1yZXR1cm4gZi5ldmVudD1mdW5jdGlvbihhKXthLmVhY2goZnVuY3Rpb24oKXt2YXIgYT1uLm9mKHRoaXMsYXJndW1lbnRzKSxpPXt4OnMseTpsLGk6ZSxqOnJ9LG89dGhpcy5fX2NoYXJ0X198fGk7dGhpcy5fX2NoYXJ0X189aSx2cz90LnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgic3RhcnQuYnJ1c2giLGZ1bmN0aW9uKCl7ZT1vLmkscj1vLmoscz1vLngsbD1vLnksYSh7dHlwZToiYnJ1c2hzdGFydCJ9KX0pLnR3ZWVuKCJicnVzaDpicnVzaCIsZnVuY3Rpb24oKXt2YXIgdD1RYShzLGkueCksbj1RYShsLGkueSk7cmV0dXJuIGU9cj1udWxsLGZ1bmN0aW9uKGUpe3M9aS54PXQoZSksbD1pLnk9bihlKSxhKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pfX0pLmVhY2goImVuZC5icnVzaCIsZnVuY3Rpb24oKXtlPWkuaSxyPWkuaixhKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pLGEoe3R5cGU6ImJydXNoZW5kIn0pfSk6KGEoe3R5cGU6ImJydXNoc3RhcnQifSksYSh7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9KSxhKHt0eXBlOiJicnVzaGVuZCJ9KSl9KX0sZi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPUxzWyEoYT10KTw8MXwhaV0sZik6YX0sZi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPUxzWyFhPDwxfCEoaT10KV0sZik6aX0sZi5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSYmaT8oYz0hIXRbMF0sdT0hIXRbMV0pOmE/Yz0hIXQ6aSYmKHU9ISF0KSxmKTphJiZpP1tjLHVdOmE/YzppP3U6bnVsbH0sZi5leHRlbnQ9ZnVuY3Rpb24odCl7dmFyIG4sbyxjLHUsaDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSYmKG49dFswXSxvPXRbMV0saSYmKG49blswXSxvPW9bMF0pLGU9W24sb10sYS5pbnZlcnQmJihuPWEobiksbz1hKG8pKSxvPG4mJihoPW4sbj1vLG89aCksbj09c1swXSYmbz09c1sxXXx8KHM9W24sb10pKSxpJiYoYz10WzBdLHU9dFsxXSxhJiYoYz1jWzFdLHU9dVsxXSkscj1bYyx1XSxpLmludmVydCYmKGM9aShjKSx1PWkodSkpLHU8YyYmKGg9YyxjPXUsdT1oKSxjPT1sWzBdJiZ1PT1sWzFdfHwobD1bYyx1XSkpLGYpOihhJiYoZT8obj1lWzBdLG89ZVsxXSk6KG49c1swXSxvPXNbMV0sYS5pbnZlcnQmJihuPWEuaW52ZXJ0KG4pLG89YS5pbnZlcnQobykpLG88biYmKGg9bixuPW8sbz1oKSkpLGkmJihyPyhjPXJbMF0sdT1yWzFdKTooYz1sWzBdLHU9bFsxXSxpLmludmVydCYmKGM9aS5pbnZlcnQoYyksdT1pLmludmVydCh1KSksdTxjJiYoaD1jLGM9dSx1PWgpKSksYSYmaT9bW24sY10sW28sdV1dOmE/W24sb106aSYmW2MsdV0pfSxmLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIGYuZW1wdHkoKXx8KHM9WzAsMF0sbD1bMCwwXSxlPXI9bnVsbCksZn0sZi5lbXB0eT1mdW5jdGlvbigpe3JldHVybiEhYSYmc1swXT09c1sxXXx8ISFpJiZsWzBdPT1sWzFdfSx0LnJlYmluZChmLG4sIm9uIil9O3ZhciBFcz17bjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxMcz1bWyJuIiwiZSIsInMiLCJ3IiwibnciLCJuZSIsInNlIiwic3ciXSxbImUiLCJ3Il0sWyJuIiwicyJdLFtdXSxDcz1JZS5mb3JtYXQ9Y3IudGltZUZvcm1hdCxQcz1Dcy51dGMsT3M9UHMoIiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIpO2Z1bmN0aW9uIHpzKHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9ZnVuY3Rpb24gSXMoZSxyLG4pe2Z1bmN0aW9uIGEodCl7cmV0dXJuIGUodCl9ZnVuY3Rpb24gaShlLG4pe3ZhciBhPShlWzFdLWVbMF0pL24saT10LmJpc2VjdChScyxhKTtyZXR1cm4gaT09UnMubGVuZ3RoP1tyLnllYXIsX28oZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQvMzE1MzZlNn0pLG4pWzJdXTppP3JbYS9Sc1tpLTFdPFJzW2ldL2E/aS0xOmldOltOcyxfbyhlLG4pWzJdXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIERzKGUuaW52ZXJ0KHQpKX0sYS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUuZG9tYWluKHQpLGEpOmUuZG9tYWluKCkubWFwKERzKX0sYS5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YS5kb21haW4oKSxuPWhvKHIpLG89bnVsbD09dD9pKG4sMTApOiJudW1iZXIiPT10eXBlb2YgdCYmaShuLHQpO2Z1bmN0aW9uIHMocil7cmV0dXJuIWlzTmFOKHIpJiYhdC5yYW5nZShyLERzKCtyKzEpLGUpLmxlbmd0aH1yZXR1cm4gbyYmKHQ9b1swXSxlPW9bMV0pLGEuZG9tYWluKGdvKHIsZT4xP3tmbG9vcjpmdW5jdGlvbihlKXtmb3IoO3MoZT10LmZsb29yKGUpKTspZT1EcyhlLTEpO3JldHVybiBlfSxjZWlsOmZ1bmN0aW9uKGUpe2Zvcig7cyhlPXQuY2VpbChlKSk7KWU9RHMoK2UrMSk7cmV0dXJuIGV9fTp0KSl9LGEudGlja3M9ZnVuY3Rpb24odCxlKXt2YXIgcj1obyhhLmRvbWFpbigpKSxuPW51bGw9PXQ/aShyLDEwKToibnVtYmVyIj09dHlwZW9mIHQ/aShyLHQpOiF0LnJhbmdlJiZbe3JhbmdlOnR9LGVdO3JldHVybiBuJiYodD1uWzBdLGU9blsxXSksdC5yYW5nZShyWzBdLERzKCtyWzFdKzEpLGU8MT8xOmUpfSxhLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIElzKGUuY29weSgpLHIsbil9LHhvKGEsZSl9ZnVuY3Rpb24gRHModCl7cmV0dXJuIG5ldyBEYXRlKHQpfUNzLmlzbz1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyYmK25ldyBEYXRlKCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiKT96czpPcyx6cy5wYXJzZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfSx6cy50b1N0cmluZz1Pcy50b1N0cmluZyxJZS5zZWNvbmQ9QmUoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEZSgxZTMqTWF0aC5mbG9vcih0LzFlMykpfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSh0LmdldFRpbWUoKSsxZTMqTWF0aC5mbG9vcihlKSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFNlY29uZHMoKX0pLEllLnNlY29uZHM9SWUuc2Vjb25kLnJhbmdlLEllLnNlY29uZHMudXRjPUllLnNlY29uZC51dGMucmFuZ2UsSWUubWludXRlPUJlKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGUoNmU0Kk1hdGguZmxvb3IodC82ZTQpKX0sZnVuY3Rpb24odCxlKXt0LnNldFRpbWUodC5nZXRUaW1lKCkrNmU0Kk1hdGguZmxvb3IoZSkpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSxJZS5taW51dGVzPUllLm1pbnV0ZS5yYW5nZSxJZS5taW51dGVzLnV0Yz1JZS5taW51dGUudXRjLnJhbmdlLEllLmhvdXI9QmUoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpLzYwO3JldHVybiBuZXcgRGUoMzZlNSooTWF0aC5mbG9vcih0LzM2ZTUtZSkrZSkpfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSh0LmdldFRpbWUoKSszNmU1Kk1hdGguZmxvb3IoZSkpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRIb3VycygpfSksSWUuaG91cnM9SWUuaG91ci5yYW5nZSxJZS5ob3Vycy51dGM9SWUuaG91ci51dGMucmFuZ2UsSWUubW9udGg9QmUoZnVuY3Rpb24odCl7cmV0dXJuKHQ9SWUuZGF5KHQpKS5zZXREYXRlKDEpLHR9LGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSxJZS5tb250aHM9SWUubW9udGgucmFuZ2UsSWUubW9udGhzLnV0Yz1JZS5tb250aC51dGMucmFuZ2U7dmFyIFJzPVsxZTMsNWUzLDE1ZTMsM2U0LDZlNCwzZTUsOWU1LDE4ZTUsMzZlNSwxMDhlNSwyMTZlNSw0MzJlNSw4NjRlNSwxNzI4ZTUsNjA0OGU1LDI1OTJlNiw3Nzc2ZTYsMzE1MzZlNl0sRnM9W1tJZS5zZWNvbmQsMV0sW0llLnNlY29uZCw1XSxbSWUuc2Vjb25kLDE1XSxbSWUuc2Vjb25kLDMwXSxbSWUubWludXRlLDFdLFtJZS5taW51dGUsNV0sW0llLm1pbnV0ZSwxNV0sW0llLm1pbnV0ZSwzMF0sW0llLmhvdXIsMV0sW0llLmhvdXIsM10sW0llLmhvdXIsNl0sW0llLmhvdXIsMTJdLFtJZS5kYXksMV0sW0llLmRheSwyXSxbSWUud2VlaywxXSxbSWUubW9udGgsMV0sW0llLm1vbnRoLDNdLFtJZS55ZWFyLDFdXSxCcz1Dcy5tdWx0aShbWyIuJUwiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbGxpc2Vjb25kcygpfV0sWyI6JVMiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFNlY29uZHMoKX1dLFsiJUk6JU0iLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX1dLFsiJUkgJXAiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9XSxbIiVhICVkIixmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXkoKSYmMSE9dC5nZXREYXRlKCl9XSxbIiViICVkIixmdW5jdGlvbih0KXtyZXR1cm4gMSE9dC5nZXREYXRlKCl9XSxbIiVCIixmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfV0sWyIlWSIsWHJdXSksTnM9e3JhbmdlOmZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdC5yYW5nZShNYXRoLmNlaWwoZS9uKSpuLCtyLG4pLm1hcChEcyl9LGZsb29yOlAsY2VpbDpQfTtGcy55ZWFyPUllLnllYXIsSWUuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gSXModC5zY2FsZS5saW5lYXIoKSxGcyxCcyl9O3ZhciBqcz1Gcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0udXRjLHRbMV1dfSksVnM9UHMubXVsdGkoW1siLiVMIixmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaWxsaXNlY29uZHMoKX1dLFsiOiVTIixmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9XSxbIiVJOiVNIixmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9XSxbIiVJICVwIixmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfV0sWyIlYSAlZCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCkmJjEhPXQuZ2V0VVRDRGF0ZSgpfV0sWyIlYiAlZCIsZnVuY3Rpb24odCl7cmV0dXJuIDEhPXQuZ2V0VVRDRGF0ZSgpfV0sWyIlQiIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX1dLFsiJVkiLFhyXV0pO2Z1bmN0aW9uIFVzKHQpe3JldHVybiBKU09OLnBhcnNlKHQucmVzcG9uc2VUZXh0KX1mdW5jdGlvbiBxcyh0KXt2YXIgZT1hLmNyZWF0ZVJhbmdlKCk7cmV0dXJuIGUuc2VsZWN0Tm9kZShhLmJvZHkpLGUuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHQucmVzcG9uc2VUZXh0KX1qcy55ZWFyPUllLnllYXIudXRjLEllLnNjYWxlLnV0Yz1mdW5jdGlvbigpe3JldHVybiBJcyh0LnNjYWxlLmxpbmVhcigpLGpzLFZzKX0sdC50ZXh0PW1lKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc3BvbnNlVGV4dH0pLHQuanNvbj1mdW5jdGlvbih0LGUpe3JldHVybiB5ZSh0LCJhcHBsaWNhdGlvbi9qc29uIixVcyxlKX0sdC5odG1sPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHllKHQsInRleHQvaHRtbCIscXMsZSl9LHQueG1sPW1lKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc3BvbnNlWE1MfSksIm9iamVjdCI9PXR5cGVvZiBlJiZlLmV4cG9ydHM/ZS5leHBvcnRzPXQ6dGhpcy5kMz10fSgpfSx7fV0sMTY2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylpZih2b2lkIDAhPT1hcmd1bWVudHNbdF0pcmV0dXJuIGFyZ3VtZW50c1t0XX19LHt9XSwxNjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiaW5jcmVtZW50YWwtY29udmV4LWh1bGwiKSxhPXQoInVuaXEiKTtmdW5jdGlvbiBpKHQsZSl7dGhpcy5wb2ludD10LHRoaXMuaW5kZXg9ZX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPXQucG9pbnQsbj1lLnBvaW50LGE9ci5sZW5ndGgsaT0wO2k8YTsrK2kpe3ZhciBvPW5baV0tcltpXTtpZihvKXJldHVybiBvfXJldHVybiAwfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQubGVuZ3RoO2lmKDA9PT1yKXJldHVybltdO3ZhciBzPXRbMF0ubGVuZ3RoO2lmKHM8MSlyZXR1cm5bXTtpZigxPT09cylyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lmKDE9PT10KXJldHVybiByP1tbLTEsMF1dOltdO3ZhciBuPWUubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW3RbMF0sZV19KTtuLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXS1lWzBdfSk7Zm9yKHZhciBhPW5ldyBBcnJheSh0LTEpLGk9MTtpPHQ7KytpKXt2YXIgbz1uW2ktMV0scz1uW2ldO2FbaS0xXT1bb1sxXSxzWzFdXX1yJiZhLnB1c2goWy0xLGFbMF1bMV1dLFthW3QtMV1bMV0sLTFdKTtyZXR1cm4gYX0ocix0LGUpO2Zvcih2YXIgbD1uZXcgQXJyYXkociksYz0xLHU9MDt1PHI7Kyt1KXtmb3IodmFyIGg9dFt1XSxmPW5ldyBBcnJheShzKzEpLHA9MCxkPTA7ZDxzOysrZCl7dmFyIGc9aFtkXTtmW2RdPWcscCs9ZypnfWZbc109cCxsW3VdPW5ldyBpKGYsdSksYz1NYXRoLm1heChwLGMpfWEobCxvKSxyPWwubGVuZ3RoO2Zvcih2YXIgdj1uZXcgQXJyYXkocitzKzEpLG09bmV3IEFycmF5KHIrcysxKSx5PShzKzEpKihzKzEpKmMseD1uZXcgQXJyYXkocysxKSx1PTA7dTw9czsrK3UpeFt1XT0wO3hbc109eSx2WzBdPXguc2xpY2UoKSxtWzBdPS0xO2Zvcih2YXIgdT0wO3U8PXM7Kyt1KXt2YXIgZj14LnNsaWNlKCk7Zlt1XT0xLHZbdSsxXT1mLG1bdSsxXT0tMX1mb3IodmFyIHU9MDt1PHI7Kyt1KXt2YXIgYj1sW3VdO3ZbdStzKzFdPWIucG9pbnQsbVt1K3MrMV09Yi5pbmRleH12YXIgXz1uKHYsITEpO189ZT9fLmZpbHRlcihmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPTA7cjw9czsrK3Ipe3ZhciBuPW1bdFtyXV07aWYobjwwJiYrK2U+PTIpcmV0dXJuITE7dFtyXT1ufXJldHVybiEwfSk6Xy5maWx0ZXIoZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTw9czsrK2Upe3ZhciByPW1bdFtlXV07aWYocjwwKXJldHVybiExO3RbZV09cn1yZXR1cm4hMH0pO2lmKDEmcylmb3IodmFyIHU9MDt1PF8ubGVuZ3RoOysrdSl7dmFyIGI9X1t1XSxmPWJbMF07YlswXT1iWzFdLGJbMV09Zn1yZXR1cm4gX319LHsiaW5jcmVtZW50YWwtY29udmV4LWh1bGwiOjQxNSx1bmlxOjU0Nn1dLDE2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9aTt2YXIgbj0oaS5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikpLmdldENvbnRleHQoIjJkIiksYT1vKFszMiwxMjZdKTtmdW5jdGlvbiBpKHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmKHQ9dC5qb2luKCIsICIpKTt2YXIgcixpPXt9LHM9MTYsbD0uMDU7ZSYmKDI9PT1lLmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiBlWzBdP3I9byhlKTpBcnJheS5pc0FycmF5KGUpP3I9ZTooZS5vP3I9byhlLm8pOmUucGFpcnMmJihyPWUucGFpcnMpLGUuZm9udFNpemUmJihzPWUuZm9udFNpemUpLG51bGwhPWUudGhyZXNob2xkJiYobD1lLnRocmVzaG9sZCkpKSxyfHwocj1hKSxuLmZvbnQ9cysicHggIit0O2Zvcih2YXIgYz0wO2M8ci5sZW5ndGg7YysrKXt2YXIgdT1yW2NdLGg9bi5tZWFzdXJlVGV4dCh1WzBdKS53aWR0aCtuLm1lYXN1cmVUZXh0KHVbMV0pLndpZHRoLGY9bi5tZWFzdXJlVGV4dCh1KS53aWR0aDtpZihNYXRoLmFicyhoLWYpPnMqbCl7dmFyIHA9KGYtaCkvcztpW3VdPTFlMypwfX1yZXR1cm4gaX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT1bXSxyPXRbMF07cjw9dFsxXTtyKyspZm9yKHZhciBuPVN0cmluZy5mcm9tQ2hhckNvZGUociksYT10WzBdO2E8dFsxXTthKyspe3ZhciBpPW4rU3RyaW5nLmZyb21DaGFyQ29kZShhKTtlLnB1c2goaSl9cmV0dXJuIGV9aS5jcmVhdGVQYWlycz1vLGkuYXNjaWk9YX0se31dLDE2OTpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXt2YXIgcj0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEZsb2F0NjRBcnJheSl7dmFyIG49bmV3IEZsb2F0NjRBcnJheSgxKSxhPW5ldyBVaW50MzJBcnJheShuLmJ1ZmZlcik7aWYoblswXT0xLHI9ITAsMTA3MjY5MzI0OD09PWFbMV0pe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gblswXT10LFthWzBdLGFbMV1dfSxlLmV4cG9ydHMucGFjaz1mdW5jdGlvbih0LGUpe3JldHVybiBhWzBdPXQsYVsxXT1lLG5bMF19LGUuZXhwb3J0cy5sbz1mdW5jdGlvbih0KXtyZXR1cm4gblswXT10LGFbMF19LGUuZXhwb3J0cy5oaT1mdW5jdGlvbih0KXtyZXR1cm4gblswXT10LGFbMV19fWVsc2UgaWYoMTA3MjY5MzI0OD09PWFbMF0pe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gblswXT10LFthWzFdLGFbMF1dfSxlLmV4cG9ydHMucGFjaz1mdW5jdGlvbih0LGUpe3JldHVybiBhWzFdPXQsYVswXT1lLG5bMF19LGUuZXhwb3J0cy5sbz1mdW5jdGlvbih0KXtyZXR1cm4gblswXT10LGFbMV19LGUuZXhwb3J0cy5oaT1mdW5jdGlvbih0KXtyZXR1cm4gblswXT10LGFbMF19fWVsc2Ugcj0hMX1pZighcil7dmFyIGk9bmV3IHQoOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpLndyaXRlRG91YmxlTEUodCwwLCEwKSxbaS5yZWFkVUludDMyTEUoMCwhMCksaS5yZWFkVUludDMyTEUoNCwhMCldfSxlLmV4cG9ydHMucGFjaz1mdW5jdGlvbih0LGUpe3JldHVybiBpLndyaXRlVUludDMyTEUodCwwLCEwKSxpLndyaXRlVUludDMyTEUoZSw0LCEwKSxpLnJlYWREb3VibGVMRSgwLCEwKX0sZS5leHBvcnRzLmxvPWZ1bmN0aW9uKHQpe3JldHVybiBpLndyaXRlRG91YmxlTEUodCwwLCEwKSxpLnJlYWRVSW50MzJMRSgwLCEwKX0sZS5leHBvcnRzLmhpPWZ1bmN0aW9uKHQpe3JldHVybiBpLndyaXRlRG91YmxlTEUodCwwLCEwKSxpLnJlYWRVSW50MzJMRSg0LCEwKX19ZS5leHBvcnRzLnNpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGUuZXhwb3J0cy5oaSh0KT4+PjMxfSxlLmV4cG9ydHMuZXhwb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuKGUuZXhwb3J0cy5oaSh0KTw8MT4+PjIxKS0xMDIzfSxlLmV4cG9ydHMuZnJhY3Rpb249ZnVuY3Rpb24odCl7dmFyIHI9ZS5leHBvcnRzLmxvKHQpLG49ZS5leHBvcnRzLmhpKHQpLGE9MTA0ODU3NSZuO3JldHVybiAyMTQ2NDM1MDcyJm4mJihhKz0xPDwyMCksW3IsYV19LGUuZXhwb3J0cy5kZW5vcm1hbGl6ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuISgyMTQ2NDM1MDcyJmUuZXhwb3J0cy5oaSh0KSl9fSkuY2FsbCh0aGlzLHQoImJ1ZmZlciIpLkJ1ZmZlcil9LHtidWZmZXI6MTA3fV0sMTcwOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiYWJzLXN2Zy1wYXRoIiksYT10KCJub3JtYWxpemUtc3ZnLXBhdGgiKSxpPXtNOiJtb3ZlVG8iLEM6ImJlemllckN1cnZlVG8ifTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LmJlZ2luUGF0aCgpLGEobihlKSkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcj1lWzBdLG49ZS5zbGljZSgxKTt0W2lbcl1dLmFwcGx5KHQsbil9KSx0LmNsb3NlUGF0aCgpfX0seyJhYnMtc3ZnLXBhdGgiOjYzLCJub3JtYWxpemUtc3ZnLXBhdGgiOjQ1NH1dLDE3MTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJpbnQ4IjpyZXR1cm4gSW50OEFycmF5O2Nhc2UiaW50MTYiOnJldHVybiBJbnQxNkFycmF5O2Nhc2UiaW50MzIiOnJldHVybiBJbnQzMkFycmF5O2Nhc2UidWludDgiOnJldHVybiBVaW50OEFycmF5O2Nhc2UidWludDE2IjpyZXR1cm4gVWludDE2QXJyYXk7Y2FzZSJ1aW50MzIiOnJldHVybiBVaW50MzJBcnJheTtjYXNlImZsb2F0MzIiOnJldHVybiBGbG9hdDMyQXJyYXk7Y2FzZSJmbG9hdDY0IjpyZXR1cm4gRmxvYXQ2NEFycmF5O2Nhc2UiYXJyYXkiOnJldHVybiBBcnJheTtjYXNlInVpbnQ4X2NsYW1wZWQiOnJldHVybiBVaW50OENsYW1wZWRBcnJheX19fSx7fV0sMTcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3N3aXRjaCgidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPTApLHR5cGVvZiB0KXtjYXNlIm51bWJlciI6aWYodD4wKXJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByLG47Zm9yKHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZTtyZXR1cm4gcn0oMHx0LGUpO2JyZWFrO2Nhc2Uib2JqZWN0IjppZigibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXJldHVybiBmdW5jdGlvbiB0KGUscixuKXt2YXIgYT0wfGVbbl07aWYoYTw9MClyZXR1cm5bXTt2YXIgaSxvPW5ldyBBcnJheShhKTtpZihuPT09ZS5sZW5ndGgtMSlmb3IoaT0wO2k8YTsrK2kpb1tpXT1yO2Vsc2UgZm9yKGk9MDtpPGE7KytpKW9baV09dChlLHIsbisxKTtyZXR1cm4gb30odCxlLDApfXJldHVybltdfX0se31dLDE3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyKXtyPXJ8fDI7dmFyIG4scyxsLGMsdSxwLGQsdj1lJiZlLmxlbmd0aCxtPXY/ZVswXSpyOnQubGVuZ3RoLHk9YSh0LDAsbSxyLCEwKSx4PVtdO2lmKCF5fHx5Lm5leHQ9PT15LnByZXYpcmV0dXJuIHg7aWYodiYmKHk9ZnVuY3Rpb24odCxlLHIsbil7dmFyIG8scyxsLGMsdSxwPVtdO2ZvcihvPTAscz1lLmxlbmd0aDtvPHM7bysrKWw9ZVtvXSpuLGM9bzxzLTE/ZVtvKzFdKm46dC5sZW5ndGgsKHU9YSh0LGwsYyxuLCExKSk9PT11Lm5leHQmJih1LnN0ZWluZXI9ITApLHAucHVzaChnKHUpKTtmb3IocC5zb3J0KGgpLG89MDtvPHAubGVuZ3RoO28rKylmKHBbb10scikscj1pKHIsci5uZXh0KTtyZXR1cm4gcn0odCxlLHkscikpLHQubGVuZ3RoPjgwKnIpe249bD10WzBdLHM9Yz10WzFdO2Zvcih2YXIgYj1yO2I8bTtiKz1yKSh1PXRbYl0pPG4mJihuPXUpLChwPXRbYisxXSk8cyYmKHM9cCksdT5sJiYobD11KSxwPmMmJihjPXApO2Q9MCE9PShkPU1hdGgubWF4KGwtbixjLXMpKT8xL2Q6MH1yZXR1cm4gbyh5LHgscixuLHMsZCkseH1mdW5jdGlvbiBhKHQsZSxyLG4sYSl7dmFyIGksbztpZihhPT09RSh0LGUscixuKT4wKWZvcihpPWU7aTxyO2krPW4pbz1NKGksdFtpXSx0W2krMV0sbyk7ZWxzZSBmb3IoaT1yLW47aT49ZTtpLT1uKW89TShpLHRbaV0sdFtpKzFdLG8pO3JldHVybiBvJiZ4KG8sby5uZXh0KSYmKEEobyksbz1vLm5leHQpLG99ZnVuY3Rpb24gaSh0LGUpe2lmKCF0KXJldHVybiB0O2V8fChlPXQpO3ZhciByLG49dDtkb3tpZihyPSExLG4uc3RlaW5lcnx8IXgobixuLm5leHQpJiYwIT09eShuLnByZXYsbixuLm5leHQpKW49bi5uZXh0O2Vsc2V7aWYoQShuKSwobj1lPW4ucHJldik9PT1uLm5leHQpYnJlYWs7cj0hMH19d2hpbGUocnx8biE9PWUpO3JldHVybiBlfWZ1bmN0aW9uIG8odCxlLHIsbixhLGgsZil7aWYodCl7IWYmJmgmJmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXQ7ZG97bnVsbD09PWEueiYmKGEuej1kKGEueCxhLnksZSxyLG4pKSxhLnByZXZaPWEucHJldixhLm5leHRaPWEubmV4dCxhPWEubmV4dH13aGlsZShhIT09dCk7YS5wcmV2Wi5uZXh0Wj1udWxsLGEucHJldlo9bnVsbCxmdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpLG8scyxsLGM9MTtkb3tmb3Iocj10LHQ9bnVsbCxpPW51bGwsbz0wO3I7KXtmb3IobysrLG49cixzPTAsZT0wO2U8YyYmKHMrKyxuPW4ubmV4dFopO2UrKyk7Zm9yKGw9YztzPjB8fGw+MCYmbjspMCE9PXMmJigwPT09bHx8IW58fHIuejw9bi56KT8oYT1yLHI9ci5uZXh0WixzLS0pOihhPW4sbj1uLm5leHRaLGwtLSksaT9pLm5leHRaPWE6dD1hLGEucHJldlo9aSxpPWE7cj1ufWkubmV4dFo9bnVsbCxjKj0yfXdoaWxlKG8+MSl9KGEpfSh0LG4sYSxoKTtmb3IodmFyIHAsZyx2PXQ7dC5wcmV2IT09dC5uZXh0OylpZihwPXQucHJldixnPXQubmV4dCxoP2wodCxuLGEsaCk6cyh0KSllLnB1c2gocC5pL3IpLGUucHVzaCh0LmkvciksZS5wdXNoKGcuaS9yKSxBKHQpLHQ9Zy5uZXh0LHY9Zy5uZXh0O2Vsc2UgaWYoKHQ9Zyk9PT12KXtmPzE9PT1mP28odD1jKGkodCksZSxyKSxlLHIsbixhLGgsMik6Mj09PWYmJnUodCxlLHIsbixhLGgpOm8oaSh0KSxlLHIsbixhLGgsMSk7YnJlYWt9fX1mdW5jdGlvbiBzKHQpe3ZhciBlPXQucHJldixyPXQsbj10Lm5leHQ7aWYoeShlLHIsbik+PTApcmV0dXJuITE7Zm9yKHZhciBhPXQubmV4dC5uZXh0O2EhPT10LnByZXY7KXtpZih2KGUueCxlLnksci54LHIueSxuLngsbi55LGEueCxhLnkpJiZ5KGEucHJldixhLGEubmV4dCk+PTApcmV0dXJuITE7YT1hLm5leHR9cmV0dXJuITB9ZnVuY3Rpb24gbCh0LGUscixuKXt2YXIgYT10LnByZXYsaT10LG89dC5uZXh0O2lmKHkoYSxpLG8pPj0wKXJldHVybiExO2Zvcih2YXIgcz1hLng8aS54P2EueDxvLng/YS54Om8ueDppLng8by54P2kueDpvLngsbD1hLnk8aS55P2EueTxvLnk/YS55Om8ueTppLnk8by55P2kueTpvLnksYz1hLng+aS54P2EueD5vLng/YS54Om8ueDppLng+by54P2kueDpvLngsdT1hLnk+aS55P2EueT5vLnk/YS55Om8ueTppLnk+by55P2kueTpvLnksaD1kKHMsbCxlLHIsbiksZj1kKGMsdSxlLHIsbikscD10LnByZXZaLGc9dC5uZXh0WjtwJiZwLno+PWgmJmcmJmcuejw9Zjspe2lmKHAhPT10LnByZXYmJnAhPT10Lm5leHQmJnYoYS54LGEueSxpLngsaS55LG8ueCxvLnkscC54LHAueSkmJnkocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtpZihwPXAucHJldlosZyE9PXQucHJldiYmZyE9PXQubmV4dCYmdihhLngsYS55LGkueCxpLnksby54LG8ueSxnLngsZy55KSYmeShnLnByZXYsZyxnLm5leHQpPj0wKXJldHVybiExO2c9Zy5uZXh0Wn1mb3IoO3AmJnAuej49aDspe2lmKHAhPT10LnByZXYmJnAhPT10Lm5leHQmJnYoYS54LGEueSxpLngsaS55LG8ueCxvLnkscC54LHAueSkmJnkocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtwPXAucHJldlp9Zm9yKDtnJiZnLno8PWY7KXtpZihnIT09dC5wcmV2JiZnIT09dC5uZXh0JiZ2KGEueCxhLnksaS54LGkueSxvLngsby55LGcueCxnLnkpJiZ5KGcucHJldixnLGcubmV4dCk+PTApcmV0dXJuITE7Zz1nLm5leHRafXJldHVybiEwfWZ1bmN0aW9uIGModCxlLHIpe3ZhciBuPXQ7ZG97dmFyIGE9bi5wcmV2LG89bi5uZXh0Lm5leHQ7IXgoYSxvKSYmYihhLG4sbi5uZXh0LG8pJiZrKGEsbykmJmsobyxhKSYmKGUucHVzaChhLmkvciksZS5wdXNoKG4uaS9yKSxlLnB1c2goby5pL3IpLEEobiksQShuLm5leHQpLG49dD1vKSxuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuIGkobil9ZnVuY3Rpb24gdSh0LGUscixuLGEscyl7dmFyIGw9dDtkb3tmb3IodmFyIGM9bC5uZXh0Lm5leHQ7YyE9PWwucHJldjspe2lmKGwuaSE9PWMuaSYmbShsLGMpKXt2YXIgdT1UKGwsYyk7cmV0dXJuIGw9aShsLGwubmV4dCksdT1pKHUsdS5uZXh0KSxvKGwsZSxyLG4sYSxzKSx2b2lkIG8odSxlLHIsbixhLHMpfWM9Yy5uZXh0fWw9bC5uZXh0fXdoaWxlKGwhPT10KX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIHQueC1lLnh9ZnVuY3Rpb24gZih0LGUpe2lmKGU9ZnVuY3Rpb24odCxlKXt2YXIgcixuPWUsYT10LngsaT10Lnksbz0tMS8wO2Rve2lmKGk8PW4ueSYmaT49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55KXt2YXIgcz1uLngrKGktbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZihzPD1hJiZzPm8pe2lmKG89cyxzPT09YSl7aWYoaT09PW4ueSlyZXR1cm4gbjtpZihpPT09bi5uZXh0LnkpcmV0dXJuIG4ubmV4dH1yPW4ueDxuLm5leHQueD9uOm4ubmV4dH19bj1uLm5leHR9d2hpbGUobiE9PWUpO2lmKCFyKXJldHVybiBudWxsO2lmKGE9PT1vKXJldHVybiByO3ZhciBsLGM9cix1PXIueCxoPXIueSxmPTEvMDtuPXI7ZG97YT49bi54JiZuLng+PXUmJmEhPT1uLngmJnYoaTxoP2E6byxpLHUsaCxpPGg/bzphLGksbi54LG4ueSkmJihsPU1hdGguYWJzKGktbi55KS8oYS1uLngpLGsobix0KSYmKGw8Znx8bD09PWYmJihuLng+ci54fHxuLng9PT1yLngmJnAocixuKSkpJiYocj1uLGY9bCkpLG49bi5uZXh0fXdoaWxlKG4hPT1jKTtyZXR1cm4gcn0odCxlKSl7dmFyIHI9VChlLHQpO2kocixyLm5leHQpfX1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuIHkodC5wcmV2LHQsZS5wcmV2KTwwJiZ5KGUubmV4dCx0LHQubmV4dCk8MH1mdW5jdGlvbiBkKHQsZSxyLG4sYSl7cmV0dXJuKHQ9MTQzMTY1NTc2NSYoKHQ9ODU4OTkzNDU5JigodD0yNTI2NDUxMzUmKCh0PTE2NzExOTM1JigodD0zMjc2NyoodC1yKSphKXx0PDw4KSl8dDw8NCkpfHQ8PDIpKXx0PDwxKSl8KGU9MTQzMTY1NTc2NSYoKGU9ODU4OTkzNDU5JigoZT0yNTI2NDUxMzUmKChlPTE2NzExOTM1JigoZT0zMjc2NyooZS1uKSphKXxlPDw4KSl8ZTw8NCkpfGU8PDIpKXxlPDwxKSk8PDF9ZnVuY3Rpb24gZyh0KXt2YXIgZT10LHI9dDtkb3soZS54PHIueHx8ZS54PT09ci54JiZlLnk8ci55KSYmKHI9ZSksZT1lLm5leHR9d2hpbGUoZSE9PXQpO3JldHVybiByfWZ1bmN0aW9uIHYodCxlLHIsbixhLGksbyxzKXtyZXR1cm4oYS1vKSooZS1zKS0odC1vKSooaS1zKT49MCYmKHQtbykqKG4tcyktKHItbykqKGUtcyk+PTAmJihyLW8pKihpLXMpLShhLW8pKihuLXMpPj0wfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gdC5uZXh0LmkhPT1lLmkmJnQucHJldi5pIT09ZS5pJiYhZnVuY3Rpb24odCxlKXt2YXIgcj10O2Rve2lmKHIuaSE9PXQuaSYmci5uZXh0LmkhPT10LmkmJnIuaSE9PWUuaSYmci5uZXh0LmkhPT1lLmkmJmIocixyLm5leHQsdCxlKSlyZXR1cm4hMDtyPXIubmV4dH13aGlsZShyIT09dCk7cmV0dXJuITF9KHQsZSkmJihrKHQsZSkmJmsoZSx0KSYmZnVuY3Rpb24odCxlKXt2YXIgcj10LG49ITEsYT0odC54K2UueCkvMixpPSh0LnkrZS55KS8yO2Rve3IueT5pIT1yLm5leHQueT5pJiZyLm5leHQueSE9PXIueSYmYTwoci5uZXh0Lngtci54KSooaS1yLnkpLyhyLm5leHQueS1yLnkpK3IueCYmKG49IW4pLHI9ci5uZXh0fXdoaWxlKHIhPT10KTtyZXR1cm4gbn0odCxlKSYmKHkodC5wcmV2LHQsZS5wcmV2KXx8eSh0LGUucHJldixlKSl8fHgodCxlKSYmeSh0LnByZXYsdCx0Lm5leHQpPjAmJnkoZS5wcmV2LGUsZS5uZXh0KT4wKX1mdW5jdGlvbiB5KHQsZSxyKXtyZXR1cm4oZS55LXQueSkqKHIueC1lLngpLShlLngtdC54KSooci55LWUueSl9ZnVuY3Rpb24geCh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1mdW5jdGlvbiBiKHQsZSxyLG4pe3ZhciBhPXcoeSh0LGUscikpLGk9dyh5KHQsZSxuKSksbz13KHkocixuLHQpKSxzPXcoeShyLG4sZSkpO3JldHVybiBhIT09aSYmbyE9PXN8fCghKDAhPT1hfHwhXyh0LHIsZSkpfHwoISgwIT09aXx8IV8odCxuLGUpKXx8KCEoMCE9PW98fCFfKHIsdCxuKSl8fCEoMCE9PXN8fCFfKHIsZSxuKSkpKSl9ZnVuY3Rpb24gXyh0LGUscil7cmV0dXJuIGUueDw9TWF0aC5tYXgodC54LHIueCkmJmUueD49TWF0aC5taW4odC54LHIueCkmJmUueTw9TWF0aC5tYXgodC55LHIueSkmJmUueT49TWF0aC5taW4odC55LHIueSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9ZnVuY3Rpb24gayh0LGUpe3JldHVybiB5KHQucHJldix0LHQubmV4dCk8MD95KHQsZSx0Lm5leHQpPj0wJiZ5KHQsdC5wcmV2LGUpPj0wOnkodCxlLHQucHJldik8MHx8eSh0LHQubmV4dCxlKTwwfWZ1bmN0aW9uIFQodCxlKXt2YXIgcj1uZXcgUyh0LmksdC54LHQueSksbj1uZXcgUyhlLmksZS54LGUueSksYT10Lm5leHQsaT1lLnByZXY7cmV0dXJuIHQubmV4dD1lLGUucHJldj10LHIubmV4dD1hLGEucHJldj1yLG4ubmV4dD1yLHIucHJldj1uLGkubmV4dD1uLG4ucHJldj1pLG59ZnVuY3Rpb24gTSh0LGUscixuKXt2YXIgYT1uZXcgUyh0LGUscik7cmV0dXJuIG4/KGEubmV4dD1uLm5leHQsYS5wcmV2PW4sbi5uZXh0LnByZXY9YSxuLm5leHQ9YSk6KGEucHJldj1hLGEubmV4dD1hKSxhfWZ1bmN0aW9uIEEodCl7dC5uZXh0LnByZXY9dC5wcmV2LHQucHJldi5uZXh0PXQubmV4dCx0LnByZXZaJiYodC5wcmV2Wi5uZXh0Wj10Lm5leHRaKSx0Lm5leHRaJiYodC5uZXh0Wi5wcmV2Wj10LnByZXZaKX1mdW5jdGlvbiBTKHQsZSxyKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9cix0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9bnVsbCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX1mdW5jdGlvbiBFKHQsZSxyLG4pe2Zvcih2YXIgYT0wLGk9ZSxvPXItbjtpPHI7aSs9bilhKz0odFtvXS10W2ldKSoodFtpKzFdK3RbbysxXSksbz1pO3JldHVybiBhfWUuZXhwb3J0cz1uLGUuZXhwb3J0cy5kZWZhdWx0PW4sbi5kZXZpYXRpb249ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ZSYmZS5sZW5ndGgsaT1hP2VbMF0qcjp0Lmxlbmd0aCxvPU1hdGguYWJzKEUodCwwLGkscikpO2lmKGEpZm9yKHZhciBzPTAsbD1lLmxlbmd0aDtzPGw7cysrKXt2YXIgYz1lW3NdKnIsdT1zPGwtMT9lW3MrMV0qcjp0Lmxlbmd0aDtvLT1NYXRoLmFicyhFKHQsYyx1LHIpKX12YXIgaD0wO2ZvcihzPTA7czxuLmxlbmd0aDtzKz0zKXt2YXIgZj1uW3NdKnIscD1uW3MrMV0qcixkPW5bcysyXSpyO2grPU1hdGguYWJzKCh0W2ZdLXRbZF0pKih0W3ArMV0tdFtmKzFdKS0odFtmXS10W3BdKSoodFtkKzFdLXRbZisxXSkpfXJldHVybiAwPT09byYmMD09PWg/MDpNYXRoLmFicygoaC1vKS9vKX0sbi5mbGF0dGVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdWzBdLmxlbmd0aCxyPXt2ZXJ0aWNlczpbXSxob2xlczpbXSxkaW1lbnNpb25zOmV9LG49MCxhPTA7YTx0Lmxlbmd0aDthKyspe2Zvcih2YXIgaT0wO2k8dFthXS5sZW5ndGg7aSsrKWZvcih2YXIgbz0wO288ZTtvKyspci52ZXJ0aWNlcy5wdXNoKHRbYV1baV1bb10pO2E+MCYmKG4rPXRbYS0xXS5sZW5ndGgsci5ob2xlcy5wdXNoKG4pKX1yZXR1cm4gcn19LHt9XSwxNzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5sZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiBlKXtlPTA7Zm9yKHZhciBhPTA7YTxyOysrYSl7dmFyIGk9dFthXTtlPU1hdGgubWF4KGUsaVswXSxpWzFdKX1lPTErKDB8ZSl9ZXw9MDtmb3IodmFyIG89bmV3IEFycmF5KGUpLGE9MDthPGU7KythKW9bYV09W107Zm9yKHZhciBhPTA7YTxyOysrYSl7dmFyIGk9dFthXTtvW2lbMF1dLnB1c2goaVsxXSksb1tpWzFdXS5wdXNoKGlbMF0pfWZvcih2YXIgcz0wO3M8ZTsrK3MpbihvW3NdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pO3JldHVybiBvfTt2YXIgbj10KCJ1bmlxIil9LHt1bmlxOjU0Nn1dLDE3NTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoInN0cm9uZ2x5LWNvbm5lY3RlZC1jb21wb25lbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHI9W10sYT1bXSxpPVtdLG89e30scz1bXTtmdW5jdGlvbiBsKHQpe3ZhciByLG4sdT0hMTtmb3IoYS5wdXNoKHQpLGlbdF09ITAscj0wO3I8c1t0XS5sZW5ndGg7cisrKShuPXNbdF1bcl0pPT09ZT8oYyhlLGEpLHU9ITApOmlbbl18fCh1PWwobikpO2lmKHUpIWZ1bmN0aW9uIHQoZSl7aVtlXT0hMSxvLmhhc093blByb3BlcnR5KGUpJiZPYmplY3Qua2V5cyhvW2VdKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2RlbGV0ZSBvW2VdW3JdLGlbcl0mJnQocil9KX0odCk7ZWxzZSBmb3Iocj0wO3I8c1t0XS5sZW5ndGg7cisrKXtuPXNbdF1bcl07dmFyIGg9b1tuXTtofHwoaD17fSxvW25dPWgpLGhbbl09ITB9cmV0dXJuIGEucG9wKCksdX1mdW5jdGlvbiBjKHQsZSl7dmFyIG49W10uY29uY2F0KGUpLmNvbmNhdCh0KTtyLnB1c2gobil9ZnVuY3Rpb24gdShlKXshZnVuY3Rpb24oZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspcjxlJiYodFtyXT1bXSksdFtyXT10W3JdLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdD49ZX0pfShlKTtmb3IodmFyIHIsYT1uKHQpLmNvbXBvbmVudHMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4xfSksaT0xLzAsbz0wO288YS5sZW5ndGg7bysrKWZvcih2YXIgcz0wO3M8YVtvXS5sZW5ndGg7cysrKWFbb11bc108aSYmKGk9YVtvXVtzXSxyPW8pO3ZhciBsPWFbcl07cmV0dXJuISFsJiZ7bGVhc3RWZXJ0ZXg6aSxhZGpMaXN0OnQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1sLmluZGV4T2YoZSk/W106dC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1sLmluZGV4T2YodCl9KX0pfX1lPTA7Zm9yKHZhciBoPXQubGVuZ3RoO2U8aDspe3ZhciBmPXUoZSk7aWYoZT1mLmxlYXN0VmVydGV4LHM9Zi5hZGpMaXN0KXtmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKylmb3IodmFyIGQ9MDtkPHNbcF0ubGVuZ3RoO2QrKyl7dmFyIGc9c1twXVtkXTtpWytnXT0hMSxvW2ddPXt9fWwoZSksZSs9MX1lbHNlIGU9aH1yZXR1cm4gcn19LHsic3Ryb25nbHktY29ubmVjdGVkLWNvbXBvbmVudHMiOjUyOX1dLDE3NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9vYmplY3QvdmFsaWQtdmFsdWUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzKS5sZW5ndGg9MCx0aGlzfX0seyIuLi8uLi9vYmplY3QvdmFsaWQtdmFsdWUiOjIwOH1dLDE3NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9pcy1pbXBsZW1lbnRlZCIpKCk/QXJyYXkuZnJvbTp0KCIuL3NoaW0iKX0seyIuL2lzLWltcGxlbWVudGVkIjoxNzgsIi4vc2hpbSI6MTc5fV0sMTc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0LGUscj1BcnJheS5mcm9tO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiYoZT1yKHQ9WyJyYXoiLCJkd2EiXSksQm9vbGVhbihlJiZlIT09dCYmImR3YSI9PT1lWzFdKSl9fSx7fV0sMTc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImVzNi1zeW1ib2wiKS5pdGVyYXRvcixhPXQoIi4uLy4uL2Z1bmN0aW9uL2lzLWFyZ3VtZW50cyIpLGk9dCgiLi4vLi4vZnVuY3Rpb24vaXMtZnVuY3Rpb24iKSxvPXQoIi4uLy4uL251bWJlci90by1wb3MtaW50ZWdlciIpLHM9dCgiLi4vLi4vb2JqZWN0L3ZhbGlkLWNhbGxhYmxlIiksbD10KCIuLi8uLi9vYmplY3QvdmFsaWQtdmFsdWUiKSxjPXQoIi4uLy4uL29iamVjdC9pcy12YWx1ZSIpLHU9dCgiLi4vLi4vc3RyaW5nL2lzLXN0cmluZyIpLGg9QXJyYXkuaXNBcnJheSxmPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLHA9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm51bGx9LGQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyLGcsdixtLHkseCxiLF8sdyxrPWFyZ3VtZW50c1sxXSxUPWFyZ3VtZW50c1syXTtpZih0PU9iamVjdChsKHQpKSxjKGspJiZzKGspLHRoaXMmJnRoaXMhPT1BcnJheSYmaSh0aGlzKSllPXRoaXM7ZWxzZXtpZighayl7aWYoYSh0KSlyZXR1cm4gMSE9PShtPXQubGVuZ3RoKT9BcnJheS5hcHBseShudWxsLHQpOigodj1uZXcgQXJyYXkoMSkpWzBdPXRbMF0sdik7aWYoaCh0KSl7Zm9yKHY9bmV3IEFycmF5KG09dC5sZW5ndGgpLHI9MDtyPG07KytyKXZbcl09dFtyXTtyZXR1cm4gdn19dj1bXX1pZighaCh0KSlpZih2b2lkIDAhPT0oXz10W25dKSl7Zm9yKHg9cyhfKS5jYWxsKHQpLGUmJih2PW5ldyBlKSxiPXgubmV4dCgpLHI9MDshYi5kb25lOyl3PWs/Zi5jYWxsKGssVCxiLnZhbHVlLHIpOmIudmFsdWUsZT8ocC52YWx1ZT13LGQodixyLHApKTp2W3JdPXcsYj14Lm5leHQoKSwrK3I7bT1yfWVsc2UgaWYodSh0KSl7Zm9yKG09dC5sZW5ndGgsZSYmKHY9bmV3IGUpLHI9MCxnPTA7cjxtOysrcil3PXRbcl0scisxPG0mJih5PXcuY2hhckNvZGVBdCgwKSk+PTU1Mjk2JiZ5PD01NjMxOSYmKHcrPXRbKytyXSksdz1rP2YuY2FsbChrLFQsdyxnKTp3LGU/KHAudmFsdWU9dyxkKHYsZyxwKSk6dltnXT13LCsrZzttPWd9aWYodm9pZCAwPT09bSlmb3IobT1vKHQubGVuZ3RoKSxlJiYodj1uZXcgZShtKSkscj0wO3I8bTsrK3Ipdz1rP2YuY2FsbChrLFQsdFtyXSxyKTp0W3JdLGU/KHAudmFsdWU9dyxkKHYscixwKSk6dltyXT13O3JldHVybiBlJiYocC52YWx1ZT1udWxsLHYubGVuZ3RoPW0pLHZ9fSx7Ii4uLy4uL2Z1bmN0aW9uL2lzLWFyZ3VtZW50cyI6MTgwLCIuLi8uLi9mdW5jdGlvbi9pcy1mdW5jdGlvbiI6MTgxLCIuLi8uLi9udW1iZXIvdG8tcG9zLWludGVnZXIiOjE4NywiLi4vLi4vb2JqZWN0L2lzLXZhbHVlIjoxOTcsIi4uLy4uL29iamVjdC92YWxpZC1jYWxsYWJsZSI6MjA2LCIuLi8uLi9vYmplY3QvdmFsaWQtdmFsdWUiOjIwOCwiLi4vLi4vc3RyaW5nL2lzLXN0cmluZyI6MjEyLCJlczYtc3ltYm9sIjoyMjJ9XSwxODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxhPW4uY2FsbChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHQpPT09YX19LHt9XSwxODE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxhPW4uY2FsbCh0KCIuL25vb3AiKSk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZuLmNhbGwodCk9PT1hfX0seyIuL25vb3AiOjE4Mn1dLDE4MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSx7fV0sMTgzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuL2lzLWltcGxlbWVudGVkIikoKT9NYXRoLnNpZ246dCgiLi9zaGltIil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MTg0LCIuL3NoaW0iOjE4NX1dLDE4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1NYXRoLnNpZ247cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJigxPT09dCgxMCkmJi0xPT09dCgtMjApKX19LHt9XSwxODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PU51bWJlcih0KSxpc05hTih0KXx8MD09PXQ/dDp0PjA/MTotMX19LHt9XSwxODY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbWF0aC9zaWduIiksYT1NYXRoLmFicyxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0KT8wOjAhPT0odD1OdW1iZXIodCkpJiZpc0Zpbml0ZSh0KT9uKHQpKmkoYSh0KSk6dH19LHsiLi4vbWF0aC9zaWduIjoxODN9XSwxODc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi90by1pbnRlZ2VyIiksYT1NYXRoLm1heDtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEoMCxuKHQpKX19LHsiLi90by1pbnRlZ2VyIjoxODZ9XSwxODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi92YWxpZC1jYWxsYWJsZSIpLGE9dCgiLi92YWxpZC12YWx1ZSIpLGk9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQsbz1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbCxzPU9iamVjdC5rZXlzLGw9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixjKXt2YXIgdSxoPWFyZ3VtZW50c1syXSxmPWFyZ3VtZW50c1szXTtyZXR1cm4gcj1PYmplY3QoYShyKSksbihjKSx1PXMociksZiYmdS5zb3J0KCJmdW5jdGlvbiI9PXR5cGVvZiBmP2kuY2FsbChmLHIpOnZvaWQgMCksImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXVbdF0pLG8uY2FsbCh0LHUsZnVuY3Rpb24odCxuKXtyZXR1cm4gbC5jYWxsKHIsdCk/by5jYWxsKGMsaCxyW3RdLHQscixuKTplfSl9fX0seyIuL3ZhbGlkLWNhbGxhYmxlIjoyMDYsIi4vdmFsaWQtdmFsdWUiOjIwOH1dLDE4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9pcy1pbXBsZW1lbnRlZCIpKCk/T2JqZWN0LmFzc2lnbjp0KCIuL3NoaW0iKX0seyIuL2lzLWltcGxlbWVudGVkIjoxOTAsIi4vc2hpbSI6MTkxfV0sMTkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0LGU9T2JqZWN0LmFzc2lnbjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmKGUodD17Zm9vOiJyYXoifSx7YmFyOiJkd2EifSx7dHJ6eToidHJ6eSJ9KSx0LmZvbyt0LmJhcit0LnRyenk9PT0icmF6ZHdhdHJ6eSIpfX0se31dLDE5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9rZXlzIiksYT10KCIuLi92YWxpZC12YWx1ZSIpLGk9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbyxzLGw9aShhcmd1bWVudHMubGVuZ3RoLDIpO2Zvcih0PU9iamVjdChhKHQpKSxzPWZ1bmN0aW9uKG4pe3RyeXt0W25dPWVbbl19Y2F0Y2godCl7cnx8KHI9dCl9fSxvPTE7bzxsOysrbyllPWFyZ3VtZW50c1tvXSxuKGUpLmZvckVhY2gocyk7aWYodm9pZCAwIT09cil0aHJvdyByO3JldHVybiB0fX0seyIuLi9rZXlzIjoxOTgsIi4uL3ZhbGlkLXZhbHVlIjoyMDh9XSwxOTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYXJyYXkvZnJvbSIpLGE9dCgiLi9hc3NpZ24iKSxpPXQoIi4vdmFsaWQtdmFsdWUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KGkodCkpLHI9YXJndW1lbnRzWzFdLG89T2JqZWN0KGFyZ3VtZW50c1syXSk7aWYoZSE9PXQmJiFyKXJldHVybiBlO3ZhciBzPXt9O3JldHVybiByP24ocixmdW5jdGlvbihlKXsoby5lbnN1cmV8fGUgaW4gdCkmJihzW2VdPXRbZV0pfSk6YShzLHQpLHN9fSx7Ii4uL2FycmF5L2Zyb20iOjE3NywiLi9hc3NpZ24iOjE4OSwiLi92YWxpZC12YWx1ZSI6MjA4fV0sMTkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGEsaSxvLHM9T2JqZWN0LmNyZWF0ZTt0KCIuL3NldC1wcm90b3R5cGUtb2YvaXMtaW1wbGVtZW50ZWQiKSgpfHwobj10KCIuL3NldC1wcm90b3R5cGUtb2Yvc2hpbSIpKSxlLmV4cG9ydHM9bj8xIT09bi5sZXZlbD9zOihhPXt9LGk9e30sbz17Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSxPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lbdF09Il9fcHJvdG9fXyIhPT10P286e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhhLGkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJudWxsUG9seWZpbGwiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSx2YWx1ZTphfSksZnVuY3Rpb24odCxlKXtyZXR1cm4gcyhudWxsPT09dD9hOnQsZSl9KTpzfSx7Ii4vc2V0LXByb3RvdHlwZS1vZi9pcy1pbXBsZW1lbnRlZCI6MjA0LCIuL3NldC1wcm90b3R5cGUtb2Yvc2hpbSI6MjA1fV0sMTk0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuL19pdGVyYXRlIikoImZvckVhY2giKX0seyIuL19pdGVyYXRlIjoxODh9XSwxOTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0se31dLDE5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzLXZhbHVlIiksYT17ZnVuY3Rpb246ITAsb2JqZWN0OiEwfTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4odCkmJmFbdHlwZW9mIHRdfHwhMX19LHsiLi9pcy12YWx1ZSI6MTk3fV0sMTk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Z1bmN0aW9uL25vb3AiKSgpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdCE9PW4mJm51bGwhPT10fX0seyIuLi9mdW5jdGlvbi9ub29wIjoxODJ9XSwxOTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgpP09iamVjdC5rZXlzOnQoIi4vc2hpbSIpfSx7Ii4vaXMtaW1wbGVtZW50ZWQiOjE5OSwiLi9zaGltIjoyMDB9XSwxOTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBPYmplY3Qua2V5cygicHJpbWl0aXZlIiksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0se31dLDIwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9pcy12YWx1ZSIpLGE9T2JqZWN0LmtleXM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhKG4odCk/T2JqZWN0KHQpOnQpfX0seyIuLi9pcy12YWx1ZSI6MTk3fV0sMjAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vdmFsaWQtY2FsbGFibGUiKSxhPXQoIi4vZm9yLWVhY2giKSxpPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXt9LG89YXJndW1lbnRzWzJdO3JldHVybiBuKGUpLGEodCxmdW5jdGlvbih0LG4sYSxzKXtyW25dPWkuY2FsbChlLG8sdCxuLGEscyl9KSxyfX0seyIuL2Zvci1lYWNoIjoxOTQsIi4vdmFsaWQtY2FsbGFibGUiOjIwNn1dLDIwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzLXZhbHVlIiksYT1BcnJheS5wcm90b3R5cGUuZm9yRWFjaCxpPU9iamVjdC5jcmVhdGU7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWkobnVsbCk7cmV0dXJuIGEuY2FsbChhcmd1bWVudHMsZnVuY3Rpb24odCl7bih0KSYmZnVuY3Rpb24odCxlKXt2YXIgcjtmb3IociBpbiB0KWVbcl09dFtyXX0oT2JqZWN0KHQpLGUpfSksZX19LHsiLi9pcy12YWx1ZSI6MTk3fV0sMjAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuL2lzLWltcGxlbWVudGVkIikoKT9PYmplY3Quc2V0UHJvdG90eXBlT2Y6dCgiLi9zaGltIil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MjA0LCIuL3NoaW0iOjIwNX1dLDIwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QuY3JlYXRlLGE9T2JqZWN0LmdldFByb3RvdHlwZU9mLGk9e307ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mLGU9YXJndW1lbnRzWzBdfHxuO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZhKHQoZShudWxsKSxpKSk9PT1pfX0se31dLDIwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhLGksbyxzPXQoIi4uL2lzLW9iamVjdCIpLGw9dCgiLi4vdmFsaWQtdmFsdWUiKSxjPU9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZix1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxoPXtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9O249ZnVuY3Rpb24odCxlKXtpZihsKHQpLG51bGw9PT1lfHxzKGUpKXJldHVybiB0O3Rocm93IG5ldyBUeXBlRXJyb3IoIlByb3RvdHlwZSBtdXN0IGJlIG51bGwgb3IgYW4gb2JqZWN0Iil9LGUuZXhwb3J0cz0oYT1mdW5jdGlvbigpe3ZhciB0LGU9T2JqZWN0LmNyZWF0ZShudWxsKSxyPXt9LG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKTtpZihuKXt0cnl7KHQ9bi5zZXQpLmNhbGwoZSxyKX1jYXRjaCh0KXt9aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09cilyZXR1cm57c2V0OnQsbGV2ZWw6Mn19cmV0dXJuIGUuX19wcm90b19fPXIsT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09cj97bGV2ZWw6Mn06KChlPXt9KS5fX3Byb3RvX189cixPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1yJiZ7bGV2ZWw6MX0pfSgpKT8oMj09PWEubGV2ZWw/YS5zZXQ/KG89YS5zZXQsaT1mdW5jdGlvbih0LGUpe3JldHVybiBvLmNhbGwobih0LGUpLGUpLHR9KTppPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxlKS5fX3Byb3RvX189ZSx0fTppPWZ1bmN0aW9uIHQoZSxyKXt2YXIgYTtyZXR1cm4gbihlLHIpLChhPWMuY2FsbCh0Lm51bGxQb2x5ZmlsbCxlKSkmJmRlbGV0ZSB0Lm51bGxQb2x5ZmlsbC5fX3Byb3RvX18sbnVsbD09PXImJihyPXQubnVsbFBvbHlmaWxsKSxlLl9fcHJvdG9fXz1yLGEmJnUodC5udWxsUG9seWZpbGwsIl9fcHJvdG9fXyIsaCksZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGksImxldmVsIix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsdmFsdWU6YS5sZXZlbH0pKTpudWxsLHQoIi4uL2NyZWF0ZSIpfSx7Ii4uL2NyZWF0ZSI6MTkzLCIuLi9pcy1vYmplY3QiOjE5NiwiLi4vdmFsaWQtdmFsdWUiOjIwOH1dLDIwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24iKTtyZXR1cm4gdH19LHt9XSwyMDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pcy1vYmplY3QiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGFuIE9iamVjdCIpO3JldHVybiB0fX0seyIuL2lzLW9iamVjdCI6MTk2fV0sMjA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vaXMtdmFsdWUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHVzZSBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybiB0fX0seyIuL2lzLXZhbHVlIjoxOTd9XSwyMDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgpP1N0cmluZy5wcm90b3R5cGUuY29udGFpbnM6dCgiLi9zaGltIil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MjEwLCIuL3NoaW0iOjIxMX1dLDIxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0icmF6ZHdhdHJ6eSI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4uY29udGFpbnMmJighMD09PW4uY29udGFpbnMoImR3YSIpJiYhMT09PW4uY29udGFpbnMoImZvbyIpKX19LHt9XSwyMTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49U3RyaW5nLnByb3RvdHlwZS5pbmRleE9mO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHRoaXMsdCxhcmd1bWVudHNbMV0pPi0xfX0se31dLDIxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGE9bi5jYWxsKCIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHx0JiYib2JqZWN0Ij09dHlwZW9mIHQmJih0IGluc3RhbmNlb2YgU3RyaW5nfHxuLmNhbGwodCk9PT1hKXx8ITF9fSx7fV0sMjEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCksYT1NYXRoLnJhbmRvbTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdDtkb3t0PWEoKS50b1N0cmluZygzNikuc2xpY2UoMil9d2hpbGUoblt0XSk7cmV0dXJuIHR9fSx7fV0sMjE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGE9dCgiZXM1LWV4dC9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZiIpLGk9dCgiZXM1LWV4dC9zdHJpbmcvIy9jb250YWlucyIpLG89dCgiZCIpLHM9dCgiZXM2LXN5bWJvbCIpLGw9dCgiLi8iKSxjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtuPWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIik7bC5jYWxsKHRoaXMsdCksZT1lP2kuY2FsbChlLCJrZXkrdmFsdWUiKT8ia2V5K3ZhbHVlIjppLmNhbGwoZSwia2V5Iik/ImtleSI6InZhbHVlIjoidmFsdWUiLGModGhpcywiX19raW5kX18iLG8oIiIsZSkpfSxhJiZhKG4sbCksZGVsZXRlIG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobC5wcm90b3R5cGUse19yZXNvbHZlOm8oZnVuY3Rpb24odCl7cmV0dXJuInZhbHVlIj09PXRoaXMuX19raW5kX18/dGhpcy5fX2xpc3RfX1t0XToia2V5K3ZhbHVlIj09PXRoaXMuX19raW5kX18/W3QsdGhpcy5fX2xpc3RfX1t0XV06dH0pfSksYyhuLnByb3RvdHlwZSxzLnRvU3RyaW5nVGFnLG8oImMiLCJBcnJheSBJdGVyYXRvciIpKX0seyIuLyI6MjE3LGQ6MTUzLCJlczUtZXh0L29iamVjdC9zZXQtcHJvdG90eXBlLW9mIjoyMDMsImVzNS1leHQvc3RyaW5nLyMvY29udGFpbnMiOjIwOSwiZXM2LXN5bWJvbCI6MjIyfV0sMjE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImVzNS1leHQvZnVuY3Rpb24vaXMtYXJndW1lbnRzIiksYT10KCJlczUtZXh0L29iamVjdC92YWxpZC1jYWxsYWJsZSIpLGk9dCgiZXM1LWV4dC9zdHJpbmcvaXMtc3RyaW5nIiksbz10KCIuL2dldCIpLHM9QXJyYXkuaXNBcnJheSxsPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLGM9QXJyYXkucHJvdG90eXBlLnNvbWU7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsdSxoLGYscCxkLGcsdixtPWFyZ3VtZW50c1syXTtpZihzKHQpfHxuKHQpP3I9ImFycmF5IjppKHQpP3I9InN0cmluZyI6dD1vKHQpLGEoZSksaD1mdW5jdGlvbigpe2Y9ITB9LCJhcnJheSIhPT1yKWlmKCJzdHJpbmciIT09cilmb3IodT10Lm5leHQoKTshdS5kb25lOyl7aWYobC5jYWxsKGUsbSx1LnZhbHVlLGgpLGYpcmV0dXJuO3U9dC5uZXh0KCl9ZWxzZSBmb3IoZD10Lmxlbmd0aCxwPTA7cDxkJiYoZz10W3BdLHArMTxkJiYodj1nLmNoYXJDb2RlQXQoMCkpPj01NTI5NiYmdjw9NTYzMTkmJihnKz10WysrcF0pLGwuY2FsbChlLG0sZyxoKSwhZik7KytwKTtlbHNlIGMuY2FsbCh0LGZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwoZSxtLHQsaCksZn0pfX0seyIuL2dldCI6MjE2LCJlczUtZXh0L2Z1bmN0aW9uL2lzLWFyZ3VtZW50cyI6MTgwLCJlczUtZXh0L29iamVjdC92YWxpZC1jYWxsYWJsZSI6MjA2LCJlczUtZXh0L3N0cmluZy9pcy1zdHJpbmciOjIxMn1dLDIxNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJlczUtZXh0L2Z1bmN0aW9uL2lzLWFyZ3VtZW50cyIpLGE9dCgiZXM1LWV4dC9zdHJpbmcvaXMtc3RyaW5nIiksaT10KCIuL2FycmF5Iiksbz10KCIuL3N0cmluZyIpLHM9dCgiLi92YWxpZC1pdGVyYWJsZSIpLGw9dCgiZXM2LXN5bWJvbCIpLml0ZXJhdG9yO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcyh0KVtsXT90W2xdKCk6bih0KT9uZXcgaSh0KTphKHQpP25ldyBvKHQpOm5ldyBpKHQpfX0seyIuL2FycmF5IjoyMTQsIi4vc3RyaW5nIjoyMTksIi4vdmFsaWQtaXRlcmFibGUiOjIyMCwiZXM1LWV4dC9mdW5jdGlvbi9pcy1hcmd1bWVudHMiOjE4MCwiZXM1LWV4dC9zdHJpbmcvaXMtc3RyaW5nIjoyMTIsImVzNi1zeW1ib2wiOjIyMn1dLDIxNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhPXQoImVzNS1leHQvYXJyYXkvIy9jbGVhciIpLGk9dCgiZXM1LWV4dC9vYmplY3QvYXNzaWduIiksbz10KCJlczUtZXh0L29iamVjdC92YWxpZC1jYWxsYWJsZSIpLHM9dCgiZXM1LWV4dC9vYmplY3QvdmFsaWQtdmFsdWUiKSxsPXQoImQiKSxjPXQoImQvYXV0by1iaW5kIiksdT10KCJlczYtc3ltYm9sIiksaD1PYmplY3QuZGVmaW5lUHJvcGVydHksZj1PYmplY3QuZGVmaW5lUHJvcGVydGllcztlLmV4cG9ydHM9bj1mdW5jdGlvbih0LGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIik7Zih0aGlzLHtfX2xpc3RfXzpsKCJ3IixzKHQpKSxfX2NvbnRleHRfXzpsKCJ3IixlKSxfX25leHRJbmRleF9fOmwoInciLDApfSksZSYmKG8oZS5vbiksZS5vbigiX2FkZCIsdGhpcy5fb25BZGQpLGUub24oIl9kZWxldGUiLHRoaXMuX29uRGVsZXRlKSxlLm9uKCJfY2xlYXIiLHRoaXMuX29uQ2xlYXIpKX0sZGVsZXRlIG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yLGYobi5wcm90b3R5cGUsaSh7X25leHQ6bChmdW5jdGlvbigpe3ZhciB0O2lmKHRoaXMuX19saXN0X18pcmV0dXJuIHRoaXMuX19yZWRvX18mJnZvaWQgMCE9PSh0PXRoaXMuX19yZWRvX18uc2hpZnQoKSk/dDp0aGlzLl9fbmV4dEluZGV4X188dGhpcy5fX2xpc3RfXy5sZW5ndGg/dGhpcy5fX25leHRJbmRleF9fKys6dm9pZCB0aGlzLl91bkJpbmQoKX0pLG5leHQ6bChmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVSZXN1bHQodGhpcy5fbmV4dCgpKX0pLF9jcmVhdGVSZXN1bHQ6bChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD97ZG9uZTohMCx2YWx1ZTp2b2lkIDB9Ontkb25lOiExLHZhbHVlOnRoaXMuX3Jlc29sdmUodCl9fSksX3Jlc29sdmU6bChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2xpc3RfX1t0XX0pLF91bkJpbmQ6bChmdW5jdGlvbigpe3RoaXMuX19saXN0X189bnVsbCxkZWxldGUgdGhpcy5fX3JlZG9fXyx0aGlzLl9fY29udGV4dF9fJiYodGhpcy5fX2NvbnRleHRfXy5vZmYoIl9hZGQiLHRoaXMuX29uQWRkKSx0aGlzLl9fY29udGV4dF9fLm9mZigiX2RlbGV0ZSIsdGhpcy5fb25EZWxldGUpLHRoaXMuX19jb250ZXh0X18ub2ZmKCJfY2xlYXIiLHRoaXMuX29uQ2xlYXIpLHRoaXMuX19jb250ZXh0X189bnVsbCl9KSx0b1N0cmluZzpsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIisodGhpc1t1LnRvU3RyaW5nVGFnXXx8Ik9iamVjdCIpKyJdIn0pfSxjKHtfb25BZGQ6bChmdW5jdGlvbih0KXt0Pj10aGlzLl9fbmV4dEluZGV4X198fCgrK3RoaXMuX19uZXh0SW5kZXhfXyx0aGlzLl9fcmVkb19fPyh0aGlzLl9fcmVkb19fLmZvckVhY2goZnVuY3Rpb24oZSxyKXtlPj10JiYodGhpcy5fX3JlZG9fX1tyXT0rK2UpfSx0aGlzKSx0aGlzLl9fcmVkb19fLnB1c2godCkpOmgodGhpcywiX19yZWRvX18iLGwoImMiLFt0XSkpKX0pLF9vbkRlbGV0ZTpsKGZ1bmN0aW9uKHQpe3ZhciBlO3Q+PXRoaXMuX19uZXh0SW5kZXhfX3x8KC0tdGhpcy5fX25leHRJbmRleF9fLHRoaXMuX19yZWRvX18mJigtMSE9PShlPXRoaXMuX19yZWRvX18uaW5kZXhPZih0KSkmJnRoaXMuX19yZWRvX18uc3BsaWNlKGUsMSksdGhpcy5fX3JlZG9fXy5mb3JFYWNoKGZ1bmN0aW9uKGUscil7ZT50JiYodGhpcy5fX3JlZG9fX1tyXT0tLWUpfSx0aGlzKSkpfSksX29uQ2xlYXI6bChmdW5jdGlvbigpe3RoaXMuX19yZWRvX18mJmEuY2FsbCh0aGlzLl9fcmVkb19fKSx0aGlzLl9fbmV4dEluZGV4X189MH0pfSkpKSxoKG4ucHJvdG90eXBlLHUuaXRlcmF0b3IsbChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpfSx7ZDoxNTMsImQvYXV0by1iaW5kIjoxNTIsImVzNS1leHQvYXJyYXkvIy9jbGVhciI6MTc2LCJlczUtZXh0L29iamVjdC9hc3NpZ24iOjE4OSwiZXM1LWV4dC9vYmplY3QvdmFsaWQtY2FsbGFibGUiOjIwNiwiZXM1LWV4dC9vYmplY3QvdmFsaWQtdmFsdWUiOjIwOCwiZXM2LXN5bWJvbCI6MjIyfV0sMjE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImVzNS1leHQvZnVuY3Rpb24vaXMtYXJndW1lbnRzIiksYT10KCJlczUtZXh0L29iamVjdC9pcy12YWx1ZSIpLGk9dCgiZXM1LWV4dC9zdHJpbmcvaXMtc3RyaW5nIiksbz10KCJlczYtc3ltYm9sIikuaXRlcmF0b3Iscz1BcnJheS5pc0FycmF5O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hIWEodCkmJighIXModCl8fCghIWkodCl8fCghIW4odCl8fCJmdW5jdGlvbiI9PXR5cGVvZiB0W29dKSkpfX0seyJlczUtZXh0L2Z1bmN0aW9uL2lzLWFyZ3VtZW50cyI6MTgwLCJlczUtZXh0L29iamVjdC9pcy12YWx1ZSI6MTk3LCJlczUtZXh0L3N0cmluZy9pcy1zdHJpbmciOjIxMiwiZXM2LXN5bWJvbCI6MjIyfV0sMjE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGE9dCgiZXM1LWV4dC9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZiIpLGk9dCgiZCIpLG89dCgiZXM2LXN5bWJvbCIpLHM9dCgiLi8iKSxsPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtuPWUuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyIpO3Q9U3RyaW5nKHQpLHMuY2FsbCh0aGlzLHQpLGwodGhpcywiX19sZW5ndGhfXyIsaSgiIix0Lmxlbmd0aCkpfSxhJiZhKG4scyksZGVsZXRlIG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocy5wcm90b3R5cGUse19uZXh0OmkoZnVuY3Rpb24oKXtpZih0aGlzLl9fbGlzdF9fKXJldHVybiB0aGlzLl9fbmV4dEluZGV4X188dGhpcy5fX2xlbmd0aF9fP3RoaXMuX19uZXh0SW5kZXhfXysrOnZvaWQgdGhpcy5fdW5CaW5kKCl9KSxfcmVzb2x2ZTppKGZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5fX2xpc3RfX1t0XTtyZXR1cm4gdGhpcy5fX25leHRJbmRleF9fPT09dGhpcy5fX2xlbmd0aF9fP3I6KGU9ci5jaGFyQ29kZUF0KDApKT49NTUyOTYmJmU8PTU2MzE5P3IrdGhpcy5fX2xpc3RfX1t0aGlzLl9fbmV4dEluZGV4X18rK106cn0pfSksbChuLnByb3RvdHlwZSxvLnRvU3RyaW5nVGFnLGkoImMiLCJTdHJpbmcgSXRlcmF0b3IiKSl9LHsiLi8iOjIxNyxkOjE1MywiZXM1LWV4dC9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZiI6MjAzLCJlczYtc3ltYm9sIjoyMjJ9XSwyMjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pcy1pdGVyYWJsZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighbih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKHQrIiBpcyBub3QgaXRlcmFibGUiKTtyZXR1cm4gdH19LHsiLi9pcy1pdGVyYWJsZSI6MjE4fV0sMjIxOltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKG4sYSl7IWZ1bmN0aW9uKHQsbil7Im9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9mIGU/ZS5leHBvcnRzPW4oKTp0LkVTNlByb21pc2U9bigpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9dmFyIHI9QXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5OmZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9LGk9MCxvPXZvaWQgMCxzPXZvaWQgMCxsPWZ1bmN0aW9uKHQsZSl7Z1tpXT10LGdbaSsxXT1lLDI9PT0oaSs9MikmJihzP3Modik6XygpKX07dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCx1PWN8fHt9LGg9dS5NdXRhdGlvbk9ic2VydmVyfHx1LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsZj0idW5kZWZpbmVkIj09dHlwZW9mIHNlbGYmJiJ1bmRlZmluZWQiIT10eXBlb2YgbiYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChuKSxwPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbDtmdW5jdGlvbiBkKCl7dmFyIHQ9c2V0VGltZW91dDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh2LDEpfX12YXIgZz1uZXcgQXJyYXkoMWUzKTtmdW5jdGlvbiB2KCl7Zm9yKHZhciB0PTA7dDxpO3QrPTIpeygwLGdbdF0pKGdbdCsxXSksZ1t0XT12b2lkIDAsZ1t0KzFdPXZvaWQgMH1pPTB9dmFyIG0seSx4LGIsXz12b2lkIDA7ZnVuY3Rpb24gdyh0LGUpe3ZhciByPWFyZ3VtZW50cyxuPXRoaXMsYT1uZXcgdGhpcy5jb25zdHJ1Y3RvcihNKTt2b2lkIDA9PT1hW1RdJiZVKGEpO3ZhciBpLG89bi5fc3RhdGU7cmV0dXJuIG8/KGk9cltvLTFdLGwoZnVuY3Rpb24oKXtyZXR1cm4gaihvLGEsaSxuLl9yZXN1bHQpfSkpOlIobixhLHQsZSksYX1mdW5jdGlvbiBrKHQpe2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3Rvcj09PXRoaXMpcmV0dXJuIHQ7dmFyIGU9bmV3IHRoaXMoTSk7cmV0dXJuIE8oZSx0KSxlfWY/Xz1mdW5jdGlvbigpe3JldHVybiBuLm5leHRUaWNrKHYpfTpoPyh5PTAseD1uZXcgaCh2KSxiPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSx4Lm9ic2VydmUoYix7Y2hhcmFjdGVyRGF0YTohMH0pLF89ZnVuY3Rpb24oKXtiLmRhdGE9eT0rK3klMn0pOnA/KChtPW5ldyBNZXNzYWdlQ2hhbm5lbCkucG9ydDEub25tZXNzYWdlPXYsXz1mdW5jdGlvbigpe3JldHVybiBtLnBvcnQyLnBvc3RNZXNzYWdlKDApfSk6Xz12b2lkIDA9PT1jJiYiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbigpe3RyeXt2YXIgZT10KCJ2ZXJ0eCIpO3JldHVybiBvPWUucnVuT25Mb29wfHxlLnJ1bk9uQ29udGV4dCxmdW5jdGlvbigpe28odil9fWNhdGNoKHQpe3JldHVybiBkKCl9fSgpOmQoKTt2YXIgVD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMTYpO2Z1bmN0aW9uIE0oKXt9dmFyIEE9dm9pZCAwLFM9MSxFPTIsTD1uZXcgQjtmdW5jdGlvbiBDKHQpe3RyeXtyZXR1cm4gdC50aGVufWNhdGNoKHQpe3JldHVybiBMLmVycm9yPXQsTH19ZnVuY3Rpb24gUCh0LHIsbil7ci5jb25zdHJ1Y3Rvcj09PXQuY29uc3RydWN0b3ImJm49PT13JiZyLmNvbnN0cnVjdG9yLnJlc29sdmU9PT1rP2Z1bmN0aW9uKHQsZSl7ZS5fc3RhdGU9PT1TP0kodCxlLl9yZXN1bHQpOmUuX3N0YXRlPT09RT9EKHQsZS5fcmVzdWx0KTpSKGUsdm9pZCAwLGZ1bmN0aW9uKGUpe3JldHVybiBPKHQsZSl9LGZ1bmN0aW9uKGUpe3JldHVybiBEKHQsZSl9KX0odCxyKTpuPT09TD9EKHQsTC5lcnJvcik6dm9pZCAwPT09bj9JKHQscik6ZShuKT9mdW5jdGlvbih0LGUscil7bChmdW5jdGlvbih0KXt2YXIgbj0hMSxhPWZ1bmN0aW9uKHQsZSxyLG4pe3RyeXt0LmNhbGwoZSxyLG4pfWNhdGNoKHQpe3JldHVybiB0fX0ocixlLGZ1bmN0aW9uKHIpe258fChuPSEwLGUhPT1yP08odCxyKTpJKHQscikpfSxmdW5jdGlvbihlKXtufHwobj0hMCxEKHQsZSkpfSx0Ll9sYWJlbCk7IW4mJmEmJihuPSEwLEQodCxhKSl9LHQpfSh0LHIsbik6SSh0LHIpfWZ1bmN0aW9uIE8odCxlKXt2YXIgcjt0PT09ZT9EKHQsbmV3IFR5cGVFcnJvcigiWW91IGNhbm5vdCByZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGl0c2VsZiIpKToiZnVuY3Rpb24iPT10eXBlb2Yocj1lKXx8Im9iamVjdCI9PXR5cGVvZiByJiZudWxsIT09cj9QKHQsZSxDKGUpKTpJKHQsZSl9ZnVuY3Rpb24geih0KXt0Ll9vbmVycm9yJiZ0Ll9vbmVycm9yKHQuX3Jlc3VsdCksRih0KX1mdW5jdGlvbiBJKHQsZSl7dC5fc3RhdGU9PT1BJiYodC5fcmVzdWx0PWUsdC5fc3RhdGU9UywwIT09dC5fc3Vic2NyaWJlcnMubGVuZ3RoJiZsKEYsdCkpfWZ1bmN0aW9uIEQodCxlKXt0Ll9zdGF0ZT09PUEmJih0Ll9zdGF0ZT1FLHQuX3Jlc3VsdD1lLGwoeix0KSl9ZnVuY3Rpb24gUih0LGUscixuKXt2YXIgYT10Ll9zdWJzY3JpYmVycyxpPWEubGVuZ3RoO3QuX29uZXJyb3I9bnVsbCxhW2ldPWUsYVtpK1NdPXIsYVtpK0VdPW4sMD09PWkmJnQuX3N0YXRlJiZsKEYsdCl9ZnVuY3Rpb24gRih0KXt2YXIgZT10Ll9zdWJzY3JpYmVycyxyPXQuX3N0YXRlO2lmKDAhPT1lLmxlbmd0aCl7Zm9yKHZhciBuPXZvaWQgMCxhPXZvaWQgMCxpPXQuX3Jlc3VsdCxvPTA7bzxlLmxlbmd0aDtvKz0zKW49ZVtvXSxhPWVbbytyXSxuP2oocixuLGEsaSk6YShpKTt0Ll9zdWJzY3JpYmVycy5sZW5ndGg9MH19ZnVuY3Rpb24gQigpe3RoaXMuZXJyb3I9bnVsbH12YXIgTj1uZXcgQjtmdW5jdGlvbiBqKHQscixuLGEpe3ZhciBpPWUobiksbz12b2lkIDAscz12b2lkIDAsbD12b2lkIDAsYz12b2lkIDA7aWYoaSl7aWYoKG89ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHQoZSl9Y2F0Y2godCl7cmV0dXJuIE4uZXJyb3I9dCxOfX0obixhKSk9PT1OPyhjPSEwLHM9by5lcnJvcixvPW51bGwpOmw9ITAscj09PW8pcmV0dXJuIHZvaWQgRChyLG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZXMgY2FsbGJhY2sgY2Fubm90IHJldHVybiB0aGF0IHNhbWUgcHJvbWlzZS4iKSl9ZWxzZSBvPWEsbD0hMDtyLl9zdGF0ZSE9PUF8fChpJiZsP08ocixvKTpjP0QocixzKTp0PT09Uz9JKHIsbyk6dD09PUUmJkQocixvKSl9dmFyIFY9MDtmdW5jdGlvbiBVKHQpe3RbVF09VisrLHQuX3N0YXRlPXZvaWQgMCx0Ll9yZXN1bHQ9dm9pZCAwLHQuX3N1YnNjcmliZXJzPVtdfWZ1bmN0aW9uIHEodCxlKXt0aGlzLl9pbnN0YW5jZUNvbnN0cnVjdG9yPXQsdGhpcy5wcm9taXNlPW5ldyB0KE0pLHRoaXMucHJvbWlzZVtUXXx8VSh0aGlzLnByb21pc2UpLHIoZSk/KHRoaXMuX2lucHV0PWUsdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5fcmVtYWluaW5nPWUubGVuZ3RoLHRoaXMuX3Jlc3VsdD1uZXcgQXJyYXkodGhpcy5sZW5ndGgpLDA9PT10aGlzLmxlbmd0aD9JKHRoaXMucHJvbWlzZSx0aGlzLl9yZXN1bHQpOih0aGlzLmxlbmd0aD10aGlzLmxlbmd0aHx8MCx0aGlzLl9lbnVtZXJhdGUoKSwwPT09dGhpcy5fcmVtYWluaW5nJiZJKHRoaXMucHJvbWlzZSx0aGlzLl9yZXN1bHQpKSk6RCh0aGlzLnByb21pc2UsbmV3IEVycm9yKCJBcnJheSBNZXRob2RzIG11c3QgYmUgcHJvdmlkZWQgYW4gQXJyYXkiKSl9ZnVuY3Rpb24gSCh0KXt0aGlzW1RdPVYrKyx0aGlzLl9yZXN1bHQ9dGhpcy5fc3RhdGU9dm9pZCAwLHRoaXMuX3N1YnNjcmliZXJzPVtdLE0hPT10JiYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJmZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IG11c3QgcGFzcyBhIHJlc29sdmVyIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgcHJvbWlzZSBjb25zdHJ1Y3RvciIpfSgpLHRoaXMgaW5zdGFuY2VvZiBIP2Z1bmN0aW9uKHQsZSl7dHJ5e2UoZnVuY3Rpb24oZSl7Tyh0LGUpfSxmdW5jdGlvbihlKXtEKHQsZSl9KX1jYXRjaChlKXtEKHQsZSl9fSh0aGlzLHQpOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUHJvbWlzZSc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIil9KCkpfWZ1bmN0aW9uIEcoKXt2YXIgdD12b2lkIDA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhKXQ9YTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZil0PXNlbGY7ZWxzZSB0cnl7dD1GdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcigicG9seWZpbGwgZmFpbGVkIGJlY2F1c2UgZ2xvYmFsIG9iamVjdCBpcyB1bmF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50Iil9dmFyIGU9dC5Qcm9taXNlO2lmKGUpe3ZhciByPW51bGw7dHJ5e3I9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUucmVzb2x2ZSgpKX1jYXRjaCh0KXt9aWYoIltvYmplY3QgUHJvbWlzZV0iPT09ciYmIWUuY2FzdClyZXR1cm59dC5Qcm9taXNlPUh9cmV0dXJuIHEucHJvdG90eXBlLl9lbnVtZXJhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5sZW5ndGgsZT10aGlzLl9pbnB1dCxyPTA7dGhpcy5fc3RhdGU9PT1BJiZyPHQ7cisrKXRoaXMuX2VhY2hFbnRyeShlW3JdLHIpfSxxLnByb3RvdHlwZS5fZWFjaEVudHJ5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5faW5zdGFuY2VDb25zdHJ1Y3RvcixuPXIucmVzb2x2ZTtpZihuPT09ayl7dmFyIGE9Qyh0KTtpZihhPT09dyYmdC5fc3RhdGUhPT1BKXRoaXMuX3NldHRsZWRBdCh0Ll9zdGF0ZSxlLHQuX3Jlc3VsdCk7ZWxzZSBpZigiZnVuY3Rpb24iIT10eXBlb2YgYSl0aGlzLl9yZW1haW5pbmctLSx0aGlzLl9yZXN1bHRbZV09dDtlbHNlIGlmKHI9PT1IKXt2YXIgaT1uZXcgcihNKTtQKGksdCxhKSx0aGlzLl93aWxsU2V0dGxlQXQoaSxlKX1lbHNlIHRoaXMuX3dpbGxTZXR0bGVBdChuZXcgcihmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pLGUpfWVsc2UgdGhpcy5fd2lsbFNldHRsZUF0KG4odCksZSl9LHEucHJvdG90eXBlLl9zZXR0bGVkQXQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMucHJvbWlzZTtuLl9zdGF0ZT09PUEmJih0aGlzLl9yZW1haW5pbmctLSx0PT09RT9EKG4scik6dGhpcy5fcmVzdWx0W2VdPXIpLDA9PT10aGlzLl9yZW1haW5pbmcmJkkobix0aGlzLl9yZXN1bHQpfSxxLnByb3RvdHlwZS5fd2lsbFNldHRsZUF0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztSKHQsdm9pZCAwLGZ1bmN0aW9uKHQpe3JldHVybiByLl9zZXR0bGVkQXQoUyxlLHQpfSxmdW5jdGlvbih0KXtyZXR1cm4gci5fc2V0dGxlZEF0KEUsZSx0KX0pfSxILmFsbD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHEodGhpcyx0KS5wcm9taXNlfSxILnJhY2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gcih0KT9uZXcgZShmdW5jdGlvbihyLG4pe2Zvcih2YXIgYT10Lmxlbmd0aCxpPTA7aTxhO2krKyllLnJlc29sdmUodFtpXSkudGhlbihyLG4pfSk6bmV3IGUoZnVuY3Rpb24odCxlKXtyZXR1cm4gZShuZXcgVHlwZUVycm9yKCJZb3UgbXVzdCBwYXNzIGFuIGFycmF5IHRvIHJhY2UuIikpfSl9LEgucmVzb2x2ZT1rLEgucmVqZWN0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyB0aGlzKE0pO3JldHVybiBEKGUsdCksZX0sSC5fc2V0U2NoZWR1bGVyPWZ1bmN0aW9uKHQpe3M9dH0sSC5fc2V0QXNhcD1mdW5jdGlvbih0KXtsPXR9LEguX2FzYXA9bCxILnByb3RvdHlwZT17Y29uc3RydWN0b3I6SCx0aGVuOncsY2F0Y2g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbihudWxsLHQpfX0sRygpLEgucG9seWZpbGw9RyxILlByb21pc2U9SCxIfSl9KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se19wcm9jZXNzOjQ4NH1dLDIyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9pcy1pbXBsZW1lbnRlZCIpKCk/U3ltYm9sOnQoIi4vcG9seWZpbGwiKX0seyIuL2lzLWltcGxlbWVudGVkIjoyMjMsIi4vcG9seWZpbGwiOjIyNX1dLDIyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17b2JqZWN0OiEwLHN5bWJvbDohMH07ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFN5bWJvbClyZXR1cm4hMTt0PVN5bWJvbCgidGVzdCBzeW1ib2wiKTt0cnl7U3RyaW5nKHQpfWNhdGNoKHQpe3JldHVybiExfXJldHVybiEhblt0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXSYmKCEhblt0eXBlb2YgU3ltYm9sLnRvUHJpbWl0aXZlXSYmISFuW3R5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWddKX19LHt9XSwyMjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiEhdCYmKCJzeW1ib2wiPT10eXBlb2YgdHx8ISF0LmNvbnN0cnVjdG9yJiYoIlN5bWJvbCI9PT10LmNvbnN0cnVjdG9yLm5hbWUmJiJTeW1ib2wiPT09dFt0LmNvbnN0cnVjdG9yLnRvU3RyaW5nVGFnXSkpfX0se31dLDIyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhLGksbyxzPXQoImQiKSxsPXQoIi4vdmFsaWRhdGUtc3ltYm9sIiksYz1PYmplY3QuY3JlYXRlLHU9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsaD1PYmplY3QuZGVmaW5lUHJvcGVydHksZj1PYmplY3QucHJvdG90eXBlLHA9YyhudWxsKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sKXtuPVN5bWJvbDt0cnl7U3RyaW5nKG4oKSksbz0hMH1jYXRjaCh0KXt9fXZhciBkLGc9KGQ9YyhudWxsKSxmdW5jdGlvbih0KXtmb3IodmFyIGUscixuPTA7ZFt0KyhufHwiIildOykrK247cmV0dXJuIGRbdCs9bnx8IiJdPSEwLGgoZixlPSJAQCIrdCxzLmdzKG51bGwsZnVuY3Rpb24odCl7cnx8KHI9ITAsaCh0aGlzLGUscyh0KSkscj0hMSl9KSksZX0pO2k9ZnVuY3Rpb24odCl7aWYodGhpcyBpbnN0YW5jZW9mIGkpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7cmV0dXJuIGEodCl9LGUuZXhwb3J0cz1hPWZ1bmN0aW9uIHQoZSl7dmFyIHI7aWYodGhpcyBpbnN0YW5jZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7cmV0dXJuIG8/bihlKToocj1jKGkucHJvdG90eXBlKSxlPXZvaWQgMD09PWU/IiI6U3RyaW5nKGUpLHUocix7X19kZXNjcmlwdGlvbl9fOnMoIiIsZSksX19uYW1lX186cygiIixnKGUpKX0pKX0sdShhLHtmb3I6cyhmdW5jdGlvbih0KXtyZXR1cm4gcFt0XT9wW3RdOnBbdF09YShTdHJpbmcodCkpfSksa2V5Rm9yOnMoZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGUgaW4gbCh0KSxwKWlmKHBbZV09PT10KXJldHVybiBlfSksaGFzSW5zdGFuY2U6cygiIixuJiZuLmhhc0luc3RhbmNlfHxhKCJoYXNJbnN0YW5jZSIpKSxpc0NvbmNhdFNwcmVhZGFibGU6cygiIixuJiZuLmlzQ29uY2F0U3ByZWFkYWJsZXx8YSgiaXNDb25jYXRTcHJlYWRhYmxlIikpLGl0ZXJhdG9yOnMoIiIsbiYmbi5pdGVyYXRvcnx8YSgiaXRlcmF0b3IiKSksbWF0Y2g6cygiIixuJiZuLm1hdGNofHxhKCJtYXRjaCIpKSxyZXBsYWNlOnMoIiIsbiYmbi5yZXBsYWNlfHxhKCJyZXBsYWNlIikpLHNlYXJjaDpzKCIiLG4mJm4uc2VhcmNofHxhKCJzZWFyY2giKSksc3BlY2llczpzKCIiLG4mJm4uc3BlY2llc3x8YSgic3BlY2llcyIpKSxzcGxpdDpzKCIiLG4mJm4uc3BsaXR8fGEoInNwbGl0IikpLHRvUHJpbWl0aXZlOnMoIiIsbiYmbi50b1ByaW1pdGl2ZXx8YSgidG9QcmltaXRpdmUiKSksdG9TdHJpbmdUYWc6cygiIixuJiZuLnRvU3RyaW5nVGFnfHxhKCJ0b1N0cmluZ1RhZyIpKSx1bnNjb3BhYmxlczpzKCIiLG4mJm4udW5zY29wYWJsZXN8fGEoInVuc2NvcGFibGVzIikpfSksdShpLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6cyhhKSx0b1N0cmluZzpzKCIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19uYW1lX199KX0pLHUoYS5wcm90b3R5cGUse3RvU3RyaW5nOnMoZnVuY3Rpb24oKXtyZXR1cm4iU3ltYm9sICgiK2wodGhpcykuX19kZXNjcmlwdGlvbl9fKyIpIn0pLHZhbHVlT2Y6cyhmdW5jdGlvbigpe3JldHVybiBsKHRoaXMpfSl9KSxoKGEucHJvdG90eXBlLGEudG9QcmltaXRpdmUscygiIixmdW5jdGlvbigpe3ZhciB0PWwodGhpcyk7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6dC50b1N0cmluZygpfSkpLGgoYS5wcm90b3R5cGUsYS50b1N0cmluZ1RhZyxzKCJjIiwiU3ltYm9sIikpLGgoaS5wcm90b3R5cGUsYS50b1N0cmluZ1RhZyxzKCJjIixhLnByb3RvdHlwZVthLnRvU3RyaW5nVGFnXSkpLGgoaS5wcm90b3R5cGUsYS50b1ByaW1pdGl2ZSxzKCJjIixhLnByb3RvdHlwZVthLnRvUHJpbWl0aXZlXSkpfSx7Ii4vdmFsaWRhdGUtc3ltYm9sIjoyMjYsZDoxNTN9XSwyMjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pcy1zeW1ib2wiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgc3ltYm9sIik7cmV0dXJuIHR9fSx7Ii4vaXMtc3ltYm9sIjoyMjR9XSwyMjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lfHwwLGE9cnx8MTtyZXR1cm5bW3RbMTJdK3RbMF0sdFsxM10rdFsxXSx0WzE0XSt0WzJdLHRbMTVdK3RbM11dLFt0WzEyXS10WzBdLHRbMTNdLXRbMV0sdFsxNF0tdFsyXSx0WzE1XS10WzNdXSxbdFsxMl0rdFs0XSx0WzEzXSt0WzVdLHRbMTRdK3RbNl0sdFsxNV0rdFs3XV0sW3RbMTJdLXRbNF0sdFsxM10tdFs1XSx0WzE0XS10WzZdLHRbMTVdLXRbN11dLFtuKnRbMTJdK3RbOF0sbip0WzEzXSt0WzldLG4qdFsxNF0rdFsxMF0sbip0WzE1XSt0WzExXV0sW2EqdFsxMl0tdFs4XSxhKnRbMTNdLXRbOV0sYSp0WzE0XS10WzEwXSxhKnRbMTVdLXRbMTFdXV19fSx7fV0sMjI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImlzLXN0cmluZy1ibGFuayIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgdDtpZigic3RyaW5nIj09PWUpe3ZhciByPXQ7aWYoMD09PSh0PSt0KSYmbihyKSlyZXR1cm4hMX1lbHNlIGlmKCJudW1iZXIiIT09ZSlyZXR1cm4hMTtyZXR1cm4gdC10PDF9fSx7ImlzLXN0cmluZy1ibGFuayI6NDI1fV0sMjI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IG8oWzBdLFswXSwwKTtjYXNlIDE6aWYoIm51bWJlciI9PXR5cGVvZiB0KXt2YXIgbj1sKHQpO3JldHVybiBuZXcgbyhuLG4sMCl9cmV0dXJuIG5ldyBvKHQsbCh0Lmxlbmd0aCksMCk7Y2FzZSAyOmlmKCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIG49bCh0Lmxlbmd0aCk7cmV0dXJuIG5ldyBvKHQsbiwrZSl9cj0wO2Nhc2UgMzppZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigic3RhdGUgYW5kIHZlbG9jaXR5IGxlbmd0aHMgbXVzdCBtYXRjaCIpO3JldHVybiBuZXcgbyh0LGUscil9fTt2YXIgbj10KCJjdWJpYy1oZXJtaXRlIiksYT10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpO2Z1bmN0aW9uIGkodCxlLHIpe3JldHVybiBNYXRoLm1pbihlLE1hdGgubWF4KHQscikpfWZ1bmN0aW9uIG8odCxlLHIpe3RoaXMuZGltZW5zaW9uPXQubGVuZ3RoLHRoaXMuYm91bmRzPVtuZXcgQXJyYXkodGhpcy5kaW1lbnNpb24pLG5ldyBBcnJheSh0aGlzLmRpbWVuc2lvbildO2Zvcih2YXIgbj0wO248dGhpcy5kaW1lbnNpb247KytuKXRoaXMuYm91bmRzWzBdW25dPS0xLzAsdGhpcy5ib3VuZHNbMV1bbl09MS8wO3RoaXMuX3N0YXRlPXQuc2xpY2UoKS5yZXZlcnNlKCksdGhpcy5fdmVsb2NpdHk9ZS5zbGljZSgpLnJldmVyc2UoKSx0aGlzLl90aW1lPVtyXSx0aGlzLl9zY3JhdGNoPVt0LnNsaWNlKCksdC5zbGljZSgpLHQuc2xpY2UoKSx0LnNsaWNlKCksdC5zbGljZSgpXX12YXIgcz1vLnByb3RvdHlwZTtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfXMuZmx1c2g9ZnVuY3Rpb24odCl7dmFyIGU9YS5ndCh0aGlzLl90aW1lLHQpLTE7ZTw9MHx8KHRoaXMuX3RpbWUuc3BsaWNlKDAsZSksdGhpcy5fc3RhdGUuc3BsaWNlKDAsZSp0aGlzLmRpbWVuc2lvbiksdGhpcy5fdmVsb2NpdHkuc3BsaWNlKDAsZSp0aGlzLmRpbWVuc2lvbikpfSxzLmN1cnZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbWUscj1lLmxlbmd0aCxvPWEubGUoZSx0KSxzPXRoaXMuX3NjcmF0Y2hbMF0sbD10aGlzLl9zdGF0ZSxjPXRoaXMuX3ZlbG9jaXR5LHU9dGhpcy5kaW1lbnNpb24saD10aGlzLmJvdW5kcztpZihvPDApZm9yKHZhciBmPXUtMSxwPTA7cDx1OysrcCwtLWYpc1twXT1sW2ZdO2Vsc2UgaWYobz49ci0xKXtmPWwubGVuZ3RoLTE7dmFyIGQ9dC1lW3ItMV07Zm9yKHA9MDtwPHU7KytwLC0tZilzW3BdPWxbZl0rZCpjW2ZdfWVsc2V7Zj11KihvKzEpLTE7dmFyIGc9ZVtvXSx2PWVbbysxXS1nfHwxLG09dGhpcy5fc2NyYXRjaFsxXSx5PXRoaXMuX3NjcmF0Y2hbMl0seD10aGlzLl9zY3JhdGNoWzNdLGI9dGhpcy5fc2NyYXRjaFs0XSxfPSEwO2ZvcihwPTA7cDx1OysrcCwtLWYpbVtwXT1sW2ZdLHhbcF09Y1tmXSp2LHlbcF09bFtmK3VdLGJbcF09Y1tmK3VdKnYsXz1fJiZtW3BdPT09eVtwXSYmeFtwXT09PWJbcF0mJjA9PT14W3BdO2lmKF8pZm9yKHA9MDtwPHU7KytwKXNbcF09bVtwXTtlbHNlIG4obSx4LHksYiwodC1nKS92LHMpfXZhciB3PWhbMF0saz1oWzFdO2ZvcihwPTA7cDx1OysrcClzW3BdPWkod1twXSxrW3BdLHNbcF0pO3JldHVybiBzfSxzLmRjdXJ2ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aW1lLHI9ZS5sZW5ndGgsaT1hLmxlKGUsdCksbz10aGlzLl9zY3JhdGNoWzBdLHM9dGhpcy5fc3RhdGUsbD10aGlzLl92ZWxvY2l0eSxjPXRoaXMuZGltZW5zaW9uO2lmKGk+PXItMSlmb3IodmFyIHU9cy5sZW5ndGgtMSxoPShlW3ItMV0sMCk7aDxjOysraCwtLXUpb1toXT1sW3VdO2Vsc2V7dT1jKihpKzEpLTE7dmFyIGY9ZVtpXSxwPWVbaSsxXS1mfHwxLGQ9dGhpcy5fc2NyYXRjaFsxXSxnPXRoaXMuX3NjcmF0Y2hbMl0sdj10aGlzLl9zY3JhdGNoWzNdLG09dGhpcy5fc2NyYXRjaFs0XSx5PSEwO2ZvcihoPTA7aDxjOysraCwtLXUpZFtoXT1zW3VdLHZbaF09bFt1XSpwLGdbaF09c1t1K2NdLG1baF09bFt1K2NdKnAseT15JiZkW2hdPT09Z1toXSYmdltoXT09PW1baF0mJjA9PT12W2hdO2lmKHkpZm9yKGg9MDtoPGM7KytoKW9baF09MDtlbHNle24uZGVyaXZhdGl2ZShkLHYsZyxtLCh0LWYpL3Asbyk7Zm9yKGg9MDtoPGM7KytoKW9baF0vPXB9fXJldHVybiBvfSxzLmxhc3RUPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGltZTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX0scy5zdGFibGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fdmVsb2NpdHksZT10Lmxlbmd0aCxyPXRoaXMuZGltZW5zaW9uLTE7cj49MDstLXIpaWYodFstLWVdKXJldHVybiExO3JldHVybiEwfSxzLmp1bXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0VCgpLHI9dGhpcy5kaW1lbnNpb247aWYoISh0PGV8fGFyZ3VtZW50cy5sZW5ndGghPT1yKzEpKXt2YXIgbj10aGlzLl9zdGF0ZSxhPXRoaXMuX3ZlbG9jaXR5LG89bi5sZW5ndGgtdGhpcy5kaW1lbnNpb24scz10aGlzLmJvdW5kcyxsPXNbMF0sYz1zWzFdO3RoaXMuX3RpbWUucHVzaChlLHQpO2Zvcih2YXIgdT0wO3U8MjsrK3UpZm9yKHZhciBoPTA7aDxyOysraCluLnB1c2gobltvKytdKSxhLnB1c2goMCk7dGhpcy5fdGltZS5wdXNoKHQpO2ZvcihoPXI7aD4wOy0taCluLnB1c2goaShsW2gtMV0sY1toLTFdLGFyZ3VtZW50c1toXSkpLGEucHVzaCgwKX19LHMucHVzaD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUKCkscj10aGlzLmRpbWVuc2lvbjtpZighKHQ8ZXx8YXJndW1lbnRzLmxlbmd0aCE9PXIrMSkpe3ZhciBuPXRoaXMuX3N0YXRlLGE9dGhpcy5fdmVsb2NpdHksbz1uLmxlbmd0aC10aGlzLmRpbWVuc2lvbixzPXQtZSxsPXRoaXMuYm91bmRzLGM9bFswXSx1PWxbMV0saD1zPjFlLTY/MS9zOjA7dGhpcy5fdGltZS5wdXNoKHQpO2Zvcih2YXIgZj1yO2Y+MDstLWYpe3ZhciBwPWkoY1tmLTFdLHVbZi0xXSxhcmd1bWVudHNbZl0pO24ucHVzaChwKSxhLnB1c2goKHAtbltvKytdKSpoKX19fSxzLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRpbWVuc2lvbjtpZighKHQ8dGhpcy5sYXN0VCgpfHxhcmd1bWVudHMubGVuZ3RoIT09ZSsxKSl7dmFyIHI9dGhpcy5fc3RhdGUsbj10aGlzLl92ZWxvY2l0eSxhPXRoaXMuYm91bmRzLG89YVswXSxzPWFbMV07dGhpcy5fdGltZS5wdXNoKHQpO2Zvcih2YXIgbD1lO2w+MDstLWwpci5wdXNoKGkob1tsLTFdLHNbbC0xXSxhcmd1bWVudHNbbF0pKSxuLnB1c2goMCl9fSxzLm1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0VCgpLHI9dGhpcy5kaW1lbnNpb247aWYoISh0PD1lfHxhcmd1bWVudHMubGVuZ3RoIT09cisxKSl7dmFyIG49dGhpcy5fc3RhdGUsYT10aGlzLl92ZWxvY2l0eSxvPW4ubGVuZ3RoLXRoaXMuZGltZW5zaW9uLHM9dGhpcy5ib3VuZHMsbD1zWzBdLGM9c1sxXSx1PXQtZSxoPXU+MWUtNj8xL3U6MDt0aGlzLl90aW1lLnB1c2godCk7Zm9yKHZhciBmPXI7Zj4wOy0tZil7dmFyIHA9YXJndW1lbnRzW2ZdO24ucHVzaChpKGxbZi0xXSxjW2YtMV0sbltvKytdK3ApKSxhLnB1c2gocCpoKX19fSxzLmlkbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0VCgpO2lmKCEodDxlKSl7dmFyIHI9dGhpcy5kaW1lbnNpb24sbj10aGlzLl9zdGF0ZSxhPXRoaXMuX3ZlbG9jaXR5LG89bi5sZW5ndGgtcixzPXRoaXMuYm91bmRzLGw9c1swXSxjPXNbMV0sdT10LWU7dGhpcy5fdGltZS5wdXNoKHQpO2Zvcih2YXIgaD1yLTE7aD49MDstLWgpbi5wdXNoKGkobFtoXSxjW2hdLG5bb10rdSphW29dKSksYS5wdXNoKDApLG8rPTF9fX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6OTMsImN1YmljLWhlcm1pdGUiOjE0N31dLDIzMDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImR0eXBlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJtdXN0IHNwZWNpZnkgZGF0YSBhcyBmaXJzdCBwYXJhbWV0ZXIiKTtpZihyPTB8KyhyfHwwKSxBcnJheS5pc0FycmF5KHQpJiZ0WzBdJiYibnVtYmVyIj09dHlwZW9mIHRbMF1bMF0pe3ZhciBhLGksbyxzLGw9dFswXS5sZW5ndGgsYz10Lmxlbmd0aCpsO2UmJiJzdHJpbmciIT10eXBlb2YgZXx8KGU9bmV3KG4oZXx8ImZsb2F0MzIiKSkoYytyKSk7dmFyIHU9ZS5sZW5ndGgtcjtpZihjIT09dSl0aHJvdyBuZXcgRXJyb3IoInNvdXJjZSBsZW5ndGggIitjKyIgKCIrbCsieCIrdC5sZW5ndGgrIikgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gbGVuZ3RoICIrdSk7Zm9yKGE9MCxvPXI7YTx0Lmxlbmd0aDthKyspZm9yKGk9MDtpPGw7aSsrKWVbbysrXT1udWxsPT09dFthXVtpXT9OYU46dFthXVtpXX1lbHNlIGlmKGUmJiJzdHJpbmciIT10eXBlb2YgZSllLnNldCh0LHIpO2Vsc2V7dmFyIGg9bihlfHwiZmxvYXQzMiIpO2lmKEFycmF5LmlzQXJyYXkodCl8fCJhcnJheSI9PT1lKWZvcihlPW5ldyBoKHQubGVuZ3RoK3IpLGE9MCxvPXIscz1lLmxlbmd0aDtvPHM7bysrLGErKyllW29dPW51bGw9PT10W2FdP05hTjp0W2FdO2Vsc2UgMD09PXI/ZT1uZXcgaCh0KTooZT1uZXcgaCh0Lmxlbmd0aCtyKSkuc2V0KHQscil9cmV0dXJuIGV9fSx7ZHR5cGU6MTcxfV0sMjMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNzcy1mb250L3N0cmluZ2lmeSIpLGE9WzMyLDEyNl07ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPSh0PXR8fHt9KS5zaGFwZT90LnNoYXBlOnQuY2FudmFzP1t0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHRdOls1MTIsNTEyXSxyPXQuY2FudmFzfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxpPXQuZm9udCxvPSJudW1iZXIiPT10eXBlb2YgdC5zdGVwP1t0LnN0ZXAsdC5zdGVwXTp0LnN0ZXB8fFszMiwzMl0scz10LmNoYXJzfHxhO2kmJiJzdHJpbmciIT10eXBlb2YgaSYmKGk9bihpKSk7aWYoQXJyYXkuaXNBcnJheShzKSl7aWYoMj09PXMubGVuZ3RoJiYibnVtYmVyIj09dHlwZW9mIHNbMF0mJiJudW1iZXIiPT10eXBlb2Ygc1sxXSl7Zm9yKHZhciBsPVtdLGM9c1swXSx1PTA7Yzw9c1sxXTtjKyspbFt1KytdPVN0cmluZy5mcm9tQ2hhckNvZGUoYyk7cz1sfX1lbHNlIHM9U3RyaW5nKHMpLnNwbGl0KCIiKTtlPWUuc2xpY2UoKSxyLndpZHRoPWVbMF0sci5oZWlnaHQ9ZVsxXTt2YXIgaD1yLmdldENvbnRleHQoIjJkIik7aC5maWxsU3R5bGU9IiMwMDAiLGguZmlsbFJlY3QoMCwwLHIud2lkdGgsci5oZWlnaHQpLGguZm9udD1pLGgudGV4dEFsaWduPSJjZW50ZXIiLGgudGV4dEJhc2VsaW5lPSJtaWRkbGUiLGguZmlsbFN0eWxlPSIjZmZmIjtmb3IodmFyIGY9b1swXS8yLHA9b1sxXS8yLGM9MDtjPHMubGVuZ3RoO2MrKyloLmZpbGxUZXh0KHNbY10sZixwKSwoZis9b1swXSk+ZVswXS1vWzBdLzImJihmPW9bMF0vMixwKz1vWzFdKTtyZXR1cm4gcn19LHsiY3NzLWZvbnQvc3RyaW5naWZ5IjoxNDR9XSwyMzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe2V8fChlPXt9KSwoInN0cmluZyI9PXR5cGVvZiB0fHxBcnJheS5pc0FycmF5KHQpKSYmKGUuZmFtaWx5PXQpO3ZhciByPUFycmF5LmlzQXJyYXkoZS5mYW1pbHkpP2UuZmFtaWx5LmpvaW4oIiwgIik6ZS5mYW1pbHk7aWYoIXIpdGhyb3cgRXJyb3IoImBmYW1pbHlgIG11c3QgYmUgZGVmaW5lZCIpO3ZhciBzPWUuc2l6ZXx8ZS5mb250U2l6ZXx8ZS5lbXx8NDgsbD1lLndlaWdodHx8ZS5mb250V2VpZ2h0fHwiIixjPSh0PVtlLnN0eWxlfHxlLmZvbnRTdHlsZXx8IiIsbCxzXS5qb2luKCIgIikrInB4ICIrcixlLm9yaWdpbnx8InRvcCIpO2lmKG4uY2FjaGVbcl0mJnM8PW4uY2FjaGVbcl0uZW0pcmV0dXJuIGEobi5jYWNoZVtyXSxjKTt2YXIgdT1lLmNhbnZhc3x8bi5jYW52YXMsaD11LmdldENvbnRleHQoIjJkIiksZj17dXBwZXI6dm9pZCAwIT09ZS51cHBlcj9lLnVwcGVyOiJIIixsb3dlcjp2b2lkIDAhPT1lLmxvd2VyP2UubG93ZXI6IngiLGRlc2NlbnQ6dm9pZCAwIT09ZS5kZXNjZW50P2UuZGVzY2VudDoicCIsYXNjZW50OnZvaWQgMCE9PWUuYXNjZW50P2UuYXNjZW50OiJoIix0aXR0bGU6dm9pZCAwIT09ZS50aXR0bGU/ZS50aXR0bGU6ImkiLG92ZXJzaG9vdDp2b2lkIDAhPT1lLm92ZXJzaG9vdD9lLm92ZXJzaG9vdDoiTyJ9LHA9TWF0aC5jZWlsKDEuNSpzKTt1LmhlaWdodD1wLHUud2lkdGg9LjUqcCxoLmZvbnQ9dDt2YXIgZD17dG9wOjB9O2guY2xlYXJSZWN0KDAsMCxwLHApLGgudGV4dEJhc2VsaW5lPSJ0b3AiLGguZmlsbFN0eWxlPSJibGFjayIsaC5maWxsVGV4dCgiSCIsMCwwKTt2YXIgZz1pKGguZ2V0SW1hZ2VEYXRhKDAsMCxwLHApKTtoLmNsZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGluZT0iYm90dG9tIixoLmZpbGxUZXh0KCJIIiwwLHApO3ZhciB2PWkoaC5nZXRJbWFnZURhdGEoMCwwLHAscCkpO2QubGluZUhlaWdodD1kLmJvdHRvbT1wLXYrZyxoLmNsZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGluZT0iYWxwaGFiZXRpYyIsaC5maWxsVGV4dCgiSCIsMCxwKTt2YXIgbT1wLWkoaC5nZXRJbWFnZURhdGEoMCwwLHAscCkpLTErZztkLmJhc2VsaW5lPWQuYWxwaGFiZXRpYz1tLGguY2xlYXJSZWN0KDAsMCxwLHApLGgudGV4dEJhc2VsaW5lPSJtaWRkbGUiLGguZmlsbFRleHQoIkgiLDAsLjUqcCk7dmFyIHk9aShoLmdldEltYWdlRGF0YSgwLDAscCxwKSk7ZC5tZWRpYW49ZC5taWRkbGU9cC15LTErZy0uNSpwLGguY2xlYXJSZWN0KDAsMCxwLHApLGgudGV4dEJhc2VsaW5lPSJoYW5naW5nIixoLmZpbGxUZXh0KCJIIiwwLC41KnApO3ZhciB4PWkoaC5nZXRJbWFnZURhdGEoMCwwLHAscCkpO2QuaGFuZ2luZz1wLXgtMStnLS41KnAsaC5jbGVhclJlY3QoMCwwLHAscCksaC50ZXh0QmFzZWxpbmU9ImlkZW9ncmFwaGljIixoLmZpbGxUZXh0KCJIIiwwLHApO3ZhciBiPWkoaC5nZXRJbWFnZURhdGEoMCwwLHAscCkpO2lmKGQuaWRlb2dyYXBoaWM9cC1iLTErZyxmLnVwcGVyJiYoaC5jbGVhclJlY3QoMCwwLHAscCksaC50ZXh0QmFzZWxpbmU9InRvcCIsaC5maWxsVGV4dChmLnVwcGVyLDAsMCksZC51cHBlcj1pKGguZ2V0SW1hZ2VEYXRhKDAsMCxwLHApKSxkLmNhcEhlaWdodD1kLmJhc2VsaW5lLWQudXBwZXIpLGYubG93ZXImJihoLmNsZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGluZT0idG9wIixoLmZpbGxUZXh0KGYubG93ZXIsMCwwKSxkLmxvd2VyPWkoaC5nZXRJbWFnZURhdGEoMCwwLHAscCkpLGQueEhlaWdodD1kLmJhc2VsaW5lLWQubG93ZXIpLGYudGl0dGxlJiYoaC5jbGVhclJlY3QoMCwwLHAscCksaC50ZXh0QmFzZWxpbmU9InRvcCIsaC5maWxsVGV4dChmLnRpdHRsZSwwLDApLGQudGl0dGxlPWkoaC5nZXRJbWFnZURhdGEoMCwwLHAscCkpKSxmLmFzY2VudCYmKGguY2xlYXJSZWN0KDAsMCxwLHApLGgudGV4dEJhc2VsaW5lPSJ0b3AiLGguZmlsbFRleHQoZi5hc2NlbnQsMCwwKSxkLmFzY2VudD1pKGguZ2V0SW1hZ2VEYXRhKDAsMCxwLHApKSksZi5kZXNjZW50JiYoaC5jbGVhclJlY3QoMCwwLHAscCksaC50ZXh0QmFzZWxpbmU9InRvcCIsaC5maWxsVGV4dChmLmRlc2NlbnQsMCwwKSxkLmRlc2NlbnQ9byhoLmdldEltYWdlRGF0YSgwLDAscCxwKSkpLGYub3ZlcnNob290KXtoLmNsZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGluZT0idG9wIixoLmZpbGxUZXh0KGYub3ZlcnNob290LDAsMCk7dmFyIF89byhoLmdldEltYWdlRGF0YSgwLDAscCxwKSk7ZC5vdmVyc2hvb3Q9Xy1tfWZvcih2YXIgdyBpbiBkKWRbd10vPXM7cmV0dXJuIGQuZW09cyxuLmNhY2hlW3JdPWQsYShkLGMpfWZ1bmN0aW9uIGEodCxlKXt2YXIgcj17fTtmb3IodmFyIG4gaW4ic3RyaW5nIj09dHlwZW9mIGUmJihlPXRbZV0pLHQpImVtIiE9PW4mJihyW25dPXRbbl0tZSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9dC5oZWlnaHQscj10LmRhdGEsbj0zO248ci5sZW5ndGg7bis9NClpZigwIT09cltuXSlyZXR1cm4gTWF0aC5mbG9vciguMjUqKG4tMykvZSl9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9dC5oZWlnaHQscj10LmRhdGEsbj1yLmxlbmd0aC0xO24+MDtuLT00KWlmKDAhPT1yW25dKXJldHVybiBNYXRoLmZsb29yKC4yNSoobi0zKS9lKX1lLmV4cG9ydHM9bixuLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxuLmNhY2hlPXt9fSx7fV0sMjMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGModHx8ZCxudWxsKX07dmFyIG49MCxhPTE7ZnVuY3Rpb24gaSh0LGUscixuLGEsaSl7dGhpcy5fY29sb3I9dCx0aGlzLmtleT1lLHRoaXMudmFsdWU9cix0aGlzLmxlZnQ9bix0aGlzLnJpZ2h0PWEsdGhpcy5fY291bnQ9aX1mdW5jdGlvbiBvKHQpe3JldHVybiBuZXcgaSh0Ll9jb2xvcix0LmtleSx0LnZhbHVlLHQubGVmdCx0LnJpZ2h0LHQuX2NvdW50KX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIG5ldyBpKHQsZS5rZXksZS52YWx1ZSxlLmxlZnQsZS5yaWdodCxlLl9jb3VudCl9ZnVuY3Rpb24gbCh0KXt0Ll9jb3VudD0xKyh0LmxlZnQ/dC5sZWZ0Ll9jb3VudDowKSsodC5yaWdodD90LnJpZ2h0Ll9jb3VudDowKX1mdW5jdGlvbiBjKHQsZSl7dGhpcy5fY29tcGFyZT10LHRoaXMucm9vdD1lfXZhciB1PWMucHJvdG90eXBlO2Z1bmN0aW9uIGgodCxlKXt0aGlzLnRyZWU9dCx0aGlzLl9zdGFjaz1lfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LCJrZXlzIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihlLHIpe3QucHVzaChlKX0pLHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHUsInZhbHVlcyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24oZSxyKXt0LnB1c2gocil9KSx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290P3RoaXMucm9vdC5fY291bnQ6MH19KSx1Lmluc2VydD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLl9jb21wYXJlLG89dGhpcy5yb290LHU9W10saD1bXTtvOyl7dmFyIGY9cih0LG8ua2V5KTt1LnB1c2gobyksaC5wdXNoKGYpLG89Zjw9MD9vLmxlZnQ6by5yaWdodH11LnB1c2gobmV3IGkobix0LGUsbnVsbCxudWxsLDEpKTtmb3IodmFyIHA9dS5sZW5ndGgtMjtwPj0wOy0tcCl7bz11W3BdO2hbcF08PTA/dVtwXT1uZXcgaShvLl9jb2xvcixvLmtleSxvLnZhbHVlLHVbcCsxXSxvLnJpZ2h0LG8uX2NvdW50KzEpOnVbcF09bmV3IGkoby5fY29sb3Isby5rZXksby52YWx1ZSxvLmxlZnQsdVtwKzFdLG8uX2NvdW50KzEpfWZvcihwPXUubGVuZ3RoLTE7cD4xOy0tcCl7dmFyIGQ9dVtwLTFdO289dVtwXTtpZihkLl9jb2xvcj09PWF8fG8uX2NvbG9yPT09YSlicmVhazt2YXIgZz11W3AtMl07aWYoZy5sZWZ0PT09ZClpZihkLmxlZnQ9PT1vKXtpZighKHY9Zy5yaWdodCl8fHYuX2NvbG9yIT09bil7aWYoZy5fY29sb3I9bixnLmxlZnQ9ZC5yaWdodCxkLl9jb2xvcj1hLGQucmlnaHQ9Zyx1W3AtMl09ZCx1W3AtMV09byxsKGcpLGwoZCkscD49MykobT11W3AtM10pLmxlZnQ9PT1nP20ubGVmdD1kOm0ucmlnaHQ9ZDticmVha31kLl9jb2xvcj1hLGcucmlnaHQ9cyhhLHYpLGcuX2NvbG9yPW4scC09MX1lbHNle2lmKCEodj1nLnJpZ2h0KXx8di5fY29sb3IhPT1uKXtpZihkLnJpZ2h0PW8ubGVmdCxnLl9jb2xvcj1uLGcubGVmdD1vLnJpZ2h0LG8uX2NvbG9yPWEsby5sZWZ0PWQsby5yaWdodD1nLHVbcC0yXT1vLHVbcC0xXT1kLGwoZyksbChkKSxsKG8pLHA+PTMpKG09dVtwLTNdKS5sZWZ0PT09Zz9tLmxlZnQ9bzptLnJpZ2h0PW87YnJlYWt9ZC5fY29sb3I9YSxnLnJpZ2h0PXMoYSx2KSxnLl9jb2xvcj1uLHAtPTF9ZWxzZSBpZihkLnJpZ2h0PT09byl7aWYoISh2PWcubGVmdCl8fHYuX2NvbG9yIT09bil7aWYoZy5fY29sb3I9bixnLnJpZ2h0PWQubGVmdCxkLl9jb2xvcj1hLGQubGVmdD1nLHVbcC0yXT1kLHVbcC0xXT1vLGwoZyksbChkKSxwPj0zKShtPXVbcC0zXSkucmlnaHQ9PT1nP20ucmlnaHQ9ZDptLmxlZnQ9ZDticmVha31kLl9jb2xvcj1hLGcubGVmdD1zKGEsdiksZy5fY29sb3I9bixwLT0xfWVsc2V7dmFyIHY7aWYoISh2PWcubGVmdCl8fHYuX2NvbG9yIT09bil7dmFyIG07aWYoZC5sZWZ0PW8ucmlnaHQsZy5fY29sb3I9bixnLnJpZ2h0PW8ubGVmdCxvLl9jb2xvcj1hLG8ucmlnaHQ9ZCxvLmxlZnQ9Zyx1W3AtMl09byx1W3AtMV09ZCxsKGcpLGwoZCksbChvKSxwPj0zKShtPXVbcC0zXSkucmlnaHQ9PT1nP20ucmlnaHQ9bzptLmxlZnQ9bzticmVha31kLl9jb2xvcj1hLGcubGVmdD1zKGEsdiksZy5fY29sb3I9bixwLT0xfX1yZXR1cm4gdVswXS5fY29sb3I9YSxuZXcgYyhyLHVbMF0pfSx1LmZvckVhY2g9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMucm9vdClzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbiB0KGUscil7dmFyIG47aWYoci5sZWZ0JiYobj10KGUsci5sZWZ0KSkpcmV0dXJuIG47cmV0dXJuKG49ZShyLmtleSxyLnZhbHVlKSl8fChyLnJpZ2h0P3QoZSxyLnJpZ2h0KTp2b2lkIDApfSh0LHRoaXMucm9vdCk7Y2FzZSAyOnJldHVybiBmdW5jdGlvbiB0KGUscixuLGEpe2lmKHIoZSxhLmtleSk8PTApe3ZhciBpO2lmKGEubGVmdCYmKGk9dChlLHIsbixhLmxlZnQpKSlyZXR1cm4gaTtpZihpPW4oYS5rZXksYS52YWx1ZSkpcmV0dXJuIGl9aWYoYS5yaWdodClyZXR1cm4gdChlLHIsbixhLnJpZ2h0KX0oZSx0aGlzLl9jb21wYXJlLHQsdGhpcy5yb290KTtjYXNlIDM6aWYodGhpcy5fY29tcGFyZShlLHIpPj0wKXJldHVybjtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbixhLGkpe3ZhciBvLHM9bihlLGkua2V5KSxsPW4ocixpLmtleSk7aWYoczw9MCl7aWYoaS5sZWZ0JiYobz10KGUscixuLGEsaS5sZWZ0KSkpcmV0dXJuIG87aWYobD4wJiYobz1hKGkua2V5LGkudmFsdWUpKSlyZXR1cm4gb31pZihsPjAmJmkucmlnaHQpcmV0dXJuIHQoZSxyLG4sYSxpLnJpZ2h0KX0oZSxyLHRoaXMuX2NvbXBhcmUsdCx0aGlzLnJvb3QpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHUsImJlZ2luIix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9dGhpcy5yb290O2U7KXQucHVzaChlKSxlPWUubGVmdDtyZXR1cm4gbmV3IGgodGhpcyx0KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodSwiZW5kIix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9dGhpcy5yb290O2U7KXQucHVzaChlKSxlPWUucmlnaHQ7cmV0dXJuIG5ldyBoKHRoaXMsdCl9fSksdS5hdD1mdW5jdGlvbih0KXtpZih0PDApcmV0dXJuIG5ldyBoKHRoaXMsW10pO2Zvcih2YXIgZT10aGlzLnJvb3Qscj1bXTs7KXtpZihyLnB1c2goZSksZS5sZWZ0KXtpZih0PGUubGVmdC5fY291bnQpe2U9ZS5sZWZ0O2NvbnRpbnVlfXQtPWUubGVmdC5fY291bnR9aWYoIXQpcmV0dXJuIG5ldyBoKHRoaXMscik7aWYodC09MSwhZS5yaWdodClicmVhaztpZih0Pj1lLnJpZ2h0Ll9jb3VudClicmVhaztlPWUucmlnaHR9cmV0dXJuIG5ldyBoKHRoaXMsW10pfSx1LmdlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290LG49W10sYT0wO3I7KXt2YXIgaT1lKHQsci5rZXkpO24ucHVzaChyKSxpPD0wJiYoYT1uLmxlbmd0aCkscj1pPD0wP3IubGVmdDpyLnJpZ2h0fXJldHVybiBuLmxlbmd0aD1hLG5ldyBoKHRoaXMsbil9LHUuZ3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2NvbXBhcmUscj10aGlzLnJvb3Qsbj1bXSxhPTA7cjspe3ZhciBpPWUodCxyLmtleSk7bi5wdXNoKHIpLGk8MCYmKGE9bi5sZW5ndGgpLHI9aTwwP3IubGVmdDpyLnJpZ2h0fXJldHVybiBuLmxlbmd0aD1hLG5ldyBoKHRoaXMsbil9LHUubHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2NvbXBhcmUscj10aGlzLnJvb3Qsbj1bXSxhPTA7cjspe3ZhciBpPWUodCxyLmtleSk7bi5wdXNoKHIpLGk+MCYmKGE9bi5sZW5ndGgpLHI9aTw9MD9yLmxlZnQ6ci5yaWdodH1yZXR1cm4gbi5sZW5ndGg9YSxuZXcgaCh0aGlzLG4pfSx1LmxlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290LG49W10sYT0wO3I7KXt2YXIgaT1lKHQsci5rZXkpO24ucHVzaChyKSxpPj0wJiYoYT1uLmxlbmd0aCkscj1pPDA/ci5sZWZ0OnIucmlnaHR9cmV0dXJuIG4ubGVuZ3RoPWEsbmV3IGgodGhpcyxuKX0sdS5maW5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290LG49W107cjspe3ZhciBhPWUodCxyLmtleSk7aWYobi5wdXNoKHIpLDA9PT1hKXJldHVybiBuZXcgaCh0aGlzLG4pO3I9YTw9MD9yLmxlZnQ6ci5yaWdodH1yZXR1cm4gbmV3IGgodGhpcyxbXSl9LHUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmluZCh0KTtyZXR1cm4gZT9lLnJlbW92ZSgpOnRoaXN9LHUuZ2V0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290O3I7KXt2YXIgbj1lKHQsci5rZXkpO2lmKDA9PT1uKXJldHVybiByLnZhbHVlO3I9bjw9MD9yLmxlZnQ6ci5yaWdodH19O3ZhciBmPWgucHJvdG90eXBlO2Z1bmN0aW9uIHAodCxlKXt0LmtleT1lLmtleSx0LnZhbHVlPWUudmFsdWUsdC5sZWZ0PWUubGVmdCx0LnJpZ2h0PWUucmlnaHQsdC5fY29sb3I9ZS5fY29sb3IsdC5fY291bnQ9ZS5fY291bnR9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6MH1PYmplY3QuZGVmaW5lUHJvcGVydHkoZiwidmFsaWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhY2subGVuZ3RoPjB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIm5vZGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhY2subGVuZ3RoPjA/dGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdOm51bGx9LGVudW1lcmFibGU6ITB9KSxmLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoKHRoaXMudHJlZSx0aGlzLl9zdGFjay5zbGljZSgpKX0sZi5yZW1vdmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdGFjaztpZigwPT09dC5sZW5ndGgpcmV0dXJuIHRoaXMudHJlZTt2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9dFt0Lmxlbmd0aC0xXTtlW2UubGVuZ3RoLTFdPW5ldyBpKHIuX2NvbG9yLHIua2V5LHIudmFsdWUsci5sZWZ0LHIucmlnaHQsci5fY291bnQpO2Zvcih2YXIgdT10Lmxlbmd0aC0yO3U+PTA7LS11KXsocj10W3VdKS5sZWZ0PT09dFt1KzFdP2VbdV09bmV3IGkoci5fY29sb3Isci5rZXksci52YWx1ZSxlW3UrMV0sci5yaWdodCxyLl9jb3VudCk6ZVt1XT1uZXcgaShyLl9jb2xvcixyLmtleSxyLnZhbHVlLHIubGVmdCxlW3UrMV0sci5fY291bnQpfWlmKChyPWVbZS5sZW5ndGgtMV0pLmxlZnQmJnIucmlnaHQpe3ZhciBoPWUubGVuZ3RoO2ZvcihyPXIubGVmdDtyLnJpZ2h0OyllLnB1c2gocikscj1yLnJpZ2h0O3ZhciBmPWVbaC0xXTtlLnB1c2gobmV3IGkoci5fY29sb3IsZi5rZXksZi52YWx1ZSxyLmxlZnQsci5yaWdodCxyLl9jb3VudCkpLGVbaC0xXS5rZXk9ci5rZXksZVtoLTFdLnZhbHVlPXIudmFsdWU7Zm9yKHU9ZS5sZW5ndGgtMjt1Pj1oOy0tdSlyPWVbdV0sZVt1XT1uZXcgaShyLl9jb2xvcixyLmtleSxyLnZhbHVlLHIubGVmdCxlW3UrMV0sci5fY291bnQpO2VbaC0xXS5sZWZ0PWVbaF19aWYoKHI9ZVtlLmxlbmd0aC0xXSkuX2NvbG9yPT09bil7dmFyIGQ9ZVtlLmxlbmd0aC0yXTtkLmxlZnQ9PT1yP2QubGVmdD1udWxsOmQucmlnaHQ9PT1yJiYoZC5yaWdodD1udWxsKSxlLnBvcCgpO2Zvcih1PTA7dTxlLmxlbmd0aDsrK3UpZVt1XS5fY291bnQtLTtyZXR1cm4gbmV3IGModGhpcy50cmVlLl9jb21wYXJlLGVbMF0pfWlmKHIubGVmdHx8ci5yaWdodCl7ci5sZWZ0P3AocixyLmxlZnQpOnIucmlnaHQmJnAocixyLnJpZ2h0KSxyLl9jb2xvcj1hO2Zvcih1PTA7dTxlLmxlbmd0aC0xOysrdSllW3VdLl9jb3VudC0tO3JldHVybiBuZXcgYyh0aGlzLnRyZWUuX2NvbXBhcmUsZVswXSl9aWYoMT09PWUubGVuZ3RoKXJldHVybiBuZXcgYyh0aGlzLnRyZWUuX2NvbXBhcmUsbnVsbCk7Zm9yKHU9MDt1PGUubGVuZ3RoOysrdSllW3VdLl9jb3VudC0tO3ZhciBnPWVbZS5sZW5ndGgtMl07cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLGksYyx1PXQubGVuZ3RoLTE7dT49MDstLXUpe2lmKGU9dFt1XSwwPT09dSlyZXR1cm4gdm9pZChlLl9jb2xvcj1hKTtpZigocj10W3UtMV0pLmxlZnQ9PT1lKXtpZigoaT1yLnJpZ2h0KS5yaWdodCYmaS5yaWdodC5fY29sb3I9PT1uKXJldHVybiBjPShpPXIucmlnaHQ9byhpKSkucmlnaHQ9byhpLnJpZ2h0KSxyLnJpZ2h0PWkubGVmdCxpLmxlZnQ9cixpLnJpZ2h0PWMsaS5fY29sb3I9ci5fY29sb3IsZS5fY29sb3I9YSxyLl9jb2xvcj1hLGMuX2NvbG9yPWEsbChyKSxsKGkpLHU+MSYmKChoPXRbdS0yXSkubGVmdD09PXI/aC5sZWZ0PWk6aC5yaWdodD1pKSx2b2lkKHRbdS0xXT1pKTtpZihpLmxlZnQmJmkubGVmdC5fY29sb3I9PT1uKXJldHVybiBjPShpPXIucmlnaHQ9byhpKSkubGVmdD1vKGkubGVmdCksci5yaWdodD1jLmxlZnQsaS5sZWZ0PWMucmlnaHQsYy5sZWZ0PXIsYy5yaWdodD1pLGMuX2NvbG9yPXIuX2NvbG9yLHIuX2NvbG9yPWEsaS5fY29sb3I9YSxlLl9jb2xvcj1hLGwociksbChpKSxsKGMpLHU+MSYmKChoPXRbdS0yXSkubGVmdD09PXI/aC5sZWZ0PWM6aC5yaWdodD1jKSx2b2lkKHRbdS0xXT1jKTtpZihpLl9jb2xvcj09PWEpe2lmKHIuX2NvbG9yPT09bilyZXR1cm4gci5fY29sb3I9YSx2b2lkKHIucmlnaHQ9cyhuLGkpKTtyLnJpZ2h0PXMobixpKTtjb250aW51ZX1pPW8oaSksci5yaWdodD1pLmxlZnQsaS5sZWZ0PXIsaS5fY29sb3I9ci5fY29sb3Isci5fY29sb3I9bixsKHIpLGwoaSksdT4xJiYoKGg9dFt1LTJdKS5sZWZ0PT09cj9oLmxlZnQ9aTpoLnJpZ2h0PWkpLHRbdS0xXT1pLHRbdV09cix1KzE8dC5sZW5ndGg/dFt1KzFdPWU6dC5wdXNoKGUpLHUrPTJ9ZWxzZXtpZigoaT1yLmxlZnQpLmxlZnQmJmkubGVmdC5fY29sb3I9PT1uKXJldHVybiBjPShpPXIubGVmdD1vKGkpKS5sZWZ0PW8oaS5sZWZ0KSxyLmxlZnQ9aS5yaWdodCxpLnJpZ2h0PXIsaS5sZWZ0PWMsaS5fY29sb3I9ci5fY29sb3IsZS5fY29sb3I9YSxyLl9jb2xvcj1hLGMuX2NvbG9yPWEsbChyKSxsKGkpLHU+MSYmKChoPXRbdS0yXSkucmlnaHQ9PT1yP2gucmlnaHQ9aTpoLmxlZnQ9aSksdm9pZCh0W3UtMV09aSk7aWYoaS5yaWdodCYmaS5yaWdodC5fY29sb3I9PT1uKXJldHVybiBjPShpPXIubGVmdD1vKGkpKS5yaWdodD1vKGkucmlnaHQpLHIubGVmdD1jLnJpZ2h0LGkucmlnaHQ9Yy5sZWZ0LGMucmlnaHQ9cixjLmxlZnQ9aSxjLl9jb2xvcj1yLl9jb2xvcixyLl9jb2xvcj1hLGkuX2NvbG9yPWEsZS5fY29sb3I9YSxsKHIpLGwoaSksbChjKSx1PjEmJigoaD10W3UtMl0pLnJpZ2h0PT09cj9oLnJpZ2h0PWM6aC5sZWZ0PWMpLHZvaWQodFt1LTFdPWMpO2lmKGkuX2NvbG9yPT09YSl7aWYoci5fY29sb3I9PT1uKXJldHVybiByLl9jb2xvcj1hLHZvaWQoci5sZWZ0PXMobixpKSk7ci5sZWZ0PXMobixpKTtjb250aW51ZX12YXIgaDtpPW8oaSksci5sZWZ0PWkucmlnaHQsaS5yaWdodD1yLGkuX2NvbG9yPXIuX2NvbG9yLHIuX2NvbG9yPW4sbChyKSxsKGkpLHU+MSYmKChoPXRbdS0yXSkucmlnaHQ9PT1yP2gucmlnaHQ9aTpoLmxlZnQ9aSksdFt1LTFdPWksdFt1XT1yLHUrMTx0Lmxlbmd0aD90W3UrMV09ZTp0LnB1c2goZSksdSs9Mn19fShlKSxnLmxlZnQ9PT1yP2cubGVmdD1udWxsOmcucmlnaHQ9bnVsbCxuZXcgYyh0aGlzLnRyZWUuX2NvbXBhcmUsZVswXSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJrZXkiLHtnZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdGFjay5sZW5ndGg+MClyZXR1cm4gdGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdLmtleX0sZW51bWVyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0YWNrLmxlbmd0aD4wKXJldHVybiB0aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgtMV0udmFsdWV9LGVudW1lcmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwiaW5kZXgiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD0wLGU9dGhpcy5fc3RhY2s7aWYoMD09PWUubGVuZ3RoKXt2YXIgcj10aGlzLnRyZWUucm9vdDtyZXR1cm4gcj9yLl9jb3VudDowfWVbZS5sZW5ndGgtMV0ubGVmdCYmKHQ9ZVtlLmxlbmd0aC0xXS5sZWZ0Ll9jb3VudCk7Zm9yKHZhciBuPWUubGVuZ3RoLTI7bj49MDstLW4pZVtuKzFdPT09ZVtuXS5yaWdodCYmKCsrdCxlW25dLmxlZnQmJih0Kz1lW25dLmxlZnQuX2NvdW50KSk7cmV0dXJuIHR9LGVudW1lcmFibGU6ITB9KSxmLm5leHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdGFjaztpZigwIT09dC5sZW5ndGgpe3ZhciBlPXRbdC5sZW5ndGgtMV07aWYoZS5yaWdodClmb3IoZT1lLnJpZ2h0O2U7KXQucHVzaChlKSxlPWUubGVmdDtlbHNlIGZvcih0LnBvcCgpO3QubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0ucmlnaHQ9PT1lOyllPXRbdC5sZW5ndGgtMV0sdC5wb3AoKX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJoYXNOZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3RhY2s7aWYoMD09PXQubGVuZ3RoKXJldHVybiExO2lmKHRbdC5sZW5ndGgtMV0ucmlnaHQpcmV0dXJuITA7Zm9yKHZhciBlPXQubGVuZ3RoLTE7ZT4wOy0tZSlpZih0W2UtMV0ubGVmdD09PXRbZV0pcmV0dXJuITA7cmV0dXJuITF9fSksZi51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3RhY2s7aWYoMD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2FuJ3QgdXBkYXRlIGVtcHR5IG5vZGUhIik7dmFyIHI9bmV3IEFycmF5KGUubGVuZ3RoKSxuPWVbZS5sZW5ndGgtMV07cltyLmxlbmd0aC0xXT1uZXcgaShuLl9jb2xvcixuLmtleSx0LG4ubGVmdCxuLnJpZ2h0LG4uX2NvdW50KTtmb3IodmFyIGE9ZS5sZW5ndGgtMjthPj0wOy0tYSkobj1lW2FdKS5sZWZ0PT09ZVthKzFdP3JbYV09bmV3IGkobi5fY29sb3Isbi5rZXksbi52YWx1ZSxyW2ErMV0sbi5yaWdodCxuLl9jb3VudCk6clthXT1uZXcgaShuLl9jb2xvcixuLmtleSxuLnZhbHVlLG4ubGVmdCxyW2ErMV0sbi5fY291bnQpO3JldHVybiBuZXcgYyh0aGlzLnRyZWUuX2NvbXBhcmUsclswXSl9LGYucHJldj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N0YWNrO2lmKDAhPT10Lmxlbmd0aCl7dmFyIGU9dFt0Lmxlbmd0aC0xXTtpZihlLmxlZnQpZm9yKGU9ZS5sZWZ0O2U7KXQucHVzaChlKSxlPWUucmlnaHQ7ZWxzZSBmb3IodC5wb3AoKTt0Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdLmxlZnQ9PT1lOyllPXRbdC5sZW5ndGgtMV0sdC5wb3AoKX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJoYXNQcmV2Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3RhY2s7aWYoMD09PXQubGVuZ3RoKXJldHVybiExO2lmKHRbdC5sZW5ndGgtMV0ubGVmdClyZXR1cm4hMDtmb3IodmFyIGU9dC5sZW5ndGgtMTtlPjA7LS1lKWlmKHRbZS0xXS5yaWdodD09PXRbZV0pcmV0dXJuITA7cmV0dXJuITF9fSl9LHt9XSwyMzQ6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj1bLjk5OTk5OTk5OTk5OTgwOTksNjc2LjUyMDM2ODEyMTg4NTEsLTEyNTkuMTM5MjE2NzIyNDAyOCw3NzEuMzIzNDI4Nzc3NjUzMSwtMTc2LjYxNTAyOTE2MjE0MDYsMTIuNTA3MzQzMjc4Njg2OTA1LC0uMTM4NTcxMDk1MjY1NzIwMTIsOTk4NDM2OTU3ODAxOTU3MmUtMjEsMS41MDU2MzI3MzUxNDkzMTE2ZS03XSxhPTYwNy8xMjgsaT1bLjk5OTk5OTk5OTk5OTk5NzEsNTcuMTU2MjM1NjY1ODYyOTIsLTU5LjU5Nzk2MDM1NTQ3NTQ5LDE0LjEzNjA5Nzk3NDc0MTc0NiwtLjQ5MTkxMzgxNjA5NzYyMDIsMzM5OTQ2NDk5ODQ4MTE4OWUtMjAsNDY1MjM2Mjg5MjcwNDg1OGUtMjAsLTk4Mzc0NDc1MzA0ODc5NTZlLTIwLC4wMDAxNTgwODg3MDMyMjQ5MTI1LC0uMDAwMjEwMjY0NDQxNzI0MTA0ODgsLjAwMDIxNzQzOTYxODExNTIxMjY1LC0uMDAwMTY0MzE4MTA2NTM2NzYzOSw4NDQxODIyMzk4Mzg1Mjc1ZS0yMCwtMjYxOTA4Mzg0MDE1ODE0MDhlLTIxLDM2ODk5MTgyNjU5NTMxNjI1ZS0yMl07ZnVuY3Rpb24gbyh0KXtpZih0PDApcmV0dXJuIE51bWJlcigiMC8wIik7Zm9yKHZhciBlPWlbMF0scj1pLmxlbmd0aC0xO3I+MDstLXIpZSs9aVtyXS8odCtyKTt2YXIgbj10K2ErLjU7cmV0dXJuLjUqTWF0aC5sb2coMipNYXRoLlBJKSsodCsuNSkqTWF0aC5sb2cobiktbitNYXRoLmxvZyhlKS1NYXRoLmxvZyh0KX1lLmV4cG9ydHM9ZnVuY3Rpb24gdChlKXtpZihlPC41KXJldHVybiBNYXRoLlBJLyhNYXRoLnNpbihNYXRoLlBJKmUpKnQoMS1lKSk7aWYoZT4xMDApcmV0dXJuIE1hdGguZXhwKG8oZSkpO2UtPTE7Zm9yKHZhciByPW5bMF0sYT0xO2E8OTthKyspcis9blthXS8oZSthKTt2YXIgaT1lKzcrLjU7cmV0dXJuIE1hdGguc3FydCgyKk1hdGguUEkpKk1hdGgucG93KGksZSsuNSkqTWF0aC5leHAoLWkpKnJ9LGUuZXhwb3J0cy5sb2c9b30se31dLDIzNTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJtdXN0IHNwZWNpZnkgdHlwZSBzdHJpbmciKTtpZihlPWV8fHt9LCJ1bmRlZmluZWQiPT10eXBlb2YgZG9jdW1lbnQmJiFlLmNhbnZhcylyZXR1cm4gbnVsbDt2YXIgcj1lLmNhbnZhc3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Im51bWJlciI9PXR5cGVvZiBlLndpZHRoJiYoci53aWR0aD1lLndpZHRoKTsibnVtYmVyIj09dHlwZW9mIGUuaGVpZ2h0JiYoci5oZWlnaHQ9ZS5oZWlnaHQpO3ZhciBuLGE9ZTt0cnl7dmFyIGk9W3RdOzA9PT10LmluZGV4T2YoIndlYmdsIikmJmkucHVzaCgiZXhwZXJpbWVudGFsLSIrdCk7Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspaWYobj1yLmdldENvbnRleHQoaVtvXSxhKSlyZXR1cm4gbn1jYXRjaCh0KXtuPW51bGx9cmV0dXJuIG58fG51bGx9fSx7fV0sMjM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyB1KHQpO3JldHVybiByLnVwZGF0ZShlKSxyfTt2YXIgbj10KCIuL2xpYi90ZXh0LmpzIiksYT10KCIuL2xpYi9saW5lcy5qcyIpLGk9dCgiLi9saWIvYmFja2dyb3VuZC5qcyIpLG89dCgiLi9saWIvY3ViZS5qcyIpLHM9dCgiLi9saWIvdGlja3MuanMiKSxsPW5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdKTtmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHRbMF09ZVswXSx0WzFdPWVbMV0sdFsyXT1lWzJdLHR9ZnVuY3Rpb24gdSh0KXt0aGlzLmdsPXQsdGhpcy5waXhlbFJhdGlvPTEsdGhpcy5ib3VuZHM9W1stMTAsLTEwLC0xMF0sWzEwLDEwLDEwXV0sdGhpcy50aWNrcz1bW10sW10sW11dLHRoaXMuYXV0b1RpY2tzPSEwLHRoaXMudGlja1NwYWNpbmc9WzEsMSwxXSx0aGlzLnRpY2tFbmFibGU9WyEwLCEwLCEwXSx0aGlzLnRpY2tGb250PVsic2Fucy1zZXJpZiIsInNhbnMtc2VyaWYiLCJzYW5zLXNlcmlmIl0sdGhpcy50aWNrU2l6ZT1bMTIsMTIsMTJdLHRoaXMudGlja0FuZ2xlPVswLDAsMF0sdGhpcy50aWNrQWxpZ249WyJhdXRvIiwiYXV0byIsImF1dG8iXSx0aGlzLnRpY2tDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMudGlja1BhZD1bMTAsMTAsMTBdLHRoaXMubGFzdEN1YmVQcm9wcz17Y3ViZUVkZ2VzOlswLDAsMF0sYXhpczpbMCwwLDBdfSx0aGlzLmxhYmVscz1bIngiLCJ5IiwieiJdLHRoaXMubGFiZWxFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmxhYmVsRm9udD0ic2Fucy1zZXJpZiIsdGhpcy5sYWJlbFNpemU9WzIwLDIwLDIwXSx0aGlzLmxhYmVsQW5nbGU9WzAsMCwwXSx0aGlzLmxhYmVsQWxpZ249WyJhdXRvIiwiYXV0byIsImF1dG8iXSx0aGlzLmxhYmVsQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxhYmVsUGFkPVsxMCwxMCwxMF0sdGhpcy5saW5lRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5saW5lTWlycm9yPVshMSwhMSwhMV0sdGhpcy5saW5lV2lkdGg9WzEsMSwxXSx0aGlzLmxpbmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMubGluZVRpY2tFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmxpbmVUaWNrTWlycm9yPVshMSwhMSwhMV0sdGhpcy5saW5lVGlja0xlbmd0aD1bMCwwLDBdLHRoaXMubGluZVRpY2tXaWR0aD1bMSwxLDFdLHRoaXMubGluZVRpY2tDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuZ3JpZEVuYWJsZT1bITAsITAsITBdLHRoaXMuZ3JpZFdpZHRoPVsxLDEsMV0sdGhpcy5ncmlkQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnplcm9FbmFibGU9WyEwLCEwLCEwXSx0aGlzLnplcm9MaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnplcm9MaW5lV2lkdGg9WzIsMiwyXSx0aGlzLmJhY2tncm91bmRFbmFibGU9WyExLCExLCExXSx0aGlzLmJhY2tncm91bmRDb2xvcj1bWy44LC44LC44LC41XSxbLjgsLjgsLjgsLjVdLFsuOCwuOCwuOCwuNV1dLHRoaXMuX2ZpcnN0SW5pdD0hMCx0aGlzLl90ZXh0PW51bGwsdGhpcy5fbGluZXM9bnVsbCx0aGlzLl9iYWNrZ3JvdW5kPWkodCl9dmFyIGg9dS5wcm90b3R5cGU7ZnVuY3Rpb24gZigpe3RoaXMucHJpbWFsT2Zmc2V0PVswLDAsMF0sdGhpcy5wcmltYWxNaW5vcj1bMCwwLDBdLHRoaXMubWlycm9yT2Zmc2V0PVswLDAsMF0sdGhpcy5taXJyb3JNaW5vcj1bMCwwLDBdfWgudXBkYXRlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyLG4pe2lmKG4gaW4gdCl7dmFyIGEsaT10W25dLG89dGhpc1tuXTsoZT9BcnJheS5pc0FycmF5KGkpJiZBcnJheS5pc0FycmF5KGlbMF0pOkFycmF5LmlzQXJyYXkoaSkpP3RoaXNbbl09YT1bcihpWzBdKSxyKGlbMV0pLHIoaVsyXSldOnRoaXNbbl09YT1bcihpKSxyKGkpLHIoaSldO2Zvcih2YXIgcz0wO3M8MzsrK3MpaWYoYVtzXSE9PW9bc10pcmV0dXJuITB9cmV0dXJuITF9dD10fHx7fTt2YXIgcixpPWUuYmluZCh0aGlzLCExLE51bWJlciksbz1lLmJpbmQodGhpcywhMSxCb29sZWFuKSxsPWUuYmluZCh0aGlzLCExLFN0cmluZyksYz1lLmJpbmQodGhpcywhMCxmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtpZigzPT09dC5sZW5ndGgpcmV0dXJuWyt0WzBdLCt0WzFdLCt0WzJdLDFdO2lmKDQ9PT10Lmxlbmd0aClyZXR1cm5bK3RbMF0sK3RbMV0sK3RbMl0sK3RbM11dfXJldHVyblswLDAsMCwxXX0pLHU9ITEsaD0hMTtpZigiYm91bmRzImluIHQpZm9yKHZhciBmPXQuYm91bmRzLHA9MDtwPDI7KytwKWZvcih2YXIgZD0wO2Q8MzsrK2QpZltwXVtkXSE9PXRoaXMuYm91bmRzW3BdW2RdJiYoaD0hMCksdGhpcy5ib3VuZHNbcF1bZF09ZltwXVtkXTtpZigidGlja3MiaW4gdCl7cj10LnRpY2tzLHU9ITAsdGhpcy5hdXRvVGlja3M9ITE7Zm9yKHA9MDtwPDM7KytwKXRoaXMudGlja1NwYWNpbmdbcF09MH1lbHNlIGkoInRpY2tTcGFjaW5nIikmJih0aGlzLmF1dG9UaWNrcz0hMCxoPSEwKTtpZih0aGlzLl9maXJzdEluaXQmJigidGlja3MiaW4gdHx8InRpY2tTcGFjaW5nImluIHR8fCh0aGlzLmF1dG9UaWNrcz0hMCksaD0hMCx1PSEwLHRoaXMuX2ZpcnN0SW5pdD0hMSksaCYmdGhpcy5hdXRvVGlja3MmJihyPXMuY3JlYXRlKHRoaXMuYm91bmRzLHRoaXMudGlja1NwYWNpbmcpLHU9ITApLHUpe2ZvcihwPTA7cDwzOysrcClyW3BdLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC54LWUueH0pO3MuZXF1YWwocix0aGlzLnRpY2tzKT91PSExOnRoaXMudGlja3M9cn1vKCJ0aWNrRW5hYmxlIiksbCgidGlja0ZvbnQiKSYmKHU9ITApLGkoInRpY2tTaXplIiksaSgidGlja0FuZ2xlIiksaSgidGlja1BhZCIpLGMoInRpY2tDb2xvciIpO3ZhciBnPWwoImxhYmVscyIpO2woImxhYmVsRm9udCIpJiYoZz0hMCksbygibGFiZWxFbmFibGUiKSxpKCJsYWJlbFNpemUiKSxpKCJsYWJlbFBhZCIpLGMoImxhYmVsQ29sb3IiKSxvKCJsaW5lRW5hYmxlIiksbygibGluZU1pcnJvciIpLGkoImxpbmVXaWR0aCIpLGMoImxpbmVDb2xvciIpLG8oImxpbmVUaWNrRW5hYmxlIiksbygibGluZVRpY2tNaXJyb3IiKSxpKCJsaW5lVGlja0xlbmd0aCIpLGkoImxpbmVUaWNrV2lkdGgiKSxjKCJsaW5lVGlja0NvbG9yIiksbygiZ3JpZEVuYWJsZSIpLGkoImdyaWRXaWR0aCIpLGMoImdyaWRDb2xvciIpLG8oInplcm9FbmFibGUiKSxjKCJ6ZXJvTGluZUNvbG9yIiksaSgiemVyb0xpbmVXaWR0aCIpLG8oImJhY2tncm91bmRFbmFibGUiKSxjKCJiYWNrZ3JvdW5kQ29sb3IiKSx0aGlzLl90ZXh0P3RoaXMuX3RleHQmJihnfHx1KSYmdGhpcy5fdGV4dC51cGRhdGUodGhpcy5ib3VuZHMsdGhpcy5sYWJlbHMsdGhpcy5sYWJlbEZvbnQsdGhpcy50aWNrcyx0aGlzLnRpY2tGb250KTp0aGlzLl90ZXh0PW4odGhpcy5nbCx0aGlzLmJvdW5kcyx0aGlzLmxhYmVscyx0aGlzLmxhYmVsRm9udCx0aGlzLnRpY2tzLHRoaXMudGlja0ZvbnQpLHRoaXMuX2xpbmVzJiZ1JiYodGhpcy5fbGluZXMuZGlzcG9zZSgpLHRoaXMuX2xpbmVzPW51bGwpLHRoaXMuX2xpbmVzfHwodGhpcy5fbGluZXM9YSh0aGlzLmdsLHRoaXMuYm91bmRzLHRoaXMudGlja3MpKX07dmFyIHA9W25ldyBmLG5ldyBmLG5ldyBmXTtmdW5jdGlvbiBkKHQsZSxyLG4sYSl7Zm9yKHZhciBpPXQucHJpbWFsT2Zmc2V0LG89dC5wcmltYWxNaW5vcixzPXQubWlycm9yT2Zmc2V0LGw9dC5taXJyb3JNaW5vcixjPW5bZV0sdT0wO3U8MzsrK3UpaWYoZSE9PXUpe3ZhciBoPWksZj1zLHA9byxkPWw7YyYxPDx1JiYoaD1zLGY9aSxwPWwsZD1vKSxoW3VdPXJbMF1bdV0sZlt1XT1yWzFdW3VdLGFbdV0+MD8ocFt1XT0tMSxkW3VdPTApOihwW3VdPTAsZFt1XT0xKX19dmFyIGc9WzAsMCwwXSx2PXttb2RlbDpsLHZpZXc6bCxwcm9qZWN0aW9uOmwsX29ydGhvOiExfTtoLmlzT3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGguaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiExfSxoLmRyYXdUcmFuc3BhcmVudD1mdW5jdGlvbih0KXt9O3ZhciBtPVswLDAsMF0seT1bMCwwLDBdLHg9WzAsMCwwXTtoLmRyYXc9ZnVuY3Rpb24odCl7dD10fHx2O2Zvcih2YXIgZT10aGlzLmdsLHI9dC5tb2RlbHx8bCxuPXQudmlld3x8bCxhPXQucHJvamVjdGlvbnx8bCxpPXRoaXMuYm91bmRzLHM9dC5fb3J0aG98fCExLHU9byhyLG4sYSxpLHMpLGg9dS5jdWJlRWRnZXMsZj11LmF4aXMsYj1uWzEyXSxfPW5bMTNdLHc9blsxNF0saz1uWzE1XSxUPShzPzI6MSkqdGhpcy5waXhlbFJhdGlvKihhWzNdKmIrYVs3XSpfK2FbMTFdKncrYVsxNV0qaykvZS5kcmF3aW5nQnVmZmVySGVpZ2h0LE09MDtNPDM7KytNKXRoaXMubGFzdEN1YmVQcm9wcy5jdWJlRWRnZXNbTV09aFtNXSx0aGlzLmxhc3RDdWJlUHJvcHMuYXhpc1tNXT1mW01dO3ZhciBBPXA7Zm9yKE09MDtNPDM7KytNKWQocFtNXSxNLHRoaXMuYm91bmRzLGgsZik7ZT10aGlzLmdsO3ZhciBTLEU9Zztmb3IoTT0wO008MzsrK00pdGhpcy5iYWNrZ3JvdW5kRW5hYmxlW01dP0VbTV09ZltNXTpFW01dPTA7dGhpcy5fYmFja2dyb3VuZC5kcmF3KHIsbixhLGksRSx0aGlzLmJhY2tncm91bmRDb2xvciksdGhpcy5fbGluZXMuYmluZChyLG4sYSx0aGlzKTtmb3IoTT0wO008MzsrK00pe3ZhciBMPVswLDAsMF07ZltNXT4wP0xbTV09aVsxXVtNXTpMW01dPWlbMF1bTV07Zm9yKHZhciBDPTA7QzwyOysrQyl7dmFyIFA9KE0rMStDKSUzLE89KE0rMSsoMV5DKSklMzt0aGlzLmdyaWRFbmFibGVbUF0mJnRoaXMuX2xpbmVzLmRyYXdHcmlkKFAsTyx0aGlzLmJvdW5kcyxMLHRoaXMuZ3JpZENvbG9yW1BdLHRoaXMuZ3JpZFdpZHRoW1BdKnRoaXMucGl4ZWxSYXRpbyl9Zm9yKEM9MDtDPDI7KytDKXtQPShNKzErQyklMyxPPShNKzErKDFeQykpJTM7dGhpcy56ZXJvRW5hYmxlW09dJiZNYXRoLm1pbihpWzBdW09dLGlbMV1bT10pPD0wJiZNYXRoLm1heChpWzBdW09dLGlbMV1bT10pPj0wJiZ0aGlzLl9saW5lcy5kcmF3WmVybyhQLE8sdGhpcy5ib3VuZHMsTCx0aGlzLnplcm9MaW5lQ29sb3JbT10sdGhpcy56ZXJvTGluZVdpZHRoW09dKnRoaXMucGl4ZWxSYXRpbyl9fWZvcihNPTA7TTwzOysrTSl7dGhpcy5saW5lRW5hYmxlW01dJiZ0aGlzLl9saW5lcy5kcmF3QXhpc0xpbmUoTSx0aGlzLmJvdW5kcyxBW01dLnByaW1hbE9mZnNldCx0aGlzLmxpbmVDb2xvcltNXSx0aGlzLmxpbmVXaWR0aFtNXSp0aGlzLnBpeGVsUmF0aW8pLHRoaXMubGluZU1pcnJvcltNXSYmdGhpcy5fbGluZXMuZHJhd0F4aXNMaW5lKE0sdGhpcy5ib3VuZHMsQVtNXS5taXJyb3JPZmZzZXQsdGhpcy5saW5lQ29sb3JbTV0sdGhpcy5saW5lV2lkdGhbTV0qdGhpcy5waXhlbFJhdGlvKTt2YXIgej1jKG0sQVtNXS5wcmltYWxNaW5vciksST1jKHksQVtNXS5taXJyb3JNaW5vciksRD10aGlzLmxpbmVUaWNrTGVuZ3RoO2ZvcihDPTA7QzwzOysrQyl7dmFyIFI9VC9yWzUqQ107eltDXSo9RFtDXSpSLElbQ10qPURbQ10qUn10aGlzLmxpbmVUaWNrRW5hYmxlW01dJiZ0aGlzLl9saW5lcy5kcmF3QXhpc1RpY2tzKE0sQVtNXS5wcmltYWxPZmZzZXQseix0aGlzLmxpbmVUaWNrQ29sb3JbTV0sdGhpcy5saW5lVGlja1dpZHRoW01dKnRoaXMucGl4ZWxSYXRpbyksdGhpcy5saW5lVGlja01pcnJvcltNXSYmdGhpcy5fbGluZXMuZHJhd0F4aXNUaWNrcyhNLEFbTV0ubWlycm9yT2Zmc2V0LEksdGhpcy5saW5lVGlja0NvbG9yW01dLHRoaXMubGluZVRpY2tXaWR0aFtNXSp0aGlzLnBpeGVsUmF0aW8pfXRoaXMuX2xpbmVzLnVuYmluZCgpLHRoaXMuX3RleHQuYmluZChyLG4sYSx0aGlzLnBpeGVsUmF0aW8pO3ZhciBGLEI7ZnVuY3Rpb24gTih0KXsoQj1bMCwwLDBdKVt0XT0xfWZ1bmN0aW9uIGoodCxlLHIpe3ZhciBuPSh0KzEpJTMsYT0odCsyKSUzLGk9ZVtuXSxvPWVbYV0scz1yW25dLGw9clthXTtpPjAmJmw+MD9OKG4pOmk+MCYmbDwwP04obik6aTwwJiZsPjA/TihuKTppPDAmJmw8MD9OKG4pOm8+MCYmcz4wP04oYSk6bz4wJiZzPDA/TihhKTpvPDAmJnM+MD9OKGEpOm88MCYmczwwJiZOKGEpfWZvcihNPTA7TTwzOysrTSl7dmFyIFY9QVtNXS5wcmltYWxNaW5vcixVPUFbTV0ubWlycm9yTWlub3IscT1jKHgsQVtNXS5wcmltYWxPZmZzZXQpO2ZvcihDPTA7QzwzOysrQyl0aGlzLmxpbmVUaWNrRW5hYmxlW01dJiYocVtDXSs9VCpWW0NdKk1hdGgubWF4KHRoaXMubGluZVRpY2tMZW5ndGhbQ10sMCkvcls1KkNdKTt2YXIgSD1bMCwwLDBdO2lmKEhbTV09MSx0aGlzLnRpY2tFbmFibGVbTV0pey0zNjAwPT09dGhpcy50aWNrQW5nbGVbTV0/KHRoaXMudGlja0FuZ2xlW01dPTAsdGhpcy50aWNrQWxpZ25bTV09ImF1dG8iKTp0aGlzLnRpY2tBbGlnbltNXT0tMSxGPTEsImF1dG8iPT09KFM9W3RoaXMudGlja0FsaWduW01dLC41LEZdKVswXT9TWzBdPTA6U1swXT1wYXJzZUludCgiIitTWzBdKSxCPVswLDAsMF0saihNLFYsVSk7Zm9yKEM9MDtDPDM7KytDKXFbQ10rPVQqVltDXSp0aGlzLnRpY2tQYWRbQ10vcls1KkNdO3RoaXMuX3RleHQuZHJhd1RpY2tzKE0sdGhpcy50aWNrU2l6ZVtNXSx0aGlzLnRpY2tBbmdsZVtNXSxxLHRoaXMudGlja0NvbG9yW01dLEgsQixTKX1pZih0aGlzLmxhYmVsRW5hYmxlW01dKXtGPTAsQj1bMCwwLDBdLHRoaXMubGFiZWxzW01dLmxlbmd0aD40JiYoTihNKSxGPTEpLCJhdXRvIj09PShTPVt0aGlzLmxhYmVsQWxpZ25bTV0sLjUsRl0pWzBdP1NbMF09MDpTWzBdPXBhcnNlSW50KCIiK1NbMF0pO2ZvcihDPTA7QzwzOysrQylxW0NdKz1UKlZbQ10qdGhpcy5sYWJlbFBhZFtDXS9yWzUqQ107cVtNXSs9LjUqKGlbMF1bTV0raVsxXVtNXSksdGhpcy5fdGV4dC5kcmF3TGFiZWwoTSx0aGlzLmxhYmVsU2l6ZVtNXSx0aGlzLmxhYmVsQW5nbGVbTV0scSx0aGlzLmxhYmVsQ29sb3JbTV0sWzAsMCwwXSxCLFMpfX10aGlzLl90ZXh0LnVuYmluZCgpfSxoLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl90ZXh0LmRpc3Bvc2UoKSx0aGlzLl9saW5lcy5kaXNwb3NlKCksdGhpcy5fYmFja2dyb3VuZC5kaXNwb3NlKCksdGhpcy5fbGluZXM9bnVsbCx0aGlzLl90ZXh0PW51bGwsdGhpcy5fYmFja2dyb3VuZD1udWxsLHRoaXMuZ2w9bnVsbH19LHsiLi9saWIvYmFja2dyb3VuZC5qcyI6MjM3LCIuL2xpYi9jdWJlLmpzIjoyMzgsIi4vbGliL2xpbmVzLmpzIjoyMzksIi4vbGliL3RleHQuanMiOjI0MSwiLi9saWIvdGlja3MuanMiOjI0Mn1dLDIzNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9W10scz0wLGw9MDtsPDM7KytsKWZvcih2YXIgYz0obCsxKSUzLHU9KGwrMiklMyxoPVswLDAsMF0sZj1bMCwwLDBdLHA9LTE7cDw9MTtwKz0yKXtyLnB1c2gocyxzKzIscysxLHMrMSxzKzIscyszKSxoW2xdPXAsZltsXT1wO2Zvcih2YXIgZD0tMTtkPD0xO2QrPTIpe2hbY109ZDtmb3IodmFyIGc9LTE7Zzw9MTtnKz0yKWhbdV09ZyxlLnB1c2goaFswXSxoWzFdLGhbMl0sZlswXSxmWzFdLGZbMl0pLHMrPTF9dmFyIHY9YztjPXUsdT12fXZhciBtPW4odCxuZXcgRmxvYXQzMkFycmF5KGUpKSx5PW4odCxuZXcgVWludDE2QXJyYXkociksdC5FTEVNRU5UX0FSUkFZX0JVRkZFUikseD1hKHQsW3tidWZmZXI6bSx0eXBlOnQuRkxPQVQsc2l6ZTozLG9mZnNldDowLHN0cmlkZToyNH0se2J1ZmZlcjptLHR5cGU6dC5GTE9BVCxzaXplOjMsb2Zmc2V0OjEyLHN0cmlkZToyNH1dLHkpLGI9aSh0KTtyZXR1cm4gYi5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsYi5hdHRyaWJ1dGVzLm5vcm1hbC5sb2NhdGlvbj0xLG5ldyBvKHQsbSx4LGIpfTt2YXIgbj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLGk9dCgiLi9zaGFkZXJzIikuYmc7ZnVuY3Rpb24gbyh0LGUscixuKXt0aGlzLmdsPXQsdGhpcy5idWZmZXI9ZSx0aGlzLnZhbz1yLHRoaXMuc2hhZGVyPW59dmFyIHM9by5wcm90b3R5cGU7cy5kcmF3PWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtmb3IodmFyIG89ITEscz0wO3M8MzsrK3Mpbz1vfHxhW3NdO2lmKG8pe3ZhciBsPXRoaXMuZ2w7bC5lbmFibGUobC5QT0xZR09OX09GRlNFVF9GSUxMKSxsLnBvbHlnb25PZmZzZXQoMSwyKSx0aGlzLnNoYWRlci5iaW5kKCksdGhpcy5zaGFkZXIudW5pZm9ybXM9e21vZGVsOnQsdmlldzplLHByb2plY3Rpb246cixib3VuZHM6bixlbmFibGU6YSxjb2xvcnM6aX0sdGhpcy52YW8uYmluZCgpLHRoaXMudmFvLmRyYXcodGhpcy5nbC5UUklBTkdMRVMsMzYpLHRoaXMudmFvLnVuYmluZCgpLGwuZGlzYWJsZShsLlBPTFlHT05fT0ZGU0VUX0ZJTEwpfX0scy5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy52YW8uZGlzcG9zZSgpLHRoaXMuYnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnNoYWRlci5kaXNwb3NlKCl9fSx7Ii4vc2hhZGVycyI6MjQwLCJnbC1idWZmZXIiOjI0NCwiZ2wtdmFvIjozMjl9XSwyMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkscCl7YShzLGUsdCksYShzLHIscyk7Zm9yKHZhciB5PTAseD0wO3g8MjsrK3gpe3VbMl09aVt4XVsyXTtmb3IodmFyIGI9MDtiPDI7KytiKXt1WzFdPWlbYl1bMV07Zm9yKHZhciBfPTA7XzwyOysrXyl1WzBdPWlbX11bMF0sZihsW3ldLHUscykseSs9MX19Zm9yKHZhciB3PS0xLHg9MDt4PDg7Kyt4KXtmb3IodmFyIGs9bFt4XVszXSxUPTA7VDwzOysrVCljW3hdW1RdPWxbeF1bVF0vaztwJiYoY1t4XVsyXSo9LTEpLGs8MCYmKHc8MD93PXg6Y1t4XVsyXTxjW3ddWzJdJiYodz14KSl9aWYodzwwKXt3PTA7Zm9yKHZhciBNPTA7TTwzOysrTSl7Zm9yKHZhciBBPShNKzIpJTMsUz0oTSsxKSUzLEU9LTEsTD0tMSxDPTA7QzwyOysrQyl7dmFyIFA9Qzw8TSxPPVArKEM8PEEpKygxLUM8PFMpLHo9UCsoMS1DPDxBKSsoQzw8Uyk7byhjW1BdLGNbT10sY1t6XSxoKTwwfHwoQz9FPTE6TD0xKX1pZihFPDB8fEw8MClMPkUmJih3fD0xPDxNKTtlbHNle2Zvcih2YXIgQz0wO0M8MjsrK0Mpe3ZhciBQPUM8PE0sTz1QKyhDPDxBKSsoMS1DPDxTKSx6PVArKDEtQzw8QSkrKEM8PFMpLEk9ZChbbFtQXSxsW09dLGxbel0sbFtQKygxPDxBKSsoMTw8UyldXSk7Qz9FPUk6TD1JfUw+RSYmKHd8PTE8PE0pfX19Zm9yKHZhciBEPTdedyxSPS0xLHg9MDt4PDg7Kyt4KXghPT13JiZ4IT09RCYmKFI8MD9SPXg6Y1tSXVsxXT5jW3hdWzFdJiYoUj14KSk7Zm9yKHZhciBGPS0xLHg9MDt4PDM7Kyt4KXt2YXIgQj1SXjE8PHg7aWYoQiE9PXcmJkIhPT1EKXtGPDAmJihGPUIpO3ZhciBTPWNbQl07U1swXTxjW0ZdWzBdJiYoRj1CKX19Zm9yKHZhciBOPS0xLHg9MDt4PDM7Kyt4KXt2YXIgQj1SXjE8PHg7aWYoQiE9PXcmJkIhPT1EJiZCIT09Ril7TjwwJiYoTj1CKTt2YXIgUz1jW0JdO1NbMF0+Y1tOXVswXSYmKE49Qil9fXZhciBqPWc7alswXT1qWzFdPWpbMl09MCxqW24ubG9nMihGXlIpXT1SJkYsaltuLmxvZzIoUl5OKV09UiZOO3ZhciBWPTdeTjtWPT09d3x8Vj09PUQ/KFY9N15GLGpbbi5sb2cyKE5eVildPVYmTik6altuLmxvZzIoRl5WKV09ViZGO2Zvcih2YXIgVT12LHE9dyxNPTA7TTwzOysrTSlVW01dPXEmMTw8TT8tMToxO3JldHVybiBtfTt2YXIgbj10KCJiaXQtdHdpZGRsZSIpLGE9dCgiZ2wtbWF0NC9tdWx0aXBseSIpLGk9dCgic3BsaXQtcG9seWdvbiIpLG89dCgicm9idXN0LW9yaWVudGF0aW9uIikscz1uZXcgQXJyYXkoMTYpLGw9bmV3IEFycmF5KDgpLGM9bmV3IEFycmF5KDgpLHU9bmV3IEFycmF5KDMpLGg9WzAsMCwwXTtmdW5jdGlvbiBmKHQsZSxyKXtmb3IodmFyIG49MDtuPDQ7KytuKXt0W25dPXJbMTIrbl07Zm9yKHZhciBhPTA7YTwzOysrYSl0W25dKz1lW2FdKnJbNCphK25dfX0hZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDg7Kyt0KWxbdF09WzEsMSwxLDFdLGNbdF09WzEsMSwxXX0oKTt2YXIgcD1bWzAsMCwxLDAsMF0sWzAsMCwtMSwxLDBdLFswLC0xLDAsMSwwXSxbMCwxLDAsMSwwXSxbLTEsMCwwLDEsMF0sWzEsMCwwLDEsMF1dO2Z1bmN0aW9uIGQodCl7Zm9yKHZhciBlPTA7ZTxwLmxlbmd0aDsrK2UpaWYoKHQ9aS5wb3NpdGl2ZSh0LHBbZV0pKS5sZW5ndGg8MylyZXR1cm4gMDt2YXIgcj10WzBdLG49clswXS9yWzNdLGE9clsxXS9yWzNdLG89MDtmb3IoZT0xO2UrMTx0Lmxlbmd0aDsrK2Upe3ZhciBzPXRbZV0sbD10W2UrMV0sYz1zWzBdL3NbM10tbix1PXNbMV0vc1szXS1hLGg9bFswXS9sWzNdLW4sZj1sWzFdL2xbM10tYTtvKz1NYXRoLmFicyhjKmYtdSpoKX1yZXR1cm4gb312YXIgZz1bMSwxLDFdLHY9WzAsMCwwXSxtPXtjdWJlRWRnZXM6ZyxheGlzOnZ9fSx7ImJpdC10d2lkZGxlIjo5NCwiZ2wtbWF0NC9tdWx0aXBseSI6MjcwLCJyb2J1c3Qtb3JpZW50YXRpb24iOjUwOSwic3BsaXQtcG9seWdvbiI6NTI2fV0sMjM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG89W10scz1bMCwwLDBdLGw9WzAsMCwwXSxjPVswLDAsMF0sdT1bMCwwLDBdO28ucHVzaCgwLDAsMSwwLDEsMSwwLDAsLTEsMCwwLC0xLDAsMSwxLDAsMSwtMSk7Zm9yKHZhciBoPTA7aDwzOysraCl7Zm9yKHZhciBmPW8ubGVuZ3RoLzN8MCxkPTA7ZDxyW2hdLmxlbmd0aDsrK2Qpe3ZhciBnPStyW2hdW2RdLng7by5wdXNoKGcsMCwxLGcsMSwxLGcsMCwtMSxnLDAsLTEsZywxLDEsZywxLC0xKX12YXIgdj1vLmxlbmd0aC8zfDA7c1toXT1mLGxbaF09di1mO2Zvcih2YXIgZj1vLmxlbmd0aC8zfDAsbT0wO208cltoXS5sZW5ndGg7KyttKXt2YXIgZz0rcltoXVttXS54O28ucHVzaChnLDAsMSxnLDEsMSxnLDAsLTEsZywwLC0xLGcsMSwxLGcsMSwtMSl9dmFyIHY9by5sZW5ndGgvM3wwO2NbaF09Zix1W2hdPXYtZn12YXIgeT1uKHQsbmV3IEZsb2F0MzJBcnJheShvKSkseD1hKHQsW3tidWZmZXI6eSx0eXBlOnQuRkxPQVQsc2l6ZTozLHN0cmlkZTowLG9mZnNldDowfV0pLGI9aSh0KTtyZXR1cm4gYi5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsbmV3IHAodCx5LHgsYixsLHMsdSxjKX07dmFyIG49dCgiZ2wtYnVmZmVyIiksYT10KCJnbC12YW8iKSxpPXQoIi4vc2hhZGVycyIpLmxpbmUsbz1bMCwwLDBdLHM9WzAsMCwwXSxsPVswLDAsMF0sYz1bMCwwLDBdLHU9WzEsMV07ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdFswXT10WzFdPXRbMl09MCx0fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVsxXSx0WzJdPWVbMl0sdH1mdW5jdGlvbiBwKHQsZSxyLG4sYSxpLG8scyl7dGhpcy5nbD10LHRoaXMudmVydEJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5zaGFkZXI9bix0aGlzLnRpY2tDb3VudD1hLHRoaXMudGlja09mZnNldD1pLHRoaXMuZ3JpZENvdW50PW8sdGhpcy5ncmlkT2Zmc2V0PXN9dmFyIGQ9cC5wcm90b3R5cGU7ZC5iaW5kPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnNoYWRlci5iaW5kKCksdGhpcy5zaGFkZXIudW5pZm9ybXMubW9kZWw9dCx0aGlzLnNoYWRlci51bmlmb3Jtcy52aWV3PWUsdGhpcy5zaGFkZXIudW5pZm9ybXMucHJvamVjdGlvbj1yLHVbMF09dGhpcy5nbC5kcmF3aW5nQnVmZmVyV2lkdGgsdVsxXT10aGlzLmdsLmRyYXdpbmdCdWZmZXJIZWlnaHQsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NyZWVuU2hhcGU9dSx0aGlzLnZhby5iaW5kKCl9LGQudW5iaW5kPWZ1bmN0aW9uKCl7dGhpcy52YW8udW5iaW5kKCl9LGQuZHJhd0F4aXNMaW5lPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9aChzKTt0aGlzLnNoYWRlci51bmlmb3Jtcy5tYWpvckF4aXM9cyxpW3RdPWVbMV1bdF0tZVswXVt0XSx0aGlzLnNoYWRlci51bmlmb3Jtcy5taW5vckF4aXM9aTt2YXIgbyx1PWYoYyxyKTt1W3RdKz1lWzBdW3RdLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm9mZnNldD11LHRoaXMuc2hhZGVyLnVuaWZvcm1zLmxpbmVXaWR0aD1hLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPW4sKG89aChsKSlbKHQrMiklM109MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5zY3JlZW5BeGlzPW8sdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyw2KSwobz1oKGwpKVsodCsxKSUzXT0xLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNjcmVlbkF4aXM9byx0aGlzLnZhby5kcmF3KHRoaXMuZ2wuVFJJQU5HTEVTLDYpfSxkLmRyYXdBeGlzVGlja3M9ZnVuY3Rpb24odCxlLHIsbixhKXtpZih0aGlzLnRpY2tDb3VudFt0XSl7dmFyIGk9aChvKTtpW3RdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlzPWksdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PWUsdGhpcy5zaGFkZXIudW5pZm9ybXMubWlub3JBeGlzPXIsdGhpcy5zaGFkZXIudW5pZm9ybXMuY29sb3I9bix0aGlzLnNoYWRlci51bmlmb3Jtcy5saW5lV2lkdGg9YTt2YXIgcz1oKGwpO3NbdF09MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5zY3JlZW5BeGlzPXMsdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyx0aGlzLnRpY2tDb3VudFt0XSx0aGlzLnRpY2tPZmZzZXRbdF0pfX0sZC5kcmF3R3JpZD1mdW5jdGlvbih0LGUscixuLGEsaSl7aWYodGhpcy5ncmlkQ291bnRbdF0pe3ZhciB1PWgocyk7dVtlXT1yWzFdW2VdLXJbMF1bZV0sdGhpcy5zaGFkZXIudW5pZm9ybXMubWlub3JBeGlzPXU7dmFyIHA9ZihjLG4pO3BbZV0rPXJbMF1bZV0sdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PXA7dmFyIGQ9aChvKTtkW3RdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlzPWQ7dmFyIGc9aChsKTtnW3RdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NyZWVuQXhpcz1nLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmxpbmVXaWR0aD1pLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPWEsdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyx0aGlzLmdyaWRDb3VudFt0XSx0aGlzLmdyaWRPZmZzZXRbdF0pfX0sZC5kcmF3WmVybz1mdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG89aChzKTt0aGlzLnNoYWRlci51bmlmb3Jtcy5tYWpvckF4aXM9byxvW3RdPXJbMV1bdF0tclswXVt0XSx0aGlzLnNoYWRlci51bmlmb3Jtcy5taW5vckF4aXM9bzt2YXIgdT1mKGMsbik7dVt0XSs9clswXVt0XSx0aGlzLnNoYWRlci51bmlmb3Jtcy5vZmZzZXQ9dTt2YXIgcD1oKGwpO3BbZV09MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5zY3JlZW5BeGlzPXAsdGhpcy5zaGFkZXIudW5pZm9ybXMubGluZVdpZHRoPWksdGhpcy5zaGFkZXIudW5pZm9ybXMuY29sb3I9YSx0aGlzLnZhby5kcmF3KHRoaXMuZ2wuVFJJQU5HTEVTLDYpfSxkLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZhby5kaXNwb3NlKCksdGhpcy52ZXJ0QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnNoYWRlci5kaXNwb3NlKCl9fSx7Ii4vc2hhZGVycyI6MjQwLCJnbC1idWZmZXIiOjI0NCwiZ2wtdmFvIjozMjl9XSwyNDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2xzbGlmeSIpLGE9dCgiZ2wtc2hhZGVyIiksaT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBvZmZzZXQsIG1ham9yQXhpcywgbWlub3JBeGlzLCBzY3JlZW5BeGlzO1xudW5pZm9ybSBmbG9hdCBsaW5lV2lkdGg7XG51bmlmb3JtIHZlYzIgc2NyZWVuU2hhcGU7XG5cbnZlYzMgcHJvamVjdCh2ZWMzIHApIHtcbiAgdmVjNCBwcCA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHAsIDEuMCk7XG4gIHJldHVybiBwcC54eXogLyBtYXgocHAudywgMC4wMDAxKTtcbn1cblxudm9pZCBtYWluKCkge1xuICB2ZWMzIG1ham9yID0gcG9zaXRpb24ueCAqIG1ham9yQXhpcztcbiAgdmVjMyBtaW5vciA9IHBvc2l0aW9uLnkgKiBtaW5vckF4aXM7XG5cbiAgdmVjMyB2UG9zaXRpb24gPSBtYWpvciArIG1pbm9yICsgb2Zmc2V0O1xuICB2ZWMzIHBQb3NpdGlvbiA9IHByb2plY3QodlBvc2l0aW9uKTtcbiAgdmVjMyBvZmZzZXQgPSBwcm9qZWN0KHZQb3NpdGlvbiArIHNjcmVlbkF4aXMgKiBwb3NpdGlvbi56KTtcblxuICB2ZWMyIHNjcmVlbiA9IG5vcm1hbGl6ZSgob2Zmc2V0IC0gcFBvc2l0aW9uKS54eSAqIHNjcmVlblNoYXBlKSAvIHNjcmVlblNoYXBlO1xuXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwUG9zaXRpb24gKyB2ZWMzKDAuNSAqIHNjcmVlbiAqIGxpbmVXaWR0aCwgMCksIDEuMCk7XG59XG4iXSksbz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yO1xudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbn0iXSk7ci5saW5lPWZ1bmN0aW9uKHQpe3JldHVybiBhKHQsaSxvLG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9XSl9O3ZhciBzPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMzIG9mZnNldCwgYXhpcywgYWxpZ25EaXIsIGFsaWduT3B0O1xudW5pZm9ybSBmbG9hdCBzY2FsZSwgYW5nbGUsIHBpeGVsU2NhbGU7XG51bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjtcblxudmVjMyBwcm9qZWN0KHZlYzMgcCkge1xuICB2ZWM0IHBwID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocCwgMS4wKTtcbiAgcmV0dXJuIHBwLnh5eiAvIG1heChwcC53LCAwLjAwMDEpO1xufVxuXG5mbG9hdCBjb21wdXRlVmlld0FuZ2xlKHZlYzMgYSwgdmVjMyBiKSB7XG4gIHZlYzMgQSA9IHByb2plY3QoYSk7XG4gIHZlYzMgQiA9IHByb2plY3QoYik7XG5cbiAgcmV0dXJuIGF0YW4oXG4gICAgKEIueSAtIEEueSkgKiByZXNvbHV0aW9uLnksXG4gICAgKEIueCAtIEEueCkgKiByZXNvbHV0aW9uLnhcbiAgKTtcbn1cblxuY29uc3QgZmxvYXQgUEkgPSAzLjE0MTU5MjtcbmNvbnN0IGZsb2F0IFRXT19QSSA9IDIuMCAqIFBJO1xuY29uc3QgZmxvYXQgSEFMRl9QSSA9IDAuNSAqIFBJO1xuY29uc3QgZmxvYXQgT05FX0FORF9IQUxGX1BJID0gMS41ICogUEk7XG5cbmludCBvcHRpb24gPSBpbnQoZmxvb3IoYWxpZ25PcHQueCArIDAuMDAxKSk7XG5mbG9hdCBodl9yYXRpbyA9ICAgICAgIGFsaWduT3B0Lnk7XG5ib29sIGVuYWJsZUFsaWduID0gICAgKGFsaWduT3B0LnogIT0gMC4wKTtcblxuZmxvYXQgbW9kX2FuZ2xlKGZsb2F0IGEpIHtcbiAgcmV0dXJuIG1vZChhLCBQSSk7XG59XG5cbmZsb2F0IHBvc2l0aXZlX2FuZ2xlKGZsb2F0IGEpIHtcbiAgcmV0dXJuIG1vZF9hbmdsZSgoYSA8IDAuMCkgP1xuICAgIGEgKyBUV09fUEkgOlxuICAgIGFcbiAgKTtcbn1cblxuZmxvYXQgbG9va191cHdhcmRzKGZsb2F0IGEpIHtcbiAgZmxvYXQgYiA9IHBvc2l0aXZlX2FuZ2xlKGEpO1xuICByZXR1cm4gKChiID4gSEFMRl9QSSkgJiYgKGIgPD0gT05FX0FORF9IQUxGX1BJKSkgP1xuICAgIGIgLSBQSSA6XG4gICAgYjtcbn1cblxuZmxvYXQgbG9va19ob3Jpem9udGFsX29yX3ZlcnRpY2FsKGZsb2F0IGEsIGZsb2F0IHJhdGlvKSB7XG4gIC8vIHJhdGlvIGNvbnRyb2xzIHRoZSByYXRpbyBiZXR3ZWVuIGJlaW5nIGhvcml6b250YWwgdG8gKHZlcnRpY2FsICsgaG9yaXpvbnRhbClcbiAgLy8gaWYgcmF0aW8gaXMgc2V0IHRvIDAuNSB0aGVuIGl0IGlzIDUwJSwgNTAlLlxuICAvLyB3aGVuIHVzaW5nIGEgaGlnaGVyIHJhdGlvIGUuZy4gMC43NSB0aGUgcmVzdWx0IHdvdWxkXG4gIC8vIGxpa2VseSBiZSBtb3JlIGhvcml6b250YWwgdGhhbiB2ZXJ0aWNhbC5cblxuICBmbG9hdCBiID0gcG9zaXRpdmVfYW5nbGUoYSk7XG5cbiAgcmV0dXJuXG4gICAgKGIgPCAoICAgICAgcmF0aW8pICogSEFMRl9QSSkgPyAwLjAgOlxuICAgIChiIDwgKDIuMCAtIHJhdGlvKSAqIEhBTEZfUEkpID8gLUhBTEZfUEkgOlxuICAgIChiIDwgKDIuMCArIHJhdGlvKSAqIEhBTEZfUEkpID8gMC4wIDpcbiAgICAoYiA8ICg0LjAgLSByYXRpbykgKiBIQUxGX1BJKSA/IEhBTEZfUEkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wO1xufVxuXG5mbG9hdCByb3VuZFRvKGZsb2F0IGEsIGZsb2F0IGIpIHtcbiAgcmV0dXJuIGZsb2F0KGIgKiBmbG9vcigoYSArIDAuNSAqIGIpIC8gYikpO1xufVxuXG5mbG9hdCBsb29rX3JvdW5kX25fZGlyZWN0aW9ucyhmbG9hdCBhLCBpbnQgbikge1xuICBmbG9hdCBiID0gcG9zaXRpdmVfYW5nbGUoYSk7XG4gIGZsb2F0IGRpdiA9IFRXT19QSSAvIGZsb2F0KG4pO1xuICBmbG9hdCBjID0gcm91bmRUbyhiLCBkaXYpO1xuICByZXR1cm4gbG9va191cHdhcmRzKGMpO1xufVxuXG5mbG9hdCBhcHBseUFsaWduT3B0aW9uKGZsb2F0IHJhd0FuZ2xlLCBmbG9hdCBkZWx0YSkge1xuICByZXR1cm5cbiAgICAob3B0aW9uID4gIDIpID8gbG9va19yb3VuZF9uX2RpcmVjdGlvbnMocmF3QW5nbGUgKyBkZWx0YSwgb3B0aW9uKSA6ICAgICAgIC8vIG9wdGlvbiAzLW46IHJvdW5kIHRvIG4gZGlyZWN0aW9uc1xuICAgIChvcHRpb24gPT0gMikgPyBsb29rX2hvcml6b250YWxfb3JfdmVydGljYWwocmF3QW5nbGUgKyBkZWx0YSwgaHZfcmF0aW8pIDogLy8gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbFxuICAgIChvcHRpb24gPT0gMSkgPyByYXdBbmdsZSArIGRlbHRhIDogICAgICAgLy8gdXNlIGZyZWUgYW5nbGUsIGFuZCBmbGlwIHRvIGFsaWduIHdpdGggb25lIGRpcmVjdGlvbiBvZiB0aGUgYXhpc1xuICAgIChvcHRpb24gPT0gMCkgPyBsb29rX3Vwd2FyZHMocmF3QW5nbGUpIDogLy8gdXNlIGZyZWUgYW5nbGUsIGFuZCBzdGF5IHVwd2FyZHNcbiAgICAob3B0aW9uID09LTEpID8gMC4wIDogICAgICAgICAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgYWxsIHRleHRzIHJlbWFpbnMgaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICByYXdBbmdsZTsgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHJldHVybiBiYWNrIHJhdyBpbnB1dCBhbmdsZVxufVxuXG5ib29sIGlzQXhpc1RpdGxlID0gKGF4aXMueCA9PSAwLjApICYmXG4gICAgICAgICAgICAgICAgICAgKGF4aXMueSA9PSAwLjApICYmXG4gICAgICAgICAgICAgICAgICAgKGF4aXMueiA9PSAwLjApO1xuXG52b2lkIG1haW4oKSB7XG4gIC8vQ29tcHV0ZSB3b3JsZCBvZmZzZXRcbiAgZmxvYXQgYXhpc0Rpc3RhbmNlID0gcG9zaXRpb24uejtcbiAgdmVjMyBkYXRhUG9zaXRpb24gPSBheGlzRGlzdGFuY2UgKiBheGlzICsgb2Zmc2V0O1xuXG4gIGZsb2F0IGJldGEgPSBhbmdsZTsgLy8gaS5lLiB1c2VyIGRlZmluZWQgYXR0cmlidXRlcyBmb3IgZWFjaCB0aWNrXG5cbiAgZmxvYXQgYXhpc0FuZ2xlO1xuICBmbG9hdCBjbGlwQW5nbGU7XG4gIGZsb2F0IGZsaXA7XG5cbiAgaWYgKGVuYWJsZUFsaWduKSB7XG4gICAgYXhpc0FuZ2xlID0gKGlzQXhpc1RpdGxlKSA/IEhBTEZfUEkgOlxuICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVWaWV3QW5nbGUoZGF0YVBvc2l0aW9uLCBkYXRhUG9zaXRpb24gKyBheGlzKTtcbiAgICBjbGlwQW5nbGUgPSBjb21wdXRlVmlld0FuZ2xlKGRhdGFQb3NpdGlvbiwgZGF0YVBvc2l0aW9uICsgYWxpZ25EaXIpO1xuXG4gICAgYXhpc0FuZ2xlICs9IChzaW4oYXhpc0FuZ2xlKSA8IDAuMCkgPyBQSSA6IDAuMDtcbiAgICBjbGlwQW5nbGUgKz0gKHNpbihjbGlwQW5nbGUpIDwgMC4wKSA/IFBJIDogMC4wO1xuXG4gICAgZmxpcCA9IChkb3QodmVjMihjb3MoYXhpc0FuZ2xlKSwgc2luKGF4aXNBbmdsZSkpLFxuICAgICAgICAgICAgICAgIHZlYzIoc2luKGNsaXBBbmdsZSksLWNvcyhjbGlwQW5nbGUpKSkgPiAwLjApID8gMS4wIDogMC4wO1xuXG4gICAgYmV0YSArPSBhcHBseUFsaWduT3B0aW9uKGNsaXBBbmdsZSwgZmxpcCAqIFBJKTtcbiAgfVxuXG4gIC8vQ29tcHV0ZSBwbGFuZSBvZmZzZXRcbiAgdmVjMiBwbGFuZUNvb3JkID0gcG9zaXRpb24ueHkgKiBwaXhlbFNjYWxlO1xuXG4gIG1hdDIgcGxhbmVYZm9ybSA9IHNjYWxlICogbWF0MihcbiAgICAgY29zKGJldGEpLCBzaW4oYmV0YSksXG4gICAgLXNpbihiZXRhKSwgY29zKGJldGEpXG4gICk7XG5cbiAgdmVjMiB2aWV3T2Zmc2V0ID0gMi4wICogcGxhbmVYZm9ybSAqIHBsYW5lQ29vcmQgLyByZXNvbHV0aW9uO1xuXG4gIC8vQ29tcHV0ZSBjbGlwIHBvc2l0aW9uXG4gIHZlYzMgY2xpcFBvc2l0aW9uID0gcHJvamVjdChkYXRhUG9zaXRpb24pO1xuXG4gIC8vQXBwbHkgdGV4dCBvZmZzZXQgaW4gY2xpcCBjb29yZGluYXRlc1xuICBjbGlwUG9zaXRpb24gKz0gdmVjMyh2aWV3T2Zmc2V0LCAwLjApO1xuXG4gIC8vRG9uZVxuICBnbF9Qb3NpdGlvbiA9IHZlYzQoY2xpcFBvc2l0aW9uLCAxLjApO1xufSJdKSxsPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG51bmlmb3JtIHZlYzQgY29sb3I7XG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xufSJdKTtyLnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCxzLGwsbnVsbCxbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn1dKX07dmFyIGM9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzMgbm9ybWFsO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIHZlYzMgZW5hYmxlO1xudW5pZm9ybSB2ZWMzIGJvdW5kc1syXTtcblxudmFyeWluZyB2ZWMzIGNvbG9yQ2hhbm5lbDtcblxudm9pZCBtYWluKCkge1xuXG4gIHZlYzMgc2lnbkF4aXMgPSBzaWduKGJvdW5kc1sxXSAtIGJvdW5kc1swXSk7XG5cbiAgdmVjMyByZWFsTm9ybWFsID0gc2lnbkF4aXMgKiBub3JtYWw7XG5cbiAgaWYoZG90KHJlYWxOb3JtYWwsIGVuYWJsZSkgPiAwLjApIHtcbiAgICB2ZWMzIG1pblJhbmdlID0gbWluKGJvdW5kc1swXSwgYm91bmRzWzFdKTtcbiAgICB2ZWMzIG1heFJhbmdlID0gbWF4KGJvdW5kc1swXSwgYm91bmRzWzFdKTtcbiAgICB2ZWMzIG5Qb3NpdGlvbiA9IG1peChtaW5SYW5nZSwgbWF4UmFuZ2UsIDAuNSAqIChwb3NpdGlvbiArIDEuMCkpO1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQoblBvc2l0aW9uLCAxLjApO1xuICB9IGVsc2Uge1xuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLDAsMCwwKTtcbiAgfVxuXG4gIGNvbG9yQ2hhbm5lbCA9IGFicyhyZWFsTm9ybWFsKTtcbn0iXSksdT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yc1szXTtcblxudmFyeWluZyB2ZWMzIGNvbG9yQ2hhbm5lbDtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBjb2xvckNoYW5uZWwueCAqIGNvbG9yc1swXSArXG4gICAgICAgICAgICAgICAgIGNvbG9yQ2hhbm5lbC55ICogY29sb3JzWzFdICtcbiAgICAgICAgICAgICAgICAgY29sb3JDaGFubmVsLnogKiBjb2xvcnNbMl07XG59Il0pO3IuYmc9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCxjLHUsbnVsbCxbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6Im5vcm1hbCIsdHlwZToidmVjMyJ9XSl9fSx7ImdsLXNoYWRlciI6MzA0LGdsc2xpZnk6NDExfV0sMjQxOltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxzLGwpe3ZhciB1PW4odCksaD1hKHQsW3tidWZmZXI6dSxzaXplOjN9XSksZj1vKHQpO2YuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wO3ZhciBwPW5ldyBjKHQsZix1LGgpO3JldHVybiBwLnVwZGF0ZShlLHIsaSxzLGwpLHB9O3ZhciBuPXQoImdsLWJ1ZmZlciIpLGE9dCgiZ2wtdmFvIiksaT10KCJ2ZWN0b3JpemUtdGV4dCIpLG89dCgiLi9zaGFkZXJzIikudGV4dCxzPXdpbmRvd3x8ci5nbG9iYWx8fHt9LGw9cy5fX1RFWFRfQ0FDSEV8fHt9O3MuX19URVhUX0NBQ0hFPXt9O2Z1bmN0aW9uIGModCxlLHIsbil7dGhpcy5nbD10LHRoaXMuc2hhZGVyPWUsdGhpcy5idWZmZXI9cix0aGlzLnZhbz1uLHRoaXMudGlja09mZnNldD10aGlzLnRpY2tDb3VudD10aGlzLmxhYmVsT2Zmc2V0PXRoaXMubGFiZWxDb3VudD1udWxsfXZhciB1PWMucHJvdG90eXBlLGg9WzAsMF07dS5iaW5kPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMudmFvLmJpbmQoKSx0aGlzLnNoYWRlci5iaW5kKCk7dmFyIGE9dGhpcy5zaGFkZXIudW5pZm9ybXM7YS5tb2RlbD10LGEudmlldz1lLGEucHJvamVjdGlvbj1yLGEucGl4ZWxTY2FsZT1uLGhbMF09dGhpcy5nbC5kcmF3aW5nQnVmZmVyV2lkdGgsaFsxXT10aGlzLmdsLmRyYXdpbmdCdWZmZXJIZWlnaHQsdGhpcy5zaGFkZXIudW5pZm9ybXMucmVzb2x1dGlvbj1ofSx1LnVuYmluZD1mdW5jdGlvbigpe3RoaXMudmFvLnVuYmluZCgpfSx1LnVwZGF0ZT1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBvPVtdO2Z1bmN0aW9uIHModCxlLHIsbixhLHMpe3ZhciBjPWxbcl07Y3x8KGM9bFtyXT17fSk7dmFyIHU9Y1tlXTt1fHwodT1jW2VdPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiBpKHQsZSl9Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUud2FybignZXJyb3IgdmVjdG9yaXppbmcgdGV4dDoiJyt0KyciIGVycm9yOicsZSkse2NlbGxzOltdLHBvc2l0aW9uczpbXX19fShlLHt0cmlhbmdsZXM6ITAsZm9udDpyLHRleHRBbGlnbjoiY2VudGVyIix0ZXh0QmFzZWxpbmU6Im1pZGRsZSIsbGluZVNwYWNpbmc6YSxzdHlsZXRhZ3M6c30pKTtmb3IodmFyIGg9KG58fDEyKS8xMixmPXUucG9zaXRpb25zLHA9dS5jZWxscyxkPTAsZz1wLmxlbmd0aDtkPGc7KytkKWZvcih2YXIgdj1wW2RdLG09MjttPj0wOy0tbSl7dmFyIHk9Zlt2W21dXTtvLnB1c2goaCp5WzBdLC1oKnlbMV0sdCl9fWZvcih2YXIgYz1bMCwwLDBdLHU9WzAsMCwwXSxoPVswLDAsMF0sZj1bMCwwLDBdLHA9e2JyZWFrbGluZXM6ITAsYm9sZHM6ITAsaXRhbGljczohMCxzdWJzY3JpcHRzOiEwLHN1cGVyc2NyaXB0czohMH0sZD0wO2Q8MzsrK2Qpe2hbZF09by5sZW5ndGgvM3wwLHMoLjUqKHRbMF1bZF0rdFsxXVtkXSksZVtkXSxyW2RdLDEyLDEuMjUscCksZltkXT0oby5sZW5ndGgvM3wwKS1oW2RdLGNbZF09by5sZW5ndGgvM3wwO2Zvcih2YXIgZz0wO2c8bltkXS5sZW5ndGg7KytnKW5bZF1bZ10udGV4dCYmcyhuW2RdW2ddLngsbltkXVtnXS50ZXh0LG5bZF1bZ10uZm9udHx8YSxuW2RdW2ddLmZvbnRTaXplfHwxMiwxLjI1LHApO3VbZF09KG8ubGVuZ3RoLzN8MCktY1tkXX10aGlzLmJ1ZmZlci51cGRhdGUobyksdGhpcy50aWNrT2Zmc2V0PWMsdGhpcy50aWNrQ291bnQ9dSx0aGlzLmxhYmVsT2Zmc2V0PWgsdGhpcy5sYWJlbENvdW50PWZ9LHUuZHJhd1RpY2tzPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyl7dGhpcy50aWNrQ291bnRbdF0mJih0aGlzLnNoYWRlci51bmlmb3Jtcy5heGlzPWksdGhpcy5zaGFkZXIudW5pZm9ybXMuY29sb3I9YSx0aGlzLnNoYWRlci51bmlmb3Jtcy5hbmdsZT1yLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNjYWxlPWUsdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PW4sdGhpcy5zaGFkZXIudW5pZm9ybXMuYWxpZ25EaXI9byx0aGlzLnNoYWRlci51bmlmb3Jtcy5hbGlnbk9wdD1zLHRoaXMudmFvLmRyYXcodGhpcy5nbC5UUklBTkdMRVMsdGhpcy50aWNrQ291bnRbdF0sdGhpcy50aWNrT2Zmc2V0W3RdKSl9LHUuZHJhd0xhYmVsPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyl7dGhpcy5sYWJlbENvdW50W3RdJiYodGhpcy5zaGFkZXIudW5pZm9ybXMuYXhpcz1pLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPWEsdGhpcy5zaGFkZXIudW5pZm9ybXMuYW5nbGU9cix0aGlzLnNoYWRlci51bmlmb3Jtcy5zY2FsZT1lLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm9mZnNldD1uLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmFsaWduRGlyPW8sdGhpcy5zaGFkZXIudW5pZm9ybXMuYWxpZ25PcHQ9cyx0aGlzLnZhby5kcmF3KHRoaXMuZ2wuVFJJQU5HTEVTLHRoaXMubGFiZWxDb3VudFt0XSx0aGlzLmxhYmVsT2Zmc2V0W3RdKSl9LHUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgpfX0pLmNhbGwodGhpcyx0KCJfcHJvY2VzcyIpKX0seyIuL3NoYWRlcnMiOjI0MCxfcHJvY2Vzczo0ODQsImdsLWJ1ZmZlciI6MjQ0LCJnbC12YW8iOjMyOSwidmVjdG9yaXplLXRleHQiOjU0OX1dLDI0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9dCsiIixuPXIuaW5kZXhPZigiLiIpLGE9MDtuPj0wJiYoYT1yLmxlbmd0aC1uLTEpO3ZhciBpPU1hdGgucG93KDEwLGEpLG89TWF0aC5yb3VuZCh0KmUqaSkscz1vKyIiO2lmKHMuaW5kZXhPZigiZSIpPj0wKXJldHVybiBzO3ZhciBsPW8vaSxjPW8laTtvPDA/KGw9MHwtTWF0aC5jZWlsKGwpLGM9MHwtYyk6KGw9MHxNYXRoLmZsb29yKGwpLGN8PTApO3ZhciB1PSIiK2w7aWYobzwwJiYodT0iLSIrdSksYSl7Zm9yKHZhciBoPSIiK2M7aC5sZW5ndGg8YTspaD0iMCIraDtyZXR1cm4gdSsiLiIraH1yZXR1cm4gdX1yLmNyZWF0ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxhPTA7YTwzOysrYSl7Zm9yKHZhciBpPVtdLG89KHRbMF1bYV0sdFsxXVthXSwwKTtvKmVbYV08PXRbMV1bYV07KytvKWkucHVzaCh7eDpvKmVbYV0sdGV4dDpuKGVbYV0sbyl9KTtmb3IodmFyIG89LTE7byplW2FdPj10WzBdW2FdOy0tbylpLnB1c2goe3g6byplW2FdLHRleHQ6bihlW2FdLG8pfSk7ci5wdXNoKGkpfXJldHVybiByfSxyLmVxdWFsPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjwzOysrcil7aWYodFtyXS5sZW5ndGghPT1lW3JdLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHRbcl0ubGVuZ3RoOysrbil7dmFyIGE9dFtyXVtuXSxpPWVbcl1bbl07aWYoYS54IT09aS54fHxhLnRleHQhPT1pLnRleHR8fGEuZm9udCE9PWkuZm9udHx8YS5mb250Q29sb3IhPT1pLmZvbnRDb2xvcnx8YS5mb250U2l6ZSE9PWkuZm9udFNpemV8fGEuZHghPT1pLmR4fHxhLmR5IT09aS5keSlyZXR1cm4hMX19cmV0dXJuITB9fSx7fV0sMjQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsLGgpe3ZhciBmPWUubW9kZWx8fGMscD1lLnZpZXd8fGMsbT1lLnByb2plY3Rpb258fGMseT1lLl9vcnRob3x8ITEseD10LmJvdW5kcyxiPShoPWh8fGkoZixwLG0seCx5KSkuYXhpcztvKHUscCxmKSxvKHUsbSx1KTtmb3IodmFyIF89Zyx3PTA7dzwzOysrdylfW3ddLmxvPTEvMCxfW3ddLmhpPS0xLzAsX1t3XS5waXhlbHNQZXJEYXRhVW5pdD0xLzA7dmFyIGs9bihzKHUsdSkpO3ModSx1KTtmb3IodmFyIFQ9MDtUPDM7KytUKXt2YXIgTT0oVCsxKSUzLEE9KFQrMiklMyxTPXY7dDpmb3IodmFyIHc9MDt3PDI7Kyt3KXt2YXIgRT1bXTtpZihiW1RdPDAhPSEhdyl7U1tUXT14W3ddW1RdO2Zvcih2YXIgTD0wO0w8MjsrK0wpe1NbTV09eFtMXnddW01dO2Zvcih2YXIgQz0wO0M8MjsrK0MpU1tBXT14W0NeTF53XVtBXSxFLnB1c2goUy5zbGljZSgpKX1mb3IodmFyIFA9eT81OjQsTD1QO0w9PT1QOysrTCl7aWYoMD09PUUubGVuZ3RoKWNvbnRpbnVlIHQ7RT1hLnBvc2l0aXZlKEUsa1tMXSl9Zm9yKHZhciBMPTA7TDxFLmxlbmd0aDsrK0wpZm9yKHZhciBBPUVbTF0sTz1kKHYsdSxBLHIsbCksQz0wO0M8MzsrK0MpX1tDXS5sbz1NYXRoLm1pbihfW0NdLmxvLEFbQ10pLF9bQ10uaGk9TWF0aC5tYXgoX1tDXS5oaSxBW0NdKSxDIT09VCYmKF9bQ10ucGl4ZWxzUGVyRGF0YVVuaXQ9TWF0aC5taW4oX1tDXS5waXhlbHNQZXJEYXRhVW5pdCxNYXRoLmFicyhPW0NdKSkpfX19cmV0dXJuIF99O3ZhciBuPXQoImV4dHJhY3QtZnJ1c3R1bS1wbGFuZXMiKSxhPXQoInNwbGl0LXBvbHlnb24iKSxpPXQoIi4vbGliL2N1YmUuanMiKSxvPXQoImdsLW1hdDQvbXVsdGlwbHkiKSxzPXQoImdsLW1hdDQvdHJhbnNwb3NlIiksbD10KCJnbC12ZWM0L3RyYW5zZm9ybU1hdDQiKSxjPW5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdKSx1PW5ldyBGbG9hdDMyQXJyYXkoMTYpO2Z1bmN0aW9uIGgodCxlLHIpe3RoaXMubG89dCx0aGlzLmhpPWUsdGhpcy5waXhlbHNQZXJEYXRhVW5pdD1yfXZhciBmPVswLDAsMCwxXSxwPVswLDAsMCwxXTtmdW5jdGlvbiBkKHQsZSxyLG4sYSl7Zm9yKHZhciBpPTA7aTwzOysraSl7Zm9yKHZhciBvPWYscz1wLGM9MDtjPDM7KytjKXNbY109b1tjXT1yW2NdO3NbM109b1szXT0xLHNbaV0rPTEsbChzLHMsZSksc1szXTwwJiYodFtpXT0xLzApLG9baV0tPTEsbChvLG8sZSksb1szXTwwJiYodFtpXT0xLzApO3ZhciB1PShvWzBdL29bM10tc1swXS9zWzNdKSpuLGg9KG9bMV0vb1szXS1zWzFdL3NbM10pKmE7dFtpXT0uMjUqTWF0aC5zcXJ0KHUqdStoKmgpfXJldHVybiB0fXZhciBnPVtuZXcgaCgxLzAsLTEvMCwxLzApLG5ldyBoKDEvMCwtMS8wLDEvMCksbmV3IGgoMS8wLC0xLzAsMS8wKV0sdj1bMCwwLDBdfSx7Ii4vbGliL2N1YmUuanMiOjIzOCwiZXh0cmFjdC1mcnVzdHVtLXBsYW5lcyI6MjI3LCJnbC1tYXQ0L211bHRpcGx5IjoyNzAsImdsLW1hdDQvdHJhbnNwb3NlIjoyNzksImdsLXZlYzQvdHJhbnNmb3JtTWF0NCI6NDAwLCJzcGxpdC1wb2x5Z29uIjo1MjZ9XSwyNDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidHlwZWRhcnJheS1wb29sIiksYT10KCJuZGFycmF5LW9wcyIpLGk9dCgibmRhcnJheSIpLG89WyJ1aW50OCIsInVpbnQ4X2NsYW1wZWQiLCJ1aW50MTYiLCJ1aW50MzIiLCJpbnQ4IiwiaW50MTYiLCJpbnQzMiIsImZsb2F0MzIiXTtmdW5jdGlvbiBzKHQsZSxyLG4sYSl7dGhpcy5nbD10LHRoaXMudHlwZT1lLHRoaXMuaGFuZGxlPXIsdGhpcy5sZW5ndGg9bix0aGlzLnVzYWdlPWF9dmFyIGw9cy5wcm90b3R5cGU7ZnVuY3Rpb24gYyh0LGUscixuLGEsaSl7dmFyIG89YS5sZW5ndGgqYS5CWVRFU19QRVJfRUxFTUVOVDtpZihpPDApcmV0dXJuIHQuYnVmZmVyRGF0YShlLGEsbiksbztpZihvK2k+cil0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZlcjogSWYgcmVzaXppbmcgYnVmZmVyLCBtdXN0IG5vdCBzcGVjaWZ5IG9mZnNldCIpO3JldHVybiB0LmJ1ZmZlclN1YkRhdGEoZSxpLGEpLHJ9ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgcj1uLm1hbGxvYyh0Lmxlbmd0aCxlKSxhPXQubGVuZ3RoLGk9MDtpPGE7KytpKXJbaV09dFtpXTtyZXR1cm4gcn1sLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy50eXBlLHRoaXMuaGFuZGxlKX0sbC51bmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy50eXBlLG51bGwpfSxsLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmdsLmRlbGV0ZUJ1ZmZlcih0aGlzLmhhbmRsZSl9LGwudXBkYXRlPWZ1bmN0aW9uKHQsZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlJiYoZT0tMSksdGhpcy5iaW5kKCksIm9iamVjdCI9PXR5cGVvZiB0JiYidW5kZWZpbmVkIiE9dHlwZW9mIHQuc2hhcGUpe3ZhciByPXQuZHR5cGU7aWYoby5pbmRleE9mKHIpPDAmJihyPSJmbG9hdDMyIiksdGhpcy50eXBlPT09dGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUilyPWdsLmdldEV4dGVuc2lvbigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpJiYidWludDE2IiE9PXI/InVpbnQzMiI6InVpbnQxNiI7aWYocj09PXQuZHR5cGUmJmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTEsbj1lLmxlbmd0aC0xO24+PTA7LS1uKXtpZihlW25dIT09cilyZXR1cm4hMTtyKj10W25dfXJldHVybiEwfSh0LnNoYXBlLHQuc3RyaWRlKSkwPT09dC5vZmZzZXQmJnQuZGF0YS5sZW5ndGg9PT10LnNoYXBlWzBdP3RoaXMubGVuZ3RoPWModGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51c2FnZSx0LmRhdGEsZSk6dGhpcy5sZW5ndGg9Yyh0aGlzLmdsLHRoaXMudHlwZSx0aGlzLmxlbmd0aCx0aGlzLnVzYWdlLHQuZGF0YS5zdWJhcnJheSh0Lm9mZnNldCx0LnNoYXBlWzBdKSxlKTtlbHNle3ZhciBzPW4ubWFsbG9jKHQuc2l6ZSxyKSxsPWkocyx0LnNoYXBlKTthLmFzc2lnbihsLHQpLHRoaXMubGVuZ3RoPWModGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51c2FnZSxlPDA/czpzLnN1YmFycmF5KDAsdC5zaXplKSxlKSxuLmZyZWUocyl9fWVsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGg7aD10aGlzLnR5cGU9PT10aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSP3UodCwidWludDE2Iik6dSh0LCJmbG9hdDMyIiksdGhpcy5sZW5ndGg9Yyh0aGlzLmdsLHRoaXMudHlwZSx0aGlzLmxlbmd0aCx0aGlzLnVzYWdlLGU8MD9oOmguc3ViYXJyYXkoMCx0Lmxlbmd0aCksZSksbi5mcmVlKGgpfWVsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXRoaXMubGVuZ3RoPWModGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51c2FnZSx0LGUpO2Vsc2V7aWYoIm51bWJlciIhPXR5cGVvZiB0JiZ2b2lkIDAhPT10KXRocm93IG5ldyBFcnJvcigiZ2wtYnVmZmVyOiBJbnZhbGlkIGRhdGEgdHlwZSIpO2lmKGU+PTApdGhyb3cgbmV3IEVycm9yKCJnbC1idWZmZXI6IENhbm5vdCBzcGVjaWZ5IG9mZnNldCB3aGVuIHJlc2l6aW5nIGJ1ZmZlciIpOyh0fD0wKTw9MCYmKHQ9MSksdGhpcy5nbC5idWZmZXJEYXRhKHRoaXMudHlwZSwwfHQsdGhpcy51c2FnZSksdGhpcy5sZW5ndGg9dH19LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXtpZihyPXJ8fHQuQVJSQVlfQlVGRkVSLG49bnx8dC5EWU5BTUlDX0RSQVcsciE9PXQuQVJSQVlfQlVGRkVSJiZyIT09dC5FTEVNRU5UX0FSUkFZX0JVRkZFUil0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZlcjogSW52YWxpZCB0eXBlIGZvciB3ZWJnbCBidWZmZXIsIG11c3QgYmUgZWl0aGVyIGdsLkFSUkFZX0JVRkZFUiBvciBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiIpO2lmKG4hPT10LkRZTkFNSUNfRFJBVyYmbiE9PXQuU1RBVElDX0RSQVcmJm4hPT10LlNUUkVBTV9EUkFXKXRocm93IG5ldyBFcnJvcigiZ2wtYnVmZmVyOiBJbnZhbGlkIHVzYWdlIGZvciBidWZmZXIsIG11c3QgYmUgZWl0aGVyIGdsLkRZTkFNSUNfRFJBVywgZ2wuU1RBVElDX0RSQVcgb3IgZ2wuU1RSRUFNX0RSQVciKTt2YXIgYT10LmNyZWF0ZUJ1ZmZlcigpLGk9bmV3IHModCxyLGEsMCxuKTtyZXR1cm4gaS51cGRhdGUoZSksaX19LHtuZGFycmF5OjQ1MiwibmRhcnJheS1vcHMiOjQ0NiwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwyNDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtdmVjMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQucG9zaXRpb25zLGE9dC52ZWN0b3JzLGk9e3Bvc2l0aW9uczpbXSx2ZXJ0ZXhJbnRlbnNpdHk6W10sdmVydGV4SW50ZW5zaXR5Qm91bmRzOnQudmVydGV4SW50ZW5zaXR5Qm91bmRzLHZlY3RvcnM6W10sY2VsbHM6W10sY29uZU9mZnNldDp0LmNvbmVPZmZzZXQsY29sb3JtYXA6dC5jb2xvcm1hcH07aWYoMD09PXQucG9zaXRpb25zLmxlbmd0aClyZXR1cm4gZSYmKGVbMF09WzAsMCwwXSxlWzFdPVswLDAsMF0pLGk7Zm9yKHZhciBvPTAscz0xLzAsbD0tMS8wLGM9MS8wLHU9LTEvMCxoPTEvMCxmPS0xLzAscD1udWxsLGQ9bnVsbCxnPVtdLHY9MS8wLG09ITEseT0wO3k8ci5sZW5ndGg7eSsrKXt2YXIgeD1yW3ldO3M9TWF0aC5taW4oeFswXSxzKSxsPU1hdGgubWF4KHhbMF0sbCksYz1NYXRoLm1pbih4WzFdLGMpLHU9TWF0aC5tYXgoeFsxXSx1KSxoPU1hdGgubWluKHhbMl0saCksZj1NYXRoLm1heCh4WzJdLGYpO3ZhciBiPWFbeV07aWYobi5sZW5ndGgoYik+byYmKG89bi5sZW5ndGgoYikpLHkpe3ZhciBfPTIqbi5kaXN0YW5jZShwLHgpLyhuLmxlbmd0aChkKStuLmxlbmd0aChiKSk7Xz8odj1NYXRoLm1pbih2LF8pLG09ITEpOm09ITB9bXx8KHA9eCxkPWIpLGcucHVzaChiKX12YXIgdz1bcyxjLGhdLGs9W2wsdSxmXTtlJiYoZVswXT13LGVbMV09ayksMD09PW8mJihvPTEpO3ZhciBUPTEvbztpc0Zpbml0ZSh2KXx8KHY9MSksaS52ZWN0b3JTY2FsZT12O3ZhciBNPXQuY29uZVNpemV8fC41O3QuYWJzb2x1dGVDb25lU2l6ZSYmKE09dC5hYnNvbHV0ZUNvbmVTaXplKlQpLGkuY29uZVNjYWxlPU07eT0wO2Zvcih2YXIgQT0wO3k8ci5sZW5ndGg7eSsrKWZvcih2YXIgUz0oeD1yW3ldKVswXSxFPXhbMV0sTD14WzJdLEM9Z1t5XSxQPW4ubGVuZ3RoKEMpKlQsTz0wO088ODtPKyspe2kucG9zaXRpb25zLnB1c2goW1MsRSxMLEErK10pLGkucG9zaXRpb25zLnB1c2goW1MsRSxMLEErK10pLGkucG9zaXRpb25zLnB1c2goW1MsRSxMLEErK10pLGkucG9zaXRpb25zLnB1c2goW1MsRSxMLEErK10pLGkucG9zaXRpb25zLnB1c2goW1MsRSxMLEErK10pLGkucG9zaXRpb25zLnB1c2goW1MsRSxMLEErK10pLGkudmVjdG9ycy5wdXNoKEMpLGkudmVjdG9ycy5wdXNoKEMpLGkudmVjdG9ycy5wdXNoKEMpLGkudmVjdG9ycy5wdXNoKEMpLGkudmVjdG9ycy5wdXNoKEMpLGkudmVjdG9ycy5wdXNoKEMpLGkudmVydGV4SW50ZW5zaXR5LnB1c2goUCxQLFApLGkudmVydGV4SW50ZW5zaXR5LnB1c2goUCxQLFApO3ZhciB6PWkucG9zaXRpb25zLmxlbmd0aDtpLmNlbGxzLnB1c2goW3otNix6LTUsei00XSxbei0zLHotMix6LTFdKX1yZXR1cm4gaX07dmFyIGE9dCgiLi9saWIvc2hhZGVycyIpO2UuZXhwb3J0cy5jcmVhdGVNZXNoPXQoIi4vY3JlYXRlX21lc2giKSxlLmV4cG9ydHMuY3JlYXRlQ29uZU1lc2g9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5leHBvcnRzLmNyZWF0ZU1lc2godCxyLHtzaGFkZXJzOmEsdHJhY2VUeXBlOiJjb25lIn0pfX0seyIuL2NyZWF0ZV9tZXNoIjoyNDYsIi4vbGliL3NoYWRlcnMiOjI0NywiZ2wtdmVjMyI6MzQ4fV0sMjQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLXNoYWRlciIpLGE9dCgiZ2wtYnVmZmVyIiksaT10KCJnbC12YW8iKSxvPXQoImdsLXRleHR1cmUyZCIpLHM9dCgiZ2wtbWF0NC9tdWx0aXBseSIpLGw9dCgiZ2wtbWF0NC9pbnZlcnQiKSxjPXQoIm5kYXJyYXkiKSx1PXQoImNvbG9ybWFwIiksaD1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07ZnVuY3Rpb24gZih0LGUscixuLGEsaSxvLHMsbCxjLHUpe3RoaXMuZ2w9dCx0aGlzLnBpeGVsUmF0aW89MSx0aGlzLmNlbGxzPVtdLHRoaXMucG9zaXRpb25zPVtdLHRoaXMuaW50ZW5zaXR5PVtdLHRoaXMudGV4dHVyZT1lLHRoaXMuZGlydHk9ITAsdGhpcy50cmlTaGFkZXI9cix0aGlzLnBpY2tTaGFkZXI9bix0aGlzLnRyaWFuZ2xlUG9zaXRpb25zPWEsdGhpcy50cmlhbmdsZVZlY3RvcnM9aSx0aGlzLnRyaWFuZ2xlQ29sb3JzPXMsdGhpcy50cmlhbmdsZVVWcz1sLHRoaXMudHJpYW5nbGVJZHM9byx0aGlzLnRyaWFuZ2xlVkFPPWMsdGhpcy50cmlhbmdsZUNvdW50PTAsdGhpcy5waWNrSWQ9MSx0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBdXSx0aGlzLmNsaXBCb3VuZHM9W1stMS8wLC0xLzAsLTEvMF0sWzEvMCwxLzAsMS8wXV0sdGhpcy5saWdodFBvc2l0aW9uPVsxZTUsMWU1LDBdLHRoaXMuYW1iaWVudExpZ2h0PS44LHRoaXMuZGlmZnVzZUxpZ2h0PS44LHRoaXMuc3BlY3VsYXJMaWdodD0yLHRoaXMucm91Z2huZXNzPS41LHRoaXMuZnJlc25lbD0xLjUsdGhpcy5vcGFjaXR5PTEsdGhpcy50cmFjZVR5cGU9dSx0aGlzLnR1YmVTY2FsZT0xLHRoaXMuY29uZVNjYWxlPTIsdGhpcy52ZWN0b3JTY2FsZT0xLHRoaXMuY29uZU9mZnNldD0uMjUsdGhpcy5fbW9kZWw9aCx0aGlzLl92aWV3PWgsdGhpcy5fcHJvamVjdGlvbj1oLHRoaXMuX3Jlc29sdXRpb249WzEsMV19dmFyIHA9Zi5wcm90b3R5cGU7cC5pc09wYXF1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wYWNpdHk+PTF9LHAuaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wYWNpdHk8MX0scC5waWNrU2xvdHM9MSxwLnNldFBpY2tCYXNlPWZ1bmN0aW9uKHQpe3RoaXMucGlja0lkPXR9LHAudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dGhpcy5nbDt0aGlzLmRpcnR5PSEwLCJsaWdodFBvc2l0aW9uImluIHQmJih0aGlzLmxpZ2h0UG9zaXRpb249dC5saWdodFBvc2l0aW9uKSwib3BhY2l0eSJpbiB0JiYodGhpcy5vcGFjaXR5PXQub3BhY2l0eSksImFtYmllbnQiaW4gdCYmKHRoaXMuYW1iaWVudExpZ2h0PXQuYW1iaWVudCksImRpZmZ1c2UiaW4gdCYmKHRoaXMuZGlmZnVzZUxpZ2h0PXQuZGlmZnVzZSksInNwZWN1bGFyImluIHQmJih0aGlzLnNwZWN1bGFyTGlnaHQ9dC5zcGVjdWxhciksInJvdWdobmVzcyJpbiB0JiYodGhpcy5yb3VnaG5lc3M9dC5yb3VnaG5lc3MpLCJmcmVzbmVsImluIHQmJih0aGlzLmZyZXNuZWw9dC5mcmVzbmVsKSx2b2lkIDAhPT10LnR1YmVTY2FsZSYmKHRoaXMudHViZVNjYWxlPXQudHViZVNjYWxlKSx2b2lkIDAhPT10LnZlY3RvclNjYWxlJiYodGhpcy52ZWN0b3JTY2FsZT10LnZlY3RvclNjYWxlKSx2b2lkIDAhPT10LmNvbmVTY2FsZSYmKHRoaXMuY29uZVNjYWxlPXQuY29uZVNjYWxlKSx2b2lkIDAhPT10LmNvbmVPZmZzZXQmJih0aGlzLmNvbmVPZmZzZXQ9dC5jb25lT2Zmc2V0KSx0LmNvbG9ybWFwJiYodGhpcy50ZXh0dXJlLnNoYXBlPVsyNTYsMjU2XSx0aGlzLnRleHR1cmUubWluRmlsdGVyPWUuTElORUFSX01JUE1BUF9MSU5FQVIsdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcj1lLkxJTkVBUix0aGlzLnRleHR1cmUuc2V0UGl4ZWxzKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT11KHtjb2xvcm1hcDp0LG5zaGFkZXM6MjU2LGZvcm1hdDoicmdiYSJ9KSxyPW5ldyBVaW50OEFycmF5KDEwMjQpLG49MDtuPDI1NjsrK24pe2Zvcih2YXIgYT1lW25dLGk9MDtpPDM7KytpKXJbNCpuK2ldPWFbaV07cls0Km4rM109MjU1KmFbM119cmV0dXJuIGMocixbMjU2LDI1Niw0XSxbNCwwLDFdKX0odC5jb2xvcm1hcCkpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcCgpKTt2YXIgcj10LmNlbGxzLG49dC5wb3NpdGlvbnMsYT10LnZlY3RvcnM7aWYobiYmciYmYSl7dmFyIGk9W10sbz1bXSxzPVtdLGw9W10saD1bXTt0aGlzLmNlbGxzPXIsdGhpcy5wb3NpdGlvbnM9bix0aGlzLnZlY3RvcnM9YTt2YXIgZj10Lm1lc2hDb2xvcnx8WzEsMSwxLDFdLHA9dC52ZXJ0ZXhJbnRlbnNpdHksZD0xLzAsZz0tMS8wO2lmKHApaWYodC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHMpZD0rdC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHNbMF0sZz0rdC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHNbMV07ZWxzZSBmb3IodmFyIHY9MDt2PHAubGVuZ3RoOysrdil7dmFyIG09cFt2XTtkPU1hdGgubWluKGQsbSksZz1NYXRoLm1heChnLG0pfWVsc2UgZm9yKHY9MDt2PG4ubGVuZ3RoOysrdil7bT1uW3ZdWzJdO2Q9TWF0aC5taW4oZCxtKSxnPU1hdGgubWF4KGcsbSl9dGhpcy5pbnRlbnNpdHk9cHx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKXJbbl09dFtuXVsyXTtyZXR1cm4gcn0obiksdGhpcy5ib3VuZHM9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV07Zm9yKHY9MDt2PG4ubGVuZ3RoOysrdilmb3IodmFyIHk9blt2XSx4PTA7eDwzOysreCkhaXNOYU4oeVt4XSkmJmlzRmluaXRlKHlbeF0pJiYodGhpcy5ib3VuZHNbMF1beF09TWF0aC5taW4odGhpcy5ib3VuZHNbMF1beF0seVt4XSksdGhpcy5ib3VuZHNbMV1beF09TWF0aC5tYXgodGhpcy5ib3VuZHNbMV1beF0seVt4XSkpO3ZhciBiPTA7dDpmb3Iodj0wO3Y8ci5sZW5ndGg7Kyt2KXt2YXIgXz1yW3ZdO3N3aXRjaChfLmxlbmd0aCl7Y2FzZSAzOmZvcih4PTA7eDwzOysreCl7eT1uW2s9X1t4XV07Zm9yKHZhciB3PTA7dzwzOysrdylpZihpc05hTih5W3ddKXx8IWlzRmluaXRlKHlbd10pKWNvbnRpbnVlIHR9Zm9yKHg9MDt4PDM7Kyt4KXt2YXIgazt5PW5baz1fWzIteF1dO2kucHVzaCh5WzBdLHlbMV0seVsyXSx5WzNdKTt2YXIgVD1hW2tdO28ucHVzaChUWzBdLFRbMV0sVFsyXSxUWzNdfHwwKTt2YXIgTSxBPWY7Mz09PUEubGVuZ3RoP3MucHVzaChBWzBdLEFbMV0sQVsyXSwxKTpzLnB1c2goQVswXSxBWzFdLEFbMl0sQVszXSksTT1wP1socFtrXS1kKS8oZy1kKSwwXTpbKHlbMl0tZCkvKGctZCksMF0sbC5wdXNoKE1bMF0sTVsxXSksaC5wdXNoKHYpfWIrPTF9fXRoaXMudHJpYW5nbGVDb3VudD1iLHRoaXMudHJpYW5nbGVQb3NpdGlvbnMudXBkYXRlKGkpLHRoaXMudHJpYW5nbGVWZWN0b3JzLnVwZGF0ZShvKSx0aGlzLnRyaWFuZ2xlQ29sb3JzLnVwZGF0ZShzKSx0aGlzLnRyaWFuZ2xlVVZzLnVwZGF0ZShsKSx0aGlzLnRyaWFuZ2xlSWRzLnVwZGF0ZShuZXcgVWludDMyQXJyYXkoaCkpfX0scC5kcmF3VHJhbnNwYXJlbnQ9cC5kcmF3PWZ1bmN0aW9uKHQpe3Q9dHx8e307Zm9yKHZhciBlPXRoaXMuZ2wscj10Lm1vZGVsfHxoLG49dC52aWV3fHxoLGE9dC5wcm9qZWN0aW9ufHxoLGk9W1stMWU2LC0xZTYsLTFlNl0sWzFlNiwxZTYsMWU2XV0sbz0wO288MzsrK28paVswXVtvXT1NYXRoLm1heChpWzBdW29dLHRoaXMuY2xpcEJvdW5kc1swXVtvXSksaVsxXVtvXT1NYXRoLm1pbihpWzFdW29dLHRoaXMuY2xpcEJvdW5kc1sxXVtvXSk7dmFyIGM9e21vZGVsOnIsdmlldzpuLHByb2plY3Rpb246YSxpbnZlcnNlTW9kZWw6aC5zbGljZSgpLGNsaXBCb3VuZHM6aSxrYW1iaWVudDp0aGlzLmFtYmllbnRMaWdodCxrZGlmZnVzZTp0aGlzLmRpZmZ1c2VMaWdodCxrc3BlY3VsYXI6dGhpcy5zcGVjdWxhckxpZ2h0LHJvdWdobmVzczp0aGlzLnJvdWdobmVzcyxmcmVzbmVsOnRoaXMuZnJlc25lbCxleWVQb3NpdGlvbjpbMCwwLDBdLGxpZ2h0UG9zaXRpb246WzAsMCwwXSxvcGFjaXR5OnRoaXMub3BhY2l0eSx0dWJlU2NhbGU6dGhpcy50dWJlU2NhbGUsdmVjdG9yU2NhbGU6dGhpcy52ZWN0b3JTY2FsZSxjb25lU2NhbGU6dGhpcy5jb25lU2NhbGUsY29uZU9mZnNldDp0aGlzLmNvbmVPZmZzZXQsdGV4dHVyZTowfTtjLmludmVyc2VNb2RlbD1sKGMuaW52ZXJzZU1vZGVsLGMubW9kZWwpLGUuZGlzYWJsZShlLkNVTExfRkFDRSksdGhpcy50ZXh0dXJlLmJpbmQoMCk7dmFyIHU9bmV3IEFycmF5KDE2KTtzKHUsYy52aWV3LGMubW9kZWwpLHModSxjLnByb2plY3Rpb24sdSksbCh1LHUpO2ZvcihvPTA7bzwzOysrbyljLmV5ZVBvc2l0aW9uW29dPXVbMTIrb10vdVsxNV07dmFyIGY9dVsxNV07Zm9yKG89MDtvPDM7KytvKWYrPXRoaXMubGlnaHRQb3NpdGlvbltvXSp1WzQqbyszXTtmb3Iobz0wO288MzsrK28pe2Zvcih2YXIgcD11WzEyK29dLGQ9MDtkPDM7KytkKXArPXVbNCpkK29dKnRoaXMubGlnaHRQb3NpdGlvbltkXTtjLmxpZ2h0UG9zaXRpb25bb109cC9mfWlmKHRoaXMudHJpYW5nbGVDb3VudD4wKXt2YXIgZz10aGlzLnRyaVNoYWRlcjtnLmJpbmQoKSxnLnVuaWZvcm1zPWMsdGhpcy50cmlhbmdsZVZBTy5iaW5kKCksZS5kcmF3QXJyYXlzKGUuVFJJQU5HTEVTLDAsMyp0aGlzLnRyaWFuZ2xlQ291bnQpLHRoaXMudHJpYW5nbGVWQU8udW5iaW5kKCl9fSxwLmRyYXdQaWNrPWZ1bmN0aW9uKHQpe3Q9dHx8e307Zm9yKHZhciBlPXRoaXMuZ2wscj10Lm1vZGVsfHxoLG49dC52aWV3fHxoLGE9dC5wcm9qZWN0aW9ufHxoLGk9W1stMWU2LC0xZTYsLTFlNl0sWzFlNiwxZTYsMWU2XV0sbz0wO288MzsrK28paVswXVtvXT1NYXRoLm1heChpWzBdW29dLHRoaXMuY2xpcEJvdW5kc1swXVtvXSksaVsxXVtvXT1NYXRoLm1pbihpWzFdW29dLHRoaXMuY2xpcEJvdW5kc1sxXVtvXSk7dGhpcy5fbW9kZWw9W10uc2xpY2UuY2FsbChyKSx0aGlzLl92aWV3PVtdLnNsaWNlLmNhbGwobiksdGhpcy5fcHJvamVjdGlvbj1bXS5zbGljZS5jYWxsKGEpLHRoaXMuX3Jlc29sdXRpb249W2UuZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF07dmFyIHM9e21vZGVsOnIsdmlldzpuLHByb2plY3Rpb246YSxjbGlwQm91bmRzOmksdHViZVNjYWxlOnRoaXMudHViZVNjYWxlLHZlY3RvclNjYWxlOnRoaXMudmVjdG9yU2NhbGUsY29uZVNjYWxlOnRoaXMuY29uZVNjYWxlLGNvbmVPZmZzZXQ6dGhpcy5jb25lT2Zmc2V0LHBpY2tJZDp0aGlzLnBpY2tJZC8yNTV9LGw9dGhpcy5waWNrU2hhZGVyO2wuYmluZCgpLGwudW5pZm9ybXM9cyx0aGlzLnRyaWFuZ2xlQ291bnQ+MCYmKHRoaXMudHJpYW5nbGVWQU8uYmluZCgpLGUuZHJhd0FycmF5cyhlLlRSSUFOR0xFUywwLDMqdGhpcy50cmlhbmdsZUNvdW50KSx0aGlzLnRyaWFuZ2xlVkFPLnVuYmluZCgpKX0scC5waWNrPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQuaWQhPT10aGlzLnBpY2tJZClyZXR1cm4gbnVsbDt2YXIgZT10LnZhbHVlWzBdKzI1Nip0LnZhbHVlWzFdKzY1NTM2KnQudmFsdWVbMl0scj10aGlzLmNlbGxzW2VdLG49dGhpcy5wb3NpdGlvbnNbclsxXV0uc2xpY2UoMCwzKSxhPXtwb3NpdGlvbjpuLGRhdGFDb29yZGluYXRlOm4saW5kZXg6TWF0aC5mbG9vcihyWzFdLzQ4KX07cmV0dXJuImNvbmUiPT09dGhpcy50cmFjZVR5cGU/YS5pbmRleD1NYXRoLmZsb29yKHJbMV0vNDgpOiJzdHJlYW10dWJlIj09PXRoaXMudHJhY2VUeXBlJiYoYS5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHlbclsxXV0sYS52ZWxvY2l0eT10aGlzLnZlY3RvcnNbclsxXV0uc2xpY2UoMCwzKSxhLmRpdmVyZ2VuY2U9dGhpcy52ZWN0b3JzW3JbMV1dWzNdLGEuaW5kZXg9ZSksYX0scC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy50ZXh0dXJlLmRpc3Bvc2UoKSx0aGlzLnRyaVNoYWRlci5kaXNwb3NlKCksdGhpcy5waWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlVkFPLmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlUG9zaXRpb25zLmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlVmVjdG9ycy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZUNvbG9ycy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZVVWcy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZUlkcy5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIHM9ci5zaGFkZXJzOzE9PT1hcmd1bWVudHMubGVuZ3RoJiYodD0oZT10KS5nbCk7dmFyIGw9ZnVuY3Rpb24odCxlKXt2YXIgcj1uKHQsZS5tZXNoU2hhZGVyLnZlcnRleCxlLm1lc2hTaGFkZXIuZnJhZ21lbnQsbnVsbCxlLm1lc2hTaGFkZXIuYXR0cmlidXRlcyk7cmV0dXJuIHIuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLHIuYXR0cmlidXRlcy5jb2xvci5sb2NhdGlvbj0yLHIuYXR0cmlidXRlcy51di5sb2NhdGlvbj0zLHIuYXR0cmlidXRlcy52ZWN0b3IubG9jYXRpb249NCxyfSh0LHMpLHU9ZnVuY3Rpb24odCxlKXt2YXIgcj1uKHQsZS5waWNrU2hhZGVyLnZlcnRleCxlLnBpY2tTaGFkZXIuZnJhZ21lbnQsbnVsbCxlLnBpY2tTaGFkZXIuYXR0cmlidXRlcyk7cmV0dXJuIHIuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLHIuYXR0cmlidXRlcy5pZC5sb2NhdGlvbj0xLHIuYXR0cmlidXRlcy52ZWN0b3IubG9jYXRpb249NCxyfSh0LHMpLGg9byh0LGMobmV3IFVpbnQ4QXJyYXkoWzI1NSwyNTUsMjU1LDI1NV0pLFsxLDEsNF0pKTtoLmdlbmVyYXRlTWlwbWFwKCksaC5taW5GaWx0ZXI9dC5MSU5FQVJfTUlQTUFQX0xJTkVBUixoLm1hZ0ZpbHRlcj10LkxJTkVBUjt2YXIgcD1hKHQpLGQ9YSh0KSxnPWEodCksdj1hKHQpLG09YSh0KSx5PW5ldyBmKHQsaCxsLHUscCxkLG0sZyx2LGkodCxbe2J1ZmZlcjpwLHR5cGU6dC5GTE9BVCxzaXplOjR9LHtidWZmZXI6bSx0eXBlOnQuVU5TSUdORURfQllURSxzaXplOjQsbm9ybWFsaXplZDohMH0se2J1ZmZlcjpnLHR5cGU6dC5GTE9BVCxzaXplOjR9LHtidWZmZXI6dix0eXBlOnQuRkxPQVQsc2l6ZToyfSx7YnVmZmVyOmQsdHlwZTp0LkZMT0FULHNpemU6NH1dKSxyLnRyYWNlVHlwZXx8ImNvbmUiKTtyZXR1cm4geS51cGRhdGUoZSkseX19LHtjb2xvcm1hcDoxMjgsImdsLWJ1ZmZlciI6MjQ0LCJnbC1tYXQ0L2ludmVydCI6MjY4LCJnbC1tYXQ0L211bHRpcGx5IjoyNzAsImdsLXNoYWRlciI6MzA0LCJnbC10ZXh0dXJlMmQiOjMyNCwiZ2wtdmFvIjozMjksbmRhcnJheTo0NTJ9XSwyNDc6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbHNsaWZ5IiksYT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52ZWMzIGdldE9ydGhvZ29uYWxWZWN0b3IodmVjMyB2KSB7XG4gIC8vIFJldHVybiB1cC12ZWN0b3IgZm9yIG9ubHkteiB2ZWN0b3IuXG4gIC8vIFJldHVybiBheCArIGJ5ICsgY3ogPSAwLCBhIHBvaW50IHRoYXQgbGllcyBvbiB0aGUgcGxhbmUgdGhhdCBoYXMgdiBhcyBhIG5vcm1hbCBhbmQgdGhhdCBpc24ndCAoMCwwLDApLlxuICAvLyBGcm9tIHRoZSBhYm92ZSBpZi1zdGF0ZW1lbnQgd2UgaGF2ZSB8fGF8fCA+IDAgIFUgIHx8Ynx8ID4gMC5cbiAgLy8gQXNzaWduIHogPSAwLCB4ID0gLWIsIHkgPSBhOlxuICAvLyBhKi1iICsgYiphICsgYyowID0gLWJhICsgYmEgKyAwID0gMFxuICBpZiAodi54KnYueCA+IHYueip2LnogfHwgdi55KnYueSA+IHYueip2LnopIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKHZlYzMoLXYueSwgdi54LCAwLjApKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKHZlYzMoMC4wLCB2LnosIC12LnkpKTtcbiAgfVxufVxuXG4vLyBDYWxjdWxhdGUgdGhlIGNvbmUgdmVydGV4IGFuZCBub3JtYWwgYXQgdGhlIGdpdmVuIGluZGV4LlxuLy9cbi8vIFRoZSByZXR1cm5lZCB2ZXJ0ZXggaXMgZm9yIGEgY29uZSB3aXRoIGl0cyB0b3AgYXQgb3JpZ2luIGFuZCBoZWlnaHQgb2YgMS4wLFxuLy8gcG9pbnRpbmcgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgdmVjdG9yIGF0dHJpYnV0ZS5cbi8vXG4vLyBFYWNoIGNvbmUgaXMgbWFkZSB1cCBvZiBhIHRvcCB2ZXJ0ZXgsIGEgY2VudGVyIGJhc2UgdmVydGV4IGFuZCBiYXNlIHBlcmltZXRlciB2ZXJ0aWNlcy5cbi8vIFRoZXNlIHZlcnRpY2VzIGFyZSB1c2VkIHRvIG1ha2UgdXAgdGhlIHRyaWFuZ2xlcyBvZiB0aGUgY29uZSBieSB0aGUgZm9sbG93aW5nOlxuLy8gICBzZWdtZW50ICsgMCB0b3AgdmVydGV4XG4vLyAgIHNlZ21lbnQgKyAxIHBlcmltZXRlciB2ZXJ0ZXggYSsxXG4vLyAgIHNlZ21lbnQgKyAyIHBlcmltZXRlciB2ZXJ0ZXggYVxuLy8gICBzZWdtZW50ICsgMyBjZW50ZXIgYmFzZSB2ZXJ0ZXhcbi8vICAgc2VnbWVudCArIDQgcGVyaW1ldGVyIHZlcnRleCBhXG4vLyAgIHNlZ21lbnQgKyA1IHBlcmltZXRlciB2ZXJ0ZXggYSsxXG4vLyBXaGVyZSBzZWdtZW50IGlzIHRoZSBudW1iZXIgb2YgdGhlIHJhZGlhbCBzZWdtZW50ICogNiBhbmQgYSBpcyB0aGUgYW5nbGUgYXQgdGhhdCByYWRpYWwgc2VnbWVudC5cbi8vIFRvIGdvIGZyb20gaW5kZXggdG8gc2VnbWVudCwgZmxvb3IoaW5kZXggLyA2KVxuLy8gVG8gZ28gZnJvbSBzZWdtZW50IHRvIGFuZ2xlLCAyKnBpICogKHNlZ21lbnQvc2VnbWVudENvdW50KVxuLy8gVG8gZ28gZnJvbSBpbmRleCB0byBzZWdtZW50IGluZGV4LCBpbmRleCAtIChzZWdtZW50KjYpXG4vL1xudmVjMyBnZXRDb25lUG9zaXRpb24odmVjMyBkLCBmbG9hdCByYXdJbmRleCwgZmxvYXQgY29uZU9mZnNldCwgb3V0IHZlYzMgbm9ybWFsKSB7XG5cbiAgY29uc3QgZmxvYXQgc2VnbWVudENvdW50ID0gOC4wO1xuXG4gIGZsb2F0IGluZGV4ID0gcmF3SW5kZXggLSBmbG9vcihyYXdJbmRleCAvXG4gICAgKHNlZ21lbnRDb3VudCAqIDYuMCkpICpcbiAgICAoc2VnbWVudENvdW50ICogNi4wKTtcblxuICBmbG9hdCBzZWdtZW50ID0gZmxvb3IoMC4wMDEgKyBpbmRleC82LjApO1xuICBmbG9hdCBzZWdtZW50SW5kZXggPSBpbmRleCAtIChzZWdtZW50KjYuMCk7XG5cbiAgbm9ybWFsID0gLW5vcm1hbGl6ZShkKTtcblxuICBpZiAoc2VnbWVudEluZGV4ID4gMi45OSAmJiBzZWdtZW50SW5kZXggPCAzLjAxKSB7XG4gICAgcmV0dXJuIG1peCh2ZWMzKDAuMCksIC1kLCBjb25lT2Zmc2V0KTtcbiAgfVxuXG4gIGZsb2F0IG5leHRBbmdsZSA9IChcbiAgICAoc2VnbWVudEluZGV4ID4gMC45OSAmJiAgc2VnbWVudEluZGV4IDwgMS4wMSkgfHxcbiAgICAoc2VnbWVudEluZGV4ID4gNC45OSAmJiAgc2VnbWVudEluZGV4IDwgNS4wMSlcbiAgKSA/IDEuMCA6IDAuMDtcbiAgZmxvYXQgYW5nbGUgPSAyLjAgKiAzLjE0MTU5ICogKChzZWdtZW50ICsgbmV4dEFuZ2xlKSAvIHNlZ21lbnRDb3VudCk7XG5cbiAgdmVjMyB2MSA9IG1peChkLCB2ZWMzKDAuMCksIGNvbmVPZmZzZXQpO1xuICB2ZWMzIHYyID0gdjEgLSBkO1xuXG4gIHZlYzMgdSA9IGdldE9ydGhvZ29uYWxWZWN0b3IoZCk7XG4gIHZlYzMgdiA9IG5vcm1hbGl6ZShjcm9zcyh1LCBkKSk7XG5cbiAgdmVjMyB4ID0gdSAqIGNvcyhhbmdsZSkgKiBsZW5ndGgoZCkqMC4yNTtcbiAgdmVjMyB5ID0gdiAqIHNpbihhbmdsZSkgKiBsZW5ndGgoZCkqMC4yNTtcbiAgdmVjMyB2MyA9IHYyICsgeCArIHk7XG4gIGlmIChzZWdtZW50SW5kZXggPCAzLjApIHtcbiAgICB2ZWMzIHR4ID0gdSAqIHNpbihhbmdsZSk7XG4gICAgdmVjMyB0eSA9IHYgKiAtY29zKGFuZ2xlKTtcbiAgICB2ZWMzIHRhbmdlbnQgPSB0eCArIHR5O1xuICAgIG5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyh2MyAtIHYxLCB0YW5nZW50KSk7XG4gIH1cblxuICBpZiAoc2VnbWVudEluZGV4ID09IDAuMCkge1xuICAgIHJldHVybiBtaXgoZCwgdmVjMygwLjApLCBjb25lT2Zmc2V0KTtcbiAgfVxuICByZXR1cm4gdjM7XG59XG5cbmF0dHJpYnV0ZSB2ZWMzIHZlY3RvcjtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yLCBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWMyIHV2O1xuXG51bmlmb3JtIGZsb2F0IHZlY3RvclNjYWxlLCBjb25lU2NhbGUsIGNvbmVPZmZzZXQ7XG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb24sIGludmVyc2VNb2RlbDtcbnVuaWZvcm0gdmVjMyBleWVQb3NpdGlvbiwgbGlnaHRQb3NpdGlvbjtcblxudmFyeWluZyB2ZWMzIGZfbm9ybWFsLCBmX2xpZ2h0RGlyZWN0aW9uLCBmX2V5ZURpcmVjdGlvbiwgZl9kYXRhLCBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICAvLyBTY2FsZSB0aGUgdmVjdG9yIG1hZ25pdHVkZSB0byBzdGF5IGNvbnN0YW50IHdpdGhcbiAgLy8gbW9kZWwgJiB2aWV3IGNoYW5nZXMuXG4gIHZlYzMgbm9ybWFsO1xuICB2ZWMzIFhZWiA9IGdldENvbmVQb3NpdGlvbihtYXQzKG1vZGVsKSAqICgodmVjdG9yU2NhbGUgKiBjb25lU2NhbGUpICogdmVjdG9yKSwgcG9zaXRpb24udywgY29uZU9mZnNldCwgbm9ybWFsKTtcbiAgdmVjNCBjb25lUG9zaXRpb24gPSBtb2RlbCAqIHZlYzQocG9zaXRpb24ueHl6LCAxLjApICsgdmVjNChYWVosIDAuMCk7XG5cbiAgLy9MaWdodGluZyBnZW9tZXRyeSBwYXJhbWV0ZXJzXG4gIHZlYzQgY2FtZXJhQ29vcmRpbmF0ZSA9IHZpZXcgKiBjb25lUG9zaXRpb247XG4gIGNhbWVyYUNvb3JkaW5hdGUueHl6IC89IGNhbWVyYUNvb3JkaW5hdGUudztcbiAgZl9saWdodERpcmVjdGlvbiA9IGxpZ2h0UG9zaXRpb24gLSBjYW1lcmFDb29yZGluYXRlLnh5ejtcbiAgZl9leWVEaXJlY3Rpb24gICA9IGV5ZVBvc2l0aW9uIC0gY2FtZXJhQ29vcmRpbmF0ZS54eXo7XG4gIGZfbm9ybWFsID0gbm9ybWFsaXplKCh2ZWM0KG5vcm1hbCwgMC4wKSAqIGludmVyc2VNb2RlbCkueHl6KTtcblxuICAvLyB2ZWM0IG1fcG9zaXRpb24gID0gbW9kZWwgKiB2ZWM0KGNvbmVQb3NpdGlvbiwgMS4wKTtcbiAgdmVjNCB0X3Bvc2l0aW9uICA9IHZpZXcgKiBjb25lUG9zaXRpb247XG4gIGdsX1Bvc2l0aW9uICAgICAgPSBwcm9qZWN0aW9uICogdF9wb3NpdGlvbjtcblxuICBmX2NvbG9yICAgICAgICAgID0gY29sb3I7XG4gIGZfZGF0YSAgICAgICAgICAgPSBjb25lUG9zaXRpb24ueHl6O1xuICBmX3Bvc2l0aW9uICAgICAgID0gcG9zaXRpb24ueHl6O1xuICBmX3V2ICAgICAgICAgICAgID0gdXY7XG59XG4iXSksaT1uKFsiI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGVcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgYmVja21hbm5EaXN0cmlidXRpb24oZmxvYXQgeCwgZmxvYXQgcm91Z2huZXNzKSB7XG4gIGZsb2F0IE5kb3RIID0gbWF4KHgsIDAuMDAwMSk7XG4gIGZsb2F0IGNvczJBbHBoYSA9IE5kb3RIICogTmRvdEg7XG4gIGZsb2F0IHRhbjJBbHBoYSA9IChjb3MyQWxwaGEgLSAxLjApIC8gY29zMkFscGhhO1xuICBmbG9hdCByb3VnaG5lc3MyID0gcm91Z2huZXNzICogcm91Z2huZXNzO1xuICBmbG9hdCBkZW5vbSA9IDMuMTQxNTkyNjUzNTg5NzkzICogcm91Z2huZXNzMiAqIGNvczJBbHBoYSAqIGNvczJBbHBoYTtcbiAgcmV0dXJuIGV4cCh0YW4yQWxwaGEgLyByb3VnaG5lc3MyKSAvIGRlbm9tO1xufVxuXG5mbG9hdCBjb29rVG9ycmFuY2VTcGVjdWxhcihcbiAgdmVjMyBsaWdodERpcmVjdGlvbixcbiAgdmVjMyB2aWV3RGlyZWN0aW9uLFxuICB2ZWMzIHN1cmZhY2VOb3JtYWwsXG4gIGZsb2F0IHJvdWdobmVzcyxcbiAgZmxvYXQgZnJlc25lbCkge1xuXG4gIGZsb2F0IFZkb3ROID0gbWF4KGRvdCh2aWV3RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcbiAgZmxvYXQgTGRvdE4gPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcblxuICAvL0hhbGYgYW5nbGUgdmVjdG9yXG4gIHZlYzMgSCA9IG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbiArIHZpZXdEaXJlY3Rpb24pO1xuXG4gIC8vR2VvbWV0cmljIHRlcm1cbiAgZmxvYXQgTmRvdEggPSBtYXgoZG90KHN1cmZhY2VOb3JtYWwsIEgpLCAwLjApO1xuICBmbG9hdCBWZG90SCA9IG1heChkb3Qodmlld0RpcmVjdGlvbiwgSCksIDAuMDAwMDAxKTtcbiAgZmxvYXQgTGRvdEggPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBIKSwgMC4wMDAwMDEpO1xuICBmbG9hdCBHMSA9ICgyLjAgKiBOZG90SCAqIFZkb3ROKSAvIFZkb3RIO1xuICBmbG9hdCBHMiA9ICgyLjAgKiBOZG90SCAqIExkb3ROKSAvIExkb3RIO1xuICBmbG9hdCBHID0gbWluKDEuMCwgbWluKEcxLCBHMikpO1xuICBcbiAgLy9EaXN0cmlidXRpb24gdGVybVxuICBmbG9hdCBEID0gYmVja21hbm5EaXN0cmlidXRpb24oTmRvdEgsIHJvdWdobmVzcyk7XG5cbiAgLy9GcmVzbmVsIHRlcm1cbiAgZmxvYXQgRiA9IHBvdygxLjAgLSBWZG90TiwgZnJlc25lbCk7XG5cbiAgLy9NdWx0aXBseSB0ZXJtcyBhbmQgZG9uZVxuICByZXR1cm4gIEcgKiBGICogRCAvIG1heCgzLjE0MTU5MjY1ICogVmRvdE4sIDAuMDAwMDAxKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCByb3VnaG5lc3MsIGZyZXNuZWwsIGthbWJpZW50LCBrZGlmZnVzZSwga3NwZWN1bGFyLCBvcGFjaXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTtcblxudmFyeWluZyB2ZWMzIGZfbm9ybWFsLCBmX2xpZ2h0RGlyZWN0aW9uLCBmX2V5ZURpcmVjdGlvbiwgZl9kYXRhLCBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX3Bvc2l0aW9uKSkgZGlzY2FyZDtcbiAgdmVjMyBOID0gbm9ybWFsaXplKGZfbm9ybWFsKTtcbiAgdmVjMyBMID0gbm9ybWFsaXplKGZfbGlnaHREaXJlY3Rpb24pO1xuICB2ZWMzIFYgPSBub3JtYWxpemUoZl9leWVEaXJlY3Rpb24pO1xuXG4gIGlmKGdsX0Zyb250RmFjaW5nKSB7XG4gICAgTiA9IC1OO1xuICB9XG5cbiAgZmxvYXQgc3BlY3VsYXIgPSBtaW4oMS4wLCBtYXgoMC4wLCBjb29rVG9ycmFuY2VTcGVjdWxhcihMLCBWLCBOLCByb3VnaG5lc3MsIGZyZXNuZWwpKSk7XG4gIGZsb2F0IGRpZmZ1c2UgID0gbWluKGthbWJpZW50ICsga2RpZmZ1c2UgKiBtYXgoZG90KE4sIEwpLCAwLjApLCAxLjApO1xuXG4gIHZlYzQgc3VyZmFjZUNvbG9yID0gZl9jb2xvciAqIHRleHR1cmUyRCh0ZXh0dXJlLCBmX3V2KTtcbiAgdmVjNCBsaXRDb2xvciA9IHN1cmZhY2VDb2xvci5hICogdmVjNChkaWZmdXNlICogc3VyZmFjZUNvbG9yLnJnYiArIGtzcGVjdWxhciAqIHZlYzMoMSwxLDEpICogc3BlY3VsYXIsICAxLjApO1xuXG4gIGdsX0ZyYWdDb2xvciA9IGxpdENvbG9yICogb3BhY2l0eTtcbn1cbiJdKSxvPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZlYzMgZ2V0T3J0aG9nb25hbFZlY3Rvcih2ZWMzIHYpIHtcbiAgLy8gUmV0dXJuIHVwLXZlY3RvciBmb3Igb25seS16IHZlY3Rvci5cbiAgLy8gUmV0dXJuIGF4ICsgYnkgKyBjeiA9IDAsIGEgcG9pbnQgdGhhdCBsaWVzIG9uIHRoZSBwbGFuZSB0aGF0IGhhcyB2IGFzIGEgbm9ybWFsIGFuZCB0aGF0IGlzbid0ICgwLDAsMCkuXG4gIC8vIEZyb20gdGhlIGFib3ZlIGlmLXN0YXRlbWVudCB3ZSBoYXZlIHx8YXx8ID4gMCAgVSAgfHxifHwgPiAwLlxuICAvLyBBc3NpZ24geiA9IDAsIHggPSAtYiwgeSA9IGE6XG4gIC8vIGEqLWIgKyBiKmEgKyBjKjAgPSAtYmEgKyBiYSArIDAgPSAwXG4gIGlmICh2Lngqdi54ID4gdi56KnYueiB8fCB2Lnkqdi55ID4gdi56KnYueikge1xuICAgIHJldHVybiBub3JtYWxpemUodmVjMygtdi55LCB2LngsIDAuMCkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBub3JtYWxpemUodmVjMygwLjAsIHYueiwgLXYueSkpO1xuICB9XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgY29uZSB2ZXJ0ZXggYW5kIG5vcm1hbCBhdCB0aGUgZ2l2ZW4gaW5kZXguXG4vL1xuLy8gVGhlIHJldHVybmVkIHZlcnRleCBpcyBmb3IgYSBjb25lIHdpdGggaXRzIHRvcCBhdCBvcmlnaW4gYW5kIGhlaWdodCBvZiAxLjAsXG4vLyBwb2ludGluZyBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSB2ZWN0b3IgYXR0cmlidXRlLlxuLy9cbi8vIEVhY2ggY29uZSBpcyBtYWRlIHVwIG9mIGEgdG9wIHZlcnRleCwgYSBjZW50ZXIgYmFzZSB2ZXJ0ZXggYW5kIGJhc2UgcGVyaW1ldGVyIHZlcnRpY2VzLlxuLy8gVGhlc2UgdmVydGljZXMgYXJlIHVzZWQgdG8gbWFrZSB1cCB0aGUgdHJpYW5nbGVzIG9mIHRoZSBjb25lIGJ5IHRoZSBmb2xsb3dpbmc6XG4vLyAgIHNlZ21lbnQgKyAwIHRvcCB2ZXJ0ZXhcbi8vICAgc2VnbWVudCArIDEgcGVyaW1ldGVyIHZlcnRleCBhKzFcbi8vICAgc2VnbWVudCArIDIgcGVyaW1ldGVyIHZlcnRleCBhXG4vLyAgIHNlZ21lbnQgKyAzIGNlbnRlciBiYXNlIHZlcnRleFxuLy8gICBzZWdtZW50ICsgNCBwZXJpbWV0ZXIgdmVydGV4IGFcbi8vICAgc2VnbWVudCArIDUgcGVyaW1ldGVyIHZlcnRleCBhKzFcbi8vIFdoZXJlIHNlZ21lbnQgaXMgdGhlIG51bWJlciBvZiB0aGUgcmFkaWFsIHNlZ21lbnQgKiA2IGFuZCBhIGlzIHRoZSBhbmdsZSBhdCB0aGF0IHJhZGlhbCBzZWdtZW50LlxuLy8gVG8gZ28gZnJvbSBpbmRleCB0byBzZWdtZW50LCBmbG9vcihpbmRleCAvIDYpXG4vLyBUbyBnbyBmcm9tIHNlZ21lbnQgdG8gYW5nbGUsIDIqcGkgKiAoc2VnbWVudC9zZWdtZW50Q291bnQpXG4vLyBUbyBnbyBmcm9tIGluZGV4IHRvIHNlZ21lbnQgaW5kZXgsIGluZGV4IC0gKHNlZ21lbnQqNilcbi8vXG52ZWMzIGdldENvbmVQb3NpdGlvbih2ZWMzIGQsIGZsb2F0IHJhd0luZGV4LCBmbG9hdCBjb25lT2Zmc2V0LCBvdXQgdmVjMyBub3JtYWwpIHtcblxuICBjb25zdCBmbG9hdCBzZWdtZW50Q291bnQgPSA4LjA7XG5cbiAgZmxvYXQgaW5kZXggPSByYXdJbmRleCAtIGZsb29yKHJhd0luZGV4IC9cbiAgICAoc2VnbWVudENvdW50ICogNi4wKSkgKlxuICAgIChzZWdtZW50Q291bnQgKiA2LjApO1xuXG4gIGZsb2F0IHNlZ21lbnQgPSBmbG9vcigwLjAwMSArIGluZGV4LzYuMCk7XG4gIGZsb2F0IHNlZ21lbnRJbmRleCA9IGluZGV4IC0gKHNlZ21lbnQqNi4wKTtcblxuICBub3JtYWwgPSAtbm9ybWFsaXplKGQpO1xuXG4gIGlmIChzZWdtZW50SW5kZXggPiAyLjk5ICYmIHNlZ21lbnRJbmRleCA8IDMuMDEpIHtcbiAgICByZXR1cm4gbWl4KHZlYzMoMC4wKSwgLWQsIGNvbmVPZmZzZXQpO1xuICB9XG5cbiAgZmxvYXQgbmV4dEFuZ2xlID0gKFxuICAgIChzZWdtZW50SW5kZXggPiAwLjk5ICYmICBzZWdtZW50SW5kZXggPCAxLjAxKSB8fFxuICAgIChzZWdtZW50SW5kZXggPiA0Ljk5ICYmICBzZWdtZW50SW5kZXggPCA1LjAxKVxuICApID8gMS4wIDogMC4wO1xuICBmbG9hdCBhbmdsZSA9IDIuMCAqIDMuMTQxNTkgKiAoKHNlZ21lbnQgKyBuZXh0QW5nbGUpIC8gc2VnbWVudENvdW50KTtcblxuICB2ZWMzIHYxID0gbWl4KGQsIHZlYzMoMC4wKSwgY29uZU9mZnNldCk7XG4gIHZlYzMgdjIgPSB2MSAtIGQ7XG5cbiAgdmVjMyB1ID0gZ2V0T3J0aG9nb25hbFZlY3RvcihkKTtcbiAgdmVjMyB2ID0gbm9ybWFsaXplKGNyb3NzKHUsIGQpKTtcblxuICB2ZWMzIHggPSB1ICogY29zKGFuZ2xlKSAqIGxlbmd0aChkKSowLjI1O1xuICB2ZWMzIHkgPSB2ICogc2luKGFuZ2xlKSAqIGxlbmd0aChkKSowLjI1O1xuICB2ZWMzIHYzID0gdjIgKyB4ICsgeTtcbiAgaWYgKHNlZ21lbnRJbmRleCA8IDMuMCkge1xuICAgIHZlYzMgdHggPSB1ICogc2luKGFuZ2xlKTtcbiAgICB2ZWMzIHR5ID0gdiAqIC1jb3MoYW5nbGUpO1xuICAgIHZlYzMgdGFuZ2VudCA9IHR4ICsgdHk7XG4gICAgbm9ybWFsID0gbm9ybWFsaXplKGNyb3NzKHYzIC0gdjEsIHRhbmdlbnQpKTtcbiAgfVxuXG4gIGlmIChzZWdtZW50SW5kZXggPT0gMC4wKSB7XG4gICAgcmV0dXJuIG1peChkLCB2ZWMzKDAuMCksIGNvbmVPZmZzZXQpO1xuICB9XG4gIHJldHVybiB2Mztcbn1cblxuYXR0cmlidXRlIHZlYzQgdmVjdG9yO1xuYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBpZDtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSBmbG9hdCB2ZWN0b3JTY2FsZSwgY29uZVNjYWxlLCBjb25lT2Zmc2V0O1xuXG52YXJ5aW5nIHZlYzMgZl9wb3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmX2lkO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzMgbm9ybWFsO1xuICB2ZWMzIFhZWiA9IGdldENvbmVQb3NpdGlvbihtYXQzKG1vZGVsKSAqICgodmVjdG9yU2NhbGUgKiBjb25lU2NhbGUpICogdmVjdG9yLnh5eiksIHBvc2l0aW9uLncsIGNvbmVPZmZzZXQsIG5vcm1hbCk7XG4gIHZlYzQgY29uZVBvc2l0aW9uID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLnh5eiwgMS4wKSArIHZlYzQoWFlaLCAwLjApO1xuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogY29uZVBvc2l0aW9uO1xuICBmX2lkICAgICAgICA9IGlkO1xuICBmX3Bvc2l0aW9uICA9IHBvc2l0aW9uLnh5ejtcbn1cbiJdKSxzPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzICBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBwaWNrSWQ7XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgZl9wb3NpdGlvbikpIGRpc2NhcmQ7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNrSWQsIGZfaWQueHl6KTtcbn0iXSk7ci5tZXNoU2hhZGVyPXt2ZXJ0ZXg6YSxmcmFnbWVudDppLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjNCJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJ1diIsdHlwZToidmVjMiJ9LHtuYW1lOiJ2ZWN0b3IiLHR5cGU6InZlYzMifV19LHIucGlja1NoYWRlcj17dmVydGV4Om8sZnJhZ21lbnQ6cyxhdHRyaWJ1dGVzOlt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzQifSx7bmFtZToiaWQiLHR5cGU6InZlYzQifSx7bmFtZToidmVjdG9yIix0eXBlOiJ2ZWMzIn1dfX0se2dsc2xpZnk6NDExfV0sMjQ4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXswOiJOT05FIiwxOiJPTkUiLDI6IkxJTkVfTE9PUCIsMzoiTElORV9TVFJJUCIsNDoiVFJJQU5HTEVTIiw1OiJUUklBTkdMRV9TVFJJUCIsNjoiVFJJQU5HTEVfRkFOIiwyNTY6IkRFUFRIX0JVRkZFUl9CSVQiLDUxMjoiTkVWRVIiLDUxMzoiTEVTUyIsNTE0OiJFUVVBTCIsNTE1OiJMRVFVQUwiLDUxNjoiR1JFQVRFUiIsNTE3OiJOT1RFUVVBTCIsNTE4OiJHRVFVQUwiLDUxOToiQUxXQVlTIiw3Njg6IlNSQ19DT0xPUiIsNzY5OiJPTkVfTUlOVVNfU1JDX0NPTE9SIiw3NzA6IlNSQ19BTFBIQSIsNzcxOiJPTkVfTUlOVVNfU1JDX0FMUEhBIiw3NzI6IkRTVF9BTFBIQSIsNzczOiJPTkVfTUlOVVNfRFNUX0FMUEhBIiw3NzQ6IkRTVF9DT0xPUiIsNzc1OiJPTkVfTUlOVVNfRFNUX0NPTE9SIiw3NzY6IlNSQ19BTFBIQV9TQVRVUkFURSIsMTAyNDoiU1RFTkNJTF9CVUZGRVJfQklUIiwxMDI4OiJGUk9OVCIsMTAyOToiQkFDSyIsMTAzMjoiRlJPTlRfQU5EX0JBQ0siLDEyODA6IklOVkFMSURfRU5VTSIsMTI4MToiSU5WQUxJRF9WQUxVRSIsMTI4MjoiSU5WQUxJRF9PUEVSQVRJT04iLDEyODU6Ik9VVF9PRl9NRU1PUlkiLDEyODY6IklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIiwyMzA0OiJDVyIsMjMwNToiQ0NXIiwyODQ5OiJMSU5FX1dJRFRIIiwyODg0OiJDVUxMX0ZBQ0UiLDI4ODU6IkNVTExfRkFDRV9NT0RFIiwyODg2OiJGUk9OVF9GQUNFIiwyOTI4OiJERVBUSF9SQU5HRSIsMjkyOToiREVQVEhfVEVTVCIsMjkzMDoiREVQVEhfV1JJVEVNQVNLIiwyOTMxOiJERVBUSF9DTEVBUl9WQUxVRSIsMjkzMjoiREVQVEhfRlVOQyIsMjk2MDoiU1RFTkNJTF9URVNUIiwyOTYxOiJTVEVOQ0lMX0NMRUFSX1ZBTFVFIiwyOTYyOiJTVEVOQ0lMX0ZVTkMiLDI5NjM6IlNURU5DSUxfVkFMVUVfTUFTSyIsMjk2NDoiU1RFTkNJTF9GQUlMIiwyOTY1OiJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCIsMjk2NjoiU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MiLDI5Njc6IlNURU5DSUxfUkVGIiwyOTY4OiJTVEVOQ0lMX1dSSVRFTUFTSyIsMjk3ODoiVklFV1BPUlQiLDMwMjQ6IkRJVEhFUiIsMzA0MjoiQkxFTkQiLDMwODg6IlNDSVNTT1JfQk9YIiwzMDg5OiJTQ0lTU09SX1RFU1QiLDMxMDY6IkNPTE9SX0NMRUFSX1ZBTFVFIiwzMTA3OiJDT0xPUl9XUklURU1BU0siLDMzMTc6IlVOUEFDS19BTElHTk1FTlQiLDMzMzM6IlBBQ0tfQUxJR05NRU5UIiwzMzc5OiJNQVhfVEVYVFVSRV9TSVpFIiwzMzg2OiJNQVhfVklFV1BPUlRfRElNUyIsMzQwODoiU1VCUElYRUxfQklUUyIsMzQxMDoiUkVEX0JJVFMiLDM0MTE6IkdSRUVOX0JJVFMiLDM0MTI6IkJMVUVfQklUUyIsMzQxMzoiQUxQSEFfQklUUyIsMzQxNDoiREVQVEhfQklUUyIsMzQxNToiU1RFTkNJTF9CSVRTIiwzNTUzOiJURVhUVVJFXzJEIiw0MzUyOiJET05UX0NBUkUiLDQzNTM6IkZBU1RFU1QiLDQzNTQ6Ik5JQ0VTVCIsNTEyMDoiQllURSIsNTEyMToiVU5TSUdORURfQllURSIsNTEyMjoiU0hPUlQiLDUxMjM6IlVOU0lHTkVEX1NIT1JUIiw1MTI0OiJJTlQiLDUxMjU6IlVOU0lHTkVEX0lOVCIsNTEyNjoiRkxPQVQiLDUzODY6IklOVkVSVCIsNTg5MDoiVEVYVFVSRSIsNjQwMToiU1RFTkNJTF9JTkRFWCIsNjQwMjoiREVQVEhfQ09NUE9ORU5UIiw2NDA2OiJBTFBIQSIsNjQwNzoiUkdCIiw2NDA4OiJSR0JBIiw2NDA5OiJMVU1JTkFOQ0UiLDY0MTA6IkxVTUlOQU5DRV9BTFBIQSIsNzY4MDoiS0VFUCIsNzY4MToiUkVQTEFDRSIsNzY4MjoiSU5DUiIsNzY4MzoiREVDUiIsNzkzNjoiVkVORE9SIiw3OTM3OiJSRU5ERVJFUiIsNzkzODoiVkVSU0lPTiIsOTcyODoiTkVBUkVTVCIsOTcyOToiTElORUFSIiw5OTg0OiJORUFSRVNUX01JUE1BUF9ORUFSRVNUIiw5OTg1OiJMSU5FQVJfTUlQTUFQX05FQVJFU1QiLDk5ODY6Ik5FQVJFU1RfTUlQTUFQX0xJTkVBUiIsOTk4NzoiTElORUFSX01JUE1BUF9MSU5FQVIiLDEwMjQwOiJURVhUVVJFX01BR19GSUxURVIiLDEwMjQxOiJURVhUVVJFX01JTl9GSUxURVIiLDEwMjQyOiJURVhUVVJFX1dSQVBfUyIsMTAyNDM6IlRFWFRVUkVfV1JBUF9UIiwxMDQ5NzoiUkVQRUFUIiwxMDc1MjoiUE9MWUdPTl9PRkZTRVRfVU5JVFMiLDE2Mzg0OiJDT0xPUl9CVUZGRVJfQklUIiwzMjc2OToiQ09OU1RBTlRfQ09MT1IiLDMyNzcwOiJPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IiLDMyNzcxOiJDT05TVEFOVF9BTFBIQSIsMzI3NzI6Ik9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSIsMzI3NzM6IkJMRU5EX0NPTE9SIiwzMjc3NDoiRlVOQ19BREQiLDMyNzc3OiJCTEVORF9FUVVBVElPTl9SR0IiLDMyNzc4OiJGVU5DX1NVQlRSQUNUIiwzMjc3OToiRlVOQ19SRVZFUlNFX1NVQlRSQUNUIiwzMjgxOToiVU5TSUdORURfU0hPUlRfNF80XzRfNCIsMzI4MjA6IlVOU0lHTkVEX1NIT1JUXzVfNV81XzEiLDMyODIzOiJQT0xZR09OX09GRlNFVF9GSUxMIiwzMjgyNDoiUE9MWUdPTl9PRkZTRVRfRkFDVE9SIiwzMjg1NDoiUkdCQTQiLDMyODU1OiJSR0I1X0ExIiwzMjg3MzoiVEVYVFVSRV9CSU5ESU5HXzJEIiwzMjkyNjoiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFIiwzMjkyODoiU0FNUExFX0NPVkVSQUdFIiwzMjkzNjoiU0FNUExFX0JVRkZFUlMiLDMyOTM3OiJTQU1QTEVTIiwzMjkzODoiU0FNUExFX0NPVkVSQUdFX1ZBTFVFIiwzMjkzOToiU0FNUExFX0NPVkVSQUdFX0lOVkVSVCIsMzI5Njg6IkJMRU5EX0RTVF9SR0IiLDMyOTY5OiJCTEVORF9TUkNfUkdCIiwzMjk3MDoiQkxFTkRfRFNUX0FMUEhBIiwzMjk3MToiQkxFTkRfU1JDX0FMUEhBIiwzMzA3MToiQ0xBTVBfVE9fRURHRSIsMzMxNzA6IkdFTkVSQVRFX01JUE1BUF9ISU5UIiwzMzE4OToiREVQVEhfQ09NUE9ORU5UMTYiLDMzMzA2OiJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiLDMzNjM1OiJVTlNJR05FRF9TSE9SVF81XzZfNSIsMzM2NDg6Ik1JUlJPUkVEX1JFUEVBVCIsMzM5MDE6IkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSIsMzM5MDI6IkFMSUFTRURfTElORV9XSURUSF9SQU5HRSIsMzM5ODQ6IlRFWFRVUkUwIiwzMzk4NToiVEVYVFVSRTEiLDMzOTg2OiJURVhUVVJFMiIsMzM5ODc6IlRFWFRVUkUzIiwzMzk4ODoiVEVYVFVSRTQiLDMzOTg5OiJURVhUVVJFNSIsMzM5OTA6IlRFWFRVUkU2IiwzMzk5MToiVEVYVFVSRTciLDMzOTkyOiJURVhUVVJFOCIsMzM5OTM6IlRFWFRVUkU5IiwzMzk5NDoiVEVYVFVSRTEwIiwzMzk5NToiVEVYVFVSRTExIiwzMzk5NjoiVEVYVFVSRTEyIiwzMzk5NzoiVEVYVFVSRTEzIiwzMzk5ODoiVEVYVFVSRTE0IiwzMzk5OToiVEVYVFVSRTE1IiwzNDAwMDoiVEVYVFVSRTE2IiwzNDAwMToiVEVYVFVSRTE3IiwzNDAwMjoiVEVYVFVSRTE4IiwzNDAwMzoiVEVYVFVSRTE5IiwzNDAwNDoiVEVYVFVSRTIwIiwzNDAwNToiVEVYVFVSRTIxIiwzNDAwNjoiVEVYVFVSRTIyIiwzNDAwNzoiVEVYVFVSRTIzIiwzNDAwODoiVEVYVFVSRTI0IiwzNDAwOToiVEVYVFVSRTI1IiwzNDAxMDoiVEVYVFVSRTI2IiwzNDAxMToiVEVYVFVSRTI3IiwzNDAxMjoiVEVYVFVSRTI4IiwzNDAxMzoiVEVYVFVSRTI5IiwzNDAxNDoiVEVYVFVSRTMwIiwzNDAxNToiVEVYVFVSRTMxIiwzNDAxNjoiQUNUSVZFX1RFWFRVUkUiLDM0MDI0OiJNQVhfUkVOREVSQlVGRkVSX1NJWkUiLDM0MDQxOiJERVBUSF9TVEVOQ0lMIiwzNDA1NToiSU5DUl9XUkFQIiwzNDA1NjoiREVDUl9XUkFQIiwzNDA2NzoiVEVYVFVSRV9DVUJFX01BUCIsMzQwNjg6IlRFWFRVUkVfQklORElOR19DVUJFX01BUCIsMzQwNjk6IlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCIsMzQwNzA6IlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCIsMzQwNzE6IlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSIsMzQwNzI6IlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSIsMzQwNzM6IlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiIsMzQwNzQ6IlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiIsMzQwNzY6Ik1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUiLDM0MzM4OiJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQiLDM0MzM5OiJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkUiLDM0MzQwOiJWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSIsMzQzNDE6IlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSIsMzQzNDI6IkNVUlJFTlRfVkVSVEVYX0FUVFJJQiIsMzQzNzM6IlZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUiIsMzQ0NjY6Ik5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIsMzQ0Njc6IkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIiwzNDY2MDoiQlVGRkVSX1NJWkUiLDM0NjYxOiJCVUZGRVJfVVNBR0UiLDM0ODE2OiJTVEVOQ0lMX0JBQ0tfRlVOQyIsMzQ4MTc6IlNURU5DSUxfQkFDS19GQUlMIiwzNDgxODoiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCIsMzQ4MTk6IlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MiLDM0ODc3OiJCTEVORF9FUVVBVElPTl9BTFBIQSIsMzQ5MjE6Ik1BWF9WRVJURVhfQVRUUklCUyIsMzQ5MjI6IlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRCIsMzQ5MzA6Ik1BWF9URVhUVVJFX0lNQUdFX1VOSVRTIiwzNDk2MjoiQVJSQVlfQlVGRkVSIiwzNDk2MzoiRUxFTUVOVF9BUlJBWV9CVUZGRVIiLDM0OTY0OiJBUlJBWV9CVUZGRVJfQklORElORyIsMzQ5NjU6IkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkciLDM0OTc1OiJWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HIiwzNTA0MDoiU1RSRUFNX0RSQVciLDM1MDQ0OiJTVEFUSUNfRFJBVyIsMzUwNDg6IkRZTkFNSUNfRFJBVyIsMzU2MzI6IkZSQUdNRU5UX1NIQURFUiIsMzU2MzM6IlZFUlRFWF9TSEFERVIiLDM1NjYwOiJNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMiLDM1NjYxOiJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyIsMzU2NjM6IlNIQURFUl9UWVBFIiwzNTY2NDoiRkxPQVRfVkVDMiIsMzU2NjU6IkZMT0FUX1ZFQzMiLDM1NjY2OiJGTE9BVF9WRUM0IiwzNTY2NzoiSU5UX1ZFQzIiLDM1NjY4OiJJTlRfVkVDMyIsMzU2Njk6IklOVF9WRUM0IiwzNTY3MDoiQk9PTCIsMzU2NzE6IkJPT0xfVkVDMiIsMzU2NzI6IkJPT0xfVkVDMyIsMzU2NzM6IkJPT0xfVkVDNCIsMzU2NzQ6IkZMT0FUX01BVDIiLDM1Njc1OiJGTE9BVF9NQVQzIiwzNTY3NjoiRkxPQVRfTUFUNCIsMzU2Nzg6IlNBTVBMRVJfMkQiLDM1NjgwOiJTQU1QTEVSX0NVQkUiLDM1NzEyOiJERUxFVEVfU1RBVFVTIiwzNTcxMzoiQ09NUElMRV9TVEFUVVMiLDM1NzE0OiJMSU5LX1NUQVRVUyIsMzU3MTU6IlZBTElEQVRFX1NUQVRVUyIsMzU3MTY6IklORk9fTE9HX0xFTkdUSCIsMzU3MTc6IkFUVEFDSEVEX1NIQURFUlMiLDM1NzE4OiJBQ1RJVkVfVU5JRk9STVMiLDM1NzE5OiJBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIiwzNTcyMDoiU0hBREVSX1NPVVJDRV9MRU5HVEgiLDM1NzIxOiJBQ1RJVkVfQVRUUklCVVRFUyIsMzU3MjI6IkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCIsMzU3MjQ6IlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTiIsMzU3MjU6IkNVUlJFTlRfUFJPR1JBTSIsMzYwMDM6IlNURU5DSUxfQkFDS19SRUYiLDM2MDA0OiJTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyIsMzYwMDU6IlNURU5DSUxfQkFDS19XUklURU1BU0siLDM2MDA2OiJGUkFNRUJVRkZFUl9CSU5ESU5HIiwzNjAwNzoiUkVOREVSQlVGRkVSX0JJTkRJTkciLDM2MDQ4OiJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFIiwzNjA0OToiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSIsMzYwNTA6IkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCIsMzYwNTE6IkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFIiwzNjA1MzoiRlJBTUVCVUZGRVJfQ09NUExFVEUiLDM2MDU0OiJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQiLDM2MDU1OiJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCIsMzYwNTc6IkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyIsMzYwNjE6IkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEIiwzNjA2NDoiQ09MT1JfQVRUQUNITUVOVDAiLDM2MDk2OiJERVBUSF9BVFRBQ0hNRU5UIiwzNjEyODoiU1RFTkNJTF9BVFRBQ0hNRU5UIiwzNjE2MDoiRlJBTUVCVUZGRVIiLDM2MTYxOiJSRU5ERVJCVUZGRVIiLDM2MTYyOiJSRU5ERVJCVUZGRVJfV0lEVEgiLDM2MTYzOiJSRU5ERVJCVUZGRVJfSEVJR0hUIiwzNjE2NDoiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCIsMzYxNjg6IlNURU5DSUxfSU5ERVg4IiwzNjE3NjoiUkVOREVSQlVGRkVSX1JFRF9TSVpFIiwzNjE3NzoiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUiLDM2MTc4OiJSRU5ERVJCVUZGRVJfQkxVRV9TSVpFIiwzNjE3OToiUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUiLDM2MTgwOiJSRU5ERVJCVUZGRVJfREVQVEhfU0laRSIsMzYxODE6IlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkUiLDM2MTk0OiJSR0I1NjUiLDM2MzM2OiJMT1dfRkxPQVQiLDM2MzM3OiJNRURJVU1fRkxPQVQiLDM2MzM4OiJISUdIX0ZMT0FUIiwzNjMzOToiTE9XX0lOVCIsMzYzNDA6Ik1FRElVTV9JTlQiLDM2MzQxOiJISUdIX0lOVCIsMzYzNDY6IlNIQURFUl9DT01QSUxFUiIsMzYzNDc6Ik1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTIiwzNjM0ODoiTUFYX1ZBUllJTkdfVkVDVE9SUyIsMzYzNDk6Ik1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMiLDM3NDQwOiJVTlBBQ0tfRkxJUF9ZX1dFQkdMIiwzNzQ0MToiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIiwzNzQ0MjoiQ09OVEVYVF9MT1NUX1dFQkdMIiwzNzQ0MzoiVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCIsMzc0NDQ6IkJST1dTRVJfREVGQVVMVF9XRUJHTCJ9fSx7fV0sMjQ5OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi8xLjAvbnVtYmVycyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gblt0XX19LHsiLi8xLjAvbnVtYmVycyI6MjQ4fV0sMjUwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9bihlKSxvPWEoZSxbe2J1ZmZlcjpyLHR5cGU6ZS5GTE9BVCxzaXplOjMsb2Zmc2V0OjAsc3RyaWRlOjQwfSx7YnVmZmVyOnIsdHlwZTplLkZMT0FULHNpemU6NCxvZmZzZXQ6MTIsc3RyaWRlOjQwfSx7YnVmZmVyOnIsdHlwZTplLkZMT0FULHNpemU6MyxvZmZzZXQ6Mjgsc3RyaWRlOjQwfV0pLGw9aShlKTtsLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxsLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MSxsLmF0dHJpYnV0ZXMub2Zmc2V0LmxvY2F0aW9uPTI7dmFyIGM9bmV3IHMoZSxyLG8sbCk7cmV0dXJuIGMudXBkYXRlKHQpLGN9O3ZhciBuPXQoImdsLWJ1ZmZlciIpLGE9dCgiZ2wtdmFvIiksaT10KCIuL3NoYWRlcnMvaW5kZXgiKSxvPVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtmdW5jdGlvbiBzKHQsZSxyLG4pe3RoaXMuZ2w9dCx0aGlzLnNoYWRlcj1uLHRoaXMuYnVmZmVyPWUsdGhpcy52YW89cix0aGlzLnBpeGVsUmF0aW89MSx0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBdXSx0aGlzLmNsaXBCb3VuZHM9W1stMS8wLC0xLzAsLTEvMF0sWzEvMCwxLzAsMS8wXV0sdGhpcy5saW5lV2lkdGg9WzEsMSwxXSx0aGlzLmNhcFNpemU9WzEwLDEwLDEwXSx0aGlzLmxpbmVDb3VudD1bMCwwLDBdLHRoaXMubGluZU9mZnNldD1bMCwwLDBdLHRoaXMub3BhY2l0eT0xLHRoaXMuaGFzQWxwaGE9ITF9dmFyIGw9cy5wcm90b3R5cGU7ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgcj0wO3I8MzsrK3IpdFswXVtyXT1NYXRoLm1pbih0WzBdW3JdLGVbcl0pLHRbMV1bcl09TWF0aC5tYXgodFsxXVtyXSxlW3JdKX1sLmlzT3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaGFzQWxwaGF9LGwuaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0FscGhhfSxsLmRyYXdUcmFuc3BhcmVudD1sLmRyYXc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbCxyPXRoaXMuc2hhZGVyLnVuaWZvcm1zO3RoaXMuc2hhZGVyLmJpbmQoKTt2YXIgbj1yLnZpZXc9dC52aWV3fHxvLGE9ci5wcm9qZWN0aW9uPXQucHJvamVjdGlvbnx8bztyLm1vZGVsPXQubW9kZWx8fG8sci5jbGlwQm91bmRzPXRoaXMuY2xpcEJvdW5kcyxyLm9wYWNpdHk9dGhpcy5vcGFjaXR5O3ZhciBpPW5bMTJdLHM9blsxM10sbD1uWzE0XSxjPW5bMTVdLHU9KHQuX29ydGhvfHwhMT8yOjEpKnRoaXMucGl4ZWxSYXRpbyooYVszXSppK2FbN10qcythWzExXSpsK2FbMTVdKmMpL2UuZHJhd2luZ0J1ZmZlckhlaWdodDt0aGlzLnZhby5iaW5kKCk7Zm9yKHZhciBoPTA7aDwzOysraCllLmxpbmVXaWR0aCh0aGlzLmxpbmVXaWR0aFtoXSp0aGlzLnBpeGVsUmF0aW8pLHIuY2FwU2l6ZT10aGlzLmNhcFNpemVbaF0qdSx0aGlzLmxpbmVDb3VudFtoXSYmZS5kcmF3QXJyYXlzKGUuTElORVMsdGhpcy5saW5lT2Zmc2V0W2hdLHRoaXMubGluZUNvdW50W2hdKTt0aGlzLnZhby51bmJpbmQoKX07dmFyIHU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9bmV3IEFycmF5KDMpLGU9MDtlPDM7KytlKXtmb3IodmFyIHI9W10sbj0xO248PTI7KytuKWZvcih2YXIgYT0tMTthPD0xO2ErPTIpe3ZhciBpPVswLDAsMF07aVsobitlKSUzXT1hLHIucHVzaChpKX10W2VdPXJ9cmV0dXJuIHR9KCk7ZnVuY3Rpb24gaCh0LGUscixuKXtmb3IodmFyIGE9dVtuXSxpPTA7aTxhLmxlbmd0aDsrK2kpe3ZhciBvPWFbaV07dC5wdXNoKGVbMF0sZVsxXSxlWzJdLHJbMF0sclsxXSxyWzJdLHJbM10sb1swXSxvWzFdLG9bMl0pfXJldHVybiBhLmxlbmd0aH1sLnVwZGF0ZT1mdW5jdGlvbih0KXsibGluZVdpZHRoImluKHQ9dHx8e30pJiYodGhpcy5saW5lV2lkdGg9dC5saW5lV2lkdGgsQXJyYXkuaXNBcnJheSh0aGlzLmxpbmVXaWR0aCl8fCh0aGlzLmxpbmVXaWR0aD1bdGhpcy5saW5lV2lkdGgsdGhpcy5saW5lV2lkdGgsdGhpcy5saW5lV2lkdGhdKSksImNhcFNpemUiaW4gdCYmKHRoaXMuY2FwU2l6ZT10LmNhcFNpemUsQXJyYXkuaXNBcnJheSh0aGlzLmNhcFNpemUpfHwodGhpcy5jYXBTaXplPVt0aGlzLmNhcFNpemUsdGhpcy5jYXBTaXplLHRoaXMuY2FwU2l6ZV0pKSx0aGlzLmhhc0FscGhhPSExLCJvcGFjaXR5ImluIHQmJih0aGlzLm9wYWNpdHk9K3Qub3BhY2l0eSx0aGlzLm9wYWNpdHk8MSYmKHRoaXMuaGFzQWxwaGE9ITApKTt2YXIgZT10LmNvbG9yfHxbWzAsMCwwXSxbMCwwLDBdLFswLDAsMF1dLHI9dC5wb3NpdGlvbixuPXQuZXJyb3I7aWYoQXJyYXkuaXNBcnJheShlWzBdKXx8KGU9W2UsZSxlXSksciYmbil7dmFyIGE9W10saT1yLmxlbmd0aCxvPTA7dGhpcy5ib3VuZHM9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV0sdGhpcy5saW5lQ291bnQ9WzAsMCwwXTtmb3IodmFyIHM9MDtzPDM7KytzKXt0aGlzLmxpbmVPZmZzZXRbc109bzt0OmZvcih2YXIgbD0wO2w8aTsrK2wpe2Zvcih2YXIgdT1yW2xdLGY9MDtmPDM7KytmKWlmKGlzTmFOKHVbZl0pfHwhaXNGaW5pdGUodVtmXSkpY29udGludWUgdDt2YXIgcD1uW2xdLGQ9ZVtzXTtpZihBcnJheS5pc0FycmF5KGRbMF0pJiYoZD1lW2xdKSwzPT09ZC5sZW5ndGg/ZD1bZFswXSxkWzFdLGRbMl0sMV06ND09PWQubGVuZ3RoJiYoZD1bZFswXSxkWzFdLGRbMl0sZFszXV0sIXRoaXMuaGFzQWxwaGEmJmRbM108MSYmKHRoaXMuaGFzQWxwaGE9ITApKSwhaXNOYU4ocFswXVtzXSkmJiFpc05hTihwWzFdW3NdKSl7dmFyIGc7aWYocFswXVtzXTwwKShnPXUuc2xpY2UoKSlbc10rPXBbMF1bc10sYS5wdXNoKHVbMF0sdVsxXSx1WzJdLGRbMF0sZFsxXSxkWzJdLGRbM10sMCwwLDAsZ1swXSxnWzFdLGdbMl0sZFswXSxkWzFdLGRbMl0sZFszXSwwLDAsMCksYyh0aGlzLmJvdW5kcyxnKSxvKz0yK2goYSxnLGQscyk7aWYocFsxXVtzXT4wKShnPXUuc2xpY2UoKSlbc10rPXBbMV1bc10sYS5wdXNoKHVbMF0sdVsxXSx1WzJdLGRbMF0sZFsxXSxkWzJdLGRbM10sMCwwLDAsZ1swXSxnWzFdLGdbMl0sZFswXSxkWzFdLGRbMl0sZFszXSwwLDAsMCksYyh0aGlzLmJvdW5kcyxnKSxvKz0yK2goYSxnLGQscyl9fXRoaXMubGluZUNvdW50W3NdPW8tdGhpcy5saW5lT2Zmc2V0W3NdfXRoaXMuYnVmZmVyLnVwZGF0ZShhKX19LGwuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLmJ1ZmZlci5kaXNwb3NlKCksdGhpcy52YW8uZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMvaW5kZXgiOjI1MSwiZ2wtYnVmZmVyIjoyNDQsImdsLXZhbyI6MzI5fV0sMjUxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsc2xpZnkiKSxhPXQoImdsLXNoYWRlciIpLGk9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uLCBvZmZzZXQ7XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gZmxvYXQgY2FwU2l6ZTtcbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52YXJ5aW5nIHZlYzMgZnJhZ1Bvc2l0aW9uO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzQgd29ybGRQb3NpdGlvbiAgPSBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gIHdvcmxkUG9zaXRpb24gICAgICAgPSAod29ybGRQb3NpdGlvbiAvIHdvcmxkUG9zaXRpb24udykgKyB2ZWM0KGNhcFNpemUgKiBvZmZzZXQsIDAuMCk7XG4gIGdsX1Bvc2l0aW9uICAgICAgICAgPSBwcm9qZWN0aW9uICogdmlldyAqIHdvcmxkUG9zaXRpb247XG4gIGZyYWdDb2xvciAgICAgICAgICAgPSBjb2xvcjtcbiAgZnJhZ1Bvc2l0aW9uICAgICAgICA9IHBvc2l0aW9uO1xufSJdKSxvPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG52YXJ5aW5nIHZlYzMgZnJhZ1Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBpZiAoXG4gICAgb3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmcmFnUG9zaXRpb24pIHx8XG4gICAgZnJhZ0NvbG9yLmEgKiBvcGFjaXR5ID09IDAuXG4gICkgZGlzY2FyZDtcblxuICBnbF9GcmFnQ29sb3IgPSBvcGFjaXR5ICogZnJhZ0NvbG9yO1xufSJdKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCxpLG8sbnVsbCxbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25hbWU6Im9mZnNldCIsdHlwZToidmVjMyJ9XSl9fSx7ImdsLXNoYWRlciI6MzA0LGdsc2xpZnk6NDExfV0sMjUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLXRleHR1cmUyZCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXthfHwoYT10LkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVELGk9dC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsbz10LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyxzPXQuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQpO3ZhciBjPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kcmF3X2J1ZmZlcnMiKTshbCYmYyYmZnVuY3Rpb24odCxlKXt2YXIgcj10LmdldFBhcmFtZXRlcihlLk1BWF9DT0xPUl9BVFRBQ0hNRU5UU19XRUJHTCk7bD1uZXcgQXJyYXkocisxKTtmb3IodmFyIG49MDtuPD1yOysrbil7Zm9yKHZhciBhPW5ldyBBcnJheShyKSxpPTA7aTxuOysraSlhW2ldPXQuQ09MT1JfQVRUQUNITUVOVDAraTtmb3IodmFyIGk9bjtpPHI7KytpKWFbaV09dC5OT05FO2xbbl09YX19KHQsYyk7QXJyYXkuaXNBcnJheShlKSYmKG49cixyPTB8ZVsxXSxlPTB8ZVswXSk7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBNaXNzaW5nIHNoYXBlIHBhcmFtZXRlciIpO3ZhciB1PXQuZ2V0UGFyYW1ldGVyKHQuTUFYX1JFTkRFUkJVRkZFUl9TSVpFKTtpZihlPDB8fGU+dXx8cjwwfHxyPnUpdGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IFBhcmFtZXRlcnMgYXJlIHRvbyBsYXJnZSBmb3IgRkJPIik7dmFyIGg9MTtpZigiY29sb3IiaW4obj1ufHx7fSkpe2lmKChoPU1hdGgubWF4KDB8bi5jb2xvciwwKSk8MCl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogTXVzdCBzcGVjaWZ5IGEgbm9ubmVnYXRpdmUgbnVtYmVyIG9mIGNvbG9ycyIpO2lmKGg+MSl7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IE11bHRpcGxlIGRyYXcgYnVmZmVyIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIik7aWYoaD50LmdldFBhcmFtZXRlcihjLk1BWF9DT0xPUl9BVFRBQ0hNRU5UU19XRUJHTCkpdGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IENvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCAiK2grIiBkcmF3IGJ1ZmZlcnMiKX19dmFyIGY9dC5VTlNJR05FRF9CWVRFLHA9dC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zsb2F0Iik7aWYobi5mbG9hdCYmaD4wKXtpZighcCl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IGZsb2F0aW5nIHBvaW50IHRleHR1cmVzIik7Zj10LkZMT0FUfWVsc2Ugbi5wcmVmZXJGbG9hdCYmaD4wJiZwJiYoZj10LkZMT0FUKTt2YXIgZz0hMDsiZGVwdGgiaW4gbiYmKGc9ISFuLmRlcHRoKTt2YXIgdj0hMTsic3RlbmNpbCJpbiBuJiYodj0hIW4uc3RlbmNpbCk7cmV0dXJuIG5ldyBkKHQsZSxyLGYsaCxnLHYsYyl9O3ZhciBhLGksbyxzLGw9bnVsbDtmdW5jdGlvbiBjKHQpe3JldHVyblt0LmdldFBhcmFtZXRlcih0LkZSQU1FQlVGRkVSX0JJTkRJTkcpLHQuZ2V0UGFyYW1ldGVyKHQuUkVOREVSQlVGRkVSX0JJTkRJTkcpLHQuZ2V0UGFyYW1ldGVyKHQuVEVYVFVSRV9CSU5ESU5HXzJEKV19ZnVuY3Rpb24gdSh0LGUpe3QuYmluZEZyYW1lYnVmZmVyKHQuRlJBTUVCVUZGRVIsZVswXSksdC5iaW5kUmVuZGVyYnVmZmVyKHQuUkVOREVSQlVGRkVSLGVbMV0pLHQuYmluZFRleHR1cmUodC5URVhUVVJFXzJELGVbMl0pfWZ1bmN0aW9uIGgodCl7c3dpdGNoKHQpe2Nhc2UgYTp0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogRnJhbWVidWZmZXIgdW5zdXBwb3J0ZWQiKTtjYXNlIGk6dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIGluY29tcGxldGUgYXR0YWNobWVudCIpO2Nhc2Ugbzp0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogRnJhbWVidWZmZXIgaW5jb21wbGV0ZSBkaW1lbnNpb25zIik7Y2FzZSBzOnRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIG1pc3NpbmcgYXR0YWNobWVudCIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIGZhaWxlZCBmb3IgdW5zcGVjaWZpZWQgcmVhc29uIil9fWZ1bmN0aW9uIGYodCxlLHIsYSxpLG8pe2lmKCFhKXJldHVybiBudWxsO3ZhciBzPW4odCxlLHIsaSxhKTtyZXR1cm4gcy5tYWdGaWx0ZXI9dC5ORUFSRVNULHMubWluRmlsdGVyPXQuTkVBUkVTVCxzLm1pcFNhbXBsZXM9MSxzLmJpbmQoKSx0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKHQuRlJBTUVCVUZGRVIsbyx0LlRFWFRVUkVfMkQscy5oYW5kbGUsMCksc31mdW5jdGlvbiBwKHQsZSxyLG4sYSl7dmFyIGk9dC5jcmVhdGVSZW5kZXJidWZmZXIoKTtyZXR1cm4gdC5iaW5kUmVuZGVyYnVmZmVyKHQuUkVOREVSQlVGRkVSLGkpLHQucmVuZGVyYnVmZmVyU3RvcmFnZSh0LlJFTkRFUkJVRkZFUixuLGUsciksdC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0LkZSQU1FQlVGRkVSLGEsdC5SRU5ERVJCVUZGRVIsaSksaX1mdW5jdGlvbiBkKHQsZSxyLG4sYSxpLG8scyl7dGhpcy5nbD10LHRoaXMuX3NoYXBlPVswfGUsMHxyXSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZXh0PXMsdGhpcy5jb2xvcj1uZXcgQXJyYXkoYSk7Zm9yKHZhciBkPTA7ZDxhOysrZCl0aGlzLmNvbG9yW2RdPW51bGw7dGhpcy5fY29sb3JfcmI9bnVsbCx0aGlzLmRlcHRoPW51bGwsdGhpcy5fZGVwdGhfcmI9bnVsbCx0aGlzLl9jb2xvclR5cGU9bix0aGlzLl91c2VEZXB0aD1pLHRoaXMuX3VzZVN0ZW5jaWw9bzt2YXIgZz10aGlzLHY9WzB8ZSwwfHJdO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHYsezA6e2dldDpmdW5jdGlvbigpe3JldHVybiBnLl9zaGFwZVswXX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBnLndpZHRoPXR9fSwxOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZy5fc2hhcGVbMV19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gZy5oZWlnaHQ9dH19fSksdGhpcy5fc2hhcGVWZWN0b3I9dixmdW5jdGlvbih0KXt2YXIgZT1jKHQuZ2wpLHI9dC5nbCxuPXQuaGFuZGxlPXIuY3JlYXRlRnJhbWVidWZmZXIoKSxhPXQuX3NoYXBlWzBdLGk9dC5fc2hhcGVbMV0sbz10LmNvbG9yLmxlbmd0aCxzPXQuX2V4dCxkPXQuX3VzZVN0ZW5jaWwsZz10Ll91c2VEZXB0aCx2PXQuX2NvbG9yVHlwZTtyLmJpbmRGcmFtZWJ1ZmZlcihyLkZSQU1FQlVGRkVSLG4pO2Zvcih2YXIgbT0wO208bzsrK20pdC5jb2xvclttXT1mKHIsYSxpLHYsci5SR0JBLHIuQ09MT1JfQVRUQUNITUVOVDArbSk7MD09PW8/KHQuX2NvbG9yX3JiPXAocixhLGksci5SR0JBNCxyLkNPTE9SX0FUVEFDSE1FTlQwKSxzJiZzLmRyYXdCdWZmZXJzV0VCR0wobFswXSkpOm8+MSYmcy5kcmF3QnVmZmVyc1dFQkdMKGxbb10pO3ZhciB5PXIuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kZXB0aF90ZXh0dXJlIik7eT9kP3QuZGVwdGg9ZihyLGEsaSx5LlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMLHIuREVQVEhfU1RFTkNJTCxyLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCk6ZyYmKHQuZGVwdGg9ZihyLGEsaSxyLlVOU0lHTkVEX1NIT1JULHIuREVQVEhfQ09NUE9ORU5ULHIuREVQVEhfQVRUQUNITUVOVCkpOmcmJmQ/dC5fZGVwdGhfcmI9cChyLGEsaSxyLkRFUFRIX1NURU5DSUwsci5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpOmc/dC5fZGVwdGhfcmI9cChyLGEsaSxyLkRFUFRIX0NPTVBPTkVOVDE2LHIuREVQVEhfQVRUQUNITUVOVCk6ZCYmKHQuX2RlcHRoX3JiPXAocixhLGksci5TVEVOQ0lMX0lOREVYLHIuU1RFTkNJTF9BVFRBQ0hNRU5UKSk7dmFyIHg9ci5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHIuRlJBTUVCVUZGRVIpO2lmKHghPT1yLkZSQU1FQlVGRkVSX0NPTVBMRVRFKXtmb3IodC5fZGVzdHJveWVkPSEwLHIuYmluZEZyYW1lYnVmZmVyKHIuRlJBTUVCVUZGRVIsbnVsbCksci5kZWxldGVGcmFtZWJ1ZmZlcih0LmhhbmRsZSksdC5oYW5kbGU9bnVsbCx0LmRlcHRoJiYodC5kZXB0aC5kaXNwb3NlKCksdC5kZXB0aD1udWxsKSx0Ll9kZXB0aF9yYiYmKHIuZGVsZXRlUmVuZGVyYnVmZmVyKHQuX2RlcHRoX3JiKSx0Ll9kZXB0aF9yYj1udWxsKSxtPTA7bTx0LmNvbG9yLmxlbmd0aDsrK20pdC5jb2xvclttXS5kaXNwb3NlKCksdC5jb2xvclttXT1udWxsO3QuX2NvbG9yX3JiJiYoci5kZWxldGVSZW5kZXJidWZmZXIodC5fY29sb3JfcmIpLHQuX2NvbG9yX3JiPW51bGwpLHUocixlKSxoKHgpfXUocixlKX0odGhpcyl9dmFyIGc9ZC5wcm90b3R5cGU7ZnVuY3Rpb24gdih0LGUscil7aWYodC5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBDYW4ndCByZXNpemUgZGVzdHJveWVkIEZCTyIpO2lmKHQuX3NoYXBlWzBdIT09ZXx8dC5fc2hhcGVbMV0hPT1yKXt2YXIgbj10LmdsLGE9bi5nZXRQYXJhbWV0ZXIobi5NQVhfUkVOREVSQlVGRkVSX1NJWkUpO2lmKGU8MHx8ZT5hfHxyPDB8fHI+YSl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogQ2FuJ3QgcmVzaXplIEZCTywgaW52YWxpZCBkaW1lbnNpb25zIik7dC5fc2hhcGVbMF09ZSx0Ll9zaGFwZVsxXT1yO2Zvcih2YXIgaT1jKG4pLG89MDtvPHQuY29sb3IubGVuZ3RoOysrbyl0LmNvbG9yW29dLnNoYXBlPXQuX3NoYXBlO3QuX2NvbG9yX3JiJiYobi5iaW5kUmVuZGVyYnVmZmVyKG4uUkVOREVSQlVGRkVSLHQuX2NvbG9yX3JiKSxuLnJlbmRlcmJ1ZmZlclN0b3JhZ2Uobi5SRU5ERVJCVUZGRVIsbi5SR0JBNCx0Ll9zaGFwZVswXSx0Ll9zaGFwZVsxXSkpLHQuZGVwdGgmJih0LmRlcHRoLnNoYXBlPXQuX3NoYXBlKSx0Ll9kZXB0aF9yYiYmKG4uYmluZFJlbmRlcmJ1ZmZlcihuLlJFTkRFUkJVRkZFUix0Ll9kZXB0aF9yYiksdC5fdXNlRGVwdGgmJnQuX3VzZVN0ZW5jaWw/bi5yZW5kZXJidWZmZXJTdG9yYWdlKG4uUkVOREVSQlVGRkVSLG4uREVQVEhfU1RFTkNJTCx0Ll9zaGFwZVswXSx0Ll9zaGFwZVsxXSk6dC5fdXNlRGVwdGg/bi5yZW5kZXJidWZmZXJTdG9yYWdlKG4uUkVOREVSQlVGRkVSLG4uREVQVEhfQ09NUE9ORU5UMTYsdC5fc2hhcGVbMF0sdC5fc2hhcGVbMV0pOnQuX3VzZVN0ZW5jaWwmJm4ucmVuZGVyYnVmZmVyU3RvcmFnZShuLlJFTkRFUkJVRkZFUixuLlNURU5DSUxfSU5ERVgsdC5fc2hhcGVbMF0sdC5fc2hhcGVbMV0pKSxuLmJpbmRGcmFtZWJ1ZmZlcihuLkZSQU1FQlVGRkVSLHQuaGFuZGxlKTt2YXIgcz1uLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMobi5GUkFNRUJVRkZFUik7cyE9PW4uRlJBTUVCVUZGRVJfQ09NUExFVEUmJih0LmRpc3Bvc2UoKSx1KG4saSksaChzKSksdShuLGkpfX1PYmplY3QuZGVmaW5lUHJvcGVydGllcyhnLHtzaGFwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZD9bMCwwXTp0aGlzLl9zaGFwZVZlY3Rvcn0sc2V0OmZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCl8fCh0PVswfHQsMHx0XSksMiE9PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBTaGFwZSB2ZWN0b3IgbXVzdCBiZSBsZW5ndGggMiIpO3ZhciBlPTB8dFswXSxyPTB8dFsxXTtyZXR1cm4gdih0aGlzLGUsciksW2Uscl19LGVudW1lcmFibGU6ITF9LHdpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkPzA6dGhpcy5fc2hhcGVbMF19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gdih0aGlzLHR8PTAsdGhpcy5fc2hhcGVbMV0pLHR9LGVudW1lcmFibGU6ITF9LGhlaWdodDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZD8wOnRoaXMuX3NoYXBlWzFdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR8PTAsdih0aGlzLHRoaXMuX3NoYXBlWzBdLHQpLHR9LGVudW1lcmFibGU6ITF9fSksZy5iaW5kPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2Rlc3Ryb3llZCl7dmFyIHQ9dGhpcy5nbDt0LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLHRoaXMuaGFuZGxlKSx0LnZpZXdwb3J0KDAsMCx0aGlzLl9zaGFwZVswXSx0aGlzLl9zaGFwZVsxXSl9fSxnLmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZighdGhpcy5fZGVzdHJveWVkKXt0aGlzLl9kZXN0cm95ZWQ9ITA7dmFyIHQ9dGhpcy5nbDt0LmRlbGV0ZUZyYW1lYnVmZmVyKHRoaXMuaGFuZGxlKSx0aGlzLmhhbmRsZT1udWxsLHRoaXMuZGVwdGgmJih0aGlzLmRlcHRoLmRpc3Bvc2UoKSx0aGlzLmRlcHRoPW51bGwpLHRoaXMuX2RlcHRoX3JiJiYodC5kZWxldGVSZW5kZXJidWZmZXIodGhpcy5fZGVwdGhfcmIpLHRoaXMuX2RlcHRoX3JiPW51bGwpO2Zvcih2YXIgZT0wO2U8dGhpcy5jb2xvci5sZW5ndGg7KytlKXRoaXMuY29sb3JbZV0uZGlzcG9zZSgpLHRoaXMuY29sb3JbZV09bnVsbDt0aGlzLl9jb2xvcl9yYiYmKHQuZGVsZXRlUmVuZGVyYnVmZmVyKHRoaXMuX2NvbG9yX3JiKSx0aGlzLl9jb2xvcl9yYj1udWxsKX19fSx7ImdsLXRleHR1cmUyZCI6MzI0fV0sMjUzOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgic3ByaW50Zi1qcyIpLnNwcmludGYsYT10KCJnbC1jb25zdGFudHMvbG9va3VwIiksaT10KCJnbHNsLXNoYWRlci1uYW1lIiksbz10KCJhZGQtbGluZS1udW1iZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIHM9aShlKXx8Im9mIHVua25vd24gbmFtZSAoc2VlIG5wbSBnbHNsLXNoYWRlci1uYW1lKSIsbD0idW5rbm93biB0eXBlIjt2b2lkIDAhPT1yJiYobD1yPT09YS5GUkFHTUVOVF9TSEFERVI/ImZyYWdtZW50IjoidmVydGV4Iik7Zm9yKHZhciBjPW4oIkVycm9yIGNvbXBpbGluZyAlcyBzaGFkZXIgJXM6XG4iLGwscyksdT1uKCIlcyVzIixjLHQpLGg9dC5zcGxpdCgiXG4iKSxmPXt9LHA9MDtwPGgubGVuZ3RoO3ArKyl7dmFyIGQ9aFtwXTtpZigiIiE9PWQmJiJcMCIhPT1kKXt2YXIgZz1wYXJzZUludChkLnNwbGl0KCI6IilbMl0pO2lmKGlzTmFOKGcpKXRocm93IG5ldyBFcnJvcihuKCJDb3VsZCBub3QgcGFyc2UgZXJyb3I6ICVzIixkKSk7ZltnXT1kfX1mb3IodmFyIHY9byhlKS5zcGxpdCgiXG4iKSxwPTA7cDx2Lmxlbmd0aDtwKyspaWYoZltwKzNdfHxmW3ArMl18fGZbcCsxXSl7dmFyIG09dltwXTtpZihjKz1tKyJcbiIsZltwKzFdKXt2YXIgeT1mW3ArMV07eT15LnN1YnN0cih5LnNwbGl0KCI6IiwzKS5qb2luKCI6IikubGVuZ3RoKzEpLnRyaW0oKSxjKz1uKCJeXl4gJXNcblxuIix5KX19cmV0dXJue2xvbmc6Yy50cmltKCksc2hvcnQ6dS50cmltKCl9fX0seyJhZGQtbGluZS1udW1iZXJzIjo2NCwiZ2wtY29uc3RhbnRzL2xvb2t1cCI6MjQ5LCJnbHNsLXNoYWRlci1uYW1lIjo0MDMsInNwcmludGYtanMiOjUyN31dLDI1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmdsLG49byhyLGwudmVydGV4LGwuZnJhZ21lbnQpLGE9byhyLGwucGlja1ZlcnRleCxsLnBpY2tGcmFnbWVudCksaT1zKHIpLHU9cyhyKSxoPXMociksZj1zKHIpLHA9bmV3IGModCxuLGEsaSx1LGgsZik7cmV0dXJuIHAudXBkYXRlKGUpLHQuYWRkT2JqZWN0KHApLHB9O3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksYT10KCJpb3RhLWFycmF5IiksaT10KCJ0eXBlZGFycmF5LXBvb2wiKSxvPXQoImdsLXNoYWRlciIpLHM9dCgiZ2wtYnVmZmVyIiksbD10KCIuL2xpYi9zaGFkZXJzIik7ZnVuY3Rpb24gYyh0LGUscixuLGEsaSxvKXt0aGlzLnBsb3Q9dCx0aGlzLnNoYWRlcj1lLHRoaXMucGlja1NoYWRlcj1yLHRoaXMucG9zaXRpb25CdWZmZXI9bix0aGlzLndlaWdodEJ1ZmZlcj1hLHRoaXMuY29sb3JCdWZmZXI9aSx0aGlzLmlkQnVmZmVyPW8sdGhpcy54RGF0YT1bXSx0aGlzLnlEYXRhPVtdLHRoaXMuc2hhcGU9WzAsMF0sdGhpcy5ib3VuZHM9WzEvMCwxLzAsLTEvMCwtMS8wXSx0aGlzLnBpY2tPZmZzZXQ9MH12YXIgdSxoPWMucHJvdG90eXBlLGY9WzAsMCwxLDAsMCwxLDEsMCwxLDEsMCwxXTtoLmRyYXc9KHU9WzEsMCwwLDAsMSwwLDAsMCwxXSxmdW5jdGlvbigpe3ZhciB0PXRoaXMucGxvdCxlPXRoaXMuc2hhZGVyLHI9dGhpcy5ib3VuZHMsbj10aGlzLm51bVZlcnRpY2VzO2lmKCEobjw9MCkpe3ZhciBhPXQuZ2wsaT10LmRhdGFCb3gsbz1yWzJdLXJbMF0scz1yWzNdLXJbMV0sbD1pWzJdLWlbMF0sYz1pWzNdLWlbMV07dVswXT0yKm8vbCx1WzRdPTIqcy9jLHVbNl09MiooclswXS1pWzBdKS9sLTEsdVs3XT0yKihyWzFdLWlbMV0pL2MtMSxlLmJpbmQoKTt2YXIgaD1lLnVuaWZvcm1zO2gudmlld1RyYW5zZm9ybT11LGguc2hhcGU9dGhpcy5zaGFwZTt2YXIgZj1lLmF0dHJpYnV0ZXM7dGhpcy5wb3NpdGlvbkJ1ZmZlci5iaW5kKCksZi5wb3NpdGlvbi5wb2ludGVyKCksdGhpcy53ZWlnaHRCdWZmZXIuYmluZCgpLGYud2VpZ2h0LnBvaW50ZXIoYS5VTlNJR05FRF9CWVRFLCExKSx0aGlzLmNvbG9yQnVmZmVyLmJpbmQoKSxmLmNvbG9yLnBvaW50ZXIoYS5VTlNJR05FRF9CWVRFLCEwKSxhLmRyYXdBcnJheXMoYS5UUklBTkdMRVMsMCxuKX19KSxoLmRyYXdQaWNrPWZ1bmN0aW9uKCl7dmFyIHQ9WzEsMCwwLDAsMSwwLDAsMCwxXSxlPVswLDAsMCwwXTtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49dGhpcy5wbG90LGE9dGhpcy5waWNrU2hhZGVyLGk9dGhpcy5ib3VuZHMsbz10aGlzLm51bVZlcnRpY2VzO2lmKCEobzw9MCkpe3ZhciBzPW4uZ2wsbD1uLmRhdGFCb3gsYz1pWzJdLWlbMF0sdT1pWzNdLWlbMV0saD1sWzJdLWxbMF0sZj1sWzNdLWxbMV07dFswXT0yKmMvaCx0WzRdPTIqdS9mLHRbNl09MiooaVswXS1sWzBdKS9oLTEsdFs3XT0yKihpWzFdLWxbMV0pL2YtMTtmb3IodmFyIHA9MDtwPDQ7KytwKWVbcF09cj4+OCpwJjI1NTt0aGlzLnBpY2tPZmZzZXQ9cixhLmJpbmQoKTt2YXIgZD1hLnVuaWZvcm1zO2Qudmlld1RyYW5zZm9ybT10LGQucGlja09mZnNldD1lLGQuc2hhcGU9dGhpcy5zaGFwZTt2YXIgZz1hLmF0dHJpYnV0ZXM7cmV0dXJuIHRoaXMucG9zaXRpb25CdWZmZXIuYmluZCgpLGcucG9zaXRpb24ucG9pbnRlcigpLHRoaXMud2VpZ2h0QnVmZmVyLmJpbmQoKSxnLndlaWdodC5wb2ludGVyKHMuVU5TSUdORURfQllURSwhMSksdGhpcy5pZEJ1ZmZlci5iaW5kKCksZy5waWNrSWQucG9pbnRlcihzLlVOU0lHTkVEX0JZVEUsITEpLHMuZHJhd0FycmF5cyhzLlRSSUFOR0xFUywwLG8pLHIrdGhpcy5zaGFwZVswXSp0aGlzLnNoYXBlWzFdfX19KCksaC5waWNrPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnBpY2tPZmZzZXQsYT10aGlzLnNoYXBlWzBdKnRoaXMuc2hhcGVbMV07aWYocjxufHxyPj1uK2EpcmV0dXJuIG51bGw7dmFyIGk9ci1uLG89dGhpcy54RGF0YSxzPXRoaXMueURhdGE7cmV0dXJue29iamVjdDp0aGlzLHBvaW50SWQ6aSxkYXRhQ29vcmQ6W29baSV0aGlzLnNoYXBlWzBdXSxzW2kvdGhpcy5zaGFwZVswXXwwXV19fSxoLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZT0odD10fHx7fSkuc2hhcGV8fFswLDBdLHI9dC54fHxhKGVbMF0pLG89dC55fHxhKGVbMV0pLHM9dC56fHxuZXcgRmxvYXQzMkFycmF5KGVbMF0qZVsxXSk7dGhpcy54RGF0YT1yLHRoaXMueURhdGE9bzt2YXIgbD10LmNvbG9yTGV2ZWxzfHxbMF0sYz10LmNvbG9yVmFsdWVzfHxbMCwwLDAsMV0sdT1sLmxlbmd0aCxoPXRoaXMuYm91bmRzLHA9aFswXT1yWzBdLGQ9aFsxXT1vWzBdLGc9MS8oKGhbMl09cltyLmxlbmd0aC0xXSktcCksdj0xLygoaFszXT1vW28ubGVuZ3RoLTFdKS1kKSxtPWVbMF0seT1lWzFdO3RoaXMuc2hhcGU9W20seV07dmFyIHg9KG0tMSkqKHktMSkqKGYubGVuZ3RoPj4+MSk7dGhpcy5udW1WZXJ0aWNlcz14O2Zvcih2YXIgYj1pLm1hbGxvY1VpbnQ4KDQqeCksXz1pLm1hbGxvY0Zsb2F0MzIoMip4KSx3PWkubWFsbG9jVWludDgoMip4KSxrPWkubWFsbG9jVWludDMyKHgpLFQ9MCxNPTA7TTx5LTE7KytNKWZvcih2YXIgQT12KihvW01dLWQpLFM9dioob1tNKzFdLWQpLEU9MDtFPG0tMTsrK0UpZm9yKHZhciBMPWcqKHJbRV0tcCksQz1nKihyW0UrMV0tcCksUD0wO1A8Zi5sZW5ndGg7UCs9Mil7dmFyIE8seixJLEQsUj1mW1BdLEY9ZltQKzFdLEI9c1soTStGKSptKyhFK1IpXSxOPW4ubGUobCxCKTtpZihOPDApTz1jWzBdLHo9Y1sxXSxJPWNbMl0sRD1jWzNdO2Vsc2UgaWYoTj09PXUtMSlPPWNbNCp1LTRdLHo9Y1s0KnUtM10sST1jWzQqdS0yXSxEPWNbNCp1LTFdO2Vsc2V7dmFyIGo9KEItbFtOXSkvKGxbTisxXS1sW05dKSxWPTEtaixVPTQqTixxPTQqKE4rMSk7Tz1WKmNbVV0raipjW3FdLHo9VipjW1UrMV0raipjW3ErMV0sST1WKmNbVSsyXStqKmNbcSsyXSxEPVYqY1tVKzNdK2oqY1txKzNdfWJbNCpUXT0yNTUqTyxiWzQqVCsxXT0yNTUqeixiWzQqVCsyXT0yNTUqSSxiWzQqVCszXT0yNTUqRCxfWzIqVF09LjUqTCsuNSpDLF9bMipUKzFdPS41KkErLjUqUyx3WzIqVF09Uix3WzIqVCsxXT1GLGtbVF09TSptK0UsVCs9MX10aGlzLnBvc2l0aW9uQnVmZmVyLnVwZGF0ZShfKSx0aGlzLndlaWdodEJ1ZmZlci51cGRhdGUodyksdGhpcy5jb2xvckJ1ZmZlci51cGRhdGUoYiksdGhpcy5pZEJ1ZmZlci51cGRhdGUoayksaS5mcmVlKF8pLGkuZnJlZShiKSxpLmZyZWUodyksaS5mcmVlKGspfSxoLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNoYWRlci5kaXNwb3NlKCksdGhpcy5waWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBvc2l0aW9uQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLndlaWdodEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5jb2xvckJ1ZmZlci5kaXNwb3NlKCksdGhpcy5pZEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5wbG90LnJlbW92ZU9iamVjdCh0aGlzKX19LHsiLi9saWIvc2hhZGVycyI6MjU1LCJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MjU2LCJnbC1idWZmZXIiOjI0NCwiZ2wtc2hhZGVyIjozMDQsImlvdGEtYXJyYXkiOjQxOCwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwyNTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2xzbGlmeSIpO2UuZXhwb3J0cz17ZnJhZ21lbnQ6bihbInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQoZnJhZ0NvbG9yLnJnYiAqIGZyYWdDb2xvci5hLCBmcmFnQ29sb3IuYSk7XG59XG4iXSksdmVydGV4Om4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgdmVjMiB3ZWlnaHQ7XG5cbnVuaWZvcm0gdmVjMiBzaGFwZTtcbnVuaWZvcm0gbWF0MyB2aWV3VHJhbnNmb3JtO1xuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzMgdlBvc2l0aW9uID0gdmlld1RyYW5zZm9ybSAqIHZlYzMoIHBvc2l0aW9uICsgKHdlaWdodC0uNSkvKHNoYXBlLTEuKSAsIDEuMCk7XG4gIGZyYWdDb2xvciA9IGNvbG9yO1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQodlBvc2l0aW9uLnh5LCAwLCB2UG9zaXRpb24ueik7XG59XG4iXSkscGlja0ZyYWdtZW50Om4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZhcnlpbmcgdmVjNCBmcmFnSWQ7XG52YXJ5aW5nIHZlYzIgdldlaWdodDtcblxudW5pZm9ybSB2ZWMyIHNoYXBlO1xudW5pZm9ybSB2ZWM0IHBpY2tPZmZzZXQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMiBkID0gc3RlcCguNSwgdldlaWdodCk7XG4gIHZlYzQgaWQgPSBmcmFnSWQgKyBwaWNrT2Zmc2V0O1xuICBpZC54ICs9IGQueCArIGQueSpzaGFwZS54O1xuXG4gIGlkLnkgKz0gZmxvb3IoaWQueCAvIDI1Ni4wKTtcbiAgaWQueCAtPSBmbG9vcihpZC54IC8gMjU2LjApICogMjU2LjA7XG5cbiAgaWQueiArPSBmbG9vcihpZC55IC8gMjU2LjApO1xuICBpZC55IC09IGZsb29yKGlkLnkgLyAyNTYuMCkgKiAyNTYuMDtcblxuICBpZC53ICs9IGZsb29yKGlkLnogLyAyNTYuMCk7XG4gIGlkLnogLT0gZmxvb3IoaWQueiAvIDI1Ni4wKSAqIDI1Ni4wO1xuXG4gIGdsX0ZyYWdDb2xvciA9IGlkLzI1NS47XG59XG4iXSkscGlja1ZlcnRleDpuKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IHBpY2tJZDtcbmF0dHJpYnV0ZSB2ZWMyIHdlaWdodDtcblxudW5pZm9ybSB2ZWMyIHNoYXBlO1xudW5pZm9ybSBtYXQzIHZpZXdUcmFuc2Zvcm07XG5cbnZhcnlpbmcgdmVjNCBmcmFnSWQ7XG52YXJ5aW5nIHZlYzIgdldlaWdodDtcblxudm9pZCBtYWluKCkge1xuICB2V2VpZ2h0ID0gd2VpZ2h0O1xuXG4gIGZyYWdJZCA9IHBpY2tJZDtcblxuICB2ZWMzIHZQb3NpdGlvbiA9IHZpZXdUcmFuc2Zvcm0gKiB2ZWMzKCBwb3NpdGlvbiArICh3ZWlnaHQtLjUpLyhzaGFwZS0xLikgLCAxLjApO1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQodlBvc2l0aW9uLnh5LCAwLCB2UG9zaXRpb24ueik7XG59XG4iXSl9fSx7Z2xzbGlmeTo0MTF9XSwyNTY6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bMTEzXVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6MTEzfV0sMjU3OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2xzbGlmeSIpLGE9dCgiZ2wtc2hhZGVyIiksaT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb24sIG5leHRQb3NpdGlvbjtcbmF0dHJpYnV0ZSBmbG9hdCBhcmNMZW5ndGgsIGxpbmVXaWR0aDtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuXG51bmlmb3JtIHZlYzIgc2NyZWVuU2hhcGU7XG51bmlmb3JtIGZsb2F0IHBpeGVsUmF0aW87XG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52YXJ5aW5nIHZlYzMgd29ybGRQb3NpdGlvbjtcbnZhcnlpbmcgZmxvYXQgcGl4ZWxBcmNMZW5ndGg7XG5cbnZlYzQgcHJvamVjdCh2ZWMzIHApIHtcbiAgcmV0dXJuIHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHAsIDEuMCk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjNCBzdGFydFBvaW50ID0gcHJvamVjdChwb3NpdGlvbik7XG4gIHZlYzQgZW5kUG9pbnQgICA9IHByb2plY3QobmV4dFBvc2l0aW9uKTtcblxuICB2ZWMyIEEgPSBzdGFydFBvaW50Lnh5IC8gc3RhcnRQb2ludC53O1xuICB2ZWMyIEIgPSAgIGVuZFBvaW50Lnh5IC8gICBlbmRQb2ludC53O1xuXG4gIGZsb2F0IGNsaXBBbmdsZSA9IGF0YW4oXG4gICAgKEIueSAtIEEueSkgKiBzY3JlZW5TaGFwZS55LFxuICAgIChCLnggLSBBLngpICogc2NyZWVuU2hhcGUueFxuICApO1xuXG4gIHZlYzIgb2Zmc2V0ID0gMC41ICogcGl4ZWxSYXRpbyAqIGxpbmVXaWR0aCAqIHZlYzIoXG4gICAgc2luKGNsaXBBbmdsZSksXG4gICAgLWNvcyhjbGlwQW5nbGUpXG4gICkgLyBzY3JlZW5TaGFwZTtcblxuICBnbF9Qb3NpdGlvbiA9IHZlYzQoc3RhcnRQb2ludC54eSArIHN0YXJ0UG9pbnQudyAqIG9mZnNldCwgc3RhcnRQb2ludC56dyk7XG5cbiAgd29ybGRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICBwaXhlbEFyY0xlbmd0aCA9IGFyY0xlbmd0aDtcbiAgZnJhZ0NvbG9yID0gY29sb3I7XG59XG4iXSksbz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMyAgICAgIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIHNhbXBsZXIyRCBkYXNoVGV4dHVyZTtcbnVuaWZvcm0gZmxvYXQgICAgIGRhc2hTY2FsZTtcbnVuaWZvcm0gZmxvYXQgICAgIG9wYWNpdHk7XG5cbnZhcnlpbmcgdmVjMyAgICB3b3JsZFBvc2l0aW9uO1xudmFyeWluZyBmbG9hdCAgIHBpeGVsQXJjTGVuZ3RoO1xudmFyeWluZyB2ZWM0ICAgIGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBpZiAoXG4gICAgb3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCB3b3JsZFBvc2l0aW9uKSB8fFxuICAgIGZyYWdDb2xvci5hICogb3BhY2l0eSA9PSAwLlxuICApIGRpc2NhcmQ7XG5cbiAgZmxvYXQgZGFzaFdlaWdodCA9IHRleHR1cmUyRChkYXNoVGV4dHVyZSwgdmVjMihkYXNoU2NhbGUgKiBwaXhlbEFyY0xlbmd0aCwgMCkpLnI7XG4gIGlmKGRhc2hXZWlnaHQgPCAwLjUpIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvciAqIG9wYWNpdHk7XG59XG4iXSkscz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuI2RlZmluZSBGTE9BVF9NQVggIDEuNzAxNDExODRlMzhcbiNkZWZpbmUgRkxPQVRfTUlOICAxLjE3NTQ5NDM1ZS0zOFxuXG5sb3dwIHZlYzQgZW5jb2RlX2Zsb2F0XzE1NDAyNTkxMzAoaGlnaHAgZmxvYXQgdikge1xuICBoaWdocCBmbG9hdCBhdiA9IGFicyh2KTtcblxuICAvL0hhbmRsZSBzcGVjaWFsIGNhc2VzXG4gIGlmKGF2IDwgRkxPQVRfTUlOKSB7XG4gICAgcmV0dXJuIHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTtcbiAgfSBlbHNlIGlmKHYgPiBGTE9BVF9NQVgpIHtcbiAgICByZXR1cm4gdmVjNCgxMjcuMCwgMTI4LjAsIDAuMCwgMC4wKSAvIDI1NS4wO1xuICB9IGVsc2UgaWYodiA8IC1GTE9BVF9NQVgpIHtcbiAgICByZXR1cm4gdmVjNCgyNTUuMCwgMTI4LjAsIDAuMCwgMC4wKSAvIDI1NS4wO1xuICB9XG5cbiAgaGlnaHAgdmVjNCBjID0gdmVjNCgwLDAsMCwwKTtcblxuICAvL0NvbXB1dGUgZXhwb25lbnQgYW5kIG1hbnRpc3NhXG4gIGhpZ2hwIGZsb2F0IGUgPSBmbG9vcihsb2cyKGF2KSk7XG4gIGhpZ2hwIGZsb2F0IG0gPSBhdiAqIHBvdygyLjAsIC1lKSAtIDEuMDtcbiAgXG4gIC8vVW5wYWNrIG1hbnRpc3NhXG4gIGNbMV0gPSBmbG9vcigxMjguMCAqIG0pO1xuICBtIC09IGNbMV0gLyAxMjguMDtcbiAgY1syXSA9IGZsb29yKDMyNzY4LjAgKiBtKTtcbiAgbSAtPSBjWzJdIC8gMzI3NjguMDtcbiAgY1szXSA9IGZsb29yKDgzODg2MDguMCAqIG0pO1xuICBcbiAgLy9VbnBhY2sgZXhwb25lbnRcbiAgaGlnaHAgZmxvYXQgZWJpYXMgPSBlICsgMTI3LjA7XG4gIGNbMF0gPSBmbG9vcihlYmlhcyAvIDIuMCk7XG4gIGViaWFzIC09IGNbMF0gKiAyLjA7XG4gIGNbMV0gKz0gZmxvb3IoZWJpYXMpICogMTI4LjA7IFxuXG4gIC8vVW5wYWNrIHNpZ24gYml0XG4gIGNbMF0gKz0gMTI4LjAgKiBzdGVwKDAuMCwgLXYpO1xuXG4gIC8vU2NhbGUgYmFjayB0byByYW5nZVxuICByZXR1cm4gYyAvIDI1NS4wO1xufVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSBmbG9hdCBwaWNrSWQ7XG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcblxudmFyeWluZyB2ZWMzIHdvcmxkUG9zaXRpb247XG52YXJ5aW5nIGZsb2F0IHBpeGVsQXJjTGVuZ3RoO1xudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCB3b3JsZFBvc2l0aW9uKSkgZGlzY2FyZDtcblxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tJZC8yNTUuMCwgZW5jb2RlX2Zsb2F0XzE1NDAyNTkxMzAocGl4ZWxBcmNMZW5ndGgpLnh5eik7XG59Il0pLGw9W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJuZXh0UG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToiYXJjTGVuZ3RoIix0eXBlOiJmbG9hdCJ9LHtuYW1lOiJsaW5lV2lkdGgiLHR5cGU6ImZsb2F0In0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In1dO3IuY3JlYXRlU2hhZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhKHQsaSxvLG51bGwsbCl9LHIuY3JlYXRlUGlja1NoYWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYSh0LGkscyxudWxsLGwpfX0seyJnbC1zaGFkZXIiOjMwNCxnbHNsaWZ5OjQxMX1dLDI1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5nbHx8dC5zY2VuZSYmdC5zY2VuZS5nbCxyPXUoZSk7ci5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsci5hdHRyaWJ1dGVzLm5leHRQb3NpdGlvbi5sb2NhdGlvbj0xLHIuYXR0cmlidXRlcy5hcmNMZW5ndGgubG9jYXRpb249MixyLmF0dHJpYnV0ZXMubGluZVdpZHRoLmxvY2F0aW9uPTMsci5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTQ7dmFyIG89aChlKTtvLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxvLmF0dHJpYnV0ZXMubmV4dFBvc2l0aW9uLmxvY2F0aW9uPTEsby5hdHRyaWJ1dGVzLmFyY0xlbmd0aC5sb2NhdGlvbj0yLG8uYXR0cmlidXRlcy5saW5lV2lkdGgubG9jYXRpb249MyxvLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249NDtmb3IodmFyIHM9bihlKSxjPWEoZSxbe2J1ZmZlcjpzLHNpemU6MyxvZmZzZXQ6MCxzdHJpZGU6NDh9LHtidWZmZXI6cyxzaXplOjMsb2Zmc2V0OjEyLHN0cmlkZTo0OH0se2J1ZmZlcjpzLHNpemU6MSxvZmZzZXQ6MjQsc3RyaWRlOjQ4fSx7YnVmZmVyOnMsc2l6ZToxLG9mZnNldDoyOCxzdHJpZGU6NDh9LHtidWZmZXI6cyxzaXplOjQsb2Zmc2V0OjMyLHN0cmlkZTo0OH1dKSxmPWwobmV3IEFycmF5KDEwMjQpLFsyNTYsMSw0XSkscD0wO3A8MTAyNDsrK3ApZi5kYXRhW3BdPTI1NTt2YXIgZD1pKGUsZik7ZC53cmFwPWUuUkVQRUFUO3ZhciBnPW5ldyB2KGUscixvLHMsYyxkKTtyZXR1cm4gZy51cGRhdGUodCksZ307dmFyIG49dCgiZ2wtYnVmZmVyIiksYT10KCJnbC12YW8iKSxpPXQoImdsLXRleHR1cmUyZCIpLG89dCgiZ2xzbC1yZWFkLWZsb2F0Iikscz10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGw9dCgibmRhcnJheSIpLGM9dCgiLi9saWIvc2hhZGVycyIpLHU9Yy5jcmVhdGVTaGFkZXIsaD1jLmNyZWF0ZVBpY2tTaGFkZXIsZj1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07ZnVuY3Rpb24gcCh0LGUpe2Zvcih2YXIgcj0wLG49MDtuPDM7KytuKXt2YXIgYT10W25dLWVbbl07cis9YSphfXJldHVybiBNYXRoLnNxcnQocil9ZnVuY3Rpb24gZCh0KXtmb3IodmFyIGU9W1stMWU2LC0xZTYsLTFlNl0sWzFlNiwxZTYsMWU2XV0scj0wO3I8MzsrK3IpZVswXVtyXT1NYXRoLm1heCh0WzBdW3JdLGVbMF1bcl0pLGVbMV1bcl09TWF0aC5taW4odFsxXVtyXSxlWzFdW3JdKTtyZXR1cm4gZX1mdW5jdGlvbiBnKHQsZSxyLG4pe3RoaXMuYXJjTGVuZ3RoPXQsdGhpcy5wb3NpdGlvbj1lLHRoaXMuaW5kZXg9cix0aGlzLmRhdGFDb29yZGluYXRlPW59ZnVuY3Rpb24gdih0LGUscixuLGEsaSl7dGhpcy5nbD10LHRoaXMuc2hhZGVyPWUsdGhpcy5waWNrU2hhZGVyPXIsdGhpcy5idWZmZXI9bix0aGlzLnZhbz1hLHRoaXMuY2xpcEJvdW5kcz1bWy0xLzAsLTEvMCwtMS8wXSxbMS8wLDEvMCwxLzBdXSx0aGlzLnBvaW50cz1bXSx0aGlzLmFyY0xlbmd0aD1bXSx0aGlzLnZlcnRleENvdW50PTAsdGhpcy5ib3VuZHM9W1swLDAsMF0sWzAsMCwwXV0sdGhpcy5waWNrSWQ9MCx0aGlzLmxpbmVXaWR0aD0xLHRoaXMudGV4dHVyZT1pLHRoaXMuZGFzaFNjYWxlPTEsdGhpcy5vcGFjaXR5PTEsdGhpcy5oYXNBbHBoYT0hMSx0aGlzLmRpcnR5PSEwLHRoaXMucGl4ZWxSYXRpbz0xfXZhciBtPXYucHJvdG90eXBlO20uaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0FscGhhfSxtLmlzT3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaGFzQWxwaGF9LG0ucGlja1Nsb3RzPTEsbS5zZXRQaWNrQmFzZT1mdW5jdGlvbih0KXt0aGlzLnBpY2tJZD10fSxtLmRyYXdUcmFuc3BhcmVudD1tLmRyYXc9ZnVuY3Rpb24odCl7aWYodGhpcy52ZXJ0ZXhDb3VudCl7dmFyIGU9dGhpcy5nbCxyPXRoaXMuc2hhZGVyLG49dGhpcy52YW87ci5iaW5kKCksci51bmlmb3Jtcz17bW9kZWw6dC5tb2RlbHx8Zix2aWV3OnQudmlld3x8Zixwcm9qZWN0aW9uOnQucHJvamVjdGlvbnx8ZixjbGlwQm91bmRzOmQodGhpcy5jbGlwQm91bmRzKSxkYXNoVGV4dHVyZTp0aGlzLnRleHR1cmUuYmluZCgpLGRhc2hTY2FsZTp0aGlzLmRhc2hTY2FsZS90aGlzLmFyY0xlbmd0aFt0aGlzLmFyY0xlbmd0aC5sZW5ndGgtMV0sb3BhY2l0eTp0aGlzLm9wYWNpdHksc2NyZWVuU2hhcGU6W2UuZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF0scGl4ZWxSYXRpbzp0aGlzLnBpeGVsUmF0aW99LG4uYmluZCgpLG4uZHJhdyhlLlRSSUFOR0xFX1NUUklQLHRoaXMudmVydGV4Q291bnQpLG4udW5iaW5kKCl9fSxtLmRyYXdQaWNrPWZ1bmN0aW9uKHQpe2lmKHRoaXMudmVydGV4Q291bnQpe3ZhciBlPXRoaXMuZ2wscj10aGlzLnBpY2tTaGFkZXIsbj10aGlzLnZhbztyLmJpbmQoKSxyLnVuaWZvcm1zPXttb2RlbDp0Lm1vZGVsfHxmLHZpZXc6dC52aWV3fHxmLHByb2plY3Rpb246dC5wcm9qZWN0aW9ufHxmLHBpY2tJZDp0aGlzLnBpY2tJZCxjbGlwQm91bmRzOmQodGhpcy5jbGlwQm91bmRzKSxzY3JlZW5TaGFwZTpbZS5kcmF3aW5nQnVmZmVyV2lkdGgsZS5kcmF3aW5nQnVmZmVySGVpZ2h0XSxwaXhlbFJhdGlvOnRoaXMucGl4ZWxSYXRpb30sbi5iaW5kKCksbi5kcmF3KGUuVFJJQU5HTEVfU1RSSVAsdGhpcy52ZXJ0ZXhDb3VudCksbi51bmJpbmQoKX19LG0udXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlLHI7dGhpcy5kaXJ0eT0hMDt2YXIgbj0hIXQuY29ubmVjdEdhcHM7ImRhc2hTY2FsZSJpbiB0JiYodGhpcy5kYXNoU2NhbGU9dC5kYXNoU2NhbGUpLHRoaXMuaGFzQWxwaGE9ITEsIm9wYWNpdHkiaW4gdCYmKHRoaXMub3BhY2l0eT0rdC5vcGFjaXR5LHRoaXMub3BhY2l0eTwxJiYodGhpcy5oYXNBbHBoYT0hMCkpO3ZhciBhPVtdLGk9W10sbz1bXSxjPTAsdT0wLGg9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV0sZj10LnBvc2l0aW9ufHx0LnBvc2l0aW9ucztpZihmKXt2YXIgZD10LmNvbG9yfHx0LmNvbG9yc3x8WzAsMCwwLDFdLGc9dC5saW5lV2lkdGh8fDEsdj0hMTt0OmZvcihlPTE7ZTxmLmxlbmd0aDsrK2Upe3ZhciBtLHkseCxiPWZbZS0xXSxfPWZbZV07Zm9yKGkucHVzaChjKSxvLnB1c2goYi5zbGljZSgpKSxyPTA7cjwzOysrcil7aWYoaXNOYU4oYltyXSl8fGlzTmFOKF9bcl0pfHwhaXNGaW5pdGUoYltyXSl8fCFpc0Zpbml0ZShfW3JdKSl7aWYoIW4mJmEubGVuZ3RoPjApe2Zvcih2YXIgdz0wO3c8MjQ7Kyt3KWEucHVzaChhW2EubGVuZ3RoLTEyXSk7dSs9Mix2PSEwfWNvbnRpbnVlIHR9aFswXVtyXT1NYXRoLm1pbihoWzBdW3JdLGJbcl0sX1tyXSksaFsxXVtyXT1NYXRoLm1heChoWzFdW3JdLGJbcl0sX1tyXSl9QXJyYXkuaXNBcnJheShkWzBdKT8obT1kLmxlbmd0aD5lLTE/ZFtlLTFdOmQubGVuZ3RoPjA/ZFtkLmxlbmd0aC0xXTpbMCwwLDAsMV0seT1kLmxlbmd0aD5lP2RbZV06ZC5sZW5ndGg+MD9kW2QubGVuZ3RoLTFdOlswLDAsMCwxXSk6bT15PWQsMz09PW0ubGVuZ3RoJiYobT1bbVswXSxtWzFdLG1bMl0sMV0pLDM9PT15Lmxlbmd0aCYmKHk9W3lbMF0seVsxXSx5WzJdLDFdKSwhdGhpcy5oYXNBbHBoYSYmbVszXTwxJiYodGhpcy5oYXNBbHBoYT0hMCkseD1BcnJheS5pc0FycmF5KGcpP2cubGVuZ3RoPmUtMT9nW2UtMV06Zy5sZW5ndGg+MD9nW2cubGVuZ3RoLTFdOlswLDAsMCwxXTpnO3ZhciBrPWM7aWYoYys9cChiLF8pLHYpe2ZvcihyPTA7cjwyOysrcilhLnB1c2goYlswXSxiWzFdLGJbMl0sX1swXSxfWzFdLF9bMl0sayx4LG1bMF0sbVsxXSxtWzJdLG1bM10pO3UrPTIsdj0hMX1hLnB1c2goYlswXSxiWzFdLGJbMl0sX1swXSxfWzFdLF9bMl0sayx4LG1bMF0sbVsxXSxtWzJdLG1bM10sYlswXSxiWzFdLGJbMl0sX1swXSxfWzFdLF9bMl0saywteCxtWzBdLG1bMV0sbVsyXSxtWzNdLF9bMF0sX1sxXSxfWzJdLGJbMF0sYlsxXSxiWzJdLGMsLXgseVswXSx5WzFdLHlbMl0seVszXSxfWzBdLF9bMV0sX1syXSxiWzBdLGJbMV0sYlsyXSxjLHgseVswXSx5WzFdLHlbMl0seVszXSksdSs9NH19aWYodGhpcy5idWZmZXIudXBkYXRlKGEpLGkucHVzaChjKSxvLnB1c2goZltmLmxlbmd0aC0xXS5zbGljZSgpKSx0aGlzLmJvdW5kcz1oLHRoaXMudmVydGV4Q291bnQ9dSx0aGlzLnBvaW50cz1vLHRoaXMuYXJjTGVuZ3RoPWksImRhc2hlcyJpbiB0KXt2YXIgVD10LmRhc2hlcy5zbGljZSgpO2ZvcihULnVuc2hpZnQoMCksZT0xO2U8VC5sZW5ndGg7KytlKVRbZV09VFtlLTFdK1RbZV07dmFyIE09bChuZXcgQXJyYXkoMTAyNCksWzI1NiwxLDRdKTtmb3IoZT0wO2U8MjU2OysrZSl7Zm9yKHI9MDtyPDQ7KytyKU0uc2V0KGUsMCxyLDApOzEmcy5sZShULFRbVC5sZW5ndGgtMV0qZS8yNTUpP00uc2V0KGUsMCwwLDApOk0uc2V0KGUsMCwwLDI1NSl9dGhpcy50ZXh0dXJlLnNldFBpeGVscyhNKX19LG0uZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgpfSxtLnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC5pZCE9PXRoaXMucGlja0lkKXJldHVybiBudWxsO3ZhciBlPW8odC52YWx1ZVswXSx0LnZhbHVlWzFdLHQudmFsdWVbMl0sMCkscj1zLmxlKHRoaXMuYXJjTGVuZ3RoLGUpO2lmKHI8MClyZXR1cm4gbnVsbDtpZihyPT09dGhpcy5hcmNMZW5ndGgubGVuZ3RoLTEpcmV0dXJuIG5ldyBnKHRoaXMuYXJjTGVuZ3RoW3RoaXMuYXJjTGVuZ3RoLmxlbmd0aC0xXSx0aGlzLnBvaW50c1t0aGlzLnBvaW50cy5sZW5ndGgtMV0uc2xpY2UoKSxyKTtmb3IodmFyIG49dGhpcy5wb2ludHNbcl0sYT10aGlzLnBvaW50c1tNYXRoLm1pbihyKzEsdGhpcy5wb2ludHMubGVuZ3RoLTEpXSxpPShlLXRoaXMuYXJjTGVuZ3RoW3JdKS8odGhpcy5hcmNMZW5ndGhbcisxXS10aGlzLmFyY0xlbmd0aFtyXSksbD0xLWksYz1bMCwwLDBdLHU9MDt1PDM7Kyt1KWNbdV09bCpuW3VdK2kqYVt1XTt2YXIgaD1NYXRoLm1pbihpPC41P3I6cisxLHRoaXMucG9pbnRzLmxlbmd0aC0xKTtyZXR1cm4gbmV3IGcoZSxjLGgsdGhpcy5wb2ludHNbaF0pfX0seyIuL2xpYi9zaGFkZXJzIjoyNTcsImJpbmFyeS1zZWFyY2gtYm91bmRzIjoyNTksImdsLWJ1ZmZlciI6MjQ0LCJnbC10ZXh0dXJlMmQiOjMyNCwiZ2wtdmFvIjozMjksImdsc2wtcmVhZC1mbG9hdCI6NDAyLG5kYXJyYXk6NDUyfV0sMjU5OltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzExM11bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7ZHVwOjExM31dLDI2MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGE9ZVsyXSxpPWVbM10sbz1yKmktYSpuO3JldHVybiBvPyhvPTEvbyx0WzBdPWkqbyx0WzFdPS1uKm8sdFsyXT0tYSpvLHRbM109cipvLHQpOm51bGx9fSx7fV0sMjYxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0sYT1lWzJdLGk9ZVszXSxvPWVbNF0scz1lWzVdLGw9ZVs2XSxjPWVbN10sdT1lWzhdLGg9dSpvLXMqYyxmPS11KmkrcypsLHA9YyppLW8qbCxkPXIqaCtuKmYrYSpwO3JldHVybiBkPyhkPTEvZCx0WzBdPWgqZCx0WzFdPSgtdSpuK2EqYykqZCx0WzJdPShzKm4tYSpvKSpkLHRbM109ZipkLHRbNF09KHUqci1hKmwpKmQsdFs1XT0oLXMqcithKmkpKmQsdFs2XT1wKmQsdFs3XT0oLWMqcituKmwpKmQsdFs4XT0obypyLW4qaSkqZCx0KTpudWxsfX0se31dLDI2MjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVdLGV9fSx7fV0sMjYzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEZsb2F0MzJBcnJheSgxNik7cmV0dXJuIHRbMF09MSx0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT0xLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0xLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0fX0se31dLDI2NDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPXRbMl0sYT10WzNdLGk9dFs0XSxvPXRbNV0scz10WzZdLGw9dFs3XSxjPXRbOF0sdT10WzldLGg9dFsxMF0sZj10WzExXSxwPXRbMTJdLGQ9dFsxM10sZz10WzE0XSx2PXRbMTVdO3JldHVybihlKm8tcippKSooaCp2LWYqZyktKGUqcy1uKmkpKih1KnYtZipkKSsoZSpsLWEqaSkqKHUqZy1oKmQpKyhyKnMtbipvKSooYyp2LWYqcCktKHIqbC1hKm8pKihjKmctaCpwKSsobipsLWEqcykqKGMqZC11KnApfX0se31dLDI2NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGE9ZVsyXSxpPWVbM10sbz1yK3Iscz1uK24sbD1hK2EsYz1yKm8sdT1uKm8saD1uKnMsZj1hKm8scD1hKnMsZD1hKmwsZz1pKm8sdj1pKnMsbT1pKmw7cmV0dXJuIHRbMF09MS1oLWQsdFsxXT11K20sdFsyXT1mLXYsdFszXT0wLHRbNF09dS1tLHRbNV09MS1jLWQsdFs2XT1wK2csdFs3XT0wLHRbOF09Zit2LHRbOV09cC1nLHRbMTBdPTEtYy1oLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0fX0se31dLDI2NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89ZVszXSxzPW4rbixsPWErYSxjPWkraSx1PW4qcyxoPW4qbCxmPW4qYyxwPWEqbCxkPWEqYyxnPWkqYyx2PW8qcyxtPW8qbCx5PW8qYztyZXR1cm4gdFswXT0xLShwK2cpLHRbMV09aCt5LHRbMl09Zi1tLHRbM109MCx0WzRdPWgteSx0WzVdPTEtKHUrZyksdFs2XT1kK3YsdFs3XT0wLHRbOF09ZittLHRbOV09ZC12LHRbMTBdPTEtKHUrcCksdFsxMV09MCx0WzEyXT1yWzBdLHRbMTNdPXJbMV0sdFsxNF09clsyXSx0WzE1XT0xLHR9fSx7fV0sMjY3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPTEsdFsxXT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNV09MSx0WzZdPTAsdFs3XT0wLHRbOF09MCx0WzldPTAsdFsxMF09MSx0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wLHRbMTVdPTEsdH19LHt9XSwyNjg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxhPWVbMl0saT1lWzNdLG89ZVs0XSxzPWVbNV0sbD1lWzZdLGM9ZVs3XSx1PWVbOF0saD1lWzldLGY9ZVsxMF0scD1lWzExXSxkPWVbMTJdLGc9ZVsxM10sdj1lWzE0XSxtPWVbMTVdLHk9cipzLW4qbyx4PXIqbC1hKm8sYj1yKmMtaSpvLF89bipsLWEqcyx3PW4qYy1pKnMsaz1hKmMtaSpsLFQ9dSpnLWgqZCxNPXUqdi1mKmQsQT11Km0tcCpkLFM9aCp2LWYqZyxFPWgqbS1wKmcsTD1mKm0tcCp2LEM9eSpMLXgqRStiKlMrXypBLXcqTStrKlQ7aWYoIUMpcmV0dXJuIG51bGw7cmV0dXJuIEM9MS9DLHRbMF09KHMqTC1sKkUrYypTKSpDLHRbMV09KGEqRS1uKkwtaSpTKSpDLHRbMl09KGcqay12KncrbSpfKSpDLHRbM109KGYqdy1oKmstcCpfKSpDLHRbNF09KGwqQS1vKkwtYypNKSpDLHRbNV09KHIqTC1hKkEraSpNKSpDLHRbNl09KHYqYi1kKmstbSp4KSpDLHRbN109KHUqay1mKmIrcCp4KSpDLHRbOF09KG8qRS1zKkErYypUKSpDLHRbOV09KG4qQS1yKkUtaSpUKSpDLHRbMTBdPShkKnctZypiK20qeSkqQyx0WzExXT0oaCpiLXUqdy1wKnkpKkMsdFsxMl09KHMqTS1vKlMtbCpUKSpDLHRbMTNdPShyKlMtbipNK2EqVCkqQyx0WzE0XT0oZyp4LWQqXy12KnkpKkMsdFsxNV09KHUqXy1oKngrZip5KSpDLHR9fSx7fV0sMjY5OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9pZGVudGl0eSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXt2YXIgaSxvLHMsbCxjLHUsaCxmLHAsZCxnPWVbMF0sdj1lWzFdLG09ZVsyXSx5PWFbMF0seD1hWzFdLGI9YVsyXSxfPXJbMF0sdz1yWzFdLGs9clsyXTtpZihNYXRoLmFicyhnLV8pPDFlLTYmJk1hdGguYWJzKHYtdyk8MWUtNiYmTWF0aC5hYnMobS1rKTwxZS02KXJldHVybiBuKHQpO2g9Zy1fLGY9di13LHA9bS1rLGQ9MS9NYXRoLnNxcnQoaCpoK2YqZitwKnApLGk9eCoocCo9ZCktYiooZio9ZCksbz1iKihoKj1kKS15KnAscz15KmYteCpoLChkPU1hdGguc3FydChpKmkrbypvK3MqcykpPyhpKj1kPTEvZCxvKj1kLHMqPWQpOihpPTAsbz0wLHM9MCk7bD1mKnMtcCpvLGM9cCppLWgqcyx1PWgqby1mKmksKGQ9TWF0aC5zcXJ0KGwqbCtjKmMrdSp1KSk/KGwqPWQ9MS9kLGMqPWQsdSo9ZCk6KGw9MCxjPTAsdT0wKTtyZXR1cm4gdFswXT1pLHRbMV09bCx0WzJdPWgsdFszXT0wLHRbNF09byx0WzVdPWMsdFs2XT1mLHRbN109MCx0WzhdPXMsdFs5XT11LHRbMTBdPXAsdFsxMV09MCx0WzEyXT0tKGkqZytvKnYrcyptKSx0WzEzXT0tKGwqZytjKnYrdSptKSx0WzE0XT0tKGgqZytmKnYrcCptKSx0WzE1XT0xLHR9fSx7Ii4vaWRlbnRpdHkiOjI2N31dLDI3MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89ZVszXSxzPWVbNF0sbD1lWzVdLGM9ZVs2XSx1PWVbN10saD1lWzhdLGY9ZVs5XSxwPWVbMTBdLGQ9ZVsxMV0sZz1lWzEyXSx2PWVbMTNdLG09ZVsxNF0seT1lWzE1XSx4PXJbMF0sYj1yWzFdLF89clsyXSx3PXJbM107cmV0dXJuIHRbMF09eCpuK2IqcytfKmgrdypnLHRbMV09eCphK2IqbCtfKmYrdyp2LHRbMl09eCppK2IqYytfKnArdyptLHRbM109eCpvK2IqdStfKmQrdyp5LHg9cls0XSxiPXJbNV0sXz1yWzZdLHc9cls3XSx0WzRdPXgqbitiKnMrXypoK3cqZyx0WzVdPXgqYStiKmwrXypmK3cqdix0WzZdPXgqaStiKmMrXypwK3cqbSx0WzddPXgqbytiKnUrXypkK3cqeSx4PXJbOF0sYj1yWzldLF89clsxMF0sdz1yWzExXSx0WzhdPXgqbitiKnMrXypoK3cqZyx0WzldPXgqYStiKmwrXypmK3cqdix0WzEwXT14KmkrYipjK18qcCt3Km0sdFsxMV09eCpvK2IqdStfKmQrdyp5LHg9clsxMl0sYj1yWzEzXSxfPXJbMTRdLHc9clsxNV0sdFsxMl09eCpuK2IqcytfKmgrdypnLHRbMTNdPXgqYStiKmwrXypmK3cqdix0WzE0XT14KmkrYipjK18qcCt3Km0sdFsxNV09eCpvK2IqdStfKmQrdyp5LHR9fSx7fV0sMjcxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe3ZhciBzPTEvKGUtciksbD0xLyhuLWEpLGM9MS8oaS1vKTtyZXR1cm4gdFswXT0tMipzLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPS0yKmwsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTIqYyx0WzExXT0wLHRbMTJdPShlK3IpKnMsdFsxM109KGErbikqbCx0WzE0XT0obytpKSpjLHRbMTVdPTEsdH19LHt9XSwyNzI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT0xL01hdGgudGFuKGUvMiksbz0xLyhuLWEpO3JldHVybiB0WzBdPWkvcix0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT1pLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0oYStuKSpvLHRbMTFdPS0xLHRbMTJdPTAsdFsxM109MCx0WzE0XT0yKmEqbipvLHRbMTVdPTAsdH19LHt9XSwyNzM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnLHYsbSx5LHgsYixfLHcsayxULE0sQSxTLEU9blswXSxMPW5bMV0sQz1uWzJdLFA9TWF0aC5zcXJ0KEUqRStMKkwrQypDKTtpZihNYXRoLmFicyhQKTwxZS02KXJldHVybiBudWxsO0UqPVA9MS9QLEwqPVAsQyo9UCxhPU1hdGguc2luKHIpLGk9TWF0aC5jb3Mociksbz0xLWkscz1lWzBdLGw9ZVsxXSxjPWVbMl0sdT1lWzNdLGg9ZVs0XSxmPWVbNV0scD1lWzZdLGQ9ZVs3XSxnPWVbOF0sdj1lWzldLG09ZVsxMF0seT1lWzExXSx4PUUqRSpvK2ksYj1MKkUqbytDKmEsXz1DKkUqby1MKmEsdz1FKkwqby1DKmEsaz1MKkwqbytpLFQ9QypMKm8rRSphLE09RSpDKm8rTCphLEE9TCpDKm8tRSphLFM9QypDKm8raSx0WzBdPXMqeCtoKmIrZypfLHRbMV09bCp4K2YqYit2Kl8sdFsyXT1jKngrcCpiK20qXyx0WzNdPXUqeCtkKmIreSpfLHRbNF09cyp3K2gqaytnKlQsdFs1XT1sKncrZiprK3YqVCx0WzZdPWMqdytwKmsrbSpULHRbN109dSp3K2Qqayt5KlQsdFs4XT1zKk0raCpBK2cqUyx0WzldPWwqTStmKkErdipTLHRbMTBdPWMqTStwKkErbSpTLHRbMTFdPXUqTStkKkEreSpTLGUhPT10JiYodFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pO3JldHVybiB0fX0se31dLDI3NDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49TWF0aC5zaW4ociksYT1NYXRoLmNvcyhyKSxpPWVbNF0sbz1lWzVdLHM9ZVs2XSxsPWVbN10sYz1lWzhdLHU9ZVs5XSxoPWVbMTBdLGY9ZVsxMV07ZSE9PXQmJih0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPWVbM10sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pO3JldHVybiB0WzRdPWkqYStjKm4sdFs1XT1vKmErdSpuLHRbNl09cyphK2gqbix0WzddPWwqYStmKm4sdFs4XT1jKmEtaSpuLHRbOV09dSphLW8qbix0WzEwXT1oKmEtcypuLHRbMTFdPWYqYS1sKm4sdH19LHt9XSwyNzU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGguc2luKHIpLGE9TWF0aC5jb3MociksaT1lWzBdLG89ZVsxXSxzPWVbMl0sbD1lWzNdLGM9ZVs4XSx1PWVbOV0saD1lWzEwXSxmPWVbMTFdO2UhPT10JiYodFs0XT1lWzRdLHRbNV09ZVs1XSx0WzZdPWVbNl0sdFs3XT1lWzddLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKTtyZXR1cm4gdFswXT1pKmEtYypuLHRbMV09byphLXUqbix0WzJdPXMqYS1oKm4sdFszXT1sKmEtZipuLHRbOF09aSpuK2MqYSx0WzldPW8qbit1KmEsdFsxMF09cypuK2gqYSx0WzExXT1sKm4rZiphLHR9fSx7fV0sMjc2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1NYXRoLnNpbihyKSxhPU1hdGguY29zKHIpLGk9ZVswXSxvPWVbMV0scz1lWzJdLGw9ZVszXSxjPWVbNF0sdT1lWzVdLGg9ZVs2XSxmPWVbN107ZSE9PXQmJih0WzhdPWVbOF0sdFs5XT1lWzldLHRbMTBdPWVbMTBdLHRbMTFdPWVbMTFdLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKTtyZXR1cm4gdFswXT1pKmErYypuLHRbMV09byphK3Uqbix0WzJdPXMqYStoKm4sdFszXT1sKmErZipuLHRbNF09YyphLWkqbix0WzVdPXUqYS1vKm4sdFs2XT1oKmEtcypuLHRbN109ZiphLWwqbix0fX0se31dLDI3NzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49clswXSxhPXJbMV0saT1yWzJdO3JldHVybiB0WzBdPWVbMF0qbix0WzFdPWVbMV0qbix0WzJdPWVbMl0qbix0WzNdPWVbM10qbix0WzRdPWVbNF0qYSx0WzVdPWVbNV0qYSx0WzZdPWVbNl0qYSx0WzddPWVbN10qYSx0WzhdPWVbOF0qaSx0WzldPWVbOV0qaSx0WzEwXT1lWzEwXSppLHRbMTFdPWVbMTFdKmksdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0sdH19LHt9XSwyNzg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnPXJbMF0sdj1yWzFdLG09clsyXTtlPT09dD8odFsxMl09ZVswXSpnK2VbNF0qditlWzhdKm0rZVsxMl0sdFsxM109ZVsxXSpnK2VbNV0qditlWzldKm0rZVsxM10sdFsxNF09ZVsyXSpnK2VbNl0qditlWzEwXSptK2VbMTRdLHRbMTVdPWVbM10qZytlWzddKnYrZVsxMV0qbStlWzE1XSk6KG49ZVswXSxhPWVbMV0saT1lWzJdLG89ZVszXSxzPWVbNF0sbD1lWzVdLGM9ZVs2XSx1PWVbN10saD1lWzhdLGY9ZVs5XSxwPWVbMTBdLGQ9ZVsxMV0sdFswXT1uLHRbMV09YSx0WzJdPWksdFszXT1vLHRbNF09cyx0WzVdPWwsdFs2XT1jLHRbN109dSx0WzhdPWgsdFs5XT1mLHRbMTBdPXAsdFsxMV09ZCx0WzEyXT1uKmcrcyp2K2gqbStlWzEyXSx0WzEzXT1hKmcrbCp2K2YqbStlWzEzXSx0WzE0XT1pKmcrYyp2K3AqbStlWzE0XSx0WzE1XT1vKmcrdSp2K2QqbStlWzE1XSk7cmV0dXJuIHR9fSx7fV0sMjc5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYodD09PWUpe3ZhciByPWVbMV0sbj1lWzJdLGE9ZVszXSxpPWVbNl0sbz1lWzddLHM9ZVsxMV07dFsxXT1lWzRdLHRbMl09ZVs4XSx0WzNdPWVbMTJdLHRbNF09cix0WzZdPWVbOV0sdFs3XT1lWzEzXSx0WzhdPW4sdFs5XT1pLHRbMTFdPWVbMTRdLHRbMTJdPWEsdFsxM109byx0WzE0XT1zfWVsc2UgdFswXT1lWzBdLHRbMV09ZVs0XSx0WzJdPWVbOF0sdFszXT1lWzEyXSx0WzRdPWVbMV0sdFs1XT1lWzVdLHRbNl09ZVs5XSx0WzddPWVbMTNdLHRbOF09ZVsyXSx0WzldPWVbNl0sdFsxMF09ZVsxMF0sdFsxMV09ZVsxNF0sdFsxMl09ZVszXSx0WzEzXT1lWzddLHRbMTRdPWVbMTFdLHRbMTVdPWVbMTVdO3JldHVybiB0fX0se31dLDI4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6dFswXT0xL2VbMF07YnJlYWs7Y2FzZSA0Om4odCxlKTticmVhaztjYXNlIDk6YSh0LGUpO2JyZWFrO2Nhc2UgMTY6aSh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJjdXJyZW50bHkgc3VwcG9ydHMgbWF0cmljZXMgdXAgdG8gNHg0Iil9cmV0dXJuIHR9O3ZhciBuPXQoImdsLW1hdDIvaW52ZXJ0IiksYT10KCJnbC1tYXQzL2ludmVydCIpLGk9dCgiZ2wtbWF0NC9pbnZlcnQiKX0seyJnbC1tYXQyL2ludmVydCI6MjYwLCJnbC1tYXQzL2ludmVydCI6MjYxLCJnbC1tYXQ0L2ludmVydCI6MjY4fV0sMjgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJhcnljZW50cmljIiksYT10KCJwb2x5dG9wZS1jbG9zZXN0LXBvaW50L2xpYi9jbG9zZXN0X3BvaW50XzJkLmpzIik7ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj1bMCwwLDAsMF0sbj0wO248NDsrK24pZm9yKHZhciBhPTA7YTw0OysrYSlyW2FdKz10WzQqbithXSplW25dO3JldHVybiByfWZ1bmN0aW9uIG8odCxlLHIsbixhKXtmb3IodmFyIG89aShuLGkocixpKGUsW3RbMF0sdFsxXSx0WzJdLDFdKSkpLHM9MDtzPDM7KytzKW9bc10vPW9bM107cmV0dXJuWy41KmFbMF0qKDErb1swXSksLjUqYVsxXSooMS1vWzFdKV19ZnVuY3Rpb24gcyh0LGUpe2Zvcih2YXIgcj1bMCwwLDBdLG49MDtuPHQubGVuZ3RoOysrbilmb3IodmFyIGE9dFtuXSxpPWVbbl0sbz0wO288MzsrK28pcltvXSs9aSphW29dO3JldHVybiByfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpLGwsYyl7aWYoMT09PXQubGVuZ3RoKXJldHVyblswLHRbMF0uc2xpY2UoKV07Zm9yKHZhciB1PW5ldyBBcnJheSh0Lmxlbmd0aCksaD0wO2g8dC5sZW5ndGg7KytoKXVbaF09byh0W2hdLHIsaSxsLGMpO2Zvcih2YXIgZj0wLHA9MS8wLGg9MDtoPHUubGVuZ3RoOysraCl7Zm9yKHZhciBkPTAsZz0wO2c8MjsrK2cpZCs9TWF0aC5wb3codVtoXVtnXS1lW2ddLDIpO2Q8cCYmKHA9ZCxmPWgpfWZvcih2YXIgdj1mdW5jdGlvbih0LGUpe2lmKDI9PT10Lmxlbmd0aCl7Zm9yKHZhciByPTAsaT0wLG89MDtvPDI7KytvKXIrPU1hdGgucG93KGVbb10tdFswXVtvXSwyKSxpKz1NYXRoLnBvdyhlW29dLXRbMV1bb10sMik7cmV0dXJuIHI9TWF0aC5zcXJ0KHIpLGk9TWF0aC5zcXJ0KGkpLHIraTwxZS02P1sxLDBdOltpLyhyK2kpLHIvKGkrcildfWlmKDM9PT10Lmxlbmd0aCl7dmFyIHM9WzAsMF07cmV0dXJuIGEodFswXSx0WzFdLHRbMl0sZSxzKSxuKHQscyl9cmV0dXJuW119KHUsZSksbT0wLGg9MDtoPDM7KytoKXtpZih2W2hdPC0uMDAxfHx2W2hdPjEuMDAwMSlyZXR1cm4gbnVsbDttKz12W2hdfWlmKE1hdGguYWJzKG0tMSk+LjAwMSlyZXR1cm4gbnVsbDtyZXR1cm5bZixzKHQsdiksdl19fSx7YmFyeWNlbnRyaWM6NzUsInBvbHl0b3BlLWNsb3Nlc3QtcG9pbnQvbGliL2Nsb3Nlc3RfcG9pbnRfMmQuanMiOjQ4M31dLDI4MjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdsc2xpZnkiKSxhPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbiwgbm9ybWFsO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgdmVjMiB1djtcblxudW5pZm9ybSBtYXQ0IG1vZGVsXG4gICAgICAgICAgICwgdmlld1xuICAgICAgICAgICAsIHByb2plY3Rpb25cbiAgICAgICAgICAgLCBpbnZlcnNlTW9kZWw7XG51bmlmb3JtIHZlYzMgZXllUG9zaXRpb25cbiAgICAgICAgICAgLCBsaWdodFBvc2l0aW9uO1xuXG52YXJ5aW5nIHZlYzMgZl9ub3JtYWxcbiAgICAgICAgICAgLCBmX2xpZ2h0RGlyZWN0aW9uXG4gICAgICAgICAgICwgZl9leWVEaXJlY3Rpb25cbiAgICAgICAgICAgLCBmX2RhdGE7XG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52ZWM0IHByb2plY3QodmVjMyBwKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwLCAxLjApO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uICAgICAgPSBwcm9qZWN0KHBvc2l0aW9uKTtcblxuICAvL0xpZ2h0aW5nIGdlb21ldHJ5IHBhcmFtZXRlcnNcbiAgdmVjNCBjYW1lcmFDb29yZGluYXRlID0gdmlldyAqIHZlYzQocG9zaXRpb24gLCAxLjApO1xuICBjYW1lcmFDb29yZGluYXRlLnh5eiAvPSBjYW1lcmFDb29yZGluYXRlLnc7XG4gIGZfbGlnaHREaXJlY3Rpb24gPSBsaWdodFBvc2l0aW9uIC0gY2FtZXJhQ29vcmRpbmF0ZS54eXo7XG4gIGZfZXllRGlyZWN0aW9uICAgPSBleWVQb3NpdGlvbiAtIGNhbWVyYUNvb3JkaW5hdGUueHl6O1xuICBmX25vcm1hbCAgPSBub3JtYWxpemUoKHZlYzQobm9ybWFsLCAwLjApICogaW52ZXJzZU1vZGVsKS54eXopO1xuXG4gIGZfY29sb3IgICAgICAgICAgPSBjb2xvcjtcbiAgZl9kYXRhICAgICAgICAgICA9IHBvc2l0aW9uO1xuICBmX3V2ICAgICAgICAgICAgID0gdXY7XG59XG4iXSksaT1uKFsiI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGVcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgYmVja21hbm5EaXN0cmlidXRpb24oZmxvYXQgeCwgZmxvYXQgcm91Z2huZXNzKSB7XG4gIGZsb2F0IE5kb3RIID0gbWF4KHgsIDAuMDAwMSk7XG4gIGZsb2F0IGNvczJBbHBoYSA9IE5kb3RIICogTmRvdEg7XG4gIGZsb2F0IHRhbjJBbHBoYSA9IChjb3MyQWxwaGEgLSAxLjApIC8gY29zMkFscGhhO1xuICBmbG9hdCByb3VnaG5lc3MyID0gcm91Z2huZXNzICogcm91Z2huZXNzO1xuICBmbG9hdCBkZW5vbSA9IDMuMTQxNTkyNjUzNTg5NzkzICogcm91Z2huZXNzMiAqIGNvczJBbHBoYSAqIGNvczJBbHBoYTtcbiAgcmV0dXJuIGV4cCh0YW4yQWxwaGEgLyByb3VnaG5lc3MyKSAvIGRlbm9tO1xufVxuXG5mbG9hdCBjb29rVG9ycmFuY2VTcGVjdWxhcihcbiAgdmVjMyBsaWdodERpcmVjdGlvbixcbiAgdmVjMyB2aWV3RGlyZWN0aW9uLFxuICB2ZWMzIHN1cmZhY2VOb3JtYWwsXG4gIGZsb2F0IHJvdWdobmVzcyxcbiAgZmxvYXQgZnJlc25lbCkge1xuXG4gIGZsb2F0IFZkb3ROID0gbWF4KGRvdCh2aWV3RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcbiAgZmxvYXQgTGRvdE4gPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcblxuICAvL0hhbGYgYW5nbGUgdmVjdG9yXG4gIHZlYzMgSCA9IG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbiArIHZpZXdEaXJlY3Rpb24pO1xuXG4gIC8vR2VvbWV0cmljIHRlcm1cbiAgZmxvYXQgTmRvdEggPSBtYXgoZG90KHN1cmZhY2VOb3JtYWwsIEgpLCAwLjApO1xuICBmbG9hdCBWZG90SCA9IG1heChkb3Qodmlld0RpcmVjdGlvbiwgSCksIDAuMDAwMDAxKTtcbiAgZmxvYXQgTGRvdEggPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBIKSwgMC4wMDAwMDEpO1xuICBmbG9hdCBHMSA9ICgyLjAgKiBOZG90SCAqIFZkb3ROKSAvIFZkb3RIO1xuICBmbG9hdCBHMiA9ICgyLjAgKiBOZG90SCAqIExkb3ROKSAvIExkb3RIO1xuICBmbG9hdCBHID0gbWluKDEuMCwgbWluKEcxLCBHMikpO1xuICBcbiAgLy9EaXN0cmlidXRpb24gdGVybVxuICBmbG9hdCBEID0gYmVja21hbm5EaXN0cmlidXRpb24oTmRvdEgsIHJvdWdobmVzcyk7XG5cbiAgLy9GcmVzbmVsIHRlcm1cbiAgZmxvYXQgRiA9IHBvdygxLjAgLSBWZG90TiwgZnJlc25lbCk7XG5cbiAgLy9NdWx0aXBseSB0ZXJtcyBhbmQgZG9uZVxuICByZXR1cm4gIEcgKiBGICogRCAvIG1heCgzLjE0MTU5MjY1ICogVmRvdE4sIDAuMDAwMDAxKTtcbn1cblxuLy8jcHJhZ21hIGdsc2xpZnk6IGJlY2ttYW5uID0gcmVxdWlyZShnbHNsLXNwZWN1bGFyLWJlY2ttYW5uKSAvLyB1c2VkIGluIGdsLXN1cmZhY2UzZFxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzc1xuICAgICAgICAgICAgLCBmcmVzbmVsXG4gICAgICAgICAgICAsIGthbWJpZW50XG4gICAgICAgICAgICAsIGtkaWZmdXNlXG4gICAgICAgICAgICAsIGtzcGVjdWxhcjtcbnVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7XG5cbnZhcnlpbmcgdmVjMyBmX25vcm1hbFxuICAgICAgICAgICAsIGZfbGlnaHREaXJlY3Rpb25cbiAgICAgICAgICAgLCBmX2V5ZURpcmVjdGlvblxuICAgICAgICAgICAsIGZfZGF0YTtcbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMyIGZfdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKGZfY29sb3IuYSA9PSAwLjAgfHxcbiAgICBvdXRPZlJhbmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIGZfZGF0YSlcbiAgKSBkaXNjYXJkO1xuXG4gIHZlYzMgTiA9IG5vcm1hbGl6ZShmX25vcm1hbCk7XG4gIHZlYzMgTCA9IG5vcm1hbGl6ZShmX2xpZ2h0RGlyZWN0aW9uKTtcbiAgdmVjMyBWID0gbm9ybWFsaXplKGZfZXllRGlyZWN0aW9uKTtcblxuICBpZihnbF9Gcm9udEZhY2luZykge1xuICAgIE4gPSAtTjtcbiAgfVxuXG4gIGZsb2F0IHNwZWN1bGFyID0gbWluKDEuMCwgbWF4KDAuMCwgY29va1RvcnJhbmNlU3BlY3VsYXIoTCwgViwgTiwgcm91Z2huZXNzLCBmcmVzbmVsKSkpO1xuICAvL2Zsb2F0IHNwZWN1bGFyID0gbWF4KDAuMCwgYmVja21hbm4oTCwgViwgTiwgcm91Z2huZXNzKSk7IC8vIHVzZWQgaW4gZ2wtc3VyZmFjZTNkXG5cbiAgZmxvYXQgZGlmZnVzZSAgPSBtaW4oa2FtYmllbnQgKyBrZGlmZnVzZSAqIG1heChkb3QoTiwgTCksIDAuMCksIDEuMCk7XG5cbiAgdmVjNCBzdXJmYWNlQ29sb3IgPSB2ZWM0KGZfY29sb3IucmdiLCAxLjApICogdGV4dHVyZTJEKHRleHR1cmUsIGZfdXYpO1xuICB2ZWM0IGxpdENvbG9yID0gc3VyZmFjZUNvbG9yLmEgKiB2ZWM0KGRpZmZ1c2UgKiBzdXJmYWNlQ29sb3IucmdiICsga3NwZWN1bGFyICogdmVjMygxLDEsMSkgKiBzcGVjdWxhciwgIDEuMCk7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gbGl0Q29sb3IgKiBmX2NvbG9yLmE7XG59XG4iXSksbz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcbmF0dHJpYnV0ZSB2ZWMyIHV2O1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG5cbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMzIGZfZGF0YTtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gIGZfY29sb3IgPSBjb2xvcjtcbiAgZl9kYXRhICA9IHBvc2l0aW9uO1xuICBmX3V2ICAgID0gdXY7XG59Il0pLHM9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG5cbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMzIGZfZGF0YTtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChvdXRPZlJhbmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIGZfZGF0YSkpIGRpc2NhcmQ7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gZl9jb2xvciAqIHRleHR1cmUyRCh0ZXh0dXJlLCBmX3V2KSAqIG9wYWNpdHk7XG59Il0pLGw9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgdXY7XG5hdHRyaWJ1dGUgZmxvYXQgcG9pbnRTaXplO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcblxudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBwb3NpdGlvbikpIHtcblxuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAsIDAuMCAsMC4wICwwLjApO1xuICB9IGVsc2Uge1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gIH1cbiAgZ2xfUG9pbnRTaXplID0gcG9pbnRTaXplO1xuICBmX2NvbG9yID0gY29sb3I7XG4gIGZfdXYgPSB1djtcbn0iXSksYz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICB2ZWMyIHBvaW50UiA9IGdsX1BvaW50Q29vcmQueHkgLSB2ZWMyKDAuNSwgMC41KTtcbiAgaWYoZG90KHBvaW50UiwgcG9pbnRSKSA+IDAuMjUpIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIGdsX0ZyYWdDb2xvciA9IGZfY29sb3IgKiB0ZXh0dXJlMkQodGV4dHVyZSwgZl91dikgKiBvcGFjaXR5O1xufSJdKSx1PW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgZl9pZCAgICAgICAgPSBpZDtcbiAgZl9wb3NpdGlvbiAgPSBwb3NpdGlvbjtcbn0iXSksaD1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMyAgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQgcGlja0lkO1xuXG52YXJ5aW5nIHZlYzMgZl9wb3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmX2lkO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChvdXRPZlJhbmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIGZfcG9zaXRpb24pKSBkaXNjYXJkO1xuXG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQocGlja0lkLCBmX2lkLnh5eik7XG59Il0pLGY9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG5hdHRyaWJ1dGUgdmVjMyAgcG9zaXRpb247XG5hdHRyaWJ1dGUgZmxvYXQgcG9pbnRTaXplO1xuYXR0cmlidXRlIHZlYzQgIGlkO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcblxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQgZl9pZDtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBwb3NpdGlvbikpIHtcblxuICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApO1xuICB9IGVsc2Uge1xuICAgIGdsX1Bvc2l0aW9uICA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTtcbiAgfVxuICBmX2lkICAgICAgICAgPSBpZDtcbiAgZl9wb3NpdGlvbiAgID0gcG9zaXRpb247XG59Il0pLHA9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbn0iXSksZD1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWMzIGNvbnRvdXJDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbnRvdXJDb2xvciwgMS4wKTtcbn1cbiJdKTtyLm1lc2hTaGFkZXI9e3ZlcnRleDphLGZyYWdtZW50OmksYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6Im5vcm1hbCIsdHlwZToidmVjMyJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJ1diIsdHlwZToidmVjMiJ9XX0sci53aXJlU2hhZGVyPXt2ZXJ0ZXg6byxmcmFnbWVudDpzLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJ1diIsdHlwZToidmVjMiJ9XX0sci5wb2ludFNoYWRlcj17dmVydGV4OmwsZnJhZ21lbnQ6YyxhdHRyaWJ1dGVzOlt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToiY29sb3IiLHR5cGU6InZlYzQifSx7bmFtZToidXYiLHR5cGU6InZlYzIifSx7bmFtZToicG9pbnRTaXplIix0eXBlOiJmbG9hdCJ9XX0sci5waWNrU2hhZGVyPXt2ZXJ0ZXg6dSxmcmFnbWVudDpoLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJpZCIsdHlwZToidmVjNCJ9XX0sci5wb2ludFBpY2tTaGFkZXI9e3ZlcnRleDpmLGZyYWdtZW50OmgsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6InBvaW50U2l6ZSIsdHlwZToiZmxvYXQifSx7bmFtZToiaWQiLHR5cGU6InZlYzQifV19LHIuY29udG91clNoYWRlcj17dmVydGV4OnAsZnJhZ21lbnQ6ZCxhdHRyaWJ1dGVzOlt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifV19fSx7Z2xzbGlmeTo0MTF9XSwyODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtc2hhZGVyIiksYT10KCJnbC1idWZmZXIiKSxpPXQoImdsLXZhbyIpLG89dCgiZ2wtdGV4dHVyZTJkIikscz10KCJub3JtYWxzIiksbD10KCJnbC1tYXQ0L211bHRpcGx5IiksYz10KCJnbC1tYXQ0L2ludmVydCIpLHU9dCgibmRhcnJheSIpLGg9dCgiY29sb3JtYXAiKSxmPXQoInNpbXBsaWNpYWwtY29tcGxleC1jb250b3VyIikscD10KCJ0eXBlZGFycmF5LXBvb2wiKSxkPXQoIi4vbGliL3NoYWRlcnMiKSxnPXQoIi4vbGliL2Nsb3Nlc3QtcG9pbnQiKSx2PWQubWVzaFNoYWRlcixtPWQud2lyZVNoYWRlcix5PWQucG9pbnRTaGFkZXIseD1kLnBpY2tTaGFkZXIsYj1kLnBvaW50UGlja1NoYWRlcixfPWQuY29udG91clNoYWRlcix3PVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtmdW5jdGlvbiBrKHQsZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCxkLGcsdixtLHkseCxiLF8sayxULE0sQSxTKXt0aGlzLmdsPXQsdGhpcy5waXhlbFJhdGlvPTEsdGhpcy5jZWxscz1bXSx0aGlzLnBvc2l0aW9ucz1bXSx0aGlzLmludGVuc2l0eT1bXSx0aGlzLnRleHR1cmU9ZSx0aGlzLmRpcnR5PSEwLHRoaXMudHJpU2hhZGVyPXIsdGhpcy5saW5lU2hhZGVyPW4sdGhpcy5wb2ludFNoYWRlcj1hLHRoaXMucGlja1NoYWRlcj1pLHRoaXMucG9pbnRQaWNrU2hhZGVyPW8sdGhpcy5jb250b3VyU2hhZGVyPXMsdGhpcy50cmlhbmdsZVBvc2l0aW9ucz1sLHRoaXMudHJpYW5nbGVDb2xvcnM9dSx0aGlzLnRyaWFuZ2xlTm9ybWFscz1mLHRoaXMudHJpYW5nbGVVVnM9aCx0aGlzLnRyaWFuZ2xlSWRzPWMsdGhpcy50cmlhbmdsZVZBTz1wLHRoaXMudHJpYW5nbGVDb3VudD0wLHRoaXMubGluZVdpZHRoPTEsdGhpcy5lZGdlUG9zaXRpb25zPWQsdGhpcy5lZGdlQ29sb3JzPXYsdGhpcy5lZGdlVVZzPW0sdGhpcy5lZGdlSWRzPWcsdGhpcy5lZGdlVkFPPXksdGhpcy5lZGdlQ291bnQ9MCx0aGlzLnBvaW50UG9zaXRpb25zPXgsdGhpcy5wb2ludENvbG9ycz1fLHRoaXMucG9pbnRVVnM9ayx0aGlzLnBvaW50U2l6ZXM9VCx0aGlzLnBvaW50SWRzPWIsdGhpcy5wb2ludFZBTz1NLHRoaXMucG9pbnRDb3VudD0wLHRoaXMuY29udG91ckxpbmVXaWR0aD0xLHRoaXMuY29udG91clBvc2l0aW9ucz1BLHRoaXMuY29udG91clZBTz1TLHRoaXMuY29udG91ckNvdW50PTAsdGhpcy5jb250b3VyQ29sb3I9WzAsMCwwXSx0aGlzLmNvbnRvdXJFbmFibGU9ITAsdGhpcy5waWNrVmVydGV4PSEwLHRoaXMucGlja0lkPTEsdGhpcy5ib3VuZHM9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV0sdGhpcy5jbGlwQm91bmRzPVtbLTEvMCwtMS8wLC0xLzBdLFsxLzAsMS8wLDEvMF1dLHRoaXMubGlnaHRQb3NpdGlvbj1bMWU1LDFlNSwwXSx0aGlzLmFtYmllbnRMaWdodD0uOCx0aGlzLmRpZmZ1c2VMaWdodD0uOCx0aGlzLnNwZWN1bGFyTGlnaHQ9Mix0aGlzLnJvdWdobmVzcz0uNSx0aGlzLmZyZXNuZWw9MS41LHRoaXMub3BhY2l0eT0xLHRoaXMuaGFzQWxwaGE9ITEsdGhpcy5vcGFjaXR5c2NhbGU9ITEsdGhpcy5fbW9kZWw9dyx0aGlzLl92aWV3PXcsdGhpcy5fcHJvamVjdGlvbj13LHRoaXMuX3Jlc29sdXRpb249WzEsMV19dmFyIFQ9ay5wcm90b3R5cGU7ZnVuY3Rpb24gTSh0LGUpe2lmKCFlKXJldHVybiAxO2lmKCFlLmxlbmd0aClyZXR1cm4gMTtmb3IodmFyIHI9MDtyPGUubGVuZ3RoOysrcil7aWYoZS5sZW5ndGg8MilyZXR1cm4gMTtpZihlW3JdWzBdPT09dClyZXR1cm4gZVtyXVsxXTtpZihlW3JdWzBdPnQmJnI+MCl7dmFyIG49KGVbcl1bMF0tdCkvKGVbcl1bMF0tZVtyLTFdWzBdKTtyZXR1cm4gZVtyXVsxXSooMS1uKStuKmVbci0xXVsxXX19cmV0dXJuIDF9ZnVuY3Rpb24gQSh0KXt2YXIgZT1uKHQseS52ZXJ0ZXgseS5mcmFnbWVudCk7cmV0dXJuIGUuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5jb2xvci5sb2NhdGlvbj0yLGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0zLGUuYXR0cmlidXRlcy5wb2ludFNpemUubG9jYXRpb249NCxlfWZ1bmN0aW9uIFModCl7dmFyIGU9bih0LHgudmVydGV4LHguZnJhZ21lbnQpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuaWQubG9jYXRpb249MSxlfWZ1bmN0aW9uIEUodCl7dmFyIGU9bih0LGIudmVydGV4LGIuZnJhZ21lbnQpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuaWQubG9jYXRpb249MSxlLmF0dHJpYnV0ZXMucG9pbnRTaXplLmxvY2F0aW9uPTQsZX1mdW5jdGlvbiBMKHQpe3ZhciBlPW4odCxfLnZlcnRleCxfLmZyYWdtZW50KTtyZXR1cm4gZS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsZX1ULmlzT3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaGFzQWxwaGF9LFQuaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0FscGhhfSxULnBpY2tTbG90cz0xLFQuc2V0UGlja0Jhc2U9ZnVuY3Rpb24odCl7dGhpcy5waWNrSWQ9dH0sVC5oaWdobGlnaHQ9ZnVuY3Rpb24odCl7aWYodCYmdGhpcy5jb250b3VyRW5hYmxlKXtmb3IodmFyIGU9Zih0aGlzLmNlbGxzLHRoaXMuaW50ZW5zaXR5LHQuaW50ZW5zaXR5KSxyPWUuY2VsbHMsbj1lLnZlcnRleElkcyxhPWUudmVydGV4V2VpZ2h0cyxpPXIubGVuZ3RoLG89cC5tYWxsb2NGbG9hdDMyKDYqaSkscz0wLGw9MDtsPGk7KytsKWZvcih2YXIgYz1yW2xdLHU9MDt1PDI7Kyt1KXt2YXIgaD1jWzBdOzI9PT1jLmxlbmd0aCYmKGg9Y1t1XSk7Zm9yKHZhciBkPW5baF1bMF0sZz1uW2hdWzFdLHY9YVtoXSxtPTEtdix5PXRoaXMucG9zaXRpb25zW2RdLHg9dGhpcy5wb3NpdGlvbnNbZ10sYj0wO2I8MzsrK2Ipb1tzKytdPXYqeVtiXSttKnhbYl19dGhpcy5jb250b3VyQ291bnQ9cy8zfDAsdGhpcy5jb250b3VyUG9zaXRpb25zLnVwZGF0ZShvLnN1YmFycmF5KDAscykpLHAuZnJlZShvKX1lbHNlIHRoaXMuY29udG91ckNvdW50PTB9LFQudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dGhpcy5nbDt0aGlzLmRpcnR5PSEwLCJjb250b3VyRW5hYmxlImluIHQmJih0aGlzLmNvbnRvdXJFbmFibGU9dC5jb250b3VyRW5hYmxlKSwiY29udG91ckNvbG9yImluIHQmJih0aGlzLmNvbnRvdXJDb2xvcj10LmNvbnRvdXJDb2xvciksImxpbmVXaWR0aCJpbiB0JiYodGhpcy5saW5lV2lkdGg9dC5saW5lV2lkdGgpLCJsaWdodFBvc2l0aW9uImluIHQmJih0aGlzLmxpZ2h0UG9zaXRpb249dC5saWdodFBvc2l0aW9uKSx0aGlzLmhhc0FscGhhPSExLCJvcGFjaXR5ImluIHQmJih0aGlzLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMub3BhY2l0eTwxJiYodGhpcy5oYXNBbHBoYT0hMCkpLCJvcGFjaXR5c2NhbGUiaW4gdCYmKHRoaXMub3BhY2l0eXNjYWxlPXQub3BhY2l0eXNjYWxlLHRoaXMuaGFzQWxwaGE9ITApLCJhbWJpZW50ImluIHQmJih0aGlzLmFtYmllbnRMaWdodD10LmFtYmllbnQpLCJkaWZmdXNlImluIHQmJih0aGlzLmRpZmZ1c2VMaWdodD10LmRpZmZ1c2UpLCJzcGVjdWxhciJpbiB0JiYodGhpcy5zcGVjdWxhckxpZ2h0PXQuc3BlY3VsYXIpLCJyb3VnaG5lc3MiaW4gdCYmKHRoaXMucm91Z2huZXNzPXQucm91Z2huZXNzKSwiZnJlc25lbCJpbiB0JiYodGhpcy5mcmVzbmVsPXQuZnJlc25lbCksdC50ZXh0dXJlPyh0aGlzLnRleHR1cmUuZGlzcG9zZSgpLHRoaXMudGV4dHVyZT1vKGUsdC50ZXh0dXJlKSk6dC5jb2xvcm1hcCYmKHRoaXMudGV4dHVyZS5zaGFwZT1bMjU2LDI1Nl0sdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj1lLkxJTkVBUl9NSVBNQVBfTElORUFSLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZS5MSU5FQVIsdGhpcy50ZXh0dXJlLnNldFBpeGVscyhmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1oKHtjb2xvcm1hcDp0LG5zaGFkZXM6MjU2LGZvcm1hdDoicmdiYSJ9KSxuPW5ldyBVaW50OEFycmF5KDEwMjQpLGE9MDthPDI1NjsrK2Epe2Zvcih2YXIgaT1yW2FdLG89MDtvPDM7KytvKW5bNCphK29dPWlbb107bls0KmErM109ZT8yNTUqTShhLzI1NSxlKToyNTUqaVszXX1yZXR1cm4gdShuLFsyNTYsMjU2LDRdLFs0LDAsMV0pfSh0LmNvbG9ybWFwLHRoaXMub3BhY2l0eXNjYWxlKSksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwKCkpO3ZhciByPXQuY2VsbHMsbj10LnBvc2l0aW9ucztpZihuJiZyKXt2YXIgYT1bXSxpPVtdLGw9W10sYz1bXSxmPVtdLHA9W10sZD1bXSxnPVtdLHY9W10sbT1bXSx5PVtdLHg9W10sYj1bXSxfPVtdO3RoaXMuY2VsbHM9cix0aGlzLnBvc2l0aW9ucz1uO3ZhciB3PXQudmVydGV4Tm9ybWFscyxrPXQuY2VsbE5vcm1hbHMsVD12b2lkIDA9PT10LnZlcnRleE5vcm1hbHNFcHNpbG9uPzFlLTY6dC52ZXJ0ZXhOb3JtYWxzRXBzaWxvbixBPXZvaWQgMD09PXQuZmFjZU5vcm1hbHNFcHNpbG9uPzFlLTY6dC5mYWNlTm9ybWFsc0Vwc2lsb247dC51c2VGYWNldE5vcm1hbHMmJiFrJiYoaz1zLmZhY2VOb3JtYWxzKHIsbixBKSksa3x8d3x8KHc9cy52ZXJ0ZXhOb3JtYWxzKHIsbixUKSk7dmFyIFM9dC52ZXJ0ZXhDb2xvcnMsRT10LmNlbGxDb2xvcnMsTD10Lm1lc2hDb2xvcnx8WzEsMSwxLDFdLEM9dC52ZXJ0ZXhVVnMsUD10LnZlcnRleEludGVuc2l0eSxPPXQuY2VsbFVWcyx6PXQuY2VsbEludGVuc2l0eSxJPTEvMCxEPS0xLzA7aWYoIUMmJiFPKWlmKFApaWYodC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHMpST0rdC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHNbMF0sRD0rdC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHNbMV07ZWxzZSBmb3IodmFyIFI9MDtSPFAubGVuZ3RoOysrUil7dmFyIEY9UFtSXTtJPU1hdGgubWluKEksRiksRD1NYXRoLm1heChELEYpfWVsc2UgaWYoeilpZih0LmNlbGxJbnRlbnNpdHlCb3VuZHMpST0rdC5jZWxsSW50ZW5zaXR5Qm91bmRzWzBdLEQ9K3QuY2VsbEludGVuc2l0eUJvdW5kc1sxXTtlbHNlIGZvcihSPTA7Ujx6Lmxlbmd0aDsrK1Ipe0Y9eltSXTtJPU1hdGgubWluKEksRiksRD1NYXRoLm1heChELEYpfWVsc2UgZm9yKFI9MDtSPG4ubGVuZ3RoOysrUil7Rj1uW1JdWzJdO0k9TWF0aC5taW4oSSxGKSxEPU1hdGgubWF4KEQsRil9dGhpcy5pbnRlbnNpdHk9UHx8KHp8fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlOysrbilyW25dPXRbbl1bMl07cmV0dXJuIHJ9KG4pKSx0aGlzLnBpY2tWZXJ0ZXg9ISh6fHxFKTt2YXIgQj10LnBvaW50U2l6ZXMsTj10LnBvaW50U2l6ZXx8MTt0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBdXTtmb3IoUj0wO1I8bi5sZW5ndGg7KytSKWZvcih2YXIgaj1uW1JdLFY9MDtWPDM7KytWKSFpc05hTihqW1ZdKSYmaXNGaW5pdGUoaltWXSkmJih0aGlzLmJvdW5kc1swXVtWXT1NYXRoLm1pbih0aGlzLmJvdW5kc1swXVtWXSxqW1ZdKSx0aGlzLmJvdW5kc1sxXVtWXT1NYXRoLm1heCh0aGlzLmJvdW5kc1sxXVtWXSxqW1ZdKSk7dmFyIFU9MCxxPTAsSD0wO3Q6Zm9yKFI9MDtSPHIubGVuZ3RoOysrUil7dmFyIEc9cltSXTtzd2l0Y2goRy5sZW5ndGgpe2Nhc2UgMTpmb3Ioaj1uW1c9R1swXV0sVj0wO1Y8MzsrK1YpaWYoaXNOYU4oaltWXSl8fCFpc0Zpbml0ZShqW1ZdKSljb250aW51ZSB0O20ucHVzaChqWzBdLGpbMV0salsyXSksWD1TP1NbV106RT9FW1JdOkwsdGhpcy5vcGFjaXR5c2NhbGUmJlA/aS5wdXNoKFhbMF0sWFsxXSxYWzJdLHRoaXMub3BhY2l0eSpNKChQW1ddLUkpLyhELUkpLHRoaXMub3BhY2l0eXNjYWxlKSk6Mz09PVgubGVuZ3RoP3kucHVzaChYWzBdLFhbMV0sWFsyXSx0aGlzLm9wYWNpdHkpOih5LnB1c2goWFswXSxYWzFdLFhbMl0sWFszXSp0aGlzLm9wYWNpdHkpLFhbM108MSYmKHRoaXMuaGFzQWxwaGE9ITApKSxaPUM/Q1tXXTpQP1soUFtXXS1JKS8oRC1JKSwwXTpPP09bUl06ej9bKHpbUl0tSSkvKEQtSSksMF06WyhqWzJdLUkpLyhELUkpLDBdLHgucHVzaChaWzBdLFpbMV0pLEI/Yi5wdXNoKEJbV10pOmIucHVzaChOKSxfLnB1c2goUiksSCs9MTticmVhaztjYXNlIDI6Zm9yKFY9MDtWPDI7KytWKXtqPW5bVz1HW1ZdXTtmb3IodmFyIFk9MDtZPDM7KytZKWlmKGlzTmFOKGpbWV0pfHwhaXNGaW5pdGUoaltZXSkpY29udGludWUgdH1mb3IoVj0wO1Y8MjsrK1Ype2o9bltXPUdbVl1dO3AucHVzaChqWzBdLGpbMV0salsyXSksWD1TP1NbV106RT9FW1JdOkwsdGhpcy5vcGFjaXR5c2NhbGUmJlA/aS5wdXNoKFhbMF0sWFsxXSxYWzJdLHRoaXMub3BhY2l0eSpNKChQW1ddLUkpLyhELUkpLHRoaXMub3BhY2l0eXNjYWxlKSk6Mz09PVgubGVuZ3RoP2QucHVzaChYWzBdLFhbMV0sWFsyXSx0aGlzLm9wYWNpdHkpOihkLnB1c2goWFswXSxYWzFdLFhbMl0sWFszXSp0aGlzLm9wYWNpdHkpLFhbM108MSYmKHRoaXMuaGFzQWxwaGE9ITApKSxaPUM/Q1tXXTpQP1soUFtXXS1JKS8oRC1JKSwwXTpPP09bUl06ej9bKHpbUl0tSSkvKEQtSSksMF06WyhqWzJdLUkpLyhELUkpLDBdLGcucHVzaChaWzBdLFpbMV0pLHYucHVzaChSKX1xKz0xO2JyZWFrO2Nhc2UgMzpmb3IoVj0wO1Y8MzsrK1YpZm9yKGo9bltXPUdbVl1dLFk9MDtZPDM7KytZKWlmKGlzTmFOKGpbWV0pfHwhaXNGaW5pdGUoaltZXSkpY29udGludWUgdDtmb3IoVj0wO1Y8MzsrK1Ype3ZhciBXLFgsWixKO2o9bltXPUdbMi1WXV07YS5wdXNoKGpbMF0salsxXSxqWzJdKSwoWD1TP1NbV106RT9FW1JdOkwpP3RoaXMub3BhY2l0eXNjYWxlJiZQP2kucHVzaChYWzBdLFhbMV0sWFsyXSx0aGlzLm9wYWNpdHkqTSgoUFtXXS1JKS8oRC1JKSx0aGlzLm9wYWNpdHlzY2FsZSkpOjM9PT1YLmxlbmd0aD9pLnB1c2goWFswXSxYWzFdLFhbMl0sdGhpcy5vcGFjaXR5KTooaS5wdXNoKFhbMF0sWFsxXSxYWzJdLFhbM10qdGhpcy5vcGFjaXR5KSxYWzNdPDEmJih0aGlzLmhhc0FscGhhPSEwKSk6aS5wdXNoKC41LC41LC41LDEpLFo9Qz9DW1ddOlA/WyhQW1ddLUkpLyhELUkpLDBdOk8/T1tSXTp6P1soeltSXS1JKS8oRC1JKSwwXTpbKGpbMl0tSSkvKEQtSSksMF0sYy5wdXNoKFpbMF0sWlsxXSksSj13P3dbV106a1tSXSxsLnB1c2goSlswXSxKWzFdLEpbMl0pLGYucHVzaChSKX1VKz0xfX10aGlzLnBvaW50Q291bnQ9SCx0aGlzLmVkZ2VDb3VudD1xLHRoaXMudHJpYW5nbGVDb3VudD1VLHRoaXMucG9pbnRQb3NpdGlvbnMudXBkYXRlKG0pLHRoaXMucG9pbnRDb2xvcnMudXBkYXRlKHkpLHRoaXMucG9pbnRVVnMudXBkYXRlKHgpLHRoaXMucG9pbnRTaXplcy51cGRhdGUoYiksdGhpcy5wb2ludElkcy51cGRhdGUobmV3IFVpbnQzMkFycmF5KF8pKSx0aGlzLmVkZ2VQb3NpdGlvbnMudXBkYXRlKHApLHRoaXMuZWRnZUNvbG9ycy51cGRhdGUoZCksdGhpcy5lZGdlVVZzLnVwZGF0ZShnKSx0aGlzLmVkZ2VJZHMudXBkYXRlKG5ldyBVaW50MzJBcnJheSh2KSksdGhpcy50cmlhbmdsZVBvc2l0aW9ucy51cGRhdGUoYSksdGhpcy50cmlhbmdsZUNvbG9ycy51cGRhdGUoaSksdGhpcy50cmlhbmdsZVVWcy51cGRhdGUoYyksdGhpcy50cmlhbmdsZU5vcm1hbHMudXBkYXRlKGwpLHRoaXMudHJpYW5nbGVJZHMudXBkYXRlKG5ldyBVaW50MzJBcnJheShmKSl9fSxULmRyYXdUcmFuc3BhcmVudD1ULmRyYXc9ZnVuY3Rpb24odCl7dD10fHx7fTtmb3IodmFyIGU9dGhpcy5nbCxyPXQubW9kZWx8fHcsbj10LnZpZXd8fHcsYT10LnByb2plY3Rpb258fHcsaT1bWy0xZTYsLTFlNiwtMWU2XSxbMWU2LDFlNiwxZTZdXSxvPTA7bzwzOysrbylpWzBdW29dPU1hdGgubWF4KGlbMF1bb10sdGhpcy5jbGlwQm91bmRzWzBdW29dKSxpWzFdW29dPU1hdGgubWluKGlbMV1bb10sdGhpcy5jbGlwQm91bmRzWzFdW29dKTt2YXIgcz17bW9kZWw6cix2aWV3Om4scHJvamVjdGlvbjphLGludmVyc2VNb2RlbDp3LnNsaWNlKCksY2xpcEJvdW5kczppLGthbWJpZW50OnRoaXMuYW1iaWVudExpZ2h0LGtkaWZmdXNlOnRoaXMuZGlmZnVzZUxpZ2h0LGtzcGVjdWxhcjp0aGlzLnNwZWN1bGFyTGlnaHQscm91Z2huZXNzOnRoaXMucm91Z2huZXNzLGZyZXNuZWw6dGhpcy5mcmVzbmVsLGV5ZVBvc2l0aW9uOlswLDAsMF0sbGlnaHRQb3NpdGlvbjpbMCwwLDBdLGNvbnRvdXJDb2xvcjp0aGlzLmNvbnRvdXJDb2xvcix0ZXh0dXJlOjB9O3MuaW52ZXJzZU1vZGVsPWMocy5pbnZlcnNlTW9kZWwscy5tb2RlbCksZS5kaXNhYmxlKGUuQ1VMTF9GQUNFKSx0aGlzLnRleHR1cmUuYmluZCgwKTt2YXIgdT1uZXcgQXJyYXkoMTYpO2wodSxzLnZpZXcscy5tb2RlbCksbCh1LHMucHJvamVjdGlvbix1KSxjKHUsdSk7Zm9yKG89MDtvPDM7KytvKXMuZXllUG9zaXRpb25bb109dVsxMitvXS91WzE1XTt2YXIgaCxmPXVbMTVdO2ZvcihvPTA7bzwzOysrbylmKz10aGlzLmxpZ2h0UG9zaXRpb25bb10qdVs0Km8rM107Zm9yKG89MDtvPDM7KytvKXtmb3IodmFyIHA9dVsxMitvXSxkPTA7ZDwzOysrZClwKz11WzQqZCtvXSp0aGlzLmxpZ2h0UG9zaXRpb25bZF07cy5saWdodFBvc2l0aW9uW29dPXAvZn10aGlzLnRyaWFuZ2xlQ291bnQ+MCYmKChoPXRoaXMudHJpU2hhZGVyKS5iaW5kKCksaC51bmlmb3Jtcz1zLHRoaXMudHJpYW5nbGVWQU8uYmluZCgpLGUuZHJhd0FycmF5cyhlLlRSSUFOR0xFUywwLDMqdGhpcy50cmlhbmdsZUNvdW50KSx0aGlzLnRyaWFuZ2xlVkFPLnVuYmluZCgpKTt0aGlzLmVkZ2VDb3VudD4wJiZ0aGlzLmxpbmVXaWR0aD4wJiYoKGg9dGhpcy5saW5lU2hhZGVyKS5iaW5kKCksaC51bmlmb3Jtcz1zLHRoaXMuZWRnZVZBTy5iaW5kKCksZS5saW5lV2lkdGgodGhpcy5saW5lV2lkdGgqdGhpcy5waXhlbFJhdGlvKSxlLmRyYXdBcnJheXMoZS5MSU5FUywwLDIqdGhpcy5lZGdlQ291bnQpLHRoaXMuZWRnZVZBTy51bmJpbmQoKSk7dGhpcy5wb2ludENvdW50PjAmJigoaD10aGlzLnBvaW50U2hhZGVyKS5iaW5kKCksaC51bmlmb3Jtcz1zLHRoaXMucG9pbnRWQU8uYmluZCgpLGUuZHJhd0FycmF5cyhlLlBPSU5UUywwLHRoaXMucG9pbnRDb3VudCksdGhpcy5wb2ludFZBTy51bmJpbmQoKSk7dGhpcy5jb250b3VyRW5hYmxlJiZ0aGlzLmNvbnRvdXJDb3VudD4wJiZ0aGlzLmNvbnRvdXJMaW5lV2lkdGg+MCYmKChoPXRoaXMuY29udG91clNoYWRlcikuYmluZCgpLGgudW5pZm9ybXM9cyx0aGlzLmNvbnRvdXJWQU8uYmluZCgpLGUuZHJhd0FycmF5cyhlLkxJTkVTLDAsdGhpcy5jb250b3VyQ291bnQpLHRoaXMuY29udG91clZBTy51bmJpbmQoKSl9LFQuZHJhd1BpY2s9ZnVuY3Rpb24odCl7dD10fHx7fTtmb3IodmFyIGU9dGhpcy5nbCxyPXQubW9kZWx8fHcsbj10LnZpZXd8fHcsYT10LnByb2plY3Rpb258fHcsaT1bWy0xZTYsLTFlNiwtMWU2XSxbMWU2LDFlNiwxZTZdXSxvPTA7bzwzOysrbylpWzBdW29dPU1hdGgubWF4KGlbMF1bb10sdGhpcy5jbGlwQm91bmRzWzBdW29dKSxpWzFdW29dPU1hdGgubWluKGlbMV1bb10sdGhpcy5jbGlwQm91bmRzWzFdW29dKTt0aGlzLl9tb2RlbD1bXS5zbGljZS5jYWxsKHIpLHRoaXMuX3ZpZXc9W10uc2xpY2UuY2FsbChuKSx0aGlzLl9wcm9qZWN0aW9uPVtdLnNsaWNlLmNhbGwoYSksdGhpcy5fcmVzb2x1dGlvbj1bZS5kcmF3aW5nQnVmZmVyV2lkdGgsZS5kcmF3aW5nQnVmZmVySGVpZ2h0XTt2YXIgcyxsPXttb2RlbDpyLHZpZXc6bixwcm9qZWN0aW9uOmEsY2xpcEJvdW5kczppLHBpY2tJZDp0aGlzLnBpY2tJZC8yNTV9Oygocz10aGlzLnBpY2tTaGFkZXIpLmJpbmQoKSxzLnVuaWZvcm1zPWwsdGhpcy50cmlhbmdsZUNvdW50PjAmJih0aGlzLnRyaWFuZ2xlVkFPLmJpbmQoKSxlLmRyYXdBcnJheXMoZS5UUklBTkdMRVMsMCwzKnRoaXMudHJpYW5nbGVDb3VudCksdGhpcy50cmlhbmdsZVZBTy51bmJpbmQoKSksdGhpcy5lZGdlQ291bnQ+MCYmKHRoaXMuZWRnZVZBTy5iaW5kKCksZS5saW5lV2lkdGgodGhpcy5saW5lV2lkdGgqdGhpcy5waXhlbFJhdGlvKSxlLmRyYXdBcnJheXMoZS5MSU5FUywwLDIqdGhpcy5lZGdlQ291bnQpLHRoaXMuZWRnZVZBTy51bmJpbmQoKSksdGhpcy5wb2ludENvdW50PjApJiYoKHM9dGhpcy5wb2ludFBpY2tTaGFkZXIpLmJpbmQoKSxzLnVuaWZvcm1zPWwsdGhpcy5wb2ludFZBTy5iaW5kKCksZS5kcmF3QXJyYXlzKGUuUE9JTlRTLDAsdGhpcy5wb2ludENvdW50KSx0aGlzLnBvaW50VkFPLnVuYmluZCgpKX0sVC5waWNrPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQuaWQhPT10aGlzLnBpY2tJZClyZXR1cm4gbnVsbDtmb3IodmFyIGU9dC52YWx1ZVswXSsyNTYqdC52YWx1ZVsxXSs2NTUzNip0LnZhbHVlWzJdLHI9dGhpcy5jZWxsc1tlXSxuPXRoaXMucG9zaXRpb25zLGE9bmV3IEFycmF5KHIubGVuZ3RoKSxpPTA7aTxyLmxlbmd0aDsrK2kpYVtpXT1uW3JbaV1dO3ZhciBvPXQuY29vcmRbMF0scz10LmNvb3JkWzFdO2lmKCF0aGlzLnBpY2tWZXJ0ZXgpe3ZhciBsPXRoaXMucG9zaXRpb25zW3JbMF1dLGM9dGhpcy5wb3NpdGlvbnNbclsxXV0sdT10aGlzLnBvc2l0aW9uc1tyWzJdXSxoPVsobFswXStjWzBdK3VbMF0pLzMsKGxbMV0rY1sxXSt1WzFdKS8zLChsWzJdK2NbMl0rdVsyXSkvM107cmV0dXJue19jZWxsQ2VudGVyOiEwLHBvc2l0aW9uOltvLHNdLGluZGV4OmUsY2VsbDpyLGNlbGxJZDplLGludGVuc2l0eTp0aGlzLmludGVuc2l0eVtlXSxkYXRhQ29vcmRpbmF0ZTpofX12YXIgZj1nKGEsW28qdGhpcy5waXhlbFJhdGlvLHRoaXMuX3Jlc29sdXRpb25bMV0tcyp0aGlzLnBpeGVsUmF0aW9dLHRoaXMuX21vZGVsLHRoaXMuX3ZpZXcsdGhpcy5fcHJvamVjdGlvbix0aGlzLl9yZXNvbHV0aW9uKTtpZighZilyZXR1cm4gbnVsbDt2YXIgcD1mWzJdLGQ9MDtmb3IoaT0wO2k8ci5sZW5ndGg7KytpKWQrPXBbaV0qdGhpcy5pbnRlbnNpdHlbcltpXV07cmV0dXJue3Bvc2l0aW9uOmZbMV0saW5kZXg6cltmWzBdXSxjZWxsOnIsY2VsbElkOmUsaW50ZW5zaXR5OmQsZGF0YUNvb3JkaW5hdGU6dGhpcy5wb3NpdGlvbnNbcltmWzBdXV19fSxULmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnRleHR1cmUuZGlzcG9zZSgpLHRoaXMudHJpU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLmxpbmVTaGFkZXIuZGlzcG9zZSgpLHRoaXMucG9pbnRTaGFkZXIuZGlzcG9zZSgpLHRoaXMucGlja1NoYWRlci5kaXNwb3NlKCksdGhpcy5wb2ludFBpY2tTaGFkZXIuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVWQU8uZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVQb3NpdGlvbnMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVDb2xvcnMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVVVnMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVOb3JtYWxzLmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlSWRzLmRpc3Bvc2UoKSx0aGlzLmVkZ2VWQU8uZGlzcG9zZSgpLHRoaXMuZWRnZVBvc2l0aW9ucy5kaXNwb3NlKCksdGhpcy5lZGdlQ29sb3JzLmRpc3Bvc2UoKSx0aGlzLmVkZ2VVVnMuZGlzcG9zZSgpLHRoaXMuZWRnZUlkcy5kaXNwb3NlKCksdGhpcy5wb2ludFZBTy5kaXNwb3NlKCksdGhpcy5wb2ludFBvc2l0aW9ucy5kaXNwb3NlKCksdGhpcy5wb2ludENvbG9ycy5kaXNwb3NlKCksdGhpcy5wb2ludFVWcy5kaXNwb3NlKCksdGhpcy5wb2ludFNpemVzLmRpc3Bvc2UoKSx0aGlzLnBvaW50SWRzLmRpc3Bvc2UoKSx0aGlzLmNvbnRvdXJWQU8uZGlzcG9zZSgpLHRoaXMuY29udG91clBvc2l0aW9ucy5kaXNwb3NlKCksdGhpcy5jb250b3VyU2hhZGVyLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgmJih0PShlPXQpLmdsKSwhKHQuZ2V0RXh0ZW5zaW9uKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSkpdGhyb3cgbmV3IEVycm9yKCJkZXJpdmF0aXZlcyBub3Qgc3VwcG9ydGVkIik7dmFyIHI9ZnVuY3Rpb24odCl7dmFyIGU9bih0LHYudmVydGV4LHYuZnJhZ21lbnQpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MixlLmF0dHJpYnV0ZXMudXYubG9jYXRpb249MyxlLmF0dHJpYnV0ZXMubm9ybWFsLmxvY2F0aW9uPTQsZX0odCkscz1mdW5jdGlvbih0KXt2YXIgZT1uKHQsbS52ZXJ0ZXgsbS5mcmFnbWVudCk7cmV0dXJuIGUuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5jb2xvci5sb2NhdGlvbj0yLGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0zLGV9KHQpLGw9QSh0KSxjPVModCksaD1FKHQpLGY9TCh0KSxwPW8odCx1KG5ldyBVaW50OEFycmF5KFsyNTUsMjU1LDI1NSwyNTVdKSxbMSwxLDRdKSk7cC5nZW5lcmF0ZU1pcG1hcCgpLHAubWluRmlsdGVyPXQuTElORUFSX01JUE1BUF9MSU5FQVIscC5tYWdGaWx0ZXI9dC5MSU5FQVI7dmFyIGQ9YSh0KSxnPWEodCkseT1hKHQpLHg9YSh0KSxiPWEodCksXz1pKHQsW3tidWZmZXI6ZCx0eXBlOnQuRkxPQVQsc2l6ZTozfSx7YnVmZmVyOmIsdHlwZTp0LlVOU0lHTkVEX0JZVEUsc2l6ZTo0LG5vcm1hbGl6ZWQ6ITB9LHtidWZmZXI6Zyx0eXBlOnQuRkxPQVQsc2l6ZTo0fSx7YnVmZmVyOnksdHlwZTp0LkZMT0FULHNpemU6Mn0se2J1ZmZlcjp4LHR5cGU6dC5GTE9BVCxzaXplOjN9XSksdz1hKHQpLFQ9YSh0KSxNPWEodCksQz1hKHQpLFA9aSh0LFt7YnVmZmVyOncsdHlwZTp0LkZMT0FULHNpemU6M30se2J1ZmZlcjpDLHR5cGU6dC5VTlNJR05FRF9CWVRFLHNpemU6NCxub3JtYWxpemVkOiEwfSx7YnVmZmVyOlQsdHlwZTp0LkZMT0FULHNpemU6NH0se2J1ZmZlcjpNLHR5cGU6dC5GTE9BVCxzaXplOjJ9XSksTz1hKHQpLHo9YSh0KSxJPWEodCksRD1hKHQpLFI9YSh0KSxGPWkodCxbe2J1ZmZlcjpPLHR5cGU6dC5GTE9BVCxzaXplOjN9LHtidWZmZXI6Uix0eXBlOnQuVU5TSUdORURfQllURSxzaXplOjQsbm9ybWFsaXplZDohMH0se2J1ZmZlcjp6LHR5cGU6dC5GTE9BVCxzaXplOjR9LHtidWZmZXI6SSx0eXBlOnQuRkxPQVQsc2l6ZToyfSx7YnVmZmVyOkQsdHlwZTp0LkZMT0FULHNpemU6MX1dKSxCPWEodCksTj1uZXcgayh0LHAscixzLGwsYyxoLGYsZCxiLGcseSx4LF8sdyxDLFQsTSxQLE8sUix6LEksRCxGLEIsaSh0LFt7YnVmZmVyOkIsdHlwZTp0LkZMT0FULHNpemU6M31dKSk7cmV0dXJuIE4udXBkYXRlKGUpLE59fSx7Ii4vbGliL2Nsb3Nlc3QtcG9pbnQiOjI4MSwiLi9saWIvc2hhZGVycyI6MjgyLGNvbG9ybWFwOjEyOCwiZ2wtYnVmZmVyIjoyNDQsImdsLW1hdDQvaW52ZXJ0IjoyNjgsImdsLW1hdDQvbXVsdGlwbHkiOjI3MCwiZ2wtc2hhZGVyIjozMDQsImdsLXRleHR1cmUyZCI6MzI0LCJnbC12YW8iOjMyOSxuZGFycmF5OjQ1Mixub3JtYWxzOjQ1NSwic2ltcGxpY2lhbC1jb21wbGV4LWNvbnRvdXIiOjUxNywidHlwZWRhcnJheS1wb29sIjo1NDR9XSwyODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2wscj1uKGUsWzAsMCwwLDEsMSwwLDEsMV0pLHM9YShlLGkuYm94VmVydCxpLmxpbmVGcmFnKTtyZXR1cm4gbmV3IG8odCxyLHMpfTt2YXIgbj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXNoYWRlciIpLGk9dCgiLi9zaGFkZXJzIik7ZnVuY3Rpb24gbyh0LGUscil7dGhpcy5wbG90PXQsdGhpcy52Ym89ZSx0aGlzLnNoYWRlcj1yfXZhciBzLGwsYz1vLnByb3RvdHlwZTtjLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNoYWRlcjt0aGlzLnZiby5iaW5kKCksdGhpcy5zaGFkZXIuYmluZCgpLHQuYXR0cmlidXRlcy5jb29yZC5wb2ludGVyKCksdC51bmlmb3Jtcy5zY3JlZW5Cb3g9dGhpcy5wbG90LnNjcmVlbkJveH0sYy5kcmF3Qm94PShzPVswLDBdLGw9WzAsMF0sZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT10aGlzLnBsb3Qsbz10aGlzLnNoYWRlcixjPWkuZ2w7c1swXT10LHNbMV09ZSxsWzBdPXIsbFsxXT1uLG8udW5pZm9ybXMubG89cyxvLnVuaWZvcm1zLmhpPWwsby51bmlmb3Jtcy5jb2xvcj1hLGMuZHJhd0FycmF5cyhjLlRSSUFOR0xFX1NUUklQLDAsNCl9KSxjLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZiby5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjI4NywiZ2wtYnVmZmVyIjoyNDQsImdsLXNoYWRlciI6MzA0fV0sMjg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9bihlKSxpPWEoZSxvLmdyaWRWZXJ0LG8uZ3JpZEZyYWcpLGw9YShlLG8udGlja1ZlcnQsby5ncmlkRnJhZyk7cmV0dXJuIG5ldyBzKHQscixpLGwpfTt2YXIgbj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXNoYWRlciIpLGk9dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKSxvPXQoIi4vc2hhZGVycyIpO2Z1bmN0aW9uIHModCxlLHIsbil7dGhpcy5wbG90PXQsdGhpcy52Ym89ZSx0aGlzLnNoYWRlcj1yLHRoaXMudGlja1NoYWRlcj1uLHRoaXMudGlja3M9W1tdLFtdXX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQtZX12YXIgYyx1LGgsZixwLGQ9cy5wcm90b3R5cGU7ZC5kcmF3PShjPVswLDBdLHU9WzAsMF0saD1bMCwwXSxmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnBsb3QsZT10aGlzLnZibyxyPXRoaXMuc2hhZGVyLG49dGhpcy50aWNrcyxhPXQuZ2wsaT10Ll90aWNrQm91bmRzLG89dC5kYXRhQm94LHM9dC52aWV3Qm94LGw9dC5ncmlkTGluZVdpZHRoLGY9dC5ncmlkTGluZUNvbG9yLHA9dC5ncmlkTGluZUVuYWJsZSxkPXQucGl4ZWxSYXRpbyxnPTA7ZzwyOysrZyl7dmFyIHY9aVtnXSxtPWlbZysyXS12LHk9LjUqKG9bZysyXStvW2ddKSx4PW9bZysyXS1vW2ddO3VbZ109MiptL3gsY1tnXT0yKih2LXkpL3h9ci5iaW5kKCksZS5iaW5kKCksci5hdHRyaWJ1dGVzLmRhdGFDb29yZC5wb2ludGVyKCksci51bmlmb3Jtcy5kYXRhU2hpZnQ9YyxyLnVuaWZvcm1zLmRhdGFTY2FsZT11O3ZhciBiPTA7Zm9yKGc9MDtnPDI7KytnKXtoWzBdPWhbMV09MCxoW2ddPTEsci51bmlmb3Jtcy5kYXRhQXhpcz1oLHIudW5pZm9ybXMubGluZVdpZHRoPWxbZ10vKHNbZysyXS1zW2ddKSpkLHIudW5pZm9ybXMuY29sb3I9ZltnXTt2YXIgXz02Km5bZ10ubGVuZ3RoO3BbZ10mJl8mJmEuZHJhd0FycmF5cyhhLlRSSUFOR0xFUyxiLF8pLGIrPV99fSksZC5kcmF3VGlja01hcmtzPWZ1bmN0aW9uKCl7dmFyIHQ9WzAsMF0sZT1bMCwwXSxyPVsxLDBdLG49WzAsMV0sYT1bMCwwXSxvPVswLDBdO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcz10aGlzLnBsb3QsYz10aGlzLnZibyx1PXRoaXMudGlja1NoYWRlcixoPXRoaXMudGlja3MsZj1zLmdsLHA9cy5fdGlja0JvdW5kcyxkPXMuZGF0YUJveCxnPXMudmlld0JveCx2PXMucGl4ZWxSYXRpbyxtPXMuc2NyZWVuQm94LHk9bVsyXS1tWzBdLHg9bVszXS1tWzFdLGI9Z1syXS1nWzBdLF89Z1szXS1nWzFdLHc9MDt3PDI7Kyt3KXt2YXIgaz1wW3ddLFQ9cFt3KzJdLWssTT0uNSooZFt3KzJdK2Rbd10pLEE9ZFt3KzJdLWRbd107ZVt3XT0yKlQvQSx0W3ddPTIqKGstTSkvQX1lWzBdKj1iL3ksdFswXSo9Yi95LGVbMV0qPV8veCx0WzFdKj1fL3gsdS5iaW5kKCksYy5iaW5kKCksdS5hdHRyaWJ1dGVzLmRhdGFDb29yZC5wb2ludGVyKCk7dmFyIFM9dS51bmlmb3JtcztTLmRhdGFTaGlmdD10LFMuZGF0YVNjYWxlPWU7dmFyIEU9cy50aWNrTWFya0xlbmd0aCxMPXMudGlja01hcmtXaWR0aCxDPXMudGlja01hcmtDb2xvcixQPTYqaFswXS5sZW5ndGgsTz1NYXRoLm1pbihpLmdlKGhbMF0sKGRbMF0tcFswXSkvKHBbMl0tcFswXSksbCksaFswXS5sZW5ndGgpLHo9TWF0aC5taW4oaS5ndChoWzBdLChkWzJdLXBbMF0pLyhwWzJdLXBbMF0pLGwpLGhbMF0ubGVuZ3RoKSxJPTArNipPLEQ9NipNYXRoLm1heCgwLHotTyksUj1NYXRoLm1pbihpLmdlKGhbMV0sKGRbMV0tcFsxXSkvKHBbM10tcFsxXSksbCksaFsxXS5sZW5ndGgpLEY9TWF0aC5taW4oaS5ndChoWzFdLChkWzNdLXBbMV0pLyhwWzNdLXBbMV0pLGwpLGhbMV0ubGVuZ3RoKSxCPVArNipSLE49NipNYXRoLm1heCgwLEYtUik7YVswXT0yKihnWzBdLUVbMV0pL3ktMSxhWzFdPShnWzNdK2dbMV0pL3gtMSxvWzBdPUVbMV0qdi95LG9bMV09TFsxXSp2L3gsTiYmKFMuY29sb3I9Q1sxXSxTLnRpY2tTY2FsZT1vLFMuZGF0YUF4aXM9bixTLnNjcmVlbk9mZnNldD1hLGYuZHJhd0FycmF5cyhmLlRSSUFOR0xFUyxCLE4pKSxhWzBdPShnWzJdK2dbMF0pL3ktMSxhWzFdPTIqKGdbMV0tRVswXSkveC0xLG9bMF09TFswXSp2L3ksb1sxXT1FWzBdKnYveCxEJiYoUy5jb2xvcj1DWzBdLFMudGlja1NjYWxlPW8sUy5kYXRhQXhpcz1yLFMuc2NyZWVuT2Zmc2V0PWEsZi5kcmF3QXJyYXlzKGYuVFJJQU5HTEVTLEksRCkpLGFbMF09MiooZ1syXStFWzNdKS95LTEsYVsxXT0oZ1szXStnWzFdKS94LTEsb1swXT1FWzNdKnYveSxvWzFdPUxbM10qdi94LE4mJihTLmNvbG9yPUNbM10sUy50aWNrU2NhbGU9byxTLmRhdGFBeGlzPW4sUy5zY3JlZW5PZmZzZXQ9YSxmLmRyYXdBcnJheXMoZi5UUklBTkdMRVMsQixOKSksYVswXT0oZ1syXStnWzBdKS95LTEsYVsxXT0yKihnWzNdK0VbMl0pL3gtMSxvWzBdPUxbMl0qdi95LG9bMV09RVsyXSp2L3gsRCYmKFMuY29sb3I9Q1syXSxTLnRpY2tTY2FsZT1vLFMuZGF0YUF4aXM9cixTLnNjcmVlbk9mZnNldD1hLGYuZHJhd0FycmF5cyhmLlRSSUFOR0xFUyxJLEQpKX19KCksZC51cGRhdGU9KGY9WzEsMSwtMSwtMSwxLC0xXSxwPVsxLC0xLDEsMSwtMSwtMV0sZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQudGlja3Mscj10LmJvdW5kcyxuPW5ldyBGbG9hdDMyQXJyYXkoMTgqKGVbMF0ubGVuZ3RoK2VbMV0ubGVuZ3RoKSksYT0odGhpcy5wbG90Lnplcm9MaW5lRW5hYmxlLDApLGk9W1tdLFtdXSxvPTA7bzwyOysrbylmb3IodmFyIHM9aVtvXSxsPWVbb10sYz1yW29dLHU9cltvKzJdLGg9MDtoPGwubGVuZ3RoOysraCl7dmFyIGQ9KGxbaF0ueC1jKS8odS1jKTtzLnB1c2goZCk7Zm9yKHZhciBnPTA7Zzw2OysrZyluW2ErK109ZCxuW2ErK109ZltnXSxuW2ErK109cFtnXX10aGlzLnRpY2tzPWksdGhpcy52Ym8udXBkYXRlKG4pfSksZC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy52Ym8uZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnRpY2tTaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjI4NywiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjI4OSwiZ2wtYnVmZmVyIjoyNDQsImdsLXNoYWRlciI6MzA0fV0sMjg2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9bihlLFstMSwtMSwtMSwxLDEsLTEsMSwxXSkscz1hKGUsaS5saW5lVmVydCxpLmxpbmVGcmFnKTtyZXR1cm4gbmV3IG8odCxyLHMpfTt2YXIgbj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXNoYWRlciIpLGk9dCgiLi9zaGFkZXJzIik7ZnVuY3Rpb24gbyh0LGUscil7dGhpcy5wbG90PXQsdGhpcy52Ym89ZSx0aGlzLnNoYWRlcj1yfXZhciBzLGwsYz1vLnByb3RvdHlwZTtjLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNoYWRlcjt0aGlzLnZiby5iaW5kKCksdGhpcy5zaGFkZXIuYmluZCgpLHQuYXR0cmlidXRlcy5jb29yZC5wb2ludGVyKCksdC51bmlmb3Jtcy5zY3JlZW5Cb3g9dGhpcy5wbG90LnNjcmVlbkJveH0sYy5kcmF3TGluZT0ocz1bMCwwXSxsPVswLDBdLGZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbz10aGlzLnBsb3QsYz10aGlzLnNoYWRlcix1PW8uZ2w7c1swXT10LHNbMV09ZSxsWzBdPXIsbFsxXT1uLGMudW5pZm9ybXMuc3RhcnQ9cyxjLnVuaWZvcm1zLmVuZD1sLGMudW5pZm9ybXMud2lkdGg9YSpvLnBpeGVsUmF0aW8sYy51bmlmb3Jtcy5jb2xvcj1pLHUuZHJhd0FycmF5cyh1LlRSSUFOR0xFX1NUUklQLDAsNCl9KSxjLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZiby5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjI4NywiZ2wtYnVmZmVyIjoyNDQsImdsLXNoYWRlciI6MzA0fV0sMjg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsc2xpZnkiKSxhPW4oWyJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG51bmlmb3JtIHZlYzQgY29sb3I7XG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IueHl6ICogY29sb3IudywgY29sb3Iudyk7XG59XG4iXSk7ZS5leHBvcnRzPXtsaW5lVmVydDpuKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBjb29yZDtcblxudW5pZm9ybSB2ZWM0IHNjcmVlbkJveDtcbnVuaWZvcm0gdmVjMiBzdGFydCwgZW5kO1xudW5pZm9ybSBmbG9hdCB3aWR0aDtcblxudmVjMiBwZXJwKHZlYzIgdikge1xuICByZXR1cm4gdmVjMih2LnksIC12LngpO1xufVxuXG52ZWMyIHNjcmVlbih2ZWMyIHYpIHtcbiAgcmV0dXJuIDIuMCAqICh2IC0gc2NyZWVuQm94Lnh5KSAvIChzY3JlZW5Cb3guencgLSBzY3JlZW5Cb3gueHkpIC0gMS4wO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIHZlYzIgZGVsdGEgPSBub3JtYWxpemUocGVycChzdGFydCAtIGVuZCkpO1xuICB2ZWMyIG9mZnNldCA9IG1peChzdGFydCwgZW5kLCAwLjUgKiAoY29vcmQueSsxLjApKTtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHNjcmVlbihvZmZzZXQgKyAwLjUgKiB3aWR0aCAqIGRlbHRhICogY29vcmQueCksIDAsIDEpO1xufVxuIl0pLGxpbmVGcmFnOmEsdGV4dFZlcnQ6bihbIiNkZWZpbmUgR0xTTElGWSAxXG5hdHRyaWJ1dGUgdmVjMyB0ZXh0Q29vcmRpbmF0ZTtcblxudW5pZm9ybSB2ZWMyIGRhdGFTY2FsZSwgZGF0YVNoaWZ0LCBkYXRhQXhpcywgc2NyZWVuT2Zmc2V0LCB0ZXh0U2NhbGU7XG51bmlmb3JtIGZsb2F0IGFuZ2xlO1xuXG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IGRhdGFPZmZzZXQgID0gdGV4dENvb3JkaW5hdGUuejtcbiAgdmVjMiBnbHlwaE9mZnNldCAgPSB0ZXh0Q29vcmRpbmF0ZS54eTtcbiAgbWF0MiBnbHlwaE1hdHJpeCA9IG1hdDIoY29zKGFuZ2xlKSwgc2luKGFuZ2xlKSwgLXNpbihhbmdsZSksIGNvcyhhbmdsZSkpO1xuICB2ZWMyIHNjcmVlbkNvb3JkaW5hdGUgPSBkYXRhQXhpcyAqIChkYXRhU2NhbGUgKiBkYXRhT2Zmc2V0ICsgZGF0YVNoaWZ0KSArXG4gICAgZ2x5cGhNYXRyaXggKiBnbHlwaE9mZnNldCAqIHRleHRTY2FsZSArIHNjcmVlbk9mZnNldDtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHNjcmVlbkNvb3JkaW5hdGUsIDAsIDEpO1xufVxuIl0pLHRleHRGcmFnOmEsZ3JpZFZlcnQ6bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgZGF0YUNvb3JkO1xuXG51bmlmb3JtIHZlYzIgZGF0YUF4aXMsIGRhdGFTaGlmdCwgZGF0YVNjYWxlO1xudW5pZm9ybSBmbG9hdCBsaW5lV2lkdGg7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMiBwb3MgPSBkYXRhQXhpcyAqIChkYXRhU2NhbGUgKiBkYXRhQ29vcmQueCArIGRhdGFTaGlmdCk7XG4gIHBvcyArPSAxMC4wICogZGF0YUNvb3JkLnkgKiB2ZWMyKGRhdGFBeGlzLnksIC1kYXRhQXhpcy54KSArIGRhdGFDb29yZC56ICogbGluZVdpZHRoO1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zLCAwLCAxKTtcbn1cbiJdKSxncmlkRnJhZzphLGJveFZlcnQ6bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgY29vcmQ7XG5cbnVuaWZvcm0gdmVjNCBzY3JlZW5Cb3g7XG51bmlmb3JtIHZlYzIgbG8sIGhpO1xuXG52ZWMyIHNjcmVlbih2ZWMyIHYpIHtcbiAgcmV0dXJuIDIuMCAqICh2IC0gc2NyZWVuQm94Lnh5KSAvIChzY3JlZW5Cb3guencgLSBzY3JlZW5Cb3gueHkpIC0gMS4wO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChzY3JlZW4obWl4KGxvLCBoaSwgY29vcmQpKSwgMCwgMSk7XG59XG4iXSksdGlja1ZlcnQ6bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgZGF0YUNvb3JkO1xuXG51bmlmb3JtIHZlYzIgZGF0YUF4aXMsIGRhdGFTaGlmdCwgZGF0YVNjYWxlLCBzY3JlZW5PZmZzZXQsIHRpY2tTY2FsZTtcblxudm9pZCBtYWluKCkge1xuICB2ZWMyIHBvcyA9IGRhdGFBeGlzICogKGRhdGFTY2FsZSAqIGRhdGFDb29yZC54ICsgZGF0YVNoaWZ0KTtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcyArIHRpY2tTY2FsZSpkYXRhQ29vcmQueXogKyBzY3JlZW5PZmZzZXQsIDAsIDEpO1xufVxuIl0pfX0se2dsc2xpZnk6NDExfV0sMjg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9bihlKSxpPWEoZSxzLnRleHRWZXJ0LHMudGV4dEZyYWcpO3JldHVybiBuZXcgbCh0LHIsaSl9O3ZhciBuPXQoImdsLWJ1ZmZlciIpLGE9dCgiZ2wtc2hhZGVyIiksaT10KCJ0ZXh0LWNhY2hlIiksbz10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLHM9dCgiLi9zaGFkZXJzIik7ZnVuY3Rpb24gbCh0LGUscil7dGhpcy5wbG90PXQsdGhpcy52Ym89ZSx0aGlzLnNoYWRlcj1yLHRoaXMudGlja09mZnNldD1bW10sW11dLHRoaXMudGlja1g9W1tdLFtdXSx0aGlzLmxhYmVsT2Zmc2V0PVswLDBdLHRoaXMubGFiZWxDb3VudD1bMCwwXX12YXIgYyx1LGgsZixwLGQsZz1sLnByb3RvdHlwZTtnLmRyYXdUaWNrcz0oYz1bMCwwXSx1PVswLDBdLGg9WzAsMF0sZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wbG90LHI9dGhpcy5zaGFkZXIsbj10aGlzLnRpY2tYW3RdLGE9dGhpcy50aWNrT2Zmc2V0W3RdLGk9ZS5nbCxzPWUudmlld0JveCxsPWUuZGF0YUJveCxmPWUuc2NyZWVuQm94LHA9ZS5waXhlbFJhdGlvLGQ9ZS50aWNrRW5hYmxlLGc9ZS50aWNrUGFkLHY9ZS50aWNrQ29sb3IsbT1lLnRpY2tBbmdsZSx5PWUubGFiZWxFbmFibGUseD1lLmxhYmVsUGFkLGI9ZS5sYWJlbENvbG9yLF89ZS5sYWJlbEFuZ2xlLHc9dGhpcy5sYWJlbE9mZnNldFt0XSxrPXRoaXMubGFiZWxDb3VudFt0XSxUPW8ubHQobixsW3RdKSxNPW8ubGUobixsW3QrMl0pO2NbMF09Y1sxXT0wLGNbdF09MSx1W3RdPShzWzIrdF0rc1t0XSkvKGZbMit0XS1mW3RdKS0xO3ZhciBBPTIvZlsyKygxXnQpXS1mWzFedF07dVsxXnRdPUEqc1sxXnRdLTEsZFt0XSYmKHVbMV50XS09QSpwKmdbdF0sVDxNJiZhW01dPmFbVF0mJihyLnVuaWZvcm1zLmRhdGFBeGlzPWMsci51bmlmb3Jtcy5zY3JlZW5PZmZzZXQ9dSxyLnVuaWZvcm1zLmNvbG9yPXZbdF0sci51bmlmb3Jtcy5hbmdsZT1tW3RdLGkuZHJhd0FycmF5cyhpLlRSSUFOR0xFUyxhW1RdLGFbTV0tYVtUXSkpKSx5W3RdJiZrJiYodVsxXnRdLT1BKnAqeFt0XSxyLnVuaWZvcm1zLmRhdGFBeGlzPWgsci51bmlmb3Jtcy5zY3JlZW5PZmZzZXQ9dSxyLnVuaWZvcm1zLmNvbG9yPWJbdF0sci51bmlmb3Jtcy5hbmdsZT1fW3RdLGkuZHJhd0FycmF5cyhpLlRSSUFOR0xFUyx3LGspKSx1WzFedF09QSpzWzIrKDFedCldLTEsZFt0KzJdJiYodVsxXnRdKz1BKnAqZ1t0KzJdLFQ8TSYmYVtNXT5hW1RdJiYoci51bmlmb3Jtcy5kYXRhQXhpcz1jLHIudW5pZm9ybXMuc2NyZWVuT2Zmc2V0PXUsci51bmlmb3Jtcy5jb2xvcj12W3QrMl0sci51bmlmb3Jtcy5hbmdsZT1tW3QrMl0saS5kcmF3QXJyYXlzKGkuVFJJQU5HTEVTLGFbVF0sYVtNXS1hW1RdKSkpLHlbdCsyXSYmayYmKHVbMV50XSs9QSpwKnhbdCsyXSxyLnVuaWZvcm1zLmRhdGFBeGlzPWgsci51bmlmb3Jtcy5zY3JlZW5PZmZzZXQ9dSxyLnVuaWZvcm1zLmNvbG9yPWJbdCsyXSxyLnVuaWZvcm1zLmFuZ2xlPV9bdCsyXSxpLmRyYXdBcnJheXMoaS5UUklBTkdMRVMsdyxrKSl9KSxnLmRyYXdUaXRsZT1mdW5jdGlvbigpe3ZhciB0PVswLDBdLGU9WzAsMF07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wbG90LG49dGhpcy5zaGFkZXIsYT1yLmdsLGk9ci5zY3JlZW5Cb3gsbz1yLnRpdGxlQ2VudGVyLHM9ci50aXRsZUFuZ2xlLGw9ci50aXRsZUNvbG9yLGM9ci5waXhlbFJhdGlvO2lmKHRoaXMudGl0bGVDb3VudCl7Zm9yKHZhciB1PTA7dTwyOysrdSllW3VdPTIqKG9bdV0qYy1pW3VdKS8oaVsyK3VdLWlbdV0pLTE7bi5iaW5kKCksbi51bmlmb3Jtcy5kYXRhQXhpcz10LG4udW5pZm9ybXMuc2NyZWVuT2Zmc2V0PWUsbi51bmlmb3Jtcy5hbmdsZT1zLG4udW5pZm9ybXMuY29sb3I9bCxhLmRyYXdBcnJheXMoYS5UUklBTkdMRVMsdGhpcy50aXRsZU9mZnNldCx0aGlzLnRpdGxlQ291bnQpfX19KCksZy5iaW5kPShmPVswLDBdLHA9WzAsMF0sZD1bMCwwXSxmdW5jdGlvbigpe3ZhciB0PXRoaXMucGxvdCxlPXRoaXMuc2hhZGVyLHI9dC5fdGlja0JvdW5kcyxuPXQuZGF0YUJveCxhPXQuc2NyZWVuQm94LGk9dC52aWV3Qm94O2UuYmluZCgpO2Zvcih2YXIgbz0wO288MjsrK28pe3ZhciBzPXJbb10sbD1yW28rMl0tcyxjPS41KihuW28rMl0rbltvXSksdT1uW28rMl0tbltvXSxoPWlbb10sZz1pW28rMl0taCx2PWFbb10sbT1hW28rMl0tdjtwW29dPTIqbC91KmcvbSxmW29dPTIqKHMtYykvdSpnL219ZFsxXT0yKnQucGl4ZWxSYXRpby8oYVszXS1hWzFdKSxkWzBdPWRbMV0qKGFbM10tYVsxXSkvKGFbMl0tYVswXSksZS51bmlmb3Jtcy5kYXRhU2NhbGU9cCxlLnVuaWZvcm1zLmRhdGFTaGlmdD1mLGUudW5pZm9ybXMudGV4dFNjYWxlPWQsdGhpcy52Ym8uYmluZCgpLGUuYXR0cmlidXRlcy50ZXh0Q29vcmRpbmF0ZS5wb2ludGVyKCl9KSxnLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxvLHM9W10sbD10LnRpY2tzLGM9dC5ib3VuZHM7Zm9yKG89MDtvPDI7KytvKXt2YXIgdT1bTWF0aC5mbG9vcihzLmxlbmd0aC8zKV0saD1bLTEvMF0sZj1sW29dO2ZvcihlPTA7ZTxmLmxlbmd0aDsrK2Upe3ZhciBwPWZbZV0sZD1wLngsZz1wLnRleHQsdj1wLmZvbnR8fCJzYW5zLXNlcmlmIjthPXAuZm9udFNpemV8fDEyO2Zvcih2YXIgbT0xLyhjW28rMl0tY1tvXSkseT1jW29dLHg9Zy5zcGxpdCgiXG4iKSxiPTA7Yjx4Lmxlbmd0aDtiKyspZm9yKG49aSh2LHhbYl0pLmRhdGEscj0wO3I8bi5sZW5ndGg7cis9MilzLnB1c2gobltyXSphLC1uW3IrMV0qYS1iKmEqMS4yLChkLXkpKm0pO3UucHVzaChNYXRoLmZsb29yKHMubGVuZ3RoLzMpKSxoLnB1c2goZCl9dGhpcy50aWNrT2Zmc2V0W29dPXUsdGhpcy50aWNrWFtvXT1ofWZvcihvPTA7bzwyOysrbyl7Zm9yKHRoaXMubGFiZWxPZmZzZXRbb109TWF0aC5mbG9vcihzLmxlbmd0aC8zKSxuPWkodC5sYWJlbEZvbnRbb10sdC5sYWJlbHNbb10se3RleHRBbGlnbjoiY2VudGVyIn0pLmRhdGEsYT10LmxhYmVsU2l6ZVtvXSxlPTA7ZTxuLmxlbmd0aDtlKz0yKXMucHVzaChuW2VdKmEsLW5bZSsxXSphLDApO3RoaXMubGFiZWxDb3VudFtvXT1NYXRoLmZsb29yKHMubGVuZ3RoLzMpLXRoaXMubGFiZWxPZmZzZXRbb119Zm9yKHRoaXMudGl0bGVPZmZzZXQ9TWF0aC5mbG9vcihzLmxlbmd0aC8zKSxuPWkodC50aXRsZUZvbnQsdC50aXRsZSkuZGF0YSxhPXQudGl0bGVTaXplLGU9MDtlPG4ubGVuZ3RoO2UrPTIpcy5wdXNoKG5bZV0qYSwtbltlKzFdKmEsMCk7dGhpcy50aXRsZUNvdW50PU1hdGguZmxvb3Iocy5sZW5ndGgvMyktdGhpcy50aXRsZU9mZnNldCx0aGlzLnZiby51cGRhdGUocyl9LGcuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMudmJvLmRpc3Bvc2UoKSx0aGlzLnNoYWRlci5kaXNwb3NlKCl9fSx7Ii4vc2hhZGVycyI6Mjg3LCJiaW5hcnktc2VhcmNoLWJvdW5kcyI6Mjg5LCJnbC1idWZmZXIiOjI0NCwiZ2wtc2hhZGVyIjozMDQsInRleHQtY2FjaGUiOjUzNX1dLDI4OTpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsxMTNdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1cDoxMTN9XSwyOTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2wscj1uKGUsW2UuZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF0pLGM9bmV3IGwoZSxyKTtyZXR1cm4gYy5ncmlkPWEoYyksYy50ZXh0PWkoYyksYy5saW5lPW8oYyksYy5ib3g9cyhjKSxjLnVwZGF0ZSh0KSxjfTt2YXIgbj10KCJnbC1zZWxlY3Qtc3RhdGljIiksYT10KCIuL2xpYi9ncmlkIiksaT10KCIuL2xpYi90ZXh0Iiksbz10KCIuL2xpYi9saW5lIikscz10KCIuL2xpYi9ib3giKTtmdW5jdGlvbiBsKHQsZSl7dGhpcy5nbD10LHRoaXMucGlja0J1ZmZlcj1lLHRoaXMuc2NyZWVuQm94PVswLDAsdC5kcmF3aW5nQnVmZmVyV2lkdGgsdC5kcmF3aW5nQnVmZmVySGVpZ2h0XSx0aGlzLnZpZXdCb3g9WzAsMCwwLDBdLHRoaXMuZGF0YUJveD1bLTEwLC0xMCwxMCwxMF0sdGhpcy5ncmlkTGluZUVuYWJsZT1bITAsITBdLHRoaXMuZ3JpZExpbmVXaWR0aD1bMSwxXSx0aGlzLmdyaWRMaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMucGl4ZWxSYXRpbz0xLHRoaXMudGlja01hcmtMZW5ndGg9WzAsMCwwLDBdLHRoaXMudGlja01hcmtXaWR0aD1bMCwwLDAsMF0sdGhpcy50aWNrTWFya0NvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMudGlja1BhZD1bMTUsMTUsMTUsMTVdLHRoaXMudGlja0FuZ2xlPVswLDAsMCwwXSx0aGlzLnRpY2tFbmFibGU9WyEwLCEwLCEwLCEwXSx0aGlzLnRpY2tDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxhYmVsUGFkPVsxNSwxNSwxNSwxNV0sdGhpcy5sYWJlbEFuZ2xlPVswLE1hdGguUEkvMiwwLDMqTWF0aC5QSS8yXSx0aGlzLmxhYmVsRW5hYmxlPVshMCwhMCwhMCwhMF0sdGhpcy5sYWJlbENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMudGl0bGVDZW50ZXI9WzAsMF0sdGhpcy50aXRsZUVuYWJsZT0hMCx0aGlzLnRpdGxlQW5nbGU9MCx0aGlzLnRpdGxlQ29sb3I9WzAsMCwwLDFdLHRoaXMuYm9yZGVyQ29sb3I9WzAsMCwwLDBdLHRoaXMuYmFja2dyb3VuZENvbG9yPVswLDAsMCwwXSx0aGlzLnplcm9MaW5lRW5hYmxlPVshMCwhMF0sdGhpcy56ZXJvTGluZVdpZHRoPVs0LDRdLHRoaXMuemVyb0xpbmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5ib3JkZXJMaW5lRW5hYmxlPVshMCwhMCwhMCwhMF0sdGhpcy5ib3JkZXJMaW5lV2lkdGg9WzIsMiwyLDJdLHRoaXMuYm9yZGVyTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuZ3JpZD1udWxsLHRoaXMudGV4dD1udWxsLHRoaXMubGluZT1udWxsLHRoaXMuYm94PW51bGwsdGhpcy5vYmplY3RzPVtdLHRoaXMub3ZlcmxheXM9W10sdGhpcy5fdGlja0JvdW5kcz1bMS8wLDEvMCwtMS8wLC0xLzBdLHRoaXMuc3RhdGljPSExLHRoaXMuZGlydHk9ITEsdGhpcy5waWNrRGlydHk9ITEsdGhpcy5waWNrRGVsYXk9MTIwLHRoaXMucGlja1JhZGl1cz0xMCx0aGlzLl9waWNrVGltZW91dD1udWxsLHRoaXMuX2RyYXdQaWNrPXRoaXMuZHJhd1BpY2suYmluZCh0aGlzKSx0aGlzLl9kZXB0aENvdW50ZXI9MH12YXIgYz1sLnByb3RvdHlwZTtmdW5jdGlvbiB1KHQpe2Zvcih2YXIgZT10LnNsaWNlKCkscj0wO3I8ZS5sZW5ndGg7KytyKWVbcl09ZVtyXS5zbGljZSgpO3JldHVybiBlfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gdC54LWUueH1jLnNldERpcnR5PWZ1bmN0aW9uKCl7dGhpcy5kaXJ0eT10aGlzLnBpY2tEaXJ0eT0hMH0sYy5zZXRPdmVybGF5RGlydHk9ZnVuY3Rpb24oKXt0aGlzLmRpcnR5PSEwfSxjLm5leHREZXB0aFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlcHRoQ291bnRlcisrLzY1NTM2fSxjLmRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdsLGU9dGhpcy5zY3JlZW5Cb3gscj10aGlzLnZpZXdCb3gsbj10aGlzLmRhdGFCb3gsYT10aGlzLnBpeGVsUmF0aW8saT10aGlzLmdyaWQsbz10aGlzLmxpbmUscz10aGlzLnRleHQsbD10aGlzLm9iamVjdHM7aWYodGhpcy5fZGVwdGhDb3VudGVyPTAsdGhpcy5waWNrRGlydHkmJih0aGlzLl9waWNrVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX3BpY2tUaW1lb3V0KSx0aGlzLnBpY2tEaXJ0eT0hMSx0aGlzLl9waWNrVGltZW91dD1zZXRUaW1lb3V0KHRoaXMuX2RyYXdQaWNrLHRoaXMucGlja0RlbGF5KSksdGhpcy5kaXJ0eSl7aWYodGhpcy5kaXJ0eT0hMSx0LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLG51bGwpLHQuZW5hYmxlKHQuU0NJU1NPUl9URVNUKSx0LmRpc2FibGUodC5ERVBUSF9URVNUKSx0LmRlcHRoRnVuYyh0LkxFU1MpLHQuZGVwdGhNYXNrKCExKSx0LmVuYWJsZSh0LkJMRU5EKSx0LmJsZW5kRXF1YXRpb24odC5GVU5DX0FERCx0LkZVTkNfQUREKSx0LmJsZW5kRnVuYyh0Lk9ORSx0Lk9ORV9NSU5VU19TUkNfQUxQSEEpLHRoaXMuYm9yZGVyQ29sb3Ipe3Quc2Npc3NvcihlWzBdLGVbMV0sZVsyXS1lWzBdLGVbM10tZVsxXSk7dmFyIGM9dGhpcy5ib3JkZXJDb2xvcjt0LmNsZWFyQ29sb3IoY1swXSpjWzNdLGNbMV0qY1szXSxjWzJdKmNbM10sY1szXSksdC5jbGVhcih0LkNPTE9SX0JVRkZFUl9CSVR8dC5ERVBUSF9CVUZGRVJfQklUKX10LnNjaXNzb3IoclswXSxyWzFdLHJbMl0tclswXSxyWzNdLXJbMV0pLHQudmlld3BvcnQoclswXSxyWzFdLHJbMl0tclswXSxyWzNdLXJbMV0pO3ZhciB1PXRoaXMuYmFja2dyb3VuZENvbG9yO3QuY2xlYXJDb2xvcih1WzBdKnVbM10sdVsxXSp1WzNdLHVbMl0qdVszXSx1WzNdKSx0LmNsZWFyKHQuQ09MT1JfQlVGRkVSX0JJVCksaS5kcmF3KCk7dmFyIGg9dGhpcy56ZXJvTGluZUVuYWJsZSxmPXRoaXMuemVyb0xpbmVDb2xvcixwPXRoaXMuemVyb0xpbmVXaWR0aDtpZihoWzBdfHxoWzFdKXtvLmJpbmQoKTtmb3IodmFyIGQ9MDtkPDI7KytkKWlmKGhbZF0mJm5bZF08PTAmJm5bZCsyXT49MCl7dmFyIGc9ZVtkXS1uW2RdKihlW2QrMl0tZVtkXSkvKG5bZCsyXS1uW2RdKTswPT09ZD9vLmRyYXdMaW5lKGcsZVsxXSxnLGVbM10scFtkXSxmW2RdKTpvLmRyYXdMaW5lKGVbMF0sZyxlWzJdLGcscFtkXSxmW2RdKX19Zm9yKGQ9MDtkPGwubGVuZ3RoOysrZClsW2RdLmRyYXcoKTt0LnZpZXdwb3J0KGVbMF0sZVsxXSxlWzJdLWVbMF0sZVszXS1lWzFdKSx0LnNjaXNzb3IoZVswXSxlWzFdLGVbMl0tZVswXSxlWzNdLWVbMV0pLHRoaXMuZ3JpZC5kcmF3VGlja01hcmtzKCksby5iaW5kKCk7dmFyIHY9dGhpcy5ib3JkZXJMaW5lRW5hYmxlLG09dGhpcy5ib3JkZXJMaW5lV2lkdGgseT10aGlzLmJvcmRlckxpbmVDb2xvcjtmb3IodlsxXSYmby5kcmF3TGluZShyWzBdLHJbMV0tLjUqbVsxXSphLHJbMF0sclszXSsuNSptWzNdKmEsbVsxXSx5WzFdKSx2WzBdJiZvLmRyYXdMaW5lKHJbMF0tLjUqbVswXSphLHJbMV0sclsyXSsuNSptWzJdKmEsclsxXSxtWzBdLHlbMF0pLHZbM10mJm8uZHJhd0xpbmUoclsyXSxyWzFdLS41Km1bMV0qYSxyWzJdLHJbM10rLjUqbVszXSphLG1bM10seVszXSksdlsyXSYmby5kcmF3TGluZShyWzBdLS41Km1bMF0qYSxyWzNdLHJbMl0rLjUqbVsyXSphLHJbM10sbVsyXSx5WzJdKSxzLmJpbmQoKSxkPTA7ZDwyOysrZClzLmRyYXdUaWNrcyhkKTt0aGlzLnRpdGxlRW5hYmxlJiZzLmRyYXdUaXRsZSgpO3ZhciB4PXRoaXMub3ZlcmxheXM7Zm9yKGQ9MDtkPHgubGVuZ3RoOysrZCl4W2RdLmRyYXcoKTt0LmRpc2FibGUodC5TQ0lTU09SX1RFU1QpLHQuZGlzYWJsZSh0LkJMRU5EKSx0LmRlcHRoTWFzayghMCl9fSxjLmRyYXdQaWNrPWZ1bmN0aW9uKCl7aWYoIXRoaXMuc3RhdGljKXt2YXIgdD10aGlzLnBpY2tCdWZmZXI7dGhpcy5nbCx0aGlzLl9waWNrVGltZW91dD1udWxsLHQuYmVnaW4oKTtmb3IodmFyIGU9MSxyPXRoaXMub2JqZWN0cyxuPTA7bjxyLmxlbmd0aDsrK24pZT1yW25dLmRyYXdQaWNrKGUpO3QuZW5kKCl9fSxjLnBpY2s9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5zdGF0aWMpe3ZhciByPXRoaXMucGl4ZWxSYXRpbyxuPXRoaXMucGlja1BpeGVsUmF0aW8sYT10aGlzLnZpZXdCb3gsaT0wfE1hdGgucm91bmQoKHQtYVswXS9yKSpuKSxvPTB8TWF0aC5yb3VuZCgoZS1hWzFdL3IpKm4pLHM9dGhpcy5waWNrQnVmZmVyLnF1ZXJ5KGksbyx0aGlzLnBpY2tSYWRpdXMpO2lmKCFzKXJldHVybiBudWxsO2Zvcih2YXIgbD1zLmlkKyhzLnZhbHVlWzBdPDw4KSsocy52YWx1ZVsxXTw8MTYpKyhzLnZhbHVlWzJdPDwyNCksYz10aGlzLm9iamVjdHMsdT0wO3U8Yy5sZW5ndGg7Kyt1KXt2YXIgaD1jW3VdLnBpY2soaSxvLGwpO2lmKGgpcmV0dXJuIGh9cmV0dXJuIG51bGx9fSxjLnNldFNjcmVlbkJveD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnNjcmVlbkJveCxyPXRoaXMucGl4ZWxSYXRpbztlWzBdPTB8TWF0aC5yb3VuZCh0WzBdKnIpLGVbMV09MHxNYXRoLnJvdW5kKHRbMV0qciksZVsyXT0wfE1hdGgucm91bmQodFsyXSpyKSxlWzNdPTB8TWF0aC5yb3VuZCh0WzNdKnIpLHRoaXMuc2V0RGlydHkoKX0sYy5zZXREYXRhQm94PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGF0YUJveDsoZVswXSE9PXRbMF18fGVbMV0hPT10WzFdfHxlWzJdIT09dFsyXXx8ZVszXSE9PXRbM10pJiYoZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLHRoaXMuc2V0RGlydHkoKSl9LGMuc2V0Vmlld0JveD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBpeGVsUmF0aW8scj10aGlzLnZpZXdCb3g7clswXT0wfE1hdGgucm91bmQodFswXSplKSxyWzFdPTB8TWF0aC5yb3VuZCh0WzFdKmUpLHJbMl09MHxNYXRoLnJvdW5kKHRbMl0qZSksclszXT0wfE1hdGgucm91bmQodFszXSplKTt2YXIgbj10aGlzLnBpY2tQaXhlbFJhdGlvO3RoaXMucGlja0J1ZmZlci5zaGFwZT1bMHxNYXRoLnJvdW5kKCh0WzJdLXRbMF0pKm4pLDB8TWF0aC5yb3VuZCgodFszXS10WzFdKSpuKV0sdGhpcy5zZXREaXJ0eSgpfSxjLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9O3ZhciBlPXRoaXMuZ2w7dGhpcy5waXhlbFJhdGlvPXQucGl4ZWxSYXRpb3x8MTt2YXIgcj10aGlzLnBpeGVsUmF0aW87dGhpcy5waWNrUGl4ZWxSYXRpbz1NYXRoLm1heChyLDEpLHRoaXMuc2V0U2NyZWVuQm94KHQuc2NyZWVuQm94fHxbMCwwLGUuZHJhd2luZ0J1ZmZlcldpZHRoL3IsZS5kcmF3aW5nQnVmZmVySGVpZ2h0L3JdKTt0aGlzLnNjcmVlbkJveDt0aGlzLnNldFZpZXdCb3godC52aWV3Qm94fHxbLjEyNSoodGhpcy5zY3JlZW5Cb3hbMl0tdGhpcy5zY3JlZW5Cb3hbMF0pL3IsLjEyNSoodGhpcy5zY3JlZW5Cb3hbM10tdGhpcy5zY3JlZW5Cb3hbMV0pL3IsLjg3NSoodGhpcy5zY3JlZW5Cb3hbMl0tdGhpcy5zY3JlZW5Cb3hbMF0pL3IsLjg3NSoodGhpcy5zY3JlZW5Cb3hbM10tdGhpcy5zY3JlZW5Cb3hbMV0pL3JdKTt2YXIgbj10aGlzLnZpZXdCb3gsYT0oblsyXS1uWzBdKS8oblszXS1uWzFdKTt0aGlzLnNldERhdGFCb3godC5kYXRhQm94fHxbLTEwLC0xMC9hLDEwLDEwL2FdKSx0aGlzLmJvcmRlckNvbG9yPSExIT09dC5ib3JkZXJDb2xvciYmKHQuYm9yZGVyQ29sb3J8fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLmJhY2tncm91bmRDb2xvcj0odC5iYWNrZ3JvdW5kQ29sb3J8fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLmdyaWRMaW5lRW5hYmxlPSh0LmdyaWRMaW5lRW5hYmxlfHxbITAsITBdKS5zbGljZSgpLHRoaXMuZ3JpZExpbmVXaWR0aD0odC5ncmlkTGluZVdpZHRofHxbMSwxXSkuc2xpY2UoKSx0aGlzLmdyaWRMaW5lQ29sb3I9dSh0LmdyaWRMaW5lQ29sb3J8fFtbLjUsLjUsLjUsMV0sWy41LC41LC41LDFdXSksdGhpcy56ZXJvTGluZUVuYWJsZT0odC56ZXJvTGluZUVuYWJsZXx8WyEwLCEwXSkuc2xpY2UoKSx0aGlzLnplcm9MaW5lV2lkdGg9KHQuemVyb0xpbmVXaWR0aHx8WzQsNF0pLnNsaWNlKCksdGhpcy56ZXJvTGluZUNvbG9yPXUodC56ZXJvTGluZUNvbG9yfHxbWzAsMCwwLDFdLFswLDAsMCwxXV0pLHRoaXMudGlja01hcmtMZW5ndGg9KHQudGlja01hcmtMZW5ndGh8fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLnRpY2tNYXJrV2lkdGg9KHQudGlja01hcmtXaWR0aHx8WzAsMCwwLDBdKS5zbGljZSgpLHRoaXMudGlja01hcmtDb2xvcj11KHQudGlja01hcmtDb2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0pLHRoaXMudGl0bGVDZW50ZXI9KHQudGl0bGVDZW50ZXJ8fFsuNSooblswXStuWzJdKS9yLChuWzNdKzEyMCkvcl0pLnNsaWNlKCksdGhpcy50aXRsZUVuYWJsZT0hKCJ0aXRsZUVuYWJsZSJpbiB0JiYhdC50aXRsZUVuYWJsZSksdGhpcy50aXRsZUFuZ2xlPXQudGl0bGVBbmdsZXx8MCx0aGlzLnRpdGxlQ29sb3I9KHQudGl0bGVDb2xvcnx8WzAsMCwwLDFdKS5zbGljZSgpLHRoaXMubGFiZWxQYWQ9KHQubGFiZWxQYWR8fFsxNSwxNSwxNSwxNV0pLnNsaWNlKCksdGhpcy5sYWJlbEFuZ2xlPSh0LmxhYmVsQW5nbGV8fFswLE1hdGguUEkvMiwwLDMqTWF0aC5QSS8yXSkuc2xpY2UoKSx0aGlzLmxhYmVsRW5hYmxlPSh0LmxhYmVsRW5hYmxlfHxbITAsITAsITAsITBdKS5zbGljZSgpLHRoaXMubGFiZWxDb2xvcj11KHQubGFiZWxDb2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0pLHRoaXMudGlja1BhZD0odC50aWNrUGFkfHxbMTUsMTUsMTUsMTVdKS5zbGljZSgpLHRoaXMudGlja0FuZ2xlPSh0LnRpY2tBbmdsZXx8WzAsMCwwLDBdKS5zbGljZSgpLHRoaXMudGlja0VuYWJsZT0odC50aWNrRW5hYmxlfHxbITAsITAsITAsITBdKS5zbGljZSgpLHRoaXMudGlja0NvbG9yPXUodC50aWNrQ29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dKSx0aGlzLmJvcmRlckxpbmVFbmFibGU9KHQuYm9yZGVyTGluZUVuYWJsZXx8WyEwLCEwLCEwLCEwXSkuc2xpY2UoKSx0aGlzLmJvcmRlckxpbmVXaWR0aD0odC5ib3JkZXJMaW5lV2lkdGh8fFsyLDIsMiwyXSkuc2xpY2UoKSx0aGlzLmJvcmRlckxpbmVDb2xvcj11KHQuYm9yZGVyTGluZUNvbG9yfHxbWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSk7dmFyIGk9dC50aWNrc3x8W1tdLFtdXSxvPXRoaXMuX3RpY2tCb3VuZHM7b1swXT1vWzFdPTEvMCxvWzJdPW9bM109LTEvMDtmb3IodmFyIHM9MDtzPDI7KytzKXt2YXIgbD1pW3NdLnNsaWNlKDApOzAhPT1sLmxlbmd0aCYmKGwuc29ydChoKSxvW3NdPU1hdGgubWluKG9bc10sbFswXS54KSxvW3MrMl09TWF0aC5tYXgob1tzKzJdLGxbbC5sZW5ndGgtMV0ueCkpfXRoaXMuZ3JpZC51cGRhdGUoe2JvdW5kczpvLHRpY2tzOml9KSx0aGlzLnRleHQudXBkYXRlKHtib3VuZHM6byx0aWNrczppLGxhYmVsczp0LmxhYmVsc3x8WyJ4IiwieSJdLGxhYmVsU2l6ZTp0LmxhYmVsU2l6ZXx8WzEyLDEyXSxsYWJlbEZvbnQ6dC5sYWJlbEZvbnR8fFsic2Fucy1zZXJpZiIsInNhbnMtc2VyaWYiXSx0aXRsZTp0LnRpdGxlfHwiIix0aXRsZVNpemU6dC50aXRsZVNpemV8fDE4LHRpdGxlRm9udDp0LnRpdGxlRm9udHx8InNhbnMtc2VyaWYifSksdGhpcy5zdGF0aWM9ISF0LnN0YXRpYyx0aGlzLnNldERpcnR5KCl9LGMuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuYm94LmRpc3Bvc2UoKSx0aGlzLmdyaWQuZGlzcG9zZSgpLHRoaXMudGV4dC5kaXNwb3NlKCksdGhpcy5saW5lLmRpc3Bvc2UoKTtmb3IodmFyIHQ9dGhpcy5vYmplY3RzLmxlbmd0aC0xO3Q+PTA7LS10KXRoaXMub2JqZWN0c1t0XS5kaXNwb3NlKCk7dGhpcy5vYmplY3RzLmxlbmd0aD0wO2Zvcih0PXRoaXMub3ZlcmxheXMubGVuZ3RoLTE7dD49MDstLXQpdGhpcy5vdmVybGF5c1t0XS5kaXNwb3NlKCk7dGhpcy5vdmVybGF5cy5sZW5ndGg9MCx0aGlzLmdsPW51bGx9LGMuYWRkT2JqZWN0PWZ1bmN0aW9uKHQpe3RoaXMub2JqZWN0cy5pbmRleE9mKHQpPDAmJih0aGlzLm9iamVjdHMucHVzaCh0KSx0aGlzLnNldERpcnR5KCkpfSxjLnJlbW92ZU9iamVjdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5vYmplY3RzLHI9MDtyPGUubGVuZ3RoOysrcilpZihlW3JdPT09dCl7ZS5zcGxpY2UociwxKSx0aGlzLnNldERpcnR5KCk7YnJlYWt9fSxjLmFkZE92ZXJsYXk9ZnVuY3Rpb24odCl7dGhpcy5vdmVybGF5cy5pbmRleE9mKHQpPDAmJih0aGlzLm92ZXJsYXlzLnB1c2godCksdGhpcy5zZXRPdmVybGF5RGlydHkoKSl9LGMucmVtb3ZlT3ZlcmxheT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5vdmVybGF5cyxyPTA7cjxlLmxlbmd0aDsrK3IpaWYoZVtyXT09PXQpe2Uuc3BsaWNlKHIsMSksdGhpcy5zZXRPdmVybGF5RGlydHkoKTticmVha319fSx7Ii4vbGliL2JveCI6Mjg0LCIuL2xpYi9ncmlkIjoyODUsIi4vbGliL2xpbmUiOjI4NiwiLi9saWIvdGV4dCI6Mjg4LCJnbC1zZWxlY3Qtc3RhdGljIjozMDN9XSwyOTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dD10fHxkb2N1bWVudC5ib2R5LGU9ZXx8e307dmFyIHI9Wy4wMSwxLzBdOyJkaXN0YW5jZUxpbWl0cyJpbiBlJiYoclswXT1lLmRpc3RhbmNlTGltaXRzWzBdLHJbMV09ZS5kaXN0YW5jZUxpbWl0c1sxXSk7Inpvb21NaW4iaW4gZSYmKHJbMF09ZS56b29tTWluKTsiem9vbU1heCJpbiBlJiYoclsxXT1lLnpvb21NYXgpO3ZhciBjPWEoe2NlbnRlcjplLmNlbnRlcnx8WzAsMCwwXSx1cDplLnVwfHxbMCwxLDBdLGV5ZTplLmV5ZXx8WzAsMCwxMF0sbW9kZTplLm1vZGV8fCJvcmJpdCIsZGlzdGFuY2VMaW1pdHM6cn0pLHU9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLGg9MCxmPXQuY2xpZW50V2lkdGgscD10LmNsaWVudEhlaWdodCxkPXtrZXlCaW5kaW5nTW9kZToicm90YXRlIixlbmFibGVXaGVlbDohMCx2aWV3OmMsZWxlbWVudDp0LGRlbGF5OmUuZGVsYXl8fDE2LHJvdGF0ZVNwZWVkOmUucm90YXRlU3BlZWR8fDEsem9vbVNwZWVkOmUuem9vbVNwZWVkfHwxLHRyYW5zbGF0ZVNwZWVkOmUudHJhbnNsYXRlU3BlZWR8fDEsZmxpcFg6ISFlLmZsaXBYLGZsaXBZOiEhZS5mbGlwWSxtb2RlczpjLm1vZGVzLF9vcnRobzplLl9vcnRob3x8ZS5wcm9qZWN0aW9uJiYib3J0aG9ncmFwaGljIj09PWUucHJvamVjdGlvbi50eXBlfHwhMSx0aWNrOmZ1bmN0aW9uKCl7dmFyIGU9bigpLHI9dGhpcy5kZWxheSxhPWUtMipyO2MuaWRsZShlLXIpLGMucmVjYWxjTWF0cml4KGEpLGMuZmx1c2goZS0oMTAwKzIqcikpO2Zvcih2YXIgaT0hMCxvPWMuY29tcHV0ZWRNYXRyaXgscz0wO3M8MTY7KytzKWk9aSYmdVtzXT09PW9bc10sdVtzXT1vW3NdO3ZhciBsPXQuY2xpZW50V2lkdGg9PT1mJiZ0LmNsaWVudEhlaWdodD09PXA7cmV0dXJuIGY9dC5jbGllbnRXaWR0aCxwPXQuY2xpZW50SGVpZ2h0LGk/IWw6KGg9TWF0aC5leHAoYy5jb21wdXRlZFJhZGl1c1swXSksITApfSxsb29rQXQ6ZnVuY3Rpb24odCxlLHIpe2MubG9va0F0KGMubGFzdFQoKSx0LGUscil9LHJvdGF0ZTpmdW5jdGlvbih0LGUscil7Yy5yb3RhdGUoYy5sYXN0VCgpLHQsZSxyKX0scGFuOmZ1bmN0aW9uKHQsZSxyKXtjLnBhbihjLmxhc3RUKCksdCxlLHIpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlLHIpe2MudHJhbnNsYXRlKGMubGFzdFQoKSx0LGUscil9fTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7bWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5jb21wdXRlZE1hdHJpeH0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBjLnNldE1hdHJpeChjLmxhc3RUKCksdCksYy5jb21wdXRlZE1hdHJpeH0sZW51bWVyYWJsZTohMH0sbW9kZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuZ2V0TW9kZSgpfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9Yy5jb21wdXRlZFVwLnNsaWNlKCkscj1jLmNvbXB1dGVkRXllLnNsaWNlKCksYT1jLmNvbXB1dGVkQ2VudGVyLnNsaWNlKCk7aWYoYy5zZXRNb2RlKHQpLCJ0dXJudGFibGUiPT09dCl7dmFyIGk9bigpO2MuX2FjdGl2ZS5sb29rQXQoaSxyLGEsZSksYy5fYWN0aXZlLmxvb2tBdChpKzUwMCxyLGEsWzAsMCwxXSksYy5fYWN0aXZlLmZsdXNoKGkpfXJldHVybiBjLmdldE1vZGUoKX0sZW51bWVyYWJsZTohMH0sY2VudGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5jb21wdXRlZENlbnRlcn0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBjLmxvb2tBdChjLmxhc3RUKCksbnVsbCx0KSxjLmNvbXB1dGVkQ2VudGVyfSxlbnVtZXJhYmxlOiEwfSxleWU6e2dldDpmdW5jdGlvbigpe3JldHVybiBjLmNvbXB1dGVkRXllfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGMubG9va0F0KGMubGFzdFQoKSx0KSxjLmNvbXB1dGVkRXllfSxlbnVtZXJhYmxlOiEwfSx1cDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuY29tcHV0ZWRVcH0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBjLmxvb2tBdChjLmxhc3RUKCksbnVsbCxudWxsLHQpLGMuY29tcHV0ZWRVcH0sZW51bWVyYWJsZTohMH0sZGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiBofSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGMuc2V0RGlzdGFuY2UoYy5sYXN0VCgpLHQpLHR9LGVudW1lcmFibGU6ITB9LGRpc3RhbmNlTGltaXRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5nZXREaXN0YW5jZUxpbWl0cyhyKX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBjLnNldERpc3RhbmNlTGltaXRzKHQpLHR9LGVudW1lcmFibGU6ITB9fSksdC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsZnVuY3Rpb24odCl7cmV0dXJuIHQucHJldmVudERlZmF1bHQoKSwhMX0pLGQuX2xhc3RYPS0xLGQuX2xhc3RZPS0xLGQuX2xhc3RNb2RzPXtzaGlmdDohMSxjb250cm9sOiExLGFsdDohMSxtZXRhOiExfSxkLmVuYWJsZU1vdXNlTGlzdGVuZXJzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHIsYSxpKXt2YXIgbz1kLmtleUJpbmRpbmdNb2RlO2lmKCExIT09byl7dmFyIHM9InJvdGF0ZSI9PT1vLGw9InBhbiI9PT1vLHU9Inpvb20iPT09byxmPSEhaS5jb250cm9sLHA9ISFpLmFsdCxnPSEhaS5zaGlmdCx2PSEhKDEmZSksbT0hISgyJmUpLHk9ISEoNCZlKSx4PTEvdC5jbGllbnRIZWlnaHQsYj14KihyLWQuX2xhc3RYKSxfPXgqKGEtZC5fbGFzdFkpLHc9ZC5mbGlwWD8xOi0xLGs9ZC5mbGlwWT8xOi0xLFQ9TWF0aC5QSSpkLnJvdGF0ZVNwZWVkLE09bigpO2lmKC0xIT09ZC5fbGFzdFgmJi0xIT09ZC5fbGFzdFkmJigocyYmdiYmIWYmJiFwJiYhZ3x8diYmIWYmJiFwJiZnKSYmYy5yb3RhdGUoTSx3KlQqYiwtaypUKl8sMCksKGwmJnYmJiFmJiYhcCYmIWd8fG18fHYmJmYmJiFwJiYhZykmJmMucGFuKE0sLWQudHJhbnNsYXRlU3BlZWQqYipoLGQudHJhbnNsYXRlU3BlZWQqXypoLDApLHUmJnYmJiFmJiYhcCYmIWd8fHl8fHYmJiFmJiZwJiYhZykpe3ZhciBBPS1kLnpvb21TcGVlZCpfL3dpbmRvdy5pbm5lckhlaWdodCooTS1jLmxhc3RUKCkpKjEwMDtjLnBhbihNLDAsMCxoKihNYXRoLmV4cChBKS0xKSl9cmV0dXJuIGQuX2xhc3RYPXIsZC5fbGFzdFk9YSxkLl9sYXN0TW9kcz1pLCEwfX1kLm1vdXNlTGlzdGVuZXI9aSh0LGUpLHQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsZnVuY3Rpb24ocil7dmFyIG49cyhyLmNoYW5nZWRUb3VjaGVzWzBdLHQpO2UoMCxuWzBdLG5bMV0sZC5fbGFzdE1vZHMpLGUoMSxuWzBdLG5bMV0sZC5fbGFzdE1vZHMpLHIucHJldmVudERlZmF1bHQoKX0sISFsJiZ7cGFzc2l2ZTohMX0pLHQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixmdW5jdGlvbihyKXt2YXIgbj1zKHIuY2hhbmdlZFRvdWNoZXNbMF0sdCk7ZSgxLG5bMF0sblsxXSxkLl9sYXN0TW9kcyksci5wcmV2ZW50RGVmYXVsdCgpfSwhIWwmJntwYXNzaXZlOiExfSksdC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsZnVuY3Rpb24odCl7ZSgwLGQuX2xhc3RYLGQuX2xhc3RZLGQuX2xhc3RNb2RzKSx0LnByZXZlbnREZWZhdWx0KCl9LCEhbCYme3Bhc3NpdmU6ITF9KSxkLndoZWVsTGlzdGVuZXI9byh0LGZ1bmN0aW9uKHQsZSl7aWYoITEhPT1kLmtleUJpbmRpbmdNb2RlJiZkLmVuYWJsZVdoZWVsKXt2YXIgcj1kLmZsaXBYPzE6LTEsYT1kLmZsaXBZPzE6LTEsaT1uKCk7aWYoTWF0aC5hYnModCk+TWF0aC5hYnMoZSkpYy5yb3RhdGUoaSwwLDAsLXQqcipNYXRoLlBJKmQucm90YXRlU3BlZWQvd2luZG93LmlubmVyV2lkdGgpO2Vsc2UgaWYoIWQuX29ydGhvKXt2YXIgbz0tZC56b29tU3BlZWQqYSplL3dpbmRvdy5pbm5lckhlaWdodCooaS1jLmxhc3RUKCkpLzIwO2MucGFuKGksMCwwLGgqKE1hdGguZXhwKG8pLTEpKX19fSwhMCl9LGQuZW5hYmxlTW91c2VMaXN0ZW5lcnMoKSxkfTt2YXIgbj10KCJyaWdodC1ub3ciKSxhPXQoIjNkLXZpZXciKSxpPXQoIm1vdXNlLWNoYW5nZSIpLG89dCgibW91c2Utd2hlZWwiKSxzPXQoIm1vdXNlLWV2ZW50LW9mZnNldCIpLGw9dCgiaGFzLXBhc3NpdmUtZXZlbnRzIil9LHsiM2QtdmlldyI6NTQsImhhcy1wYXNzaXZlLWV2ZW50cyI6NDEzLCJtb3VzZS1jaGFuZ2UiOjQzNywibW91c2UtZXZlbnQtb2Zmc2V0Ijo0MzgsIm1vdXNlLXdoZWVsIjo0NDAsInJpZ2h0LW5vdyI6NTAzfV0sMjkyOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2xzbGlmeSIpLGE9dCgiZ2wtc2hhZGVyIiksaT1uKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG52YXJ5aW5nIHZlYzIgdXY7XG52b2lkIG1haW4oKSB7XG4gIHV2ID0gcG9zaXRpb247XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG59Il0pLG89bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSBzYW1wbGVyMkQgYWNjdW1CdWZmZXI7XG52YXJ5aW5nIHZlYzIgdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjNCBhY2N1bSA9IHRleHR1cmUyRChhY2N1bUJ1ZmZlciwgMC41ICogKHV2ICsgMS4wKSk7XG4gIGdsX0ZyYWdDb2xvciA9IG1pbih2ZWM0KDEsMSwxLDEpLCBhY2N1bSk7XG59Il0pO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYSh0LGksbyxudWxsLFt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzIifV0pfX0seyJnbC1zaGFkZXIiOjMwNCxnbHNsaWZ5OjQxMX1dLDI5MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NhbWVyYS5qcyIpLGE9dCgiZ2wtYXhlczNkIiksaT10KCJnbC1heGVzM2QvcHJvcGVydGllcyIpLG89dCgiZ2wtc3Bpa2VzM2QiKSxzPXQoImdsLXNlbGVjdC1zdGF0aWMiKSxsPXQoImdsLWZibyIpLGM9dCgiYS1iaWctdHJpYW5nbGUiKSx1PXQoIm1vdXNlLWNoYW5nZSIpLGg9dCgiZ2wtbWF0NC9wZXJzcGVjdGl2ZSIpLGY9dCgiZ2wtbWF0NC9vcnRobyIpLHA9dCgiLi9saWIvc2hhZGVyIiksZD10KCJpcy1tb2JpbGUiKSh7dGFibGV0OiEwfSk7ZnVuY3Rpb24gZygpe3RoaXMubW91c2U9Wy0xLC0xXSx0aGlzLnNjcmVlbj1udWxsLHRoaXMuZGlzdGFuY2U9MS8wLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmRhdGFDb29yZGluYXRlPW51bGwsdGhpcy5kYXRhUG9zaXRpb249bnVsbCx0aGlzLm9iamVjdD1udWxsLHRoaXMuZGF0YT1udWxsfWZ1bmN0aW9uIHYodCl7dmFyIGU9TWF0aC5yb3VuZChNYXRoLmxvZyhNYXRoLmFicyh0KSkvTWF0aC5sb2coMTApKTtpZihlPDApe3ZhciByPU1hdGgucm91bmQoTWF0aC5wb3coMTAsLWUpKTtyZXR1cm4gTWF0aC5jZWlsKHQqcikvcn1pZihlPjApe3I9TWF0aC5yb3VuZChNYXRoLnBvdygxMCxlKSk7cmV0dXJuIE1hdGguY2VpbCh0L3IpKnJ9cmV0dXJuIE1hdGguY2VpbCh0KX1mdW5jdGlvbiBtKHQpe3JldHVybiJib29sZWFuIiE9dHlwZW9mIHR8fHR9ZS5leHBvcnRzPXtjcmVhdGVTY2VuZTpmdW5jdGlvbih0KXsodD10fHx7fSkuY2FtZXJhPXQuY2FtZXJhfHx7fTt2YXIgZT10LmNhbnZhcztpZighZSlpZihlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHQuY29udGFpbmVyKXt2YXIgcj10LmNvbnRhaW5lcjtyLmFwcGVuZENoaWxkKGUpfWVsc2UgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTt2YXIgeT10LmdsO3l8fCh0LmdsT3B0aW9ucyYmKGQ9ISF0LmdsT3B0aW9ucy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpLHk9ZnVuY3Rpb24odCxlKXt2YXIgcj1udWxsO3RyeXsocj10LmdldENvbnRleHQoIndlYmdsIixlKSl8fChyPXQuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIixlKSl9Y2F0Y2godCl7cmV0dXJuIG51bGx9cmV0dXJuIHJ9KGUsdC5nbE9wdGlvbnN8fHtwcmVtdWx0aXBsaWVkQWxwaGE6ITAsYW50aWFsaWFzOiEwLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjpkfSkpO2lmKCF5KXRocm93IG5ldyBFcnJvcigid2ViZ2wgbm90IHN1cHBvcnRlZCIpO3ZhciB4PXQuYm91bmRzfHxbWy0xMCwtMTAsLTEwXSxbMTAsMTAsMTBdXSxiPW5ldyBnLF89bCh5LHkuZHJhd2luZ0J1ZmZlcldpZHRoLHkuZHJhd2luZ0J1ZmZlckhlaWdodCx7cHJlZmVyRmxvYXQ6IWR9KSx3PXAoeSksaz10LmNhbWVyYU9iamVjdCYmITA9PT10LmNhbWVyYU9iamVjdC5fb3J0aG98fHQuY2FtZXJhLnByb2plY3Rpb24mJiJvcnRob2dyYXBoaWMiPT09dC5jYW1lcmEucHJvamVjdGlvbi50eXBlfHwhMSxUPXtleWU6dC5jYW1lcmEuZXllfHxbMiwwLDBdLGNlbnRlcjp0LmNhbWVyYS5jZW50ZXJ8fFswLDAsMF0sdXA6dC5jYW1lcmEudXB8fFswLDEsMF0sem9vbU1pbjp0LmNhbWVyYS56b29tTWF4fHwuMSx6b29tTWF4OnQuY2FtZXJhLnpvb21NaW58fDEwMCxtb2RlOnQuY2FtZXJhLm1vZGV8fCJ0dXJudGFibGUiLF9vcnRobzprfSxNPXQuYXhlc3x8e30sQT1hKHksTSk7QS5lbmFibGU9IU0uZGlzYWJsZTt2YXIgUz10LnNwaWtlc3x8e30sRT1vKHksUyksTD1bXSxDPVtdLFA9W10sTz1bXSx6PSEwLEk9ITAsRD1uZXcgQXJyYXkoMTYpLFI9bmV3IEFycmF5KDE2KSxGPXt2aWV3Om51bGwscHJvamVjdGlvbjpELG1vZGVsOlIsX29ydGhvOiExfSxJPSEwLEI9W3kuZHJhd2luZ0J1ZmZlcldpZHRoLHkuZHJhd2luZ0J1ZmZlckhlaWdodF0sTj10LmNhbWVyYU9iamVjdHx8bihlLFQpLGo9e2dsOnksY29udGV4dExvc3Q6ITEscGl4ZWxSYXRpbzp0LnBpeGVsUmF0aW98fDEsY2FudmFzOmUsc2VsZWN0aW9uOmIsY2FtZXJhOk4sYXhlczpBLGF4ZXNQaXhlbHM6bnVsbCxzcGlrZXM6RSxib3VuZHM6eCxvYmplY3RzOkwsc2hhcGU6Qixhc3BlY3Q6dC5hc3BlY3RSYXRpb3x8WzEsMSwxXSxwaWNrUmFkaXVzOnQucGlja1JhZGl1c3x8MTAsek5lYXI6dC56TmVhcnx8LjAxLHpGYXI6dC56RmFyfHwxZTMsZm92eTp0LmZvdnl8fE1hdGguUEkvNCxjbGVhckNvbG9yOnQuY2xlYXJDb2xvcnx8WzAsMCwwLDBdLGF1dG9SZXNpemU6bSh0LmF1dG9SZXNpemUpLGF1dG9Cb3VuZHM6bSh0LmF1dG9Cb3VuZHMpLGF1dG9TY2FsZTohIXQuYXV0b1NjYWxlLGF1dG9DZW50ZXI6bSh0LmF1dG9DZW50ZXIpLGNsaXBUb0JvdW5kczptKHQuY2xpcFRvQm91bmRzKSxzbmFwVG9EYXRhOiEhdC5zbmFwVG9EYXRhLG9uc2VsZWN0OnQub25zZWxlY3R8fG51bGwsb25yZW5kZXI6dC5vbnJlbmRlcnx8bnVsbCxvbmNsaWNrOnQub25jbGlja3x8bnVsbCxjYW1lcmFQYXJhbXM6RixvbmNvbnRleHRsb3NzOm51bGwsbW91c2VMaXN0ZW5lcjpudWxsLF9zdG9wcGVkOiExLGdldEFzcGVjdHJhdGlvOmZ1bmN0aW9uKCl7cmV0dXJue3g6dGhpcy5hc3BlY3RbMF0seTp0aGlzLmFzcGVjdFsxXSx6OnRoaXMuYXNwZWN0WzJdfX0sc2V0QXNwZWN0cmF0aW86ZnVuY3Rpb24odCl7dGhpcy5hc3BlY3RbMF09dC54LHRoaXMuYXNwZWN0WzFdPXQueSx0aGlzLmFzcGVjdFsyXT10Lnp9LHNldEJvdW5kczpmdW5jdGlvbih0LGUpe3RoaXMuYm91bmRzWzBdW3RdPWUubWluLHRoaXMuYm91bmRzWzFdW3RdPWUubWF4fSxzZXRDbGVhckNvbG9yOmZ1bmN0aW9uKHQpe3RoaXMuY2xlYXJDb2xvcj10fSxjbGVhclJHQkE6ZnVuY3Rpb24oKXt0aGlzLmdsLmNsZWFyQ29sb3IodGhpcy5jbGVhckNvbG9yWzBdLHRoaXMuY2xlYXJDb2xvclsxXSx0aGlzLmNsZWFyQ29sb3JbMl0sdGhpcy5jbGVhckNvbG9yWzNdKSx0aGlzLmdsLmNsZWFyKHRoaXMuZ2wuQ09MT1JfQlVGRkVSX0JJVHx0aGlzLmdsLkRFUFRIX0JVRkZFUl9CSVQpfX0sVj1beS5kcmF3aW5nQnVmZmVyV2lkdGgvai5waXhlbFJhdGlvfDAseS5kcmF3aW5nQnVmZmVySGVpZ2h0L2oucGl4ZWxSYXRpb3wwXTtmdW5jdGlvbiBVKCl7aWYoIWouX3N0b3BwZWQmJmouYXV0b1Jlc2l6ZSl7dmFyIHQ9ZS5wYXJlbnROb2RlLHI9MSxuPTE7dCYmdCE9PWRvY3VtZW50LmJvZHk/KHI9dC5jbGllbnRXaWR0aCxuPXQuY2xpZW50SGVpZ2h0KToocj13aW5kb3cuaW5uZXJXaWR0aCxuPXdpbmRvdy5pbm5lckhlaWdodCk7dmFyIGE9MHxNYXRoLmNlaWwocipqLnBpeGVsUmF0aW8pLGk9MHxNYXRoLmNlaWwobipqLnBpeGVsUmF0aW8pO2lmKGEhPT1lLndpZHRofHxpIT09ZS5oZWlnaHQpe2Uud2lkdGg9YSxlLmhlaWdodD1pO3ZhciBvPWUuc3R5bGU7by5wb3NpdGlvbj1vLnBvc2l0aW9ufHwiYWJzb2x1dGUiLG8ubGVmdD0iMHB4IixvLnRvcD0iMHB4IixvLndpZHRoPXIrInB4IixvLmhlaWdodD1uKyJweCIsej0hMH19fWouYXV0b1Jlc2l6ZSYmVSgpO2Z1bmN0aW9uIHEoKXtmb3IodmFyIHQ9TC5sZW5ndGgsZT1PLmxlbmd0aCxyPTA7cjxlOysrcilQW3JdPTA7dDpmb3IodmFyIHI9MDtyPHQ7KytyKXt2YXIgbj1MW3JdLGE9bi5waWNrU2xvdHM7aWYoYSl7Zm9yKHZhciBpPTA7aTxlOysraSlpZihQW2ldK2E8MjU1KXtDW3JdPWksbi5zZXRQaWNrQmFzZShQW2ldKzEpLFBbaV0rPWE7Y29udGludWUgdH12YXIgbz1zKHksQik7Q1tyXT1lLE8ucHVzaChvKSxQLnB1c2goYSksbi5zZXRQaWNrQmFzZSgxKSxlKz0xfWVsc2UgQ1tyXT0tMX1mb3IoO2U+MCYmMD09PVBbZS0xXTspUC5wb3AoKSxPLnBvcCgpLmRpc3Bvc2UoKX1mdW5jdGlvbiBIKCl7aWYoai5jb250ZXh0TG9zdClyZXR1cm4hMDt5LmlzQ29udGV4dExvc3QoKSYmKGouY29udGV4dExvc3Q9ITAsai5tb3VzZUxpc3RlbmVyLmVuYWJsZWQ9ITEsai5zZWxlY3Rpb24ub2JqZWN0PW51bGwsai5vbmNvbnRleHRsb3NzJiZqLm9uY29udGV4dGxvc3MoKSl9d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsVSksai51cGRhdGU9ZnVuY3Rpb24odCl7ai5fc3RvcHBlZHx8KHQ9dHx8e30sej0hMCxJPSEwKX0sai5hZGQ9ZnVuY3Rpb24odCl7ai5fc3RvcHBlZHx8KHQuYXhlcz1BLEwucHVzaCh0KSxDLnB1c2goLTEpLHo9ITAsST0hMCxxKCkpfSxqLnJlbW92ZT1mdW5jdGlvbih0KXtpZighai5fc3RvcHBlZCl7dmFyIGU9TC5pbmRleE9mKHQpO2U8MHx8KEwuc3BsaWNlKGUsMSksQy5wb3AoKSx6PSEwLEk9ITAscSgpKX19LGouZGlzcG9zZT1mdW5jdGlvbigpe2lmKCFqLl9zdG9wcGVkJiYoai5fc3RvcHBlZD0hMCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixVKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLEgpLGoubW91c2VMaXN0ZW5lci5lbmFibGVkPSExLCFqLmNvbnRleHRMb3N0KSl7QS5kaXNwb3NlKCksRS5kaXNwb3NlKCk7Zm9yKHZhciB0PTA7dDxMLmxlbmd0aDsrK3QpTFt0XS5kaXNwb3NlKCk7Xy5kaXNwb3NlKCk7Zm9yKHZhciB0PTA7dDxPLmxlbmd0aDsrK3QpT1t0XS5kaXNwb3NlKCk7dy5kaXNwb3NlKCkseT1udWxsLEE9bnVsbCxFPW51bGwsTD1bXX19LGouX21vdXNlUm90YXRpbmc9ITEsai5fcHJldkJ1dHRvbnM9MCxqLmVuYWJsZU1vdXNlTGlzdGVuZXJzPWZ1bmN0aW9uKCl7ai5tb3VzZUxpc3RlbmVyPXUoZSxmdW5jdGlvbih0LGUscil7aWYoIWouX3N0b3BwZWQpe3ZhciBuPU8ubGVuZ3RoLGE9TC5sZW5ndGgsaT1iLm9iamVjdDtiLmRpc3RhbmNlPTEvMCxiLm1vdXNlWzBdPWUsYi5tb3VzZVsxXT1yLGIub2JqZWN0PW51bGwsYi5zY3JlZW49bnVsbCxiLmRhdGFDb29yZGluYXRlPWIuZGF0YVBvc2l0aW9uPW51bGw7dmFyIG89ITE7aWYodCYmai5fcHJldkJ1dHRvbnMpai5fbW91c2VSb3RhdGluZz0hMDtlbHNle2ouX21vdXNlUm90YXRpbmcmJihJPSEwKSxqLl9tb3VzZVJvdGF0aW5nPSExO2Zvcih2YXIgcz0wO3M8bjsrK3Mpe3ZhciBsPU9bc10ucXVlcnkoZSxWWzFdLXItMSxqLnBpY2tSYWRpdXMpO2lmKGwpe2lmKGwuZGlzdGFuY2U+Yi5kaXN0YW5jZSljb250aW51ZTtmb3IodmFyIGM9MDtjPGE7KytjKXt2YXIgdT1MW2NdO2lmKENbY109PT1zKXt2YXIgaD11LnBpY2sobCk7aCYmKGIuYnV0dG9ucz10LGIuc2NyZWVuPWwuY29vcmQsYi5kaXN0YW5jZT1sLmRpc3RhbmNlLGIub2JqZWN0PXUsYi5pbmRleD1oLmRpc3RhbmNlLGIuZGF0YVBvc2l0aW9uPWgucG9zaXRpb24sYi5kYXRhQ29vcmRpbmF0ZT1oLmRhdGFDb29yZGluYXRlLGIuZGF0YT1oLG89ITApfX19fX1pJiZpIT09Yi5vYmplY3QmJihpLmhpZ2hsaWdodCYmaS5oaWdobGlnaHQobnVsbCksej0hMCksYi5vYmplY3QmJihiLm9iamVjdC5oaWdobGlnaHQmJmIub2JqZWN0LmhpZ2hsaWdodChiLmRhdGEpLHo9ITApLChvPW98fGIub2JqZWN0IT09aSkmJmoub25zZWxlY3QmJmoub25zZWxlY3QoYiksMSZ0JiYhKDEmai5fcHJldkJ1dHRvbnMpJiZqLm9uY2xpY2smJmoub25jbGljayhiKSxqLl9wcmV2QnV0dG9ucz10fX0pfSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLEgpO3ZhciBHPVtbMS8wLDEvMCwxLzBdLFstMS8wLC0xLzAsLTEvMF1dLFk9W0dbMF0uc2xpY2UoKSxHWzFdLnNsaWNlKCldO2Z1bmN0aW9uIFcoKXtpZighSCgpKXtVKCk7dmFyIHQ9ai5jYW1lcmEudGljaygpO0Yudmlldz1qLmNhbWVyYS5tYXRyaXgsej16fHx0LEk9SXx8dCxBLnBpeGVsUmF0aW89ai5waXhlbFJhdGlvLEUucGl4ZWxSYXRpbz1qLnBpeGVsUmF0aW87dmFyIGU9TC5sZW5ndGgscj1HWzBdLG49R1sxXTtyWzBdPXJbMV09clsyXT0xLzAsblswXT1uWzFdPW5bMl09LTEvMDtmb3IodmFyIGE9MDthPGU7KythKXt2YXIgbz1MW2FdO28ucGl4ZWxSYXRpbz1qLnBpeGVsUmF0aW8sby5heGVzPWouYXhlcyx6PXp8fCEhby5kaXJ0eSxJPUl8fCEhby5kaXJ0eTt2YXIgcz1vLmJvdW5kcztpZihzKWZvcih2YXIgbD1zWzBdLHU9c1sxXSxwPTA7cDwzOysrcClyW3BdPU1hdGgubWluKHJbcF0sbFtwXSksbltwXT1NYXRoLm1heChuW3BdLHVbcF0pfXZhciBkPWouYm91bmRzO2lmKGouYXV0b0JvdW5kcylmb3IodmFyIHA9MDtwPDM7KytwKXtpZihuW3BdPHJbcF0pcltwXT0tMSxuW3BdPTE7ZWxzZXtyW3BdPT09bltwXSYmKHJbcF0tPTEsbltwXSs9MSk7dmFyIGc9LjA1KihuW3BdLXJbcF0pO3JbcF09cltwXS1nLG5bcF09bltwXStnfWRbMF1bcF09cltwXSxkWzFdW3BdPW5bcF19Zm9yKHZhciBtPSExLHA9MDtwPDM7KytwKW09bXx8WVswXVtwXSE9PWRbMF1bcF18fFlbMV1bcF0hPT1kWzFdW3BdLFlbMF1bcF09ZFswXVtwXSxZWzFdW3BdPWRbMV1bcF07aWYoST1JfHxtLHo9enx8bSl7aWYobSl7Zm9yKHZhciB4PVswLDAsMF0sYT0wO2E8MzsrK2EpeFthXT12KChkWzFdW2FdLWRbMF1bYV0pLzEwKTtBLmF1dG9UaWNrcz9BLnVwZGF0ZSh7Ym91bmRzOmQsdGlja1NwYWNpbmc6eH0pOkEudXBkYXRlKHtib3VuZHM6ZH0pfXZhciBUPXkuZHJhd2luZ0J1ZmZlcldpZHRoLE09eS5kcmF3aW5nQnVmZmVySGVpZ2h0O0JbMF09VCxCWzFdPU0sVlswXT0wfE1hdGgubWF4KFQvai5waXhlbFJhdGlvLDEpLFZbMV09MHxNYXRoLm1heChNL2oucGl4ZWxSYXRpbywxKSxmdW5jdGlvbih0LGUpe3ZhciByPXQuYm91bmRzLG49dC5jYW1lcmFQYXJhbXMsYT1uLnByb2plY3Rpb24saT1uLm1vZGVsLG89dC5nbC5kcmF3aW5nQnVmZmVyV2lkdGgscz10LmdsLmRyYXdpbmdCdWZmZXJIZWlnaHQsbD10LnpOZWFyLGM9dC56RmFyLHU9dC5mb3Z5LHA9by9zO2U/KGYoYSwtcCxwLC0xLDEsbCxjKSxuLl9vcnRobz0hMCk6KGgoYSx1LHAsbCxjKSxuLl9vcnRobz0hMSk7Zm9yKHZhciBkPTA7ZDwxNjsrK2QpaVtkXT0wO2lbMTVdPTE7Zm9yKHZhciBnPTAsZD0wO2Q8MzsrK2QpZz1NYXRoLm1heChnLHJbMV1bZF0tclswXVtkXSk7Zm9yKHZhciBkPTA7ZDwzOysrZCl0LmF1dG9TY2FsZT9pWzUqZF09dC5hc3BlY3RbZF0vKHJbMV1bZF0tclswXVtkXSk6aVs1KmRdPTEvZyx0LmF1dG9DZW50ZXImJihpWzEyK2RdPS41Ki1pWzUqZF0qKHJbMF1bZF0rclsxXVtkXSkpfShqLGspO2Zvcih2YXIgYT0wO2E8ZTsrK2Epe3ZhciBvPUxbYV07by5heGVzQm91bmRzPWQsai5jbGlwVG9Cb3VuZHMmJihvLmNsaXBCb3VuZHM9ZCl9Yi5vYmplY3QmJihqLnNuYXBUb0RhdGE/RS5wb3NpdGlvbj1iLmRhdGFDb29yZGluYXRlOkUucG9zaXRpb249Yi5kYXRhUG9zaXRpb24sRS5ib3VuZHM9ZCksSSYmKEk9ITEsZnVuY3Rpb24oKXtpZihIKCkpcmV0dXJuO3kuY29sb3JNYXNrKCEwLCEwLCEwLCEwKSx5LmRlcHRoTWFzayghMCkseS5kaXNhYmxlKHkuQkxFTkQpLHkuZW5hYmxlKHkuREVQVEhfVEVTVCkseS5kZXB0aEZ1bmMoeS5MRVFVQUwpO2Zvcih2YXIgdD1MLmxlbmd0aCxlPU8ubGVuZ3RoLHI9MDtyPGU7KytyKXt2YXIgbj1PW3JdO24uc2hhcGU9VixuLmJlZ2luKCk7Zm9yKHZhciBhPTA7YTx0OysrYSlpZihDW2FdPT09cil7dmFyIGk9TFthXTtpLmRyYXdQaWNrJiYoaS5waXhlbFJhdGlvPTEsaS5kcmF3UGljayhGKSl9bi5lbmQoKX19KCkpLGouYXhlc1BpeGVscz1pKGouYXhlcyxGLFQsTSksai5vbnJlbmRlciYmai5vbnJlbmRlcigpLHkuYmluZEZyYW1lYnVmZmVyKHkuRlJBTUVCVUZGRVIsbnVsbCkseS52aWV3cG9ydCgwLDAsVCxNKSxqLmNsZWFyUkdCQSgpLHkuZGVwdGhNYXNrKCEwKSx5LmNvbG9yTWFzayghMCwhMCwhMCwhMCkseS5lbmFibGUoeS5ERVBUSF9URVNUKSx5LmRlcHRoRnVuYyh5LkxFUVVBTCkseS5kaXNhYmxlKHkuQkxFTkQpLHkuZGlzYWJsZSh5LkNVTExfRkFDRSk7dmFyIFM9ITE7QS5lbmFibGUmJihTPVN8fEEuaXNUcmFuc3BhcmVudCgpLEEuZHJhdyhGKSksRS5heGVzPUEsYi5vYmplY3QmJkUuZHJhdyhGKSx5LmRpc2FibGUoeS5DVUxMX0ZBQ0UpO2Zvcih2YXIgYT0wO2E8ZTsrK2Epe3ZhciBvPUxbYV07by5heGVzPUEsby5waXhlbFJhdGlvPWoucGl4ZWxSYXRpbyxvLmlzT3BhcXVlJiZvLmlzT3BhcXVlKCkmJm8uZHJhdyhGKSxvLmlzVHJhbnNwYXJlbnQmJm8uaXNUcmFuc3BhcmVudCgpJiYoUz0hMCl9aWYoUyl7Xy5zaGFwZT1CLF8uYmluZCgpLHkuY2xlYXIoeS5ERVBUSF9CVUZGRVJfQklUKSx5LmNvbG9yTWFzayghMSwhMSwhMSwhMSkseS5kZXB0aE1hc2soITApLHkuZGVwdGhGdW5jKHkuTEVTUyksQS5lbmFibGUmJkEuaXNUcmFuc3BhcmVudCgpJiZBLmRyYXdUcmFuc3BhcmVudChGKTtmb3IodmFyIGE9MDthPGU7KythKXt2YXIgbz1MW2FdO28uaXNPcGFxdWUmJm8uaXNPcGFxdWUoKSYmby5kcmF3KEYpfXkuZW5hYmxlKHkuQkxFTkQpLHkuYmxlbmRFcXVhdGlvbih5LkZVTkNfQUREKSx5LmJsZW5kRnVuYyh5Lk9ORSx5Lk9ORV9NSU5VU19TUkNfQUxQSEEpLHkuY29sb3JNYXNrKCEwLCEwLCEwLCEwKSx5LmRlcHRoTWFzayghMSkseS5jbGVhckNvbG9yKDAsMCwwLDApLHkuY2xlYXIoeS5DT0xPUl9CVUZGRVJfQklUKSxBLmlzVHJhbnNwYXJlbnQoKSYmQS5kcmF3VHJhbnNwYXJlbnQoRik7Zm9yKHZhciBhPTA7YTxlOysrYSl7dmFyIG89TFthXTtvLmlzVHJhbnNwYXJlbnQmJm8uaXNUcmFuc3BhcmVudCgpJiZvLmRyYXdUcmFuc3BhcmVudChGKX15LmJpbmRGcmFtZWJ1ZmZlcih5LkZSQU1FQlVGRkVSLG51bGwpLHkuYmxlbmRGdW5jKHkuT05FLHkuT05FX01JTlVTX1NSQ19BTFBIQSkseS5kaXNhYmxlKHkuREVQVEhfVEVTVCksdy5iaW5kKCksXy5jb2xvclswXS5iaW5kKDApLHcudW5pZm9ybXMuYWNjdW1CdWZmZXI9MCxjKHkpLHkuZGlzYWJsZSh5LkJMRU5EKX16PSExO2Zvcih2YXIgYT0wO2E8ZTsrK2EpTFthXS5kaXJ0eT0hMX19fXJldHVybiBqLmVuYWJsZU1vdXNlTGlzdGVuZXJzKCksZnVuY3Rpb24gdCgpe2ouX3N0b3BwZWR8fGouY29udGV4dExvc3R8fChXKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpKX0oKSxqLnJlZHJhdz1mdW5jdGlvbigpe2ouX3N0b3BwZWR8fCh6PSEwLFcoKSl9LGp9LGNyZWF0ZUNhbWVyYTpufX0seyIuL2NhbWVyYS5qcyI6MjkxLCIuL2xpYi9zaGFkZXIiOjI5MiwiYS1iaWctdHJpYW5nbGUiOjYyLCJnbC1heGVzM2QiOjIzNiwiZ2wtYXhlczNkL3Byb3BlcnRpZXMiOjI0MywiZ2wtZmJvIjoyNTIsImdsLW1hdDQvb3J0aG8iOjI3MSwiZ2wtbWF0NC9wZXJzcGVjdGl2ZSI6MjcyLCJnbC1zZWxlY3Qtc3RhdGljIjozMDMsImdsLXNwaWtlczNkIjozMTMsImlzLW1vYmlsZSI6NDIyLCJtb3VzZS1jaGFuZ2UiOjQzN31dLDI5NDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdsc2xpZnkiKTtyLnBvaW50VmVydGV4PW4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuXG51bmlmb3JtIG1hdDMgbWF0cml4O1xudW5pZm9ybSBmbG9hdCBwb2ludFNpemU7XG51bmlmb3JtIGZsb2F0IHBvaW50Q2xvdWQ7XG5cbmhpZ2hwIGZsb2F0IHJhbmQodmVjMiBjbykge1xuICBoaWdocCBmbG9hdCBhID0gMTIuOTg5ODtcbiAgaGlnaHAgZmxvYXQgYiA9IDc4LjIzMztcbiAgaGlnaHAgZmxvYXQgYyA9IDQzNzU4LjU0NTM7XG4gIGhpZ2hwIGZsb2F0IGQgPSBkb3QoY28ueHksIHZlYzIoYSwgYikpO1xuICBoaWdocCBmbG9hdCBlID0gbW9kKGQsIDMuMTQpO1xuICByZXR1cm4gZnJhY3Qoc2luKGUpICogYyk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBoZ1Bvc2l0aW9uID0gbWF0cml4ICogdmVjMyhwb3NpdGlvbiwgMSk7XG4gIGdsX1Bvc2l0aW9uICA9IHZlYzQoaGdQb3NpdGlvbi54eSwgMCwgaGdQb3NpdGlvbi56KTtcbiAgICAvLyBpZiB3ZSBkb24ndCBqaXR0ZXIgdGhlIHBvaW50IHNpemUgYSBiaXQsIG92ZXJhbGwgcG9pbnQgY2xvdWRcbiAgICAvLyBzYXR1cmF0aW9uICdqdW1wcycgb24gem9vbWluZywgd2hpY2ggaXMgZGlzdHVyYmluZyBhbmQgY29uZnVzaW5nXG4gIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZSAqICgoMTkuNSArIHJhbmQocG9zaXRpb24pKSAvIDIwLjApO1xuICBpZihwb2ludENsb3VkICE9IDAuMCkgeyAvLyBwb2ludENsb3VkIGlzIHRydXRoeVxuICAgIC8vIGdldCB0aGUgc2FtZSBzcXVhcmUgc3VyZmFjZSBhcyBjaXJjbGUgd291bGQgYmVcbiAgICBnbF9Qb2ludFNpemUgKj0gMC44ODY7XG4gIH1cbn0iXSksci5wb2ludEZyYWdtZW50PW4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gdmVjNCBjb2xvciwgYm9yZGVyQ29sb3I7XG51bmlmb3JtIGZsb2F0IGNlbnRlckZyYWN0aW9uO1xudW5pZm9ybSBmbG9hdCBwb2ludENsb3VkO1xuXG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IHJhZGl1cztcbiAgdmVjNCBiYXNlQ29sb3I7XG4gIGlmKHBvaW50Q2xvdWQgIT0gMC4wKSB7IC8vIHBvaW50Q2xvdWQgaXMgdHJ1dGh5XG4gICAgaWYoY2VudGVyRnJhY3Rpb24gPT0gMS4wKSB7XG4gICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gbWl4KGJvcmRlckNvbG9yLCBjb2xvciwgY2VudGVyRnJhY3Rpb24pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByYWRpdXMgPSBsZW5ndGgoMi4wICogZ2xfUG9pbnRDb29yZC54eSAtIDEuMCk7XG4gICAgaWYocmFkaXVzID4gMS4wKSB7XG4gICAgICBkaXNjYXJkO1xuICAgIH1cbiAgICBiYXNlQ29sb3IgPSBtaXgoYm9yZGVyQ29sb3IsIGNvbG9yLCBzdGVwKHJhZGl1cywgY2VudGVyRnJhY3Rpb24pKTtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGJhc2VDb2xvci5yZ2IgKiBiYXNlQ29sb3IuYSwgYmFzZUNvbG9yLmEpO1xuICB9XG59XG4iXSksci5waWNrVmVydGV4PW4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgcGlja0lkO1xuXG51bmlmb3JtIG1hdDMgbWF0cml4O1xudW5pZm9ybSBmbG9hdCBwb2ludFNpemU7XG51bmlmb3JtIHZlYzQgcGlja09mZnNldDtcblxudmFyeWluZyB2ZWM0IGZyYWdJZDtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIGhnUG9zaXRpb24gPSBtYXRyaXggKiB2ZWMzKHBvc2l0aW9uLCAxKTtcbiAgZ2xfUG9zaXRpb24gID0gdmVjNChoZ1Bvc2l0aW9uLnh5LCAwLCBoZ1Bvc2l0aW9uLnopO1xuICBnbF9Qb2ludFNpemUgPSBwb2ludFNpemU7XG5cbiAgdmVjNCBpZCA9IHBpY2tJZCArIHBpY2tPZmZzZXQ7XG4gIGlkLnkgKz0gZmxvb3IoaWQueCAvIDI1Ni4wKTtcbiAgaWQueCAtPSBmbG9vcihpZC54IC8gMjU2LjApICogMjU2LjA7XG5cbiAgaWQueiArPSBmbG9vcihpZC55IC8gMjU2LjApO1xuICBpZC55IC09IGZsb29yKGlkLnkgLyAyNTYuMCkgKiAyNTYuMDtcblxuICBpZC53ICs9IGZsb29yKGlkLnogLyAyNTYuMCk7XG4gIGlkLnogLT0gZmxvb3IoaWQueiAvIDI1Ni4wKSAqIDI1Ni4wO1xuXG4gIGZyYWdJZCA9IGlkO1xufVxuIl0pLHIucGlja0ZyYWdtZW50PW4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZhcnlpbmcgdmVjNCBmcmFnSWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgZmxvYXQgcmFkaXVzID0gbGVuZ3RoKDIuMCAqIGdsX1BvaW50Q29vcmQueHkgLSAxLjApO1xuICBpZihyYWRpdXMgPiAxLjApIHtcbiAgICBkaXNjYXJkO1xuICB9XG4gIGdsX0ZyYWdDb2xvciA9IGZyYWdJZCAvIDI1NS4wO1xufVxuIl0pfSx7Z2xzbGlmeTo0MTF9XSwyOTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtc2hhZGVyIiksYT10KCJnbC1idWZmZXIiKSxpPXQoInR5cGVkYXJyYXktcG9vbCIpLG89dCgiLi9saWIvc2hhZGVyIik7ZnVuY3Rpb24gcyh0LGUscixuLGEpe3RoaXMucGxvdD10LHRoaXMub2Zmc2V0QnVmZmVyPWUsdGhpcy5waWNrQnVmZmVyPXIsdGhpcy5zaGFkZXI9bix0aGlzLnBpY2tTaGFkZXI9YSx0aGlzLnNpemVNaW49LjUsdGhpcy5zaXplTWluQ2FwPTIsdGhpcy5zaXplTWF4PTIwLHRoaXMuYXJlYVJhdGlvPTEsdGhpcy5wb2ludENvdW50PTAsdGhpcy5jb2xvcj1bMSwwLDAsMV0sdGhpcy5ib3JkZXJDb2xvcj1bMCwwLDAsMV0sdGhpcy5ibGVuZD0hMSx0aGlzLnBpY2tPZmZzZXQ9MCx0aGlzLnBvaW50cz1udWxsfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuZ2wsaT1hKHIpLGw9YShyKSxjPW4ocixvLnBvaW50VmVydGV4LG8ucG9pbnRGcmFnbWVudCksdT1uKHIsby5waWNrVmVydGV4LG8ucGlja0ZyYWdtZW50KSxoPW5ldyBzKHQsaSxsLGMsdSk7cmV0dXJuIGgudXBkYXRlKGUpLHQuYWRkT2JqZWN0KGgpLGh9O3ZhciBsLGMsdT1zLnByb3RvdHlwZTt1LmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNoYWRlci5kaXNwb3NlKCksdGhpcy5waWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLm9mZnNldEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5waWNrQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnBsb3QucmVtb3ZlT2JqZWN0KHRoaXMpfSx1LnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZTtmdW5jdGlvbiByKGUscil7cmV0dXJuIGUgaW4gdD90W2VdOnJ9dD10fHx7fSx0aGlzLnNpemVNaW49cigic2l6ZU1pbiIsLjUpLHRoaXMuc2l6ZU1heD1yKCJzaXplTWF4IiwyMCksdGhpcy5jb2xvcj1yKCJjb2xvciIsWzEsMCwwLDFdKS5zbGljZSgpLHRoaXMuYXJlYVJhdGlvPXIoImFyZWFSYXRpbyIsMSksdGhpcy5ib3JkZXJDb2xvcj1yKCJib3JkZXJDb2xvciIsWzAsMCwwLDFdKS5zbGljZSgpLHRoaXMuYmxlbmQ9cigiYmxlbmQiLCExKTt2YXIgbj10LnBvc2l0aW9ucy5sZW5ndGg+Pj4xLGE9dC5wb3NpdGlvbnMgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXksbz10LmlkVG9JbmRleCBpbnN0YW5jZW9mIEludDMyQXJyYXkmJnQuaWRUb0luZGV4Lmxlbmd0aD49bixzPXQucG9zaXRpb25zLGw9YT9zOmkubWFsbG9jRmxvYXQzMihzLmxlbmd0aCksYz1vP3QuaWRUb0luZGV4OmkubWFsbG9jSW50MzIobik7aWYoYXx8bC5zZXQocyksIW8pZm9yKGwuc2V0KHMpLGU9MDtlPG47ZSsrKWNbZV09ZTt0aGlzLnBvaW50cz1zLHRoaXMub2Zmc2V0QnVmZmVyLnVwZGF0ZShsKSx0aGlzLnBpY2tCdWZmZXIudXBkYXRlKGMpLGF8fGkuZnJlZShsKSxvfHxpLmZyZWUoYyksdGhpcy5wb2ludENvdW50PW4sdGhpcy5waWNrT2Zmc2V0PTB9LHUudW5pZmllZERyYXc9KGw9WzEsMCwwLDAsMSwwLDAsMCwxXSxjPVswLDAsMCwwXSxmdW5jdGlvbih0KXt2YXIgZT12b2lkIDAhPT10LHI9ZT90aGlzLnBpY2tTaGFkZXI6dGhpcy5zaGFkZXIsbj10aGlzLnBsb3QuZ2wsYT10aGlzLnBsb3QuZGF0YUJveDtpZigwPT09dGhpcy5wb2ludENvdW50KXJldHVybiB0O3ZhciBpPWFbMl0tYVswXSxvPWFbM10tYVsxXSxzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj0wLGE9dC5sZW5ndGg+Pj4xO2ZvcihyPTA7cjxhO3IrKyl7dmFyIGk9dFsyKnJdLG89dFsyKnIrMV07aT49ZVswXSYmaTw9ZVsyXSYmbz49ZVsxXSYmbzw9ZVszXSYmbisrfXJldHVybiBufSh0aGlzLnBvaW50cyxhKSx1PXRoaXMucGxvdC5waWNrUGl4ZWxSYXRpbypNYXRoLm1heChNYXRoLm1pbih0aGlzLnNpemVNaW5DYXAsdGhpcy5zaXplTWluKSxNYXRoLm1pbih0aGlzLnNpemVNYXgsdGhpcy5zaXplTWF4L01hdGgucG93KHMsLjMzMzMzKSkpO2xbMF09Mi9pLGxbNF09Mi9vLGxbNl09LTIqYVswXS9pLTEsbFs3XT0tMiphWzFdL28tMSx0aGlzLm9mZnNldEJ1ZmZlci5iaW5kKCksci5iaW5kKCksci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnBvaW50ZXIoKSxyLnVuaWZvcm1zLm1hdHJpeD1sLHIudW5pZm9ybXMuY29sb3I9dGhpcy5jb2xvcixyLnVuaWZvcm1zLmJvcmRlckNvbG9yPXRoaXMuYm9yZGVyQ29sb3Isci51bmlmb3Jtcy5wb2ludENsb3VkPXU8NSxyLnVuaWZvcm1zLnBvaW50U2l6ZT11LHIudW5pZm9ybXMuY2VudGVyRnJhY3Rpb249TWF0aC5taW4oMSxNYXRoLm1heCgwLE1hdGguc3FydCgxLXRoaXMuYXJlYVJhdGlvKSkpLGUmJihjWzBdPTI1NSZ0LGNbMV09dD4+OCYyNTUsY1syXT10Pj4xNiYyNTUsY1szXT10Pj4yNCYyNTUsdGhpcy5waWNrQnVmZmVyLmJpbmQoKSxyLmF0dHJpYnV0ZXMucGlja0lkLnBvaW50ZXIobi5VTlNJR05FRF9CWVRFKSxyLnVuaWZvcm1zLnBpY2tPZmZzZXQ9Yyx0aGlzLnBpY2tPZmZzZXQ9dCk7dmFyIGg9bi5nZXRQYXJhbWV0ZXIobi5CTEVORCksZj1uLmdldFBhcmFtZXRlcihuLkRJVEhFUik7cmV0dXJuIGgmJiF0aGlzLmJsZW5kJiZuLmRpc2FibGUobi5CTEVORCksZiYmbi5kaXNhYmxlKG4uRElUSEVSKSxuLmRyYXdBcnJheXMobi5QT0lOVFMsMCx0aGlzLnBvaW50Q291bnQpLGgmJiF0aGlzLmJsZW5kJiZuLmVuYWJsZShuLkJMRU5EKSxmJiZuLmVuYWJsZShuLkRJVEhFUiksdCt0aGlzLnBvaW50Q291bnR9KSx1LmRyYXc9dS51bmlmaWVkRHJhdyx1LmRyYXdQaWNrPXUudW5pZmllZERyYXcsdS5waWNrPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnBpY2tPZmZzZXQsYT10aGlzLnBvaW50Q291bnQ7aWYocjxufHxyPj1uK2EpcmV0dXJuIG51bGw7dmFyIGk9ci1uLG89dGhpcy5wb2ludHM7cmV0dXJue29iamVjdDp0aGlzLHBvaW50SWQ6aSxkYXRhQ29vcmQ6W29bMippXSxvWzIqaSsxXV19fX0seyIuL2xpYi9zaGFkZXIiOjI5NCwiZ2wtYnVmZmVyIjoyNDQsImdsLXNoYWRlciI6MzA0LCJ0eXBlZGFycmF5LXBvb2wiOjU0NH1dLDI5NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpLG8scyxsLGM9ZVswXSx1PWVbMV0saD1lWzJdLGY9ZVszXSxwPXJbMF0sZD1yWzFdLGc9clsyXSx2PXJbM107KGk9YypwK3UqZCtoKmcrZip2KTwwJiYoaT0taSxwPS1wLGQ9LWQsZz0tZyx2PS12KTsxLWk+MWUtNj8oYT1NYXRoLmFjb3MoaSksbz1NYXRoLnNpbihhKSxzPU1hdGguc2luKCgxLW4pKmEpL28sbD1NYXRoLnNpbihuKmEpL28pOihzPTEtbixsPW4pO3JldHVybiB0WzBdPXMqYytsKnAsdFsxXT1zKnUrbCpkLHRbMl09cypoK2wqZyx0WzNdPXMqZitsKnYsdH19LHt9XSwyOTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0fHwwPT09dD90LnRvU3RyaW5nKCk6IiJ9fSx7fV0sMjk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInZlY3Rvcml6ZS10ZXh0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1hW2VdO2l8fChpPWFbZV09e30pO2lmKHQgaW4gaSlyZXR1cm4gaVt0XTt2YXIgbz17dGV4dEFsaWduOiJjZW50ZXIiLHRleHRCYXNlbGluZToibWlkZGxlIixsaW5lSGVpZ2h0OjEsZm9udDplLGxpbmVTcGFjaW5nOjEuMjUsc3R5bGV0YWdzOnticmVha2xpbmVzOiEwLGJvbGRzOiEwLGl0YWxpY3M6ITAsc3Vic2NyaXB0czohMCxzdXBlcnNjcmlwdHM6ITB9LHRyaWFuZ2xlczohMH0scz1uKHQsbyk7by50cmlhbmdsZXM9ITE7dmFyIGwsYyx1PW4odCxvKTtpZihyJiYxIT09cil7Zm9yKGw9MDtsPHMucG9zaXRpb25zLmxlbmd0aDsrK2wpZm9yKGM9MDtjPHMucG9zaXRpb25zW2xdLmxlbmd0aDsrK2Mpcy5wb3NpdGlvbnNbbF1bY10vPXI7Zm9yKGw9MDtsPHUucG9zaXRpb25zLmxlbmd0aDsrK2wpZm9yKGM9MDtjPHUucG9zaXRpb25zW2xdLmxlbmd0aDsrK2MpdS5wb3NpdGlvbnNbbF1bY10vPXJ9dmFyIGg9W1sxLzAsMS8wXSxbLTEvMCwtMS8wXV0sZj11LnBvc2l0aW9ucy5sZW5ndGg7Zm9yKGw9MDtsPGY7KytsKXt2YXIgcD11LnBvc2l0aW9uc1tsXTtmb3IoYz0wO2M8MjsrK2MpaFswXVtjXT1NYXRoLm1pbihoWzBdW2NdLHBbY10pLGhbMV1bY109TWF0aC5tYXgoaFsxXVtjXSxwW2NdKX1yZXR1cm4gaVt0XT1bcyx1LGhdfTt2YXIgYT17fX0seyJ2ZWN0b3JpemUtdGV4dCI6NTQ5fV0sMjk5OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2wtc2hhZGVyIiksYT10KCJnbHNsaWZ5IiksaT1hKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgdmVjMiBnbHlwaDtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51bmlmb3JtIHZlYzQgaGlnaGxpZ2h0SWQ7XG51bmlmb3JtIGZsb2F0IGhpZ2hsaWdodFNjYWxlO1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG5cbnZhcnlpbmcgdmVjNCBpbnRlcnBDb2xvcjtcbnZhcnlpbmcgdmVjNCBwaWNrSWQ7XG52YXJ5aW5nIHZlYzMgZGF0YUNvb3JkaW5hdGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgcG9zaXRpb24pKSB7XG5cbiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvYXQgc2NhbGUgPSAxLjA7XG4gICAgaWYoZGlzdGFuY2UoaGlnaGxpZ2h0SWQsIGlkKSA8IDAuMDAwMSkge1xuICAgICAgc2NhbGUgPSBoaWdobGlnaHRTY2FsZTtcbiAgICB9XG5cbiAgICB2ZWM0IHdvcmxkUG9zaXRpb24gPSBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEpO1xuICAgIHZlYzQgdmlld1Bvc2l0aW9uID0gdmlldyAqIHdvcmxkUG9zaXRpb247XG4gICAgdmlld1Bvc2l0aW9uID0gdmlld1Bvc2l0aW9uIC8gdmlld1Bvc2l0aW9uLnc7XG4gICAgdmVjNCBjbGlwUG9zaXRpb24gPSBwcm9qZWN0aW9uICogKHZpZXdQb3NpdGlvbiArIHNjYWxlICogdmVjNChnbHlwaC54LCAtZ2x5cGgueSwgMCwgMCkpO1xuXG4gICAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb247XG4gICAgaW50ZXJwQ29sb3IgPSBjb2xvcjtcbiAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IHBvc2l0aW9uO1xuICB9XG59Il0pLG89YShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgZ2x5cGg7XG5hdHRyaWJ1dGUgdmVjNCBpZDtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMyIHNjcmVlblNpemU7XG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQgaGlnaGxpZ2h0U2NhbGUsIHBpeGVsUmF0aW87XG51bmlmb3JtIHZlYzQgaGlnaGxpZ2h0SWQ7XG5cbnZhcnlpbmcgdmVjNCBpbnRlcnBDb2xvcjtcbnZhcnlpbmcgdmVjNCBwaWNrSWQ7XG52YXJ5aW5nIHZlYzMgZGF0YUNvb3JkaW5hdGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgcG9zaXRpb24pKSB7XG5cbiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvYXQgc2NhbGUgPSBwaXhlbFJhdGlvO1xuICAgIGlmKGRpc3RhbmNlKGhpZ2hsaWdodElkLmJnciwgaWQuYmdyKSA8IDAuMDAxKSB7XG4gICAgICBzY2FsZSAqPSBoaWdobGlnaHRTY2FsZTtcbiAgICB9XG5cbiAgICB2ZWM0IHdvcmxkUG9zaXRpb24gPSBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgdmVjNCB2aWV3UG9zaXRpb24gPSB2aWV3ICogd29ybGRQb3NpdGlvbjtcbiAgICB2ZWM0IGNsaXBQb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3UG9zaXRpb247XG4gICAgY2xpcFBvc2l0aW9uIC89IGNsaXBQb3NpdGlvbi53O1xuXG4gICAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb24gKyB2ZWM0KHNjcmVlblNpemUgKiBzY2FsZSAqIHZlYzIoZ2x5cGgueCwgLWdseXBoLnkpLCAwLjAsIDAuMCk7XG4gICAgaW50ZXJwQ29sb3IgPSBjb2xvcjtcbiAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IHBvc2l0aW9uO1xuICB9XG59Il0pLHM9YShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgZ2x5cGg7XG5hdHRyaWJ1dGUgdmVjNCBpZDtcblxudW5pZm9ybSBmbG9hdCBoaWdobGlnaHRTY2FsZTtcbnVuaWZvcm0gdmVjNCBoaWdobGlnaHRJZDtcbnVuaWZvcm0gdmVjMyBheGVzWzJdO1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMyIHNjcmVlblNpemU7XG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQgc2NhbGUsIHBpeGVsUmF0aW87XG5cbnZhcnlpbmcgdmVjNCBpbnRlcnBDb2xvcjtcbnZhcnlpbmcgdmVjNCBwaWNrSWQ7XG52YXJ5aW5nIHZlYzMgZGF0YUNvb3JkaW5hdGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgcG9zaXRpb24pKSB7XG5cbiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvYXQgbHNjYWxlID0gcGl4ZWxSYXRpbyAqIHNjYWxlO1xuICAgIGlmKGRpc3RhbmNlKGhpZ2hsaWdodElkLCBpZCkgPCAwLjAwMDEpIHtcbiAgICAgIGxzY2FsZSAqPSBoaWdobGlnaHRTY2FsZTtcbiAgICB9XG5cbiAgICB2ZWM0IGNsaXBDZW50ZXIgICA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxKTtcbiAgICB2ZWMzIGRhdGFQb3NpdGlvbiA9IHBvc2l0aW9uICsgMC41KmxzY2FsZSooYXhlc1swXSAqIGdseXBoLnggKyBheGVzWzFdICogZ2x5cGgueSkgKiBjbGlwQ2VudGVyLncgKiBzY3JlZW5TaXplLnk7XG4gICAgdmVjNCBjbGlwUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChkYXRhUG9zaXRpb24sIDEpO1xuXG4gICAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb247XG4gICAgaW50ZXJwQ29sb3IgPSBjb2xvcjtcbiAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IGRhdGFQb3NpdGlvbjtcbiAgfVxufVxuIl0pLGw9YShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgZnJhZ0NsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG5cbnZhcnlpbmcgdmVjNCBpbnRlcnBDb2xvcjtcbnZhcnlpbmcgdmVjMyBkYXRhQ29vcmRpbmF0ZTtcblxudm9pZCBtYWluKCkge1xuICBpZiAoXG4gICAgb3V0T2ZSYW5nZShmcmFnQ2xpcEJvdW5kc1swXSwgZnJhZ0NsaXBCb3VuZHNbMV0sIGRhdGFDb29yZGluYXRlKSB8fFxuICAgIGludGVycENvbG9yLmEgKiBvcGFjaXR5ID09IDAuXG4gICkgZGlzY2FyZDtcbiAgZ2xfRnJhZ0NvbG9yID0gaW50ZXJwQ29sb3IgKiBvcGFjaXR5O1xufVxuIl0pLGM9YShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgZnJhZ0NsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHBpY2tHcm91cDtcblxudmFyeWluZyB2ZWM0IHBpY2tJZDtcbnZhcnlpbmcgdmVjMyBkYXRhQ29vcmRpbmF0ZTtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShmcmFnQ2xpcEJvdW5kc1swXSwgZnJhZ0NsaXBCb3VuZHNbMV0sIGRhdGFDb29yZGluYXRlKSkgZGlzY2FyZDtcblxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tHcm91cCwgcGlja0lkLmJncik7XG59Il0pLHU9W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJnbHlwaCIsdHlwZToidmVjMiJ9LHtuYW1lOiJpZCIsdHlwZToidmVjNCJ9XSxoPXt2ZXJ0ZXg6aSxmcmFnbWVudDpsLGF0dHJpYnV0ZXM6dX0sZj17dmVydGV4Om8sZnJhZ21lbnQ6bCxhdHRyaWJ1dGVzOnV9LHA9e3ZlcnRleDpzLGZyYWdtZW50OmwsYXR0cmlidXRlczp1fSxkPXt2ZXJ0ZXg6aSxmcmFnbWVudDpjLGF0dHJpYnV0ZXM6dX0sZz17dmVydGV4Om8sZnJhZ21lbnQ6YyxhdHRyaWJ1dGVzOnV9LHY9e3ZlcnRleDpzLGZyYWdtZW50OmMsYXR0cmlidXRlczp1fTtmdW5jdGlvbiBtKHQsZSl7dmFyIHI9bih0LGUpLGE9ci5hdHRyaWJ1dGVzO3JldHVybiBhLnBvc2l0aW9uLmxvY2F0aW9uPTAsYS5jb2xvci5sb2NhdGlvbj0xLGEuZ2x5cGgubG9jYXRpb249MixhLmlkLmxvY2F0aW9uPTMscn1yLmNyZWF0ZVBlcnNwZWN0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQsaCl9LHIuY3JlYXRlT3J0aG89ZnVuY3Rpb24odCl7cmV0dXJuIG0odCxmKX0sci5jcmVhdGVQcm9qZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBtKHQscCl9LHIuY3JlYXRlUGlja1BlcnNwZWN0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQsZCl9LHIuY3JlYXRlUGlja09ydGhvPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQsZyl9LHIuY3JlYXRlUGlja1Byb2plY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCx2KX19LHsiZ2wtc2hhZGVyIjozMDQsZ2xzbGlmeTo0MTF9XSwzMDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiaXMtc3RyaW5nLWJsYW5rIiksYT10KCJnbC1idWZmZXIiKSxpPXQoImdsLXZhbyIpLG89dCgidHlwZWRhcnJheS1wb29sIikscz10KCJnbC1tYXQ0L211bHRpcGx5IiksbD10KCIuL2xpYi9zaGFkZXJzIiksYz10KCIuL2xpYi9nbHlwaHMiKSx1PXQoIi4vbGliL2dldC1zaW1wbGUtc3RyaW5nIiksaD1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07ZnVuY3Rpb24gZih0LGUpe3ZhciByPXRbMF0sbj10WzFdLGE9dFsyXSxpPXRbM107cmV0dXJuIHRbMF09ZVswXSpyK2VbNF0qbitlWzhdKmErZVsxMl0qaSx0WzFdPWVbMV0qcitlWzVdKm4rZVs5XSphK2VbMTNdKmksdFsyXT1lWzJdKnIrZVs2XSpuK2VbMTBdKmErZVsxNF0qaSx0WzNdPWVbM10qcitlWzddKm4rZVsxMV0qYStlWzE1XSppLHR9ZnVuY3Rpb24gcCh0LGUscixuKXtyZXR1cm4gZihuLG4pLGYobixuKSxmKG4sbil9ZnVuY3Rpb24gZCh0LGUpe3RoaXMuaW5kZXg9dCx0aGlzLmRhdGFDb29yZGluYXRlPXRoaXMucG9zaXRpb249ZX1mdW5jdGlvbiBnKHQpe3JldHVybiEwPT09dD8xOnQ+MT8xOnR9ZnVuY3Rpb24gdih0LGUscixuLGEsaSxvLHMsbCxjLHUsaCl7dGhpcy5nbD10LHRoaXMucGl4ZWxSYXRpbz0xLHRoaXMuc2hhZGVyPWUsdGhpcy5vcnRob1NoYWRlcj1yLHRoaXMucHJvamVjdFNoYWRlcj1uLHRoaXMucG9pbnRCdWZmZXI9YSx0aGlzLmNvbG9yQnVmZmVyPWksdGhpcy5nbHlwaEJ1ZmZlcj1vLHRoaXMuaWRCdWZmZXI9cyx0aGlzLnZhbz1sLHRoaXMudmVydGV4Q291bnQ9MCx0aGlzLmxpbmVWZXJ0ZXhDb3VudD0wLHRoaXMub3BhY2l0eT0xLHRoaXMuaGFzQWxwaGE9ITEsdGhpcy5saW5lV2lkdGg9MCx0aGlzLnByb2plY3RTY2FsZT1bMi8zLDIvMywyLzNdLHRoaXMucHJvamVjdE9wYWNpdHk9WzEsMSwxXSx0aGlzLnByb2plY3RIYXNBbHBoYT0hMSx0aGlzLnBpY2tJZD0wLHRoaXMucGlja1BlcnNwZWN0aXZlU2hhZGVyPWMsdGhpcy5waWNrT3J0aG9TaGFkZXI9dSx0aGlzLnBpY2tQcm9qZWN0U2hhZGVyPWgsdGhpcy5wb2ludHM9W10sdGhpcy5fc2VsZWN0UmVzdWx0PW5ldyBkKDAsWzAsMCwwXSksdGhpcy51c2VPcnRobz0hMCx0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBdXSx0aGlzLmF4ZXNQcm9qZWN0PVshMCwhMCwhMF0sdGhpcy5heGVzQm91bmRzPVtbLTEvMCwtMS8wLC0xLzBdLFsxLzAsMS8wLDEvMF1dLHRoaXMuaGlnaGxpZ2h0SWQ9WzEsMSwxLDFdLHRoaXMuaGlnaGxpZ2h0U2NhbGU9Mix0aGlzLmNsaXBCb3VuZHM9W1stMS8wLC0xLzAsLTEvMF0sWzEvMCwxLzAsMS8wXV0sdGhpcy5kaXJ0eT0hMH1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5nbCxyPWwuY3JlYXRlUGVyc3BlY3RpdmUoZSksbj1sLmNyZWF0ZU9ydGhvKGUpLG89bC5jcmVhdGVQcm9qZWN0KGUpLHM9bC5jcmVhdGVQaWNrUGVyc3BlY3RpdmUoZSksYz1sLmNyZWF0ZVBpY2tPcnRobyhlKSx1PWwuY3JlYXRlUGlja1Byb2plY3QoZSksaD1hKGUpLGY9YShlKSxwPWEoZSksZD1hKGUpLGc9aShlLFt7YnVmZmVyOmgsc2l6ZTozLHR5cGU6ZS5GTE9BVH0se2J1ZmZlcjpmLHNpemU6NCx0eXBlOmUuRkxPQVR9LHtidWZmZXI6cCxzaXplOjIsdHlwZTplLkZMT0FUfSx7YnVmZmVyOmQsc2l6ZTo0LHR5cGU6ZS5VTlNJR05FRF9CWVRFLG5vcm1hbGl6ZWQ6ITB9XSksbT1uZXcgdihlLHIsbixvLGgsZixwLGQsZyxzLGMsdSk7cmV0dXJuIG0udXBkYXRlKHQpLG19O3ZhciBtPXYucHJvdG90eXBlO20ucGlja1Nsb3RzPTEsbS5zZXRQaWNrQmFzZT1mdW5jdGlvbih0KXt0aGlzLnBpY2tJZD10fSxtLmlzVHJhbnNwYXJlbnQ9ZnVuY3Rpb24oKXtpZih0aGlzLmhhc0FscGhhKXJldHVybiEwO2Zvcih2YXIgdD0wO3Q8MzsrK3QpaWYodGhpcy5heGVzUHJvamVjdFt0XSYmdGhpcy5wcm9qZWN0SGFzQWxwaGEpcmV0dXJuITA7cmV0dXJuITF9LG0uaXNPcGFxdWU9ZnVuY3Rpb24oKXtpZighdGhpcy5oYXNBbHBoYSlyZXR1cm4hMDtmb3IodmFyIHQ9MDt0PDM7Kyt0KWlmKHRoaXMuYXhlc1Byb2plY3RbdF0mJiF0aGlzLnByb2plY3RIYXNBbHBoYSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIHk9WzAsMF0seD1bMCwwLDBdLGI9WzAsMCwwXSxfPVswLDAsMCwxXSx3PVswLDAsMCwxXSxrPWguc2xpY2UoKSxUPVswLDAsMF0sTT1bWzAsMCwwXSxbMCwwLDBdXTtmdW5jdGlvbiBBKHQpe3JldHVybiB0WzBdPXRbMV09dFsyXT0wLHR9ZnVuY3Rpb24gUyh0LGUpe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPTEsdH1mdW5jdGlvbiBFKHQsZSxyLG4pe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0W3JdPW4sdH1mdW5jdGlvbiBMKHQsZSxyLG4pe3ZhciBhLGk9ZS5heGVzUHJvamVjdCxvPWUuZ2wsbD10LnVuaWZvcm1zLGM9ci5tb2RlbHx8aCx1PXIudmlld3x8aCxmPXIucHJvamVjdGlvbnx8aCxkPWUuYXhlc0JvdW5kcyxnPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1NLHI9MDtyPDI7KytyKWZvcih2YXIgbj0wO248MzsrK24pZVtyXVtuXT1NYXRoLm1heChNYXRoLm1pbih0W3JdW25dLDFlOCksLTFlOCk7cmV0dXJuIGV9KGUuY2xpcEJvdW5kcyk7YT1lLmF4ZXMmJmUuYXhlcy5sYXN0Q3ViZVByb3BzP2UuYXhlcy5sYXN0Q3ViZVByb3BzLmF4aXM6WzEsMSwxXSx5WzBdPTIvby5kcmF3aW5nQnVmZmVyV2lkdGgseVsxXT0yL28uZHJhd2luZ0J1ZmZlckhlaWdodCx0LmJpbmQoKSxsLnZpZXc9dSxsLnByb2plY3Rpb249ZixsLnNjcmVlblNpemU9eSxsLmhpZ2hsaWdodElkPWUuaGlnaGxpZ2h0SWQsbC5oaWdobGlnaHRTY2FsZT1lLmhpZ2hsaWdodFNjYWxlLGwuY2xpcEJvdW5kcz1nLGwucGlja0dyb3VwPWUucGlja0lkLzI1NSxsLnBpeGVsUmF0aW89bjtmb3IodmFyIHY9MDt2PDM7Kyt2KWlmKGlbdl0pe2wuc2NhbGU9ZS5wcm9qZWN0U2NhbGVbdl0sbC5vcGFjaXR5PWUucHJvamVjdE9wYWNpdHlbdl07Zm9yKHZhciBtPWssTD0wO0w8MTY7KytMKW1bTF09MDtmb3IoTD0wO0w8NDsrK0wpbVs1KkxdPTE7bVs1KnZdPTAsYVt2XTwwP21bMTIrdl09ZFswXVt2XTptWzEyK3ZdPWRbMV1bdl0scyhtLGMsbSksbC5tb2RlbD1tO3ZhciBDPSh2KzEpJTMsUD0odisyKSUzLE89QSh4KSx6PUEoYik7T1tDXT0xLHpbUF09MTt2YXIgST1wKDAsMCwwLFMoXyxPKSksRD1wKDAsMCwwLFModyx6KSk7aWYoTWF0aC5hYnMoSVsxXSk+TWF0aC5hYnMoRFsxXSkpe3ZhciBSPUk7ST1ELEQ9UixSPU8sTz16LHo9Ujt2YXIgRj1DO0M9UCxQPUZ9SVswXTwwJiYoT1tDXT0tMSksRFsxXT4wJiYoeltQXT0tMSk7dmFyIEI9MCxOPTA7Zm9yKEw9MDtMPDQ7KytMKUIrPU1hdGgucG93KGNbNCpDK0xdLDIpLE4rPU1hdGgucG93KGNbNCpQK0xdLDIpO09bQ10vPU1hdGguc3FydChCKSx6W1BdLz1NYXRoLnNxcnQoTiksbC5heGVzWzBdPU8sbC5heGVzWzFdPXosbC5mcmFnQ2xpcEJvdW5kc1swXT1FKFQsZ1swXSx2LC0xZTgpLGwuZnJhZ0NsaXBCb3VuZHNbMV09RShULGdbMV0sdiwxZTgpLGUudmFvLmJpbmQoKSxlLnZhby5kcmF3KG8uVFJJQU5HTEVTLGUudmVydGV4Q291bnQpLGUubGluZVdpZHRoPjAmJihvLmxpbmVXaWR0aChlLmxpbmVXaWR0aCpuKSxlLnZhby5kcmF3KG8uTElORVMsZS5saW5lVmVydGV4Q291bnQsZS52ZXJ0ZXhDb3VudCkpLGUudmFvLnVuYmluZCgpfX12YXIgQz1bWy0xZTgsLTFlOCwtMWU4XSxbMWU4LDFlOCwxZThdXTtmdW5jdGlvbiBQKHQsZSxyLG4sYSxpLG8pe3ZhciBzPXIuZ2w7aWYoKGk9PT1yLnByb2plY3RIYXNBbHBoYXx8bykmJkwoZSxyLG4sYSksaT09PXIuaGFzQWxwaGF8fG8pe3QuYmluZCgpO3ZhciBsPXQudW5pZm9ybXM7bC5tb2RlbD1uLm1vZGVsfHxoLGwudmlldz1uLnZpZXd8fGgsbC5wcm9qZWN0aW9uPW4ucHJvamVjdGlvbnx8aCx5WzBdPTIvcy5kcmF3aW5nQnVmZmVyV2lkdGgseVsxXT0yL3MuZHJhd2luZ0J1ZmZlckhlaWdodCxsLnNjcmVlblNpemU9eSxsLmhpZ2hsaWdodElkPXIuaGlnaGxpZ2h0SWQsbC5oaWdobGlnaHRTY2FsZT1yLmhpZ2hsaWdodFNjYWxlLGwuZnJhZ0NsaXBCb3VuZHM9QyxsLmNsaXBCb3VuZHM9ci5heGVzLmJvdW5kcyxsLm9wYWNpdHk9ci5vcGFjaXR5LGwucGlja0dyb3VwPXIucGlja0lkLzI1NSxsLnBpeGVsUmF0aW89YSxyLnZhby5iaW5kKCksci52YW8uZHJhdyhzLlRSSUFOR0xFUyxyLnZlcnRleENvdW50KSxyLmxpbmVXaWR0aD4wJiYocy5saW5lV2lkdGgoci5saW5lV2lkdGgqYSksci52YW8uZHJhdyhzLkxJTkVTLHIubGluZVZlcnRleENvdW50LHIudmVydGV4Q291bnQpKSxyLnZhby51bmJpbmQoKX19ZnVuY3Rpb24gTyh0LGUscixhKXt2YXIgaTtpPUFycmF5LmlzQXJyYXkodCk/ZTx0Lmxlbmd0aD90W2VdOnZvaWQgMDp0LGk9dShpKTt2YXIgbz0hMDtuKGkpJiYoaT0iXHUyNWJjIixvPSExKTt2YXIgcz1jKGkscixhKTtyZXR1cm57bWVzaDpzWzBdLGxpbmVzOnNbMV0sYm91bmRzOnNbMl0sdmlzaWJsZTpvfX1tLmRyYXc9ZnVuY3Rpb24odCl7UCh0aGlzLnVzZU9ydGhvP3RoaXMub3J0aG9TaGFkZXI6dGhpcy5zaGFkZXIsdGhpcy5wcm9qZWN0U2hhZGVyLHRoaXMsdCx0aGlzLnBpeGVsUmF0aW8sITEsITEpfSxtLmRyYXdUcmFuc3BhcmVudD1mdW5jdGlvbih0KXtQKHRoaXMudXNlT3J0aG8/dGhpcy5vcnRob1NoYWRlcjp0aGlzLnNoYWRlcix0aGlzLnByb2plY3RTaGFkZXIsdGhpcyx0LHRoaXMucGl4ZWxSYXRpbywhMCwhMSl9LG0uZHJhd1BpY2s9ZnVuY3Rpb24odCl7UCh0aGlzLnVzZU9ydGhvP3RoaXMucGlja09ydGhvU2hhZGVyOnRoaXMucGlja1BlcnNwZWN0aXZlU2hhZGVyLHRoaXMucGlja1Byb2plY3RTaGFkZXIsdGhpcyx0LDEsITAsITApfSxtLnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC5pZCE9PXRoaXMucGlja0lkKXJldHVybiBudWxsO3ZhciBlPXQudmFsdWVbMl0rKHQudmFsdWVbMV08PDgpKyh0LnZhbHVlWzBdPDwxNik7aWYoZT49dGhpcy5wb2ludENvdW50fHxlPDApcmV0dXJuIG51bGw7dmFyIHI9dGhpcy5wb2ludHNbZV0sbj10aGlzLl9zZWxlY3RSZXN1bHQ7bi5pbmRleD1lO2Zvcih2YXIgYT0wO2E8MzsrK2Epbi5wb3NpdGlvblthXT1uLmRhdGFDb29yZGluYXRlW2FdPXJbYV07cmV0dXJuIG59LG0uaGlnaGxpZ2h0PWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXQuaW5kZXgscj0yNTUmZSxuPWU+PjgmMjU1LGE9ZT4+MTYmMjU1O3RoaXMuaGlnaGxpZ2h0SWQ9W3IvMjU1LG4vMjU1LGEvMjU1LDBdfWVsc2UgdGhpcy5oaWdobGlnaHRJZD1bMSwxLDEsMV19LG0udXBkYXRlPWZ1bmN0aW9uKHQpe2lmKCJwZXJzcGVjdGl2ZSJpbih0PXR8fHt9KSYmKHRoaXMudXNlT3J0aG89IXQucGVyc3BlY3RpdmUpLCJvcnRob2dyYXBoaWMiaW4gdCYmKHRoaXMudXNlT3J0aG89ISF0Lm9ydGhvZ3JhcGhpYyksImxpbmVXaWR0aCJpbiB0JiYodGhpcy5saW5lV2lkdGg9dC5saW5lV2lkdGgpLCJwcm9qZWN0ImluIHQpaWYoQXJyYXkuaXNBcnJheSh0LnByb2plY3QpKXRoaXMuYXhlc1Byb2plY3Q9dC5wcm9qZWN0O2Vsc2V7dmFyIGU9ISF0LnByb2plY3Q7dGhpcy5heGVzUHJvamVjdD1bZSxlLGVdfWlmKCJwcm9qZWN0U2NhbGUiaW4gdClpZihBcnJheS5pc0FycmF5KHQucHJvamVjdFNjYWxlKSl0aGlzLnByb2plY3RTY2FsZT10LnByb2plY3RTY2FsZS5zbGljZSgpO2Vsc2V7dmFyIHI9K3QucHJvamVjdFNjYWxlO3RoaXMucHJvamVjdFNjYWxlPVtyLHIscl19aWYodGhpcy5wcm9qZWN0SGFzQWxwaGE9ITEsInByb2plY3RPcGFjaXR5ImluIHQpe2lmKEFycmF5LmlzQXJyYXkodC5wcm9qZWN0T3BhY2l0eSkpdGhpcy5wcm9qZWN0T3BhY2l0eT10LnByb2plY3RPcGFjaXR5LnNsaWNlKCk7ZWxzZXtyPSt0LnByb2plY3RPcGFjaXR5O3RoaXMucHJvamVjdE9wYWNpdHk9W3IscixyXX1mb3IodmFyIG49MDtuPDM7KytuKXRoaXMucHJvamVjdE9wYWNpdHlbbl09Zyh0aGlzLnByb2plY3RPcGFjaXR5W25dKSx0aGlzLnByb2plY3RPcGFjaXR5W25dPDEmJih0aGlzLnByb2plY3RIYXNBbHBoYT0hMCl9dGhpcy5oYXNBbHBoYT0hMSwib3BhY2l0eSJpbiB0JiYodGhpcy5vcGFjaXR5PWcodC5vcGFjaXR5KSx0aGlzLm9wYWNpdHk8MSYmKHRoaXMuaGFzQWxwaGE9ITApKSx0aGlzLmRpcnR5PSEwO3ZhciBhLGkscz10LnBvc2l0aW9uLGw9dC5mb250fHwibm9ybWFsIixjPXQuYWxpZ25tZW50fHxbMCwwXTtpZigyPT09Yy5sZW5ndGgpYT1jWzBdLGk9Y1sxXTtlbHNle2E9W10saT1bXTtmb3Iobj0wO248Yy5sZW5ndGg7KytuKWFbbl09Y1tuXVswXSxpW25dPWNbbl1bMV19dmFyIHU9WzEvMCwxLzAsMS8wXSxoPVstMS8wLC0xLzAsLTEvMF0sZj10LmdseXBoLHA9dC5jb2xvcixkPXQuc2l6ZSx2PXQuYW5nbGUsbT10LmxpbmVDb2xvcix5PS0xLHg9MCxiPTAsXz0wO2lmKHMubGVuZ3RoKXtfPXMubGVuZ3RoO3Q6Zm9yKG49MDtuPF87KytuKXtmb3IodmFyIHc9c1tuXSxrPTA7azwzOysraylpZihpc05hTih3W2tdKXx8IWlzRmluaXRlKHdba10pKWNvbnRpbnVlIHQ7dmFyIFQ9KE49TyhmLG4sbCx0aGlzLnBpeGVsUmF0aW8pKS5tZXNoLE09Ti5saW5lcyxBPU4uYm91bmRzO3grPTMqVC5jZWxscy5sZW5ndGgsYis9MipNLmVkZ2VzLmxlbmd0aH19dmFyIFM9eCtiLEU9by5tYWxsb2NGbG9hdCgzKlMpLEw9by5tYWxsb2NGbG9hdCg0KlMpLEM9by5tYWxsb2NGbG9hdCgyKlMpLFA9by5tYWxsb2NVaW50MzIoUyk7aWYoUz4wKXt2YXIgej0wLEk9eCxEPVswLDAsMCwxXSxSPVswLDAsMCwxXSxGPUFycmF5LmlzQXJyYXkocCkmJkFycmF5LmlzQXJyYXkocFswXSksQj1BcnJheS5pc0FycmF5KG0pJiZBcnJheS5pc0FycmF5KG1bMF0pO3Q6Zm9yKG49MDtuPF87KytuKXt5Kz0xO2Zvcih3PXNbbl0saz0wO2s8MzsrK2spe2lmKGlzTmFOKHdba10pfHwhaXNGaW5pdGUod1trXSkpY29udGludWUgdDtoW2tdPU1hdGgubWF4KGhba10sd1trXSksdVtrXT1NYXRoLm1pbih1W2tdLHdba10pfVQ9KE49TyhmLG4sbCx0aGlzLnBpeGVsUmF0aW8pKS5tZXNoLE09Ti5saW5lcyxBPU4uYm91bmRzO3ZhciBOLGo9Ti52aXNpYmxlO2lmKGopaWYoQXJyYXkuaXNBcnJheShwKSl7aWYoMz09PShWPUY/bjxwLmxlbmd0aD9wW25dOlswLDAsMCwwXTpwKS5sZW5ndGgpe2ZvcihrPTA7azwzOysraylEW2tdPVZba107RFszXT0xfWVsc2UgaWYoND09PVYubGVuZ3RoKXtmb3Ioaz0wO2s8NDsrK2spRFtrXT1WW2tdOyF0aGlzLmhhc0FscGhhJiZWWzNdPDEmJih0aGlzLmhhc0FscGhhPSEwKX19ZWxzZSBEWzBdPURbMV09RFsyXT0wLERbM109MTtlbHNlIEQ9WzEsMSwxLDBdO2lmKGopaWYoQXJyYXkuaXNBcnJheShtKSl7dmFyIFY7aWYoMz09PShWPUI/bjxtLmxlbmd0aD9tW25dOlswLDAsMCwwXTptKS5sZW5ndGgpe2ZvcihrPTA7azwzOysraylSW2tdPVZba107UltrXT0xfWVsc2UgaWYoND09PVYubGVuZ3RoKXtmb3Ioaz0wO2s8NDsrK2spUltrXT1WW2tdOyF0aGlzLmhhc0FscGhhJiZWWzNdPDEmJih0aGlzLmhhc0FscGhhPSEwKX19ZWxzZSBSWzBdPVJbMV09UlsyXT0wLFJbM109MTtlbHNlIFI9WzEsMSwxLDBdO3ZhciBVPS41O2o/QXJyYXkuaXNBcnJheShkKT9VPW48ZC5sZW5ndGg/K2Rbbl06MTI6ZD9VPStkOnRoaXMudXNlT3J0aG8mJihVPTEyKTpVPTA7dmFyIHE9MDtBcnJheS5pc0FycmF5KHYpP3E9bjx2Lmxlbmd0aD8rdltuXTowOnYmJihxPSt2KTt2YXIgSD1NYXRoLmNvcyhxKSxHPU1hdGguc2luKHEpO2Zvcih3PXNbbl0saz0wO2s8MzsrK2spaFtrXT1NYXRoLm1heChoW2tdLHdba10pLHVba109TWF0aC5taW4odVtrXSx3W2tdKTt2YXIgWT1hLFc9aTtZPTA7QXJyYXkuaXNBcnJheShhKT9ZPW48YS5sZW5ndGg/YVtuXTowOmEmJihZPWEpO1c9MDtBcnJheS5pc0FycmF5KGkpP1c9bjxpLmxlbmd0aD9pW25dOjA6aSYmKFc9aSk7dmFyIFg9W1kqPVk+MD8xLUFbMF1bMF06WTwwPzErQVsxXVswXToxLFcqPVc+MD8xLUFbMF1bMV06VzwwPzErQVsxXVsxXToxXSxaPVQuY2VsbHN8fFtdLEo9VC5wb3NpdGlvbnN8fFtdO2ZvcihrPTA7azxaLmxlbmd0aDsrK2spZm9yKHZhciBLPVpba10sUT0wO1E8MzsrK1Epe2Zvcih2YXIgJD0wOyQ8MzsrKyQpRVszKnorJF09d1skXTtmb3IoJD0wOyQ8NDsrKyQpTFs0KnorJF09RFskXTtQW3pdPXk7dmFyIHR0PUpbS1tRXV07Q1syKnpdPVUqKEgqdHRbMF0tRyp0dFsxXStYWzBdKSxDWzIqeisxXT1VKihHKnR0WzBdK0gqdHRbMV0rWFsxXSkseis9MX1mb3IoWj1NLmVkZ2VzLEo9TS5wb3NpdGlvbnMsaz0wO2s8Wi5sZW5ndGg7KytrKWZvcihLPVpba10sUT0wO1E8MjsrK1Epe2ZvcigkPTA7JDwzOysrJClFWzMqSSskXT13WyRdO2ZvcigkPTA7JDw0OysrJClMWzQqSSskXT1SWyRdO1BbSV09eTt0dD1KW0tbUV1dO0NbMipJXT1VKihIKnR0WzBdLUcqdHRbMV0rWFswXSksQ1syKkkrMV09VSooRyp0dFswXStIKnR0WzFdK1hbMV0pLEkrPTF9fX10aGlzLmJvdW5kcz1bdSxoXSx0aGlzLnBvaW50cz1zLHRoaXMucG9pbnRDb3VudD1zLmxlbmd0aCx0aGlzLnZlcnRleENvdW50PXgsdGhpcy5saW5lVmVydGV4Q291bnQ9Yix0aGlzLnBvaW50QnVmZmVyLnVwZGF0ZShFKSx0aGlzLmNvbG9yQnVmZmVyLnVwZGF0ZShMKSx0aGlzLmdseXBoQnVmZmVyLnVwZGF0ZShDKSx0aGlzLmlkQnVmZmVyLnVwZGF0ZShQKSxvLmZyZWUoRSksby5mcmVlKEwpLG8uZnJlZShDKSxvLmZyZWUoUCl9LG0uZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlzLm9ydGhvU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBpY2tQZXJzcGVjdGl2ZVNoYWRlci5kaXNwb3NlKCksdGhpcy5waWNrT3J0aG9TaGFkZXIuZGlzcG9zZSgpLHRoaXMudmFvLmRpc3Bvc2UoKSx0aGlzLnBvaW50QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmNvbG9yQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmdseXBoQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmlkQnVmZmVyLmRpc3Bvc2UoKX19LHsiLi9saWIvZ2V0LXNpbXBsZS1zdHJpbmciOjI5NywiLi9saWIvZ2x5cGhzIjoyOTgsIi4vbGliL3NoYWRlcnMiOjI5OSwiZ2wtYnVmZmVyIjoyNDQsImdsLW1hdDQvbXVsdGlwbHkiOjI3MCwiZ2wtdmFvIjozMjksImlzLXN0cmluZy1ibGFuayI6NDI1LCJ0eXBlZGFycmF5LXBvb2wiOjU0NH1dLDMwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbHNsaWZ5Iik7ci5ib3hWZXJ0ZXg9bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgdmVydGV4O1xuXG51bmlmb3JtIHZlYzIgY29ybmVyQSwgY29ybmVyQjtcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQobWl4KGNvcm5lckEsIGNvcm5lckIsIHZlcnRleCksIDAsIDEpO1xufVxuIl0pLHIuYm94RnJhZ21lbnQ9bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xufVxuIl0pfSx7Z2xzbGlmeTo0MTF9XSwzMDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtc2hhZGVyIiksYT10KCJnbC1idWZmZXIiKSxpPXQoIi4vbGliL3NoYWRlcnMiKTtmdW5jdGlvbiBvKHQsZSxyKXt0aGlzLnBsb3Q9dCx0aGlzLmJveEJ1ZmZlcj1lLHRoaXMuYm94U2hhZGVyPXIsdGhpcy5lbmFibGVkPSEwLHRoaXMuc2VsZWN0Qm94PVsxLzAsMS8wLC0xLzAsLTEvMF0sdGhpcy5ib3JkZXJDb2xvcj1bMCwwLDAsMV0sdGhpcy5pbm5lckZpbGw9ITEsdGhpcy5pbm5lckNvbG9yPVswLDAsMCwuMjVdLHRoaXMub3V0ZXJGaWxsPSEwLHRoaXMub3V0ZXJDb2xvcj1bMCwwLDAsLjVdLHRoaXMuYm9yZGVyV2lkdGg9MTB9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5nbCxzPWEocixbMCwwLDAsMSwxLDAsMSwxXSksbD1uKHIsaS5ib3hWZXJ0ZXgsaS5ib3hGcmFnbWVudCksYz1uZXcgbyh0LHMsbCk7cmV0dXJuIGMudXBkYXRlKGUpLHQuYWRkT3ZlcmxheShjKSxjfTt2YXIgcz1vLnByb3RvdHlwZTtzLmRyYXc9ZnVuY3Rpb24oKXtpZih0aGlzLmVuYWJsZWQpe3ZhciB0PXRoaXMucGxvdCxlPXRoaXMuc2VsZWN0Qm94LHI9dGhpcy5ib3JkZXJXaWR0aCxuPSh0aGlzLmlubmVyRmlsbCx0aGlzLmlubmVyQ29sb3IpLGE9KHRoaXMub3V0ZXJGaWxsLHRoaXMub3V0ZXJDb2xvciksaT10aGlzLmJvcmRlckNvbG9yLG89dC5ib3gscz10LnNjcmVlbkJveCxsPXQuZGF0YUJveCxjPXQudmlld0JveCx1PXQucGl4ZWxSYXRpbyxoPShlWzBdLWxbMF0pKihjWzJdLWNbMF0pLyhsWzJdLWxbMF0pK2NbMF0sZj0oZVsxXS1sWzFdKSooY1szXS1jWzFdKS8obFszXS1sWzFdKStjWzFdLHA9KGVbMl0tbFswXSkqKGNbMl0tY1swXSkvKGxbMl0tbFswXSkrY1swXSxkPShlWzNdLWxbMV0pKihjWzNdLWNbMV0pLyhsWzNdLWxbMV0pK2NbMV07aWYoaD1NYXRoLm1heChoLGNbMF0pLGY9TWF0aC5tYXgoZixjWzFdKSxwPU1hdGgubWluKHAsY1syXSksZD1NYXRoLm1pbihkLGNbM10pLCEocDxofHxkPGYpKXtvLmJpbmQoKTt2YXIgZz1zWzJdLXNbMF0sdj1zWzNdLXNbMV07aWYodGhpcy5vdXRlckZpbGwmJihvLmRyYXdCb3goMCwwLGcsZixhKSxvLmRyYXdCb3goMCxmLGgsZCxhKSxvLmRyYXdCb3goMCxkLGcsdixhKSxvLmRyYXdCb3gocCxmLGcsZCxhKSksdGhpcy5pbm5lckZpbGwmJm8uZHJhd0JveChoLGYscCxkLG4pLHI+MCl7dmFyIG09cip1O28uZHJhd0JveChoLW0sZi1tLHArbSxmK20saSksby5kcmF3Qm94KGgtbSxkLW0scCttLGQrbSxpKSxvLmRyYXdCb3goaC1tLGYtbSxoK20sZCttLGkpLG8uZHJhd0JveChwLW0sZi1tLHArbSxkK20saSl9fX19LHMudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e30sdGhpcy5pbm5lckZpbGw9ISF0LmlubmVyRmlsbCx0aGlzLm91dGVyRmlsbD0hIXQub3V0ZXJGaWxsLHRoaXMuaW5uZXJDb2xvcj0odC5pbm5lckNvbG9yfHxbMCwwLDAsLjVdKS5zbGljZSgpLHRoaXMub3V0ZXJDb2xvcj0odC5vdXRlckNvbG9yfHxbMCwwLDAsLjVdKS5zbGljZSgpLHRoaXMuYm9yZGVyQ29sb3I9KHQuYm9yZGVyQ29sb3J8fFswLDAsMCwxXSkuc2xpY2UoKSx0aGlzLmJvcmRlcldpZHRoPXQuYm9yZGVyV2lkdGh8fDAsdGhpcy5zZWxlY3RCb3g9KHQuc2VsZWN0Qm94fHx0aGlzLnNlbGVjdEJveCkuc2xpY2UoKX0scy5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5ib3hCdWZmZXIuZGlzcG9zZSgpLHRoaXMuYm94U2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBsb3QucmVtb3ZlT3ZlcmxheSh0aGlzKX19LHsiLi9saWIvc2hhZGVycyI6MzAxLCJnbC1idWZmZXIiOjI0NCwiZ2wtc2hhZGVyIjozMDR9XSwzMDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxpPWVbMV0sbz1uKHQscixpLHt9KSxzPWEubWFsbG9jVWludDgocippKjQpO3JldHVybiBuZXcgYyh0LG8scyl9O3ZhciBuPXQoImdsLWZibyIpLGE9dCgidHlwZWRhcnJheS1wb29sIiksaT10KCJuZGFycmF5Iiksbz10KCJiaXQtdHdpZGRsZSIpLm5leHRQb3cyLHM9dCgiY3dpc2UvbGliL3dyYXBwZXIiKSh7YXJnczpbImFycmF5Iix7b2Zmc2V0OlswLDAsMV0sYXJyYXk6MH0se29mZnNldDpbMCwwLDJdLGFycmF5OjB9LHtvZmZzZXQ6WzAsMCwzXSxhcnJheTowfSwic2NhbGFyIiwic2NhbGFyIiwiaW5kZXgiXSxwcmU6e2JvZHk6Int0aGlzX2Nsb3Nlc3REMj0xZTgsdGhpc19jbG9zZXN0WD0tMSx0aGlzX2Nsb3Nlc3RZPS0xfSIsYXJnczpbXSx0aGlzVmFyczpbInRoaXNfY2xvc2VzdEQyIiwidGhpc19jbG9zZXN0WCIsInRoaXNfY2xvc2VzdFkiXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntpZihfaW5saW5lXzE2X2FyZzBfPDI1NXx8X2lubGluZV8xNl9hcmcxXzwyNTV8fF9pbmxpbmVfMTZfYXJnMl88MjU1fHxfaW5saW5lXzE2X2FyZzNfPDI1NSl7dmFyIF9pbmxpbmVfMTZfbD1faW5saW5lXzE2X2FyZzRfLV9pbmxpbmVfMTZfYXJnNl9bMF0sX2lubGluZV8xNl9hPV9pbmxpbmVfMTZfYXJnNV8tX2lubGluZV8xNl9hcmc2X1sxXSxfaW5saW5lXzE2X2Y9X2lubGluZV8xNl9sKl9pbmxpbmVfMTZfbCtfaW5saW5lXzE2X2EqX2lubGluZV8xNl9hO19pbmxpbmVfMTZfZjx0aGlzX2Nsb3Nlc3REMiYmKHRoaXNfY2xvc2VzdEQyPV9pbmxpbmVfMTZfZix0aGlzX2Nsb3Nlc3RYPV9pbmxpbmVfMTZfYXJnNl9bMF0sdGhpc19jbG9zZXN0WT1faW5saW5lXzE2X2FyZzZfWzFdKX19IixhcmdzOlt7bmFtZToiX2lubGluZV8xNl9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xNl9hcmcxXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xNl9hcmcyXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xNl9hcmczXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xNl9hcmc0XyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xNl9hcmc1XyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xNl9hcmc2XyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDo0fV0sdGhpc1ZhcnM6WyJ0aGlzX2Nsb3Nlc3REMiIsInRoaXNfY2xvc2VzdFgiLCJ0aGlzX2Nsb3Nlc3RZIl0sbG9jYWxWYXJzOlsiX2lubGluZV8xNl9hIiwiX2lubGluZV8xNl9mIiwiX2lubGluZV8xNl9sIl19LHBvc3Q6e2JvZHk6IntyZXR1cm5bdGhpc19jbG9zZXN0WCx0aGlzX2Nsb3Nlc3RZLHRoaXNfY2xvc2VzdEQyXX0iLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX2Nsb3Nlc3REMiIsInRoaXNfY2xvc2VzdFgiLCJ0aGlzX2Nsb3Nlc3RZIl0sbG9jYWxWYXJzOltdfSxkZWJ1ZzohMSxmdW5jTmFtZToiY3dpc2UiLGJsb2NrU2l6ZTo2NH0pO2Z1bmN0aW9uIGwodCxlLHIsbixhKXt0aGlzLmNvb3JkPVt0LGVdLHRoaXMuaWQ9cix0aGlzLnZhbHVlPW4sdGhpcy5kaXN0YW5jZT1hfWZ1bmN0aW9uIGModCxlLHIpe3RoaXMuZ2w9dCx0aGlzLmZibz1lLHRoaXMuYnVmZmVyPXIsdGhpcy5fcmVhZFRpbWVvdXQ9bnVsbDt2YXIgbj10aGlzO3RoaXMuX3JlYWRDYWxsYmFjaz1mdW5jdGlvbigpe24uZ2wmJihlLmJpbmQoKSx0LnJlYWRQaXhlbHMoMCwwLGUuc2hhcGVbMF0sZS5zaGFwZVsxXSx0LlJHQkEsdC5VTlNJR05FRF9CWVRFLG4uYnVmZmVyKSxuLl9yZWFkVGltZW91dD1udWxsKX19dmFyIHU9Yy5wcm90b3R5cGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHUsInNoYXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2w/dGhpcy5mYm8uc2hhcGUuc2xpY2UoKTpbMCwwXX0sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuZ2wpe3RoaXMuZmJvLnNoYXBlPXQ7dmFyIGU9dGhpcy5mYm8uc2hhcGVbMF0scj10aGlzLmZiby5zaGFwZVsxXTtpZihyKmUqND50aGlzLmJ1ZmZlci5sZW5ndGgpe2EuZnJlZSh0aGlzLmJ1ZmZlcik7Zm9yKHZhciBuPXRoaXMuYnVmZmVyPWEubWFsbG9jVWludDgobyhyKmUqNCkpLGk9MDtpPHIqZSo0OysraSluW2ldPTI1NX1yZXR1cm4gdH19fSksdS5iZWdpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2w7dGhpcy5zaGFwZTt0JiYodGhpcy5mYm8uYmluZCgpLHQuY2xlYXJDb2xvcigxLDEsMSwxKSx0LmNsZWFyKHQuQ09MT1JfQlVGRkVSX0JJVHx0LkRFUFRIX0JVRkZFUl9CSVQpKX0sdS5lbmQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdsO3QmJih0LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLG51bGwpLHRoaXMuX3JlYWRUaW1lb3V0fHxjbGVhclRpbWVvdXQodGhpcy5fcmVhZFRpbWVvdXQpLHRoaXMuX3JlYWRUaW1lb3V0PXNldFRpbWVvdXQodGhpcy5fcmVhZENhbGxiYWNrLDEpKX0sdS5xdWVyeT1mdW5jdGlvbih0LGUscil7aWYoIXRoaXMuZ2wpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5mYm8uc2hhcGUuc2xpY2UoKTt0fD0wLGV8PTAsIm51bWJlciIhPXR5cGVvZiByJiYocj0xKTt2YXIgYT0wfE1hdGgubWluKE1hdGgubWF4KHQtciwwKSxuWzBdKSxvPTB8TWF0aC5taW4oTWF0aC5tYXgodCtyLDApLG5bMF0pLGM9MHxNYXRoLm1pbihNYXRoLm1heChlLXIsMCksblsxXSksdT0wfE1hdGgubWluKE1hdGgubWF4KGUrciwwKSxuWzFdKTtpZihvPD1hfHx1PD1jKXJldHVybiBudWxsO3ZhciBoPVtvLWEsdS1jXSxmPWkodGhpcy5idWZmZXIsW2hbMF0saFsxXSw0XSxbNCw0Km5bMF0sMV0sNCooYStuWzBdKmMpKSxwPXMoZi5oaShoWzBdLGhbMV0sMSkscixyKSxkPXBbMF0sZz1wWzFdO3JldHVybiBkPDB8fE1hdGgucG93KHRoaXMucmFkaXVzLDIpPHBbMl0/bnVsbDpuZXcgbChkK2F8MCxnK2N8MCxmLmdldChkLGcsMCksW2YuZ2V0KGQsZywxKSxmLmdldChkLGcsMiksZi5nZXQoZCxnLDMpXSxNYXRoLnNxcnQocFsyXSkpfSx1LmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmdsJiYodGhpcy5mYm8uZGlzcG9zZSgpLGEuZnJlZSh0aGlzLmJ1ZmZlciksdGhpcy5nbD1udWxsLHRoaXMuX3JlYWRUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5fcmVhZFRpbWVvdXQpKX19LHsiYml0LXR3aWRkbGUiOjk0LCJjd2lzZS9saWIvd3JhcHBlciI6MTUxLCJnbC1mYm8iOjI1MixuZGFycmF5OjQ1MiwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwzMDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvY3JlYXRlLXVuaWZvcm1zIiksYT10KCIuL2xpYi9jcmVhdGUtYXR0cmlidXRlcyIpLGk9dCgiLi9saWIvcmVmbGVjdCIpLG89dCgiLi9saWIvc2hhZGVyLWNhY2hlIikscz10KCIuL2xpYi9ydW50aW1lLXJlZmxlY3QiKSxsPXQoIi4vbGliL0dMRXJyb3IiKTtmdW5jdGlvbiBjKHQpe3RoaXMuZ2w9dCx0aGlzLmdsLmxhc3RBdHRyaWJDb3VudD0wLHRoaXMuX3ZyZWY9dGhpcy5fZnJlZj10aGlzLl9yZWxpbms9dGhpcy52ZXJ0U2hhZGVyPXRoaXMuZnJhZ1NoYWRlcj10aGlzLnByb2dyYW09dGhpcy5hdHRyaWJ1dGVzPXRoaXMudW5pZm9ybXM9dGhpcy50eXBlcz1udWxsfXZhciB1PWMucHJvdG90eXBlO2Z1bmN0aW9uIGgodCxlKXtyZXR1cm4gdC5uYW1lPGUubmFtZT8tMToxfXUuYmluZD1mdW5jdGlvbigpe3ZhciB0O3RoaXMucHJvZ3JhbXx8dGhpcy5fcmVsaW5rKCk7dmFyIGU9dGhpcy5nbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHRoaXMucHJvZ3JhbSx0aGlzLmdsLkFDVElWRV9BVFRSSUJVVEVTKSxyPXRoaXMuZ2wubGFzdEF0dHJpYkNvdW50O2lmKGU+cilmb3IodD1yO3Q8ZTt0KyspdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0KTtlbHNlIGlmKHI+ZSlmb3IodD1lO3Q8cjt0KyspdGhpcy5nbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodCk7dGhpcy5nbC5sYXN0QXR0cmliQ291bnQ9ZSx0aGlzLmdsLnVzZVByb2dyYW0odGhpcy5wcm9ncmFtKX0sdS5kaXNwb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuZ2wubGFzdEF0dHJpYkNvdW50LGU9MDtlPHQ7ZSsrKXRoaXMuZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpO3RoaXMuZ2wubGFzdEF0dHJpYkNvdW50PTAsdGhpcy5fZnJlZiYmdGhpcy5fZnJlZi5kaXNwb3NlKCksdGhpcy5fdnJlZiYmdGhpcy5fdnJlZi5kaXNwb3NlKCksdGhpcy5hdHRyaWJ1dGVzPXRoaXMudHlwZXM9dGhpcy52ZXJ0U2hhZGVyPXRoaXMuZnJhZ1NoYWRlcj10aGlzLnByb2dyYW09dGhpcy5fcmVsaW5rPXRoaXMuX2ZyZWY9dGhpcy5fdnJlZj1udWxsfSx1LnVwZGF0ZT1mdW5jdGlvbih0LGUscixjKXtpZighZXx8MT09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciB1PXQ7dD11LnZlcnRleCxlPXUuZnJhZ21lbnQscj11LnVuaWZvcm1zLGM9dS5hdHRyaWJ1dGVzfXZhciBmPXRoaXMscD1mLmdsLGQ9Zi5fdnJlZjtmLl92cmVmPW8uc2hhZGVyKHAscC5WRVJURVhfU0hBREVSLHQpLGQmJmQuZGlzcG9zZSgpLGYudmVydFNoYWRlcj1mLl92cmVmLnNoYWRlcjt2YXIgZz10aGlzLl9mcmVmO2lmKGYuX2ZyZWY9by5zaGFkZXIocCxwLkZSQUdNRU5UX1NIQURFUixlKSxnJiZnLmRpc3Bvc2UoKSxmLmZyYWdTaGFkZXI9Zi5fZnJlZi5zaGFkZXIsIXJ8fCFjKXt2YXIgdj1wLmNyZWF0ZVByb2dyYW0oKTtpZihwLmF0dGFjaFNoYWRlcih2LGYuZnJhZ1NoYWRlcikscC5hdHRhY2hTaGFkZXIodixmLnZlcnRTaGFkZXIpLHAubGlua1Byb2dyYW0odiksIXAuZ2V0UHJvZ3JhbVBhcmFtZXRlcih2LHAuTElOS19TVEFUVVMpKXt2YXIgbT1wLmdldFByb2dyYW1JbmZvTG9nKHYpO3Rocm93IG5ldyBsKG0sIkVycm9yIGxpbmtpbmcgcHJvZ3JhbToiK20pfXI9cnx8cy51bmlmb3JtcyhwLHYpLGM9Y3x8cy5hdHRyaWJ1dGVzKHAsdikscC5kZWxldGVQcm9ncmFtKHYpfShjPWMuc2xpY2UoKSkuc29ydChoKTt2YXIgeSx4PVtdLGI9W10sXz1bXTtmb3IoeT0wO3k8Yy5sZW5ndGg7Kyt5KXt2YXIgdz1jW3ldO2lmKHcudHlwZS5pbmRleE9mKCJtYXQiKT49MCl7Zm9yKHZhciBrPTB8dy50eXBlLmNoYXJBdCh3LnR5cGUubGVuZ3RoLTEpLFQ9bmV3IEFycmF5KGspLE09MDtNPGs7KytNKVRbTV09Xy5sZW5ndGgsYi5wdXNoKHcubmFtZSsiWyIrTSsiXSIpLCJudW1iZXIiPT10eXBlb2Ygdy5sb2NhdGlvbj9fLnB1c2gody5sb2NhdGlvbitNKTpBcnJheS5pc0FycmF5KHcubG9jYXRpb24pJiZ3LmxvY2F0aW9uLmxlbmd0aD09PWsmJiJudW1iZXIiPT10eXBlb2Ygdy5sb2NhdGlvbltNXT9fLnB1c2goMHx3LmxvY2F0aW9uW01dKTpfLnB1c2goLTEpO3gucHVzaCh7bmFtZTp3Lm5hbWUsdHlwZTp3LnR5cGUsbG9jYXRpb25zOlR9KX1lbHNlIHgucHVzaCh7bmFtZTp3Lm5hbWUsdHlwZTp3LnR5cGUsbG9jYXRpb25zOltfLmxlbmd0aF19KSxiLnB1c2gody5uYW1lKSwibnVtYmVyIj09dHlwZW9mIHcubG9jYXRpb24/Xy5wdXNoKDB8dy5sb2NhdGlvbik6Xy5wdXNoKC0xKX12YXIgQT0wO2Zvcih5PTA7eTxfLmxlbmd0aDsrK3kpaWYoX1t5XTwwKXtmb3IoO18uaW5kZXhPZihBKT49MDspQSs9MTtfW3ldPUF9dmFyIFM9bmV3IEFycmF5KHIubGVuZ3RoKTtmdW5jdGlvbiBFKCl7Zi5wcm9ncmFtPW8ucHJvZ3JhbShwLGYuX3ZyZWYsZi5fZnJlZixiLF8pO2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7Kyt0KVNbdF09cC5nZXRVbmlmb3JtTG9jYXRpb24oZi5wcm9ncmFtLHJbdF0ubmFtZSl9RSgpLGYuX3JlbGluaz1FLGYudHlwZXM9e3VuaWZvcm1zOmkociksYXR0cmlidXRlczppKGMpfSxmLmF0dHJpYnV0ZXM9YShwLGYseCxfKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwidW5pZm9ybXMiLG4ocCxmLHIsUykpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT1uZXcgYyh0KTtyZXR1cm4gaS51cGRhdGUoZSxyLG4sYSksaX19LHsiLi9saWIvR0xFcnJvciI6MzA1LCIuL2xpYi9jcmVhdGUtYXR0cmlidXRlcyI6MzA2LCIuL2xpYi9jcmVhdGUtdW5pZm9ybXMiOjMwNywiLi9saWIvcmVmbGVjdCI6MzA4LCIuL2xpYi9ydW50aW1lLXJlZmxlY3QiOjMwOSwiLi9saWIvc2hhZGVyLWNhY2hlIjozMTB9XSwzMDU6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXt0aGlzLnNob3J0TWVzc2FnZT1lfHwiIix0aGlzLmxvbmdNZXNzYWdlPXJ8fCIiLHRoaXMucmF3RXJyb3I9dHx8IiIsdGhpcy5tZXNzYWdlPSJnbC1zaGFkZXI6ICIrKGV8fHR8fCIiKSsocj8iXG4iK3I6IiIpLHRoaXMuc3RhY2s9KG5ldyBFcnJvcikuc3RhY2t9bi5wcm90b3R5cGU9bmV3IEVycm9yLG4ucHJvdG90eXBlLm5hbWU9IkdMRXJyb3IiLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sZS5leHBvcnRzPW59LHt9XSwzMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe2Zvcih2YXIgaT17fSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKXt2YXIgdT1yW2xdLGg9dS5uYW1lLGY9dS50eXBlLHA9dS5sb2NhdGlvbnM7c3dpdGNoKGYpe2Nhc2UiYm9vbCI6Y2FzZSJpbnQiOmNhc2UiZmxvYXQiOm8odCxlLHBbMF0sYSwxLGksaCk7YnJlYWs7ZGVmYXVsdDppZihmLmluZGV4T2YoInZlYyIpPj0wKXt2YXIgZD1mLmNoYXJDb2RlQXQoZi5sZW5ndGgtMSktNDg7aWYoZDwyfHxkPjQpdGhyb3cgbmV3IG4oIiIsIkludmFsaWQgZGF0YSB0eXBlIGZvciBhdHRyaWJ1dGUgIitoKyI6ICIrZik7byh0LGUscFswXSxhLGQsaSxoKX1lbHNle2lmKCEoZi5pbmRleE9mKCJtYXQiKT49MCkpdGhyb3cgbmV3IG4oIiIsIlVua25vd24gZGF0YSB0eXBlIGZvciBhdHRyaWJ1dGUgIitoKyI6ICIrZik7dmFyIGQ9Zi5jaGFyQ29kZUF0KGYubGVuZ3RoLTEpLTQ4O2lmKGQ8Mnx8ZD40KXRocm93IG5ldyBuKCIiLCJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgYXR0cmlidXRlICIraCsiOiAiK2YpO3ModCxlLHAsYSxkLGksaCl9fX1yZXR1cm4gaX07dmFyIG49dCgiLi9HTEVycm9yIik7ZnVuY3Rpb24gYSh0LGUscixuLGEsaSl7dGhpcy5fZ2w9dCx0aGlzLl93cmFwcGVyPWUsdGhpcy5faW5kZXg9cix0aGlzLl9sb2NhdGlvbnM9bix0aGlzLl9kaW1lbnNpb249YSx0aGlzLl9jb25zdEZ1bmM9aX12YXIgaT1hLnByb3RvdHlwZTtmdW5jdGlvbiBvKHQsZSxyLG4saSxvLHMpe2Zvcih2YXIgbD1bImdsIiwidiJdLGM9W10sdT0wO3U8aTsrK3UpbC5wdXNoKCJ4Iit1KSxjLnB1c2goIngiK3UpO2wucHVzaCgiaWYoeDAubGVuZ3RoPT09dm9pZCAwKXtyZXR1cm4gZ2wudmVydGV4QXR0cmliIitpKyJmKHYsIitjLmpvaW4oKSsiKX1lbHNle3JldHVybiBnbC52ZXJ0ZXhBdHRyaWIiK2krImZ2KHYseDApfSIpO3ZhciBoPUZ1bmN0aW9uLmFwcGx5KG51bGwsbCksZj1uZXcgYSh0LGUscixuLGksaCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8scyx7c2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShuW3JdKSxoKHQsbltyXSxlKSxlfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sZW51bWVyYWJsZTohMH0pfWZ1bmN0aW9uIHModCxlLHIsbixhLGkscyl7Zm9yKHZhciBsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSlvKHQsZSxyW3VdLG4sYSxsLHUpLGNbdV09bFt1XTtPYmplY3QuZGVmaW5lUHJvcGVydHkobCwibG9jYXRpb24iLHtzZXQ6ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGU9MDtlPGE7KytlKWNbZV0ubG9jYXRpb249dFtlXTtlbHNlIGZvcihlPTA7ZTxhOysrZSljW2VdLmxvY2F0aW9uPXQrZTtyZXR1cm4gdH0sZ2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBBcnJheShhKSxlPTA7ZTxhOysrZSl0W2VdPW5bcltlXV07cmV0dXJuIHR9LGVudW1lcmFibGU6ITB9KSxsLnBvaW50ZXI9ZnVuY3Rpb24oZSxpLG8scyl7ZT1lfHx0LkZMT0FULGk9ISFpLG89b3x8YSphLHM9c3x8MDtmb3IodmFyIGw9MDtsPGE7KytsKXt2YXIgYz1uW3JbbF1dO3QudmVydGV4QXR0cmliUG9pbnRlcihjLGEsZSxpLG8scytsKmEpLHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoYyl9fTt2YXIgaD1uZXcgQXJyYXkoYSksZj10WyJ2ZXJ0ZXhBdHRyaWIiK2ErImZ2Il07T2JqZWN0LmRlZmluZVByb3BlcnR5KGkscyx7c2V0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgaT0wO2k8YTsrK2kpe3ZhciBvPW5bcltpXV07aWYodC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobyksQXJyYXkuaXNBcnJheShlWzBdKSlmLmNhbGwodCxvLGVbaV0pO2Vsc2V7Zm9yKHZhciBzPTA7czxhOysrcyloW3NdPWVbYSppK3NdO2YuY2FsbCh0LG8saCl9fXJldHVybiBlfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZW51bWVyYWJsZTohMH0pfWkucG9pbnRlcj1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10aGlzLl9nbCxpPXRoaXMuX2xvY2F0aW9uc1t0aGlzLl9pbmRleF07YS52ZXJ0ZXhBdHRyaWJQb2ludGVyKGksdGhpcy5fZGltZW5zaW9uLHR8fGEuRkxPQVQsISFlLHJ8fDAsbnx8MCksYS5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpKX0saS5zZXQ9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHRoaXMuX2NvbnN0RnVuYyh0aGlzLl9sb2NhdGlvbnNbdGhpcy5faW5kZXhdLHQsZSxyLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSwibG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9jYXRpb25zW3RoaXMuX2luZGV4XX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0IT09dGhpcy5fbG9jYXRpb25zW3RoaXMuX2luZGV4XSYmKHRoaXMuX2xvY2F0aW9uc1t0aGlzLl9pbmRleF09MHx0LHRoaXMuX3dyYXBwZXIucHJvZ3JhbT1udWxsKSwwfHR9fSl9LHsiLi9HTEVycm9yIjozMDV9XSwzMDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9yZWZsZWN0IiksYT10KCIuL0dMRXJyb3IiKTtmdW5jdGlvbiBpKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oInkiLCJyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4geX0iKSh0KX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheSh0KSxuPTA7bjx0OysrbilyW25dPWU7cmV0dXJuIHJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe2Z1bmN0aW9uIGwodCxlLHIpe3N3aXRjaChyKXtjYXNlImJvb2wiOmNhc2UiaW50IjpjYXNlInNhbXBsZXIyRCI6Y2FzZSJzYW1wbGVyQ3ViZSI6cmV0dXJuImdsLnVuaWZvcm0xaShsb2NhdGlvbnNbIitlKyJdLG9iaiIrdCsiKSI7Y2FzZSJmbG9hdCI6cmV0dXJuImdsLnVuaWZvcm0xZihsb2NhdGlvbnNbIitlKyJdLG9iaiIrdCsiKSI7ZGVmYXVsdDp2YXIgbj1yLmluZGV4T2YoInZlYyIpO2lmKCEoMDw9biYmbjw9MSYmci5sZW5ndGg9PT00K24pKXtpZigwPT09ci5pbmRleE9mKCJtYXQiKSYmND09PXIubGVuZ3RoKXt2YXIgaT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSktNDg7aWYoaTwyfHxpPjQpdGhyb3cgbmV3IGEoIiIsIkludmFsaWQgdW5pZm9ybSBkaW1lbnNpb24gdHlwZSBmb3IgbWF0cml4ICIrbmFtZSsiOiAiK3IpO3JldHVybiJnbC51bmlmb3JtTWF0cml4IitpKyJmdihsb2NhdGlvbnNbIitlKyJdLGZhbHNlLG9iaiIrdCsiKSJ9dGhyb3cgbmV3IGEoIiIsIlVua25vd24gdW5pZm9ybSBkYXRhIHR5cGUgZm9yICIrbmFtZSsiOiAiK3IpfXZhciBpPXIuY2hhckNvZGVBdChyLmxlbmd0aC0xKS00ODtpZihpPDJ8fGk+NCl0aHJvdyBuZXcgYSgiIiwiSW52YWxpZCBkYXRhIHR5cGUiKTtzd2l0Y2goci5jaGFyQXQoMCkpe2Nhc2UiYiI6Y2FzZSJpIjpyZXR1cm4iZ2wudW5pZm9ybSIraSsiaXYobG9jYXRpb25zWyIrZSsiXSxvYmoiK3QrIikiO2Nhc2UidiI6cmV0dXJuImdsLnVuaWZvcm0iK2krImZ2KGxvY2F0aW9uc1siK2UrIl0sb2JqIit0KyIpIjtkZWZhdWx0OnRocm93IG5ldyBhKCIiLCJVbnJlY29nbml6ZWQgZGF0YSB0eXBlIGZvciB2ZWN0b3IgIituYW1lKyI6ICIrcil9fX1mdW5jdGlvbiBjKGUpe2Zvcih2YXIgbj1bInJldHVybiBmdW5jdGlvbiB1cGRhdGVQcm9wZXJ0eShvYmopeyJdLGE9ZnVuY3Rpb24gdChlLHIpe2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm5bW2Uscl1dO3ZhciBuPVtdO2Zvcih2YXIgYSBpbiByKXt2YXIgaT1yW2FdLG89ZTtwYXJzZUludChhKSsiIj09PWE/bys9IlsiK2ErIl0iOm8rPSIuIithLCJvYmplY3QiPT10eXBlb2YgaT9uLnB1c2guYXBwbHkobix0KG8saSkpOm4ucHVzaChbbyxpXSl9cmV0dXJuIG59KCIiLGUpLGk9MDtpPGEubGVuZ3RoOysraSl7dmFyIG89YVtpXSxjPW9bMF0sdT1vWzFdO3NbdV0mJm4ucHVzaChsKGMsdSxyW3VdLnR5cGUpKX1uLnB1c2goInJldHVybiBvYmp9Iik7dmFyIGg9bmV3IEZ1bmN0aW9uKCJnbCIsImxvY2F0aW9ucyIsbi5qb2luKCJcbiIpKTtyZXR1cm4gaCh0LHMpfWZ1bmN0aW9uIHUobixsLHUpe2lmKCJvYmplY3QiPT10eXBlb2YgdSl7dmFyIGY9aCh1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobixsLHtnZXQ6aShmKSxzZXQ6Yyh1KSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMX0pfWVsc2Ugc1t1XT9PYmplY3QuZGVmaW5lUHJvcGVydHkobixsLHtnZXQ6KHA9dSxkPW5ldyBGdW5jdGlvbigiZ2wiLCJ3cmFwcGVyIiwibG9jYXRpb25zIiwicmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGdsLmdldFVuaWZvcm0od3JhcHBlci5wcm9ncmFtLGxvY2F0aW9uc1siK3ArIl0pfSIpLGQodCxlLHMpKSxzZXQ6Yyh1KSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMX0pOm5bbF09ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiYm9vbCI6cmV0dXJuITE7Y2FzZSJpbnQiOmNhc2Uic2FtcGxlcjJEIjpjYXNlInNhbXBsZXJDdWJlIjpjYXNlImZsb2F0IjpyZXR1cm4gMDtkZWZhdWx0OnZhciBlPXQuaW5kZXhPZigidmVjIik7aWYoMDw9ZSYmZTw9MSYmdC5sZW5ndGg9PT00K2Upe3ZhciByPXQuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKS00ODtpZihyPDJ8fHI+NCl0aHJvdyBuZXcgYSgiIiwiSW52YWxpZCBkYXRhIHR5cGUiKTtyZXR1cm4iYiI9PT10LmNoYXJBdCgwKT9vKHIsITEpOm8ociwwKX1pZigwPT09dC5pbmRleE9mKCJtYXQiKSYmND09PXQubGVuZ3RoKXt2YXIgcj10LmNoYXJDb2RlQXQodC5sZW5ndGgtMSktNDg7aWYocjwyfHxyPjQpdGhyb3cgbmV3IGEoIiIsIkludmFsaWQgdW5pZm9ybSBkaW1lbnNpb24gdHlwZSBmb3IgbWF0cml4ICIrbmFtZSsiOiAiK3QpO3JldHVybiBvKHIqciwwKX10aHJvdyBuZXcgYSgiIiwiVW5rbm93biB1bmlmb3JtIGRhdGEgdHlwZSBmb3IgIituYW1lKyI6ICIrdCl9fShyW3VdLnR5cGUpO3ZhciBwLGR9ZnVuY3Rpb24gaCh0KXt2YXIgZTtpZihBcnJheS5pc0FycmF5KHQpKXtlPW5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpdShlLHIsdFtyXSl9ZWxzZSBmb3IodmFyIG4gaW4gZT17fSx0KXUoZSxuLHRbbl0pO3JldHVybiBlfXZhciBmPW4ociwhMCk7cmV0dXJue2dldDppKGgoZikpLHNldDpjKGYpLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfX19LHsiLi9HTEVycm9yIjozMDUsIi4vcmVmbGVjdCI6MzA4fV0sMzA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj17fSxuPTA7bjx0Lmxlbmd0aDsrK24pZm9yKHZhciBhPXRbbl0ubmFtZSxpPWEuc3BsaXQoIi4iKSxvPXIscz0wO3M8aS5sZW5ndGg7KytzKXt2YXIgbD1pW3NdLnNwbGl0KCJbIik7aWYobC5sZW5ndGg+MSl7bFswXWluIG98fChvW2xbMF1dPVtdKSxvPW9bbFswXV07Zm9yKHZhciBjPTE7YzxsLmxlbmd0aDsrK2Mpe3ZhciB1PXBhcnNlSW50KGxbY10pO2M8bC5sZW5ndGgtMXx8czxpLmxlbmd0aC0xPyh1IGluIG98fChjPGwubGVuZ3RoLTE/b1t1XT1bXTpvW3VdPXt9KSxvPW9bdV0pOm9bdV09ZT9uOnRbbl0udHlwZX19ZWxzZSBzPGkubGVuZ3RoLTE/KGxbMF1pbiBvfHwob1tsWzBdXT17fSksbz1vW2xbMF1dKTpvW2xbMF1dPWU/bjp0W25dLnR5cGV9cmV0dXJuIHJ9fSx7fV0sMzA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IudW5pZm9ybXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsdC5BQ1RJVkVfVU5JRk9STVMpLG49W10sYT0wO2E8cjsrK2Epe3ZhciBvPXQuZ2V0QWN0aXZlVW5pZm9ybShlLGEpO2lmKG8pe3ZhciBzPWkodCxvLnR5cGUpO2lmKG8uc2l6ZT4xKWZvcih2YXIgbD0wO2w8by5zaXplOysrbCluLnB1c2goe25hbWU6by5uYW1lLnJlcGxhY2UoIlswXSIsIlsiK2wrIl0iKSx0eXBlOnN9KTtlbHNlIG4ucHVzaCh7bmFtZTpvLm5hbWUsdHlwZTpzfSl9fXJldHVybiBufSxyLmF0dHJpYnV0ZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsdC5BQ1RJVkVfQVRUUklCVVRFUyksbj1bXSxhPTA7YTxyOysrYSl7dmFyIG89dC5nZXRBY3RpdmVBdHRyaWIoZSxhKTtvJiZuLnB1c2goe25hbWU6by5uYW1lLHR5cGU6aSh0LG8udHlwZSl9KX1yZXR1cm4gbn07dmFyIG49e0ZMT0FUOiJmbG9hdCIsRkxPQVRfVkVDMjoidmVjMiIsRkxPQVRfVkVDMzoidmVjMyIsRkxPQVRfVkVDNDoidmVjNCIsSU5UOiJpbnQiLElOVF9WRUMyOiJpdmVjMiIsSU5UX1ZFQzM6Iml2ZWMzIixJTlRfVkVDNDoiaXZlYzQiLEJPT0w6ImJvb2wiLEJPT0xfVkVDMjoiYnZlYzIiLEJPT0xfVkVDMzoiYnZlYzMiLEJPT0xfVkVDNDoiYnZlYzQiLEZMT0FUX01BVDI6Im1hdDIiLEZMT0FUX01BVDM6Im1hdDMiLEZMT0FUX01BVDQ6Im1hdDQiLFNBTVBMRVJfMkQ6InNhbXBsZXIyRCIsU0FNUExFUl9DVUJFOiJzYW1wbGVyQ3ViZSJ9LGE9bnVsbDtmdW5jdGlvbiBpKHQsZSl7aWYoIWEpe3ZhciByPU9iamVjdC5rZXlzKG4pO2E9e307Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDsrK2kpe3ZhciBvPXJbaV07YVt0W29dXT1uW29dfX1yZXR1cm4gYVtlXX19LHt9XSwzMTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5zaGFkZXI9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB1KHQpLmdldFNoYWRlclJlZmVyZW5jZShlLHIpfSxyLnByb2dyYW09ZnVuY3Rpb24odCxlLHIsbixhKXtyZXR1cm4gdSh0KS5nZXRQcm9ncmFtKGUscixuLGEpfTt2YXIgbj10KCIuL0dMRXJyb3IiKSxhPXQoImdsLWZvcm1hdC1jb21waWxlci1lcnJvciIpLGk9bmV3KCJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha01hcD90KCJ3ZWFrbWFwLXNoaW0iKTpXZWFrTWFwKSxvPTA7ZnVuY3Rpb24gcyh0LGUscixuLGEsaSxvKXt0aGlzLmlkPXQsdGhpcy5zcmM9ZSx0aGlzLnR5cGU9cix0aGlzLnNoYWRlcj1uLHRoaXMuY291bnQ9aSx0aGlzLnByb2dyYW1zPVtdLHRoaXMuY2FjaGU9b31mdW5jdGlvbiBsKHQpe3RoaXMuZ2w9dCx0aGlzLnNoYWRlcnM9W3t9LHt9XSx0aGlzLnByb2dyYW1zPXt9fXMucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZigwPT0tLXRoaXMuY291bnQpe2Zvcih2YXIgdD10aGlzLmNhY2hlLGU9dC5nbCxyPXRoaXMucHJvZ3JhbXMsbj0wLGE9ci5sZW5ndGg7bjxhOysrbil7dmFyIGk9dC5wcm9ncmFtc1tyW25dXTtpJiYoZGVsZXRlIHQucHJvZ3JhbXNbbl0sZS5kZWxldGVQcm9ncmFtKGkpKX1lLmRlbGV0ZVNoYWRlcih0aGlzLnNoYWRlciksZGVsZXRlIHQuc2hhZGVyc1t0aGlzLnR5cGU9PT1lLkZSQUdNRU5UX1NIQURFUnwwXVt0aGlzLnNyY119fTt2YXIgYz1sLnByb3RvdHlwZTtmdW5jdGlvbiB1KHQpe3ZhciBlPWkuZ2V0KHQpO3JldHVybiBlfHwoZT1uZXcgbCh0KSxpLnNldCh0LGUpKSxlfWMuZ2V0U2hhZGVyUmVmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5nbCxpPXRoaXMuc2hhZGVyc1t0PT09ci5GUkFHTUVOVF9TSEFERVJ8MF0sbD1pW2VdO2lmKGwmJnIuaXNTaGFkZXIobC5zaGFkZXIpKWwuY291bnQrPTE7ZWxzZXt2YXIgYz1mdW5jdGlvbih0LGUscil7dmFyIGk9dC5jcmVhdGVTaGFkZXIoZSk7aWYodC5zaGFkZXJTb3VyY2UoaSxyKSx0LmNvbXBpbGVTaGFkZXIoaSksIXQuZ2V0U2hhZGVyUGFyYW1ldGVyKGksdC5DT01QSUxFX1NUQVRVUykpe3ZhciBvPXQuZ2V0U2hhZGVySW5mb0xvZyhpKTt0cnl7dmFyIHM9YShvLHIsZSl9Y2F0Y2godCl7dGhyb3cgY29uc29sZS53YXJuKCJGYWlsZWQgdG8gZm9ybWF0IGNvbXBpbGVyIGVycm9yOiAiK3QpLG5ldyBuKG8sIkVycm9yIGNvbXBpbGluZyBzaGFkZXI6XG4iK28pfXRocm93IG5ldyBuKG8scy5zaG9ydCxzLmxvbmcpfXJldHVybiBpfShyLHQsZSk7bD1pW2VdPW5ldyBzKG8rKyxlLHQsYyxbXSwxLHRoaXMpfXJldHVybiBsfSxjLmdldFByb2dyYW09ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGk9W3QuaWQsZS5pZCxyLmpvaW4oIjoiKSxhLmpvaW4oIjoiKV0uam9pbigiQCIpLG89dGhpcy5wcm9ncmFtc1tpXTtyZXR1cm4gbyYmdGhpcy5nbC5pc1Byb2dyYW0obyl8fCh0aGlzLnByb2dyYW1zW2ldPW89ZnVuY3Rpb24odCxlLHIsYSxpKXt2YXIgbz10LmNyZWF0ZVByb2dyYW0oKTt0LmF0dGFjaFNoYWRlcihvLGUpLHQuYXR0YWNoU2hhZGVyKG8scik7Zm9yKHZhciBzPTA7czxhLmxlbmd0aDsrK3MpdC5iaW5kQXR0cmliTG9jYXRpb24obyxpW3NdLGFbc10pO2lmKHQubGlua1Byb2dyYW0obyksIXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihvLHQuTElOS19TVEFUVVMpKXt2YXIgbD10LmdldFByb2dyYW1JbmZvTG9nKG8pO3Rocm93IG5ldyBuKGwsIkVycm9yIGxpbmtpbmcgcHJvZ3JhbTogIitsKX1yZXR1cm4gb30odGhpcy5nbCx0LnNoYWRlcixlLnNoYWRlcixyLGEpLHQucHJvZ3JhbXMucHVzaChpKSxlLnByb2dyYW1zLnB1c2goaSkpLG99fSx7Ii4vR0xFcnJvciI6MzA1LCJnbC1mb3JtYXQtY29tcGlsZXItZXJyb3IiOjI1Mywid2Vha21hcC1zaGltIjo1NTR9XSwzMTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt0aGlzLnBsb3Q9dCx0aGlzLmVuYWJsZT1bITAsITAsITEsITFdLHRoaXMud2lkdGg9WzEsMSwxLDFdLHRoaXMuY29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5jZW50ZXI9WzEvMCwxLzBdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBuKHQpO3JldHVybiByLnVwZGF0ZShlKSx0LmFkZE92ZXJsYXkocikscn07dmFyIGE9bi5wcm90b3R5cGU7YS51cGRhdGU9ZnVuY3Rpb24odCl7dD10fHx7fSx0aGlzLmVuYWJsZT0odC5lbmFibGV8fFshMCwhMCwhMSwhMV0pLnNsaWNlKCksdGhpcy53aWR0aD0odC53aWR0aHx8WzEsMSwxLDFdKS5zbGljZSgpLHRoaXMuY29sb3I9KHQuY29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoKX0pLHRoaXMuY2VudGVyPSh0LmNlbnRlcnx8WzEvMCwxLzBdKS5zbGljZSgpLHRoaXMucGxvdC5zZXRPdmVybGF5RGlydHkoKX0sYS5kcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbmFibGUsZT10aGlzLndpZHRoLHI9dGhpcy5jb2xvcixuPXRoaXMuY2VudGVyLGE9dGhpcy5wbG90LGk9YS5saW5lLG89YS5kYXRhQm94LHM9YS52aWV3Qm94O2lmKGkuYmluZCgpLG9bMF08PW5bMF0mJm5bMF08PW9bMl0mJm9bMV08PW5bMV0mJm5bMV08PW9bM10pe3ZhciBsPXNbMF0rKG5bMF0tb1swXSkvKG9bMl0tb1swXSkqKHNbMl0tc1swXSksYz1zWzFdKyhuWzFdLW9bMV0pLyhvWzNdLW9bMV0pKihzWzNdLXNbMV0pO3RbMF0mJmkuZHJhd0xpbmUobCxjLHNbMF0sYyxlWzBdLHJbMF0pLHRbMV0mJmkuZHJhd0xpbmUobCxjLGwsc1sxXSxlWzFdLHJbMV0pLHRbMl0mJmkuZHJhd0xpbmUobCxjLHNbMl0sYyxlWzJdLHJbMl0pLHRbM10mJmkuZHJhd0xpbmUobCxjLGwsc1szXSxlWzNdLHJbM10pfX0sYS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5wbG90LnJlbW92ZU92ZXJsYXkodGhpcyl9fSx7fV0sMzEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsc2xpZnkiKSxhPXQoImdsLXNoYWRlciIpLGk9bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb24sIGNvbG9yO1xuYXR0cmlidXRlIGZsb2F0IHdlaWdodDtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMzIGNvb3JkaW5hdGVzWzNdO1xudW5pZm9ybSB2ZWM0IGNvbG9yc1szXTtcbnVuaWZvcm0gdmVjMiBzY3JlZW5TaGFwZTtcbnVuaWZvcm0gZmxvYXQgbGluZVdpZHRoO1xuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzMgdmVydGV4UG9zaXRpb24gPSBtaXgoY29vcmRpbmF0ZXNbMF0sXG4gICAgbWl4KGNvb3JkaW5hdGVzWzJdLCBjb29yZGluYXRlc1sxXSwgMC41ICogKHBvc2l0aW9uICsgMS4wKSksIGFicyhwb3NpdGlvbikpO1xuXG4gIHZlYzQgY2xpcFBvcyA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApO1xuICB2ZWMyIGNsaXBPZmZzZXQgPSAocHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQoY29sb3IsIDAuMCkpLnh5O1xuICB2ZWMyIGRlbHRhID0gd2VpZ2h0ICogY2xpcE9mZnNldCAqIHNjcmVlblNoYXBlO1xuICB2ZWMyIGxpbmVPZmZzZXQgPSBub3JtYWxpemUodmVjMihkZWx0YS55LCAtZGVsdGEueCkpIC8gc2NyZWVuU2hhcGU7XG5cbiAgZ2xfUG9zaXRpb24gICA9IHZlYzQoY2xpcFBvcy54eSArIGNsaXBQb3MudyAqIDAuNSAqIGxpbmVXaWR0aCAqIGxpbmVPZmZzZXQsIGNsaXBQb3MueiwgY2xpcFBvcy53KTtcbiAgZnJhZ0NvbG9yICAgICA9IGNvbG9yLnggKiBjb2xvcnNbMF0gKyBjb2xvci55ICogY29sb3JzWzFdICsgY29sb3IueiAqIGNvbG9yc1syXTtcbn1cbiJdKSxvPW4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfRnJhZ0NvbG9yID0gZnJhZ0NvbG9yO1xufSJdKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCxpLG8sbnVsbCxbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWMzIn0se25hbWU6IndlaWdodCIsdHlwZToiZmxvYXQifV0pfX0seyJnbC1zaGFkZXIiOjMwNCxnbHNsaWZ5OjQxMX1dLDMxMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLGk9dCgiLi9zaGFkZXJzL2luZGV4Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W107ZnVuY3Rpb24gbyh0LGUsbixhLGksbyl7dmFyIHM9W3QsZSxuLDAsMCwwLDFdO3NbYSszXT0xLHNbYV09aSxyLnB1c2guYXBwbHkocixzKSxzWzZdPS0xLHIucHVzaC5hcHBseShyLHMpLHNbYV09byxyLnB1c2guYXBwbHkocixzKSxyLnB1c2guYXBwbHkocixzKSxzWzZdPTEsci5wdXNoLmFwcGx5KHIscyksc1thXT1pLHIucHVzaC5hcHBseShyLHMpfW8oMCwwLDAsMCwwLDEpLG8oMCwwLDAsMSwwLDEpLG8oMCwwLDAsMiwwLDEpLG8oMSwwLDAsMSwtMSwxKSxvKDEsMCwwLDIsLTEsMSksbygwLDEsMCwwLC0xLDEpLG8oMCwxLDAsMiwtMSwxKSxvKDAsMCwxLDAsLTEsMSksbygwLDAsMSwxLC0xLDEpO3ZhciBsPW4odCxyKSxjPWEodCxbe3R5cGU6dC5GTE9BVCxidWZmZXI6bCxzaXplOjMsb2Zmc2V0OjAsc3RyaWRlOjI4fSx7dHlwZTp0LkZMT0FULGJ1ZmZlcjpsLHNpemU6MyxvZmZzZXQ6MTIsc3RyaWRlOjI4fSx7dHlwZTp0LkZMT0FULGJ1ZmZlcjpsLHNpemU6MSxvZmZzZXQ6MjQsc3RyaWRlOjI4fV0pLHU9aSh0KTt1LmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCx1LmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MSx1LmF0dHJpYnV0ZXMud2VpZ2h0LmxvY2F0aW9uPTI7dmFyIGg9bmV3IHModCxsLGMsdSk7cmV0dXJuIGgudXBkYXRlKGUpLGh9O3ZhciBvPVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtmdW5jdGlvbiBzKHQsZSxyLG4pe3RoaXMuZ2w9dCx0aGlzLmJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5zaGFkZXI9bix0aGlzLnBpeGVsUmF0aW89MSx0aGlzLmJvdW5kcz1bWy0xZTMsLTFlMywtMWUzXSxbMWUzLDFlMywxZTNdXSx0aGlzLnBvc2l0aW9uPVswLDAsMF0sdGhpcy5saW5lV2lkdGg9WzIsMiwyXSx0aGlzLmNvbG9ycz1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuZW5hYmxlZD1bITAsITAsITBdLHRoaXMuZHJhd1NpZGVzPVshMCwhMCwhMF0sdGhpcy5heGVzPW51bGx9dmFyIGw9cy5wcm90b3R5cGUsYz1bMCwwLDBdLHU9WzAsMCwwXSxoPVswLDBdO2wuaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiExfSxsLmRyYXdUcmFuc3BhcmVudD1mdW5jdGlvbih0KXt9LGwuZHJhdz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdsLHI9dGhpcy52YW8sbj10aGlzLnNoYWRlcjtyLmJpbmQoKSxuLmJpbmQoKTt2YXIgYSxpPXQubW9kZWx8fG8scz10LnZpZXd8fG8sbD10LnByb2plY3Rpb258fG87dGhpcy5heGVzJiYoYT10aGlzLmF4ZXMubGFzdEN1YmVQcm9wcy5heGlzKTtmb3IodmFyIGY9YyxwPXUsZD0wO2Q8MzsrK2QpYSYmYVtkXTwwPyhmW2RdPXRoaXMuYm91bmRzWzBdW2RdLHBbZF09dGhpcy5ib3VuZHNbMV1bZF0pOihmW2RdPXRoaXMuYm91bmRzWzFdW2RdLHBbZF09dGhpcy5ib3VuZHNbMF1bZF0pO2hbMF09ZS5kcmF3aW5nQnVmZmVyV2lkdGgsaFsxXT1lLmRyYXdpbmdCdWZmZXJIZWlnaHQsbi51bmlmb3Jtcy5tb2RlbD1pLG4udW5pZm9ybXMudmlldz1zLG4udW5pZm9ybXMucHJvamVjdGlvbj1sLG4udW5pZm9ybXMuY29vcmRpbmF0ZXM9W3RoaXMucG9zaXRpb24sZixwXSxuLnVuaWZvcm1zLmNvbG9ycz10aGlzLmNvbG9ycyxuLnVuaWZvcm1zLnNjcmVlblNoYXBlPWg7Zm9yKGQ9MDtkPDM7KytkKW4udW5pZm9ybXMubGluZVdpZHRoPXRoaXMubGluZVdpZHRoW2RdKnRoaXMucGl4ZWxSYXRpbyx0aGlzLmVuYWJsZWRbZF0mJihyLmRyYXcoZS5UUklBTkdMRVMsNiw2KmQpLHRoaXMuZHJhd1NpZGVzW2RdJiZyLmRyYXcoZS5UUklBTkdMRVMsMTIsMTgrMTIqZCkpO3IudW5iaW5kKCl9LGwudXBkYXRlPWZ1bmN0aW9uKHQpe3QmJigiYm91bmRzImluIHQmJih0aGlzLmJvdW5kcz10LmJvdW5kcyksInBvc2l0aW9uImluIHQmJih0aGlzLnBvc2l0aW9uPXQucG9zaXRpb24pLCJsaW5lV2lkdGgiaW4gdCYmKHRoaXMubGluZVdpZHRoPXQubGluZVdpZHRoKSwiY29sb3JzImluIHQmJih0aGlzLmNvbG9ycz10LmNvbG9ycyksImVuYWJsZWQiaW4gdCYmKHRoaXMuZW5hYmxlZD10LmVuYWJsZWQpLCJkcmF3U2lkZXMiaW4gdCYmKHRoaXMuZHJhd1NpZGVzPXQuZHJhd1NpZGVzKSl9LGwuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMudmFvLmRpc3Bvc2UoKSx0aGlzLmJ1ZmZlci5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMvaW5kZXgiOjMxMiwiZ2wtYnVmZmVyIjoyNDQsImdsLXZhbyI6MzI5fV0sMzE0OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2xzbGlmeSIpLGE9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudmVjMyBnZXRPcnRob2dvbmFsVmVjdG9yKHZlYzMgdikge1xuICAvLyBSZXR1cm4gdXAtdmVjdG9yIGZvciBvbmx5LXogdmVjdG9yLlxuICAvLyBSZXR1cm4gYXggKyBieSArIGN6ID0gMCwgYSBwb2ludCB0aGF0IGxpZXMgb24gdGhlIHBsYW5lIHRoYXQgaGFzIHYgYXMgYSBub3JtYWwgYW5kIHRoYXQgaXNuJ3QgKDAsMCwwKS5cbiAgLy8gRnJvbSB0aGUgYWJvdmUgaWYtc3RhdGVtZW50IHdlIGhhdmUgfHxhfHwgPiAwICBVICB8fGJ8fCA+IDAuXG4gIC8vIEFzc2lnbiB6ID0gMCwgeCA9IC1iLCB5ID0gYTpcbiAgLy8gYSotYiArIGIqYSArIGMqMCA9IC1iYSArIGJhICsgMCA9IDBcbiAgaWYgKHYueCp2LnggPiB2Lnoqdi56IHx8IHYueSp2LnkgPiB2Lnoqdi56KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2ZWMzKC12LnksIHYueCwgMC4wKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2ZWMzKDAuMCwgdi56LCAtdi55KSk7XG4gIH1cbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSB0dWJlIHZlcnRleCBhbmQgbm9ybWFsIGF0IHRoZSBnaXZlbiBpbmRleC5cbi8vXG4vLyBUaGUgcmV0dXJuZWQgdmVydGV4IGlzIGZvciBhIHR1YmUgcmluZyB3aXRoIGl0cyBjZW50ZXIgYXQgb3JpZ2luLCByYWRpdXMgb2YgbGVuZ3RoKGQpLCBwb2ludGluZyBpbiB0aGUgZGlyZWN0aW9uIG9mIGQuXG4vL1xuLy8gRWFjaCB0dWJlIHNlZ21lbnQgaXMgbWFkZSB1cCBvZiBhIHJpbmcgb2YgdmVydGljZXMuXG4vLyBUaGVzZSB2ZXJ0aWNlcyBhcmUgdXNlZCB0byBtYWtlIHVwIHRoZSB0cmlhbmdsZXMgb2YgdGhlIHR1YmUgYnkgY29ubmVjdGluZyB0aGVtIHRvZ2V0aGVyIGluIHRoZSB2ZXJ0ZXggYXJyYXkuXG4vLyBUaGUgaW5kZXhlcyBvZiB0dWJlIHNlZ21lbnRzIHJ1biBmcm9tIDAgdG8gOC5cbi8vXG52ZWMzIGdldFR1YmVQb3NpdGlvbih2ZWMzIGQsIGZsb2F0IGluZGV4LCBvdXQgdmVjMyBub3JtYWwpIHtcbiAgZmxvYXQgc2VnbWVudENvdW50ID0gOC4wO1xuXG4gIGZsb2F0IGFuZ2xlID0gMi4wICogMy4xNDE1OSAqIChpbmRleCAvIHNlZ21lbnRDb3VudCk7XG5cbiAgdmVjMyB1ID0gZ2V0T3J0aG9nb25hbFZlY3RvcihkKTtcbiAgdmVjMyB2ID0gbm9ybWFsaXplKGNyb3NzKHUsIGQpKTtcblxuICB2ZWMzIHggPSB1ICogY29zKGFuZ2xlKSAqIGxlbmd0aChkKTtcbiAgdmVjMyB5ID0gdiAqIHNpbihhbmdsZSkgKiBsZW5ndGgoZCk7XG4gIHZlYzMgdjMgPSB4ICsgeTtcblxuICBub3JtYWwgPSBub3JtYWxpemUodjMpO1xuXG4gIHJldHVybiB2Mztcbn1cblxuYXR0cmlidXRlIHZlYzQgdmVjdG9yO1xuYXR0cmlidXRlIHZlYzQgY29sb3IsIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzIgdXY7XG5cbnVuaWZvcm0gZmxvYXQgdmVjdG9yU2NhbGUsIHR1YmVTY2FsZTtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbiwgaW52ZXJzZU1vZGVsO1xudW5pZm9ybSB2ZWMzIGV5ZVBvc2l0aW9uLCBsaWdodFBvc2l0aW9uO1xuXG52YXJ5aW5nIHZlYzMgZl9ub3JtYWwsIGZfbGlnaHREaXJlY3Rpb24sIGZfZXllRGlyZWN0aW9uLCBmX2RhdGEsIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIC8vIFNjYWxlIHRoZSB2ZWN0b3IgbWFnbml0dWRlIHRvIHN0YXkgY29uc3RhbnQgd2l0aFxuICAvLyBtb2RlbCAmIHZpZXcgY2hhbmdlcy5cbiAgdmVjMyBub3JtYWw7XG4gIHZlYzMgWFlaID0gZ2V0VHViZVBvc2l0aW9uKG1hdDMobW9kZWwpICogKHR1YmVTY2FsZSAqIHZlY3Rvci53ICogbm9ybWFsaXplKHZlY3Rvci54eXopKSwgcG9zaXRpb24udywgbm9ybWFsKTtcbiAgdmVjNCB0dWJlUG9zaXRpb24gPSBtb2RlbCAqIHZlYzQocG9zaXRpb24ueHl6LCAxLjApICsgdmVjNChYWVosIDAuMCk7XG5cbiAgLy9MaWdodGluZyBnZW9tZXRyeSBwYXJhbWV0ZXJzXG4gIHZlYzQgY2FtZXJhQ29vcmRpbmF0ZSA9IHZpZXcgKiB0dWJlUG9zaXRpb247XG4gIGNhbWVyYUNvb3JkaW5hdGUueHl6IC89IGNhbWVyYUNvb3JkaW5hdGUudztcbiAgZl9saWdodERpcmVjdGlvbiA9IGxpZ2h0UG9zaXRpb24gLSBjYW1lcmFDb29yZGluYXRlLnh5ejtcbiAgZl9leWVEaXJlY3Rpb24gICA9IGV5ZVBvc2l0aW9uIC0gY2FtZXJhQ29vcmRpbmF0ZS54eXo7XG4gIGZfbm9ybWFsID0gbm9ybWFsaXplKCh2ZWM0KG5vcm1hbCwgMC4wKSAqIGludmVyc2VNb2RlbCkueHl6KTtcblxuICAvLyB2ZWM0IG1fcG9zaXRpb24gID0gbW9kZWwgKiB2ZWM0KHR1YmVQb3NpdGlvbiwgMS4wKTtcbiAgdmVjNCB0X3Bvc2l0aW9uICA9IHZpZXcgKiB0dWJlUG9zaXRpb247XG4gIGdsX1Bvc2l0aW9uICAgICAgPSBwcm9qZWN0aW9uICogdF9wb3NpdGlvbjtcblxuICBmX2NvbG9yICAgICAgICAgID0gY29sb3I7XG4gIGZfZGF0YSAgICAgICAgICAgPSB0dWJlUG9zaXRpb24ueHl6O1xuICBmX3Bvc2l0aW9uICAgICAgID0gcG9zaXRpb24ueHl6O1xuICBmX3V2ICAgICAgICAgICAgID0gdXY7XG59XG4iXSksaT1uKFsiI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGVcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgYmVja21hbm5EaXN0cmlidXRpb24oZmxvYXQgeCwgZmxvYXQgcm91Z2huZXNzKSB7XG4gIGZsb2F0IE5kb3RIID0gbWF4KHgsIDAuMDAwMSk7XG4gIGZsb2F0IGNvczJBbHBoYSA9IE5kb3RIICogTmRvdEg7XG4gIGZsb2F0IHRhbjJBbHBoYSA9IChjb3MyQWxwaGEgLSAxLjApIC8gY29zMkFscGhhO1xuICBmbG9hdCByb3VnaG5lc3MyID0gcm91Z2huZXNzICogcm91Z2huZXNzO1xuICBmbG9hdCBkZW5vbSA9IDMuMTQxNTkyNjUzNTg5NzkzICogcm91Z2huZXNzMiAqIGNvczJBbHBoYSAqIGNvczJBbHBoYTtcbiAgcmV0dXJuIGV4cCh0YW4yQWxwaGEgLyByb3VnaG5lc3MyKSAvIGRlbm9tO1xufVxuXG5mbG9hdCBjb29rVG9ycmFuY2VTcGVjdWxhcihcbiAgdmVjMyBsaWdodERpcmVjdGlvbixcbiAgdmVjMyB2aWV3RGlyZWN0aW9uLFxuICB2ZWMzIHN1cmZhY2VOb3JtYWwsXG4gIGZsb2F0IHJvdWdobmVzcyxcbiAgZmxvYXQgZnJlc25lbCkge1xuXG4gIGZsb2F0IFZkb3ROID0gbWF4KGRvdCh2aWV3RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcbiAgZmxvYXQgTGRvdE4gPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4wKTtcblxuICAvL0hhbGYgYW5nbGUgdmVjdG9yXG4gIHZlYzMgSCA9IG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbiArIHZpZXdEaXJlY3Rpb24pO1xuXG4gIC8vR2VvbWV0cmljIHRlcm1cbiAgZmxvYXQgTmRvdEggPSBtYXgoZG90KHN1cmZhY2VOb3JtYWwsIEgpLCAwLjApO1xuICBmbG9hdCBWZG90SCA9IG1heChkb3Qodmlld0RpcmVjdGlvbiwgSCksIDAuMDAwMDAxKTtcbiAgZmxvYXQgTGRvdEggPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBIKSwgMC4wMDAwMDEpO1xuICBmbG9hdCBHMSA9ICgyLjAgKiBOZG90SCAqIFZkb3ROKSAvIFZkb3RIO1xuICBmbG9hdCBHMiA9ICgyLjAgKiBOZG90SCAqIExkb3ROKSAvIExkb3RIO1xuICBmbG9hdCBHID0gbWluKDEuMCwgbWluKEcxLCBHMikpO1xuICBcbiAgLy9EaXN0cmlidXRpb24gdGVybVxuICBmbG9hdCBEID0gYmVja21hbm5EaXN0cmlidXRpb24oTmRvdEgsIHJvdWdobmVzcyk7XG5cbiAgLy9GcmVzbmVsIHRlcm1cbiAgZmxvYXQgRiA9IHBvdygxLjAgLSBWZG90TiwgZnJlc25lbCk7XG5cbiAgLy9NdWx0aXBseSB0ZXJtcyBhbmQgZG9uZVxuICByZXR1cm4gIEcgKiBGICogRCAvIG1heCgzLjE0MTU5MjY1ICogVmRvdE4sIDAuMDAwMDAxKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCByb3VnaG5lc3MsIGZyZXNuZWwsIGthbWJpZW50LCBrZGlmZnVzZSwga3NwZWN1bGFyLCBvcGFjaXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTtcblxudmFyeWluZyB2ZWMzIGZfbm9ybWFsLCBmX2xpZ2h0RGlyZWN0aW9uLCBmX2V5ZURpcmVjdGlvbiwgZl9kYXRhLCBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX3Bvc2l0aW9uKSkgZGlzY2FyZDtcbiAgdmVjMyBOID0gbm9ybWFsaXplKGZfbm9ybWFsKTtcbiAgdmVjMyBMID0gbm9ybWFsaXplKGZfbGlnaHREaXJlY3Rpb24pO1xuICB2ZWMzIFYgPSBub3JtYWxpemUoZl9leWVEaXJlY3Rpb24pO1xuXG4gIGlmKGdsX0Zyb250RmFjaW5nKSB7XG4gICAgTiA9IC1OO1xuICB9XG5cbiAgZmxvYXQgc3BlY3VsYXIgPSBtaW4oMS4wLCBtYXgoMC4wLCBjb29rVG9ycmFuY2VTcGVjdWxhcihMLCBWLCBOLCByb3VnaG5lc3MsIGZyZXNuZWwpKSk7XG4gIGZsb2F0IGRpZmZ1c2UgID0gbWluKGthbWJpZW50ICsga2RpZmZ1c2UgKiBtYXgoZG90KE4sIEwpLCAwLjApLCAxLjApO1xuXG4gIHZlYzQgc3VyZmFjZUNvbG9yID0gZl9jb2xvciAqIHRleHR1cmUyRCh0ZXh0dXJlLCBmX3V2KTtcbiAgdmVjNCBsaXRDb2xvciA9IHN1cmZhY2VDb2xvci5hICogdmVjNChkaWZmdXNlICogc3VyZmFjZUNvbG9yLnJnYiArIGtzcGVjdWxhciAqIHZlYzMoMSwxLDEpICogc3BlY3VsYXIsICAxLjApO1xuXG4gIGdsX0ZyYWdDb2xvciA9IGxpdENvbG9yICogb3BhY2l0eTtcbn1cbiJdKSxvPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZlYzMgZ2V0T3J0aG9nb25hbFZlY3Rvcih2ZWMzIHYpIHtcbiAgLy8gUmV0dXJuIHVwLXZlY3RvciBmb3Igb25seS16IHZlY3Rvci5cbiAgLy8gUmV0dXJuIGF4ICsgYnkgKyBjeiA9IDAsIGEgcG9pbnQgdGhhdCBsaWVzIG9uIHRoZSBwbGFuZSB0aGF0IGhhcyB2IGFzIGEgbm9ybWFsIGFuZCB0aGF0IGlzbid0ICgwLDAsMCkuXG4gIC8vIEZyb20gdGhlIGFib3ZlIGlmLXN0YXRlbWVudCB3ZSBoYXZlIHx8YXx8ID4gMCAgVSAgfHxifHwgPiAwLlxuICAvLyBBc3NpZ24geiA9IDAsIHggPSAtYiwgeSA9IGE6XG4gIC8vIGEqLWIgKyBiKmEgKyBjKjAgPSAtYmEgKyBiYSArIDAgPSAwXG4gIGlmICh2Lngqdi54ID4gdi56KnYueiB8fCB2Lnkqdi55ID4gdi56KnYueikge1xuICAgIHJldHVybiBub3JtYWxpemUodmVjMygtdi55LCB2LngsIDAuMCkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBub3JtYWxpemUodmVjMygwLjAsIHYueiwgLXYueSkpO1xuICB9XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgdHViZSB2ZXJ0ZXggYW5kIG5vcm1hbCBhdCB0aGUgZ2l2ZW4gaW5kZXguXG4vL1xuLy8gVGhlIHJldHVybmVkIHZlcnRleCBpcyBmb3IgYSB0dWJlIHJpbmcgd2l0aCBpdHMgY2VudGVyIGF0IG9yaWdpbiwgcmFkaXVzIG9mIGxlbmd0aChkKSwgcG9pbnRpbmcgaW4gdGhlIGRpcmVjdGlvbiBvZiBkLlxuLy9cbi8vIEVhY2ggdHViZSBzZWdtZW50IGlzIG1hZGUgdXAgb2YgYSByaW5nIG9mIHZlcnRpY2VzLlxuLy8gVGhlc2UgdmVydGljZXMgYXJlIHVzZWQgdG8gbWFrZSB1cCB0aGUgdHJpYW5nbGVzIG9mIHRoZSB0dWJlIGJ5IGNvbm5lY3RpbmcgdGhlbSB0b2dldGhlciBpbiB0aGUgdmVydGV4IGFycmF5LlxuLy8gVGhlIGluZGV4ZXMgb2YgdHViZSBzZWdtZW50cyBydW4gZnJvbSAwIHRvIDguXG4vL1xudmVjMyBnZXRUdWJlUG9zaXRpb24odmVjMyBkLCBmbG9hdCBpbmRleCwgb3V0IHZlYzMgbm9ybWFsKSB7XG4gIGZsb2F0IHNlZ21lbnRDb3VudCA9IDguMDtcblxuICBmbG9hdCBhbmdsZSA9IDIuMCAqIDMuMTQxNTkgKiAoaW5kZXggLyBzZWdtZW50Q291bnQpO1xuXG4gIHZlYzMgdSA9IGdldE9ydGhvZ29uYWxWZWN0b3IoZCk7XG4gIHZlYzMgdiA9IG5vcm1hbGl6ZShjcm9zcyh1LCBkKSk7XG5cbiAgdmVjMyB4ID0gdSAqIGNvcyhhbmdsZSkgKiBsZW5ndGgoZCk7XG4gIHZlYzMgeSA9IHYgKiBzaW4oYW5nbGUpICogbGVuZ3RoKGQpO1xuICB2ZWMzIHYzID0geCArIHk7XG5cbiAgbm9ybWFsID0gbm9ybWFsaXplKHYzKTtcblxuICByZXR1cm4gdjM7XG59XG5cbmF0dHJpYnV0ZSB2ZWM0IHZlY3RvcjtcbmF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgaWQ7XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gZmxvYXQgdHViZVNjYWxlO1xuXG52YXJ5aW5nIHZlYzMgZl9wb3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmX2lkO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzMgbm9ybWFsO1xuICB2ZWMzIFhZWiA9IGdldFR1YmVQb3NpdGlvbihtYXQzKG1vZGVsKSAqICh0dWJlU2NhbGUgKiB2ZWN0b3IudyAqIG5vcm1hbGl6ZSh2ZWN0b3IueHl6KSksIHBvc2l0aW9uLncsIG5vcm1hbCk7XG4gIHZlYzQgdHViZVBvc2l0aW9uID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLnh5eiwgMS4wKSArIHZlYzQoWFlaLCAwLjApO1xuXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiB0dWJlUG9zaXRpb247XG4gIGZfaWQgICAgICAgID0gaWQ7XG4gIGZfcG9zaXRpb24gID0gcG9zaXRpb24ueHl6O1xufVxuIl0pLHM9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHBpY2tJZDtcblxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQgZl9pZDtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX3Bvc2l0aW9uKSkgZGlzY2FyZDtcblxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tJZCwgZl9pZC54eXopO1xufSJdKTtyLm1lc2hTaGFkZXI9e3ZlcnRleDphLGZyYWdtZW50OmksYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWM0In0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25hbWU6InV2Iix0eXBlOiJ2ZWMyIn0se25hbWU6InZlY3RvciIsdHlwZToidmVjNCJ9XX0sci5waWNrU2hhZGVyPXt2ZXJ0ZXg6byxmcmFnbWVudDpzLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjNCJ9LHtuYW1lOiJpZCIsdHlwZToidmVjNCJ9LHtuYW1lOiJ2ZWN0b3IiLHR5cGU6InZlYzQifV19fSx7Z2xzbGlmeTo0MTF9XSwzMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtdmVjMyIpLGE9dCgiZ2wtdmVjNCIpLGk9WyJ4eXoiLCJ4enkiLCJ5eHoiLCJ5engiLCJ6eHkiLCJ6eXgiXSxvPWZ1bmN0aW9uKHQsZSxyLGkpe2Zvcih2YXIgbz0wLHM9MDtzPHQubGVuZ3RoO3MrKylmb3IodmFyIGw9dFtzXS52ZWxvY2l0aWVzLGM9MDtjPGwubGVuZ3RoO2MrKylvPU1hdGgubWF4KG8sbi5sZW5ndGgobFtjXSkpO3ZhciB1PXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUscixpKXtmb3IodmFyIG89dC5wb2ludHMscz10LnZlbG9jaXRpZXMsbD10LmRpdmVyZ2VuY2VzLGM9W10sdT1bXSxoPVtdLGY9W10scD1bXSxkPVtdLGc9MCx2PTAsbT1hLmNyZWF0ZSgpLHk9YS5jcmVhdGUoKSx4PTA7eDxvLmxlbmd0aDt4Kyspe3ZhciBiPW9beF0sXz1zW3hdLHc9bFt4XTswPT09ZSYmKHc9LjA1KnIpLHY9bi5sZW5ndGgoXykvaSxtPWEuY3JlYXRlKCksbi5jb3B5KG0sXyksbVszXT13O2Zvcih2YXIgaz0wO2s8ODtrKyspcFtrXT1bYlswXSxiWzFdLGJbMl0sa107aWYoZi5sZW5ndGg+MClmb3Ioaz0wO2s8ODtrKyspe3ZhciBUPShrKzEpJTg7Yy5wdXNoKGZba10scFtrXSxwW1RdLHBbVF0sZltUXSxmW2tdKSxoLnB1c2goeSxtLG0sbSx5LHkpLGQucHVzaChnLHYsdix2LGcsZyk7dmFyIE09Yy5sZW5ndGg7dS5wdXNoKFtNLTYsTS01LE0tNF0sW00tMyxNLTIsTS0xXSl9dmFyIEE9ZjtmPXAscD1BO3ZhciBTPXk7eT1tLG09Uzt2YXIgRT1nO2c9dix2PUV9cmV0dXJue3Bvc2l0aW9uczpjLGNlbGxzOnUsdmVjdG9yczpoLHZlcnRleEludGVuc2l0eTpkfX0odCxyLGksbyl9KSxoPVtdLGY9W10scD1bXSxkPVtdO2ZvcihzPTA7czx1Lmxlbmd0aDtzKyspe3ZhciBnPXVbc10sdj1oLmxlbmd0aDtoPWguY29uY2F0KGcucG9zaXRpb25zKSxwPXAuY29uY2F0KGcudmVjdG9ycyksZD1kLmNvbmNhdChnLnZlcnRleEludGVuc2l0eSk7Zm9yKGM9MDtjPGcuY2VsbHMubGVuZ3RoO2MrKyl7dmFyIG09Zy5jZWxsc1tjXSx5PVtdO2YucHVzaCh5KTtmb3IodmFyIHg9MDt4PG0ubGVuZ3RoO3grKyl5LnB1c2gobVt4XSt2KX19cmV0dXJue3Bvc2l0aW9uczpoLGNlbGxzOmYsdmVjdG9yczpwLHZlcnRleEludGVuc2l0eTpkLGNvbG9ybWFwOmV9fSxzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10Lmxlbmd0aDtmb3Iocj0wO3I8bjtyKyspe3ZhciBhPXRbcl07aWYoYT09PWUpcmV0dXJuIHI7aWYoYT5lKXJldHVybiByLTF9cmV0dXJuIHJ9LGw9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PGU/ZTp0PnI/cjp0fSxjPWZ1bmN0aW9uKHQpe3ZhciBlPTEvMDt0LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSk7Zm9yKHZhciByPXQubGVuZ3RoLG49MTtuPHI7bisrKXt2YXIgYT1NYXRoLmFicyh0W25dLXRbbi0xXSk7YTxlJiYoZT1hKX1yZXR1cm4gZX07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5zdGFydGluZ1Bvc2l0aW9ucyxhPXQubWF4TGVuZ3RofHwxZTMsdT10LnR1YmVTaXplfHwxLGg9dC5hYnNvbHV0ZVR1YmVTaXplLGY9dC5ncmlkRmlsbHx8Iit4K3kreiIscD17fTstMSE9PWYuaW5kZXhPZigiLXgiKSYmKHAucmV2ZXJzZWRYPSEwKSwtMSE9PWYuaW5kZXhPZigiLXkiKSYmKHAucmV2ZXJzZWRZPSEwKSwtMSE9PWYuaW5kZXhPZigiLXoiKSYmKHAucmV2ZXJzZWRaPSEwKSxwLmZpbGxlZD1pLmluZGV4T2YoZi5yZXBsYWNlKC8tL2csIiIpLnJlcGxhY2UoL1wrL2csIiIpKTt2YXIgZD10LmdldFZlbG9jaXR5fHxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBhPWUudmVjdG9ycyxpPWUubWVzaGdyaWQsbz10WzBdLGM9dFsxXSx1PXRbMl0saD1pWzBdLmxlbmd0aCxmPWlbMV0ubGVuZ3RoLHA9aVsyXS5sZW5ndGgsZD1zKGlbMF0sbyksZz1zKGlbMV0sYyksdj1zKGlbMl0sdSksbT1kKzEseT1nKzEseD12KzE7aWYoZD1sKGQsMCxoLTEpLG09bChtLDAsaC0xKSxnPWwoZywwLGYtMSkseT1sKHksMCxmLTEpLHY9bCh2LDAscC0xKSx4PWwoeCwwLHAtMSksZDwwfHxnPDB8fHY8MHx8bT5oLTF8fHk+Zi0xfHx4PnAtMSlyZXR1cm4gbi5jcmVhdGUoKTt2YXIgYixfLHcsayxULE0sQT1pWzBdW2RdLFM9aVswXVttXSxFPWlbMV1bZ10sTD1pWzFdW3ldLEM9aVsyXVt2XSxQPShvLUEpLyhTLUEpLE89KGMtRSkvKEwtRSksej0odS1DKS8oaVsyXVt4XS1DKTtzd2l0Y2goaXNGaW5pdGUoUCl8fChQPS41KSxpc0Zpbml0ZShPKXx8KE89LjUpLGlzRmluaXRlKHopfHwoej0uNSksci5yZXZlcnNlZFgmJihkPWgtMS1kLG09aC0xLW0pLHIucmV2ZXJzZWRZJiYoZz1mLTEtZyx5PWYtMS15KSxyLnJldmVyc2VkWiYmKHY9cC0xLXYseD1wLTEteCksci5maWxsZWQpe2Nhc2UgNTpUPXYsTT14LHc9ZypwLGs9eSpwLGI9ZCpwKmYsXz1tKnAqZjticmVhaztjYXNlIDQ6VD12LE09eCxiPWQqcCxfPW0qcCx3PWcqcCpoLGs9eSpwKmg7YnJlYWs7Y2FzZSAzOnc9ZyxrPXksVD12KmYsTT14KmYsYj1kKmYqcCxfPW0qZipwO2JyZWFrO2Nhc2UgMjp3PWcsaz15LGI9ZCpmLF89bSpmLFQ9dipmKmgsTT14KmYqaDticmVhaztjYXNlIDE6Yj1kLF89bSxUPXYqaCxNPXgqaCx3PWcqaCpwLGs9eSpoKnA7YnJlYWs7ZGVmYXVsdDpiPWQsXz1tLHc9ZypoLGs9eSpoLFQ9dipoKmYsTT14KmgqZn12YXIgST1hW2IrdytUXSxEPWFbYit3K01dLFI9YVtiK2srVF0sRj1hW2IraytNXSxCPWFbXyt3K1RdLE49YVtfK3crTV0saj1hW18raytUXSxWPWFbXytrK01dLFU9bi5jcmVhdGUoKSxxPW4uY3JlYXRlKCksSD1uLmNyZWF0ZSgpLEc9bi5jcmVhdGUoKTtuLmxlcnAoVSxJLEIsUCksbi5sZXJwKHEsRCxOLFApLG4ubGVycChILFIsaixQKSxuLmxlcnAoRyxGLFYsUCk7dmFyIFk9bi5jcmVhdGUoKSxXPW4uY3JlYXRlKCk7bi5sZXJwKFksVSxILE8pLG4ubGVycChXLHEsRyxPKTt2YXIgWD1uLmNyZWF0ZSgpO3JldHVybiBuLmxlcnAoWCxZLFcseiksWH0oZSx0LHApfSxnPXQuZ2V0RGl2ZXJnZW5jZXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1uLmNyZWF0ZSgpLGE9MWUtNDtuLmFkZChyLHQsW2EsMCwwXSk7dmFyIGk9ZChyKTtuLnN1YnRyYWN0KGksaSxlKSxuLnNjYWxlKGksaSwxZTQpLG4uYWRkKHIsdCxbMCxhLDBdKTt2YXIgbz1kKHIpO24uc3VidHJhY3QobyxvLGUpLG4uc2NhbGUobyxvLDFlNCksbi5hZGQocix0LFswLDAsYV0pO3ZhciBzPWQocik7cmV0dXJuIG4uc3VidHJhY3QocyxzLGUpLG4uc2NhbGUocyxzLDFlNCksbi5hZGQocixpLG8pLG4uYWRkKHIscixzKSxyfSx2PVtdLG09ZVswXVswXSx5PWVbMF1bMV0seD1lWzBdWzJdLGI9ZVsxXVswXSxfPWVbMV1bMV0sdz1lWzFdWzJdLGs9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxyPXRbMV0sbj10WzJdO3JldHVybiEoZTxtfHxlPmJ8fHI8eXx8cj5ffHxuPHh8fG4+dyl9LFQ9MTAqbi5kaXN0YW5jZShlWzBdLGVbMV0pL2EsTT1UKlQsQT0xLFM9MCxFPXIubGVuZ3RoO0U+MSYmKEE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9W10sbj1bXSxhPXt9LGk9e30sbz17fSxzPXQubGVuZ3RoLGw9MDtsPHM7bCsrKXt2YXIgdT10W2xdLGg9dVswXSxmPXVbMV0scD11WzJdO2FbaF18fChlLnB1c2goaCksYVtoXT0hMCksaVtmXXx8KHIucHVzaChmKSxpW2ZdPSEwKSxvW3BdfHwobi5wdXNoKHApLG9bcF09ITApfXZhciBkPWMoZSksZz1jKHIpLHY9YyhuKSxtPU1hdGgubWluKGQsZyx2KTtyZXR1cm4gaXNGaW5pdGUobSk/bToxfShyKSk7Zm9yKHZhciBMPTA7TDxFO0wrKyl7dmFyIEM9bi5jcmVhdGUoKTtuLmNvcHkoQyxyW0xdKTt2YXIgUD1bQ10sTz1bXSx6PWQoQyksST1DO08ucHVzaCh6KTt2YXIgRD1bXSxSPWcoQyx6KSxGPW4ubGVuZ3RoKFIpO2lzRmluaXRlKEYpJiZGPlMmJihTPUYpLEQucHVzaChGKSx2LnB1c2goe3BvaW50czpQLHZlbG9jaXRpZXM6TyxkaXZlcmdlbmNlczpEfSk7Zm9yKHZhciBCPTA7QjwxMDAqYSYmUC5sZW5ndGg8YSYmayhDKTspe0IrKzt2YXIgTj1uLmNsb25lKHopLGo9bi5zcXVhcmVkTGVuZ3RoKE4pO2lmKDA9PT1qKWJyZWFrO2lmKGo+TSYmbi5zY2FsZShOLE4sVC9NYXRoLnNxcnQoaikpLG4uYWRkKE4sTixDKSx6PWQoTiksbi5zcXVhcmVkRGlzdGFuY2UoSSxOKS1NPi0xZS00Kk0pe1AucHVzaChOKSxJPU4sTy5wdXNoKHopO1I9ZyhOLHopLEY9bi5sZW5ndGgoUik7aXNGaW5pdGUoRikmJkY+UyYmKFM9RiksRC5wdXNoKEYpfUM9Tn19dmFyIFY9byh2LHQuY29sb3JtYXAsUyxBKTtyZXR1cm4gaD9WLnR1YmVTY2FsZT1oOigwPT09UyYmKFM9MSksVi50dWJlU2NhbGU9LjUqdSpBL1MpLFZ9O3ZhciB1PXQoIi4vbGliL3NoYWRlcnMiKSxoPXQoImdsLWNvbmUzZCIpLmNyZWF0ZU1lc2g7ZS5leHBvcnRzLmNyZWF0ZVR1YmVNZXNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGgodCxlLHtzaGFkZXJzOnUsdHJhY2VUeXBlOiJzdHJlYW10dWJlIn0pfX0seyIuL2xpYi9zaGFkZXJzIjozMTQsImdsLWNvbmUzZCI6MjQ1LCJnbC12ZWMzIjozNDgsImdsLXZlYzQiOjM4NH1dLDMxNjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdsLXNoYWRlciIpLGE9dCgiZ2xzbGlmeSIpLGk9YShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWM0IHV2O1xuYXR0cmlidXRlIHZlYzMgZjtcbmF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDtcblxudW5pZm9ybSB2ZWMzIG9iamVjdE9mZnNldDtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbiwgaW52ZXJzZU1vZGVsO1xudW5pZm9ybSB2ZWMzIGxpZ2h0UG9zaXRpb24sIGV5ZVBvc2l0aW9uO1xudW5pZm9ybSBzYW1wbGVyMkQgY29sb3JtYXA7XG5cbnZhcnlpbmcgZmxvYXQgdmFsdWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xudmFyeWluZyB2ZWMyIHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXllRGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xudmFyeWluZyB2ZWM0IHZDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIGxvY2FsQ29vcmRpbmF0ZSA9IHZlYzModXYuencsIGYueCk7XG4gIHdvcmxkQ29vcmRpbmF0ZSA9IG9iamVjdE9mZnNldCArIGxvY2FsQ29vcmRpbmF0ZTtcbiAgdmVjNCB3b3JsZFBvc2l0aW9uID0gbW9kZWwgKiB2ZWM0KHdvcmxkQ29vcmRpbmF0ZSwgMS4wKTtcbiAgdmVjNCBjbGlwUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIHdvcmxkUG9zaXRpb247XG4gIGdsX1Bvc2l0aW9uID0gY2xpcFBvc2l0aW9uO1xuICBraWxsID0gZi55O1xuICB2YWx1ZSA9IGYuejtcbiAgcGxhbmVDb29yZGluYXRlID0gdXYueHk7XG5cbiAgdkNvbG9yID0gdGV4dHVyZTJEKGNvbG9ybWFwLCB2ZWMyKHZhbHVlLCB2YWx1ZSkpO1xuXG4gIC8vTGlnaHRpbmcgZ2VvbWV0cnkgcGFyYW1ldGVyc1xuICB2ZWM0IGNhbWVyYUNvb3JkaW5hdGUgPSB2aWV3ICogd29ybGRQb3NpdGlvbjtcbiAgY2FtZXJhQ29vcmRpbmF0ZS54eXogLz0gY2FtZXJhQ29vcmRpbmF0ZS53O1xuICBsaWdodERpcmVjdGlvbiA9IGxpZ2h0UG9zaXRpb24gLSBjYW1lcmFDb29yZGluYXRlLnh5ejtcbiAgZXllRGlyZWN0aW9uICAgPSBleWVQb3NpdGlvbiAtIGNhbWVyYUNvb3JkaW5hdGUueHl6O1xuICBzdXJmYWNlTm9ybWFsICA9IG5vcm1hbGl6ZSgodmVjNChub3JtYWwsMCkgKiBpbnZlcnNlTW9kZWwpLnh5eik7XG59XG4iXSksbz1hKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgYmVja21hbm5EaXN0cmlidXRpb24oZmxvYXQgeCwgZmxvYXQgcm91Z2huZXNzKSB7XG4gIGZsb2F0IE5kb3RIID0gbWF4KHgsIDAuMDAwMSk7XG4gIGZsb2F0IGNvczJBbHBoYSA9IE5kb3RIICogTmRvdEg7XG4gIGZsb2F0IHRhbjJBbHBoYSA9IChjb3MyQWxwaGEgLSAxLjApIC8gY29zMkFscGhhO1xuICBmbG9hdCByb3VnaG5lc3MyID0gcm91Z2huZXNzICogcm91Z2huZXNzO1xuICBmbG9hdCBkZW5vbSA9IDMuMTQxNTkyNjUzNTg5NzkzICogcm91Z2huZXNzMiAqIGNvczJBbHBoYSAqIGNvczJBbHBoYTtcbiAgcmV0dXJuIGV4cCh0YW4yQWxwaGEgLyByb3VnaG5lc3MyKSAvIGRlbm9tO1xufVxuXG5mbG9hdCBiZWNrbWFublNwZWN1bGFyKFxuICB2ZWMzIGxpZ2h0RGlyZWN0aW9uLFxuICB2ZWMzIHZpZXdEaXJlY3Rpb24sXG4gIHZlYzMgc3VyZmFjZU5vcm1hbCxcbiAgZmxvYXQgcm91Z2huZXNzKSB7XG4gIHJldHVybiBiZWNrbWFubkRpc3RyaWJ1dGlvbihkb3Qoc3VyZmFjZU5vcm1hbCwgbm9ybWFsaXplKGxpZ2h0RGlyZWN0aW9uICsgdmlld0RpcmVjdGlvbikpLCByb3VnaG5lc3MpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzIGxvd2VyQm91bmQsIHVwcGVyQm91bmQ7XG51bmlmb3JtIGZsb2F0IGNvbnRvdXJUaW50O1xudW5pZm9ybSB2ZWM0IGNvbnRvdXJDb2xvcjtcbnVuaWZvcm0gc2FtcGxlcjJEIGNvbG9ybWFwO1xudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcywgZnJlc25lbCwga2FtYmllbnQsIGtkaWZmdXNlLCBrc3BlY3VsYXIsIG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0IHZlcnRleENvbG9yO1xuXG52YXJ5aW5nIGZsb2F0IHZhbHVlLCBraWxsO1xudmFyeWluZyB2ZWMzIHdvcmxkQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXllRGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xudmFyeWluZyB2ZWM0IHZDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBpZiAoKGtpbGwgPiAwLjApIHx8XG4gICAgICAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCB3b3JsZENvb3JkaW5hdGUpKSkgZGlzY2FyZDtcblxuICB2ZWMzIE4gPSBub3JtYWxpemUoc3VyZmFjZU5vcm1hbCk7XG4gIHZlYzMgViA9IG5vcm1hbGl6ZShleWVEaXJlY3Rpb24pO1xuICB2ZWMzIEwgPSBub3JtYWxpemUobGlnaHREaXJlY3Rpb24pO1xuXG4gIGlmKGdsX0Zyb250RmFjaW5nKSB7XG4gICAgTiA9IC1OO1xuICB9XG5cbiAgZmxvYXQgc3BlY3VsYXIgPSBtYXgoYmVja21hbm5TcGVjdWxhcihMLCBWLCBOLCByb3VnaG5lc3MpLCAwLik7XG4gIGZsb2F0IGRpZmZ1c2UgID0gbWluKGthbWJpZW50ICsga2RpZmZ1c2UgKiBtYXgoZG90KE4sIEwpLCAwLjApLCAxLjApO1xuXG4gIC8vZGVjaWRlIGhvdyB0byBpbnRlcnBvbGF0ZSBjb2xvciBcdTIwMTQgaW4gdmVydGV4IG9yIGluIGZyYWdtZW50XG4gIHZlYzQgc3VyZmFjZUNvbG9yID1cbiAgICBzdGVwKHZlcnRleENvbG9yLCAuNSkgKiB0ZXh0dXJlMkQoY29sb3JtYXAsIHZlYzIodmFsdWUsIHZhbHVlKSkgK1xuICAgIHN0ZXAoLjUsIHZlcnRleENvbG9yKSAqIHZDb2xvcjtcblxuICB2ZWM0IGxpdENvbG9yID0gc3VyZmFjZUNvbG9yLmEgKiB2ZWM0KGRpZmZ1c2UgKiBzdXJmYWNlQ29sb3IucmdiICsga3NwZWN1bGFyICogdmVjMygxLDEsMSkgKiBzcGVjdWxhciwgIDEuMCk7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gbWl4KGxpdENvbG9yLCBjb250b3VyQ29sb3IsIGNvbnRvdXJUaW50KSAqIG9wYWNpdHk7XG59XG4iXSkscz1hKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzQgdXY7XG5hdHRyaWJ1dGUgZmxvYXQgZjtcblxudW5pZm9ybSB2ZWMzIG9iamVjdE9mZnNldDtcbnVuaWZvcm0gbWF0MyBwZXJtdXRhdGlvbjtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gZmxvYXQgaGVpZ2h0LCB6T2Zmc2V0O1xudW5pZm9ybSBzYW1wbGVyMkQgY29sb3JtYXA7XG5cbnZhcnlpbmcgZmxvYXQgdmFsdWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xudmFyeWluZyB2ZWMyIHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXllRGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xudmFyeWluZyB2ZWM0IHZDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIGRhdGFDb29yZGluYXRlID0gcGVybXV0YXRpb24gKiB2ZWMzKHV2Lnh5LCBoZWlnaHQpO1xuICB3b3JsZENvb3JkaW5hdGUgPSBvYmplY3RPZmZzZXQgKyBkYXRhQ29vcmRpbmF0ZTtcbiAgdmVjNCB3b3JsZFBvc2l0aW9uID0gbW9kZWwgKiB2ZWM0KHdvcmxkQ29vcmRpbmF0ZSwgMS4wKTtcblxuICB2ZWM0IGNsaXBQb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogd29ybGRQb3NpdGlvbjtcbiAgY2xpcFBvc2l0aW9uLnogKz0gek9mZnNldDtcblxuICBnbF9Qb3NpdGlvbiA9IGNsaXBQb3NpdGlvbjtcbiAgdmFsdWUgPSBmICsgb2JqZWN0T2Zmc2V0Lno7XG4gIGtpbGwgPSAtMS4wO1xuICBwbGFuZUNvb3JkaW5hdGUgPSB1di56dztcblxuICB2Q29sb3IgPSB0ZXh0dXJlMkQoY29sb3JtYXAsIHZlYzIodmFsdWUsIHZhbHVlKSk7XG5cbiAgLy9Eb24ndCBkbyBsaWdodGluZyBmb3IgY29udG91cnNcbiAgc3VyZmFjZU5vcm1hbCAgID0gdmVjMygxLDAsMCk7XG4gIGV5ZURpcmVjdGlvbiAgICA9IHZlYzMoMCwxLDApO1xuICBsaWdodERpcmVjdGlvbiAgPSB2ZWMzKDAsMCwxKTtcbn1cbiJdKSxsPWEoWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMyIHNoYXBlO1xudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHBpY2tJZDtcblxudmFyeWluZyBmbG9hdCB2YWx1ZSwga2lsbDtcbnZhcnlpbmcgdmVjMyB3b3JsZENvb3JkaW5hdGU7XG52YXJ5aW5nIHZlYzIgcGxhbmVDb29yZGluYXRlO1xudmFyeWluZyB2ZWMzIHN1cmZhY2VOb3JtYWw7XG5cbnZlYzIgc3BsaXRGbG9hdChmbG9hdCB2KSB7XG4gIGZsb2F0IHZoID0gMjU1LjAgKiB2O1xuICBmbG9hdCB1cHBlciA9IGZsb29yKHZoKTtcbiAgZmxvYXQgbG93ZXIgPSBmcmFjdCh2aCk7XG4gIHJldHVybiB2ZWMyKHVwcGVyIC8gMjU1LjAsIGZsb29yKGxvd2VyICogMTYuMCkgLyAxNi4wKTtcbn1cblxudm9pZCBtYWluKCkge1xuICBpZiAoKGtpbGwgPiAwLjApIHx8XG4gICAgICAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCB3b3JsZENvb3JkaW5hdGUpKSkgZGlzY2FyZDtcblxuICB2ZWMyIHV4ID0gc3BsaXRGbG9hdChwbGFuZUNvb3JkaW5hdGUueCAvIHNoYXBlLngpO1xuICB2ZWMyIHV5ID0gc3BsaXRGbG9hdChwbGFuZUNvb3JkaW5hdGUueSAvIHNoYXBlLnkpO1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tJZCwgdXgueCwgdXkueCwgdXgueSArICh1eS55LzE2LjApKTtcbn1cbiJdKTtyLmNyZWF0ZVNoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQsaSxvLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJ2ZWMzIn0se25hbWU6Im5vcm1hbCIsdHlwZToidmVjMyJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZS5hdHRyaWJ1dGVzLm5vcm1hbC5sb2NhdGlvbj0yLGV9LHIuY3JlYXRlUGlja1NoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQsaSxsLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJ2ZWMzIn0se25hbWU6Im5vcm1hbCIsdHlwZToidmVjMyJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZS5hdHRyaWJ1dGVzLm5vcm1hbC5sb2NhdGlvbj0yLGV9LHIuY3JlYXRlQ29udG91clNoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQscyxvLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJmbG9hdCJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZX0sci5jcmVhdGVQaWNrQ29udG91clNoYWRlcj1mdW5jdGlvbih0KXt2YXIgZT1uKHQscyxsLG51bGwsW3tuYW1lOiJ1diIsdHlwZToidmVjNCJ9LHtuYW1lOiJmIix0eXBlOiJmbG9hdCJ9XSk7cmV0dXJuIGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5mLmxvY2F0aW9uPTEsZX19LHsiZ2wtc2hhZGVyIjozMDQsZ2xzbGlmeTo0MTF9XSwzMTc6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bMTEzXVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6MTEzfV0sMzE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9eShlKSxuPWIoZSkscz14KGUpLGw9XyhlKSxjPWEoZSksdT1pKGUsW3tidWZmZXI6YyxzaXplOjQsc3RyaWRlOncsb2Zmc2V0OjB9LHtidWZmZXI6YyxzaXplOjMsc3RyaWRlOncsb2Zmc2V0OjE2fSx7YnVmZmVyOmMsc2l6ZTozLHN0cmlkZTp3LG9mZnNldDoyOH1dKSxoPWEoZSksZj1pKGUsW3tidWZmZXI6aCxzaXplOjQsc3RyaWRlOjIwLG9mZnNldDowfSx7YnVmZmVyOmgsc2l6ZToxLHN0cmlkZToyMCxvZmZzZXQ6MTZ9XSkscD1hKGUpLGQ9aShlLFt7YnVmZmVyOnAsc2l6ZToyLHR5cGU6ZS5GTE9BVH1dKSxnPW8oZSwxLFMsZS5SR0JBLGUuVU5TSUdORURfQllURSk7Zy5taW5GaWx0ZXI9ZS5MSU5FQVIsZy5tYWdGaWx0ZXI9ZS5MSU5FQVI7dmFyIHY9bmV3IEUoZSxbMCwwXSxbWzAsMCwwXSxbMCwwLDBdXSxyLG4sYyx1LGcscyxsLGgsZixwLGQsWzAsMCwwXSksbT17bGV2ZWxzOltbXSxbXSxbXV19O2Zvcih2YXIgayBpbiB0KW1ba109dFtrXTtyZXR1cm4gbS5jb2xvcm1hcD1tLmNvbG9ybWFwfHwiamV0Iix2LnVwZGF0ZShtKSx2fTt2YXIgbj10KCJiaXQtdHdpZGRsZSIpLGE9dCgiZ2wtYnVmZmVyIiksaT10KCJnbC12YW8iKSxvPXQoImdsLXRleHR1cmUyZCIpLHM9dCgidHlwZWRhcnJheS1wb29sIiksbD10KCJjb2xvcm1hcCIpLGM9dCgibmRhcnJheS1vcHMiKSx1PXQoIm5kYXJyYXktcGFjayIpLGg9dCgibmRhcnJheSIpLGY9dCgic3VyZmFjZS1uZXRzIikscD10KCJnbC1tYXQ0L211bHRpcGx5IiksZD10KCJnbC1tYXQ0L2ludmVydCIpLGc9dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKSx2PXQoIm5kYXJyYXktZ3JhZGllbnQiKSxtPXQoIi4vbGliL3NoYWRlcnMiKSx5PW0uY3JlYXRlU2hhZGVyLHg9bS5jcmVhdGVDb250b3VyU2hhZGVyLGI9bS5jcmVhdGVQaWNrU2hhZGVyLF89bS5jcmVhdGVQaWNrQ29udG91clNoYWRlcix3PTQwLGs9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdLFQ9W1swLDBdLFswLDFdLFsxLDBdLFsxLDFdLFsxLDBdLFswLDFdXSxNPVtbMCwwLDAsMCwwLDAsMCwwLDBdLFswLDAsMCwwLDAsMCwwLDAsMF0sWzAsMCwwLDAsMCwwLDAsMCwwXV07ZnVuY3Rpb24gQSh0LGUscixuLGEpe3RoaXMucG9zaXRpb249dCx0aGlzLmluZGV4PWUsdGhpcy51dj1yLHRoaXMubGV2ZWw9bix0aGlzLmRhdGFDb29yZGluYXRlPWF9IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwzOysrdCl7dmFyIGU9TVt0XSxyPSh0KzIpJTM7ZVsodCsxKSUzKzBdPTEsZVtyKzNdPTEsZVt0KzZdPTF9fSgpO3ZhciBTPTI1NjtmdW5jdGlvbiBFKHQsZSxyLG4sYSxpLG8sbCxjLHUsZixwLGQsZyx2KXt0aGlzLmdsPXQsdGhpcy5zaGFwZT1lLHRoaXMuYm91bmRzPXIsdGhpcy5vYmplY3RPZmZzZXQ9dix0aGlzLmludGVuc2l0eUJvdW5kcz1bXSx0aGlzLl9zaGFkZXI9bix0aGlzLl9waWNrU2hhZGVyPWEsdGhpcy5fY29vcmRpbmF0ZUJ1ZmZlcj1pLHRoaXMuX3Zhbz1vLHRoaXMuX2NvbG9yTWFwPWwsdGhpcy5fY29udG91clNoYWRlcj1jLHRoaXMuX2NvbnRvdXJQaWNrU2hhZGVyPXUsdGhpcy5fY29udG91ckJ1ZmZlcj1mLHRoaXMuX2NvbnRvdXJWQU89cCx0aGlzLl9jb250b3VyT2Zmc2V0cz1bW10sW10sW11dLHRoaXMuX2NvbnRvdXJDb3VudHM9W1tdLFtdLFtdXSx0aGlzLl92ZXJ0ZXhDb3VudD0wLHRoaXMuX3BpY2tSZXN1bHQ9bmV3IEEoWzAsMCwwXSxbMCwwXSxbMCwwXSxbMCwwLDBdLFswLDAsMF0pLHRoaXMuX2R5bmFtaWNCdWZmZXI9ZCx0aGlzLl9keW5hbWljVkFPPWcsdGhpcy5fZHluYW1pY09mZnNldHM9WzAsMCwwXSx0aGlzLl9keW5hbWljQ291bnRzPVswLDAsMF0sdGhpcy5jb250b3VyV2lkdGg9WzEsMSwxXSx0aGlzLmNvbnRvdXJMZXZlbHM9W1sxXSxbMV0sWzFdXSx0aGlzLmNvbnRvdXJUaW50PVswLDAsMF0sdGhpcy5jb250b3VyQ29sb3I9W1suNSwuNSwuNSwxXSxbLjUsLjUsLjUsMV0sWy41LC41LC41LDFdXSx0aGlzLnNob3dDb250b3VyPSEwLHRoaXMuc2hvd1N1cmZhY2U9ITAsdGhpcy5lbmFibGVIaWdobGlnaHQ9WyEwLCEwLCEwXSx0aGlzLmhpZ2hsaWdodENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5oaWdobGlnaHRUaW50PVsxLDEsMV0sdGhpcy5oaWdobGlnaHRMZXZlbD1bLTEsLTEsLTFdLHRoaXMuZW5hYmxlRHluYW1pYz1bITAsITAsITBdLHRoaXMuZHluYW1pY0xldmVsPVtOYU4sTmFOLE5hTl0sdGhpcy5keW5hbWljQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmR5bmFtaWNUaW50PVsxLDEsMV0sdGhpcy5keW5hbWljV2lkdGg9WzEsMSwxXSx0aGlzLmF4ZXNCb3VuZHM9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV0sdGhpcy5zdXJmYWNlUHJvamVjdD1bITEsITEsITFdLHRoaXMuY29udG91clByb2plY3Q9W1shMSwhMSwhMV0sWyExLCExLCExXSxbITEsITEsITFdXSx0aGlzLmNvbG9yQm91bmRzPVshMSwhMV0sdGhpcy5fZmllbGQ9W2gocy5tYWxsb2NGbG9hdCgxMDI0KSxbMCwwXSksaChzLm1hbGxvY0Zsb2F0KDEwMjQpLFswLDBdKSxoKHMubWFsbG9jRmxvYXQoMTAyNCksWzAsMF0pXSx0aGlzLnBpY2tJZD0xLHRoaXMuY2xpcEJvdW5kcz1bWy0xLzAsLTEvMCwtMS8wXSxbMS8wLDEvMCwxLzBdXSx0aGlzLnNuYXBUb0RhdGE9ITEsdGhpcy5waXhlbFJhdGlvPTEsdGhpcy5vcGFjaXR5PTEsdGhpcy5saWdodFBvc2l0aW9uPVsxMCwxZTQsMF0sdGhpcy5hbWJpZW50TGlnaHQ9LjgsdGhpcy5kaWZmdXNlTGlnaHQ9LjgsdGhpcy5zcGVjdWxhckxpZ2h0PTIsdGhpcy5yb3VnaG5lc3M9LjUsdGhpcy5mcmVzbmVsPTEuNSx0aGlzLnZlcnRleENvbG9yPTAsdGhpcy5kaXJ0eT0hMH12YXIgTD1FLnByb3RvdHlwZTtMLmlzVHJhbnNwYXJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcGFjaXR5PDF9LEwuaXNPcGFxdWU9ZnVuY3Rpb24oKXtpZih0aGlzLm9wYWNpdHk+PTEpcmV0dXJuITA7Zm9yKHZhciB0PTA7dDwzOysrdClpZih0aGlzLl9jb250b3VyQ291bnRzW3RdLmxlbmd0aD4wfHx0aGlzLl9keW5hbWljQ291bnRzW3RdPjApcmV0dXJuITA7cmV0dXJuITF9LEwucGlja1Nsb3RzPTEsTC5zZXRQaWNrQmFzZT1mdW5jdGlvbih0KXt0aGlzLnBpY2tJZD10fTt2YXIgQz1bMCwwLDBdLFA9e3Nob3dTdXJmYWNlOiExLHNob3dDb250b3VyOiExLHByb2plY3Rpb25zOltrLnNsaWNlKCksay5zbGljZSgpLGsuc2xpY2UoKV0sY2xpcEJvdW5kczpbW1swLDAsMF0sWzAsMCwwXV0sW1swLDAsMF0sWzAsMCwwXV0sW1swLDAsMF0sWzAsMCwwXV1dfTtmdW5jdGlvbiBPKHQsZSl7dmFyIHIsbixhLGk9ZS5heGVzJiZlLmF4ZXMubGFzdEN1YmVQcm9wcy5heGlzfHxDLG89ZS5zaG93U3VyZmFjZSxzPWUuc2hvd0NvbnRvdXI7Zm9yKHI9MDtyPDM7KytyKWZvcihvPW98fGUuc3VyZmFjZVByb2plY3Rbcl0sbj0wO248MzsrK24pcz1zfHxlLmNvbnRvdXJQcm9qZWN0W3JdW25dO2ZvcihyPTA7cjwzOysrcil7dmFyIGw9UC5wcm9qZWN0aW9uc1tyXTtmb3Iobj0wO248MTY7KytuKWxbbl09MDtmb3Iobj0wO248NDsrK24pbFs1Km5dPTE7bFs1KnJdPTAsbFsxMityXT1lLmF4ZXNCb3VuZHNbKyhpW3JdPjApXVtyXSxwKGwsdC5tb2RlbCxsKTt2YXIgYz1QLmNsaXBCb3VuZHNbcl07Zm9yKGE9MDthPDI7KythKWZvcihuPTA7bjwzOysrbiljW2FdW25dPXQuY2xpcEJvdW5kc1thXVtuXTtjWzBdW3JdPS0xZTgsY1sxXVtyXT0xZTh9cmV0dXJuIFAuc2hvd1N1cmZhY2U9byxQLnNob3dDb250b3VyPXMsUH12YXIgej17bW9kZWw6ayx2aWV3OmsscHJvamVjdGlvbjprLGludmVyc2VNb2RlbDprLnNsaWNlKCksbG93ZXJCb3VuZDpbMCwwLDBdLHVwcGVyQm91bmQ6WzAsMCwwXSxjb2xvck1hcDowLGNsaXBCb3VuZHM6W1swLDAsMF0sWzAsMCwwXV0saGVpZ2h0OjAsY29udG91clRpbnQ6MCxjb250b3VyQ29sb3I6WzAsMCwwLDFdLHBlcm11dGF0aW9uOlsxLDAsMCwwLDEsMCwwLDAsMV0sek9mZnNldDotMWUtNCxvYmplY3RPZmZzZXQ6WzAsMCwwXSxrYW1iaWVudDoxLGtkaWZmdXNlOjEsa3NwZWN1bGFyOjEsbGlnaHRQb3NpdGlvbjpbMWUzLDFlMywxZTNdLGV5ZVBvc2l0aW9uOlswLDAsMF0scm91Z2huZXNzOjEsZnJlc25lbDoxLG9wYWNpdHk6MSx2ZXJ0ZXhDb2xvcjowfSxJPWsuc2xpY2UoKSxEPVsxLDAsMCwwLDEsMCwwLDAsMV07ZnVuY3Rpb24gUih0LGUpe3Q9dHx8e307dmFyIHI9dGhpcy5nbDtyLmRpc2FibGUoci5DVUxMX0ZBQ0UpLHRoaXMuX2NvbG9yTWFwLmJpbmQoMCk7dmFyIG49ejtuLm1vZGVsPXQubW9kZWx8fGssbi52aWV3PXQudmlld3x8ayxuLnByb2plY3Rpb249dC5wcm9qZWN0aW9ufHxrLG4ubG93ZXJCb3VuZD1bdGhpcy5ib3VuZHNbMF1bMF0sdGhpcy5ib3VuZHNbMF1bMV0sdGhpcy5jb2xvckJvdW5kc1swXXx8dGhpcy5ib3VuZHNbMF1bMl1dLG4udXBwZXJCb3VuZD1bdGhpcy5ib3VuZHNbMV1bMF0sdGhpcy5ib3VuZHNbMV1bMV0sdGhpcy5jb2xvckJvdW5kc1sxXXx8dGhpcy5ib3VuZHNbMV1bMl1dLG4ub2JqZWN0T2Zmc2V0PXRoaXMub2JqZWN0T2Zmc2V0LG4uY29udG91ckNvbG9yPXRoaXMuY29udG91ckNvbG9yWzBdLG4uaW52ZXJzZU1vZGVsPWQobi5pbnZlcnNlTW9kZWwsbi5tb2RlbCk7Zm9yKHZhciBhPTA7YTwyOysrYSlmb3IodmFyIGk9bi5jbGlwQm91bmRzW2FdLG89MDtvPDM7KytvKWlbb109TWF0aC5taW4oTWF0aC5tYXgodGhpcy5jbGlwQm91bmRzW2FdW29dLC0xZTgpLDFlOCk7bi5rYW1iaWVudD10aGlzLmFtYmllbnRMaWdodCxuLmtkaWZmdXNlPXRoaXMuZGlmZnVzZUxpZ2h0LG4ua3NwZWN1bGFyPXRoaXMuc3BlY3VsYXJMaWdodCxuLnJvdWdobmVzcz10aGlzLnJvdWdobmVzcyxuLmZyZXNuZWw9dGhpcy5mcmVzbmVsLG4ub3BhY2l0eT10aGlzLm9wYWNpdHksbi5oZWlnaHQ9MCxuLnBlcm11dGF0aW9uPUQsbi52ZXJ0ZXhDb2xvcj10aGlzLnZlcnRleENvbG9yO3ZhciBzPUk7Zm9yKHAocyxuLnZpZXcsbi5tb2RlbCkscChzLG4ucHJvamVjdGlvbixzKSxkKHMscyksYT0wO2E8MzsrK2Epbi5leWVQb3NpdGlvblthXT1zWzEyK2FdL3NbMTVdO3ZhciBsPXNbMTVdO2ZvcihhPTA7YTwzOysrYSlsKz10aGlzLmxpZ2h0UG9zaXRpb25bYV0qc1s0KmErM107Zm9yKGE9MDthPDM7KythKXt2YXIgYz1zWzEyK2FdO2ZvcihvPTA7bzwzOysrbyljKz1zWzQqbythXSp0aGlzLmxpZ2h0UG9zaXRpb25bb107bi5saWdodFBvc2l0aW9uW2FdPWMvbH12YXIgdT1PKG4sdGhpcyk7aWYodS5zaG93U3VyZmFjZSYmZT09PXRoaXMub3BhY2l0eTwxKXtmb3IodGhpcy5fc2hhZGVyLmJpbmQoKSx0aGlzLl9zaGFkZXIudW5pZm9ybXM9bix0aGlzLl92YW8uYmluZCgpLHRoaXMuc2hvd1N1cmZhY2UmJnRoaXMuX3ZlcnRleENvdW50JiZ0aGlzLl92YW8uZHJhdyhyLlRSSUFOR0xFUyx0aGlzLl92ZXJ0ZXhDb3VudCksYT0wO2E8MzsrK2EpdGhpcy5zdXJmYWNlUHJvamVjdFthXSYmdGhpcy52ZXJ0ZXhDb3VudCYmKHRoaXMuX3NoYWRlci51bmlmb3Jtcy5tb2RlbD11LnByb2plY3Rpb25zW2FdLHRoaXMuX3NoYWRlci51bmlmb3Jtcy5jbGlwQm91bmRzPXUuY2xpcEJvdW5kc1thXSx0aGlzLl92YW8uZHJhdyhyLlRSSUFOR0xFUyx0aGlzLl92ZXJ0ZXhDb3VudCkpO3RoaXMuX3Zhby51bmJpbmQoKX1pZih1LnNob3dDb250b3VyJiYhZSl7dmFyIGg9dGhpcy5fY29udG91clNoYWRlcjtuLmthbWJpZW50PTEsbi5rZGlmZnVzZT0wLG4ua3NwZWN1bGFyPTAsbi5vcGFjaXR5PTEsaC5iaW5kKCksaC51bmlmb3Jtcz1uO3ZhciBmPXRoaXMuX2NvbnRvdXJWQU87Zm9yKGYuYmluZCgpLGE9MDthPDM7KythKWZvcihoLnVuaWZvcm1zLnBlcm11dGF0aW9uPU1bYV0sci5saW5lV2lkdGgodGhpcy5jb250b3VyV2lkdGhbYV0qdGhpcy5waXhlbFJhdGlvKSxvPTA7bzx0aGlzLmNvbnRvdXJMZXZlbHNbYV0ubGVuZ3RoOysrbylvPT09dGhpcy5oaWdobGlnaHRMZXZlbFthXT8oaC51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5oaWdobGlnaHRDb2xvclthXSxoLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRoaXMuaGlnaGxpZ2h0VGludFthXSk6MCE9PW8mJm8tMSE9PXRoaXMuaGlnaGxpZ2h0TGV2ZWxbYV18fChoLnVuaWZvcm1zLmNvbnRvdXJDb2xvcj10aGlzLmNvbnRvdXJDb2xvclthXSxoLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRoaXMuY29udG91clRpbnRbYV0pLHRoaXMuX2NvbnRvdXJDb3VudHNbYV1bb10mJihoLnVuaWZvcm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbYV1bb10sZi5kcmF3KHIuTElORVMsdGhpcy5fY29udG91ckNvdW50c1thXVtvXSx0aGlzLl9jb250b3VyT2Zmc2V0c1thXVtvXSkpO2ZvcihhPTA7YTwzOysrYSlmb3IoaC51bmlmb3Jtcy5tb2RlbD11LnByb2plY3Rpb25zW2FdLGgudW5pZm9ybXMuY2xpcEJvdW5kcz11LmNsaXBCb3VuZHNbYV0sbz0wO288MzsrK28paWYodGhpcy5jb250b3VyUHJvamVjdFthXVtvXSl7aC51bmlmb3Jtcy5wZXJtdXRhdGlvbj1NW29dLHIubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW29dKnRoaXMucGl4ZWxSYXRpbyk7Zm9yKHZhciBnPTA7Zzx0aGlzLmNvbnRvdXJMZXZlbHNbb10ubGVuZ3RoOysrZylnPT09dGhpcy5oaWdobGlnaHRMZXZlbFtvXT8oaC51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5oaWdobGlnaHRDb2xvcltvXSxoLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRoaXMuaGlnaGxpZ2h0VGludFtvXSk6MCE9PWcmJmctMSE9PXRoaXMuaGlnaGxpZ2h0TGV2ZWxbb118fChoLnVuaWZvcm1zLmNvbnRvdXJDb2xvcj10aGlzLmNvbnRvdXJDb2xvcltvXSxoLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRoaXMuY29udG91clRpbnRbb10pLHRoaXMuX2NvbnRvdXJDb3VudHNbb11bZ10mJihoLnVuaWZvcm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbb11bZ10sZi5kcmF3KHIuTElORVMsdGhpcy5fY29udG91ckNvdW50c1tvXVtnXSx0aGlzLl9jb250b3VyT2Zmc2V0c1tvXVtnXSkpfWZvcihmLnVuYmluZCgpLChmPXRoaXMuX2R5bmFtaWNWQU8pLmJpbmQoKSxhPTA7YTwzOysrYSlpZigwIT09dGhpcy5fZHluYW1pY0NvdW50c1thXSlmb3IoaC51bmlmb3Jtcy5tb2RlbD1uLm1vZGVsLGgudW5pZm9ybXMuY2xpcEJvdW5kcz1uLmNsaXBCb3VuZHMsaC51bmlmb3Jtcy5wZXJtdXRhdGlvbj1NW2FdLHIubGluZVdpZHRoKHRoaXMuZHluYW1pY1dpZHRoW2FdKnRoaXMucGl4ZWxSYXRpbyksaC51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5keW5hbWljQ29sb3JbYV0saC51bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmR5bmFtaWNUaW50W2FdLGgudW5pZm9ybXMuaGVpZ2h0PXRoaXMuZHluYW1pY0xldmVsW2FdLGYuZHJhdyhyLkxJTkVTLHRoaXMuX2R5bmFtaWNDb3VudHNbYV0sdGhpcy5fZHluYW1pY09mZnNldHNbYV0pLG89MDtvPDM7KytvKXRoaXMuY29udG91clByb2plY3Rbb11bYV0mJihoLnVuaWZvcm1zLm1vZGVsPXUucHJvamVjdGlvbnNbb10saC51bmlmb3Jtcy5jbGlwQm91bmRzPXUuY2xpcEJvdW5kc1tvXSxmLmRyYXcoci5MSU5FUyx0aGlzLl9keW5hbWljQ291bnRzW2FdLHRoaXMuX2R5bmFtaWNPZmZzZXRzW2FdKSk7Zi51bmJpbmQoKX19TC5kcmF3PWZ1bmN0aW9uKHQpe3JldHVybiBSLmNhbGwodGhpcyx0LCExKX0sTC5kcmF3VHJhbnNwYXJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIFIuY2FsbCh0aGlzLHQsITApfTt2YXIgRj17bW9kZWw6ayx2aWV3OmsscHJvamVjdGlvbjprLGludmVyc2VNb2RlbDprLGNsaXBCb3VuZHM6W1swLDAsMF0sWzAsMCwwXV0saGVpZ2h0OjAsc2hhcGU6WzAsMF0scGlja0lkOjAsbG93ZXJCb3VuZDpbMCwwLDBdLHVwcGVyQm91bmQ6WzAsMCwwXSx6T2Zmc2V0OjAsb2JqZWN0T2Zmc2V0OlswLDAsMF0scGVybXV0YXRpb246WzEsMCwwLDAsMSwwLDAsMCwxXSxsaWdodFBvc2l0aW9uOlswLDAsMF0sZXllUG9zaXRpb246WzAsMCwwXX07ZnVuY3Rpb24gQih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP1tlKHRbMF0pLGUodFsxXSksZSh0WzJdKV06W2UodCksZSh0KSxlKHQpXX1mdW5jdGlvbiBOKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpPzM9PT10Lmxlbmd0aD9bdFswXSx0WzFdLHRbMl0sMV06W3RbMF0sdFsxXSx0WzJdLHRbM11dOlswLDAsMCwxXX1mdW5jdGlvbiBqKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuW04odFswXSksTih0WzFdKSxOKHRbMl0pXTt2YXIgZT1OKHQpO3JldHVybltlLnNsaWNlKCksZS5zbGljZSgpLGUuc2xpY2UoKV19fUwuZHJhd1BpY2s9ZnVuY3Rpb24odCl7dD10fHx7fTt2YXIgZT10aGlzLmdsO2UuZGlzYWJsZShlLkNVTExfRkFDRSk7dmFyIHI9RjtyLm1vZGVsPXQubW9kZWx8fGssci52aWV3PXQudmlld3x8ayxyLnByb2plY3Rpb249dC5wcm9qZWN0aW9ufHxrLHIuc2hhcGU9dGhpcy5fZmllbGRbMl0uc2hhcGUsci5waWNrSWQ9dGhpcy5waWNrSWQvMjU1LHIubG93ZXJCb3VuZD10aGlzLmJvdW5kc1swXSxyLnVwcGVyQm91bmQ9dGhpcy5ib3VuZHNbMV0sci5vYmplY3RPZmZzZXQ9dGhpcy5vYmplY3RPZmZzZXQsci5wZXJtdXRhdGlvbj1EO2Zvcih2YXIgbj0wO248MjsrK24pZm9yKHZhciBhPXIuY2xpcEJvdW5kc1tuXSxpPTA7aTwzOysraSlhW2ldPU1hdGgubWluKE1hdGgubWF4KHRoaXMuY2xpcEJvdW5kc1tuXVtpXSwtMWU4KSwxZTgpO3ZhciBvPU8ocix0aGlzKTtpZihvLnNob3dTdXJmYWNlKXtmb3IodGhpcy5fcGlja1NoYWRlci5iaW5kKCksdGhpcy5fcGlja1NoYWRlci51bmlmb3Jtcz1yLHRoaXMuX3Zhby5iaW5kKCksdGhpcy5fdmFvLmRyYXcoZS5UUklBTkdMRVMsdGhpcy5fdmVydGV4Q291bnQpLG49MDtuPDM7KytuKXRoaXMuc3VyZmFjZVByb2plY3Rbbl0mJih0aGlzLl9waWNrU2hhZGVyLnVuaWZvcm1zLm1vZGVsPW8ucHJvamVjdGlvbnNbbl0sdGhpcy5fcGlja1NoYWRlci51bmlmb3Jtcy5jbGlwQm91bmRzPW8uY2xpcEJvdW5kc1tuXSx0aGlzLl92YW8uZHJhdyhlLlRSSUFOR0xFUyx0aGlzLl92ZXJ0ZXhDb3VudCkpO3RoaXMuX3Zhby51bmJpbmQoKX1pZihvLnNob3dDb250b3VyKXt2YXIgcz10aGlzLl9jb250b3VyUGlja1NoYWRlcjtzLmJpbmQoKSxzLnVuaWZvcm1zPXI7dmFyIGw9dGhpcy5fY29udG91clZBTztmb3IobC5iaW5kKCksaT0wO2k8MzsrK2kpZm9yKGUubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW2ldKnRoaXMucGl4ZWxSYXRpbykscy51bmlmb3Jtcy5wZXJtdXRhdGlvbj1NW2ldLG49MDtuPHRoaXMuY29udG91ckxldmVsc1tpXS5sZW5ndGg7KytuKXRoaXMuX2NvbnRvdXJDb3VudHNbaV1bbl0mJihzLnVuaWZvcm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbaV1bbl0sbC5kcmF3KGUuTElORVMsdGhpcy5fY29udG91ckNvdW50c1tpXVtuXSx0aGlzLl9jb250b3VyT2Zmc2V0c1tpXVtuXSkpO2ZvcihuPTA7bjwzOysrbilmb3Iocy51bmlmb3Jtcy5tb2RlbD1vLnByb2plY3Rpb25zW25dLHMudW5pZm9ybXMuY2xpcEJvdW5kcz1vLmNsaXBCb3VuZHNbbl0saT0wO2k8MzsrK2kpaWYodGhpcy5jb250b3VyUHJvamVjdFtuXVtpXSl7cy51bmlmb3Jtcy5wZXJtdXRhdGlvbj1NW2ldLGUubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW2ldKnRoaXMucGl4ZWxSYXRpbyk7Zm9yKHZhciBjPTA7Yzx0aGlzLmNvbnRvdXJMZXZlbHNbaV0ubGVuZ3RoOysrYyl0aGlzLl9jb250b3VyQ291bnRzW2ldW2NdJiYocy51bmlmb3Jtcy5oZWlnaHQ9dGhpcy5jb250b3VyTGV2ZWxzW2ldW2NdLGwuZHJhdyhlLkxJTkVTLHRoaXMuX2NvbnRvdXJDb3VudHNbaV1bY10sdGhpcy5fY29udG91ck9mZnNldHNbaV1bY10pKX1sLnVuYmluZCgpfX0sTC5waWNrPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQuaWQhPT10aGlzLnBpY2tJZClyZXR1cm4gbnVsbDt2YXIgZT10aGlzLl9maWVsZFsyXS5zaGFwZSxyPXRoaXMuX3BpY2tSZXN1bHQsbj1lWzBdKih0LnZhbHVlWzBdKyh0LnZhbHVlWzJdPj40KS8xNikvMjU1LGE9TWF0aC5mbG9vcihuKSxpPW4tYSxvPWVbMV0qKHQudmFsdWVbMV0rKDE1JnQudmFsdWVbMl0pLzE2KS8yNTUscz1NYXRoLmZsb29yKG8pLGw9by1zO2ErPTEscys9MTt2YXIgYz1yLnBvc2l0aW9uO2NbMF09Y1sxXT1jWzJdPTA7Zm9yKHZhciB1PTA7dTwyOysrdSlmb3IodmFyIGg9dT9pOjEtaSxmPTA7ZjwyOysrZilmb3IodmFyIHA9YSt1LGQ9cytmLHY9aCooZj9sOjEtbCksbT0wO208MzsrK20pY1ttXSs9dGhpcy5fZmllbGRbbV0uZ2V0KHAsZCkqdjtmb3IodmFyIHk9dGhpcy5fcGlja1Jlc3VsdC5sZXZlbCx4PTA7eDwzOysreClpZih5W3hdPWcubGUodGhpcy5jb250b3VyTGV2ZWxzW3hdLGNbeF0pLHlbeF08MCl0aGlzLmNvbnRvdXJMZXZlbHNbeF0ubGVuZ3RoPjAmJih5W3hdPTApO2Vsc2UgaWYoeVt4XTx0aGlzLmNvbnRvdXJMZXZlbHNbeF0ubGVuZ3RoLTEpe3ZhciBiPXRoaXMuY29udG91ckxldmVsc1t4XVt5W3hdXSxfPXRoaXMuY29udG91ckxldmVsc1t4XVt5W3hdKzFdO01hdGguYWJzKGItY1t4XSk+TWF0aC5hYnMoXy1jW3hdKSYmKHlbeF0rPTEpfWZvcihyLmluZGV4WzBdPWk8LjU/YTphKzEsci5pbmRleFsxXT1sPC41P3M6cysxLHIudXZbMF09bi9lWzBdLHIudXZbMV09by9lWzFdLG09MDttPDM7KyttKXIuZGF0YUNvb3JkaW5hdGVbbV09dGhpcy5fZmllbGRbbV0uZ2V0KHIuaW5kZXhbMF0sci5pbmRleFsxXSk7cmV0dXJuIHJ9LEwucGFkRmllbGQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnNoYXBlLnNsaWNlKCksbj10LnNoYXBlLnNsaWNlKCk7Yy5hc3NpZ24odC5sbygxLDEpLmhpKHJbMF0sclsxXSksZSksYy5hc3NpZ24odC5sbygxKS5oaShyWzBdLDEpLGUuaGkoclswXSwxKSksYy5hc3NpZ24odC5sbygxLG5bMV0tMSkuaGkoclswXSwxKSxlLmxvKDAsclsxXS0xKS5oaShyWzBdLDEpKSxjLmFzc2lnbih0LmxvKDAsMSkuaGkoMSxyWzFdKSxlLmhpKDEpKSxjLmFzc2lnbih0LmxvKG5bMF0tMSwxKS5oaSgxLHJbMV0pLGUubG8oclswXS0xKSksdC5zZXQoMCwwLGUuZ2V0KDAsMCkpLHQuc2V0KDAsblsxXS0xLGUuZ2V0KDAsclsxXS0xKSksdC5zZXQoblswXS0xLDAsZS5nZXQoclswXS0xLDApKSx0LnNldChuWzBdLTEsblsxXS0xLGUuZ2V0KHJbMF0tMSxyWzFdLTEpKX0sTC51cGRhdGU9ZnVuY3Rpb24odCl7dD10fHx7fSx0aGlzLm9iamVjdE9mZnNldD10Lm9iamVjdE9mZnNldHx8dGhpcy5vYmplY3RPZmZzZXQsdGhpcy5kaXJ0eT0hMCwiY29udG91cldpZHRoImluIHQmJih0aGlzLmNvbnRvdXJXaWR0aD1CKHQuY29udG91cldpZHRoLE51bWJlcikpLCJzaG93Q29udG91ciJpbiB0JiYodGhpcy5zaG93Q29udG91cj1CKHQuc2hvd0NvbnRvdXIsQm9vbGVhbikpLCJzaG93U3VyZmFjZSJpbiB0JiYodGhpcy5zaG93U3VyZmFjZT0hIXQuc2hvd1N1cmZhY2UpLCJjb250b3VyVGludCJpbiB0JiYodGhpcy5jb250b3VyVGludD1CKHQuY29udG91clRpbnQsQm9vbGVhbikpLCJjb250b3VyQ29sb3IiaW4gdCYmKHRoaXMuY29udG91ckNvbG9yPWoodC5jb250b3VyQ29sb3IpKSwiY29udG91clByb2plY3QiaW4gdCYmKHRoaXMuY29udG91clByb2plY3Q9Qih0LmNvbnRvdXJQcm9qZWN0LGZ1bmN0aW9uKHQpe3JldHVybiBCKHQsQm9vbGVhbil9KSksInN1cmZhY2VQcm9qZWN0ImluIHQmJih0aGlzLnN1cmZhY2VQcm9qZWN0PXQuc3VyZmFjZVByb2plY3QpLCJkeW5hbWljQ29sb3IiaW4gdCYmKHRoaXMuZHluYW1pY0NvbG9yPWoodC5keW5hbWljQ29sb3IpKSwiZHluYW1pY1RpbnQiaW4gdCYmKHRoaXMuZHluYW1pY1RpbnQ9Qih0LmR5bmFtaWNUaW50LE51bWJlcikpLCJkeW5hbWljV2lkdGgiaW4gdCYmKHRoaXMuZHluYW1pY1dpZHRoPUIodC5keW5hbWljV2lkdGgsTnVtYmVyKSksIm9wYWNpdHkiaW4gdCYmKHRoaXMub3BhY2l0eT10Lm9wYWNpdHkpLCJjb2xvckJvdW5kcyJpbiB0JiYodGhpcy5jb2xvckJvdW5kcz10LmNvbG9yQm91bmRzKSwidmVydGV4Q29sb3IiaW4gdCYmKHRoaXMudmVydGV4Q29sb3I9dC52ZXJ0ZXhDb2xvcj8xOjApO3ZhciBlPXQuZmllbGR8fHQuY29vcmRzJiZ0LmNvb3Jkc1syXXx8bnVsbCxyPSExO2lmKGV8fChlPXRoaXMuX2ZpZWxkWzJdLnNoYXBlWzBdfHx0aGlzLl9maWVsZFsyXS5zaGFwZVsyXT90aGlzLl9maWVsZFsyXS5sbygxLDEpLmhpKHRoaXMuX2ZpZWxkWzJdLnNoYXBlWzBdLTIsdGhpcy5fZmllbGRbMl0uc2hhcGVbMV0tMik6dGhpcy5fZmllbGRbMl0uaGkoMCwwKSksImZpZWxkImluIHR8fCJjb29yZHMiaW4gdCl7dmFyIGE9KGUuc2hhcGVbMF0rMikqKGUuc2hhcGVbMV0rMik7YT50aGlzLl9maWVsZFsyXS5kYXRhLmxlbmd0aCYmKHMuZnJlZUZsb2F0KHRoaXMuX2ZpZWxkWzJdLmRhdGEpLHRoaXMuX2ZpZWxkWzJdLmRhdGE9cy5tYWxsb2NGbG9hdChuLm5leHRQb3cyKGEpKSksdGhpcy5fZmllbGRbMl09aCh0aGlzLl9maWVsZFsyXS5kYXRhLFtlLnNoYXBlWzBdKzIsZS5zaGFwZVsxXSsyXSksdGhpcy5wYWRGaWVsZCh0aGlzLl9maWVsZFsyXSxlKSx0aGlzLnNoYXBlPWUuc2hhcGUuc2xpY2UoKTtmb3IodmFyIGk9dGhpcy5zaGFwZSxvPTA7bzwyOysrbyl0aGlzLl9maWVsZFsyXS5zaXplPnRoaXMuX2ZpZWxkW29dLmRhdGEubGVuZ3RoJiYocy5mcmVlRmxvYXQodGhpcy5fZmllbGRbb10uZGF0YSksdGhpcy5fZmllbGRbb10uZGF0YT1zLm1hbGxvY0Zsb2F0KHRoaXMuX2ZpZWxkWzJdLnNpemUpKSx0aGlzLl9maWVsZFtvXT1oKHRoaXMuX2ZpZWxkW29dLmRhdGEsW2lbMF0rMixpWzFdKzJdKTtpZih0LmNvb3Jkcyl7dmFyIHA9dC5jb29yZHM7aWYoIUFycmF5LmlzQXJyYXkocCl8fDMhPT1wLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImdsLXN1cmZhY2U6IGludmFsaWQgY29vcmRpbmF0ZXMgZm9yIHgveSIpO2ZvcihvPTA7bzwyOysrbyl7dmFyIGQ9cFtvXTtmb3IoYj0wO2I8MjsrK2IpaWYoZC5zaGFwZVtiXSE9PWlbYl0pdGhyb3cgbmV3IEVycm9yKCJnbC1zdXJmYWNlOiBjb29yZHMgaGF2ZSBpbmNvcnJlY3Qgc2hhcGUiKTt0aGlzLnBhZEZpZWxkKHRoaXMuX2ZpZWxkW29dLGQpfX1lbHNlIGlmKHQudGlja3Mpe3ZhciBnPXQudGlja3M7aWYoIUFycmF5LmlzQXJyYXkoZyl8fDIhPT1nLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImdsLXN1cmZhY2U6IGludmFsaWQgdGlja3MiKTtmb3Iobz0wO288MjsrK28pe3ZhciBtPWdbb107aWYoKEFycmF5LmlzQXJyYXkobSl8fG0ubGVuZ3RoKSYmKG09aChtKSksbS5zaGFwZVswXSE9PWlbb10pdGhyb3cgbmV3IEVycm9yKCJnbC1zdXJmYWNlOiBpbnZhbGlkIHRpY2sgbGVuZ3RoIik7dmFyIHk9aChtLmRhdGEsaSk7eS5zdHJpZGVbb109bS5zdHJpZGVbMF0seS5zdHJpZGVbMV5vXT0wLHRoaXMucGFkRmllbGQodGhpcy5fZmllbGRbb10seSl9fWVsc2V7Zm9yKG89MDtvPDI7KytvKXt2YXIgeD1bMCwwXTt4W29dPTEsdGhpcy5fZmllbGRbb109aCh0aGlzLl9maWVsZFtvXS5kYXRhLFtpWzBdKzIsaVsxXSsyXSx4LDApfXRoaXMuX2ZpZWxkWzBdLnNldCgwLDAsMCk7Zm9yKHZhciBiPTA7YjxpWzBdOysrYil0aGlzLl9maWVsZFswXS5zZXQoYisxLDAsYik7Zm9yKHRoaXMuX2ZpZWxkWzBdLnNldChpWzBdKzEsMCxpWzBdLTEpLHRoaXMuX2ZpZWxkWzFdLnNldCgwLDAsMCksYj0wO2I8aVsxXTsrK2IpdGhpcy5fZmllbGRbMV0uc2V0KDAsYisxLGIpO3RoaXMuX2ZpZWxkWzFdLnNldCgwLGlbMV0rMSxpWzFdLTEpfXZhciBfPXRoaXMuX2ZpZWxkLHc9aChzLm1hbGxvY0Zsb2F0KDMqX1syXS5zaXplKjIpLFszLGlbMF0rMixpWzFdKzIsMl0pO2ZvcihvPTA7bzwzOysrbyl2KHcucGljayhvKSxfW29dLCJtaXJyb3IiKTt2YXIgaz1oKHMubWFsbG9jRmxvYXQoMypfWzJdLnNpemUpLFtpWzBdKzIsaVsxXSsyLDNdKTtmb3Iobz0wO288aVswXSsyOysrbylmb3IoYj0wO2I8aVsxXSsyOysrYil7dmFyIE09dy5nZXQoMCxvLGIsMCksQT13LmdldCgwLG8sYiwxKSxFPXcuZ2V0KDEsbyxiLDApLEw9dy5nZXQoMSxvLGIsMSksQz13LmdldCgyLG8sYiwwKSxQPXcuZ2V0KDIsbyxiLDEpLE89RSpQLUwqQyx6PUMqQS1QKk0sST1NKkwtQSpFLEQ9TWF0aC5zcXJ0KE8qTyt6KnorSSpJKTtEPDFlLTg/KEQ9TWF0aC5tYXgoTWF0aC5hYnMoTyksTWF0aC5hYnMoeiksTWF0aC5hYnMoSSkpKTwxZS04PyhJPTEsej1PPTAsRD0xKTpEPTEvRDpEPTEvTWF0aC5zcXJ0KEQpLGsuc2V0KG8sYiwwLE8qRCksay5zZXQobyxiLDEseipEKSxrLnNldChvLGIsMixJKkQpfXMuZnJlZSh3LmRhdGEpO3ZhciBSPVsxLzAsMS8wLDEvMF0sRj1bLTEvMCwtMS8wLC0xLzBdLE49MS8wLFY9LTEvMCxVPShpWzBdLTEpKihpWzFdLTEpKjYscT1zLm1hbGxvY0Zsb2F0KG4ubmV4dFBvdzIoMTAqVSkpLEg9MCxHPTA7Zm9yKG89MDtvPGlbMF0tMTsrK28pdDpmb3IoYj0wO2I8aVsxXS0xOysrYil7Zm9yKHZhciBZPTA7WTwyOysrWSlmb3IodmFyIFc9MDtXPDI7KytXKWZvcih2YXIgWD0wO1g8MzsrK1gpe3ZhciBaPXRoaXMuX2ZpZWxkW1hdLmdldCgxK28rWSwxK2IrVyk7aWYoaXNOYU4oWil8fCFpc0Zpbml0ZShaKSljb250aW51ZSB0fWZvcihYPTA7WDw2OysrWCl7dmFyIEo9bytUW1hdWzBdLEs9YitUW1hdWzFdLFE9dGhpcy5fZmllbGRbMF0uZ2V0KEorMSxLKzEpLCQ9dGhpcy5fZmllbGRbMV0uZ2V0KEorMSxLKzEpO1o9dGhpcy5fZmllbGRbMl0uZ2V0KEorMSxLKzEpLE89ay5nZXQoSisxLEsrMSwwKSx6PWsuZ2V0KEorMSxLKzEsMSksST1rLmdldChKKzEsSysxLDIpLHQuaW50ZW5zaXR5JiYodHQ9dC5pbnRlbnNpdHkuZ2V0KEosSykpO3ZhciB0dD10LmludGVuc2l0eT90LmludGVuc2l0eS5nZXQoSixLKTpaK3RoaXMub2JqZWN0T2Zmc2V0WzJdO3FbSCsrXT1KLHFbSCsrXT1LLHFbSCsrXT1RLHFbSCsrXT0kLHFbSCsrXT1aLHFbSCsrXT0wLHFbSCsrXT10dCxxW0grK109TyxxW0grK109eixxW0grK109SSxSWzBdPU1hdGgubWluKFJbMF0sUSt0aGlzLm9iamVjdE9mZnNldFswXSksUlsxXT1NYXRoLm1pbihSWzFdLCQrdGhpcy5vYmplY3RPZmZzZXRbMV0pLFJbMl09TWF0aC5taW4oUlsyXSxaK3RoaXMub2JqZWN0T2Zmc2V0WzJdKSxOPU1hdGgubWluKE4sdHQpLEZbMF09TWF0aC5tYXgoRlswXSxRK3RoaXMub2JqZWN0T2Zmc2V0WzBdKSxGWzFdPU1hdGgubWF4KEZbMV0sJCt0aGlzLm9iamVjdE9mZnNldFsxXSksRlsyXT1NYXRoLm1heChGWzJdLFordGhpcy5vYmplY3RPZmZzZXRbMl0pLFY9TWF0aC5tYXgoVix0dCksRys9MX19Zm9yKHQuaW50ZW5zaXR5Qm91bmRzJiYoTj0rdC5pbnRlbnNpdHlCb3VuZHNbMF0sVj0rdC5pbnRlbnNpdHlCb3VuZHNbMV0pLG89NjtvPEg7bys9MTApcVtvXT0ocVtvXS1OKS8oVi1OKTt0aGlzLl92ZXJ0ZXhDb3VudD1HLHRoaXMuX2Nvb3JkaW5hdGVCdWZmZXIudXBkYXRlKHEuc3ViYXJyYXkoMCxIKSkscy5mcmVlRmxvYXQocSkscy5mcmVlKGsuZGF0YSksdGhpcy5ib3VuZHM9W1IsRl0sdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHl8fHRoaXMuX2ZpZWxkWzJdLHRoaXMuaW50ZW5zaXR5Qm91bmRzWzBdPT09TiYmdGhpcy5pbnRlbnNpdHlCb3VuZHNbMV09PT1WfHwocj0hMCksdGhpcy5pbnRlbnNpdHlCb3VuZHM9W04sVl19aWYoImxldmVscyJpbiB0KXt2YXIgZXQ9dC5sZXZlbHM7Zm9yKGV0PUFycmF5LmlzQXJyYXkoZXRbMF0pP2V0LnNsaWNlKCk6W1tdLFtdLGV0XSxvPTA7bzwzOysrbylldFtvXT1ldFtvXS5zbGljZSgpLGV0W29dLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSk7Zm9yKG89MDtvPDM7KytvKWZvcihiPTA7YjxldFtvXS5sZW5ndGg7KytiKWV0W29dW2JdLT10aGlzLm9iamVjdE9mZnNldFtvXTt0OmZvcihvPTA7bzwzOysrbyl7aWYoZXRbb10ubGVuZ3RoIT09dGhpcy5jb250b3VyTGV2ZWxzW29dLmxlbmd0aCl7cj0hMDticmVha31mb3IoYj0wO2I8ZXRbb10ubGVuZ3RoOysrYilpZihldFtvXVtiXSE9PXRoaXMuY29udG91ckxldmVsc1tvXVtiXSl7cj0hMDticmVhayB0fX10aGlzLmNvbnRvdXJMZXZlbHM9ZXR9aWYocil7Xz10aGlzLl9maWVsZCxpPXRoaXMuc2hhcGU7Zm9yKHZhciBydD1bXSxudD0wO250PDM7KytudCl7dmFyIGF0PXRoaXMuY29udG91ckxldmVsc1tudF0saXQ9W10sb3Q9W10sc3Q9WzAsMCwwXTtmb3Iobz0wO288YXQubGVuZ3RoOysrbyl7dmFyIGx0PWYodGhpcy5fZmllbGRbbnRdLGF0W29dKTtpdC5wdXNoKHJ0Lmxlbmd0aC81fDApLEc9MDt0OmZvcihiPTA7YjxsdC5jZWxscy5sZW5ndGg7KytiKXt2YXIgY3Q9bHQuY2VsbHNbYl07Zm9yKFg9MDtYPDI7KytYKXt2YXIgdXQ9bHQucG9zaXRpb25zW2N0W1hdXSxodD11dFswXSxmdD0wfE1hdGguZmxvb3IoaHQpLHB0PWh0LWZ0LGR0PXV0WzFdLGd0PTB8TWF0aC5mbG9vcihkdCksdnQ9ZHQtZ3QsbXQ9ITE7ZTpmb3IodmFyIHl0PTA7eXQ8MzsrK3l0KXtzdFt5dF09MDt2YXIgeHQ9KG50K3l0KzEpJTM7Zm9yKFk9MDtZPDI7KytZKXt2YXIgYnQ9WT9wdDoxLXB0O2ZvcihKPTB8TWF0aC5taW4oTWF0aC5tYXgoZnQrWSwwKSxpWzBdKSxXPTA7VzwyOysrVyl7dmFyIF90PVc/dnQ6MS12dDtpZihLPTB8TWF0aC5taW4oTWF0aC5tYXgoZ3QrVywwKSxpWzFdKSxaPXl0PDI/dGhpcy5fZmllbGRbeHRdLmdldChKLEspOih0aGlzLmludGVuc2l0eS5nZXQoSixLKS10aGlzLmludGVuc2l0eUJvdW5kc1swXSkvKHRoaXMuaW50ZW5zaXR5Qm91bmRzWzFdLXRoaXMuaW50ZW5zaXR5Qm91bmRzWzBdKSwhaXNGaW5pdGUoWil8fGlzTmFOKFopKXttdD0hMDticmVhayBlfXZhciB3dD1idCpfdDtzdFt5dF0rPXd0Klp9fX1pZihtdCl7aWYoWD4wKXtmb3IodmFyIGt0PTA7a3Q8NTsrK2t0KXJ0LnBvcCgpO0ctPTF9Y29udGludWUgdH1ydC5wdXNoKHN0WzBdLHN0WzFdLHV0WzBdLHV0WzFdLHN0WzJdKSxHKz0xfX1vdC5wdXNoKEcpfXRoaXMuX2NvbnRvdXJPZmZzZXRzW250XT1pdCx0aGlzLl9jb250b3VyQ291bnRzW250XT1vdH12YXIgVHQ9cy5tYWxsb2NGbG9hdChydC5sZW5ndGgpO2ZvcihvPTA7bzxydC5sZW5ndGg7KytvKVR0W29dPXJ0W29dO3RoaXMuX2NvbnRvdXJCdWZmZXIudXBkYXRlKFR0KSxzLmZyZWVGbG9hdChUdCl9dC5jb2xvcm1hcCYmdGhpcy5fY29sb3JNYXAuc2V0UGl4ZWxzKGZ1bmN0aW9uKHQpe3ZhciBlPXUoW2woe2NvbG9ybWFwOnQsbnNoYWRlczpTLGZvcm1hdDoicmdiYSJ9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0sdFsxXSx0WzJdLDI1NSp0WzNdXX0pXSk7cmV0dXJuIGMuZGl2c2VxKGUsMjU1KSxlfSh0LmNvbG9ybWFwKSl9LEwuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX3NoYWRlci5kaXNwb3NlKCksdGhpcy5fdmFvLmRpc3Bvc2UoKSx0aGlzLl9jb29yZGluYXRlQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLl9jb2xvck1hcC5kaXNwb3NlKCksdGhpcy5fY29udG91ckJ1ZmZlci5kaXNwb3NlKCksdGhpcy5fY29udG91clZBTy5kaXNwb3NlKCksdGhpcy5fY29udG91clNoYWRlci5kaXNwb3NlKCksdGhpcy5fY29udG91clBpY2tTaGFkZXIuZGlzcG9zZSgpLHRoaXMuX2R5bmFtaWNCdWZmZXIuZGlzcG9zZSgpLHRoaXMuX2R5bmFtaWNWQU8uZGlzcG9zZSgpO2Zvcih2YXIgdD0wO3Q8MzsrK3Qpcy5mcmVlRmxvYXQodGhpcy5fZmllbGRbdF0uZGF0YSl9LEwuaGlnaGxpZ2h0PWZ1bmN0aW9uKHQpe3ZhciBlLHI7aWYoIXQpcmV0dXJuIHRoaXMuX2R5bmFtaWNDb3VudHM9WzAsMCwwXSx0aGlzLmR5YW5hbWljTGV2ZWw9W05hTixOYU4sTmFOXSx2b2lkKHRoaXMuaGlnaGxpZ2h0TGV2ZWw9Wy0xLC0xLC0xXSk7Zm9yKGU9MDtlPDM7KytlKXRoaXMuZW5hYmxlSGlnaGxpZ2h0W2VdP3RoaXMuaGlnaGxpZ2h0TGV2ZWxbZV09dC5sZXZlbFtlXTp0aGlzLmhpZ2hsaWdodExldmVsW2VdPS0xO2ZvcihyPXRoaXMuc25hcFRvRGF0YT90LmRhdGFDb29yZGluYXRlOnQucG9zaXRpb24sZT0wO2U8MzsrK2UpcltlXS09dGhpcy5vYmplY3RPZmZzZXRbZV07aWYodGhpcy5lbmFibGVEeW5hbWljWzBdJiZyWzBdIT09dGhpcy5keW5hbWljTGV2ZWxbMF18fHRoaXMuZW5hYmxlRHluYW1pY1sxXSYmclsxXSE9PXRoaXMuZHluYW1pY0xldmVsWzFdfHx0aGlzLmVuYWJsZUR5bmFtaWNbMl0mJnJbMl0hPT10aGlzLmR5bmFtaWNMZXZlbFsyXSl7Zm9yKHZhciBuPTAsYT10aGlzLnNoYXBlLGk9cy5tYWxsb2NGbG9hdCgxMiphWzBdKmFbMV0pLG89MDtvPDM7KytvKWlmKHRoaXMuZW5hYmxlRHluYW1pY1tvXSl7dGhpcy5keW5hbWljTGV2ZWxbb109cltvXTt2YXIgbD0obysxKSUzLGM9KG8rMiklMyx1PXRoaXMuX2ZpZWxkW29dLGg9dGhpcy5fZmllbGRbbF0scD10aGlzLl9maWVsZFtjXSxkPWYodSxyW29dKSxnPWQuY2VsbHMsdj1kLnBvc2l0aW9ucztmb3IodGhpcy5fZHluYW1pY09mZnNldHNbb109bixlPTA7ZTxnLmxlbmd0aDsrK2UpZm9yKHZhciBtPWdbZV0seT0wO3k8MjsrK3kpe3ZhciB4PXZbbVt5XV0sYj0reFswXSxfPTB8Yix3PTB8TWF0aC5taW4oXysxLGFbMF0pLGs9Yi1fLFQ9MS1rLE09K3hbMV0sQT0wfE0sUz0wfE1hdGgubWluKEErMSxhWzFdKSxFPU0tQSxMPTEtRSxDPVQqTCxQPVQqRSxPPWsqTCx6PWsqRSxJPUMqaC5nZXQoXyxBKStQKmguZ2V0KF8sUykrTypoLmdldCh3LEEpK3oqaC5nZXQodyxTKSxEPUMqcC5nZXQoXyxBKStQKnAuZ2V0KF8sUykrTypwLmdldCh3LEEpK3oqcC5nZXQodyxTKTtpZihpc05hTihJKXx8aXNOYU4oRCkpe3kmJihuLT0xKTticmVha31pWzIqbiswXT1JLGlbMipuKzFdPUQsbis9MX10aGlzLl9keW5hbWljQ291bnRzW29dPW4tdGhpcy5fZHluYW1pY09mZnNldHNbb119ZWxzZSB0aGlzLmR5bmFtaWNMZXZlbFtvXT1OYU4sdGhpcy5fZHluYW1pY0NvdW50c1tvXT0wO3RoaXMuX2R5bmFtaWNCdWZmZXIudXBkYXRlKGkuc3ViYXJyYXkoMCwyKm4pKSxzLmZyZWVGbG9hdChpKX19fSx7Ii4vbGliL3NoYWRlcnMiOjMxNiwiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjMxNywiYml0LXR3aWRkbGUiOjk0LGNvbG9ybWFwOjEyOCwiZ2wtYnVmZmVyIjoyNDQsImdsLW1hdDQvaW52ZXJ0IjoyNjgsImdsLW1hdDQvbXVsdGlwbHkiOjI3MCwiZ2wtdGV4dHVyZTJkIjozMjQsImdsLXZhbyI6MzI5LG5kYXJyYXk6NDUyLCJuZGFycmF5LWdyYWRpZW50Ijo0NDMsIm5kYXJyYXktb3BzIjo0NDYsIm5kYXJyYXktcGFjayI6NDQ3LCJzdXJmYWNlLW5ldHMiOjUzMCwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwzMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY3NzLWZvbnQiKSxhPXQoInBpY2stYnktYWxpYXMiKSxpPXQoInJlZ2wiKSxvPXQoImdsLXV0aWwvY29udGV4dCIpLHM9dCgiZXM2LXdlYWstbWFwIiksbD10KCJjb2xvci1ub3JtYWxpemUiKSxjPXQoImZvbnQtYXRsYXMiKSx1PXQoInR5cGVkYXJyYXktcG9vbCIpLGg9dCgicGFyc2UtcmVjdCIpLGY9dCgiaXMtcGxhaW4tb2JqIikscD10KCJwYXJzZS11bml0IiksZD10KCJ0by1weCIpLGc9dCgiZGV0ZWN0LWtlcm5pbmciKSx2PXQoIm9iamVjdC1hc3NpZ24iKSxtPXQoImZvbnQtbWVhc3VyZSIpLHk9dCgiZmxhdHRlbi12ZXJ0ZXgtZGF0YSIpLHg9dCgiYml0LXR3aWRkbGUiKS5uZXh0UG93MixiPW5ldyBzLF89ITE7aWYoZG9jdW1lbnQuYm9keSl7dmFyIHc9ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dy5zdHlsZS5mb250PSJpdGFsaWMgc21hbGwtY2FwcyBib2xkIGNvbmRlbnNlZCAxNnB4LzIgY3Vyc2l2ZSIsZ2V0Q29tcHV0ZWRTdHlsZSh3KS5mb250U3RyZXRjaCYmKF89ITApLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodyl9dmFyIGs9ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0Ll9nbCYmdC5wcm9wJiZ0LnRleHR1cmUmJnQuYnVmZmVyfSh0KT90aGlzLmdsPW8odCk6KHQ9e3JlZ2w6dH0sdGhpcy5nbD10LnJlZ2wuX2dsKSx0aGlzLnNoYWRlcj1iLmdldCh0aGlzLmdsKSx0aGlzLnNoYWRlcj90aGlzLnJlZ2w9dGhpcy5zaGFkZXIucmVnbDp0aGlzLnJlZ2w9dC5yZWdsfHxpKHtnbDp0aGlzLmdsfSksdGhpcy5jaGFyQnVmZmVyPXRoaXMucmVnbC5idWZmZXIoe3R5cGU6InVpbnQ4Iix1c2FnZToic3RyZWFtIn0pLHRoaXMuc2l6ZUJ1ZmZlcj10aGlzLnJlZ2wuYnVmZmVyKHt0eXBlOiJmbG9hdCIsdXNhZ2U6InN0cmVhbSJ9KSx0aGlzLnNoYWRlcnx8KHRoaXMuc2hhZGVyPXRoaXMuY3JlYXRlU2hhZGVyKCksYi5zZXQodGhpcy5nbCx0aGlzLnNoYWRlcikpLHRoaXMuYmF0Y2g9W10sdGhpcy5mb250U2l6ZT1bXSx0aGlzLmZvbnQ9W10sdGhpcy5mb250QXRsYXM9W10sdGhpcy5kcmF3PXRoaXMuc2hhZGVyLmRyYXcuYmluZCh0aGlzKSx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMucmVnbC5fcmVmcmVzaCgpLHRoaXMuZHJhdyh0aGlzLmJhdGNoKX0sdGhpcy5jYW52YXM9dGhpcy5nbC5jYW52YXMsdGhpcy51cGRhdGUoZih0KT90Ont9KX07ay5wcm90b3R5cGUuY3JlYXRlU2hhZGVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWdsLGU9dCh7YmxlbmQ6e2VuYWJsZTohMCxjb2xvcjpbMCwwLDAsMV0sZnVuYzp7c3JjUkdCOiJzcmMgYWxwaGEiLGRzdFJHQjoib25lIG1pbnVzIHNyYyBhbHBoYSIsc3JjQWxwaGE6Im9uZSBtaW51cyBkc3QgYWxwaGEiLGRzdEFscGhhOiJvbmUifX0sc3RlbmNpbDp7ZW5hYmxlOiExfSxkZXB0aDp7ZW5hYmxlOiExfSxjb3VudDp0LnByb3AoImNvdW50Iiksb2Zmc2V0OnQucHJvcCgib2Zmc2V0IiksYXR0cmlidXRlczp7Y2hhck9mZnNldDp7b2Zmc2V0OjQsc3RyaWRlOjgsYnVmZmVyOnQudGhpcygic2l6ZUJ1ZmZlciIpfSx3aWR0aDp7b2Zmc2V0OjAsc3RyaWRlOjgsYnVmZmVyOnQudGhpcygic2l6ZUJ1ZmZlciIpfSxjaGFyOnQudGhpcygiY2hhckJ1ZmZlciIpLHBvc2l0aW9uOnQudGhpcygicG9zaXRpb24iKX0sdW5pZm9ybXM6e2F0bGFzU2l6ZTpmdW5jdGlvbih0LGUpe3JldHVybltlLmF0bGFzLndpZHRoLGUuYXRsYXMuaGVpZ2h0XX0sYXRsYXNEaW06ZnVuY3Rpb24odCxlKXtyZXR1cm5bZS5hdGxhcy5jb2xzLGUuYXRsYXMucm93c119LGF0bGFzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuYXRsYXMudGV4dHVyZX0sY2hhclN0ZXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5hdGxhcy5zdGVwfSxlbTpmdW5jdGlvbih0LGUpe3JldHVybiBlLmF0bGFzLmVtfSxjb2xvcjp0LnByb3AoImNvbG9yIiksb3BhY2l0eTp0LnByb3AoIm9wYWNpdHkiKSx2aWV3cG9ydDp0LnRoaXMoInZpZXdwb3J0QXJyYXkiKSxzY2FsZTp0LnRoaXMoInNjYWxlIiksYWxpZ246dC5wcm9wKCJhbGlnbiIpLGJhc2VsaW5lOnQucHJvcCgiYmFzZWxpbmUiKSx0cmFuc2xhdGU6dC50aGlzKCJ0cmFuc2xhdGUiKSxwb3NpdGlvbk9mZnNldDp0LnByb3AoInBvc2l0aW9uT2Zmc2V0Iil9LHByaW1pdGl2ZToicG9pbnRzIix2aWV3cG9ydDp0LnRoaXMoInZpZXdwb3J0IiksdmVydDoiXG5cdFx0XHRwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cdFx0XHRhdHRyaWJ1dGUgZmxvYXQgd2lkdGgsIGNoYXJPZmZzZXQsIGNoYXI7XG5cdFx0XHRhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcblx0XHRcdHVuaWZvcm0gZmxvYXQgZm9udFNpemUsIGNoYXJTdGVwLCBlbSwgYWxpZ24sIGJhc2VsaW5lO1xuXHRcdFx0dW5pZm9ybSB2ZWM0IHZpZXdwb3J0O1xuXHRcdFx0dW5pZm9ybSB2ZWM0IGNvbG9yO1xuXHRcdFx0dW5pZm9ybSB2ZWMyIGF0bGFzU2l6ZSwgYXRsYXNEaW0sIHNjYWxlLCB0cmFuc2xhdGUsIHBvc2l0aW9uT2Zmc2V0O1xuXHRcdFx0dmFyeWluZyB2ZWMyIGNoYXJDb29yZCwgY2hhcklkO1xuXHRcdFx0dmFyeWluZyBmbG9hdCBjaGFyV2lkdGg7XG5cdFx0XHR2YXJ5aW5nIHZlYzQgZm9udENvbG9yO1xuXHRcdFx0dm9pZCBtYWluICgpIHtcblx0XHRcdFx0Iisoay5ub3JtYWxWaWV3cG9ydD8iIjoidmVjMiBwb3NpdGlvbk9mZnNldCA9IHZlYzIocG9zaXRpb25PZmZzZXQueCwtIHBvc2l0aW9uT2Zmc2V0LnkpOyIpKyJcblxuXHRcdFx0XHR2ZWMyIG9mZnNldCA9IGZsb29yKGVtICogKHZlYzIoYWxpZ24gKyBjaGFyT2Zmc2V0LCBiYXNlbGluZSlcblx0XHRcdFx0XHQrIHBvc2l0aW9uT2Zmc2V0KSlcblx0XHRcdFx0XHQvICh2aWV3cG9ydC56dyAqIHNjYWxlLnh5KTtcblxuXHRcdFx0XHR2ZWMyIHBvc2l0aW9uID0gKHBvc2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlO1xuXHRcdFx0XHRwb3NpdGlvbiArPSBvZmZzZXQgKiBzY2FsZTtcblxuXHRcdFx0XHQiKyhrLm5vcm1hbFZpZXdwb3J0PyJwb3NpdGlvbi55ID0gMS4gLSBwb3NpdGlvbi55OyI6IiIpKyJcblxuXHRcdFx0XHRjaGFyQ29vcmQgPSBwb3NpdGlvbiAqIHZpZXdwb3J0Lnp3ICsgdmlld3BvcnQueHk7XG5cblx0XHRcdFx0Z2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uICogMi4gLSAxLiwgMCwgMSk7XG5cblx0XHRcdFx0Z2xfUG9pbnRTaXplID0gY2hhclN0ZXA7XG5cblx0XHRcdFx0Y2hhcklkLnggPSBtb2QoY2hhciwgYXRsYXNEaW0ueCk7XG5cdFx0XHRcdGNoYXJJZC55ID0gZmxvb3IoY2hhciAvIGF0bGFzRGltLngpO1xuXG5cdFx0XHRcdGNoYXJXaWR0aCA9IHdpZHRoICogZW07XG5cblx0XHRcdFx0Zm9udENvbG9yID0gY29sb3IgLyAyNTUuO1xuXHRcdFx0fSIsZnJhZzoiXG5cdFx0XHRwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCBhdGxhcztcblx0XHRcdHVuaWZvcm0gZmxvYXQgZm9udFNpemUsIGNoYXJTdGVwLCBvcGFjaXR5O1xuXHRcdFx0dW5pZm9ybSB2ZWMyIGF0bGFzU2l6ZTtcblx0XHRcdHVuaWZvcm0gdmVjNCB2aWV3cG9ydDtcblx0XHRcdHZhcnlpbmcgdmVjNCBmb250Q29sb3I7XG5cdFx0XHR2YXJ5aW5nIHZlYzIgY2hhckNvb3JkLCBjaGFySWQ7XG5cdFx0XHR2YXJ5aW5nIGZsb2F0IGNoYXJXaWR0aDtcblxuXHRcdFx0ZmxvYXQgbGlnaHRuZXNzKHZlYzQgY29sb3IpIHtcblx0XHRcdFx0cmV0dXJuIGNvbG9yLnIgKiAwLjI5OSArIGNvbG9yLmcgKiAwLjU4NyArIGNvbG9yLmIgKiAwLjExNDtcblx0XHRcdH1cblxuXHRcdFx0dm9pZCBtYWluICgpIHtcblx0XHRcdFx0dmVjMiB1diA9IGdsX0ZyYWdDb29yZC54eSAtIGNoYXJDb29yZCArIGNoYXJTdGVwICogLjU7XG5cdFx0XHRcdGZsb2F0IGhhbGZDaGFyU3RlcCA9IGZsb29yKGNoYXJTdGVwICogLjUgKyAuNSk7XG5cblx0XHRcdFx0Ly8gaW52ZXJ0IHkgYW5kIHNoaWZ0IGJ5IDFweCAoRkYgZXhwZWNpYWxseSBuZWVkcyB0aGF0KVxuXHRcdFx0XHR1di55ID0gY2hhclN0ZXAgLSB1di55O1xuXG5cdFx0XHRcdC8vIGlnbm9yZSBwb2ludHMgb3V0c2lkZSBvZiBjaGFyYWN0ZXIgYm91bmRpbmcgYm94XG5cdFx0XHRcdGZsb2F0IGhhbGZDaGFyV2lkdGggPSBjZWlsKGNoYXJXaWR0aCAqIC41KTtcblx0XHRcdFx0aWYgKGZsb29yKHV2LngpID4gaGFsZkNoYXJTdGVwICsgaGFsZkNoYXJXaWR0aCB8fFxuXHRcdFx0XHRcdGZsb29yKHV2LngpIDwgaGFsZkNoYXJTdGVwIC0gaGFsZkNoYXJXaWR0aCkgcmV0dXJuO1xuXG5cdFx0XHRcdHV2ICs9IGNoYXJJZCAqIGNoYXJTdGVwO1xuXHRcdFx0XHR1diA9IHV2IC8gYXRsYXNTaXplO1xuXG5cdFx0XHRcdHZlYzQgY29sb3IgPSBmb250Q29sb3I7XG5cdFx0XHRcdHZlYzQgbWFzayA9IHRleHR1cmUyRChhdGxhcywgdXYpO1xuXG5cdFx0XHRcdGZsb2F0IG1hc2tZID0gbGlnaHRuZXNzKG1hc2spO1xuXHRcdFx0XHQvLyBmbG9hdCBjb2xvclkgPSBsaWdodG5lc3MoY29sb3IpO1xuXHRcdFx0XHRjb2xvci5hICo9IG1hc2tZO1xuXHRcdFx0XHRjb2xvci5hICo9IG9wYWNpdHk7XG5cblx0XHRcdFx0Ly8gY29sb3IuYSArPSAuMTtcblxuXHRcdFx0XHQvLyBhbnRpYWxpYXNpbmcsIHNlZSB5aXEgY29sb3Igc3BhY2UgeS1jaGFubmVsIGZvcm11bGFcblx0XHRcdFx0Ly8gY29sb3IucmdiICs9ICgxLiAtIGNvbG9yLnJnYikgKiAoMS4gLSBtYXNrLnJnYik7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gY29sb3I7XG5cdFx0XHR9In0pO3JldHVybntyZWdsOnQsZHJhdzplLGF0bGFzOnt9fX0say5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiB0KXQ9e3RleHQ6dH07ZWxzZSBpZighdClyZXR1cm47bnVsbCE9KHQ9YSh0LHtwb3NpdGlvbjoicG9zaXRpb24gcG9zaXRpb25zIGNvb3JkIGNvb3JkcyBjb29yZGluYXRlcyIsZm9udDoiZm9udCBmb250RmFjZSBmb250ZmFjZSB0eXBlZmFjZSBjc3NGb250IGNzcy1mb250IGZhbWlseSBmb250RmFtaWx5Iixmb250U2l6ZToiZm9udFNpemUgZm9udHNpemUgc2l6ZSBmb250LXNpemUiLHRleHQ6InRleHQgdGV4dHMgY2hhcnMgY2hhcmFjdGVycyB2YWx1ZSB2YWx1ZXMgc3ltYm9scyIsYWxpZ246ImFsaWduIGFsaWdubWVudCB0ZXh0QWxpZ24gdGV4dGJhc2VsaW5lIixiYXNlbGluZToiYmFzZWxpbmUgdGV4dEJhc2VsaW5lIHRleHRiYXNlbGluZSIsZGlyZWN0aW9uOiJkaXIgZGlyZWN0aW9uIHRleHREaXJlY3Rpb24iLGNvbG9yOiJjb2xvciBjb2xvdXIgZmlsbCBmaWxsLWNvbG9yIGZpbGxDb2xvciB0ZXh0Q29sb3IgdGV4dGNvbG9yIixrZXJuaW5nOiJrZXJuaW5nIGtlcm4iLHJhbmdlOiJyYW5nZSBkYXRhQm94Iix2aWV3cG9ydDoidnAgdmlld3BvcnQgdmlld0JveCB2aWV3Ym94IHZpZXdQb3J0IixvcGFjaXR5OiJvcGFjaXR5IGFscGhhIHRyYW5zcGFyZW5jeSB2aXNpYmxlIHZpc2liaWxpdHkgb3BhcXVlIixvZmZzZXQ6Im9mZnNldCBwb3NpdGlvbk9mZnNldCBwYWRkaW5nIHNoaWZ0IGluZGVudCBpbmRlbnRhdGlvbiJ9LCEwKSkub3BhY2l0eSYmKEFycmF5LmlzQXJyYXkodC5vcGFjaXR5KT90aGlzLm9wYWNpdHk9dC5vcGFjaXR5Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KX0pOnRoaXMub3BhY2l0eT1wYXJzZUZsb2F0KHQub3BhY2l0eSkpLG51bGwhPXQudmlld3BvcnQmJih0aGlzLnZpZXdwb3J0PWgodC52aWV3cG9ydCksay5ub3JtYWxWaWV3cG9ydCYmKHRoaXMudmlld3BvcnQueT10aGlzLmNhbnZhcy5oZWlnaHQtdGhpcy52aWV3cG9ydC55LXRoaXMudmlld3BvcnQuaGVpZ2h0KSx0aGlzLnZpZXdwb3J0QXJyYXk9W3RoaXMudmlld3BvcnQueCx0aGlzLnZpZXdwb3J0LnksdGhpcy52aWV3cG9ydC53aWR0aCx0aGlzLnZpZXdwb3J0LmhlaWdodF0pLG51bGw9PXRoaXMudmlld3BvcnQmJih0aGlzLnZpZXdwb3J0PXt4OjAseTowLHdpZHRoOnRoaXMuZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLGhlaWdodDp0aGlzLmdsLmRyYXdpbmdCdWZmZXJIZWlnaHR9LHRoaXMudmlld3BvcnRBcnJheT1bdGhpcy52aWV3cG9ydC54LHRoaXMudmlld3BvcnQueSx0aGlzLnZpZXdwb3J0LndpZHRoLHRoaXMudmlld3BvcnQuaGVpZ2h0XSksbnVsbCE9dC5rZXJuaW5nJiYodGhpcy5rZXJuaW5nPXQua2VybmluZyksbnVsbCE9dC5vZmZzZXQmJigibnVtYmVyIj09dHlwZW9mIHQub2Zmc2V0JiYodC5vZmZzZXQ9W3Qub2Zmc2V0LDBdKSx0aGlzLnBvc2l0aW9uT2Zmc2V0PXkodC5vZmZzZXQpKSx0LmRpcmVjdGlvbiYmKHRoaXMuZGlyZWN0aW9uPXQuZGlyZWN0aW9uKSx0LnJhbmdlJiYodGhpcy5yYW5nZT10LnJhbmdlLHRoaXMuc2NhbGU9WzEvKHQucmFuZ2VbMl0tdC5yYW5nZVswXSksMS8odC5yYW5nZVszXS10LnJhbmdlWzFdKV0sdGhpcy50cmFuc2xhdGU9Wy10LnJhbmdlWzBdLC10LnJhbmdlWzFdXSksdC5zY2FsZSYmKHRoaXMuc2NhbGU9dC5zY2FsZSksdC50cmFuc2xhdGUmJih0aGlzLnRyYW5zbGF0ZT10LnRyYW5zbGF0ZSksdGhpcy5zY2FsZXx8KHRoaXMuc2NhbGU9WzEvdGhpcy52aWV3cG9ydC53aWR0aCwxL3RoaXMudmlld3BvcnQuaGVpZ2h0XSksdGhpcy50cmFuc2xhdGV8fCh0aGlzLnRyYW5zbGF0ZT1bMCwwXSksdGhpcy5mb250Lmxlbmd0aHx8dC5mb250fHwodC5mb250PWsuYmFzZUZvbnRTaXplKyJweCBzYW5zLXNlcmlmIik7dmFyIHIsaT0hMSxvPSExO2lmKHQuZm9udCYmKEFycmF5LmlzQXJyYXkodC5mb250KT90LmZvbnQ6W3QuZm9udF0pLmZvckVhY2goZnVuY3Rpb24odCxyKXtpZigic3RyaW5nIj09dHlwZW9mIHQpdHJ5e3Q9bi5wYXJzZSh0KX1jYXRjaChlKXt0PW4ucGFyc2Uoay5iYXNlRm9udFNpemUrInB4ICIrdCl9ZWxzZSB0PW4ucGFyc2Uobi5zdHJpbmdpZnkodCkpO3ZhciBhPW4uc3RyaW5naWZ5KHtzaXplOmsuYmFzZUZvbnRTaXplLGZhbWlseTp0LmZhbWlseSxzdHJldGNoOl8/dC5zdHJldGNoOnZvaWQgMCx2YXJpYW50OnQudmFyaWFudCx3ZWlnaHQ6dC53ZWlnaHQsc3R5bGU6dC5zdHlsZX0pLHM9cCh0LnNpemUpLGw9TWF0aC5yb3VuZChzWzBdKmQoc1sxXSkpO2lmKGwhPT1lLmZvbnRTaXplW3JdJiYobz0hMCxlLmZvbnRTaXplW3JdPWwpLCEoZS5mb250W3JdJiZhPT1lLmZvbnRbcl0uYmFzZVN0cmluZ3x8KGk9ITAsZS5mb250W3JdPWsuZm9udHNbYV0sZS5mb250W3JdKSkpe3ZhciBjPXQuZmFtaWx5LmpvaW4oIiwgIiksdT1bdC5zdHlsZV07dC5zdHlsZSE9dC52YXJpYW50JiZ1LnB1c2godC52YXJpYW50KSx0LnZhcmlhbnQhPXQud2VpZ2h0JiZ1LnB1c2godC53ZWlnaHQpLF8mJnQud2VpZ2h0IT10LnN0cmV0Y2gmJnUucHVzaCh0LnN0cmV0Y2gpLGUuZm9udFtyXT17YmFzZVN0cmluZzphLGZhbWlseTpjLHdlaWdodDp0LndlaWdodCxzdHJldGNoOnQuc3RyZXRjaCxzdHlsZTp0LnN0eWxlLHZhcmlhbnQ6dC52YXJpYW50LHdpZHRoOnt9LGtlcm5pbmc6e30sbWV0cmljczptKGMse29yaWdpbjoidG9wIixmb250U2l6ZTprLmJhc2VGb250U2l6ZSxmb250U3R5bGU6dS5qb2luKCIgIil9KX0say5mb250c1thXT1lLmZvbnRbcl19fSksKGl8fG8pJiZ0aGlzLmZvbnQuZm9yRWFjaChmdW5jdGlvbihyLGEpe3ZhciBpPW4uc3RyaW5naWZ5KHtzaXplOmUuZm9udFNpemVbYV0sZmFtaWx5OnIuZmFtaWx5LHN0cmV0Y2g6Xz9yLnN0cmV0Y2g6dm9pZCAwLHZhcmlhbnQ6ci52YXJpYW50LHdlaWdodDpyLndlaWdodCxzdHlsZTpyLnN0eWxlfSk7aWYoZS5mb250QXRsYXNbYV09ZS5zaGFkZXIuYXRsYXNbaV0sIWUuZm9udEF0bGFzW2FdKXt2YXIgbz1yLm1ldHJpY3M7ZS5zaGFkZXIuYXRsYXNbaV09ZS5mb250QXRsYXNbYV09e2ZvbnRTdHJpbmc6aSxzdGVwOjIqTWF0aC5jZWlsKGUuZm9udFNpemVbYV0qby5ib3R0b20qLjUpLGVtOmUuZm9udFNpemVbYV0sY29sczowLHJvd3M6MCxoZWlnaHQ6MCx3aWR0aDowLGNoYXJzOltdLGlkczp7fSx0ZXh0dXJlOmUucmVnbC50ZXh0dXJlKCl9fW51bGw9PXQudGV4dCYmKHQudGV4dD1lLnRleHQpfSksInN0cmluZyI9PXR5cGVvZiB0LnRleHQmJnQucG9zaXRpb24mJnQucG9zaXRpb24ubGVuZ3RoPjIpe2Zvcih2YXIgcz1BcnJheSguNSp0LnBvc2l0aW9uLmxlbmd0aCksZj0wO2Y8cy5sZW5ndGg7ZisrKXNbZl09dC50ZXh0O3QudGV4dD1zfWlmKG51bGwhPXQudGV4dHx8aSl7aWYodGhpcy50ZXh0T2Zmc2V0cz1bMF0sQXJyYXkuaXNBcnJheSh0LnRleHQpKXt0aGlzLmNvdW50PXQudGV4dFswXS5sZW5ndGgsdGhpcy5jb3VudHM9W3RoaXMuY291bnRdO2Zvcih2YXIgYj0xO2I8dC50ZXh0Lmxlbmd0aDtiKyspdGhpcy50ZXh0T2Zmc2V0c1tiXT10aGlzLnRleHRPZmZzZXRzW2ItMV0rdC50ZXh0W2ItMV0ubGVuZ3RoLHRoaXMuY291bnQrPXQudGV4dFtiXS5sZW5ndGgsdGhpcy5jb3VudHMucHVzaCh0LnRleHRbYl0ubGVuZ3RoKTt0aGlzLnRleHQ9dC50ZXh0LmpvaW4oIiIpfWVsc2UgdGhpcy50ZXh0PXQudGV4dCx0aGlzLmNvdW50PXRoaXMudGV4dC5sZW5ndGgsdGhpcy5jb3VudHM9W3RoaXMuY291bnRdO3I9W10sdGhpcy5mb250LmZvckVhY2goZnVuY3Rpb24odCxuKXtrLmF0bGFzQ29udGV4dC5mb250PXQuYmFzZVN0cmluZztmb3IodmFyIGE9ZS5mb250QXRsYXNbbl0saT0wO2k8ZS50ZXh0Lmxlbmd0aDtpKyspe3ZhciBvPWUudGV4dC5jaGFyQXQoaSk7aWYobnVsbD09YS5pZHNbb10mJihhLmlkc1tvXT1hLmNoYXJzLmxlbmd0aCxhLmNoYXJzLnB1c2gobyksci5wdXNoKG8pKSxudWxsPT10LndpZHRoW29dJiYodC53aWR0aFtvXT1rLmF0bGFzQ29udGV4dC5tZWFzdXJlVGV4dChvKS53aWR0aC9rLmJhc2VGb250U2l6ZSxlLmtlcm5pbmcpKXt2YXIgcz1bXTtmb3IodmFyIGwgaW4gdC53aWR0aClzLnB1c2gobCtvLG8rbCk7dih0Lmtlcm5pbmcsZyh0LmZhbWlseSx7cGFpcnM6c30pKX19fSl9aWYodC5wb3NpdGlvbilpZih0LnBvc2l0aW9uLmxlbmd0aD4yKXtmb3IodmFyIHc9IXQucG9zaXRpb25bMF0ubGVuZ3RoLFQ9dS5tYWxsb2NGbG9hdCgyKnRoaXMuY291bnQpLE09MCxBPTA7TTx0aGlzLmNvdW50cy5sZW5ndGg7TSsrKXt2YXIgUz10aGlzLmNvdW50c1tNXTtpZih3KWZvcih2YXIgRT0wO0U8UztFKyspVFtBKytdPXQucG9zaXRpb25bMipNXSxUW0ErK109dC5wb3NpdGlvblsyKk0rMV07ZWxzZSBmb3IodmFyIEw9MDtMPFM7TCsrKVRbQSsrXT10LnBvc2l0aW9uW01dWzBdLFRbQSsrXT10LnBvc2l0aW9uW01dWzFdfXRoaXMucG9zaXRpb24uY2FsbD90aGlzLnBvc2l0aW9uKHt0eXBlOiJmbG9hdCIsZGF0YTpUfSk6dGhpcy5wb3NpdGlvbj10aGlzLnJlZ2wuYnVmZmVyKHt0eXBlOiJmbG9hdCIsZGF0YTpUfSksdS5mcmVlRmxvYXQoVCl9ZWxzZSB0aGlzLnBvc2l0aW9uLmRlc3Ryb3kmJnRoaXMucG9zaXRpb24uZGVzdHJveSgpLHRoaXMucG9zaXRpb249e2NvbnN0YW50OnQucG9zaXRpb259O2lmKHQudGV4dHx8aSl7dmFyIEM9dS5tYWxsb2NVaW50OCh0aGlzLmNvdW50KSxQPXUubWFsbG9jRmxvYXQoMip0aGlzLmNvdW50KTt0aGlzLnRleHRXaWR0aD1bXTtmb3IodmFyIE89MCx6PTA7Tzx0aGlzLmNvdW50cy5sZW5ndGg7TysrKXtmb3IodmFyIEk9dGhpcy5jb3VudHNbT10sRD10aGlzLmZvbnRbT118fHRoaXMuZm9udFswXSxSPXRoaXMuZm9udEF0bGFzW09dfHx0aGlzLmZvbnRBdGxhc1swXSxGPTA7RjxJO0YrKyl7dmFyIEI9dGhpcy50ZXh0LmNoYXJBdCh6KSxOPXRoaXMudGV4dC5jaGFyQXQoei0xKTtpZihDW3pdPVIuaWRzW0JdLFBbMip6XT1ELndpZHRoW0JdLEYpe3ZhciBqPVBbMip6LTJdLFY9UFsyKnpdLFU9UFsyKnotMV0rLjUqaisuNSpWO2lmKHRoaXMua2VybmluZyl7dmFyIHE9RC5rZXJuaW5nW04rQl07cSYmKFUrPS4wMDEqcSl9UFsyKnorMV09VX1lbHNlIFBbMip6KzFdPS41KlBbMip6XTt6Kyt9dGhpcy50ZXh0V2lkdGgucHVzaChQLmxlbmd0aD8uNSpQWzIqei0yXStQWzIqei0xXTowKX10LmFsaWdufHwodC5hbGlnbj10aGlzLmFsaWduKSx0aGlzLmNoYXJCdWZmZXIoe2RhdGE6Qyx0eXBlOiJ1aW50OCIsdXNhZ2U6InN0cmVhbSJ9KSx0aGlzLnNpemVCdWZmZXIoe2RhdGE6UCx0eXBlOiJmbG9hdCIsdXNhZ2U6InN0cmVhbSJ9KSx1LmZyZWVVaW50OChDKSx1LmZyZWVGbG9hdChQKSxyLmxlbmd0aCYmdGhpcy5mb250LmZvckVhY2goZnVuY3Rpb24odCxyKXt2YXIgbj1lLmZvbnRBdGxhc1tyXSxhPW4uc3RlcCxpPU1hdGguZmxvb3Ioay5tYXhBdGxhc1NpemUvYSksbz1NYXRoLm1pbihpLG4uY2hhcnMubGVuZ3RoKSxzPU1hdGguY2VpbChuLmNoYXJzLmxlbmd0aC9vKSxsPXgobyphKSx1PXgocyphKTtuLndpZHRoPWwsbi5oZWlnaHQ9dSxuLnJvd3M9cyxuLmNvbHM9byxuLmVtJiZuLnRleHR1cmUoe2RhdGE6Yyh7Y2FudmFzOmsuYXRsYXNDYW52YXMsZm9udDpuLmZvbnRTdHJpbmcsY2hhcnM6bi5jaGFycyxzaGFwZTpbbCx1XSxzdGVwOlthLGFdfSl9KX0pfWlmKHQuYWxpZ24mJih0aGlzLmFsaWduPXQuYWxpZ24sdGhpcy5hbGlnbk9mZnNldD10aGlzLnRleHRXaWR0aC5tYXAoZnVuY3Rpb24odCxyKXt2YXIgbj1BcnJheS5pc0FycmF5KGUuYWxpZ24pP2UuYWxpZ24ubGVuZ3RoPjE/ZS5hbGlnbltyXTplLmFsaWduWzBdOmUuYWxpZ247aWYoIm51bWJlciI9PXR5cGVvZiBuKXJldHVybiBuO3N3aXRjaChuKXtjYXNlInJpZ2h0IjpjYXNlImVuZCI6cmV0dXJuLXQ7Y2FzZSJjZW50ZXIiOmNhc2UiY2VudHJlIjpjYXNlIm1pZGRsZSI6cmV0dXJuLjUqLXR9cmV0dXJuIDB9KSksbnVsbD09dGhpcy5iYXNlbGluZSYmbnVsbD09dC5iYXNlbGluZSYmKHQuYmFzZWxpbmU9MCksbnVsbCE9dC5iYXNlbGluZSYmKHRoaXMuYmFzZWxpbmU9dC5iYXNlbGluZSxBcnJheS5pc0FycmF5KHRoaXMuYmFzZWxpbmUpfHwodGhpcy5iYXNlbGluZT1bdGhpcy5iYXNlbGluZV0pLHRoaXMuYmFzZWxpbmVPZmZzZXQ9dGhpcy5iYXNlbGluZS5tYXAoZnVuY3Rpb24odCxyKXt2YXIgbj0oZS5mb250W3JdfHxlLmZvbnRbMF0pLm1ldHJpY3MsYT0wO3JldHVybiBhKz0uNSpuLmJvdHRvbSxhKz0ibnVtYmVyIj09dHlwZW9mIHQ/dC1uLmJhc2VsaW5lOi1uW3RdLGsubm9ybWFsVmlld3BvcnR8fChhKj0tMSksYX0pKSxudWxsIT10LmNvbG9yKWlmKHQuY29sb3J8fCh0LmNvbG9yPSJ0cmFuc3BhcmVudCIpLCJzdHJpbmciIT10eXBlb2YgdC5jb2xvciYmaXNOYU4odC5jb2xvcikpe3ZhciBIO2lmKCJudW1iZXIiPT10eXBlb2YgdC5jb2xvclswXSYmdC5jb2xvci5sZW5ndGg+dGhpcy5jb3VudHMubGVuZ3RoKXt2YXIgRz10LmNvbG9yLmxlbmd0aDtIPXUubWFsbG9jVWludDgoRyk7Zm9yKHZhciBZPSh0LmNvbG9yLnN1YmFycmF5fHx0LmNvbG9yLnNsaWNlKS5iaW5kKHQuY29sb3IpLFc9MDtXPEc7Vys9NClILnNldChsKFkoVyxXKzQpLCJ1aW50OCIpLFcpfWVsc2V7dmFyIFg9dC5jb2xvci5sZW5ndGg7SD11Lm1hbGxvY1VpbnQ4KDQqWCk7Zm9yKHZhciBaPTA7WjxYO1orKylILnNldChsKHQuY29sb3JbWl18fDAsInVpbnQ4IiksNCpaKX10aGlzLmNvbG9yPUh9ZWxzZSB0aGlzLmNvbG9yPWwodC5jb2xvciwidWludDgiKTtpZih0LnBvc2l0aW9ufHx0LnRleHR8fHQuY29sb3J8fHQuYmFzZWxpbmV8fHQuYWxpZ258fHQuZm9udHx8dC5vZmZzZXR8fHQub3BhY2l0eSlpZih0aGlzLmNvbG9yLmxlbmd0aD40fHx0aGlzLmJhc2VsaW5lT2Zmc2V0Lmxlbmd0aD4xfHx0aGlzLmFsaWduJiZ0aGlzLmFsaWduLmxlbmd0aD4xfHx0aGlzLmZvbnRBdGxhcy5sZW5ndGg+MXx8dGhpcy5wb3NpdGlvbk9mZnNldC5sZW5ndGg+Mil7dmFyIEo9TWF0aC5tYXgoLjUqdGhpcy5wb3NpdGlvbi5sZW5ndGh8fDAsLjI1KnRoaXMuY29sb3IubGVuZ3RofHwwLHRoaXMuYmFzZWxpbmVPZmZzZXQubGVuZ3RofHwwLHRoaXMuYWxpZ25PZmZzZXQubGVuZ3RofHwwLHRoaXMuZm9udC5sZW5ndGh8fDAsdGhpcy5vcGFjaXR5Lmxlbmd0aHx8MCwuNSp0aGlzLnBvc2l0aW9uT2Zmc2V0Lmxlbmd0aHx8MCk7dGhpcy5iYXRjaD1BcnJheShKKTtmb3IodmFyIEs9MDtLPHRoaXMuYmF0Y2gubGVuZ3RoO0srKyl0aGlzLmJhdGNoW0tdPXtjb3VudDp0aGlzLmNvdW50cy5sZW5ndGg+MT90aGlzLmNvdW50c1tLXTp0aGlzLmNvdW50c1swXSxvZmZzZXQ6dGhpcy50ZXh0T2Zmc2V0cy5sZW5ndGg+MT90aGlzLnRleHRPZmZzZXRzW0tdOnRoaXMudGV4dE9mZnNldHNbMF0sY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yLmxlbmd0aDw9ND90aGlzLmNvbG9yOnRoaXMuY29sb3Iuc3ViYXJyYXkoNCpLLDQqSys0KTpbMCwwLDAsMjU1XSxvcGFjaXR5OkFycmF5LmlzQXJyYXkodGhpcy5vcGFjaXR5KT90aGlzLm9wYWNpdHlbS106dGhpcy5vcGFjaXR5LGJhc2VsaW5lOm51bGwhPXRoaXMuYmFzZWxpbmVPZmZzZXRbS10/dGhpcy5iYXNlbGluZU9mZnNldFtLXTp0aGlzLmJhc2VsaW5lT2Zmc2V0WzBdLGFsaWduOnRoaXMuYWxpZ24/bnVsbCE9dGhpcy5hbGlnbk9mZnNldFtLXT90aGlzLmFsaWduT2Zmc2V0W0tdOnRoaXMuYWxpZ25PZmZzZXRbMF06MCxhdGxhczp0aGlzLmZvbnRBdGxhc1tLXXx8dGhpcy5mb250QXRsYXNbMF0scG9zaXRpb25PZmZzZXQ6dGhpcy5wb3NpdGlvbk9mZnNldC5sZW5ndGg+Mj90aGlzLnBvc2l0aW9uT2Zmc2V0LnN1YmFycmF5KDIqSywyKksrMik6dGhpcy5wb3NpdGlvbk9mZnNldH19ZWxzZSB0aGlzLmNvdW50P3RoaXMuYmF0Y2g9W3tjb3VudDp0aGlzLmNvdW50LG9mZnNldDowLGNvbG9yOnRoaXMuY29sb3J8fFswLDAsMCwyNTVdLG9wYWNpdHk6QXJyYXkuaXNBcnJheSh0aGlzLm9wYWNpdHkpP3RoaXMub3BhY2l0eVswXTp0aGlzLm9wYWNpdHksYmFzZWxpbmU6dGhpcy5iYXNlbGluZU9mZnNldFswXSxhbGlnbjp0aGlzLmFsaWduT2Zmc2V0P3RoaXMuYWxpZ25PZmZzZXRbMF06MCxhdGxhczp0aGlzLmZvbnRBdGxhc1swXSxwb3NpdGlvbk9mZnNldDp0aGlzLnBvc2l0aW9uT2Zmc2V0fV06dGhpcy5iYXRjaD1bXX0say5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30say5wcm90b3R5cGUua2VybmluZz0hMCxrLnByb3RvdHlwZS5wb3NpdGlvbj17Y29uc3RhbnQ6bmV3IEZsb2F0MzJBcnJheSgyKX0say5wcm90b3R5cGUudHJhbnNsYXRlPW51bGwsay5wcm90b3R5cGUuc2NhbGU9bnVsbCxrLnByb3RvdHlwZS5mb250PW51bGwsay5wcm90b3R5cGUudGV4dD0iIixrLnByb3RvdHlwZS5wb3NpdGlvbk9mZnNldD1bMCwwXSxrLnByb3RvdHlwZS5vcGFjaXR5PTEsay5wcm90b3R5cGUuY29sb3I9bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDI1NV0pLGsucHJvdG90eXBlLmFsaWduT2Zmc2V0PVswLDBdLGsubm9ybWFsVmlld3BvcnQ9ITEsay5tYXhBdGxhc1NpemU9MTAyNCxrLmF0bGFzQ2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGsuYXRsYXNDb250ZXh0PWsuYXRsYXNDYW52YXMuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pLGsuYmFzZUZvbnRTaXplPTY0LGsuZm9udHM9e30sZS5leHBvcnRzPWt9LHsiYml0LXR3aWRkbGUiOjk0LCJjb2xvci1ub3JtYWxpemUiOjEyMiwiY3NzLWZvbnQiOjE0MSwiZGV0ZWN0LWtlcm5pbmciOjE2OCwiZXM2LXdlYWstbWFwIjozMjAsImZsYXR0ZW4tdmVydGV4LWRhdGEiOjIzMCwiZm9udC1hdGxhcyI6MjMxLCJmb250LW1lYXN1cmUiOjIzMiwiZ2wtdXRpbC9jb250ZXh0IjozMjUsImlzLXBsYWluLW9iaiI6NDI0LCJvYmplY3QtYXNzaWduIjo0NTYsInBhcnNlLXJlY3QiOjQ2MSwicGFyc2UtdW5pdCI6NDYzLCJwaWNrLWJ5LWFsaWFzIjo0NjcscmVnbDo1MDEsInRvLXB4Ijo1MzgsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sMzIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuL2lzLWltcGxlbWVudGVkIikoKT9XZWFrTWFwOnQoIi4vcG9seWZpbGwiKX0seyIuL2lzLWltcGxlbWVudGVkIjozMjEsIi4vcG9seWZpbGwiOjMyM31dLDMyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdCxlO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXZWFrTWFwKXJldHVybiExO3RyeXt0PW5ldyBXZWFrTWFwKFtbZT17fSwib25lIl0sW3t9LCJ0d28iXSxbe30sInRocmVlIl1dKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4iW29iamVjdCBXZWFrTWFwXSI9PT1TdHJpbmcodCkmJigiZnVuY3Rpb24iPT10eXBlb2YgdC5zZXQmJih0LnNldCh7fSwxKT09PXQmJigiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWxldGUmJigiZnVuY3Rpb24iPT10eXBlb2YgdC5oYXMmJiJvbmUiPT09dC5nZXQoZSkpKSkpfX0se31dLDMyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtNYXAmJiJbb2JqZWN0IFdlYWtNYXBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2Vha01hcCl9LHt9XSwzMjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4sYT10KCJlczUtZXh0L29iamVjdC9pcy12YWx1ZSIpLGk9dCgiZXM1LWV4dC9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZiIpLG89dCgiZXM1LWV4dC9vYmplY3QvdmFsaWQtb2JqZWN0Iikscz10KCJlczUtZXh0L29iamVjdC92YWxpZC12YWx1ZSIpLGw9dCgiZXM1LWV4dC9zdHJpbmcvcmFuZG9tLXVuaXEiKSxjPXQoImQiKSx1PXQoImVzNi1pdGVyYXRvci9nZXQiKSxoPXQoImVzNi1pdGVyYXRvci9mb3Itb2YiKSxmPXQoImVzNi1zeW1ib2wiKS50b1N0cmluZ1RhZyxwPXQoIi4vaXMtbmF0aXZlLWltcGxlbWVudGVkIiksZD1BcnJheS5pc0FycmF5LGc9T2JqZWN0LmRlZmluZVByb3BlcnR5LHY9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxtPU9iamVjdC5nZXRQcm90b3R5cGVPZjtlLmV4cG9ydHM9bj1mdW5jdGlvbigpe3ZhciB0LGU9YXJndW1lbnRzWzBdO2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIik7cmV0dXJuIHQ9cCYmaSYmV2Vha01hcCE9PW4/aShuZXcgV2Vha01hcCxtKHRoaXMpKTp0aGlzLGEoZSkmJihkKGUpfHwoZT11KGUpKSksZyh0LCJfX3dlYWtNYXBEYXRhX18iLGMoImMiLCIkd2Vha01hcCQiK2woKSkpLGU/KGgoZSxmdW5jdGlvbihlKXtzKGUpLHQuc2V0KGVbMF0sZVsxXSl9KSx0KTp0fSxwJiYoaSYmaShuLFdlYWtNYXApLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoV2Vha01hcC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOmMobil9KSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobi5wcm90b3R5cGUse2RlbGV0ZTpjKGZ1bmN0aW9uKHQpe3JldHVybiEhdi5jYWxsKG8odCksdGhpcy5fX3dlYWtNYXBEYXRhX18pJiYoZGVsZXRlIHRbdGhpcy5fX3dlYWtNYXBEYXRhX19dLCEwKX0pLGdldDpjKGZ1bmN0aW9uKHQpe2lmKHYuY2FsbChvKHQpLHRoaXMuX193ZWFrTWFwRGF0YV9fKSlyZXR1cm4gdFt0aGlzLl9fd2Vha01hcERhdGFfX119KSxoYXM6YyhmdW5jdGlvbih0KXtyZXR1cm4gdi5jYWxsKG8odCksdGhpcy5fX3dlYWtNYXBEYXRhX18pfSksc2V0OmMoZnVuY3Rpb24odCxlKXtyZXR1cm4gZyhvKHQpLHRoaXMuX193ZWFrTWFwRGF0YV9fLGMoImMiLGUpKSx0aGlzfSksdG9TdHJpbmc6YyhmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IFdlYWtNYXBdIn0pfSksZyhuLnByb3RvdHlwZSxmLGMoImMiLCJXZWFrTWFwIikpfSx7Ii4vaXMtbmF0aXZlLWltcGxlbWVudGVkIjozMjIsZDoxNTMsImVzNS1leHQvb2JqZWN0L2lzLXZhbHVlIjoxOTcsImVzNS1leHQvb2JqZWN0L3NldC1wcm90b3R5cGUtb2YiOjIwMywiZXM1LWV4dC9vYmplY3QvdmFsaWQtb2JqZWN0IjoyMDcsImVzNS1leHQvb2JqZWN0L3ZhbGlkLXZhbHVlIjoyMDgsImVzNS1leHQvc3RyaW5nL3JhbmRvbS11bmlxIjoyMTMsImVzNi1pdGVyYXRvci9mb3Itb2YiOjIxNSwiZXM2LWl0ZXJhdG9yL2dldCI6MjE2LCJlczYtc3ltYm9sIjoyMjJ9XSwzMjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgibmRhcnJheSIpLGE9dCgibmRhcnJheS1vcHMiKSxpPXQoInR5cGVkYXJyYXktcG9vbCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoPD0xKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBNaXNzaW5nIGFyZ3VtZW50cyBmb3IgdGV4dHVyZTJkIGNvbnN0cnVjdG9yIik7b3x8ZnVuY3Rpb24odCl7bz1bdC5MSU5FQVIsdC5ORUFSRVNUX01JUE1BUF9MSU5FQVIsdC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsdC5MSU5FQVJfTUlQTUFQX05FQVJFU1RdLHM9W3QuTkVBUkVTVCx0LkxJTkVBUix0Lk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsdC5ORUFSRVNUX01JUE1BUF9MSU5FQVIsdC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsdC5MSU5FQVJfTUlQTUFQX0xJTkVBUl0sbD1bdC5SRVBFQVQsdC5DTEFNUF9UT19FREdFLHQuTUlSUk9SRURfUkVQRUFUXX0odCk7aWYoIm51bWJlciI9PXR5cGVvZiBhcmd1bWVudHNbMV0pcmV0dXJuIHYodCxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXXx8dC5SR0JBLGFyZ3VtZW50c1s0XXx8dC5VTlNJR05FRF9CWVRFKTtpZihBcnJheS5pc0FycmF5KGFyZ3VtZW50c1sxXSkpcmV0dXJuIHYodCwwfGFyZ3VtZW50c1sxXVswXSwwfGFyZ3VtZW50c1sxXVsxXSxhcmd1bWVudHNbMl18fHQuUkdCQSxhcmd1bWVudHNbM118fHQuVU5TSUdORURfQllURSk7aWYoIm9iamVjdCI9PXR5cGVvZiBhcmd1bWVudHNbMV0pe3ZhciBlPWFyZ3VtZW50c1sxXSxyPWMoZSk/ZTplLnJhdztpZihyKXJldHVybiBmdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG89Zyh0KTtyZXR1cm4gdC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCwwLGEsYSxpLGUpLG5ldyBmKHQsbyxyLG4sYSxpKX0odCxyLDB8ZS53aWR0aCwwfGUuaGVpZ2h0LGFyZ3VtZW50c1syXXx8dC5SR0JBLGFyZ3VtZW50c1szXXx8dC5VTlNJR05FRF9CWVRFKTtpZihlLnNoYXBlJiZlLmRhdGEmJmUuc3RyaWRlKXJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPWUuZHR5cGUsbz1lLnNoYXBlLnNsaWNlKCkscz10LmdldFBhcmFtZXRlcih0Lk1BWF9URVhUVVJFX1NJWkUpO2lmKG9bMF08MHx8b1swXT5zfHxvWzFdPDB8fG9bMV0+cyl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCB0ZXh0dXJlIHNpemUiKTt2YXIgbD1kKG8sZS5zdHJpZGUuc2xpY2UoKSksYz0wOyJmbG9hdDMyIj09PXI/Yz10LkZMT0FUOiJmbG9hdDY0Ij09PXI/KGM9dC5GTE9BVCxsPSExLHI9ImZsb2F0MzIiKToidWludDgiPT09cj9jPXQuVU5TSUdORURfQllURTooYz10LlVOU0lHTkVEX0JZVEUsbD0hMSxyPSJ1aW50OCIpO3ZhciBoLHAsdj0wO2lmKDI9PT1vLmxlbmd0aCl2PXQuTFVNSU5BTkNFLG89W29bMF0sb1sxXSwxXSxlPW4oZS5kYXRhLG8sW2Uuc3RyaWRlWzBdLGUuc3RyaWRlWzFdLDFdLGUub2Zmc2V0KTtlbHNle2lmKDMhPT1vLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCBzaGFwZSBmb3IgdGV4dHVyZSIpO2lmKDE9PT1vWzJdKXY9dC5BTFBIQTtlbHNlIGlmKDI9PT1vWzJdKXY9dC5MVU1JTkFOQ0VfQUxQSEE7ZWxzZSBpZigzPT09b1syXSl2PXQuUkdCO2Vsc2V7aWYoNCE9PW9bMl0pdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgc2hhcGUgZm9yIHBpeGVsIGNvb3JkcyIpO3Y9dC5SR0JBfX1jIT09dC5GTE9BVHx8dC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zsb2F0Iil8fChjPXQuVU5TSUdORURfQllURSxsPSExKTt2YXIgbT1lLnNpemU7aWYobCloPTA9PT1lLm9mZnNldCYmZS5kYXRhLmxlbmd0aD09PW0/ZS5kYXRhOmUuZGF0YS5zdWJhcnJheShlLm9mZnNldCxlLm9mZnNldCttKTtlbHNle3ZhciB5PVtvWzJdLG9bMl0qb1swXSwxXTtwPWkubWFsbG9jKG0scik7dmFyIHg9bihwLG8seSwwKTsiZmxvYXQzMiIhPT1yJiYiZmxvYXQ2NCIhPT1yfHxjIT09dC5VTlNJR05FRF9CWVRFP2EuYXNzaWduKHgsZSk6dSh4LGUpLGg9cC5zdWJhcnJheSgwLG0pfXZhciBiPWcodCk7dC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCwwLHYsb1swXSxvWzFdLDAsdixjLGgpLGx8fGkuZnJlZShwKTtyZXR1cm4gbmV3IGYodCxiLG9bMF0sb1sxXSx2LGMpfSh0LGUpfXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIGFyZ3VtZW50cyBmb3IgdGV4dHVyZTJkIGNvbnN0cnVjdG9yIil9O3ZhciBvPW51bGwscz1udWxsLGw9bnVsbDtmdW5jdGlvbiBjKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MVmlkZW9FbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZURhdGEmJnQgaW5zdGFuY2VvZiBJbWFnZURhdGF9dmFyIHU9ZnVuY3Rpb24odCxlKXthLm11bHModCxlLDI1NSl9O2Z1bmN0aW9uIGgodCxlLHIpe3ZhciBuPXQuZ2wsYT1uLmdldFBhcmFtZXRlcihuLk1BWF9URVhUVVJFX1NJWkUpO2lmKGU8MHx8ZT5hfHxyPDB8fHI+YSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCB0ZXh0dXJlIHNpemUiKTtyZXR1cm4gdC5fc2hhcGU9W2Uscl0sdC5iaW5kKCksbi50ZXhJbWFnZTJEKG4uVEVYVFVSRV8yRCwwLHQuZm9ybWF0LGUsciwwLHQuZm9ybWF0LHQudHlwZSxudWxsKSx0Ll9taXBMZXZlbHM9WzBdLHR9ZnVuY3Rpb24gZih0LGUscixuLGEsaSl7dGhpcy5nbD10LHRoaXMuaGFuZGxlPWUsdGhpcy5mb3JtYXQ9YSx0aGlzLnR5cGU9aSx0aGlzLl9zaGFwZT1bcixuXSx0aGlzLl9taXBMZXZlbHM9WzBdLHRoaXMuX21hZ0ZpbHRlcj10Lk5FQVJFU1QsdGhpcy5fbWluRmlsdGVyPXQuTkVBUkVTVCx0aGlzLl93cmFwUz10LkNMQU1QX1RPX0VER0UsdGhpcy5fd3JhcFQ9dC5DTEFNUF9UT19FREdFLHRoaXMuX2FuaXNvU2FtcGxlcz0xO3ZhciBvPXRoaXMscz1bdGhpcy5fd3JhcFMsdGhpcy5fd3JhcFRdO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHMsW3tnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5fd3JhcFN9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gby53cmFwUz10fX0se2dldDpmdW5jdGlvbigpe3JldHVybiBvLl93cmFwVH0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBvLndyYXBUPXR9fV0pLHRoaXMuX3dyYXBWZWN0b3I9czt2YXIgbD1bdGhpcy5fc2hhcGVbMF0sdGhpcy5fc2hhcGVbMV1dO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwsW3tnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5fc2hhcGVbMF19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gby53aWR0aD10fX0se2dldDpmdW5jdGlvbigpe3JldHVybiBvLl9zaGFwZVsxXX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBvLmhlaWdodD10fX1dKSx0aGlzLl9zaGFwZVZlY3Rvcj1sfXZhciBwPWYucHJvdG90eXBlO2Z1bmN0aW9uIGQodCxlKXtyZXR1cm4gMz09PXQubGVuZ3RoPzE9PT1lWzJdJiZlWzFdPT09dFswXSp0WzJdJiZlWzBdPT09dFsyXToxPT09ZVswXSYmZVsxXT09PXRbMF19ZnVuY3Rpb24gZyh0KXt2YXIgZT10LmNyZWF0ZVRleHR1cmUoKTtyZXR1cm4gdC5iaW5kVGV4dHVyZSh0LlRFWFRVUkVfMkQsZSksdC50ZXhQYXJhbWV0ZXJpKHQuVEVYVFVSRV8yRCx0LlRFWFRVUkVfTUlOX0ZJTFRFUix0Lk5FQVJFU1QpLHQudGV4UGFyYW1ldGVyaSh0LlRFWFRVUkVfMkQsdC5URVhUVVJFX01BR19GSUxURVIsdC5ORUFSRVNUKSx0LnRleFBhcmFtZXRlcmkodC5URVhUVVJFXzJELHQuVEVYVFVSRV9XUkFQX1MsdC5DTEFNUF9UT19FREdFKSx0LnRleFBhcmFtZXRlcmkodC5URVhUVVJFXzJELHQuVEVYVFVSRV9XUkFQX1QsdC5DTEFNUF9UT19FREdFKSxlfWZ1bmN0aW9uIHYodCxlLHIsbixhKXt2YXIgaT10LmdldFBhcmFtZXRlcih0Lk1BWF9URVhUVVJFX1NJWkUpO2lmKGU8MHx8ZT5pfHxyPDB8fHI+aSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCB0ZXh0dXJlIHNoYXBlIik7aWYoYT09PXQuRkxPQVQmJiF0LmdldEV4dGVuc2lvbigiT0VTX3RleHR1cmVfZmxvYXQiKSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogRmxvYXRpbmcgcG9pbnQgdGV4dHVyZXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7dmFyIG89Zyh0KTtyZXR1cm4gdC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCwwLG4sZSxyLDAsbixhLG51bGwpLG5ldyBmKHQsbyxlLHIsbixhKX1PYmplY3QuZGVmaW5lUHJvcGVydGllcyhwLHttaW5GaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5GaWx0ZXJ9LHNldDpmdW5jdGlvbih0KXt0aGlzLmJpbmQoKTt2YXIgZT10aGlzLmdsO2lmKHRoaXMudHlwZT09PWUuRkxPQVQmJm8uaW5kZXhPZih0KT49MCYmKGUuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKXx8KHQ9ZS5ORUFSRVNUKSkscy5pbmRleE9mKHQpPDApdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IFVua25vd24gZmlsdGVyIG1vZGUgIit0KTtyZXR1cm4gZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfTUlOX0ZJTFRFUix0KSx0aGlzLl9taW5GaWx0ZXI9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hZ0ZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuYmluZCgpO3ZhciBlPXRoaXMuZ2w7aWYodGhpcy50eXBlPT09ZS5GTE9BVCYmby5pbmRleE9mKHQpPj0wJiYoZS5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpfHwodD1lLk5FQVJFU1QpKSxzLmluZGV4T2YodCk8MCl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5rbm93biBmaWx0ZXIgbW9kZSAiK3QpO3JldHVybiBlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9NQUdfRklMVEVSLHQpLHRoaXMuX21hZ0ZpbHRlcj10fX0sbWlwU2FtcGxlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaXNvU2FtcGxlc30sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FuaXNvU2FtcGxlcztpZih0aGlzLl9hbmlzb1NhbXBsZXM9MHxNYXRoLm1heCh0LDEpLGUhPT10aGlzLl9hbmlzb1NhbXBsZXMpe3ZhciByPXRoaXMuZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtyJiZ0aGlzLmdsLnRleFBhcmFtZXRlcmYodGhpcy5nbC5URVhUVVJFXzJELHIuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsdGhpcy5fYW5pc29TYW1wbGVzKX1yZXR1cm4gdGhpcy5fYW5pc29TYW1wbGVzfX0sd3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuYmluZCgpLGwuaW5kZXhPZih0KTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBVbmtub3duIHdyYXAgbW9kZSAiK3QpO3JldHVybiB0aGlzLmdsLnRleFBhcmFtZXRlcmkodGhpcy5nbC5URVhUVVJFXzJELHRoaXMuZ2wuVEVYVFVSRV9XUkFQX1MsdCksdGhpcy5fd3JhcFM9dH19LHdyYXBUOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcFR9LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLmJpbmQoKSxsLmluZGV4T2YodCk8MCl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5rbm93biB3cmFwIG1vZGUgIit0KTtyZXR1cm4gdGhpcy5nbC50ZXhQYXJhbWV0ZXJpKHRoaXMuZ2wuVEVYVFVSRV8yRCx0aGlzLmdsLlRFWFRVUkVfV1JBUF9ULHQpLHRoaXMuX3dyYXBUPXR9fSx3cmFwOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcFZlY3Rvcn0sc2V0OmZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCl8fCh0PVt0LHRdKSwyIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IE11c3Qgc3BlY2lmeSB3cmFwIG1vZGUgZm9yIHJvd3MgYW5kIGNvbHVtbnMiKTtmb3IodmFyIGU9MDtlPDI7KytlKWlmKGwuaW5kZXhPZih0W2VdKTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBVbmtub3duIHdyYXAgbW9kZSAiK3QpO3RoaXMuX3dyYXBTPXRbMF0sdGhpcy5fd3JhcFQ9dFsxXTt2YXIgcj10aGlzLmdsO3JldHVybiB0aGlzLmJpbmQoKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1MsdGhpcy5fd3JhcFMpLHIudGV4UGFyYW1ldGVyaShyLlRFWFRVUkVfMkQsci5URVhUVVJFX1dSQVBfVCx0aGlzLl93cmFwVCksdH19LHNoYXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hhcGVWZWN0b3J9LHNldDpmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtpZigyIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgdGV4dHVyZSBzaGFwZSIpfWVsc2UgdD1bMHx0LDB8dF07cmV0dXJuIGgodGhpcywwfHRbMF0sMHx0WzFdKSxbMHx0WzBdLDB8dFsxXV19fSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NoYXBlWzBdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGgodGhpcyx0fD0wLHRoaXMuX3NoYXBlWzFdKSx0fX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hhcGVbMV19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gdHw9MCxoKHRoaXMsdGhpcy5fc2hhcGVbMF0sdCksdH19fSkscC5iaW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2w7cmV0dXJuIHZvaWQgMCE9PXQmJmUuYWN0aXZlVGV4dHVyZShlLlRFWFRVUkUwKygwfHQpKSxlLmJpbmRUZXh0dXJlKGUuVEVYVFVSRV8yRCx0aGlzLmhhbmRsZSksdm9pZCAwIT09dD8wfHQ6ZS5nZXRQYXJhbWV0ZXIoZS5BQ1RJVkVfVEVYVFVSRSktZS5URVhUVVJFMH0scC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5nbC5kZWxldGVUZXh0dXJlKHRoaXMuaGFuZGxlKX0scC5nZW5lcmF0ZU1pcG1hcD1mdW5jdGlvbigpe3RoaXMuYmluZCgpLHRoaXMuZ2wuZ2VuZXJhdGVNaXBtYXAodGhpcy5nbC5URVhUVVJFXzJEKTtmb3IodmFyIHQ9TWF0aC5taW4odGhpcy5fc2hhcGVbMF0sdGhpcy5fc2hhcGVbMV0pLGU9MDt0PjA7KytlLHQ+Pj49MSl0aGlzLl9taXBMZXZlbHMuaW5kZXhPZihlKTwwJiZ0aGlzLl9taXBMZXZlbHMucHVzaChlKX0scC5zZXRQaXhlbHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIHM9dGhpcy5nbDt0aGlzLmJpbmQoKSxBcnJheS5pc0FycmF5KGUpPyhvPXIscj0wfGVbMV0sZT0wfGVbMF0pOihlPWV8fDAscj1yfHwwKSxvPW98fDA7dmFyIGw9Yyh0KT90OnQucmF3O2lmKGwpe3RoaXMuX21pcExldmVscy5pbmRleE9mKG8pPDA/KHMudGV4SW1hZ2UyRChzLlRFWFRVUkVfMkQsMCx0aGlzLmZvcm1hdCx0aGlzLmZvcm1hdCx0aGlzLnR5cGUsbCksdGhpcy5fbWlwTGV2ZWxzLnB1c2gobykpOnMudGV4U3ViSW1hZ2UyRChzLlRFWFRVUkVfMkQsbyxlLHIsdGhpcy5mb3JtYXQsdGhpcy50eXBlLGwpfWVsc2V7aWYoISh0LnNoYXBlJiZ0LnN0cmlkZSYmdC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7aWYodC5zaGFwZS5sZW5ndGg8Mnx8ZSt0LnNoYXBlWzFdPnRoaXMuX3NoYXBlWzFdPj4+b3x8cit0LnNoYXBlWzBdPnRoaXMuX3NoYXBlWzBdPj4+b3x8ZTwwfHxyPDApdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IFRleHR1cmUgZGltZW5zaW9ucyBhcmUgb3V0IG9mIGJvdW5kcyIpOyFmdW5jdGlvbih0LGUscixvLHMsbCxjLGgpe3ZhciBmPWguZHR5cGUscD1oLnNoYXBlLnNsaWNlKCk7aWYocC5sZW5ndGg8Mnx8cC5sZW5ndGg+Myl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCBuZGFycmF5LCBtdXN0IGJlIDJkIG9yIDNkIik7dmFyIGc9MCx2PTAsbT1kKHAsaC5zdHJpZGUuc2xpY2UoKSk7ImZsb2F0MzIiPT09Zj9nPXQuRkxPQVQ6ImZsb2F0NjQiPT09Zj8oZz10LkZMT0FULG09ITEsZj0iZmxvYXQzMiIpOiJ1aW50OCI9PT1mP2c9dC5VTlNJR05FRF9CWVRFOihnPXQuVU5TSUdORURfQllURSxtPSExLGY9InVpbnQ4Iik7aWYoMj09PXAubGVuZ3RoKXY9dC5MVU1JTkFOQ0UscD1bcFswXSxwWzFdLDFdLGg9bihoLmRhdGEscCxbaC5zdHJpZGVbMF0saC5zdHJpZGVbMV0sMV0saC5vZmZzZXQpO2Vsc2V7aWYoMyE9PXAubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIHNoYXBlIGZvciB0ZXh0dXJlIik7aWYoMT09PXBbMl0pdj10LkFMUEhBO2Vsc2UgaWYoMj09PXBbMl0pdj10LkxVTUlOQU5DRV9BTFBIQTtlbHNlIGlmKDM9PT1wWzJdKXY9dC5SR0I7ZWxzZXtpZig0IT09cFsyXSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCBzaGFwZSBmb3IgcGl4ZWwgY29vcmRzIik7dj10LlJHQkF9cFsyXX12IT09dC5MVU1JTkFOQ0UmJnYhPT10LkFMUEhBfHxzIT09dC5MVU1JTkFOQ0UmJnMhPT10LkFMUEhBfHwodj1zKTtpZih2IT09cyl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW5jb21wYXRpYmxlIHRleHR1cmUgZm9ybWF0IGZvciBzZXRQaXhlbHMiKTt2YXIgeT1oLnNpemUseD1jLmluZGV4T2Yobyk8MDt4JiZjLnB1c2gobyk7aWYoZz09PWwmJm0pMD09PWgub2Zmc2V0JiZoLmRhdGEubGVuZ3RoPT09eT94P3QudGV4SW1hZ2UyRCh0LlRFWFRVUkVfMkQsbyxzLHBbMF0scFsxXSwwLHMsbCxoLmRhdGEpOnQudGV4U3ViSW1hZ2UyRCh0LlRFWFRVUkVfMkQsbyxlLHIscFswXSxwWzFdLHMsbCxoLmRhdGEpOng/dC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCxvLHMscFswXSxwWzFdLDAscyxsLGguZGF0YS5zdWJhcnJheShoLm9mZnNldCxoLm9mZnNldCt5KSk6dC50ZXhTdWJJbWFnZTJEKHQuVEVYVFVSRV8yRCxvLGUscixwWzBdLHBbMV0scyxsLGguZGF0YS5zdWJhcnJheShoLm9mZnNldCxoLm9mZnNldCt5KSk7ZWxzZXt2YXIgYjtiPWw9PT10LkZMT0FUP2kubWFsbG9jRmxvYXQzMih5KTppLm1hbGxvY1VpbnQ4KHkpO3ZhciBfPW4oYixwLFtwWzJdLHBbMl0qcFswXSwxXSk7Zz09PXQuRkxPQVQmJmw9PT10LlVOU0lHTkVEX0JZVEU/dShfLGgpOmEuYXNzaWduKF8saCkseD90LnRleEltYWdlMkQodC5URVhUVVJFXzJELG8scyxwWzBdLHBbMV0sMCxzLGwsYi5zdWJhcnJheSgwLHkpKTp0LnRleFN1YkltYWdlMkQodC5URVhUVVJFXzJELG8sZSxyLHBbMF0scFsxXSxzLGwsYi5zdWJhcnJheSgwLHkpKSxsPT09dC5GTE9BVD9pLmZyZWVGbG9hdDMyKGIpOmkuZnJlZVVpbnQ4KGIpfX0ocyxlLHIsbyx0aGlzLmZvcm1hdCx0aGlzLnR5cGUsdGhpcy5fbWlwTGV2ZWxzLHQpfX19LHtuZGFycmF5OjQ1MiwibmRhcnJheS1vcHMiOjQ0NiwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwzMjU6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInBpY2stYnktYWxpYXMiKTtmdW5jdGlvbiBhKHQpe2lmKHQuY29udGFpbmVyKWlmKHQuY29udGFpbmVyPT1kb2N1bWVudC5ib2R5KWRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGh8fCh0LmNhbnZhcy53aWR0aD10LndpZHRofHx0LnBpeGVsUmF0aW8qci5pbm5lcldpZHRoKSxkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodHx8KHQuY2FudmFzLmhlaWdodD10LmhlaWdodHx8dC5waXhlbFJhdGlvKnIuaW5uZXJIZWlnaHQpO2Vsc2V7dmFyIGU9dC5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5jYW52YXMud2lkdGg9dC53aWR0aHx8ZS5yaWdodC1lLmxlZnQsdC5jYW52YXMuaGVpZ2h0PXQuaGVpZ2h0fHxlLmJvdHRvbS1lLnRvcH19ZnVuY3Rpb24gaSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdC5nZXRDb250ZXh0JiYid2lkdGgiaW4gdCYmImhlaWdodCJpbiB0fWZ1bmN0aW9uIG8oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtyZXR1cm4gdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHQuc3R5bGUudG9wPTAsdC5zdHlsZS5sZWZ0PTAsdH1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7aWYodD8ic3RyaW5nIj09dHlwZW9mIHQmJih0PXtjb250YWluZXI6dH0pOnQ9e30saSh0KT90PXtjb250YWluZXI6dH06dD0ic3RyaW5nIj09dHlwZW9mKGU9dCkubm9kZU5hbWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmFwcGVuZENoaWxkJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/e2NvbnRhaW5lcjp0fTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdC5kcmF3QXJyYXlzfHwiZnVuY3Rpb24iPT10eXBlb2YgdC5kcmF3RWxlbWVudHN9KHQpP3tnbDp0fTpuKHQse2NvbnRhaW5lcjoiY29udGFpbmVyIHRhcmdldCBlbGVtZW50IGVsIGNhbnZhcyBob2xkZXIgcGFyZW50IHBhcmVudE5vZGUgd3JhcHBlciB1c2UgcmVmIHJvb3Qgbm9kZSIsZ2w6ImdsIGNvbnRleHQgd2ViZ2wgZ2xDb250ZXh0IixhdHRyczoiYXR0cmlidXRlcyBhdHRycyBjb250ZXh0QXR0cmlidXRlcyIscGl4ZWxSYXRpbzoicGl4ZWxSYXRpbyBweFJhdGlvIHB4IHJhdGlvIHB4cmF0aW8gcGl4ZWxyYXRpbyIsd2lkdGg6Incgd2lkdGgiLGhlaWdodDoiaCBoZWlnaHQifSwhMCksdC5waXhlbFJhdGlvfHwodC5waXhlbFJhdGlvPXIucGl4ZWxSYXRpb3x8MSksdC5nbClyZXR1cm4gdC5nbDtpZih0LmNhbnZhcyYmKHQuY29udGFpbmVyPXQuY2FudmFzLnBhcmVudE5vZGUpLHQuY29udGFpbmVyKXtpZigic3RyaW5nIj09dHlwZW9mIHQuY29udGFpbmVyKXt2YXIgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQuY29udGFpbmVyKTtpZighcyl0aHJvdyBFcnJvcigiRWxlbWVudCAiK3QuY29udGFpbmVyKyIgaXMgbm90IGZvdW5kIik7dC5jb250YWluZXI9c31pKHQuY29udGFpbmVyKT8odC5jYW52YXM9dC5jb250YWluZXIsdC5jb250YWluZXI9dC5jYW52YXMucGFyZW50Tm9kZSk6dC5jYW52YXN8fCh0LmNhbnZhcz1vKCksdC5jb250YWluZXIuYXBwZW5kQ2hpbGQodC5jYW52YXMpLGEodCkpfWVsc2UgaWYoIXQuY2FudmFzKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50KXRocm93IEVycm9yKCJOb3QgRE9NIGVudmlyb25tZW50LiBVc2UgaGVhZGxlc3MtZ2wuIik7dC5jb250YWluZXI9ZG9jdW1lbnQuYm9keXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHQuY2FudmFzPW8oKSx0LmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0LmNhbnZhcyksYSh0KX1pZighdC5nbCl0cnl7dC5nbD10LmNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIsdC5hdHRycyl9Y2F0Y2goZSl7dHJ5e3QuZ2w9dC5jYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIix0LmF0dHJzKX1jYXRjaChlKXt0LmdsPXQuY2FudmFzLmdldENvbnRleHQoIndlYmdsLWV4cGVyaW1lbnRhbCIsdC5hdHRycyl9fXJldHVybiB0LmdsfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyJwaWNrLWJ5LWFsaWFzIjo0Njd9XSwzMjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtlP2UuYmluZCgpOnQuYmluZEJ1ZmZlcih0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLG51bGwpO3ZhciBuPTB8dC5nZXRQYXJhbWV0ZXIodC5NQVhfVkVSVEVYX0FUVFJJQlMpO2lmKHIpe2lmKHIubGVuZ3RoPm4pdGhyb3cgbmV3IEVycm9yKCJnbC12YW86IFRvbyBtYW55IHZlcnRleCBhdHRyaWJ1dGVzIik7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDsrK2Epe3ZhciBpPXJbYV07aWYoaS5idWZmZXIpe3ZhciBvPWkuYnVmZmVyLHM9aS5zaXplfHw0LGw9aS50eXBlfHx0LkZMT0FULGM9ISFpLm5vcm1hbGl6ZWQsdT1pLnN0cmlkZXx8MCxoPWkub2Zmc2V0fHwwO28uYmluZCgpLHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoYSksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGEscyxsLGMsdSxoKX1lbHNle2lmKCJudW1iZXIiPT10eXBlb2YgaSl0LnZlcnRleEF0dHJpYjFmKGEsaSk7ZWxzZSBpZigxPT09aS5sZW5ndGgpdC52ZXJ0ZXhBdHRyaWIxZihhLGlbMF0pO2Vsc2UgaWYoMj09PWkubGVuZ3RoKXQudmVydGV4QXR0cmliMmYoYSxpWzBdLGlbMV0pO2Vsc2UgaWYoMz09PWkubGVuZ3RoKXQudmVydGV4QXR0cmliM2YoYSxpWzBdLGlbMV0saVsyXSk7ZWxzZXtpZig0IT09aS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC12YW86IEludmFsaWQgdmVydGV4IGF0dHJpYnV0ZSIpO3QudmVydGV4QXR0cmliNGYoYSxpWzBdLGlbMV0saVsyXSxpWzNdKX10LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShhKX19Zm9yKDthPG47KythKXQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGEpfWVsc2UgZm9yKHQuYmluZEJ1ZmZlcih0LkFSUkFZX0JVRkZFUixudWxsKSxhPTA7YTxuOysrYSl0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShhKX19LHt9XSwzMjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9kby1iaW5kLmpzIik7ZnVuY3Rpb24gYSh0KXt0aGlzLmdsPXQsdGhpcy5fZWxlbWVudHM9bnVsbCx0aGlzLl9hdHRyaWJ1dGVzPW51bGwsdGhpcy5fZWxlbWVudHNUeXBlPXQuVU5TSUdORURfU0hPUlR9YS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe24odGhpcy5nbCx0aGlzLl9lbGVtZW50cyx0aGlzLl9hdHRyaWJ1dGVzKX0sYS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLl9lbGVtZW50cz1lLHRoaXMuX2F0dHJpYnV0ZXM9dCx0aGlzLl9lbGVtZW50c1R5cGU9cnx8dGhpcy5nbC5VTlNJR05FRF9TSE9SVH0sYS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe30sYS5wcm90b3R5cGUudW5iaW5kPWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSxyKXtyPXJ8fDA7dmFyIG49dGhpcy5nbDt0aGlzLl9lbGVtZW50cz9uLmRyYXdFbGVtZW50cyh0LGUsdGhpcy5fZWxlbWVudHNUeXBlLHIpOm4uZHJhd0FycmF5cyh0LHIsZSl9LGUuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGEodCl9fSx7Ii4vZG8tYmluZC5qcyI6MzI2fV0sMzI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vZG8tYmluZC5qcyIpO2Z1bmN0aW9uIGEodCxlLHIsbixhLGkpe3RoaXMubG9jYXRpb249dCx0aGlzLmRpbWVuc2lvbj1lLHRoaXMuYT1yLHRoaXMuYj1uLHRoaXMuYz1hLHRoaXMuZD1pfWZ1bmN0aW9uIGkodCxlLHIpe3RoaXMuZ2w9dCx0aGlzLl9leHQ9ZSx0aGlzLmhhbmRsZT1yLHRoaXMuX2F0dHJpYnM9W10sdGhpcy5fdXNlRWxlbWVudHM9ITEsdGhpcy5fZWxlbWVudHNUeXBlPXQuVU5TSUdORURfU0hPUlR9YS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5kaW1lbnNpb24pe2Nhc2UgMTp0LnZlcnRleEF0dHJpYjFmKHRoaXMubG9jYXRpb24sdGhpcy5hKTticmVhaztjYXNlIDI6dC52ZXJ0ZXhBdHRyaWIyZih0aGlzLmxvY2F0aW9uLHRoaXMuYSx0aGlzLmIpO2JyZWFrO2Nhc2UgMzp0LnZlcnRleEF0dHJpYjNmKHRoaXMubG9jYXRpb24sdGhpcy5hLHRoaXMuYix0aGlzLmMpO2JyZWFrO2Nhc2UgNDp0LnZlcnRleEF0dHJpYjRmKHRoaXMubG9jYXRpb24sdGhpcy5hLHRoaXMuYix0aGlzLmMsdGhpcy5kKX19LGkucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLl9leHQuYmluZFZlcnRleEFycmF5T0VTKHRoaXMuaGFuZGxlKTtmb3IodmFyIHQ9MDt0PHRoaXMuX2F0dHJpYnMubGVuZ3RoOysrdCl0aGlzLl9hdHRyaWJzW3RdLmJpbmQodGhpcy5nbCl9LGkucHJvdG90eXBlLnVuYmluZD1mdW5jdGlvbigpe3RoaXMuX2V4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCl9LGkucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9leHQuZGVsZXRlVmVydGV4QXJyYXlPRVModGhpcy5oYW5kbGUpfSxpLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuYmluZCgpLG4odGhpcy5nbCxlLHQpLHRoaXMudW5iaW5kKCksdGhpcy5fYXR0cmlicy5sZW5ndGg9MCx0KWZvcih2YXIgaT0wO2k8dC5sZW5ndGg7KytpKXt2YXIgbz10W2ldOyJudW1iZXIiPT10eXBlb2Ygbz90aGlzLl9hdHRyaWJzLnB1c2gobmV3IGEoaSwxLG8pKTpBcnJheS5pc0FycmF5KG8pJiZ0aGlzLl9hdHRyaWJzLnB1c2gobmV3IGEoaSxvLmxlbmd0aCxvWzBdLG9bMV0sb1syXSxvWzNdKSl9dGhpcy5fdXNlRWxlbWVudHM9ISFlLHRoaXMuX2VsZW1lbnRzVHlwZT1yfHx0aGlzLmdsLlVOU0lHTkVEX1NIT1JUfSxpLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSxyKXtyPXJ8fDA7dmFyIG49dGhpcy5nbDt0aGlzLl91c2VFbGVtZW50cz9uLmRyYXdFbGVtZW50cyh0LGUsdGhpcy5fZWxlbWVudHNUeXBlLHIpOm4uZHJhd0FycmF5cyh0LHIsZSl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSh0LGUsZS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpKX19LHsiLi9kby1iaW5kLmpzIjozMjZ9XSwzMjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvdmFvLW5hdGl2ZS5qcyIpLGE9dCgiLi9saWIvdmFvLWVtdWxhdGVkLmpzIik7ZnVuY3Rpb24gaSh0KXt0aGlzLmJpbmRWZXJ0ZXhBcnJheU9FUz10LmJpbmRWZXJ0ZXhBcnJheS5iaW5kKHQpLHRoaXMuY3JlYXRlVmVydGV4QXJyYXlPRVM9dC5jcmVhdGVWZXJ0ZXhBcnJheS5iaW5kKHQpLHRoaXMuZGVsZXRlVmVydGV4QXJyYXlPRVM9dC5kZWxldGVWZXJ0ZXhBcnJheS5iaW5kKHQpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXt2YXIgcyxsPXQuY3JlYXRlVmVydGV4QXJyYXk/bmV3IGkodCk6dC5nZXRFeHRlbnNpb24oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7cmV0dXJuKHM9bD9uKHQsbCk6YSh0KSkudXBkYXRlKGUscixvKSxzfX0seyIuL2xpYi92YW8tZW11bGF0ZWQuanMiOjMyNywiLi9saWIvdmFvLW5hdGl2ZS5qcyI6MzI4fV0sMzMwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdK3JbMF0sdFsxXT1lWzFdK3JbMV0sdFsyXT1lWzJdK3JbMl0sdH19LHt9XSwzMzE6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uKHRbMF0sdFsxXSx0WzJdKSxvPW4oZVswXSxlWzFdLGVbMl0pO2EocixyKSxhKG8sbyk7dmFyIHM9aShyLG8pO3JldHVybiBzPjE/MDpNYXRoLmFjb3Mocyl9O3ZhciBuPXQoIi4vZnJvbVZhbHVlcyIpLGE9dCgiLi9ub3JtYWxpemUiKSxpPXQoIi4vZG90Iil9LHsiLi9kb3QiOjM0MSwiLi9mcm9tVmFsdWVzIjozNDcsIi4vbm9ybWFsaXplIjozNTh9XSwzMzI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT1NYXRoLmNlaWwoZVswXSksdFsxXT1NYXRoLmNlaWwoZVsxXSksdFsyXT1NYXRoLmNlaWwoZVsyXSksdH19LHt9XSwzMzM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEZsb2F0MzJBcnJheSgzKTtyZXR1cm4gZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZX19LHt9XSwzMzQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVsxXSx0WzJdPWVbMl0sdH19LHt9XSwzMzU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRmxvYXQzMkFycmF5KDMpO3JldHVybiB0WzBdPTAsdFsxXT0wLHRbMl09MCx0fX0se31dLDMzNjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89clswXSxzPXJbMV0sbD1yWzJdO3JldHVybiB0WzBdPWEqbC1pKnMsdFsxXT1pKm8tbipsLHRbMl09bipzLWEqbyx0fX0se31dLDMzNzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuL2Rpc3RhbmNlIil9LHsiLi9kaXN0YW5jZSI6MzM4fV0sMzM4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS10WzBdLG49ZVsxXS10WzFdLGE9ZVsyXS10WzJdO3JldHVybiBNYXRoLnNxcnQocipyK24qbithKmEpfX0se31dLDMzOTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuL2RpdmlkZSIpfSx7Ii4vZGl2aWRlIjozNDB9XSwzNDA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0vclswXSx0WzFdPWVbMV0vclsxXSx0WzJdPWVbMl0vclsyXSx0fX0se31dLDM0MTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdKmVbMF0rdFsxXSplWzFdK3RbMl0qZVsyXX19LHt9XSwzNDI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9MWUtNn0se31dLDM0MzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXRbMF0sYT10WzFdLGk9dFsyXSxvPWVbMF0scz1lWzFdLGw9ZVsyXTtyZXR1cm4gTWF0aC5hYnMoci1vKTw9bipNYXRoLm1heCgxLE1hdGguYWJzKHIpLE1hdGguYWJzKG8pKSYmTWF0aC5hYnMoYS1zKTw9bipNYXRoLm1heCgxLE1hdGguYWJzKGEpLE1hdGguYWJzKHMpKSYmTWF0aC5hYnMoaS1sKTw9bipNYXRoLm1heCgxLE1hdGguYWJzKGkpLE1hdGguYWJzKGwpKX07dmFyIG49dCgiLi9lcHNpbG9uIil9LHsiLi9lcHNpbG9uIjozNDJ9XSwzNDQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT09PWVbMF0mJnRbMV09PT1lWzFdJiZ0WzJdPT09ZVsyXX19LHt9XSwzNDU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT1NYXRoLmZsb29yKGVbMF0pLHRbMV09TWF0aC5mbG9vcihlWzFdKSx0WzJdPU1hdGguZmxvb3IoZVsyXSksdH19LHt9XSwzNDY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSxpLG8pe3ZhciBzLGw7ZXx8KGU9Myk7cnx8KHI9MCk7bD1hP01hdGgubWluKGEqZStyLHQubGVuZ3RoKTp0Lmxlbmd0aDtmb3Iocz1yO3M8bDtzKz1lKW5bMF09dFtzXSxuWzFdPXRbcysxXSxuWzJdPXRbcysyXSxpKG4sbixvKSx0W3NdPW5bMF0sdFtzKzFdPW5bMV0sdFtzKzJdPW5bMl07cmV0dXJuIHR9O3ZhciBuPXQoIi4vY3JlYXRlIikoKX0seyIuL2NyZWF0ZSI6MzM1fV0sMzQ3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1uZXcgRmxvYXQzMkFycmF5KDMpO3JldHVybiBuWzBdPXQsblsxXT1lLG5bMl09cixufX0se31dLDM0ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz17RVBTSUxPTjp0KCIuL2Vwc2lsb24iKSxjcmVhdGU6dCgiLi9jcmVhdGUiKSxjbG9uZTp0KCIuL2Nsb25lIiksYW5nbGU6dCgiLi9hbmdsZSIpLGZyb21WYWx1ZXM6dCgiLi9mcm9tVmFsdWVzIiksY29weTp0KCIuL2NvcHkiKSxzZXQ6dCgiLi9zZXQiKSxlcXVhbHM6dCgiLi9lcXVhbHMiKSxleGFjdEVxdWFsczp0KCIuL2V4YWN0RXF1YWxzIiksYWRkOnQoIi4vYWRkIiksc3VidHJhY3Q6dCgiLi9zdWJ0cmFjdCIpLHN1Yjp0KCIuL3N1YiIpLG11bHRpcGx5OnQoIi4vbXVsdGlwbHkiKSxtdWw6dCgiLi9tdWwiKSxkaXZpZGU6dCgiLi9kaXZpZGUiKSxkaXY6dCgiLi9kaXYiKSxtaW46dCgiLi9taW4iKSxtYXg6dCgiLi9tYXgiKSxmbG9vcjp0KCIuL2Zsb29yIiksY2VpbDp0KCIuL2NlaWwiKSxyb3VuZDp0KCIuL3JvdW5kIiksc2NhbGU6dCgiLi9zY2FsZSIpLHNjYWxlQW5kQWRkOnQoIi4vc2NhbGVBbmRBZGQiKSxkaXN0YW5jZTp0KCIuL2Rpc3RhbmNlIiksZGlzdDp0KCIuL2Rpc3QiKSxzcXVhcmVkRGlzdGFuY2U6dCgiLi9zcXVhcmVkRGlzdGFuY2UiKSxzcXJEaXN0OnQoIi4vc3FyRGlzdCIpLGxlbmd0aDp0KCIuL2xlbmd0aCIpLGxlbjp0KCIuL2xlbiIpLHNxdWFyZWRMZW5ndGg6dCgiLi9zcXVhcmVkTGVuZ3RoIiksc3FyTGVuOnQoIi4vc3FyTGVuIiksbmVnYXRlOnQoIi4vbmVnYXRlIiksaW52ZXJzZTp0KCIuL2ludmVyc2UiKSxub3JtYWxpemU6dCgiLi9ub3JtYWxpemUiKSxkb3Q6dCgiLi9kb3QiKSxjcm9zczp0KCIuL2Nyb3NzIiksbGVycDp0KCIuL2xlcnAiKSxyYW5kb206dCgiLi9yYW5kb20iKSx0cmFuc2Zvcm1NYXQ0OnQoIi4vdHJhbnNmb3JtTWF0NCIpLHRyYW5zZm9ybU1hdDM6dCgiLi90cmFuc2Zvcm1NYXQzIiksdHJhbnNmb3JtUXVhdDp0KCIuL3RyYW5zZm9ybVF1YXQiKSxyb3RhdGVYOnQoIi4vcm90YXRlWCIpLHJvdGF0ZVk6dCgiLi9yb3RhdGVZIikscm90YXRlWjp0KCIuL3JvdGF0ZVoiKSxmb3JFYWNoOnQoIi4vZm9yRWFjaCIpfX0seyIuL2FkZCI6MzMwLCIuL2FuZ2xlIjozMzEsIi4vY2VpbCI6MzMyLCIuL2Nsb25lIjozMzMsIi4vY29weSI6MzM0LCIuL2NyZWF0ZSI6MzM1LCIuL2Nyb3NzIjozMzYsIi4vZGlzdCI6MzM3LCIuL2Rpc3RhbmNlIjozMzgsIi4vZGl2IjozMzksIi4vZGl2aWRlIjozNDAsIi4vZG90IjozNDEsIi4vZXBzaWxvbiI6MzQyLCIuL2VxdWFscyI6MzQzLCIuL2V4YWN0RXF1YWxzIjozNDQsIi4vZmxvb3IiOjM0NSwiLi9mb3JFYWNoIjozNDYsIi4vZnJvbVZhbHVlcyI6MzQ3LCIuL2ludmVyc2UiOjM0OSwiLi9sZW4iOjM1MCwiLi9sZW5ndGgiOjM1MSwiLi9sZXJwIjozNTIsIi4vbWF4IjozNTMsIi4vbWluIjozNTQsIi4vbXVsIjozNTUsIi4vbXVsdGlwbHkiOjM1NiwiLi9uZWdhdGUiOjM1NywiLi9ub3JtYWxpemUiOjM1OCwiLi9yYW5kb20iOjM1OSwiLi9yb3RhdGVYIjozNjAsIi4vcm90YXRlWSI6MzYxLCIuL3JvdGF0ZVoiOjM2MiwiLi9yb3VuZCI6MzYzLCIuL3NjYWxlIjozNjQsIi4vc2NhbGVBbmRBZGQiOjM2NSwiLi9zZXQiOjM2NiwiLi9zcXJEaXN0IjozNjcsIi4vc3FyTGVuIjozNjgsIi4vc3F1YXJlZERpc3RhbmNlIjozNjksIi4vc3F1YXJlZExlbmd0aCI6MzcwLCIuL3N1YiI6MzcxLCIuL3N1YnRyYWN0IjozNzIsIi4vdHJhbnNmb3JtTWF0MyI6MzczLCIuL3RyYW5zZm9ybU1hdDQiOjM3NCwiLi90cmFuc2Zvcm1RdWF0IjozNzV9XSwzNDk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT0xL2VbMF0sdFsxXT0xL2VbMV0sdFsyXT0xL2VbMl0sdH19LHt9XSwzNTA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi9sZW5ndGgiKX0seyIuL2xlbmd0aCI6MzUxfV0sMzUxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXTtyZXR1cm4gTWF0aC5zcXJ0KGUqZStyKnIrbipuKX19LHt9XSwzNTI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ZVswXSxpPWVbMV0sbz1lWzJdO3JldHVybiB0WzBdPWErbiooclswXS1hKSx0WzFdPWkrbiooclsxXS1pKSx0WzJdPW8rbiooclsyXS1vKSx0fX0se31dLDM1MzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09TWF0aC5tYXgoZVswXSxyWzBdKSx0WzFdPU1hdGgubWF4KGVbMV0sclsxXSksdFsyXT1NYXRoLm1heChlWzJdLHJbMl0pLHR9fSx7fV0sMzU0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1NYXRoLm1pbihlWzBdLHJbMF0pLHRbMV09TWF0aC5taW4oZVsxXSxyWzFdKSx0WzJdPU1hdGgubWluKGVbMl0sclsyXSksdH19LHt9XSwzNTU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi9tdWx0aXBseSIpfSx7Ii4vbXVsdGlwbHkiOjM1Nn1dLDM1NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09ZVswXSpyWzBdLHRbMV09ZVsxXSpyWzFdLHRbMl09ZVsyXSpyWzJdLHR9fSx7fV0sMzU3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09LWVbMF0sdFsxXT0tZVsxXSx0WzJdPS1lWzJdLHR9fSx7fV0sMzU4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0sYT1lWzJdLGk9cipyK24qbithKmE7aT4wJiYoaT0xL01hdGguc3FydChpKSx0WzBdPWVbMF0qaSx0WzFdPWVbMV0qaSx0WzJdPWVbMl0qaSk7cmV0dXJuIHR9fSx7fV0sMzU5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZT1lfHwxO3ZhciByPTIqTWF0aC5yYW5kb20oKSpNYXRoLlBJLG49MipNYXRoLnJhbmRvbSgpLTEsYT1NYXRoLnNxcnQoMS1uKm4pKmU7cmV0dXJuIHRbMF09TWF0aC5jb3MocikqYSx0WzFdPU1hdGguc2luKHIpKmEsdFsyXT1uKmUsdH19LHt9XSwzNjA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9clsxXSxpPXJbMl0sbz1lWzFdLWEscz1lWzJdLWksbD1NYXRoLnNpbihuKSxjPU1hdGguY29zKG4pO3JldHVybiB0WzBdPWVbMF0sdFsxXT1hK28qYy1zKmwsdFsyXT1pK28qbCtzKmMsdH19LHt9XSwzNjE6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9clswXSxpPXJbMl0sbz1lWzBdLWEscz1lWzJdLWksbD1NYXRoLnNpbihuKSxjPU1hdGguY29zKG4pO3JldHVybiB0WzBdPWErcypsK28qYyx0WzFdPWVbMV0sdFsyXT1pK3MqYy1vKmwsdH19LHt9XSwzNjI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9clswXSxpPXJbMV0sbz1lWzBdLWEscz1lWzFdLWksbD1NYXRoLnNpbihuKSxjPU1hdGguY29zKG4pO3JldHVybiB0WzBdPWErbypjLXMqbCx0WzFdPWkrbypsK3MqYyx0WzJdPWVbMl0sdH19LHt9XSwzNjM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT1NYXRoLnJvdW5kKGVbMF0pLHRbMV09TWF0aC5yb3VuZChlWzFdKSx0WzJdPU1hdGgucm91bmQoZVsyXSksdH19LHt9XSwzNjQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0qcix0WzFdPWVbMV0qcix0WzJdPWVbMl0qcix0fX0se31dLDM2NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdFswXT1lWzBdK3JbMF0qbix0WzFdPWVbMV0rclsxXSpuLHRbMl09ZVsyXStyWzJdKm4sdH19LHt9XSwzNjY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHRbMF09ZSx0WzFdPXIsdFsyXT1uLHR9fSx7fV0sMzY3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4vc3F1YXJlZERpc3RhbmNlIil9LHsiLi9zcXVhcmVkRGlzdGFuY2UiOjM2OX1dLDM2ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuL3NxdWFyZWRMZW5ndGgiKX0seyIuL3NxdWFyZWRMZW5ndGgiOjM3MH1dLDM2OTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0tdFswXSxuPWVbMV0tdFsxXSxhPWVbMl0tdFsyXTtyZXR1cm4gcipyK24qbithKmF9fSx7fV0sMzcwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXTtyZXR1cm4gZSplK3IqcituKm59fSx7fV0sMzcxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4vc3VidHJhY3QiKX0seyIuL3N1YnRyYWN0IjozNzJ9XSwzNzI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0tclswXSx0WzFdPWVbMV0tclsxXSx0WzJdPWVbMl0tclsyXSx0fX0se31dLDM3MzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdO3JldHVybiB0WzBdPW4qclswXSthKnJbM10raSpyWzZdLHRbMV09bipyWzFdK2Eqcls0XStpKnJbN10sdFsyXT1uKnJbMl0rYSpyWzVdK2kqcls4XSx0fX0se31dLDM3NDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89clszXSpuK3JbN10qYStyWzExXSppK3JbMTVdO3JldHVybiBvPW98fDEsdFswXT0oclswXSpuK3JbNF0qYStyWzhdKmkrclsxMl0pL28sdFsxXT0oclsxXSpuK3JbNV0qYStyWzldKmkrclsxM10pL28sdFsyXT0oclsyXSpuK3JbNl0qYStyWzEwXSppK3JbMTRdKS9vLHR9fSx7fV0sMzc1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lWzBdLGE9ZVsxXSxpPWVbMl0sbz1yWzBdLHM9clsxXSxsPXJbMl0sYz1yWzNdLHU9YypuK3MqaS1sKmEsaD1jKmErbCpuLW8qaSxmPWMqaStvKmEtcypuLHA9LW8qbi1zKmEtbCppO3JldHVybiB0WzBdPXUqYytwKi1vK2gqLWwtZiotcyx0WzFdPWgqYytwKi1zK2YqLW8tdSotbCx0WzJdPWYqYytwKi1sK3UqLXMtaCotbyx0fX0se31dLDM3NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09ZVswXStyWzBdLHRbMV09ZVsxXStyWzFdLHRbMl09ZVsyXStyWzJdLHRbM109ZVszXStyWzNdLHR9fSx7fV0sMzc3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBGbG9hdDMyQXJyYXkoNCk7cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlfX0se31dLDM3ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPWVbM10sdH19LHt9XSwzNzk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRmxvYXQzMkFycmF5KDQpO3JldHVybiB0WzBdPTAsdFsxXT0wLHRbMl09MCx0WzNdPTAsdH19LHt9XSwzODA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLXRbMF0sbj1lWzFdLXRbMV0sYT1lWzJdLXRbMl0saT1lWzNdLXRbM107cmV0dXJuIE1hdGguc3FydChyKnIrbipuK2EqYStpKmkpfX0se31dLDM4MTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09ZVswXS9yWzBdLHRbMV09ZVsxXS9yWzFdLHRbMl09ZVsyXS9yWzJdLHRbM109ZVszXS9yWzNdLHR9fSx7fV0sMzgyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdK3RbM10qZVszXX19LHt9XSwzODM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9bmV3IEZsb2F0MzJBcnJheSg0KTtyZXR1cm4gYVswXT10LGFbMV09ZSxhWzJdPXIsYVszXT1uLGF9fSx7fV0sMzg0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtjcmVhdGU6dCgiLi9jcmVhdGUiKSxjbG9uZTp0KCIuL2Nsb25lIiksZnJvbVZhbHVlczp0KCIuL2Zyb21WYWx1ZXMiKSxjb3B5OnQoIi4vY29weSIpLHNldDp0KCIuL3NldCIpLGFkZDp0KCIuL2FkZCIpLHN1YnRyYWN0OnQoIi4vc3VidHJhY3QiKSxtdWx0aXBseTp0KCIuL211bHRpcGx5IiksZGl2aWRlOnQoIi4vZGl2aWRlIiksbWluOnQoIi4vbWluIiksbWF4OnQoIi4vbWF4Iiksc2NhbGU6dCgiLi9zY2FsZSIpLHNjYWxlQW5kQWRkOnQoIi4vc2NhbGVBbmRBZGQiKSxkaXN0YW5jZTp0KCIuL2Rpc3RhbmNlIiksc3F1YXJlZERpc3RhbmNlOnQoIi4vc3F1YXJlZERpc3RhbmNlIiksbGVuZ3RoOnQoIi4vbGVuZ3RoIiksc3F1YXJlZExlbmd0aDp0KCIuL3NxdWFyZWRMZW5ndGgiKSxuZWdhdGU6dCgiLi9uZWdhdGUiKSxpbnZlcnNlOnQoIi4vaW52ZXJzZSIpLG5vcm1hbGl6ZTp0KCIuL25vcm1hbGl6ZSIpLGRvdDp0KCIuL2RvdCIpLGxlcnA6dCgiLi9sZXJwIikscmFuZG9tOnQoIi4vcmFuZG9tIiksdHJhbnNmb3JtTWF0NDp0KCIuL3RyYW5zZm9ybU1hdDQiKSx0cmFuc2Zvcm1RdWF0OnQoIi4vdHJhbnNmb3JtUXVhdCIpfX0seyIuL2FkZCI6Mzc2LCIuL2Nsb25lIjozNzcsIi4vY29weSI6Mzc4LCIuL2NyZWF0ZSI6Mzc5LCIuL2Rpc3RhbmNlIjozODAsIi4vZGl2aWRlIjozODEsIi4vZG90IjozODIsIi4vZnJvbVZhbHVlcyI6MzgzLCIuL2ludmVyc2UiOjM4NSwiLi9sZW5ndGgiOjM4NiwiLi9sZXJwIjozODcsIi4vbWF4IjozODgsIi4vbWluIjozODksIi4vbXVsdGlwbHkiOjM5MCwiLi9uZWdhdGUiOjM5MSwiLi9ub3JtYWxpemUiOjM5MiwiLi9yYW5kb20iOjM5MywiLi9zY2FsZSI6Mzk0LCIuL3NjYWxlQW5kQWRkIjozOTUsIi4vc2V0IjozOTYsIi4vc3F1YXJlZERpc3RhbmNlIjozOTcsIi4vc3F1YXJlZExlbmd0aCI6Mzk4LCIuL3N1YnRyYWN0IjozOTksIi4vdHJhbnNmb3JtTWF0NCI6NDAwLCIuL3RyYW5zZm9ybVF1YXQiOjQwMX1dLDM4NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPTEvZVswXSx0WzFdPTEvZVsxXSx0WzJdPTEvZVsyXSx0WzNdPTEvZVszXSx0fX0se31dLDM4NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPXRbMl0sYT10WzNdO3JldHVybiBNYXRoLnNxcnQoZSplK3IqcituKm4rYSphKX19LHt9XSwzODc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ZVswXSxpPWVbMV0sbz1lWzJdLHM9ZVszXTtyZXR1cm4gdFswXT1hK24qKHJbMF0tYSksdFsxXT1pK24qKHJbMV0taSksdFsyXT1vK24qKHJbMl0tbyksdFszXT1zK24qKHJbM10tcyksdH19LHt9XSwzODg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPU1hdGgubWF4KGVbMF0sclswXSksdFsxXT1NYXRoLm1heChlWzFdLHJbMV0pLHRbMl09TWF0aC5tYXgoZVsyXSxyWzJdKSx0WzNdPU1hdGgubWF4KGVbM10sclszXSksdH19LHt9XSwzODk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPU1hdGgubWluKGVbMF0sclswXSksdFsxXT1NYXRoLm1pbihlWzFdLHJbMV0pLHRbMl09TWF0aC5taW4oZVsyXSxyWzJdKSx0WzNdPU1hdGgubWluKGVbM10sclszXSksdH19LHt9XSwzOTA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0qclswXSx0WzFdPWVbMV0qclsxXSx0WzJdPWVbMl0qclsyXSx0WzNdPWVbM10qclszXSx0fX0se31dLDM5MTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPS1lWzBdLHRbMV09LWVbMV0sdFsyXT0tZVsyXSx0WzNdPS1lWzNdLHR9fSx7fV0sMzkyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0sYT1lWzJdLGk9ZVszXSxvPXIqcituKm4rYSphK2kqaTtvPjAmJihvPTEvTWF0aC5zcXJ0KG8pLHRbMF09cipvLHRbMV09bipvLHRbMl09YSpvLHRbM109aSpvKTtyZXR1cm4gdH19LHt9XSwzOTM6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuL25vcm1hbGl6ZSIpLGE9dCgiLi9zY2FsZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fDEsdFswXT1NYXRoLnJhbmRvbSgpLHRbMV09TWF0aC5yYW5kb20oKSx0WzJdPU1hdGgucmFuZG9tKCksdFszXT1NYXRoLnJhbmRvbSgpLG4odCx0KSxhKHQsdCxlKSx0fX0seyIuL25vcm1hbGl6ZSI6MzkyLCIuL3NjYWxlIjozOTR9XSwzOTQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0qcix0WzFdPWVbMV0qcix0WzJdPWVbMl0qcix0WzNdPWVbM10qcix0fX0se31dLDM5NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdFswXT1lWzBdK3JbMF0qbix0WzFdPWVbMV0rclsxXSpuLHRbMl09ZVsyXStyWzJdKm4sdFszXT1lWzNdK3JbM10qbix0fX0se31dLDM5NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGEpe3JldHVybiB0WzBdPWUsdFsxXT1yLHRbMl09bix0WzNdPWEsdH19LHt9XSwzOTc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLXRbMF0sbj1lWzFdLXRbMV0sYT1lWzJdLXRbMl0saT1lWzNdLXRbM107cmV0dXJuIHIqcituKm4rYSphK2kqaX19LHt9XSwzOTg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxyPXRbMV0sbj10WzJdLGE9dFszXTtyZXR1cm4gZSplK3IqcituKm4rYSphfX0se31dLDM5OTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09ZVswXS1yWzBdLHRbMV09ZVsxXS1yWzFdLHRbMl09ZVsyXS1yWzJdLHRbM109ZVszXS1yWzNdLHR9fSx7fV0sNDAwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lWzBdLGE9ZVsxXSxpPWVbMl0sbz1lWzNdO3JldHVybiB0WzBdPXJbMF0qbityWzRdKmErcls4XSppK3JbMTJdKm8sdFsxXT1yWzFdKm4rcls1XSphK3JbOV0qaStyWzEzXSpvLHRbMl09clsyXSpuK3JbNl0qYStyWzEwXSppK3JbMTRdKm8sdFszXT1yWzNdKm4rcls3XSphK3JbMTFdKmkrclsxNV0qbyx0fX0se31dLDQwMTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89clswXSxzPXJbMV0sbD1yWzJdLGM9clszXSx1PWMqbitzKmktbCphLGg9YyphK2wqbi1vKmksZj1jKmkrbyphLXMqbixwPS1vKm4tcyphLWwqaTtyZXR1cm4gdFswXT11KmMrcCotbytoKi1sLWYqLXMsdFsxXT1oKmMrcCotcytmKi1vLXUqLWwsdFsyXT1mKmMrcCotbCt1Ki1zLWgqLW8sdFszXT1lWzNdLHR9fSx7fV0sNDAyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3JldHVybiBuWzBdPWksblsxXT1yLG5bMl09ZSxuWzNdPXQsYVswXX07dmFyIG49bmV3IFVpbnQ4QXJyYXkoNCksYT1uZXcgRmxvYXQzMkFycmF5KG4uYnVmZmVyKX0se31dLDQwMzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdsc2wtdG9rZW5pemVyIiksYT10KCJhdG9iLWxpdGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPUFycmF5LmlzQXJyYXkodCk/dDpuKHQpLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpZigicHJlcHJvY2Vzc29yIj09PWkudHlwZSl7dmFyIG89aS5kYXRhLm1hdGNoKC9cI2RlZmluZVxzK1NIQURFUl9OQU1FKF9CNjQpP1xzKyguKykkLyk7aWYobyYmb1syXSl7dmFyIHM9b1sxXSxsPW9bMl07cmV0dXJuKHM/YShsKTpsKS50cmltKCl9fX19fSx7ImF0b2ItbGl0ZSI6NzQsImdsc2wtdG9rZW5pemVyIjo0MTB9XSw0MDQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixrLFQ9MCxNPTAsQT1sLFM9W10sRT1bXSxMPTEsQz0wLFA9MCxPPSExLHo9ITEsST0iIixEPWksUj1uOyIzMDAgZXMiPT09KHQ9dHx8e30pLnZlcnNpb24mJihEPXMsUj1vKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEU9W10sbnVsbCE9PXQ/ZnVuY3Rpb24odCl7dmFyIHI7VD0wLGs9KEkrPXQpLmxlbmd0aDtmb3IoO2U9SVtUXSxUPGs7KXtzd2l0Y2gocj1ULEEpe2Nhc2UgdTpUPVYoKTticmVhaztjYXNlIGg6Y2FzZSBmOlQ9aigpO2JyZWFrO2Nhc2UgcDpUPVUoKTticmVhaztjYXNlIGQ6VD1HKCk7YnJlYWs7Y2FzZSBfOlQ9SCgpO2JyZWFrO2Nhc2UgZzpUPVkoKTticmVhaztjYXNlIGM6VD1XKCk7YnJlYWs7Y2FzZSB4OlQ9TigpO2JyZWFrO2Nhc2UgbDpUPUIoKX1pZihyIT09VClzd2l0Y2goSVtyXSl7Y2FzZSJcbiI6Qz0wLCsrTDticmVhaztkZWZhdWx0OisrQ319cmV0dXJuIE0rPVQsST1JLnNsaWNlKFQpLEV9KHQucmVwbGFjZT90LnJlcGxhY2UoL1xyXG4vZywiXG4iKTp0KTpmdW5jdGlvbih0KXtTLmxlbmd0aCYmRihTLmpvaW4oIiIpKTtyZXR1cm4gQT1iLEYoIihlb2YpIiksRX0oKX07ZnVuY3Rpb24gRih0KXt0Lmxlbmd0aCYmRS5wdXNoKHt0eXBlOndbQV0sZGF0YTp0LHBvc2l0aW9uOlAsbGluZTpMLGNvbHVtbjpDfSl9ZnVuY3Rpb24gQigpe3JldHVybiBTPVMubGVuZ3RoP1tdOlMsIi8iPT09ciYmIioiPT09ZT8oUD1NK1QtMSxBPXUscj1lLFQrMSk6Ii8iPT09ciYmIi8iPT09ZT8oUD1NK1QtMSxBPWgscj1lLFQrMSk6IiMiPT09ZT8oQT1mLFA9TStULFQpOi9ccy8udGVzdChlKT8oQT14LFA9TStULFQpOihPPS9cZC8udGVzdChlKSx6PS9bXlx3X10vLnRlc3QoZSksUD1NK1QsQT1PP2Q6ej9wOmMsVCl9ZnVuY3Rpb24gTigpe3JldHVybi9bXlxzXS9nLnRlc3QoZSk/KEYoUy5qb2luKCIiKSksQT1sLFQpOihTLnB1c2goZSkscj1lLFQrMSl9ZnVuY3Rpb24gaigpe3JldHVybiJcciIhPT1lJiYiXG4iIT09ZXx8IlxcIj09PXI/KFMucHVzaChlKSxyPWUsVCsxKTooRihTLmpvaW4oIiIpKSxBPWwsVCl9ZnVuY3Rpb24gVigpe3JldHVybiIvIj09PWUmJiIqIj09PXI/KFMucHVzaChlKSxGKFMuam9pbigiIikpLEE9bCxUKzEpOihTLnB1c2goZSkscj1lLFQrMSl9ZnVuY3Rpb24gVSgpe2lmKCIuIj09PXImJi9cZC8udGVzdChlKSlyZXR1cm4gQT1nLFQ7aWYoIi8iPT09ciYmIioiPT09ZSlyZXR1cm4gQT11LFQ7aWYoIi8iPT09ciYmIi8iPT09ZSlyZXR1cm4gQT1oLFQ7aWYoIi4iPT09ZSYmUy5sZW5ndGgpe2Zvcig7cShTKTspO3JldHVybiBBPWcsVH1pZigiOyI9PT1lfHwiKSI9PT1lfHwiKCI9PT1lKXtpZihTLmxlbmd0aClmb3IoO3EoUyk7KTtyZXR1cm4gRihlKSxBPWwsVCsxfXZhciB0PTI9PT1TLmxlbmd0aCYmIj0iIT09ZTtpZigvW1x3X1xkXHNdLy50ZXN0KGUpfHx0KXtmb3IoO3EoUyk7KTtyZXR1cm4gQT1sLFR9cmV0dXJuIFMucHVzaChlKSxyPWUsVCsxfWZ1bmN0aW9uIHEodCl7Zm9yKHZhciBlLHIsbj0wOzspe2lmKGU9YS5pbmRleE9mKHQuc2xpY2UoMCx0Lmxlbmd0aCtuKS5qb2luKCIiKSkscj1hW2VdLC0xPT09ZSl7aWYobi0tK3QubGVuZ3RoPjApY29udGludWU7cj10LnNsaWNlKDAsMSkuam9pbigiIil9cmV0dXJuIEYociksUCs9ci5sZW5ndGgsKFM9Uy5zbGljZShyLmxlbmd0aCkpLmxlbmd0aH19ZnVuY3Rpb24gSCgpe3JldHVybi9bXmEtZkEtRjAtOV0vLnRlc3QoZSk/KEYoUy5qb2luKCIiKSksQT1sLFQpOihTLnB1c2goZSkscj1lLFQrMSl9ZnVuY3Rpb24gRygpe3JldHVybiIuIj09PWU/KFMucHVzaChlKSxBPWcscj1lLFQrMSk6L1tlRV0vLnRlc3QoZSk/KFMucHVzaChlKSxBPWcscj1lLFQrMSk6IngiPT09ZSYmMT09PVMubGVuZ3RoJiYiMCI9PT1TWzBdPyhBPV8sUy5wdXNoKGUpLHI9ZSxUKzEpOi9bXlxkXS8udGVzdChlKT8oRihTLmpvaW4oIiIpKSxBPWwsVCk6KFMucHVzaChlKSxyPWUsVCsxKX1mdW5jdGlvbiBZKCl7cmV0dXJuImYiPT09ZSYmKFMucHVzaChlKSxyPWUsVCs9MSksL1tlRV0vLnRlc3QoZSk/KFMucHVzaChlKSxyPWUsVCsxKToiLSI9PT1lJiYvW2VFXS8udGVzdChyKT8oUy5wdXNoKGUpLHI9ZSxUKzEpOi9bXlxkXS8udGVzdChlKT8oRihTLmpvaW4oIiIpKSxBPWwsVCk6KFMucHVzaChlKSxyPWUsVCsxKX1mdW5jdGlvbiBXKCl7aWYoL1teXGRcd19dLy50ZXN0KGUpKXt2YXIgdD1TLmpvaW4oIiIpO3JldHVybiBBPVIuaW5kZXhPZih0KT4tMT95OkQuaW5kZXhPZih0KT4tMT9tOnYsRihTLmpvaW4oIiIpKSxBPWwsVH1yZXR1cm4gUy5wdXNoKGUpLHI9ZSxUKzF9fTt2YXIgbj10KCIuL2xpYi9saXRlcmFscyIpLGE9dCgiLi9saWIvb3BlcmF0b3JzIiksaT10KCIuL2xpYi9idWlsdGlucyIpLG89dCgiLi9saWIvbGl0ZXJhbHMtMzAwZXMiKSxzPXQoIi4vbGliL2J1aWx0aW5zLTMwMGVzIiksbD05OTksYz05OTk5LHU9MCxoPTEsZj0yLHA9MyxkPTQsZz01LHY9NixtPTcseT04LHg9OSxiPTEwLF89MTEsdz1bImJsb2NrLWNvbW1lbnQiLCJsaW5lLWNvbW1lbnQiLCJwcmVwcm9jZXNzb3IiLCJvcGVyYXRvciIsImludGVnZXIiLCJmbG9hdCIsImlkZW50IiwiYnVpbHRpbiIsImtleXdvcmQiLCJ3aGl0ZXNwYWNlIiwiZW9mIiwiaW50ZWdlciJdfSx7Ii4vbGliL2J1aWx0aW5zIjo0MDYsIi4vbGliL2J1aWx0aW5zLTMwMGVzIjo0MDUsIi4vbGliL2xpdGVyYWxzIjo0MDgsIi4vbGliL2xpdGVyYWxzLTMwMGVzIjo0MDcsIi4vbGliL29wZXJhdG9ycyI6NDA5fV0sNDA1OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9idWlsdGlucyIpO249bi5zbGljZSgpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hL14oZ2xcX3x0ZXh0dXJlKS8udGVzdCh0KX0pLGUuZXhwb3J0cz1uLmNvbmNhdChbImdsX1ZlcnRleElEIiwiZ2xfSW5zdGFuY2VJRCIsImdsX1Bvc2l0aW9uIiwiZ2xfUG9pbnRTaXplIiwiZ2xfRnJhZ0Nvb3JkIiwiZ2xfRnJvbnRGYWNpbmciLCJnbF9GcmFnRGVwdGgiLCJnbF9Qb2ludENvb3JkIiwiZ2xfTWF4VmVydGV4QXR0cmlicyIsImdsX01heFZlcnRleFVuaWZvcm1WZWN0b3JzIiwiZ2xfTWF4VmVydGV4T3V0cHV0VmVjdG9ycyIsImdsX01heEZyYWdtZW50SW5wdXRWZWN0b3JzIiwiZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMiLCJnbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4VGV4dHVyZUltYWdlVW5pdHMiLCJnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzIiwiZ2xfTWF4RHJhd0J1ZmZlcnMiLCJnbF9NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQiLCJnbF9NYXhQcm9ncmFtVGV4ZWxPZmZzZXQiLCJnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyIsImdsX0RlcHRoUmFuZ2UiLCJ0cnVuYyIsInJvdW5kIiwicm91bmRFdmVuIiwiaXNuYW4iLCJpc2luZiIsImZsb2F0Qml0c1RvSW50IiwiZmxvYXRCaXRzVG9VaW50IiwiaW50Qml0c1RvRmxvYXQiLCJ1aW50Qml0c1RvRmxvYXQiLCJwYWNrU25vcm0yeDE2IiwidW5wYWNrU25vcm0yeDE2IiwicGFja1Vub3JtMngxNiIsInVucGFja1Vub3JtMngxNiIsInBhY2tIYWxmMngxNiIsInVucGFja0hhbGYyeDE2Iiwib3V0ZXJQcm9kdWN0IiwidHJhbnNwb3NlIiwiZGV0ZXJtaW5hbnQiLCJpbnZlcnNlIiwidGV4dHVyZSIsInRleHR1cmVTaXplIiwidGV4dHVyZVByb2oiLCJ0ZXh0dXJlTG9kIiwidGV4dHVyZU9mZnNldCIsInRleGVsRmV0Y2giLCJ0ZXhlbEZldGNoT2Zmc2V0IiwidGV4dHVyZVByb2pPZmZzZXQiLCJ0ZXh0dXJlTG9kT2Zmc2V0IiwidGV4dHVyZVByb2pMb2QiLCJ0ZXh0dXJlUHJvakxvZE9mZnNldCIsInRleHR1cmVHcmFkIiwidGV4dHVyZUdyYWRPZmZzZXQiLCJ0ZXh0dXJlUHJvakdyYWQiLCJ0ZXh0dXJlUHJvakdyYWRPZmZzZXQiXSl9LHsiLi9idWlsdGlucyI6NDA2fV0sNDA2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPVsiYWJzIiwiYWNvcyIsImFsbCIsImFueSIsImFzaW4iLCJhdGFuIiwiY2VpbCIsImNsYW1wIiwiY29zIiwiY3Jvc3MiLCJkRmR4IiwiZEZkeSIsImRlZ3JlZXMiLCJkaXN0YW5jZSIsImRvdCIsImVxdWFsIiwiZXhwIiwiZXhwMiIsImZhY2Vmb3J3YXJkIiwiZmxvb3IiLCJmcmFjdCIsImdsX0JhY2tDb2xvciIsImdsX0JhY2tMaWdodE1vZGVsUHJvZHVjdCIsImdsX0JhY2tMaWdodFByb2R1Y3QiLCJnbF9CYWNrTWF0ZXJpYWwiLCJnbF9CYWNrU2Vjb25kYXJ5Q29sb3IiLCJnbF9DbGlwUGxhbmUiLCJnbF9DbGlwVmVydGV4IiwiZ2xfQ29sb3IiLCJnbF9EZXB0aFJhbmdlIiwiZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMiLCJnbF9FeWVQbGFuZVEiLCJnbF9FeWVQbGFuZVIiLCJnbF9FeWVQbGFuZVMiLCJnbF9FeWVQbGFuZVQiLCJnbF9Gb2ciLCJnbF9Gb2dDb29yZCIsImdsX0ZvZ0ZyYWdDb29yZCIsImdsX0ZvZ1BhcmFtZXRlcnMiLCJnbF9GcmFnQ29sb3IiLCJnbF9GcmFnQ29vcmQiLCJnbF9GcmFnRGF0YSIsImdsX0ZyYWdEZXB0aCIsImdsX0ZyYWdEZXB0aEVYVCIsImdsX0Zyb250Q29sb3IiLCJnbF9Gcm9udEZhY2luZyIsImdsX0Zyb250TGlnaHRNb2RlbFByb2R1Y3QiLCJnbF9Gcm9udExpZ2h0UHJvZHVjdCIsImdsX0Zyb250TWF0ZXJpYWwiLCJnbF9Gcm9udFNlY29uZGFyeUNvbG9yIiwiZ2xfTGlnaHRNb2RlbCIsImdsX0xpZ2h0TW9kZWxQYXJhbWV0ZXJzIiwiZ2xfTGlnaHRNb2RlbFByb2R1Y3RzIiwiZ2xfTGlnaHRQcm9kdWN0cyIsImdsX0xpZ2h0U291cmNlIiwiZ2xfTGlnaHRTb3VyY2VQYXJhbWV0ZXJzIiwiZ2xfTWF0ZXJpYWxQYXJhbWV0ZXJzIiwiZ2xfTWF4Q2xpcFBsYW5lcyIsImdsX01heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMiLCJnbF9NYXhEcmF3QnVmZmVycyIsImdsX01heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMiLCJnbF9NYXhMaWdodHMiLCJnbF9NYXhUZXh0dXJlQ29vcmRzIiwiZ2xfTWF4VGV4dHVyZUltYWdlVW5pdHMiLCJnbF9NYXhUZXh0dXJlVW5pdHMiLCJnbF9NYXhWYXJ5aW5nRmxvYXRzIiwiZ2xfTWF4VmVydGV4QXR0cmlicyIsImdsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4VmVydGV4VW5pZm9ybUNvbXBvbmVudHMiLCJnbF9Nb2RlbFZpZXdNYXRyaXgiLCJnbF9Nb2RlbFZpZXdNYXRyaXhJbnZlcnNlIiwiZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZVRyYW5zcG9zZSIsImdsX01vZGVsVmlld01hdHJpeFRyYW5zcG9zZSIsImdsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXgiLCJnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4SW52ZXJzZSIsImdsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXhJbnZlcnNlVHJhbnNwb3NlIiwiZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeFRyYW5zcG9zZSIsImdsX011bHRpVGV4Q29vcmQwIiwiZ2xfTXVsdGlUZXhDb29yZDEiLCJnbF9NdWx0aVRleENvb3JkMiIsImdsX011bHRpVGV4Q29vcmQzIiwiZ2xfTXVsdGlUZXhDb29yZDQiLCJnbF9NdWx0aVRleENvb3JkNSIsImdsX011bHRpVGV4Q29vcmQ2IiwiZ2xfTXVsdGlUZXhDb29yZDciLCJnbF9Ob3JtYWwiLCJnbF9Ob3JtYWxNYXRyaXgiLCJnbF9Ob3JtYWxTY2FsZSIsImdsX09iamVjdFBsYW5lUSIsImdsX09iamVjdFBsYW5lUiIsImdsX09iamVjdFBsYW5lUyIsImdsX09iamVjdFBsYW5lVCIsImdsX1BvaW50IiwiZ2xfUG9pbnRDb29yZCIsImdsX1BvaW50UGFyYW1ldGVycyIsImdsX1BvaW50U2l6ZSIsImdsX1Bvc2l0aW9uIiwiZ2xfUHJvamVjdGlvbk1hdHJpeCIsImdsX1Byb2plY3Rpb25NYXRyaXhJbnZlcnNlIiwiZ2xfUHJvamVjdGlvbk1hdHJpeEludmVyc2VUcmFuc3Bvc2UiLCJnbF9Qcm9qZWN0aW9uTWF0cml4VHJhbnNwb3NlIiwiZ2xfU2Vjb25kYXJ5Q29sb3IiLCJnbF9UZXhDb29yZCIsImdsX1RleHR1cmVFbnZDb2xvciIsImdsX1RleHR1cmVNYXRyaXgiLCJnbF9UZXh0dXJlTWF0cml4SW52ZXJzZSIsImdsX1RleHR1cmVNYXRyaXhJbnZlcnNlVHJhbnNwb3NlIiwiZ2xfVGV4dHVyZU1hdHJpeFRyYW5zcG9zZSIsImdsX1ZlcnRleCIsImdyZWF0ZXJUaGFuIiwiZ3JlYXRlclRoYW5FcXVhbCIsImludmVyc2VzcXJ0IiwibGVuZ3RoIiwibGVzc1RoYW4iLCJsZXNzVGhhbkVxdWFsIiwibG9nIiwibG9nMiIsIm1hdHJpeENvbXBNdWx0IiwibWF4IiwibWluIiwibWl4IiwibW9kIiwibm9ybWFsaXplIiwibm90Iiwibm90RXF1YWwiLCJwb3ciLCJyYWRpYW5zIiwicmVmbGVjdCIsInJlZnJhY3QiLCJzaWduIiwic2luIiwic21vb3Roc3RlcCIsInNxcnQiLCJzdGVwIiwidGFuIiwidGV4dHVyZTJEIiwidGV4dHVyZTJETG9kIiwidGV4dHVyZTJEUHJvaiIsInRleHR1cmUyRFByb2pMb2QiLCJ0ZXh0dXJlQ3ViZSIsInRleHR1cmVDdWJlTG9kIiwidGV4dHVyZTJETG9kRVhUIiwidGV4dHVyZTJEUHJvakxvZEVYVCIsInRleHR1cmVDdWJlTG9kRVhUIiwidGV4dHVyZTJER3JhZEVYVCIsInRleHR1cmUyRFByb2pHcmFkRVhUIiwidGV4dHVyZUN1YmVHcmFkRVhUIl19LHt9XSw0MDc6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuL2xpdGVyYWxzIik7ZS5leHBvcnRzPW4uc2xpY2UoKS5jb25jYXQoWyJsYXlvdXQiLCJjZW50cm9pZCIsInNtb290aCIsImNhc2UiLCJtYXQyeDIiLCJtYXQyeDMiLCJtYXQyeDQiLCJtYXQzeDIiLCJtYXQzeDMiLCJtYXQzeDQiLCJtYXQ0eDIiLCJtYXQ0eDMiLCJtYXQ0eDQiLCJ1aW50IiwidXZlYzIiLCJ1dmVjMyIsInV2ZWM0Iiwic2FtcGxlckN1YmVTaGFkb3ciLCJzYW1wbGVyMkRBcnJheSIsInNhbXBsZXIyREFycmF5U2hhZG93IiwiaXNhbXBsZXIyRCIsImlzYW1wbGVyM0QiLCJpc2FtcGxlckN1YmUiLCJpc2FtcGxlcjJEQXJyYXkiLCJ1c2FtcGxlcjJEIiwidXNhbXBsZXIzRCIsInVzYW1wbGVyQ3ViZSIsInVzYW1wbGVyMkRBcnJheSIsImNvaGVyZW50IiwicmVzdHJpY3QiLCJyZWFkb25seSIsIndyaXRlb25seSIsInJlc291cmNlIiwiYXRvbWljX3VpbnQiLCJub3BlcnNwZWN0aXZlIiwicGF0Y2giLCJzYW1wbGUiLCJzdWJyb3V0aW5lIiwiY29tbW9uIiwicGFydGl0aW9uIiwiYWN0aXZlIiwiZmlsdGVyIiwiaW1hZ2UxRCIsImltYWdlMkQiLCJpbWFnZTNEIiwiaW1hZ2VDdWJlIiwiaWltYWdlMUQiLCJpaW1hZ2UyRCIsImlpbWFnZTNEIiwiaWltYWdlQ3ViZSIsInVpbWFnZTFEIiwidWltYWdlMkQiLCJ1aW1hZ2UzRCIsInVpbWFnZUN1YmUiLCJpbWFnZTFEQXJyYXkiLCJpbWFnZTJEQXJyYXkiLCJpaW1hZ2UxREFycmF5IiwiaWltYWdlMkRBcnJheSIsInVpbWFnZTFEQXJyYXkiLCJ1aW1hZ2UyREFycmF5IiwiaW1hZ2UxRFNoYWRvdyIsImltYWdlMkRTaGFkb3ciLCJpbWFnZTFEQXJyYXlTaGFkb3ciLCJpbWFnZTJEQXJyYXlTaGFkb3ciLCJpbWFnZUJ1ZmZlciIsImlpbWFnZUJ1ZmZlciIsInVpbWFnZUJ1ZmZlciIsInNhbXBsZXIxREFycmF5Iiwic2FtcGxlcjFEQXJyYXlTaGFkb3ciLCJpc2FtcGxlcjFEIiwiaXNhbXBsZXIxREFycmF5IiwidXNhbXBsZXIxRCIsInVzYW1wbGVyMURBcnJheSIsImlzYW1wbGVyMkRSZWN0IiwidXNhbXBsZXIyRFJlY3QiLCJzYW1wbGVyQnVmZmVyIiwiaXNhbXBsZXJCdWZmZXIiLCJ1c2FtcGxlckJ1ZmZlciIsInNhbXBsZXIyRE1TIiwiaXNhbXBsZXIyRE1TIiwidXNhbXBsZXIyRE1TIiwic2FtcGxlcjJETVNBcnJheSIsImlzYW1wbGVyMkRNU0FycmF5IiwidXNhbXBsZXIyRE1TQXJyYXkiXSl9LHsiLi9saXRlcmFscyI6NDA4fV0sNDA4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPVsicHJlY2lzaW9uIiwiaGlnaHAiLCJtZWRpdW1wIiwibG93cCIsImF0dHJpYnV0ZSIsImNvbnN0IiwidW5pZm9ybSIsInZhcnlpbmciLCJicmVhayIsImNvbnRpbnVlIiwiZG8iLCJmb3IiLCJ3aGlsZSIsImlmIiwiZWxzZSIsImluIiwib3V0IiwiaW5vdXQiLCJmbG9hdCIsImludCIsInZvaWQiLCJib29sIiwidHJ1ZSIsImZhbHNlIiwiZGlzY2FyZCIsInJldHVybiIsIm1hdDIiLCJtYXQzIiwibWF0NCIsInZlYzIiLCJ2ZWMzIiwidmVjNCIsIml2ZWMyIiwiaXZlYzMiLCJpdmVjNCIsImJ2ZWMyIiwiYnZlYzMiLCJidmVjNCIsInNhbXBsZXIxRCIsInNhbXBsZXIyRCIsInNhbXBsZXIzRCIsInNhbXBsZXJDdWJlIiwic2FtcGxlcjFEU2hhZG93Iiwic2FtcGxlcjJEU2hhZG93Iiwic3RydWN0IiwiYXNtIiwiY2xhc3MiLCJ1bmlvbiIsImVudW0iLCJ0eXBlZGVmIiwidGVtcGxhdGUiLCJ0aGlzIiwicGFja2VkIiwiZ290byIsInN3aXRjaCIsImRlZmF1bHQiLCJpbmxpbmUiLCJub2lubGluZSIsInZvbGF0aWxlIiwicHVibGljIiwic3RhdGljIiwiZXh0ZXJuIiwiZXh0ZXJuYWwiLCJpbnRlcmZhY2UiLCJsb25nIiwic2hvcnQiLCJkb3VibGUiLCJoYWxmIiwiZml4ZWQiLCJ1bnNpZ25lZCIsImlucHV0Iiwib3V0cHV0IiwiaHZlYzIiLCJodmVjMyIsImh2ZWM0IiwiZHZlYzIiLCJkdmVjMyIsImR2ZWM0IiwiZnZlYzIiLCJmdmVjMyIsImZ2ZWM0Iiwic2FtcGxlcjJEUmVjdCIsInNhbXBsZXIzRFJlY3QiLCJzYW1wbGVyMkRSZWN0U2hhZG93Iiwic2l6ZW9mIiwiY2FzdCIsIm5hbWVzcGFjZSIsInVzaW5nIl19LHt9XSw0MDk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9WyI8PD0iLCI+Pj0iLCIrKyIsIi0tIiwiPDwiLCI+PiIsIjw9IiwiPj0iLCI9PSIsIiE9IiwiJiYiLCJ8fCIsIis9IiwiLT0iLCIqPSIsIi89IiwiJT0iLCImPSIsIl5eIiwiXj0iLCJ8PSIsIigiLCIpIiwiWyIsIl0iLCIuIiwiISIsIn4iLCIqIiwiLyIsIiUiLCIrIiwiLSIsIjwiLCI+IiwiJiIsIl4iLCJ8IiwiPyIsIjoiLCI9IiwiLCIsIjsiLCJ7IiwifSJdfSx7fV0sNDEwOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9pbmRleCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW4oZSksYT1bXTtyZXR1cm4gYT0oYT1hLmNvbmNhdChyKHQpKSkuY29uY2F0KHIobnVsbCkpfX0seyIuL2luZGV4Ijo0MDR9XSw0MTE6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7InN0cmluZyI9PXR5cGVvZiB0JiYodD1bdF0pO2Zvcih2YXIgZT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxyPVtdLG49MDtuPHQubGVuZ3RoLTE7bisrKXIucHVzaCh0W25dLGVbbl18fCIiKTtyZXR1cm4gci5wdXNoKHRbbl0pLHIuam9pbigiIil9fSx7fV0sNDEyOltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhPXQoImlzLWJyb3dzZXIiKTtuPSJmdW5jdGlvbiI9PXR5cGVvZiByLm1hdGNoTWVkaWE/IXIubWF0Y2hNZWRpYSgiKGhvdmVyOiBub25lKSIpLm1hdGNoZXM6YSxlLmV4cG9ydHM9bn0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyJpcy1icm93c2VyIjo0MTl9XSw0MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiaXMtYnJvd3NlciIpO2UuZXhwb3J0cz1uJiZmdW5jdGlvbigpe3ZhciB0PSExO3RyeXt2YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXt0PSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLGUpfWNhdGNoKGUpe3Q9ITF9cmV0dXJuIHR9KCl9LHsiaXMtYnJvd3NlciI6NDE5fV0sNDE0OltmdW5jdGlvbih0LGUscil7ci5yZWFkPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGksbyxzPTgqYS1uLTEsbD0oMTw8cyktMSxjPWw+PjEsdT0tNyxoPXI/YS0xOjAsZj1yPy0xOjEscD10W2UraF07Zm9yKGgrPWYsaT1wJigxPDwtdSktMSxwPj49LXUsdSs9czt1PjA7aT0yNTYqaSt0W2UraF0saCs9Zix1LT04KTtmb3Iobz1pJigxPDwtdSktMSxpPj49LXUsdSs9bjt1PjA7bz0yNTYqbyt0W2UraF0saCs9Zix1LT04KTtpZigwPT09aSlpPTEtYztlbHNle2lmKGk9PT1sKXJldHVybiBvP05hTjoxLzAqKHA/LTE6MSk7bys9TWF0aC5wb3coMixuKSxpLT1jfXJldHVybihwPy0xOjEpKm8qTWF0aC5wb3coMixpLW4pfSxyLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbyxzLGwsYz04KmktYS0xLHU9KDE8PGMpLTEsaD11Pj4xLGY9MjM9PT1hP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDppLTEsZD1uPzE6LTEsZz1lPDB8fDA9PT1lJiYxL2U8MD8xOjA7Zm9yKGU9TWF0aC5hYnMoZSksaXNOYU4oZSl8fGU9PT0xLzA/KHM9aXNOYU4oZSk/MTowLG89dSk6KG89TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMiksZSoobD1NYXRoLnBvdygyLC1vKSk8MSYmKG8tLSxsKj0yKSwoZSs9bytoPj0xP2YvbDpmKk1hdGgucG93KDIsMS1oKSkqbD49MiYmKG8rKyxsLz0yKSxvK2g+PXU/KHM9MCxvPXUpOm8raD49MT8ocz0oZSpsLTEpKk1hdGgucG93KDIsYSksbys9aCk6KHM9ZSpNYXRoLnBvdygyLGgtMSkqTWF0aC5wb3coMixhKSxvPTApKTthPj04O3RbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixhLT04KTtmb3Iobz1vPDxhfHMsYys9YTtjPjA7dFtyK3BdPTI1NSZvLHArPWQsby89MjU2LGMtPTgpO3RbcitwLWRdfD0xMjgqZ319LHt9XSw0MTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5sZW5ndGg7aWYoMD09PXIpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGhhdmUgYXQgbGVhc3QgZCsxIHBvaW50cyIpO3ZhciBhPXRbMF0ubGVuZ3RoO2lmKHI8PWEpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGlucHV0IGF0IGxlYXN0IGQrMSBwb2ludHMiKTt2YXIgbz10LnNsaWNlKDAsYSsxKSxzPW4uYXBwbHkodm9pZCAwLG8pO2lmKDA9PT1zKXRocm93IG5ldyBFcnJvcigiSW5wdXQgbm90IGluIGdlbmVyYWwgcG9zaXRpb24iKTtmb3IodmFyIGw9bmV3IEFycmF5KGErMSksdT0wO3U8PWE7Kyt1KWxbdV09dTtzPDAmJihsWzBdPTEsbFsxXT0wKTtmb3IodmFyIGg9bmV3IGkobCxuZXcgQXJyYXkoYSsxKSwhMSksZj1oLmFkamFjZW50LHA9bmV3IEFycmF5KGErMiksdT0wO3U8PWE7Kyt1KXtmb3IodmFyIGQ9bC5zbGljZSgpLGc9MDtnPD1hOysrZylnPT09dSYmKGRbZ109LTEpO3ZhciB2PWRbMF07ZFswXT1kWzFdLGRbMV09djt2YXIgbT1uZXcgaShkLG5ldyBBcnJheShhKzEpLCEwKTtmW3VdPW0scFt1XT1tfXBbYSsxXT1oO2Zvcih2YXIgdT0wO3U8PWE7Kyt1KWZvcih2YXIgZD1mW3VdLnZlcnRpY2VzLHk9Zlt1XS5hZGphY2VudCxnPTA7Zzw9YTsrK2cpe3ZhciB4PWRbZ107aWYoeDwwKXlbZ109aDtlbHNlIGZvcih2YXIgYj0wO2I8PWE7KytiKWZbYl0udmVydGljZXMuaW5kZXhPZih4KTwwJiYoeVtnXT1mW2JdKX1mb3IodmFyIF89bmV3IGMoYSxvLHApLHc9ISFlLHU9YSsxO3U8cjsrK3UpXy5pbnNlcnQodFt1XSx3KTtyZXR1cm4gXy5ib3VuZGFyeSgpfTt2YXIgbj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKSxhPXQoInNpbXBsaWNpYWwtY29tcGxleCIpLmNvbXBhcmVDZWxscztmdW5jdGlvbiBpKHQsZSxyKXt0aGlzLnZlcnRpY2VzPXQsdGhpcy5hZGphY2VudD1lLHRoaXMuYm91bmRhcnk9cix0aGlzLmxhc3RWaXNpdGVkPS0xfWZ1bmN0aW9uIG8odCxlLHIpe3RoaXMudmVydGljZXM9dCx0aGlzLmNlbGw9ZSx0aGlzLmluZGV4PXJ9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBhKHQudmVydGljZXMsZS52ZXJ0aWNlcyl9aS5wcm90b3R5cGUuZmxpcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMudmVydGljZXNbMF07dGhpcy52ZXJ0aWNlc1swXT10aGlzLnZlcnRpY2VzWzFdLHRoaXMudmVydGljZXNbMV09dDt2YXIgZT10aGlzLmFkamFjZW50WzBdO3RoaXMuYWRqYWNlbnRbMF09dGhpcy5hZGphY2VudFsxXSx0aGlzLmFkamFjZW50WzFdPWV9O3ZhciBsPVtdO2Z1bmN0aW9uIGModCxlLHIpe3RoaXMuZGltZW5zaW9uPXQsdGhpcy52ZXJ0aWNlcz1lLHRoaXMuc2ltcGxpY2VzPXIsdGhpcy5pbnRlcmlvcj1yLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hdC5ib3VuZGFyeX0pLHRoaXMudHVwbGU9bmV3IEFycmF5KHQrMSk7Zm9yKHZhciBhPTA7YTw9dDsrK2EpdGhpcy50dXBsZVthXT10aGlzLnZlcnRpY2VzW2FdO3ZhciBpPWxbdF07aXx8KGk9bFt0XT1mdW5jdGlvbih0KXtmb3IodmFyIGU9WyJmdW5jdGlvbiBvcmllbnQoKXt2YXIgdHVwbGU9dGhpcy50dXBsZTtyZXR1cm4gdGVzdCgiXSxyPTA7cjw9dDsrK3Ipcj4wJiZlLnB1c2goIiwiKSxlLnB1c2goInR1cGxlWyIsciwiXSIpO2UucHVzaCgiKX1yZXR1cm4gb3JpZW50Iik7dmFyIGE9bmV3IEZ1bmN0aW9uKCJ0ZXN0IixlLmpvaW4oIiIpKSxpPW5bdCsxXTtyZXR1cm4gaXx8KGk9biksYShpKX0odCkpLHRoaXMub3JpZW50PWl9dmFyIHU9Yy5wcm90b3R5cGU7dS5oYW5kbGVCb3VuZGFyeURlZ2VuZXJhY3k9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmRpbWVuc2lvbixuPXRoaXMudmVydGljZXMubGVuZ3RoLTEsYT10aGlzLnR1cGxlLGk9dGhpcy52ZXJ0aWNlcyxvPVt0XTtmb3IodC5sYXN0VmlzaXRlZD0tbjtvLmxlbmd0aD4wOyl7KHQ9by5wb3AoKSkudmVydGljZXM7Zm9yKHZhciBzPXQuYWRqYWNlbnQsbD0wO2w8PXI7KytsKXt2YXIgYz1zW2xdO2lmKGMuYm91bmRhcnkmJiEoYy5sYXN0VmlzaXRlZDw9LW4pKXtmb3IodmFyIHU9Yy52ZXJ0aWNlcyxoPTA7aDw9cjsrK2gpe3ZhciBmPXVbaF07YVtoXT1mPDA/ZTppW2ZdfXZhciBwPXRoaXMub3JpZW50KCk7aWYocD4wKXJldHVybiBjO2MubGFzdFZpc2l0ZWQ9LW4sMD09PXAmJm8ucHVzaChjKX19fXJldHVybiBudWxsfSx1LndhbGs9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnZlcnRpY2VzLmxlbmd0aC0xLG49dGhpcy5kaW1lbnNpb24sYT10aGlzLnZlcnRpY2VzLGk9dGhpcy50dXBsZSxvPWU/dGhpcy5pbnRlcmlvci5sZW5ndGgqTWF0aC5yYW5kb20oKXwwOnRoaXMuaW50ZXJpb3IubGVuZ3RoLTEscz10aGlzLmludGVyaW9yW29dO3Q6Zm9yKDshcy5ib3VuZGFyeTspe2Zvcih2YXIgbD1zLnZlcnRpY2VzLGM9cy5hZGphY2VudCx1PTA7dTw9bjsrK3UpaVt1XT1hW2xbdV1dO3MubGFzdFZpc2l0ZWQ9cjtmb3IodT0wO3U8PW47Kyt1KXt2YXIgaD1jW3VdO2lmKCEoaC5sYXN0VmlzaXRlZD49cikpe3ZhciBmPWlbdV07aVt1XT10O3ZhciBwPXRoaXMub3JpZW50KCk7aWYoaVt1XT1mLHA8MCl7cz1oO2NvbnRpbnVlIHR9aC5ib3VuZGFyeT9oLmxhc3RWaXNpdGVkPS1yOmgubGFzdFZpc2l0ZWQ9cn19cmV0dXJufXJldHVybiBzfSx1LmFkZFBlYWtzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy52ZXJ0aWNlcy5sZW5ndGgtMSxuPXRoaXMuZGltZW5zaW9uLGE9dGhpcy52ZXJ0aWNlcyxsPXRoaXMudHVwbGUsYz10aGlzLmludGVyaW9yLHU9dGhpcy5zaW1wbGljZXMsaD1bZV07ZS5sYXN0VmlzaXRlZD1yLGUudmVydGljZXNbZS52ZXJ0aWNlcy5pbmRleE9mKC0xKV09cixlLmJvdW5kYXJ5PSExLGMucHVzaChlKTtmb3IodmFyIGY9W107aC5sZW5ndGg+MDspe3ZhciBwPShlPWgucG9wKCkpLnZlcnRpY2VzLGQ9ZS5hZGphY2VudCxnPXAuaW5kZXhPZihyKTtpZighKGc8MCkpZm9yKHZhciB2PTA7djw9bjsrK3YpaWYodiE9PWcpe3ZhciBtPWRbdl07aWYobS5ib3VuZGFyeSYmIShtLmxhc3RWaXNpdGVkPj1yKSl7dmFyIHk9bS52ZXJ0aWNlcztpZihtLmxhc3RWaXNpdGVkIT09LXIpe2Zvcih2YXIgeD0wLGI9MDtiPD1uOysrYil5W2JdPDA/KHg9YixsW2JdPXQpOmxbYl09YVt5W2JdXTtpZih0aGlzLm9yaWVudCgpPjApe3lbeF09cixtLmJvdW5kYXJ5PSExLGMucHVzaChtKSxoLnB1c2gobSksbS5sYXN0VmlzaXRlZD1yO2NvbnRpbnVlfW0ubGFzdFZpc2l0ZWQ9LXJ9dmFyIF89bS5hZGphY2VudCx3PXAuc2xpY2UoKSxrPWQuc2xpY2UoKSxUPW5ldyBpKHcsaywhMCk7dS5wdXNoKFQpO3ZhciBNPV8uaW5kZXhPZihlKTtpZighKE08MCkpe19bTV09VCxrW2ddPW0sd1t2XT0tMSxrW3ZdPWUsZFt2XT1ULFQuZmxpcCgpO2ZvcihiPTA7Yjw9bjsrK2Ipe3ZhciBBPXdbYl07aWYoIShBPDB8fEE9PT1yKSl7Zm9yKHZhciBTPW5ldyBBcnJheShuLTEpLEU9MCxMPTA7TDw9bjsrK0wpe3ZhciBDPXdbTF07QzwwfHxMPT09Ynx8KFNbRSsrXT1DKX1mLnB1c2gobmV3IG8oUyxULGIpKX19fX19fWYuc29ydChzKTtmb3Iodj0wO3YrMTxmLmxlbmd0aDt2Kz0yKXt2YXIgUD1mW3ZdLE89Zlt2KzFdLHo9UC5pbmRleCxJPU8uaW5kZXg7ejwwfHxJPDB8fChQLmNlbGwuYWRqYWNlbnRbUC5pbmRleF09Ty5jZWxsLE8uY2VsbC5hZGphY2VudFtPLmluZGV4XT1QLmNlbGwpfX0sdS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnZlcnRpY2VzO3IucHVzaCh0KTt2YXIgbj10aGlzLndhbGsodCxlKTtpZihuKXtmb3IodmFyIGE9dGhpcy5kaW1lbnNpb24saT10aGlzLnR1cGxlLG89MDtvPD1hOysrbyl7dmFyIHM9bi52ZXJ0aWNlc1tvXTtpW29dPXM8MD90OnJbc119dmFyIGw9dGhpcy5vcmllbnQoaSk7bDwwfHwoMCE9PWx8fChuPXRoaXMuaGFuZGxlQm91bmRhcnlEZWdlbmVyYWN5KG4sdCkpKSYmdGhpcy5hZGRQZWFrcyh0LG4pfX0sdS5ib3VuZGFyeT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmRpbWVuc2lvbixlPVtdLHI9dGhpcy5zaW1wbGljZXMsbj1yLmxlbmd0aCxhPTA7YTxuOysrYSl7dmFyIGk9clthXTtpZihpLmJvdW5kYXJ5KXtmb3IodmFyIG89bmV3IEFycmF5KHQpLHM9aS52ZXJ0aWNlcyxsPTAsYz0wLHU9MDt1PD10OysrdSlzW3VdPj0wP29bbCsrXT1zW3VdOmM9MSZ1O2lmKGM9PT0oMSZ0KSl7dmFyIGg9b1swXTtvWzBdPW9bMV0sb1sxXT1ofWUucHVzaChvKX19cmV0dXJuIGV9fSx7InJvYnVzdC1vcmllbnRhdGlvbiI6NTA5LCJzaW1wbGljaWFsLWNvbXBsZXgiOjUxOX1dLDQxNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGE9MCxpPTE7ZnVuY3Rpb24gbyh0LGUscixuLGEpe3RoaXMubWlkPXQsdGhpcy5sZWZ0PWUsdGhpcy5yaWdodD1yLHRoaXMubGVmdFBvaW50cz1uLHRoaXMucmlnaHRQb2ludHM9YSx0aGlzLmNvdW50PShlP2UuY291bnQ6MCkrKHI/ci5jb3VudDowKStuLmxlbmd0aH1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXR8fDA9PT10Lmxlbmd0aClyZXR1cm4gbmV3IHgobnVsbCk7cmV0dXJuIG5ldyB4KHkodCkpfTt2YXIgcz1vLnByb3RvdHlwZTtmdW5jdGlvbiBsKHQsZSl7dC5taWQ9ZS5taWQsdC5sZWZ0PWUubGVmdCx0LnJpZ2h0PWUucmlnaHQsdC5sZWZ0UG9pbnRzPWUubGVmdFBvaW50cyx0LnJpZ2h0UG9pbnRzPWUucmlnaHRQb2ludHMsdC5jb3VudD1lLmNvdW50fWZ1bmN0aW9uIGModCxlKXt2YXIgcj15KGUpO3QubWlkPXIubWlkLHQubGVmdD1yLmxlZnQsdC5yaWdodD1yLnJpZ2h0LHQubGVmdFBvaW50cz1yLmxlZnRQb2ludHMsdC5yaWdodFBvaW50cz1yLnJpZ2h0UG9pbnRzLHQuY291bnQ9ci5jb3VudH1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9dC5pbnRlcnZhbHMoW10pO3IucHVzaChlKSxjKHQscil9ZnVuY3Rpb24gaCh0LGUpe3ZhciByPXQuaW50ZXJ2YWxzKFtdKSxuPXIuaW5kZXhPZihlKTtyZXR1cm4gbjwwP2E6KHIuc3BsaWNlKG4sMSksYyh0LHIpLGkpfWZ1bmN0aW9uIGYodCxlLHIpe2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJnRbbl1bMF08PWU7KytuKXt2YXIgYT1yKHRbbl0pO2lmKGEpcmV0dXJuIGF9fWZ1bmN0aW9uIHAodCxlLHIpe2Zvcih2YXIgbj10Lmxlbmd0aC0xO24+PTAmJnRbbl1bMV0+PWU7LS1uKXt2YXIgYT1yKHRbbl0pO2lmKGEpcmV0dXJuIGF9fWZ1bmN0aW9uIGQodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil7dmFyIG49ZSh0W3JdKTtpZihuKXJldHVybiBufX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIHQtZX1mdW5jdGlvbiB2KHQsZSl7dmFyIHI9dFswXS1lWzBdO3JldHVybiByfHx0WzFdLWVbMV19ZnVuY3Rpb24gbSh0LGUpe3ZhciByPXRbMV0tZVsxXTtyZXR1cm4gcnx8dFswXS1lWzBdfWZ1bmN0aW9uIHkodCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiBudWxsO2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKHRbcl1bMF0sdFtyXVsxXSk7ZS5zb3J0KGcpO3ZhciBuPWVbZS5sZW5ndGg+PjFdLGE9W10saT1bXSxzPVtdO2ZvcihyPTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBsPXRbcl07bFsxXTxuP2EucHVzaChsKTpuPGxbMF0/aS5wdXNoKGwpOnMucHVzaChsKX12YXIgYz1zLHU9cy5zbGljZSgpO3JldHVybiBjLnNvcnQodiksdS5zb3J0KG0pLG5ldyBvKG4seShhKSx5KGkpLGMsdSl9ZnVuY3Rpb24geCh0KXt0aGlzLnJvb3Q9dH1zLmludGVydmFscz1mdW5jdGlvbih0KXtyZXR1cm4gdC5wdXNoLmFwcGx5KHQsdGhpcy5sZWZ0UG9pbnRzKSx0aGlzLmxlZnQmJnRoaXMubGVmdC5pbnRlcnZhbHModCksdGhpcy5yaWdodCYmdGhpcy5yaWdodC5pbnRlcnZhbHModCksdH0scy5pbnNlcnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb3VudC10aGlzLmxlZnRQb2ludHMubGVuZ3RoO2lmKHRoaXMuY291bnQrPTEsdFsxXTx0aGlzLm1pZCl0aGlzLmxlZnQ/NCoodGhpcy5sZWZ0LmNvdW50KzEpPjMqKGUrMSk/dSh0aGlzLHQpOnRoaXMubGVmdC5pbnNlcnQodCk6dGhpcy5sZWZ0PXkoW3RdKTtlbHNlIGlmKHRbMF0+dGhpcy5taWQpdGhpcy5yaWdodD80Kih0aGlzLnJpZ2h0LmNvdW50KzEpPjMqKGUrMSk/dSh0aGlzLHQpOnRoaXMucmlnaHQuaW5zZXJ0KHQpOnRoaXMucmlnaHQ9eShbdF0pO2Vsc2V7dmFyIHI9bi5nZSh0aGlzLmxlZnRQb2ludHMsdCx2KSxhPW4uZ2UodGhpcy5yaWdodFBvaW50cyx0LG0pO3RoaXMubGVmdFBvaW50cy5zcGxpY2UociwwLHQpLHRoaXMucmlnaHRQb2ludHMuc3BsaWNlKGEsMCx0KX19LHMucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY291bnQtdGhpcy5sZWZ0UG9pbnRzO2lmKHRbMV08dGhpcy5taWQpcmV0dXJuIHRoaXMubGVmdD80Kih0aGlzLnJpZ2h0P3RoaXMucmlnaHQuY291bnQ6MCk+MyooZS0xKT9oKHRoaXMsdCk6Mj09PShjPXRoaXMubGVmdC5yZW1vdmUodCkpPyh0aGlzLmxlZnQ9bnVsbCx0aGlzLmNvdW50LT0xLGkpOihjPT09aSYmKHRoaXMuY291bnQtPTEpLGMpOmE7aWYodFswXT50aGlzLm1pZClyZXR1cm4gdGhpcy5yaWdodD80Kih0aGlzLmxlZnQ/dGhpcy5sZWZ0LmNvdW50OjApPjMqKGUtMSk/aCh0aGlzLHQpOjI9PT0oYz10aGlzLnJpZ2h0LnJlbW92ZSh0KSk/KHRoaXMucmlnaHQ9bnVsbCx0aGlzLmNvdW50LT0xLGkpOihjPT09aSYmKHRoaXMuY291bnQtPTEpLGMpOmE7aWYoMT09PXRoaXMuY291bnQpcmV0dXJuIHRoaXMubGVmdFBvaW50c1swXT09PXQ/MjphO2lmKDE9PT10aGlzLmxlZnRQb2ludHMubGVuZ3RoJiZ0aGlzLmxlZnRQb2ludHNbMF09PT10KXtpZih0aGlzLmxlZnQmJnRoaXMucmlnaHQpe2Zvcih2YXIgcj10aGlzLG89dGhpcy5sZWZ0O28ucmlnaHQ7KXI9byxvPW8ucmlnaHQ7aWYocj09PXRoaXMpby5yaWdodD10aGlzLnJpZ2h0O2Vsc2V7dmFyIHM9dGhpcy5sZWZ0LGM9dGhpcy5yaWdodDtyLmNvdW50LT1vLmNvdW50LHIucmlnaHQ9by5sZWZ0LG8ubGVmdD1zLG8ucmlnaHQ9Y31sKHRoaXMsbyksdGhpcy5jb3VudD0odGhpcy5sZWZ0P3RoaXMubGVmdC5jb3VudDowKSsodGhpcy5yaWdodD90aGlzLnJpZ2h0LmNvdW50OjApK3RoaXMubGVmdFBvaW50cy5sZW5ndGh9ZWxzZSB0aGlzLmxlZnQ/bCh0aGlzLHRoaXMubGVmdCk6bCh0aGlzLHRoaXMucmlnaHQpO3JldHVybiBpfWZvcihzPW4uZ2UodGhpcy5sZWZ0UG9pbnRzLHQsdik7czx0aGlzLmxlZnRQb2ludHMubGVuZ3RoJiZ0aGlzLmxlZnRQb2ludHNbc11bMF09PT10WzBdOysrcylpZih0aGlzLmxlZnRQb2ludHNbc109PT10KXt0aGlzLmNvdW50LT0xLHRoaXMubGVmdFBvaW50cy5zcGxpY2UocywxKTtmb3IoYz1uLmdlKHRoaXMucmlnaHRQb2ludHMsdCxtKTtjPHRoaXMucmlnaHRQb2ludHMubGVuZ3RoJiZ0aGlzLnJpZ2h0UG9pbnRzW2NdWzFdPT09dFsxXTsrK2MpaWYodGhpcy5yaWdodFBvaW50c1tjXT09PXQpcmV0dXJuIHRoaXMucmlnaHRQb2ludHMuc3BsaWNlKGMsMSksaX1yZXR1cm4gYX0scy5xdWVyeVBvaW50PWZ1bmN0aW9uKHQsZSl7aWYodDx0aGlzLm1pZCl7aWYodGhpcy5sZWZ0KWlmKHI9dGhpcy5sZWZ0LnF1ZXJ5UG9pbnQodCxlKSlyZXR1cm4gcjtyZXR1cm4gZih0aGlzLmxlZnRQb2ludHMsdCxlKX1pZih0PnRoaXMubWlkKXt2YXIgcjtpZih0aGlzLnJpZ2h0KWlmKHI9dGhpcy5yaWdodC5xdWVyeVBvaW50KHQsZSkpcmV0dXJuIHI7cmV0dXJuIHAodGhpcy5yaWdodFBvaW50cyx0LGUpfXJldHVybiBkKHRoaXMubGVmdFBvaW50cyxlKX0scy5xdWVyeUludGVydmFsPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbjtpZih0PHRoaXMubWlkJiZ0aGlzLmxlZnQmJihuPXRoaXMubGVmdC5xdWVyeUludGVydmFsKHQsZSxyKSkpcmV0dXJuIG47aWYoZT50aGlzLm1pZCYmdGhpcy5yaWdodCYmKG49dGhpcy5yaWdodC5xdWVyeUludGVydmFsKHQsZSxyKSkpcmV0dXJuIG47cmV0dXJuIGU8dGhpcy5taWQ/Zih0aGlzLmxlZnRQb2ludHMsZSxyKTp0PnRoaXMubWlkP3AodGhpcy5yaWdodFBvaW50cyx0LHIpOmQodGhpcy5sZWZ0UG9pbnRzLHIpfTt2YXIgYj14LnByb3RvdHlwZTtiLmluc2VydD1mdW5jdGlvbih0KXt0aGlzLnJvb3Q/dGhpcy5yb290Lmluc2VydCh0KTp0aGlzLnJvb3Q9bmV3IG8odFswXSxudWxsLG51bGwsW3RdLFt0XSl9LGIucmVtb3ZlPWZ1bmN0aW9uKHQpe2lmKHRoaXMucm9vdCl7dmFyIGU9dGhpcy5yb290LnJlbW92ZSh0KTtyZXR1cm4gMj09PWUmJih0aGlzLnJvb3Q9bnVsbCksZSE9PWF9cmV0dXJuITF9LGIucXVlcnlQb2ludD1mdW5jdGlvbih0LGUpe2lmKHRoaXMucm9vdClyZXR1cm4gdGhpcy5yb290LnF1ZXJ5UG9pbnQodCxlKX0sYi5xdWVyeUludGVydmFsPWZ1bmN0aW9uKHQsZSxyKXtpZih0PD1lJiZ0aGlzLnJvb3QpcmV0dXJuIHRoaXMucm9vdC5xdWVyeUludGVydmFsKHQsZSxyKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsImNvdW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdD90aGlzLnJvb3QuY291bnQ6MH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwiaW50ZXJ2YWxzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdD90aGlzLnJvb3QuaW50ZXJ2YWxzKFtdKTpbXX19KX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6OTN9XSw0MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZT1lfHxuZXcgQXJyYXkodC5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKWVbdFtyXV09cjtyZXR1cm4gZX19LHt9XSw0MTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3I8dDsrK3IpZVtyXT1yO3JldHVybiBlfX0se31dLDQxOTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz0hMH0se31dLDQyMDpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7cmV0dXJuISF0LmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmdC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih0KX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQmJihuKHQpfHxmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdC5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc2xpY2UmJm4odC5zbGljZSgwLDApKX0odCl8fCEhdC5faXNCdWZmZXIpfX0se31dLDQyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJigvTVNJRS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KXx8L1RyaWRlbnRcLy8udGVzdChuYXZpZ2F0b3IuYXBwVmVyc2lvbikpfSx7fV0sNDIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1pLGUuZXhwb3J0cy5pc01vYmlsZT1pLGUuZXhwb3J0cy5kZWZhdWx0PWk7dmFyIG49LyhhbmRyb2lkfGJiXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzWzQ2XTB8c3ltYmlhbnx0cmVvfHVwXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyAoY2V8cGhvbmUpfHhkYXx4aWluby9pLGE9LyhhbmRyb2lkfGJiXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzWzQ2XTB8c3ltYmlhbnx0cmVvfHVwXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyAoY2V8cGhvbmUpfHhkYXx4aWlub3xhbmRyb2lkfGlwYWR8cGxheWJvb2t8c2lsay9pO2Z1bmN0aW9uIGkodCl7dHx8KHQ9e30pO3ZhciBlPXQudWE7cmV0dXJuIGV8fCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwoZT1uYXZpZ2F0b3IudXNlckFnZW50KSxlJiZlLmhlYWRlcnMmJiJzdHJpbmciPT10eXBlb2YgZS5oZWFkZXJzWyJ1c2VyLWFnZW50Il0mJihlPWUuaGVhZGVyc1sidXNlci1hZ2VudCJdKSwic3RyaW5nIj09dHlwZW9mIGUmJih0LnRhYmxldD9hLnRlc3QoZSk6bi50ZXN0KGUpKX19LHt9XSw0MjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsIT09dCYmKCJvYmplY3QiPT09ZXx8ImZ1bmN0aW9uIj09PWUpfX0se31dLDQyNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PW4uY2FsbCh0KSYmKG51bGw9PT0oZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpfHxlPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHt9KSl9fSx7fV0sNDI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGUscj10Lmxlbmd0aCxuPTA7bjxyO24rKylpZigoKGU9dC5jaGFyQ29kZUF0KG4pKTw5fHxlPjEzKSYmMzIhPT1lJiYxMzMhPT1lJiYxNjAhPT1lJiY1NzYwIT09ZSYmNjE1OCE9PWUmJihlPDgxOTJ8fGU+ODIwNSkmJjgyMzIhPT1lJiY4MjMzIT09ZSYmODIzOSE9PWUmJjgyODchPT1lJiY4Mjg4IT09ZSYmMTIyODghPT1lJiY2NTI3OSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fSx7fV0sNDI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJih0PXQudHJpbSgpLCEhKC9eW216bGh2Y3NxdGFdXHMqWy0rLjAtOV1bXm1saHZ6Y3NxdGFdKy9pLnRlc3QodCkmJi9bXGR6XSQvaS50ZXN0KHQpJiZ0Lmxlbmd0aD40KSl9fSx7fV0sNDI3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdCooMS1yKStlKnJ9fSx7fV0sNDI4OltmdW5jdGlvbih0LGUscil7dmFyIG4sYTtuPXRoaXMsYT1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgdCxlLHI7ZnVuY3Rpb24gbihuLGEpe2lmKHQpaWYoZSl7dmFyIGk9InZhciBzaGFyZWRDaHVuayA9IHt9OyAoIit0KyIpKHNoYXJlZENodW5rKTsgKCIrZSsiKShzaGFyZWRDaHVuayk7IixvPXt9O3QobyksKHI9YShvKSkud29ya2VyVXJsPXdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtpXSx7dHlwZToidGV4dC9qYXZhc2NyaXB0In0pKX1lbHNlIGU9YTtlbHNlIHQ9YX1yZXR1cm4gbigwLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gdChlPXtleHBvcnRzOnt9fSxlLmV4cG9ydHMpLGUuZXhwb3J0c312YXIgcj1uO2Z1bmN0aW9uIG4odCxlLHIsbil7dGhpcy5jeD0zKnQsdGhpcy5ieD0zKihyLXQpLXRoaXMuY3gsdGhpcy5heD0xLXRoaXMuY3gtdGhpcy5ieCx0aGlzLmN5PTMqZSx0aGlzLmJ5PTMqKG4tZSktdGhpcy5jeSx0aGlzLmF5PTEtdGhpcy5jeS10aGlzLmJ5LHRoaXMucDF4PXQsdGhpcy5wMXk9bix0aGlzLnAyeD1yLHRoaXMucDJ5PW59bi5wcm90b3R5cGUuc2FtcGxlQ3VydmVYPWZ1bmN0aW9uKHQpe3JldHVybigodGhpcy5heCp0K3RoaXMuYngpKnQrdGhpcy5jeCkqdH0sbi5wcm90b3R5cGUuc2FtcGxlQ3VydmVZPWZ1bmN0aW9uKHQpe3JldHVybigodGhpcy5heSp0K3RoaXMuYnkpKnQrdGhpcy5jeSkqdH0sbi5wcm90b3R5cGUuc2FtcGxlQ3VydmVEZXJpdmF0aXZlWD1mdW5jdGlvbih0KXtyZXR1cm4oMyp0aGlzLmF4KnQrMip0aGlzLmJ4KSp0K3RoaXMuY3h9LG4ucHJvdG90eXBlLnNvbHZlQ3VydmVYPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhLGksbztmb3Iodm9pZCAwPT09ZSYmKGU9MWUtNiksYT10LG89MDtvPDg7bysrKXtpZihpPXRoaXMuc2FtcGxlQ3VydmVYKGEpLXQsTWF0aC5hYnMoaSk8ZSlyZXR1cm4gYTt2YXIgcz10aGlzLnNhbXBsZUN1cnZlRGVyaXZhdGl2ZVgoYSk7aWYoTWF0aC5hYnMocyk8MWUtNilicmVhazthLT1pL3N9aWYoKGE9dCk8KHI9MCkpcmV0dXJuIHI7aWYoYT4obj0xKSlyZXR1cm4gbjtmb3IoO3I8bjspe2lmKGk9dGhpcy5zYW1wbGVDdXJ2ZVgoYSksTWF0aC5hYnMoaS10KTxlKXJldHVybiBhO3Q+aT9yPWE6bj1hLGE9LjUqKG4tcikrcn1yZXR1cm4gYX0sbi5wcm90b3R5cGUuc29sdmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zYW1wbGVDdXJ2ZVkodGhpcy5zb2x2ZUN1cnZlWCh0LGUpKX07dmFyIGE9aTtmdW5jdGlvbiBpKHQsZSl7dGhpcy54PXQsdGhpcy55PWV9ZnVuY3Rpb24gbyh0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpe2lmKCFBcnJheS5pc0FycmF5KGUpfHx0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKCFvKHRbcl0sZVtyXSkpcmV0dXJuITE7cmV0dXJuITB9aWYoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmbnVsbCE9PWUpe2lmKCJvYmplY3QiIT10eXBlb2YgZSlyZXR1cm4hMTtpZihPYmplY3Qua2V5cyh0KS5sZW5ndGghPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuIGluIHQpaWYoIW8odFtuXSxlW25dKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdD09PWV9ZnVuY3Rpb24gcyh0LGUsbixhKXt2YXIgaT1uZXcgcih0LGUsbixhKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkuc29sdmUodCl9fWkucHJvdG90eXBlPXtjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgaSh0aGlzLngsdGhpcy55KX0sYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2FkZCh0KX0sc3ViOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1Yih0KX0sbXVsdEJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fbXVsdEJ5UG9pbnQodCl9LGRpdkJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fZGl2QnlQb2ludCh0KX0sbXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0KHQpfSxkaXY6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fZGl2KHQpfSxyb3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm90YXRlKHQpfSxyb3RhdGVBcm91bmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9yb3RhdGVBcm91bmQodCxlKX0sbWF0TXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tYXRNdWx0KHQpfSx1bml0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fdW5pdCgpfSxwZXJwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcGVycCgpfSxyb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3JvdW5kKCl9LG1hZzpmdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55KX0sZXF1YWxzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLng9PT10LngmJnRoaXMueT09PXQueX0sZGlzdDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdFNxcih0KSl9LGRpc3RTcXI6ZnVuY3Rpb24odCl7dmFyIGU9dC54LXRoaXMueCxyPXQueS10aGlzLnk7cmV0dXJuIGUqZStyKnJ9LGFuZ2xlOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguYXRhbjIodGhpcy55LHRoaXMueCl9LGFuZ2xlVG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYXRhbjIodGhpcy55LXQueSx0aGlzLngtdC54KX0sYW5nbGVXaXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFuZ2xlV2l0aFNlcCh0LngsdC55KX0sYW5nbGVXaXRoU2VwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguYXRhbjIodGhpcy54KmUtdGhpcy55KnQsdGhpcy54KnQrdGhpcy55KmUpfSxfbWF0TXVsdDpmdW5jdGlvbih0KXt2YXIgZT10WzBdKnRoaXMueCt0WzFdKnRoaXMueSxyPXRbMl0qdGhpcy54K3RbM10qdGhpcy55O3JldHVybiB0aGlzLng9ZSx0aGlzLnk9cix0aGlzfSxfYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzfSxfc3ViOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzfSxfbXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxfZGl2OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngvPXQsdGhpcy55Lz10LHRoaXN9LF9tdWx0QnlQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpc30sX2RpdkJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9LF91bml0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpdih0aGlzLm1hZygpKSx0aGlzfSxfcGVycDpmdW5jdGlvbigpe3ZhciB0PXRoaXMueTtyZXR1cm4gdGhpcy55PXRoaXMueCx0aGlzLng9LXQsdGhpc30sX3JvdGF0ZTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpLG49ZSp0aGlzLngtcip0aGlzLnksYT1yKnRoaXMueCtlKnRoaXMueTtyZXR1cm4gdGhpcy54PW4sdGhpcy55PWEsdGhpc30sX3JvdGF0ZUFyb3VuZDpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCksYT1lLngrcioodGhpcy54LWUueCktbioodGhpcy55LWUueSksaT1lLnkrbioodGhpcy54LWUueCkrcioodGhpcy55LWUueSk7cmV0dXJuIHRoaXMueD1hLHRoaXMueT1pLHRoaXN9LF9yb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc319LGkuY29udmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGk/dDpBcnJheS5pc0FycmF5KHQpP25ldyBpKHRbMF0sdFsxXSk6dH07dmFyIGw9cyguMjUsLjEsLjI1LDEpO2Z1bmN0aW9uIGModCxlLHIpe3JldHVybiBNYXRoLm1pbihyLE1hdGgubWF4KGUsdCkpfWZ1bmN0aW9uIHUodCxlLHIpe3ZhciBuPXItZSxhPSgodC1lKSVuK24pJW4rZTtyZXR1cm4gYT09PWU/cjphfWZ1bmN0aW9uIGgodCl7Zm9yKHZhciBlPVtdLHI9YXJndW1lbnRzLmxlbmd0aC0xO3ItLSA+MDspZVtyXT1hcmd1bWVudHNbcisxXTtmb3IodmFyIG49MCxhPWU7bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1hW25dO2Zvcih2YXIgbyBpbiBpKXRbb109aVtvXX1yZXR1cm4gdH12YXIgZj0xO2Z1bmN0aW9uIHAoKXtyZXR1cm4gZisrfWZ1bmN0aW9uIGQoKXtyZXR1cm4gZnVuY3Rpb24gdChlKXtyZXR1cm4gZT8oZV4xNipNYXRoLnJhbmRvbSgpPj5lLzQpLnRvU3RyaW5nKDE2KTooWzFlN10rLVsxZTNdKy00ZTMrLThlMystMWUxMSkucmVwbGFjZSgvWzAxOF0vZyx0KX0oKX1mdW5jdGlvbiBnKHQpe3JldHVybiEhdCYmL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bNF1bMC05YS1mXXszfS1bODlhYl1bMC05YS1mXXszfS1bMC05YS1mXXsxMn0kL2kudGVzdCh0KX1mdW5jdGlvbiB2KHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2VbdF0mJihlW3RdPWVbdF0uYmluZChlKSl9KX1mdW5jdGlvbiBtKHQsZSl7cmV0dXJuLTEhPT10LmluZGV4T2YoZSx0Lmxlbmd0aC1lLmxlbmd0aCl9ZnVuY3Rpb24geSh0LGUscil7dmFyIG49e307Zm9yKHZhciBhIGluIHQpblthXT1lLmNhbGwocnx8dGhpcyx0W2FdLGEsdCk7cmV0dXJuIG59ZnVuY3Rpb24geCh0LGUscil7dmFyIG49e307Zm9yKHZhciBhIGluIHQpZS5jYWxsKHJ8fHRoaXMsdFthXSxhLHQpJiYoblthXT10W2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBiKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGIpOiJvYmplY3QiPT10eXBlb2YgdCYmdD95KHQsYik6dH12YXIgXz17fTtmdW5jdGlvbiB3KHQpe19bdF18fCgidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2Fybih0KSxfW3RdPSEwKX1mdW5jdGlvbiBrKHQsZSxyKXtyZXR1cm4oci55LXQueSkqKGUueC10LngpPihlLnktdC55KSooci54LXQueCl9ZnVuY3Rpb24gVCh0KXtmb3IodmFyIGU9MCxyPTAsbj10Lmxlbmd0aCxhPW4tMSxpPXZvaWQgMCxvPXZvaWQgMDtyPG47YT1yKyspaT10W3JdLGUrPSgobz10W2FdKS54LWkueCkqKGkueStvLnkpO3JldHVybiBlfWZ1bmN0aW9uIE0odCl7dmFyIGU9e307aWYodC5yZXBsYWNlKC8oPzpefCg/OlxzKlwsXHMqKSkoW15ceDAwLVx4MjBcKFwpPD5AXCw7XDpcXCJcL1xbXF1cP1w9XHtcfVx4N0ZdKykoPzpcPSg/OihbXlx4MDAtXHgyMFwoXCk8PkBcLDtcOlxcIlwvXFtcXVw/XD1ce1x9XHg3Rl0rKXwoPzpcIigoPzpbXiJcXF18XFwuKSopXCIpKSk/L2csZnVuY3Rpb24odCxyLG4sYSl7dmFyIGk9bnx8YTtyZXR1cm4gZVtyXT0haXx8aS50b0xvd2VyQ2FzZSgpLCIifSksZVsibWF4LWFnZSJdKXt2YXIgcj1wYXJzZUludChlWyJtYXgtYWdlIl0sMTApO2lzTmFOKHIpP2RlbGV0ZSBlWyJtYXgtYWdlIl06ZVsibWF4LWFnZSJdPXJ9cmV0dXJuIGV9ZnVuY3Rpb24gQSh0KXt0cnl7dmFyIGU9c2VsZlt0XTtyZXR1cm4gZS5zZXRJdGVtKCJfbWFwYm94X3Rlc3RfIiwxKSxlLnJlbW92ZUl0ZW0oIl9tYXBib3hfdGVzdF8iKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19dmFyIFMsRSxMLEMsUD1zZWxmLnBlcmZvcm1hbmNlJiZzZWxmLnBlcmZvcm1hbmNlLm5vdz9zZWxmLnBlcmZvcm1hbmNlLm5vdy5iaW5kKHNlbGYucGVyZm9ybWFuY2UpOkRhdGUubm93LmJpbmQoRGF0ZSksTz1zZWxmLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8c2VsZi5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNlbGYud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxzZWxmLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lLHo9c2VsZi5jYW5jZWxBbmltYXRpb25GcmFtZXx8c2VsZi5tb3pDYW5jZWxBbmltYXRpb25GcmFtZXx8c2VsZi53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZXx8c2VsZi5tc0NhbmNlbEFuaW1hdGlvbkZyYW1lLEk9e25vdzpQLGZyYW1lOmZ1bmN0aW9uKHQpe3ZhciBlPU8odCk7cmV0dXJue2NhbmNlbDpmdW5jdGlvbigpe3JldHVybiB6KGUpfX19LGdldEltYWdlRGF0YTpmdW5jdGlvbih0KXt2YXIgZT1zZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHI9ZS5nZXRDb250ZXh0KCIyZCIpO2lmKCFyKXRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRvIGNyZWF0ZSBjYW52YXMgMmQgY29udGV4dCIpO3JldHVybiBlLndpZHRoPXQud2lkdGgsZS5oZWlnaHQ9dC5oZWlnaHQsci5kcmF3SW1hZ2UodCwwLDAsdC53aWR0aCx0LmhlaWdodCksci5nZXRJbWFnZURhdGEoMCwwLHQud2lkdGgsdC5oZWlnaHQpfSxyZXNvbHZlVVJMOmZ1bmN0aW9uKHQpe3JldHVybiBTfHwoUz1zZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksUy5ocmVmPXQsUy5ocmVmfSxoYXJkd2FyZUNvbmN1cnJlbmN5OnNlbGYubmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3l8fDQsZ2V0IGRldmljZVBpeGVsUmF0aW8oKXtyZXR1cm4gc2VsZi5kZXZpY2VQaXhlbFJhdGlvfSxnZXQgcHJlZmVyc1JlZHVjZWRNb3Rpb24oKXtyZXR1cm4hIXNlbGYubWF0Y2hNZWRpYSYmKG51bGw9PUUmJihFPXNlbGYubWF0Y2hNZWRpYSgiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkiKSksRS5tYXRjaGVzKX19LEQ9e0FQSV9VUkw6Imh0dHBzOi8vYXBpLm1hcGJveC5jb20iLGdldCBFVkVOVFNfVVJMKCl7cmV0dXJuIHRoaXMuQVBJX1VSTD8wPT09dGhpcy5BUElfVVJMLmluZGV4T2YoImh0dHBzOi8vYXBpLm1hcGJveC5jbiIpPyJodHRwczovL2V2ZW50cy5tYXBib3guY24vZXZlbnRzL3YyIjowPT09dGhpcy5BUElfVVJMLmluZGV4T2YoImh0dHBzOi8vYXBpLm1hcGJveC5jb20iKT8iaHR0cHM6Ly9ldmVudHMubWFwYm94LmNvbS9ldmVudHMvdjIiOm51bGw6bnVsbH0sRkVFREJBQ0tfVVJMOiJodHRwczovL2FwcHMubWFwYm94LmNvbS9mZWVkYmFjayIsUkVRVUlSRV9BQ0NFU1NfVE9LRU46ITAsQUNDRVNTX1RPS0VOOm51bGwsTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTOjE2fSxSPXtzdXBwb3J0ZWQ6ITEsdGVzdFN1cHBvcnQ6ZnVuY3Rpb24odCl7IUYmJkMmJihCP04odCk6TD10KX19LEY9ITEsQj0hMTtmdW5jdGlvbiBOKHQpe3ZhciBlPXQuY3JlYXRlVGV4dHVyZSgpO3QuYmluZFRleHR1cmUodC5URVhUVVJFXzJELGUpO3RyeXtpZih0LnRleEltYWdlMkQodC5URVhUVVJFXzJELDAsdC5SR0JBLHQuUkdCQSx0LlVOU0lHTkVEX0JZVEUsQyksdC5pc0NvbnRleHRMb3N0KCkpcmV0dXJuO1Iuc3VwcG9ydGVkPSEwfWNhdGNoKHQpe310LmRlbGV0ZVRleHR1cmUoZSksRj0hMH1zZWxmLmRvY3VtZW50JiYoKEM9c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSkub25sb2FkPWZ1bmN0aW9uKCl7TCYmTihMKSxMPW51bGwsQj0hMH0sQy5vbmVycm9yPWZ1bmN0aW9uKCl7Rj0hMCxMPW51bGx9LEMuc3JjPSJkYXRhOmltYWdlL3dlYnA7YmFzZTY0LFVrbEdSaDRBQUFCWFJVSlFWbEE0VEJFQUFBQXZBUUFBQUFmUS8vNzN2LytCaU9oL0FBQT0iKTt2YXIgaj0iMDEiLFY9ZnVuY3Rpb24odCxlKXt0aGlzLl90cmFuc2Zvcm1SZXF1ZXN0Rm49dCx0aGlzLl9jdXN0b21BY2Nlc3NUb2tlbj1lLHRoaXMuX2NyZWF0ZVNrdVRva2VuKCl9O2Z1bmN0aW9uIFUodCl7cmV0dXJuIDA9PT10LmluZGV4T2YoIm1hcGJveDoiKX1WLnByb3RvdHlwZS5fY3JlYXRlU2t1VG9rZW49ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe2Zvcih2YXIgdD0iIixlPTA7ZTwxMDtlKyspdCs9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIltNYXRoLmZsb29yKDYyKk1hdGgucmFuZG9tKCkpXTtyZXR1cm57dG9rZW46WyIxIixqLHRdLmpvaW4oIiIpLHRva2VuRXhwaXJlc0F0OkRhdGUubm93KCkrNDMyZTV9fSgpO3RoaXMuX3NrdVRva2VuPXQudG9rZW4sdGhpcy5fc2t1VG9rZW5FeHBpcmVzQXQ9dC50b2tlbkV4cGlyZXNBdH0sVi5wcm90b3R5cGUuX2lzU2t1VG9rZW5FeHBpcmVkPWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCk+dGhpcy5fc2t1VG9rZW5FeHBpcmVzQXR9LFYucHJvdG90eXBlLnRyYW5zZm9ybVJlcXVlc3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtUmVxdWVzdEZuJiZ0aGlzLl90cmFuc2Zvcm1SZXF1ZXN0Rm4odCxlKXx8e3VybDp0fX0sVi5wcm90b3R5cGUubm9ybWFsaXplU3R5bGVVUkw9ZnVuY3Rpb24odCxlKXtpZighVSh0KSlyZXR1cm4gdDt2YXIgcj1ZKHQpO3JldHVybiByLnBhdGg9Ii9zdHlsZXMvdjEiK3IucGF0aCx0aGlzLl9tYWtlQVBJVVJMKHIsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGUpfSxWLnByb3RvdHlwZS5ub3JtYWxpemVHbHlwaHNVUkw9ZnVuY3Rpb24odCxlKXtpZighVSh0KSlyZXR1cm4gdDt2YXIgcj1ZKHQpO3JldHVybiByLnBhdGg9Ii9mb250cy92MSIrci5wYXRoLHRoaXMuX21ha2VBUElVUkwocix0aGlzLl9jdXN0b21BY2Nlc3NUb2tlbnx8ZSl9LFYucHJvdG90eXBlLm5vcm1hbGl6ZVNvdXJjZVVSTD1mdW5jdGlvbih0LGUpe2lmKCFVKHQpKXJldHVybiB0O3ZhciByPVkodCk7cmV0dXJuIHIucGF0aD0iL3Y0LyIrci5hdXRob3JpdHkrIi5qc29uIixyLnBhcmFtcy5wdXNoKCJzZWN1cmUiKSx0aGlzLl9tYWtlQVBJVVJMKHIsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGUpfSxWLnByb3RvdHlwZS5ub3JtYWxpemVTcHJpdGVVUkw9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9WSh0KTtyZXR1cm4gVSh0KT8oYS5wYXRoPSIvc3R5bGVzL3YxIithLnBhdGgrIi9zcHJpdGUiK2Urcix0aGlzLl9tYWtlQVBJVVJMKGEsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fG4pKTooYS5wYXRoKz0iIitlK3IsVyhhKSl9LFYucHJvdG90eXBlLm5vcm1hbGl6ZVRpbGVVUkw9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuX2lzU2t1VG9rZW5FeHBpcmVkKCkmJnRoaXMuX2NyZWF0ZVNrdVRva2VuKCksIWV8fCFVKGUpKXJldHVybiB0O3ZhciBuPVkodCksYT1JLmRldmljZVBpeGVsUmF0aW8+PTJ8fDUxMj09PXI/IkAyeCI6IiIsaT1SLnN1cHBvcnRlZD8iLndlYnAiOiIkMSI7cmV0dXJuIG4ucGF0aD1uLnBhdGgucmVwbGFjZSgvKFwuKHBuZ3xqcGcpXGQqKSg/PSQpLywiIithK2kpLG4ucGF0aD1uLnBhdGgucmVwbGFjZSgvXi4rXC92NFwvLywiLyIpLG4ucGF0aD0iL3Y0IituLnBhdGgsRC5SRVFVSVJFX0FDQ0VTU19UT0tFTiYmKEQuQUNDRVNTX1RPS0VOfHx0aGlzLl9jdXN0b21BY2Nlc3NUb2tlbikmJnRoaXMuX3NrdVRva2VuJiZuLnBhcmFtcy5wdXNoKCJza3U9Iit0aGlzLl9za3VUb2tlbiksdGhpcy5fbWFrZUFQSVVSTChuLHRoaXMuX2N1c3RvbUFjY2Vzc1Rva2VuKX0sVi5wcm90b3R5cGUuY2Fub25pY2FsaXplVGlsZVVSTD1mdW5jdGlvbih0KXt2YXIgZT1ZKHQpO2lmKCFlLnBhdGgubWF0Y2goLyheXC92NFwvKS8pfHwhZS5wYXRoLm1hdGNoKC9cLltcd10rJC8pKXJldHVybiB0O3ZhciByPSJtYXBib3g6Ly90aWxlcy8iO3IrPWUucGF0aC5yZXBsYWNlKCIvdjQvIiwiIik7dmFyIG49ZS5wYXJhbXMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiF0Lm1hdGNoKC9eYWNjZXNzX3Rva2VuPS8pfSk7cmV0dXJuIG4ubGVuZ3RoJiYocis9Ij8iK24uam9pbigiJiIpKSxyfSxWLnByb3RvdHlwZS5jYW5vbmljYWxpemVUaWxlc2V0PWZ1bmN0aW9uKHQsZSl7aWYoIVUoZSkpcmV0dXJuIHQudGlsZXN8fFtdO2Zvcih2YXIgcj1bXSxuPTAsYT10LnRpbGVzO248YS5sZW5ndGg7bis9MSl7dmFyIGk9YVtuXSxvPXRoaXMuY2Fub25pY2FsaXplVGlsZVVSTChpKTtyLnB1c2gobyl9cmV0dXJuIHJ9LFYucHJvdG90eXBlLl9tYWtlQVBJVVJMPWZ1bmN0aW9uKHQsZSl7dmFyIHI9IlNlZSBodHRwczovL3d3dy5tYXBib3guY29tL2FwaS1kb2N1bWVudGF0aW9uLyNhY2Nlc3MtdG9rZW5zLWFuZC10b2tlbi1zY29wZXMiLG49WShELkFQSV9VUkwpO2lmKHQucHJvdG9jb2w9bi5wcm90b2NvbCx0LmF1dGhvcml0eT1uLmF1dGhvcml0eSwiLyIhPT1uLnBhdGgmJih0LnBhdGg9IiIrbi5wYXRoK3QucGF0aCksIUQuUkVRVUlSRV9BQ0NFU1NfVE9LRU4pcmV0dXJuIFcodCk7aWYoIShlPWV8fEQuQUNDRVNTX1RPS0VOKSl0aHJvdyBuZXcgRXJyb3IoIkFuIEFQSSBhY2Nlc3MgdG9rZW4gaXMgcmVxdWlyZWQgdG8gdXNlIE1hcGJveCBHTC4gIityKTtpZigicyI9PT1lWzBdKXRocm93IG5ldyBFcnJvcigiVXNlIGEgcHVibGljIGFjY2VzcyB0b2tlbiAocGsuKikgd2l0aCBNYXBib3ggR0wsIG5vdCBhIHNlY3JldCBhY2Nlc3MgdG9rZW4gKHNrLiopLiAiK3IpO3JldHVybiB0LnBhcmFtcz10LnBhcmFtcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuLTE9PT10LmluZGV4T2YoImFjY2Vzc190b2tlbiIpfSksdC5wYXJhbXMucHVzaCgiYWNjZXNzX3Rva2VuPSIrZSksVyh0KX07dmFyIHE9L14oKGh0dHBzPzopP1wvXC8pPyhbXlwvXStcLik/bWFwYm94XC5jKG58b20pKFwvfFw/fCQpL2k7ZnVuY3Rpb24gSCh0KXtyZXR1cm4gcS50ZXN0KHQpfXZhciBHPS9eKFx3Kyk6XC9cLyhbXlwvP10qKShcL1teP10rKT9cPz8oLispPy87ZnVuY3Rpb24gWSh0KXt2YXIgZT10Lm1hdGNoKEcpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIHBhcnNlIFVSTCBvYmplY3QiKTtyZXR1cm57cHJvdG9jb2w6ZVsxXSxhdXRob3JpdHk6ZVsyXSxwYXRoOmVbM118fCIvIixwYXJhbXM6ZVs0XT9lWzRdLnNwbGl0KCImIik6W119fWZ1bmN0aW9uIFcodCl7dmFyIGU9dC5wYXJhbXMubGVuZ3RoPyI/Iit0LnBhcmFtcy5qb2luKCImIik6IiI7cmV0dXJuIHQucHJvdG9jb2wrIjovLyIrdC5hdXRob3JpdHkrdC5wYXRoK2V9ZnVuY3Rpb24gWCh0KXtpZighdClyZXR1cm4gbnVsbDt2YXIgZSxyPXQuc3BsaXQoIi4iKTtpZighcnx8MyE9PXIubGVuZ3RoKXJldHVybiBudWxsO3RyeXtyZXR1cm4gSlNPTi5wYXJzZSgoZT1yWzFdLGRlY29kZVVSSUNvbXBvbmVudChzZWxmLmF0b2IoZSkuc3BsaXQoIiIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iJSIrKCIwMCIrdC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpfSkuam9pbigiIikpKSl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fXZhciBaPWZ1bmN0aW9uKHQpe3RoaXMudHlwZT10LHRoaXMuYW5vbklkPW51bGwsdGhpcy5ldmVudERhdGE9e30sdGhpcy5xdWV1ZT1bXSx0aGlzLnBlbmRpbmdSZXF1ZXN0PW51bGx9O1oucHJvdG90eXBlLmdldFN0b3JhZ2VLZXk9ZnVuY3Rpb24odCl7dmFyIGUscj1YKEQuQUNDRVNTX1RPS0VOKSxuPSIiO3JldHVybiByJiZyLnU/KGU9ci51LG49c2VsZi5idG9hKGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lKFswLTlBLUZdezJ9KS9nLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoTnVtYmVyKCIweCIrZSkpfSkpKTpuPUQuQUNDRVNTX1RPS0VOfHwiIix0PyJtYXBib3guZXZlbnREYXRhLiIrdCsiOiIrbjoibWFwYm94LmV2ZW50RGF0YToiK259LFoucHJvdG90eXBlLmZldGNoRXZlbnREYXRhPWZ1bmN0aW9uKCl7dmFyIHQ9QSgibG9jYWxTdG9yYWdlIiksZT10aGlzLmdldFN0b3JhZ2VLZXkoKSxyPXRoaXMuZ2V0U3RvcmFnZUtleSgidXVpZCIpO2lmKHQpdHJ5e3ZhciBuPXNlbGYubG9jYWxTdG9yYWdlLmdldEl0ZW0oZSk7biYmKHRoaXMuZXZlbnREYXRhPUpTT04ucGFyc2UobikpO3ZhciBhPXNlbGYubG9jYWxTdG9yYWdlLmdldEl0ZW0ocik7YSYmKHRoaXMuYW5vbklkPWEpfWNhdGNoKHQpe3coIlVuYWJsZSB0byByZWFkIGZyb20gTG9jYWxTdG9yYWdlIil9fSxaLnByb3RvdHlwZS5zYXZlRXZlbnREYXRhPWZ1bmN0aW9uKCl7dmFyIHQ9QSgibG9jYWxTdG9yYWdlIiksZT10aGlzLmdldFN0b3JhZ2VLZXkoKSxyPXRoaXMuZ2V0U3RvcmFnZUtleSgidXVpZCIpO2lmKHQpdHJ5e3NlbGYubG9jYWxTdG9yYWdlLnNldEl0ZW0ocix0aGlzLmFub25JZCksT2JqZWN0LmtleXModGhpcy5ldmVudERhdGEpLmxlbmd0aD49MSYmc2VsZi5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLEpTT04uc3RyaW5naWZ5KHRoaXMuZXZlbnREYXRhKSl9Y2F0Y2godCl7dygiVW5hYmxlIHRvIHdyaXRlIHRvIExvY2FsU3RvcmFnZSIpfX0sWi5wcm90b3R5cGUucHJvY2Vzc1JlcXVlc3RzPWZ1bmN0aW9uKHQpe30sWi5wcm90b3R5cGUucG9zdEV2ZW50PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXM7aWYoRC5FVkVOVFNfVVJMKXt2YXIgaT1ZKEQuRVZFTlRTX1VSTCk7aS5wYXJhbXMucHVzaCgiYWNjZXNzX3Rva2VuPSIrKG58fEQuQUNDRVNTX1RPS0VOfHwiIikpO3ZhciBvPXtldmVudDp0aGlzLnR5cGUsY3JlYXRlZDpuZXcgRGF0ZSh0KS50b0lTT1N0cmluZygpLHNka0lkZW50aWZpZXI6Im1hcGJveC1nbC1qcyIsc2RrVmVyc2lvbjoiMS4zLjIiLHNrdUlkOmosdXNlcklkOnRoaXMuYW5vbklkfSxzPWU/aChvLGUpOm8sbD17dXJsOlcoaSksaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifSxib2R5OkpTT04uc3RyaW5naWZ5KFtzXSl9O3RoaXMucGVuZGluZ1JlcXVlc3Q9bXQobCxmdW5jdGlvbih0KXthLnBlbmRpbmdSZXF1ZXN0PW51bGwscih0KSxhLnNhdmVFdmVudERhdGEoKSxhLnByb2Nlc3NSZXF1ZXN0cyhuKX0pfX0sWi5wcm90b3R5cGUucXVldWVSZXF1ZXN0PWZ1bmN0aW9uKHQsZSl7dGhpcy5xdWV1ZS5wdXNoKHQpLHRoaXMucHJvY2Vzc1JlcXVlc3RzKGUpfTt2YXIgSixLPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmNhbGwodGhpcywibWFwLmxvYWQiKSx0aGlzLnN1Y2Nlc3M9e30sdGhpcy5za3VUb2tlbj0iIn1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUucG9zdE1hcExvYWRFdmVudD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnNrdVRva2VuPXIsKEQuRVZFTlRTX1VSTCYmbnx8RC5BQ0NFU1NfVE9LRU4mJkFycmF5LmlzQXJyYXkodCkmJnQuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gVSh0KXx8SCh0KX0pKSYmdGhpcy5xdWV1ZVJlcXVlc3Qoe2lkOmUsdGltZXN0YW1wOkRhdGUubm93KCl9LG4pfSxlLnByb3RvdHlwZS5wcm9jZXNzUmVxdWVzdHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZighdGhpcy5wZW5kaW5nUmVxdWVzdCYmMCE9PXRoaXMucXVldWUubGVuZ3RoKXt2YXIgcj10aGlzLnF1ZXVlLnNoaWZ0KCksbj1yLmlkLGE9ci50aW1lc3RhbXA7biYmdGhpcy5zdWNjZXNzW25dfHwodGhpcy5hbm9uSWR8fHRoaXMuZmV0Y2hFdmVudERhdGEoKSxnKHRoaXMuYW5vbklkKXx8KHRoaXMuYW5vbklkPWQoKSksdGhpcy5wb3N0RXZlbnQoYSx7c2t1VG9rZW46dGhpcy5za3VUb2tlbn0sZnVuY3Rpb24odCl7dHx8biYmKGUuc3VjY2Vzc1tuXT0hMCl9LHQpKX19LGV9KFopLFE9bmV3KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsImFwcFVzZXJUdXJuc3RpbGUiKSx0aGlzLl9jdXN0b21BY2Nlc3NUb2tlbj1lfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5wb3N0VHVybnN0aWxlRXZlbnQ9ZnVuY3Rpb24odCxlKXtELkVWRU5UU19VUkwmJkQuQUNDRVNTX1RPS0VOJiZBcnJheS5pc0FycmF5KHQpJiZ0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIFUodCl8fEgodCl9KSYmdGhpcy5xdWV1ZVJlcXVlc3QoRGF0ZS5ub3coKSxlKX0sZS5wcm90b3R5cGUucHJvY2Vzc1JlcXVlc3RzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoIXRoaXMucGVuZGluZ1JlcXVlc3QmJjAhPT10aGlzLnF1ZXVlLmxlbmd0aCl7dGhpcy5hbm9uSWQmJnRoaXMuZXZlbnREYXRhLmxhc3RTdWNjZXNzJiZ0aGlzLmV2ZW50RGF0YS50b2tlblV8fHRoaXMuZmV0Y2hFdmVudERhdGEoKTt2YXIgcj1YKEQuQUNDRVNTX1RPS0VOKSxuPXI/ci51OkQuQUNDRVNTX1RPS0VOLGE9biE9PXRoaXMuZXZlbnREYXRhLnRva2VuVTtnKHRoaXMuYW5vbklkKXx8KHRoaXMuYW5vbklkPWQoKSxhPSEwKTt2YXIgaT10aGlzLnF1ZXVlLnNoaWZ0KCk7aWYodGhpcy5ldmVudERhdGEubGFzdFN1Y2Nlc3Mpe3ZhciBvPW5ldyBEYXRlKHRoaXMuZXZlbnREYXRhLmxhc3RTdWNjZXNzKSxzPW5ldyBEYXRlKGkpLGw9KGktdGhpcy5ldmVudERhdGEubGFzdFN1Y2Nlc3MpLzg2NGU1O2E9YXx8bD49MXx8bDwtMXx8by5nZXREYXRlKCkhPT1zLmdldERhdGUoKX1lbHNlIGE9ITA7aWYoIWEpcmV0dXJuIHRoaXMucHJvY2Vzc1JlcXVlc3RzKCk7dGhpcy5wb3N0RXZlbnQoaSx7ImVuYWJsZWQudGVsZW1ldHJ5IjohMX0sZnVuY3Rpb24odCl7dHx8KGUuZXZlbnREYXRhLmxhc3RTdWNjZXNzPWksZS5ldmVudERhdGEudG9rZW5VPW4pfSx0KX19LGV9KFopKSwkPVEucG9zdFR1cm5zdGlsZUV2ZW50LmJpbmQoUSksdHQ9bmV3IEssZXQ9dHQucG9zdE1hcExvYWRFdmVudC5iaW5kKHR0KSxydD0ibWFwYm94LXRpbGVzIixudD01MDAsYXQ9NTAsaXQ9NDJlNDtmdW5jdGlvbiBvdCh0KXt2YXIgZT10LmluZGV4T2YoIj8iKTtyZXR1cm4gZTwwP3Q6dC5zbGljZSgwLGUpfXZhciBzdD0xLzAsbHQ9e1Vua25vd246IlVua25vd24iLFN0eWxlOiJTdHlsZSIsU291cmNlOiJTb3VyY2UiLFRpbGU6IlRpbGUiLEdseXBoczoiR2x5cGhzIixTcHJpdGVJbWFnZToiU3ByaXRlSW1hZ2UiLFNwcml0ZUpTT046IlNwcml0ZUpTT04iLEltYWdlOiJJbWFnZSJ9OyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZnJlZXplJiZPYmplY3QuZnJlZXplKGx0KTt2YXIgY3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIsbil7NDAxPT09ciYmSChuKSYmKGUrPSI6IHlvdSBtYXkgaGF2ZSBwcm92aWRlZCBhbiBpbnZhbGlkIE1hcGJveCBhY2Nlc3MgdG9rZW4uIFNlZSBodHRwczovL3d3dy5tYXBib3guY29tL2FwaS1kb2N1bWVudGF0aW9uLyNhY2Nlc3MtdG9rZW5zLWFuZC10b2tlbi1zY29wZXMiKSx0LmNhbGwodGhpcyxlKSx0aGlzLnN0YXR1cz1yLHRoaXMudXJsPW4sdGhpcy5uYW1lPXRoaXMuY29uc3RydWN0b3IubmFtZSx0aGlzLm1lc3NhZ2U9ZX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lKyI6ICIrdGhpcy5tZXNzYWdlKyIgKCIrdGhpcy5zdGF0dXMrIik6ICIrdGhpcy51cmx9LGV9KEVycm9yKTtmdW5jdGlvbiB1dCgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlfXZhciBodD11dCgpP2Z1bmN0aW9uKCl7cmV0dXJuIHNlbGYud29ya2VyJiZzZWxmLndvcmtlci5yZWZlcnJlcn06ZnVuY3Rpb24oKXtyZXR1cm4oImJsb2I6Ij09PXNlbGYubG9jYXRpb24ucHJvdG9jb2w/c2VsZi5wYXJlbnQ6c2VsZikubG9jYXRpb24uaHJlZn07ZnVuY3Rpb24gZnQodCxlKXt2YXIgcixuPW5ldyBzZWxmLkFib3J0Q29udHJvbGxlcixhPW5ldyBzZWxmLlJlcXVlc3QodC51cmwse21ldGhvZDp0Lm1ldGhvZHx8IkdFVCIsYm9keTp0LmJvZHksY3JlZGVudGlhbHM6dC5jcmVkZW50aWFscyxoZWFkZXJzOnQuaGVhZGVycyxyZWZlcnJlcjpodCgpLHNpZ25hbDpuLnNpZ25hbH0pLGk9ITEsbz0hMSxzPShyPWEudXJsKS5pbmRleE9mKCJza3U9Iik+MCYmSChyKTsianNvbiI9PT10LnR5cGUmJmEuaGVhZGVycy5zZXQoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKTt2YXIgbD1mdW5jdGlvbihyLG4saSl7aWYoIW8pe2lmKHImJiJTZWN1cml0eUVycm9yIiE9PXIubWVzc2FnZSYmdyhyKSxuJiZpKXJldHVybiBjKG4pO3ZhciBsPURhdGUubm93KCk7c2VsZi5mZXRjaChhKS50aGVuKGZ1bmN0aW9uKHIpe2lmKHIub2spe3ZhciBuPXM/ci5jbG9uZSgpOm51bGw7cmV0dXJuIGMocixuLGwpfXJldHVybiBlKG5ldyBjdChyLnN0YXR1c1RleHQsci5zdGF0dXMsdC51cmwpKX0pLmNhdGNoKGZ1bmN0aW9uKHQpezIwIT09dC5jb2RlJiZlKG5ldyBFcnJvcih0Lm1lc3NhZ2UpKX0pfX0sYz1mdW5jdGlvbihyLG4scyl7KCJhcnJheUJ1ZmZlciI9PT10LnR5cGU/ci5hcnJheUJ1ZmZlcigpOiJqc29uIj09PXQudHlwZT9yLmpzb24oKTpyLnRleHQoKSkudGhlbihmdW5jdGlvbih0KXtvfHwobiYmcyYmZnVuY3Rpb24odCxlLHIpe2lmKHNlbGYuY2FjaGVzKXt2YXIgbj17c3RhdHVzOmUuc3RhdHVzLHN0YXR1c1RleHQ6ZS5zdGF0dXNUZXh0LGhlYWRlcnM6bmV3IHNlbGYuSGVhZGVyc307ZS5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5oZWFkZXJzLnNldChlLHQpfSk7dmFyIGE9TShlLmhlYWRlcnMuZ2V0KCJDYWNoZS1Db250cm9sIil8fCIiKTthWyJuby1zdG9yZSJdfHwoYVsibWF4LWFnZSJdJiZuLmhlYWRlcnMuc2V0KCJFeHBpcmVzIixuZXcgRGF0ZShyKzFlMyphWyJtYXgtYWdlIl0pLnRvVVRDU3RyaW5nKCkpLG5ldyBEYXRlKG4uaGVhZGVycy5nZXQoIkV4cGlyZXMiKSkuZ2V0VGltZSgpLXI8aXR8fGZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09Sil0cnl7bmV3IFJlc3BvbnNlKG5ldyBSZWFkYWJsZVN0cmVhbSksSj0hMH1jYXRjaCh0KXtKPSExfUo/ZSh0LmJvZHkpOnQuYmxvYigpLnRoZW4oZSl9KGUsZnVuY3Rpb24oZSl7dmFyIHI9bmV3IHNlbGYuUmVzcG9uc2UoZSxuKTtzZWxmLmNhY2hlcy5vcGVuKHJ0KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLnB1dChvdCh0LnVybCkscil9KS5jYXRjaChmdW5jdGlvbih0KXtyZXR1cm4gdyh0Lm1lc3NhZ2UpfSl9KSl9fShhLG4scyksaT0hMCxlKG51bGwsdCxyLmhlYWRlcnMuZ2V0KCJDYWNoZS1Db250cm9sIiksci5oZWFkZXJzLmdldCgiRXhwaXJlcyIpKSl9KS5jYXRjaChmdW5jdGlvbih0KXtyZXR1cm4gZShuZXcgRXJyb3IodC5tZXNzYWdlKSl9KX07cmV0dXJuIHM/ZnVuY3Rpb24odCxlKXtpZighc2VsZi5jYWNoZXMpcmV0dXJuIGUobnVsbCk7dmFyIHI9b3QodC51cmwpO3NlbGYuY2FjaGVzLm9wZW4ocnQpLnRoZW4oZnVuY3Rpb24odCl7dC5tYXRjaChyKS50aGVuKGZ1bmN0aW9uKG4pe3ZhciBhPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiExO3ZhciBlPW5ldyBEYXRlKHQuaGVhZGVycy5nZXQoIkV4cGlyZXMiKSkscj1NKHQuaGVhZGVycy5nZXQoIkNhY2hlLUNvbnRyb2wiKXx8IiIpO3JldHVybiBlPkRhdGUubm93KCkmJiFyWyJuby1jYWNoZSJdfShuKTt0LmRlbGV0ZShyKSxhJiZ0LnB1dChyLG4uY2xvbmUoKSksZShudWxsLG4sYSl9KS5jYXRjaChlKX0pLmNhdGNoKGUpfShhLGwpOmwobnVsbCxudWxsKSx7Y2FuY2VsOmZ1bmN0aW9uKCl7bz0hMCxpfHxuLmFib3J0KCl9fX12YXIgcHQsZHQsZ3Q9ZnVuY3Rpb24odCxlKXtpZihyPXQudXJsLCEoL15maWxlOi8udGVzdChyKXx8L15maWxlOi8udGVzdChodCgpKSYmIS9eXHcrOi8udGVzdChyKSkpe2lmKHNlbGYuZmV0Y2gmJnNlbGYuUmVxdWVzdCYmc2VsZi5BYm9ydENvbnRyb2xsZXImJnNlbGYuUmVxdWVzdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInNpZ25hbCIpKXJldHVybiBmdCh0LGUpO2lmKHV0KCkmJnNlbGYud29ya2VyJiZzZWxmLndvcmtlci5hY3RvcilyZXR1cm4gc2VsZi53b3JrZXIuYWN0b3Iuc2VuZCgiZ2V0UmVzb3VyY2UiLHQsZSl9dmFyIHI7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IHNlbGYuWE1MSHR0cFJlcXVlc3Q7Zm9yKHZhciBuIGluIHIub3Blbih0Lm1ldGhvZHx8IkdFVCIsdC51cmwsITApLCJhcnJheUJ1ZmZlciI9PT10LnR5cGUmJihyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKSx0LmhlYWRlcnMpci5zZXRSZXF1ZXN0SGVhZGVyKG4sdC5oZWFkZXJzW25dKTtyZXR1cm4ianNvbiI9PT10LnR5cGUmJihyLnJlc3BvbnNlVHlwZT0idGV4dCIsci5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIikpLHIud2l0aENyZWRlbnRpYWxzPSJpbmNsdWRlIj09PXQuY3JlZGVudGlhbHMsci5vbmVycm9yPWZ1bmN0aW9uKCl7ZShuZXcgRXJyb3Ioci5zdGF0dXNUZXh0KSl9LHIub25sb2FkPWZ1bmN0aW9uKCl7aWYoKHIuc3RhdHVzPj0yMDAmJnIuc3RhdHVzPDMwMHx8MD09PXIuc3RhdHVzKSYmbnVsbCE9PXIucmVzcG9uc2Upe3ZhciBuPXIucmVzcG9uc2U7aWYoImpzb24iPT09dC50eXBlKXRyeXtuPUpTT04ucGFyc2Uoci5yZXNwb25zZSl9Y2F0Y2godCl7cmV0dXJuIGUodCl9ZShudWxsLG4sci5nZXRSZXNwb25zZUhlYWRlcigiQ2FjaGUtQ29udHJvbCIpLHIuZ2V0UmVzcG9uc2VIZWFkZXIoIkV4cGlyZXMiKSl9ZWxzZSBlKG5ldyBjdChyLnN0YXR1c1RleHQsci5zdGF0dXMsdC51cmwpKX0sci5zZW5kKHQuYm9keSkse2NhbmNlbDpmdW5jdGlvbigpe3JldHVybiByLmFib3J0KCl9fX0odCxlKX0sdnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3QoaCh0LHt0eXBlOiJhcnJheUJ1ZmZlciJ9KSxlKX0sbXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3QoaCh0LHttZXRob2Q6IlBPU1QifSksZSl9O3B0PVtdLGR0PTA7dmFyIHl0PWZ1bmN0aW9uKHQsZSl7aWYoZHQ+PUQuTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTKXt2YXIgcj17cmVxdWVzdFBhcmFtZXRlcnM6dCxjYWxsYmFjazplLGNhbmNlbGxlZDohMSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbGxlZD0hMH19O3JldHVybiBwdC5wdXNoKHIpLHJ9ZHQrKzt2YXIgbj0hMSxhPWZ1bmN0aW9uKCl7aWYoIW4pZm9yKG49ITAsZHQtLTtwdC5sZW5ndGgmJmR0PEQuTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTOyl7dmFyIHQ9cHQuc2hpZnQoKSxlPXQucmVxdWVzdFBhcmFtZXRlcnMscj10LmNhbGxiYWNrO3QuY2FuY2VsbGVkfHwodC5jYW5jZWw9eXQoZSxyKS5jYW5jZWwpfX0saT12dCh0LGZ1bmN0aW9uKHQscixuLGkpe2lmKGEoKSx0KWUodCk7ZWxzZSBpZihyKXt2YXIgbz1uZXcgc2VsZi5JbWFnZSxzPXNlbGYuVVJMfHxzZWxmLndlYmtpdFVSTDtvLm9ubG9hZD1mdW5jdGlvbigpe2UobnVsbCxvKSxzLnJldm9rZU9iamVjdFVSTChvLnNyYyl9LG8ub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiBlKG5ldyBFcnJvcigiQ291bGQgbm90IGxvYWQgaW1hZ2UuIFBsZWFzZSBtYWtlIHN1cmUgdG8gdXNlIGEgc3VwcG9ydGVkIGltYWdlIHR5cGUgc3VjaCBhcyBQTkcgb3IgSlBFRy4gTm90ZSB0aGF0IFNWR3MgYXJlIG5vdCBzdXBwb3J0ZWQuIikpfTt2YXIgbD1uZXcgc2VsZi5CbG9iKFtuZXcgVWludDhBcnJheShyKV0se3R5cGU6ImltYWdlL3BuZyJ9KTtvLmNhY2hlQ29udHJvbD1uLG8uZXhwaXJlcz1pLG8uc3JjPXIuYnl0ZUxlbmd0aD9zLmNyZWF0ZU9iamVjdFVSTChsKToiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FZQUFBQWZGY1NKQUFBQUMwbEVRVlFZVjJOZ0FBSUFBQVVBQWFyVnlGRUFBQUFBU1VWT1JLNUNZSUk9In19KTtyZXR1cm57Y2FuY2VsOmZ1bmN0aW9uKCl7aS5jYW5jZWwoKSxhKCl9fX07ZnVuY3Rpb24geHQodCxlLHIpe3JbdF0mJi0xIT09clt0XS5pbmRleE9mKGUpfHwoclt0XT1yW3RdfHxbXSxyW3RdLnB1c2goZSkpfWZ1bmN0aW9uIGJ0KHQsZSxyKXtpZihyJiZyW3RdKXt2YXIgbj1yW3RdLmluZGV4T2YoZSk7LTEhPT1uJiZyW3RdLnNwbGljZShuLDEpfX12YXIgX3Q9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSksaCh0aGlzLGUpLHRoaXMudHlwZT10fSx3dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dm9pZCAwPT09ciYmKHI9e30pLHQuY2FsbCh0aGlzLCJlcnJvciIsaCh7ZXJyb3I6ZX0scikpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlfShfdCksa3Q9ZnVuY3Rpb24oKXt9O2t0LnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9saXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzfHx7fSx4dCh0LGUsdGhpcy5fbGlzdGVuZXJzKSx0aGlzfSxrdC5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJ0KHQsZSx0aGlzLl9saXN0ZW5lcnMpLGJ0KHQsZSx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzKSx0aGlzfSxrdC5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9vbmVUaW1lTGlzdGVuZXJzPXRoaXMuX29uZVRpbWVMaXN0ZW5lcnN8fHt9LHh0KHQsZSx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzKSx0aGlzfSxrdC5wcm90b3R5cGUuZmlyZT1mdW5jdGlvbih0LGUpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9bmV3IF90KHQsZXx8e30pKTt2YXIgcj10LnR5cGU7aWYodGhpcy5saXN0ZW5zKHIpKXt0LnRhcmdldD10aGlzO2Zvcih2YXIgbj0wLGE9dGhpcy5fbGlzdGVuZXJzJiZ0aGlzLl9saXN0ZW5lcnNbcl0/dGhpcy5fbGlzdGVuZXJzW3JdLnNsaWNlKCk6W107bjxhLmxlbmd0aDtuKz0xKWFbbl0uY2FsbCh0aGlzLHQpO2Zvcih2YXIgaT0wLG89dGhpcy5fb25lVGltZUxpc3RlbmVycyYmdGhpcy5fb25lVGltZUxpc3RlbmVyc1tyXT90aGlzLl9vbmVUaW1lTGlzdGVuZXJzW3JdLnNsaWNlKCk6W107aTxvLmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ldO2J0KHIscyx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzKSxzLmNhbGwodGhpcyx0KX12YXIgbD10aGlzLl9ldmVudGVkUGFyZW50O2wmJihoKHQsImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2V2ZW50ZWRQYXJlbnREYXRhP3RoaXMuX2V2ZW50ZWRQYXJlbnREYXRhKCk6dGhpcy5fZXZlbnRlZFBhcmVudERhdGEpLGwuZmlyZSh0KSl9ZWxzZSB0IGluc3RhbmNlb2Ygd3QmJmNvbnNvbGUuZXJyb3IodC5lcnJvcik7cmV0dXJuIHRoaXN9LGt0LnByb3RvdHlwZS5saXN0ZW5zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVyc1t0XSYmdGhpcy5fbGlzdGVuZXJzW3RdLmxlbmd0aD4wfHx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzJiZ0aGlzLl9vbmVUaW1lTGlzdGVuZXJzW3RdJiZ0aGlzLl9vbmVUaW1lTGlzdGVuZXJzW3RdLmxlbmd0aD4wfHx0aGlzLl9ldmVudGVkUGFyZW50JiZ0aGlzLl9ldmVudGVkUGFyZW50Lmxpc3RlbnModCl9LGt0LnByb3RvdHlwZS5zZXRFdmVudGVkUGFyZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2V2ZW50ZWRQYXJlbnQ9dCx0aGlzLl9ldmVudGVkUGFyZW50RGF0YT1lLHRoaXN9O3ZhciBUdD17JHZlcnNpb246OCwkcm9vdDp7dmVyc2lvbjp7cmVxdWlyZWQ6ITAsdHlwZToiZW51bSIsdmFsdWVzOls4XX0sbmFtZTp7dHlwZToic3RyaW5nIn0sbWV0YWRhdGE6e3R5cGU6IioifSxjZW50ZXI6e3R5cGU6ImFycmF5Iix2YWx1ZToibnVtYmVyIn0sem9vbTp7dHlwZToibnVtYmVyIn0sYmVhcmluZzp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAscGVyaW9kOjM2MCx1bml0czoiZGVncmVlcyJ9LHBpdGNoOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCx1bml0czoiZGVncmVlcyJ9LGxpZ2h0Ont0eXBlOiJsaWdodCJ9LHNvdXJjZXM6e3JlcXVpcmVkOiEwLHR5cGU6InNvdXJjZXMifSxzcHJpdGU6e3R5cGU6InN0cmluZyJ9LGdseXBoczp7dHlwZToic3RyaW5nIn0sdHJhbnNpdGlvbjp7dHlwZToidHJhbnNpdGlvbiJ9LGxheWVyczp7cmVxdWlyZWQ6ITAsdHlwZToiYXJyYXkiLHZhbHVlOiJsYXllciJ9fSxzb3VyY2VzOnsiKiI6e3R5cGU6InNvdXJjZSJ9fSxzb3VyY2U6WyJzb3VyY2VfdmVjdG9yIiwic291cmNlX3Jhc3RlciIsInNvdXJjZV9yYXN0ZXJfZGVtIiwic291cmNlX2dlb2pzb24iLCJzb3VyY2VfdmlkZW8iLCJzb3VyY2VfaW1hZ2UiXSxzb3VyY2VfdmVjdG9yOnt0eXBlOntyZXF1aXJlZDohMCx0eXBlOiJlbnVtIix2YWx1ZXM6e3ZlY3Rvcjp7fX19LHVybDp7dHlwZToic3RyaW5nIn0sdGlsZXM6e3R5cGU6ImFycmF5Iix2YWx1ZToic3RyaW5nIn0sYm91bmRzOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjQsZGVmYXVsdDpbLTE4MCwtODUuMDUxMTI5LDE4MCw4NS4wNTExMjldfSxzY2hlbWU6e3R5cGU6ImVudW0iLHZhbHVlczp7eHl6Ont9LHRtczp7fX0sZGVmYXVsdDoieHl6In0sbWluem9vbTp7dHlwZToibnVtYmVyIixkZWZhdWx0OjB9LG1heHpvb206e3R5cGU6Im51bWJlciIsZGVmYXVsdDoyMn0sYXR0cmlidXRpb246e3R5cGU6InN0cmluZyJ9LCIqIjp7dHlwZToiKiJ9fSxzb3VyY2VfcmFzdGVyOnt0eXBlOntyZXF1aXJlZDohMCx0eXBlOiJlbnVtIix2YWx1ZXM6e3Jhc3Rlcjp7fX19LHVybDp7dHlwZToic3RyaW5nIn0sdGlsZXM6e3R5cGU6ImFycmF5Iix2YWx1ZToic3RyaW5nIn0sYm91bmRzOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjQsZGVmYXVsdDpbLTE4MCwtODUuMDUxMTI5LDE4MCw4NS4wNTExMjldfSxtaW56b29tOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MH0sbWF4em9vbTp7dHlwZToibnVtYmVyIixkZWZhdWx0OjIyfSx0aWxlU2l6ZTp7dHlwZToibnVtYmVyIixkZWZhdWx0OjUxMix1bml0czoicGl4ZWxzIn0sc2NoZW1lOnt0eXBlOiJlbnVtIix2YWx1ZXM6e3h5ejp7fSx0bXM6e319LGRlZmF1bHQ6Inh5eiJ9LGF0dHJpYnV0aW9uOnt0eXBlOiJzdHJpbmcifSwiKiI6e3R5cGU6IioifX0sc291cmNlX3Jhc3Rlcl9kZW06e3R5cGU6e3JlcXVpcmVkOiEwLHR5cGU6ImVudW0iLHZhbHVlczp7InJhc3Rlci1kZW0iOnt9fX0sdXJsOnt0eXBlOiJzdHJpbmcifSx0aWxlczp7dHlwZToiYXJyYXkiLHZhbHVlOiJzdHJpbmcifSxib3VuZHM6e3R5cGU6ImFycmF5Iix2YWx1ZToibnVtYmVyIixsZW5ndGg6NCxkZWZhdWx0OlstMTgwLC04NS4wNTExMjksMTgwLDg1LjA1MTEyOV19LG1pbnpvb206e3R5cGU6Im51bWJlciIsZGVmYXVsdDowfSxtYXh6b29tOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MjJ9LHRpbGVTaXplOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6NTEyLHVuaXRzOiJwaXhlbHMifSxhdHRyaWJ1dGlvbjp7dHlwZToic3RyaW5nIn0sZW5jb2Rpbmc6e3R5cGU6ImVudW0iLHZhbHVlczp7dGVycmFyaXVtOnt9LG1hcGJveDp7fX0sZGVmYXVsdDoibWFwYm94In0sIioiOnt0eXBlOiIqIn19LHNvdXJjZV9nZW9qc29uOnt0eXBlOntyZXF1aXJlZDohMCx0eXBlOiJlbnVtIix2YWx1ZXM6e2dlb2pzb246e319fSxkYXRhOnt0eXBlOiIqIn0sbWF4em9vbTp7dHlwZToibnVtYmVyIixkZWZhdWx0OjE4fSxhdHRyaWJ1dGlvbjp7dHlwZToic3RyaW5nIn0sYnVmZmVyOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MTI4LG1heGltdW06NTEyLG1pbmltdW06MH0sdG9sZXJhbmNlOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6LjM3NX0sY2x1c3Rlcjp7dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMX0sY2x1c3RlclJhZGl1czp7dHlwZToibnVtYmVyIixkZWZhdWx0OjUwLG1pbmltdW06MH0sY2x1c3Rlck1heFpvb206e3R5cGU6Im51bWJlciJ9LGNsdXN0ZXJQcm9wZXJ0aWVzOnt0eXBlOiIqIn0sbGluZU1ldHJpY3M6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITF9LGdlbmVyYXRlSWQ6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITF9fSxzb3VyY2VfdmlkZW86e3R5cGU6e3JlcXVpcmVkOiEwLHR5cGU6ImVudW0iLHZhbHVlczp7dmlkZW86e319fSx1cmxzOntyZXF1aXJlZDohMCx0eXBlOiJhcnJheSIsdmFsdWU6InN0cmluZyJ9LGNvb3JkaW5hdGVzOntyZXF1aXJlZDohMCx0eXBlOiJhcnJheSIsbGVuZ3RoOjQsdmFsdWU6e3R5cGU6ImFycmF5IixsZW5ndGg6Mix2YWx1ZToibnVtYmVyIn19fSxzb3VyY2VfaW1hZ2U6e3R5cGU6e3JlcXVpcmVkOiEwLHR5cGU6ImVudW0iLHZhbHVlczp7aW1hZ2U6e319fSx1cmw6e3JlcXVpcmVkOiEwLHR5cGU6InN0cmluZyJ9LGNvb3JkaW5hdGVzOntyZXF1aXJlZDohMCx0eXBlOiJhcnJheSIsbGVuZ3RoOjQsdmFsdWU6e3R5cGU6ImFycmF5IixsZW5ndGg6Mix2YWx1ZToibnVtYmVyIn19fSxsYXllcjp7aWQ6e3R5cGU6InN0cmluZyIscmVxdWlyZWQ6ITB9LHR5cGU6e3R5cGU6ImVudW0iLHZhbHVlczp7ZmlsbDp7fSxsaW5lOnt9LHN5bWJvbDp7fSxjaXJjbGU6e30saGVhdG1hcDp7fSwiZmlsbC1leHRydXNpb24iOnt9LHJhc3Rlcjp7fSxoaWxsc2hhZGU6e30sYmFja2dyb3VuZDp7fX0scmVxdWlyZWQ6ITB9LG1ldGFkYXRhOnt0eXBlOiIqIn0sc291cmNlOnt0eXBlOiJzdHJpbmcifSwic291cmNlLWxheWVyIjp7dHlwZToic3RyaW5nIn0sbWluem9vbTp7dHlwZToibnVtYmVyIixtaW5pbXVtOjAsbWF4aW11bToyNH0sbWF4em9vbTp7dHlwZToibnVtYmVyIixtaW5pbXVtOjAsbWF4aW11bToyNH0sZmlsdGVyOnt0eXBlOiJmaWx0ZXIifSxsYXlvdXQ6e3R5cGU6ImxheW91dCJ9LHBhaW50Ont0eXBlOiJwYWludCJ9fSxsYXlvdXQ6WyJsYXlvdXRfZmlsbCIsImxheW91dF9saW5lIiwibGF5b3V0X2NpcmNsZSIsImxheW91dF9oZWF0bWFwIiwibGF5b3V0X2ZpbGwtZXh0cnVzaW9uIiwibGF5b3V0X3N5bWJvbCIsImxheW91dF9yYXN0ZXIiLCJsYXlvdXRfaGlsbHNoYWRlIiwibGF5b3V0X2JhY2tncm91bmQiXSxsYXlvdXRfYmFja2dyb3VuZDp7dmlzaWJpbGl0eTp7dHlwZToiZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBlIjoiY29uc3RhbnQifX0sbGF5b3V0X2ZpbGw6eyJmaWxsLXNvcnQta2V5Ijp7dHlwZToibnVtYmVyIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSx2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1ZXM6e3Zpc2libGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInByb3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSxsYXlvdXRfY2lyY2xlOnsiY2lyY2xlLXNvcnQta2V5Ijp7dHlwZToibnVtYmVyIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSx2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1ZXM6e3Zpc2libGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInByb3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSxsYXlvdXRfaGVhdG1hcDp7dmlzaWJpbGl0eTp7dHlwZToiZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBlIjoiY29uc3RhbnQifX0sImxheW91dF9maWxsLWV4dHJ1c2lvbiI6e3Zpc2liaWxpdHk6e3R5cGU6ImVudW0iLHZhbHVlczp7dmlzaWJsZTp7fSxub25lOnt9fSxkZWZhdWx0OiJ2aXNpYmxlIiwicHJvcGVydHktdHlwZSI6ImNvbnN0YW50In19LGxheW91dF9saW5lOnsibGluZS1jYXAiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e2J1dHQ6e30scm91bmQ6e30sc3F1YXJlOnt9fSxkZWZhdWx0OiJidXR0IixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImxpbmUtam9pbiI6e3R5cGU6ImVudW0iLHZhbHVlczp7YmV2ZWw6e30scm91bmQ6e30sbWl0ZXI6e319LGRlZmF1bHQ6Im1pdGVyIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwibGluZS1taXRlci1saW1pdCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoyLHJlcXVpcmVzOlt7ImxpbmUtam9pbiI6Im1pdGVyIn1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwibGluZS1yb3VuZC1saW1pdCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLjA1LHJlcXVpcmVzOlt7ImxpbmUtam9pbiI6InJvdW5kIn1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwibGluZS1zb3J0LWtleSI6e3R5cGU6Im51bWJlciIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sdmlzaWJpbGl0eTp7dHlwZToiZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBlIjoiY29uc3RhbnQifX0sbGF5b3V0X3N5bWJvbDp7InN5bWJvbC1wbGFjZW1lbnQiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e3BvaW50Ont9LGxpbmU6e30sImxpbmUtY2VudGVyIjp7fX0sZGVmYXVsdDoicG9pbnQiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwic3ltYm9sLXNwYWNpbmciOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MjUwLG1pbmltdW06MSx1bml0czoicGl4ZWxzIixyZXF1aXJlczpbeyJzeW1ib2wtcGxhY2VtZW50IjoibGluZSJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInN5bWJvbC1hdm9pZC1lZGdlcyI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITEsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJzeW1ib2wtc29ydC1rZXkiOnt0eXBlOiJudW1iZXIiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJzeW1ib2wtei1vcmRlciI6e3R5cGU6ImVudW0iLHZhbHVlczp7YXV0bzp7fSwidmlld3BvcnQteSI6e30sc291cmNlOnt9fSxkZWZhdWx0OiJhdXRvIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImljb24tYWxsb3ctb3ZlcmxhcCI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITEscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJpY29uLWlnbm9yZS1wbGFjZW1lbnQiOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiExLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaWNvbi1vcHRpb25hbCI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITEscmVxdWlyZXM6WyJpY29uLWltYWdlIiwidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnQiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e21hcDp7fSx2aWV3cG9ydDp7fSxhdXRvOnt9fSxkZWZhdWx0OiJhdXRvIixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImljb24tc2l6ZSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCx1bml0czoiZmFjdG9yIG9mIHRoZSBvcmlnaW5hbCBpY29uIHNpemUiLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJpY29uLXRleHQtZml0Ijp7dHlwZToiZW51bSIsdmFsdWVzOntub25lOnt9LHdpZHRoOnt9LGhlaWdodDp7fSxib3RoOnt9fSxkZWZhdWx0OiJub25lIixyZXF1aXJlczpbImljb24taW1hZ2UiLCJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJpY29uLXRleHQtZml0LXBhZGRpbmciOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjQsZGVmYXVsdDpbMCwwLDAsMF0sdW5pdHM6InBpeGVscyIscmVxdWlyZXM6WyJpY29uLWltYWdlIiwidGV4dC1maWVsZCIseyJpY29uLXRleHQtZml0IjpbImJvdGgiLCJ3aWR0aCIsImhlaWdodCJdfV0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJpY29uLWltYWdlIjp7dHlwZToic3RyaW5nIix0b2tlbnM6ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tcm90YXRlIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAscGVyaW9kOjM2MCx1bml0czoiZGVncmVlcyIscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tcGFkZGluZyI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoyLG1pbmltdW06MCx1bml0czoicGl4ZWxzIixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImljb24ta2VlcC11cHJpZ2h0Ijp7dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMSxyZXF1aXJlczpbImljb24taW1hZ2UiLHsiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnQiOiJtYXAifSx7InN5bWJvbC1wbGFjZW1lbnQiOlsibGluZSIsImxpbmUtY2VudGVyIl19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImljb24tb2Zmc2V0Ijp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0aDoyLGRlZmF1bHQ6WzAsMF0scmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOntjZW50ZXI6e30sbGVmdDp7fSxyaWdodDp7fSx0b3A6e30sYm90dG9tOnt9LCJ0b3AtbGVmdCI6e30sInRvcC1yaWdodCI6e30sImJvdHRvbS1sZWZ0Ijp7fSwiYm90dG9tLXJpZ2h0Ijp7fX0sZGVmYXVsdDoiY2VudGVyIixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiaWNvbi1waXRjaC1hbGlnbm1lbnQiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e21hcDp7fSx2aWV3cG9ydDp7fSxhdXRvOnt9fSxkZWZhdWx0OiJhdXRvIixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtcGl0Y2gtYWxpZ25tZW50Ijp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e30sYXV0bzp7fX0sZGVmYXVsdDoiYXV0byIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9LGF1dG86e319LGRlZmF1bHQ6ImF1dG8iLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwidGV4dC1maWVsZCI6e3R5cGU6ImZvcm1hdHRlZCIsZGVmYXVsdDoiIix0b2tlbnM6ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtZm9udCI6e3R5cGU6ImFycmF5Iix2YWx1ZToic3RyaW5nIixkZWZhdWx0OlsiT3BlbiBTYW5zIFJlZ3VsYXIiLCJBcmlhbCBVbmljb2RlIE1TIFJlZ3VsYXIiXSxyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC1zaXplIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjE2LG1pbmltdW06MCx1bml0czoicGl4ZWxzIixyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC1tYXgtd2lkdGgiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MTAsbWluaW11bTowLHVuaXRzOiJlbXMiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWxpbmUtaGVpZ2h0Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEuMix1bml0czoiZW1zIixyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtbGV0dGVyLXNwYWNpbmciOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCx1bml0czoiZW1zIixyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC1qdXN0aWZ5Ijp7dHlwZToiZW51bSIsdmFsdWVzOnthdXRvOnt9LGxlZnQ6e30sY2VudGVyOnt9LHJpZ2h0Ont9fSxkZWZhdWx0OiJjZW50ZXIiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LXJhZGlhbC1vZmZzZXQiOnt0eXBlOiJudW1iZXIiLHVuaXRzOiJlbXMiLGRlZmF1bHQ6MCxyZXF1aXJlczpbInRleHQtZmllbGQiXSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19fSwidGV4dC12YXJpYWJsZS1hbmNob3IiOnt0eXBlOiJhcnJheSIsdmFsdWU6ImVudW0iLHZhbHVlczp7Y2VudGVyOnt9LGxlZnQ6e30scmlnaHQ6e30sdG9wOnt9LGJvdHRvbTp7fSwidG9wLWxlZnQiOnt9LCJ0b3AtcmlnaHQiOnt9LCJib3R0b20tbGVmdCI6e30sImJvdHRvbS1yaWdodCI6e319LHJlcXVpcmVzOlsidGV4dC1maWVsZCIseyJzeW1ib2wtcGxhY2VtZW50IjpbInBvaW50Il19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOntjZW50ZXI6e30sbGVmdDp7fSxyaWdodDp7fSx0b3A6e30sYm90dG9tOnt9LCJ0b3AtbGVmdCI6e30sInRvcC1yaWdodCI6e30sImJvdHRvbS1sZWZ0Ijp7fSwiYm90dG9tLXJpZ2h0Ijp7fX0sZGVmYXVsdDoiY2VudGVyIixyZXF1aXJlczpbInRleHQtZmllbGQiLHsiISI6InRleHQtdmFyaWFibGUtYW5jaG9yIn1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LW1heC1hbmdsZSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDo0NSx1bml0czoiZGVncmVlcyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIix7InN5bWJvbC1wbGFjZW1lbnQiOlsibGluZSIsImxpbmUtY2VudGVyIl19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtd3JpdGluZy1tb2RlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJlbnVtIix2YWx1ZXM6e2hvcml6b250YWw6e30sdmVydGljYWw6e319LHJlcXVpcmVzOlsidGV4dC1maWVsZCIseyJzeW1ib2wtcGxhY2VtZW50IjpbInBvaW50Il19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtcm90YXRlIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAscGVyaW9kOjM2MCx1bml0czoiZGVncmVlcyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtcGFkZGluZyI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoyLG1pbmltdW06MCx1bml0czoicGl4ZWxzIixyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQta2VlcC11cHJpZ2h0Ijp7dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMCxyZXF1aXJlczpbInRleHQtZmllbGQiLHsidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiOiJtYXAifSx7InN5bWJvbC1wbGFjZW1lbnQiOlsibGluZSIsImxpbmUtY2VudGVyIl19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtdHJhbnNmb3JtIjp7dHlwZToiZW51bSIsdmFsdWVzOntub25lOnt9LHVwcGVyY2FzZTp7fSxsb3dlcmNhc2U6e319LGRlZmF1bHQ6Im5vbmUiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LW9mZnNldCI6e3R5cGU6ImFycmF5Iix2YWx1ZToibnVtYmVyIix1bml0czoiZW1zIixsZW5ndGg6MixkZWZhdWx0OlswLDBdLHJlcXVpcmVzOlsidGV4dC1maWVsZCIseyIhIjoidGV4dC1yYWRpYWwtb2Zmc2V0In0seyIhIjoidGV4dC12YXJpYWJsZS1hbmNob3IifV0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtYWxsb3ctb3ZlcmxhcCI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITEscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnQiOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiExLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwidGV4dC1vcHRpb25hbCI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITEscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIiwiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSx2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1ZXM6e3Zpc2libGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInByb3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSxsYXlvdXRfcmFzdGVyOnt2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1ZXM6e3Zpc2libGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInByb3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSxsYXlvdXRfaGlsbHNoYWRlOnt2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1ZXM6e3Zpc2libGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInByb3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSxmaWx0ZXI6e3R5cGU6ImFycmF5Iix2YWx1ZToiKiJ9LGZpbHRlcl9vcGVyYXRvcjp7dHlwZToiZW51bSIsdmFsdWVzOnsiPT0iOnt9LCIhPSI6e30sIj4iOnt9LCI+PSI6e30sIjwiOnt9LCI8PSI6e30saW46e30sIiFpbiI6e30sYWxsOnt9LGFueTp7fSxub25lOnt9LGhhczp7fSwiIWhhcyI6e319fSxnZW9tZXRyeV90eXBlOnt0eXBlOiJlbnVtIix2YWx1ZXM6e1BvaW50Ont9LExpbmVTdHJpbmc6e30sUG9seWdvbjp7fX19LGZ1bmN0aW9uOntleHByZXNzaW9uOnt0eXBlOiJleHByZXNzaW9uIn0sc3RvcHM6e3R5cGU6ImFycmF5Iix2YWx1ZToiZnVuY3Rpb25fc3RvcCJ9LGJhc2U6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MH0scHJvcGVydHk6e3R5cGU6InN0cmluZyIsZGVmYXVsdDoiJHpvb20ifSx0eXBlOnt0eXBlOiJlbnVtIix2YWx1ZXM6e2lkZW50aXR5Ont9LGV4cG9uZW50aWFsOnt9LGludGVydmFsOnt9LGNhdGVnb3JpY2FsOnt9fSxkZWZhdWx0OiJleHBvbmVudGlhbCJ9LGNvbG9yU3BhY2U6e3R5cGU6ImVudW0iLHZhbHVlczp7cmdiOnt9LGxhYjp7fSxoY2w6e319LGRlZmF1bHQ6InJnYiJ9LGRlZmF1bHQ6e3R5cGU6IioiLHJlcXVpcmVkOiExfX0sZnVuY3Rpb25fc3RvcDp7dHlwZToiYXJyYXkiLG1pbmltdW06MCxtYXhpbXVtOjIyLHZhbHVlOlsibnVtYmVyIiwiY29sb3IiXSxsZW5ndGg6Mn0sZXhwcmVzc2lvbjp7dHlwZToiYXJyYXkiLHZhbHVlOiIqIixtaW5pbXVtOjF9LGV4cHJlc3Npb25fbmFtZTp7dHlwZToiZW51bSIsdmFsdWVzOntsZXQ6e2dyb3VwOiJWYXJpYWJsZSBiaW5kaW5nIn0sdmFyOntncm91cDoiVmFyaWFibGUgYmluZGluZyJ9LGxpdGVyYWw6e2dyb3VwOiJUeXBlcyJ9LGFycmF5Ontncm91cDoiVHlwZXMifSxhdDp7Z3JvdXA6Ikxvb2t1cCJ9LGNhc2U6e2dyb3VwOiJEZWNpc2lvbiJ9LG1hdGNoOntncm91cDoiRGVjaXNpb24ifSxjb2FsZXNjZTp7Z3JvdXA6IkRlY2lzaW9uIn0sc3RlcDp7Z3JvdXA6IlJhbXBzLCBzY2FsZXMsIGN1cnZlcyJ9LGludGVycG9sYXRlOntncm91cDoiUmFtcHMsIHNjYWxlcywgY3VydmVzIn0sImludGVycG9sYXRlLWhjbCI6e2dyb3VwOiJSYW1wcywgc2NhbGVzLCBjdXJ2ZXMifSwiaW50ZXJwb2xhdGUtbGFiIjp7Z3JvdXA6IlJhbXBzLCBzY2FsZXMsIGN1cnZlcyJ9LGxuMjp7Z3JvdXA6Ik1hdGgifSxwaTp7Z3JvdXA6Ik1hdGgifSxlOntncm91cDoiTWF0aCJ9LHR5cGVvZjp7Z3JvdXA6IlR5cGVzIn0sc3RyaW5nOntncm91cDoiVHlwZXMifSxudW1iZXI6e2dyb3VwOiJUeXBlcyJ9LGJvb2xlYW46e2dyb3VwOiJUeXBlcyJ9LG9iamVjdDp7Z3JvdXA6IlR5cGVzIn0sY29sbGF0b3I6e2dyb3VwOiJUeXBlcyJ9LGZvcm1hdDp7Z3JvdXA6IlR5cGVzIn0sIm51bWJlci1mb3JtYXQiOntncm91cDoiVHlwZXMifSwidG8tc3RyaW5nIjp7Z3JvdXA6IlR5cGVzIn0sInRvLW51bWJlciI6e2dyb3VwOiJUeXBlcyJ9LCJ0by1ib29sZWFuIjp7Z3JvdXA6IlR5cGVzIn0sInRvLXJnYmEiOntncm91cDoiQ29sb3IifSwidG8tY29sb3IiOntncm91cDoiVHlwZXMifSxyZ2I6e2dyb3VwOiJDb2xvciJ9LHJnYmE6e2dyb3VwOiJDb2xvciJ9LGdldDp7Z3JvdXA6Ikxvb2t1cCJ9LGhhczp7Z3JvdXA6Ikxvb2t1cCJ9LGxlbmd0aDp7Z3JvdXA6Ikxvb2t1cCJ9LHByb3BlcnRpZXM6e2dyb3VwOiJGZWF0dXJlIGRhdGEifSwiZmVhdHVyZS1zdGF0ZSI6e2dyb3VwOiJGZWF0dXJlIGRhdGEifSwiZ2VvbWV0cnktdHlwZSI6e2dyb3VwOiJGZWF0dXJlIGRhdGEifSxpZDp7Z3JvdXA6IkZlYXR1cmUgZGF0YSJ9LHpvb206e2dyb3VwOiJab29tIn0sImhlYXRtYXAtZGVuc2l0eSI6e2dyb3VwOiJIZWF0bWFwIn0sImxpbmUtcHJvZ3Jlc3MiOntncm91cDoiRmVhdHVyZSBkYXRhIn0sYWNjdW11bGF0ZWQ6e2dyb3VwOiJGZWF0dXJlIGRhdGEifSwiKyI6e2dyb3VwOiJNYXRoIn0sIioiOntncm91cDoiTWF0aCJ9LCItIjp7Z3JvdXA6Ik1hdGgifSwiLyI6e2dyb3VwOiJNYXRoIn0sIiUiOntncm91cDoiTWF0aCJ9LCJeIjp7Z3JvdXA6Ik1hdGgifSxzcXJ0Ontncm91cDoiTWF0aCJ9LGxvZzEwOntncm91cDoiTWF0aCJ9LGxuOntncm91cDoiTWF0aCJ9LGxvZzI6e2dyb3VwOiJNYXRoIn0sc2luOntncm91cDoiTWF0aCJ9LGNvczp7Z3JvdXA6Ik1hdGgifSx0YW46e2dyb3VwOiJNYXRoIn0sYXNpbjp7Z3JvdXA6Ik1hdGgifSxhY29zOntncm91cDoiTWF0aCJ9LGF0YW46e2dyb3VwOiJNYXRoIn0sbWluOntncm91cDoiTWF0aCJ9LG1heDp7Z3JvdXA6Ik1hdGgifSxyb3VuZDp7Z3JvdXA6Ik1hdGgifSxhYnM6e2dyb3VwOiJNYXRoIn0sY2VpbDp7Z3JvdXA6Ik1hdGgifSxmbG9vcjp7Z3JvdXA6Ik1hdGgifSwiPT0iOntncm91cDoiRGVjaXNpb24ifSwiIT0iOntncm91cDoiRGVjaXNpb24ifSwiPiI6e2dyb3VwOiJEZWNpc2lvbiJ9LCI8Ijp7Z3JvdXA6IkRlY2lzaW9uIn0sIj49Ijp7Z3JvdXA6IkRlY2lzaW9uIn0sIjw9Ijp7Z3JvdXA6IkRlY2lzaW9uIn0sYWxsOntncm91cDoiRGVjaXNpb24ifSxhbnk6e2dyb3VwOiJEZWNpc2lvbiJ9LCIhIjp7Z3JvdXA6IkRlY2lzaW9uIn0sImlzLXN1cHBvcnRlZC1zY3JpcHQiOntncm91cDoiU3RyaW5nIn0sdXBjYXNlOntncm91cDoiU3RyaW5nIn0sZG93bmNhc2U6e2dyb3VwOiJTdHJpbmcifSxjb25jYXQ6e2dyb3VwOiJTdHJpbmcifSwicmVzb2x2ZWQtbG9jYWxlIjp7Z3JvdXA6IlN0cmluZyJ9fX0sbGlnaHQ6e2FuY2hvcjp7dHlwZToiZW51bSIsZGVmYXVsdDoidmlld3BvcnQiLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQiLHRyYW5zaXRpb246ITEsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19fSxwb3NpdGlvbjp7dHlwZToiYXJyYXkiLGRlZmF1bHQ6WzEuMTUsMjEwLDMwXSxsZW5ndGg6Myx2YWx1ZToibnVtYmVyIiwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQiLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19fSxjb2xvcjp7dHlwZToiY29sb3IiLCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCIsZGVmYXVsdDoiI2ZmZmZmZiIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LHRyYW5zaXRpb246ITB9LGludGVuc2l0eTp7dHlwZToibnVtYmVyIiwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQiLGRlZmF1bHQ6LjUsbWluaW11bTowLG1heGltdW06MSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sdHJhbnNpdGlvbjohMH19LHBhaW50OlsicGFpbnRfZmlsbCIsInBhaW50X2xpbmUiLCJwYWludF9jaXJjbGUiLCJwYWludF9oZWF0bWFwIiwicGFpbnRfZmlsbC1leHRydXNpb24iLCJwYWludF9zeW1ib2wiLCJwYWludF9yYXN0ZXIiLCJwYWludF9oaWxsc2hhZGUiLCJwYWludF9iYWNrZ3JvdW5kIl0scGFpbnRfZmlsbDp7ImZpbGwtYW50aWFsaWFzIjp7dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImZpbGwtb3BhY2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImZpbGwtY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbeyIhIjoiZmlsbC1wYXR0ZXJuIn1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiZmlsbC1vdXRsaW5lLWNvbG9yIjp7dHlwZToiY29sb3IiLHRyYW5zaXRpb246ITAscmVxdWlyZXM6W3siISI6ImZpbGwtcGF0dGVybiJ9LHsiZmlsbC1hbnRpYWxpYXMiOiEwfV0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJmaWxsLXRyYW5zbGF0ZSI6e3R5cGU6ImFycmF5Iix2YWx1ZToibnVtYmVyIixsZW5ndGg6MixkZWZhdWx0OlswLDBdLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJmaWxsLXRyYW5zbGF0ZS1hbmNob3IiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e21hcDp7fSx2aWV3cG9ydDp7fX0sZGVmYXVsdDoibWFwIixyZXF1aXJlczpbImZpbGwtdHJhbnNsYXRlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJmaWxsLXBhdHRlcm4iOnt0eXBlOiJzdHJpbmciLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVuIn19LCJwYWludF9maWxsLWV4dHJ1c2lvbiI6eyJmaWxsLWV4dHJ1c2lvbi1vcGFjaXR5Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiZmlsbC1leHRydXNpb24tY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbeyIhIjoiZmlsbC1leHRydXNpb24tcGF0dGVybiJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZSI6e3R5cGU6ImFycmF5Iix2YWx1ZToibnVtYmVyIixsZW5ndGg6MixkZWZhdWx0OlswLDBdLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUtYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e319LGRlZmF1bHQ6Im1hcCIscmVxdWlyZXM6WyJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4iOnt0eXBlOiJzdHJpbmciLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVuIn0sImZpbGwtZXh0cnVzaW9uLWhlaWdodCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx1bml0czoibWV0ZXJzIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiZmlsbC1leHRydXNpb24tYmFzZSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx1bml0czoibWV0ZXJzIix0cmFuc2l0aW9uOiEwLHJlcXVpcmVzOlsiZmlsbC1leHRydXNpb24taGVpZ2h0Il0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJmaWxsLWV4dHJ1c2lvbi12ZXJ0aWNhbC1ncmFkaWVudCI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITAsdHJhbnNpdGlvbjohMSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHBhaW50X2xpbmU6eyJsaW5lLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJsaW5lLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAscmVxdWlyZXM6W3siISI6ImxpbmUtcGF0dGVybiJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImxpbmUtdHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0aDoyLGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImxpbmUtdHJhbnNsYXRlLWFuY2hvciI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxkZWZhdWx0OiJtYXAiLHJlcXVpcmVzOlsibGluZS10cmFuc2xhdGUiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImxpbmUtd2lkdGgiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImxpbmUtZ2FwLXdpZHRoIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJsaW5lLW9mZnNldCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJsaW5lLWJsdXIiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImxpbmUtZGFzaGFycmF5Ijp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJsaW5lIHdpZHRocyIscmVxdWlyZXM6W3siISI6ImxpbmUtcGF0dGVybiJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJjcm9zcy1mYWRlZCJ9LCJsaW5lLXBhdHRlcm4iOnt0eXBlOiJzdHJpbmciLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVuIn0sImxpbmUtZ3JhZGllbnQiOnt0eXBlOiJjb2xvciIsdHJhbnNpdGlvbjohMSxyZXF1aXJlczpbeyIhIjoibGluZS1kYXNoYXJyYXkifSx7IiEiOiJsaW5lLXBhdHRlcm4ifSx7c291cmNlOiJnZW9qc29uIixoYXM6e2xpbmVNZXRyaWNzOiEwfX1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsibGluZS1wcm9ncmVzcyJdfSwicHJvcGVydHktdHlwZSI6ImNvbG9yLXJhbXAifX0scGFpbnRfY2lyY2xlOnsiY2lyY2xlLXJhZGl1cyI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDo1LG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiY2lyY2xlLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJjaXJjbGUtYmx1ciI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJjaXJjbGUtb3BhY2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImNpcmNsZS10cmFuc2xhdGUiOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjIsZGVmYXVsdDpbMCwwXSx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiY2lyY2xlLXRyYW5zbGF0ZS1hbmNob3IiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e21hcDp7fSx2aWV3cG9ydDp7fX0sZGVmYXVsdDoibWFwIixyZXF1aXJlczpbImNpcmNsZS10cmFuc2xhdGUiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImNpcmNsZS1waXRjaC1zY2FsZSI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxkZWZhdWx0OiJtYXAiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiY2lyY2xlLXBpdGNoLWFsaWdubWVudCI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxkZWZhdWx0OiJ2aWV3cG9ydCIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJjaXJjbGUtc3Ryb2tlLXdpZHRoIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJjaXJjbGUtc3Ryb2tlLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJjaXJjbGUtc3Ryb2tlLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9fSxwYWludF9oZWF0bWFwOnsiaGVhdG1hcC1yYWRpdXMiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MzAsbWluaW11bToxLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJoZWF0bWFwLXdlaWdodCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCx0cmFuc2l0aW9uOiExLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiaGVhdG1hcC1pbnRlbnNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImhlYXRtYXAtY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDpbImludGVycG9sYXRlIixbImxpbmVhciJdLFsiaGVhdG1hcC1kZW5zaXR5Il0sMCwicmdiYSgwLCAwLCAyNTUsIDApIiwuMSwicm95YWxibHVlIiwuMywiY3lhbiIsLjUsImxpbWUiLC43LCJ5ZWxsb3ciLDEsInJlZCJdLHRyYW5zaXRpb246ITEsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJoZWF0bWFwLWRlbnNpdHkiXX0sInByb3BlcnR5LXR5cGUiOiJjb2xvci1yYW1wIn0sImhlYXRtYXAtb3BhY2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHBhaW50X3N5bWJvbDp7Imljb24tb3BhY2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24taGFsby1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiJyZ2JhKDAsIDAsIDAsIDApIix0cmFuc2l0aW9uOiEwLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiaWNvbi1oYWxvLXdpZHRoIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJpY29uLWhhbG8tYmx1ciI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiaWNvbi10cmFuc2xhdGUiOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjIsZGVmYXVsdDpbMCwwXSx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaWNvbi10cmFuc2xhdGUtYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e319LGRlZmF1bHQ6Im1hcCIscmVxdWlyZXM6WyJpY29uLWltYWdlIiwiaWNvbi10cmFuc2xhdGUiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtb3BhY2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJhbnNpdGlvbjohMCxvdmVycmlkYWJsZTohMCxyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtaGFsby1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiJyZ2JhKDAsIDAsIDAsIDApIix0cmFuc2l0aW9uOiEwLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC1oYWxvLXdpZHRoIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWhhbG8tYmx1ciI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC10cmFuc2xhdGUiOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjIsZGVmYXVsdDpbMCwwXSx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwidGV4dC10cmFuc2xhdGUtYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e319LGRlZmF1bHQ6Im1hcCIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIiwidGV4dC10cmFuc2xhdGUiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHBhaW50X3Jhc3Rlcjp7InJhc3Rlci1vcGFjaXR5Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwicmFzdGVyLWh1ZS1yb3RhdGUiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCxwZXJpb2Q6MzYwLHRyYW5zaXRpb246ITAsdW5pdHM6ImRlZ3JlZXMiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwicmFzdGVyLWJyaWdodG5lc3MtbWluIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTowLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwicmFzdGVyLWJyaWdodG5lc3MtbWF4Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwicmFzdGVyLXNhdHVyYXRpb24iOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCxtaW5pbXVtOi0xLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwicmFzdGVyLWNvbnRyYXN0Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTotMSxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1yZXNhbXBsaW5nIjp7dHlwZToiZW51bSIsdmFsdWVzOntsaW5lYXI6e30sbmVhcmVzdDp7fX0sZGVmYXVsdDoibGluZWFyIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1mYWRlLWR1cmF0aW9uIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjMwMCxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMSx1bml0czoibWlsbGlzZWNvbmRzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHBhaW50X2hpbGxzaGFkZTp7ImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9uIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjMzNSxtaW5pbXVtOjAsbWF4aW11bTozNTksdHJhbnNpdGlvbjohMSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImhpbGxzaGFkZS1pbGx1bWluYXRpb24tYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e319LGRlZmF1bHQ6InZpZXdwb3J0IixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImhpbGxzaGFkZS1leGFnZ2VyYXRpb24iOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6LjUsbWluaW11bTowLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaGlsbHNoYWRlLXNoYWRvdy1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaGlsbHNoYWRlLWhpZ2hsaWdodC1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiIjRkZGRkZGIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaGlsbHNoYWRlLWFjY2VudC1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifX0scGFpbnRfYmFja2dyb3VuZDp7ImJhY2tncm91bmQtY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbeyIhIjoiYmFja2dyb3VuZC1wYXR0ZXJuIn1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiYmFja2dyb3VuZC1wYXR0ZXJuIjp7dHlwZToic3RyaW5nIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImNyb3NzLWZhZGVkIn0sImJhY2tncm91bmQtb3BhY2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHRyYW5zaXRpb246e2R1cmF0aW9uOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MzAwLG1pbmltdW06MCx1bml0czoibWlsbGlzZWNvbmRzIn0sZGVsYXk6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx1bml0czoibWlsbGlzZWNvbmRzIn19LCJwcm9wZXJ0eS10eXBlIjp7ImRhdGEtZHJpdmVuIjp7dHlwZToicHJvcGVydHktdHlwZSJ9LCJjcm9zcy1mYWRlZCI6e3R5cGU6InByb3BlcnR5LXR5cGUifSwiY3Jvc3MtZmFkZWQtZGF0YS1kcml2ZW4iOnt0eXBlOiJwcm9wZXJ0eS10eXBlIn0sImNvbG9yLXJhbXAiOnt0eXBlOiJwcm9wZXJ0eS10eXBlIn0sImRhdGEtY29uc3RhbnQiOnt0eXBlOiJwcm9wZXJ0eS10eXBlIn0sY29uc3RhbnQ6e3R5cGU6InByb3BlcnR5LXR5cGUifX19LE10PWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMubWVzc2FnZT0odD90KyI6ICI6IiIpK3IsbiYmKHRoaXMuaWRlbnRpZmllcj1uKSxudWxsIT1lJiZlLl9fbGluZV9fJiYodGhpcy5saW5lPWUuX19saW5lX18pfTtmdW5jdGlvbiBBdCh0KXt2YXIgZT10LmtleSxyPXQudmFsdWU7cmV0dXJuIHI/W25ldyBNdChlLHIsImNvbnN0YW50cyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBhcyBvZiB2OCIpXTpbXX1mdW5jdGlvbiBTdCh0KXtmb3IodmFyIGU9W10scj1hcmd1bWVudHMubGVuZ3RoLTE7ci0tID4wOyllW3JdPWFyZ3VtZW50c1tyKzFdO2Zvcih2YXIgbj0wLGE9ZTtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl07Zm9yKHZhciBvIGluIGkpdFtvXT1pW29dfXJldHVybiB0fWZ1bmN0aW9uIEV0KHQpe3JldHVybiB0IGluc3RhbmNlb2YgTnVtYmVyfHx0IGluc3RhbmNlb2YgU3RyaW5nfHx0IGluc3RhbmNlb2YgQm9vbGVhbn1mdW5jdGlvbiBMdCh0KXtyZXR1cm4gRXQodCk/dC52YWx1ZU9mKCk6dH1mdW5jdGlvbiBDdCh0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0Lm1hcChDdCk7aWYodCBpbnN0YW5jZW9mIE9iamVjdCYmIUV0KHQpKXt2YXIgZT17fTtmb3IodmFyIHIgaW4gdCllW3JdPUN0KHRbcl0pO3JldHVybiBlfXJldHVybiBMdCh0KX12YXIgUHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLHIpLHRoaXMubWVzc2FnZT1yLHRoaXMua2V5PWV9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGV9KEVycm9yKSxPdD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPVtdKSx0aGlzLnBhcmVudD10LHRoaXMuYmluZGluZ3M9e307Zm9yKHZhciByPTAsbj1lO3I8bi5sZW5ndGg7cis9MSl7dmFyIGE9bltyXSxpPWFbMF0sbz1hWzFdO3RoaXMuYmluZGluZ3NbaV09b319O090LnByb3RvdHlwZS5jb25jYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBPdCh0aGlzLHQpfSxPdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKHRoaXMuYmluZGluZ3NbdF0pcmV0dXJuIHRoaXMuYmluZGluZ3NbdF07aWYodGhpcy5wYXJlbnQpcmV0dXJuIHRoaXMucGFyZW50LmdldCh0KTt0aHJvdyBuZXcgRXJyb3IodCsiIG5vdCBmb3VuZCBpbiBzY29wZS4iKX0sT3QucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4hIXRoaXMuYmluZGluZ3NbdF18fCEhdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50Lmhhcyh0KX07dmFyIHp0PXtraW5kOiJudWxsIn0sSXQ9e2tpbmQ6Im51bWJlciJ9LER0PXtraW5kOiJzdHJpbmcifSxSdD17a2luZDoiYm9vbGVhbiJ9LEZ0PXtraW5kOiJjb2xvciJ9LEJ0PXtraW5kOiJvYmplY3QifSxOdD17a2luZDoidmFsdWUifSxqdD17a2luZDoiY29sbGF0b3IifSxWdD17a2luZDoiZm9ybWF0dGVkIn07ZnVuY3Rpb24gVXQodCxlKXtyZXR1cm57a2luZDoiYXJyYXkiLGl0ZW1UeXBlOnQsTjplfX1mdW5jdGlvbiBxdCh0KXtpZigiYXJyYXkiPT09dC5raW5kKXt2YXIgZT1xdCh0Lml0ZW1UeXBlKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQuTj8iYXJyYXk8IitlKyIsICIrdC5OKyI+IjoidmFsdWUiPT09dC5pdGVtVHlwZS5raW5kPyJhcnJheSI6ImFycmF5PCIrZSsiPiJ9cmV0dXJuIHQua2luZH12YXIgSHQ9W3p0LEl0LER0LFJ0LEZ0LFZ0LEJ0LFV0KE50KV07ZnVuY3Rpb24gR3QodCxlKXtpZigiZXJyb3IiPT09ZS5raW5kKXJldHVybiBudWxsO2lmKCJhcnJheSI9PT10LmtpbmQpe2lmKCJhcnJheSI9PT1lLmtpbmQmJigwPT09ZS5OJiYidmFsdWUiPT09ZS5pdGVtVHlwZS5raW5kfHwhR3QodC5pdGVtVHlwZSxlLml0ZW1UeXBlKSkmJigibnVtYmVyIiE9dHlwZW9mIHQuTnx8dC5OPT09ZS5OKSlyZXR1cm4gbnVsbH1lbHNle2lmKHQua2luZD09PWUua2luZClyZXR1cm4gbnVsbDtpZigidmFsdWUiPT09dC5raW5kKWZvcih2YXIgcj0wLG49SHQ7cjxuLmxlbmd0aDtyKz0xKWlmKCFHdChuW3JdLGUpKXJldHVybiBudWxsfXJldHVybiJFeHBlY3RlZCAiK3F0KHQpKyIgYnV0IGZvdW5kICIrcXQoZSkrIiBpbnN0ZWFkLiJ9dmFyIFl0PWUoZnVuY3Rpb24odCxlKXt2YXIgcj17dHJhbnNwYXJlbnQ6WzAsMCwwLDBdLGFsaWNlYmx1ZTpbMjQwLDI0OCwyNTUsMV0sYW50aXF1ZXdoaXRlOlsyNTAsMjM1LDIxNSwxXSxhcXVhOlswLDI1NSwyNTUsMV0sYXF1YW1hcmluZTpbMTI3LDI1NSwyMTIsMV0sYXp1cmU6WzI0MCwyNTUsMjU1LDFdLGJlaWdlOlsyNDUsMjQ1LDIyMCwxXSxiaXNxdWU6WzI1NSwyMjgsMTk2LDFdLGJsYWNrOlswLDAsMCwxXSxibGFuY2hlZGFsbW9uZDpbMjU1LDIzNSwyMDUsMV0sYmx1ZTpbMCwwLDI1NSwxXSxibHVldmlvbGV0OlsxMzgsNDMsMjI2LDFdLGJyb3duOlsxNjUsNDIsNDIsMV0sYnVybHl3b29kOlsyMjIsMTg0LDEzNSwxXSxjYWRldGJsdWU6Wzk1LDE1OCwxNjAsMV0sY2hhcnRyZXVzZTpbMTI3LDI1NSwwLDFdLGNob2NvbGF0ZTpbMjEwLDEwNSwzMCwxXSxjb3JhbDpbMjU1LDEyNyw4MCwxXSxjb3JuZmxvd2VyYmx1ZTpbMTAwLDE0OSwyMzcsMV0sY29ybnNpbGs6WzI1NSwyNDgsMjIwLDFdLGNyaW1zb246WzIyMCwyMCw2MCwxXSxjeWFuOlswLDI1NSwyNTUsMV0sZGFya2JsdWU6WzAsMCwxMzksMV0sZGFya2N5YW46WzAsMTM5LDEzOSwxXSxkYXJrZ29sZGVucm9kOlsxODQsMTM0LDExLDFdLGRhcmtncmF5OlsxNjksMTY5LDE2OSwxXSxkYXJrZ3JlZW46WzAsMTAwLDAsMV0sZGFya2dyZXk6WzE2OSwxNjksMTY5LDFdLGRhcmtraGFraTpbMTg5LDE4MywxMDcsMV0sZGFya21hZ2VudGE6WzEzOSwwLDEzOSwxXSxkYXJrb2xpdmVncmVlbjpbODUsMTA3LDQ3LDFdLGRhcmtvcmFuZ2U6WzI1NSwxNDAsMCwxXSxkYXJrb3JjaGlkOlsxNTMsNTAsMjA0LDFdLGRhcmtyZWQ6WzEzOSwwLDAsMV0sZGFya3NhbG1vbjpbMjMzLDE1MCwxMjIsMV0sZGFya3NlYWdyZWVuOlsxNDMsMTg4LDE0MywxXSxkYXJrc2xhdGVibHVlOls3Miw2MSwxMzksMV0sZGFya3NsYXRlZ3JheTpbNDcsNzksNzksMV0sZGFya3NsYXRlZ3JleTpbNDcsNzksNzksMV0sZGFya3R1cnF1b2lzZTpbMCwyMDYsMjA5LDFdLGRhcmt2aW9sZXQ6WzE0OCwwLDIxMSwxXSxkZWVwcGluazpbMjU1LDIwLDE0NywxXSxkZWVwc2t5Ymx1ZTpbMCwxOTEsMjU1LDFdLGRpbWdyYXk6WzEwNSwxMDUsMTA1LDFdLGRpbWdyZXk6WzEwNSwxMDUsMTA1LDFdLGRvZGdlcmJsdWU6WzMwLDE0NCwyNTUsMV0sZmlyZWJyaWNrOlsxNzgsMzQsMzQsMV0sZmxvcmFsd2hpdGU6WzI1NSwyNTAsMjQwLDFdLGZvcmVzdGdyZWVuOlszNCwxMzksMzQsMV0sZnVjaHNpYTpbMjU1LDAsMjU1LDFdLGdhaW5zYm9ybzpbMjIwLDIyMCwyMjAsMV0sZ2hvc3R3aGl0ZTpbMjQ4LDI0OCwyNTUsMV0sZ29sZDpbMjU1LDIxNSwwLDFdLGdvbGRlbnJvZDpbMjE4LDE2NSwzMiwxXSxncmF5OlsxMjgsMTI4LDEyOCwxXSxncmVlbjpbMCwxMjgsMCwxXSxncmVlbnllbGxvdzpbMTczLDI1NSw0NywxXSxncmV5OlsxMjgsMTI4LDEyOCwxXSxob25leWRldzpbMjQwLDI1NSwyNDAsMV0saG90cGluazpbMjU1LDEwNSwxODAsMV0saW5kaWFucmVkOlsyMDUsOTIsOTIsMV0saW5kaWdvOls3NSwwLDEzMCwxXSxpdm9yeTpbMjU1LDI1NSwyNDAsMV0sa2hha2k6WzI0MCwyMzAsMTQwLDFdLGxhdmVuZGVyOlsyMzAsMjMwLDI1MCwxXSxsYXZlbmRlcmJsdXNoOlsyNTUsMjQwLDI0NSwxXSxsYXduZ3JlZW46WzEyNCwyNTIsMCwxXSxsZW1vbmNoaWZmb246WzI1NSwyNTAsMjA1LDFdLGxpZ2h0Ymx1ZTpbMTczLDIxNiwyMzAsMV0sbGlnaHRjb3JhbDpbMjQwLDEyOCwxMjgsMV0sbGlnaHRjeWFuOlsyMjQsMjU1LDI1NSwxXSxsaWdodGdvbGRlbnJvZHllbGxvdzpbMjUwLDI1MCwyMTAsMV0sbGlnaHRncmF5OlsyMTEsMjExLDIxMSwxXSxsaWdodGdyZWVuOlsxNDQsMjM4LDE0NCwxXSxsaWdodGdyZXk6WzIxMSwyMTEsMjExLDFdLGxpZ2h0cGluazpbMjU1LDE4MiwxOTMsMV0sbGlnaHRzYWxtb246WzI1NSwxNjAsMTIyLDFdLGxpZ2h0c2VhZ3JlZW46WzMyLDE3OCwxNzAsMV0sbGlnaHRza3libHVlOlsxMzUsMjA2LDI1MCwxXSxsaWdodHNsYXRlZ3JheTpbMTE5LDEzNiwxNTMsMV0sbGlnaHRzbGF0ZWdyZXk6WzExOSwxMzYsMTUzLDFdLGxpZ2h0c3RlZWxibHVlOlsxNzYsMTk2LDIyMiwxXSxsaWdodHllbGxvdzpbMjU1LDI1NSwyMjQsMV0sbGltZTpbMCwyNTUsMCwxXSxsaW1lZ3JlZW46WzUwLDIwNSw1MCwxXSxsaW5lbjpbMjUwLDI0MCwyMzAsMV0sbWFnZW50YTpbMjU1LDAsMjU1LDFdLG1hcm9vbjpbMTI4LDAsMCwxXSxtZWRpdW1hcXVhbWFyaW5lOlsxMDIsMjA1LDE3MCwxXSxtZWRpdW1ibHVlOlswLDAsMjA1LDFdLG1lZGl1bW9yY2hpZDpbMTg2LDg1LDIxMSwxXSxtZWRpdW1wdXJwbGU6WzE0NywxMTIsMjE5LDFdLG1lZGl1bXNlYWdyZWVuOls2MCwxNzksMTEzLDFdLG1lZGl1bXNsYXRlYmx1ZTpbMTIzLDEwNCwyMzgsMV0sbWVkaXVtc3ByaW5nZ3JlZW46WzAsMjUwLDE1NCwxXSxtZWRpdW10dXJxdW9pc2U6WzcyLDIwOSwyMDQsMV0sbWVkaXVtdmlvbGV0cmVkOlsxOTksMjEsMTMzLDFdLG1pZG5pZ2h0Ymx1ZTpbMjUsMjUsMTEyLDFdLG1pbnRjcmVhbTpbMjQ1LDI1NSwyNTAsMV0sbWlzdHlyb3NlOlsyNTUsMjI4LDIyNSwxXSxtb2NjYXNpbjpbMjU1LDIyOCwxODEsMV0sbmF2YWpvd2hpdGU6WzI1NSwyMjIsMTczLDFdLG5hdnk6WzAsMCwxMjgsMV0sb2xkbGFjZTpbMjUzLDI0NSwyMzAsMV0sb2xpdmU6WzEyOCwxMjgsMCwxXSxvbGl2ZWRyYWI6WzEwNywxNDIsMzUsMV0sb3JhbmdlOlsyNTUsMTY1LDAsMV0sb3JhbmdlcmVkOlsyNTUsNjksMCwxXSxvcmNoaWQ6WzIxOCwxMTIsMjE0LDFdLHBhbGVnb2xkZW5yb2Q6WzIzOCwyMzIsMTcwLDFdLHBhbGVncmVlbjpbMTUyLDI1MSwxNTIsMV0scGFsZXR1cnF1b2lzZTpbMTc1LDIzOCwyMzgsMV0scGFsZXZpb2xldHJlZDpbMjE5LDExMiwxNDcsMV0scGFwYXlhd2hpcDpbMjU1LDIzOSwyMTMsMV0scGVhY2hwdWZmOlsyNTUsMjE4LDE4NSwxXSxwZXJ1OlsyMDUsMTMzLDYzLDFdLHBpbms6WzI1NSwxOTIsMjAzLDFdLHBsdW06WzIyMSwxNjAsMjIxLDFdLHBvd2RlcmJsdWU6WzE3NiwyMjQsMjMwLDFdLHB1cnBsZTpbMTI4LDAsMTI4LDFdLHJlYmVjY2FwdXJwbGU6WzEwMiw1MSwxNTMsMV0scmVkOlsyNTUsMCwwLDFdLHJvc3licm93bjpbMTg4LDE0MywxNDMsMV0scm95YWxibHVlOls2NSwxMDUsMjI1LDFdLHNhZGRsZWJyb3duOlsxMzksNjksMTksMV0sc2FsbW9uOlsyNTAsMTI4LDExNCwxXSxzYW5keWJyb3duOlsyNDQsMTY0LDk2LDFdLHNlYWdyZWVuOls0NiwxMzksODcsMV0sc2Vhc2hlbGw6WzI1NSwyNDUsMjM4LDFdLHNpZW5uYTpbMTYwLDgyLDQ1LDFdLHNpbHZlcjpbMTkyLDE5MiwxOTIsMV0sc2t5Ymx1ZTpbMTM1LDIwNiwyMzUsMV0sc2xhdGVibHVlOlsxMDYsOTAsMjA1LDFdLHNsYXRlZ3JheTpbMTEyLDEyOCwxNDQsMV0sc2xhdGVncmV5OlsxMTIsMTI4LDE0NCwxXSxzbm93OlsyNTUsMjUwLDI1MCwxXSxzcHJpbmdncmVlbjpbMCwyNTUsMTI3LDFdLHN0ZWVsYmx1ZTpbNzAsMTMwLDE4MCwxXSx0YW46WzIxMCwxODAsMTQwLDFdLHRlYWw6WzAsMTI4LDEyOCwxXSx0aGlzdGxlOlsyMTYsMTkxLDIxNiwxXSx0b21hdG86WzI1NSw5OSw3MSwxXSx0dXJxdW9pc2U6WzY0LDIyNCwyMDgsMV0sdmlvbGV0OlsyMzgsMTMwLDIzOCwxXSx3aGVhdDpbMjQ1LDIyMiwxNzksMV0sd2hpdGU6WzI1NSwyNTUsMjU1LDFdLHdoaXRlc21va2U6WzI0NSwyNDUsMjQ1LDFdLHllbGxvdzpbMjU1LDI1NSwwLDFdLHllbGxvd2dyZWVuOlsxNTQsMjA1LDUwLDFdfTtmdW5jdGlvbiBuKHQpe3JldHVybih0PU1hdGgucm91bmQodCkpPDA/MDp0PjI1NT8yNTU6dH1mdW5jdGlvbiBhKHQpe3JldHVybiB0PDA/MDp0PjE/MTp0fWZ1bmN0aW9uIGkodCl7cmV0dXJuIiUiPT09dFt0Lmxlbmd0aC0xXT9uKHBhcnNlRmxvYXQodCkvMTAwKjI1NSk6bihwYXJzZUludCh0KSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4iJSI9PT10W3QubGVuZ3RoLTFdP2EocGFyc2VGbG9hdCh0KS8xMDApOmEocGFyc2VGbG9hdCh0KSl9ZnVuY3Rpb24gcyh0LGUscil7cmV0dXJuIHI8MD9yKz0xOnI+MSYmKHItPTEpLDYqcjwxP3QrKGUtdCkqcio2OjIqcjwxP2U6MypyPDI/dCsoZS10KSooMi8zLXIpKjY6dH10cnl7ZS5wYXJzZUNTU0NvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlLGE9dC5yZXBsYWNlKC8gL2csIiIpLnRvTG93ZXJDYXNlKCk7aWYoYSBpbiByKXJldHVybiByW2FdLnNsaWNlKCk7aWYoIiMiPT09YVswXSlyZXR1cm4gND09PWEubGVuZ3RoPyhlPXBhcnNlSW50KGEuc3Vic3RyKDEpLDE2KSk+PTAmJmU8PTQwOTU/WygzODQwJmUpPj40fCgzODQwJmUpPj44LDI0MCZlfCgyNDAmZSk+PjQsMTUmZXwoMTUmZSk8PDQsMV06bnVsbDo3PT09YS5sZW5ndGgmJihlPXBhcnNlSW50KGEuc3Vic3RyKDEpLDE2KSk+PTAmJmU8PTE2Nzc3MjE1P1soMTY3MTE2ODAmZSk+PjE2LCg2NTI4MCZlKT4+OCwyNTUmZSwxXTpudWxsO3ZhciBsPWEuaW5kZXhPZigiKCIpLGM9YS5pbmRleE9mKCIpIik7aWYoLTEhPT1sJiZjKzE9PT1hLmxlbmd0aCl7dmFyIHU9YS5zdWJzdHIoMCxsKSxoPWEuc3Vic3RyKGwrMSxjLShsKzEpKS5zcGxpdCgiLCIpLGY9MTtzd2l0Y2godSl7Y2FzZSJyZ2JhIjppZig0IT09aC5sZW5ndGgpcmV0dXJuIG51bGw7Zj1vKGgucG9wKCkpO2Nhc2UicmdiIjpyZXR1cm4gMyE9PWgubGVuZ3RoP251bGw6W2koaFswXSksaShoWzFdKSxpKGhbMl0pLGZdO2Nhc2UiaHNsYSI6aWYoNCE9PWgubGVuZ3RoKXJldHVybiBudWxsO2Y9byhoLnBvcCgpKTtjYXNlImhzbCI6aWYoMyE9PWgubGVuZ3RoKXJldHVybiBudWxsO3ZhciBwPShwYXJzZUZsb2F0KGhbMF0pJTM2MCszNjApJTM2MC8zNjAsZD1vKGhbMV0pLGc9byhoWzJdKSx2PWc8PS41P2cqKGQrMSk6ZytkLWcqZCxtPTIqZy12O3JldHVybltuKDI1NSpzKG0sdixwKzEvMykpLG4oMjU1KnMobSx2LHApKSxuKDI1NSpzKG0sdixwLTEvMykpLGZdO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXJldHVybiBudWxsfX1jYXRjaCh0KXt9fSkucGFyc2VDU1NDb2xvcixXdD1mdW5jdGlvbih0LGUscixuKXt2b2lkIDA9PT1uJiYobj0xKSx0aGlzLnI9dCx0aGlzLmc9ZSx0aGlzLmI9cix0aGlzLmE9bn07V3QucGFyc2U9ZnVuY3Rpb24odCl7aWYodCl7aWYodCBpbnN0YW5jZW9mIFd0KXJldHVybiB0O2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGU9WXQodCk7aWYoZSlyZXR1cm4gbmV3IFd0KGVbMF0vMjU1KmVbM10sZVsxXS8yNTUqZVszXSxlWzJdLzI1NSplWzNdLGVbM10pfX19LFd0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMudG9BcnJheSgpLGU9dFswXSxyPXRbMV0sbj10WzJdLGE9dFszXTtyZXR1cm4icmdiYSgiK01hdGgucm91bmQoZSkrIiwiK01hdGgucm91bmQocikrIiwiK01hdGgucm91bmQobikrIiwiK2ErIikifSxXdC5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3ZhciB0PXRoaXMucixlPXRoaXMuZyxyPXRoaXMuYixuPXRoaXMuYTtyZXR1cm4gMD09PW4/WzAsMCwwLDBdOlsyNTUqdC9uLDI1NSplL24sMjU1KnIvbixuXX0sV3QuYmxhY2s9bmV3IFd0KDAsMCwwLDEpLFd0LndoaXRlPW5ldyBXdCgxLDEsMSwxKSxXdC50cmFuc3BhcmVudD1uZXcgV3QoMCwwLDAsMCksV3QucmVkPW5ldyBXdCgxLDAsMCwxKTt2YXIgWHQ9ZnVuY3Rpb24odCxlLHIpe3RoaXMuc2Vuc2l0aXZpdHk9dD9lPyJ2YXJpYW50IjoiY2FzZSI6ZT8iYWNjZW50IjoiYmFzZSIsdGhpcy5sb2NhbGU9cix0aGlzLmNvbGxhdG9yPW5ldyBJbnRsLkNvbGxhdG9yKHRoaXMubG9jYWxlP3RoaXMubG9jYWxlOltdLHtzZW5zaXRpdml0eTp0aGlzLnNlbnNpdGl2aXR5LHVzYWdlOiJzZWFyY2gifSl9O1h0LnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY29sbGF0b3IuY29tcGFyZSh0LGUpfSxYdC5wcm90b3R5cGUucmVzb2x2ZWRMb2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEludGwuQ29sbGF0b3IodGhpcy5sb2NhbGU/dGhpcy5sb2NhbGU6W10pLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZX07dmFyIFp0PWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMudGV4dD10LHRoaXMuc2NhbGU9ZSx0aGlzLmZvbnRTdGFjaz1yLHRoaXMudGV4dENvbG9yPW59LEp0PWZ1bmN0aW9uKHQpe3RoaXMuc2VjdGlvbnM9dH07ZnVuY3Rpb24gS3QodCxlLHIsbil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wJiZ0PD0yNTUmJiJudW1iZXIiPT10eXBlb2YgZSYmZT49MCYmZTw9MjU1JiYibnVtYmVyIj09dHlwZW9mIHImJnI+PTAmJnI8PTI1NT92b2lkIDA9PT1ufHwibnVtYmVyIj09dHlwZW9mIG4mJm4+PTAmJm48PTE/bnVsbDoiSW52YWxpZCByZ2JhIHZhbHVlIFsiK1t0LGUscixuXS5qb2luKCIsICIpKyJdOiAnYScgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEuIjoiSW52YWxpZCByZ2JhIHZhbHVlIFsiKygibnVtYmVyIj09dHlwZW9mIG4/W3QsZSxyLG5dOlt0LGUscl0pLmpvaW4oIiwgIikrIl06ICdyJywgJ2cnLCBhbmQgJ2InIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUuIn1mdW5jdGlvbiBRdCh0KXtpZihudWxsPT09dClyZXR1cm4genQ7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBEdDtpZigiYm9vbGVhbiI9PXR5cGVvZiB0KXJldHVybiBSdDtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIEl0O2lmKHQgaW5zdGFuY2VvZiBXdClyZXR1cm4gRnQ7aWYodCBpbnN0YW5jZW9mIFh0KXJldHVybiBqdDtpZih0IGluc3RhbmNlb2YgSnQpcmV0dXJuIFZ0O2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgZSxyPXQubGVuZ3RoLG49MCxhPXQ7bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1RdChhW25dKTtpZihlKXtpZihlPT09aSljb250aW51ZTtlPU50O2JyZWFrfWU9aX1yZXR1cm4gVXQoZXx8TnQscil9cmV0dXJuIEJ0fWZ1bmN0aW9uICR0KHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsPT09dD8iIjoic3RyaW5nIj09PWV8fCJudW1iZXIiPT09ZXx8ImJvb2xlYW4iPT09ZT9TdHJpbmcodCk6dCBpbnN0YW5jZW9mIFd0fHx0IGluc3RhbmNlb2YgSnQ/dC50b1N0cmluZygpOkpTT04uc3RyaW5naWZ5KHQpfUp0LmZyb21TdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBKdChbbmV3IFp0KHQsbnVsbCxudWxsLG51bGwpXSl9LEp0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlY3Rpb25zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0fSkuam9pbigiIil9LEp0LnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9WyJmb3JtYXQiXSxlPTAscj10aGlzLnNlY3Rpb25zO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXTt0LnB1c2gobi50ZXh0KTt2YXIgYT17fTtuLmZvbnRTdGFjayYmKGFbInRleHQtZm9udCJdPVsibGl0ZXJhbCIsbi5mb250U3RhY2suc3BsaXQoIiwiKV0pLG4uc2NhbGUmJihhWyJmb250LXNjYWxlIl09bi5zY2FsZSksbi50ZXh0Q29sb3ImJihhWyJ0ZXh0LWNvbG9yIl09WyJyZ2JhIl0uY29uY2F0KG4udGV4dENvbG9yLnRvQXJyYXkoKSkpLHQucHVzaChhKX1yZXR1cm4gdH07dmFyIHRlPWZ1bmN0aW9uKHQsZSl7dGhpcy50eXBlPXQsdGhpcy52YWx1ZT1lfTt0ZS5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKDIhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcigiJ2xpdGVyYWwnIGV4cHJlc3Npb24gcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIGJ1dCBmb3VuZCAiKyh0Lmxlbmd0aC0xKSsiIGluc3RlYWQuIik7aWYoIWZ1bmN0aW9uIHQoZSl7aWYobnVsbD09PWUpcmV0dXJuITA7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiEwO2lmKCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuITA7aWYoIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiEwO2lmKGUgaW5zdGFuY2VvZiBXdClyZXR1cm4hMDtpZihlIGluc3RhbmNlb2YgWHQpcmV0dXJuITA7aWYoZSBpbnN0YW5jZW9mIEp0KXJldHVybiEwO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wLG49ZTtyPG4ubGVuZ3RoO3IrPTEpaWYoIXQobltyXSkpcmV0dXJuITE7cmV0dXJuITB9aWYoIm9iamVjdCI9PXR5cGVvZiBlKXtmb3IodmFyIGEgaW4gZSlpZighdChlW2FdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX0odFsxXSkpcmV0dXJuIGUuZXJyb3IoImludmFsaWQgdmFsdWUiKTt2YXIgcj10WzFdLG49UXQociksYT1lLmV4cGVjdGVkVHlwZTtyZXR1cm4iYXJyYXkiIT09bi5raW5kfHwwIT09bi5OfHwhYXx8ImFycmF5IiE9PWEua2luZHx8Im51bWJlciI9PXR5cGVvZiBhLk4mJjAhPT1hLk58fChuPWEpLG5ldyB0ZShuLHIpfSx0ZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sdGUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbigpe30sdGUucHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3JldHVyblt0aGlzLnZhbHVlXX0sdGUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiJhcnJheSI9PT10aGlzLnR5cGUua2luZHx8Im9iamVjdCI9PT10aGlzLnR5cGUua2luZD9bImxpdGVyYWwiLHRoaXMudmFsdWVdOnRoaXMudmFsdWUgaW5zdGFuY2VvZiBXdD9bInJnYmEiXS5jb25jYXQodGhpcy52YWx1ZS50b0FycmF5KCkpOnRoaXMudmFsdWUgaW5zdGFuY2VvZiBKdD90aGlzLnZhbHVlLnNlcmlhbGl6ZSgpOnRoaXMudmFsdWV9O3ZhciBlZT1mdW5jdGlvbih0KXt0aGlzLm5hbWU9IkV4cHJlc3Npb25FdmFsdWF0aW9uRXJyb3IiLHRoaXMubWVzc2FnZT10fTtlZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZX07dmFyIHJlPXtzdHJpbmc6RHQsbnVtYmVyOkl0LGJvb2xlYW46UnQsb2JqZWN0OkJ0fSxuZT1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT10LHRoaXMuYXJncz1lfTtuZS5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDIpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKTt2YXIgcixuPTEsYT10WzBdO2lmKCJhcnJheSI9PT1hKXt2YXIgaSxvO2lmKHQubGVuZ3RoPjIpe3ZhciBzPXRbMV07aWYoInN0cmluZyIhPXR5cGVvZiBzfHwhKHMgaW4gcmUpfHwib2JqZWN0Ij09PXMpcmV0dXJuIGUuZXJyb3IoJ1RoZSBpdGVtIHR5cGUgYXJndW1lbnQgb2YgImFycmF5IiBtdXN0IGJlIG9uZSBvZiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbicsMSk7aT1yZVtzXSxuKyt9ZWxzZSBpPU50O2lmKHQubGVuZ3RoPjMpe2lmKG51bGwhPT10WzJdJiYoIm51bWJlciIhPXR5cGVvZiB0WzJdfHx0WzJdPDB8fHRbMl0hPT1NYXRoLmZsb29yKHRbMl0pKSlyZXR1cm4gZS5lcnJvcignVGhlIGxlbmd0aCBhcmd1bWVudCB0byAiYXJyYXkiIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGxpdGVyYWwnLDIpO289dFsyXSxuKyt9cj1VdChpLG8pfWVsc2Ugcj1yZVthXTtmb3IodmFyIGw9W107bjx0Lmxlbmd0aDtuKyspe3ZhciBjPWUucGFyc2UodFtuXSxuLE50KTtpZighYylyZXR1cm4gbnVsbDtsLnB1c2goYyl9cmV0dXJuIG5ldyBuZShyLGwpfSxuZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmFyZ3MubGVuZ3RoO2UrKyl7dmFyIHI9dGhpcy5hcmdzW2VdLmV2YWx1YXRlKHQpO2lmKCFHdCh0aGlzLnR5cGUsUXQocikpKXJldHVybiByO2lmKGU9PT10aGlzLmFyZ3MubGVuZ3RoLTEpdGhyb3cgbmV3IGVlKCJFeHBlY3RlZCB2YWx1ZSB0byBiZSBvZiB0eXBlICIrcXQodGhpcy50eXBlKSsiLCBidXQgZm91bmQgIitxdChRdChyKSkrIiBpbnN0ZWFkLiIpfXJldHVybiBudWxsfSxuZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuYXJncy5mb3JFYWNoKHQpfSxuZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9W10pLmNvbmNhdC5hcHBseSh0LHRoaXMuYXJncy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zc2libGVPdXRwdXRzKCl9KSl9LG5lLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnR5cGUsZT1bdC5raW5kXTtpZigiYXJyYXkiPT09dC5raW5kKXt2YXIgcj10Lml0ZW1UeXBlO2lmKCJzdHJpbmciPT09ci5raW5kfHwibnVtYmVyIj09PXIua2luZHx8ImJvb2xlYW4iPT09ci5raW5kKXtlLnB1c2goci5raW5kKTt2YXIgbj10Lk47KCJudW1iZXIiPT10eXBlb2Ygbnx8dGhpcy5hcmdzLmxlbmd0aD4xKSYmZS5wdXNoKG4pfX1yZXR1cm4gZS5jb25jYXQodGhpcy5hcmdzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXJpYWxpemUoKX0pKX07dmFyIGFlPWZ1bmN0aW9uKHQpe3RoaXMudHlwZT1WdCx0aGlzLnNlY3Rpb25zPXR9O2FlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8MylyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50cy4iKTtpZigodC5sZW5ndGgtMSklMiE9MClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpO2Zvcih2YXIgcj1bXSxuPTE7bjx0Lmxlbmd0aC0xO24rPTIpe3ZhciBhPWUucGFyc2UodFtuXSwxLE50KTtpZighYSlyZXR1cm4gbnVsbDt2YXIgaT1hLnR5cGUua2luZDtpZigic3RyaW5nIiE9PWkmJiJ2YWx1ZSIhPT1pJiYibnVsbCIhPT1pKXJldHVybiBlLmVycm9yKCJGb3JtYXR0ZWQgdGV4dCB0eXBlIG11c3QgYmUgJ3N0cmluZycsICd2YWx1ZScsIG9yICdudWxsJy4iKTt2YXIgbz10W24rMV07aWYoIm9iamVjdCIhPXR5cGVvZiBvfHxBcnJheS5pc0FycmF5KG8pKXJldHVybiBlLmVycm9yKCJGb3JtYXQgb3B0aW9ucyBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC4iKTt2YXIgcz1udWxsO2lmKG9bImZvbnQtc2NhbGUiXSYmIShzPWUucGFyc2Uob1siZm9udC1zY2FsZSJdLDEsSXQpKSlyZXR1cm4gbnVsbDt2YXIgbD1udWxsO2lmKG9bInRleHQtZm9udCJdJiYhKGw9ZS5wYXJzZShvWyJ0ZXh0LWZvbnQiXSwxLFV0KER0KSkpKXJldHVybiBudWxsO3ZhciBjPW51bGw7aWYob1sidGV4dC1jb2xvciJdJiYhKGM9ZS5wYXJzZShvWyJ0ZXh0LWNvbG9yIl0sMSxGdCkpKXJldHVybiBudWxsO3IucHVzaCh7dGV4dDphLHNjYWxlOnMsZm9udDpsLHRleHRDb2xvcjpjfSl9cmV0dXJuIG5ldyBhZShyKX0sYWUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSnQodGhpcy5zZWN0aW9ucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBadCgkdChlLnRleHQuZXZhbHVhdGUodCkpLGUuc2NhbGU/ZS5zY2FsZS5ldmFsdWF0ZSh0KTpudWxsLGUuZm9udD9lLmZvbnQuZXZhbHVhdGUodCkuam9pbigiLCIpOm51bGwsZS50ZXh0Q29sb3I/ZS50ZXh0Q29sb3IuZXZhbHVhdGUodCk6bnVsbCl9KSl9LGFlLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10aGlzLnNlY3Rpb25zO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXTt0KG4udGV4dCksbi5zY2FsZSYmdChuLnNjYWxlKSxuLmZvbnQmJnQobi5mb250KSxuLnRleHRDb2xvciYmdChuLnRleHRDb2xvcil9fSxhZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7cmV0dXJuW3ZvaWQgMF19LGFlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9WyJmb3JtYXQiXSxlPTAscj10aGlzLnNlY3Rpb25zO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXTt0LnB1c2gobi50ZXh0LnNlcmlhbGl6ZSgpKTt2YXIgYT17fTtuLnNjYWxlJiYoYVsiZm9udC1zY2FsZSJdPW4uc2NhbGUuc2VyaWFsaXplKCkpLG4uZm9udCYmKGFbInRleHQtZm9udCJdPW4uZm9udC5zZXJpYWxpemUoKSksbi50ZXh0Q29sb3ImJihhWyJ0ZXh0LWNvbG9yIl09bi50ZXh0Q29sb3Iuc2VyaWFsaXplKCkpLHQucHVzaChhKX1yZXR1cm4gdH07dmFyIGllPXsidG8tYm9vbGVhbiI6UnQsInRvLWNvbG9yIjpGdCwidG8tbnVtYmVyIjpJdCwidG8tc3RyaW5nIjpEdH0sb2U9ZnVuY3Rpb24odCxlKXt0aGlzLnR5cGU9dCx0aGlzLmFyZ3M9ZX07b2UucGFyc2U9ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aDwyKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIik7dmFyIHI9dFswXTtpZigoInRvLWJvb2xlYW4iPT09cnx8InRvLXN0cmluZyI9PT1yKSYmMiE9PXQubGVuZ3RoKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBvbmUgYXJndW1lbnQuIik7Zm9yKHZhciBuPWllW3JdLGE9W10saT0xO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz1lLnBhcnNlKHRbaV0saSxOdCk7aWYoIW8pcmV0dXJuIG51bGw7YS5wdXNoKG8pfXJldHVybiBuZXcgb2UobixhKX0sb2UucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe2lmKCJib29sZWFuIj09PXRoaXMudHlwZS5raW5kKXJldHVybiBCb29sZWFuKHRoaXMuYXJnc1swXS5ldmFsdWF0ZSh0KSk7aWYoImNvbG9yIj09PXRoaXMudHlwZS5raW5kKXtmb3IodmFyIGUscixuPTAsYT10aGlzLmFyZ3M7bjxhLmxlbmd0aDtuKz0xKXtpZihyPW51bGwsKGU9YVtuXS5ldmFsdWF0ZSh0KSlpbnN0YW5jZW9mIFd0KXJldHVybiBlO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIGk9dC5wYXJzZUNvbG9yKGUpO2lmKGkpcmV0dXJuIGl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpJiYhKHI9ZS5sZW5ndGg8M3x8ZS5sZW5ndGg+ND8iSW52YWxpZCByYmdhIHZhbHVlICIrSlNPTi5zdHJpbmdpZnkoZSkrIjogZXhwZWN0ZWQgYW4gYXJyYXkgY29udGFpbmluZyBlaXRoZXIgdGhyZWUgb3IgZm91ciBudW1lcmljIHZhbHVlcy4iOkt0KGVbMF0sZVsxXSxlWzJdLGVbM10pKSlyZXR1cm4gbmV3IFd0KGVbMF0vMjU1LGVbMV0vMjU1LGVbMl0vMjU1LGVbM10pfXRocm93IG5ldyBlZShyfHwiQ291bGQgbm90IHBhcnNlIGNvbG9yIGZyb20gdmFsdWUgJyIrKCJzdHJpbmciPT10eXBlb2YgZT9lOlN0cmluZyhKU09OLnN0cmluZ2lmeShlKSkpKyInIil9aWYoIm51bWJlciI9PT10aGlzLnR5cGUua2luZCl7Zm9yKHZhciBvPW51bGwscz0wLGw9dGhpcy5hcmdzO3M8bC5sZW5ndGg7cys9MSl7aWYobnVsbD09PShvPWxbc10uZXZhbHVhdGUodCkpKXJldHVybiAwO3ZhciBjPU51bWJlcihvKTtpZighaXNOYU4oYykpcmV0dXJuIGN9dGhyb3cgbmV3IGVlKCJDb3VsZCBub3QgY29udmVydCAiK0pTT04uc3RyaW5naWZ5KG8pKyIgdG8gbnVtYmVyLiIpfXJldHVybiJmb3JtYXR0ZWQiPT09dGhpcy50eXBlLmtpbmQ/SnQuZnJvbVN0cmluZygkdCh0aGlzLmFyZ3NbMF0uZXZhbHVhdGUodCkpKTokdCh0aGlzLmFyZ3NbMF0uZXZhbHVhdGUodCkpfSxvZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuYXJncy5mb3JFYWNoKHQpfSxvZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9W10pLmNvbmNhdC5hcHBseSh0LHRoaXMuYXJncy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zc2libGVPdXRwdXRzKCl9KSl9LG9lLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtpZigiZm9ybWF0dGVkIj09PXRoaXMudHlwZS5raW5kKXJldHVybiBuZXcgYWUoW3t0ZXh0OnRoaXMuYXJnc1swXSxzY2FsZTpudWxsLGZvbnQ6bnVsbCx0ZXh0Q29sb3I6bnVsbH1dKS5zZXJpYWxpemUoKTt2YXIgdD1bInRvLSIrdGhpcy50eXBlLmtpbmRdO3JldHVybiB0aGlzLmVhY2hDaGlsZChmdW5jdGlvbihlKXt0LnB1c2goZS5zZXJpYWxpemUoKSl9KSx0fTt2YXIgc2U9WyJVbmtub3duIiwiUG9pbnQiLCJMaW5lU3RyaW5nIiwiUG9seWdvbiJdLGxlPWZ1bmN0aW9uKCl7dGhpcy5nbG9iYWxzPW51bGwsdGhpcy5mZWF0dXJlPW51bGwsdGhpcy5mZWF0dXJlU3RhdGU9bnVsbCx0aGlzLmZvcm1hdHRlZFNlY3Rpb249bnVsbCx0aGlzLl9wYXJzZUNvbG9yQ2FjaGU9e319O2xlLnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZlYXR1cmUmJiJpZCJpbiB0aGlzLmZlYXR1cmU/dGhpcy5mZWF0dXJlLmlkOm51bGx9LGxlLnByb3RvdHlwZS5nZW9tZXRyeVR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZWF0dXJlPyJudW1iZXIiPT10eXBlb2YgdGhpcy5mZWF0dXJlLnR5cGU/c2VbdGhpcy5mZWF0dXJlLnR5cGVdOnRoaXMuZmVhdHVyZS50eXBlOm51bGx9LGxlLnByb3RvdHlwZS5wcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLnByb3BlcnRpZXN8fHt9fSxsZS5wcm90b3R5cGUucGFyc2VDb2xvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9wYXJzZUNvbG9yQ2FjaGVbdF07cmV0dXJuIGV8fChlPXRoaXMuX3BhcnNlQ29sb3JDYWNoZVt0XT1XdC5wYXJzZSh0KSksZX07dmFyIGNlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMubmFtZT10LHRoaXMudHlwZT1lLHRoaXMuX2V2YWx1YXRlPXIsdGhpcy5hcmdzPW59O2NlLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXZhbHVhdGUodCx0aGlzLmFyZ3MpfSxjZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuYXJncy5mb3JFYWNoKHQpfSxjZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7cmV0dXJuW3ZvaWQgMF19LGNlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5uYW1lXS5jb25jYXQodGhpcy5hcmdzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXJpYWxpemUoKX0pKX0sY2UucGFyc2U9ZnVuY3Rpb24odCxlKXt2YXIgcixuPXRbMF0sYT1jZS5kZWZpbml0aW9uc1tuXTtpZighYSlyZXR1cm4gZS5lcnJvcignVW5rbm93biBleHByZXNzaW9uICInK24rJyIuIElmIHlvdSB3YW50ZWQgYSBsaXRlcmFsIGFycmF5LCB1c2UgWyJsaXRlcmFsIiwgWy4uLl1dLicsMCk7Zm9yKHZhciBpPUFycmF5LmlzQXJyYXkoYSk/YVswXTphLnR5cGUsbz1BcnJheS5pc0FycmF5KGEpP1tbYVsxXSxhWzJdXV06YS5vdmVybG9hZHMscz1vLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgcj1lWzBdO3JldHVybiFBcnJheS5pc0FycmF5KHIpfHxyLmxlbmd0aD09PXQubGVuZ3RoLTF9KSxsPW51bGwsYz0wLHU9cztjPHUubGVuZ3RoO2MrPTEpe3ZhciBoPXVbY10sZj1oWzBdLHA9aFsxXTtsPW5ldyBnZShlLnJlZ2lzdHJ5LGUucGF0aCxudWxsLGUuc2NvcGUpO2Zvcih2YXIgZD1bXSxnPSExLHY9MTt2PHQubGVuZ3RoO3YrKyl7dmFyIG09dFt2XSx5PUFycmF5LmlzQXJyYXkoZik/Zlt2LTFdOmYudHlwZSx4PWwucGFyc2UobSwxK2QubGVuZ3RoLHkpO2lmKCF4KXtnPSEwO2JyZWFrfWQucHVzaCh4KX1pZighZylpZihBcnJheS5pc0FycmF5KGYpJiZmLmxlbmd0aCE9PWQubGVuZ3RoKWwuZXJyb3IoIkV4cGVjdGVkICIrZi5sZW5ndGgrIiBhcmd1bWVudHMsIGJ1dCBmb3VuZCAiK2QubGVuZ3RoKyIgaW5zdGVhZC4iKTtlbHNle2Zvcih2YXIgYj0wO2I8ZC5sZW5ndGg7YisrKXt2YXIgXz1BcnJheS5pc0FycmF5KGYpP2ZbYl06Zi50eXBlLHc9ZFtiXTtsLmNvbmNhdChiKzEpLmNoZWNrU3VidHlwZShfLHcudHlwZSl9aWYoMD09PWwuZXJyb3JzLmxlbmd0aClyZXR1cm4gbmV3IGNlKG4saSxwLGQpfX1pZigxPT09cy5sZW5ndGgpKHI9ZS5lcnJvcnMpLnB1c2guYXBwbHkocixsLmVycm9ycyk7ZWxzZXtmb3IodmFyIGs9KHMubGVuZ3RoP3M6bykubWFwKGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPXRbMF0sQXJyYXkuaXNBcnJheShlKT8iKCIrZS5tYXAocXQpLmpvaW4oIiwgIikrIikiOiIoIitxdChlLnR5cGUpKyIuLi4pIn0pLmpvaW4oIiB8ICIpLFQ9W10sTT0xO008dC5sZW5ndGg7TSsrKXt2YXIgQT1lLnBhcnNlKHRbTV0sMStULmxlbmd0aCk7aWYoIUEpcmV0dXJuIG51bGw7VC5wdXNoKHF0KEEudHlwZSkpfWUuZXJyb3IoIkV4cGVjdGVkIGFyZ3VtZW50cyBvZiB0eXBlICIraysiLCBidXQgZm91bmQgKCIrVC5qb2luKCIsICIpKyIpIGluc3RlYWQuIil9cmV0dXJuIG51bGx9LGNlLnJlZ2lzdGVyPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIGNlLmRlZmluaXRpb25zPWUsZSl0W3JdPWNlfTt2YXIgdWU9ZnVuY3Rpb24odCxlLHIpe3RoaXMudHlwZT1qdCx0aGlzLmxvY2FsZT1yLHRoaXMuY2FzZVNlbnNpdGl2ZT10LHRoaXMuZGlhY3JpdGljU2Vuc2l0aXZlPWV9O2Z1bmN0aW9uIGhlKHQpe2lmKHQgaW5zdGFuY2VvZiBjZSl7aWYoImdldCI9PT10Lm5hbWUmJjE9PT10LmFyZ3MubGVuZ3RoKXJldHVybiExO2lmKCJmZWF0dXJlLXN0YXRlIj09PXQubmFtZSlyZXR1cm4hMTtpZigiaGFzIj09PXQubmFtZSYmMT09PXQuYXJncy5sZW5ndGgpcmV0dXJuITE7aWYoInByb3BlcnRpZXMiPT09dC5uYW1lfHwiZ2VvbWV0cnktdHlwZSI9PT10Lm5hbWV8fCJpZCI9PT10Lm5hbWUpcmV0dXJuITE7aWYoL15maWx0ZXItLy50ZXN0KHQubmFtZSkpcmV0dXJuITF9dmFyIGU9ITA7cmV0dXJuIHQuZWFjaENoaWxkKGZ1bmN0aW9uKHQpe2UmJiFoZSh0KSYmKGU9ITEpfSksZX1mdW5jdGlvbiBmZSh0KXtpZih0IGluc3RhbmNlb2YgY2UmJiJmZWF0dXJlLXN0YXRlIj09PXQubmFtZSlyZXR1cm4hMTt2YXIgZT0hMDtyZXR1cm4gdC5lYWNoQ2hpbGQoZnVuY3Rpb24odCl7ZSYmIWZlKHQpJiYoZT0hMSl9KSxlfWZ1bmN0aW9uIHBlKHQsZSl7aWYodCBpbnN0YW5jZW9mIGNlJiZlLmluZGV4T2YodC5uYW1lKT49MClyZXR1cm4hMTt2YXIgcj0hMDtyZXR1cm4gdC5lYWNoQ2hpbGQoZnVuY3Rpb24odCl7ciYmIXBlKHQsZSkmJihyPSExKX0pLHJ9dWUucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigyIT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIG9uZSBhcmd1bWVudC4iKTt2YXIgcj10WzFdO2lmKCJvYmplY3QiIT10eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKSlyZXR1cm4gZS5lcnJvcigiQ29sbGF0b3Igb3B0aW9ucyBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC4iKTt2YXIgbj1lLnBhcnNlKHZvaWQgMCE9PXJbImNhc2Utc2Vuc2l0aXZlIl0mJnJbImNhc2Utc2Vuc2l0aXZlIl0sMSxSdCk7aWYoIW4pcmV0dXJuIG51bGw7dmFyIGE9ZS5wYXJzZSh2b2lkIDAhPT1yWyJkaWFjcml0aWMtc2Vuc2l0aXZlIl0mJnJbImRpYWNyaXRpYy1zZW5zaXRpdmUiXSwxLFJ0KTtpZighYSlyZXR1cm4gbnVsbDt2YXIgaT1udWxsO3JldHVybiByLmxvY2FsZSYmIShpPWUucGFyc2Uoci5sb2NhbGUsMSxEdCkpP251bGw6bmV3IHVlKG4sYSxpKX0sdWUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWHQodGhpcy5jYXNlU2Vuc2l0aXZlLmV2YWx1YXRlKHQpLHRoaXMuZGlhY3JpdGljU2Vuc2l0aXZlLmV2YWx1YXRlKHQpLHRoaXMubG9jYWxlP3RoaXMubG9jYWxlLmV2YWx1YXRlKHQpOm51bGwpfSx1ZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3QodGhpcy5jYXNlU2Vuc2l0aXZlKSx0KHRoaXMuZGlhY3JpdGljU2Vuc2l0aXZlKSx0aGlzLmxvY2FsZSYmdCh0aGlzLmxvY2FsZSl9LHVlLnByb3RvdHlwZS5wb3NzaWJsZU91dHB1dHM9ZnVuY3Rpb24oKXtyZXR1cm5bdm9pZCAwXX0sdWUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiB0WyJjYXNlLXNlbnNpdGl2ZSJdPXRoaXMuY2FzZVNlbnNpdGl2ZS5zZXJpYWxpemUoKSx0WyJkaWFjcml0aWMtc2Vuc2l0aXZlIl09dGhpcy5kaWFjcml0aWNTZW5zaXRpdmUuc2VyaWFsaXplKCksdGhpcy5sb2NhbGUmJih0LmxvY2FsZT10aGlzLmxvY2FsZS5zZXJpYWxpemUoKSksWyJjb2xsYXRvciIsdF19O3ZhciBkZT1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT1lLnR5cGUsdGhpcy5uYW1lPXQsdGhpcy5ib3VuZEV4cHJlc3Npb249ZX07ZGUucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigyIT09dC5sZW5ndGh8fCJzdHJpbmciIT10eXBlb2YgdFsxXSlyZXR1cm4gZS5lcnJvcigiJ3ZhcicgZXhwcmVzc2lvbiByZXF1aXJlcyBleGFjdGx5IG9uZSBzdHJpbmcgbGl0ZXJhbCBhcmd1bWVudC4iKTt2YXIgcj10WzFdO3JldHVybiBlLnNjb3BlLmhhcyhyKT9uZXcgZGUocixlLnNjb3BlLmdldChyKSk6ZS5lcnJvcignVW5rbm93biB2YXJpYWJsZSAiJytyKyciLiBNYWtlIHN1cmUgIicrcisnIiBoYXMgYmVlbiBib3VuZCBpbiBhbiBlbmNsb3NpbmcgImxldCIgZXhwcmVzc2lvbiBiZWZvcmUgdXNpbmcgaXQuJywxKX0sZGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmJvdW5kRXhwcmVzc2lvbi5ldmFsdWF0ZSh0KX0sZGUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbigpe30sZGUucHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3JldHVyblt2b2lkIDBdfSxkZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuWyJ2YXIiLHRoaXMubmFtZV19O3ZhciBnZT1mdW5jdGlvbih0LGUscixuLGEpe3ZvaWQgMD09PWUmJihlPVtdKSx2b2lkIDA9PT1uJiYobj1uZXcgT3QpLHZvaWQgMD09PWEmJihhPVtdKSx0aGlzLnJlZ2lzdHJ5PXQsdGhpcy5wYXRoPWUsdGhpcy5rZXk9ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIlsiK3QrIl0ifSkuam9pbigiIiksdGhpcy5zY29wZT1uLHRoaXMuZXJyb3JzPWEsdGhpcy5leHBlY3RlZFR5cGU9cn07ZnVuY3Rpb24gdmUodCxlKXtmb3IodmFyIHIsbixhPXQubGVuZ3RoLTEsaT0wLG89YSxzPTA7aTw9bzspaWYocj10W3M9TWF0aC5mbG9vcigoaStvKS8yKV0sbj10W3MrMV0scjw9ZSl7aWYocz09PWF8fGU8bilyZXR1cm4gcztpPXMrMX1lbHNle2lmKCEocj5lKSl0aHJvdyBuZXcgZWUoIklucHV0IGlzIG5vdCBhIG51bWJlci4iKTtvPXMtMX1yZXR1cm4gMH1nZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCxlLHIsbixhKXtyZXR1cm4gdm9pZCAwPT09YSYmKGE9e30pLGU/dGhpcy5jb25jYXQoZSxyLG4pLl9wYXJzZSh0LGEpOnRoaXMuX3BhcnNlKHQsYSl9LGdlLnByb3RvdHlwZS5fcGFyc2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQsZSxyKXtyZXR1cm4iYXNzZXJ0Ij09PXI/bmV3IG5lKGUsW3RdKToiY29lcmNlIj09PXI/bmV3IG9lKGUsW3RdKTp0fWlmKG51bGwhPT10JiYic3RyaW5nIiE9dHlwZW9mIHQmJiJib29sZWFuIiE9dHlwZW9mIHQmJiJudW1iZXIiIT10eXBlb2YgdHx8KHQ9WyJsaXRlcmFsIix0XSksQXJyYXkuaXNBcnJheSh0KSl7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVycm9yKCdFeHBlY3RlZCBhbiBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50LiBJZiB5b3Ugd2FudGVkIGEgbGl0ZXJhbCBhcnJheSwgdXNlIFsibGl0ZXJhbCIsIFtdXS4nKTt2YXIgbj10WzBdO2lmKCJzdHJpbmciIT10eXBlb2YgbilyZXR1cm4gdGhpcy5lcnJvcigiRXhwcmVzc2lvbiBuYW1lIG11c3QgYmUgYSBzdHJpbmcsIGJ1dCBmb3VuZCAiK3R5cGVvZiBuKycgaW5zdGVhZC4gSWYgeW91IHdhbnRlZCBhIGxpdGVyYWwgYXJyYXksIHVzZSBbImxpdGVyYWwiLCBbLi4uXV0uJywwKSxudWxsO3ZhciBhPXRoaXMucmVnaXN0cnlbbl07aWYoYSl7dmFyIGk9YS5wYXJzZSh0LHRoaXMpO2lmKCFpKXJldHVybiBudWxsO2lmKHRoaXMuZXhwZWN0ZWRUeXBlKXt2YXIgbz10aGlzLmV4cGVjdGVkVHlwZSxzPWkudHlwZTtpZigic3RyaW5nIiE9PW8ua2luZCYmIm51bWJlciIhPT1vLmtpbmQmJiJib29sZWFuIiE9PW8ua2luZCYmIm9iamVjdCIhPT1vLmtpbmQmJiJhcnJheSIhPT1vLmtpbmR8fCJ2YWx1ZSIhPT1zLmtpbmQpaWYoImNvbG9yIiE9PW8ua2luZCYmImZvcm1hdHRlZCIhPT1vLmtpbmR8fCJ2YWx1ZSIhPT1zLmtpbmQmJiJzdHJpbmciIT09cy5raW5kKXtpZih0aGlzLmNoZWNrU3VidHlwZShvLHMpKXJldHVybiBudWxsfWVsc2UgaT1yKGksbyxlLnR5cGVBbm5vdGF0aW9ufHwiY29lcmNlIik7ZWxzZSBpPXIoaSxvLGUudHlwZUFubm90YXRpb258fCJhc3NlcnQiKX1pZighKGkgaW5zdGFuY2VvZiB0ZSkmJmZ1bmN0aW9uIHQoZSl7aWYoZSBpbnN0YW5jZW9mIGRlKXJldHVybiB0KGUuYm91bmRFeHByZXNzaW9uKTtpZihlIGluc3RhbmNlb2YgY2UmJiJlcnJvciI9PT1lLm5hbWUpcmV0dXJuITE7aWYoZSBpbnN0YW5jZW9mIHVlKXJldHVybiExO3ZhciByPWUgaW5zdGFuY2VvZiBvZXx8ZSBpbnN0YW5jZW9mIG5lLG49ITA7cmV0dXJuIGUuZWFjaENoaWxkKGZ1bmN0aW9uKGUpe249cj9uJiZ0KGUpOm4mJmUgaW5zdGFuY2VvZiB0ZX0pLCEhbiYmKGhlKGUpJiZwZShlLFsiem9vbSIsImhlYXRtYXAtZGVuc2l0eSIsImxpbmUtcHJvZ3Jlc3MiLCJhY2N1bXVsYXRlZCIsImlzLXN1cHBvcnRlZC1zY3JpcHQiXSkpfShpKSl7dmFyIGw9bmV3IGxlO3RyeXtpPW5ldyB0ZShpLnR5cGUsaS5ldmFsdWF0ZShsKSl9Y2F0Y2godCl7cmV0dXJuIHRoaXMuZXJyb3IodC5tZXNzYWdlKSxudWxsfX1yZXR1cm4gaX1yZXR1cm4gdGhpcy5lcnJvcignVW5rbm93biBleHByZXNzaW9uICInK24rJyIuIElmIHlvdSB3YW50ZWQgYSBsaXRlcmFsIGFycmF5LCB1c2UgWyJsaXRlcmFsIiwgWy4uLl1dLicsMCl9cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5lcnJvcigiJ3VuZGVmaW5lZCcgdmFsdWUgaW52YWxpZC4gVXNlIG51bGwgaW5zdGVhZC4iKToib2JqZWN0Ij09dHlwZW9mIHQ/dGhpcy5lcnJvcignQmFyZSBvYmplY3RzIGludmFsaWQuIFVzZSBbImxpdGVyYWwiLCB7Li4ufV0gaW5zdGVhZC4nKTp0aGlzLmVycm9yKCJFeHBlY3RlZCBhbiBhcnJheSwgYnV0IGZvdW5kICIrdHlwZW9mIHQrIiBpbnN0ZWFkLiIpfSxnZS5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj0ibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5wYXRoLmNvbmNhdCh0KTp0aGlzLnBhdGgsYT1yP3RoaXMuc2NvcGUuY29uY2F0KHIpOnRoaXMuc2NvcGU7cmV0dXJuIG5ldyBnZSh0aGlzLnJlZ2lzdHJ5LG4sZXx8bnVsbCxhLHRoaXMuZXJyb3JzKX0sZ2UucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPWFyZ3VtZW50cy5sZW5ndGgtMTtyLS0gPjA7KWVbcl09YXJndW1lbnRzW3IrMV07dmFyIG49IiIrdGhpcy5rZXkrZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIlsiK3QrIl0ifSkuam9pbigiIik7dGhpcy5lcnJvcnMucHVzaChuZXcgUHQobix0KSl9LGdlLnByb3RvdHlwZS5jaGVja1N1YnR5cGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1HdCh0LGUpO3JldHVybiByJiZ0aGlzLmVycm9yKHIpLHJ9O3ZhciBtZT1mdW5jdGlvbih0LGUscil7dGhpcy50eXBlPXQsdGhpcy5pbnB1dD1lLHRoaXMubGFiZWxzPVtdLHRoaXMub3V0cHV0cz1bXTtmb3IodmFyIG49MCxhPXI7bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1hW25dLG89aVswXSxzPWlbMV07dGhpcy5sYWJlbHMucHVzaChvKSx0aGlzLm91dHB1dHMucHVzaChzKX19O2Z1bmN0aW9uIHllKHQsZSxyKXtyZXR1cm4gdCooMS1yKStlKnJ9bWUucGFyc2U9ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aC0xPDQpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0IGxlYXN0IDQgYXJndW1lbnRzLCBidXQgZm91bmQgb25seSAiKyh0Lmxlbmd0aC0xKSsiLiIpO2lmKCh0Lmxlbmd0aC0xKSUyIT0wKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBhbiBldmVuIG51bWJlciBvZiBhcmd1bWVudHMuIik7dmFyIHI9ZS5wYXJzZSh0WzFdLDEsSXQpO2lmKCFyKXJldHVybiBudWxsO3ZhciBuPVtdLGE9bnVsbDtlLmV4cGVjdGVkVHlwZSYmInZhbHVlIiE9PWUuZXhwZWN0ZWRUeXBlLmtpbmQmJihhPWUuZXhwZWN0ZWRUeXBlKTtmb3IodmFyIGk9MTtpPHQubGVuZ3RoO2krPTIpe3ZhciBvPTE9PT1pPy0xLzA6dFtpXSxzPXRbaSsxXSxsPWksYz1pKzE7aWYoIm51bWJlciIhPXR5cGVvZiBvKXJldHVybiBlLmVycm9yKCdJbnB1dC9vdXRwdXQgcGFpcnMgZm9yICJzdGVwIiBleHByZXNzaW9ucyBtdXN0IGJlIGRlZmluZWQgdXNpbmcgbGl0ZXJhbCBudW1lcmljIHZhbHVlcyAobm90IGNvbXB1dGVkIGV4cHJlc3Npb25zKSBmb3IgdGhlIGlucHV0IHZhbHVlcy4nLGwpO2lmKG4ubGVuZ3RoJiZuW24ubGVuZ3RoLTFdWzBdPj1vKXJldHVybiBlLmVycm9yKCdJbnB1dC9vdXRwdXQgcGFpcnMgZm9yICJzdGVwIiBleHByZXNzaW9ucyBtdXN0IGJlIGFycmFuZ2VkIHdpdGggaW5wdXQgdmFsdWVzIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlci4nLGwpO3ZhciB1PWUucGFyc2UocyxjLGEpO2lmKCF1KXJldHVybiBudWxsO2E9YXx8dS50eXBlLG4ucHVzaChbbyx1XSl9cmV0dXJuIG5ldyBtZShhLHIsbil9LG1lLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhYmVscyxyPXRoaXMub3V0cHV0cztpZigxPT09ZS5sZW5ndGgpcmV0dXJuIHJbMF0uZXZhbHVhdGUodCk7dmFyIG49dGhpcy5pbnB1dC5ldmFsdWF0ZSh0KTtpZihuPD1lWzBdKXJldHVybiByWzBdLmV2YWx1YXRlKHQpO3ZhciBhPWUubGVuZ3RoO3JldHVybiBuPj1lW2EtMV0/clthLTFdLmV2YWx1YXRlKHQpOnJbdmUoZSxuKV0uZXZhbHVhdGUodCl9LG1lLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLmlucHV0KTtmb3IodmFyIGU9MCxyPXRoaXMub3V0cHV0cztlPHIubGVuZ3RoO2UrPTEpdChyW2VdKX0sbWUucHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3ZhciB0O3JldHVybih0PVtdKS5jb25jYXQuYXBwbHkodCx0aGlzLm91dHB1dHMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBvc3NpYmxlT3V0cHV0cygpfSkpfSxtZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVsic3RlcCIsdGhpcy5pbnB1dC5zZXJpYWxpemUoKV0sZT0wO2U8dGhpcy5sYWJlbHMubGVuZ3RoO2UrKyllPjAmJnQucHVzaCh0aGlzLmxhYmVsc1tlXSksdC5wdXNoKHRoaXMub3V0cHV0c1tlXS5zZXJpYWxpemUoKSk7cmV0dXJuIHR9O3ZhciB4ZT1PYmplY3QuZnJlZXplKHtudW1iZXI6eWUsY29sb3I6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuZXcgV3QoeWUodC5yLGUucixyKSx5ZSh0LmcsZS5nLHIpLHllKHQuYixlLmIscikseWUodC5hLGUuYSxyKSl9LGFycmF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4geWUodCxlW25dLHIpfSl9fSksYmU9Ljk1MDQ3LF9lPTEsd2U9MS4wODg4MyxrZT00LzI5LFRlPTYvMjksTWU9MypUZSpUZSxBZT1UZSpUZSpUZSxTZT1NYXRoLlBJLzE4MCxFZT0xODAvTWF0aC5QSTtmdW5jdGlvbiBMZSh0KXtyZXR1cm4gdD5BZT9NYXRoLnBvdyh0LDEvMyk6dC9NZStrZX1mdW5jdGlvbiBDZSh0KXtyZXR1cm4gdD5UZT90KnQqdDpNZSoodC1rZSl9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBPZSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiB6ZSh0KXt2YXIgZT1PZSh0LnIpLHI9T2UodC5nKSxuPU9lKHQuYiksYT1MZSgoLjQxMjQ1NjQqZSsuMzU3NTc2MSpyKy4xODA0Mzc1Km4pL2JlKSxpPUxlKCguMjEyNjcyOSplKy43MTUxNTIyKnIrLjA3MjE3NSpuKS9fZSk7cmV0dXJue2w6MTE2KmktMTYsYTo1MDAqKGEtaSksYjoyMDAqKGktTGUoKC4wMTkzMzM5KmUrLjExOTE5MipyKy45NTAzMDQxKm4pL3dlKSksYWxwaGE6dC5hfX1mdW5jdGlvbiBJZSh0KXt2YXIgZT0odC5sKzE2KS8xMTYscj1pc05hTih0LmEpP2U6ZSt0LmEvNTAwLG49aXNOYU4odC5iKT9lOmUtdC5iLzIwMDtyZXR1cm4gZT1fZSpDZShlKSxyPWJlKkNlKHIpLG49d2UqQ2UobiksbmV3IFd0KFBlKDMuMjQwNDU0MipyLTEuNTM3MTM4NSplLS40OTg1MzE0Km4pLFBlKC0uOTY5MjY2KnIrMS44NzYwMTA4KmUrLjA0MTU1NipuKSxQZSguMDU1NjQzNCpyLS4yMDQwMjU5KmUrMS4wNTcyMjUyKm4pLHQuYWxwaGEpfWZ1bmN0aW9uIERlKHQsZSxyKXt2YXIgbj1lLXQ7cmV0dXJuIHQrcioobj4xODB8fG48LTE4MD9uLTM2MCpNYXRoLnJvdW5kKG4vMzYwKTpuKX12YXIgUmU9e2ZvcndhcmQ6emUscmV2ZXJzZTpJZSxpbnRlcnBvbGF0ZTpmdW5jdGlvbih0LGUscil7cmV0dXJue2w6eWUodC5sLGUubCxyKSxhOnllKHQuYSxlLmEsciksYjp5ZSh0LmIsZS5iLHIpLGFscGhhOnllKHQuYWxwaGEsZS5hbHBoYSxyKX19fSxGZT17Zm9yd2FyZDpmdW5jdGlvbih0KXt2YXIgZT16ZSh0KSxyPWUubCxuPWUuYSxhPWUuYixpPU1hdGguYXRhbjIoYSxuKSpFZTtyZXR1cm57aDppPDA/aSszNjA6aSxjOk1hdGguc3FydChuKm4rYSphKSxsOnIsYWxwaGE6dC5hfX0scmV2ZXJzZTpmdW5jdGlvbih0KXt2YXIgZT10LmgqU2Uscj10LmM7cmV0dXJuIEllKHtsOnQubCxhOk1hdGguY29zKGUpKnIsYjpNYXRoLnNpbihlKSpyLGFscGhhOnQuYWxwaGF9KX0saW50ZXJwb2xhdGU6ZnVuY3Rpb24odCxlLHIpe3JldHVybntoOkRlKHQuaCxlLmgsciksYzp5ZSh0LmMsZS5jLHIpLGw6eWUodC5sLGUubCxyKSxhbHBoYTp5ZSh0LmFscGhhLGUuYWxwaGEscil9fX0sQmU9T2JqZWN0LmZyZWV6ZSh7bGFiOlJlLGhjbDpGZX0pLE5lPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dGhpcy50eXBlPXQsdGhpcy5vcGVyYXRvcj1lLHRoaXMuaW50ZXJwb2xhdGlvbj1yLHRoaXMuaW5wdXQ9bix0aGlzLmxhYmVscz1bXSx0aGlzLm91dHB1dHM9W107Zm9yKHZhciBpPTAsbz1hO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXSxsPXNbMF0sYz1zWzFdO3RoaXMubGFiZWxzLnB1c2gobCksdGhpcy5vdXRwdXRzLnB1c2goYyl9fTtmdW5jdGlvbiBqZSh0LGUscixuKXt2YXIgYT1uLXIsaT10LXI7cmV0dXJuIDA9PT1hPzA6MT09PWU/aS9hOihNYXRoLnBvdyhlLGkpLTEpLyhNYXRoLnBvdyhlLGEpLTEpfU5lLmludGVycG9sYXRpb25GYWN0b3I9ZnVuY3Rpb24odCxlLG4sYSl7dmFyIGk9MDtpZigiZXhwb25lbnRpYWwiPT09dC5uYW1lKWk9amUoZSx0LmJhc2UsbixhKTtlbHNlIGlmKCJsaW5lYXIiPT09dC5uYW1lKWk9amUoZSwxLG4sYSk7ZWxzZSBpZigiY3ViaWMtYmV6aWVyIj09PXQubmFtZSl7dmFyIG89dC5jb250cm9sUG9pbnRzO2k9bmV3IHIob1swXSxvWzFdLG9bMl0sb1szXSkuc29sdmUoamUoZSwxLG4sYSkpfXJldHVybiBpfSxOZS5wYXJzZT1mdW5jdGlvbih0LGUpe3ZhciByPXRbMF0sbj10WzFdLGE9dFsyXSxpPXQuc2xpY2UoMyk7aWYoIUFycmF5LmlzQXJyYXkobil8fDA9PT1uLmxlbmd0aClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYW4gaW50ZXJwb2xhdGlvbiB0eXBlIGV4cHJlc3Npb24uIiwxKTtpZigibGluZWFyIj09PW5bMF0pbj17bmFtZToibGluZWFyIn07ZWxzZSBpZigiZXhwb25lbnRpYWwiPT09blswXSl7dmFyIG89blsxXTtpZigibnVtYmVyIiE9dHlwZW9mIG8pcmV0dXJuIGUuZXJyb3IoIkV4cG9uZW50aWFsIGludGVycG9sYXRpb24gcmVxdWlyZXMgYSBudW1lcmljIGJhc2UuIiwxLDEpO249e25hbWU6ImV4cG9uZW50aWFsIixiYXNlOm99fWVsc2V7aWYoImN1YmljLWJlemllciIhPT1uWzBdKXJldHVybiBlLmVycm9yKCJVbmtub3duIGludGVycG9sYXRpb24gdHlwZSAiK1N0cmluZyhuWzBdKSwxLDApO3ZhciBzPW4uc2xpY2UoMSk7aWYoNCE9PXMubGVuZ3RofHxzLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0fHx0PDB8fHQ+MX0pKXJldHVybiBlLmVycm9yKCJDdWJpYyBiZXppZXIgaW50ZXJwb2xhdGlvbiByZXF1aXJlcyBmb3VyIG51bWVyaWMgYXJndW1lbnRzIHdpdGggdmFsdWVzIGJldHdlZW4gMCBhbmQgMS4iLDEpO249e25hbWU6ImN1YmljLWJlemllciIsY29udHJvbFBvaW50czpzfX1pZih0Lmxlbmd0aC0xPDQpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0IGxlYXN0IDQgYXJndW1lbnRzLCBidXQgZm91bmQgb25seSAiKyh0Lmxlbmd0aC0xKSsiLiIpO2lmKCh0Lmxlbmd0aC0xKSUyIT0wKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBhbiBldmVuIG51bWJlciBvZiBhcmd1bWVudHMuIik7aWYoIShhPWUucGFyc2UoYSwyLEl0KSkpcmV0dXJuIG51bGw7dmFyIGw9W10sYz1udWxsOyJpbnRlcnBvbGF0ZS1oY2wiPT09cnx8ImludGVycG9sYXRlLWxhYiI9PT1yP2M9RnQ6ZS5leHBlY3RlZFR5cGUmJiJ2YWx1ZSIhPT1lLmV4cGVjdGVkVHlwZS5raW5kJiYoYz1lLmV4cGVjdGVkVHlwZSk7Zm9yKHZhciB1PTA7dTxpLmxlbmd0aDt1Kz0yKXt2YXIgaD1pW3VdLGY9aVt1KzFdLHA9dSszLGQ9dSs0O2lmKCJudW1iZXIiIT10eXBlb2YgaClyZXR1cm4gZS5lcnJvcignSW5wdXQvb3V0cHV0IHBhaXJzIGZvciAiaW50ZXJwb2xhdGUiIGV4cHJlc3Npb25zIG11c3QgYmUgZGVmaW5lZCB1c2luZyBsaXRlcmFsIG51bWVyaWMgdmFsdWVzIChub3QgY29tcHV0ZWQgZXhwcmVzc2lvbnMpIGZvciB0aGUgaW5wdXQgdmFsdWVzLicscCk7aWYobC5sZW5ndGgmJmxbbC5sZW5ndGgtMV1bMF0+PWgpcmV0dXJuIGUuZXJyb3IoJ0lucHV0L291dHB1dCBwYWlycyBmb3IgImludGVycG9sYXRlIiBleHByZXNzaW9ucyBtdXN0IGJlIGFycmFuZ2VkIHdpdGggaW5wdXQgdmFsdWVzIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlci4nLHApO3ZhciBnPWUucGFyc2UoZixkLGMpO2lmKCFnKXJldHVybiBudWxsO2M9Y3x8Zy50eXBlLGwucHVzaChbaCxnXSl9cmV0dXJuIm51bWJlciI9PT1jLmtpbmR8fCJjb2xvciI9PT1jLmtpbmR8fCJhcnJheSI9PT1jLmtpbmQmJiJudW1iZXIiPT09Yy5pdGVtVHlwZS5raW5kJiYibnVtYmVyIj09dHlwZW9mIGMuTj9uZXcgTmUoYyxyLG4sYSxsKTplLmVycm9yKCJUeXBlICIrcXQoYykrIiBpcyBub3QgaW50ZXJwb2xhdGFibGUuIil9LE5lLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhYmVscyxyPXRoaXMub3V0cHV0cztpZigxPT09ZS5sZW5ndGgpcmV0dXJuIHJbMF0uZXZhbHVhdGUodCk7dmFyIG49dGhpcy5pbnB1dC5ldmFsdWF0ZSh0KTtpZihuPD1lWzBdKXJldHVybiByWzBdLmV2YWx1YXRlKHQpO3ZhciBhPWUubGVuZ3RoO2lmKG4+PWVbYS0xXSlyZXR1cm4gclthLTFdLmV2YWx1YXRlKHQpO3ZhciBpPXZlKGUsbiksbz1lW2ldLHM9ZVtpKzFdLGw9TmUuaW50ZXJwb2xhdGlvbkZhY3Rvcih0aGlzLmludGVycG9sYXRpb24sbixvLHMpLGM9cltpXS5ldmFsdWF0ZSh0KSx1PXJbaSsxXS5ldmFsdWF0ZSh0KTtyZXR1cm4iaW50ZXJwb2xhdGUiPT09dGhpcy5vcGVyYXRvcj94ZVt0aGlzLnR5cGUua2luZC50b0xvd2VyQ2FzZSgpXShjLHUsbCk6ImludGVycG9sYXRlLWhjbCI9PT10aGlzLm9wZXJhdG9yP0ZlLnJldmVyc2UoRmUuaW50ZXJwb2xhdGUoRmUuZm9yd2FyZChjKSxGZS5mb3J3YXJkKHUpLGwpKTpSZS5yZXZlcnNlKFJlLmludGVycG9sYXRlKFJlLmZvcndhcmQoYyksUmUuZm9yd2FyZCh1KSxsKSl9LE5lLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLmlucHV0KTtmb3IodmFyIGU9MCxyPXRoaXMub3V0cHV0cztlPHIubGVuZ3RoO2UrPTEpdChyW2VdKX0sTmUucHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3ZhciB0O3JldHVybih0PVtdKS5jb25jYXQuYXBwbHkodCx0aGlzLm91dHB1dHMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBvc3NpYmxlT3V0cHV0cygpfSkpfSxOZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQ7dD0ibGluZWFyIj09PXRoaXMuaW50ZXJwb2xhdGlvbi5uYW1lP1sibGluZWFyIl06ImV4cG9uZW50aWFsIj09PXRoaXMuaW50ZXJwb2xhdGlvbi5uYW1lPzE9PT10aGlzLmludGVycG9sYXRpb24uYmFzZT9bImxpbmVhciJdOlsiZXhwb25lbnRpYWwiLHRoaXMuaW50ZXJwb2xhdGlvbi5iYXNlXTpbImN1YmljLWJlemllciJdLmNvbmNhdCh0aGlzLmludGVycG9sYXRpb24uY29udHJvbFBvaW50cyk7Zm9yKHZhciBlPVt0aGlzLm9wZXJhdG9yLHQsdGhpcy5pbnB1dC5zZXJpYWxpemUoKV0scj0wO3I8dGhpcy5sYWJlbHMubGVuZ3RoO3IrKyllLnB1c2godGhpcy5sYWJlbHNbcl0sdGhpcy5vdXRwdXRzW3JdLnNlcmlhbGl6ZSgpKTtyZXR1cm4gZX07dmFyIFZlPWZ1bmN0aW9uKHQsZSl7dGhpcy50eXBlPXQsdGhpcy5hcmdzPWV9O1ZlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8MilyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpO3ZhciByPW51bGwsbj1lLmV4cGVjdGVkVHlwZTtuJiYidmFsdWUiIT09bi5raW5kJiYocj1uKTtmb3IodmFyIGE9W10saT0wLG89dC5zbGljZSgxKTtpPG8ubGVuZ3RoO2krPTEpe3ZhciBzPW9baV0sbD1lLnBhcnNlKHMsMSthLmxlbmd0aCxyLHZvaWQgMCx7dHlwZUFubm90YXRpb246Im9taXQifSk7aWYoIWwpcmV0dXJuIG51bGw7cj1yfHxsLnR5cGUsYS5wdXNoKGwpfXZhciBjPW4mJmEuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gR3Qobix0LnR5cGUpfSk7cmV0dXJuIG5ldyBWZShjP050OnIsYSl9LFZlLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9bnVsbCxyPTAsbj10aGlzLmFyZ3M7cjxuLmxlbmd0aCYmbnVsbD09PShlPW5bcl0uZXZhbHVhdGUodCkpO3IrPTEpO3JldHVybiBlfSxWZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuYXJncy5mb3JFYWNoKHQpfSxWZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9W10pLmNvbmNhdC5hcHBseSh0LHRoaXMuYXJncy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zc2libGVPdXRwdXRzKCl9KSl9LFZlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgdD1bImNvYWxlc2NlIl07cmV0dXJuIHRoaXMuZWFjaENoaWxkKGZ1bmN0aW9uKGUpe3QucHVzaChlLnNlcmlhbGl6ZSgpKX0pLHR9O3ZhciBVZT1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT1lLnR5cGUsdGhpcy5iaW5kaW5ncz1bXS5jb25jYXQodCksdGhpcy5yZXN1bHQ9ZX07VWUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlc3VsdC5ldmFsdWF0ZSh0KX0sVWUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMuYmluZGluZ3M7ZTxyLmxlbmd0aDtlKz0xKXQocltlXVsxXSk7dCh0aGlzLnJlc3VsdCl9LFVlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8NClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3QgMyBhcmd1bWVudHMsIGJ1dCBmb3VuZCAiKyh0Lmxlbmd0aC0xKSsiIGluc3RlYWQuIik7Zm9yKHZhciByPVtdLG49MTtuPHQubGVuZ3RoLTE7bis9Mil7dmFyIGE9dFtuXTtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIHN0cmluZywgYnV0IGZvdW5kICIrdHlwZW9mIGErIiBpbnN0ZWFkLiIsbik7aWYoL1teYS16QS1aMC05X10vLnRlc3QoYSkpcmV0dXJuIGUuZXJyb3IoIlZhcmlhYmxlIG5hbWVzIG11c3QgY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yICdfJy4iLG4pO3ZhciBpPWUucGFyc2UodFtuKzFdLG4rMSk7aWYoIWkpcmV0dXJuIG51bGw7ci5wdXNoKFthLGldKX12YXIgbz1lLnBhcnNlKHRbdC5sZW5ndGgtMV0sdC5sZW5ndGgtMSxlLmV4cGVjdGVkVHlwZSxyKTtyZXR1cm4gbz9uZXcgVWUocixvKTpudWxsfSxVZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0LnBvc3NpYmxlT3V0cHV0cygpfSxVZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVsibGV0Il0sZT0wLHI9dGhpcy5iaW5kaW5ncztlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV0sYT1uWzBdLGk9blsxXTt0LnB1c2goYSxpLnNlcmlhbGl6ZSgpKX1yZXR1cm4gdC5wdXNoKHRoaXMucmVzdWx0LnNlcmlhbGl6ZSgpKSx0fTt2YXIgcWU9ZnVuY3Rpb24odCxlLHIpe3RoaXMudHlwZT10LHRoaXMuaW5kZXg9ZSx0aGlzLmlucHV0PXJ9O3FlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMyE9PXQubGVuZ3RoKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCAyIGFyZ3VtZW50cywgYnV0IGZvdW5kICIrKHQubGVuZ3RoLTEpKyIgaW5zdGVhZC4iKTt2YXIgcj1lLnBhcnNlKHRbMV0sMSxJdCksbj1lLnBhcnNlKHRbMl0sMixVdChlLmV4cGVjdGVkVHlwZXx8TnQpKTtpZighcnx8IW4pcmV0dXJuIG51bGw7dmFyIGE9bi50eXBlO3JldHVybiBuZXcgcWUoYS5pdGVtVHlwZSxyLG4pfSxxZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbmRleC5ldmFsdWF0ZSh0KSxyPXRoaXMuaW5wdXQuZXZhbHVhdGUodCk7aWYoZTwwKXRocm93IG5ldyBlZSgiQXJyYXkgaW5kZXggb3V0IG9mIGJvdW5kczogIitlKyIgPCAwLiIpO2lmKGU+PXIubGVuZ3RoKXRocm93IG5ldyBlZSgiQXJyYXkgaW5kZXggb3V0IG9mIGJvdW5kczogIitlKyIgPiAiKyhyLmxlbmd0aC0xKSsiLiIpO2lmKGUhPT1NYXRoLmZsb29yKGUpKXRocm93IG5ldyBlZSgiQXJyYXkgaW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyLCBidXQgZm91bmQgIitlKyIgaW5zdGVhZC4iKTtyZXR1cm4gcltlXX0scWUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0KHRoaXMuaW5kZXgpLHQodGhpcy5pbnB1dCl9LHFlLnByb3RvdHlwZS5wb3NzaWJsZU91dHB1dHM9ZnVuY3Rpb24oKXtyZXR1cm5bdm9pZCAwXX0scWUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVyblsiYXQiLHRoaXMuaW5kZXguc2VyaWFsaXplKCksdGhpcy5pbnB1dC5zZXJpYWxpemUoKV19O3ZhciBIZT1mdW5jdGlvbih0LGUscixuLGEsaSl7dGhpcy5pbnB1dFR5cGU9dCx0aGlzLnR5cGU9ZSx0aGlzLmlucHV0PXIsdGhpcy5jYXNlcz1uLHRoaXMub3V0cHV0cz1hLHRoaXMub3RoZXJ3aXNlPWl9O0hlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8NSlyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3QgNCBhcmd1bWVudHMsIGJ1dCBmb3VuZCBvbmx5ICIrKHQubGVuZ3RoLTEpKyIuIik7aWYodC5sZW5ndGglMiE9MSlyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpO3ZhciByLG47ZS5leHBlY3RlZFR5cGUmJiJ2YWx1ZSIhPT1lLmV4cGVjdGVkVHlwZS5raW5kJiYobj1lLmV4cGVjdGVkVHlwZSk7Zm9yKHZhciBhPXt9LGk9W10sbz0yO288dC5sZW5ndGgtMTtvKz0yKXt2YXIgcz10W29dLGw9dFtvKzFdO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7dmFyIGM9ZS5jb25jYXQobyk7aWYoMD09PXMubGVuZ3RoKXJldHVybiBjLmVycm9yKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYnJhbmNoIGxhYmVsLiIpO2Zvcih2YXIgdT0wLGg9czt1PGgubGVuZ3RoO3UrPTEpe3ZhciBmPWhbdV07aWYoIm51bWJlciIhPXR5cGVvZiBmJiYic3RyaW5nIiE9dHlwZW9mIGYpcmV0dXJuIGMuZXJyb3IoIkJyYW5jaCBsYWJlbHMgbXVzdCBiZSBudW1iZXJzIG9yIHN0cmluZ3MuIik7aWYoIm51bWJlciI9PXR5cGVvZiBmJiZNYXRoLmFicyhmKT5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUilyZXR1cm4gYy5lcnJvcigiQnJhbmNoIGxhYmVscyBtdXN0IGJlIGludGVnZXJzIG5vIGxhcmdlciB0aGFuICIrTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIrIi4iKTtpZigibnVtYmVyIj09dHlwZW9mIGYmJk1hdGguZmxvb3IoZikhPT1mKXJldHVybiBjLmVycm9yKCJOdW1lcmljIGJyYW5jaCBsYWJlbHMgbXVzdCBiZSBpbnRlZ2VyIHZhbHVlcy4iKTtpZihyKXtpZihjLmNoZWNrU3VidHlwZShyLFF0KGYpKSlyZXR1cm4gbnVsbH1lbHNlIHI9UXQoZik7aWYodm9pZCAwIT09YVtTdHJpbmcoZildKXJldHVybiBjLmVycm9yKCJCcmFuY2ggbGFiZWxzIG11c3QgYmUgdW5pcXVlLiIpO2FbU3RyaW5nKGYpXT1pLmxlbmd0aH12YXIgcD1lLnBhcnNlKGwsbyxuKTtpZighcClyZXR1cm4gbnVsbDtuPW58fHAudHlwZSxpLnB1c2gocCl9dmFyIGQ9ZS5wYXJzZSh0WzFdLDEsTnQpO2lmKCFkKXJldHVybiBudWxsO3ZhciBnPWUucGFyc2UodFt0Lmxlbmd0aC0xXSx0Lmxlbmd0aC0xLG4pO3JldHVybiBnPyJ2YWx1ZSIhPT1kLnR5cGUua2luZCYmZS5jb25jYXQoMSkuY2hlY2tTdWJ0eXBlKHIsZC50eXBlKT9udWxsOm5ldyBIZShyLG4sZCxhLGksZyk6bnVsbH0sSGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5wdXQuZXZhbHVhdGUodCk7cmV0dXJuKFF0KGUpPT09dGhpcy5pbnB1dFR5cGUmJnRoaXMub3V0cHV0c1t0aGlzLmNhc2VzW2VdXXx8dGhpcy5vdGhlcndpc2UpLmV2YWx1YXRlKHQpfSxIZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3QodGhpcy5pbnB1dCksdGhpcy5vdXRwdXRzLmZvckVhY2godCksdCh0aGlzLm90aGVyd2lzZSl9LEhlLnByb3RvdHlwZS5wb3NzaWJsZU91dHB1dHM9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD1bXSkuY29uY2F0LmFwcGx5KHQsdGhpcy5vdXRwdXRzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5wb3NzaWJsZU91dHB1dHMoKX0pKS5jb25jYXQodGhpcy5vdGhlcndpc2UucG9zc2libGVPdXRwdXRzKCkpfSxIZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1bIm1hdGNoIix0aGlzLmlucHV0LnNlcmlhbGl6ZSgpXSxyPVtdLG49e30sYT0wLGk9T2JqZWN0LmtleXModGhpcy5jYXNlcykuc29ydCgpO2E8aS5sZW5ndGg7YSs9MSl7dmFyIG89aVthXTt2b2lkIDA9PT0oaD1uW3RoaXMuY2FzZXNbb11dKT8oblt0aGlzLmNhc2VzW29dXT1yLmxlbmd0aCxyLnB1c2goW3RoaXMuY2FzZXNbb10sW29dXSkpOnJbaF1bMV0ucHVzaChvKX1mb3IodmFyIHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PT10LmlucHV0VHlwZS5raW5kP051bWJlcihlKTplfSxsPTAsYz1yO2w8Yy5sZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXSxoPXVbMF0sZj11WzFdOzE9PT1mLmxlbmd0aD9lLnB1c2gocyhmWzBdKSk6ZS5wdXNoKGYubWFwKHMpKSxlLnB1c2godGhpcy5vdXRwdXRzW291dHB1dEluZGV4JDFdLnNlcmlhbGl6ZSgpKX1yZXR1cm4gZS5wdXNoKHRoaXMub3RoZXJ3aXNlLnNlcmlhbGl6ZSgpKSxlfTt2YXIgR2U9ZnVuY3Rpb24odCxlLHIpe3RoaXMudHlwZT10LHRoaXMuYnJhbmNoZXM9ZSx0aGlzLm90aGVyd2lzZT1yfTtmdW5jdGlvbiBZZSh0LGUpe3JldHVybiI9PSI9PT10fHwiIT0iPT09dD8iYm9vbGVhbiI9PT1lLmtpbmR8fCJzdHJpbmciPT09ZS5raW5kfHwibnVtYmVyIj09PWUua2luZHx8Im51bGwiPT09ZS5raW5kfHwidmFsdWUiPT09ZS5raW5kOiJzdHJpbmciPT09ZS5raW5kfHwibnVtYmVyIj09PWUua2luZHx8InZhbHVlIj09PWUua2luZH1mdW5jdGlvbiBXZSh0LGUscixuKXtyZXR1cm4gMD09PW4uY29tcGFyZShlLHIpfWZ1bmN0aW9uIFhlKHQsZSxyKXt2YXIgbj0iPT0iIT09dCYmIiE9IiE9PXQ7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSh0LGUscil7dGhpcy50eXBlPVJ0LHRoaXMubGhzPXQsdGhpcy5yaHM9ZSx0aGlzLmNvbGxhdG9yPXIsdGhpcy5oYXNVbnR5cGVkQXJndW1lbnQ9InZhbHVlIj09PXQudHlwZS5raW5kfHwidmFsdWUiPT09ZS50eXBlLmtpbmR9cmV0dXJuIGEucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigzIT09dC5sZW5ndGgmJjQhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy4iKTt2YXIgcj10WzBdLGk9ZS5wYXJzZSh0WzFdLDEsTnQpO2lmKCFpKXJldHVybiBudWxsO2lmKCFZZShyLGkudHlwZSkpcmV0dXJuIGUuY29uY2F0KDEpLmVycm9yKCciJytyKyJcIiBjb21wYXJpc29ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdHlwZSAnIitxdChpLnR5cGUpKyInLiIpO3ZhciBvPWUucGFyc2UodFsyXSwyLE50KTtpZighbylyZXR1cm4gbnVsbDtpZighWWUocixvLnR5cGUpKXJldHVybiBlLmNvbmNhdCgyKS5lcnJvcignIicrcisiXCIgY29tcGFyaXNvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGUgJyIrcXQoby50eXBlKSsiJy4iKTtpZihpLnR5cGUua2luZCE9PW8udHlwZS5raW5kJiYidmFsdWUiIT09aS50eXBlLmtpbmQmJiJ2YWx1ZSIhPT1vLnR5cGUua2luZClyZXR1cm4gZS5lcnJvcigiQ2Fubm90IGNvbXBhcmUgdHlwZXMgJyIrcXQoaS50eXBlKSsiJyBhbmQgJyIrcXQoby50eXBlKSsiJy4iKTtuJiYoInZhbHVlIj09PWkudHlwZS5raW5kJiYidmFsdWUiIT09by50eXBlLmtpbmQ/aT1uZXcgbmUoby50eXBlLFtpXSk6InZhbHVlIiE9PWkudHlwZS5raW5kJiYidmFsdWUiPT09by50eXBlLmtpbmQmJihvPW5ldyBuZShpLnR5cGUsW29dKSkpO3ZhciBzPW51bGw7aWYoND09PXQubGVuZ3RoKXtpZigic3RyaW5nIiE9PWkudHlwZS5raW5kJiYic3RyaW5nIiE9PW8udHlwZS5raW5kJiYidmFsdWUiIT09aS50eXBlLmtpbmQmJiJ2YWx1ZSIhPT1vLnR5cGUua2luZClyZXR1cm4gZS5lcnJvcigiQ2Fubm90IHVzZSBjb2xsYXRvciB0byBjb21wYXJlIG5vbi1zdHJpbmcgdHlwZXMuIik7aWYoIShzPWUucGFyc2UodFszXSwzLGp0KSkpcmV0dXJuIG51bGx9cmV0dXJuIG5ldyBhKGksbyxzKX0sYS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oYSl7dmFyIGk9dGhpcy5saHMuZXZhbHVhdGUoYSksbz10aGlzLnJocy5ldmFsdWF0ZShhKTtpZihuJiZ0aGlzLmhhc1VudHlwZWRBcmd1bWVudCl7dmFyIHM9UXQoaSksbD1RdChvKTtpZihzLmtpbmQhPT1sLmtpbmR8fCJzdHJpbmciIT09cy5raW5kJiYibnVtYmVyIiE9PXMua2luZCl0aHJvdyBuZXcgZWUoJ0V4cGVjdGVkIGFyZ3VtZW50cyBmb3IgIicrdCsnIiB0byBiZSAoc3RyaW5nLCBzdHJpbmcpIG9yIChudW1iZXIsIG51bWJlciksIGJ1dCBmb3VuZCAoJytzLmtpbmQrIiwgIitsLmtpbmQrIikgaW5zdGVhZC4iKX1pZih0aGlzLmNvbGxhdG9yJiYhbiYmdGhpcy5oYXNVbnR5cGVkQXJndW1lbnQpe3ZhciBjPVF0KGkpLHU9UXQobyk7aWYoInN0cmluZyIhPT1jLmtpbmR8fCJzdHJpbmciIT09dS5raW5kKXJldHVybiBlKGEsaSxvKX1yZXR1cm4gdGhpcy5jb2xsYXRvcj9yKGEsaSxvLHRoaXMuY29sbGF0b3IuZXZhbHVhdGUoYSkpOmUoYSxpLG8pfSxhLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLmxocyksdCh0aGlzLnJocyksdGhpcy5jb2xsYXRvciYmdCh0aGlzLmNvbGxhdG9yKX0sYS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7cmV0dXJuWyEwLCExXX0sYS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIGU9W3RdO3JldHVybiB0aGlzLmVhY2hDaGlsZChmdW5jdGlvbih0KXtlLnB1c2godC5zZXJpYWxpemUoKSl9KSxlfSxhfSgpfUdlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8NClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3QgMyBhcmd1bWVudHMsIGJ1dCBmb3VuZCBvbmx5ICIrKHQubGVuZ3RoLTEpKyIuIik7aWYodC5sZW5ndGglMiE9MClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYW4gb2RkIG51bWJlciBvZiBhcmd1bWVudHMuIik7dmFyIHI7ZS5leHBlY3RlZFR5cGUmJiJ2YWx1ZSIhPT1lLmV4cGVjdGVkVHlwZS5raW5kJiYocj1lLmV4cGVjdGVkVHlwZSk7Zm9yKHZhciBuPVtdLGE9MTthPHQubGVuZ3RoLTE7YSs9Mil7dmFyIGk9ZS5wYXJzZSh0W2FdLGEsUnQpO2lmKCFpKXJldHVybiBudWxsO3ZhciBvPWUucGFyc2UodFthKzFdLGErMSxyKTtpZighbylyZXR1cm4gbnVsbDtuLnB1c2goW2ksb10pLHI9cnx8by50eXBlfXZhciBzPWUucGFyc2UodFt0Lmxlbmd0aC0xXSx0Lmxlbmd0aC0xLHIpO3JldHVybiBzP25ldyBHZShyLG4scyk6bnVsbH0sR2UucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dGhpcy5icmFuY2hlcztlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV0sYT1uWzBdLGk9blsxXTtpZihhLmV2YWx1YXRlKHQpKXJldHVybiBpLmV2YWx1YXRlKHQpfXJldHVybiB0aGlzLm90aGVyd2lzZS5ldmFsdWF0ZSh0KX0sR2UucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMuYnJhbmNoZXM7ZTxyLmxlbmd0aDtlKz0xKXt2YXIgbj1yW2VdLGE9blswXSxpPW5bMV07dChhKSx0KGkpfXQodGhpcy5vdGhlcndpc2UpfSxHZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9W10pLmNvbmNhdC5hcHBseSh0LHRoaXMuYnJhbmNoZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLHRbMV0ucG9zc2libGVPdXRwdXRzKCl9KSkuY29uY2F0KHRoaXMub3RoZXJ3aXNlLnBvc3NpYmxlT3V0cHV0cygpKX0sR2UucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3ZhciB0PVsiY2FzZSJdO3JldHVybiB0aGlzLmVhY2hDaGlsZChmdW5jdGlvbihlKXt0LnB1c2goZS5zZXJpYWxpemUoKSl9KSx0fTt2YXIgWmU9WGUoIj09IixmdW5jdGlvbih0LGUscil7cmV0dXJuIGU9PT1yfSxXZSksSmU9WGUoIiE9IixmdW5jdGlvbih0LGUscil7cmV0dXJuIGUhPT1yfSxmdW5jdGlvbih0LGUscixuKXtyZXR1cm4hV2UoMCxlLHIsbil9KSxLZT1YZSgiPCIsZnVuY3Rpb24odCxlLHIpe3JldHVybiBlPHJ9LGZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBuLmNvbXBhcmUoZSxyKTwwfSksUWU9WGUoIj4iLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZT5yfSxmdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbi5jb21wYXJlKGUscik+MH0pLCRlPVhlKCI8PSIsZnVuY3Rpb24odCxlLHIpe3JldHVybiBlPD1yfSxmdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbi5jb21wYXJlKGUscik8PTB9KSx0cj1YZSgiPj0iLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZT49cn0sZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG4uY29tcGFyZShlLHIpPj0wfSksZXI9ZnVuY3Rpb24odCxlLHIsbixhKXt0aGlzLnR5cGU9RHQsdGhpcy5udW1iZXI9dCx0aGlzLmxvY2FsZT1lLHRoaXMuY3VycmVuY3k9cix0aGlzLm1pbkZyYWN0aW9uRGlnaXRzPW4sdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cz1hfTtlci5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKDMhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgdHdvIGFyZ3VtZW50cy4iKTt2YXIgcj1lLnBhcnNlKHRbMV0sMSxJdCk7aWYoIXIpcmV0dXJuIG51bGw7dmFyIG49dFsyXTtpZigib2JqZWN0IiE9dHlwZW9mIG58fEFycmF5LmlzQXJyYXkobikpcmV0dXJuIGUuZXJyb3IoIk51bWJlckZvcm1hdCBvcHRpb25zIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0LiIpO3ZhciBhPW51bGw7aWYobi5sb2NhbGUmJiEoYT1lLnBhcnNlKG4ubG9jYWxlLDEsRHQpKSlyZXR1cm4gbnVsbDt2YXIgaT1udWxsO2lmKG4uY3VycmVuY3kmJiEoaT1lLnBhcnNlKG4uY3VycmVuY3ksMSxEdCkpKXJldHVybiBudWxsO3ZhciBvPW51bGw7aWYoblsibWluLWZyYWN0aW9uLWRpZ2l0cyJdJiYhKG89ZS5wYXJzZShuWyJtaW4tZnJhY3Rpb24tZGlnaXRzIl0sMSxJdCkpKXJldHVybiBudWxsO3ZhciBzPW51bGw7cmV0dXJuIG5bIm1heC1mcmFjdGlvbi1kaWdpdHMiXSYmIShzPWUucGFyc2UoblsibWF4LWZyYWN0aW9uLWRpZ2l0cyJdLDEsSXQpKT9udWxsOm5ldyBlcihyLGEsaSxvLHMpfSxlci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZT90aGlzLmxvY2FsZS5ldmFsdWF0ZSh0KTpbXSx7c3R5bGU6dGhpcy5jdXJyZW5jeT8iY3VycmVuY3kiOiJkZWNpbWFsIixjdXJyZW5jeTp0aGlzLmN1cnJlbmN5P3RoaXMuY3VycmVuY3kuZXZhbHVhdGUodCk6dm9pZCAwLG1pbmltdW1GcmFjdGlvbkRpZ2l0czp0aGlzLm1pbkZyYWN0aW9uRGlnaXRzP3RoaXMubWluRnJhY3Rpb25EaWdpdHMuZXZhbHVhdGUodCk6dm9pZCAwLG1heGltdW1GcmFjdGlvbkRpZ2l0czp0aGlzLm1heEZyYWN0aW9uRGlnaXRzP3RoaXMubWF4RnJhY3Rpb25EaWdpdHMuZXZhbHVhdGUodCk6dm9pZCAwfSkuZm9ybWF0KHRoaXMubnVtYmVyLmV2YWx1YXRlKHQpKX0sZXIucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0KHRoaXMubnVtYmVyKSx0aGlzLmxvY2FsZSYmdCh0aGlzLmxvY2FsZSksdGhpcy5jdXJyZW5jeSYmdCh0aGlzLmN1cnJlbmN5KSx0aGlzLm1pbkZyYWN0aW9uRGlnaXRzJiZ0KHRoaXMubWluRnJhY3Rpb25EaWdpdHMpLHRoaXMubWF4RnJhY3Rpb25EaWdpdHMmJnQodGhpcy5tYXhGcmFjdGlvbkRpZ2l0cyl9LGVyLnByb3RvdHlwZS5wb3NzaWJsZU91dHB1dHM9ZnVuY3Rpb24oKXtyZXR1cm5bdm9pZCAwXX0sZXIucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiB0aGlzLmxvY2FsZSYmKHQubG9jYWxlPXRoaXMubG9jYWxlLnNlcmlhbGl6ZSgpKSx0aGlzLmN1cnJlbmN5JiYodC5jdXJyZW5jeT10aGlzLmN1cnJlbmN5LnNlcmlhbGl6ZSgpKSx0aGlzLm1pbkZyYWN0aW9uRGlnaXRzJiYodFsibWluLWZyYWN0aW9uLWRpZ2l0cyJdPXRoaXMubWluRnJhY3Rpb25EaWdpdHMuc2VyaWFsaXplKCkpLHRoaXMubWF4RnJhY3Rpb25EaWdpdHMmJih0WyJtYXgtZnJhY3Rpb24tZGlnaXRzIl09dGhpcy5tYXhGcmFjdGlvbkRpZ2l0cy5zZXJpYWxpemUoKSksWyJudW1iZXItZm9ybWF0Iix0aGlzLm51bWJlci5zZXJpYWxpemUoKSx0XX07dmFyIHJyPWZ1bmN0aW9uKHQpe3RoaXMudHlwZT1JdCx0aGlzLmlucHV0PXR9O3JyLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMiE9PXQubGVuZ3RoKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCAxIGFyZ3VtZW50LCBidXQgZm91bmQgIisodC5sZW5ndGgtMSkrIiBpbnN0ZWFkLiIpO3ZhciByPWUucGFyc2UodFsxXSwxKTtyZXR1cm4gcj8iYXJyYXkiIT09ci50eXBlLmtpbmQmJiJzdHJpbmciIT09ci50eXBlLmtpbmQmJiJ2YWx1ZSIhPT1yLnR5cGUua2luZD9lLmVycm9yKCJFeHBlY3RlZCBhcmd1bWVudCBvZiB0eXBlIHN0cmluZyBvciBhcnJheSwgYnV0IGZvdW5kICIrcXQoci50eXBlKSsiIGluc3RlYWQuIik6bmV3IHJyKHIpOm51bGx9LHJyLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlucHV0LmV2YWx1YXRlKHQpO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZS5sZW5ndGg7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5sZW5ndGg7dGhyb3cgbmV3IGVlKCJFeHBlY3RlZCB2YWx1ZSB0byBiZSBvZiB0eXBlIHN0cmluZyBvciBhcnJheSwgYnV0IGZvdW5kICIrcXQoUXQoZSkpKyIgaW5zdGVhZC4iKX0scnIucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0KHRoaXMuaW5wdXQpfSxyci5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7cmV0dXJuW3ZvaWQgMF19LHJyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgdD1bImxlbmd0aCJdO3JldHVybiB0aGlzLmVhY2hDaGlsZChmdW5jdGlvbihlKXt0LnB1c2goZS5zZXJpYWxpemUoKSl9KSx0fTt2YXIgbnI9eyI9PSI6WmUsIiE9IjpKZSwiPiI6UWUsIjwiOktlLCI+PSI6dHIsIjw9IjokZSxhcnJheTpuZSxhdDpxZSxib29sZWFuOm5lLGNhc2U6R2UsY29hbGVzY2U6VmUsY29sbGF0b3I6dWUsZm9ybWF0OmFlLGludGVycG9sYXRlOk5lLCJpbnRlcnBvbGF0ZS1oY2wiOk5lLCJpbnRlcnBvbGF0ZS1sYWIiOk5lLGxlbmd0aDpycixsZXQ6VWUsbGl0ZXJhbDp0ZSxtYXRjaDpIZSxudW1iZXI6bmUsIm51bWJlci1mb3JtYXQiOmVyLG9iamVjdDpuZSxzdGVwOm1lLHN0cmluZzpuZSwidG8tYm9vbGVhbiI6b2UsInRvLWNvbG9yIjpvZSwidG8tbnVtYmVyIjpvZSwidG8tc3RyaW5nIjpvZSx2YXI6ZGV9O2Z1bmN0aW9uIGFyKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0sYT1lWzJdLGk9ZVszXTtyPXIuZXZhbHVhdGUodCksbj1uLmV2YWx1YXRlKHQpLGE9YS5ldmFsdWF0ZSh0KTt2YXIgbz1pP2kuZXZhbHVhdGUodCk6MSxzPUt0KHIsbixhLG8pO2lmKHMpdGhyb3cgbmV3IGVlKHMpO3JldHVybiBuZXcgV3Qoci8yNTUqbyxuLzI1NSpvLGEvMjU1Km8sbyl9ZnVuY3Rpb24gaXIodCxlKXtyZXR1cm4gdCBpbiBlfWZ1bmN0aW9uIG9yKHQsZSl7dmFyIHI9ZVt0XTtyZXR1cm4gdm9pZCAwPT09cj9udWxsOnJ9ZnVuY3Rpb24gc3IodCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gbHIodCl7cmV0dXJue3Jlc3VsdDoic3VjY2VzcyIsdmFsdWU6dH19ZnVuY3Rpb24gY3IodCl7cmV0dXJue3Jlc3VsdDoiZXJyb3IiLHZhbHVlOnR9fWZ1bmN0aW9uIHVyKHQpe3JldHVybiJkYXRhLWRyaXZlbiI9PT10WyJwcm9wZXJ0eS10eXBlIl18fCJjcm9zcy1mYWRlZC1kYXRhLWRyaXZlbiI9PT10WyJwcm9wZXJ0eS10eXBlIl19ZnVuY3Rpb24gaHIodCl7cmV0dXJuISF0LmV4cHJlc3Npb24mJnQuZXhwcmVzc2lvbi5wYXJhbWV0ZXJzLmluZGV4T2YoInpvb20iKT4tMX1mdW5jdGlvbiBmcih0KXtyZXR1cm4hIXQuZXhwcmVzc2lvbiYmdC5leHByZXNzaW9uLmludGVycG9sYXRlZH1mdW5jdGlvbiBwcih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE51bWJlcj8ibnVtYmVyIjp0IGluc3RhbmNlb2YgU3RyaW5nPyJzdHJpbmciOnQgaW5zdGFuY2VvZiBCb29sZWFuPyJib29sZWFuIjpBcnJheS5pc0FycmF5KHQpPyJhcnJheSI6bnVsbD09PXQ/Im51bGwiOnR5cGVvZiB0fWZ1bmN0aW9uIGRyKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJiFBcnJheS5pc0FycmF5KHQpfWZ1bmN0aW9uIGdyKHQpe3JldHVybiB0fWZ1bmN0aW9uIHZyKHQsZSxyKXtyZXR1cm4gdm9pZCAwIT09dD90OnZvaWQgMCE9PWU/ZTp2b2lkIDAhPT1yP3I6dm9pZCAwfWZ1bmN0aW9uIG1yKHQsZSxyLG4sYSl7cmV0dXJuIHZyKHR5cGVvZiByPT09YT9uW3JdOnZvaWQgMCx0LmRlZmF1bHQsZS5kZWZhdWx0KX1mdW5jdGlvbiB5cih0LGUscil7aWYoIm51bWJlciIhPT1wcihyKSlyZXR1cm4gdnIodC5kZWZhdWx0LGUuZGVmYXVsdCk7dmFyIG49dC5zdG9wcy5sZW5ndGg7aWYoMT09PW4pcmV0dXJuIHQuc3RvcHNbMF1bMV07aWYocjw9dC5zdG9wc1swXVswXSlyZXR1cm4gdC5zdG9wc1swXVsxXTtpZihyPj10LnN0b3BzW24tMV1bMF0pcmV0dXJuIHQuc3RvcHNbbi0xXVsxXTt2YXIgYT12ZSh0LnN0b3BzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFswXX0pLHIpO3JldHVybiB0LnN0b3BzW2FdWzFdfWZ1bmN0aW9uIHhyKHQsZSxyKXt2YXIgbj12b2lkIDAhPT10LmJhc2U/dC5iYXNlOjE7aWYoIm51bWJlciIhPT1wcihyKSlyZXR1cm4gdnIodC5kZWZhdWx0LGUuZGVmYXVsdCk7dmFyIGE9dC5zdG9wcy5sZW5ndGg7aWYoMT09PWEpcmV0dXJuIHQuc3RvcHNbMF1bMV07aWYocjw9dC5zdG9wc1swXVswXSlyZXR1cm4gdC5zdG9wc1swXVsxXTtpZihyPj10LnN0b3BzW2EtMV1bMF0pcmV0dXJuIHQuc3RvcHNbYS0xXVsxXTt2YXIgaT12ZSh0LnN0b3BzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFswXX0pLHIpLG89ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9bi1yLGk9dC1yO3JldHVybiAwPT09YT8wOjE9PT1lP2kvYTooTWF0aC5wb3coZSxpKS0xKS8oTWF0aC5wb3coZSxhKS0xKX0ocixuLHQuc3RvcHNbaV1bMF0sdC5zdG9wc1tpKzFdWzBdKSxzPXQuc3RvcHNbaV1bMV0sbD10LnN0b3BzW2krMV1bMV0sYz14ZVtlLnR5cGVdfHxncjtpZih0LmNvbG9yU3BhY2UmJiJyZ2IiIT09dC5jb2xvclNwYWNlKXt2YXIgdT1CZVt0LmNvbG9yU3BhY2VdO2M9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdS5yZXZlcnNlKHUuaW50ZXJwb2xhdGUodS5mb3J3YXJkKHQpLHUuZm9yd2FyZChlKSxvKSl9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzLmV2YWx1YXRlP3tldmFsdWF0ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPWFyZ3VtZW50cy5sZW5ndGg7ZS0tOyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgcj1zLmV2YWx1YXRlLmFwcGx5KHZvaWQgMCx0KSxuPWwuZXZhbHVhdGUuYXBwbHkodm9pZCAwLHQpO2lmKHZvaWQgMCE9PXImJnZvaWQgMCE9PW4pcmV0dXJuIGMocixuLG8pfX06YyhzLGwsbyl9ZnVuY3Rpb24gYnIodCxlLHIpe3JldHVybiJjb2xvciI9PT1lLnR5cGU/cj1XdC5wYXJzZShyKToiZm9ybWF0dGVkIj09PWUudHlwZT9yPUp0LmZyb21TdHJpbmcoci50b1N0cmluZygpKTpwcihyKT09PWUudHlwZXx8ImVudW0iPT09ZS50eXBlJiZlLnZhbHVlc1tyXXx8KHI9dm9pZCAwKSx2cihyLHQuZGVmYXVsdCxlLmRlZmF1bHQpfWNlLnJlZ2lzdGVyKG5yLHtlcnJvcjpbe2tpbmQ6ImVycm9yIn0sW0R0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07dGhyb3cgbmV3IGVlKHIuZXZhbHVhdGUodCkpfV0sdHlwZW9mOltEdCxbTnRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHF0KFF0KGVbMF0uZXZhbHVhdGUodCkpKX1dLCJ0by1yZ2JhIjpbVXQoSXQsNCksW0Z0XSxmdW5jdGlvbih0LGUpe3JldHVybiBlWzBdLmV2YWx1YXRlKHQpLnRvQXJyYXkoKX1dLHJnYjpbRnQsW0l0LEl0LEl0XSxhcl0scmdiYTpbRnQsW0l0LEl0LEl0LEl0XSxhcl0saGFzOnt0eXBlOlJ0LG92ZXJsb2FkczpbW1tEdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIoZVswXS5ldmFsdWF0ZSh0KSx0LnByb3BlcnRpZXMoKSl9XSxbW0R0LEJ0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybiBpcihyLmV2YWx1YXRlKHQpLG4uZXZhbHVhdGUodCkpfV1dfSxnZXQ6e3R5cGU6TnQsb3ZlcmxvYWRzOltbW0R0XSxmdW5jdGlvbih0LGUpe3JldHVybiBvcihlWzBdLmV2YWx1YXRlKHQpLHQucHJvcGVydGllcygpKX1dLFtbRHQsQnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIG9yKHIuZXZhbHVhdGUodCksbi5ldmFsdWF0ZSh0KSl9XV19LCJmZWF0dXJlLXN0YXRlIjpbTnQsW0R0XSxmdW5jdGlvbih0LGUpe3JldHVybiBvcihlWzBdLmV2YWx1YXRlKHQpLHQuZmVhdHVyZVN0YXRlfHx7fSl9XSxwcm9wZXJ0aWVzOltCdCxbXSxmdW5jdGlvbih0KXtyZXR1cm4gdC5wcm9wZXJ0aWVzKCl9XSwiZ2VvbWV0cnktdHlwZSI6W0R0LFtdLGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdlb21ldHJ5VHlwZSgpfV0saWQ6W050LFtdLGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkKCl9XSx6b29tOltJdCxbXSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnpvb219XSwiaGVhdG1hcC1kZW5zaXR5IjpbSXQsW10sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5oZWF0bWFwRGVuc2l0eXx8MH1dLCJsaW5lLXByb2dyZXNzIjpbSXQsW10sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5saW5lUHJvZ3Jlc3N8fDB9XSxhY2N1bXVsYXRlZDpbTnQsW10sZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQuZ2xvYmFscy5hY2N1bXVsYXRlZD9udWxsOnQuZ2xvYmFscy5hY2N1bXVsYXRlZH1dLCIrIjpbSXQsc3IoSXQpLGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0wLGE9ZTtuPGEubGVuZ3RoO24rPTEpcis9YVtuXS5ldmFsdWF0ZSh0KTtyZXR1cm4gcn1dLCIqIjpbSXQsc3IoSXQpLGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTEsbj0wLGE9ZTtuPGEubGVuZ3RoO24rPTEpcio9YVtuXS5ldmFsdWF0ZSh0KTtyZXR1cm4gcn1dLCItIjp7dHlwZTpJdCxvdmVybG9hZHM6W1tbSXQsSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIHIuZXZhbHVhdGUodCktbi5ldmFsdWF0ZSh0KX1dLFtbSXRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuLWVbMF0uZXZhbHVhdGUodCl9XV19LCIvIjpbSXQsW0l0LEl0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybiByLmV2YWx1YXRlKHQpL24uZXZhbHVhdGUodCl9XSwiJSI6W0l0LFtJdCxJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXTtyZXR1cm4gci5ldmFsdWF0ZSh0KSVuLmV2YWx1YXRlKHQpfV0sbG4yOltJdCxbXSxmdW5jdGlvbigpe3JldHVybiBNYXRoLkxOMn1dLHBpOltJdCxbXSxmdW5jdGlvbigpe3JldHVybiBNYXRoLlBJfV0sZTpbSXQsW10sZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5FfV0sIl4iOltJdCxbSXQsSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIE1hdGgucG93KHIuZXZhbHVhdGUodCksbi5ldmFsdWF0ZSh0KSl9XSxzcXJ0OltJdCxbSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5zcXJ0KHIuZXZhbHVhdGUodCkpfV0sbG9nMTA6W0l0LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmxvZyhyLmV2YWx1YXRlKHQpKS9NYXRoLkxOMTB9XSxsbjpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1hdGgubG9nKHIuZXZhbHVhdGUodCkpfV0sbG9nMjpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1hdGgubG9nKHIuZXZhbHVhdGUodCkpL01hdGguTE4yfV0sc2luOltJdCxbSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5zaW4oci5ldmFsdWF0ZSh0KSl9XSxjb3M6W0l0LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmNvcyhyLmV2YWx1YXRlKHQpKX1dLHRhbjpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1hdGgudGFuKHIuZXZhbHVhdGUodCkpfV0sYXNpbjpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1hdGguYXNpbihyLmV2YWx1YXRlKHQpKX1dLGFjb3M6W0l0LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmFjb3Moci5ldmFsdWF0ZSh0KSl9XSxhdGFuOltJdCxbSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5hdGFuKHIuZXZhbHVhdGUodCkpfV0sbWluOltJdCxzcihJdCksZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5taW4uYXBwbHkoTWF0aCxlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5ldmFsdWF0ZSh0KX0pKX1dLG1heDpbSXQsc3IoSXQpLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXZhbHVhdGUodCl9KSl9XSxhYnM6W0l0LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmFicyhyLmV2YWx1YXRlKHQpKX1dLHJvdW5kOltJdCxbSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS5ldmFsdWF0ZSh0KTtyZXR1cm4gcjwwPy1NYXRoLnJvdW5kKC1yKTpNYXRoLnJvdW5kKHIpfV0sZmxvb3I6W0l0LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmZsb29yKHIuZXZhbHVhdGUodCkpfV0sY2VpbDpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1hdGguY2VpbChyLmV2YWx1YXRlKHQpKX1dLCJmaWx0ZXItPT0iOltSdCxbRHQsTnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIHQucHJvcGVydGllcygpW3IudmFsdWVdPT09bi52YWx1ZX1dLCJmaWx0ZXItaWQtPT0iOltSdCxbTnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gdC5pZCgpPT09ci52YWx1ZX1dLCJmaWx0ZXItdHlwZS09PSI6W1J0LFtEdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiB0Lmdlb21ldHJ5VHlwZSgpPT09ci52YWx1ZX1dLCJmaWx0ZXItPCI6W1J0LFtEdCxOdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxhPXQucHJvcGVydGllcygpW3IudmFsdWVdLGk9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIGE9PXR5cGVvZiBpJiZhPGl9XSwiZmlsdGVyLWlkLTwiOltSdCxbTnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPXQuaWQoKSxhPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBuPT10eXBlb2YgYSYmbjxhfV0sImZpbHRlci0+IjpbUnQsW0R0LE50XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGE9dC5wcm9wZXJ0aWVzKClbci52YWx1ZV0saT1uLnZhbHVlO3JldHVybiB0eXBlb2YgYT09dHlwZW9mIGkmJmE+aX1dLCJmaWx0ZXItaWQtPiI6W1J0LFtOdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49dC5pZCgpLGE9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIG49PXR5cGVvZiBhJiZuPmF9XSwiZmlsdGVyLTw9IjpbUnQsW0R0LE50XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGE9dC5wcm9wZXJ0aWVzKClbci52YWx1ZV0saT1uLnZhbHVlO3JldHVybiB0eXBlb2YgYT09dHlwZW9mIGkmJmE8PWl9XSwiZmlsdGVyLWlkLTw9IjpbUnQsW050XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj10LmlkKCksYT1yLnZhbHVlO3JldHVybiB0eXBlb2Ygbj09dHlwZW9mIGEmJm48PWF9XSwiZmlsdGVyLT49IjpbUnQsW0R0LE50XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGE9dC5wcm9wZXJ0aWVzKClbci52YWx1ZV0saT1uLnZhbHVlO3JldHVybiB0eXBlb2YgYT09dHlwZW9mIGkmJmE+PWl9XSwiZmlsdGVyLWlkLT49IjpbUnQsW050XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj10LmlkKCksYT1yLnZhbHVlO3JldHVybiB0eXBlb2Ygbj09dHlwZW9mIGEmJm4+PWF9XSwiZmlsdGVyLWhhcyI6W1J0LFtOdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gZVswXS52YWx1ZSBpbiB0LnByb3BlcnRpZXMoKX1dLCJmaWx0ZXItaGFzLWlkIjpbUnQsW10sZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10LmlkKCl9XSwiZmlsdGVyLXR5cGUtaW4iOltSdCxbVXQoRHQpXSxmdW5jdGlvbih0LGUpe3JldHVybiBlWzBdLnZhbHVlLmluZGV4T2YodC5nZW9tZXRyeVR5cGUoKSk+PTB9XSwiZmlsdGVyLWlkLWluIjpbUnQsW1V0KE50KV0sZnVuY3Rpb24odCxlKXtyZXR1cm4gZVswXS52YWx1ZS5pbmRleE9mKHQuaWQoKSk+PTB9XSwiZmlsdGVyLWluLXNtYWxsIjpbUnQsW0R0LFV0KE50KV0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBlWzFdLnZhbHVlLmluZGV4T2YodC5wcm9wZXJ0aWVzKClbci52YWx1ZV0pPj0wfV0sImZpbHRlci1pbi1sYXJnZSI6W1J0LFtEdCxVdChOdCldLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4pe2Zvcig7cjw9bjspe3ZhciBhPXIrbj4+MTtpZihlW2FdPT09dClyZXR1cm4hMDtlW2FdPnQ/bj1hLTE6cj1hKzF9cmV0dXJuITF9KHQucHJvcGVydGllcygpW3IudmFsdWVdLG4udmFsdWUsMCxuLnZhbHVlLmxlbmd0aC0xKX1dLGFsbDp7dHlwZTpSdCxvdmVybG9hZHM6W1tbUnQsUnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIHIuZXZhbHVhdGUodCkmJm4uZXZhbHVhdGUodCl9XSxbc3IoUnQpLGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj1lO3I8bi5sZW5ndGg7cis9MSlpZighbltyXS5ldmFsdWF0ZSh0KSlyZXR1cm4hMTtyZXR1cm4hMH1dXX0sYW55Ont0eXBlOlJ0LG92ZXJsb2FkczpbW1tSdCxSdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXTtyZXR1cm4gci5ldmFsdWF0ZSh0KXx8bi5ldmFsdWF0ZSh0KX1dLFtzcihSdCksZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPWU7cjxuLmxlbmd0aDtyKz0xKWlmKG5bcl0uZXZhbHVhdGUodCkpcmV0dXJuITA7cmV0dXJuITF9XV19LCIhIjpbUnQsW1J0XSxmdW5jdGlvbih0LGUpe3JldHVybiFlWzBdLmV2YWx1YXRlKHQpfV0sImlzLXN1cHBvcnRlZC1zY3JpcHQiOltSdCxbRHRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPXQuZ2xvYmFscyYmdC5nbG9iYWxzLmlzU3VwcG9ydGVkU2NyaXB0O3JldHVybiFufHxuKHIuZXZhbHVhdGUodCkpfV0sdXBjYXNlOltEdCxbRHRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVbMF0uZXZhbHVhdGUodCkudG9VcHBlckNhc2UoKX1dLGRvd25jYXNlOltEdCxbRHRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVbMF0uZXZhbHVhdGUodCkudG9Mb3dlckNhc2UoKX1dLGNvbmNhdDpbRHQsc3IoTnQpLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiAkdChlLmV2YWx1YXRlKHQpKX0pLmpvaW4oIiIpfV0sInJlc29sdmVkLWxvY2FsZSI6W0R0LFtqdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gZVswXS5ldmFsdWF0ZSh0KS5yZXNvbHZlZExvY2FsZSgpfV19KTt2YXIgX3I9ZnVuY3Rpb24odCxlKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLl93YXJuaW5nSGlzdG9yeT17fSx0aGlzLl9ldmFsdWF0b3I9bmV3IGxlLHRoaXMuX2RlZmF1bHRWYWx1ZT1lP2Z1bmN0aW9uKHQpe3JldHVybiJjb2xvciI9PT10LnR5cGUmJmRyKHQuZGVmYXVsdCk/bmV3IFd0KDAsMCwwLDApOiJjb2xvciI9PT10LnR5cGU/V3QucGFyc2UodC5kZWZhdWx0KXx8bnVsbDp2b2lkIDA9PT10LmRlZmF1bHQ/bnVsbDp0LmRlZmF1bHR9KGUpOm51bGwsdGhpcy5fZW51bVZhbHVlcz1lJiYiZW51bSI9PT1lLnR5cGU/ZS52YWx1ZXM6bnVsbH07ZnVuY3Rpb24gd3IodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPjAmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmdFswXWluIG5yfWZ1bmN0aW9uIGtyKHQsZSl7dmFyIHI9bmV3IGdlKG5yLFtdLGU/ZnVuY3Rpb24odCl7dmFyIGU9e2NvbG9yOkZ0LHN0cmluZzpEdCxudW1iZXI6SXQsZW51bTpEdCxib29sZWFuOlJ0LGZvcm1hdHRlZDpWdH07cmV0dXJuImFycmF5Ij09PXQudHlwZT9VdChlW3QudmFsdWVdfHxOdCx0Lmxlbmd0aCk6ZVt0LnR5cGVdfShlKTp2b2lkIDApLG49ci5wYXJzZSh0LHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUmJiJzdHJpbmciPT09ZS50eXBlP3t0eXBlQW5ub3RhdGlvbjoiY29lcmNlIn06dm9pZCAwKTtyZXR1cm4gbj9scihuZXcgX3IobixlKSk6Y3Ioci5lcnJvcnMpfV9yLnByb3RvdHlwZS5ldmFsdWF0ZVdpdGhvdXRFcnJvckhhbmRsaW5nPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLl9ldmFsdWF0b3IuZ2xvYmFscz10LHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlPWUsdGhpcy5fZXZhbHVhdG9yLmZlYXR1cmVTdGF0ZT1yLHRoaXMuX2V2YWx1YXRvci5mb3JtYXR0ZWRTZWN0aW9uPW4sdGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKHRoaXMuX2V2YWx1YXRvcil9LF9yLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0LGUscixuKXt0aGlzLl9ldmFsdWF0b3IuZ2xvYmFscz10LHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlPWV8fG51bGwsdGhpcy5fZXZhbHVhdG9yLmZlYXR1cmVTdGF0ZT1yfHxudWxsLHRoaXMuX2V2YWx1YXRvci5mb3JtYXR0ZWRTZWN0aW9uPW58fG51bGw7dHJ5e3ZhciBhPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZSh0aGlzLl9ldmFsdWF0b3IpO2lmKG51bGw9PWEpcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZTtpZih0aGlzLl9lbnVtVmFsdWVzJiYhKGEgaW4gdGhpcy5fZW51bVZhbHVlcykpdGhyb3cgbmV3IGVlKCJFeHBlY3RlZCB2YWx1ZSB0byBiZSBvbmUgb2YgIitPYmplY3Qua2V5cyh0aGlzLl9lbnVtVmFsdWVzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfSkuam9pbigiLCAiKSsiLCBidXQgZm91bmQgIitKU09OLnN0cmluZ2lmeShhKSsiIGluc3RlYWQuIik7cmV0dXJuIGF9Y2F0Y2godCl7cmV0dXJuIHRoaXMuX3dhcm5pbmdIaXN0b3J5W3QubWVzc2FnZV18fCh0aGlzLl93YXJuaW5nSGlzdG9yeVt0Lm1lc3NhZ2VdPSEwLCJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuKHQubWVzc2FnZSkpLHRoaXMuX2RlZmF1bHRWYWx1ZX19O3ZhciBUcj1mdW5jdGlvbih0LGUpe3RoaXMua2luZD10LHRoaXMuX3N0eWxlRXhwcmVzc2lvbj1lLHRoaXMuaXNTdGF0ZURlcGVuZGVudD0iY29uc3RhbnQiIT09dCYmIWZlKGUuZXhwcmVzc2lvbil9O1RyLnByb3RvdHlwZS5ldmFsdWF0ZVdpdGhvdXRFcnJvckhhbmRsaW5nPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLl9zdHlsZUV4cHJlc3Npb24uZXZhbHVhdGVXaXRob3V0RXJyb3JIYW5kbGluZyh0LGUscixuKX0sVHIucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLl9zdHlsZUV4cHJlc3Npb24uZXZhbHVhdGUodCxlLHIsbil9O3ZhciBNcj1mdW5jdGlvbih0LGUscixuKXt0aGlzLmtpbmQ9dCx0aGlzLnpvb21TdG9wcz1yLHRoaXMuX3N0eWxlRXhwcmVzc2lvbj1lLHRoaXMuaXNTdGF0ZURlcGVuZGVudD0iY2FtZXJhIiE9PXQmJiFmZShlLmV4cHJlc3Npb24pLHRoaXMuaW50ZXJwb2xhdGlvblR5cGU9bn07ZnVuY3Rpb24gQXIodCxlKXtpZigiZXJyb3IiPT09KHQ9a3IodCxlKSkucmVzdWx0KXJldHVybiB0O3ZhciByPXQudmFsdWUuZXhwcmVzc2lvbixuPWhlKHIpO2lmKCFuJiYhdXIoZSkpcmV0dXJuIGNyKFtuZXcgUHQoIiIsImRhdGEgZXhwcmVzc2lvbnMgbm90IHN1cHBvcnRlZCIpXSk7dmFyIGE9cGUocixbInpvb20iXSk7aWYoIWEmJiFocihlKSlyZXR1cm4gY3IoW25ldyBQdCgiIiwiem9vbSBleHByZXNzaW9ucyBub3Qgc3VwcG9ydGVkIildKTt2YXIgaT1mdW5jdGlvbiB0KGUpe3ZhciByPW51bGw7aWYoZSBpbnN0YW5jZW9mIFVlKXI9dChlLnJlc3VsdCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgVmUpZm9yKHZhciBuPTAsYT1lLmFyZ3M7bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1hW25dO2lmKHI9dChpKSlicmVha31lbHNlKGUgaW5zdGFuY2VvZiBtZXx8ZSBpbnN0YW5jZW9mIE5lKSYmZS5pbnB1dCBpbnN0YW5jZW9mIGNlJiYiem9vbSI9PT1lLmlucHV0Lm5hbWUmJihyPWUpO3JldHVybiByIGluc3RhbmNlb2YgUHQ/cjooZS5lYWNoQ2hpbGQoZnVuY3Rpb24oZSl7dmFyIG49dChlKTtuIGluc3RhbmNlb2YgUHQ/cj1uOiFyJiZuP3I9bmV3IFB0KCIiLCciem9vbSIgZXhwcmVzc2lvbiBtYXkgb25seSBiZSB1c2VkIGFzIGlucHV0IHRvIGEgdG9wLWxldmVsICJzdGVwIiBvciAiaW50ZXJwb2xhdGUiIGV4cHJlc3Npb24uJyk6ciYmbiYmciE9PW4mJihyPW5ldyBQdCgiIiwnT25seSBvbmUgem9vbS1iYXNlZCAic3RlcCIgb3IgImludGVycG9sYXRlIiBzdWJleHByZXNzaW9uIG1heSBiZSB1c2VkIGluIGFuIGV4cHJlc3Npb24uJykpfSkscil9KHIpO2lmKCFpJiYhYSlyZXR1cm4gY3IoW25ldyBQdCgiIiwnInpvb20iIGV4cHJlc3Npb24gbWF5IG9ubHkgYmUgdXNlZCBhcyBpbnB1dCB0byBhIHRvcC1sZXZlbCAic3RlcCIgb3IgImludGVycG9sYXRlIiBleHByZXNzaW9uLicpXSk7aWYoaSBpbnN0YW5jZW9mIFB0KXJldHVybiBjcihbaV0pO2lmKGkgaW5zdGFuY2VvZiBOZSYmIWZyKGUpKXJldHVybiBjcihbbmV3IFB0KCIiLCciaW50ZXJwb2xhdGUiIGV4cHJlc3Npb25zIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhpcyBwcm9wZXJ0eScpXSk7aWYoIWkpcmV0dXJuIGxyKG5ldyBUcihuPyJjb25zdGFudCI6InNvdXJjZSIsdC52YWx1ZSkpO3ZhciBvPWkgaW5zdGFuY2VvZiBOZT9pLmludGVycG9sYXRpb246dm9pZCAwO3JldHVybiBscihuZXcgTXIobj8iY2FtZXJhIjoiY29tcG9zaXRlIix0LnZhbHVlLGkubGFiZWxzLG8pKX1Nci5wcm90b3R5cGUuZXZhbHVhdGVXaXRob3V0RXJyb3JIYW5kbGluZz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdGhpcy5fc3R5bGVFeHByZXNzaW9uLmV2YWx1YXRlV2l0aG91dEVycm9ySGFuZGxpbmcodCxlLHIsbil9LE1yLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdGhpcy5fc3R5bGVFeHByZXNzaW9uLmV2YWx1YXRlKHQsZSxyLG4pfSxNci5wcm90b3R5cGUuaW50ZXJwb2xhdGlvbkZhY3Rvcj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvblR5cGU/TmUuaW50ZXJwb2xhdGlvbkZhY3Rvcih0aGlzLmludGVycG9sYXRpb25UeXBlLHQsZSxyKTowfTt2YXIgU3I9ZnVuY3Rpb24odCxlKXt0aGlzLl9wYXJhbWV0ZXJzPXQsdGhpcy5fc3BlY2lmaWNhdGlvbj1lLFN0KHRoaXMsZnVuY3Rpb24gdChlLHIpe3ZhciBuLGEsaSxvPSJjb2xvciI9PT1yLnR5cGUscz1lLnN0b3BzJiYib2JqZWN0Ij09dHlwZW9mIGUuc3RvcHNbMF1bMF0sbD1zfHx2b2lkIDAhPT1lLnByb3BlcnR5LGM9c3x8IWwsdT1lLnR5cGV8fChmcihyKT8iZXhwb25lbnRpYWwiOiJpbnRlcnZhbCIpO2lmKG8mJigoZT1TdCh7fSxlKSkuc3RvcHMmJihlLnN0b3BzPWUuc3RvcHMubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0WzBdLFd0LnBhcnNlKHRbMV0pXX0pKSxlLmRlZmF1bHQ/ZS5kZWZhdWx0PVd0LnBhcnNlKGUuZGVmYXVsdCk6ZS5kZWZhdWx0PVd0LnBhcnNlKHIuZGVmYXVsdCkpLGUuY29sb3JTcGFjZSYmInJnYiIhPT1lLmNvbG9yU3BhY2UmJiFCZVtlLmNvbG9yU3BhY2VdKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb2xvciBzcGFjZTogIitlLmNvbG9yU3BhY2UpO2lmKCJleHBvbmVudGlhbCI9PT11KW49eHI7ZWxzZSBpZigiaW50ZXJ2YWwiPT09dSluPXlyO2Vsc2UgaWYoImNhdGVnb3JpY2FsIj09PXUpe249bXIsYT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcih2YXIgaD0wLGY9ZS5zdG9wcztoPGYubGVuZ3RoO2grPTEpe3ZhciBwPWZbaF07YVtwWzBdXT1wWzFdfWk9dHlwZW9mIGUuc3RvcHNbMF1bMF19ZWxzZXtpZigiaWRlbnRpdHkiIT09dSl0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZnVuY3Rpb24gdHlwZSAiJyt1KyciJyk7bj1icn1pZihzKXtmb3IodmFyIGQ9e30sZz1bXSx2PTA7djxlLnN0b3BzLmxlbmd0aDt2Kyspe3ZhciBtPWUuc3RvcHNbdl0seT1tWzBdLnpvb207dm9pZCAwPT09ZFt5XSYmKGRbeV09e3pvb206eSx0eXBlOmUudHlwZSxwcm9wZXJ0eTplLnByb3BlcnR5LGRlZmF1bHQ6ZS5kZWZhdWx0LHN0b3BzOltdfSxnLnB1c2goeSkpLGRbeV0uc3RvcHMucHVzaChbbVswXS52YWx1ZSxtWzFdXSl9Zm9yKHZhciB4PVtdLGI9MCxfPWc7YjxfLmxlbmd0aDtiKz0xKXt2YXIgdz1fW2JdO3gucHVzaChbZFt3XS56b29tLHQoZFt3XSxyKV0pfXZhciBrPXtuYW1lOiJsaW5lYXIifTtyZXR1cm57a2luZDoiY29tcG9zaXRlIixpbnRlcnBvbGF0aW9uVHlwZTprLGludGVycG9sYXRpb25GYWN0b3I6TmUuaW50ZXJwb2xhdGlvbkZhY3Rvci5iaW5kKHZvaWQgMCxrKSx6b29tU3RvcHM6eC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF19KSxldmFsdWF0ZTpmdW5jdGlvbih0LG4pe3ZhciBhPXQuem9vbTtyZXR1cm4geHIoe3N0b3BzOngsYmFzZTplLmJhc2V9LHIsYSkuZXZhbHVhdGUoYSxuKX19fWlmKGMpe3ZhciBUPSJleHBvbmVudGlhbCI9PT11P3tuYW1lOiJleHBvbmVudGlhbCIsYmFzZTp2b2lkIDAhPT1lLmJhc2U/ZS5iYXNlOjF9Om51bGw7cmV0dXJue2tpbmQ6ImNhbWVyYSIsaW50ZXJwb2xhdGlvblR5cGU6VCxpbnRlcnBvbGF0aW9uRmFjdG9yOk5lLmludGVycG9sYXRpb25GYWN0b3IuYmluZCh2b2lkIDAsVCksem9vbVN0b3BzOmUuc3RvcHMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdfSksZXZhbHVhdGU6ZnVuY3Rpb24odCl7dmFyIG89dC56b29tO3JldHVybiBuKGUscixvLGEsaSl9fX1yZXR1cm57a2luZDoic291cmNlIixldmFsdWF0ZTpmdW5jdGlvbih0LG8pe3ZhciBzPW8mJm8ucHJvcGVydGllcz9vLnByb3BlcnRpZXNbZS5wcm9wZXJ0eV06dm9pZCAwO3JldHVybiB2b2lkIDA9PT1zP3ZyKGUuZGVmYXVsdCxyLmRlZmF1bHQpOm4oZSxyLHMsYSxpKX19fSh0aGlzLl9wYXJhbWV0ZXJzLHRoaXMuX3NwZWNpZmljYXRpb24pKX07ZnVuY3Rpb24gRXIodCl7dmFyIGU9dC5rZXkscj10LnZhbHVlLG49dC52YWx1ZVNwZWN8fHt9LGE9dC5vYmplY3RFbGVtZW50VmFsaWRhdG9yc3x8e30saT10LnN0eWxlLG89dC5zdHlsZVNwZWMscz1bXSxsPXByKHIpO2lmKCJvYmplY3QiIT09bClyZXR1cm5bbmV3IE10KGUsciwib2JqZWN0IGV4cGVjdGVkLCAiK2wrIiBmb3VuZCIpXTtmb3IodmFyIGMgaW4gcil7dmFyIHU9Yy5zcGxpdCgiLiIpWzBdLGg9blt1XXx8blsiKiJdLGY9dm9pZCAwO2lmKGFbdV0pZj1hW3VdO2Vsc2UgaWYoblt1XSlmPVFyO2Vsc2UgaWYoYVsiKiJdKWY9YVsiKiJdO2Vsc2V7aWYoIW5bIioiXSl7cy5wdXNoKG5ldyBNdChlLHJbY10sJ3Vua25vd24gcHJvcGVydHkgIicrYysnIicpKTtjb250aW51ZX1mPVFyfXM9cy5jb25jYXQoZih7a2V5OihlP2UrIi4iOmUpK2MsdmFsdWU6cltjXSx2YWx1ZVNwZWM6aCxzdHlsZTppLHN0eWxlU3BlYzpvLG9iamVjdDpyLG9iamVjdEtleTpjfSxyKSl9Zm9yKHZhciBwIGluIG4pYVtwXXx8bltwXS5yZXF1aXJlZCYmdm9pZCAwPT09bltwXS5kZWZhdWx0JiZ2b2lkIDA9PT1yW3BdJiZzLnB1c2gobmV3IE10KGUsciwnbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSAiJytwKyciJykpO3JldHVybiBzfWZ1bmN0aW9uIExyKHQpe3ZhciBlPXQudmFsdWUscj10LnZhbHVlU3BlYyxuPXQuc3R5bGUsYT10LnN0eWxlU3BlYyxpPXQua2V5LG89dC5hcnJheUVsZW1lbnRWYWxpZGF0b3J8fFFyO2lmKCJhcnJheSIhPT1wcihlKSlyZXR1cm5bbmV3IE10KGksZSwiYXJyYXkgZXhwZWN0ZWQsICIrcHIoZSkrIiBmb3VuZCIpXTtpZihyLmxlbmd0aCYmZS5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm5bbmV3IE10KGksZSwiYXJyYXkgbGVuZ3RoICIrci5sZW5ndGgrIiBleHBlY3RlZCwgbGVuZ3RoICIrZS5sZW5ndGgrIiBmb3VuZCIpXTtpZihyWyJtaW4tbGVuZ3RoIl0mJmUubGVuZ3RoPHJbIm1pbi1sZW5ndGgiXSlyZXR1cm5bbmV3IE10KGksZSwiYXJyYXkgbGVuZ3RoIGF0IGxlYXN0ICIrclsibWluLWxlbmd0aCJdKyIgZXhwZWN0ZWQsIGxlbmd0aCAiK2UubGVuZ3RoKyIgZm91bmQiKV07dmFyIHM9e3R5cGU6ci52YWx1ZSx2YWx1ZXM6ci52YWx1ZXN9O2EuJHZlcnNpb248NyYmKHMuZnVuY3Rpb249ci5mdW5jdGlvbiksIm9iamVjdCI9PT1wcihyLnZhbHVlKSYmKHM9ci52YWx1ZSk7Zm9yKHZhciBsPVtdLGM9MDtjPGUubGVuZ3RoO2MrKylsPWwuY29uY2F0KG8oe2FycmF5OmUsYXJyYXlJbmRleDpjLHZhbHVlOmVbY10sdmFsdWVTcGVjOnMsc3R5bGU6bixzdHlsZVNwZWM6YSxrZXk6aSsiWyIrYysiXSJ9KSk7cmV0dXJuIGx9ZnVuY3Rpb24gQ3IodCl7dmFyIGU9dC5rZXkscj10LnZhbHVlLG49dC52YWx1ZVNwZWMsYT1wcihyKTtyZXR1cm4ibnVtYmVyIiE9PWE/W25ldyBNdChlLHIsIm51bWJlciBleHBlY3RlZCwgIithKyIgZm91bmQiKV06Im1pbmltdW0iaW4gbiYmcjxuLm1pbmltdW0/W25ldyBNdChlLHIscisiIGlzIGxlc3MgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAiK24ubWluaW11bSldOiJtYXhpbXVtImluIG4mJnI+bi5tYXhpbXVtP1tuZXcgTXQoZSxyLHIrIiBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgIituLm1heGltdW0pXTpbXX1mdW5jdGlvbiBQcih0KXt2YXIgZSxyLG4sYT10LnZhbHVlU3BlYyxpPUx0KHQudmFsdWUudHlwZSksbz17fSxzPSJjYXRlZ29yaWNhbCIhPT1pJiZ2b2lkIDA9PT10LnZhbHVlLnByb3BlcnR5LGw9IXMsYz0iYXJyYXkiPT09cHIodC52YWx1ZS5zdG9wcykmJiJhcnJheSI9PT1wcih0LnZhbHVlLnN0b3BzWzBdKSYmIm9iamVjdCI9PT1wcih0LnZhbHVlLnN0b3BzWzBdWzBdKSx1PUVyKHtrZXk6dC5rZXksdmFsdWU6dC52YWx1ZSx2YWx1ZVNwZWM6dC5zdHlsZVNwZWMuZnVuY3Rpb24sc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0RWxlbWVudFZhbGlkYXRvcnM6e3N0b3BzOmZ1bmN0aW9uKHQpe2lmKCJpZGVudGl0eSI9PT1pKXJldHVybltuZXcgTXQodC5rZXksdC52YWx1ZSwnaWRlbnRpdHkgZnVuY3Rpb24gbWF5IG5vdCBoYXZlIGEgInN0b3BzIiBwcm9wZXJ0eScpXTt2YXIgZT1bXSxyPXQudmFsdWU7cmV0dXJuIGU9ZS5jb25jYXQoTHIoe2tleTp0LmtleSx2YWx1ZTpyLHZhbHVlU3BlYzp0LnZhbHVlU3BlYyxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlYyxhcnJheUVsZW1lbnRWYWxpZGF0b3I6aH0pKSwiYXJyYXkiPT09cHIocikmJjA9PT1yLmxlbmd0aCYmZS5wdXNoKG5ldyBNdCh0LmtleSxyLCJhcnJheSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHN0b3AiKSksZX0sZGVmYXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gUXIoe2tleTp0LmtleSx2YWx1ZTp0LnZhbHVlLHZhbHVlU3BlYzphLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjfSl9fX0pO3JldHVybiJpZGVudGl0eSI9PT1pJiZzJiZ1LnB1c2gobmV3IE10KHQua2V5LHQudmFsdWUsJ21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgInByb3BlcnR5IicpKSwiaWRlbnRpdHkiPT09aXx8dC52YWx1ZS5zdG9wc3x8dS5wdXNoKG5ldyBNdCh0LmtleSx0LnZhbHVlLCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5ICJzdG9wcyInKSksImV4cG9uZW50aWFsIj09PWkmJnQudmFsdWVTcGVjLmV4cHJlc3Npb24mJiFmcih0LnZhbHVlU3BlYykmJnUucHVzaChuZXcgTXQodC5rZXksdC52YWx1ZSwiZXhwb25lbnRpYWwgZnVuY3Rpb25zIG5vdCBzdXBwb3J0ZWQiKSksdC5zdHlsZVNwZWMuJHZlcnNpb24+PTgmJihsJiYhdXIodC52YWx1ZVNwZWMpP3UucHVzaChuZXcgTXQodC5rZXksdC52YWx1ZSwicHJvcGVydHkgZnVuY3Rpb25zIG5vdCBzdXBwb3J0ZWQiKSk6cyYmIWhyKHQudmFsdWVTcGVjKSYmdS5wdXNoKG5ldyBNdCh0LmtleSx0LnZhbHVlLCJ6b29tIGZ1bmN0aW9ucyBub3Qgc3VwcG9ydGVkIikpKSwiY2F0ZWdvcmljYWwiIT09aSYmIWN8fHZvaWQgMCE9PXQudmFsdWUucHJvcGVydHl8fHUucHVzaChuZXcgTXQodC5rZXksdC52YWx1ZSwnInByb3BlcnR5IiBwcm9wZXJ0eSBpcyByZXF1aXJlZCcpKSx1O2Z1bmN0aW9uIGgodCl7dmFyIGU9W10saT10LnZhbHVlLHM9dC5rZXk7aWYoImFycmF5IiE9PXByKGkpKXJldHVybltuZXcgTXQocyxpLCJhcnJheSBleHBlY3RlZCwgIitwcihpKSsiIGZvdW5kIildO2lmKDIhPT1pLmxlbmd0aClyZXR1cm5bbmV3IE10KHMsaSwiYXJyYXkgbGVuZ3RoIDIgZXhwZWN0ZWQsIGxlbmd0aCAiK2kubGVuZ3RoKyIgZm91bmQiKV07aWYoYyl7aWYoIm9iamVjdCIhPT1wcihpWzBdKSlyZXR1cm5bbmV3IE10KHMsaSwib2JqZWN0IGV4cGVjdGVkLCAiK3ByKGlbMF0pKyIgZm91bmQiKV07aWYodm9pZCAwPT09aVswXS56b29tKXJldHVybltuZXcgTXQocyxpLCJvYmplY3Qgc3RvcCBrZXkgbXVzdCBoYXZlIHpvb20iKV07aWYodm9pZCAwPT09aVswXS52YWx1ZSlyZXR1cm5bbmV3IE10KHMsaSwib2JqZWN0IHN0b3Aga2V5IG11c3QgaGF2ZSB2YWx1ZSIpXTtpZihuJiZuPkx0KGlbMF0uem9vbSkpcmV0dXJuW25ldyBNdChzLGlbMF0uem9vbSwic3RvcCB6b29tIHZhbHVlcyBtdXN0IGFwcGVhciBpbiBhc2NlbmRpbmcgb3JkZXIiKV07THQoaVswXS56b29tKSE9PW4mJihuPUx0KGlbMF0uem9vbSkscj12b2lkIDAsbz17fSksZT1lLmNvbmNhdChFcih7a2V5OnMrIlswXSIsdmFsdWU6aVswXSx2YWx1ZVNwZWM6e3pvb206e319LHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOnt6b29tOkNyLHZhbHVlOmZ9fSkpfWVsc2UgZT1lLmNvbmNhdChmKHtrZXk6cysiWzBdIix2YWx1ZTppWzBdLHZhbHVlU3BlYzp7fSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlY30saSkpO3JldHVybiB3cihDdChpWzFdKSk/ZS5jb25jYXQoW25ldyBNdChzKyJbMV0iLGlbMV0sImV4cHJlc3Npb25zIGFyZSBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiBzdG9wcy4iKV0pOmUuY29uY2F0KFFyKHtrZXk6cysiWzFdIix2YWx1ZTppWzFdLHZhbHVlU3BlYzphLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjfSkpfWZ1bmN0aW9uIGYodCxuKXt2YXIgcz1wcih0LnZhbHVlKSxsPUx0KHQudmFsdWUpLGM9bnVsbCE9PXQudmFsdWU/dC52YWx1ZTpuO2lmKGUpe2lmKHMhPT1lKXJldHVybltuZXcgTXQodC5rZXksYyxzKyIgc3RvcCBkb21haW4gdHlwZSBtdXN0IG1hdGNoIHByZXZpb3VzIHN0b3AgZG9tYWluIHR5cGUgIitlKV19ZWxzZSBlPXM7aWYoIm51bWJlciIhPT1zJiYic3RyaW5nIiE9PXMmJiJib29sZWFuIiE9PXMpcmV0dXJuW25ldyBNdCh0LmtleSxjLCJzdG9wIGRvbWFpbiB2YWx1ZSBtdXN0IGJlIGEgbnVtYmVyLCBzdHJpbmcsIG9yIGJvb2xlYW4iKV07aWYoIm51bWJlciIhPT1zJiYiY2F0ZWdvcmljYWwiIT09aSl7dmFyIHU9Im51bWJlciBleHBlY3RlZCwgIitzKyIgZm91bmQiO3JldHVybiB1cihhKSYmdm9pZCAwPT09aSYmKHUrPSdcbklmIHlvdSBpbnRlbmRlZCB0byB1c2UgYSBjYXRlZ29yaWNhbCBmdW5jdGlvbiwgc3BlY2lmeSBgInR5cGUiOiAiY2F0ZWdvcmljYWwiYC4nKSxbbmV3IE10KHQua2V5LGMsdSldfXJldHVybiJjYXRlZ29yaWNhbCIhPT1pfHwibnVtYmVyIiE9PXN8fGlzRmluaXRlKGwpJiZNYXRoLmZsb29yKGwpPT09bD8iY2F0ZWdvcmljYWwiIT09aSYmIm51bWJlciI9PT1zJiZ2b2lkIDAhPT1yJiZsPHI/W25ldyBNdCh0LmtleSxjLCJzdG9wIGRvbWFpbiB2YWx1ZXMgbXVzdCBhcHBlYXIgaW4gYXNjZW5kaW5nIG9yZGVyIildOihyPWwsImNhdGVnb3JpY2FsIj09PWkmJmwgaW4gbz9bbmV3IE10KHQua2V5LGMsInN0b3AgZG9tYWluIHZhbHVlcyBtdXN0IGJlIHVuaXF1ZSIpXToob1tsXT0hMCxbXSkpOltuZXcgTXQodC5rZXksYywiaW50ZWdlciBleHBlY3RlZCwgZm91bmQgIitsKV19fWZ1bmN0aW9uIE9yKHQpe3ZhciBlPSgicHJvcGVydHkiPT09dC5leHByZXNzaW9uQ29udGV4dD9BcjprcikoQ3QodC52YWx1ZSksdC52YWx1ZVNwZWMpO2lmKCJlcnJvciI9PT1lLnJlc3VsdClyZXR1cm4gZS52YWx1ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBNdCgiIit0LmtleStlLmtleSx0LnZhbHVlLGUubWVzc2FnZSl9KTt2YXIgcj1lLnZhbHVlLmV4cHJlc3Npb258fGUudmFsdWUuX3N0eWxlRXhwcmVzc2lvbi5leHByZXNzaW9uO2lmKCJwcm9wZXJ0eSI9PT10LmV4cHJlc3Npb25Db250ZXh0JiYidGV4dC1mb250Ij09PXQucHJvcGVydHlLZXkmJi0xIT09ci5wb3NzaWJsZU91dHB1dHMoKS5pbmRleE9mKHZvaWQgMCkpcmV0dXJuW25ldyBNdCh0LmtleSx0LnZhbHVlLCdJbnZhbGlkIGRhdGEgZXhwcmVzc2lvbiBmb3IgIicrdC5wcm9wZXJ0eUtleSsnIi4gT3V0cHV0IHZhbHVlcyBtdXN0IGJlIGNvbnRhaW5lZCBhcyBsaXRlcmFscyB3aXRoaW4gdGhlIGV4cHJlc3Npb24uJyldO2lmKCJwcm9wZXJ0eSI9PT10LmV4cHJlc3Npb25Db250ZXh0JiYibGF5b3V0Ij09PXQucHJvcGVydHlUeXBlJiYhZmUocikpcmV0dXJuW25ldyBNdCh0LmtleSx0LnZhbHVlLCciZmVhdHVyZS1zdGF0ZSIgZGF0YSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIGxheW91dCBwcm9wZXJ0aWVzLicpXTtpZigiZmlsdGVyIj09PXQuZXhwcmVzc2lvbkNvbnRleHQmJiFmZShyKSlyZXR1cm5bbmV3IE10KHQua2V5LHQudmFsdWUsJyJmZWF0dXJlLXN0YXRlIiBkYXRhIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggZmlsdGVycy4nKV07aWYodC5leHByZXNzaW9uQ29udGV4dCYmMD09PXQuZXhwcmVzc2lvbkNvbnRleHQuaW5kZXhPZigiY2x1c3RlciIpKXtpZighcGUocixbInpvb20iLCJmZWF0dXJlLXN0YXRlIl0pKXJldHVybltuZXcgTXQodC5rZXksdC52YWx1ZSwnInpvb20iIGFuZCAiZmVhdHVyZS1zdGF0ZSIgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCBjbHVzdGVyIHByb3BlcnRpZXMuJyldO2lmKCJjbHVzdGVyLWluaXRpYWwiPT09dC5leHByZXNzaW9uQ29udGV4dCYmIWhlKHIpKXJldHVybltuZXcgTXQodC5rZXksdC52YWx1ZSwiRmVhdHVyZSBkYXRhIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggaW5pdGlhbCBleHByZXNzaW9uIHBhcnQgb2YgY2x1c3RlciBwcm9wZXJ0aWVzLiIpXX1yZXR1cm5bXX1mdW5jdGlvbiB6cih0KXt2YXIgZT10LmtleSxyPXQudmFsdWUsbj10LnZhbHVlU3BlYyxhPVtdO3JldHVybiBBcnJheS5pc0FycmF5KG4udmFsdWVzKT8tMT09PW4udmFsdWVzLmluZGV4T2YoTHQocikpJiZhLnB1c2gobmV3IE10KGUsciwiZXhwZWN0ZWQgb25lIG9mIFsiK24udmFsdWVzLmpvaW4oIiwgIikrIl0sICIrSlNPTi5zdHJpbmdpZnkocikrIiBmb3VuZCIpKTotMT09PU9iamVjdC5rZXlzKG4udmFsdWVzKS5pbmRleE9mKEx0KHIpKSYmYS5wdXNoKG5ldyBNdChlLHIsImV4cGVjdGVkIG9uZSBvZiBbIitPYmplY3Qua2V5cyhuLnZhbHVlcykuam9pbigiLCAiKSsiXSwgIitKU09OLnN0cmluZ2lmeShyKSsiIGZvdW5kIikpLGF9ZnVuY3Rpb24gSXIodCl7aWYoITA9PT10fHwhMT09PXQpcmV0dXJuITA7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4hMTtzd2l0Y2godFswXSl7Y2FzZSJoYXMiOnJldHVybiB0Lmxlbmd0aD49MiYmIiRpZCIhPT10WzFdJiYiJHR5cGUiIT09dFsxXTtjYXNlImluIjpjYXNlIiFpbiI6Y2FzZSIhaGFzIjpjYXNlIm5vbmUiOnJldHVybiExO2Nhc2UiPT0iOmNhc2UiIT0iOmNhc2UiPiI6Y2FzZSI+PSI6Y2FzZSI8IjpjYXNlIjw9IjpyZXR1cm4gMyE9PXQubGVuZ3RofHxBcnJheS5pc0FycmF5KHRbMV0pfHxBcnJheS5pc0FycmF5KHRbMl0pO2Nhc2UiYW55IjpjYXNlImFsbCI6Zm9yKHZhciBlPTAscj10LnNsaWNlKDEpO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXTtpZighSXIobikmJiJib29sZWFuIiE9dHlwZW9mIG4pcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMH19U3IuZGVzZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBTcih0Ll9wYXJhbWV0ZXJzLHQuX3NwZWNpZmljYXRpb24pfSxTci5zZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJue19wYXJhbWV0ZXJzOnQuX3BhcmFtZXRlcnMsX3NwZWNpZmljYXRpb246dC5fc3BlY2lmaWNhdGlvbn19O3ZhciBEcj17dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMSx0cmFuc2l0aW9uOiExLCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4iLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX19O2Z1bmN0aW9uIFJyKHQpe2lmKG51bGw9PXQpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuITB9O0lyKHQpfHwodD1Ccih0KSk7dmFyIGU9a3IodCxEcik7aWYoImVycm9yIj09PWUucmVzdWx0KXRocm93IG5ldyBFcnJvcihlLnZhbHVlLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXkrIjogIit0Lm1lc3NhZ2V9KS5qb2luKCIsICIpKTtyZXR1cm4gZnVuY3Rpb24odCxyKXtyZXR1cm4gZS52YWx1ZS5ldmFsdWF0ZSh0LHIpfX1mdW5jdGlvbiBGcih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6MH1mdW5jdGlvbiBCcih0KXtpZighdClyZXR1cm4hMDt2YXIgZSxyPXRbMF07cmV0dXJuIHQubGVuZ3RoPD0xPyJhbnkiIT09cjoiPT0iPT09cj9Ocih0WzFdLHRbMl0sIj09Iik6IiE9Ij09PXI/VXIoTnIodFsxXSx0WzJdLCI9PSIpKToiPCI9PT1yfHwiPiI9PT1yfHwiPD0iPT09cnx8Ij49Ij09PXI/TnIodFsxXSx0WzJdLHIpOiJhbnkiPT09cj8oZT10LnNsaWNlKDEpLFsiYW55Il0uY29uY2F0KGUubWFwKEJyKSkpOiJhbGwiPT09cj9bImFsbCJdLmNvbmNhdCh0LnNsaWNlKDEpLm1hcChCcikpOiJub25lIj09PXI/WyJhbGwiXS5jb25jYXQodC5zbGljZSgxKS5tYXAoQnIpLm1hcChVcikpOiJpbiI9PT1yP2pyKHRbMV0sdC5zbGljZSgyKSk6IiFpbiI9PT1yP1VyKGpyKHRbMV0sdC5zbGljZSgyKSkpOiJoYXMiPT09cj9Wcih0WzFdKToiIWhhcyIhPT1yfHxVcihWcih0WzFdKSl9ZnVuY3Rpb24gTnIodCxlLHIpe3N3aXRjaCh0KXtjYXNlIiR0eXBlIjpyZXR1cm5bImZpbHRlci10eXBlLSIrcixlXTtjYXNlIiRpZCI6cmV0dXJuWyJmaWx0ZXItaWQtIityLGVdO2RlZmF1bHQ6cmV0dXJuWyJmaWx0ZXItIityLHQsZV19fWZ1bmN0aW9uIGpyKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiExO3N3aXRjaCh0KXtjYXNlIiR0eXBlIjpyZXR1cm5bImZpbHRlci10eXBlLWluIixbImxpdGVyYWwiLGVdXTtjYXNlIiRpZCI6cmV0dXJuWyJmaWx0ZXItaWQtaW4iLFsibGl0ZXJhbCIsZV1dO2RlZmF1bHQ6cmV0dXJuIGUubGVuZ3RoPjIwMCYmIWUuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHQhPXR5cGVvZiBlWzBdfSk/WyJmaWx0ZXItaW4tbGFyZ2UiLHQsWyJsaXRlcmFsIixlLnNvcnQoRnIpXV06WyJmaWx0ZXItaW4tc21hbGwiLHQsWyJsaXRlcmFsIixlXV19fWZ1bmN0aW9uIFZyKHQpe3N3aXRjaCh0KXtjYXNlIiR0eXBlIjpyZXR1cm4hMDtjYXNlIiRpZCI6cmV0dXJuWyJmaWx0ZXItaGFzLWlkIl07ZGVmYXVsdDpyZXR1cm5bImZpbHRlci1oYXMiLHRdfX1mdW5jdGlvbiBVcih0KXtyZXR1cm5bIiEiLHRdfWZ1bmN0aW9uIHFyKHQpe3JldHVybiBJcihDdCh0LnZhbHVlKSk/T3IoU3Qoe30sdCx7ZXhwcmVzc2lvbkNvbnRleHQ6ImZpbHRlciIsdmFsdWVTcGVjOnt2YWx1ZToiYm9vbGVhbiJ9fSkpOmZ1bmN0aW9uIHQoZSl7dmFyIHI9ZS52YWx1ZSxuPWUua2V5O2lmKCJhcnJheSIhPT1wcihyKSlyZXR1cm5bbmV3IE10KG4sciwiYXJyYXkgZXhwZWN0ZWQsICIrcHIocikrIiBmb3VuZCIpXTt2YXIgYSxpPWUuc3R5bGVTcGVjLG89W107aWYoci5sZW5ndGg8MSlyZXR1cm5bbmV3IE10KG4sciwiZmlsdGVyIGFycmF5IG11c3QgaGF2ZSBhdCBsZWFzdCAxIGVsZW1lbnQiKV07c3dpdGNoKG89by5jb25jYXQoenIoe2tleTpuKyJbMF0iLHZhbHVlOnJbMF0sdmFsdWVTcGVjOmkuZmlsdGVyX29wZXJhdG9yLHN0eWxlOmUuc3R5bGUsc3R5bGVTcGVjOmUuc3R5bGVTcGVjfSkpLEx0KHJbMF0pKXtjYXNlIjwiOmNhc2UiPD0iOmNhc2UiPiI6Y2FzZSI+PSI6ci5sZW5ndGg+PTImJiIkdHlwZSI9PT1MdChyWzFdKSYmby5wdXNoKG5ldyBNdChuLHIsJyIkdHlwZSIgY2Fubm90IGJlIHVzZSB3aXRoIG9wZXJhdG9yICInK3JbMF0rJyInKSk7Y2FzZSI9PSI6Y2FzZSIhPSI6MyE9PXIubGVuZ3RoJiZvLnB1c2gobmV3IE10KG4sciwnZmlsdGVyIGFycmF5IGZvciBvcGVyYXRvciAiJytyWzBdKyciIG11c3QgaGF2ZSAzIGVsZW1lbnRzJykpO2Nhc2UiaW4iOmNhc2UiIWluIjpyLmxlbmd0aD49MiYmInN0cmluZyIhPT0oYT1wcihyWzFdKSkmJm8ucHVzaChuZXcgTXQobisiWzFdIixyWzFdLCJzdHJpbmcgZXhwZWN0ZWQsICIrYSsiIGZvdW5kIikpO2Zvcih2YXIgcz0yO3M8ci5sZW5ndGg7cysrKWE9cHIocltzXSksIiR0eXBlIj09PUx0KHJbMV0pP289by5jb25jYXQoenIoe2tleTpuKyJbIitzKyJdIix2YWx1ZTpyW3NdLHZhbHVlU3BlYzppLmdlb21ldHJ5X3R5cGUsc3R5bGU6ZS5zdHlsZSxzdHlsZVNwZWM6ZS5zdHlsZVNwZWN9KSk6InN0cmluZyIhPT1hJiYibnVtYmVyIiE9PWEmJiJib29sZWFuIiE9PWEmJm8ucHVzaChuZXcgTXQobisiWyIrcysiXSIscltzXSwic3RyaW5nLCBudW1iZXIsIG9yIGJvb2xlYW4gZXhwZWN0ZWQsICIrYSsiIGZvdW5kIikpO2JyZWFrO2Nhc2UiYW55IjpjYXNlImFsbCI6Y2FzZSJub25lIjpmb3IodmFyIGw9MTtsPHIubGVuZ3RoO2wrKylvPW8uY29uY2F0KHQoe2tleTpuKyJbIitsKyJdIix2YWx1ZTpyW2xdLHN0eWxlOmUuc3R5bGUsc3R5bGVTcGVjOmUuc3R5bGVTcGVjfSkpO2JyZWFrO2Nhc2UiaGFzIjpjYXNlIiFoYXMiOmE9cHIoclsxXSksMiE9PXIubGVuZ3RoP28ucHVzaChuZXcgTXQobixyLCdmaWx0ZXIgYXJyYXkgZm9yICInK3JbMF0rJyIgb3BlcmF0b3IgbXVzdCBoYXZlIDIgZWxlbWVudHMnKSk6InN0cmluZyIhPT1hJiZvLnB1c2gobmV3IE10KG4rIlsxXSIsclsxXSwic3RyaW5nIGV4cGVjdGVkLCAiK2ErIiBmb3VuZCIpKX1yZXR1cm4gb30odCl9ZnVuY3Rpb24gSHIodCxlKXt2YXIgcj10LmtleSxuPXQuc3R5bGUsYT10LnN0eWxlU3BlYyxpPXQudmFsdWUsbz10Lm9iamVjdEtleSxzPWFbZSsiXyIrdC5sYXllclR5cGVdO2lmKCFzKXJldHVybltdO3ZhciBsPW8ubWF0Y2goL14oLiopLXRyYW5zaXRpb24kLyk7aWYoInBhaW50Ij09PWUmJmwmJnNbbFsxXV0mJnNbbFsxXV0udHJhbnNpdGlvbilyZXR1cm4gUXIoe2tleTpyLHZhbHVlOmksdmFsdWVTcGVjOmEudHJhbnNpdGlvbixzdHlsZTpuLHN0eWxlU3BlYzphfSk7dmFyIGMsdT10LnZhbHVlU3BlY3x8c1tvXTtpZighdSlyZXR1cm5bbmV3IE10KHIsaSwndW5rbm93biBwcm9wZXJ0eSAiJytvKyciJyldO2lmKCJzdHJpbmciPT09cHIoaSkmJnVyKHUpJiYhdS50b2tlbnMmJihjPS9eeyhbXn1dKyl9JC8uZXhlYyhpKSkpcmV0dXJuW25ldyBNdChyLGksJyInK28rJyIgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcnBvbGF0aW9uIHN5bnRheFxuVXNlIGFuIGlkZW50aXR5IHByb3BlcnR5IGZ1bmN0aW9uIGluc3RlYWQ6IGB7ICJ0eXBlIjogImlkZW50aXR5IiwgInByb3BlcnR5IjogJytKU09OLnN0cmluZ2lmeShjWzFdKSsiIH1gLiIpXTt2YXIgaD1bXTtyZXR1cm4ic3ltYm9sIj09PXQubGF5ZXJUeXBlJiYoInRleHQtZmllbGQiPT09byYmbiYmIW4uZ2x5cGhzJiZoLnB1c2gobmV3IE10KHIsaSwndXNlIG9mICJ0ZXh0LWZpZWxkIiByZXF1aXJlcyBhIHN0eWxlICJnbHlwaHMiIHByb3BlcnR5JykpLCJ0ZXh0LWZvbnQiPT09byYmZHIoQ3QoaSkpJiYiaWRlbnRpdHkiPT09THQoaS50eXBlKSYmaC5wdXNoKG5ldyBNdChyLGksJyJ0ZXh0LWZvbnQiIGRvZXMgbm90IHN1cHBvcnQgaWRlbnRpdHkgZnVuY3Rpb25zJykpKSxoLmNvbmNhdChRcih7a2V5OnQua2V5LHZhbHVlOmksdmFsdWVTcGVjOnUsc3R5bGU6bixzdHlsZVNwZWM6YSxleHByZXNzaW9uQ29udGV4dDoicHJvcGVydHkiLHByb3BlcnR5VHlwZTplLHByb3BlcnR5S2V5Om99KSl9ZnVuY3Rpb24gR3IodCl7cmV0dXJuIEhyKHQsInBhaW50Iil9ZnVuY3Rpb24gWXIodCl7cmV0dXJuIEhyKHQsImxheW91dCIpfWZ1bmN0aW9uIFdyKHQpe3ZhciBlPVtdLHI9dC52YWx1ZSxuPXQua2V5LGE9dC5zdHlsZSxpPXQuc3R5bGVTcGVjO3IudHlwZXx8ci5yZWZ8fGUucHVzaChuZXcgTXQobixyLCdlaXRoZXIgInR5cGUiIG9yICJyZWYiIGlzIHJlcXVpcmVkJykpO3ZhciBvLHM9THQoci50eXBlKSxsPUx0KHIucmVmKTtpZihyLmlkKWZvcih2YXIgYz1MdChyLmlkKSx1PTA7dTx0LmFycmF5SW5kZXg7dSsrKXt2YXIgaD1hLmxheWVyc1t1XTtMdChoLmlkKT09PWMmJmUucHVzaChuZXcgTXQobixyLmlkLCdkdXBsaWNhdGUgbGF5ZXIgaWQgIicrci5pZCsnIiwgcHJldmlvdXNseSB1c2VkIGF0IGxpbmUgJytoLmlkLl9fbGluZV9fKSl9aWYoInJlZiJpbiByKVsidHlwZSIsInNvdXJjZSIsInNvdXJjZS1sYXllciIsImZpbHRlciIsImxheW91dCJdLmZvckVhY2goZnVuY3Rpb24odCl7dCBpbiByJiZlLnB1c2gobmV3IE10KG4sclt0XSwnIicrdCsnIiBpcyBwcm9oaWJpdGVkIGZvciByZWYgbGF5ZXJzJykpfSksYS5sYXllcnMuZm9yRWFjaChmdW5jdGlvbih0KXtMdCh0LmlkKT09PWwmJihvPXQpfSksbz9vLnJlZj9lLnB1c2gobmV3IE10KG4sci5yZWYsInJlZiBjYW5ub3QgcmVmZXJlbmNlIGFub3RoZXIgcmVmIGxheWVyIikpOnM9THQoby50eXBlKTplLnB1c2gobmV3IE10KG4sci5yZWYsJ3JlZiBsYXllciAiJytsKyciIG5vdCBmb3VuZCcpKTtlbHNlIGlmKCJiYWNrZ3JvdW5kIiE9PXMpaWYoci5zb3VyY2Upe3ZhciBmPWEuc291cmNlcyYmYS5zb3VyY2VzW3Iuc291cmNlXSxwPWYmJkx0KGYudHlwZSk7Zj8idmVjdG9yIj09PXAmJiJyYXN0ZXIiPT09cz9lLnB1c2gobmV3IE10KG4sci5zb3VyY2UsJ2xheWVyICInK3IuaWQrJyIgcmVxdWlyZXMgYSByYXN0ZXIgc291cmNlJykpOiJyYXN0ZXIiPT09cCYmInJhc3RlciIhPT1zP2UucHVzaChuZXcgTXQobixyLnNvdXJjZSwnbGF5ZXIgIicrci5pZCsnIiByZXF1aXJlcyBhIHZlY3RvciBzb3VyY2UnKSk6InZlY3RvciIhPT1wfHxyWyJzb3VyY2UtbGF5ZXIiXT8icmFzdGVyLWRlbSI9PT1wJiYiaGlsbHNoYWRlIiE9PXM/ZS5wdXNoKG5ldyBNdChuLHIuc291cmNlLCJyYXN0ZXItZGVtIHNvdXJjZSBjYW4gb25seSBiZSB1c2VkIHdpdGggbGF5ZXIgdHlwZSAnaGlsbHNoYWRlJy4iKSk6ImxpbmUiIT09c3x8IXIucGFpbnR8fCFyLnBhaW50WyJsaW5lLWdyYWRpZW50Il18fCJnZW9qc29uIj09PXAmJmYubGluZU1ldHJpY3N8fGUucHVzaChuZXcgTXQobixyLCdsYXllciAiJytyLmlkKyciIHNwZWNpZmllcyBhIGxpbmUtZ3JhZGllbnQsIHdoaWNoIHJlcXVpcmVzIGEgR2VvSlNPTiBzb3VyY2Ugd2l0aCBgbGluZU1ldHJpY3NgIGVuYWJsZWQuJykpOmUucHVzaChuZXcgTXQobixyLCdsYXllciAiJytyLmlkKyciIG11c3Qgc3BlY2lmeSBhICJzb3VyY2UtbGF5ZXIiJykpOmUucHVzaChuZXcgTXQobixyLnNvdXJjZSwnc291cmNlICInK3Iuc291cmNlKyciIG5vdCBmb3VuZCcpKX1lbHNlIGUucHVzaChuZXcgTXQobixyLCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5ICJzb3VyY2UiJykpO3JldHVybiBlPWUuY29uY2F0KEVyKHtrZXk6bix2YWx1ZTpyLHZhbHVlU3BlYzppLmxheWVyLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOnsiKiI6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdHlwZTpmdW5jdGlvbigpe3JldHVybiBRcih7a2V5Om4rIi50eXBlIix2YWx1ZTpyLnR5cGUsdmFsdWVTcGVjOmkubGF5ZXIudHlwZSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlYyxvYmplY3Q6cixvYmplY3RLZXk6InR5cGUifSl9LGZpbHRlcjpxcixsYXlvdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIEVyKHtsYXllcjpyLGtleTp0LmtleSx2YWx1ZTp0LnZhbHVlLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOnsiKiI6ZnVuY3Rpb24odCl7cmV0dXJuIFlyKFN0KHtsYXllclR5cGU6c30sdCkpfX19KX0scGFpbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIEVyKHtsYXllcjpyLGtleTp0LmtleSx2YWx1ZTp0LnZhbHVlLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOnsiKiI6ZnVuY3Rpb24odCl7cmV0dXJuIEdyKFN0KHtsYXllclR5cGU6c30sdCkpfX19KX19fSkpfWZ1bmN0aW9uIFhyKHQpe3ZhciBlPXQudmFsdWUscj10LmtleSxuPXQuc3R5bGVTcGVjLGE9dC5zdHlsZTtpZighZS50eXBlKXJldHVybltuZXcgTXQocixlLCcidHlwZSIgaXMgcmVxdWlyZWQnKV07dmFyIGksbz1MdChlLnR5cGUpO3N3aXRjaChvKXtjYXNlInZlY3RvciI6Y2FzZSJyYXN0ZXIiOmNhc2UicmFzdGVyLWRlbSI6cmV0dXJuIEVyKHtrZXk6cix2YWx1ZTplLHZhbHVlU3BlYzpuWyJzb3VyY2VfIitvLnJlcGxhY2UoIi0iLCJfIildLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOm59KTtjYXNlImdlb2pzb24iOmlmKGk9RXIoe2tleTpyLHZhbHVlOmUsdmFsdWVTcGVjOm4uc291cmNlX2dlb2pzb24sc3R5bGU6YSxzdHlsZVNwZWM6bn0pLGUuY2x1c3Rlcilmb3IodmFyIHMgaW4gZS5jbHVzdGVyUHJvcGVydGllcyl7dmFyIGw9ZS5jbHVzdGVyUHJvcGVydGllc1tzXSxjPWxbMF0sdT1sWzFdLGg9InN0cmluZyI9PXR5cGVvZiBjP1tjLFsiYWNjdW11bGF0ZWQiXSxbImdldCIsc11dOmM7aS5wdXNoLmFwcGx5KGksT3Ioe2tleTpyKyIuIitzKyIubWFwIix2YWx1ZTp1LGV4cHJlc3Npb25Db250ZXh0OiJjbHVzdGVyLW1hcCJ9KSksaS5wdXNoLmFwcGx5KGksT3Ioe2tleTpyKyIuIitzKyIucmVkdWNlIix2YWx1ZTpoLGV4cHJlc3Npb25Db250ZXh0OiJjbHVzdGVyLXJlZHVjZSJ9KSl9cmV0dXJuIGk7Y2FzZSJ2aWRlbyI6cmV0dXJuIEVyKHtrZXk6cix2YWx1ZTplLHZhbHVlU3BlYzpuLnNvdXJjZV92aWRlbyxzdHlsZTphLHN0eWxlU3BlYzpufSk7Y2FzZSJpbWFnZSI6cmV0dXJuIEVyKHtrZXk6cix2YWx1ZTplLHZhbHVlU3BlYzpuLnNvdXJjZV9pbWFnZSxzdHlsZTphLHN0eWxlU3BlYzpufSk7Y2FzZSJjYW52YXMiOnJldHVybltuZXcgTXQocixudWxsLCJQbGVhc2UgdXNlIHJ1bnRpbWUgQVBJcyB0byBhZGQgY2FudmFzIHNvdXJjZXMsIHJhdGhlciB0aGFuIGluY2x1ZGluZyB0aGVtIGluIHN0eWxlc2hlZXRzLiIsInNvdXJjZS5jYW52YXMiKV07ZGVmYXVsdDpyZXR1cm4genIoe2tleTpyKyIudHlwZSIsdmFsdWU6ZS50eXBlLHZhbHVlU3BlYzp7dmFsdWVzOlsidmVjdG9yIiwicmFzdGVyIiwicmFzdGVyLWRlbSIsImdlb2pzb24iLCJ2aWRlbyIsImltYWdlIl19LHN0eWxlOmEsc3R5bGVTcGVjOm59KX19ZnVuY3Rpb24gWnIodCl7dmFyIGU9dC52YWx1ZSxyPXQuc3R5bGVTcGVjLG49ci5saWdodCxhPXQuc3R5bGUsaT1bXSxvPXByKGUpO2lmKHZvaWQgMD09PWUpcmV0dXJuIGk7aWYoIm9iamVjdCIhPT1vKXJldHVybiBpLmNvbmNhdChbbmV3IE10KCJsaWdodCIsZSwib2JqZWN0IGV4cGVjdGVkLCAiK28rIiBmb3VuZCIpXSk7Zm9yKHZhciBzIGluIGUpe3ZhciBsPXMubWF0Y2goL14oLiopLXRyYW5zaXRpb24kLyk7aT1sJiZuW2xbMV1dJiZuW2xbMV1dLnRyYW5zaXRpb24/aS5jb25jYXQoUXIoe2tleTpzLHZhbHVlOmVbc10sdmFsdWVTcGVjOnIudHJhbnNpdGlvbixzdHlsZTphLHN0eWxlU3BlYzpyfSkpOm5bc10/aS5jb25jYXQoUXIoe2tleTpzLHZhbHVlOmVbc10sdmFsdWVTcGVjOm5bc10sc3R5bGU6YSxzdHlsZVNwZWM6cn0pKTppLmNvbmNhdChbbmV3IE10KHMsZVtzXSwndW5rbm93biBwcm9wZXJ0eSAiJytzKyciJyldKX1yZXR1cm4gaX1mdW5jdGlvbiBKcih0KXt2YXIgZT10LnZhbHVlLHI9dC5rZXksbj1wcihlKTtyZXR1cm4ic3RyaW5nIiE9PW4/W25ldyBNdChyLGUsInN0cmluZyBleHBlY3RlZCwgIituKyIgZm91bmQiKV06W119dmFyIEtyPXsiKiI6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sYXJyYXk6THIsYm9vbGVhbjpmdW5jdGlvbih0KXt2YXIgZT10LnZhbHVlLHI9dC5rZXksbj1wcihlKTtyZXR1cm4iYm9vbGVhbiIhPT1uP1tuZXcgTXQocixlLCJib29sZWFuIGV4cGVjdGVkLCAiK24rIiBmb3VuZCIpXTpbXX0sbnVtYmVyOkNyLGNvbG9yOmZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5LHI9dC52YWx1ZSxuPXByKHIpO3JldHVybiJzdHJpbmciIT09bj9bbmV3IE10KGUsciwiY29sb3IgZXhwZWN0ZWQsICIrbisiIGZvdW5kIildOm51bGw9PT1ZdChyKT9bbmV3IE10KGUsciwnY29sb3IgZXhwZWN0ZWQsICInK3IrJyIgZm91bmQnKV06W119LGNvbnN0YW50czpBdCxlbnVtOnpyLGZpbHRlcjpxcixmdW5jdGlvbjpQcixsYXllcjpXcixvYmplY3Q6RXIsc291cmNlOlhyLGxpZ2h0OlpyLHN0cmluZzpKcixmb3JtYXR0ZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1Kcih0KS5sZW5ndGg/W106T3IodCl9fTtmdW5jdGlvbiBRcih0KXt2YXIgZT10LnZhbHVlLHI9dC52YWx1ZVNwZWMsbj10LnN0eWxlU3BlYztyZXR1cm4gci5leHByZXNzaW9uJiZkcihMdChlKSk/UHIodCk6ci5leHByZXNzaW9uJiZ3cihDdChlKSk/T3IodCk6ci50eXBlJiZLcltyLnR5cGVdP0tyW3IudHlwZV0odCk6RXIoU3Qoe30sdCx7dmFsdWVTcGVjOnIudHlwZT9uW3IudHlwZV06cn0pKX1mdW5jdGlvbiAkcih0KXt2YXIgZT10LnZhbHVlLHI9dC5rZXksbj1Kcih0KTtyZXR1cm4gbi5sZW5ndGg/bjooLTE9PT1lLmluZGV4T2YoIntmb250c3RhY2t9IikmJm4ucHVzaChuZXcgTXQocixlLCciZ2x5cGhzIiB1cmwgbXVzdCBpbmNsdWRlIGEgIntmb250c3RhY2t9IiB0b2tlbicpKSwtMT09PWUuaW5kZXhPZigie3JhbmdlfSIpJiZuLnB1c2gobmV3IE10KHIsZSwnImdseXBocyIgdXJsIG11c3QgaW5jbHVkZSBhICJ7cmFuZ2V9IiB0b2tlbicpKSxuKX1mdW5jdGlvbiB0bih0LGUpe2U9ZXx8VHQ7dmFyIHI9W107cmV0dXJuIHI9ci5jb25jYXQoUXIoe2tleToiIix2YWx1ZTp0LHZhbHVlU3BlYzplLiRyb290LHN0eWxlU3BlYzplLHN0eWxlOnQsb2JqZWN0RWxlbWVudFZhbGlkYXRvcnM6e2dseXBoczokciwiKiI6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSkpLHQuY29uc3RhbnRzJiYocj1yLmNvbmNhdChBdCh7a2V5OiJjb25zdGFudHMiLHZhbHVlOnQuY29uc3RhbnRzLHN0eWxlOnQsc3R5bGVTcGVjOmV9KSkpLGVuKHIpfWZ1bmN0aW9uIGVuKHQpe3JldHVybltdLmNvbmNhdCh0KS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGluZS1lLmxpbmV9KX1mdW5jdGlvbiBybih0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10scj1hcmd1bWVudHMubGVuZ3RoO3ItLTspZVtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGVuKHQuYXBwbHkodGhpcyxlKSl9fXRuLnNvdXJjZT1ybihYciksdG4ubGlnaHQ9cm4oWnIpLHRuLmxheWVyPXJuKFdyKSx0bi5maWx0ZXI9cm4ocXIpLHRuLnBhaW50UHJvcGVydHk9cm4oR3IpLHRuLmxheW91dFByb3BlcnR5PXJuKFlyKTt2YXIgbm49dG4sYW49bm4ubGlnaHQsb249bm4ucGFpbnRQcm9wZXJ0eSxzbj1ubi5sYXlvdXRQcm9wZXJ0eTtmdW5jdGlvbiBsbih0LGUpe3ZhciByPSExO2lmKGUmJmUubGVuZ3RoKWZvcih2YXIgbj0wLGE9ZTtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl07dC5maXJlKG5ldyB3dChuZXcgRXJyb3IoaS5tZXNzYWdlKSkpLHI9ITB9cmV0dXJuIHJ9dmFyIGNuPWhuLHVuPTM7ZnVuY3Rpb24gaG4odCxlLHIpe3ZhciBuPXRoaXMuY2VsbHM9W107aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXt0aGlzLmFycmF5QnVmZmVyPXQ7dmFyIGE9bmV3IEludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7dD1hWzBdLGU9YVsxXSxyPWFbMl0sdGhpcy5kPWUrMipyO2Zvcih2YXIgaT0wO2k8dGhpcy5kKnRoaXMuZDtpKyspe3ZhciBvPWFbdW4raV0scz1hW3VuK2krMV07bi5wdXNoKG89PT1zP251bGw6YS5zdWJhcnJheShvLHMpKX12YXIgbD1hW3VuK24ubGVuZ3RoXSxjPWFbdW4rbi5sZW5ndGgrMV07dGhpcy5rZXlzPWEuc3ViYXJyYXkobCxjKSx0aGlzLmJib3hlcz1hLnN1YmFycmF5KGMpLHRoaXMuaW5zZXJ0PXRoaXMuX2luc2VydFJlYWRvbmx5fWVsc2V7dGhpcy5kPWUrMipyO2Zvcih2YXIgdT0wO3U8dGhpcy5kKnRoaXMuZDt1Kyspbi5wdXNoKFtdKTt0aGlzLmtleXM9W10sdGhpcy5iYm94ZXM9W119dGhpcy5uPWUsdGhpcy5leHRlbnQ9dCx0aGlzLnBhZGRpbmc9cix0aGlzLnNjYWxlPWUvdCx0aGlzLnVpZD0wO3ZhciBoPXIvZSp0O3RoaXMubWluPS1oLHRoaXMubWF4PXQraH1obi5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dGhpcy5fZm9yRWFjaENlbGwoZSxyLG4sYSx0aGlzLl9pbnNlcnRDZWxsLHRoaXMudWlkKyspLHRoaXMua2V5cy5wdXNoKHQpLHRoaXMuYmJveGVzLnB1c2goZSksdGhpcy5iYm94ZXMucHVzaChyKSx0aGlzLmJib3hlcy5wdXNoKG4pLHRoaXMuYmJveGVzLnB1c2goYSl9LGhuLnByb3RvdHlwZS5faW5zZXJ0UmVhZG9ubHk9ZnVuY3Rpb24oKXt0aHJvdyJDYW5ub3QgaW5zZXJ0IGludG8gYSBHcmlkSW5kZXggY3JlYXRlZCBmcm9tIGFuIEFycmF5QnVmZmVyLiJ9LGhuLnByb3RvdHlwZS5faW5zZXJ0Q2VsbD1mdW5jdGlvbih0LGUscixuLGEsaSl7dGhpcy5jZWxsc1thXS5wdXNoKGkpfSxobi5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT10aGlzLm1pbixvPXRoaXMubWF4O2lmKHQ8PWkmJmU8PWkmJm88PXImJm88PW4mJiFhKXJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmtleXMpO3ZhciBzPVtdO3JldHVybiB0aGlzLl9mb3JFYWNoQ2VsbCh0LGUscixuLHRoaXMuX3F1ZXJ5Q2VsbCxzLHt9LGEpLHN9LGhuLnByb3RvdHlwZS5fcXVlcnlDZWxsPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyl7dmFyIGw9dGhpcy5jZWxsc1thXTtpZihudWxsIT09bClmb3IodmFyIGM9dGhpcy5rZXlzLHU9dGhpcy5iYm94ZXMsaD0wO2g8bC5sZW5ndGg7aCsrKXt2YXIgZj1sW2hdO2lmKHZvaWQgMD09PW9bZl0pe3ZhciBwPTQqZjsocz9zKHVbcCswXSx1W3ArMV0sdVtwKzJdLHVbcCszXSk6dDw9dVtwKzJdJiZlPD11W3ArM10mJnI+PXVbcCswXSYmbj49dVtwKzFdKT8ob1tmXT0hMCxpLnB1c2goY1tmXSkpOm9bZl09ITF9fX0saG4ucHJvdG90eXBlLl9mb3JFYWNoQ2VsbD1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe2Zvcih2YXIgbD10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQodCksYz10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQoZSksdT10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQociksaD10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQobiksZj1sO2Y8PXU7ZisrKWZvcih2YXIgcD1jO3A8PWg7cCsrKXt2YXIgZD10aGlzLmQqcCtmO2lmKCghc3x8cyh0aGlzLl9jb252ZXJ0RnJvbUNlbGxDb29yZChmKSx0aGlzLl9jb252ZXJ0RnJvbUNlbGxDb29yZChwKSx0aGlzLl9jb252ZXJ0RnJvbUNlbGxDb29yZChmKzEpLHRoaXMuX2NvbnZlcnRGcm9tQ2VsbENvb3JkKHArMSkpKSYmYS5jYWxsKHRoaXMsdCxlLHIsbixkLGksbyxzKSlyZXR1cm59fSxobi5wcm90b3R5cGUuX2NvbnZlcnRGcm9tQ2VsbENvb3JkPWZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMucGFkZGluZykvdGhpcy5zY2FsZX0saG4ucHJvdG90eXBlLl9jb252ZXJ0VG9DZWxsQ29vcmQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5kLTEsTWF0aC5mbG9vcih0KnRoaXMuc2NhbGUpK3RoaXMucGFkZGluZykpfSxobi5wcm90b3R5cGUudG9BcnJheUJ1ZmZlcj1mdW5jdGlvbigpe2lmKHRoaXMuYXJyYXlCdWZmZXIpcmV0dXJuIHRoaXMuYXJyYXlCdWZmZXI7Zm9yKHZhciB0PXRoaXMuY2VsbHMsZT11bit0aGlzLmNlbGxzLmxlbmd0aCsxKzEscj0wLG49MDtuPHRoaXMuY2VsbHMubGVuZ3RoO24rKylyKz10aGlzLmNlbGxzW25dLmxlbmd0aDt2YXIgYT1uZXcgSW50MzJBcnJheShlK3IrdGhpcy5rZXlzLmxlbmd0aCt0aGlzLmJib3hlcy5sZW5ndGgpO2FbMF09dGhpcy5leHRlbnQsYVsxXT10aGlzLm4sYVsyXT10aGlzLnBhZGRpbmc7Zm9yKHZhciBpPWUsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz10W29dO2FbdW4rb109aSxhLnNldChzLGkpLGkrPXMubGVuZ3RofXJldHVybiBhW3VuK3QubGVuZ3RoXT1pLGEuc2V0KHRoaXMua2V5cyxpKSxpKz10aGlzLmtleXMubGVuZ3RoLGFbdW4rdC5sZW5ndGgrMV09aSxhLnNldCh0aGlzLmJib3hlcyxpKSxpKz10aGlzLmJib3hlcy5sZW5ndGgsYS5idWZmZXJ9O3ZhciBmbj1zZWxmLkltYWdlRGF0YSxwbj17fTtmdW5jdGlvbiBkbih0LGUscil7dm9pZCAwPT09ciYmKHI9e30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfY2xhc3NSZWdpc3RyeUtleSIse3ZhbHVlOnQsd3JpdGVhYmxlOiExfSkscG5bdF09e2tsYXNzOmUsb21pdDpyLm9taXR8fFtdLHNoYWxsb3c6ci5zaGFsbG93fHxbXX19Zm9yKHZhciBnbiBpbiBkbigiT2JqZWN0IixPYmplY3QpLGNuLnNlcmlhbGl6ZT1mdW5jdGlvbih0LGUpe3ZhciByPXQudG9BcnJheUJ1ZmZlcigpO3JldHVybiBlJiZlLnB1c2gocikse2J1ZmZlcjpyfX0sY24uZGVzZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBjbih0LmJ1ZmZlcil9LGRuKCJHcmlkIixjbiksZG4oIkNvbG9yIixXdCksZG4oIkVycm9yIixFcnJvciksZG4oIlN0eWxlUHJvcGVydHlGdW5jdGlvbiIsU3IpLGRuKCJTdHlsZUV4cHJlc3Npb24iLF9yLHtvbWl0OlsiX2V2YWx1YXRvciJdfSksZG4oIlpvb21EZXBlbmRlbnRFeHByZXNzaW9uIixNciksZG4oIlpvb21Db25zdGFudEV4cHJlc3Npb24iLFRyKSxkbigiQ29tcG91bmRFeHByZXNzaW9uIixjZSx7b21pdDpbIl9ldmFsdWF0ZSJdfSksbnIpbnJbZ25dLl9jbGFzc1JlZ2lzdHJ5S2V5fHxkbigiRXhwcmVzc2lvbl8iK2duLG5yW2duXSk7ZnVuY3Rpb24gdm4odCxlKXtpZihudWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwibnVtYmVyIj09dHlwZW9mIHR8fCJzdHJpbmciPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIEJvb2xlYW58fHQgaW5zdGFuY2VvZiBOdW1iZXJ8fHQgaW5zdGFuY2VvZiBTdHJpbmd8fHQgaW5zdGFuY2VvZiBEYXRlfHx0IGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiB0O2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gZSYmZS5wdXNoKHQpLHQ7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQpKXt2YXIgcj10O3JldHVybiBlJiZlLnB1c2goci5idWZmZXIpLHJ9aWYodCBpbnN0YW5jZW9mIGZuKXJldHVybiBlJiZlLnB1c2godC5kYXRhLmJ1ZmZlciksdDtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIG49W10sYT0wLGk9dDthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV07bi5wdXNoKHZuKG8sZSkpfXJldHVybiBufWlmKCJvYmplY3QiPT10eXBlb2YgdCl7dmFyIHM9dC5jb25zdHJ1Y3RvcixsPXMuX2NsYXNzUmVnaXN0cnlLZXk7aWYoIWwpdGhyb3cgbmV3IEVycm9yKCJjYW4ndCBzZXJpYWxpemUgb2JqZWN0IG9mIHVucmVnaXN0ZXJlZCBjbGFzcyIpO3ZhciBjPXMuc2VyaWFsaXplP3Muc2VyaWFsaXplKHQsZSk6e307aWYoIXMuc2VyaWFsaXplKXtmb3IodmFyIHUgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHUpJiYhKHBuW2xdLm9taXQuaW5kZXhPZih1KT49MCkpe3ZhciBoPXRbdV07Y1t1XT1wbltsXS5zaGFsbG93LmluZGV4T2YodSk+PTA/aDp2bihoLGUpfXQgaW5zdGFuY2VvZiBFcnJvciYmKGMubWVzc2FnZT10Lm1lc3NhZ2UpfWlmKGMuJG5hbWUpdGhyb3cgbmV3IEVycm9yKCIkbmFtZSBwcm9wZXJ0eSBpcyByZXNlcnZlZCBmb3Igd29ya2VyIHNlcmlhbGl6YXRpb24gbG9naWMuIik7cmV0dXJuIk9iamVjdCIhPT1sJiYoYy4kbmFtZT1sKSxjfXRocm93IG5ldyBFcnJvcigiY2FuJ3Qgc2VyaWFsaXplIG9iamVjdCBvZiB0eXBlICIrdHlwZW9mIHQpfWZ1bmN0aW9uIG1uKHQpe2lmKG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCJudW1iZXIiPT10eXBlb2YgdHx8InN0cmluZyI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgQm9vbGVhbnx8dCBpbnN0YW5jZW9mIE51bWJlcnx8dCBpbnN0YW5jZW9mIFN0cmluZ3x8dCBpbnN0YW5jZW9mIERhdGV8fHQgaW5zdGFuY2VvZiBSZWdFeHB8fHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpfHx0IGluc3RhbmNlb2YgZm4pcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5tYXAobW4pO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7dmFyIGU9dC4kbmFtZXx8Ik9iamVjdCIscj1wbltlXS5rbGFzcztpZighcil0aHJvdyBuZXcgRXJyb3IoImNhbid0IGRlc2VyaWFsaXplIHVucmVnaXN0ZXJlZCBjbGFzcyAiK2UpO2lmKHIuZGVzZXJpYWxpemUpcmV0dXJuIHIuZGVzZXJpYWxpemUodCk7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpLGE9MCxpPU9iamVjdC5rZXlzKHQpO2E8aS5sZW5ndGg7YSs9MSl7dmFyIG89aVthXTtpZigiJG5hbWUiIT09byl7dmFyIHM9dFtvXTtuW29dPXBuW2VdLnNoYWxsb3cuaW5kZXhPZihvKT49MD9zOm1uKHMpfX1yZXR1cm4gbn10aHJvdyBuZXcgRXJyb3IoImNhbid0IGRlc2VyaWFsaXplIG9iamVjdCBvZiB0eXBlICIrdHlwZW9mIHQpfXZhciB5bj1mdW5jdGlvbigpe3RoaXMuZmlyc3Q9ITB9O3luLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRoLmZsb29yKHQpO3JldHVybiB0aGlzLmZpcnN0Pyh0aGlzLmZpcnN0PSExLHRoaXMubGFzdEludGVnZXJab29tPXIsdGhpcy5sYXN0SW50ZWdlclpvb21UaW1lPTAsdGhpcy5sYXN0Wm9vbT10LHRoaXMubGFzdEZsb29yWm9vbT1yLCEwKToodGhpcy5sYXN0Rmxvb3Jab29tPnI/KHRoaXMubGFzdEludGVnZXJab29tPXIrMSx0aGlzLmxhc3RJbnRlZ2VyWm9vbVRpbWU9ZSk6dGhpcy5sYXN0Rmxvb3Jab29tPHImJih0aGlzLmxhc3RJbnRlZ2VyWm9vbT1yLHRoaXMubGFzdEludGVnZXJab29tVGltZT1lKSx0IT09dGhpcy5sYXN0Wm9vbSYmKHRoaXMubGFzdFpvb209dCx0aGlzLmxhc3RGbG9vclpvb209ciwhMCkpfTt2YXIgeG49eyJMYXRpbi0xIFN1cHBsZW1lbnQiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMjgmJnQ8PTI1NX0sQXJhYmljOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xNTM2JiZ0PD0xNzkxfSwiQXJhYmljIFN1cHBsZW1lbnQiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xODcyJiZ0PD0xOTE5fSwiQXJhYmljIEV4dGVuZGVkLUEiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0yMjA4JiZ0PD0yMzAzfSwiSGFuZ3VsIEphbW8iOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj00MzUyJiZ0PD00NjA3fSwiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxhYmljcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTUxMjAmJnQ8PTU3NTl9LEtobWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02MDE2JiZ0PD02MTQzfSwiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxhYmljcyBFeHRlbmRlZCI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTYzMjAmJnQ8PTYzOTl9LCJHZW5lcmFsIFB1bmN0dWF0aW9uIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49ODE5MiYmdDw9ODMwM30sIkxldHRlcmxpa2UgU3ltYm9scyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTg0NDgmJnQ8PTg1Mjd9LCJOdW1iZXIgRm9ybXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj04NTI4JiZ0PD04NTkxfSwiTWlzY2VsbGFuZW91cyBUZWNobmljYWwiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj04OTYwJiZ0PD05MjE1fSwiQ29udHJvbCBQaWN0dXJlcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTkyMTYmJnQ8PTkyNzl9LCJPcHRpY2FsIENoYXJhY3RlciBSZWNvZ25pdGlvbiI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTkyODAmJnQ8PTkzMTF9LCJFbmNsb3NlZCBBbHBoYW51bWVyaWNzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49OTMxMiYmdDw9OTQ3MX0sIkdlb21ldHJpYyBTaGFwZXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj05NjMyJiZ0PD05NzI3fSwiTWlzY2VsbGFuZW91cyBTeW1ib2xzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49OTcyOCYmdDw9OTk4M30sIk1pc2NlbGxhbmVvdXMgU3ltYm9scyBhbmQgQXJyb3dzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTEwMDgmJnQ8PTExMjYzfSwiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnQiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMTkwNCYmdDw9MTIwMzF9LCJLYW5neGkgUmFkaWNhbHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMjAzMiYmdDw9MTIyNTV9LCJJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBDaGFyYWN0ZXJzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTIyNzImJnQ8PTEyMjg3fSwiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTIyODgmJnQ8PTEyMzUxfSxIaXJhZ2FuYTpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTIzNTImJnQ8PTEyNDQ3fSxLYXRha2FuYTpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI0NDgmJnQ8PTEyNTQzfSxCb3BvbW9mbzpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI1NDQmJnQ8PTEyNTkxfSwiSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEyNTkyJiZ0PD0xMjY4N30sS2FuYnVuOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMjY4OCYmdDw9MTI3MDN9LCJCb3BvbW9mbyBFeHRlbmRlZCI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEyNzA0JiZ0PD0xMjczNX0sIkNKSyBTdHJva2VzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI3MzYmJnQ8PTEyNzgzfSwiS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9ucyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEyNzg0JiZ0PD0xMjc5OX0sIkVuY2xvc2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMjgwMCYmdDw9MTMwNTV9LCJDSksgQ29tcGF0aWJpbGl0eSI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEzMDU2JiZ0PD0xMzMxMX0sIkNKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEEiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMzMxMiYmdDw9MTk5MDN9LCJZaWppbmcgSGV4YWdyYW0gU3ltYm9scyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTE5OTA0JiZ0PD0xOTk2N30sIkNKSyBVbmlmaWVkIElkZW9ncmFwaHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xOTk2OCYmdDw9NDA5NTl9LCJZaSBTeWxsYWJsZXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj00MDk2MCYmdDw9NDIxMjd9LCJZaSBSYWRpY2FscyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTQyMTI4JiZ0PD00MjE5MX0sIkhhbmd1bCBKYW1vIEV4dGVuZGVkLUEiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj00MzM2MCYmdDw9NDMzOTF9LCJIYW5ndWwgU3lsbGFibGVzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NDQwMzImJnQ8PTU1MjE1fSwiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQiI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTU1MjE2JiZ0PD01NTI5NX0sIlByaXZhdGUgVXNlIEFyZWEiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj01NzM0NCYmdDw9NjM3NDN9LCJDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NjM3NDQmJnQ8PTY0MjU1fSwiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NjQzMzYmJnQ8PTY1MDIzfSwiVmVydGljYWwgRm9ybXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02NTA0MCYmdDw9NjUwNTV9LCJDSksgQ29tcGF0aWJpbGl0eSBGb3JtcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTY1MDcyJiZ0PD02NTEwM30sIlNtYWxsIEZvcm0gVmFyaWFudHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02NTEwNCYmdDw9NjUxMzV9LCJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUIiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02NTEzNiYmdDw9NjUyNzl9LCJIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3JtcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTY1MjgwJiZ0PD02NTUxOX19O2Z1bmN0aW9uIGJuKHQpe2Zvcih2YXIgZT0wLHI9dDtlPHIubGVuZ3RoO2UrPTEpaWYod24ocltlXS5jaGFyQ29kZUF0KDApKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBfbih0KXtyZXR1cm4hKHhuLkFyYWJpYyh0KXx8eG5bIkFyYWJpYyBTdXBwbGVtZW50Il0odCl8fHhuWyJBcmFiaWMgRXh0ZW5kZWQtQSJdKHQpfHx4blsiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BIl0odCl8fHhuWyJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUIiXSh0KSl9ZnVuY3Rpb24gd24odCl7cmV0dXJuISEoNzQ2PT09dHx8NzQ3PT09dHx8ISh0PDQzNTIpJiYoeG5bIkJvcG9tb2ZvIEV4dGVuZGVkIl0odCl8fHhuLkJvcG9tb2ZvKHQpfHx4blsiQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMiXSh0KSYmISh0Pj02NTA5NyYmdDw9NjUxMDMpfHx4blsiQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyJdKHQpfHx4blsiQ0pLIENvbXBhdGliaWxpdHkiXSh0KXx8eG5bIkNKSyBSYWRpY2FscyBTdXBwbGVtZW50Il0odCl8fHhuWyJDSksgU3Ryb2tlcyJdKHQpfHwhKCF4blsiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uIl0odCl8fHQ+PTEyMjk2JiZ0PD0xMjMwNXx8dD49MTIzMDgmJnQ8PTEyMzE5fHwxMjMzNj09PXQpfHx4blsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQSJdKHQpfHx4blsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyJdKHQpfHx4blsiRW5jbG9zZWQgQ0pLIExldHRlcnMgYW5kIE1vbnRocyJdKHQpfHx4blsiSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbyJdKHQpfHx4blsiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQSJdKHQpfHx4blsiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQiJdKHQpfHx4blsiSGFuZ3VsIEphbW8iXSh0KXx8eG5bIkhhbmd1bCBTeWxsYWJsZXMiXSh0KXx8eG4uSGlyYWdhbmEodCl8fHhuWyJJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBDaGFyYWN0ZXJzIl0odCl8fHhuLkthbmJ1bih0KXx8eG5bIkthbmd4aSBSYWRpY2FscyJdKHQpfHx4blsiS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9ucyJdKHQpfHx4bi5LYXRha2FuYSh0KSYmMTI1NDAhPT10fHwhKCF4blsiSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXMiXSh0KXx8NjUyODg9PT10fHw2NTI4OT09PXR8fDY1MjkzPT09dHx8dD49NjUzMDYmJnQ8PTY1MzEwfHw2NTMzOT09PXR8fDY1MzQxPT09dHx8NjUzNDM9PT10fHx0Pj02NTM3MSYmdDw9NjU1MDN8fDY1NTA3PT09dHx8dD49NjU1MTImJnQ8PTY1NTE5KXx8ISgheG5bIlNtYWxsIEZvcm0gVmFyaWFudHMiXSh0KXx8dD49NjUxMTImJnQ8PTY1MTE4fHx0Pj02NTEyMyYmdDw9NjUxMjYpfHx4blsiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxhYmljcyJdKHQpfHx4blsiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxhYmljcyBFeHRlbmRlZCJdKHQpfHx4blsiVmVydGljYWwgRm9ybXMiXSh0KXx8eG5bIllpamluZyBIZXhhZ3JhbSBTeW1ib2xzIl0odCl8fHhuWyJZaSBTeWxsYWJsZXMiXSh0KXx8eG5bIllpIFJhZGljYWxzIl0odCkpKX1mdW5jdGlvbiBrbih0KXtyZXR1cm4hKHduKHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hISh4blsiTGF0aW4tMSBTdXBwbGVtZW50Il0odCkmJigxNjc9PT10fHwxNjk9PT10fHwxNzQ9PT10fHwxNzc9PT10fHwxODg9PT10fHwxODk9PT10fHwxOTA9PT10fHwyMTU9PT10fHwyNDc9PT10KXx8eG5bIkdlbmVyYWwgUHVuY3R1YXRpb24iXSh0KSYmKDgyMTQ9PT10fHw4MjI0PT09dHx8ODIyNT09PXR8fDgyNDA9PT10fHw4MjQxPT09dHx8ODI1MT09PXR8fDgyNTI9PT10fHw4MjU4PT09dHx8ODI2Mz09PXR8fDgyNjQ9PT10fHw4MjY1PT09dHx8ODI3Mz09PXQpfHx4blsiTGV0dGVybGlrZSBTeW1ib2xzIl0odCl8fHhuWyJOdW1iZXIgRm9ybXMiXSh0KXx8eG5bIk1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsIl0odCkmJih0Pj04OTYwJiZ0PD04OTY3fHx0Pj04OTcyJiZ0PD04OTkxfHx0Pj04OTk2JiZ0PD05ZTN8fDkwMDM9PT10fHx0Pj05MDg1JiZ0PD05MTE0fHx0Pj05MTUwJiZ0PD05MTY1fHw5MTY3PT09dHx8dD49OTE2OSYmdDw9OTE3OXx8dD49OTE4NiYmdDw9OTIxNSl8fHhuWyJDb250cm9sIFBpY3R1cmVzIl0odCkmJjkyNTEhPT10fHx4blsiT3B0aWNhbCBDaGFyYWN0ZXIgUmVjb2duaXRpb24iXSh0KXx8eG5bIkVuY2xvc2VkIEFscGhhbnVtZXJpY3MiXSh0KXx8eG5bIkdlb21ldHJpYyBTaGFwZXMiXSh0KXx8eG5bIk1pc2NlbGxhbmVvdXMgU3ltYm9scyJdKHQpJiYhKHQ+PTk3NTQmJnQ8PTk3NTkpfHx4blsiTWlzY2VsbGFuZW91cyBTeW1ib2xzIGFuZCBBcnJvd3MiXSh0KSYmKHQ+PTExMDI2JiZ0PD0xMTA1NXx8dD49MTEwODgmJnQ8PTExMDk3fHx0Pj0xMTE5MiYmdDw9MTEyNDMpfHx4blsiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uIl0odCl8fHhuLkthdGFrYW5hKHQpfHx4blsiUHJpdmF0ZSBVc2UgQXJlYSJdKHQpfHx4blsiQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMiXSh0KXx8eG5bIlNtYWxsIEZvcm0gVmFyaWFudHMiXSh0KXx8eG5bIkhhbGZ3aWR0aCBhbmQgRnVsbHdpZHRoIEZvcm1zIl0odCl8fDg3MzQ9PT10fHw4NzU2PT09dHx8ODc1Nz09PXR8fHQ+PTk5ODQmJnQ8PTEwMDg3fHx0Pj0xMDEwMiYmdDw9MTAxMzF8fDY1NTMyPT09dHx8NjU1MzM9PT10KX0odCkpfWZ1bmN0aW9uIFRuKHQsZSl7cmV0dXJuISghZSYmKHQ+PTE0MjQmJnQ8PTIzMDN8fHhuWyJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUEiXSh0KXx8eG5bIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQiJdKHQpKXx8dD49MjMwNCYmdDw9MzU4M3x8dD49Mzg0MCYmdDw9NDI1NXx8eG4uS2htZXIodCkpfXZhciBNbixBbj0hMSxTbj1udWxsLEVuPSExLExuPW5ldyBrdCxDbj17YXBwbHlBcmFiaWNTaGFwaW5nOm51bGwscHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0Om51bGwscHJvY2Vzc1N0eWxlZEJpZGlyZWN0aW9uYWxUZXh0Om51bGwsaXNMb2FkZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gRW58fG51bGwhPUNuLmFwcGx5QXJhYmljU2hhcGluZ319LFBuPWZ1bmN0aW9uKHQsZSl7dGhpcy56b29tPXQsZT8odGhpcy5ub3c9ZS5ub3csdGhpcy5mYWRlRHVyYXRpb249ZS5mYWRlRHVyYXRpb24sdGhpcy56b29tSGlzdG9yeT1lLnpvb21IaXN0b3J5LHRoaXMudHJhbnNpdGlvbj1lLnRyYW5zaXRpb24pOih0aGlzLm5vdz0wLHRoaXMuZmFkZUR1cmF0aW9uPTAsdGhpcy56b29tSGlzdG9yeT1uZXcgeW4sdGhpcy50cmFuc2l0aW9uPXt9KX07UG4ucHJvdG90eXBlLmlzU3VwcG9ydGVkU2NyaXB0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49dDtyPG4ubGVuZ3RoO3IrPTEpaWYoIVRuKG5bcl0uY2hhckNvZGVBdCgwKSxlKSlyZXR1cm4hMTtyZXR1cm4hMH0odCxDbi5pc0xvYWRlZCgpKX0sUG4ucHJvdG90eXBlLmNyb3NzRmFkaW5nRmFjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmZhZGVEdXJhdGlvbj8xOk1hdGgubWluKCh0aGlzLm5vdy10aGlzLnpvb21IaXN0b3J5Lmxhc3RJbnRlZ2VyWm9vbVRpbWUpL3RoaXMuZmFkZUR1cmF0aW9uLDEpfSxQbi5wcm90b3R5cGUuZ2V0Q3Jvc3NmYWRlUGFyYW1ldGVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuem9vbSxlPXQtTWF0aC5mbG9vcih0KSxyPXRoaXMuY3Jvc3NGYWRpbmdGYWN0b3IoKTtyZXR1cm4gdD50aGlzLnpvb21IaXN0b3J5Lmxhc3RJbnRlZ2VyWm9vbT97ZnJvbVNjYWxlOjIsdG9TY2FsZToxLHQ6ZSsoMS1lKSpyfTp7ZnJvbVNjYWxlOi41LHRvU2NhbGU6MSx0OjEtKDEtcikqZX19O3ZhciBPbj1mdW5jdGlvbih0LGUpe3RoaXMucHJvcGVydHk9dCx0aGlzLnZhbHVlPWUsdGhpcy5leHByZXNzaW9uPWZ1bmN0aW9uKHQsZSl7aWYoZHIodCkpcmV0dXJuIG5ldyBTcih0LGUpO2lmKHdyKHQpKXt2YXIgcj1Bcih0LGUpO2lmKCJlcnJvciI9PT1yLnJlc3VsdCl0aHJvdyBuZXcgRXJyb3Ioci52YWx1ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5KyI6ICIrdC5tZXNzYWdlfSkuam9pbigiLCAiKSk7cmV0dXJuIHIudmFsdWV9dmFyIG49dDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJiJjb2xvciI9PT1lLnR5cGUmJihuPVd0LnBhcnNlKHQpKSx7a2luZDoiY29uc3RhbnQiLGV2YWx1YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG59fX0odm9pZCAwPT09ZT90LnNwZWNpZmljYXRpb24uZGVmYXVsdDplLHQuc3BlY2lmaWNhdGlvbil9O09uLnByb3RvdHlwZS5pc0RhdGFEcml2ZW49ZnVuY3Rpb24oKXtyZXR1cm4ic291cmNlIj09PXRoaXMuZXhwcmVzc2lvbi5raW5kfHwiY29tcG9zaXRlIj09PXRoaXMuZXhwcmVzc2lvbi5raW5kfSxPbi5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9wZXJ0eS5wb3NzaWJseUV2YWx1YXRlKHRoaXMsdCl9O3ZhciB6bj1mdW5jdGlvbih0KXt0aGlzLnByb3BlcnR5PXQsdGhpcy52YWx1ZT1uZXcgT24odCx2b2lkIDApfTt6bi5wcm90b3R5cGUudHJhbnNpdGlvbmVkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBEbih0aGlzLnByb3BlcnR5LHRoaXMudmFsdWUsZSxoKHt9LHQudHJhbnNpdGlvbix0aGlzLnRyYW5zaXRpb24pLHQubm93KX0sem4ucHJvdG90eXBlLnVudHJhbnNpdGlvbmVkPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEbih0aGlzLnByb3BlcnR5LHRoaXMudmFsdWUsbnVsbCx7fSwwKX07dmFyIEluPWZ1bmN0aW9uKHQpe3RoaXMuX3Byb3BlcnRpZXM9dCx0aGlzLl92YWx1ZXM9T2JqZWN0LmNyZWF0ZSh0LmRlZmF1bHRUcmFuc2l0aW9uYWJsZVByb3BlcnR5VmFsdWVzKX07SW4ucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBiKHRoaXMuX3ZhbHVlc1t0XS52YWx1ZS52YWx1ZSl9LEluLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3RoaXMuX3ZhbHVlcy5oYXNPd25Qcm9wZXJ0eSh0KXx8KHRoaXMuX3ZhbHVlc1t0XT1uZXcgem4odGhpcy5fdmFsdWVzW3RdLnByb3BlcnR5KSksdGhpcy5fdmFsdWVzW3RdLnZhbHVlPW5ldyBPbih0aGlzLl92YWx1ZXNbdF0ucHJvcGVydHksbnVsbD09PWU/dm9pZCAwOmIoZSkpfSxJbi5wcm90b3R5cGUuZ2V0VHJhbnNpdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYih0aGlzLl92YWx1ZXNbdF0udHJhbnNpdGlvbil9LEluLnByb3RvdHlwZS5zZXRUcmFuc2l0aW9uPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmFsdWVzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5fdmFsdWVzW3RdPW5ldyB6bih0aGlzLl92YWx1ZXNbdF0ucHJvcGVydHkpKSx0aGlzLl92YWx1ZXNbdF0udHJhbnNpdGlvbj1iKGUpfHx2b2lkIDB9LEluLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9e30sZT0wLHI9T2JqZWN0LmtleXModGhpcy5fdmFsdWVzKTtlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV0sYT10aGlzLmdldFZhbHVlKG4pO3ZvaWQgMCE9PWEmJih0W25dPWEpO3ZhciBpPXRoaXMuZ2V0VHJhbnNpdGlvbihuKTt2b2lkIDAhPT1pJiYodFtuKyItdHJhbnNpdGlvbiJdPWkpfXJldHVybiB0fSxJbi5wcm90b3R5cGUudHJhbnNpdGlvbmVkPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW5ldyBSbih0aGlzLl9wcm9wZXJ0aWVzKSxuPTAsYT1PYmplY3Qua2V5cyh0aGlzLl92YWx1ZXMpO248YS5sZW5ndGg7bis9MSl7dmFyIGk9YVtuXTtyLl92YWx1ZXNbaV09dGhpcy5fdmFsdWVzW2ldLnRyYW5zaXRpb25lZCh0LGUuX3ZhbHVlc1tpXSl9cmV0dXJuIHJ9LEluLnByb3RvdHlwZS51bnRyYW5zaXRpb25lZD1mdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgUm4odGhpcy5fcHJvcGVydGllcyksZT0wLHI9T2JqZWN0LmtleXModGhpcy5fdmFsdWVzKTtlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV07dC5fdmFsdWVzW25dPXRoaXMuX3ZhbHVlc1tuXS51bnRyYW5zaXRpb25lZCgpfXJldHVybiB0fTt2YXIgRG49ZnVuY3Rpb24odCxlLHIsbixhKXt0aGlzLnByb3BlcnR5PXQsdGhpcy52YWx1ZT1lLHRoaXMuYmVnaW49YStuLmRlbGF5fHwwLHRoaXMuZW5kPXRoaXMuYmVnaW4rbi5kdXJhdGlvbnx8MCx0LnNwZWNpZmljYXRpb24udHJhbnNpdGlvbiYmKG4uZGVsYXl8fG4uZHVyYXRpb24pJiYodGhpcy5wcmlvcj1yKX07RG4ucHJvdG90eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dC5ub3d8fDAscj10aGlzLnZhbHVlLnBvc3NpYmx5RXZhbHVhdGUodCksbj10aGlzLnByaW9yO2lmKG4pe2lmKGU+dGhpcy5lbmQpcmV0dXJuIHRoaXMucHJpb3I9bnVsbCxyO2lmKHRoaXMudmFsdWUuaXNEYXRhRHJpdmVuKCkpcmV0dXJuIHRoaXMucHJpb3I9bnVsbCxyO2lmKGU8dGhpcy5iZWdpbilyZXR1cm4gbi5wb3NzaWJseUV2YWx1YXRlKHQpO3ZhciBhPShlLXRoaXMuYmVnaW4pLyh0aGlzLmVuZC10aGlzLmJlZ2luKTtyZXR1cm4gdGhpcy5wcm9wZXJ0eS5pbnRlcnBvbGF0ZShuLnBvc3NpYmx5RXZhbHVhdGUodCkscixmdW5jdGlvbih0KXtpZihhPD0wKXJldHVybiAwO2lmKGE+PTEpcmV0dXJuIDE7dmFyIGU9YSphLHI9ZSphO3JldHVybiA0KihhPC41P3I6MyooYS1lKStyLS43NSl9KCkpfXJldHVybiByfTt2YXIgUm49ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3JlYXRlKHQuZGVmYXVsdFRyYW5zaXRpb25pbmdQcm9wZXJ0eVZhbHVlcyl9O1JuLnByb3RvdHlwZS5wb3NzaWJseUV2YWx1YXRlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgTm4odGhpcy5fcHJvcGVydGllcykscj0wLG49T2JqZWN0LmtleXModGhpcy5fdmFsdWVzKTtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl07ZS5fdmFsdWVzW2FdPXRoaXMuX3ZhbHVlc1thXS5wb3NzaWJseUV2YWx1YXRlKHQpfXJldHVybiBlfSxSbi5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9T2JqZWN0LmtleXModGhpcy5fdmFsdWVzKTt0PGUubGVuZ3RoO3QrPTEpe3ZhciByPWVbdF07aWYodGhpcy5fdmFsdWVzW3JdLnByaW9yKXJldHVybiEwfXJldHVybiExfTt2YXIgRm49ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3JlYXRlKHQuZGVmYXVsdFByb3BlcnR5VmFsdWVzKX07Rm4ucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBiKHRoaXMuX3ZhbHVlc1t0XS52YWx1ZSl9LEZuLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3RoaXMuX3ZhbHVlc1t0XT1uZXcgT24odGhpcy5fdmFsdWVzW3RdLnByb3BlcnR5LG51bGw9PT1lP3ZvaWQgMDpiKGUpKX0sRm4ucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD17fSxlPTAscj1PYmplY3Qua2V5cyh0aGlzLl92YWx1ZXMpO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXSxhPXRoaXMuZ2V0VmFsdWUobik7dm9pZCAwIT09YSYmKHRbbl09YSl9cmV0dXJuIHR9LEZuLnByb3RvdHlwZS5wb3NzaWJseUV2YWx1YXRlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgTm4odGhpcy5fcHJvcGVydGllcykscj0wLG49T2JqZWN0LmtleXModGhpcy5fdmFsdWVzKTtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl07ZS5fdmFsdWVzW2FdPXRoaXMuX3ZhbHVlc1thXS5wb3NzaWJseUV2YWx1YXRlKHQpfXJldHVybiBlfTt2YXIgQm49ZnVuY3Rpb24odCxlLHIpe3RoaXMucHJvcGVydHk9dCx0aGlzLnZhbHVlPWUsdGhpcy5wYXJhbWV0ZXJzPXJ9O0JuLnByb3RvdHlwZS5pc0NvbnN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuImNvbnN0YW50Ij09PXRoaXMudmFsdWUua2luZH0sQm4ucHJvdG90eXBlLmNvbnN0YW50T3I9ZnVuY3Rpb24odCl7cmV0dXJuImNvbnN0YW50Ij09PXRoaXMudmFsdWUua2luZD90aGlzLnZhbHVlLnZhbHVlOnR9LEJuLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnByb3BlcnR5LmV2YWx1YXRlKHRoaXMudmFsdWUsdGhpcy5wYXJhbWV0ZXJzLHQsZSl9O3ZhciBObj1mdW5jdGlvbih0KXt0aGlzLl9wcm9wZXJ0aWVzPXQsdGhpcy5fdmFsdWVzPU9iamVjdC5jcmVhdGUodC5kZWZhdWx0UG9zc2libHlFdmFsdWF0ZWRWYWx1ZXMpfTtObi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWx1ZXNbdF19O3ZhciBqbj1mdW5jdGlvbih0KXt0aGlzLnNwZWNpZmljYXRpb249dH07am4ucHJvdG90eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5leHByZXNzaW9uLmV2YWx1YXRlKGUpfSxqbi5wcm90b3R5cGUuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXhlW3RoaXMuc3BlY2lmaWNhdGlvbi50eXBlXTtyZXR1cm4gbj9uKHQsZSxyKTp0fTt2YXIgVm49ZnVuY3Rpb24odCxlKXt0aGlzLnNwZWNpZmljYXRpb249dCx0aGlzLm92ZXJyaWRlcz1lfTtWbi5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJjb25zdGFudCI9PT10LmV4cHJlc3Npb24ua2luZHx8ImNhbWVyYSI9PT10LmV4cHJlc3Npb24ua2luZD9uZXcgQm4odGhpcyx7a2luZDoiY29uc3RhbnQiLHZhbHVlOnQuZXhwcmVzc2lvbi5ldmFsdWF0ZShlKX0sZSk6bmV3IEJuKHRoaXMsdC5leHByZXNzaW9uLGUpfSxWbi5wcm90b3R5cGUuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCxlLHIpe2lmKCJjb25zdGFudCIhPT10LnZhbHVlLmtpbmR8fCJjb25zdGFudCIhPT1lLnZhbHVlLmtpbmQpcmV0dXJuIHQ7aWYodm9pZCAwPT09dC52YWx1ZS52YWx1ZXx8dm9pZCAwPT09ZS52YWx1ZS52YWx1ZSlyZXR1cm4gbmV3IEJuKHRoaXMse2tpbmQ6ImNvbnN0YW50Iix2YWx1ZTp2b2lkIDB9LHQucGFyYW1ldGVycyk7dmFyIG49eGVbdGhpcy5zcGVjaWZpY2F0aW9uLnR5cGVdO3JldHVybiBuP25ldyBCbih0aGlzLHtraW5kOiJjb25zdGFudCIsdmFsdWU6bih0LnZhbHVlLnZhbHVlLGUudmFsdWUudmFsdWUscil9LHQucGFyYW1ldGVycyk6dH0sVm4ucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiJjb25zdGFudCI9PT10LmtpbmQ/dC52YWx1ZTp0LmV2YWx1YXRlKGUscixuKX07dmFyIFVuPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PXQudmFsdWUpcmV0dXJuIG5ldyBCbih0aGlzLHtraW5kOiJjb25zdGFudCIsdmFsdWU6dm9pZCAwfSxlKTtpZigiY29uc3RhbnQiPT09dC5leHByZXNzaW9uLmtpbmQpe3ZhciByPXQuZXhwcmVzc2lvbi5ldmFsdWF0ZShlKSxuPXRoaXMuX2NhbGN1bGF0ZShyLHIscixlKTtyZXR1cm4gbmV3IEJuKHRoaXMse2tpbmQ6ImNvbnN0YW50Iix2YWx1ZTpufSxlKX1pZigiY2FtZXJhIj09PXQuZXhwcmVzc2lvbi5raW5kKXt2YXIgYT10aGlzLl9jYWxjdWxhdGUodC5leHByZXNzaW9uLmV2YWx1YXRlKHt6b29tOmUuem9vbS0xfSksdC5leHByZXNzaW9uLmV2YWx1YXRlKHt6b29tOmUuem9vbX0pLHQuZXhwcmVzc2lvbi5ldmFsdWF0ZSh7em9vbTplLnpvb20rMX0pLGUpO3JldHVybiBuZXcgQm4odGhpcyx7a2luZDoiY29uc3RhbnQiLHZhbHVlOmF9LGUpfXJldHVybiBuZXcgQm4odGhpcyx0LmV4cHJlc3Npb24sZSl9LGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKCJzb3VyY2UiPT09dC5raW5kKXt2YXIgYT10LmV2YWx1YXRlKGUscixuKTtyZXR1cm4gdGhpcy5fY2FsY3VsYXRlKGEsYSxhLGUpfXJldHVybiJjb21wb3NpdGUiPT09dC5raW5kP3RoaXMuX2NhbGN1bGF0ZSh0LmV2YWx1YXRlKHt6b29tOk1hdGguZmxvb3IoZS56b29tKS0xfSxyLG4pLHQuZXZhbHVhdGUoe3pvb206TWF0aC5mbG9vcihlLnpvb20pfSxyLG4pLHQuZXZhbHVhdGUoe3pvb206TWF0aC5mbG9vcihlLnpvb20pKzF9LHIsbiksZSk6dC52YWx1ZX0sZS5wcm90b3R5cGUuX2NhbGN1bGF0ZT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbi56b29tPm4uem9vbUhpc3RvcnkubGFzdEludGVnZXJab29tP3tmcm9tOnQsdG86ZX06e2Zyb206cix0bzplfX0sZS5wcm90b3R5cGUuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGV9KFZuKSxxbj1mdW5jdGlvbih0KXt0aGlzLnNwZWNpZmljYXRpb249dH07cW4ucHJvdG90eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT10LnZhbHVlKXtpZigiY29uc3RhbnQiPT09dC5leHByZXNzaW9uLmtpbmQpe3ZhciByPXQuZXhwcmVzc2lvbi5ldmFsdWF0ZShlKTtyZXR1cm4gdGhpcy5fY2FsY3VsYXRlKHIscixyLGUpfXJldHVybiB0aGlzLl9jYWxjdWxhdGUodC5leHByZXNzaW9uLmV2YWx1YXRlKG5ldyBQbihNYXRoLmZsb29yKGUuem9vbS0xKSxlKSksdC5leHByZXNzaW9uLmV2YWx1YXRlKG5ldyBQbihNYXRoLmZsb29yKGUuem9vbSksZSkpLHQuZXhwcmVzc2lvbi5ldmFsdWF0ZShuZXcgUG4oTWF0aC5mbG9vcihlLnpvb20rMSksZSkpLGUpfX0scW4ucHJvdG90eXBlLl9jYWxjdWxhdGU9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG4uem9vbT5uLnpvb21IaXN0b3J5Lmxhc3RJbnRlZ2VyWm9vbT97ZnJvbTp0LHRvOmV9Ontmcm9tOnIsdG86ZX19LHFuLnByb3RvdHlwZS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdH07dmFyIEhuPWZ1bmN0aW9uKHQpe3RoaXMuc3BlY2lmaWNhdGlvbj10fTtIbi5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiEhdC5leHByZXNzaW9uLmV2YWx1YXRlKGUpfSxIbi5wcm90b3R5cGUuaW50ZXJwb2xhdGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIEduPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLnByb3BlcnRpZXM9dCx0aGlzLmRlZmF1bHRQcm9wZXJ0eVZhbHVlcz17fSx0aGlzLmRlZmF1bHRUcmFuc2l0aW9uYWJsZVByb3BlcnR5VmFsdWVzPXt9LHRoaXMuZGVmYXVsdFRyYW5zaXRpb25pbmdQcm9wZXJ0eVZhbHVlcz17fSx0aGlzLmRlZmF1bHRQb3NzaWJseUV2YWx1YXRlZFZhbHVlcz17fSx0aGlzLm92ZXJyaWRhYmxlUHJvcGVydGllcz1bXSx0KXt2YXIgcj10W2VdO3Iuc3BlY2lmaWNhdGlvbi5vdmVycmlkYWJsZSYmdGhpcy5vdmVycmlkYWJsZVByb3BlcnRpZXMucHVzaChlKTt2YXIgbj10aGlzLmRlZmF1bHRQcm9wZXJ0eVZhbHVlc1tlXT1uZXcgT24ocix2b2lkIDApLGE9dGhpcy5kZWZhdWx0VHJhbnNpdGlvbmFibGVQcm9wZXJ0eVZhbHVlc1tlXT1uZXcgem4ocik7dGhpcy5kZWZhdWx0VHJhbnNpdGlvbmluZ1Byb3BlcnR5VmFsdWVzW2VdPWEudW50cmFuc2l0aW9uZWQoKSx0aGlzLmRlZmF1bHRQb3NzaWJseUV2YWx1YXRlZFZhbHVlc1tlXT1uLnBvc3NpYmx5RXZhbHVhdGUoe30pfX07ZG4oIkRhdGFEcml2ZW5Qcm9wZXJ0eSIsVm4pLGRuKCJEYXRhQ29uc3RhbnRQcm9wZXJ0eSIsam4pLGRuKCJDcm9zc0ZhZGVkRGF0YURyaXZlblByb3BlcnR5IixVbiksZG4oIkNyb3NzRmFkZWRQcm9wZXJ0eSIscW4pLGRuKCJDb2xvclJhbXBQcm9wZXJ0eSIsSG4pO3ZhciBZbj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7aWYodC5jYWxsKHRoaXMpLHRoaXMuaWQ9ZS5pZCx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuX2ZlYXR1cmVGaWx0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sImN1c3RvbSIhPT1lLnR5cGUmJihlPWUsdGhpcy5tZXRhZGF0YT1lLm1ldGFkYXRhLHRoaXMubWluem9vbT1lLm1pbnpvb20sdGhpcy5tYXh6b29tPWUubWF4em9vbSwiYmFja2dyb3VuZCIhPT1lLnR5cGUmJih0aGlzLnNvdXJjZT1lLnNvdXJjZSx0aGlzLnNvdXJjZUxheWVyPWVbInNvdXJjZS1sYXllciJdLHRoaXMuZmlsdGVyPWUuZmlsdGVyKSxyLmxheW91dCYmKHRoaXMuX3VuZXZhbHVhdGVkTGF5b3V0PW5ldyBGbihyLmxheW91dCkpLHIucGFpbnQpKXtmb3IodmFyIG4gaW4gdGhpcy5fdHJhbnNpdGlvbmFibGVQYWludD1uZXcgSW4oci5wYWludCksZS5wYWludCl0aGlzLnNldFBhaW50UHJvcGVydHkobixlLnBhaW50W25dLHt2YWxpZGF0ZTohMX0pO2Zvcih2YXIgYSBpbiBlLmxheW91dCl0aGlzLnNldExheW91dFByb3BlcnR5KGEsZS5sYXlvdXRbYV0se3ZhbGlkYXRlOiExfSk7dGhpcy5fdHJhbnNpdGlvbmluZ1BhaW50PXRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQudW50cmFuc2l0aW9uZWQoKX19cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldENyb3NzZmFkZVBhcmFtZXRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Jvc3NmYWRlUGFyYW1ldGVyc30sZS5wcm90b3R5cGUuZ2V0TGF5b3V0UHJvcGVydHk9ZnVuY3Rpb24odCl7cmV0dXJuInZpc2liaWxpdHkiPT09dD90aGlzLnZpc2liaWxpdHk6dGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQuZ2V0VmFsdWUodCl9LGUucHJvdG90eXBlLnNldExheW91dFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxyKXtpZih2b2lkIDA9PT1yJiYocj17fSksbnVsbCE9ZSl7dmFyIG49ImxheWVycy4iK3RoaXMuaWQrIi5sYXlvdXQuIit0O2lmKHRoaXMuX3ZhbGlkYXRlKHNuLG4sdCxlLHIpKXJldHVybn0idmlzaWJpbGl0eSIhPT10P3RoaXMuX3VuZXZhbHVhdGVkTGF5b3V0LnNldFZhbHVlKHQsZSk6dGhpcy52aXNpYmlsaXR5PWV9LGUucHJvdG90eXBlLmdldFBhaW50UHJvcGVydHk9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCwiLXRyYW5zaXRpb24iKT90aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50LmdldFRyYW5zaXRpb24odC5zbGljZSgwLC0iLXRyYW5zaXRpb24iLmxlbmd0aCkpOnRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuZ2V0VmFsdWUodCl9LGUucHJvdG90eXBlLnNldFBhaW50UHJvcGVydHk9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09PXImJihyPXt9KSxudWxsIT1lKXt2YXIgbj0ibGF5ZXJzLiIrdGhpcy5pZCsiLnBhaW50LiIrdDtpZih0aGlzLl92YWxpZGF0ZShvbixuLHQsZSxyKSlyZXR1cm4hMX1pZihtKHQsIi10cmFuc2l0aW9uIikpcmV0dXJuIHRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuc2V0VHJhbnNpdGlvbih0LnNsaWNlKDAsLSItdHJhbnNpdGlvbiIubGVuZ3RoKSxlfHx2b2lkIDApLCExO3ZhciBhPXRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuX3ZhbHVlc1t0XSxpPSJjcm9zcy1mYWRlZC1kYXRhLWRyaXZlbiI9PT1hLnByb3BlcnR5LnNwZWNpZmljYXRpb25bInByb3BlcnR5LXR5cGUiXSxvPWEudmFsdWUuaXNEYXRhRHJpdmVuKCkscz1hLnZhbHVlO3RoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuc2V0VmFsdWUodCxlKSx0aGlzLl9oYW5kbGVTcGVjaWFsUGFpbnRQcm9wZXJ0eVVwZGF0ZSh0KTt2YXIgbD10aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50Ll92YWx1ZXNbdF0udmFsdWU7cmV0dXJuIGwuaXNEYXRhRHJpdmVuKCl8fG98fGl8fHRoaXMuX2hhbmRsZU92ZXJyaWRhYmxlUGFpbnRQcm9wZXJ0eVVwZGF0ZSh0LHMsbCl9LGUucHJvdG90eXBlLl9oYW5kbGVTcGVjaWFsUGFpbnRQcm9wZXJ0eVVwZGF0ZT1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLl9oYW5kbGVPdmVycmlkYWJsZVBhaW50UHJvcGVydHlVcGRhdGU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiExfSxlLnByb3RvdHlwZS5pc0hpZGRlbj1mdW5jdGlvbih0KXtyZXR1cm4hISh0aGlzLm1pbnpvb20mJnQ8dGhpcy5taW56b29tKXx8ISEodGhpcy5tYXh6b29tJiZ0Pj10aGlzLm1heHpvb20pfHwibm9uZSI9PT10aGlzLnZpc2liaWxpdHl9LGUucHJvdG90eXBlLnVwZGF0ZVRyYW5zaXRpb25zPWZ1bmN0aW9uKHQpe3RoaXMuX3RyYW5zaXRpb25pbmdQYWludD10aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50LnRyYW5zaXRpb25lZCh0LHRoaXMuX3RyYW5zaXRpb25pbmdQYWludCl9LGUucHJvdG90eXBlLmhhc1RyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbmluZ1BhaW50Lmhhc1RyYW5zaXRpb24oKX0sZS5wcm90b3R5cGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24odCl7dC5nZXRDcm9zc2ZhZGVQYXJhbWV0ZXJzJiYodGhpcy5fY3Jvc3NmYWRlUGFyYW1ldGVycz10LmdldENyb3NzZmFkZVBhcmFtZXRlcnMoKSksdGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQmJih0aGlzLmxheW91dD10aGlzLl91bmV2YWx1YXRlZExheW91dC5wb3NzaWJseUV2YWx1YXRlKHQpKSx0aGlzLnBhaW50PXRoaXMuX3RyYW5zaXRpb25pbmdQYWludC5wb3NzaWJseUV2YWx1YXRlKHQpfSxlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgdD17aWQ6dGhpcy5pZCx0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5zb3VyY2UsInNvdXJjZS1sYXllciI6dGhpcy5zb3VyY2VMYXllcixtZXRhZGF0YTp0aGlzLm1ldGFkYXRhLG1pbnpvb206dGhpcy5taW56b29tLG1heHpvb206dGhpcy5tYXh6b29tLGZpbHRlcjp0aGlzLmZpbHRlcixsYXlvdXQ6dGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQmJnRoaXMuX3VuZXZhbHVhdGVkTGF5b3V0LnNlcmlhbGl6ZSgpLHBhaW50OnRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQmJnRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuc2VyaWFsaXplKCl9O3JldHVybiB0aGlzLnZpc2liaWxpdHkmJih0LmxheW91dD10LmxheW91dHx8e30sdC5sYXlvdXQudmlzaWJpbGl0eT10aGlzLnZpc2liaWxpdHkpLHgodCxmdW5jdGlvbih0LGUpe3JldHVybiEodm9pZCAwPT09dHx8ImxheW91dCI9PT1lJiYhT2JqZWN0LmtleXModCkubGVuZ3RofHwicGFpbnQiPT09ZSYmIU9iamVjdC5rZXlzKHQpLmxlbmd0aCl9KX0sZS5wcm90b3R5cGUuX3ZhbGlkYXRlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7cmV0dXJuIHZvaWQgMD09PWEmJihhPXt9KSwoIWF8fCExIT09YS52YWxpZGF0ZSkmJmxuKHRoaXMsdC5jYWxsKG5uLHtrZXk6ZSxsYXllclR5cGU6dGhpcy50eXBlLG9iamVjdEtleTpyLHZhbHVlOm4sc3R5bGVTcGVjOlR0LHN0eWxlOntnbHlwaHM6ITAsc3ByaXRlOiEwfX0pKX0sZS5wcm90b3R5cGUuaXMzRD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5pc1RpbGVDbGlwcGVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLmhhc09mZnNjcmVlblBhc3M9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5pc1N0YXRlRGVwZW5kZW50PWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMucGFpbnQuX3ZhbHVlcyl7dmFyIGU9dGhpcy5wYWludC5nZXQodCk7aWYoZSBpbnN0YW5jZW9mIEJuJiZ1cihlLnByb3BlcnR5LnNwZWNpZmljYXRpb24pJiYoInNvdXJjZSI9PT1lLnZhbHVlLmtpbmR8fCJjb21wb3NpdGUiPT09ZS52YWx1ZS5raW5kKSYmZS52YWx1ZS5pc1N0YXRlRGVwZW5kZW50KXJldHVybiEwfXJldHVybiExfSxlfShrdCksV249e0ludDg6SW50OEFycmF5LFVpbnQ4OlVpbnQ4QXJyYXksSW50MTY6SW50MTZBcnJheSxVaW50MTY6VWludDE2QXJyYXksSW50MzI6SW50MzJBcnJheSxVaW50MzI6VWludDMyQXJyYXksRmxvYXQzMjpGbG9hdDMyQXJyYXl9LFhuPWZ1bmN0aW9uKHQsZSl7dGhpcy5fc3RydWN0QXJyYXk9dCx0aGlzLl9wb3MxPWUqdGhpcy5zaXplLHRoaXMuX3BvczI9dGhpcy5fcG9zMS8yLHRoaXMuX3BvczQ9dGhpcy5fcG9zMS80LHRoaXMuX3Bvczg9dGhpcy5fcG9zMS84fSxabj1mdW5jdGlvbigpe3RoaXMuaXNUcmFuc2ZlcnJlZD0hMSx0aGlzLmNhcGFjaXR5PS0xLHRoaXMucmVzaXplKDApfTtmdW5jdGlvbiBKbih0LGUpe3ZvaWQgMD09PWUmJihlPTEpO3ZhciByPTAsbj0wO3JldHVybnttZW1iZXJzOnQubWFwKGZ1bmN0aW9uKHQpe3ZhciBhLGk9KGE9dC50eXBlLFduW2FdLkJZVEVTX1BFUl9FTEVNRU5UKSxvPXI9S24ocixNYXRoLm1heChlLGkpKSxzPXQuY29tcG9uZW50c3x8MTtyZXR1cm4gbj1NYXRoLm1heChuLGkpLHIrPWkqcyx7bmFtZTp0Lm5hbWUsdHlwZTp0LnR5cGUsY29tcG9uZW50czpzLG9mZnNldDpvfX0pLHNpemU6S24ocixNYXRoLm1heChuLGUpKSxhbGlnbm1lbnQ6ZX19ZnVuY3Rpb24gS24odCxlKXtyZXR1cm4gTWF0aC5jZWlsKHQvZSkqZX1abi5zZXJpYWxpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fdHJpbSgpLGUmJih0LmlzVHJhbnNmZXJyZWQ9ITAsZS5wdXNoKHQuYXJyYXlCdWZmZXIpKSx7bGVuZ3RoOnQubGVuZ3RoLGFycmF5QnVmZmVyOnQuYXJyYXlCdWZmZXJ9fSxabi5kZXNlcmlhbGl6ZT1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QuY3JlYXRlKHRoaXMucHJvdG90eXBlKTtyZXR1cm4gZS5hcnJheUJ1ZmZlcj10LmFycmF5QnVmZmVyLGUubGVuZ3RoPXQubGVuZ3RoLGUuY2FwYWNpdHk9dC5hcnJheUJ1ZmZlci5ieXRlTGVuZ3RoL2UuYnl0ZXNQZXJFbGVtZW50LGUuX3JlZnJlc2hWaWV3cygpLGV9LFpuLnByb3RvdHlwZS5fdHJpbT1mdW5jdGlvbigpe3RoaXMubGVuZ3RoIT09dGhpcy5jYXBhY2l0eSYmKHRoaXMuY2FwYWNpdHk9dGhpcy5sZW5ndGgsdGhpcy5hcnJheUJ1ZmZlcj10aGlzLmFycmF5QnVmZmVyLnNsaWNlKDAsdGhpcy5sZW5ndGgqdGhpcy5ieXRlc1BlckVsZW1lbnQpLHRoaXMuX3JlZnJlc2hWaWV3cygpKX0sWm4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5sZW5ndGg9MH0sWm4ucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXt0aGlzLnJlc2VydmUodCksdGhpcy5sZW5ndGg9dH0sWm4ucHJvdG90eXBlLnJlc2VydmU9ZnVuY3Rpb24odCl7aWYodD50aGlzLmNhcGFjaXR5KXt0aGlzLmNhcGFjaXR5PU1hdGgubWF4KHQsTWF0aC5mbG9vcig1KnRoaXMuY2FwYWNpdHkpLDEyOCksdGhpcy5hcnJheUJ1ZmZlcj1uZXcgQXJyYXlCdWZmZXIodGhpcy5jYXBhY2l0eSp0aGlzLmJ5dGVzUGVyRWxlbWVudCk7dmFyIGU9dGhpcy51aW50ODt0aGlzLl9yZWZyZXNoVmlld3MoKSxlJiZ0aGlzLnVpbnQ4LnNldChlKX19LFpuLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfcmVmcmVzaFZpZXdzKCkgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBlYWNoIGNvbmNyZXRlIFN0cnVjdEFycmF5IGxheW91dCIpfTt2YXIgUW49ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShyKzEpLHRoaXMuZW1wbGFjZShyLHQsZSl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTIqdDtyZXR1cm4gdGhpcy5pbnQxNltuKzBdPWUsdGhpcy5pbnQxNltuKzFdPXIsdH0sZX0oWm4pO1FuLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NCxkbigiU3RydWN0QXJyYXlMYXlvdXQyaTQiLFFuKTt2YXIgJG49ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoYSsxKSx0aGlzLmVtcGxhY2UoYSx0LGUscixuKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPTQqdDtyZXR1cm4gdGhpcy5pbnQxNltpKzBdPWUsdGhpcy5pbnQxNltpKzFdPXIsdGhpcy5pbnQxNltpKzJdPW4sdGhpcy5pbnQxNltpKzNdPWEsdH0sZX0oWm4pOyRuLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9OCxkbigiU3RydWN0QXJyYXlMYXlvdXQ0aTgiLCRuKTt2YXIgdGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG89dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG8rMSksdGhpcy5lbXBsYWNlKG8sdCxlLHIsbixhLGkpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe3ZhciBzPTYqdDtyZXR1cm4gdGhpcy5pbnQxNltzKzBdPWUsdGhpcy5pbnQxNltzKzFdPXIsdGhpcy5pbnQxNltzKzJdPW4sdGhpcy5pbnQxNltzKzNdPWEsdGhpcy5pbnQxNltzKzRdPWksdGhpcy5pbnQxNltzKzVdPW8sdH0sZX0oWm4pO3RhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTIsZG4oIlN0cnVjdEFycmF5TGF5b3V0Mmk0aTEyIix0YSk7dmFyIGVhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShvKzEpLHRoaXMuZW1wbGFjZShvLHQsZSxyLG4sYSxpKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuLGEsaSxvKXt2YXIgcz00KnQsbD04KnQ7cmV0dXJuIHRoaXMuaW50MTZbcyswXT1lLHRoaXMuaW50MTZbcysxXT1yLHRoaXMudWludDhbbCs0XT1uLHRoaXMudWludDhbbCs1XT1hLHRoaXMudWludDhbbCs2XT1pLHRoaXMudWludDhbbCs3XT1vLHR9LGV9KFpuKTtlYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTgsZG4oIlN0cnVjdEFycmF5TGF5b3V0Mmk0dWI4IixlYSk7dmFyIHJhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe3ZhciBsPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShsKzEpLHRoaXMuZW1wbGFjZShsLHQsZSxyLG4sYSxpLG8scyl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwpe3ZhciBjPTgqdDtyZXR1cm4gdGhpcy51aW50MTZbYyswXT1lLHRoaXMudWludDE2W2MrMV09cix0aGlzLnVpbnQxNltjKzJdPW4sdGhpcy51aW50MTZbYyszXT1hLHRoaXMudWludDE2W2MrNF09aSx0aGlzLnVpbnQxNltjKzVdPW8sdGhpcy51aW50MTZbYys2XT1zLHRoaXMudWludDE2W2MrN109bCx0fSxlfShabik7cmEucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0xNixkbigiU3RydWN0QXJyYXlMYXlvdXQ4dWkxNiIscmEpO3ZhciBuYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe3ZhciBsPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShsKzEpLHRoaXMuZW1wbGFjZShsLHQsZSxyLG4sYSxpLG8scyl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwpe3ZhciBjPTgqdDtyZXR1cm4gdGhpcy5pbnQxNltjKzBdPWUsdGhpcy5pbnQxNltjKzFdPXIsdGhpcy5pbnQxNltjKzJdPW4sdGhpcy5pbnQxNltjKzNdPWEsdGhpcy51aW50MTZbYys0XT1pLHRoaXMudWludDE2W2MrNV09byx0aGlzLnVpbnQxNltjKzZdPXMsdGhpcy51aW50MTZbYys3XT1sLHR9LGV9KFpuKTtuYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTE2LGRuKCJTdHJ1Y3RBcnJheUxheW91dDRpNHVpMTYiLG5hKTt2YXIgYWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShuKzEpLHRoaXMuZW1wbGFjZShuLHQsZSxyKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuKXt2YXIgYT0zKnQ7cmV0dXJuIHRoaXMuZmxvYXQzMlthKzBdPWUsdGhpcy5mbG9hdDMyW2ErMV09cix0aGlzLmZsb2F0MzJbYSsyXT1uLHR9LGV9KFpuKTthYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTEyLGRuKCJTdHJ1Y3RBcnJheUxheW91dDNmMTIiLGFhKTt2YXIgaWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShlKzEpLHRoaXMuZW1wbGFjZShlLHQpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MSp0O3JldHVybiB0aGlzLnVpbnQzMltyKzBdPWUsdH0sZX0oWm4pO2lhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NCxkbigiU3RydWN0QXJyYXlMYXlvdXQxdWw0IixpYSk7dmFyIG9hPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMsbCxjLHUpe3ZhciBoPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShoKzEpLHRoaXMuZW1wbGFjZShoLHQsZSxyLG4sYSxpLG8scyxsLGMsdSl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwsYyx1LGgpe3ZhciBmPTEyKnQscD02KnQ7cmV0dXJuIHRoaXMuaW50MTZbZiswXT1lLHRoaXMuaW50MTZbZisxXT1yLHRoaXMuaW50MTZbZisyXT1uLHRoaXMuaW50MTZbZiszXT1hLHRoaXMuaW50MTZbZis0XT1pLHRoaXMuaW50MTZbZis1XT1vLHRoaXMudWludDMyW3ArM109cyx0aGlzLnVpbnQxNltmKzhdPWwsdGhpcy51aW50MTZbZis5XT1jLHRoaXMuaW50MTZbZisxMF09dSx0aGlzLmludDE2W2YrMTFdPWgsdH0sZX0oWm4pO29hLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MjQsZG4oIlN0cnVjdEFycmF5TGF5b3V0NmkxdWwydWkyaTI0IixvYSk7dmFyIHNhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShvKzEpLHRoaXMuZW1wbGFjZShvLHQsZSxyLG4sYSxpKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuLGEsaSxvKXt2YXIgcz02KnQ7cmV0dXJuIHRoaXMuaW50MTZbcyswXT1lLHRoaXMuaW50MTZbcysxXT1yLHRoaXMuaW50MTZbcysyXT1uLHRoaXMuaW50MTZbcyszXT1hLHRoaXMuaW50MTZbcys0XT1pLHRoaXMuaW50MTZbcys1XT1vLHR9LGV9KFpuKTtzYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTEyLGRuKCJTdHJ1Y3RBcnJheUxheW91dDJpMmkyaTEyIixzYSk7dmFyIGxhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShhKzEpLHRoaXMuZW1wbGFjZShhLHQsZSxyLG4pfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9MTIqdCxvPTMqdDtyZXR1cm4gdGhpcy51aW50OFtpKzBdPWUsdGhpcy51aW50OFtpKzFdPXIsdGhpcy5mbG9hdDMyW28rMV09bix0aGlzLmZsb2F0MzJbbysyXT1hLHR9LGV9KFpuKTtsYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTEyLGRuKCJTdHJ1Y3RBcnJheUxheW91dDJ1YjJmMTIiLGxhKTt2YXIgY2E9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCxkLGcpe3ZhciB2PXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZSh2KzEpLHRoaXMuZW1wbGFjZSh2LHQsZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCxkLGcpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCxkLGcsdil7dmFyIG09MjIqdCx5PTExKnQseD00NCp0O3JldHVybiB0aGlzLmludDE2W20rMF09ZSx0aGlzLmludDE2W20rMV09cix0aGlzLnVpbnQxNlttKzJdPW4sdGhpcy51aW50MTZbbSszXT1hLHRoaXMudWludDMyW3krMl09aSx0aGlzLnVpbnQzMlt5KzNdPW8sdGhpcy51aW50MzJbeSs0XT1zLHRoaXMudWludDE2W20rMTBdPWwsdGhpcy51aW50MTZbbSsxMV09Yyx0aGlzLnVpbnQxNlttKzEyXT11LHRoaXMuZmxvYXQzMlt5KzddPWgsdGhpcy5mbG9hdDMyW3krOF09Zix0aGlzLnVpbnQ4W3grMzZdPXAsdGhpcy51aW50OFt4KzM3XT1kLHRoaXMudWludDhbeCszOF09Zyx0aGlzLnVpbnQzMlt5KzEwXT12LHR9LGV9KFpuKTtjYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTQ0LGRuKCJTdHJ1Y3RBcnJheUxheW91dDJpMnVpM3VsM3VpMmYzdWIxdWw0NCIsY2EpO3ZhciB1YT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDMyPW5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwsYyx1LGgsZixwLGQsZyx2LG0seSx4KXt2YXIgYj10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoYisxKSx0aGlzLmVtcGxhY2UoYix0LGUscixuLGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnLHYsbSx5LHgpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCxkLGcsdixtLHkseCxiKXt2YXIgXz0yNCp0LHc9MTIqdDtyZXR1cm4gdGhpcy5pbnQxNltfKzBdPWUsdGhpcy5pbnQxNltfKzFdPXIsdGhpcy5pbnQxNltfKzJdPW4sdGhpcy5pbnQxNltfKzNdPWEsdGhpcy5pbnQxNltfKzRdPWksdGhpcy5pbnQxNltfKzVdPW8sdGhpcy51aW50MTZbXys2XT1zLHRoaXMudWludDE2W18rN109bCx0aGlzLnVpbnQxNltfKzhdPWMsdGhpcy51aW50MTZbXys5XT11LHRoaXMudWludDE2W18rMTBdPWgsdGhpcy51aW50MTZbXysxMV09Zix0aGlzLnVpbnQxNltfKzEyXT1wLHRoaXMudWludDE2W18rMTNdPWQsdGhpcy51aW50MTZbXysxNF09Zyx0aGlzLnVpbnQxNltfKzE1XT12LHRoaXMudWludDE2W18rMTZdPW0sdGhpcy51aW50MzJbdys5XT15LHRoaXMuZmxvYXQzMlt3KzEwXT14LHRoaXMuZmxvYXQzMlt3KzExXT1iLHR9LGV9KFpuKTt1YS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTQ4LGRuKCJTdHJ1Y3RBcnJheUxheW91dDZpMTF1aTF1bDJmNDgiLHVhKTt2YXIgaGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGUrMSksdGhpcy5lbXBsYWNlKGUsdCl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlKXt2YXIgcj0xKnQ7cmV0dXJuIHRoaXMuZmxvYXQzMltyKzBdPWUsdH0sZX0oWm4pO2hhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NCxkbigiU3RydWN0QXJyYXlMYXlvdXQxZjQiLGhhKTt2YXIgZmE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5lbXBsYWNlKG4sdCxlLHIpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPTMqdDtyZXR1cm4gdGhpcy5pbnQxNlthKzBdPWUsdGhpcy5pbnQxNlthKzFdPXIsdGhpcy5pbnQxNlthKzJdPW4sdH0sZX0oWm4pO2ZhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NixkbigiU3RydWN0QXJyYXlMYXlvdXQzaTYiLGZhKTt2YXIgcGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5lbXBsYWNlKG4sdCxlLHIpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPTIqdCxpPTQqdDtyZXR1cm4gdGhpcy51aW50MzJbYSswXT1lLHRoaXMudWludDE2W2krMl09cix0aGlzLnVpbnQxNltpKzNdPW4sdH0sZX0oWm4pO3BhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9OCxkbigiU3RydWN0QXJyYXlMYXlvdXQxdWwydWk4IixwYSk7dmFyIGRhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5lbXBsYWNlKG4sdCxlLHIpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPTMqdDtyZXR1cm4gdGhpcy51aW50MTZbYSswXT1lLHRoaXMudWludDE2W2ErMV09cix0aGlzLnVpbnQxNlthKzJdPW4sdH0sZX0oWm4pO2RhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NixkbigiU3RydWN0QXJyYXlMYXlvdXQzdWk2IixkYSk7dmFyIGdhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShyKzEpLHRoaXMuZW1wbGFjZShyLHQsZSl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTIqdDtyZXR1cm4gdGhpcy51aW50MTZbbiswXT1lLHRoaXMudWludDE2W24rMV09cix0fSxlfShabik7Z2EucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD00LGRuKCJTdHJ1Y3RBcnJheUxheW91dDJ1aTQiLGdhKTt2YXIgdmE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQxNj1uZXcgVWludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShlKzEpLHRoaXMuZW1wbGFjZShlLHQpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MSp0O3JldHVybiB0aGlzLnVpbnQxNltyKzBdPWUsdH0sZX0oWm4pO3ZhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MixkbigiU3RydWN0QXJyYXlMYXlvdXQxdWkyIix2YSk7dmFyIG1hPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKHIrMSksdGhpcy5lbXBsYWNlKHIsdCxlKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscil7dmFyIG49Mip0O3JldHVybiB0aGlzLmZsb2F0MzJbbiswXT1lLHRoaXMuZmxvYXQzMltuKzFdPXIsdH0sZX0oWm4pO21hLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9OCxkbigiU3RydWN0QXJyYXlMYXlvdXQyZjgiLG1hKTt2YXIgeWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGErMSksdGhpcy5lbXBsYWNlKGEsdCxlLHIsbil9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT00KnQ7cmV0dXJuIHRoaXMuZmxvYXQzMltpKzBdPWUsdGhpcy5mbG9hdDMyW2krMV09cix0aGlzLmZsb2F0MzJbaSsyXT1uLHRoaXMuZmxvYXQzMltpKzNdPWEsdH0sZX0oWm4pO3lhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTYsZG4oIlN0cnVjdEFycmF5TGF5b3V0NGYxNiIseWEpO3ZhciB4YT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7dmFyIHI9e2FuY2hvclBvaW50WDp7Y29uZmlndXJhYmxlOiEwfSxhbmNob3JQb2ludFk6e2NvbmZpZ3VyYWJsZTohMH0seDE6e2NvbmZpZ3VyYWJsZTohMH0seTE6e2NvbmZpZ3VyYWJsZTohMH0seDI6e2NvbmZpZ3VyYWJsZTohMH0seTI6e2NvbmZpZ3VyYWJsZTohMH0sZmVhdHVyZUluZGV4Ontjb25maWd1cmFibGU6ITB9LHNvdXJjZUxheWVySW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sYnVja2V0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0scmFkaXVzOntjb25maWd1cmFibGU6ITB9LHNpZ25lZERpc3RhbmNlRnJvbUFuY2hvcjp7Y29uZmlndXJhYmxlOiEwfSxhbmNob3JQb2ludDp7Y29uZmlndXJhYmxlOiEwfX07cmV0dXJuIHIuYW5jaG9yUG9pbnRYLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzBdfSxyLmFuY2hvclBvaW50WC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMiswXT10fSxyLmFuY2hvclBvaW50WS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxXX0sci5hbmNob3JQb2ludFkuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV09dH0sci54MS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyXX0sci54MS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyXT10fSxyLnkxLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzNdfSxyLnkxLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzNdPXR9LHIueDIuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNF19LHIueDIuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNF09dH0sci55Mi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMis1XX0sci55Mi5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMis1XT10fSxyLmZlYXR1cmVJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrM119LHIuZmVhdHVyZUluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCszXT10fSxyLnNvdXJjZUxheWVySW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzhdfSxyLnNvdXJjZUxheWVySW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzhdPXR9LHIuYnVja2V0SW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzldfSxyLmJ1Y2tldEluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis5XT10fSxyLnJhZGl1cy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxMF19LHIucmFkaXVzLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzEwXT10fSxyLnNpZ25lZERpc3RhbmNlRnJvbUFuY2hvci5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxMV19LHIuc2lnbmVkRGlzdGFuY2VGcm9tQW5jaG9yLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzExXT10fSxyLmFuY2hvclBvaW50LmdldD1mdW5jdGlvbigpe3JldHVybiBuZXcgYSh0aGlzLmFuY2hvclBvaW50WCx0aGlzLmFuY2hvclBvaW50WSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHIpLGV9KFhuKTt4YS5wcm90b3R5cGUuc2l6ZT0yNDt2YXIgYmE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB4YSh0aGlzLHQpfSxlfShvYSk7ZG4oIkNvbGxpc2lvbkJveEFycmF5IixiYSk7dmFyIF9hPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX10JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZTt2YXIgcj17YW5jaG9yWDp7Y29uZmlndXJhYmxlOiEwfSxhbmNob3JZOntjb25maWd1cmFibGU6ITB9LGdseXBoU3RhcnRJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxudW1HbHlwaHM6e2NvbmZpZ3VyYWJsZTohMH0sdmVydGV4U3RhcnRJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxsaW5lU3RhcnRJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxsaW5lTGVuZ3RoOntjb25maWd1cmFibGU6ITB9LHNlZ21lbnQ6e2NvbmZpZ3VyYWJsZTohMH0sbG93ZXJTaXplOntjb25maWd1cmFibGU6ITB9LHVwcGVyU2l6ZTp7Y29uZmlndXJhYmxlOiEwfSxsaW5lT2Zmc2V0WDp7Y29uZmlndXJhYmxlOiEwfSxsaW5lT2Zmc2V0WTp7Y29uZmlndXJhYmxlOiEwfSx3cml0aW5nTW9kZTp7Y29uZmlndXJhYmxlOiEwfSxwbGFjZWRPcmllbnRhdGlvbjp7Y29uZmlndXJhYmxlOiEwfSxoaWRkZW46e2NvbmZpZ3VyYWJsZTohMH0sY3Jvc3NUaWxlSUQ6e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiByLmFuY2hvclguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMF19LHIuYW5jaG9yWC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMiswXT10fSxyLmFuY2hvclkuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV19LHIuYW5jaG9yWS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxXT10fSxyLmdseXBoU3RhcnRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMl19LHIuZ2x5cGhTdGFydEluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisyXT10fSxyLm51bUdseXBocy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrM119LHIubnVtR2x5cGhzLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMiszXT10fSxyLnZlcnRleFN0YXJ0SW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzJdfSxyLnZlcnRleFN0YXJ0SW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzJdPXR9LHIubGluZVN0YXJ0SW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzNdfSxyLmxpbmVTdGFydEluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCszXT10fSxyLmxpbmVMZW5ndGguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzRdfSxyLmxpbmVMZW5ndGguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzRdPXR9LHIuc2VnbWVudC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTBdfSxyLnNlZ21lbnQuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzEwXT10fSxyLmxvd2VyU2l6ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTFdfSxyLmxvd2VyU2l6ZS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTFdPXR9LHIudXBwZXJTaXplLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxMl19LHIudXBwZXJTaXplLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxMl09dH0sci5saW5lT2Zmc2V0WC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzddfSxyLmxpbmVPZmZzZXRYLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrN109dH0sci5saW5lT2Zmc2V0WS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzhdfSxyLmxpbmVPZmZzZXRZLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrOF09dH0sci53cml0aW5nTW9kZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDhbdGhpcy5fcG9zMSszNl19LHIud3JpdGluZ01vZGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQ4W3RoaXMuX3BvczErMzZdPXR9LHIucGxhY2VkT3JpZW50YXRpb24uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQ4W3RoaXMuX3BvczErMzddfSxyLnBsYWNlZE9yaWVudGF0aW9uLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50OFt0aGlzLl9wb3MxKzM3XT10fSxyLmhpZGRlbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDhbdGhpcy5fcG9zMSszOF19LHIuaGlkZGVuLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50OFt0aGlzLl9wb3MxKzM4XT10fSxyLmNyb3NzVGlsZUlELmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCsxMF19LHIuY3Jvc3NUaWxlSUQuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzEwXT10fSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSxyKSxlfShYbik7X2EucHJvdG90eXBlLnNpemU9NDQ7dmFyIHdhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgX2EodGhpcyx0KX0sZX0oY2EpO2RuKCJQbGFjZWRTeW1ib2xBcnJheSIsd2EpO3ZhciBrYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7dmFyIHI9e2FuY2hvclg6e2NvbmZpZ3VyYWJsZTohMH0sYW5jaG9yWTp7Y29uZmlndXJhYmxlOiEwfSxyaWdodEp1c3RpZmllZFRleHRTeW1ib2xJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxjZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sbGVmdEp1c3RpZmllZFRleHRTeW1ib2xJbmRleDp7Y29uZmlndXJhYmxlOiEwfSx2ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxrZXk6e2NvbmZpZ3VyYWJsZTohMH0sdGV4dEJveFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sdGV4dEJveEVuZEluZGV4Ontjb25maWd1cmFibGU6ITB9LHZlcnRpY2FsVGV4dEJveFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sdmVydGljYWxUZXh0Qm94RW5kSW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0saWNvbkJveFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0saWNvbkJveEVuZEluZGV4Ontjb25maWd1cmFibGU6ITB9LGZlYXR1cmVJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxudW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlczp7Y29uZmlndXJhYmxlOiEwfSxudW1WZXJ0aWNhbEdseXBoVmVydGljZXM6e2NvbmZpZ3VyYWJsZTohMH0sbnVtSWNvblZlcnRpY2VzOntjb25maWd1cmFibGU6ITB9LGNyb3NzVGlsZUlEOntjb25maWd1cmFibGU6ITB9LHRleHRCb3hTY2FsZTp7Y29uZmlndXJhYmxlOiEwfSxyYWRpYWxUZXh0T2Zmc2V0Ontjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gci5hbmNob3JYLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzBdfSxyLmFuY2hvclguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMF09dH0sci5hbmNob3JZLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzFdfSxyLmFuY2hvclkuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV09dH0sci5yaWdodEp1c3RpZmllZFRleHRTeW1ib2xJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyXX0sci5yaWdodEp1c3RpZmllZFRleHRTeW1ib2xJbmRleC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyXT10fSxyLmNlbnRlckp1c3RpZmllZFRleHRTeW1ib2xJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMiszXX0sci5jZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrM109dH0sci5sZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzRdfSxyLmxlZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNF09dH0sci52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMis1XX0sci52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMis1XT10fSxyLmtleS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrNl19LHIua2V5LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis2XT10fSxyLnRleHRCb3hTdGFydEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis3XX0sci50ZXh0Qm94U3RhcnRJbmRleC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrN109dH0sci50ZXh0Qm94RW5kSW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzhdfSxyLnRleHRCb3hFbmRJbmRleC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrOF09dH0sci52ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis5XX0sci52ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis5XT10fSxyLnZlcnRpY2FsVGV4dEJveEVuZEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxMF19LHIudmVydGljYWxUZXh0Qm94RW5kSW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzEwXT10fSxyLmljb25Cb3hTdGFydEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxMV19LHIuaWNvbkJveFN0YXJ0SW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzExXT10fSxyLmljb25Cb3hFbmRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTJdfSxyLmljb25Cb3hFbmRJbmRleC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTJdPXR9LHIuZmVhdHVyZUluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxM119LHIuZmVhdHVyZUluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxM109dH0sci5udW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTRdfSxyLm51bUhvcml6b250YWxHbHlwaFZlcnRpY2VzLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxNF09dH0sci5udW1WZXJ0aWNhbEdseXBoVmVydGljZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzE1XX0sci5udW1WZXJ0aWNhbEdseXBoVmVydGljZXMuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzE1XT10fSxyLm51bUljb25WZXJ0aWNlcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTZdfSxyLm51bUljb25WZXJ0aWNlcy5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTZdPXR9LHIuY3Jvc3NUaWxlSUQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzldfSxyLmNyb3NzVGlsZUlELnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCs5XT10fSxyLnRleHRCb3hTY2FsZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzEwXX0sci50ZXh0Qm94U2NhbGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmZsb2F0MzJbdGhpcy5fcG9zNCsxMF09dH0sci5yYWRpYWxUZXh0T2Zmc2V0LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTFdfSxyLnJhZGlhbFRleHRPZmZzZXQuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmZsb2F0MzJbdGhpcy5fcG9zNCsxMV09dH0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsciksZX0oWG4pO2thLnByb3RvdHlwZS5zaXplPTQ4O3ZhciBUYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGthKHRoaXMsdCl9LGV9KHVhKTtkbigiU3ltYm9sSW5zdGFuY2VBcnJheSIsVGEpO3ZhciBNYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7dmFyIHI9e29mZnNldFg6e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiByLm9mZnNldFguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmZsb2F0MzJbdGhpcy5fcG9zNCswXX0sci5vZmZzZXRYLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMF09dH0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsciksZX0oWG4pO01hLnByb3RvdHlwZS5zaXplPTQ7dmFyIEFhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0b2Zmc2V0WD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mbG9hdDMyWzEqdCswXX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgTWEodGhpcyx0KX0sZX0oaGEpO2RuKCJHbHlwaE9mZnNldEFycmF5IixBYSk7dmFyIFNhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX10JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZTt2YXIgcj17eDp7Y29uZmlndXJhYmxlOiEwfSx5Ontjb25maWd1cmFibGU6ITB9LHRpbGVVbml0RGlzdGFuY2VGcm9tQW5jaG9yOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gci54LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzBdfSxyLnguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMF09dH0sci55LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzFdfSxyLnkuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV09dH0sci50aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvci5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyXX0sci50aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvci5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyXT10fSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSxyKSxlfShYbik7U2EucHJvdG90eXBlLnNpemU9Njt2YXIgRWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXR4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludDE2WzMqdCswXX0sZS5wcm90b3R5cGUuZ2V0eT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnQxNlszKnQrMV19LGUucHJvdG90eXBlLmdldHRpbGVVbml0RGlzdGFuY2VGcm9tQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludDE2WzMqdCsyXX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgU2EodGhpcyx0KX0sZX0oZmEpO2RuKCJTeW1ib2xMaW5lVmVydGV4QXJyYXkiLEVhKTt2YXIgTGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lO3ZhciByPXtmZWF0dXJlSW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sc291cmNlTGF5ZXJJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxidWNrZXRJbmRleDp7Y29uZmlndXJhYmxlOiEwfX07cmV0dXJuIHIuZmVhdHVyZUluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCswXX0sci5mZWF0dXJlSW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzBdPXR9LHIuc291cmNlTGF5ZXJJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMl19LHIuc291cmNlTGF5ZXJJbmRleC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMl09dH0sci5idWNrZXRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrM119LHIuYnVja2V0SW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzNdPXR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHIpLGV9KFhuKTtMYS5wcm90b3R5cGUuc2l6ZT04O3ZhciBDYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IExhKHRoaXMsdCl9LGV9KHBhKTtkbigiRmVhdHVyZUluZGV4QXJyYXkiLENhKTt2YXIgUGE9Sm4oW3tuYW1lOiJhX3BvcyIsY29tcG9uZW50czoyLHR5cGU6IkludDE2In1dLDQpLm1lbWJlcnMsT2E9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9W10pLHRoaXMuc2VnbWVudHM9dH07ZnVuY3Rpb24gemEodCxlKXtyZXR1cm4gMjU2Kih0PWMoTWF0aC5mbG9vcih0KSwwLDI1NSkpK2MoTWF0aC5mbG9vcihlKSwwLDI1NSl9T2EucHJvdG90eXBlLnByZXBhcmVTZWdtZW50PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMuc2VnbWVudHNbdGhpcy5zZWdtZW50cy5sZW5ndGgtMV07cmV0dXJuIHQ+T2EuTUFYX1ZFUlRFWF9BUlJBWV9MRU5HVEgmJncoIk1heCB2ZXJ0aWNlcyBwZXIgc2VnbWVudCBpcyAiK09hLk1BWF9WRVJURVhfQVJSQVlfTEVOR1RIKyI6IGJ1Y2tldCByZXF1ZXN0ZWQgIit0KSwoIWF8fGEudmVydGV4TGVuZ3RoK3Q+T2EuTUFYX1ZFUlRFWF9BUlJBWV9MRU5HVEh8fGEuc29ydEtleSE9PW4pJiYoYT17dmVydGV4T2Zmc2V0OmUubGVuZ3RoLHByaW1pdGl2ZU9mZnNldDpyLmxlbmd0aCx2ZXJ0ZXhMZW5ndGg6MCxwcmltaXRpdmVMZW5ndGg6MH0sdm9pZCAwIT09biYmKGEuc29ydEtleT1uKSx0aGlzLnNlZ21lbnRzLnB1c2goYSkpLGF9LE9hLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWdtZW50c30sT2EucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPXRoaXMuc2VnbWVudHM7dDxlLmxlbmd0aDt0Kz0xKXt2YXIgcj1lW3RdO2Zvcih2YXIgbiBpbiByLnZhb3Mpci52YW9zW25dLmRlc3Ryb3koKX19LE9hLnNpbXBsZVNlZ21lbnQ9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG5ldyBPYShbe3ZlcnRleE9mZnNldDp0LHByaW1pdGl2ZU9mZnNldDplLHZlcnRleExlbmd0aDpyLHByaW1pdGl2ZUxlbmd0aDpuLHZhb3M6e30sc29ydEtleTowfV0pfSxPYS5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSD1NYXRoLnBvdygyLDE2KS0xLGRuKCJTZWdtZW50VmVjdG9yIixPYSk7dmFyIElhPWZ1bmN0aW9uKCl7dGhpcy5pZHM9W10sdGhpcy5wb3NpdGlvbnM9W10sdGhpcy5pbmRleGVkPSExfTtmdW5jdGlvbiBEYSh0LGUscil7dmFyIG49dFtlXTt0W2VdPXRbcl0sdFtyXT1ufUlhLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5pZHMucHVzaCh0KSx0aGlzLnBvc2l0aW9ucy5wdXNoKGUscixuKX0sSWEucHJvdG90eXBlLmdldFBvc2l0aW9ucz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMuaWRzLmxlbmd0aC0xO2U8cjspe3ZhciBuPWUrcj4+MTt0aGlzLmlkc1tuXT49dD9yPW46ZT1uKzF9Zm9yKHZhciBhPVtdO3RoaXMuaWRzW2VdPT09dDspe3ZhciBpPXRoaXMucG9zaXRpb25zWzMqZV0sbz10aGlzLnBvc2l0aW9uc1szKmUrMV0scz10aGlzLnBvc2l0aW9uc1szKmUrMl07YS5wdXNoKHtpbmRleDppLHN0YXJ0Om8sZW5kOnN9KSxlKyt9cmV0dXJuIGF9LElhLnNlcmlhbGl6ZT1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBGbG9hdDY0QXJyYXkodC5pZHMpLG49bmV3IFVpbnQzMkFycmF5KHQucG9zaXRpb25zKTtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbixhKXtpZighKG4+PWEpKXtmb3IodmFyIGk9ZVtuK2E+PjFdLG89bi0xLHM9YSsxOzspe2Rve28rK313aGlsZShlW29dPGkpO2Rve3MtLX13aGlsZShlW3NdPmkpO2lmKG8+PXMpYnJlYWs7RGEoZSxvLHMpLERhKHIsMypvLDMqcyksRGEociwzKm8rMSwzKnMrMSksRGEociwzKm8rMiwzKnMrMil9dChlLHIsbixzKSx0KGUscixzKzEsYSl9fShyLG4sMCxyLmxlbmd0aC0xKSxlLnB1c2goci5idWZmZXIsbi5idWZmZXIpLHtpZHM6cixwb3NpdGlvbnM6bn19LElhLmRlc2VyaWFsaXplPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBJYTtyZXR1cm4gZS5pZHM9dC5pZHMsZS5wb3NpdGlvbnM9dC5wb3NpdGlvbnMsZS5pbmRleGVkPSEwLGV9LGRuKCJGZWF0dXJlUG9zaXRpb25NYXAiLElhKTt2YXIgUmE9ZnVuY3Rpb24odCxlKXt0aGlzLmdsPXQuZ2wsdGhpcy5sb2NhdGlvbj1lfSxGYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dC5jYWxsKHRoaXMsZSxyKSx0aGlzLmN1cnJlbnQ9MH1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudCE9PXQmJih0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm0xaSh0aGlzLmxvY2F0aW9uLHQpKX0sZX0oUmEpLEJhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMuY3VycmVudD0wfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50IT09dCYmKHRoaXMuY3VycmVudD10LHRoaXMuZ2wudW5pZm9ybTFmKHRoaXMubG9jYXRpb24sdCkpfSxlfShSYSksTmE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUsciksdGhpcy5jdXJyZW50PVswLDBdfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dFswXT09PXRoaXMuY3VycmVudFswXSYmdFsxXT09PXRoaXMuY3VycmVudFsxXXx8KHRoaXMuY3VycmVudD10LHRoaXMuZ2wudW5pZm9ybTJmKHRoaXMubG9jYXRpb24sdFswXSx0WzFdKSl9LGV9KFJhKSxqYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dC5jYWxsKHRoaXMsZSxyKSx0aGlzLmN1cnJlbnQ9WzAsMCwwXX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RbMF09PT10aGlzLmN1cnJlbnRbMF0mJnRbMV09PT10aGlzLmN1cnJlbnRbMV0mJnRbMl09PT10aGlzLmN1cnJlbnRbMl18fCh0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm0zZih0aGlzLmxvY2F0aW9uLHRbMF0sdFsxXSx0WzJdKSl9LGV9KFJhKSxWYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dC5jYWxsKHRoaXMsZSxyKSx0aGlzLmN1cnJlbnQ9WzAsMCwwLDBdfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dFswXT09PXRoaXMuY3VycmVudFswXSYmdFsxXT09PXRoaXMuY3VycmVudFsxXSYmdFsyXT09PXRoaXMuY3VycmVudFsyXSYmdFszXT09PXRoaXMuY3VycmVudFszXXx8KHRoaXMuY3VycmVudD10LHRoaXMuZ2wudW5pZm9ybTRmKHRoaXMubG9jYXRpb24sdFswXSx0WzFdLHRbMl0sdFszXSkpfSxlfShSYSksVWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUsciksdGhpcy5jdXJyZW50PVd0LnRyYW5zcGFyZW50fXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dC5yPT09dGhpcy5jdXJyZW50LnImJnQuZz09PXRoaXMuY3VycmVudC5nJiZ0LmI9PT10aGlzLmN1cnJlbnQuYiYmdC5hPT09dGhpcy5jdXJyZW50LmF8fCh0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm00Zih0aGlzLmxvY2F0aW9uLHQucix0LmcsdC5iLHQuYSkpfSxlfShSYSkscWE9bmV3IEZsb2F0MzJBcnJheSgxNiksSGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUsciksdGhpcy5jdXJyZW50PXFhfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodFsxMl0hPT10aGlzLmN1cnJlbnRbMTJdfHx0WzBdIT09dGhpcy5jdXJyZW50WzBdKXJldHVybiB0aGlzLmN1cnJlbnQ9dCx2b2lkIHRoaXMuZ2wudW5pZm9ybU1hdHJpeDRmdih0aGlzLmxvY2F0aW9uLCExLHQpO2Zvcih2YXIgZT0xO2U8MTY7ZSsrKWlmKHRbZV0hPT10aGlzLmN1cnJlbnRbZV0pe3RoaXMuY3VycmVudD10LHRoaXMuZ2wudW5pZm9ybU1hdHJpeDRmdih0aGlzLmxvY2F0aW9uLCExLHQpO2JyZWFrfX0sZX0oUmEpO2Z1bmN0aW9uIEdhKHQpe3JldHVyblt6YSgyNTUqdC5yLDI1NSp0LmcpLHphKDI1NSp0LmIsMjU1KnQuYSldfXZhciBZYT1mdW5jdGlvbih0LGUscil7dGhpcy52YWx1ZT10LHRoaXMubmFtZXM9ZSx0aGlzLnVuaWZvcm1OYW1lcz10aGlzLm5hbWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4idV8iK3R9KSx0aGlzLnR5cGU9cix0aGlzLm1heFZhbHVlPS0xLzB9O1lhLnByb3RvdHlwZS5kZWZpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiIjZGVmaW5lIEhBU19VTklGT1JNX3VfIit0fSl9LFlhLnByb3RvdHlwZS5zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnM9ZnVuY3Rpb24oKXt9LFlhLnByb3RvdHlwZS5wb3B1bGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24oKXt9LFlhLnByb3RvdHlwZS51cGRhdGVQYWludEFycmF5PWZ1bmN0aW9uKCl7fSxZYS5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKCl7fSxZYS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sWWEucHJvdG90eXBlLnNldFVuaWZvcm1zPWZ1bmN0aW9uKHQsZSxyLG4pe2Uuc2V0KG4uY29uc3RhbnRPcih0aGlzLnZhbHVlKSl9LFlhLnByb3RvdHlwZS5nZXRCaW5kaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuImNvbG9yIj09PXRoaXMudHlwZT9uZXcgVWEodCxlKTpuZXcgQmEodCxlKX0sWWEuc2VyaWFsaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXQudmFsdWUscj10Lm5hbWVzLG49dC50eXBlO3JldHVybnt2YWx1ZTp2bihlKSxuYW1lczpyLHR5cGU6bn19LFlhLmRlc2VyaWFsaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXQudmFsdWUscj10Lm5hbWVzLG49dC50eXBlO3JldHVybiBuZXcgWWEobW4oZSkscixuKX07dmFyIFdhPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnZhbHVlPXQsdGhpcy5uYW1lcz1lLHRoaXMudW5pZm9ybU5hbWVzPXRoaXMubmFtZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJ1XyIrdH0pLHRoaXMudHlwZT1yLHRoaXMubWF4VmFsdWU9LTEvMCx0aGlzLnBhdHRlcm5Qb3NpdGlvbnM9e3BhdHRlcm5UbzpudWxsLHBhdHRlcm5Gcm9tOm51bGx9fTtXYS5wcm90b3R5cGUuZGVmaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iI2RlZmluZSBIQVNfVU5JRk9STV91XyIrdH0pfSxXYS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5PWZ1bmN0aW9uKCl7fSxXYS5wcm90b3R5cGUudXBkYXRlUGFpbnRBcnJheT1mdW5jdGlvbigpe30sV2EucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbigpe30sV2EucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LFdhLnByb3RvdHlwZS5zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnM9ZnVuY3Rpb24odCxlKXt0aGlzLnBhdHRlcm5Qb3NpdGlvbnMucGF0dGVyblRvPXQudGxicix0aGlzLnBhdHRlcm5Qb3NpdGlvbnMucGF0dGVybkZyb209ZS50bGJyfSxXYS5wcm90b3R5cGUuc2V0VW5pZm9ybXM9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT10aGlzLnBhdHRlcm5Qb3NpdGlvbnM7InVfcGF0dGVybl90byI9PT1hJiZpLnBhdHRlcm5UbyYmZS5zZXQoaS5wYXR0ZXJuVG8pLCJ1X3BhdHRlcm5fZnJvbSI9PT1hJiZpLnBhdHRlcm5Gcm9tJiZlLnNldChpLnBhdHRlcm5Gcm9tKX0sV2EucHJvdG90eXBlLmdldEJpbmRpbmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFZhKHQsZSl9O3ZhciBYYT1mdW5jdGlvbih0LGUscixuKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLm5hbWVzPWUsdGhpcy50eXBlPXIsdGhpcy51bmlmb3JtTmFtZXM9dGhpcy5uYW1lcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImFfIit0fSksdGhpcy5tYXhWYWx1ZT0tMS8wLHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzPWUubWFwKGZ1bmN0aW9uKHQpe3JldHVybntuYW1lOiJhXyIrdCx0eXBlOiJGbG9hdDMyIixjb21wb25lbnRzOiJjb2xvciI9PT1yPzI6MSxvZmZzZXQ6MH19KSx0aGlzLnBhaW50VmVydGV4QXJyYXk9bmV3IG59O1hhLnByb3RvdHlwZS5kZWZpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LFhhLnByb3RvdHlwZS5zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnM9ZnVuY3Rpb24oKXt9LFhhLnByb3RvdHlwZS5wb3B1bGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dGhpcy5wYWludFZlcnRleEFycmF5LGk9YS5sZW5ndGg7YS5yZXNlcnZlKHQpO3ZhciBvPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShuZXcgUG4oMCksZSx7fSxuKTtpZigiY29sb3IiPT09dGhpcy50eXBlKWZvcih2YXIgcz1HYShvKSxsPWk7bDx0O2wrKylhLmVtcGxhY2VCYWNrKHNbMF0sc1sxXSk7ZWxzZXtmb3IodmFyIGM9aTtjPHQ7YysrKWEuZW1wbGFjZUJhY2sobyk7dGhpcy5tYXhWYWx1ZT1NYXRoLm1heCh0aGlzLm1heFZhbHVlLG8pfX0sWGEucHJvdG90eXBlLnVwZGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dGhpcy5wYWludFZlcnRleEFycmF5LGk9dGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKHt6b29tOjB9LHIsbik7aWYoImNvbG9yIj09PXRoaXMudHlwZSlmb3IodmFyIG89R2EoaSkscz10O3M8ZTtzKyspYS5lbXBsYWNlKHMsb1swXSxvWzFdKTtlbHNle2Zvcih2YXIgbD10O2w8ZTtsKyspYS5lbXBsYWNlKGwsaSk7dGhpcy5tYXhWYWx1ZT1NYXRoLm1heCh0aGlzLm1heFZhbHVlLGkpfX0sWGEucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXt0aGlzLnBhaW50VmVydGV4QXJyYXkmJnRoaXMucGFpbnRWZXJ0ZXhBcnJheS5hcnJheUJ1ZmZlciYmKHRoaXMucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXIuYnVmZmVyP3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YSh0aGlzLnBhaW50VmVydGV4QXJyYXkpOnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5wYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSl9LFhhLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5wYWludFZlcnRleEJ1ZmZlciYmdGhpcy5wYWludFZlcnRleEJ1ZmZlci5kZXN0cm95KCl9LFhhLnByb3RvdHlwZS5zZXRVbmlmb3Jtcz1mdW5jdGlvbih0LGUpe2Uuc2V0KDApfSxYYS5wcm90b3R5cGUuZ2V0QmluZGluZz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgQmEodCxlKX07dmFyIFphPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLm5hbWVzPWUsdGhpcy51bmlmb3JtTmFtZXM9dGhpcy5uYW1lcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInVfIit0KyJfdCJ9KSx0aGlzLnR5cGU9cix0aGlzLnVzZUludGVnZXJab29tPW4sdGhpcy56b29tPWEsdGhpcy5tYXhWYWx1ZT0tMS8wO3ZhciBvPWk7dGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXM9ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue25hbWU6ImFfIit0LHR5cGU6IkZsb2F0MzIiLGNvbXBvbmVudHM6ImNvbG9yIj09PXI/NDoyLG9mZnNldDowfX0pLHRoaXMucGFpbnRWZXJ0ZXhBcnJheT1uZXcgb307WmEucHJvdG90eXBlLmRlZmluZXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sWmEucHJvdG90eXBlLnNldENvbnN0YW50UGF0dGVyblBvc2l0aW9ucz1mdW5jdGlvbigpe30sWmEucHJvdG90eXBlLnBvcHVsYXRlUGFpbnRBcnJheT1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10aGlzLnBhaW50VmVydGV4QXJyYXksaT1hLmxlbmd0aDthLnJlc2VydmUodCk7dmFyIG89dGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKG5ldyBQbih0aGlzLnpvb20pLGUse30sbikscz10aGlzLmV4cHJlc3Npb24uZXZhbHVhdGUobmV3IFBuKHRoaXMuem9vbSsxKSxlLHt9LG4pO2lmKCJjb2xvciI9PT10aGlzLnR5cGUpZm9yKHZhciBsPUdhKG8pLGM9R2EocyksdT1pO3U8dDt1KyspYS5lbXBsYWNlQmFjayhsWzBdLGxbMV0sY1swXSxjWzFdKTtlbHNle2Zvcih2YXIgaD1pO2g8dDtoKyspYS5lbXBsYWNlQmFjayhvLHMpO3RoaXMubWF4VmFsdWU9TWF0aC5tYXgodGhpcy5tYXhWYWx1ZSxvLHMpfX0sWmEucHJvdG90eXBlLnVwZGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dGhpcy5wYWludFZlcnRleEFycmF5LGk9dGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKHt6b29tOnRoaXMuem9vbX0scixuKSxvPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZSh7em9vbTp0aGlzLnpvb20rMX0scixuKTtpZigiY29sb3IiPT09dGhpcy50eXBlKWZvcih2YXIgcz1HYShpKSxsPUdhKG8pLGM9dDtjPGU7YysrKWEuZW1wbGFjZShjLHNbMF0sc1sxXSxsWzBdLGxbMV0pO2Vsc2V7Zm9yKHZhciB1PXQ7dTxlO3UrKylhLmVtcGxhY2UodSxpLG8pO3RoaXMubWF4VmFsdWU9TWF0aC5tYXgodGhpcy5tYXhWYWx1ZSxpLG8pfX0sWmEucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXt0aGlzLnBhaW50VmVydGV4QXJyYXkmJnRoaXMucGFpbnRWZXJ0ZXhBcnJheS5hcnJheUJ1ZmZlciYmKHRoaXMucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXIuYnVmZmVyP3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YSh0aGlzLnBhaW50VmVydGV4QXJyYXkpOnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5wYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSl9LFphLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5wYWludFZlcnRleEJ1ZmZlciYmdGhpcy5wYWludFZlcnRleEJ1ZmZlci5kZXN0cm95KCl9LFphLnByb3RvdHlwZS5pbnRlcnBvbGF0aW9uRmFjdG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVzZUludGVnZXJab29tP3RoaXMuZXhwcmVzc2lvbi5pbnRlcnBvbGF0aW9uRmFjdG9yKE1hdGguZmxvb3IodCksdGhpcy56b29tLHRoaXMuem9vbSsxKTp0aGlzLmV4cHJlc3Npb24uaW50ZXJwb2xhdGlvbkZhY3Rvcih0LHRoaXMuem9vbSx0aGlzLnpvb20rMSl9LFphLnByb3RvdHlwZS5zZXRVbmlmb3Jtcz1mdW5jdGlvbih0LGUscil7ZS5zZXQodGhpcy5pbnRlcnBvbGF0aW9uRmFjdG9yKHIuem9vbSkpfSxaYS5wcm90b3R5cGUuZ2V0QmluZGluZz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgQmEodCxlKX07dmFyIEphPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe3RoaXMuZXhwcmVzc2lvbj10LHRoaXMubmFtZXM9ZSx0aGlzLnR5cGU9cix0aGlzLnVuaWZvcm1OYW1lcz10aGlzLm5hbWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4idV8iK3QrIl90In0pLHRoaXMudXNlSW50ZWdlclpvb209bix0aGlzLnpvb209YSx0aGlzLm1heFZhbHVlPS0xLzAsdGhpcy5sYXllcklkPW8sdGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXM9ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue25hbWU6ImFfIit0LHR5cGU6IlVpbnQxNiIsY29tcG9uZW50czo0LG9mZnNldDowfX0pLHRoaXMuem9vbUluUGFpbnRWZXJ0ZXhBcnJheT1uZXcgaSx0aGlzLnpvb21PdXRQYWludFZlcnRleEFycmF5PW5ldyBpfTtKYS5wcm90b3R5cGUuZGVmaW5lcz1mdW5jdGlvbigpe3JldHVybltdfSxKYS5wcm90b3R5cGUuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zPWZ1bmN0aW9uKCl7fSxKYS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnpvb21JblBhaW50VmVydGV4QXJyYXksYT10aGlzLnpvb21PdXRQYWludFZlcnRleEFycmF5LGk9dGhpcy5sYXllcklkLG89bi5sZW5ndGg7aWYobi5yZXNlcnZlKHQpLGEucmVzZXJ2ZSh0KSxyJiZlLnBhdHRlcm5zJiZlLnBhdHRlcm5zW2ldKXt2YXIgcz1lLnBhdHRlcm5zW2ldLGw9cy5taW4sYz1zLm1pZCx1PXMubWF4LGg9cltsXSxmPXJbY10scD1yW3VdO2lmKCFofHwhZnx8IXApcmV0dXJuO2Zvcih2YXIgZD1vO2Q8dDtkKyspbi5lbXBsYWNlQmFjayhmLnRsWzBdLGYudGxbMV0sZi5iclswXSxmLmJyWzFdLGgudGxbMF0saC50bFsxXSxoLmJyWzBdLGguYnJbMV0pLGEuZW1wbGFjZUJhY2soZi50bFswXSxmLnRsWzFdLGYuYnJbMF0sZi5iclsxXSxwLnRsWzBdLHAudGxbMV0scC5iclswXSxwLmJyWzFdKX19LEphLnByb3RvdHlwZS51cGRhdGVQYWludEFycmF5PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9dGhpcy56b29tSW5QYWludFZlcnRleEFycmF5LG89dGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhBcnJheSxzPXRoaXMubGF5ZXJJZDtpZihhJiZyLnBhdHRlcm5zJiZyLnBhdHRlcm5zW3NdKXt2YXIgbD1yLnBhdHRlcm5zW3NdLGM9bC5taW4sdT1sLm1pZCxoPWwubWF4LGY9YVtjXSxwPWFbdV0sZD1hW2hdO2lmKCFmfHwhcHx8IWQpcmV0dXJuO2Zvcih2YXIgZz10O2c8ZTtnKyspaS5lbXBsYWNlKGcscC50bFswXSxwLnRsWzFdLHAuYnJbMF0scC5iclsxXSxmLnRsWzBdLGYudGxbMV0sZi5iclswXSxmLmJyWzFdKSxvLmVtcGxhY2UoZyxwLnRsWzBdLHAudGxbMV0scC5iclswXSxwLmJyWzFdLGQudGxbMF0sZC50bFsxXSxkLmJyWzBdLGQuYnJbMV0pfX0sSmEucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXt0aGlzLnpvb21JblBhaW50VmVydGV4QXJyYXkmJnRoaXMuem9vbUluUGFpbnRWZXJ0ZXhBcnJheS5hcnJheUJ1ZmZlciYmdGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhBcnJheSYmdGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhBcnJheS5hcnJheUJ1ZmZlciYmKHRoaXMuem9vbUluUGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy56b29tSW5QYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSx0aGlzLnpvb21PdXRQYWludFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLnpvb21PdXRQYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSl9LEphLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMuem9vbU91dFBhaW50VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnpvb21JblBhaW50VmVydGV4QnVmZmVyJiZ0aGlzLnpvb21JblBhaW50VmVydGV4QnVmZmVyLmRlc3Ryb3koKX0sSmEucHJvdG90eXBlLnNldFVuaWZvcm1zPWZ1bmN0aW9uKHQsZSl7ZS5zZXQoMCl9LEphLnByb3RvdHlwZS5nZXRCaW5kaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBCYSh0LGUpfTt2YXIgS2E9ZnVuY3Rpb24oKXt0aGlzLmJpbmRlcnM9e30sdGhpcy5jYWNoZUtleT0iIix0aGlzLl9idWZmZXJzPVtdLHRoaXMuX2ZlYXR1cmVNYXA9bmV3IElhLHRoaXMuX2J1ZmZlck9mZnNldD0wfTtLYS5jcmVhdGVEeW5hbWljPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1uZXcgS2EsYT1bXTtmb3IodmFyIGkgaW4gdC5wYWludC5fdmFsdWVzKWlmKHIoaSkpe3ZhciBvPXQucGFpbnQuZ2V0KGkpO2lmKG8gaW5zdGFuY2VvZiBCbiYmdXIoby5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uKSl7dmFyIHM9JGEoaSx0LnR5cGUpLGw9by5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uLnR5cGUsYz1vLnByb3BlcnR5LnVzZUludGVnZXJab29tO2lmKCJjcm9zcy1mYWRlZCI9PT1vLnByb3BlcnR5LnNwZWNpZmljYXRpb25bInByb3BlcnR5LXR5cGUiXXx8ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVuIj09PW8ucHJvcGVydHkuc3BlY2lmaWNhdGlvblsicHJvcGVydHktdHlwZSJdKWlmKCJjb25zdGFudCI9PT1vLnZhbHVlLmtpbmQpbi5iaW5kZXJzW2ldPW5ldyBXYShvLnZhbHVlLnZhbHVlLHMsbCksYS5wdXNoKCIvdV8iK2kpO2Vsc2V7dmFyIHU9dGkoaSxsLCJzb3VyY2UiKTtuLmJpbmRlcnNbaV09bmV3IEphKG8udmFsdWUscyxsLGMsZSx1LHQuaWQpLGEucHVzaCgiL2FfIitpKX1lbHNlIGlmKCJjb25zdGFudCI9PT1vLnZhbHVlLmtpbmQpbi5iaW5kZXJzW2ldPW5ldyBZYShvLnZhbHVlLnZhbHVlLHMsbCksYS5wdXNoKCIvdV8iK2kpO2Vsc2UgaWYoInNvdXJjZSI9PT1vLnZhbHVlLmtpbmQpe3ZhciBoPXRpKGksbCwic291cmNlIik7bi5iaW5kZXJzW2ldPW5ldyBYYShvLnZhbHVlLHMsbCxoKSxhLnB1c2goIi9hXyIraSl9ZWxzZXt2YXIgZj10aShpLGwsImNvbXBvc2l0ZSIpO24uYmluZGVyc1tpXT1uZXcgWmEoby52YWx1ZSxzLGwsYyxlLGYpLGEucHVzaCgiL3pfIitpKX19fXJldHVybiBuLmNhY2hlS2V5PWEuc29ydCgpLmpvaW4oIiIpLG59LEthLnByb3RvdHlwZS5wb3B1bGF0ZVBhaW50QXJyYXlzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7Zm9yKHZhciBpIGluIHRoaXMuYmluZGVycyl0aGlzLmJpbmRlcnNbaV0ucG9wdWxhdGVQYWludEFycmF5KHQsZSxuLGEpO3ZvaWQgMCE9PWUuaWQmJnRoaXMuX2ZlYXR1cmVNYXAuYWRkKCtlLmlkLHIsdGhpcy5fYnVmZmVyT2Zmc2V0LHQpLHRoaXMuX2J1ZmZlck9mZnNldD10fSxLYS5wcm90b3R5cGUuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIHRoaXMuYmluZGVycyl0aGlzLmJpbmRlcnNbcl0uc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zKHQsZSl9LEthLnByb3RvdHlwZS51cGRhdGVQYWludEFycmF5cz1mdW5jdGlvbih0LGUscixuKXt2YXIgYT0hMTtmb3IodmFyIGkgaW4gdClmb3IodmFyIG89MCxzPXRoaXMuX2ZlYXR1cmVNYXAuZ2V0UG9zaXRpb25zKCtpKTtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPXNbb10sYz1lLmZlYXR1cmUobC5pbmRleCk7Zm9yKHZhciB1IGluIHRoaXMuYmluZGVycyl7dmFyIGg9dGhpcy5iaW5kZXJzW3VdO2lmKCEoaCBpbnN0YW5jZW9mIFlhfHxoIGluc3RhbmNlb2YgV2EpJiYhMD09PWguZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KXt2YXIgZj1yLnBhaW50LmdldCh1KTtoLmV4cHJlc3Npb249Zi52YWx1ZSxoLnVwZGF0ZVBhaW50QXJyYXkobC5zdGFydCxsLmVuZCxjLHRbaV0sbiksYT0hMH19fXJldHVybiBhfSxLYS5wcm90b3R5cGUuZGVmaW5lcz1mdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLmJpbmRlcnMpdC5wdXNoLmFwcGx5KHQsdGhpcy5iaW5kZXJzW2VdLmRlZmluZXMoKSk7cmV0dXJuIHR9LEthLnByb3RvdHlwZS5nZXRQYWludFZlcnRleEJ1ZmZlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVmZmVyc30sS2EucHJvdG90eXBlLmdldFVuaWZvcm1zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W107Zm9yKHZhciBuIGluIHRoaXMuYmluZGVycylmb3IodmFyIGE9dGhpcy5iaW5kZXJzW25dLGk9MCxvPWEudW5pZm9ybU5hbWVzO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXTtpZihlW3NdKXt2YXIgbD1hLmdldEJpbmRpbmcodCxlW3NdKTtyLnB1c2goe25hbWU6cyxwcm9wZXJ0eTpuLGJpbmRpbmc6bH0pfX1yZXR1cm4gcn0sS2EucHJvdG90eXBlLnNldFVuaWZvcm1zPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgYT0wLGk9ZTthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV0scz1vLm5hbWUsbD1vLnByb3BlcnR5LGM9by5iaW5kaW5nO3RoaXMuYmluZGVyc1tsXS5zZXRVbmlmb3Jtcyh0LGMsbixyLmdldChsKSxzKX19LEthLnByb3RvdHlwZS51cGRhdGVQYXR0ZXJuUGFpbnRCdWZmZXJzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0aGlzLmJpbmRlcnMpe3ZhciBuPXRoaXMuYmluZGVyc1tyXTtpZihuIGluc3RhbmNlb2YgSmEpe3ZhciBhPTI9PT10LmZyb21TY2FsZT9uLnpvb21JblBhaW50VmVydGV4QnVmZmVyOm4uem9vbU91dFBhaW50VmVydGV4QnVmZmVyO2EmJmUucHVzaChhKX1lbHNlKG4gaW5zdGFuY2VvZiBYYXx8biBpbnN0YW5jZW9mIFphKSYmbi5wYWludFZlcnRleEJ1ZmZlciYmZS5wdXNoKG4ucGFpbnRWZXJ0ZXhCdWZmZXIpfXRoaXMuX2J1ZmZlcnM9ZX0sS2EucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5iaW5kZXJzKXRoaXMuYmluZGVyc1tlXS51cGxvYWQodCk7dmFyIHI9W107Zm9yKHZhciBuIGluIHRoaXMuYmluZGVycyl7dmFyIGE9dGhpcy5iaW5kZXJzW25dOyhhIGluc3RhbmNlb2YgWGF8fGEgaW5zdGFuY2VvZiBaYSkmJmEucGFpbnRWZXJ0ZXhCdWZmZXImJnIucHVzaChhLnBhaW50VmVydGV4QnVmZmVyKX10aGlzLl9idWZmZXJzPXJ9LEthLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuYmluZGVycyl0aGlzLmJpbmRlcnNbdF0uZGVzdHJveSgpfTt2YXIgUWE9ZnVuY3Rpb24odCxlLHIsbil7dm9pZCAwPT09biYmKG49ZnVuY3Rpb24oKXtyZXR1cm4hMH0pLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPXt9O2Zvcih2YXIgYT0wLGk9ZTthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV07dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbby5pZF09S2EuY3JlYXRlRHluYW1pYyhvLHIsbiksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbby5pZF0ubGF5b3V0QXR0cmlidXRlcz10fXRoaXMubmVlZHNVcGxvYWQ9ITF9O2Z1bmN0aW9uICRhKHQsZSl7cmV0dXJueyJ0ZXh0LW9wYWNpdHkiOlsib3BhY2l0eSJdLCJpY29uLW9wYWNpdHkiOlsib3BhY2l0eSJdLCJ0ZXh0LWNvbG9yIjpbImZpbGxfY29sb3IiXSwiaWNvbi1jb2xvciI6WyJmaWxsX2NvbG9yIl0sInRleHQtaGFsby1jb2xvciI6WyJoYWxvX2NvbG9yIl0sImljb24taGFsby1jb2xvciI6WyJoYWxvX2NvbG9yIl0sInRleHQtaGFsby1ibHVyIjpbImhhbG9fYmx1ciJdLCJpY29uLWhhbG8tYmx1ciI6WyJoYWxvX2JsdXIiXSwidGV4dC1oYWxvLXdpZHRoIjpbImhhbG9fd2lkdGgiXSwiaWNvbi1oYWxvLXdpZHRoIjpbImhhbG9fd2lkdGgiXSwibGluZS1nYXAtd2lkdGgiOlsiZ2Fwd2lkdGgiXSwibGluZS1wYXR0ZXJuIjpbInBhdHRlcm5fdG8iLCJwYXR0ZXJuX2Zyb20iXSwiZmlsbC1wYXR0ZXJuIjpbInBhdHRlcm5fdG8iLCJwYXR0ZXJuX2Zyb20iXSwiZmlsbC1leHRydXNpb24tcGF0dGVybiI6WyJwYXR0ZXJuX3RvIiwicGF0dGVybl9mcm9tIl19W3RdfHxbdC5yZXBsYWNlKGUrIi0iLCIiKS5yZXBsYWNlKC8tL2csIl8iKV19ZnVuY3Rpb24gdGkodCxlLHIpe3ZhciBuPXtjb2xvcjp7c291cmNlOm1hLGNvbXBvc2l0ZTp5YX0sbnVtYmVyOntzb3VyY2U6aGEsY29tcG9zaXRlOm1hfX0sYT1mdW5jdGlvbih0KXtyZXR1cm57ImxpbmUtcGF0dGVybiI6e3NvdXJjZTpyYSxjb21wb3NpdGU6cmF9LCJmaWxsLXBhdHRlcm4iOntzb3VyY2U6cmEsY29tcG9zaXRlOnJhfSwiZmlsbC1leHRydXNpb24tcGF0dGVybiI6e3NvdXJjZTpyYSxjb21wb3NpdGU6cmF9fVt0XX0odCk7cmV0dXJuIGEmJmFbcl18fG5bZV1bcl19UWEucHJvdG90eXBlLnBvcHVsYXRlUGFpbnRBcnJheXM9ZnVuY3Rpb24odCxlLHIsbixhKXtmb3IodmFyIGkgaW4gdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMpdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbaV0ucG9wdWxhdGVQYWludEFycmF5cyh0LGUscixuLGEpO3RoaXMubmVlZHNVcGxvYWQ9ITB9LFFhLnByb3RvdHlwZS51cGRhdGVQYWludEFycmF5cz1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9MCxpPXI7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1pW2FdO3RoaXMubmVlZHNVcGxvYWQ9dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbby5pZF0udXBkYXRlUGFpbnRBcnJheXModCxlLG8sbil8fHRoaXMubmVlZHNVcGxvYWR9fSxRYS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2dyYW1Db25maWd1cmF0aW9uc1t0XX0sUWEucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXtpZih0aGlzLm5lZWRzVXBsb2FkKXtmb3IodmFyIGUgaW4gdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMpdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbZV0udXBsb2FkKHQpO3RoaXMubmVlZHNVcGxvYWQ9ITF9fSxRYS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucyl0aGlzLnByb2dyYW1Db25maWd1cmF0aW9uc1t0XS5kZXN0cm95KCl9LGRuKCJDb25zdGFudEJpbmRlciIsWWEpLGRuKCJDcm9zc0ZhZGVkQ29uc3RhbnRCaW5kZXIiLFdhKSxkbigiU291cmNlRXhwcmVzc2lvbkJpbmRlciIsWGEpLGRuKCJDcm9zc0ZhZGVkQ29tcG9zaXRlQmluZGVyIixKYSksZG4oIkNvbXBvc2l0ZUV4cHJlc3Npb25CaW5kZXIiLFphKSxkbigiUHJvZ3JhbUNvbmZpZ3VyYXRpb24iLEthLHtvbWl0OlsiX2J1ZmZlcnMiXX0pLGRuKCJQcm9ncmFtQ29uZmlndXJhdGlvblNldCIsUWEpO3ZhciBlaT04MTkyLHJpPSgxNSx7bWluOi0xKk1hdGgucG93KDIsMTQpLG1heDpNYXRoLnBvdygyLDE0KS0xfSk7ZnVuY3Rpb24gbmkodCl7Zm9yKHZhciBlPWVpL3QuZXh0ZW50LHI9dC5sb2FkR2VvbWV0cnkoKSxuPTA7bjxyLmxlbmd0aDtuKyspZm9yKHZhciBhPXJbbl0saT0wO2k8YS5sZW5ndGg7aSsrKXt2YXIgbz1hW2ldO28ueD1NYXRoLnJvdW5kKG8ueCplKSxvLnk9TWF0aC5yb3VuZChvLnkqZSksKG8ueDxyaS5taW58fG8ueD5yaS5tYXh8fG8ueTxyaS5taW58fG8ueT5yaS5tYXgpJiYodygiR2VvbWV0cnkgZXhjZWVkcyBhbGxvd2VkIGV4dGVudCwgcmVkdWNlIHlvdXIgdmVjdG9yIHRpbGUgYnVmZmVyIHNpemUiKSxvLng9YyhvLngscmkubWluLHJpLm1heCksby55PWMoby55LHJpLm1pbixyaS5tYXgpKX1yZXR1cm4gcn1mdW5jdGlvbiBhaSh0LGUscixuLGEpe3QuZW1wbGFjZUJhY2soMiplKyhuKzEpLzIsMipyKyhhKzEpLzIpfXZhciBpaT1mdW5jdGlvbih0KXt0aGlzLnpvb209dC56b29tLHRoaXMub3ZlcnNjYWxpbmc9dC5vdmVyc2NhbGluZyx0aGlzLmxheWVycz10LmxheWVycyx0aGlzLmxheWVySWRzPXRoaXMubGF5ZXJzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pLHRoaXMuaW5kZXg9dC5pbmRleCx0aGlzLmhhc1BhdHRlcm49ITEsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheT1uZXcgUW4sdGhpcy5pbmRleEFycmF5PW5ldyBkYSx0aGlzLnNlZ21lbnRzPW5ldyBPYSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgUWEoUGEsdC5sYXllcnMsdC56b29tKSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzU3RhdGVEZXBlbmRlbnQoKX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pfTtmdW5jdGlvbiBvaSh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKGdpKGUsdFtyXSkpcmV0dXJuITA7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZ2kodCxlW25dKSlyZXR1cm4hMDtyZXR1cm4hIXVpKHQsZSl9ZnVuY3Rpb24gc2kodCxlLHIpe3JldHVybiEhZ2kodCxlKXx8ISFmaShlLHQscil9ZnVuY3Rpb24gbGkodCxlKXtpZigxPT09dC5sZW5ndGgpcmV0dXJuIGRpKGUsdFswXSk7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZm9yKHZhciBuPWVbcl0sYT0wO2E8bi5sZW5ndGg7YSsrKWlmKGdpKHQsblthXSkpcmV0dXJuITA7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYoZGkoZSx0W2ldKSlyZXR1cm4hMDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZih1aSh0LGVbb10pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGNpKHQsZSxyKXtpZih0Lmxlbmd0aD4xKXtpZih1aSh0LGUpKXJldHVybiEwO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGZpKGVbbl0sdCxyKSlyZXR1cm4hMH1mb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKylpZihmaSh0W2FdLGUscikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdWkodCxlKXtpZigwPT09dC5sZW5ndGh8fDA9PT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoLTE7cisrKWZvcih2YXIgbj10W3JdLGE9dFtyKzFdLGk9MDtpPGUubGVuZ3RoLTE7aSsrKWlmKGhpKG4sYSxlW2ldLGVbaSsxXSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gaGkodCxlLHIsbil7cmV0dXJuIGsodCxyLG4pIT09ayhlLHIsbikmJmsodCxlLHIpIT09ayh0LGUsbil9ZnVuY3Rpb24gZmkodCxlLHIpe3ZhciBuPXIqcjtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIHQuZGlzdFNxcihlWzBdKTxuO2Zvcih2YXIgYT0xO2E8ZS5sZW5ndGg7YSsrKWlmKHBpKHQsZVthLTFdLGVbYV0pPG4pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcGkodCxlLHIpe3ZhciBuPWUuZGlzdFNxcihyKTtpZigwPT09bilyZXR1cm4gdC5kaXN0U3FyKGUpO3ZhciBhPSgodC54LWUueCkqKHIueC1lLngpKyh0LnktZS55KSooci55LWUueSkpL247cmV0dXJuIGE8MD90LmRpc3RTcXIoZSk6YT4xP3QuZGlzdFNxcihyKTp0LmRpc3RTcXIoci5zdWIoZSkuX211bHQoYSkuX2FkZChlKSl9ZnVuY3Rpb24gZGkodCxlKXtmb3IodmFyIHIsbixhLGk9ITEsbz0wO288dC5sZW5ndGg7bysrKWZvcih2YXIgcz0wLGw9KHI9dFtvXSkubGVuZ3RoLTE7czxyLmxlbmd0aDtsPXMrKyluPXJbc10sYT1yW2xdLG4ueT5lLnkhPWEueT5lLnkmJmUueDwoYS54LW4ueCkqKGUueS1uLnkpLyhhLnktbi55KStuLngmJihpPSFpKTtyZXR1cm4gaX1mdW5jdGlvbiBnaSh0LGUpe2Zvcih2YXIgcj0hMSxuPTAsYT10Lmxlbmd0aC0xO248dC5sZW5ndGg7YT1uKyspe3ZhciBpPXRbbl0sbz10W2FdO2kueT5lLnkhPW8ueT5lLnkmJmUueDwoby54LWkueCkqKGUueS1pLnkpLyhvLnktaS55KStpLngmJihyPSFyKX1yZXR1cm4gcn1mdW5jdGlvbiB2aSh0LGUscil7dmFyIG49clswXSxhPXJbMl07aWYodC54PG4ueCYmZS54PG4ueHx8dC54PmEueCYmZS54PmEueHx8dC55PG4ueSYmZS55PG4ueXx8dC55PmEueSYmZS55PmEueSlyZXR1cm4hMTt2YXIgaT1rKHQsZSxyWzBdKTtyZXR1cm4gaSE9PWsodCxlLHJbMV0pfHxpIT09ayh0LGUsclsyXSl8fGkhPT1rKHQsZSxyWzNdKX1mdW5jdGlvbiBtaSh0LGUscil7dmFyIG49ZS5wYWludC5nZXQodCkudmFsdWU7cmV0dXJuImNvbnN0YW50Ij09PW4ua2luZD9uLnZhbHVlOnIucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChlLmlkKS5iaW5kZXJzW3RdLm1heFZhbHVlfWZ1bmN0aW9uIHlpKHQpe3JldHVybiBNYXRoLnNxcnQodFswXSp0WzBdK3RbMV0qdFsxXSl9ZnVuY3Rpb24geGkodCxlLHIsbixpKXtpZighZVswXSYmIWVbMV0pcmV0dXJuIHQ7dmFyIG89YS5jb252ZXJ0KGUpLl9tdWx0KGkpOyJ2aWV3cG9ydCI9PT1yJiZvLl9yb3RhdGUoLW4pO2Zvcih2YXIgcz1bXSxsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBjPXRbbF07cy5wdXNoKGMuc3ViKG8pKX1yZXR1cm4gc31paS5wcm90b3R5cGUucG9wdWxhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxheWVyc1swXSxuPVtdLGE9bnVsbDsiY2lyY2xlIj09PXIudHlwZSYmKGE9ci5sYXlvdXQuZ2V0KCJjaXJjbGUtc29ydC1rZXkiKSk7Zm9yKHZhciBpPTAsbz10O2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXSxsPXMuZmVhdHVyZSxjPXMuaW5kZXgsdT1zLnNvdXJjZUxheWVySW5kZXg7aWYodGhpcy5sYXllcnNbMF0uX2ZlYXR1cmVGaWx0ZXIobmV3IFBuKHRoaXMuem9vbSksbCkpe3ZhciBoPW5pKGwpLGY9YT9hLmV2YWx1YXRlKGwse30pOnZvaWQgMCxwPXtpZDpsLmlkLHByb3BlcnRpZXM6bC5wcm9wZXJ0aWVzLHR5cGU6bC50eXBlLHNvdXJjZUxheWVySW5kZXg6dSxpbmRleDpjLGdlb21ldHJ5OmgscGF0dGVybnM6e30sc29ydEtleTpmfTtuLnB1c2gocCl9fWEmJm4uc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnNvcnRLZXktZS5zb3J0S2V5fSk7Zm9yKHZhciBkPTAsZz1uO2Q8Zy5sZW5ndGg7ZCs9MSl7dmFyIHY9Z1tkXSxtPXYseT1tLmdlb21ldHJ5LHg9bS5pbmRleCxiPW0uc291cmNlTGF5ZXJJbmRleCxfPXRbeF0uZmVhdHVyZTt0aGlzLmFkZEZlYXR1cmUodix5LHgpLGUuZmVhdHVyZUluZGV4Lmluc2VydChfLHkseCxiLHRoaXMuaW5kZXgpfX0saWkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUscil7dGhpcy5zdGF0ZURlcGVuZGVudExheWVycy5sZW5ndGgmJnRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJzLHIpfSxpaS5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGh9LGlpLnByb3RvdHlwZS51cGxvYWRQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudXBsb2FkZWR8fHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfSxpaS5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQpe3RoaXMudXBsb2FkZWR8fCh0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmxheW91dFZlcnRleEFycmF5LFBhKSx0aGlzLmluZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIodGhpcy5pbmRleEFycmF5KSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpLHRoaXMudXBsb2FkZWQ9ITB9LGlpLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJveSgpKX0saWkucHJvdG90eXBlLmFkZEZlYXR1cmU9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wLGE9ZTtuPGEubGVuZ3RoO24rPTEpZm9yKHZhciBpPTAsbz1hW25dO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXSxsPXMueCxjPXMueTtpZighKGw8MHx8bD49ZWl8fGM8MHx8Yz49ZWkpKXt2YXIgdT10aGlzLnNlZ21lbnRzLnByZXBhcmVTZWdtZW50KDQsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmluZGV4QXJyYXksdC5zb3J0S2V5KSxoPXUudmVydGV4TGVuZ3RoO2FpKHRoaXMubGF5b3V0VmVydGV4QXJyYXksbCxjLC0xLC0xKSxhaSh0aGlzLmxheW91dFZlcnRleEFycmF5LGwsYywxLC0xKSxhaSh0aGlzLmxheW91dFZlcnRleEFycmF5LGwsYywxLDEpLGFpKHRoaXMubGF5b3V0VmVydGV4QXJyYXksbCxjLC0xLDEpLHRoaXMuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhoLGgrMSxoKzIpLHRoaXMuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhoLGgrMyxoKzIpLHUudmVydGV4TGVuZ3RoKz00LHUucHJpbWl0aXZlTGVuZ3RoKz0yfX10aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoLHQscix7fSl9LGRuKCJDaXJjbGVCdWNrZXQiLGlpLHtvbWl0OlsibGF5ZXJzIl19KTt2YXIgYmksX2k9bmV3IEduKHsiY2lyY2xlLXNvcnQta2V5IjpuZXcgVm4oVHQubGF5b3V0X2NpcmNsZVsiY2lyY2xlLXNvcnQta2V5Il0pfSksd2k9e3BhaW50Om5ldyBHbih7ImNpcmNsZS1yYWRpdXMiOm5ldyBWbihUdC5wYWludF9jaXJjbGVbImNpcmNsZS1yYWRpdXMiXSksImNpcmNsZS1jb2xvciI6bmV3IFZuKFR0LnBhaW50X2NpcmNsZVsiY2lyY2xlLWNvbG9yIl0pLCJjaXJjbGUtYmx1ciI6bmV3IFZuKFR0LnBhaW50X2NpcmNsZVsiY2lyY2xlLWJsdXIiXSksImNpcmNsZS1vcGFjaXR5IjpuZXcgVm4oVHQucGFpbnRfY2lyY2xlWyJjaXJjbGUtb3BhY2l0eSJdKSwiY2lyY2xlLXRyYW5zbGF0ZSI6bmV3IGpuKFR0LnBhaW50X2NpcmNsZVsiY2lyY2xlLXRyYW5zbGF0ZSJdKSwiY2lyY2xlLXRyYW5zbGF0ZS1hbmNob3IiOm5ldyBqbihUdC5wYWludF9jaXJjbGVbImNpcmNsZS10cmFuc2xhdGUtYW5jaG9yIl0pLCJjaXJjbGUtcGl0Y2gtc2NhbGUiOm5ldyBqbihUdC5wYWludF9jaXJjbGVbImNpcmNsZS1waXRjaC1zY2FsZSJdKSwiY2lyY2xlLXBpdGNoLWFsaWdubWVudCI6bmV3IGpuKFR0LnBhaW50X2NpcmNsZVsiY2lyY2xlLXBpdGNoLWFsaWdubWVudCJdKSwiY2lyY2xlLXN0cm9rZS13aWR0aCI6bmV3IFZuKFR0LnBhaW50X2NpcmNsZVsiY2lyY2xlLXN0cm9rZS13aWR0aCJdKSwiY2lyY2xlLXN0cm9rZS1jb2xvciI6bmV3IFZuKFR0LnBhaW50X2NpcmNsZVsiY2lyY2xlLXN0cm9rZS1jb2xvciJdKSwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5IjpuZXcgVm4oVHQucGFpbnRfY2lyY2xlWyJjaXJjbGUtc3Ryb2tlLW9wYWNpdHkiXSl9KSxsYXlvdXQ6X2l9LGtpPSJ1bmRlZmluZWQiIT10eXBlb2YgRmxvYXQzMkFycmF5P0Zsb2F0MzJBcnJheTpBcnJheTtmdW5jdGlvbiBUaSh0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89ZVszXTtyZXR1cm4gdFswXT1yWzBdKm4rcls0XSphK3JbOF0qaStyWzEyXSpvLHRbMV09clsxXSpuK3JbNV0qYStyWzldKmkrclsxM10qbyx0WzJdPXJbMl0qbityWzZdKmErclsxMF0qaStyWzE0XSpvLHRbM109clszXSpuK3JbN10qYStyWzExXSppK3JbMTVdKm8sdH1NYXRoLmh5cG90fHwoTWF0aC5oeXBvdD1mdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMsZT0wLHI9YXJndW1lbnRzLmxlbmd0aDtyLS07KWUrPXRbcl0qdFtyXTtyZXR1cm4gTWF0aC5zcXJ0KGUpfSksYmk9bmV3IGtpKDMpLGtpIT1GbG9hdDMyQXJyYXkmJihiaVswXT0wLGJpWzFdPTAsYmlbMl09MCksZnVuY3Rpb24oKXt2YXIgdD1uZXcga2koNCk7a2khPUZsb2F0MzJBcnJheSYmKHRbMF09MCx0WzFdPTAsdFsyXT0wLHRbM109MCl9KCk7dmFyIE1pPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSx3aSl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmNyZWF0ZUJ1Y2tldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGlpKHQpfSxlLnByb3RvdHlwZS5xdWVyeVJhZGl1cz1mdW5jdGlvbih0KXt2YXIgZT10O3JldHVybiBtaSgiY2lyY2xlLXJhZGl1cyIsdGhpcyxlKSttaSgiY2lyY2xlLXN0cm9rZS13aWR0aCIsdGhpcyxlKSt5aSh0aGlzLnBhaW50LmdldCgiY2lyY2xlLXRyYW5zbGF0ZSIpKX0sZS5wcm90b3R5cGUucXVlcnlJbnRlcnNlY3RzRmVhdHVyZT1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe2Zvcih2YXIgbD14aSh0LHRoaXMucGFpbnQuZ2V0KCJjaXJjbGUtdHJhbnNsYXRlIiksdGhpcy5wYWludC5nZXQoImNpcmNsZS10cmFuc2xhdGUtYW5jaG9yIiksaS5hbmdsZSxvKSxjPXRoaXMucGFpbnQuZ2V0KCJjaXJjbGUtcmFkaXVzIikuZXZhbHVhdGUoZSxyKSt0aGlzLnBhaW50LmdldCgiY2lyY2xlLXN0cm9rZS13aWR0aCIpLmV2YWx1YXRlKGUsciksdT0ibWFwIj09PXRoaXMucGFpbnQuZ2V0KCJjaXJjbGUtcGl0Y2gtYWxpZ25tZW50IiksaD11P2w6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEFpKHQsZSl9KX0oMCxzKSxmPXU/YypvOmMscD0wLGQ9bjtwPGQubGVuZ3RoO3ArPTEpZm9yKHZhciBnPTAsdj1kW3BdO2c8di5sZW5ndGg7Zys9MSl7dmFyIG09dltnXSx5PXU/bTpBaShtLHMpLHg9ZixiPVRpKFtdLFttLngsbS55LDAsMV0scyk7aWYoInZpZXdwb3J0Ij09PXRoaXMucGFpbnQuZ2V0KCJjaXJjbGUtcGl0Y2gtc2NhbGUiKSYmIm1hcCI9PT10aGlzLnBhaW50LmdldCgiY2lyY2xlLXBpdGNoLWFsaWdubWVudCIpP3gqPWJbM10vaS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlOiJtYXAiPT09dGhpcy5wYWludC5nZXQoImNpcmNsZS1waXRjaC1zY2FsZSIpJiYidmlld3BvcnQiPT09dGhpcy5wYWludC5nZXQoImNpcmNsZS1waXRjaC1hbGlnbm1lbnQiKSYmKHgqPWkuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZS9iWzNdKSxzaShoLHkseCkpcmV0dXJuITB9cmV0dXJuITF9LGV9KFluKTtmdW5jdGlvbiBBaSh0LGUpe3ZhciByPVRpKFtdLFt0LngsdC55LDAsMV0sZSk7cmV0dXJuIG5ldyBhKHJbMF0vclszXSxyWzFdL3JbM10pfXZhciBTaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGV9KGlpKTtmdW5jdGlvbiBFaSh0LGUscixuKXt2YXIgYT1lLndpZHRoLGk9ZS5oZWlnaHQ7aWYobil7aWYobiBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KW49bmV3IFVpbnQ4QXJyYXkobi5idWZmZXIpO2Vsc2UgaWYobi5sZW5ndGghPT1hKmkqcil0aHJvdyBuZXcgUmFuZ2VFcnJvcigibWlzbWF0Y2hlZCBpbWFnZSBzaXplIil9ZWxzZSBuPW5ldyBVaW50OEFycmF5KGEqaSpyKTtyZXR1cm4gdC53aWR0aD1hLHQuaGVpZ2h0PWksdC5kYXRhPW4sdH1mdW5jdGlvbiBMaSh0LGUscil7dmFyIG49ZS53aWR0aCxhPWUuaGVpZ2h0O2lmKG4hPT10LndpZHRofHxhIT09dC5oZWlnaHQpe3ZhciBpPUVpKHt9LHt3aWR0aDpuLGhlaWdodDphfSxyKTtDaSh0LGkse3g6MCx5OjB9LHt4OjAseTowfSx7d2lkdGg6TWF0aC5taW4odC53aWR0aCxuKSxoZWlnaHQ6TWF0aC5taW4odC5oZWlnaHQsYSl9LHIpLHQud2lkdGg9bix0LmhlaWdodD1hLHQuZGF0YT1pLmRhdGF9fWZ1bmN0aW9uIENpKHQsZSxyLG4sYSxpKXtpZigwPT09YS53aWR0aHx8MD09PWEuaGVpZ2h0KXJldHVybiBlO2lmKGEud2lkdGg+dC53aWR0aHx8YS5oZWlnaHQ+dC5oZWlnaHR8fHIueD50LndpZHRoLWEud2lkdGh8fHIueT50LmhlaWdodC1hLmhlaWdodCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIHNvdXJjZSBjb29yZGluYXRlcyBmb3IgaW1hZ2UgY29weSIpO2lmKGEud2lkdGg+ZS53aWR0aHx8YS5oZWlnaHQ+ZS5oZWlnaHR8fG4ueD5lLndpZHRoLWEud2lkdGh8fG4ueT5lLmhlaWdodC1hLmhlaWdodCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGRlc3RpbmF0aW9uIGNvb3JkaW5hdGVzIGZvciBpbWFnZSBjb3B5Iik7Zm9yKHZhciBvPXQuZGF0YSxzPWUuZGF0YSxsPTA7bDxhLmhlaWdodDtsKyspZm9yKHZhciBjPSgoci55K2wpKnQud2lkdGgrci54KSppLHU9KChuLnkrbCkqZS53aWR0aCtuLngpKmksaD0wO2g8YS53aWR0aCppO2grKylzW3UraF09b1tjK2hdO3JldHVybiBlfWRuKCJIZWF0bWFwQnVja2V0IixTaSx7b21pdDpbImxheWVycyJdfSk7dmFyIFBpPWZ1bmN0aW9uKHQsZSl7RWkodGhpcyx0LDEsZSl9O1BpLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24odCl7TGkodGhpcyx0LDEpfSxQaS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFBpKHt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH0sbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhKSl9LFBpLmNvcHk9ZnVuY3Rpb24odCxlLHIsbixhKXtDaSh0LGUscixuLGEsMSl9O3ZhciBPaT1mdW5jdGlvbih0LGUpe0VpKHRoaXMsdCw0LGUpfTtPaS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQpe0xpKHRoaXMsdCw0KX0sT2kucHJvdG90eXBlLnJlcGxhY2U9ZnVuY3Rpb24odCxlKXtlP3RoaXMuZGF0YS5zZXQodCk6dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5P3RoaXMuZGF0YT1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcik6dGhpcy5kYXRhPXR9LE9pLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgT2koe3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSxuZXcgVWludDhBcnJheSh0aGlzLmRhdGEpKX0sT2kuY29weT1mdW5jdGlvbih0LGUscixuLGEpe0NpKHQsZSxyLG4sYSw0KX0sZG4oIkFscGhhSW1hZ2UiLFBpKSxkbigiUkdCQUltYWdlIixPaSk7dmFyIHppPXtwYWludDpuZXcgR24oeyJoZWF0bWFwLXJhZGl1cyI6bmV3IFZuKFR0LnBhaW50X2hlYXRtYXBbImhlYXRtYXAtcmFkaXVzIl0pLCJoZWF0bWFwLXdlaWdodCI6bmV3IFZuKFR0LnBhaW50X2hlYXRtYXBbImhlYXRtYXAtd2VpZ2h0Il0pLCJoZWF0bWFwLWludGVuc2l0eSI6bmV3IGpuKFR0LnBhaW50X2hlYXRtYXBbImhlYXRtYXAtaW50ZW5zaXR5Il0pLCJoZWF0bWFwLWNvbG9yIjpuZXcgSG4oVHQucGFpbnRfaGVhdG1hcFsiaGVhdG1hcC1jb2xvciJdKSwiaGVhdG1hcC1vcGFjaXR5IjpuZXcgam4oVHQucGFpbnRfaGVhdG1hcFsiaGVhdG1hcC1vcGFjaXR5Il0pfSl9O2Z1bmN0aW9uIElpKHQsZSl7Zm9yKHZhciByPW5ldyBVaW50OEFycmF5KDEwMjQpLG49e30sYT0wLGk9MDthPDI1NjthKyssaSs9NCl7bltlXT1hLzI1NTt2YXIgbz10LmV2YWx1YXRlKG4pO3JbaSswXT1NYXRoLmZsb29yKDI1NSpvLnIvby5hKSxyW2krMV09TWF0aC5mbG9vcigyNTUqby5nL28uYSkscltpKzJdPU1hdGguZmxvb3IoMjU1Km8uYi9vLmEpLHJbaSszXT1NYXRoLmZsb29yKDI1NSpvLmEpfXJldHVybiBuZXcgT2koe3dpZHRoOjI1NixoZWlnaHQ6MX0scil9dmFyIERpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSx6aSksdGhpcy5fdXBkYXRlQ29sb3JSYW1wKCl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmNyZWF0ZUJ1Y2tldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFNpKHQpfSxlLnByb3RvdHlwZS5faGFuZGxlU3BlY2lhbFBhaW50UHJvcGVydHlVcGRhdGU9ZnVuY3Rpb24odCl7ImhlYXRtYXAtY29sb3IiPT09dCYmdGhpcy5fdXBkYXRlQ29sb3JSYW1wKCl9LGUucHJvdG90eXBlLl91cGRhdGVDb2xvclJhbXA9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50Ll92YWx1ZXNbImhlYXRtYXAtY29sb3IiXS52YWx1ZS5leHByZXNzaW9uO3RoaXMuY29sb3JSYW1wPUlpKHQsImhlYXRtYXBEZW5zaXR5IiksdGhpcy5jb2xvclJhbXBUZXh0dXJlPW51bGx9LGUucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbigpe3RoaXMuaGVhdG1hcEZibyYmKHRoaXMuaGVhdG1hcEZiby5kZXN0cm95KCksdGhpcy5oZWF0bWFwRmJvPW51bGwpfSxlLnByb3RvdHlwZS5xdWVyeVJhZGl1cz1mdW5jdGlvbigpe3JldHVybiAwfSxlLnByb3RvdHlwZS5xdWVyeUludGVyc2VjdHNGZWF0dXJlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLmhhc09mZnNjcmVlblBhc3M9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMucGFpbnQuZ2V0KCJoZWF0bWFwLW9wYWNpdHkiKSYmIm5vbmUiIT09dGhpcy52aXNpYmlsaXR5fSxlfShZbiksUmk9e3BhaW50Om5ldyBHbih7ImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9uIjpuZXcgam4oVHQucGFpbnRfaGlsbHNoYWRlWyJoaWxsc2hhZGUtaWxsdW1pbmF0aW9uLWRpcmVjdGlvbiJdKSwiaGlsbHNoYWRlLWlsbHVtaW5hdGlvbi1hbmNob3IiOm5ldyBqbihUdC5wYWludF9oaWxsc2hhZGVbImhpbGxzaGFkZS1pbGx1bWluYXRpb24tYW5jaG9yIl0pLCJoaWxsc2hhZGUtZXhhZ2dlcmF0aW9uIjpuZXcgam4oVHQucGFpbnRfaGlsbHNoYWRlWyJoaWxsc2hhZGUtZXhhZ2dlcmF0aW9uIl0pLCJoaWxsc2hhZGUtc2hhZG93LWNvbG9yIjpuZXcgam4oVHQucGFpbnRfaGlsbHNoYWRlWyJoaWxsc2hhZGUtc2hhZG93LWNvbG9yIl0pLCJoaWxsc2hhZGUtaGlnaGxpZ2h0LWNvbG9yIjpuZXcgam4oVHQucGFpbnRfaGlsbHNoYWRlWyJoaWxsc2hhZGUtaGlnaGxpZ2h0LWNvbG9yIl0pLCJoaWxsc2hhZGUtYWNjZW50LWNvbG9yIjpuZXcgam4oVHQucGFpbnRfaGlsbHNoYWRlWyJoaWxsc2hhZGUtYWNjZW50LWNvbG9yIl0pfSl9LEZpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSxSaSl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmhhc09mZnNjcmVlblBhc3M9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMucGFpbnQuZ2V0KCJoaWxsc2hhZGUtZXhhZ2dlcmF0aW9uIikmJiJub25lIiE9PXRoaXMudmlzaWJpbGl0eX0sZX0oWW4pLEJpPUpuKFt7bmFtZToiYV9wb3MiLGNvbXBvbmVudHM6Mix0eXBlOiJJbnQxNiJ9XSw0KS5tZW1iZXJzLE5pPVZpLGppPVZpO2Z1bmN0aW9uIFZpKHQsZSxyKXtyPXJ8fDI7dmFyIG4sYSxpLG8scyxsLGMsdT1lJiZlLmxlbmd0aCxoPXU/ZVswXSpyOnQubGVuZ3RoLGY9VWkodCwwLGgsciwhMCkscD1bXTtpZighZnx8Zi5uZXh0PT09Zi5wcmV2KXJldHVybiBwO2lmKHUmJihmPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGksbyxzPVtdO2ZvcihhPTAsaT1lLmxlbmd0aDthPGk7YSsrKShvPVVpKHQsZVthXSpuLGE8aS0xP2VbYSsxXSpuOnQubGVuZ3RoLG4sITEpKT09PW8ubmV4dCYmKG8uc3RlaW5lcj0hMCkscy5wdXNoKCRpKG8pKTtmb3Iocy5zb3J0KFppKSxhPTA7YTxzLmxlbmd0aDthKyspSmkoc1thXSxyKSxyPXFpKHIsci5uZXh0KTtyZXR1cm4gcn0odCxlLGYscikpLHQubGVuZ3RoPjgwKnIpe249aT10WzBdLGE9bz10WzFdO2Zvcih2YXIgZD1yO2Q8aDtkKz1yKShzPXRbZF0pPG4mJihuPXMpLChsPXRbZCsxXSk8YSYmKGE9bCkscz5pJiYoaT1zKSxsPm8mJihvPWwpO2M9MCE9PShjPU1hdGgubWF4KGktbixvLWEpKT8xL2M6MH1yZXR1cm4gSGkoZixwLHIsbixhLGMpLHB9ZnVuY3Rpb24gVWkodCxlLHIsbixhKXt2YXIgaSxvO2lmKGE9PT1mbyh0LGUscixuKT4wKWZvcihpPWU7aTxyO2krPW4pbz1jbyhpLHRbaV0sdFtpKzFdLG8pO2Vsc2UgZm9yKGk9ci1uO2k+PWU7aS09bilvPWNvKGksdFtpXSx0W2krMV0sbyk7cmV0dXJuIG8mJm5vKG8sby5uZXh0KSYmKHVvKG8pLG89by5uZXh0KSxvfWZ1bmN0aW9uIHFpKHQsZSl7aWYoIXQpcmV0dXJuIHQ7ZXx8KGU9dCk7dmFyIHIsbj10O2Rve2lmKHI9ITEsbi5zdGVpbmVyfHwhbm8obixuLm5leHQpJiYwIT09cm8obi5wcmV2LG4sbi5uZXh0KSluPW4ubmV4dDtlbHNle2lmKHVvKG4pLChuPWU9bi5wcmV2KT09PW4ubmV4dClicmVhaztyPSEwfX13aGlsZShyfHxuIT09ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gSGkodCxlLHIsbixhLGksbyl7aWYodCl7IW8mJmkmJmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXQ7ZG97bnVsbD09PWEueiYmKGEuej1RaShhLngsYS55LGUscixuKSksYS5wcmV2Wj1hLnByZXYsYS5uZXh0Wj1hLm5leHQsYT1hLm5leHR9d2hpbGUoYSE9PXQpO2EucHJldloubmV4dFo9bnVsbCxhLnByZXZaPW51bGwsZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaSxvLHMsbCxjPTE7ZG97Zm9yKHI9dCx0PW51bGwsaT1udWxsLG89MDtyOyl7Zm9yKG8rKyxuPXIscz0wLGU9MDtlPGMmJihzKyssbj1uLm5leHRaKTtlKyspO2ZvcihsPWM7cz4wfHxsPjAmJm47KTAhPT1zJiYoMD09PWx8fCFufHxyLno8PW4ueik/KGE9cixyPXIubmV4dFoscy0tKTooYT1uLG49bi5uZXh0WixsLS0pLGk/aS5uZXh0Wj1hOnQ9YSxhLnByZXZaPWksaT1hO3I9bn1pLm5leHRaPW51bGwsYyo9Mn13aGlsZShvPjEpfShhKX0odCxuLGEsaSk7Zm9yKHZhciBzLGwsYz10O3QucHJldiE9PXQubmV4dDspaWYocz10LnByZXYsbD10Lm5leHQsaT9ZaSh0LG4sYSxpKTpHaSh0KSllLnB1c2gocy5pL3IpLGUucHVzaCh0LmkvciksZS5wdXNoKGwuaS9yKSx1byh0KSx0PWwubmV4dCxjPWwubmV4dDtlbHNlIGlmKCh0PWwpPT09Yyl7bz8xPT09bz9IaSh0PVdpKHFpKHQpLGUsciksZSxyLG4sYSxpLDIpOjI9PT1vJiZYaSh0LGUscixuLGEsaSk6SGkocWkodCksZSxyLG4sYSxpLDEpO2JyZWFrfX19ZnVuY3Rpb24gR2kodCl7dmFyIGU9dC5wcmV2LHI9dCxuPXQubmV4dDtpZihybyhlLHIsbik+PTApcmV0dXJuITE7Zm9yKHZhciBhPXQubmV4dC5uZXh0O2EhPT10LnByZXY7KXtpZih0byhlLngsZS55LHIueCxyLnksbi54LG4ueSxhLngsYS55KSYmcm8oYS5wcmV2LGEsYS5uZXh0KT49MClyZXR1cm4hMTthPWEubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiBZaSh0LGUscixuKXt2YXIgYT10LnByZXYsaT10LG89dC5uZXh0O2lmKHJvKGEsaSxvKT49MClyZXR1cm4hMTtmb3IodmFyIHM9YS54PGkueD9hLng8by54P2EueDpvLng6aS54PG8ueD9pLng6by54LGw9YS55PGkueT9hLnk8by55P2EueTpvLnk6aS55PG8ueT9pLnk6by55LGM9YS54PmkueD9hLng+by54P2EueDpvLng6aS54Pm8ueD9pLng6by54LHU9YS55PmkueT9hLnk+by55P2EueTpvLnk6aS55Pm8ueT9pLnk6by55LGg9UWkocyxsLGUscixuKSxmPVFpKGMsdSxlLHIsbikscD10LnByZXZaLGQ9dC5uZXh0WjtwJiZwLno+PWgmJmQmJmQuejw9Zjspe2lmKHAhPT10LnByZXYmJnAhPT10Lm5leHQmJnRvKGEueCxhLnksaS54LGkueSxvLngsby55LHAueCxwLnkpJiZybyhwLnByZXYscCxwLm5leHQpPj0wKXJldHVybiExO2lmKHA9cC5wcmV2WixkIT09dC5wcmV2JiZkIT09dC5uZXh0JiZ0byhhLngsYS55LGkueCxpLnksby54LG8ueSxkLngsZC55KSYmcm8oZC5wcmV2LGQsZC5uZXh0KT49MClyZXR1cm4hMTtkPWQubmV4dFp9Zm9yKDtwJiZwLno+PWg7KXtpZihwIT09dC5wcmV2JiZwIT09dC5uZXh0JiZ0byhhLngsYS55LGkueCxpLnksby54LG8ueSxwLngscC55KSYmcm8ocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtwPXAucHJldlp9Zm9yKDtkJiZkLno8PWY7KXtpZihkIT09dC5wcmV2JiZkIT09dC5uZXh0JiZ0byhhLngsYS55LGkueCxpLnksby54LG8ueSxkLngsZC55KSYmcm8oZC5wcmV2LGQsZC5uZXh0KT49MClyZXR1cm4hMTtkPWQubmV4dFp9cmV0dXJuITB9ZnVuY3Rpb24gV2kodCxlLHIpe3ZhciBuPXQ7ZG97dmFyIGE9bi5wcmV2LGk9bi5uZXh0Lm5leHQ7IW5vKGEsaSkmJmFvKGEsbixuLm5leHQsaSkmJnNvKGEsaSkmJnNvKGksYSkmJihlLnB1c2goYS5pL3IpLGUucHVzaChuLmkvciksZS5wdXNoKGkuaS9yKSx1byhuKSx1byhuLm5leHQpLG49dD1pKSxuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuIHFpKG4pfWZ1bmN0aW9uIFhpKHQsZSxyLG4sYSxpKXt2YXIgbz10O2Rve2Zvcih2YXIgcz1vLm5leHQubmV4dDtzIT09by5wcmV2Oyl7aWYoby5pIT09cy5pJiZlbyhvLHMpKXt2YXIgbD1sbyhvLHMpO3JldHVybiBvPXFpKG8sby5uZXh0KSxsPXFpKGwsbC5uZXh0KSxIaShvLGUscixuLGEsaSksdm9pZCBIaShsLGUscixuLGEsaSl9cz1zLm5leHR9bz1vLm5leHR9d2hpbGUobyE9PXQpfWZ1bmN0aW9uIFppKHQsZSl7cmV0dXJuIHQueC1lLnh9ZnVuY3Rpb24gSmkodCxlKXtpZihlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1lLGE9dC54LGk9dC55LG89LTEvMDtkb3tpZihpPD1uLnkmJmk+PW4ubmV4dC55JiZuLm5leHQueSE9PW4ueSl7dmFyIHM9bi54KyhpLW4ueSkqKG4ubmV4dC54LW4ueCkvKG4ubmV4dC55LW4ueSk7aWYoczw9YSYmcz5vKXtpZihvPXMscz09PWEpe2lmKGk9PT1uLnkpcmV0dXJuIG47aWYoaT09PW4ubmV4dC55KXJldHVybiBuLm5leHR9cj1uLng8bi5uZXh0Lng/bjpuLm5leHR9fW49bi5uZXh0fXdoaWxlKG4hPT1lKTtpZighcilyZXR1cm4gbnVsbDtpZihhPT09bylyZXR1cm4gcjt2YXIgbCxjPXIsdT1yLngsaD1yLnksZj0xLzA7bj1yO2Rve2E+PW4ueCYmbi54Pj11JiZhIT09bi54JiZ0byhpPGg/YTpvLGksdSxoLGk8aD9vOmEsaSxuLngsbi55KSYmKGw9TWF0aC5hYnMoaS1uLnkpLyhhLW4ueCksc28obix0KSYmKGw8Znx8bD09PWYmJihuLng+ci54fHxuLng9PT1yLngmJktpKHIsbikpKSYmKHI9bixmPWwpKSxuPW4ubmV4dH13aGlsZShuIT09Yyk7cmV0dXJuIHJ9KHQsZSkpe3ZhciByPWxvKGUsdCk7cWkocixyLm5leHQpfX1mdW5jdGlvbiBLaSh0LGUpe3JldHVybiBybyh0LnByZXYsdCxlLnByZXYpPDAmJnJvKGUubmV4dCx0LHQubmV4dCk8MH1mdW5jdGlvbiBRaSh0LGUscixuLGEpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtcikqYSl8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5MzQ1OSYoKGU9MjUyNjQ1MTM1JigoZT0xNjcxMTkzNSYoKGU9MzI3NjcqKGUtbikqYSl8ZTw8OCkpfGU8PDQpKXxlPDwyKSl8ZTw8MSkpPDwxfWZ1bmN0aW9uICRpKHQpe3ZhciBlPXQscj10O2RveyhlLng8ci54fHxlLng9PT1yLngmJmUueTxyLnkpJiYocj1lKSxlPWUubmV4dH13aGlsZShlIT09dCk7cmV0dXJuIHJ9ZnVuY3Rpb24gdG8odCxlLHIsbixhLGksbyxzKXtyZXR1cm4oYS1vKSooZS1zKS0odC1vKSooaS1zKT49MCYmKHQtbykqKG4tcyktKHItbykqKGUtcyk+PTAmJihyLW8pKihpLXMpLShhLW8pKihuLXMpPj0wfWZ1bmN0aW9uIGVvKHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIWZ1bmN0aW9uKHQsZSl7dmFyIHI9dDtkb3tpZihyLmkhPT10LmkmJnIubmV4dC5pIT09dC5pJiZyLmkhPT1lLmkmJnIubmV4dC5pIT09ZS5pJiZhbyhyLHIubmV4dCx0LGUpKXJldHVybiEwO3I9ci5uZXh0fXdoaWxlKHIhPT10KTtyZXR1cm4hMX0odCxlKSYmKHNvKHQsZSkmJnNvKGUsdCkmJmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCxuPSExLGE9KHQueCtlLngpLzIsaT0odC55K2UueSkvMjtkb3tyLnk+aSE9ci5uZXh0Lnk+aSYmci5uZXh0LnkhPT1yLnkmJmE8KHIubmV4dC54LXIueCkqKGktci55KS8oci5uZXh0Lnktci55KStyLngmJihuPSFuKSxyPXIubmV4dH13aGlsZShyIT09dCk7cmV0dXJuIG59KHQsZSkmJihybyh0LnByZXYsdCxlLnByZXYpfHxybyh0LGUucHJldixlKSl8fG5vKHQsZSkmJnJvKHQucHJldix0LHQubmV4dCk+MCYmcm8oZS5wcmV2LGUsZS5uZXh0KT4wKX1mdW5jdGlvbiBybyh0LGUscil7cmV0dXJuKGUueS10LnkpKihyLngtZS54KS0oZS54LXQueCkqKHIueS1lLnkpfWZ1bmN0aW9uIG5vKHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fWZ1bmN0aW9uIGFvKHQsZSxyLG4pe3ZhciBhPW9vKHJvKHQsZSxyKSksaT1vbyhybyh0LGUsbikpLG89b28ocm8ocixuLHQpKSxzPW9vKHJvKHIsbixlKSk7cmV0dXJuIGEhPT1pJiZvIT09c3x8ISgwIT09YXx8IWlvKHQscixlKSl8fCEoMCE9PWl8fCFpbyh0LG4sZSkpfHwhKDAhPT1vfHwhaW8ocix0LG4pKXx8ISgwIT09c3x8IWlvKHIsZSxuKSl9ZnVuY3Rpb24gaW8odCxlLHIpe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxyLngpJiZlLng+PU1hdGgubWluKHQueCxyLngpJiZlLnk8PU1hdGgubWF4KHQueSxyLnkpJiZlLnk+PU1hdGgubWluKHQueSxyLnkpfWZ1bmN0aW9uIG9vKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiBzbyh0LGUpe3JldHVybiBybyh0LnByZXYsdCx0Lm5leHQpPDA/cm8odCxlLHQubmV4dCk+PTAmJnJvKHQsdC5wcmV2LGUpPj0wOnJvKHQsZSx0LnByZXYpPDB8fHJvKHQsdC5uZXh0LGUpPDB9ZnVuY3Rpb24gbG8odCxlKXt2YXIgcj1uZXcgaG8odC5pLHQueCx0LnkpLG49bmV3IGhvKGUuaSxlLngsZS55KSxhPXQubmV4dCxpPWUucHJldjtyZXR1cm4gdC5uZXh0PWUsZS5wcmV2PXQsci5uZXh0PWEsYS5wcmV2PXIsbi5uZXh0PXIsci5wcmV2PW4saS5uZXh0PW4sbi5wcmV2PWksbn1mdW5jdGlvbiBjbyh0LGUscixuKXt2YXIgYT1uZXcgaG8odCxlLHIpO3JldHVybiBuPyhhLm5leHQ9bi5uZXh0LGEucHJldj1uLG4ubmV4dC5wcmV2PWEsbi5uZXh0PWEpOihhLnByZXY9YSxhLm5leHQ9YSksYX1mdW5jdGlvbiB1byh0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIGhvKHQsZSxyKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9cix0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9bnVsbCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX1mdW5jdGlvbiBmbyh0LGUscixuKXtmb3IodmFyIGE9MCxpPWUsbz1yLW47aTxyO2krPW4pYSs9KHRbb10tdFtpXSkqKHRbaSsxXSt0W28rMV0pLG89aTtyZXR1cm4gYX1mdW5jdGlvbiBwbyh0LGUscixuLGEpeyFmdW5jdGlvbiB0KGUscixuLGEsaSl7Zm9yKDthPm47KXtpZihhLW4+NjAwKXt2YXIgbz1hLW4rMSxzPXItbisxLGw9TWF0aC5sb2cobyksYz0uNSpNYXRoLmV4cCgyKmwvMyksdT0uNSpNYXRoLnNxcnQobCpjKihvLWMpL28pKihzLW8vMjwwPy0xOjEpO3QoZSxyLE1hdGgubWF4KG4sTWF0aC5mbG9vcihyLXMqYy9vK3UpKSxNYXRoLm1pbihhLE1hdGguZmxvb3Iocisoby1zKSpjL28rdSkpLGkpfXZhciBoPWVbcl0sZj1uLHA9YTtmb3IoZ28oZSxuLHIpLGkoZVthXSxoKT4wJiZnbyhlLG4sYSk7ZjxwOyl7Zm9yKGdvKGUsZixwKSxmKysscC0tO2koZVtmXSxoKTwwOylmKys7Zm9yKDtpKGVbcF0saCk+MDspcC0tfTA9PT1pKGVbbl0saCk/Z28oZSxuLHApOmdvKGUsKytwLGEpLHA8PXImJihuPXArMSkscjw9cCYmKGE9cC0xKX19KHQsZSxyfHwwLG58fHQubGVuZ3RoLTEsYXx8dm8pfWZ1bmN0aW9uIGdvKHQsZSxyKXt2YXIgbj10W2VdO3RbZV09dFtyXSx0W3JdPW59ZnVuY3Rpb24gdm8odCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOjB9ZnVuY3Rpb24gbW8odCxlKXt2YXIgcj10Lmxlbmd0aDtpZihyPD0xKXJldHVyblt0XTtmb3IodmFyIG4sYSxpPVtdLG89MDtvPHI7bysrKXt2YXIgcz1UKHRbb10pOzAhPT1zJiYodFtvXS5hcmVhPU1hdGguYWJzKHMpLHZvaWQgMD09PWEmJihhPXM8MCksYT09PXM8MD8obiYmaS5wdXNoKG4pLG49W3Rbb11dKTpuLnB1c2godFtvXSkpfWlmKG4mJmkucHVzaChuKSxlPjEpZm9yKHZhciBsPTA7bDxpLmxlbmd0aDtsKyspaVtsXS5sZW5ndGg8PWV8fChwbyhpW2xdLGUsMSxpW2xdLmxlbmd0aC0xLHlvKSxpW2xdPWlbbF0uc2xpY2UoMCxlKSk7cmV0dXJuIGl9ZnVuY3Rpb24geW8odCxlKXtyZXR1cm4gZS5hcmVhLXQuYXJlYX1mdW5jdGlvbiB4byh0LGUscil7Zm9yKHZhciBuPXIucGF0dGVybkRlcGVuZGVuY2llcyxhPSExLGk9MCxvPWU7aTxvLmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ldLnBhaW50LmdldCh0KyItcGF0dGVybiIpO3MuaXNDb25zdGFudCgpfHwoYT0hMCk7dmFyIGw9cy5jb25zdGFudE9yKG51bGwpO2wmJihhPSEwLG5bbC50b109ITAsbltsLmZyb21dPSEwKX1yZXR1cm4gYX1mdW5jdGlvbiBibyh0LGUscixuLGEpe2Zvcih2YXIgaT1hLnBhdHRlcm5EZXBlbmRlbmNpZXMsbz0wLHM9ZTtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPXNbb10sYz1sLnBhaW50LmdldCh0KyItcGF0dGVybiIpLnZhbHVlO2lmKCJjb25zdGFudCIhPT1jLmtpbmQpe3ZhciB1PWMuZXZhbHVhdGUoe3pvb206bi0xfSxyLHt9KSxoPWMuZXZhbHVhdGUoe3pvb206bn0scix7fSksZj1jLmV2YWx1YXRlKHt6b29tOm4rMX0scix7fSk7aVt1XT0hMCxpW2hdPSEwLGlbZl09ITAsci5wYXR0ZXJuc1tsLmlkXT17bWluOnUsbWlkOmgsbWF4OmZ9fX1yZXR1cm4gcn1WaS5kZXZpYXRpb249ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ZSYmZS5sZW5ndGgsaT1hP2VbMF0qcjp0Lmxlbmd0aCxvPU1hdGguYWJzKGZvKHQsMCxpLHIpKTtpZihhKWZvcih2YXIgcz0wLGw9ZS5sZW5ndGg7czxsO3MrKyl7dmFyIGM9ZVtzXSpyLHU9czxsLTE/ZVtzKzFdKnI6dC5sZW5ndGg7by09TWF0aC5hYnMoZm8odCxjLHUscikpfXZhciBoPTA7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrPTMpe3ZhciBmPW5bc10qcixwPW5bcysxXSpyLGQ9bltzKzJdKnI7aCs9TWF0aC5hYnMoKHRbZl0tdFtkXSkqKHRbcCsxXS10W2YrMV0pLSh0W2ZdLXRbcF0pKih0W2QrMV0tdFtmKzFdKSl9cmV0dXJuIDA9PT1vJiYwPT09aD8wOk1hdGguYWJzKChoLW8pL28pfSxWaS5mbGF0dGVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdWzBdLmxlbmd0aCxyPXt2ZXJ0aWNlczpbXSxob2xlczpbXSxkaW1lbnNpb25zOmV9LG49MCxhPTA7YTx0Lmxlbmd0aDthKyspe2Zvcih2YXIgaT0wO2k8dFthXS5sZW5ndGg7aSsrKWZvcih2YXIgbz0wO288ZTtvKyspci52ZXJ0aWNlcy5wdXNoKHRbYV1baV1bb10pO2E+MCYmKG4rPXRbYS0xXS5sZW5ndGgsci5ob2xlcy5wdXNoKG4pKX1yZXR1cm4gcn0sTmkuZGVmYXVsdD1qaTt2YXIgX289ZnVuY3Rpb24odCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJzY2FsaW5nPXQub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklkcz10aGlzLmxheWVycy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSx0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMucGF0dGVybkZlYXR1cmVzPVtdLHRoaXMubGF5b3V0VmVydGV4QXJyYXk9bmV3IFFuLHRoaXMuaW5kZXhBcnJheT1uZXcgZGEsdGhpcy5pbmRleEFycmF5Mj1uZXcgZ2EsdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnM9bmV3IFFhKEJpLHQubGF5ZXJzLHQuem9vbSksdGhpcy5zZWdtZW50cz1uZXcgT2EsdGhpcy5zZWdtZW50czI9bmV3IE9hLHRoaXMuc3RhdGVEZXBlbmRlbnRMYXllcklkcz10aGlzLmxheWVycy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNTdGF0ZURlcGVuZGVudCgpfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSl9O19vLnByb3RvdHlwZS5wb3B1bGF0ZT1mdW5jdGlvbih0LGUpe3RoaXMuaGFzUGF0dGVybj14bygiZmlsbCIsdGhpcy5sYXllcnMsZSk7Zm9yKHZhciByPXRoaXMubGF5ZXJzWzBdLmxheW91dC5nZXQoImZpbGwtc29ydC1rZXkiKSxuPVtdLGE9MCxpPXQ7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1pW2FdLHM9by5mZWF0dXJlLGw9by5pbmRleCxjPW8uc291cmNlTGF5ZXJJbmRleDtpZih0aGlzLmxheWVyc1swXS5fZmVhdHVyZUZpbHRlcihuZXcgUG4odGhpcy56b29tKSxzKSl7dmFyIHU9bmkocyksaD1yP3IuZXZhbHVhdGUocyx7fSk6dm9pZCAwLGY9e2lkOnMuaWQscHJvcGVydGllczpzLnByb3BlcnRpZXMsdHlwZTpzLnR5cGUsc291cmNlTGF5ZXJJbmRleDpjLGluZGV4OmwsZ2VvbWV0cnk6dSxwYXR0ZXJuczp7fSxzb3J0S2V5Omh9O24ucHVzaChmKX19ciYmbi5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc29ydEtleS1lLnNvcnRLZXl9KTtmb3IodmFyIHA9MCxkPW47cDxkLmxlbmd0aDtwKz0xKXt2YXIgZz1kW3BdLHY9ZyxtPXYuZ2VvbWV0cnkseT12LmluZGV4LHg9di5zb3VyY2VMYXllckluZGV4O2lmKHRoaXMuaGFzUGF0dGVybil7dmFyIGI9Ym8oImZpbGwiLHRoaXMubGF5ZXJzLGcsdGhpcy56b29tLGUpO3RoaXMucGF0dGVybkZlYXR1cmVzLnB1c2goYil9ZWxzZSB0aGlzLmFkZEZlYXR1cmUoZyxtLHkse30pO3ZhciBfPXRbeV0uZmVhdHVyZTtlLmZlYXR1cmVJbmRleC5pbnNlcnQoXyxtLHkseCx0aGlzLmluZGV4KX19LF9vLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuc3RhdGVEZXBlbmRlbnRMYXllcnMubGVuZ3RoJiZ0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5zdGF0ZURlcGVuZGVudExheWVycyxyKX0sX28ucHJvdG90eXBlLmFkZEZlYXR1cmVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj10aGlzLnBhdHRlcm5GZWF0dXJlcztyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl07dGhpcy5hZGRGZWF0dXJlKGEsYS5nZW9tZXRyeSxhLmluZGV4LGUpfX0sX28ucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofSxfby5wcm90b3R5cGUudXBsb2FkUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVwbG9hZGVkfHx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZH0sX28ucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXt0aGlzLnVwbG9hZGVkfHwodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxCaSksdGhpcy5pbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSksdGhpcy5pbmRleEJ1ZmZlcjI9dC5jcmVhdGVJbmRleEJ1ZmZlcih0aGlzLmluZGV4QXJyYXkyKSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpLHRoaXMudXBsb2FkZWQ9ITB9LF9vLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlcjIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzMi5kZXN0cm95KCkpfSxfby5wcm90b3R5cGUuYWRkRmVhdHVyZT1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9MCxpPW1vKGUsNTAwKTthPGkubGVuZ3RoO2ErPTEpe2Zvcih2YXIgbz1pW2FdLHM9MCxsPTAsYz1vO2w8Yy5sZW5ndGg7bCs9MSlzKz1jW2xdLmxlbmd0aDtmb3IodmFyIHU9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudChzLHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5KSxoPXUudmVydGV4TGVuZ3RoLGY9W10scD1bXSxkPTAsZz1vO2Q8Zy5sZW5ndGg7ZCs9MSl7dmFyIHY9Z1tkXTtpZigwIT09di5sZW5ndGgpe3YhPT1vWzBdJiZwLnB1c2goZi5sZW5ndGgvMik7dmFyIG09dGhpcy5zZWdtZW50czIucHJlcGFyZVNlZ21lbnQodi5sZW5ndGgsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmluZGV4QXJyYXkyKSx5PW0udmVydGV4TGVuZ3RoO3RoaXMubGF5b3V0VmVydGV4QXJyYXkuZW1wbGFjZUJhY2sodlswXS54LHZbMF0ueSksdGhpcy5pbmRleEFycmF5Mi5lbXBsYWNlQmFjayh5K3YubGVuZ3RoLTEseSksZi5wdXNoKHZbMF0ueCksZi5wdXNoKHZbMF0ueSk7Zm9yKHZhciB4PTE7eDx2Lmxlbmd0aDt4KyspdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5lbXBsYWNlQmFjayh2W3hdLngsdlt4XS55KSx0aGlzLmluZGV4QXJyYXkyLmVtcGxhY2VCYWNrKHkreC0xLHkreCksZi5wdXNoKHZbeF0ueCksZi5wdXNoKHZbeF0ueSk7bS52ZXJ0ZXhMZW5ndGgrPXYubGVuZ3RoLG0ucHJpbWl0aXZlTGVuZ3RoKz12Lmxlbmd0aH19Zm9yKHZhciBiPU5pKGYscCksXz0wO188Yi5sZW5ndGg7Xys9Myl0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soaCtiW19dLGgrYltfKzFdLGgrYltfKzJdKTt1LnZlcnRleExlbmd0aCs9cyx1LnByaW1pdGl2ZUxlbmd0aCs9Yi5sZW5ndGgvM310aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoLHQscixuKX0sZG4oIkZpbGxCdWNrZXQiLF9vLHtvbWl0OlsibGF5ZXJzIiwicGF0dGVybkZlYXR1cmVzIl19KTt2YXIgd289bmV3IEduKHsiZmlsbC1zb3J0LWtleSI6bmV3IFZuKFR0LmxheW91dF9maWxsWyJmaWxsLXNvcnQta2V5Il0pfSksa289e3BhaW50Om5ldyBHbih7ImZpbGwtYW50aWFsaWFzIjpuZXcgam4oVHQucGFpbnRfZmlsbFsiZmlsbC1hbnRpYWxpYXMiXSksImZpbGwtb3BhY2l0eSI6bmV3IFZuKFR0LnBhaW50X2ZpbGxbImZpbGwtb3BhY2l0eSJdKSwiZmlsbC1jb2xvciI6bmV3IFZuKFR0LnBhaW50X2ZpbGxbImZpbGwtY29sb3IiXSksImZpbGwtb3V0bGluZS1jb2xvciI6bmV3IFZuKFR0LnBhaW50X2ZpbGxbImZpbGwtb3V0bGluZS1jb2xvciJdKSwiZmlsbC10cmFuc2xhdGUiOm5ldyBqbihUdC5wYWludF9maWxsWyJmaWxsLXRyYW5zbGF0ZSJdKSwiZmlsbC10cmFuc2xhdGUtYW5jaG9yIjpuZXcgam4oVHQucGFpbnRfZmlsbFsiZmlsbC10cmFuc2xhdGUtYW5jaG9yIl0pLCJmaWxsLXBhdHRlcm4iOm5ldyBVbihUdC5wYWludF9maWxsWyJmaWxsLXBhdHRlcm4iXSl9KSxsYXlvdXQ6d299LFRvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSxrbyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnJlY2FsY3VsYXRlPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLnJlY2FsY3VsYXRlLmNhbGwodGhpcyxlKTt2YXIgcj10aGlzLnBhaW50Ll92YWx1ZXNbImZpbGwtb3V0bGluZS1jb2xvciJdOyJjb25zdGFudCI9PT1yLnZhbHVlLmtpbmQmJnZvaWQgMD09PXIudmFsdWUudmFsdWUmJih0aGlzLnBhaW50Ll92YWx1ZXNbImZpbGwtb3V0bGluZS1jb2xvciJdPXRoaXMucGFpbnQuX3ZhbHVlc1siZmlsbC1jb2xvciJdKX0sZS5wcm90b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgX28odCl9LGUucHJvdG90eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIHlpKHRoaXMucGFpbnQuZ2V0KCJmaWxsLXRyYW5zbGF0ZSIpKX0sZS5wcm90b3R5cGUucXVlcnlJbnRlcnNlY3RzRmVhdHVyZT1mdW5jdGlvbih0LGUscixuLGEsaSxvKXtyZXR1cm4gbGkoeGkodCx0aGlzLnBhaW50LmdldCgiZmlsbC10cmFuc2xhdGUiKSx0aGlzLnBhaW50LmdldCgiZmlsbC10cmFuc2xhdGUtYW5jaG9yIiksaS5hbmdsZSxvKSxuKX0sZS5wcm90b3R5cGUuaXNUaWxlQ2xpcHBlZD1mdW5jdGlvbigpe3JldHVybiEwfSxlfShZbiksTW89Sm4oW3tuYW1lOiJhX3BvcyIsY29tcG9uZW50czoyLHR5cGU6IkludDE2In0se25hbWU6ImFfbm9ybWFsX2VkIixjb21wb25lbnRzOjQsdHlwZToiSW50MTYifV0sNCkubWVtYmVycyxBbz1TbztmdW5jdGlvbiBTbyh0LGUscixuLGEpe3RoaXMucHJvcGVydGllcz17fSx0aGlzLmV4dGVudD1yLHRoaXMudHlwZT0wLHRoaXMuX3BiZj10LHRoaXMuX2dlb21ldHJ5PS0xLHRoaXMuX2tleXM9bix0aGlzLl92YWx1ZXM9YSx0LnJlYWRGaWVsZHMoRW8sdGhpcyxlKX1mdW5jdGlvbiBFbyh0LGUscil7MT09dD9lLmlkPXIucmVhZFZhcmludCgpOjI9PXQ/ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5yZWFkVmFyaW50KCkrdC5wb3M7dC5wb3M8cjspe3ZhciBuPWUuX2tleXNbdC5yZWFkVmFyaW50KCldLGE9ZS5fdmFsdWVzW3QucmVhZFZhcmludCgpXTtlLnByb3BlcnRpZXNbbl09YX19KHIsZSk6Mz09dD9lLnR5cGU9ci5yZWFkVmFyaW50KCk6ND09dCYmKGUuX2dlb21ldHJ5PXIucG9zKX1mdW5jdGlvbiBMbyh0KXtmb3IodmFyIGUscixuPTAsYT0wLGk9dC5sZW5ndGgsbz1pLTE7YTxpO289YSsrKWU9dFthXSxuKz0oKHI9dFtvXSkueC1lLngpKihlLnkrci55KTtyZXR1cm4gbn1Tby50eXBlcz1bIlVua25vd24iLCJQb2ludCIsIkxpbmVTdHJpbmciLCJQb2x5Z29uIl0sU28ucHJvdG90eXBlLmxvYWRHZW9tZXRyeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BiZjt0LnBvcz10aGlzLl9nZW9tZXRyeTtmb3IodmFyIGUscj10LnJlYWRWYXJpbnQoKSt0LnBvcyxuPTEsaT0wLG89MCxzPTAsbD1bXTt0LnBvczxyOyl7aWYoaTw9MCl7dmFyIGM9dC5yZWFkVmFyaW50KCk7bj03JmMsaT1jPj4zfWlmKGktLSwxPT09bnx8Mj09PW4pbys9dC5yZWFkU1ZhcmludCgpLHMrPXQucmVhZFNWYXJpbnQoKSwxPT09biYmKGUmJmwucHVzaChlKSxlPVtdKSxlLnB1c2gobmV3IGEobyxzKSk7ZWxzZXtpZig3IT09bil0aHJvdyBuZXcgRXJyb3IoInVua25vd24gY29tbWFuZCAiK24pO2UmJmUucHVzaChlWzBdLmNsb25lKCkpfX1yZXR1cm4gZSYmbC5wdXNoKGUpLGx9LFNvLnByb3RvdHlwZS5iYm94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGJmO3QucG9zPXRoaXMuX2dlb21ldHJ5O2Zvcih2YXIgZT10LnJlYWRWYXJpbnQoKSt0LnBvcyxyPTEsbj0wLGE9MCxpPTAsbz0xLzAscz0tMS8wLGw9MS8wLGM9LTEvMDt0LnBvczxlOyl7aWYobjw9MCl7dmFyIHU9dC5yZWFkVmFyaW50KCk7cj03JnUsbj11Pj4zfWlmKG4tLSwxPT09cnx8Mj09PXIpKGErPXQucmVhZFNWYXJpbnQoKSk8byYmKG89YSksYT5zJiYocz1hKSwoaSs9dC5yZWFkU1ZhcmludCgpKTxsJiYobD1pKSxpPmMmJihjPWkpO2Vsc2UgaWYoNyE9PXIpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGNvbW1hbmQgIityKX1yZXR1cm5bbyxsLHMsY119LFNvLnByb3RvdHlwZS50b0dlb0pTT049ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaT10aGlzLmV4dGVudCpNYXRoLnBvdygyLHIpLG89dGhpcy5leHRlbnQqdCxzPXRoaXMuZXh0ZW50KmUsbD10aGlzLmxvYWRHZW9tZXRyeSgpLGM9U28udHlwZXNbdGhpcy50eXBlXTtmdW5jdGlvbiB1KHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgcj10W2VdLG49MTgwLTM2MCooci55K3MpL2k7dFtlXT1bMzYwKihyLngrbykvaS0xODAsMzYwL01hdGguUEkqTWF0aC5hdGFuKE1hdGguZXhwKG4qTWF0aC5QSS8xODApKS05MF19fXN3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgMTp2YXIgaD1bXTtmb3Iobj0wO248bC5sZW5ndGg7bisrKWhbbl09bFtuXVswXTt1KGw9aCk7YnJlYWs7Y2FzZSAyOmZvcihuPTA7bjxsLmxlbmd0aDtuKyspdShsW25dKTticmVhaztjYXNlIDM6Zm9yKGw9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7aWYoZTw9MSlyZXR1cm5bdF07Zm9yKHZhciByLG4sYT1bXSxpPTA7aTxlO2krKyl7dmFyIG89TG8odFtpXSk7MCE9PW8mJih2b2lkIDA9PT1uJiYobj1vPDApLG49PT1vPDA/KHImJmEucHVzaChyKSxyPVt0W2ldXSk6ci5wdXNoKHRbaV0pKX1yZXR1cm4gciYmYS5wdXNoKHIpLGF9KGwpLG49MDtuPGwubGVuZ3RoO24rKylmb3IoYT0wO2E8bFtuXS5sZW5ndGg7YSsrKXUobFtuXVthXSl9MT09PWwubGVuZ3RoP2w9bFswXTpjPSJNdWx0aSIrYzt2YXIgZj17dHlwZToiRmVhdHVyZSIsZ2VvbWV0cnk6e3R5cGU6Yyxjb29yZGluYXRlczpsfSxwcm9wZXJ0aWVzOnRoaXMucHJvcGVydGllc307cmV0dXJuImlkImluIHRoaXMmJihmLmlkPXRoaXMuaWQpLGZ9O3ZhciBDbz1QbztmdW5jdGlvbiBQbyh0LGUpe3RoaXMudmVyc2lvbj0xLHRoaXMubmFtZT1udWxsLHRoaXMuZXh0ZW50PTQwOTYsdGhpcy5sZW5ndGg9MCx0aGlzLl9wYmY9dCx0aGlzLl9rZXlzPVtdLHRoaXMuX3ZhbHVlcz1bXSx0aGlzLl9mZWF0dXJlcz1bXSx0LnJlYWRGaWVsZHMoT28sdGhpcyxlKSx0aGlzLmxlbmd0aD10aGlzLl9mZWF0dXJlcy5sZW5ndGh9ZnVuY3Rpb24gT28odCxlLHIpezE1PT09dD9lLnZlcnNpb249ci5yZWFkVmFyaW50KCk6MT09PXQ/ZS5uYW1lPXIucmVhZFN0cmluZygpOjU9PT10P2UuZXh0ZW50PXIucmVhZFZhcmludCgpOjI9PT10P2UuX2ZlYXR1cmVzLnB1c2goci5wb3MpOjM9PT10P2UuX2tleXMucHVzaChyLnJlYWRTdHJpbmcoKSk6ND09PXQmJmUuX3ZhbHVlcy5wdXNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1udWxsLHI9dC5yZWFkVmFyaW50KCkrdC5wb3M7dC5wb3M8cjspe3ZhciBuPXQucmVhZFZhcmludCgpPj4zO2U9MT09PW4/dC5yZWFkU3RyaW5nKCk6Mj09PW4/dC5yZWFkRmxvYXQoKTozPT09bj90LnJlYWREb3VibGUoKTo0PT09bj90LnJlYWRWYXJpbnQ2NCgpOjU9PT1uP3QucmVhZFZhcmludCgpOjY9PT1uP3QucmVhZFNWYXJpbnQoKTo3PT09bj90LnJlYWRCb29sZWFuKCk6bnVsbH1yZXR1cm4gZX0ocikpfWZ1bmN0aW9uIHpvKHQsZSxyKXtpZigzPT09dCl7dmFyIG49bmV3IENvKHIsci5yZWFkVmFyaW50KCkrci5wb3MpO24ubGVuZ3RoJiYoZVtuLm5hbWVdPW4pfX1Qby5wcm90b3R5cGUuZmVhdHVyZT1mdW5jdGlvbih0KXtpZih0PDB8fHQ+PXRoaXMuX2ZlYXR1cmVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImZlYXR1cmUgaW5kZXggb3V0IG9mIGJvdW5kcyIpO3RoaXMuX3BiZi5wb3M9dGhpcy5fZmVhdHVyZXNbdF07dmFyIGU9dGhpcy5fcGJmLnJlYWRWYXJpbnQoKSt0aGlzLl9wYmYucG9zO3JldHVybiBuZXcgQW8odGhpcy5fcGJmLGUsdGhpcy5leHRlbnQsdGhpcy5fa2V5cyx0aGlzLl92YWx1ZXMpfTt2YXIgSW89e1ZlY3RvclRpbGU6ZnVuY3Rpb24odCxlKXt0aGlzLmxheWVycz10LnJlYWRGaWVsZHMoem8se30sZSl9LFZlY3RvclRpbGVGZWF0dXJlOkFvLFZlY3RvclRpbGVMYXllcjpDb30sRG89SW8uVmVjdG9yVGlsZUZlYXR1cmUudHlwZXMsUm89TWF0aC5wb3coMiwxMyk7ZnVuY3Rpb24gRm8odCxlLHIsbixhLGksbyxzKXt0LmVtcGxhY2VCYWNrKGUsciwyKk1hdGguZmxvb3IobipSbykrbyxhKlJvKjIsaSpSbyoyLE1hdGgucm91bmQocykpfXZhciBCbz1mdW5jdGlvbih0KXt0aGlzLnpvb209dC56b29tLHRoaXMub3ZlcnNjYWxpbmc9dC5vdmVyc2NhbGluZyx0aGlzLmxheWVycz10LmxheWVycyx0aGlzLmxheWVySWRzPXRoaXMubGF5ZXJzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pLHRoaXMuaW5kZXg9dC5pbmRleCx0aGlzLmhhc1BhdHRlcm49ITEsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheT1uZXcgdGEsdGhpcy5pbmRleEFycmF5PW5ldyBkYSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgUWEoTW8sdC5sYXllcnMsdC56b29tKSx0aGlzLnNlZ21lbnRzPW5ldyBPYSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzU3RhdGVEZXBlbmRlbnQoKX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pfTtmdW5jdGlvbiBObyh0LGUpe3JldHVybiB0Lng9PT1lLngmJih0Lng8MHx8dC54PmVpKXx8dC55PT09ZS55JiYodC55PDB8fHQueT5laSl9ZnVuY3Rpb24gam8odCl7cmV0dXJuIHQuZXZlcnkoZnVuY3Rpb24odCl7cmV0dXJuIHQueDwwfSl8fHQuZXZlcnkoZnVuY3Rpb24odCl7cmV0dXJuIHQueD5laX0pfHx0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiB0Lnk8MH0pfHx0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiB0Lnk+ZWl9KX1Cby5wcm90b3R5cGUucG9wdWxhdGU9ZnVuY3Rpb24odCxlKXt0aGlzLmZlYXR1cmVzPVtdLHRoaXMuaGFzUGF0dGVybj14bygiZmlsbC1leHRydXNpb24iLHRoaXMubGF5ZXJzLGUpO2Zvcih2YXIgcj0wLG49dDtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl0saT1hLmZlYXR1cmUsbz1hLmluZGV4LHM9YS5zb3VyY2VMYXllckluZGV4O2lmKHRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyKG5ldyBQbih0aGlzLnpvb20pLGkpKXt2YXIgbD1uaShpKSxjPXtzb3VyY2VMYXllckluZGV4OnMsaW5kZXg6byxnZW9tZXRyeTpsLHByb3BlcnRpZXM6aS5wcm9wZXJ0aWVzLHR5cGU6aS50eXBlLHBhdHRlcm5zOnt9fTt2b2lkIDAhPT1pLmlkJiYoYy5pZD1pLmlkKSx0aGlzLmhhc1BhdHRlcm4/dGhpcy5mZWF0dXJlcy5wdXNoKGJvKCJmaWxsLWV4dHJ1c2lvbiIsdGhpcy5sYXllcnMsYyx0aGlzLnpvb20sZSkpOnRoaXMuYWRkRmVhdHVyZShjLGwsbyx7fSksZS5mZWF0dXJlSW5kZXguaW5zZXJ0KGksbCxvLHMsdGhpcy5pbmRleCwhMCl9fX0sQm8ucHJvdG90eXBlLmFkZEZlYXR1cmVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj10aGlzLmZlYXR1cmVzO3I8bi5sZW5ndGg7cis9MSl7dmFyIGE9bltyXSxpPWEuZ2VvbWV0cnk7dGhpcy5hZGRGZWF0dXJlKGEsaSxhLmluZGV4LGUpfX0sQm8ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUscil7dGhpcy5zdGF0ZURlcGVuZGVudExheWVycy5sZW5ndGgmJnRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJzLHIpfSxCby5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGh9LEJvLnByb3RvdHlwZS51cGxvYWRQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudXBsb2FkZWR8fHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfSxCby5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQpe3RoaXMudXBsb2FkZWR8fCh0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmxheW91dFZlcnRleEFycmF5LE1vKSx0aGlzLmluZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIodGhpcy5pbmRleEFycmF5KSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpLHRoaXMudXBsb2FkZWQ9ITB9LEJvLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJveSgpKX0sQm8ucHJvdG90eXBlLmFkZEZlYXR1cmU9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhPTAsaT1tbyhlLDUwMCk7YTxpLmxlbmd0aDthKz0xKXtmb3IodmFyIG89aVthXSxzPTAsbD0wLGM9bztsPGMubGVuZ3RoO2wrPTEpcys9Y1tsXS5sZW5ndGg7Zm9yKHZhciB1PXRoaXMuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoNCx0aGlzLmxheW91dFZlcnRleEFycmF5LHRoaXMuaW5kZXhBcnJheSksaD0wLGY9bztoPGYubGVuZ3RoO2grPTEpe3ZhciBwPWZbaF07aWYoMCE9PXAubGVuZ3RoJiYham8ocCkpZm9yKHZhciBkPTAsZz0wO2c8cC5sZW5ndGg7ZysrKXt2YXIgdj1wW2ddO2lmKGc+PTEpe3ZhciBtPXBbZy0xXTtpZighTm8odixtKSl7dS52ZXJ0ZXhMZW5ndGgrND5PYS5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSCYmKHU9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0LHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5KSk7dmFyIHk9di5zdWIobSkuX3BlcnAoKS5fdW5pdCgpLHg9bS5kaXN0KHYpO2QreD4zMjc2OCYmKGQ9MCksRm8odGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx2Lngsdi55LHkueCx5LnksMCwwLGQpLEZvKHRoaXMubGF5b3V0VmVydGV4QXJyYXksdi54LHYueSx5LngseS55LDAsMSxkKSxkKz14LEZvKHRoaXMubGF5b3V0VmVydGV4QXJyYXksbS54LG0ueSx5LngseS55LDAsMCxkKSxGbyh0aGlzLmxheW91dFZlcnRleEFycmF5LG0ueCxtLnkseS54LHkueSwwLDEsZCk7dmFyIGI9dS52ZXJ0ZXhMZW5ndGg7dGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGIsYisyLGIrMSksdGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGIrMSxiKzIsYiszKSx1LnZlcnRleExlbmd0aCs9NCx1LnByaW1pdGl2ZUxlbmd0aCs9Mn19fX1pZih1LnZlcnRleExlbmd0aCtzPk9hLk1BWF9WRVJURVhfQVJSQVlfTEVOR1RIJiYodT10aGlzLnNlZ21lbnRzLnByZXBhcmVTZWdtZW50KHMsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmluZGV4QXJyYXkpKSwiUG9seWdvbiI9PT1Eb1t0LnR5cGVdKXtmb3IodmFyIF89W10sdz1bXSxrPXUudmVydGV4TGVuZ3RoLFQ9MCxNPW87VDxNLmxlbmd0aDtUKz0xKXt2YXIgQT1NW1RdO2lmKDAhPT1BLmxlbmd0aCl7QSE9PW9bMF0mJncucHVzaChfLmxlbmd0aC8yKTtmb3IodmFyIFM9MDtTPEEubGVuZ3RoO1MrKyl7dmFyIEU9QVtTXTtGbyh0aGlzLmxheW91dFZlcnRleEFycmF5LEUueCxFLnksMCwwLDEsMSwwKSxfLnB1c2goRS54KSxfLnB1c2goRS55KX19fWZvcih2YXIgTD1OaShfLHcpLEM9MDtDPEwubGVuZ3RoO0MrPTMpdGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGsrTFtDXSxrK0xbQysyXSxrK0xbQysxXSk7dS5wcmltaXRpdmVMZW5ndGgrPUwubGVuZ3RoLzMsdS52ZXJ0ZXhMZW5ndGgrPXN9fXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsdCxyLG4pfSxkbigiRmlsbEV4dHJ1c2lvbkJ1Y2tldCIsQm8se29taXQ6WyJsYXllcnMiLCJmZWF0dXJlcyJdfSk7dmFyIFZvPXtwYWludDpuZXcgR24oeyJmaWxsLWV4dHJ1c2lvbi1vcGFjaXR5IjpuZXcgam4oVHRbInBhaW50X2ZpbGwtZXh0cnVzaW9uIl1bImZpbGwtZXh0cnVzaW9uLW9wYWNpdHkiXSksImZpbGwtZXh0cnVzaW9uLWNvbG9yIjpuZXcgVm4oVHRbInBhaW50X2ZpbGwtZXh0cnVzaW9uIl1bImZpbGwtZXh0cnVzaW9uLWNvbG9yIl0pLCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUiOm5ldyBqbihUdFsicGFpbnRfZmlsbC1leHRydXNpb24iXVsiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlIl0pLCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUtYW5jaG9yIjpuZXcgam4oVHRbInBhaW50X2ZpbGwtZXh0cnVzaW9uIl1bImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3IiXSksImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4iOm5ldyBVbihUdFsicGFpbnRfZmlsbC1leHRydXNpb24iXVsiZmlsbC1leHRydXNpb24tcGF0dGVybiJdKSwiZmlsbC1leHRydXNpb24taGVpZ2h0IjpuZXcgVm4oVHRbInBhaW50X2ZpbGwtZXh0cnVzaW9uIl1bImZpbGwtZXh0cnVzaW9uLWhlaWdodCJdKSwiZmlsbC1leHRydXNpb24tYmFzZSI6bmV3IFZuKFR0WyJwYWludF9maWxsLWV4dHJ1c2lvbiJdWyJmaWxsLWV4dHJ1c2lvbi1iYXNlIl0pLCJmaWxsLWV4dHJ1c2lvbi12ZXJ0aWNhbC1ncmFkaWVudCI6bmV3IGpuKFR0WyJwYWludF9maWxsLWV4dHJ1c2lvbiJdWyJmaWxsLWV4dHJ1c2lvbi12ZXJ0aWNhbC1ncmFkaWVudCJdKX0pfSxVbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUsVm8pfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5jcmVhdGVCdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCbyh0KX0sZS5wcm90b3R5cGUucXVlcnlSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4geWkodGhpcy5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZSIpKX0sZS5wcm90b3R5cGUuaXMzRD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5xdWVyeUludGVyc2VjdHNGZWF0dXJlPWZ1bmN0aW9uKHQsZSxyLG4saSxvLHMsbCl7dmFyIGM9eGkodCx0aGlzLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlIiksdGhpcy5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3IiKSxvLmFuZ2xlLHMpLHU9dGhpcy5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLWhlaWdodCIpLmV2YWx1YXRlKGUsciksaD10aGlzLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tYmFzZSIpLmV2YWx1YXRlKGUsciksZj1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9W10sbz0wLHM9dDtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPXNbb10sYz1bbC54LGwueSwwLDFdO1RpKGMsYyxlKSxpLnB1c2gobmV3IGEoY1swXS9jWzNdLGNbMV0vY1szXSkpfXJldHVybiBpfShjLGwpLHA9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPVtdLG89W10scz1uWzhdKmUsbD1uWzldKmUsYz1uWzEwXSplLHU9blsxMV0qZSxoPW5bOF0qcixmPW5bOV0qcixwPW5bMTBdKnIsZD1uWzExXSpyLGc9MCx2PXQ7Zzx2Lmxlbmd0aDtnKz0xKXtmb3IodmFyIG09W10seT1bXSx4PTAsYj12W2ddO3g8Yi5sZW5ndGg7eCs9MSl7dmFyIF89Ylt4XSx3PV8ueCxrPV8ueSxUPW5bMF0qdytuWzRdKmsrblsxMl0sTT1uWzFdKncrbls1XSprK25bMTNdLEE9blsyXSp3K25bNl0qaytuWzE0XSxTPW5bM10qdytuWzddKmsrblsxNV0sRT1BK2MsTD1TK3UsQz1UK2gsUD1NK2YsTz1BK3Asej1TK2QsST1uZXcgYSgoVCtzKS9MLChNK2wpL0wpO0kuej1FL0wsbS5wdXNoKEkpO3ZhciBEPW5ldyBhKEMveixQL3opO0Quej1PL3oseS5wdXNoKEQpfWkucHVzaChtKSxvLnB1c2goeSl9cmV0dXJuW2ksb119KG4saCx1LGwpO3JldHVybiBmdW5jdGlvbih0LGUscil7dmFyIG49MS8wO2xpKHIsZSkmJihuPUhvKHIsZVswXSkpO2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKWZvcih2YXIgaT1lW2FdLG89dFthXSxzPTA7czxpLmxlbmd0aC0xO3MrKyl7dmFyIGw9aVtzXSxjPWlbcysxXSx1PW9bc10saD1bbCxjLG9bcysxXSx1LGxdO29pKHIsaCkmJihuPU1hdGgubWluKG4sSG8ocixoKSkpfXJldHVybiBuIT09MS8wJiZufShwWzBdLHBbMV0sZil9LGV9KFluKTtmdW5jdGlvbiBxbyh0LGUpe3JldHVybiB0LngqZS54K3QueSplLnl9ZnVuY3Rpb24gSG8odCxlKXtpZigxPT09dC5sZW5ndGgpe3ZhciByPWVbMF0sbj1lWzFdLGE9ZVszXSxpPXRbMF0sbz1uLnN1YihyKSxzPWEuc3ViKHIpLGw9aS5zdWIociksYz1xbyhvLG8pLHU9cW8obyxzKSxoPXFvKHMscyksZj1xbyhsLG8pLHA9cW8obCxzKSxkPWMqaC11KnUsZz0oaCpmLXUqcCkvZCx2PShjKnAtdSpmKS9kLG09MS1nLXY7cmV0dXJuIHIueiptK24ueipnK2Eueip2fWZvcih2YXIgeT0xLzAseD0wLGI9ZTt4PGIubGVuZ3RoO3grPTEpe3ZhciBfPWJbeF07eT1NYXRoLm1pbih5LF8ueil9cmV0dXJuIHl9dmFyIEdvPUpuKFt7bmFtZToiYV9wb3Nfbm9ybWFsIixjb21wb25lbnRzOjIsdHlwZToiSW50MTYifSx7bmFtZToiYV9kYXRhIixjb21wb25lbnRzOjQsdHlwZToiVWludDgifV0sNCkubWVtYmVycyxZbz1Jby5WZWN0b3JUaWxlRmVhdHVyZS50eXBlcyxXbz1NYXRoLmNvcyhNYXRoLlBJLzE4MCozNy41KSxYbz1NYXRoLnBvdygyLDE0KS8uNSxabz1mdW5jdGlvbih0KXt0aGlzLnpvb209dC56b29tLHRoaXMub3ZlcnNjYWxpbmc9dC5vdmVyc2NhbGluZyx0aGlzLmxheWVycz10LmxheWVycyx0aGlzLmxheWVySWRzPXRoaXMubGF5ZXJzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pLHRoaXMuaW5kZXg9dC5pbmRleCx0aGlzLmhhc1BhdHRlcm49ITEsdGhpcy5wYXR0ZXJuRmVhdHVyZXM9W10sdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheT1uZXcgZWEsdGhpcy5pbmRleEFycmF5PW5ldyBkYSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgUWEoR28sdC5sYXllcnMsdC56b29tKSx0aGlzLnNlZ21lbnRzPW5ldyBPYSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzU3RhdGVEZXBlbmRlbnQoKX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pfTtaby5wcm90b3R5cGUucG9wdWxhdGU9ZnVuY3Rpb24odCxlKXt0aGlzLmhhc1BhdHRlcm49eG8oImxpbmUiLHRoaXMubGF5ZXJzLGUpO2Zvcih2YXIgcj10aGlzLmxheWVyc1swXS5sYXlvdXQuZ2V0KCJsaW5lLXNvcnQta2V5Iiksbj1bXSxhPTAsaT10O2E8aS5sZW5ndGg7YSs9MSl7dmFyIG89aVthXSxzPW8uZmVhdHVyZSxsPW8uaW5kZXgsYz1vLnNvdXJjZUxheWVySW5kZXg7aWYodGhpcy5sYXllcnNbMF0uX2ZlYXR1cmVGaWx0ZXIobmV3IFBuKHRoaXMuem9vbSkscykpe3ZhciB1PW5pKHMpLGg9cj9yLmV2YWx1YXRlKHMse30pOnZvaWQgMCxmPXtpZDpzLmlkLHByb3BlcnRpZXM6cy5wcm9wZXJ0aWVzLHR5cGU6cy50eXBlLHNvdXJjZUxheWVySW5kZXg6YyxpbmRleDpsLGdlb21ldHJ5OnUscGF0dGVybnM6e30sc29ydEtleTpofTtuLnB1c2goZil9fXImJm4uc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnNvcnRLZXktZS5zb3J0S2V5fSk7Zm9yKHZhciBwPTAsZD1uO3A8ZC5sZW5ndGg7cCs9MSl7dmFyIGc9ZFtwXSx2PWcsbT12Lmdlb21ldHJ5LHk9di5pbmRleCx4PXYuc291cmNlTGF5ZXJJbmRleDtpZih0aGlzLmhhc1BhdHRlcm4pe3ZhciBiPWJvKCJsaW5lIix0aGlzLmxheWVycyxnLHRoaXMuem9vbSxlKTt0aGlzLnBhdHRlcm5GZWF0dXJlcy5wdXNoKGIpfWVsc2UgdGhpcy5hZGRGZWF0dXJlKGcsbSx5LHt9KTt2YXIgXz10W3ldLmZlYXR1cmU7ZS5mZWF0dXJlSW5kZXguaW5zZXJ0KF8sbSx5LHgsdGhpcy5pbmRleCl9fSxaby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJzLmxlbmd0aCYmdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBkYXRlUGFpbnRBcnJheXModCxlLHRoaXMuc3RhdGVEZXBlbmRlbnRMYXllcnMscil9LFpvLnByb3RvdHlwZS5hZGRGZWF0dXJlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49dGhpcy5wYXR0ZXJuRmVhdHVyZXM7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1uW3JdO3RoaXMuYWRkRmVhdHVyZShhLGEuZ2VvbWV0cnksYS5pbmRleCxlKX19LFpvLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aH0sWm8ucHJvdG90eXBlLnVwbG9hZFBlbmRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy51cGxvYWRlZHx8dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMubmVlZHNVcGxvYWR9LFpvLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24odCl7dGhpcy51cGxvYWRlZHx8KHRoaXMubGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJyYXksR28pLHRoaXMuaW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcih0aGlzLmluZGV4QXJyYXkpKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGxvYWQodCksdGhpcy51cGxvYWRlZD0hMH0sWm8ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5kZXN0cm95KCksdGhpcy5zZWdtZW50cy5kZXN0cm95KCkpfSxaby5wcm90b3R5cGUuYWRkRmVhdHVyZT1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9dGhpcy5sYXllcnNbMF0ubGF5b3V0LGk9YS5nZXQoImxpbmUtam9pbiIpLmV2YWx1YXRlKHQse30pLG89YS5nZXQoImxpbmUtY2FwIikscz1hLmdldCgibGluZS1taXRlci1saW1pdCIpLGw9YS5nZXQoImxpbmUtcm91bmQtbGltaXQiKSxjPTAsdT1lO2M8dS5sZW5ndGg7Yys9MSl7dmFyIGg9dVtjXTt0aGlzLmFkZExpbmUoaCx0LGksbyxzLGwscixuKX19LFpvLnByb3RvdHlwZS5hZGRMaW5lPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyl7aWYodGhpcy5kaXN0YW5jZT0wLHRoaXMuc2NhbGVkRGlzdGFuY2U9MCx0aGlzLnRvdGFsRGlzdGFuY2U9MCxlLnByb3BlcnRpZXMmJmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSgibWFwYm94X2NsaXBfc3RhcnQiKSYmZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCJtYXBib3hfY2xpcF9lbmQiKSl7dGhpcy5jbGlwU3RhcnQ9K2UucHJvcGVydGllcy5tYXBib3hfY2xpcF9zdGFydCx0aGlzLmNsaXBFbmQ9K2UucHJvcGVydGllcy5tYXBib3hfY2xpcF9lbmQ7Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aC0xO2wrKyl0aGlzLnRvdGFsRGlzdGFuY2UrPXRbbF0uZGlzdCh0W2wrMV0pfWZvcih2YXIgYz0iUG9seWdvbiI9PT1Zb1tlLnR5cGVdLHU9dC5sZW5ndGg7dT49MiYmdFt1LTFdLmVxdWFscyh0W3UtMl0pOyl1LS07Zm9yKHZhciBoPTA7aDx1LTEmJnRbaF0uZXF1YWxzKHRbaCsxXSk7KWgrKztpZighKHU8KGM/MzoyKSkpeyJiZXZlbCI9PT1yJiYoYT0xLjA1KTt2YXIgZixwPWVpLyg1MTIqdGhpcy5vdmVyc2NhbGluZykqMTUsZD10aGlzLnNlZ21lbnRzLnByZXBhcmVTZWdtZW50KDEwKnUsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmluZGV4QXJyYXkpLGc9dm9pZCAwLHY9dm9pZCAwLG09dm9pZCAwLHk9dm9pZCAwO3RoaXMuZTE9dGhpcy5lMj0tMSxjJiYoZj10W3UtMl0seT10W2hdLnN1YihmKS5fdW5pdCgpLl9wZXJwKCkpO2Zvcih2YXIgeD1oO3g8dTt4KyspaWYoISh2PWMmJng9PT11LTE/dFtoKzFdOnRbeCsxXSl8fCF0W3hdLmVxdWFscyh2KSl7eSYmKG09eSksZiYmKGc9ZiksZj10W3hdLHk9dj92LnN1YihmKS5fdW5pdCgpLl9wZXJwKCk6bTt2YXIgYj0obT1tfHx5KS5hZGQoeSk7MD09PWIueCYmMD09PWIueXx8Yi5fdW5pdCgpO3ZhciBfPW0ueCp5LngrbS55KnkueSx3PWIueCp5LngrYi55KnkueSxrPTAhPT13PzEvdzoxLzAsVD0yKk1hdGguc3FydCgyLTIqdyksTT13PFdvJiZnJiZ2LEE9bS54KnkueS1tLnkqeS54PjA7aWYoTSYmeD5oKXt2YXIgUz1mLmRpc3QoZyk7aWYoUz4yKnApe3ZhciBFPWYuc3ViKGYuc3ViKGcpLl9tdWx0KHAvUykuX3JvdW5kKCkpO3RoaXMudXBkYXRlRGlzdGFuY2UoZyxFKSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoRSxtLDAsMCxkKSxnPUV9fXZhciBMPWcmJnYsQz1MP3I6Yz8iYnV0dCI6bjtpZihMJiYicm91bmQiPT09QyYmKGs8aT9DPSJtaXRlciI6azw9MiYmKEM9ImZha2Vyb3VuZCIpKSwibWl0ZXIiPT09QyYmaz5hJiYoQz0iYmV2ZWwiKSwiYmV2ZWwiPT09QyYmKGs+MiYmKEM9ImZsaXBiZXZlbCIpLGs8YSYmKEM9Im1pdGVyIikpLGcmJnRoaXMudXBkYXRlRGlzdGFuY2UoZyxmKSwibWl0ZXIiPT09QyliLl9tdWx0KGspLHRoaXMuYWRkQ3VycmVudFZlcnRleChmLGIsMCwwLGQpO2Vsc2UgaWYoImZsaXBiZXZlbCI9PT1DKXtpZihrPjEwMCliPXkubXVsdCgtMSk7ZWxzZXt2YXIgUD1rKm0uYWRkKHkpLm1hZygpL20uc3ViKHkpLm1hZygpO2IuX3BlcnAoKS5fbXVsdChQKihBPy0xOjEpKX10aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoZixiLDAsMCxkKSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoZixiLm11bHQoLTEpLDAsMCxkKX1lbHNlIGlmKCJiZXZlbCI9PT1DfHwiZmFrZXJvdW5kIj09PUMpe3ZhciBPPS1NYXRoLnNxcnQoayprLTEpLHo9QT9POjAsST1BPzA6TztpZihnJiZ0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoZixtLHosSSxkKSwiZmFrZXJvdW5kIj09PUMpZm9yKHZhciBEPU1hdGgucm91bmQoMTgwKlQvTWF0aC5QSS8yMCksUj0xO1I8RDtSKyspe3ZhciBGPVIvRDtpZiguNSE9PUYpe3ZhciBCPUYtLjU7Ris9RipCKihGLTEpKigoMS4wOTA0K18qKF8qKDMuNTU2NDUtMS40MzUxOSpfKS0zLjI0NTIpKSpCKkIrKC44NDgwMTMrXyooLjIxNTYzOCpfLTEuMDYwMjEpKSl9dmFyIE49eS5zdWIobSkuX211bHQoRikuX2FkZChtKS5fdW5pdCgpLl9tdWx0KEE/LTE6MSk7dGhpcy5hZGRIYWxmVmVydGV4KGYsTi54LE4ueSwhMSxBLDAsZCl9diYmdGhpcy5hZGRDdXJyZW50VmVydGV4KGYseSwteiwtSSxkKX1lbHNlIGlmKCJidXR0Ij09PUMpdGhpcy5hZGRDdXJyZW50VmVydGV4KGYsYiwwLDAsZCk7ZWxzZSBpZigic3F1YXJlIj09PUMpe3ZhciBqPWc/MTotMTt0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoZixiLGosaixkKX1lbHNlInJvdW5kIj09PUMmJihnJiYodGhpcy5hZGRDdXJyZW50VmVydGV4KGYsbSwwLDAsZCksdGhpcy5hZGRDdXJyZW50VmVydGV4KGYsbSwxLDEsZCwhMCkpLHYmJih0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoZix5LC0xLC0xLGQsITApLHRoaXMuYWRkQ3VycmVudFZlcnRleChmLHksMCwwLGQpKSk7aWYoTSYmeDx1LTEpe3ZhciBWPWYuZGlzdCh2KTtpZihWPjIqcCl7dmFyIFU9Zi5hZGQodi5zdWIoZikuX211bHQocC9WKS5fcm91bmQoKSk7dGhpcy51cGRhdGVEaXN0YW5jZShmLFUpLHRoaXMuYWRkQ3VycmVudFZlcnRleChVLHksMCwwLGQpLGY9VX19fXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsZSxvLHMpfX0sWm8ucHJvdG90eXBlLmFkZEN1cnJlbnRWZXJ0ZXg9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPSExKTt2YXIgbz1lLngrZS55KnIscz1lLnktZS54KnIsbD0tZS54K2UueSpuLGM9LWUueS1lLngqbjt0aGlzLmFkZEhhbGZWZXJ0ZXgodCxvLHMsaSwhMSxyLGEpLHRoaXMuYWRkSGFsZlZlcnRleCh0LGwsYyxpLCEwLC1uLGEpLHRoaXMuZGlzdGFuY2U+WG8vMiYmMD09PXRoaXMudG90YWxEaXN0YW5jZSYmKHRoaXMuZGlzdGFuY2U9MCx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgodCxlLHIsbixhLGkpKX0sWm8ucHJvdG90eXBlLmFkZEhhbGZWZXJ0ZXg9ZnVuY3Rpb24odCxlLHIsbixhLGksbyl7dmFyIHM9dC54LGw9dC55LGM9LjUqdGhpcy5zY2FsZWREaXN0YW5jZTt0aGlzLmxheW91dFZlcnRleEFycmF5LmVtcGxhY2VCYWNrKChzPDwxKSsobj8xOjApLChsPDwxKSsoYT8xOjApLE1hdGgucm91bmQoNjMqZSkrMTI4LE1hdGgucm91bmQoNjMqcikrMTI4LDErKDA9PT1pPzA6aTwwPy0xOjEpfCg2MyZjKTw8MixjPj42KTt2YXIgdT1vLnZlcnRleExlbmd0aCsrO3RoaXMuZTE+PTAmJnRoaXMuZTI+PTAmJih0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2sodGhpcy5lMSx0aGlzLmUyLHUpLG8ucHJpbWl0aXZlTGVuZ3RoKyspLGE/dGhpcy5lMj11OnRoaXMuZTE9dX0sWm8ucHJvdG90eXBlLnVwZGF0ZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7dGhpcy5kaXN0YW5jZSs9dC5kaXN0KGUpLHRoaXMuc2NhbGVkRGlzdGFuY2U9dGhpcy50b3RhbERpc3RhbmNlPjA/KHRoaXMuY2xpcFN0YXJ0Kyh0aGlzLmNsaXBFbmQtdGhpcy5jbGlwU3RhcnQpKnRoaXMuZGlzdGFuY2UvdGhpcy50b3RhbERpc3RhbmNlKSooWG8tMSk6dGhpcy5kaXN0YW5jZX0sZG4oIkxpbmVCdWNrZXQiLFpvLHtvbWl0OlsibGF5ZXJzIiwicGF0dGVybkZlYXR1cmVzIl19KTt2YXIgSm89bmV3IEduKHsibGluZS1jYXAiOm5ldyBqbihUdC5sYXlvdXRfbGluZVsibGluZS1jYXAiXSksImxpbmUtam9pbiI6bmV3IFZuKFR0LmxheW91dF9saW5lWyJsaW5lLWpvaW4iXSksImxpbmUtbWl0ZXItbGltaXQiOm5ldyBqbihUdC5sYXlvdXRfbGluZVsibGluZS1taXRlci1saW1pdCJdKSwibGluZS1yb3VuZC1saW1pdCI6bmV3IGpuKFR0LmxheW91dF9saW5lWyJsaW5lLXJvdW5kLWxpbWl0Il0pLCJsaW5lLXNvcnQta2V5IjpuZXcgVm4oVHQubGF5b3V0X2xpbmVbImxpbmUtc29ydC1rZXkiXSl9KSxLbz17cGFpbnQ6bmV3IEduKHsibGluZS1vcGFjaXR5IjpuZXcgVm4oVHQucGFpbnRfbGluZVsibGluZS1vcGFjaXR5Il0pLCJsaW5lLWNvbG9yIjpuZXcgVm4oVHQucGFpbnRfbGluZVsibGluZS1jb2xvciJdKSwibGluZS10cmFuc2xhdGUiOm5ldyBqbihUdC5wYWludF9saW5lWyJsaW5lLXRyYW5zbGF0ZSJdKSwibGluZS10cmFuc2xhdGUtYW5jaG9yIjpuZXcgam4oVHQucGFpbnRfbGluZVsibGluZS10cmFuc2xhdGUtYW5jaG9yIl0pLCJsaW5lLXdpZHRoIjpuZXcgVm4oVHQucGFpbnRfbGluZVsibGluZS13aWR0aCJdKSwibGluZS1nYXAtd2lkdGgiOm5ldyBWbihUdC5wYWludF9saW5lWyJsaW5lLWdhcC13aWR0aCJdKSwibGluZS1vZmZzZXQiOm5ldyBWbihUdC5wYWludF9saW5lWyJsaW5lLW9mZnNldCJdKSwibGluZS1ibHVyIjpuZXcgVm4oVHQucGFpbnRfbGluZVsibGluZS1ibHVyIl0pLCJsaW5lLWRhc2hhcnJheSI6bmV3IHFuKFR0LnBhaW50X2xpbmVbImxpbmUtZGFzaGFycmF5Il0pLCJsaW5lLXBhdHRlcm4iOm5ldyBVbihUdC5wYWludF9saW5lWyJsaW5lLXBhdHRlcm4iXSksImxpbmUtZ3JhZGllbnQiOm5ldyBIbihUdC5wYWludF9saW5lWyJsaW5lLWdyYWRpZW50Il0pfSksbGF5b3V0OkpvfSxRbz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5wb3NzaWJseUV2YWx1YXRlPWZ1bmN0aW9uKGUscil7cmV0dXJuIHI9bmV3IFBuKE1hdGguZmxvb3Ioci56b29tKSx7bm93OnIubm93LGZhZGVEdXJhdGlvbjpyLmZhZGVEdXJhdGlvbix6b29tSGlzdG9yeTpyLnpvb21IaXN0b3J5LHRyYW5zaXRpb246ci50cmFuc2l0aW9ufSksdC5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZS5jYWxsKHRoaXMsZSxyKX0sZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oZSxyLG4sYSl7cmV0dXJuIHI9aCh7fSxyLHt6b29tOk1hdGguZmxvb3Ioci56b29tKX0pLHQucHJvdG90eXBlLmV2YWx1YXRlLmNhbGwodGhpcyxlLHIsbixhKX0sZX0oVm4pKShLby5wYWludC5wcm9wZXJ0aWVzWyJsaW5lLXdpZHRoIl0uc3BlY2lmaWNhdGlvbik7UW8udXNlSW50ZWdlclpvb209ITA7dmFyICRvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSxLbyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9oYW5kbGVTcGVjaWFsUGFpbnRQcm9wZXJ0eVVwZGF0ZT1mdW5jdGlvbih0KXsibGluZS1ncmFkaWVudCI9PT10JiZ0aGlzLl91cGRhdGVHcmFkaWVudCgpfSxlLnByb3RvdHlwZS5fdXBkYXRlR3JhZGllbnQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50Ll92YWx1ZXNbImxpbmUtZ3JhZGllbnQiXS52YWx1ZS5leHByZXNzaW9uO3RoaXMuZ3JhZGllbnQ9SWkodCwibGluZVByb2dyZXNzIiksdGhpcy5ncmFkaWVudFRleHR1cmU9bnVsbH0sZS5wcm90b3R5cGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUucmVjYWxjdWxhdGUuY2FsbCh0aGlzLGUpLHRoaXMucGFpbnQuX3ZhbHVlc1sibGluZS1mbG9vcndpZHRoIl09UW8ucG9zc2libHlFdmFsdWF0ZSh0aGlzLl90cmFuc2l0aW9uaW5nUGFpbnQuX3ZhbHVlc1sibGluZS13aWR0aCJdLnZhbHVlLGUpfSxlLnByb3RvdHlwZS5jcmVhdGVCdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBabyh0KX0sZS5wcm90b3R5cGUucXVlcnlSYWRpdXM9ZnVuY3Rpb24odCl7dmFyIGU9dCxyPXRzKG1pKCJsaW5lLXdpZHRoIix0aGlzLGUpLG1pKCJsaW5lLWdhcC13aWR0aCIsdGhpcyxlKSksbj1taSgibGluZS1vZmZzZXQiLHRoaXMsZSk7cmV0dXJuIHIvMitNYXRoLmFicyhuKSt5aSh0aGlzLnBhaW50LmdldCgibGluZS10cmFuc2xhdGUiKSl9LGUucHJvdG90eXBlLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rpb24odCxlLHIsbixpLG8scyl7dmFyIGw9eGkodCx0aGlzLnBhaW50LmdldCgibGluZS10cmFuc2xhdGUiKSx0aGlzLnBhaW50LmdldCgibGluZS10cmFuc2xhdGUtYW5jaG9yIiksby5hbmdsZSxzKSxjPXMvMip0cyh0aGlzLnBhaW50LmdldCgibGluZS13aWR0aCIpLmV2YWx1YXRlKGUsciksdGhpcy5wYWludC5nZXQoImxpbmUtZ2FwLXdpZHRoIikuZXZhbHVhdGUoZSxyKSksdT10aGlzLnBhaW50LmdldCgibGluZS1vZmZzZXQiKS5ldmFsdWF0ZShlLHIpO3JldHVybiB1JiYobj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPW5ldyBhKDAsMCksaT0wO2k8dC5sZW5ndGg7aSsrKXtmb3IodmFyIG89dFtpXSxzPVtdLGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIGM9b1tsLTFdLHU9b1tsXSxoPW9bbCsxXSxmPTA9PT1sP246dS5zdWIoYykuX3VuaXQoKS5fcGVycCgpLHA9bD09PW8ubGVuZ3RoLTE/bjpoLnN1Yih1KS5fdW5pdCgpLl9wZXJwKCksZD1mLl9hZGQocCkuX3VuaXQoKSxnPWQueCpwLngrZC55KnAueTtkLl9tdWx0KDEvZykscy5wdXNoKGQuX211bHQoZSkuX2FkZCh1KSl9ci5wdXNoKHMpfXJldHVybiByfShuLHUqcykpLGZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGE9ZVtuXTtpZih0Lmxlbmd0aD49Mylmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylpZihnaSh0LGFbaV0pKXJldHVybiEwO2lmKGNpKHQsYSxyKSlyZXR1cm4hMH1yZXR1cm4hMX0obCxuLGMpfSxlLnByb3RvdHlwZS5pc1RpbGVDbGlwcGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGV9KFluKTtmdW5jdGlvbiB0cyh0LGUpe3JldHVybiBlPjA/ZSsyKnQ6dH12YXIgZXM9Sm4oW3tuYW1lOiJhX3Bvc19vZmZzZXQiLGNvbXBvbmVudHM6NCx0eXBlOiJJbnQxNiJ9LHtuYW1lOiJhX2RhdGEiLGNvbXBvbmVudHM6NCx0eXBlOiJVaW50MTYifV0pLHJzPUpuKFt7bmFtZToiYV9wcm9qZWN0ZWRfcG9zIixjb21wb25lbnRzOjMsdHlwZToiRmxvYXQzMiJ9XSw0KSxucz0oSm4oW3tuYW1lOiJhX2ZhZGVfb3BhY2l0eSIsY29tcG9uZW50czoxLHR5cGU6IlVpbnQzMiJ9XSw0KSxKbihbe25hbWU6ImFfcGxhY2VkIixjb21wb25lbnRzOjIsdHlwZToiVWludDgifSx7bmFtZToiYV9zaGlmdCIsY29tcG9uZW50czoyLHR5cGU6IkZsb2F0MzIifV0pKSxhcz0oSm4oW3t0eXBlOiJJbnQxNiIsbmFtZToiYW5jaG9yUG9pbnRYIn0se3R5cGU6IkludDE2IixuYW1lOiJhbmNob3JQb2ludFkifSx7dHlwZToiSW50MTYiLG5hbWU6IngxIn0se3R5cGU6IkludDE2IixuYW1lOiJ5MSJ9LHt0eXBlOiJJbnQxNiIsbmFtZToieDIifSx7dHlwZToiSW50MTYiLG5hbWU6InkyIn0se3R5cGU6IlVpbnQzMiIsbmFtZToiZmVhdHVyZUluZGV4In0se3R5cGU6IlVpbnQxNiIsbmFtZToic291cmNlTGF5ZXJJbmRleCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6ImJ1Y2tldEluZGV4In0se3R5cGU6IkludDE2IixuYW1lOiJyYWRpdXMifSx7dHlwZToiSW50MTYiLG5hbWU6InNpZ25lZERpc3RhbmNlRnJvbUFuY2hvciJ9XSksSm4oW3tuYW1lOiJhX3BvcyIsY29tcG9uZW50czoyLHR5cGU6IkludDE2In0se25hbWU6ImFfYW5jaG9yX3BvcyIsY29tcG9uZW50czoyLHR5cGU6IkludDE2In0se25hbWU6ImFfZXh0cnVkZSIsY29tcG9uZW50czoyLHR5cGU6IkludDE2In1dLDQpKSxpcz1Kbihbe25hbWU6ImFfcG9zIixjb21wb25lbnRzOjIsdHlwZToiSW50MTYifSx7bmFtZToiYV9hbmNob3JfcG9zIixjb21wb25lbnRzOjIsdHlwZToiSW50MTYifSx7bmFtZToiYV9leHRydWRlIixjb21wb25lbnRzOjIsdHlwZToiSW50MTYifV0sNCk7ZnVuY3Rpb24gb3ModCxlLHIpe3JldHVybiB0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24odCl7dC50ZXh0PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLmxheW91dC5nZXQoInRleHQtdHJhbnNmb3JtIikuZXZhbHVhdGUocix7fSk7cmV0dXJuInVwcGVyY2FzZSI9PT1uP3Q9dC50b0xvY2FsZVVwcGVyQ2FzZSgpOiJsb3dlcmNhc2UiPT09biYmKHQ9dC50b0xvY2FsZUxvd2VyQ2FzZSgpKSxDbi5hcHBseUFyYWJpY1NoYXBpbmcmJih0PUNuLmFwcGx5QXJhYmljU2hhcGluZyh0KSksdH0odC50ZXh0LGUscil9KSx0fUpuKFt7dHlwZToiSW50MTYiLG5hbWU6ImFuY2hvclgifSx7dHlwZToiSW50MTYiLG5hbWU6ImFuY2hvclkifSx7dHlwZToiVWludDE2IixuYW1lOiJnbHlwaFN0YXJ0SW5kZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJudW1HbHlwaHMifSx7dHlwZToiVWludDMyIixuYW1lOiJ2ZXJ0ZXhTdGFydEluZGV4In0se3R5cGU6IlVpbnQzMiIsbmFtZToibGluZVN0YXJ0SW5kZXgifSx7dHlwZToiVWludDMyIixuYW1lOiJsaW5lTGVuZ3RoIn0se3R5cGU6IlVpbnQxNiIsbmFtZToic2VnbWVudCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6Imxvd2VyU2l6ZSJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6InVwcGVyU2l6ZSJ9LHt0eXBlOiJGbG9hdDMyIixuYW1lOiJsaW5lT2Zmc2V0WCJ9LHt0eXBlOiJGbG9hdDMyIixuYW1lOiJsaW5lT2Zmc2V0WSJ9LHt0eXBlOiJVaW50OCIsbmFtZToid3JpdGluZ01vZGUifSx7dHlwZToiVWludDgiLG5hbWU6InBsYWNlZE9yaWVudGF0aW9uIn0se3R5cGU6IlVpbnQ4IixuYW1lOiJoaWRkZW4ifSx7dHlwZToiVWludDMyIixuYW1lOiJjcm9zc1RpbGVJRCJ9XSksSm4oW3t0eXBlOiJJbnQxNiIsbmFtZToiYW5jaG9yWCJ9LHt0eXBlOiJJbnQxNiIsbmFtZToiYW5jaG9yWSJ9LHt0eXBlOiJJbnQxNiIsbmFtZToicmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgifSx7dHlwZToiSW50MTYiLG5hbWU6ImNlbnRlckp1c3RpZmllZFRleHRTeW1ib2xJbmRleCJ9LHt0eXBlOiJJbnQxNiIsbmFtZToibGVmdEp1c3RpZmllZFRleHRTeW1ib2xJbmRleCJ9LHt0eXBlOiJJbnQxNiIsbmFtZToidmVydGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJrZXkifSx7dHlwZToiVWludDE2IixuYW1lOiJ0ZXh0Qm94U3RhcnRJbmRleCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6InRleHRCb3hFbmRJbmRleCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6InZlcnRpY2FsVGV4dEJveFN0YXJ0SW5kZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJ2ZXJ0aWNhbFRleHRCb3hFbmRJbmRleCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6Imljb25Cb3hTdGFydEluZGV4In0se3R5cGU6IlVpbnQxNiIsbmFtZToiaWNvbkJveEVuZEluZGV4In0se3R5cGU6IlVpbnQxNiIsbmFtZToiZmVhdHVyZUluZGV4In0se3R5cGU6IlVpbnQxNiIsbmFtZToibnVtSG9yaXpvbnRhbEdseXBoVmVydGljZXMifSx7dHlwZToiVWludDE2IixuYW1lOiJudW1WZXJ0aWNhbEdseXBoVmVydGljZXMifSx7dHlwZToiVWludDE2IixuYW1lOiJudW1JY29uVmVydGljZXMifSx7dHlwZToiVWludDMyIixuYW1lOiJjcm9zc1RpbGVJRCJ9LHt0eXBlOiJGbG9hdDMyIixuYW1lOiJ0ZXh0Qm94U2NhbGUifSx7dHlwZToiRmxvYXQzMiIsbmFtZToicmFkaWFsVGV4dE9mZnNldCJ9XSksSm4oW3t0eXBlOiJGbG9hdDMyIixuYW1lOiJvZmZzZXRYIn1dKSxKbihbe3R5cGU6IkludDE2IixuYW1lOiJ4In0se3R5cGU6IkludDE2IixuYW1lOiJ5In0se3R5cGU6IkludDE2IixuYW1lOiJ0aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvciJ9XSk7dmFyIHNzPXsiISI6Ilx1ZmUxNSIsIiMiOiJcdWZmMDMiLCQ6Ilx1ZmYwNCIsIiUiOiJcdWZmMDUiLCImIjoiXHVmZjA2IiwiKCI6Ilx1ZmUzNSIsIikiOiJcdWZlMzYiLCIqIjoiXHVmZjBhIiwiKyI6Ilx1ZmYwYiIsIiwiOiJcdWZlMTAiLCItIjoiXHVmZTMyIiwiLiI6Ilx1MzBmYiIsIi8iOiJcdWZmMGYiLCI6IjoiXHVmZTEzIiwiOyI6Ilx1ZmUxNCIsIjwiOiJcdWZlM2YiLCI9IjoiXHVmZjFkIiwiPiI6Ilx1ZmU0MCIsIj8iOiJcdWZlMTYiLCJAIjoiXHVmZjIwIiwiWyI6Ilx1ZmU0NyIsIlxcIjoiXHVmZjNjIiwiXSI6Ilx1ZmU0OCIsIl4iOiJcdWZmM2UiLF86Ilx1ZmUzMyIsImAiOiJcdWZmNDAiLCJ7IjoiXHVmZTM3IiwifCI6Ilx1MjAxNSIsIn0iOiJcdWZlMzgiLCJ+IjoiXHVmZjVlIiwiXHhhMiI6Ilx1ZmZlMCIsIlx4YTMiOiJcdWZmZTEiLCJceGE1IjoiXHVmZmU1IiwiXHhhNiI6Ilx1ZmZlNCIsIlx4YWMiOiJcdWZmZTIiLCJceGFmIjoiXHVmZmUzIiwiXHUyMDEzIjoiXHVmZTMyIiwiXHUyMDE0IjoiXHVmZTMxIiwiXHUyMDE4IjoiXHVmZTQzIiwiXHUyMDE5IjoiXHVmZTQ0IiwiXHUyMDFjIjoiXHVmZTQxIiwiXHUyMDFkIjoiXHVmZTQyIiwiXHUyMDI2IjoiXHVmZTE5IiwiXHUyMDI3IjoiXHUzMGZiIiwiXHUyMGE5IjoiXHVmZmU2IiwiXHUzMDAxIjoiXHVmZTExIiwiXHUzMDAyIjoiXHVmZTEyIiwiXHUzMDA4IjoiXHVmZTNmIiwiXHUzMDA5IjoiXHVmZTQwIiwiXHUzMDBhIjoiXHVmZTNkIiwiXHUzMDBiIjoiXHVmZTNlIiwiXHUzMDBjIjoiXHVmZTQxIiwiXHUzMDBkIjoiXHVmZTQyIiwiXHUzMDBlIjoiXHVmZTQzIiwiXHUzMDBmIjoiXHVmZTQ0IiwiXHUzMDEwIjoiXHVmZTNiIiwiXHUzMDExIjoiXHVmZTNjIiwiXHUzMDE0IjoiXHVmZTM5IiwiXHUzMDE1IjoiXHVmZTNhIiwiXHUzMDE2IjoiXHVmZTE3IiwiXHUzMDE3IjoiXHVmZTE4IiwiXHVmZjAxIjoiXHVmZTE1IiwiXHVmZjA4IjoiXHVmZTM1IiwiXHVmZjA5IjoiXHVmZTM2IiwiXHVmZjBjIjoiXHVmZTEwIiwiXHVmZjBkIjoiXHVmZTMyIiwiXHVmZjBlIjoiXHUzMGZiIiwiXHVmZjFhIjoiXHVmZTEzIiwiXHVmZjFiIjoiXHVmZTE0IiwiXHVmZjFjIjoiXHVmZTNmIiwiXHVmZjFlIjoiXHVmZTQwIiwiXHVmZjFmIjoiXHVmZTE2IiwiXHVmZjNiIjoiXHVmZTQ3IiwiXHVmZjNkIjoiXHVmZTQ4IiwiXHVmZjNmIjoiXHVmZTMzIiwiXHVmZjViIjoiXHVmZTM3IiwiXHVmZjVjIjoiXHUyMDE1IiwiXHVmZjVkIjoiXHVmZTM4IiwiXHVmZjVmIjoiXHVmZTM1IiwiXHVmZjYwIjoiXHVmZTM2IiwiXHVmZjYxIjoiXHVmZTEyIiwiXHVmZjYyIjoiXHVmZTQxIiwiXHVmZjYzIjoiXHVmZTQyIn0sbHM9MjQsY3M9e2hvcml6b250YWw6MSx2ZXJ0aWNhbDoyLGhvcml6b250YWxPbmx5OjN9LHVzPWZ1bmN0aW9uKCl7dGhpcy50ZXh0PSIiLHRoaXMuc2VjdGlvbkluZGV4PVtdLHRoaXMuc2VjdGlvbnM9W119O2Z1bmN0aW9uIGhzKHQsZSxyLG4sYSxpLG8scyxsLGMsdSl7dmFyIGgsZj11cy5mcm9tRmVhdHVyZSh0LHIpO2M9PT1jcy52ZXJ0aWNhbCYmZi52ZXJ0aWNhbGl6ZVB1bmN0dWF0aW9uKCk7dmFyIHA9Q24ucHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0LGQ9Q24ucHJvY2Vzc1N0eWxlZEJpZGlyZWN0aW9uYWxUZXh0O2lmKHAmJjE9PT1mLnNlY3Rpb25zLmxlbmd0aCl7aD1bXTtmb3IodmFyIGc9MCx2PXAoZi50b1N0cmluZygpLG1zKGYscyxuLGUpKTtnPHYubGVuZ3RoO2crPTEpe3ZhciBtPXZbZ10seT1uZXcgdXM7eS50ZXh0PW0seS5zZWN0aW9ucz1mLnNlY3Rpb25zO2Zvcih2YXIgeD0wO3g8bS5sZW5ndGg7eCsrKXkuc2VjdGlvbkluZGV4LnB1c2goMCk7aC5wdXNoKHkpfX1lbHNlIGlmKGQpe2g9W107Zm9yKHZhciBiPTAsXz1kKGYudGV4dCxmLnNlY3Rpb25JbmRleCxtcyhmLHMsbixlKSk7YjxfLmxlbmd0aDtiKz0xKXt2YXIgdz1fW2JdLGs9bmV3IHVzO2sudGV4dD13WzBdLGsuc2VjdGlvbkluZGV4PXdbMV0say5zZWN0aW9ucz1mLnNlY3Rpb25zLGgucHVzaChrKX19ZWxzZSBoPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLG49dC50ZXh0LGE9MCxpPTAsbz1lO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXTtyLnB1c2godC5zdWJzdHJpbmcoYSxzKSksYT1zfXJldHVybiBhPG4ubGVuZ3RoJiZyLnB1c2godC5zdWJzdHJpbmcoYSxuLmxlbmd0aCkpLHJ9KGYsbXMoZixzLG4sZSkpO3ZhciBUPVtdLE09e3Bvc2l0aW9uZWRHbHlwaHM6VCx0ZXh0OmYudG9TdHJpbmcoKSx0b3A6bFsxXSxib3R0b206bFsxXSxsZWZ0OmxbMF0scmlnaHQ6bFswXSx3cml0aW5nTW9kZTpjLGxpbmVDb3VudDpoLmxlbmd0aCx5T2Zmc2V0Oi0xN307cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyxsKXtmb3IodmFyIGM9MCx1PXQueU9mZnNldCxoPTAsZj10LnBvc2l0aW9uZWRHbHlwaHMscD0icmlnaHQiPT09aT8xOiJsZWZ0Ij09PWk/MDouNSxkPTAsZz1yO2Q8Zy5sZW5ndGg7ZCs9MSl7dmFyIHY9Z1tkXTt2LnRyaW0oKTt2YXIgbT12LmdldE1heFNjYWxlKCk7aWYodi5sZW5ndGgoKSl7Zm9yKHZhciB5PWYubGVuZ3RoLHg9MDt4PHYubGVuZ3RoKCk7eCsrKXt2YXIgYj12LmdldFNlY3Rpb24oeCksXz12LmdldFNlY3Rpb25JbmRleCh4KSx3PXYuZ2V0Q2hhckNvZGUoeCksaz0yNCoobS1iLnNjYWxlKSxUPWVbYi5mb250U3RhY2tdLE09VCYmVFt3XTtNJiYobz09PWNzLmhvcml6b250YWx8fCFsJiYhd24odyl8fGwmJihmc1t3XXx8KFM9dyx4bi5BcmFiaWMoUyl8fHhuWyJBcmFiaWMgU3VwcGxlbWVudCJdKFMpfHx4blsiQXJhYmljIEV4dGVuZGVkLUEiXShTKXx8eG5bIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQSJdKFMpfHx4blsiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CIl0oUykpKT8oZi5wdXNoKHtnbHlwaDp3LHg6Yyx5OnUrayx2ZXJ0aWNhbDohMSxzY2FsZTpiLnNjYWxlLGZvbnRTdGFjazpiLmZvbnRTdGFjayxzZWN0aW9uSW5kZXg6X30pLGMrPU0ubWV0cmljcy5hZHZhbmNlKmIuc2NhbGUrcyk6KGYucHVzaCh7Z2x5cGg6dyx4OmMseTp1K2ssdmVydGljYWw6ITAsc2NhbGU6Yi5zY2FsZSxmb250U3RhY2s6Yi5mb250U3RhY2ssc2VjdGlvbkluZGV4Ol99KSxjKz1scypiLnNjYWxlK3MpKX1pZihmLmxlbmd0aCE9PXkpe3ZhciBBPWMtcztoPU1hdGgubWF4KEEsaCkseHMoZixlLHksZi5sZW5ndGgtMSxwKX1jPTAsdSs9biptfWVsc2UgdSs9bn12YXIgUyxFPXlzKGEpLEw9RS5ob3Jpem9udGFsQWxpZ24sQz1FLnZlcnRpY2FsQWxpZ247IWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe2Zvcih2YXIgcz0oZS1yKSphLGw9KC1uKm8rLjUpKmksYz0wO2M8dC5sZW5ndGg7YysrKXRbY10ueCs9cyx0W2NdLnkrPWx9KGYscCxMLEMsaCxuLHIubGVuZ3RoKTt2YXIgUD11LXQueU9mZnNldDt0LnRvcCs9LUMqUCx0LmJvdHRvbT10LnRvcCtQLHQubGVmdCs9LUwqaCx0LnJpZ2h0PXQubGVmdCtofShNLGUsaCxhLGksbyxjLHMsdSksISFULmxlbmd0aCYmTX11cy5mcm9tRmVhdHVyZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgdXMsbj0wO248dC5zZWN0aW9ucy5sZW5ndGg7bisrKXt2YXIgYT10LnNlY3Rpb25zW25dO3Iuc2VjdGlvbnMucHVzaCh7c2NhbGU6YS5zY2FsZXx8MSxmb250U3RhY2s6YS5mb250U3RhY2t8fGV9KSxyLnRleHQrPWEudGV4dDtmb3IodmFyIGk9MDtpPGEudGV4dC5sZW5ndGg7aSsrKXIuc2VjdGlvbkluZGV4LnB1c2gobil9cmV0dXJuIHJ9LHVzLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH0sdXMucHJvdG90eXBlLmdldFNlY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VjdGlvbnNbdGhpcy5zZWN0aW9uSW5kZXhbdF1dfSx1cy5wcm90b3R5cGUuZ2V0U2VjdGlvbkluZGV4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlY3Rpb25JbmRleFt0XX0sdXMucHJvdG90eXBlLmdldENoYXJDb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRleHQuY2hhckNvZGVBdCh0KX0sdXMucHJvdG90eXBlLnZlcnRpY2FsaXplUHVuY3R1YXRpb249ZnVuY3Rpb24oKXt0aGlzLnRleHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dC5jaGFyQ29kZUF0KHIrMSl8fG51bGwsYT10LmNoYXJDb2RlQXQoci0xKXx8bnVsbDtuJiZrbihuKSYmIXNzW3RbcisxXV18fGEmJmtuKGEpJiYhc3NbdFtyLTFdXXx8IXNzW3Rbcl1dP2UrPXRbcl06ZSs9c3NbdFtyXV19cmV0dXJuIGV9KHRoaXMudGV4dCl9LHVzLnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT0wO2U8dGhpcy50ZXh0Lmxlbmd0aCYmZnNbdGhpcy50ZXh0LmNoYXJDb2RlQXQoZSldO2UrKyl0Kys7Zm9yKHZhciByPXRoaXMudGV4dC5sZW5ndGgsbj10aGlzLnRleHQubGVuZ3RoLTE7bj49MCYmbj49dCYmZnNbdGhpcy50ZXh0LmNoYXJDb2RlQXQobildO24tLSlyLS07dGhpcy50ZXh0PXRoaXMudGV4dC5zdWJzdHJpbmcodCxyKSx0aGlzLnNlY3Rpb25JbmRleD10aGlzLnNlY3Rpb25JbmRleC5zbGljZSh0LHIpfSx1cy5wcm90b3R5cGUuc3Vic3RyaW5nPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IHVzO3JldHVybiByLnRleHQ9dGhpcy50ZXh0LnN1YnN0cmluZyh0LGUpLHIuc2VjdGlvbkluZGV4PXRoaXMuc2VjdGlvbkluZGV4LnNsaWNlKHQsZSksci5zZWN0aW9ucz10aGlzLnNlY3Rpb25zLHJ9LHVzLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9LHVzLnByb3RvdHlwZS5nZXRNYXhTY2FsZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuc2VjdGlvbkluZGV4LnJlZHVjZShmdW5jdGlvbihlLHIpe3JldHVybiBNYXRoLm1heChlLHQuc2VjdGlvbnNbcl0uc2NhbGUpfSwwKX07dmFyIGZzPXs5OiEwLDEwOiEwLDExOiEwLDEyOiEwLDEzOiEwLDMyOiEwfSxwcz17fTtmdW5jdGlvbiBkcyh0LGUscixuKXt2YXIgYT1NYXRoLnBvdyh0LWUsMik7cmV0dXJuIG4/dDxlP2EvMjoyKmE6YStNYXRoLmFicyhyKSpyfWZ1bmN0aW9uIGdzKHQsZSxyKXt2YXIgbj0wO3JldHVybiAxMD09PXQmJihuLT0xZTQpLHImJihuKz0xNTApLDQwIT09dCYmNjUyODghPT10fHwobis9NTApLDQxIT09ZSYmNjUyODkhPT1lfHwobis9NTApLG59ZnVuY3Rpb24gdnModCxlLHIsbixhLGkpe2Zvcih2YXIgbz1udWxsLHM9ZHMoZSxyLGEsaSksbD0wLGM9bjtsPGMubGVuZ3RoO2wrPTEpe3ZhciB1PWNbbF0saD1kcyhlLXUueCxyLGEsaSkrdS5iYWRuZXNzO2g8PXMmJihvPXUscz1oKX1yZXR1cm57aW5kZXg6dCx4OmUscHJpb3JCcmVhazpvLGJhZG5lc3M6c319ZnVuY3Rpb24gbXModCxlLHIsbil7aWYoIXIpcmV0dXJuW107aWYoIXQpcmV0dXJuW107Zm9yKHZhciBhLGk9W10sbz1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9MCxpPTA7aTx0Lmxlbmd0aCgpO2krKyl7dmFyIG89dC5nZXRTZWN0aW9uKGkpLHM9bltvLmZvbnRTdGFja10sbD1zJiZzW3QuZ2V0Q2hhckNvZGUoaSldO2wmJihhKz1sLm1ldHJpY3MuYWR2YW5jZSpvLnNjYWxlK2UpfXJldHVybiBhL01hdGgubWF4KDEsTWF0aC5jZWlsKGEvcikpfSh0LGUscixuKSxzPXQudGV4dC5pbmRleE9mKCJcdTIwMGIiKT49MCxsPTAsYz0wO2M8dC5sZW5ndGgoKTtjKyspe3ZhciB1PXQuZ2V0U2VjdGlvbihjKSxoPXQuZ2V0Q2hhckNvZGUoYyksZj1uW3UuZm9udFN0YWNrXSxwPWYmJmZbaF07aWYocCYmIWZzW2hdJiYobCs9cC5tZXRyaWNzLmFkdmFuY2UqdS5zY2FsZStlKSxjPHQubGVuZ3RoKCktMSl7dmFyIGQ9ISgoYT1oKTwxMTkwNHx8ISh4blsiQm9wb21vZm8gRXh0ZW5kZWQiXShhKXx8eG4uQm9wb21vZm8oYSl8fHhuWyJDSksgQ29tcGF0aWJpbGl0eSBGb3JtcyJdKGEpfHx4blsiQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyJdKGEpfHx4blsiQ0pLIENvbXBhdGliaWxpdHkiXShhKXx8eG5bIkNKSyBSYWRpY2FscyBTdXBwbGVtZW50Il0oYSl8fHhuWyJDSksgU3Ryb2tlcyJdKGEpfHx4blsiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uIl0oYSl8fHhuWyJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBIl0oYSl8fHhuWyJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIl0oYSl8fHhuWyJFbmNsb3NlZCBDSksgTGV0dGVycyBhbmQgTW9udGhzIl0oYSl8fHhuWyJIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3JtcyJdKGEpfHx4bi5IaXJhZ2FuYShhKXx8eG5bIklkZW9ncmFwaGljIERlc2NyaXB0aW9uIENoYXJhY3RlcnMiXShhKXx8eG5bIkthbmd4aSBSYWRpY2FscyJdKGEpfHx4blsiS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9ucyJdKGEpfHx4bi5LYXRha2FuYShhKXx8eG5bIlZlcnRpY2FsIEZvcm1zIl0oYSl8fHhuWyJZaSBSYWRpY2FscyJdKGEpfHx4blsiWWkgU3lsbGFibGVzIl0oYSkpKTsocHNbaF18fGQpJiZpLnB1c2godnMoYysxLGwsbyxpLGdzKGgsdC5nZXRDaGFyQ29kZShjKzEpLGQmJnMpLCExKSl9fXJldHVybiBmdW5jdGlvbiB0KGUpe3JldHVybiBlP3QoZS5wcmlvckJyZWFrKS5jb25jYXQoZS5pbmRleCk6W119KHZzKHQubGVuZ3RoKCksbCxvLGksMCwhMCkpfWZ1bmN0aW9uIHlzKHQpe3ZhciBlPS41LHI9LjU7c3dpdGNoKHQpe2Nhc2UicmlnaHQiOmNhc2UidG9wLXJpZ2h0IjpjYXNlImJvdHRvbS1yaWdodCI6ZT0xO2JyZWFrO2Nhc2UibGVmdCI6Y2FzZSJ0b3AtbGVmdCI6Y2FzZSJib3R0b20tbGVmdCI6ZT0wfXN3aXRjaCh0KXtjYXNlImJvdHRvbSI6Y2FzZSJib3R0b20tcmlnaHQiOmNhc2UiYm90dG9tLWxlZnQiOnI9MTticmVhaztjYXNlInRvcCI6Y2FzZSJ0b3AtcmlnaHQiOmNhc2UidG9wLWxlZnQiOnI9MH1yZXR1cm57aG9yaXpvbnRhbEFsaWduOmUsdmVydGljYWxBbGlnbjpyfX1mdW5jdGlvbiB4cyh0LGUscixuLGEpe2lmKGEpe3ZhciBpPXRbbl0sbz1lW2kuZm9udFN0YWNrXSxzPW8mJm9baS5nbHlwaF07aWYocylmb3IodmFyIGw9cy5tZXRyaWNzLmFkdmFuY2UqaS5zY2FsZSxjPSh0W25dLngrbCkqYSx1PXI7dTw9bjt1KyspdFt1XS54LT1jfX1wc1sxMF09ITAscHNbMzJdPSEwLHBzWzM4XT0hMCxwc1s0MF09ITAscHNbNDFdPSEwLHBzWzQzXT0hMCxwc1s0NV09ITAscHNbNDddPSEwLHBzWzE3M109ITAscHNbMTgzXT0hMCxwc1s4MjAzXT0hMCxwc1s4MjA4XT0hMCxwc1s4MjExXT0hMCxwc1s4MjMxXT0hMDt2YXIgYnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIsbixhKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMuYW5nbGU9bix2b2lkIDAhPT1hJiYodGhpcy5zZWdtZW50PWEpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgZSh0aGlzLngsdGhpcy55LHRoaXMuYW5nbGUsdGhpcy5zZWdtZW50KX0sZX0oYSk7ZG4oIkFuY2hvciIsYnMpO3ZhciBfcz0yNTY7ZnVuY3Rpb24gd3ModCxlKXt2YXIgcj1lLmV4cHJlc3Npb247aWYoImNvbnN0YW50Ij09PXIua2luZClyZXR1cm57a2luZDoiY29uc3RhbnQiLGxheW91dFNpemU6ci5ldmFsdWF0ZShuZXcgUG4odCsxKSl9O2lmKCJzb3VyY2UiPT09ci5raW5kKXJldHVybntraW5kOiJzb3VyY2UifTtmb3IodmFyIG49ci56b29tU3RvcHMsYT1yLmludGVycG9sYXRpb25UeXBlLGk9MDtpPG4ubGVuZ3RoJiZuW2ldPD10OylpKys7Zm9yKHZhciBvPWk9TWF0aC5tYXgoMCxpLTEpO288bi5sZW5ndGgmJm5bb108dCsxOylvKys7bz1NYXRoLm1pbihuLmxlbmd0aC0xLG8pO3ZhciBzPW5baV0sbD1uW29dO3JldHVybiJjb21wb3NpdGUiPT09ci5raW5kP3traW5kOiJjb21wb3NpdGUiLG1pblpvb206cyxtYXhab29tOmwsaW50ZXJwb2xhdGlvblR5cGU6YX06e2tpbmQ6ImNhbWVyYSIsbWluWm9vbTpzLG1heFpvb206bCxtaW5TaXplOnIuZXZhbHVhdGUobmV3IFBuKHMpKSxtYXhTaXplOnIuZXZhbHVhdGUobmV3IFBuKGwpKSxpbnRlcnBvbGF0aW9uVHlwZTphfX1mdW5jdGlvbiBrcyh0LGUscil7dmFyIG49ZS51U2l6ZSxhPWUudVNpemVULGk9ci5sb3dlclNpemUsbz1yLnVwcGVyU2l6ZTtyZXR1cm4ic291cmNlIj09PXQua2luZD9pL19zOiJjb21wb3NpdGUiPT09dC5raW5kP3llKGkvX3Msby9fcyxhKTpufWZ1bmN0aW9uIFRzKHQsZSl7dmFyIHI9MCxuPTA7aWYoImNvbnN0YW50Ij09PXQua2luZCluPXQubGF5b3V0U2l6ZTtlbHNlIGlmKCJzb3VyY2UiIT09dC5raW5kKXt2YXIgYT10LmludGVycG9sYXRpb25UeXBlLGk9dC5taW5ab29tLG89dC5tYXhab29tLHM9YT9jKE5lLmludGVycG9sYXRpb25GYWN0b3IoYSxlLGksbyksMCwxKTowOyJjYW1lcmEiPT09dC5raW5kP249eWUodC5taW5TaXplLHQubWF4U2l6ZSxzKTpyPXN9cmV0dXJue3VTaXplVDpyLHVTaXplOm59fXZhciBNcz1PYmplY3QuZnJlZXplKHtnZXRTaXplRGF0YTp3cyxldmFsdWF0ZVNpemVGb3JGZWF0dXJlOmtzLGV2YWx1YXRlU2l6ZUZvclpvb206VHMsU0laRV9QQUNLX0ZBQ1RPUjpfc30pLEFzPUlvLlZlY3RvclRpbGVGZWF0dXJlLnR5cGVzLFNzPVt7bmFtZToiYV9mYWRlX29wYWNpdHkiLGNvbXBvbmVudHM6MSx0eXBlOiJVaW50OCIsb2Zmc2V0OjB9XTtmdW5jdGlvbiBFcyh0LGUscixuLGEsaSxvLHMpe3QuZW1wbGFjZUJhY2soZSxyLE1hdGgucm91bmQoMzIqbiksTWF0aC5yb3VuZCgzMiphKSxpLG8scz9zWzBdOjAscz9zWzFdOjApfWZ1bmN0aW9uIExzKHQsZSxyKXt0LmVtcGxhY2VCYWNrKGUueCxlLnksciksdC5lbXBsYWNlQmFjayhlLngsZS55LHIpLHQuZW1wbGFjZUJhY2soZS54LGUueSxyKSx0LmVtcGxhY2VCYWNrKGUueCxlLnkscil9dmFyIENzPWZ1bmN0aW9uKHQpe3RoaXMubGF5b3V0VmVydGV4QXJyYXk9bmV3IG5hLHRoaXMuaW5kZXhBcnJheT1uZXcgZGEsdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnM9dCx0aGlzLnNlZ21lbnRzPW5ldyBPYSx0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheT1uZXcgYWEsdGhpcy5vcGFjaXR5VmVydGV4QXJyYXk9bmV3IGlhLHRoaXMucGxhY2VkU3ltYm9sQXJyYXk9bmV3IHdhfTtDcy5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQsZSxyLG4pe3ImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmxheW91dFZlcnRleEFycmF5LGVzLm1lbWJlcnMpLHRoaXMuaW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcih0aGlzLmluZGV4QXJyYXksZSksdGhpcy5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuZHluYW1pY0xheW91dFZlcnRleEFycmF5LHJzLm1lbWJlcnMsITApLHRoaXMub3BhY2l0eVZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLm9wYWNpdHlWZXJ0ZXhBcnJheSxTcywhMCksdGhpcy5vcGFjaXR5VmVydGV4QnVmZmVyLml0ZW1TaXplPTEpLChyfHxuKSYmdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpfSxDcy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSx0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMub3BhY2l0eVZlcnRleEJ1ZmZlci5kZXN0cm95KCkpfSxkbigiU3ltYm9sQnVmZmVycyIsQ3MpO3ZhciBQcz1mdW5jdGlvbih0LGUscil7dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheT1uZXcgdCx0aGlzLmxheW91dEF0dHJpYnV0ZXM9ZSx0aGlzLmluZGV4QXJyYXk9bmV3IHIsdGhpcy5zZWdtZW50cz1uZXcgT2EsdGhpcy5jb2xsaXNpb25WZXJ0ZXhBcnJheT1uZXcgbGF9O1BzLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24odCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmxheW91dEF0dHJpYnV0ZXMpLHRoaXMuaW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcih0aGlzLmluZGV4QXJyYXkpLHRoaXMuY29sbGlzaW9uVmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuY29sbGlzaW9uVmVydGV4QXJyYXksbnMubWVtYmVycywhMCl9LFBzLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5zZWdtZW50cy5kZXN0cm95KCksdGhpcy5jb2xsaXNpb25WZXJ0ZXhCdWZmZXIuZGVzdHJveSgpKX0sZG4oIkNvbGxpc2lvbkJ1ZmZlcnMiLFBzKTt2YXIgT3M9ZnVuY3Rpb24odCl7dGhpcy5jb2xsaXNpb25Cb3hBcnJheT10LmNvbGxpc2lvbkJveEFycmF5LHRoaXMuem9vbT10Lnpvb20sdGhpcy5vdmVyc2NhbGluZz10Lm92ZXJzY2FsaW5nLHRoaXMubGF5ZXJzPXQubGF5ZXJzLHRoaXMubGF5ZXJJZHM9dGhpcy5sYXllcnMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSksdGhpcy5pbmRleD10LmluZGV4LHRoaXMucGl4ZWxSYXRpbz10LnBpeGVsUmF0aW8sdGhpcy5zb3VyY2VMYXllckluZGV4PXQuc291cmNlTGF5ZXJJbmRleCx0aGlzLmhhc1BhdHRlcm49ITEsdGhpcy5oYXNQYWludE92ZXJyaWRlcz0hMTt2YXIgZT10aGlzLmxheWVyc1swXS5fdW5ldmFsdWF0ZWRMYXlvdXQuX3ZhbHVlczt0aGlzLnRleHRTaXplRGF0YT13cyh0aGlzLnpvb20sZVsidGV4dC1zaXplIl0pLHRoaXMuaWNvblNpemVEYXRhPXdzKHRoaXMuem9vbSxlWyJpY29uLXNpemUiXSk7dmFyIHI9dGhpcy5sYXllcnNbMF0ubGF5b3V0LG49ci5nZXQoInN5bWJvbC1zb3J0LWtleSIpLGE9ci5nZXQoInN5bWJvbC16LW9yZGVyIik7dGhpcy5zb3J0RmVhdHVyZXNCeUtleT0idmlld3BvcnQteSIhPT1hJiZ2b2lkIDAhPT1uLmNvbnN0YW50T3IoMSk7dmFyIGk9InZpZXdwb3J0LXkiPT09YXx8ImF1dG8iPT09YSYmIXRoaXMuc29ydEZlYXR1cmVzQnlLZXk7dGhpcy5zb3J0RmVhdHVyZXNCeVk9aSYmKHIuZ2V0KCJ0ZXh0LWFsbG93LW92ZXJsYXAiKXx8ci5nZXQoImljb24tYWxsb3ctb3ZlcmxhcCIpfHxyLmdldCgidGV4dC1pZ25vcmUtcGxhY2VtZW50Iil8fHIuZ2V0KCJpY29uLWlnbm9yZS1wbGFjZW1lbnQiKSksInBvaW50Ij09PXIuZ2V0KCJzeW1ib2wtcGxhY2VtZW50IikmJih0aGlzLndyaXRpbmdNb2Rlcz1yLmdldCgidGV4dC13cml0aW5nLW1vZGUiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGNzW3RdfSkpLHRoaXMuc3RhdGVEZXBlbmRlbnRMYXllcklkcz10aGlzLmxheWVycy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNTdGF0ZURlcGVuZGVudCgpfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSksdGhpcy5zb3VyY2VJRD10LnNvdXJjZUlEfTtPcy5wcm90b3R5cGUuY3JlYXRlQXJyYXlzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sYXllcnNbMF0ubGF5b3V0O3RoaXMuaGFzUGFpbnRPdmVycmlkZXM9UnMuaGFzUGFpbnRPdmVycmlkZXModCksdGhpcy50ZXh0PW5ldyBDcyhuZXcgUWEoZXMubWVtYmVycyx0aGlzLmxheWVycyx0aGlzLnpvb20sZnVuY3Rpb24odCl7cmV0dXJuL150ZXh0Ly50ZXN0KHQpfSkpLHRoaXMuaWNvbj1uZXcgQ3MobmV3IFFhKGVzLm1lbWJlcnMsdGhpcy5sYXllcnMsdGhpcy56b29tLGZ1bmN0aW9uKHQpe3JldHVybi9eaWNvbi8udGVzdCh0KX0pKSx0aGlzLmNvbGxpc2lvbkJveD1uZXcgUHMoc2EsYXMubWVtYmVycyxnYSksdGhpcy5jb2xsaXNpb25DaXJjbGU9bmV3IFBzKHNhLGlzLm1lbWJlcnMsZGEpLHRoaXMuZ2x5cGhPZmZzZXRBcnJheT1uZXcgQWEsdGhpcy5saW5lVmVydGV4QXJyYXk9bmV3IEVhLHRoaXMuc3ltYm9sSW5zdGFuY2VzPW5ldyBUYX0sT3MucHJvdG90eXBlLmNhbGN1bGF0ZUdseXBoRGVwZW5kZW5jaWVzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYoZVt0LmNoYXJDb2RlQXQoaSldPSEwLChyfHxuKSYmYSl7dmFyIG89c3NbdC5jaGFyQXQoaSldO28mJihlW28uY2hhckNvZGVBdCgwKV09ITApfX0sT3MucHJvdG90eXBlLnBvcHVsYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5sYXllcnNbMF0sbj1yLmxheW91dCxhPW4uZ2V0KCJ0ZXh0LWZvbnQiKSxpPW4uZ2V0KCJ0ZXh0LWZpZWxkIiksbz1uLmdldCgiaWNvbi1pbWFnZSIpLHM9KCJjb25zdGFudCIhPT1pLnZhbHVlLmtpbmR8fGkudmFsdWUudmFsdWUudG9TdHJpbmcoKS5sZW5ndGg+MCkmJigiY29uc3RhbnQiIT09YS52YWx1ZS5raW5kfHxhLnZhbHVlLnZhbHVlLmxlbmd0aD4wKSxsPSJjb25zdGFudCIhPT1vLnZhbHVlLmtpbmR8fG8udmFsdWUudmFsdWUmJm8udmFsdWUudmFsdWUubGVuZ3RoPjAsYz1uLmdldCgic3ltYm9sLXNvcnQta2V5Iik7aWYodGhpcy5mZWF0dXJlcz1bXSxzfHxsKXtmb3IodmFyIHU9ZS5pY29uRGVwZW5kZW5jaWVzLGg9ZS5nbHlwaERlcGVuZGVuY2llcyxmPW5ldyBQbih0aGlzLnpvb20pLHA9MCxkPXQ7cDxkLmxlbmd0aDtwKz0xKXt2YXIgZz1kW3BdLHY9Zy5mZWF0dXJlLG09Zy5pbmRleCx5PWcuc291cmNlTGF5ZXJJbmRleDtpZihyLl9mZWF0dXJlRmlsdGVyKGYsdikpe3ZhciB4PXZvaWQgMDtpZihzKXt2YXIgYj1yLmdldFZhbHVlQW5kUmVzb2x2ZVRva2VucygidGV4dC1maWVsZCIsdik7eD1vcyhiIGluc3RhbmNlb2YgSnQ/YjpKdC5mcm9tU3RyaW5nKGIpLHIsdil9dmFyIF89dm9pZCAwO2lmKGwmJihfPXIuZ2V0VmFsdWVBbmRSZXNvbHZlVG9rZW5zKCJpY29uLWltYWdlIix2KSkseHx8Xyl7dmFyIHc9dGhpcy5zb3J0RmVhdHVyZXNCeUtleT9jLmV2YWx1YXRlKHYse30pOnZvaWQgMCxrPXt0ZXh0OngsaWNvbjpfLGluZGV4Om0sc291cmNlTGF5ZXJJbmRleDp5LGdlb21ldHJ5Om5pKHYpLHByb3BlcnRpZXM6di5wcm9wZXJ0aWVzLHR5cGU6QXNbdi50eXBlXSxzb3J0S2V5Ond9O2lmKHZvaWQgMCE9PXYuaWQmJihrLmlkPXYuaWQpLHRoaXMuZmVhdHVyZXMucHVzaChrKSxfJiYodVtfXT0hMCkseCl7dmFyIFQ9YS5ldmFsdWF0ZSh2LHt9KS5qb2luKCIsIiksTT0ibWFwIj09PW4uZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCIpJiYicG9pbnQiIT09bi5nZXQoInN5bWJvbC1wbGFjZW1lbnQiKTt0aGlzLmFsbG93VmVydGljYWxQbGFjZW1lbnQ9dGhpcy53cml0aW5nTW9kZXMmJnRoaXMud3JpdGluZ01vZGVzLmluZGV4T2YoY3MudmVydGljYWwpPj0wO2Zvcih2YXIgQT0wLFM9eC5zZWN0aW9ucztBPFMubGVuZ3RoO0ErPTEpe3ZhciBFPVNbQV0sTD1ibih4LnRvU3RyaW5nKCkpLEM9RS5mb250U3RhY2t8fFQsUD1oW0NdPWhbQ118fHt9O3RoaXMuY2FsY3VsYXRlR2x5cGhEZXBlbmRlbmNpZXMoRS50ZXh0LFAsTSx0aGlzLmFsbG93VmVydGljYWxQbGFjZW1lbnQsTCl9fX19fSJsaW5lIj09PW4uZ2V0KCJzeW1ib2wtcGxhY2VtZW50IikmJih0aGlzLmZlYXR1cmVzPWZ1bmN0aW9uKHQpe3ZhciBlPXt9LHI9e30sbj1bXSxhPTA7ZnVuY3Rpb24gaShlKXtuLnB1c2godFtlXSksYSsrfWZ1bmN0aW9uIG8odCxlLGEpe3ZhciBpPXJbdF07cmV0dXJuIGRlbGV0ZSByW3RdLHJbZV09aSxuW2ldLmdlb21ldHJ5WzBdLnBvcCgpLG5baV0uZ2VvbWV0cnlbMF09bltpXS5nZW9tZXRyeVswXS5jb25jYXQoYVswXSksaX1mdW5jdGlvbiBzKHQscixhKXt2YXIgaT1lW3JdO3JldHVybiBkZWxldGUgZVtyXSxlW3RdPWksbltpXS5nZW9tZXRyeVswXS5zaGlmdCgpLG5baV0uZ2VvbWV0cnlbMF09YVswXS5jb25jYXQobltpXS5nZW9tZXRyeVswXSksaX1mdW5jdGlvbiBsKHQsZSxyKXt2YXIgbj1yP2VbMF1bZVswXS5sZW5ndGgtMV06ZVswXVswXTtyZXR1cm4gdCsiOiIrbi54KyI6IituLnl9Zm9yKHZhciBjPTA7Yzx0Lmxlbmd0aDtjKyspe3ZhciB1PXRbY10saD11Lmdlb21ldHJ5LGY9dS50ZXh0P3UudGV4dC50b1N0cmluZygpOm51bGw7aWYoZil7dmFyIHA9bChmLGgpLGQ9bChmLGgsITApO2lmKHAgaW4gciYmZCBpbiBlJiZyW3BdIT09ZVtkXSl7dmFyIGc9cyhwLGQsaCksdj1vKHAsZCxuW2ddLmdlb21ldHJ5KTtkZWxldGUgZVtwXSxkZWxldGUgcltkXSxyW2woZixuW3ZdLmdlb21ldHJ5LCEwKV09dixuW2ddLmdlb21ldHJ5PW51bGx9ZWxzZSBwIGluIHI/byhwLGQsaCk6ZCBpbiBlP3MocCxkLGgpOihpKGMpLGVbcF09YS0xLHJbZF09YS0xKX1lbHNlIGkoYyl9cmV0dXJuIG4uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdlb21ldHJ5fSl9KHRoaXMuZmVhdHVyZXMpKSx0aGlzLnNvcnRGZWF0dXJlc0J5S2V5JiZ0aGlzLmZlYXR1cmVzLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zb3J0S2V5LWUuc29ydEtleX0pfX0sT3MucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUscil7dGhpcy5zdGF0ZURlcGVuZGVudExheWVycy5sZW5ndGgmJih0aGlzLnRleHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSx0aGlzLmxheWVycyxyKSx0aGlzLmljb24ucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSx0aGlzLmxheWVycyxyKSl9LE9zLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnN5bWJvbEluc3RhbmNlcy5sZW5ndGh9LE9zLnByb3RvdHlwZS51cGxvYWRQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudXBsb2FkZWR8fHRoaXMudGV4dC5wcm9ncmFtQ29uZmlndXJhdGlvbnMubmVlZHNVcGxvYWR8fHRoaXMuaWNvbi5wcm9ncmFtQ29uZmlndXJhdGlvbnMubmVlZHNVcGxvYWR9LE9zLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24odCl7dGhpcy51cGxvYWRlZHx8KHRoaXMuY29sbGlzaW9uQm94LnVwbG9hZCh0KSx0aGlzLmNvbGxpc2lvbkNpcmNsZS51cGxvYWQodCkpLHRoaXMudGV4dC51cGxvYWQodCx0aGlzLnNvcnRGZWF0dXJlc0J5WSwhdGhpcy51cGxvYWRlZCx0aGlzLnRleHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkKSx0aGlzLmljb24udXBsb2FkKHQsdGhpcy5zb3J0RmVhdHVyZXNCeVksIXRoaXMudXBsb2FkZWQsdGhpcy5pY29uLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZCksdGhpcy51cGxvYWRlZD0hMH0sT3MucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnRleHQuZGVzdHJveSgpLHRoaXMuaWNvbi5kZXN0cm95KCksdGhpcy5jb2xsaXNpb25Cb3guZGVzdHJveSgpLHRoaXMuY29sbGlzaW9uQ2lyY2xlLmRlc3Ryb3koKX0sT3MucHJvdG90eXBlLmFkZFRvTGluZVZlcnRleEFycmF5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5saW5lVmVydGV4QXJyYXkubGVuZ3RoO2lmKHZvaWQgMCE9PXQuc2VnbWVudCl7Zm9yKHZhciBuPXQuZGlzdChlW3Quc2VnbWVudCsxXSksYT10LmRpc3QoZVt0LnNlZ21lbnRdKSxpPXt9LG89dC5zZWdtZW50KzE7bzxlLmxlbmd0aDtvKyspaVtvXT17eDplW29dLngseTplW29dLnksdGlsZVVuaXREaXN0YW5jZUZyb21BbmNob3I6bn0sbzxlLmxlbmd0aC0xJiYobis9ZVtvKzFdLmRpc3QoZVtvXSkpO2Zvcih2YXIgcz10LnNlZ21lbnR8fDA7cz49MDtzLS0paVtzXT17eDplW3NdLngseTplW3NdLnksdGlsZVVuaXREaXN0YW5jZUZyb21BbmNob3I6YX0scz4wJiYoYSs9ZVtzLTFdLmRpc3QoZVtzXSkpO2Zvcih2YXIgbD0wO2w8ZS5sZW5ndGg7bCsrKXt2YXIgYz1pW2xdO3RoaXMubGluZVZlcnRleEFycmF5LmVtcGxhY2VCYWNrKGMueCxjLnksYy50aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvcil9fXJldHVybntsaW5lU3RhcnRJbmRleDpyLGxpbmVMZW5ndGg6dGhpcy5saW5lVmVydGV4QXJyYXkubGVuZ3RoLXJ9fSxPcy5wcm90b3R5cGUuYWRkU3ltYm9scz1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMsbCxjKXt2YXIgdT10aGlzLGg9dC5pbmRleEFycmF5LGY9dC5sYXlvdXRWZXJ0ZXhBcnJheSxwPXQuZHluYW1pY0xheW91dFZlcnRleEFycmF5LGQ9dC5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0KmUubGVuZ3RoLHQubGF5b3V0VmVydGV4QXJyYXksdC5pbmRleEFycmF5LGkuc29ydEtleSksZz10aGlzLmdseXBoT2Zmc2V0QXJyYXkubGVuZ3RoLHY9ZC52ZXJ0ZXhMZW5ndGgsbT10aGlzLmFsbG93VmVydGljYWxQbGFjZW1lbnQmJm89PT1jcy52ZXJ0aWNhbD9NYXRoLlBJLzI6MCx5PWZ1bmN0aW9uKHQpe3ZhciBlPXQudGwsbj10LnRyLGE9dC5ibCxpPXQuYnIsbz10LnRleCxsPWQudmVydGV4TGVuZ3RoLGM9dC5nbHlwaE9mZnNldFsxXTtFcyhmLHMueCxzLnksZS54LGMrZS55LG8ueCxvLnksciksRXMoZixzLngscy55LG4ueCxjK24ueSxvLngrby53LG8ueSxyKSxFcyhmLHMueCxzLnksYS54LGMrYS55LG8ueCxvLnkrby5oLHIpLEVzKGYscy54LHMueSxpLngsYytpLnksby54K28udyxvLnkrby5oLHIpLExzKHAscyxtKSxoLmVtcGxhY2VCYWNrKGwsbCsxLGwrMiksaC5lbXBsYWNlQmFjayhsKzEsbCsyLGwrMyksZC52ZXJ0ZXhMZW5ndGgrPTQsZC5wcmltaXRpdmVMZW5ndGgrPTIsdS5nbHlwaE9mZnNldEFycmF5LmVtcGxhY2VCYWNrKHQuZ2x5cGhPZmZzZXRbMF0pfTtpZihpLnRleHQmJmkudGV4dC5zZWN0aW9ucyl7dmFyIHg9aS50ZXh0LnNlY3Rpb25zO2lmKHRoaXMuaGFzUGFpbnRPdmVycmlkZXMpe2Zvcih2YXIgYixfPWZ1bmN0aW9uKGUscil7dm9pZCAwPT09Ynx8Yj09PWUmJiFyfHx0LnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHQubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoLGksaS5pbmRleCx7fSx4W2JdKSxiPWV9LHc9MCxrPWU7dzxrLmxlbmd0aDt3Kz0xKXt2YXIgVD1rW3ddO18oVC5zZWN0aW9uSW5kZXgsITEpLHkoVCl9XyhiLCEwKX1lbHNle2Zvcih2YXIgTT0wLEE9ZTtNPEEubGVuZ3RoO00rPTEpeShBW01dKTt0LnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHQubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoLGksaS5pbmRleCx7fSx4WzBdKX19ZWxzZXtmb3IodmFyIFM9MCxFPWU7UzxFLmxlbmd0aDtTKz0xKXkoRVtTXSk7dC5wcm9ncmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFycmF5cyh0LmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCxpLGkuaW5kZXgse30pfXQucGxhY2VkU3ltYm9sQXJyYXkuZW1wbGFjZUJhY2socy54LHMueSxnLHRoaXMuZ2x5cGhPZmZzZXRBcnJheS5sZW5ndGgtZyx2LGwsYyxzLnNlZ21lbnQscj9yWzBdOjAscj9yWzFdOjAsblswXSxuWzFdLG8sMCwhMSwwKX0sT3MucHJvdG90eXBlLl9hZGRDb2xsaXNpb25EZWJ1Z1ZlcnRleD1mdW5jdGlvbih0LGUscixuLGEsaSl7cmV0dXJuIGUuZW1wbGFjZUJhY2soMCwwKSx0LmVtcGxhY2VCYWNrKHIueCxyLnksbixhLE1hdGgucm91bmQoaS54KSxNYXRoLnJvdW5kKGkueSkpfSxPcy5wcm90b3R5cGUuYWRkQ29sbGlzaW9uRGVidWdWZXJ0aWNlcz1mdW5jdGlvbih0LGUscixuLGksbyxzLGwpe3ZhciBjPWkuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoNCxpLmxheW91dFZlcnRleEFycmF5LGkuaW5kZXhBcnJheSksdT1jLnZlcnRleExlbmd0aCxoPWkubGF5b3V0VmVydGV4QXJyYXksZj1pLmNvbGxpc2lvblZlcnRleEFycmF5LHA9cy5hbmNob3JYLGQ9cy5hbmNob3JZO2lmKHRoaXMuX2FkZENvbGxpc2lvbkRlYnVnVmVydGV4KGgsZixvLHAsZCxuZXcgYSh0LGUpKSx0aGlzLl9hZGRDb2xsaXNpb25EZWJ1Z1ZlcnRleChoLGYsbyxwLGQsbmV3IGEocixlKSksdGhpcy5fYWRkQ29sbGlzaW9uRGVidWdWZXJ0ZXgoaCxmLG8scCxkLG5ldyBhKHIsbikpLHRoaXMuX2FkZENvbGxpc2lvbkRlYnVnVmVydGV4KGgsZixvLHAsZCxuZXcgYSh0LG4pKSxjLnZlcnRleExlbmd0aCs9NCxsKXt2YXIgZz1pLmluZGV4QXJyYXk7Zy5lbXBsYWNlQmFjayh1LHUrMSx1KzIpLGcuZW1wbGFjZUJhY2sodSx1KzIsdSszKSxjLnByaW1pdGl2ZUxlbmd0aCs9Mn1lbHNle3ZhciB2PWkuaW5kZXhBcnJheTt2LmVtcGxhY2VCYWNrKHUsdSsxKSx2LmVtcGxhY2VCYWNrKHUrMSx1KzIpLHYuZW1wbGFjZUJhY2sodSsyLHUrMyksdi5lbXBsYWNlQmFjayh1KzMsdSksYy5wcmltaXRpdmVMZW5ndGgrPTR9fSxPcy5wcm90b3R5cGUuYWRkRGVidWdDb2xsaXNpb25Cb3hlcz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPXQ7bjxlO24rKyl7dmFyIGE9dGhpcy5jb2xsaXNpb25Cb3hBcnJheS5nZXQobiksaT1hLngxLG89YS55MSxzPWEueDIsbD1hLnkyLGM9YS5yYWRpdXM+MDt0aGlzLmFkZENvbGxpc2lvbkRlYnVnVmVydGljZXMoaSxvLHMsbCxjP3RoaXMuY29sbGlzaW9uQ2lyY2xlOnRoaXMuY29sbGlzaW9uQm94LGEuYW5jaG9yUG9pbnQscixjKX19LE9zLnByb3RvdHlwZS5nZW5lcmF0ZUNvbGxpc2lvbkRlYnVnQnVmZmVycz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoO3QrKyl7dmFyIGU9dGhpcy5zeW1ib2xJbnN0YW5jZXMuZ2V0KHQpO3RoaXMuYWRkRGVidWdDb2xsaXNpb25Cb3hlcyhlLnRleHRCb3hTdGFydEluZGV4LGUudGV4dEJveEVuZEluZGV4LGUpLHRoaXMuYWRkRGVidWdDb2xsaXNpb25Cb3hlcyhlLnZlcnRpY2FsVGV4dEJveFN0YXJ0SW5kZXgsZS52ZXJ0aWNhbFRleHRCb3hFbmRJbmRleCxlKSx0aGlzLmFkZERlYnVnQ29sbGlzaW9uQm94ZXMoZS5pY29uQm94U3RhcnRJbmRleCxlLmljb25Cb3hFbmRJbmRleCxlKX19LE9zLnByb3RvdHlwZS5fZGVzZXJpYWxpemVDb2xsaXNpb25Cb3hlc0ZvclN5bWJvbD1mdW5jdGlvbih0LGUscixuLGEsaSxvKXtmb3IodmFyIHM9e30sbD1lO2w8cjtsKyspe3ZhciBjPXQuZ2V0KGwpO2lmKDA9PT1jLnJhZGl1cyl7cy50ZXh0Qm94PXt4MTpjLngxLHkxOmMueTEseDI6Yy54Mix5MjpjLnkyLGFuY2hvclBvaW50WDpjLmFuY2hvclBvaW50WCxhbmNob3JQb2ludFk6Yy5hbmNob3JQb2ludFl9LHMudGV4dEZlYXR1cmVJbmRleD1jLmZlYXR1cmVJbmRleDticmVha31zLnRleHRDaXJjbGVzfHwocy50ZXh0Q2lyY2xlcz1bXSxzLnRleHRGZWF0dXJlSW5kZXg9Yy5mZWF0dXJlSW5kZXgpLHMudGV4dENpcmNsZXMucHVzaChjLmFuY2hvclBvaW50WCxjLmFuY2hvclBvaW50WSxjLnJhZGl1cyxjLnNpZ25lZERpc3RhbmNlRnJvbUFuY2hvciwxKX1mb3IodmFyIHU9bjt1PGE7dSsrKXt2YXIgaD10LmdldCh1KTtpZigwPT09aC5yYWRpdXMpe3MudmVydGljYWxUZXh0Qm94PXt4MTpoLngxLHkxOmgueTEseDI6aC54Mix5MjpoLnkyLGFuY2hvclBvaW50WDpoLmFuY2hvclBvaW50WCxhbmNob3JQb2ludFk6aC5hbmNob3JQb2ludFl9LHMudmVydGljYWxUZXh0RmVhdHVyZUluZGV4PWguZmVhdHVyZUluZGV4O2JyZWFrfX1mb3IodmFyIGY9aTtmPG87ZisrKXt2YXIgcD10LmdldChmKTtpZigwPT09cC5yYWRpdXMpe3MuaWNvbkJveD17eDE6cC54MSx5MTpwLnkxLHgyOnAueDIseTI6cC55MixhbmNob3JQb2ludFg6cC5hbmNob3JQb2ludFgsYW5jaG9yUG9pbnRZOnAuYW5jaG9yUG9pbnRZfSxzLmljb25GZWF0dXJlSW5kZXg9cC5mZWF0dXJlSW5kZXg7YnJlYWt9fXJldHVybiBzfSxPcy5wcm90b3R5cGUuZGVzZXJpYWxpemVDb2xsaXNpb25Cb3hlcz1mdW5jdGlvbih0KXt0aGlzLmNvbGxpc2lvbkFycmF5cz1bXTtmb3IodmFyIGU9MDtlPHRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDtlKyspe3ZhciByPXRoaXMuc3ltYm9sSW5zdGFuY2VzLmdldChlKTt0aGlzLmNvbGxpc2lvbkFycmF5cy5wdXNoKHRoaXMuX2Rlc2VyaWFsaXplQ29sbGlzaW9uQm94ZXNGb3JTeW1ib2wodCxyLnRleHRCb3hTdGFydEluZGV4LHIudGV4dEJveEVuZEluZGV4LHIudmVydGljYWxUZXh0Qm94U3RhcnRJbmRleCxyLnZlcnRpY2FsVGV4dEJveEVuZEluZGV4LHIuaWNvbkJveFN0YXJ0SW5kZXgsci5pY29uQm94RW5kSW5kZXgpKX19LE9zLnByb3RvdHlwZS5oYXNUZXh0RGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHQuc2VnbWVudHMuZ2V0KCkubGVuZ3RoPjB9LE9zLnByb3RvdHlwZS5oYXNJY29uRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmljb24uc2VnbWVudHMuZ2V0KCkubGVuZ3RoPjB9LE9zLnByb3RvdHlwZS5oYXNDb2xsaXNpb25Cb3hEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sbGlzaW9uQm94LnNlZ21lbnRzLmdldCgpLmxlbmd0aD4wfSxPcy5wcm90b3R5cGUuaGFzQ29sbGlzaW9uQ2lyY2xlRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbGxpc2lvbkNpcmNsZS5zZWdtZW50cy5nZXQoKS5sZW5ndGg+MH0sT3MucHJvdG90eXBlLmFkZEluZGljZXNGb3JQbGFjZWRUZXh0U3ltYm9sPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KHQpLHI9ZS52ZXJ0ZXhTdGFydEluZGV4KzQqZS5udW1HbHlwaHMsbj1lLnZlcnRleFN0YXJ0SW5kZXg7bjxyO24rPTQpdGhpcy50ZXh0LmluZGV4QXJyYXkuZW1wbGFjZUJhY2sobixuKzEsbisyKSx0aGlzLnRleHQuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhuKzEsbisyLG4rMyl9LE9zLnByb3RvdHlwZS5nZXRTb3J0ZWRTeW1ib2xJbmRleGVzPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc29ydGVkQW5nbGU9PT10JiZ2b2lkIDAhPT10aGlzLnN5bWJvbEluc3RhbmNlSW5kZXhlcylyZXR1cm4gdGhpcy5zeW1ib2xJbnN0YW5jZUluZGV4ZXM7Zm9yKHZhciBlPU1hdGguc2luKHQpLHI9TWF0aC5jb3ModCksbj1bXSxhPVtdLGk9W10sbz0wO288dGhpcy5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoOysrbyl7aS5wdXNoKG8pO3ZhciBzPXRoaXMuc3ltYm9sSW5zdGFuY2VzLmdldChvKTtuLnB1c2goMHxNYXRoLnJvdW5kKGUqcy5hbmNob3JYK3Iqcy5hbmNob3JZKSksYS5wdXNoKHMuZmVhdHVyZUluZGV4KX1yZXR1cm4gaS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5bdF0tbltlXXx8YVtlXS1hW3RdfSksaX0sT3MucHJvdG90eXBlLnNvcnRGZWF0dXJlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuc29ydEZlYXR1cmVzQnlZJiZ0aGlzLnNvcnRlZEFuZ2xlIT09dCYmISh0aGlzLnRleHQuc2VnbWVudHMuZ2V0KCkubGVuZ3RoPjF8fHRoaXMuaWNvbi5zZWdtZW50cy5nZXQoKS5sZW5ndGg+MSkpe3RoaXMuc3ltYm9sSW5zdGFuY2VJbmRleGVzPXRoaXMuZ2V0U29ydGVkU3ltYm9sSW5kZXhlcyh0KSx0aGlzLnNvcnRlZEFuZ2xlPXQsdGhpcy50ZXh0LmluZGV4QXJyYXkuY2xlYXIoKSx0aGlzLmljb24uaW5kZXhBcnJheS5jbGVhcigpLHRoaXMuZmVhdHVyZVNvcnRPcmRlcj1bXTtmb3IodmFyIHI9MCxuPXRoaXMuc3ltYm9sSW5zdGFuY2VJbmRleGVzO3I8bi5sZW5ndGg7cis9MSl7dmFyIGE9bltyXSxpPXRoaXMuc3ltYm9sSW5zdGFuY2VzLmdldChhKTt0aGlzLmZlYXR1cmVTb3J0T3JkZXIucHVzaChpLmZlYXR1cmVJbmRleCksW2kucmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsaS5jZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsaS5sZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4XS5mb3JFYWNoKGZ1bmN0aW9uKHQscixuKXt0Pj0wJiZuLmluZGV4T2YodCk9PT1yJiZlLmFkZEluZGljZXNGb3JQbGFjZWRUZXh0U3ltYm9sKHQpfSksaS52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleD49MCYmdGhpcy5hZGRJbmRpY2VzRm9yUGxhY2VkVGV4dFN5bWJvbChpLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4KTt2YXIgbz10aGlzLmljb24ucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KGEpO2lmKG8ubnVtR2x5cGhzKXt2YXIgcz1vLnZlcnRleFN0YXJ0SW5kZXg7dGhpcy5pY29uLmluZGV4QXJyYXkuZW1wbGFjZUJhY2socyxzKzEscysyKSx0aGlzLmljb24uaW5kZXhBcnJheS5lbXBsYWNlQmFjayhzKzEscysyLHMrMyl9fXRoaXMudGV4dC5pbmRleEJ1ZmZlciYmdGhpcy50ZXh0LmluZGV4QnVmZmVyLnVwZGF0ZURhdGEodGhpcy50ZXh0LmluZGV4QXJyYXkpLHRoaXMuaWNvbi5pbmRleEJ1ZmZlciYmdGhpcy5pY29uLmluZGV4QnVmZmVyLnVwZGF0ZURhdGEodGhpcy5pY29uLmluZGV4QXJyYXkpfX0sZG4oIlN5bWJvbEJ1Y2tldCIsT3Mse29taXQ6WyJsYXllcnMiLCJjb2xsaXNpb25Cb3hBcnJheSIsImZlYXR1cmVzIiwiY29tcGFyZVRleHQiXX0pLE9zLk1BWF9HTFlQSFM9NjU1MzUsT3MuYWRkRHluYW1pY0F0dHJpYnV0ZXM9THM7dmFyIHpzPW5ldyBHbih7InN5bWJvbC1wbGFjZW1lbnQiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJzeW1ib2wtcGxhY2VtZW50Il0pLCJzeW1ib2wtc3BhY2luZyI6bmV3IGpuKFR0LmxheW91dF9zeW1ib2xbInN5bWJvbC1zcGFjaW5nIl0pLCJzeW1ib2wtYXZvaWQtZWRnZXMiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJzeW1ib2wtYXZvaWQtZWRnZXMiXSksInN5bWJvbC1zb3J0LWtleSI6bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbInN5bWJvbC1zb3J0LWtleSJdKSwic3ltYm9sLXotb3JkZXIiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJzeW1ib2wtei1vcmRlciJdKSwiaWNvbi1hbGxvdy1vdmVybGFwIjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1hbGxvdy1vdmVybGFwIl0pLCJpY29uLWlnbm9yZS1wbGFjZW1lbnQiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLWlnbm9yZS1wbGFjZW1lbnQiXSksImljb24tb3B0aW9uYWwiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLW9wdGlvbmFsIl0pLCJpY29uLXJvdGF0aW9uLWFsaWdubWVudCI6bmV3IGpuKFR0LmxheW91dF9zeW1ib2xbImljb24tcm90YXRpb24tYWxpZ25tZW50Il0pLCJpY29uLXNpemUiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLXNpemUiXSksImljb24tdGV4dC1maXQiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLXRleHQtZml0Il0pLCJpY29uLXRleHQtZml0LXBhZGRpbmciOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLXRleHQtZml0LXBhZGRpbmciXSksImljb24taW1hZ2UiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLWltYWdlIl0pLCJpY29uLXJvdGF0ZSI6bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbImljb24tcm90YXRlIl0pLCJpY29uLXBhZGRpbmciOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLXBhZGRpbmciXSksImljb24ta2VlcC11cHJpZ2h0IjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1rZWVwLXVwcmlnaHQiXSksImljb24tb2Zmc2V0IjpuZXcgVm4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1vZmZzZXQiXSksImljb24tYW5jaG9yIjpuZXcgVm4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1hbmNob3IiXSksImljb24tcGl0Y2gtYWxpZ25tZW50IjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1waXRjaC1hbGlnbm1lbnQiXSksInRleHQtcGl0Y2gtYWxpZ25tZW50IjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC1waXRjaC1hbGlnbm1lbnQiXSksInRleHQtcm90YXRpb24tYWxpZ25tZW50IjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiXSksInRleHQtZmllbGQiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWZpZWxkIl0pLCJ0ZXh0LWZvbnQiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWZvbnQiXSksInRleHQtc2l6ZSI6bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbInRleHQtc2l6ZSJdKSwidGV4dC1tYXgtd2lkdGgiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LW1heC13aWR0aCJdKSwidGV4dC1saW5lLWhlaWdodCI6bmV3IGpuKFR0LmxheW91dF9zeW1ib2xbInRleHQtbGluZS1oZWlnaHQiXSksInRleHQtbGV0dGVyLXNwYWNpbmciOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWxldHRlci1zcGFjaW5nIl0pLCJ0ZXh0LWp1c3RpZnkiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWp1c3RpZnkiXSksInRleHQtcmFkaWFsLW9mZnNldCI6bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbInRleHQtcmFkaWFsLW9mZnNldCJdKSwidGV4dC12YXJpYWJsZS1hbmNob3IiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LXZhcmlhYmxlLWFuY2hvciJdKSwidGV4dC1hbmNob3IiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWFuY2hvciJdKSwidGV4dC1tYXgtYW5nbGUiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LW1heC1hbmdsZSJdKSwidGV4dC13cml0aW5nLW1vZGUiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LXdyaXRpbmctbW9kZSJdKSwidGV4dC1yb3RhdGUiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LXJvdGF0ZSJdKSwidGV4dC1wYWRkaW5nIjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC1wYWRkaW5nIl0pLCJ0ZXh0LWtlZXAtdXByaWdodCI6bmV3IGpuKFR0LmxheW91dF9zeW1ib2xbInRleHQta2VlcC11cHJpZ2h0Il0pLCJ0ZXh0LXRyYW5zZm9ybSI6bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbInRleHQtdHJhbnNmb3JtIl0pLCJ0ZXh0LW9mZnNldCI6bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbInRleHQtb2Zmc2V0Il0pLCJ0ZXh0LWFsbG93LW92ZXJsYXAiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWFsbG93LW92ZXJsYXAiXSksInRleHQtaWdub3JlLXBsYWNlbWVudCI6bmV3IGpuKFR0LmxheW91dF9zeW1ib2xbInRleHQtaWdub3JlLXBsYWNlbWVudCJdKSwidGV4dC1vcHRpb25hbCI6bmV3IGpuKFR0LmxheW91dF9zeW1ib2xbInRleHQtb3B0aW9uYWwiXSl9KSxJcz17cGFpbnQ6bmV3IEduKHsiaWNvbi1vcGFjaXR5IjpuZXcgVm4oVHQucGFpbnRfc3ltYm9sWyJpY29uLW9wYWNpdHkiXSksImljb24tY29sb3IiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbImljb24tY29sb3IiXSksImljb24taGFsby1jb2xvciI6bmV3IFZuKFR0LnBhaW50X3N5bWJvbFsiaWNvbi1oYWxvLWNvbG9yIl0pLCJpY29uLWhhbG8td2lkdGgiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbImljb24taGFsby13aWR0aCJdKSwiaWNvbi1oYWxvLWJsdXIiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbImljb24taGFsby1ibHVyIl0pLCJpY29uLXRyYW5zbGF0ZSI6bmV3IGpuKFR0LnBhaW50X3N5bWJvbFsiaWNvbi10cmFuc2xhdGUiXSksImljb24tdHJhbnNsYXRlLWFuY2hvciI6bmV3IGpuKFR0LnBhaW50X3N5bWJvbFsiaWNvbi10cmFuc2xhdGUtYW5jaG9yIl0pLCJ0ZXh0LW9wYWNpdHkiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbInRleHQtb3BhY2l0eSJdKSwidGV4dC1jb2xvciI6bmV3IFZuKFR0LnBhaW50X3N5bWJvbFsidGV4dC1jb2xvciJdLHtydW50aW1lVHlwZTpGdCxnZXRPdmVycmlkZTpmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0Q29sb3J9LGhhc092ZXJyaWRlOmZ1bmN0aW9uKHQpe3JldHVybiEhdC50ZXh0Q29sb3J9fSksInRleHQtaGFsby1jb2xvciI6bmV3IFZuKFR0LnBhaW50X3N5bWJvbFsidGV4dC1oYWxvLWNvbG9yIl0pLCJ0ZXh0LWhhbG8td2lkdGgiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbInRleHQtaGFsby13aWR0aCJdKSwidGV4dC1oYWxvLWJsdXIiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbInRleHQtaGFsby1ibHVyIl0pLCJ0ZXh0LXRyYW5zbGF0ZSI6bmV3IGpuKFR0LnBhaW50X3N5bWJvbFsidGV4dC10cmFuc2xhdGUiXSksInRleHQtdHJhbnNsYXRlLWFuY2hvciI6bmV3IGpuKFR0LnBhaW50X3N5bWJvbFsidGV4dC10cmFuc2xhdGUtYW5jaG9yIl0pfSksbGF5b3V0OnpzfSxEcz1mdW5jdGlvbih0KXt0aGlzLnR5cGU9dC5wcm9wZXJ0eS5vdmVycmlkZXM/dC5wcm9wZXJ0eS5vdmVycmlkZXMucnVudGltZVR5cGU6enQsdGhpcy5kZWZhdWx0VmFsdWU9dH07RHMucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe2lmKHQuZm9ybWF0dGVkU2VjdGlvbil7dmFyIGU9dGhpcy5kZWZhdWx0VmFsdWUucHJvcGVydHkub3ZlcnJpZGVzO2lmKGUmJmUuaGFzT3ZlcnJpZGUodC5mb3JtYXR0ZWRTZWN0aW9uKSlyZXR1cm4gZS5nZXRPdmVycmlkZSh0LmZvcm1hdHRlZFNlY3Rpb24pfXJldHVybiB0LmZlYXR1cmUmJnQuZmVhdHVyZVN0YXRlP3RoaXMuZGVmYXVsdFZhbHVlLmV2YWx1YXRlKHQuZmVhdHVyZSx0LmZlYXR1cmVTdGF0ZSk6dGhpcy5kZWZhdWx0VmFsdWUucHJvcGVydHkuc3BlY2lmaWNhdGlvbi5kZWZhdWx0fSxEcy5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuZGVmYXVsdFZhbHVlLmlzQ29uc3RhbnQoKXx8dCh0aGlzLmRlZmF1bHRWYWx1ZS52YWx1ZS5fc3R5bGVFeHByZXNzaW9uLmV4cHJlc3Npb24pfSxEcy5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7cmV0dXJuW3ZvaWQgMF19LERzLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZG4oIkZvcm1hdFNlY3Rpb25PdmVycmlkZSIsRHMse29taXQ6WyJkZWZhdWx0VmFsdWUiXX0pO3ZhciBScz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUsSXMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5yZWNhbGN1bGF0ZT1mdW5jdGlvbihlKXtpZih0LnByb3RvdHlwZS5yZWNhbGN1bGF0ZS5jYWxsKHRoaXMsZSksImF1dG8iPT09dGhpcy5sYXlvdXQuZ2V0KCJpY29uLXJvdGF0aW9uLWFsaWdubWVudCIpJiYoInBvaW50IiE9PXRoaXMubGF5b3V0LmdldCgic3ltYm9sLXBsYWNlbWVudCIpP3RoaXMubGF5b3V0Ll92YWx1ZXNbImljb24tcm90YXRpb24tYWxpZ25tZW50Il09Im1hcCI6dGhpcy5sYXlvdXQuX3ZhbHVlc1siaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnQiXT0idmlld3BvcnQiKSwiYXV0byI9PT10aGlzLmxheW91dC5nZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50IikmJigicG9pbnQiIT09dGhpcy5sYXlvdXQuZ2V0KCJzeW1ib2wtcGxhY2VtZW50Iik/dGhpcy5sYXlvdXQuX3ZhbHVlc1sidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiXT0ibWFwIjp0aGlzLmxheW91dC5fdmFsdWVzWyJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCJdPSJ2aWV3cG9ydCIpLCJhdXRvIj09PXRoaXMubGF5b3V0LmdldCgidGV4dC1waXRjaC1hbGlnbm1lbnQiKSYmKHRoaXMubGF5b3V0Ll92YWx1ZXNbInRleHQtcGl0Y2gtYWxpZ25tZW50Il09dGhpcy5sYXlvdXQuZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCIpKSwiYXV0byI9PT10aGlzLmxheW91dC5nZXQoImljb24tcGl0Y2gtYWxpZ25tZW50IikmJih0aGlzLmxheW91dC5fdmFsdWVzWyJpY29uLXBpdGNoLWFsaWdubWVudCJdPXRoaXMubGF5b3V0LmdldCgiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnQiKSksInBvaW50Ij09PXRoaXMubGF5b3V0LmdldCgic3ltYm9sLXBsYWNlbWVudCIpKXt2YXIgcj10aGlzLmxheW91dC5nZXQoInRleHQtd3JpdGluZy1tb2RlIik7aWYocil7Zm9yKHZhciBuPVtdLGE9MCxpPXI7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1pW2FdO24uaW5kZXhPZihvKTwwJiZuLnB1c2gobyl9dGhpcy5sYXlvdXQuX3ZhbHVlc1sidGV4dC13cml0aW5nLW1vZGUiXT1ufWVsc2UgdGhpcy5sYXlvdXQuX3ZhbHVlc1sidGV4dC13cml0aW5nLW1vZGUiXT1bImhvcml6b250YWwiXX10aGlzLl9zZXRQYWludE92ZXJyaWRlcygpfSxlLnByb3RvdHlwZS5nZXRWYWx1ZUFuZFJlc29sdmVUb2tlbnM9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxheW91dC5nZXQodCkuZXZhbHVhdGUoZSx7fSksbj10aGlzLl91bmV2YWx1YXRlZExheW91dC5fdmFsdWVzW3RdO3JldHVybiBuLmlzRGF0YURyaXZlbigpfHx3cihuLnZhbHVlKT9yOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIucmVwbGFjZSgveyhbXnt9XSspfS9nLGZ1bmN0aW9uKGUscil7cmV0dXJuIHIgaW4gdD9TdHJpbmcodFtyXSk6IiJ9KX0oZS5wcm9wZXJ0aWVzKX0sZS5wcm90b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgT3ModCl9LGUucHJvdG90eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LGUucHJvdG90eXBlLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX3NldFBhaW50T3ZlcnJpZGVzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj1Jcy5wYWludC5vdmVycmlkYWJsZVByb3BlcnRpZXM7dDxyLmxlbmd0aDt0Kz0xKXt2YXIgbj1yW3RdO2lmKGUuaGFzUGFpbnRPdmVycmlkZSh0aGlzLmxheW91dCxuKSl7dmFyIGEsaT10aGlzLnBhaW50LmdldChuKSxvPW5ldyBEcyhpKSxzPW5ldyBfcihvLGkucHJvcGVydHkuc3BlY2lmaWNhdGlvbik7YT0iY29uc3RhbnQiPT09aS52YWx1ZS5raW5kfHwic291cmNlIj09PWkudmFsdWUua2luZD9uZXcgVHIoInNvdXJjZSIscyk6bmV3IE1yKCJjb21wb3NpdGUiLHMsaS52YWx1ZS56b29tU3RvcHMsaS52YWx1ZS5faW50ZXJwb2xhdGlvblR5cGUpLHRoaXMucGFpbnQuX3ZhbHVlc1tuXT1uZXcgQm4oaS5wcm9wZXJ0eSxhLGkucGFyYW1ldGVycyl9fX0sZS5wcm90b3R5cGUuX2hhbmRsZU92ZXJyaWRhYmxlUGFpbnRQcm9wZXJ0eVVwZGF0ZT1mdW5jdGlvbih0LHIsbil7cmV0dXJuISghdGhpcy5sYXlvdXR8fHIuaXNEYXRhRHJpdmVuKCl8fG4uaXNEYXRhRHJpdmVuKCkpJiZlLmhhc1BhaW50T3ZlcnJpZGUodGhpcy5sYXlvdXQsdCl9LGUuaGFzUGFpbnRPdmVycmlkZT1mdW5jdGlvbih0LGUpe3ZhciByPXQuZ2V0KCJ0ZXh0LWZpZWxkIiksbj1Jcy5wYWludC5wcm9wZXJ0aWVzW2VdLGE9ITEsaT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXQ7ZTxyLmxlbmd0aDtlKz0xKXt2YXIgaT1yW2VdO2lmKG4ub3ZlcnJpZGVzJiZuLm92ZXJyaWRlcy5oYXNPdmVycmlkZShpKSlyZXR1cm4gdm9pZChhPSEwKX19O2lmKCJjb25zdGFudCI9PT1yLnZhbHVlLmtpbmQmJnIudmFsdWUudmFsdWUgaW5zdGFuY2VvZiBKdClpKHIudmFsdWUudmFsdWUuc2VjdGlvbnMpO2Vsc2UgaWYoInNvdXJjZSI9PT1yLnZhbHVlLmtpbmQpe3ZhciBvPWZ1bmN0aW9uKHQpe2lmKCFhKWlmKHQgaW5zdGFuY2VvZiB0ZSYmUXQodC52YWx1ZSk9PT1WdCl7dmFyIGU9dC52YWx1ZTtpKGUuc2VjdGlvbnMpfWVsc2UgdCBpbnN0YW5jZW9mIGFlP2kodC5zZWN0aW9ucyk6dC5lYWNoQ2hpbGQobyl9LHM9ci52YWx1ZTtzLl9zdHlsZUV4cHJlc3Npb24mJm8ocy5fc3R5bGVFeHByZXNzaW9uLmV4cHJlc3Npb24pfXJldHVybiBhfSxlLmhhc1BhaW50T3ZlcnJpZGVzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0wLG49SXMucGFpbnQub3ZlcnJpZGFibGVQcm9wZXJ0aWVzO3I8bi5sZW5ndGg7cis9MSl7dmFyIGE9bltyXTtpZihlLmhhc1BhaW50T3ZlcnJpZGUodCxhKSlyZXR1cm4hMH1yZXR1cm4hMX0sZX0oWW4pLEZzPXtwYWludDpuZXcgR24oeyJiYWNrZ3JvdW5kLWNvbG9yIjpuZXcgam4oVHQucGFpbnRfYmFja2dyb3VuZFsiYmFja2dyb3VuZC1jb2xvciJdKSwiYmFja2dyb3VuZC1wYXR0ZXJuIjpuZXcgcW4oVHQucGFpbnRfYmFja2dyb3VuZFsiYmFja2dyb3VuZC1wYXR0ZXJuIl0pLCJiYWNrZ3JvdW5kLW9wYWNpdHkiOm5ldyBqbihUdC5wYWludF9iYWNrZ3JvdW5kWyJiYWNrZ3JvdW5kLW9wYWNpdHkiXSl9KX0sQnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyxlLEZzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZX0oWW4pLE5zPXtwYWludDpuZXcgR24oeyJyYXN0ZXItb3BhY2l0eSI6bmV3IGpuKFR0LnBhaW50X3Jhc3RlclsicmFzdGVyLW9wYWNpdHkiXSksInJhc3Rlci1odWUtcm90YXRlIjpuZXcgam4oVHQucGFpbnRfcmFzdGVyWyJyYXN0ZXItaHVlLXJvdGF0ZSJdKSwicmFzdGVyLWJyaWdodG5lc3MtbWluIjpuZXcgam4oVHQucGFpbnRfcmFzdGVyWyJyYXN0ZXItYnJpZ2h0bmVzcy1taW4iXSksInJhc3Rlci1icmlnaHRuZXNzLW1heCI6bmV3IGpuKFR0LnBhaW50X3Jhc3RlclsicmFzdGVyLWJyaWdodG5lc3MtbWF4Il0pLCJyYXN0ZXItc2F0dXJhdGlvbiI6bmV3IGpuKFR0LnBhaW50X3Jhc3RlclsicmFzdGVyLXNhdHVyYXRpb24iXSksInJhc3Rlci1jb250cmFzdCI6bmV3IGpuKFR0LnBhaW50X3Jhc3RlclsicmFzdGVyLWNvbnRyYXN0Il0pLCJyYXN0ZXItcmVzYW1wbGluZyI6bmV3IGpuKFR0LnBhaW50X3Jhc3RlclsicmFzdGVyLXJlc2FtcGxpbmciXSksInJhc3Rlci1mYWRlLWR1cmF0aW9uIjpuZXcgam4oVHQucGFpbnRfcmFzdGVyWyJyYXN0ZXItZmFkZS1kdXJhdGlvbiJdKX0pfSxqcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUsTnMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlfShZbiksVnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyxlLHt9KSx0aGlzLmltcGxlbWVudGF0aW9uPWV9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmlzM0Q9ZnVuY3Rpb24oKXtyZXR1cm4iM2QiPT09dGhpcy5pbXBsZW1lbnRhdGlvbi5yZW5kZXJpbmdNb2RlfSxlLnByb3RvdHlwZS5oYXNPZmZzY3JlZW5QYXNzPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuaW1wbGVtZW50YXRpb24ucHJlcmVuZGVyfSxlLnByb3RvdHlwZS5yZWNhbGN1bGF0ZT1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUudXBkYXRlVHJhbnNpdGlvbnM9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLmhhc1RyYW5zaXRpb249ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5pbXBsZW1lbnRhdGlvbi5vbkFkZCYmdGhpcy5pbXBsZW1lbnRhdGlvbi5vbkFkZCh0LHQucGFpbnRlci5jb250ZXh0LmdsKX0sZS5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24odCl7dGhpcy5pbXBsZW1lbnRhdGlvbi5vblJlbW92ZSYmdGhpcy5pbXBsZW1lbnRhdGlvbi5vblJlbW92ZSh0LHQucGFpbnRlci5jb250ZXh0LmdsKX0sZX0oWW4pLFVzPXtjaXJjbGU6TWksaGVhdG1hcDpEaSxoaWxsc2hhZGU6RmksZmlsbDpUbywiZmlsbC1leHRydXNpb24iOlVvLGxpbmU6JG8sc3ltYm9sOlJzLGJhY2tncm91bmQ6QnMscmFzdGVyOmpzfTtmdW5jdGlvbiBxcyh0KXtmb3IodmFyIGU9MCxyPTAsbj0wLGE9dDtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl07ZSs9aS53KmkuaCxyPU1hdGgubWF4KHIsaS53KX10LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5oLXQuaH0pO2Zvcih2YXIgbz1be3g6MCx5OjAsdzpNYXRoLm1heChNYXRoLmNlaWwoTWF0aC5zcXJ0KGUvLjk1KSksciksaDoxLzB9XSxzPTAsbD0wLGM9MCx1PXQ7Yzx1Lmxlbmd0aDtjKz0xKWZvcih2YXIgaD11W2NdLGY9by5sZW5ndGgtMTtmPj0wO2YtLSl7dmFyIHA9b1tmXTtpZighKGgudz5wLnd8fGguaD5wLmgpKXtpZihoLng9cC54LGgueT1wLnksbD1NYXRoLm1heChsLGgueStoLmgpLHM9TWF0aC5tYXgocyxoLngraC53KSxoLnc9PT1wLncmJmguaD09PXAuaCl7dmFyIGQ9by5wb3AoKTtmPG8ubGVuZ3RoJiYob1tmXT1kKX1lbHNlIGguaD09PXAuaD8ocC54Kz1oLncscC53LT1oLncpOmgudz09PXAudz8ocC55Kz1oLmgscC5oLT1oLmgpOihvLnB1c2goe3g6cC54K2gudyx5OnAueSx3OnAudy1oLncsaDpoLmh9KSxwLnkrPWguaCxwLmgtPWguaCk7YnJlYWt9fXJldHVybnt3OnMsaDpsLGZpbGw6ZS8ocypsKXx8MH19dmFyIEhzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5waXhlbFJhdGlvLG49ZS52ZXJzaW9uO3RoaXMucGFkZGVkUmVjdD10LHRoaXMucGl4ZWxSYXRpbz1yLHRoaXMudmVyc2lvbj1ufSxHcz17dGw6e2NvbmZpZ3VyYWJsZTohMH0sYnI6e2NvbmZpZ3VyYWJsZTohMH0sdGxicjp7Y29uZmlndXJhYmxlOiEwfSxkaXNwbGF5U2l6ZTp7Y29uZmlndXJhYmxlOiEwfX07R3MudGwuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMucGFkZGVkUmVjdC54KzEsdGhpcy5wYWRkZWRSZWN0LnkrMV19LEdzLmJyLmdldD1mdW5jdGlvbigpe3JldHVyblt0aGlzLnBhZGRlZFJlY3QueCt0aGlzLnBhZGRlZFJlY3Qudy0xLHRoaXMucGFkZGVkUmVjdC55K3RoaXMucGFkZGVkUmVjdC5oLTFdfSxHcy50bGJyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRsLmNvbmNhdCh0aGlzLmJyKX0sR3MuZGlzcGxheVNpemUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuWyh0aGlzLnBhZGRlZFJlY3Qudy0yKS90aGlzLnBpeGVsUmF0aW8sKHRoaXMucGFkZGVkUmVjdC5oLTIpL3RoaXMucGl4ZWxSYXRpb119LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEhzLnByb3RvdHlwZSxHcyk7dmFyIFlzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e30sbj17fTt0aGlzLmhhdmVSZW5kZXJDYWxsYmFja3M9W107dmFyIGE9W107dGhpcy5hZGRJbWFnZXModCxyLGEpLHRoaXMuYWRkSW1hZ2VzKGUsbixhKTt2YXIgaT1xcyhhKSxvPWkudyxzPWkuaCxsPW5ldyBPaSh7d2lkdGg6b3x8MSxoZWlnaHQ6c3x8MX0pO2Zvcih2YXIgYyBpbiB0KXt2YXIgdT10W2NdLGg9cltjXS5wYWRkZWRSZWN0O09pLmNvcHkodS5kYXRhLGwse3g6MCx5OjB9LHt4OmgueCsxLHk6aC55KzF9LHUuZGF0YSl9Zm9yKHZhciBmIGluIGUpe3ZhciBwPWVbZl0sZD1uW2ZdLnBhZGRlZFJlY3QsZz1kLngrMSx2PWQueSsxLG09cC5kYXRhLndpZHRoLHk9cC5kYXRhLmhlaWdodDtPaS5jb3B5KHAuZGF0YSxsLHt4OjAseTowfSx7eDpnLHk6dn0scC5kYXRhKSxPaS5jb3B5KHAuZGF0YSxsLHt4OjAseTp5LTF9LHt4OmcseTp2LTF9LHt3aWR0aDptLGhlaWdodDoxfSksT2kuY29weShwLmRhdGEsbCx7eDowLHk6MH0se3g6Zyx5OnYreX0se3dpZHRoOm0saGVpZ2h0OjF9KSxPaS5jb3B5KHAuZGF0YSxsLHt4Om0tMSx5OjB9LHt4OmctMSx5OnZ9LHt3aWR0aDoxLGhlaWdodDp5fSksT2kuY29weShwLmRhdGEsbCx7eDowLHk6MH0se3g6ZyttLHk6dn0se3dpZHRoOjEsaGVpZ2h0Onl9KX10aGlzLmltYWdlPWwsdGhpcy5pY29uUG9zaXRpb25zPXIsdGhpcy5wYXR0ZXJuUG9zaXRpb25zPW59O1lzLnByb3RvdHlwZS5hZGRJbWFnZXM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbiBpbiB0KXt2YXIgYT10W25dLGk9e3g6MCx5OjAsdzphLmRhdGEud2lkdGgrMixoOmEuZGF0YS5oZWlnaHQrMn07ci5wdXNoKGkpLGVbbl09bmV3IEhzKGksYSksYS5oYXNSZW5kZXJDYWxsYmFjayYmdGhpcy5oYXZlUmVuZGVyQ2FsbGJhY2tzLnB1c2gobil9fSxZcy5wcm90b3R5cGUucGF0Y2hVcGRhdGVkSW1hZ2VzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIHQuZGlzcGF0Y2hSZW5kZXJDYWxsYmFja3ModGhpcy5oYXZlUmVuZGVyQ2FsbGJhY2tzKSx0LnVwZGF0ZWRJbWFnZXMpdGhpcy5wYXRjaFVwZGF0ZWRJbWFnZSh0aGlzLmljb25Qb3NpdGlvbnNbcl0sdC5nZXRJbWFnZShyKSxlKSx0aGlzLnBhdGNoVXBkYXRlZEltYWdlKHRoaXMucGF0dGVyblBvc2l0aW9uc1tyXSx0LmdldEltYWdlKHIpLGUpfSxZcy5wcm90b3R5cGUucGF0Y2hVcGRhdGVkSW1hZ2U9ZnVuY3Rpb24odCxlLHIpe2lmKHQmJmUmJnQudmVyc2lvbiE9PWUudmVyc2lvbil7dC52ZXJzaW9uPWUudmVyc2lvbjt2YXIgbj10LnRsLGE9blswXSxpPW5bMV07ci51cGRhdGUoZS5kYXRhLHZvaWQgMCx7eDphLHk6aX0pfX0sZG4oIkltYWdlUG9zaXRpb24iLEhzKSxkbigiSW1hZ2VBdGxhcyIsWXMpO3ZhciBXcz1zZWxmLkhUTUxJbWFnZUVsZW1lbnQsWHM9c2VsZi5IVE1MQ2FudmFzRWxlbWVudCxacz1zZWxmLkhUTUxWaWRlb0VsZW1lbnQsSnM9c2VsZi5JbWFnZURhdGEsS3M9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5jb250ZXh0PXQsdGhpcy5mb3JtYXQ9cix0aGlzLnRleHR1cmU9dC5nbC5jcmVhdGVUZXh0dXJlKCksdGhpcy51cGRhdGUoZSxuKX07S3MucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49dC53aWR0aCxhPXQuaGVpZ2h0LGk9ISh0aGlzLnNpemUmJnRoaXMuc2l6ZVswXT09PW4mJnRoaXMuc2l6ZVsxXT09PWF8fHIpLG89dGhpcy5jb250ZXh0LHM9by5nbDtpZih0aGlzLnVzZU1pcG1hcD1Cb29sZWFuKGUmJmUudXNlTWlwbWFwKSxzLmJpbmRUZXh0dXJlKHMuVEVYVFVSRV8yRCx0aGlzLnRleHR1cmUpLG8ucGl4ZWxTdG9yZVVucGFja0ZsaXBZLnNldCghMSksby5waXhlbFN0b3JlVW5wYWNrLnNldCgxKSxvLnBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhLnNldCh0aGlzLmZvcm1hdD09PXMuUkdCQSYmKCFlfHwhMSE9PWUucHJlbXVsdGlwbHkpKSxpKXRoaXMuc2l6ZT1bbixhXSx0IGluc3RhbmNlb2YgV3N8fHQgaW5zdGFuY2VvZiBYc3x8dCBpbnN0YW5jZW9mIFpzfHx0IGluc3RhbmNlb2YgSnM/cy50ZXhJbWFnZTJEKHMuVEVYVFVSRV8yRCwwLHRoaXMuZm9ybWF0LHRoaXMuZm9ybWF0LHMuVU5TSUdORURfQllURSx0KTpzLnRleEltYWdlMkQocy5URVhUVVJFXzJELDAsdGhpcy5mb3JtYXQsbixhLDAsdGhpcy5mb3JtYXQscy5VTlNJR05FRF9CWVRFLHQuZGF0YSk7ZWxzZXt2YXIgbD1yfHx7eDowLHk6MH0sYz1sLngsdT1sLnk7dCBpbnN0YW5jZW9mIFdzfHx0IGluc3RhbmNlb2YgWHN8fHQgaW5zdGFuY2VvZiBac3x8dCBpbnN0YW5jZW9mIEpzP3MudGV4U3ViSW1hZ2UyRChzLlRFWFRVUkVfMkQsMCxjLHUscy5SR0JBLHMuVU5TSUdORURfQllURSx0KTpzLnRleFN1YkltYWdlMkQocy5URVhUVVJFXzJELDAsYyx1LG4sYSxzLlJHQkEscy5VTlNJR05FRF9CWVRFLHQuZGF0YSl9dGhpcy51c2VNaXBtYXAmJnRoaXMuaXNTaXplUG93ZXJPZlR3bygpJiZzLmdlbmVyYXRlTWlwbWFwKHMuVEVYVFVSRV8yRCl9LEtzLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLmNvbnRleHQuZ2w7bi5iaW5kVGV4dHVyZShuLlRFWFRVUkVfMkQsdGhpcy50ZXh0dXJlKSxyIT09bi5MSU5FQVJfTUlQTUFQX05FQVJFU1R8fHRoaXMuaXNTaXplUG93ZXJPZlR3bygpfHwocj1uLkxJTkVBUiksdCE9PXRoaXMuZmlsdGVyJiYobi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxuLlRFWFRVUkVfTUFHX0ZJTFRFUix0KSxuLnRleFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9NSU5fRklMVEVSLHJ8fHQpLHRoaXMuZmlsdGVyPXQpLGUhPT10aGlzLndyYXAmJihuLnRleFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9XUkFQX1MsZSksbi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxuLlRFWFRVUkVfV1JBUF9ULGUpLHRoaXMud3JhcD1lKX0sS3MucHJvdG90eXBlLmlzU2l6ZVBvd2VyT2ZUd289ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXplWzBdPT09dGhpcy5zaXplWzFdJiZNYXRoLmxvZyh0aGlzLnNpemVbMF0pL01hdGguTE4yJTE9PTB9LEtzLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5jb250ZXh0LmdsLmRlbGV0ZVRleHR1cmUodGhpcy50ZXh0dXJlKSx0aGlzLnRleHR1cmU9bnVsbH07dmFyIFFzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGksbyxzPTgqYS1uLTEsbD0oMTw8cyktMSxjPWw+PjEsdT0tNyxoPXI/YS0xOjAsZj1yPy0xOjEscD10W2UraF07Zm9yKGgrPWYsaT1wJigxPDwtdSktMSxwPj49LXUsdSs9czt1PjA7aT0yNTYqaSt0W2UraF0saCs9Zix1LT04KTtmb3Iobz1pJigxPDwtdSktMSxpPj49LXUsdSs9bjt1PjA7bz0yNTYqbyt0W2UraF0saCs9Zix1LT04KTtpZigwPT09aSlpPTEtYztlbHNle2lmKGk9PT1sKXJldHVybiBvP05hTjoxLzAqKHA/LTE6MSk7bys9TWF0aC5wb3coMixuKSxpLT1jfXJldHVybihwPy0xOjEpKm8qTWF0aC5wb3coMixpLW4pfSwkcz1mdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG8scyxsLGM9OCppLWEtMSx1PSgxPDxjKS0xLGg9dT4+MSxmPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLGc9ZTwwfHwwPT09ZSYmMS9lPDA/MTowO2ZvcihlPU1hdGguYWJzKGUpLGlzTmFOKGUpfHxlPT09MS8wPyhzPWlzTmFOKGUpPzE6MCxvPXUpOihvPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpLGUqKGw9TWF0aC5wb3coMiwtbykpPDEmJihvLS0sbCo9MiksKGUrPW8raD49MT9mL2w6ZipNYXRoLnBvdygyLDEtaCkpKmw+PTImJihvKyssbC89MiksbytoPj11PyhzPTAsbz11KTpvK2g+PTE/KHM9KGUqbC0xKSpNYXRoLnBvdygyLGEpLG8rPWgpOihzPWUqTWF0aC5wb3coMixoLTEpKk1hdGgucG93KDIsYSksbz0wKSk7YT49ODt0W3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9yKG89bzw8YXxzLGMrPWE7Yz4wO3RbcitwXT0yNTUmbyxwKz1kLG8vPTI1NixjLT04KTt0W3IrcC1kXXw9MTI4Kmd9LHRsPWVsO2Z1bmN0aW9uIGVsKHQpe3RoaXMuYnVmPUFycmF5QnVmZmVyLmlzVmlldyYmQXJyYXlCdWZmZXIuaXNWaWV3KHQpP3Q6bmV3IFVpbnQ4QXJyYXkodHx8MCksdGhpcy5wb3M9MCx0aGlzLnR5cGU9MCx0aGlzLmxlbmd0aD10aGlzLmJ1Zi5sZW5ndGh9ZnVuY3Rpb24gcmwodCl7cmV0dXJuIHQudHlwZT09PWVsLkJ5dGVzP3QucmVhZFZhcmludCgpK3QucG9zOnQucG9zKzF9ZnVuY3Rpb24gbmwodCxlLHIpe3JldHVybiByPzQyOTQ5NjcyOTYqZSsodD4+PjApOjQyOTQ5NjcyOTYqKGU+Pj4wKSsodD4+PjApfWZ1bmN0aW9uIGFsKHQsZSxyKXt2YXIgbj1lPD0xNjM4Mz8xOmU8PTIwOTcxNTE/MjplPD0yNjg0MzU0NTU/MzpNYXRoLmZsb29yKE1hdGgubG9nKGUpLyg3Kk1hdGguTE4yKSk7ci5yZWFsbG9jKG4pO2Zvcih2YXIgYT1yLnBvcy0xO2E+PXQ7YS0tKXIuYnVmW2Erbl09ci5idWZbYV19ZnVuY3Rpb24gaWwodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlVmFyaW50KHRbcl0pfWZ1bmN0aW9uIG9sKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZVNWYXJpbnQodFtyXSl9ZnVuY3Rpb24gc2wodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRmxvYXQodFtyXSl9ZnVuY3Rpb24gbGwodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRG91YmxlKHRbcl0pfWZ1bmN0aW9uIGNsKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZUJvb2xlYW4odFtyXSl9ZnVuY3Rpb24gdWwodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRml4ZWQzMih0W3JdKX1mdW5jdGlvbiBobCh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWUud3JpdGVTRml4ZWQzMih0W3JdKX1mdW5jdGlvbiBmbCh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWUud3JpdGVGaXhlZDY0KHRbcl0pfWZ1bmN0aW9uIHBsKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZVNGaXhlZDY0KHRbcl0pfWZ1bmN0aW9uIGRsKHQsZSl7cmV0dXJuKHRbZV18dFtlKzFdPDw4fHRbZSsyXTw8MTYpKzE2Nzc3MjE2KnRbZSszXX1mdW5jdGlvbiBnbCh0LGUscil7dFtyXT1lLHRbcisxXT1lPj4+OCx0W3IrMl09ZT4+PjE2LHRbciszXT1lPj4+MjR9ZnVuY3Rpb24gdmwodCxlKXtyZXR1cm4odFtlXXx0W2UrMV08PDh8dFtlKzJdPDwxNikrKHRbZSszXTw8MjQpfWVsLlZhcmludD0wLGVsLkZpeGVkNjQ9MSxlbC5CeXRlcz0yLGVsLkZpeGVkMzI9NSxlbC5wcm90b3R5cGU9e2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmJ1Zj1udWxsfSxyZWFkRmllbGRzOmZ1bmN0aW9uKHQsZSxyKXtmb3Iocj1yfHx0aGlzLmxlbmd0aDt0aGlzLnBvczxyOyl7dmFyIG49dGhpcy5yZWFkVmFyaW50KCksYT1uPj4zLGk9dGhpcy5wb3M7dGhpcy50eXBlPTcmbix0KGEsZSx0aGlzKSx0aGlzLnBvcz09PWkmJnRoaXMuc2tpcChuKX1yZXR1cm4gZX0scmVhZE1lc3NhZ2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZWFkRmllbGRzKHQsZSx0aGlzLnJlYWRWYXJpbnQoKSt0aGlzLnBvcyl9LHJlYWRGaXhlZDMyOmZ1bmN0aW9uKCl7dmFyIHQ9ZGwodGhpcy5idWYsdGhpcy5wb3MpO3JldHVybiB0aGlzLnBvcys9NCx0fSxyZWFkU0ZpeGVkMzI6ZnVuY3Rpb24oKXt2YXIgdD12bCh0aGlzLmJ1Zix0aGlzLnBvcyk7cmV0dXJuIHRoaXMucG9zKz00LHR9LHJlYWRGaXhlZDY0OmZ1bmN0aW9uKCl7dmFyIHQ9ZGwodGhpcy5idWYsdGhpcy5wb3MpKzQyOTQ5NjcyOTYqZGwodGhpcy5idWYsdGhpcy5wb3MrNCk7cmV0dXJuIHRoaXMucG9zKz04LHR9LHJlYWRTRml4ZWQ2NDpmdW5jdGlvbigpe3ZhciB0PWRsKHRoaXMuYnVmLHRoaXMucG9zKSs0Mjk0OTY3Mjk2KnZsKHRoaXMuYnVmLHRoaXMucG9zKzQpO3JldHVybiB0aGlzLnBvcys9OCx0fSxyZWFkRmxvYXQ6ZnVuY3Rpb24oKXt2YXIgdD1Rcyh0aGlzLmJ1Zix0aGlzLnBvcywhMCwyMyw0KTtyZXR1cm4gdGhpcy5wb3MrPTQsdH0scmVhZERvdWJsZTpmdW5jdGlvbigpe3ZhciB0PVFzKHRoaXMuYnVmLHRoaXMucG9zLCEwLDUyLDgpO3JldHVybiB0aGlzLnBvcys9OCx0fSxyZWFkVmFyaW50OmZ1bmN0aW9uKHQpe3ZhciBlLHIsbj10aGlzLmJ1ZjtyZXR1cm4gZT0xMjcmKHI9blt0aGlzLnBvcysrXSkscjwxMjg/ZTooZXw9KDEyNyYocj1uW3RoaXMucG9zKytdKSk8PDcscjwxMjg/ZTooZXw9KDEyNyYocj1uW3RoaXMucG9zKytdKSk8PDE0LHI8MTI4P2U6KGV8PSgxMjcmKHI9blt0aGlzLnBvcysrXSkpPDwyMSxyPDEyOD9lOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGk9ci5idWY7aWYobj0oMTEyJihhPWlbci5wb3MrK10pKT4+NCxhPDEyOClyZXR1cm4gbmwodCxuLGUpO2lmKG58PSgxMjcmKGE9aVtyLnBvcysrXSkpPDwzLGE8MTI4KXJldHVybiBubCh0LG4sZSk7aWYobnw9KDEyNyYoYT1pW3IucG9zKytdKSk8PDEwLGE8MTI4KXJldHVybiBubCh0LG4sZSk7aWYobnw9KDEyNyYoYT1pW3IucG9zKytdKSk8PDE3LGE8MTI4KXJldHVybiBubCh0LG4sZSk7aWYobnw9KDEyNyYoYT1pW3IucG9zKytdKSk8PDI0LGE8MTI4KXJldHVybiBubCh0LG4sZSk7aWYobnw9KDEmKGE9aVtyLnBvcysrXSkpPDwzMSxhPDEyOClyZXR1cm4gbmwodCxuLGUpO3Rocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdmFyaW50IG5vdCBtb3JlIHRoYW4gMTAgYnl0ZXMiKX0oZXw9KDE1JihyPW5bdGhpcy5wb3NdKSk8PDI4LHQsdGhpcykpKSl9LHJlYWRWYXJpbnQ2NDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRWYXJpbnQoITApfSxyZWFkU1ZhcmludDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucmVhZFZhcmludCgpO3JldHVybiB0JTI9PTE/KHQrMSkvLTI6dC8yfSxyZWFkQm9vbGVhbjpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMucmVhZFZhcmludCgpKX0scmVhZFN0cmluZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zLGU9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0iIixhPWU7YTxyOyl7dmFyIGksbyxzLGw9dFthXSxjPW51bGwsdT1sPjIzOT80Omw+MjIzPzM6bD4xOTE/MjoxO2lmKGErdT5yKWJyZWFrOzE9PT11P2w8MTI4JiYoYz1sKToyPT09dT8xMjg9PSgxOTImKGk9dFthKzFdKSkmJihjPSgzMSZsKTw8Nnw2MyZpKTw9MTI3JiYoYz1udWxsKTozPT09dT8oaT10W2ErMV0sbz10W2ErMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJigoYz0oMTUmbCk8PDEyfCg2MyZpKTw8Nnw2MyZvKTw9MjA0N3x8Yz49NTUyOTYmJmM8PTU3MzQzKSYmKGM9bnVsbCkpOjQ9PT11JiYoaT10W2ErMV0sbz10W2ErMl0scz10W2ErM10sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJjEyOD09KDE5MiZzKSYmKChjPSgxNSZsKTw8MTh8KDYzJmkpPDwxMnwoNjMmbyk8PDZ8NjMmcyk8PTY1NTM1fHxjPj0xMTE0MTEyKSYmKGM9bnVsbCkpLG51bGw9PT1jPyhjPTY1NTMzLHU9MSk6Yz42NTUzNSYmKGMtPTY1NTM2LG4rPVN0cmluZy5mcm9tQ2hhckNvZGUoYz4+PjEwJjEwMjN8NTUyOTYpLGM9NTYzMjB8MTAyMyZjKSxuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpLGErPXV9cmV0dXJuIG59KHRoaXMuYnVmLHRoaXMucG9zLHQpO3JldHVybiB0aGlzLnBvcz10LGV9LHJlYWRCeXRlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zLGU9dGhpcy5idWYuc3ViYXJyYXkodGhpcy5wb3MsdCk7cmV0dXJuIHRoaXMucG9zPXQsZX0scmVhZFBhY2tlZFZhcmludDpmdW5jdGlvbih0LGUpe2lmKHRoaXMudHlwZSE9PWVsLkJ5dGVzKXJldHVybiB0LnB1c2godGhpcy5yZWFkVmFyaW50KGUpKTt2YXIgcj1ybCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxyOyl0LnB1c2godGhpcy5yZWFkVmFyaW50KGUpKTtyZXR1cm4gdH0scmVhZFBhY2tlZFNWYXJpbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy50eXBlIT09ZWwuQnl0ZXMpcmV0dXJuIHQucHVzaCh0aGlzLnJlYWRTVmFyaW50KCkpO3ZhciBlPXJsKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWRTVmFyaW50KCkpO3JldHVybiB0fSxyZWFkUGFja2VkQm9vbGVhbjpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1lbC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZEJvb2xlYW4oKSk7dmFyIGU9cmwodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZEJvb2xlYW4oKSk7cmV0dXJuIHR9LHJlYWRQYWNrZWRGbG9hdDpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1lbC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZEZsb2F0KCkpO3ZhciBlPXJsKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWRGbG9hdCgpKTtyZXR1cm4gdH0scmVhZFBhY2tlZERvdWJsZTpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1lbC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZERvdWJsZSgpKTt2YXIgZT1ybCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkRG91YmxlKCkpO3JldHVybiB0fSxyZWFkUGFja2VkRml4ZWQzMjpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1lbC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZEZpeGVkMzIoKSk7dmFyIGU9cmwodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZEZpeGVkMzIoKSk7cmV0dXJuIHR9LHJlYWRQYWNrZWRTRml4ZWQzMjpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1lbC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZFNGaXhlZDMyKCkpO3ZhciBlPXJsKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWRTRml4ZWQzMigpKTtyZXR1cm4gdH0scmVhZFBhY2tlZEZpeGVkNjQ6ZnVuY3Rpb24odCl7aWYodGhpcy50eXBlIT09ZWwuQnl0ZXMpcmV0dXJuIHQucHVzaCh0aGlzLnJlYWRGaXhlZDY0KCkpO3ZhciBlPXJsKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWRGaXhlZDY0KCkpO3JldHVybiB0fSxyZWFkUGFja2VkU0ZpeGVkNjQ6ZnVuY3Rpb24odCl7aWYodGhpcy50eXBlIT09ZWwuQnl0ZXMpcmV0dXJuIHQucHVzaCh0aGlzLnJlYWRTRml4ZWQ2NCgpKTt2YXIgZT1ybCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkU0ZpeGVkNjQoKSk7cmV0dXJuIHR9LHNraXA6ZnVuY3Rpb24odCl7dmFyIGU9NyZ0O2lmKGU9PT1lbC5WYXJpbnQpZm9yKDt0aGlzLmJ1Zlt0aGlzLnBvcysrXT4xMjc7KTtlbHNlIGlmKGU9PT1lbC5CeXRlcyl0aGlzLnBvcz10aGlzLnJlYWRWYXJpbnQoKSt0aGlzLnBvcztlbHNlIGlmKGU9PT1lbC5GaXhlZDMyKXRoaXMucG9zKz00O2Vsc2V7aWYoZSE9PWVsLkZpeGVkNjQpdGhyb3cgbmV3IEVycm9yKCJVbmltcGxlbWVudGVkIHR5cGU6ICIrZSk7dGhpcy5wb3MrPTh9fSx3cml0ZVRhZzpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVWYXJpbnQodDw8M3xlKX0scmVhbGxvYzpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5sZW5ndGh8fDE2O2U8dGhpcy5wb3MrdDspZSo9MjtpZihlIT09dGhpcy5sZW5ndGgpe3ZhciByPW5ldyBVaW50OEFycmF5KGUpO3Iuc2V0KHRoaXMuYnVmKSx0aGlzLmJ1Zj1yLHRoaXMubGVuZ3RoPWV9fSxmaW5pc2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGg9dGhpcy5wb3MsdGhpcy5wb3M9MCx0aGlzLmJ1Zi5zdWJhcnJheSgwLHRoaXMubGVuZ3RoKX0sd3JpdGVGaXhlZDMyOmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg0KSxnbCh0aGlzLmJ1Zix0LHRoaXMucG9zKSx0aGlzLnBvcys9NH0sd3JpdGVTRml4ZWQzMjpmdW5jdGlvbih0KXt0aGlzLnJlYWxsb2MoNCksZ2wodGhpcy5idWYsdCx0aGlzLnBvcyksdGhpcy5wb3MrPTR9LHdyaXRlRml4ZWQ2NDpmdW5jdGlvbih0KXt0aGlzLnJlYWxsb2MoOCksZ2wodGhpcy5idWYsLTEmdCx0aGlzLnBvcyksZ2wodGhpcy5idWYsTWF0aC5mbG9vcih0KigxLzQyOTQ5NjcyOTYpKSx0aGlzLnBvcys0KSx0aGlzLnBvcys9OH0sd3JpdGVTRml4ZWQ2NDpmdW5jdGlvbih0KXt0aGlzLnJlYWxsb2MoOCksZ2wodGhpcy5idWYsLTEmdCx0aGlzLnBvcyksZ2wodGhpcy5idWYsTWF0aC5mbG9vcih0KigxLzQyOTQ5NjcyOTYpKSx0aGlzLnBvcys0KSx0aGlzLnBvcys9OH0sd3JpdGVWYXJpbnQ6ZnVuY3Rpb24odCl7KHQ9K3R8fDApPjI2ODQzNTQ1NXx8dDwwP2Z1bmN0aW9uKHQsZSl7dmFyIHIsbjtpZih0Pj0wPyhyPXQlNDI5NDk2NzI5NnwwLG49dC80Mjk0OTY3Mjk2fDApOihuPX4oLXQvNDI5NDk2NzI5NiksNDI5NDk2NzI5NV4ocj1+KC10JTQyOTQ5NjcyOTYpKT9yPXIrMXwwOihyPTAsbj1uKzF8MCkpLHQ+PTB4MTAwMDAwMDAwMDAwMDAwMDB8fHQ8LTB4MTAwMDAwMDAwMDAwMDAwMDApdGhyb3cgbmV3IEVycm9yKCJHaXZlbiB2YXJpbnQgZG9lc24ndCBmaXQgaW50byAxMCBieXRlcyIpO2UucmVhbGxvYygxMCksZnVuY3Rpb24odCxlLHIpe3IuYnVmW3IucG9zKytdPTEyNyZ0fDEyOCx0Pj4+PTcsci5idWZbci5wb3MrK109MTI3JnR8MTI4LHQ+Pj49NyxyLmJ1ZltyLnBvcysrXT0xMjcmdHwxMjgsdD4+Pj03LHIuYnVmW3IucG9zKytdPTEyNyZ0fDEyOCx0Pj4+PTcsci5idWZbci5wb3NdPTEyNyZ0fShyLDAsZSksZnVuY3Rpb24odCxlKXt2YXIgcj0oNyZ0KTw8NDtlLmJ1ZltlLnBvcysrXXw9cnwoKHQ+Pj49Myk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdCkpKSkpfShuLGUpfSh0LHRoaXMpOih0aGlzLnJlYWxsb2MoNCksdGhpcy5idWZbdGhpcy5wb3MrK109MTI3JnR8KHQ+MTI3PzEyODowKSx0PD0xMjd8fCh0aGlzLmJ1Zlt0aGlzLnBvcysrXT0xMjcmKHQ+Pj49Nyl8KHQ+MTI3PzEyODowKSx0PD0xMjd8fCh0aGlzLmJ1Zlt0aGlzLnBvcysrXT0xMjcmKHQ+Pj49Nyl8KHQ+MTI3PzEyODowKSx0PD0xMjd8fCh0aGlzLmJ1Zlt0aGlzLnBvcysrXT10Pj4+NyYxMjcpKSkpfSx3cml0ZVNWYXJpbnQ6ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZhcmludCh0PDA/MiotdC0xOjIqdCl9LHdyaXRlQm9vbGVhbjpmdW5jdGlvbih0KXt0aGlzLndyaXRlVmFyaW50KEJvb2xlYW4odCkpfSx3cml0ZVN0cmluZzpmdW5jdGlvbih0KXt0PVN0cmluZyh0KSx0aGlzLnJlYWxsb2MoNCp0Lmxlbmd0aCksdGhpcy5wb3MrKzt2YXIgZT10aGlzLnBvczt0aGlzLnBvcz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuLGEsaT0wO2k8ZS5sZW5ndGg7aSsrKXtpZigobj1lLmNoYXJDb2RlQXQoaSkpPjU1Mjk1JiZuPDU3MzQ0KXtpZighYSl7bj41NjMxOXx8aSsxPT09ZS5sZW5ndGg/KHRbcisrXT0yMzksdFtyKytdPTE5MSx0W3IrK109MTg5KTphPW47Y29udGludWV9aWYobjw1NjMyMCl7dFtyKytdPTIzOSx0W3IrK109MTkxLHRbcisrXT0xODksYT1uO2NvbnRpbnVlfW49YS01NTI5Njw8MTB8bi01NjMyMHw2NTUzNixhPW51bGx9ZWxzZSBhJiYodFtyKytdPTIzOSx0W3IrK109MTkxLHRbcisrXT0xODksYT1udWxsKTtuPDEyOD90W3IrK109bjoobjwyMDQ4P3RbcisrXT1uPj42fDE5Mjoobjw2NTUzNj90W3IrK109bj4+MTJ8MjI0Oih0W3IrK109bj4+MTh8MjQwLHRbcisrXT1uPj4xMiY2M3wxMjgpLHRbcisrXT1uPj42JjYzfDEyOCksdFtyKytdPTYzJm58MTI4KX1yZXR1cm4gcn0odGhpcy5idWYsdCx0aGlzLnBvcyk7dmFyIHI9dGhpcy5wb3MtZTtyPj0xMjgmJmFsKGUscix0aGlzKSx0aGlzLnBvcz1lLTEsdGhpcy53cml0ZVZhcmludChyKSx0aGlzLnBvcys9cn0sd3JpdGVGbG9hdDpmdW5jdGlvbih0KXt0aGlzLnJlYWxsb2MoNCksJHModGhpcy5idWYsdCx0aGlzLnBvcywhMCwyMyw0KSx0aGlzLnBvcys9NH0sd3JpdGVEb3VibGU6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDgpLCRzKHRoaXMuYnVmLHQsdGhpcy5wb3MsITAsNTIsOCksdGhpcy5wb3MrPTh9LHdyaXRlQnl0ZXM6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7dGhpcy53cml0ZVZhcmludChlKSx0aGlzLnJlYWxsb2MoZSk7Zm9yKHZhciByPTA7cjxlO3IrKyl0aGlzLmJ1Zlt0aGlzLnBvcysrXT10W3JdfSx3cml0ZVJhd01lc3NhZ2U6ZnVuY3Rpb24odCxlKXt0aGlzLnBvcysrO3ZhciByPXRoaXMucG9zO3QoZSx0aGlzKTt2YXIgbj10aGlzLnBvcy1yO24+PTEyOCYmYWwocixuLHRoaXMpLHRoaXMucG9zPXItMSx0aGlzLndyaXRlVmFyaW50KG4pLHRoaXMucG9zKz1ufSx3cml0ZU1lc3NhZ2U6ZnVuY3Rpb24odCxlLHIpe3RoaXMud3JpdGVUYWcodCxlbC5CeXRlcyksdGhpcy53cml0ZVJhd01lc3NhZ2UoZSxyKX0sd3JpdGVQYWNrZWRWYXJpbnQ6ZnVuY3Rpb24odCxlKXtlLmxlbmd0aCYmdGhpcy53cml0ZU1lc3NhZ2UodCxpbCxlKX0sd3JpdGVQYWNrZWRTVmFyaW50OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsb2wsZSl9LHdyaXRlUGFja2VkQm9vbGVhbjpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LGNsLGUpfSx3cml0ZVBhY2tlZEZsb2F0OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsc2wsZSl9LHdyaXRlUGFja2VkRG91YmxlOmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsbGwsZSl9LHdyaXRlUGFja2VkRml4ZWQzMjpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LHVsLGUpfSx3cml0ZVBhY2tlZFNGaXhlZDMyOmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsaGwsZSl9LHdyaXRlUGFja2VkRml4ZWQ2NDpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LGZsLGUpfSx3cml0ZVBhY2tlZFNGaXhlZDY0OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQscGwsZSl9LHdyaXRlQnl0ZXNGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWcodCxlbC5CeXRlcyksdGhpcy53cml0ZUJ5dGVzKGUpfSx3cml0ZUZpeGVkMzJGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWcodCxlbC5GaXhlZDMyKSx0aGlzLndyaXRlRml4ZWQzMihlKX0sd3JpdGVTRml4ZWQzMkZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LGVsLkZpeGVkMzIpLHRoaXMud3JpdGVTRml4ZWQzMihlKX0sd3JpdGVGaXhlZDY0RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsZWwuRml4ZWQ2NCksdGhpcy53cml0ZUZpeGVkNjQoZSl9LHdyaXRlU0ZpeGVkNjRGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWcodCxlbC5GaXhlZDY0KSx0aGlzLndyaXRlU0ZpeGVkNjQoZSl9LHdyaXRlVmFyaW50RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsZWwuVmFyaW50KSx0aGlzLndyaXRlVmFyaW50KGUpfSx3cml0ZVNWYXJpbnRGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWcodCxlbC5WYXJpbnQpLHRoaXMud3JpdGVTVmFyaW50KGUpfSx3cml0ZVN0cmluZ0ZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LGVsLkJ5dGVzKSx0aGlzLndyaXRlU3RyaW5nKGUpfSx3cml0ZUZsb2F0RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsZWwuRml4ZWQzMiksdGhpcy53cml0ZUZsb2F0KGUpfSx3cml0ZURvdWJsZUZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LGVsLkZpeGVkNjQpLHRoaXMud3JpdGVEb3VibGUoZSl9LHdyaXRlQm9vbGVhbkZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVZhcmludEZpZWxkKHQsQm9vbGVhbihlKSl9fTt2YXIgbWw9MztmdW5jdGlvbiB5bCh0LGUscil7MT09PXQmJnIucmVhZE1lc3NhZ2UoeGwsZSl9ZnVuY3Rpb24geGwodCxlLHIpe2lmKDM9PT10KXt2YXIgbj1yLnJlYWRNZXNzYWdlKGJsLHt9KSxhPW4uaWQsaT1uLmJpdG1hcCxvPW4ud2lkdGgscz1uLmhlaWdodCxsPW4ubGVmdCxjPW4udG9wLHU9bi5hZHZhbmNlO2UucHVzaCh7aWQ6YSxiaXRtYXA6bmV3IFBpKHt3aWR0aDpvKzIqbWwsaGVpZ2h0OnMrMiptbH0saSksbWV0cmljczp7d2lkdGg6byxoZWlnaHQ6cyxsZWZ0OmwsdG9wOmMsYWR2YW5jZTp1fX0pfX1mdW5jdGlvbiBibCh0LGUscil7MT09PXQ/ZS5pZD1yLnJlYWRWYXJpbnQoKToyPT09dD9lLmJpdG1hcD1yLnJlYWRCeXRlcygpOjM9PT10P2Uud2lkdGg9ci5yZWFkVmFyaW50KCk6ND09PXQ/ZS5oZWlnaHQ9ci5yZWFkVmFyaW50KCk6NT09PXQ/ZS5sZWZ0PXIucmVhZFNWYXJpbnQoKTo2PT09dD9lLnRvcD1yLnJlYWRTVmFyaW50KCk6Nz09PXQmJihlLmFkdmFuY2U9ci5yZWFkVmFyaW50KCkpfXZhciBfbD1tbCx3bD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2NhbGxiYWNrPXQsdGhpcy5fdHJpZ2dlcmVkPSExLCJ1bmRlZmluZWQiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwmJih0aGlzLl9jaGFubmVsPW5ldyBNZXNzYWdlQ2hhbm5lbCx0aGlzLl9jaGFubmVsLnBvcnQyLm9ubWVzc2FnZT1mdW5jdGlvbigpe2UuX3RyaWdnZXJlZD0hMSxlLl9jYWxsYmFjaygpfSl9O3dsLnByb3RvdHlwZS50cmlnZ2VyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl90cmlnZ2VyZWR8fCh0aGlzLl90cmlnZ2VyZWQ9ITAsdGhpcy5fY2hhbm5lbD90aGlzLl9jaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCEwKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5fdHJpZ2dlcmVkPSExLHQuX2NhbGxiYWNrKCl9LDApKX07dmFyIGtsPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnRhcmdldD10LHRoaXMucGFyZW50PWUsdGhpcy5tYXBJZD1yLHRoaXMuY2FsbGJhY2tzPXt9LHRoaXMudGFza3M9e30sdGhpcy50YXNrUXVldWU9W10sdGhpcy5jYW5jZWxDYWxsYmFja3M9e30sdihbInJlY2VpdmUiLCJwcm9jZXNzIl0sdGhpcyksdGhpcy5pbnZva2VyPW5ldyB3bCh0aGlzLnByb2Nlc3MpLHRoaXMudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMucmVjZWl2ZSwhMSl9O2Z1bmN0aW9uIFRsKHQsZSxyKXt2YXIgbj0yKk1hdGguUEkqNjM3ODEzNy8yNTYvTWF0aC5wb3coMixyKTtyZXR1cm5bdCpuLTIqTWF0aC5QSSo2Mzc4MTM3LzIsZSpuLTIqTWF0aC5QSSo2Mzc4MTM3LzJdfWtsLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMsaT1NYXRoLnJvdW5kKDFlMTgqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygwLDEwKTtyJiYodGhpcy5jYWxsYmFja3NbaV09cik7dmFyIG89W107cmV0dXJuIHRoaXMudGFyZ2V0LnBvc3RNZXNzYWdlKHtpZDppLHR5cGU6dCxoYXNDYWxsYmFjazohIXIsdGFyZ2V0TWFwSWQ6bixzb3VyY2VNYXBJZDp0aGlzLm1hcElkLGRhdGE6dm4oZSxvKX0sbykse2NhbmNlbDpmdW5jdGlvbigpe3ImJmRlbGV0ZSBhLmNhbGxiYWNrc1tpXSxhLnRhcmdldC5wb3N0TWVzc2FnZSh7aWQ6aSx0eXBlOiI8Y2FuY2VsPiIsdGFyZ2V0TWFwSWQ6bixzb3VyY2VNYXBJZDphLm1hcElkfSl9fX0sa2wucHJvdG90eXBlLnJlY2VpdmU9ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRhLHI9ZS5pZDtpZihyJiYoIWUudGFyZ2V0TWFwSWR8fHRoaXMubWFwSWQ9PT1lLnRhcmdldE1hcElkKSlpZigiPGNhbmNlbD4iPT09ZS50eXBlKXtkZWxldGUgdGhpcy50YXNrc1tyXTt2YXIgbj10aGlzLmNhbmNlbENhbGxiYWNrc1tyXTtkZWxldGUgdGhpcy5jYW5jZWxDYWxsYmFja3Nbcl0sbiYmbigpfWVsc2UgdGhpcy50YXNrc1tyXT1lLHRoaXMudGFza1F1ZXVlLnB1c2gociksdGhpcy5pbnZva2VyLnRyaWdnZXIoKX0sa2wucHJvdG90eXBlLnByb2Nlc3M9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMudGFza1F1ZXVlLmxlbmd0aCl7dmFyIGU9dGhpcy50YXNrUXVldWUuc2hpZnQoKSxyPXRoaXMudGFza3NbZV07aWYoZGVsZXRlIHRoaXMudGFza3NbZV0sdGhpcy50YXNrUXVldWUubGVuZ3RoJiZ0aGlzLmludm9rZXIudHJpZ2dlcigpLHIpaWYoIjxyZXNwb25zZT4iPT09ci50eXBlKXt2YXIgbj10aGlzLmNhbGxiYWNrc1tlXTtkZWxldGUgdGhpcy5jYWxsYmFja3NbZV0sbiYmKHIuZXJyb3I/bihtbihyLmVycm9yKSk6bihudWxsLG1uKHIuZGF0YSkpKX1lbHNle3ZhciBhPSExLGk9ci5oYXNDYWxsYmFjaz9mdW5jdGlvbihyLG4pe2E9ITAsZGVsZXRlIHQuY2FuY2VsQ2FsbGJhY2tzW2VdO3ZhciBpPVtdO3QudGFyZ2V0LnBvc3RNZXNzYWdlKHtpZDplLHR5cGU6IjxyZXNwb25zZT4iLHNvdXJjZU1hcElkOnQubWFwSWQsZXJyb3I6cj92bihyKTpudWxsLGRhdGE6dm4obixpKX0saSl9OmZ1bmN0aW9uKHQpe2E9ITB9LG89bnVsbCxzPW1uKHIuZGF0YSk7aWYodGhpcy5wYXJlbnRbci50eXBlXSlvPXRoaXMucGFyZW50W3IudHlwZV0oci5zb3VyY2VNYXBJZCxzLGkpO2Vsc2UgaWYodGhpcy5wYXJlbnQuZ2V0V29ya2VyU291cmNlKXt2YXIgbD1yLnR5cGUuc3BsaXQoIi4iKTtvPXRoaXMucGFyZW50LmdldFdvcmtlclNvdXJjZShyLnNvdXJjZU1hcElkLGxbMF0scy5zb3VyY2UpW2xbMV1dKHMsaSl9ZWxzZSBpKG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgZnVuY3Rpb24gIityLnR5cGUpKTshYSYmbyYmby5jYW5jZWwmJih0aGlzLmNhbmNlbENhbGxiYWNrc1tlXT1vLmNhbmNlbCl9fX0sa2wucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMucmVjZWl2ZSwhMSl9O3ZhciBNbD1mdW5jdGlvbih0LGUpe3QmJihlP3RoaXMuc2V0U291dGhXZXN0KHQpLnNldE5vcnRoRWFzdChlKTo0PT09dC5sZW5ndGg/dGhpcy5zZXRTb3V0aFdlc3QoW3RbMF0sdFsxXV0pLnNldE5vcnRoRWFzdChbdFsyXSx0WzNdXSk6dGhpcy5zZXRTb3V0aFdlc3QodFswXSkuc2V0Tm9ydGhFYXN0KHRbMV0pKX07TWwucHJvdG90eXBlLnNldE5vcnRoRWFzdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmU9dCBpbnN0YW5jZW9mIEFsP25ldyBBbCh0LmxuZyx0LmxhdCk6QWwuY29udmVydCh0KSx0aGlzfSxNbC5wcm90b3R5cGUuc2V0U291dGhXZXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdz10IGluc3RhbmNlb2YgQWw/bmV3IEFsKHQubG5nLHQubGF0KTpBbC5jb252ZXJ0KHQpLHRoaXN9LE1sLnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24odCl7dmFyIGUscixuPXRoaXMuX3N3LGE9dGhpcy5fbmU7aWYodCBpbnN0YW5jZW9mIEFsKWU9dCxyPXQ7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBNbCkpcmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5ldmVyeShBcnJheS5pc0FycmF5KT90aGlzLmV4dGVuZChNbC5jb252ZXJ0KHQpKTp0aGlzLmV4dGVuZChBbC5jb252ZXJ0KHQpKTp0aGlzO2lmKGU9dC5fc3cscj10Ll9uZSwhZXx8IXIpcmV0dXJuIHRoaXN9cmV0dXJuIG58fGE/KG4ubG5nPU1hdGgubWluKGUubG5nLG4ubG5nKSxuLmxhdD1NYXRoLm1pbihlLmxhdCxuLmxhdCksYS5sbmc9TWF0aC5tYXgoci5sbmcsYS5sbmcpLGEubGF0PU1hdGgubWF4KHIubGF0LGEubGF0KSk6KHRoaXMuX3N3PW5ldyBBbChlLmxuZyxlLmxhdCksdGhpcy5fbmU9bmV3IEFsKHIubG5nLHIubGF0KSksdGhpc30sTWwucHJvdG90eXBlLmdldENlbnRlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgQWwoKHRoaXMuX3N3LmxuZyt0aGlzLl9uZS5sbmcpLzIsKHRoaXMuX3N3LmxhdCt0aGlzLl9uZS5sYXQpLzIpfSxNbC5wcm90b3R5cGUuZ2V0U291dGhXZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N3fSxNbC5wcm90b3R5cGUuZ2V0Tm9ydGhFYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25lfSxNbC5wcm90b3R5cGUuZ2V0Tm9ydGhXZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBbCh0aGlzLmdldFdlc3QoKSx0aGlzLmdldE5vcnRoKCkpfSxNbC5wcm90b3R5cGUuZ2V0U291dGhFYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBbCh0aGlzLmdldEVhc3QoKSx0aGlzLmdldFNvdXRoKCkpfSxNbC5wcm90b3R5cGUuZ2V0V2VzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdy5sbmd9LE1sLnByb3RvdHlwZS5nZXRTb3V0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdy5sYXR9LE1sLnByb3RvdHlwZS5nZXRFYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25lLmxuZ30sTWwucHJvdG90eXBlLmdldE5vcnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25lLmxhdH0sTWwucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5fc3cudG9BcnJheSgpLHRoaXMuX25lLnRvQXJyYXkoKV19LE1sLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJMbmdMYXRCb3VuZHMoIit0aGlzLl9zdy50b1N0cmluZygpKyIsICIrdGhpcy5fbmUudG9TdHJpbmcoKSsiKSJ9LE1sLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuISh0aGlzLl9zdyYmdGhpcy5fbmUpfSxNbC5jb252ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiF0fHx0IGluc3RhbmNlb2YgTWw/dDpuZXcgTWwodCl9O3ZhciBBbD1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgTG5nTGF0IG9iamVjdDogKCIrdCsiLCAiK2UrIikiKTtpZih0aGlzLmxuZz0rdCx0aGlzLmxhdD0rZSx0aGlzLmxhdD45MHx8dGhpcy5sYXQ8LTkwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBMbmdMYXQgbGF0aXR1ZGUgdmFsdWU6IG11c3QgYmUgYmV0d2VlbiAtOTAgYW5kIDkwIil9O0FsLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBbCh1KHRoaXMubG5nLC0xODAsMTgwKSx0aGlzLmxhdCl9LEFsLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMubG5nLHRoaXMubGF0XX0sQWwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkxuZ0xhdCgiK3RoaXMubG5nKyIsICIrdGhpcy5sYXQrIikifSxBbC5wcm90b3R5cGUudG9Cb3VuZHM9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9MCk7dmFyIGU9MzYwKnQvNDAwNzUwMTcscj1lL01hdGguY29zKE1hdGguUEkvMTgwKnRoaXMubGF0KTtyZXR1cm4gbmV3IE1sKG5ldyBBbCh0aGlzLmxuZy1yLHRoaXMubGF0LWUpLG5ldyBBbCh0aGlzLmxuZytyLHRoaXMubGF0K2UpKX0sQWwuY29udmVydD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgQWwpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT10Lmxlbmd0aHx8Mz09PXQubGVuZ3RoKSlyZXR1cm4gbmV3IEFsKE51bWJlcih0WzBdKSxOdW1iZXIodFsxXSkpO2lmKCFBcnJheS5pc0FycmF5KHQpJiYib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10KXJldHVybiBuZXcgQWwoTnVtYmVyKCJsbmciaW4gdD90LmxuZzp0LmxvbiksTnVtYmVyKHQubGF0KSk7dGhyb3cgbmV3IEVycm9yKCJgTG5nTGF0TGlrZWAgYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBMbmdMYXQgaW5zdGFuY2UsIGFuIG9iamVjdCB7bG5nOiA8bG5nPiwgbGF0OiA8bGF0Pn0sIGFuIG9iamVjdCB7bG9uOiA8bG5nPiwgbGF0OiA8bGF0Pn0sIG9yIGFuIGFycmF5IG9mIFs8bG5nPiwgPGxhdD5dIil9O3ZhciBTbD0yKk1hdGguUEkqNjM3ODEzNztmdW5jdGlvbiBFbCh0KXtyZXR1cm4gU2wqTWF0aC5jb3ModCpNYXRoLlBJLzE4MCl9ZnVuY3Rpb24gTGwodCl7cmV0dXJuKDE4MCt0KS8zNjB9ZnVuY3Rpb24gQ2wodCl7cmV0dXJuKDE4MC0xODAvTWF0aC5QSSpNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrdCpNYXRoLlBJLzM2MCkpKS8zNjB9ZnVuY3Rpb24gUGwodCxlKXtyZXR1cm4gdC9FbChlKX1mdW5jdGlvbiBPbCh0KXt2YXIgZT0xODAtMzYwKnQ7cmV0dXJuIDM2MC9NYXRoLlBJKk1hdGguYXRhbihNYXRoLmV4cChlKk1hdGguUEkvMTgwKSktOTB9dmFyIHpsPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1yJiYocj0wKSx0aGlzLng9K3QsdGhpcy55PStlLHRoaXMuej0rcn07emwuZnJvbUxuZ0xhdD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPTApO3ZhciByPUFsLmNvbnZlcnQodCk7cmV0dXJuIG5ldyB6bChMbChyLmxuZyksQ2woci5sYXQpLFBsKGUsci5sYXQpKX0semwucHJvdG90eXBlLnRvTG5nTGF0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBbCgzNjAqdGhpcy54LTE4MCxPbCh0aGlzLnkpKX0semwucHJvdG90eXBlLnRvQWx0aXR1ZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56KkVsKE9sKHRoaXMueSkpfSx6bC5wcm90b3R5cGUubWV0ZXJJbk1lcmNhdG9yQ29vcmRpbmF0ZVVuaXRzPWZ1bmN0aW9uKCl7cmV0dXJuIDEvU2wqKHQ9T2wodGhpcy55KSwxL01hdGguY29zKHQqTWF0aC5QSS8xODApKTt2YXIgdH07dmFyIElsPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLno9dCx0aGlzLng9ZSx0aGlzLnk9cix0aGlzLmtleT1GbCgwLHQsZSxyKX07SWwucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy56PT09dC56JiZ0aGlzLng9PT10LngmJnRoaXMueT09PXQueX0sSWwucHJvdG90eXBlLnVybD1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpLG8scz0ocj10aGlzLngsbj10aGlzLnksYT10aGlzLnosaT1UbCgyNTYqciwyNTYqKG49TWF0aC5wb3coMixhKS1uLTEpLGEpLG89VGwoMjU2KihyKzEpLDI1NioobisxKSxhKSxpWzBdKyIsIitpWzFdKyIsIitvWzBdKyIsIitvWzFdKSxsPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4sYT0iIixpPXQ7aT4wO2ktLSlhKz0oZSYobj0xPDxpLTEpPzE6MCkrKHImbj8yOjApO3JldHVybiBhfSh0aGlzLnosdGhpcy54LHRoaXMueSk7cmV0dXJuIHRbKHRoaXMueCt0aGlzLnkpJXQubGVuZ3RoXS5yZXBsYWNlKCJ7cHJlZml4fSIsKHRoaXMueCUxNikudG9TdHJpbmcoMTYpKyh0aGlzLnklMTYpLnRvU3RyaW5nKDE2KSkucmVwbGFjZSgie3p9IixTdHJpbmcodGhpcy56KSkucmVwbGFjZSgie3h9IixTdHJpbmcodGhpcy54KSkucmVwbGFjZSgie3l9IixTdHJpbmcoInRtcyI9PT1lP01hdGgucG93KDIsdGhpcy56KS10aGlzLnktMTp0aGlzLnkpKS5yZXBsYWNlKCJ7cXVhZGtleX0iLGwpLnJlcGxhY2UoIntiYm94LWVwc2ctMzg1N30iLHMpfSxJbC5wcm90b3R5cGUuZ2V0VGlsZVBvaW50PWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgucG93KDIsdGhpcy56KTtyZXR1cm4gbmV3IGEoKHQueCplLXRoaXMueCkqZWksKHQueSplLXRoaXMueSkqZWkpfTt2YXIgRGw9ZnVuY3Rpb24odCxlKXt0aGlzLndyYXA9dCx0aGlzLmNhbm9uaWNhbD1lLHRoaXMua2V5PUZsKHQsZS56LGUueCxlLnkpfSxSbD1mdW5jdGlvbih0LGUscixuLGEpe3RoaXMub3ZlcnNjYWxlZFo9dCx0aGlzLndyYXA9ZSx0aGlzLmNhbm9uaWNhbD1uZXcgSWwociwrbiwrYSksdGhpcy5rZXk9RmwoZSx0LG4sYSl9O2Z1bmN0aW9uIEZsKHQsZSxyLG4peyh0Kj0yKTwwJiYodD0tMSp0LTEpO3ZhciBhPTE8PGU7cmV0dXJuIDMyKihhKmEqdCthKm4rcikrZX1SbC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm92ZXJzY2FsZWRaPT09dC5vdmVyc2NhbGVkWiYmdGhpcy53cmFwPT09dC53cmFwJiZ0aGlzLmNhbm9uaWNhbC5lcXVhbHModC5jYW5vbmljYWwpfSxSbC5wcm90b3R5cGUuc2NhbGVkVG89ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jYW5vbmljYWwuei10O3JldHVybiB0PnRoaXMuY2Fub25pY2FsLno/bmV3IFJsKHQsdGhpcy53cmFwLHRoaXMuY2Fub25pY2FsLnosdGhpcy5jYW5vbmljYWwueCx0aGlzLmNhbm9uaWNhbC55KTpuZXcgUmwodCx0aGlzLndyYXAsdCx0aGlzLmNhbm9uaWNhbC54Pj5lLHRoaXMuY2Fub25pY2FsLnk+PmUpfSxSbC5wcm90b3R5cGUuaXNDaGlsZE9mPWZ1bmN0aW9uKHQpe2lmKHQud3JhcCE9PXRoaXMud3JhcClyZXR1cm4hMTt2YXIgZT10aGlzLmNhbm9uaWNhbC56LXQuY2Fub25pY2FsLno7cmV0dXJuIDA9PT10Lm92ZXJzY2FsZWRafHx0Lm92ZXJzY2FsZWRaPHRoaXMub3ZlcnNjYWxlZFomJnQuY2Fub25pY2FsLng9PT10aGlzLmNhbm9uaWNhbC54Pj5lJiZ0LmNhbm9uaWNhbC55PT09dGhpcy5jYW5vbmljYWwueT4+ZX0sUmwucHJvdG90eXBlLmNoaWxkcmVuPWZ1bmN0aW9uKHQpe2lmKHRoaXMub3ZlcnNjYWxlZFo+PXQpcmV0dXJuW25ldyBSbCh0aGlzLm92ZXJzY2FsZWRaKzEsdGhpcy53cmFwLHRoaXMuY2Fub25pY2FsLnosdGhpcy5jYW5vbmljYWwueCx0aGlzLmNhbm9uaWNhbC55KV07dmFyIGU9dGhpcy5jYW5vbmljYWwueisxLHI9Mip0aGlzLmNhbm9uaWNhbC54LG49Mip0aGlzLmNhbm9uaWNhbC55O3JldHVybltuZXcgUmwoZSx0aGlzLndyYXAsZSxyLG4pLG5ldyBSbChlLHRoaXMud3JhcCxlLHIrMSxuKSxuZXcgUmwoZSx0aGlzLndyYXAsZSxyLG4rMSksbmV3IFJsKGUsdGhpcy53cmFwLGUscisxLG4rMSldfSxSbC5wcm90b3R5cGUuaXNMZXNzVGhhbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53cmFwPHQud3JhcHx8ISh0aGlzLndyYXA+dC53cmFwKSYmKHRoaXMub3ZlcnNjYWxlZFo8dC5vdmVyc2NhbGVkWnx8ISh0aGlzLm92ZXJzY2FsZWRaPnQub3ZlcnNjYWxlZFopJiYodGhpcy5jYW5vbmljYWwueDx0LmNhbm9uaWNhbC54fHwhKHRoaXMuY2Fub25pY2FsLng+dC5jYW5vbmljYWwueCkmJnRoaXMuY2Fub25pY2FsLnk8dC5jYW5vbmljYWwueSkpfSxSbC5wcm90b3R5cGUud3JhcHBlZD1mdW5jdGlvbigpe3JldHVybiBuZXcgUmwodGhpcy5vdmVyc2NhbGVkWiwwLHRoaXMuY2Fub25pY2FsLnosdGhpcy5jYW5vbmljYWwueCx0aGlzLmNhbm9uaWNhbC55KX0sUmwucHJvdG90eXBlLnVud3JhcFRvPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUmwodGhpcy5vdmVyc2NhbGVkWix0LHRoaXMuY2Fub25pY2FsLnosdGhpcy5jYW5vbmljYWwueCx0aGlzLmNhbm9uaWNhbC55KX0sUmwucHJvdG90eXBlLm92ZXJzY2FsZUZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiBNYXRoLnBvdygyLHRoaXMub3ZlcnNjYWxlZFotdGhpcy5jYW5vbmljYWwueil9LFJsLnByb3RvdHlwZS50b1Vud3JhcHBlZD1mdW5jdGlvbigpe3JldHVybiBuZXcgRGwodGhpcy53cmFwLHRoaXMuY2Fub25pY2FsKX0sUmwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3ZlcnNjYWxlZForIi8iK3RoaXMuY2Fub25pY2FsLngrIi8iK3RoaXMuY2Fub25pY2FsLnl9LFJsLnByb3RvdHlwZS5nZXRUaWxlUG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2Fub25pY2FsLmdldFRpbGVQb2ludChuZXcgemwodC54LXRoaXMud3JhcCx0LnkpKX0sZG4oIkNhbm9uaWNhbFRpbGVJRCIsSWwpLGRuKCJPdmVyc2NhbGVkVGlsZUlEIixSbCx7b21pdDpbInBvc01hdHJpeCJdfSk7dmFyIEJsPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLnVpZD10LGUuaGVpZ2h0IT09ZS53aWR0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiREVNIHRpbGVzIG11c3QgYmUgc3F1YXJlIik7aWYociYmIm1hcGJveCIhPT1yJiYidGVycmFyaXVtIiE9PXIpcmV0dXJuIHcoJyInK3IrJyIgaXMgbm90IGEgdmFsaWQgZW5jb2RpbmcgdHlwZS4gVmFsaWQgdHlwZXMgaW5jbHVkZSAibWFwYm94IiBhbmQgInRlcnJhcml1bSIuJyk7dmFyIG49dGhpcy5kaW09ZS5oZWlnaHQ7dGhpcy5zdHJpZGU9dGhpcy5kaW0rMix0aGlzLmRhdGE9bmV3IEludDMyQXJyYXkodGhpcy5zdHJpZGUqdGhpcy5zdHJpZGUpO2Zvcih2YXIgYT1lLmRhdGEsaT0idGVycmFyaXVtIj09PXI/dGhpcy5fdW5wYWNrVGVycmFyaXVtOnRoaXMuX3VucGFja01hcGJveCxvPTA7bzxuO28rKylmb3IodmFyIHM9MDtzPG47cysrKXt2YXIgbD00KihvKm4rcyk7dGhpcy5zZXQocyxvLGkoYVtsXSxhW2wrMV0sYVtsKzJdKSl9Zm9yKHZhciBjPTA7YzxuO2MrKyl0aGlzLnNldCgtMSxjLHRoaXMuZ2V0KDAsYykpLHRoaXMuc2V0KG4sYyx0aGlzLmdldChuLTEsYykpLHRoaXMuc2V0KGMsLTEsdGhpcy5nZXQoYywwKSksdGhpcy5zZXQoYyxuLHRoaXMuZ2V0KGMsbi0xKSk7dGhpcy5zZXQoLTEsLTEsdGhpcy5nZXQoMCwwKSksdGhpcy5zZXQobiwtMSx0aGlzLmdldChuLTEsMCkpLHRoaXMuc2V0KC0xLG4sdGhpcy5nZXQoMCxuLTEpKSx0aGlzLnNldChuLG4sdGhpcy5nZXQobi0xLG4tMSkpfTtCbC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmRhdGFbdGhpcy5faWR4KHQsZSldPXIrNjU1MzZ9LEJsLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kYXRhW3RoaXMuX2lkeCh0LGUpXS02NTUzNn0sQmwucHJvdG90eXBlLl9pZHg9ZnVuY3Rpb24odCxlKXtpZih0PC0xfHx0Pj10aGlzLmRpbSsxfHxlPC0xfHxlPj10aGlzLmRpbSsxKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2Ugc291cmNlIGNvb3JkaW5hdGVzIGZvciBERU0gZGF0YSIpO3JldHVybihlKzEpKnRoaXMuc3RyaWRlKyh0KzEpfSxCbC5wcm90b3R5cGUuX3VucGFja01hcGJveD1mdW5jdGlvbih0LGUscil7cmV0dXJuKDI1Nip0KjI1NisyNTYqZStyKS8xMC0xZTR9LEJsLnByb3RvdHlwZS5fdW5wYWNrVGVycmFyaXVtPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMjU2KnQrZStyLzI1Ni0zMjc2OH0sQmwucHJvdG90eXBlLmdldFBpeGVscz1mdW5jdGlvbigpe3JldHVybiBuZXcgT2koe3dpZHRoOnRoaXMuc3RyaWRlLGhlaWdodDp0aGlzLnN0cmlkZX0sbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLmJ1ZmZlcikpfSxCbC5wcm90b3R5cGUuYmFja2ZpbGxCb3JkZXI9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuZGltIT09dC5kaW0pdGhyb3cgbmV3IEVycm9yKCJkZW0gZGltZW5zaW9uIG1pc21hdGNoIik7dmFyIG49ZSp0aGlzLmRpbSxhPWUqdGhpcy5kaW0rdGhpcy5kaW0saT1yKnRoaXMuZGltLG89cip0aGlzLmRpbSt0aGlzLmRpbTtzd2l0Y2goZSl7Y2FzZS0xOm49YS0xO2JyZWFrO2Nhc2UgMTphPW4rMX1zd2l0Y2gocil7Y2FzZS0xOmk9by0xO2JyZWFrO2Nhc2UgMTpvPWkrMX1mb3IodmFyIHM9LWUqdGhpcy5kaW0sbD0tcip0aGlzLmRpbSxjPWk7YzxvO2MrKylmb3IodmFyIHU9bjt1PGE7dSsrKXRoaXMuc2V0KHUsYyx0LmdldCh1K3MsYytsKSl9LGRuKCJERU1EYXRhIixCbCk7dmFyIE5sPUpuKFt7bmFtZToiYV9wb3MiLHR5cGU6IkludDE2Iixjb21wb25lbnRzOjJ9LHtuYW1lOiJhX3RleHR1cmVfcG9zIix0eXBlOiJJbnQxNiIsY29tcG9uZW50czoyfV0pLGpsPWZ1bmN0aW9uKHQpe3RoaXMuX3N0cmluZ1RvTnVtYmVyPXt9LHRoaXMuX251bWJlclRvU3RyaW5nPVtdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgcj10W2VdO3RoaXMuX3N0cmluZ1RvTnVtYmVyW3JdPWUsdGhpcy5fbnVtYmVyVG9TdHJpbmdbZV09cn19O2psLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3N0cmluZ1RvTnVtYmVyW3RdfSxqbC5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9udW1iZXJUb1N0cmluZ1t0XX07dmFyIFZsPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMudHlwZT0iRmVhdHVyZSIsdGhpcy5fdmVjdG9yVGlsZUZlYXR1cmU9dCx0Ll96PWUsdC5feD1yLHQuX3k9bix0aGlzLnByb3BlcnRpZXM9dC5wcm9wZXJ0aWVzLG51bGwhPXQuaWQmJih0aGlzLmlkPXQuaWQpfSxVbD17Z2VvbWV0cnk6e2NvbmZpZ3VyYWJsZTohMH19O1VsLmdlb21ldHJ5LmdldD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT10aGlzLl9nZW9tZXRyeSYmKHRoaXMuX2dlb21ldHJ5PXRoaXMuX3ZlY3RvclRpbGVGZWF0dXJlLnRvR2VvSlNPTih0aGlzLl92ZWN0b3JUaWxlRmVhdHVyZS5feCx0aGlzLl92ZWN0b3JUaWxlRmVhdHVyZS5feSx0aGlzLl92ZWN0b3JUaWxlRmVhdHVyZS5feikuZ2VvbWV0cnkpLHRoaXMuX2dlb21ldHJ5fSxVbC5nZW9tZXRyeS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fZ2VvbWV0cnk9dH0sVmwucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciB0PXtnZW9tZXRyeTp0aGlzLmdlb21ldHJ5fTtmb3IodmFyIGUgaW4gdGhpcykiX2dlb21ldHJ5IiE9PWUmJiJfdmVjdG9yVGlsZUZlYXR1cmUiIT09ZSYmKHRbZV09dGhpc1tlXSk7cmV0dXJuIHR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFZsLnByb3RvdHlwZSxVbCk7dmFyIHFsPWZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT17fSx0aGlzLnN0YXRlQ2hhbmdlcz17fSx0aGlzLmRlbGV0ZWRTdGF0ZXM9e319O3FsLnByb3RvdHlwZS51cGRhdGVTdGF0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49U3RyaW5nKGUpO2lmKHRoaXMuc3RhdGVDaGFuZ2VzW3RdPXRoaXMuc3RhdGVDaGFuZ2VzW3RdfHx7fSx0aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXT10aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXXx8e30saCh0aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXSxyKSxudWxsPT09dGhpcy5kZWxldGVkU3RhdGVzW3RdKWZvcih2YXIgYSBpbiB0aGlzLmRlbGV0ZWRTdGF0ZXNbdF09e30sdGhpcy5zdGF0ZVt0XSlhIT09biYmKHRoaXMuZGVsZXRlZFN0YXRlc1t0XVthXT1udWxsKTtlbHNlIGlmKHRoaXMuZGVsZXRlZFN0YXRlc1t0XSYmbnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXSlmb3IodmFyIGkgaW4gdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dPXt9LHRoaXMuc3RhdGVbdF1bbl0pcltpXXx8KHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtpXT1udWxsKTtlbHNlIGZvcih2YXIgbyBpbiByKXRoaXMuZGVsZXRlZFN0YXRlc1t0XSYmdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dJiZudWxsPT09dGhpcy5kZWxldGVkU3RhdGVzW3RdW25dW29dJiZkZWxldGUgdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dW29dfSxxbC5wcm90b3R5cGUucmVtb3ZlRmVhdHVyZVN0YXRlPWZ1bmN0aW9uKHQsZSxyKXtpZihudWxsIT09dGhpcy5kZWxldGVkU3RhdGVzW3RdKXt2YXIgbj1TdHJpbmcoZSk7aWYodGhpcy5kZWxldGVkU3RhdGVzW3RdPXRoaXMuZGVsZXRlZFN0YXRlc1t0XXx8e30sciYmdm9pZCAwIT09ZSYmZT49MCludWxsIT09dGhpcy5kZWxldGVkU3RhdGVzW3RdW25dJiYodGhpcy5kZWxldGVkU3RhdGVzW3RdW25dPXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXXx8e30sdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dW3JdPW51bGwpO2Vsc2UgaWYodm9pZCAwIT09ZSYmZT49MClpZih0aGlzLnN0YXRlQ2hhbmdlc1t0XSYmdGhpcy5zdGF0ZUNoYW5nZXNbdF1bbl0pZm9yKHIgaW4gdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dPXt9LHRoaXMuc3RhdGVDaGFuZ2VzW3RdW25dKXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtyXT1udWxsO2Vsc2UgdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dPW51bGw7ZWxzZSB0aGlzLmRlbGV0ZWRTdGF0ZXNbdF09bnVsbH19LHFsLnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbih0LGUpe3ZhciByPVN0cmluZyhlKSxuPXRoaXMuc3RhdGVbdF18fHt9LGE9dGhpcy5zdGF0ZUNoYW5nZXNbdF18fHt9LGk9aCh7fSxuW3JdLGFbcl0pO2lmKG51bGw9PT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF0pcmV0dXJue307aWYodGhpcy5kZWxldGVkU3RhdGVzW3RdKXt2YXIgbz10aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bZV07aWYobnVsbD09PW8pcmV0dXJue307Zm9yKHZhciBzIGluIG8pZGVsZXRlIGlbc119cmV0dXJuIGl9LHFsLnByb3RvdHlwZS5pbml0aWFsaXplVGlsZVN0YXRlPWZ1bmN0aW9uKHQsZSl7dC5zZXRGZWF0dXJlU3RhdGUodGhpcy5zdGF0ZSxlKX0scWwucHJvdG90eXBlLmNvYWxlc2NlQ2hhbmdlcz1mdW5jdGlvbih0LGUpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0aGlzLnN0YXRlQ2hhbmdlcyl7dGhpcy5zdGF0ZVtuXT10aGlzLnN0YXRlW25dfHx7fTt2YXIgYT17fTtmb3IodmFyIGkgaW4gdGhpcy5zdGF0ZUNoYW5nZXNbbl0pdGhpcy5zdGF0ZVtuXVtpXXx8KHRoaXMuc3RhdGVbbl1baV09e30pLGgodGhpcy5zdGF0ZVtuXVtpXSx0aGlzLnN0YXRlQ2hhbmdlc1tuXVtpXSksYVtpXT10aGlzLnN0YXRlW25dW2ldO3Jbbl09YX1mb3IodmFyIG8gaW4gdGhpcy5kZWxldGVkU3RhdGVzKXt0aGlzLnN0YXRlW29dPXRoaXMuc3RhdGVbb118fHt9O3ZhciBzPXt9O2lmKG51bGw9PT10aGlzLmRlbGV0ZWRTdGF0ZXNbb10pZm9yKHZhciBsIGluIHRoaXMuc3RhdGVbb10pc1tsXT17fSx0aGlzLnN0YXRlW29dW2xdPXt9O2Vsc2UgZm9yKHZhciBjIGluIHRoaXMuZGVsZXRlZFN0YXRlc1tvXSl7aWYobnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1tvXVtjXSl0aGlzLnN0YXRlW29dW2NdPXt9O2Vsc2UgZm9yKHZhciB1PTAsZj1PYmplY3Qua2V5cyh0aGlzLmRlbGV0ZWRTdGF0ZXNbb11bY10pO3U8Zi5sZW5ndGg7dSs9MSl7dmFyIHA9Zlt1XTtkZWxldGUgdGhpcy5zdGF0ZVtvXVtjXVtwXX1zW2NdPXRoaXMuc3RhdGVbb11bY119cltvXT1yW29dfHx7fSxoKHJbb10scyl9aWYodGhpcy5zdGF0ZUNoYW5nZXM9e30sdGhpcy5kZWxldGVkU3RhdGVzPXt9LDAhPT1PYmplY3Qua2V5cyhyKS5sZW5ndGgpZm9yKHZhciBkIGluIHQpdFtkXS5zZXRGZWF0dXJlU3RhdGUocixlKX07dmFyIEhsPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnRpbGVJRD10LHRoaXMueD10LmNhbm9uaWNhbC54LHRoaXMueT10LmNhbm9uaWNhbC55LHRoaXMuej10LmNhbm9uaWNhbC56LHRoaXMuZ3JpZD1lfHxuZXcgY24oZWksMTYsMCksdGhpcy5ncmlkM0Q9bmV3IGNuKGVpLDE2LDApLHRoaXMuZmVhdHVyZUluZGV4QXJyYXk9cnx8bmV3IENhfTtmdW5jdGlvbiBHbCh0KXtmb3IodmFyIGU9MS8wLHI9MS8wLG49LTEvMCxhPS0xLzAsaT0wLG89dDtpPG8ubGVuZ3RoO2krPTEpe3ZhciBzPW9baV07ZT1NYXRoLm1pbihlLHMueCkscj1NYXRoLm1pbihyLHMueSksbj1NYXRoLm1heChuLHMueCksYT1NYXRoLm1heChhLHMueSl9cmV0dXJue21pblg6ZSxtaW5ZOnIsbWF4WDpuLG1heFk6YX19ZnVuY3Rpb24gWWwodCxlKXtyZXR1cm4gZS10fUhsLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvPXRoaXMuZmVhdHVyZUluZGV4QXJyYXkubGVuZ3RoO3RoaXMuZmVhdHVyZUluZGV4QXJyYXkuZW1wbGFjZUJhY2socixuLGEpO2Zvcih2YXIgcz1pP3RoaXMuZ3JpZDNEOnRoaXMuZ3JpZCxsPTA7bDxlLmxlbmd0aDtsKyspe2Zvcih2YXIgYz1lW2xdLHU9WzEvMCwxLzAsLTEvMCwtMS8wXSxoPTA7aDxjLmxlbmd0aDtoKyspe3ZhciBmPWNbaF07dVswXT1NYXRoLm1pbih1WzBdLGYueCksdVsxXT1NYXRoLm1pbih1WzFdLGYueSksdVsyXT1NYXRoLm1heCh1WzJdLGYueCksdVszXT1NYXRoLm1heCh1WzNdLGYueSl9dVswXTxlaSYmdVsxXTxlaSYmdVsyXT49MCYmdVszXT49MCYmcy5pbnNlcnQobyx1WzBdLHVbMV0sdVsyXSx1WzNdKX19LEhsLnByb3RvdHlwZS5sb2FkVlRMYXllcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52dExheWVyc3x8KHRoaXMudnRMYXllcnM9bmV3IElvLlZlY3RvclRpbGUobmV3IHRsKHRoaXMucmF3VGlsZURhdGEpKS5sYXllcnMsdGhpcy5zb3VyY2VMYXllckNvZGVyPW5ldyBqbCh0aGlzLnZ0TGF5ZXJzP09iamVjdC5rZXlzKHRoaXMudnRMYXllcnMpLnNvcnQoKTpbIl9nZW9qc29uVGlsZUxheWVyIl0pKSx0aGlzLnZ0TGF5ZXJzfSxIbC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXM7dGhpcy5sb2FkVlRMYXllcnMoKTtmb3IodmFyIGk9dC5wYXJhbXN8fHt9LG89ZWkvdC50aWxlU2l6ZS90LnNjYWxlLHM9UnIoaS5maWx0ZXIpLGw9dC5xdWVyeUdlb21ldHJ5LGM9dC5xdWVyeVBhZGRpbmcqbyx1PUdsKGwpLGg9dGhpcy5ncmlkLnF1ZXJ5KHUubWluWC1jLHUubWluWS1jLHUubWF4WCtjLHUubWF4WStjKSxmPUdsKHQuY2FtZXJhUXVlcnlHZW9tZXRyeSkscD0wLGQ9dGhpcy5ncmlkM0QucXVlcnkoZi5taW5YLWMsZi5taW5ZLWMsZi5tYXhYK2MsZi5tYXhZK2MsZnVuY3Rpb24oZSxyLG4saSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4saSl7Zm9yKHZhciBvPTAscz10O288cy5sZW5ndGg7bys9MSl7dmFyIGw9c1tvXTtpZihlPD1sLngmJnI8PWwueSYmbj49bC54JiZpPj1sLnkpcmV0dXJuITB9dmFyIGM9W25ldyBhKGUsciksbmV3IGEoZSxpKSxuZXcgYShuLGkpLG5ldyBhKG4scildO2lmKHQubGVuZ3RoPjIpZm9yKHZhciB1PTAsaD1jO3U8aC5sZW5ndGg7dSs9MSlpZihnaSh0LGhbdV0pKXJldHVybiEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGgtMTtmKyspaWYodmkodFtmXSx0W2YrMV0sYykpcmV0dXJuITA7cmV0dXJuITF9KHQuY2FtZXJhUXVlcnlHZW9tZXRyeSxlLWMsci1jLG4rYyxpK2MpfSk7cDxkLmxlbmd0aDtwKz0xKXt2YXIgZz1kW3BdO2gucHVzaChnKX1oLnNvcnQoWWwpO2Zvcih2YXIgdixtPXt9LHk9ZnVuY3Rpb24oYSl7dmFyIGM9aFthXTtpZihjIT09dil7dj1jO3ZhciB1PW4uZmVhdHVyZUluZGV4QXJyYXkuZ2V0KGMpLGY9bnVsbDtuLmxvYWRNYXRjaGluZ0ZlYXR1cmUobSx1LmJ1Y2tldEluZGV4LHUuc291cmNlTGF5ZXJJbmRleCx1LmZlYXR1cmVJbmRleCxzLGkubGF5ZXJzLGUsZnVuY3Rpb24oZSxhKXtmfHwoZj1uaShlKSk7dmFyIGk9e307cmV0dXJuIGUuaWQmJihpPXIuZ2V0U3RhdGUoYS5zb3VyY2VMYXllcnx8Il9nZW9qc29uVGlsZUxheWVyIixlLmlkKSksYS5xdWVyeUludGVyc2VjdHNGZWF0dXJlKGwsZSxpLGYsbi56LHQudHJhbnNmb3JtLG8sdC5waXhlbFBvc01hdHJpeCl9KX19LHg9MDt4PGgubGVuZ3RoO3grKyl5KHgpO3JldHVybiBtfSxIbC5wcm90b3R5cGUubG9hZE1hdGNoaW5nRmVhdHVyZT1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe3ZhciBsPXRoaXMuYnVja2V0TGF5ZXJJRHNbZV07aWYoIWl8fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspaWYoZS5pbmRleE9mKHRbcl0pPj0wKXJldHVybiEwO3JldHVybiExfShpLGwpKXt2YXIgYz10aGlzLnNvdXJjZUxheWVyQ29kZXIuZGVjb2RlKHIpLHU9dGhpcy52dExheWVyc1tjXS5mZWF0dXJlKG4pO2lmKGEobmV3IFBuKHRoaXMudGlsZUlELm92ZXJzY2FsZWRaKSx1KSlmb3IodmFyIGg9MDtoPGwubGVuZ3RoO2grKyl7dmFyIGY9bFtoXTtpZighKGkmJmkuaW5kZXhPZihmKTwwKSl7dmFyIHA9b1tmXTtpZihwKXt2YXIgZD0hc3x8cyh1LHApO2lmKGQpe3ZhciBnPW5ldyBWbCh1LHRoaXMueix0aGlzLngsdGhpcy55KTtnLmxheWVyPXAuc2VyaWFsaXplKCk7dmFyIHY9dFtmXTt2b2lkIDA9PT12JiYodj10W2ZdPVtdKSx2LnB1c2goe2ZlYXR1cmVJbmRleDpuLGZlYXR1cmU6ZyxpbnRlcnNlY3Rpb25aOmR9KX19fX19fSxIbC5wcm90b3R5cGUubG9va3VwU3ltYm9sRmVhdHVyZXM9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvPXt9O3RoaXMubG9hZFZUTGF5ZXJzKCk7Zm9yKHZhciBzPVJyKG4pLGw9MCxjPXQ7bDxjLmxlbmd0aDtsKz0xKXt2YXIgdT1jW2xdO3RoaXMubG9hZE1hdGNoaW5nRmVhdHVyZShvLGUscix1LHMsYSxpKX1yZXR1cm4gb30sSGwucHJvdG90eXBlLmhhc0xheWVyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dGhpcy5idWNrZXRMYXllcklEcztlPHIubGVuZ3RoO2UrPTEpZm9yKHZhciBuPTAsYT1yW2VdO248YS5sZW5ndGg7bis9MSlpZih0PT09YVtuXSlyZXR1cm4hMDtyZXR1cm4hMX0sZG4oIkZlYXR1cmVJbmRleCIsSGwse29taXQ6WyJyYXdUaWxlRGF0YSIsInNvdXJjZUxheWVyQ29kZXIiXX0pO3ZhciBXbD1mdW5jdGlvbih0LGUpe3RoaXMudGlsZUlEPXQsdGhpcy51aWQ9cCgpLHRoaXMudXNlcz0wLHRoaXMudGlsZVNpemU9ZSx0aGlzLmJ1Y2tldHM9e30sdGhpcy5leHBpcmF0aW9uVGltZT1udWxsLHRoaXMucXVlcnlQYWRkaW5nPTAsdGhpcy5oYXNTeW1ib2xCdWNrZXRzPSExLHRoaXMuZXhwaXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuc3RhdGU9ImxvYWRpbmcifTtmdW5jdGlvbiBYbCh0LGUscixuLGEpe2lmKHZvaWQgMD09PWUuc2VnbWVudClyZXR1cm4hMDtmb3IodmFyIGk9ZSxvPWUuc2VnbWVudCsxLHM9MDtzPi1yLzI7KXtpZigtLW88MClyZXR1cm4hMTtzLT10W29dLmRpc3QoaSksaT10W29dfXMrPXRbb10uZGlzdCh0W28rMV0pLG8rKztmb3IodmFyIGw9W10sYz0wO3M8ci8yOyl7dmFyIHU9dFtvLTFdLGg9dFtvXSxmPXRbbysxXTtpZighZilyZXR1cm4hMTt2YXIgcD11LmFuZ2xlVG8oaCktaC5hbmdsZVRvKGYpO2ZvcihwPU1hdGguYWJzKChwKzMqTWF0aC5QSSklKDIqTWF0aC5QSSktTWF0aC5QSSksbC5wdXNoKHtkaXN0YW5jZTpzLGFuZ2xlRGVsdGE6cH0pLGMrPXA7cy1sWzBdLmRpc3RhbmNlPm47KWMtPWwuc2hpZnQoKS5hbmdsZURlbHRhO2lmKGM+YSlyZXR1cm4hMTtvKysscys9aC5kaXN0KGYpfXJldHVybiEwfWZ1bmN0aW9uIFpsKHQpe2Zvcih2YXIgZT0wLHI9MDtyPHQubGVuZ3RoLTE7cisrKWUrPXRbcl0uZGlzdCh0W3IrMV0pO3JldHVybiBlfWZ1bmN0aW9uIEpsKHQsZSxyKXtyZXR1cm4gdD8uNiplKnI6MH1mdW5jdGlvbiBLbCh0LGUpe3JldHVybiBNYXRoLm1heCh0P3QucmlnaHQtdC5sZWZ0OjAsZT9lLnJpZ2h0LWUubGVmdDowKX1mdW5jdGlvbiBRbCh0LGUscixuLGEsaSl7Zm9yKHZhciBvPUpsKHIsYSxpKSxzPUtsKHIsbikqaSxsPTAsYz1abCh0KS8yLHU9MDt1PHQubGVuZ3RoLTE7dSsrKXt2YXIgaD10W3VdLGY9dFt1KzFdLHA9aC5kaXN0KGYpO2lmKGwrcD5jKXt2YXIgZD0oYy1sKS9wLGc9eWUoaC54LGYueCxkKSx2PXllKGgueSxmLnksZCksbT1uZXcgYnMoZyx2LGYuYW5nbGVUbyhoKSx1KTtyZXR1cm4gbS5fcm91bmQoKSwhb3x8WGwodCxtLHMsbyxlKT9tOnZvaWQgMH1sKz1wfX1mdW5jdGlvbiAkbCh0LGUscixuLGEsaSxvLHMsbCl7dmFyIGM9SmwobixpLG8pLHU9S2wobixhKSxoPXUqbyxmPTA9PT10WzBdLnh8fHRbMF0ueD09PWx8fDA9PT10WzBdLnl8fHRbMF0ueT09PWw7cmV0dXJuIGUtaDxlLzQmJihlPWgrZS80KSxmdW5jdGlvbiB0KGUscixuLGEsaSxvLHMsbCxjKXtmb3IodmFyIHU9by8yLGg9WmwoZSksZj0wLHA9ci1uLGQ9W10sZz0wO2c8ZS5sZW5ndGgtMTtnKyspe2Zvcih2YXIgdj1lW2ddLG09ZVtnKzFdLHk9di5kaXN0KG0pLHg9bS5hbmdsZVRvKHYpO3ArbjxmK3k7KXt2YXIgYj0oKHArPW4pLWYpL3ksXz15ZSh2LngsbS54LGIpLHc9eWUodi55LG0ueSxiKTtpZihfPj0wJiZfPGMmJnc+PTAmJnc8YyYmcC11Pj0wJiZwK3U8PWgpe3ZhciBrPW5ldyBicyhfLHcseCxnKTtrLl9yb3VuZCgpLGEmJiFYbChlLGssbyxhLGkpfHxkLnB1c2goayl9fWYrPXl9cmV0dXJuIGx8fGQubGVuZ3RofHxzfHwoZD10KGUsZi8yLG4sYSxpLG8scywhMCxjKSksZH0odCxmP2UvMipzJWU6KHUvMisyKmkpKm8qcyVlLGUsYyxyLGgsZiwhMSxsKX1XbC5wcm90b3R5cGUucmVnaXN0ZXJGYWRlRHVyYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dCt0aGlzLnRpbWVBZGRlZDtlPEkubm93KCl8fHRoaXMuZmFkZUVuZFRpbWUmJmU8dGhpcy5mYWRlRW5kVGltZXx8KHRoaXMuZmFkZUVuZFRpbWU9ZSl9LFdsLnByb3RvdHlwZS53YXNSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4iZXJyb3JlZCI9PT10aGlzLnN0YXRlfHwibG9hZGVkIj09PXRoaXMuc3RhdGV8fCJyZWxvYWRpbmciPT09dGhpcy5zdGF0ZX0sV2wucHJvdG90eXBlLmxvYWRWZWN0b3JEYXRhPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLmhhc0RhdGEoKSYmdGhpcy51bmxvYWRWZWN0b3JEYXRhKCksdGhpcy5zdGF0ZT0ibG9hZGVkIix0KXtmb3IodmFyIG4gaW4gdC5mZWF0dXJlSW5kZXgmJih0aGlzLmxhdGVzdEZlYXR1cmVJbmRleD10LmZlYXR1cmVJbmRleCx0LnJhd1RpbGVEYXRhPyh0aGlzLmxhdGVzdFJhd1RpbGVEYXRhPXQucmF3VGlsZURhdGEsdGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgucmF3VGlsZURhdGE9dC5yYXdUaWxlRGF0YSk6dGhpcy5sYXRlc3RSYXdUaWxlRGF0YSYmKHRoaXMubGF0ZXN0RmVhdHVyZUluZGV4LnJhd1RpbGVEYXRhPXRoaXMubGF0ZXN0UmF3VGlsZURhdGEpKSx0aGlzLmNvbGxpc2lvbkJveEFycmF5PXQuY29sbGlzaW9uQm94QXJyYXksdGhpcy5idWNrZXRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e307aWYoIWUpcmV0dXJuIHI7Zm9yKHZhciBuPWZ1bmN0aW9uKCl7dmFyIHQ9aVthXSxuPXQubGF5ZXJJZHMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLmdldExheWVyKHQpfSkuZmlsdGVyKEJvb2xlYW4pO2lmKDAhPT1uLmxlbmd0aCl7dC5sYXllcnM9bix0LnN0YXRlRGVwZW5kZW50TGF5ZXJJZHMmJih0LnN0YXRlRGVwZW5kZW50TGF5ZXJzPXQuc3RhdGVEZXBlbmRlbnRMYXllcklkcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dH0pWzBdfSkpO2Zvcih2YXIgbz0wLHM9bjtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPXNbb107cltsLmlkXT10fX19LGE9MCxpPXQ7YTxpLmxlbmd0aDthKz0xKW4oKTtyZXR1cm4gcn0odC5idWNrZXRzLGUuc3R5bGUpLHRoaXMuaGFzU3ltYm9sQnVja2V0cz0hMSx0aGlzLmJ1Y2tldHMpe3ZhciBhPXRoaXMuYnVja2V0c1tuXTtpZihhIGluc3RhbmNlb2YgT3Mpe2lmKHRoaXMuaGFzU3ltYm9sQnVja2V0cz0hMCwhcilicmVhazthLmp1c3RSZWxvYWRlZD0hMH19Zm9yKHZhciBpIGluIHRoaXMucXVlcnlQYWRkaW5nPTAsdGhpcy5idWNrZXRzKXt2YXIgbz10aGlzLmJ1Y2tldHNbaV07dGhpcy5xdWVyeVBhZGRpbmc9TWF0aC5tYXgodGhpcy5xdWVyeVBhZGRpbmcsZS5zdHlsZS5nZXRMYXllcihpKS5xdWVyeVJhZGl1cyhvKSl9dC5pbWFnZUF0bGFzJiYodGhpcy5pbWFnZUF0bGFzPXQuaW1hZ2VBdGxhcyksdC5nbHlwaEF0bGFzSW1hZ2UmJih0aGlzLmdseXBoQXRsYXNJbWFnZT10LmdseXBoQXRsYXNJbWFnZSl9ZWxzZSB0aGlzLmNvbGxpc2lvbkJveEFycmF5PW5ldyBiYX0sV2wucHJvdG90eXBlLnVubG9hZFZlY3RvckRhdGE9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5idWNrZXRzKXRoaXMuYnVja2V0c1t0XS5kZXN0cm95KCk7dGhpcy5idWNrZXRzPXt9LHRoaXMuaW1hZ2VBdGxhc1RleHR1cmUmJnRoaXMuaW1hZ2VBdGxhc1RleHR1cmUuZGVzdHJveSgpLHRoaXMuaW1hZ2VBdGxhcyYmKHRoaXMuaW1hZ2VBdGxhcz1udWxsKSx0aGlzLmdseXBoQXRsYXNUZXh0dXJlJiZ0aGlzLmdseXBoQXRsYXNUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLmxhdGVzdEZlYXR1cmVJbmRleD1udWxsLHRoaXMuc3RhdGU9InVubG9hZGVkIn0sV2wucHJvdG90eXBlLnVubG9hZERFTURhdGE9ZnVuY3Rpb24oKXt0aGlzLmRlbT1udWxsLHRoaXMubmVpZ2hib3JpbmdUaWxlcz1udWxsLHRoaXMuc3RhdGU9InVubG9hZGVkIn0sV2wucHJvdG90eXBlLmdldEJ1Y2tldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5idWNrZXRzW3QuaWRdfSxXbC5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLmJ1Y2tldHMpe3ZhciByPXRoaXMuYnVja2V0c1tlXTtyLnVwbG9hZFBlbmRpbmcoKSYmci51cGxvYWQodCl9dmFyIG49dC5nbDt0aGlzLmltYWdlQXRsYXMmJiF0aGlzLmltYWdlQXRsYXMudXBsb2FkZWQmJih0aGlzLmltYWdlQXRsYXNUZXh0dXJlPW5ldyBLcyh0LHRoaXMuaW1hZ2VBdGxhcy5pbWFnZSxuLlJHQkEpLHRoaXMuaW1hZ2VBdGxhcy51cGxvYWRlZD0hMCksdGhpcy5nbHlwaEF0bGFzSW1hZ2UmJih0aGlzLmdseXBoQXRsYXNUZXh0dXJlPW5ldyBLcyh0LHRoaXMuZ2x5cGhBdGxhc0ltYWdlLG4uQUxQSEEpLHRoaXMuZ2x5cGhBdGxhc0ltYWdlPW51bGwpfSxXbC5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbih0KXt0aGlzLmltYWdlQXRsYXMmJnRoaXMuaW1hZ2VBdGxhcy5wYXRjaFVwZGF0ZWRJbWFnZXModCx0aGlzLmltYWdlQXRsYXNUZXh0dXJlKX0sV2wucHJvdG90eXBlLnF1ZXJ5UmVuZGVyZWRGZWF0dXJlcz1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMsbCl7cmV0dXJuIHRoaXMubGF0ZXN0RmVhdHVyZUluZGV4JiZ0aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5yYXdUaWxlRGF0YT90aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5xdWVyeSh7cXVlcnlHZW9tZXRyeTpyLGNhbWVyYVF1ZXJ5R2VvbWV0cnk6bixzY2FsZTphLHRpbGVTaXplOnRoaXMudGlsZVNpemUscGl4ZWxQb3NNYXRyaXg6bCx0cmFuc2Zvcm06byxwYXJhbXM6aSxxdWVyeVBhZGRpbmc6dGhpcy5xdWVyeVBhZGRpbmcqc30sdCxlKTp7fX0sV2wucHJvdG90eXBlLnF1ZXJ5U291cmNlRmVhdHVyZXM9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmxhdGVzdEZlYXR1cmVJbmRleCYmdGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgucmF3VGlsZURhdGEpe3ZhciByPXRoaXMubGF0ZXN0RmVhdHVyZUluZGV4LmxvYWRWVExheWVycygpLG49ZT9lLnNvdXJjZUxheWVyOiIiLGE9ci5fZ2VvanNvblRpbGVMYXllcnx8cltuXTtpZihhKWZvcih2YXIgaT1ScihlJiZlLmZpbHRlciksbz10aGlzLnRpbGVJRC5jYW5vbmljYWwscz1vLnosbD1vLngsYz1vLnksdT17ejpzLHg6bCx5OmN9LGg9MDtoPGEubGVuZ3RoO2grKyl7dmFyIGY9YS5mZWF0dXJlKGgpO2lmKGkobmV3IFBuKHRoaXMudGlsZUlELm92ZXJzY2FsZWRaKSxmKSl7dmFyIHA9bmV3IFZsKGYscyxsLGMpO3AudGlsZT11LHQucHVzaChwKX19fX0sV2wucHJvdG90eXBlLmNsZWFyTWFzaz1mdW5jdGlvbigpe3RoaXMuc2VnbWVudHMmJih0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSxkZWxldGUgdGhpcy5zZWdtZW50cyksdGhpcy5tYXNrZWRCb3VuZHNCdWZmZXImJih0aGlzLm1hc2tlZEJvdW5kc0J1ZmZlci5kZXN0cm95KCksZGVsZXRlIHRoaXMubWFza2VkQm91bmRzQnVmZmVyKSx0aGlzLm1hc2tlZEluZGV4QnVmZmVyJiYodGhpcy5tYXNrZWRJbmRleEJ1ZmZlci5kZXN0cm95KCksZGVsZXRlIHRoaXMubWFza2VkSW5kZXhCdWZmZXIpfSxXbC5wcm90b3R5cGUuc2V0TWFzaz1mdW5jdGlvbih0LGUpe2lmKCFvKHRoaXMubWFzayx0KSYmKHRoaXMubWFzaz10LHRoaXMuY2xlYXJNYXNrKCksIW8odCx7MDohMH0pKSl7dmFyIHI9bmV3ICRuLG49bmV3IGRhO3RoaXMuc2VnbWVudHM9bmV3IE9hLHRoaXMuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoMCxyLG4pO2Zvcih2YXIgaT1PYmplY3Qua2V5cyh0KSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBsPXRbK2lbc11dLGM9ZWk+Pmwueix1PW5ldyBhKGwueCpjLGwueSpjKSxoPW5ldyBhKHUueCtjLHUueStjKSxmPXRoaXMuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoNCxyLG4pO3IuZW1wbGFjZUJhY2sodS54LHUueSx1LngsdS55KSxyLmVtcGxhY2VCYWNrKGgueCx1LnksaC54LHUueSksci5lbXBsYWNlQmFjayh1LngsaC55LHUueCxoLnkpLHIuZW1wbGFjZUJhY2soaC54LGgueSxoLngsaC55KTt2YXIgcD1mLnZlcnRleExlbmd0aDtuLmVtcGxhY2VCYWNrKHAscCsxLHArMiksbi5lbXBsYWNlQmFjayhwKzEscCsyLHArMyksZi52ZXJ0ZXhMZW5ndGgrPTQsZi5wcmltaXRpdmVMZW5ndGgrPTJ9dGhpcy5tYXNrZWRCb3VuZHNCdWZmZXI9ZS5jcmVhdGVWZXJ0ZXhCdWZmZXIocixObC5tZW1iZXJzKSx0aGlzLm1hc2tlZEluZGV4QnVmZmVyPWUuY3JlYXRlSW5kZXhCdWZmZXIobil9fSxXbC5wcm90b3R5cGUuaGFzRGF0YT1mdW5jdGlvbigpe3JldHVybiJsb2FkZWQiPT09dGhpcy5zdGF0ZXx8InJlbG9hZGluZyI9PT10aGlzLnN0YXRlfHwiZXhwaXJlZCI9PT10aGlzLnN0YXRlfSxXbC5wcm90b3R5cGUucGF0dGVybnNMb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbWFnZUF0bGFzJiYhIU9iamVjdC5rZXlzKHRoaXMuaW1hZ2VBdGxhcy5wYXR0ZXJuUG9zaXRpb25zKS5sZW5ndGh9LFdsLnByb3RvdHlwZS5zZXRFeHBpcnlEYXRhPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZXhwaXJhdGlvblRpbWU7aWYodC5jYWNoZUNvbnRyb2wpe3ZhciByPU0odC5jYWNoZUNvbnRyb2wpO3JbIm1heC1hZ2UiXSYmKHRoaXMuZXhwaXJhdGlvblRpbWU9RGF0ZS5ub3coKSsxZTMqclsibWF4LWFnZSJdKX1lbHNlIHQuZXhwaXJlcyYmKHRoaXMuZXhwaXJhdGlvblRpbWU9bmV3IERhdGUodC5leHBpcmVzKS5nZXRUaW1lKCkpO2lmKHRoaXMuZXhwaXJhdGlvblRpbWUpe3ZhciBuPURhdGUubm93KCksYT0hMTtpZih0aGlzLmV4cGlyYXRpb25UaW1lPm4pYT0hMTtlbHNlIGlmKGUpaWYodGhpcy5leHBpcmF0aW9uVGltZTxlKWE9ITA7ZWxzZXt2YXIgaT10aGlzLmV4cGlyYXRpb25UaW1lLWU7aT90aGlzLmV4cGlyYXRpb25UaW1lPW4rTWF0aC5tYXgoaSwzZTQpOmE9ITB9ZWxzZSBhPSEwO2E/KHRoaXMuZXhwaXJlZFJlcXVlc3RDb3VudCsrLHRoaXMuc3RhdGU9ImV4cGlyZWQiKTp0aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQ9MH19LFdsLnByb3RvdHlwZS5nZXRFeHBpcnlUaW1lb3V0PWZ1bmN0aW9uKCl7aWYodGhpcy5leHBpcmF0aW9uVGltZSlyZXR1cm4gdGhpcy5leHBpcmVkUmVxdWVzdENvdW50PzFlMyooMTw8TWF0aC5taW4odGhpcy5leHBpcmVkUmVxdWVzdENvdW50LTEsMzEpKTpNYXRoLm1pbih0aGlzLmV4cGlyYXRpb25UaW1lLShuZXcgRGF0ZSkuZ2V0VGltZSgpLE1hdGgucG93KDIsMzEpLTEpfSxXbC5wcm90b3R5cGUuc2V0RmVhdHVyZVN0YXRlPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgmJnRoaXMubGF0ZXN0RmVhdHVyZUluZGV4LnJhd1RpbGVEYXRhJiYwIT09T2JqZWN0LmtleXModCkubGVuZ3RoKXt2YXIgcj10aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5sb2FkVlRMYXllcnMoKTtmb3IodmFyIG4gaW4gdGhpcy5idWNrZXRzKXt2YXIgYT10aGlzLmJ1Y2tldHNbbl0saT1hLmxheWVyc1swXS5zb3VyY2VMYXllcnx8Il9nZW9qc29uVGlsZUxheWVyIixvPXJbaV0scz10W2ldO28mJnMmJjAhPT1PYmplY3Qua2V5cyhzKS5sZW5ndGgmJihhLnVwZGF0ZShzLG8sdGhpcy5pbWFnZUF0bGFzJiZ0aGlzLmltYWdlQXRsYXMucGF0dGVyblBvc2l0aW9uc3x8e30pLGUmJmUuc3R5bGUmJih0aGlzLnF1ZXJ5UGFkZGluZz1NYXRoLm1heCh0aGlzLnF1ZXJ5UGFkZGluZyxlLnN0eWxlLmdldExheWVyKG4pLnF1ZXJ5UmFkaXVzKGEpKSkpfX19LFdsLnByb3RvdHlwZS5ob2xkaW5nRm9yRmFkZT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLnN5bWJvbEZhZGVIb2xkVW50aWx9LFdsLnByb3RvdHlwZS5zeW1ib2xGYWRlRmluaXNoZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5zeW1ib2xGYWRlSG9sZFVudGlsfHx0aGlzLnN5bWJvbEZhZGVIb2xkVW50aWw8SS5ub3coKX0sV2wucHJvdG90eXBlLmNsZWFyRmFkZUhvbGQ9ZnVuY3Rpb24oKXt0aGlzLnN5bWJvbEZhZGVIb2xkVW50aWw9dm9pZCAwfSxXbC5wcm90b3R5cGUuc2V0SG9sZER1cmF0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuc3ltYm9sRmFkZUhvbGRVbnRpbD1JLm5vdygpK3R9O3ZhciB0Yz1mdW5jdGlvbih0LGUscixuLGksbyxzLGwsYyx1LGgsZil7dmFyIHA9cy50b3AqbC1jLGQ9cy5ib3R0b20qbCtjLGc9cy5sZWZ0KmwtYyx2PXMucmlnaHQqbCtjO2lmKHRoaXMuYm94U3RhcnRJbmRleD10Lmxlbmd0aCx1KXt2YXIgbT1kLXAseT12LWc7bT4wJiYobT1NYXRoLm1heCgxMCpsLG0pLHRoaXMuX2FkZExpbmVDb2xsaXNpb25DaXJjbGVzKHQsZSxyLHIuc2VnbWVudCx5LG0sbixpLG8saCkpfWVsc2V7aWYoZil7dmFyIHg9bmV3IGEoZyxwKSxiPW5ldyBhKHYscCksXz1uZXcgYShnLGQpLHc9bmV3IGEodixkKSxrPWYqTWF0aC5QSS8xODA7eC5fcm90YXRlKGspLGIuX3JvdGF0ZShrKSxfLl9yb3RhdGUoayksdy5fcm90YXRlKGspLGc9TWF0aC5taW4oeC54LGIueCxfLngsdy54KSx2PU1hdGgubWF4KHgueCxiLngsXy54LHcueCkscD1NYXRoLm1pbih4LnksYi55LF8ueSx3LnkpLGQ9TWF0aC5tYXgoeC55LGIueSxfLnksdy55KX10LmVtcGxhY2VCYWNrKHIueCxyLnksZyxwLHYsZCxuLGksbywwLDApfXRoaXMuYm94RW5kSW5kZXg9dC5sZW5ndGh9O3RjLnByb3RvdHlwZS5fYWRkTGluZUNvbGxpc2lvbkNpcmNsZXM9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwsYyl7dmFyIHU9aS8yLGg9TWF0aC5mbG9vcihhL3UpfHwxLGY9MSsuNCpNYXRoLmxvZyhjKS9NYXRoLkxOMixwPU1hdGguZmxvb3IoaCpmLzIpLGQ9LWkvMixnPXIsdj1uKzEsbT1kLHk9LWEvMix4PXktYS80O2Rve2lmKC0tdjwwKXtpZihtPnkpcmV0dXJuO3Y9MDticmVha31tLT1lW3ZdLmRpc3QoZyksZz1lW3ZdfXdoaWxlKG0+eCk7Zm9yKHZhciBiPWVbdl0uZGlzdChlW3YrMV0pLF89LXA7XzxoK3A7XysrKXt2YXIgdz1fKnUsaz15K3c7aWYodzwwJiYoays9dyksdz5hJiYoays9dy1hKSwhKGs8bSkpe2Zvcig7bStiPGs7KXtpZihtKz1iLCsrdisxPj1lLmxlbmd0aClyZXR1cm47Yj1lW3ZdLmRpc3QoZVt2KzFdKX12YXIgVD1rLW0sTT1lW3ZdLEE9ZVt2KzFdLnN1YihNKS5fdW5pdCgpLl9tdWx0KFQpLl9hZGQoTSkuX3JvdW5kKCksUz1NYXRoLmFicyhrLWQpPHU/MDouOCooay1kKTt0LmVtcGxhY2VCYWNrKEEueCxBLnksLWkvMiwtaS8yLGkvMixpLzIsbyxzLGwsaS8yLFMpfX19O3ZhciBlYz1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PXQmJih0PVtdKSx2b2lkIDA9PT1lJiYoZT1yYyksdGhpcy5kYXRhPXQsdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmNvbXBhcmU9ZSx0aGlzLmxlbmd0aD4wKWZvcih2YXIgcj0odGhpcy5sZW5ndGg+PjEpLTE7cj49MDtyLS0pdGhpcy5fZG93bihyKX07ZnVuY3Rpb24gcmModCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOjB9ZnVuY3Rpb24gbmModCxlLHIpe3ZvaWQgMD09PWUmJihlPTEpLHZvaWQgMD09PXImJihyPSExKTtmb3IodmFyIG49MS8wLGk9MS8wLG89LTEvMCxzPS0xLzAsbD10WzBdLGM9MDtjPGwubGVuZ3RoO2MrKyl7dmFyIHU9bFtjXTsoIWN8fHUueDxuKSYmKG49dS54KSwoIWN8fHUueTxpKSYmKGk9dS55KSwoIWN8fHUueD5vKSYmKG89dS54KSwoIWN8fHUueT5zKSYmKHM9dS55KX12YXIgaD1vLW4sZj1zLWkscD1NYXRoLm1pbihoLGYpLGQ9cC8yLGc9bmV3IGVjKFtdLGFjKTtpZigwPT09cClyZXR1cm4gbmV3IGEobixpKTtmb3IodmFyIHY9bjt2PG87dis9cClmb3IodmFyIG09aTttPHM7bSs9cClnLnB1c2gobmV3IGljKHYrZCxtK2QsZCx0KSk7Zm9yKHZhciB5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9MCxuPTAsYT10WzBdLGk9MCxvPWEubGVuZ3RoLHM9by0xO2k8bztzPWkrKyl7dmFyIGw9YVtpXSxjPWFbc10sdT1sLngqYy55LWMueCpsLnk7cis9KGwueCtjLngpKnUsbis9KGwueStjLnkpKnUsZSs9Myp1fXJldHVybiBuZXcgaWMoci9lLG4vZSwwLHQpfSh0KSx4PWcubGVuZ3RoO2cubGVuZ3RoOyl7dmFyIGI9Zy5wb3AoKTsoYi5kPnkuZHx8IXkuZCkmJih5PWIsciYmY29uc29sZS5sb2coImZvdW5kIGJlc3QgJWQgYWZ0ZXIgJWQgcHJvYmVzIixNYXRoLnJvdW5kKDFlNCpiLmQpLzFlNCx4KSksYi5tYXgteS5kPD1lfHwoZD1iLmgvMixnLnB1c2gobmV3IGljKGIucC54LWQsYi5wLnktZCxkLHQpKSxnLnB1c2gobmV3IGljKGIucC54K2QsYi5wLnktZCxkLHQpKSxnLnB1c2gobmV3IGljKGIucC54LWQsYi5wLnkrZCxkLHQpKSxnLnB1c2gobmV3IGljKGIucC54K2QsYi5wLnkrZCxkLHQpKSx4Kz00KX1yZXR1cm4gciYmKGNvbnNvbGUubG9nKCJudW0gcHJvYmVzOiAiK3gpLGNvbnNvbGUubG9nKCJiZXN0IGRpc3RhbmNlOiAiK3kuZCkpLHkucH1mdW5jdGlvbiBhYyh0LGUpe3JldHVybiBlLm1heC10Lm1heH1mdW5jdGlvbiBpYyh0LGUscixuKXt0aGlzLnA9bmV3IGEodCxlKSx0aGlzLmg9cix0aGlzLmQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ITEsbj0xLzAsYT0wO2E8ZS5sZW5ndGg7YSsrKWZvcih2YXIgaT1lW2FdLG89MCxzPWkubGVuZ3RoLGw9cy0xO288cztsPW8rKyl7dmFyIGM9aVtvXSx1PWlbbF07Yy55PnQueSE9dS55PnQueSYmdC54PCh1LngtYy54KSoodC55LWMueSkvKHUueS1jLnkpK2MueCYmKHI9IXIpLG49TWF0aC5taW4obixwaSh0LGMsdSkpfXJldHVybihyPzE6LTEpKk1hdGguc3FydChuKX0odGhpcy5wLG4pLHRoaXMubWF4PXRoaXMuZCt0aGlzLmgqTWF0aC5TUVJUMn1lYy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXt0aGlzLmRhdGEucHVzaCh0KSx0aGlzLmxlbmd0aCsrLHRoaXMuX3VwKHRoaXMubGVuZ3RoLTEpfSxlYy5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgdD10aGlzLmRhdGFbMF0sZT10aGlzLmRhdGEucG9wKCk7cmV0dXJuIHRoaXMubGVuZ3RoLS0sdGhpcy5sZW5ndGg+MCYmKHRoaXMuZGF0YVswXT1lLHRoaXMuX2Rvd24oMCkpLHR9fSxlYy5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFbMF19LGVjLnByb3RvdHlwZS5fdXA9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuZGF0YSxyPXRoaXMuY29tcGFyZSxuPWVbdF07dD4wOyl7dmFyIGE9dC0xPj4xLGk9ZVthXTtpZihyKG4saSk+PTApYnJlYWs7ZVt0XT1pLHQ9YX1lW3RdPW59LGVjLnByb3RvdHlwZS5fZG93bj1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5kYXRhLHI9dGhpcy5jb21wYXJlLG49dGhpcy5sZW5ndGg+PjEsYT1lW3RdO3Q8bjspe3ZhciBpPTErKHQ8PDEpLG89ZVtpXSxzPWkrMTtpZihzPHRoaXMubGVuZ3RoJiZyKGVbc10sbyk8MCYmKGk9cyxvPWVbc10pLHIobyxhKT49MClicmVhaztlW3RdPW8sdD1pfWVbdF09YX07dmFyIG9jPWUoZnVuY3Rpb24odCl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhLGksbyxzLGwsYztmb3Iocj0zJnQubGVuZ3RoLG49dC5sZW5ndGgtcixhPWUsbz0zNDMyOTE4MzUzLHM9NDYxODQ1OTA3LGM9MDtjPG47KWw9MjU1JnQuY2hhckNvZGVBdChjKXwoMjU1JnQuY2hhckNvZGVBdCgrK2MpKTw8OHwoMjU1JnQuY2hhckNvZGVBdCgrK2MpKTw8MTZ8KDI1NSZ0LmNoYXJDb2RlQXQoKytjKSk8PDI0LCsrYyxhPTI3NDkyKyg2NTUzNSYoaT01Kig2NTUzNSYoYT0oYV49bD0oNjU1MzUmKGw9KGw9KDY1NTM1JmwpKm8rKCgobD4+PjE2KSpvJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUpPDwxNXxsPj4+MTcpKSpzKygoKGw+Pj4xNikqcyY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1KTw8MTN8YT4+PjE5KSkrKCg1KihhPj4+MTYpJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUpKSsoKDU4OTY0KyhpPj4+MTYpJjY1NTM1KTw8MTYpO3N3aXRjaChsPTAscil7Y2FzZSAzOmxePSgyNTUmdC5jaGFyQ29kZUF0KGMrMikpPDwxNjtjYXNlIDI6bF49KDI1NSZ0LmNoYXJDb2RlQXQoYysxKSk8PDg7Y2FzZSAxOmFePWw9KDY1NTM1JihsPShsPSg2NTUzNSYobF49MjU1JnQuY2hhckNvZGVBdChjKSkpKm8rKCgobD4+PjE2KSpvJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUpPDwxNXxsPj4+MTcpKSpzKygoKGw+Pj4xNikqcyY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1fXJldHVybiBhXj10Lmxlbmd0aCxhPTIyNDY4MjI1MDcqKDY1NTM1JihhXj1hPj4+MTYpKSsoKDIyNDY4MjI1MDcqKGE+Pj4xNikmNjU1MzUpPDwxNikmNDI5NDk2NzI5NSxhPTMyNjY0ODk5MDkqKDY1NTM1JihhXj1hPj4+MTMpKSsoKDMyNjY0ODk5MDkqKGE+Pj4xNikmNjU1MzUpPDwxNikmNDI5NDk2NzI5NSwoYV49YT4+PjE2KT4+PjB9fSksc2M9ZShmdW5jdGlvbih0KXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbj10Lmxlbmd0aCxhPWVebixpPTA7bj49NDspcj0xNTQwNDgzNDc3Kig2NTUzNSYocj0yNTUmdC5jaGFyQ29kZUF0KGkpfCgyNTUmdC5jaGFyQ29kZUF0KCsraSkpPDw4fCgyNTUmdC5jaGFyQ29kZUF0KCsraSkpPDwxNnwoMjU1JnQuY2hhckNvZGVBdCgrK2kpKTw8MjQpKSsoKDE1NDA0ODM0NzcqKHI+Pj4xNikmNjU1MzUpPDwxNiksYT0xNTQwNDgzNDc3Kig2NTUzNSZhKSsoKDE1NDA0ODM0NzcqKGE+Pj4xNikmNjU1MzUpPDwxNileKHI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePXI+Pj4yNCkpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KSksbi09NCwrK2k7c3dpdGNoKG4pe2Nhc2UgMzphXj0oMjU1JnQuY2hhckNvZGVBdChpKzIpKTw8MTY7Y2FzZSAyOmFePSgyNTUmdC5jaGFyQ29kZUF0KGkrMSkpPDw4O2Nhc2UgMTphPTE1NDA0ODM0NzcqKDY1NTM1JihhXj0yNTUmdC5jaGFyQ29kZUF0KGkpKSkrKCgxNTQwNDgzNDc3KihhPj4+MTYpJjY1NTM1KTw8MTYpfXJldHVybiBhPTE1NDA0ODM0NzcqKDY1NTM1JihhXj1hPj4+MTMpKSsoKDE1NDA0ODM0NzcqKGE+Pj4xNikmNjU1MzUpPDwxNiksKGFePWE+Pj4xNSk+Pj4wfX0pLGxjPW9jLGNjPW9jLHVjPXNjO2xjLm11cm11cjM9Y2MsbGMubXVybXVyMj11Yzt2YXIgaGM9NztmdW5jdGlvbiBmYyh0LGUpe3ZhciByPTAsbj0wLGE9ZS9NYXRoLnNxcnQoMik7c3dpdGNoKHQpe2Nhc2UidG9wLXJpZ2h0IjpjYXNlInRvcC1sZWZ0IjpuPWEtaGM7YnJlYWs7Y2FzZSJib3R0b20tcmlnaHQiOmNhc2UiYm90dG9tLWxlZnQiOm49LWEraGM7YnJlYWs7Y2FzZSJib3R0b20iOm49LWUraGM7YnJlYWs7Y2FzZSJ0b3AiOm49ZS1oY31zd2l0Y2godCl7Y2FzZSJ0b3AtcmlnaHQiOmNhc2UiYm90dG9tLXJpZ2h0IjpyPS1hO2JyZWFrO2Nhc2UidG9wLWxlZnQiOmNhc2UiYm90dG9tLWxlZnQiOnI9YTticmVhaztjYXNlImxlZnQiOnI9ZTticmVhaztjYXNlInJpZ2h0IjpyPS1lfXJldHVybltyLG5dfWZ1bmN0aW9uIHBjKHQpe3N3aXRjaCh0KXtjYXNlInJpZ2h0IjpjYXNlInRvcC1yaWdodCI6Y2FzZSJib3R0b20tcmlnaHQiOnJldHVybiJyaWdodCI7Y2FzZSJsZWZ0IjpjYXNlInRvcC1sZWZ0IjpjYXNlImJvdHRvbS1sZWZ0IjpyZXR1cm4ibGVmdCJ9cmV0dXJuImNlbnRlciJ9dmFyIGRjPTY1NTM1O2Z1bmN0aW9uIGdjKHQsZSxyLG4saSxvLHMsbCxjLHUsaCxmLHApe3ZhciBkPWZ1bmN0aW9uKHQsZSxyLG4saSxvLHMsbCl7Zm9yKHZhciBjPW4ubGF5b3V0LmdldCgidGV4dC1yb3RhdGUiKS5ldmFsdWF0ZShvLHt9KSpNYXRoLlBJLzE4MCx1PWUucG9zaXRpb25lZEdseXBocyxoPVtdLGY9MDtmPHUubGVuZ3RoO2YrKyl7dmFyIHA9dVtmXSxkPXNbcC5mb250U3RhY2tdLGc9ZCYmZFtwLmdseXBoXTtpZihnKXt2YXIgdj1nLnJlY3Q7aWYodil7dmFyIG09X2wrMSx5PWcubWV0cmljcy5hZHZhbmNlKnAuc2NhbGUvMix4PWk/W3AueCt5LHAueV06WzAsMF0sYj1pP1swLDBdOltwLngreStyWzBdLHAueStyWzFdXSxfPShpfHxsKSYmcC52ZXJ0aWNhbCx3PVswLDBdO18mJih3PWIsYj1bMCwwXSk7dmFyIGs9KGcubWV0cmljcy5sZWZ0LW0pKnAuc2NhbGUteStiWzBdLFQ9KC1nLm1ldHJpY3MudG9wLW0pKnAuc2NhbGUrYlsxXSxNPWsrdi53KnAuc2NhbGUsQT1UK3YuaCpwLnNjYWxlLFM9bmV3IGEoayxUKSxFPW5ldyBhKE0sVCksTD1uZXcgYShrLEEpLEM9bmV3IGEoTSxBKTtpZihfKXt2YXIgUD1uZXcgYSgteSx5LWUueU9mZnNldCksTz0tTWF0aC5QSS8yLHo9bHMvMi15LEk9bmV3IGEoNS1lLnlPZmZzZXQteiwwKSxEPW5ldyhGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5hcHBseShhLFtudWxsXS5jb25jYXQodykpKTtTLl9yb3RhdGVBcm91bmQoTyxQKS5fYWRkKEkpLl9hZGQoRCksRS5fcm90YXRlQXJvdW5kKE8sUCkuX2FkZChJKS5fYWRkKEQpLEwuX3JvdGF0ZUFyb3VuZChPLFApLl9hZGQoSSkuX2FkZChEKSxDLl9yb3RhdGVBcm91bmQoTyxQKS5fYWRkKEkpLl9hZGQoRCl9aWYoYyl7dmFyIFI9TWF0aC5zaW4oYyksRj1NYXRoLmNvcyhjKSxCPVtGLC1SLFIsRl07Uy5fbWF0TXVsdChCKSxFLl9tYXRNdWx0KEIpLEwuX21hdE11bHQoQiksQy5fbWF0TXVsdChCKX1oLnB1c2goe3RsOlMsdHI6RSxibDpMLGJyOkMsdGV4OnYsd3JpdGluZ01vZGU6ZS53cml0aW5nTW9kZSxnbHlwaE9mZnNldDp4LHNlY3Rpb25JbmRleDpwLnNlY3Rpb25JbmRleH0pfX19cmV0dXJuIGh9KDAscixzLG4saSxvLGYsdC5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50KSxnPXQudGV4dFNpemVEYXRhLHY9bnVsbDsic291cmNlIj09PWcua2luZD8odj1bX3Mqbi5sYXlvdXQuZ2V0KCJ0ZXh0LXNpemUiKS5ldmFsdWF0ZShvLHt9KV0pWzBdPmRjJiZ3KHQubGF5ZXJJZHNbMF0rJzogVmFsdWUgZm9yICJ0ZXh0LXNpemUiIGlzID49IDI1Ni4gUmVkdWNlIHlvdXIgInRleHQtc2l6ZSIuJyk6ImNvbXBvc2l0ZSI9PT1nLmtpbmQmJigodj1bX3MqcC5jb21wb3NpdGVUZXh0U2l6ZXNbMF0uZXZhbHVhdGUobyx7fSksX3MqcC5jb21wb3NpdGVUZXh0U2l6ZXNbMV0uZXZhbHVhdGUobyx7fSldKVswXT5kY3x8dlsxXT5kYykmJncodC5sYXllcklkc1swXSsnOiBWYWx1ZSBmb3IgInRleHQtc2l6ZSIgaXMgPj0gMjU2LiBSZWR1Y2UgeW91ciAidGV4dC1zaXplIi4nKSx0LmFkZFN5bWJvbHModC50ZXh0LGQsdixzLGksbyxjLGUsbC5saW5lU3RhcnRJbmRleCxsLmxpbmVMZW5ndGgpO2Zvcih2YXIgbT0wLHk9dTttPHkubGVuZ3RoO20rPTEpaFt5W21dXT10LnRleHQucGxhY2VkU3ltYm9sQXJyYXkubGVuZ3RoLTE7cmV0dXJuIDQqZC5sZW5ndGh9ZnVuY3Rpb24gdmModCl7Zm9yKHZhciBlIGluIHQpcmV0dXJuIHRbZV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gbWModCxlLHIsbil7dmFyIGE9dC5jb21wYXJlVGV4dDtpZihlIGluIGEpe2Zvcih2YXIgaT1hW2VdLG89aS5sZW5ndGgtMTtvPj0wO28tLSlpZihuLmRpc3QoaVtvXSk8cilyZXR1cm4hMH1lbHNlIGFbZV09W107cmV0dXJuIGFbZV0ucHVzaChuKSwhMX10LkFjdG9yPWtsLHQuQWxwaGFJbWFnZT1QaSx0LkNhbm9uaWNhbFRpbGVJRD1JbCx0LkNvbGxpc2lvbkJveEFycmF5PWJhLHQuQ29sb3I9V3QsdC5ERU1EYXRhPUJsLHQuRGF0YUNvbnN0YW50UHJvcGVydHk9am4sdC5EaWN0aW9uYXJ5Q29kZXI9amwsdC5FWFRFTlQ9ZWksdC5FcnJvckV2ZW50PXd0LHQuRXZhbHVhdGlvblBhcmFtZXRlcnM9UG4sdC5FdmVudD1fdCx0LkV2ZW50ZWQ9a3QsdC5GZWF0dXJlSW5kZXg9SGwsdC5GaWxsQnVja2V0PV9vLHQuRmlsbEV4dHJ1c2lvbkJ1Y2tldD1Cbyx0LkltYWdlQXRsYXM9WXMsdC5JbWFnZVBvc2l0aW9uPUhzLHQuTGluZUJ1Y2tldD1abyx0LkxuZ0xhdD1BbCx0LkxuZ0xhdEJvdW5kcz1NbCx0Lk1lcmNhdG9yQ29vcmRpbmF0ZT16bCx0Lk9ORV9FTT1scyx0Lk92ZXJzY2FsZWRUaWxlSUQ9UmwsdC5Qb2ludD1hLHQuUG9pbnQkMT1hLHQuUHJvZ3JhbUNvbmZpZ3VyYXRpb249S2EsdC5Qcm9wZXJ0aWVzPUduLHQuUHJvdG9idWY9dGwsdC5SR0JBSW1hZ2U9T2ksdC5SZXF1ZXN0TWFuYWdlcj1WLHQuUmVzb3VyY2VUeXBlPWx0LHQuU2VnbWVudFZlY3Rvcj1PYSx0LlNvdXJjZUZlYXR1cmVTdGF0ZT1xbCx0LlN0cnVjdEFycmF5TGF5b3V0MXVpMj12YSx0LlN0cnVjdEFycmF5TGF5b3V0Mmk0PVFuLHQuU3RydWN0QXJyYXlMYXlvdXQydWk0PWdhLHQuU3RydWN0QXJyYXlMYXlvdXQzdWk2PWRhLHQuU3RydWN0QXJyYXlMYXlvdXQ0aTg9JG4sdC5TeW1ib2xCdWNrZXQ9T3MsdC5UZXh0dXJlPUtzLHQuVGlsZT1XbCx0LlRyYW5zaXRpb25hYmxlPUluLHQuVW5pZm9ybTFmPUJhLHQuVW5pZm9ybTFpPUZhLHQuVW5pZm9ybTJmPU5hLHQuVW5pZm9ybTNmPWphLHQuVW5pZm9ybTRmPVZhLHQuVW5pZm9ybUNvbG9yPVVhLHQuVW5pZm9ybU1hdHJpeDRmPUhhLHQuVW53cmFwcGVkVGlsZUlEPURsLHQuVmFsaWRhdGlvbkVycm9yPU10LHQuV3JpdGluZ01vZGU9Y3MsdC5ab29tSGlzdG9yeT15bix0LmFkZER5bmFtaWNBdHRyaWJ1dGVzPUxzLHQuYXN5bmNBbGw9ZnVuY3Rpb24odCxlLHIpe2lmKCF0Lmxlbmd0aClyZXR1cm4gcihudWxsLFtdKTt2YXIgbj10Lmxlbmd0aCxhPW5ldyBBcnJheSh0Lmxlbmd0aCksaT1udWxsO3QuZm9yRWFjaChmdW5jdGlvbih0LG8pe2UodCxmdW5jdGlvbih0LGUpe3QmJihpPXQpLGFbb109ZSwwPT0tLW4mJnIoaSxhKX0pfSl9LHQuYmV6aWVyPXMsdC5iaW5kQWxsPXYsdC5icm93c2VyPUksdC5jYWNoZUVudHJ5UG9zc2libHlBZGRlZD1mdW5jdGlvbih0KXsrK3N0PmF0JiYodC5nZXRBY3RvcigpLnNlbmQoImVuZm9yY2VDYWNoZVNpemVMaW1pdCIsbnQpLHN0PTApfSx0LmNsYW1wPWMsdC5jbGVhclRpbGVDYWNoZT1mdW5jdGlvbih0KXt2YXIgZT1zZWxmLmNhY2hlcy5kZWxldGUocnQpO3QmJmUuY2F0Y2godCkudGhlbihmdW5jdGlvbigpe3JldHVybiB0KCl9KX0sdC5jbG9uZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcga2koMTYpO3JldHVybiBlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sZVs0XT10WzRdLGVbNV09dFs1XSxlWzZdPXRbNl0sZVs3XT10WzddLGVbOF09dFs4XSxlWzldPXRbOV0sZVsxMF09dFsxMF0sZVsxMV09dFsxMV0sZVsxMl09dFsxMl0sZVsxM109dFsxM10sZVsxNF09dFsxNF0sZVsxNV09dFsxNV0sZX0sdC5jbG9uZSQxPWIsdC5jb25maWc9RCx0LmNyZWF0ZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBraSgxNik7cmV0dXJuIGtpIT1GbG9hdDMyQXJyYXkmJih0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTApLHRbMF09MSx0WzVdPTEsdFsxMF09MSx0WzE1XT0xLHR9LHQuY3JlYXRlJDE9ZnVuY3Rpb24oKXt2YXIgdD1uZXcga2koOSk7cmV0dXJuIGtpIT1GbG9hdDMyQXJyYXkmJih0WzFdPTAsdFsyXT0wLHRbM109MCx0WzVdPTAsdFs2XT0wLHRbN109MCksdFswXT0xLHRbNF09MSx0WzhdPTEsdH0sdC5jcmVhdGUkMj1mdW5jdGlvbigpe3ZhciB0PW5ldyBraSg0KTtyZXR1cm4ga2khPUZsb2F0MzJBcnJheSYmKHRbMV09MCx0WzJdPTApLHRbMF09MSx0WzNdPTEsdH0sdC5jcmVhdGVDb21tb25qc01vZHVsZT1lLHQuY3JlYXRlRXhwcmVzc2lvbj1rcix0LmNyZWF0ZUxheW91dD1Kbix0LmNyZWF0ZVN0eWxlTGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuImN1c3RvbSI9PT10LnR5cGU/bmV3IFZzKHQpOm5ldyBVc1t0LnR5cGVdKHQpfSx0LmRlZXBFcXVhbD1vLHQuZWFzZT1sLHQuZW1pdFZhbGlkYXRpb25FcnJvcnM9bG4sdC5lbmRzV2l0aD1tLHQuZW5mb3JjZUNhY2hlU2l6ZUxpbWl0PWZ1bmN0aW9uKHQpe3NlbGYuY2FjaGVzJiZzZWxmLmNhY2hlcy5vcGVuKHJ0KS50aGVuKGZ1bmN0aW9uKGUpe2Uua2V5cygpLnRoZW4oZnVuY3Rpb24ocil7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aC10O24rKyllLmRlbGV0ZShyW25dKX0pfSl9LHQuZXZhbHVhdGVSYWRpYWxPZmZzZXQ9ZmMsdC5ldmFsdWF0ZVNpemVGb3JGZWF0dXJlPWtzLHQuZXZhbHVhdGVTaXplRm9yWm9vbT1Ucyx0LmV2ZW50ZWQ9TG4sdC5leHRlbmQ9aCx0LmZlYXR1cmVGaWx0ZXI9UnIsdC5maWx0ZXJPYmplY3Q9eCx0LmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3ZhciByPU1hdGguc2luKGUpLG49TWF0aC5jb3MoZSk7cmV0dXJuIHRbMF09bix0WzFdPXIsdFsyXT0wLHRbM109LXIsdFs0XT1uLHRbNV09MCx0WzZdPTAsdFs3XT0wLHRbOF09MSx0fSx0LmdldEFuY2hvckFsaWdubWVudD15cyx0LmdldEFuY2hvckp1c3RpZmljYXRpb249cGMsdC5nZXRBcnJheUJ1ZmZlcj12dCx0LmdldEltYWdlPXl0LHQuZ2V0SlNPTj1mdW5jdGlvbih0LGUpe3JldHVybiBndChoKHQse3R5cGU6Impzb24ifSksZSl9LHQuZ2V0UmVmZXJyZXI9aHQsdC5nZXRWaWRlbz1mdW5jdGlvbih0LGUpe3ZhciByLG4sYT1zZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7YS5tdXRlZD0hMCxhLm9ubG9hZHN0YXJ0PWZ1bmN0aW9uKCl7ZShudWxsLGEpfTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzb3VyY2UiKTtyPXRbaV0sbj12b2lkIDAsKG49c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLmhyZWY9ciwobi5wcm90b2NvbCE9PXNlbGYuZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2x8fG4uaG9zdCE9PXNlbGYuZG9jdW1lbnQubG9jYXRpb24uaG9zdCkmJihhLmNyb3NzT3JpZ2luPSJBbm9ueW1vdXMiKSxvLnNyYz10W2ldLGEuYXBwZW5kQ2hpbGQobyl9cmV0dXJue2NhbmNlbDpmdW5jdGlvbigpe319fSx0LmlkZW50aXR5PWZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPTEsdFsxXT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNV09MSx0WzZdPTAsdFs3XT0wLHRbOF09MCx0WzldPTAsdFsxMF09MSx0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wLHRbMTVdPTEsdH0sdC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxhPWVbMl0saT1lWzNdLG89ZVs0XSxzPWVbNV0sbD1lWzZdLGM9ZVs3XSx1PWVbOF0saD1lWzldLGY9ZVsxMF0scD1lWzExXSxkPWVbMTJdLGc9ZVsxM10sdj1lWzE0XSxtPWVbMTVdLHk9cipzLW4qbyx4PXIqbC1hKm8sYj1yKmMtaSpvLF89bipsLWEqcyx3PW4qYy1pKnMsaz1hKmMtaSpsLFQ9dSpnLWgqZCxNPXUqdi1mKmQsQT11Km0tcCpkLFM9aCp2LWYqZyxFPWgqbS1wKmcsTD1mKm0tcCp2LEM9eSpMLXgqRStiKlMrXypBLXcqTStrKlQ7cmV0dXJuIEM/KEM9MS9DLHRbMF09KHMqTC1sKkUrYypTKSpDLHRbMV09KGEqRS1uKkwtaSpTKSpDLHRbMl09KGcqay12KncrbSpfKSpDLHRbM109KGYqdy1oKmstcCpfKSpDLHRbNF09KGwqQS1vKkwtYypNKSpDLHRbNV09KHIqTC1hKkEraSpNKSpDLHRbNl09KHYqYi1kKmstbSp4KSpDLHRbN109KHUqay1mKmIrcCp4KSpDLHRbOF09KG8qRS1zKkErYypUKSpDLHRbOV09KG4qQS1yKkUtaSpUKSpDLHRbMTBdPShkKnctZypiK20qeSkqQyx0WzExXT0oaCpiLXUqdy1wKnkpKkMsdFsxMl09KHMqTS1vKlMtbCpUKSpDLHRbMTNdPShyKlMtbipNK2EqVCkqQyx0WzE0XT0oZyp4LWQqXy12KnkpKkMsdFsxNV09KHUqXy1oKngrZip5KSpDLHQpOm51bGx9LHQuaXNDaGFyPXhuLHQuaXNNYXBib3hVUkw9VSx0LmtleXNEaWZmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W107Zm9yKHZhciBuIGluIHQpbiBpbiBlfHxyLnB1c2gobik7cmV0dXJuIHJ9LHQubWFrZVJlcXVlc3Q9Z3QsdC5tYXBPYmplY3Q9eSx0Lm1lcmNhdG9yWGZyb21Mbmc9TGwsdC5tZXJjYXRvcllmcm9tTGF0PUNsLHQubWVyY2F0b3JaZnJvbUFsdGl0dWRlPVBsLHQubXVsdGlwbHk9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFdLGk9ZVsyXSxvPWVbM10scz1lWzRdLGw9ZVs1XSxjPWVbNl0sdT1lWzddLGg9ZVs4XSxmPWVbOV0scD1lWzEwXSxkPWVbMTFdLGc9ZVsxMl0sdj1lWzEzXSxtPWVbMTRdLHk9ZVsxNV0seD1yWzBdLGI9clsxXSxfPXJbMl0sdz1yWzNdO3JldHVybiB0WzBdPXgqbitiKnMrXypoK3cqZyx0WzFdPXgqYStiKmwrXypmK3cqdix0WzJdPXgqaStiKmMrXypwK3cqbSx0WzNdPXgqbytiKnUrXypkK3cqeSx4PXJbNF0sYj1yWzVdLF89cls2XSx3PXJbN10sdFs0XT14Km4rYipzK18qaCt3KmcsdFs1XT14KmErYipsK18qZit3KnYsdFs2XT14KmkrYipjK18qcCt3Km0sdFs3XT14Km8rYip1K18qZCt3KnkseD1yWzhdLGI9cls5XSxfPXJbMTBdLHc9clsxMV0sdFs4XT14Km4rYipzK18qaCt3KmcsdFs5XT14KmErYipsK18qZit3KnYsdFsxMF09eCppK2IqYytfKnArdyptLHRbMTFdPXgqbytiKnUrXypkK3cqeSx4PXJbMTJdLGI9clsxM10sXz1yWzE0XSx3PXJbMTVdLHRbMTJdPXgqbitiKnMrXypoK3cqZyx0WzEzXT14KmErYipsK18qZit3KnYsdFsxNF09eCppK2IqYytfKnArdyptLHRbMTVdPXgqbytiKnUrXypkK3cqeSx0fSx0Lm12dD1Jbyx0Lm51bWJlcj15ZSx0Lm9ydGhvPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe3ZhciBzPTEvKGUtciksbD0xLyhuLWEpLGM9MS8oaS1vKTtyZXR1cm4gdFswXT0tMipzLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPS0yKmwsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTIqYyx0WzExXT0wLHRbMTJdPShlK3IpKnMsdFsxM109KGErbikqbCx0WzE0XT0obytpKSpjLHRbMTVdPTEsdH0sdC5wYXJzZUdseXBoUEJGPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdGwodCkucmVhZEZpZWxkcyh5bCxbXSl9LHQucGJmPXRsLHQucGVyZm9ybVN5bWJvbExheW91dD1mdW5jdGlvbih0LGUscixuLGksbyl7dC5jcmVhdGVBcnJheXMoKTt2YXIgcz01MTIqdC5vdmVyc2NhbGluZzt0LnRpbGVQaXhlbFJhdGlvPWVpL3MsdC5jb21wYXJlVGV4dD17fSx0Lmljb25zTmVlZExpbmVhcj0hMTt2YXIgbD10LmxheWVyc1swXS5sYXlvdXQsYz10LmxheWVyc1swXS5fdW5ldmFsdWF0ZWRMYXlvdXQuX3ZhbHVlcyx1PXt9O2lmKCJjb21wb3NpdGUiPT09dC50ZXh0U2l6ZURhdGEua2luZCl7dmFyIGg9dC50ZXh0U2l6ZURhdGEsZj1oLm1pblpvb20scD1oLm1heFpvb207dS5jb21wb3NpdGVUZXh0U2l6ZXM9W2NbInRleHQtc2l6ZSJdLnBvc3NpYmx5RXZhbHVhdGUobmV3IFBuKGYpKSxjWyJ0ZXh0LXNpemUiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyBQbihwKSldfWlmKCJjb21wb3NpdGUiPT09dC5pY29uU2l6ZURhdGEua2luZCl7dmFyIGQ9dC5pY29uU2l6ZURhdGEsZz1kLm1pblpvb20sdj1kLm1heFpvb207dS5jb21wb3NpdGVJY29uU2l6ZXM9W2NbImljb24tc2l6ZSJdLnBvc3NpYmx5RXZhbHVhdGUobmV3IFBuKGcpKSxjWyJpY29uLXNpemUiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyBQbih2KSldfXUubGF5b3V0VGV4dFNpemU9Y1sidGV4dC1zaXplIl0ucG9zc2libHlFdmFsdWF0ZShuZXcgUG4odC56b29tKzEpKSx1LmxheW91dEljb25TaXplPWNbImljb24tc2l6ZSJdLnBvc3NpYmx5RXZhbHVhdGUobmV3IFBuKHQuem9vbSsxKSksdS50ZXh0TWF4U2l6ZT1jWyJ0ZXh0LXNpemUiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyBQbigxOCkpO2Zvcih2YXIgbT1sLmdldCgidGV4dC1saW5lLWhlaWdodCIpKmxzLHk9Im1hcCI9PT1sLmdldCgidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiKSYmInBvaW50IiE9PWwuZ2V0KCJzeW1ib2wtcGxhY2VtZW50IikseD1sLmdldCgidGV4dC1rZWVwLXVwcmlnaHQiKSxiPWZ1bmN0aW9uKCl7dmFyIG89a1tfXSxzPWwuZ2V0KCJ0ZXh0LWZvbnQiKS5ldmFsdWF0ZShvLHt9KS5qb2luKCIsIiksYz1yLGg9e2hvcml6b250YWw6e30sdmVydGljYWw6dm9pZCAwfSxmPW8udGV4dCxwPVswLDBdO2lmKGYpe3ZhciBkPWYudG9TdHJpbmcoKSxnPWwuZ2V0KCJ0ZXh0LWxldHRlci1zcGFjaW5nIikuZXZhbHVhdGUobyx7fSkqbHMsdj1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPWQ7ZTxyLmxlbmd0aDtlKz0xKWlmKCFfbihyW2VdLmNoYXJDb2RlQXQoMCkpKXJldHVybiExO3JldHVybiEwfSgpP2c6MCxiPWwuZ2V0KCJ0ZXh0LWFuY2hvciIpLmV2YWx1YXRlKG8se30pLFQ9bC5nZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIiksTT1sLmdldCgidGV4dC1yYWRpYWwtb2Zmc2V0IikuZXZhbHVhdGUobyx7fSk7VHx8KHA9TT9mYyhiLE0qbHMpOmwuZ2V0KCJ0ZXh0LW9mZnNldCIpLmV2YWx1YXRlKG8se30pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdCpsc30pKTt2YXIgQT15PyJjZW50ZXIiOmwuZ2V0KCJ0ZXh0LWp1c3RpZnkiKS5ldmFsdWF0ZShvLHt9KSxTPSJwb2ludCI9PT1sLmdldCgic3ltYm9sLXBsYWNlbWVudCIpP2wuZ2V0KCJ0ZXh0LW1heC13aWR0aCIpLmV2YWx1YXRlKG8se30pKmxzOjAsRT1mdW5jdGlvbigpe3QuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmYm4oZCkmJihoLnZlcnRpY2FsPWhzKGYsZSxzLFMsbSxiLCJsZWZ0Iix2LHAsY3MudmVydGljYWwsITApKX07aWYoIXkmJlQpe2Zvcih2YXIgTD0iYXV0byI9PT1BP1QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBwYyh0KX0pOltBXSxDPSExLFA9MDtQPEwubGVuZ3RoO1ArKyl7dmFyIE89TFtQXTtpZighaC5ob3Jpem9udGFsW09dKWlmKEMpaC5ob3Jpem9udGFsW09dPWguaG9yaXpvbnRhbFswXTtlbHNle3ZhciB6PWhzKGYsZSxzLFMsbSwiY2VudGVyIixPLHYscCxjcy5ob3Jpem9udGFsLCExKTt6JiYoaC5ob3Jpem9udGFsW09dPXosQz0xPT09ei5saW5lQ291bnQpfX1FKCl9ZWxzZXsiYXV0byI9PT1BJiYoQT1wYyhiKSk7dmFyIEk9aHMoZixlLHMsUyxtLGIsQSx2LHAsY3MuaG9yaXpvbnRhbCwhMSk7SSYmKGguaG9yaXpvbnRhbFtBXT1JKSxFKCksYm4oZCkmJnkmJngmJihoLnZlcnRpY2FsPWhzKGYsZSxzLFMsbSxiLEEsdixwLGNzLnZlcnRpY2FsLCExKSl9fXZhciBEPXZvaWQgMDtpZihvLmljb24pe3ZhciBSPW5bby5pY29uXTtSJiYoRD1mdW5jdGlvbih0LGUscil7dmFyIG49eXMociksYT1uLmhvcml6b250YWxBbGlnbixpPW4udmVydGljYWxBbGlnbixvPWVbMF0scz1lWzFdLGw9by10LmRpc3BsYXlTaXplWzBdKmEsYz1sK3QuZGlzcGxheVNpemVbMF0sdT1zLXQuZGlzcGxheVNpemVbMV0qaTtyZXR1cm57aW1hZ2U6dCx0b3A6dSxib3R0b206dSt0LmRpc3BsYXlTaXplWzFdLGxlZnQ6bCxyaWdodDpjfX0oaVtvLmljb25dLGwuZ2V0KCJpY29uLW9mZnNldCIpLmV2YWx1YXRlKG8se30pLGwuZ2V0KCJpY29uLWFuY2hvciIpLmV2YWx1YXRlKG8se30pKSx2b2lkIDA9PT10LnNkZkljb25zP3Quc2RmSWNvbnM9Ui5zZGY6dC5zZGZJY29ucyE9PVIuc2RmJiZ3KCJTdHlsZSBzaGVldCB3YXJuaW5nOiBDYW5ub3QgbWl4IFNERiBhbmQgbm9uLVNERiBpY29ucyBpbiBvbmUgYnVmZmVyIiksUi5waXhlbFJhdGlvIT09dC5waXhlbFJhdGlvP3QuaWNvbnNOZWVkTGluZWFyPSEwOjAhPT1sLmdldCgiaWNvbi1yb3RhdGUiKS5jb25zdGFudE9yKDEpJiYodC5pY29uc05lZWRMaW5lYXI9ITApKX0oT2JqZWN0LmtleXMoaC5ob3Jpem9udGFsKS5sZW5ndGh8fEQpJiZmdW5jdGlvbih0LGUscixuLGksbyxzKXt2YXIgbD1vLmxheW91dFRleHRTaXplLmV2YWx1YXRlKGUse30pLGM9by5sYXlvdXRJY29uU2l6ZS5ldmFsdWF0ZShlLHt9KSx1PW8udGV4dE1heFNpemUuZXZhbHVhdGUoZSx7fSk7dm9pZCAwPT09dSYmKHU9bCk7dmFyIGg9dC5sYXllcnNbMF0ubGF5b3V0LGY9aC5nZXQoImljb24tb2Zmc2V0IikuZXZhbHVhdGUoZSx7fSkscD12YyhyLmhvcml6b250YWwpLGQ9bC8yNCxnPXQudGlsZVBpeGVsUmF0aW8qZCx2PXQudGlsZVBpeGVsUmF0aW8qdS8yNCxtPXQudGlsZVBpeGVsUmF0aW8qYyx5PXQudGlsZVBpeGVsUmF0aW8qaC5nZXQoInN5bWJvbC1zcGFjaW5nIikseD1oLmdldCgidGV4dC1wYWRkaW5nIikqdC50aWxlUGl4ZWxSYXRpbyxiPWguZ2V0KCJpY29uLXBhZGRpbmciKSp0LnRpbGVQaXhlbFJhdGlvLF89aC5nZXQoInRleHQtbWF4LWFuZ2xlIikvMTgwKk1hdGguUEksaz0ibWFwIj09PWguZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCIpJiYicG9pbnQiIT09aC5nZXQoInN5bWJvbC1wbGFjZW1lbnQiKSxUPSJtYXAiPT09aC5nZXQoImljb24tcm90YXRpb24tYWxpZ25tZW50IikmJiJwb2ludCIhPT1oLmdldCgic3ltYm9sLXBsYWNlbWVudCIpLE09aC5nZXQoInN5bWJvbC1wbGFjZW1lbnQiKSxBPXkvMixTPWZ1bmN0aW9uKGwsYyl7Yy54PDB8fGMueD49ZWl8fGMueTwwfHxjLnk+PWVpfHxmdW5jdGlvbih0LGUscixuLGksbyxzLGwsYyx1LGgsZixwLGQsZyx2LG0seSx4LGIsXyl7dmFyIGssVCxNLEE9dC5hZGRUb0xpbmVWZXJ0ZXhBcnJheShlLHIpLFM9MCxFPTAsTD0wLEM9e30sUD1sYygiIiksTz0oby5sYXlvdXQuZ2V0KCJ0ZXh0LXJhZGlhbC1vZmZzZXQiKS5ldmFsdWF0ZSh4LHt9KXx8MCkqbHM7aWYodC5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZuLnZlcnRpY2FsKXt2YXIgej1vLmxheW91dC5nZXQoInRleHQtcm90YXRlIikuZXZhbHVhdGUoeCx7fSkrOTAsST1uLnZlcnRpY2FsO009bmV3IHRjKHMscixlLGwsYyx1LEksaCxmLHAsdC5vdmVyc2NhbGluZyx6KX1mb3IodmFyIEQgaW4gbi5ob3Jpem9udGFsKXt2YXIgUj1uLmhvcml6b250YWxbRF07aWYoIWspe1A9bGMoUi50ZXh0KTt2YXIgRj1vLmxheW91dC5nZXQoInRleHQtcm90YXRlIikuZXZhbHVhdGUoeCx7fSk7az1uZXcgdGMocyxyLGUsbCxjLHUsUixoLGYscCx0Lm92ZXJzY2FsaW5nLEYpfXZhciBCPTE9PT1SLmxpbmVDb3VudDtpZihFKz1nYyh0LGUsUixvLHAseCxkLEEsbi52ZXJ0aWNhbD9jcy5ob3Jpem9udGFsOmNzLmhvcml6b250YWxPbmx5LEI/T2JqZWN0LmtleXMobi5ob3Jpem9udGFsKTpbRF0sQyxiLF8pLEIpYnJlYWt9bi52ZXJ0aWNhbCYmKEwrPWdjKHQsZSxuLnZlcnRpY2FsLG8scCx4LGQsQSxjcy52ZXJ0aWNhbCxbInZlcnRpY2FsIl0sQyxiLF8pKTt2YXIgTj1rP2suYm94U3RhcnRJbmRleDp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxqPWs/ay5ib3hFbmRJbmRleDp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxWPU0/TS5ib3hTdGFydEluZGV4OnQuY29sbGlzaW9uQm94QXJyYXkubGVuZ3RoLFU9TT9NLmJveEVuZEluZGV4OnQuY29sbGlzaW9uQm94QXJyYXkubGVuZ3RoO2lmKGkpe3ZhciBxPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXt2YXIgcyxsLGMsdSxoPWUuaW1hZ2UsZj1yLmxheW91dCxwPWUudG9wLTEvaC5waXhlbFJhdGlvLGQ9ZS5sZWZ0LTEvaC5waXhlbFJhdGlvLGc9ZS5ib3R0b20rMS9oLnBpeGVsUmF0aW8sdj1lLnJpZ2h0KzEvaC5waXhlbFJhdGlvO2lmKCJub25lIiE9PWYuZ2V0KCJpY29uLXRleHQtZml0IikmJmkpe3ZhciBtPXYtZCx5PWctcCx4PWYuZ2V0KCJ0ZXh0LXNpemUiKS5ldmFsdWF0ZShvLHt9KS8yNCxiPWkubGVmdCp4LF89aS5yaWdodCp4LHc9aS50b3AqeCxrPV8tYixUPWkuYm90dG9tKngtdyxNPWYuZ2V0KCJpY29uLXRleHQtZml0LXBhZGRpbmciKVswXSxBPWYuZ2V0KCJpY29uLXRleHQtZml0LXBhZGRpbmciKVsxXSxTPWYuZ2V0KCJpY29uLXRleHQtZml0LXBhZGRpbmciKVsyXSxFPWYuZ2V0KCJpY29uLXRleHQtZml0LXBhZGRpbmciKVszXSxMPSJ3aWR0aCI9PT1mLmdldCgiaWNvbi10ZXh0LWZpdCIpPy41KihULXkpOjAsQz0iaGVpZ2h0Ij09PWYuZ2V0KCJpY29uLXRleHQtZml0Iik/LjUqKGstbSk6MCxQPSJ3aWR0aCI9PT1mLmdldCgiaWNvbi10ZXh0LWZpdCIpfHwiYm90aCI9PT1mLmdldCgiaWNvbi10ZXh0LWZpdCIpP2s6bSxPPSJoZWlnaHQiPT09Zi5nZXQoImljb24tdGV4dC1maXQiKXx8ImJvdGgiPT09Zi5nZXQoImljb24tdGV4dC1maXQiKT9UOnk7cz1uZXcgYShiK0MtRSx3K0wtTSksbD1uZXcgYShiK0MrQStQLHcrTC1NKSxjPW5ldyBhKGIrQytBK1AsdytMK1MrTyksdT1uZXcgYShiK0MtRSx3K0wrUytPKX1lbHNlIHM9bmV3IGEoZCxwKSxsPW5ldyBhKHYscCksYz1uZXcgYSh2LGcpLHU9bmV3IGEoZCxnKTt2YXIgej1yLmxheW91dC5nZXQoImljb24tcm90YXRlIikuZXZhbHVhdGUobyx7fSkqTWF0aC5QSS8xODA7aWYoeil7dmFyIEk9TWF0aC5zaW4oeiksRD1NYXRoLmNvcyh6KSxSPVtELC1JLEksRF07cy5fbWF0TXVsdChSKSxsLl9tYXRNdWx0KFIpLHUuX21hdE11bHQoUiksYy5fbWF0TXVsdChSKX1yZXR1cm5be3RsOnMsdHI6bCxibDp1LGJyOmMsdGV4OmgucGFkZGVkUmVjdCx3cml0aW5nTW9kZTp2b2lkIDAsZ2x5cGhPZmZzZXQ6WzAsMF0sc2VjdGlvbkluZGV4OjB9XX0oMCxpLG8sMCx2YyhuLmhvcml6b250YWwpLHgpLEg9by5sYXlvdXQuZ2V0KCJpY29uLXJvdGF0ZSIpLmV2YWx1YXRlKHgse30pO1Q9bmV3IHRjKHMscixlLGwsYyx1LGksZyx2LCExLHQub3ZlcnNjYWxpbmcsSCksUz00KnEubGVuZ3RoO3ZhciBHPXQuaWNvblNpemVEYXRhLFk9bnVsbDsic291cmNlIj09PUcua2luZD8oWT1bX3Mqby5sYXlvdXQuZ2V0KCJpY29uLXNpemUiKS5ldmFsdWF0ZSh4LHt9KV0pWzBdPmRjJiZ3KHQubGF5ZXJJZHNbMF0rJzogVmFsdWUgZm9yICJpY29uLXNpemUiIGlzID49IDI1Ni4gUmVkdWNlIHlvdXIgImljb24tc2l6ZSIuJyk6ImNvbXBvc2l0ZSI9PT1HLmtpbmQmJigoWT1bX3MqXy5jb21wb3NpdGVJY29uU2l6ZXNbMF0uZXZhbHVhdGUoeCx7fSksX3MqXy5jb21wb3NpdGVJY29uU2l6ZXNbMV0uZXZhbHVhdGUoeCx7fSldKVswXT5kY3x8WVsxXT5kYykmJncodC5sYXllcklkc1swXSsnOiBWYWx1ZSBmb3IgImljb24tc2l6ZSIgaXMgPj0gMjU2LiBSZWR1Y2UgeW91ciAiaWNvbi1zaXplIi4nKSx0LmFkZFN5bWJvbHModC5pY29uLHEsWSx5LG0seCwhMSxlLEEubGluZVN0YXJ0SW5kZXgsQS5saW5lTGVuZ3RoKX12YXIgVz1UP1QuYm94U3RhcnRJbmRleDp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxYPVQ/VC5ib3hFbmRJbmRleDp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aDt0LmdseXBoT2Zmc2V0QXJyYXkubGVuZ3RoPj1Pcy5NQVhfR0xZUEhTJiZ3KCJUb28gbWFueSBnbHlwaHMgYmVpbmcgcmVuZGVyZWQgaW4gYSB0aWxlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21hcGJveC9tYXBib3gtZ2wtanMvaXNzdWVzLzI5MDciKSx0LnN5bWJvbEluc3RhbmNlcy5lbXBsYWNlQmFjayhlLngsZS55LEMucmlnaHQ+PTA/Qy5yaWdodDotMSxDLmNlbnRlcj49MD9DLmNlbnRlcjotMSxDLmxlZnQ+PTA/Qy5sZWZ0Oi0xLEMudmVydGljYWx8fC0xLFAsTixqLFYsVSxXLFgsbCxFLEwsUywwLGgsTyl9KHQsYyxsLHIsbix0LmxheWVyc1swXSx0LmNvbGxpc2lvbkJveEFycmF5LGUuaW5kZXgsZS5zb3VyY2VMYXllckluZGV4LHQuaW5kZXgsZyx4LGsscyxtLGIsVCxmLGUsaSxvKX07aWYoImxpbmUiPT09TSlmb3IodmFyIEU9MCxMPWZ1bmN0aW9uKHQsZSxyLG4saSl7Zm9yKHZhciBvPVtdLHM9MDtzPHQubGVuZ3RoO3MrKylmb3IodmFyIGw9dFtzXSxjPXZvaWQgMCx1PTA7dTxsLmxlbmd0aC0xO3UrKyl7dmFyIGg9bFt1XSxmPWxbdSsxXTtoLng8MCYmZi54PDB8fChoLng8MD9oPW5ldyBhKDAsaC55KyhmLnktaC55KSooKDAtaC54KS8oZi54LWgueCkpKS5fcm91bmQoKTpmLng8MCYmKGY9bmV3IGEoMCxoLnkrKGYueS1oLnkpKigoMC1oLngpLyhmLngtaC54KSkpLl9yb3VuZCgpKSxoLnk8MCYmZi55PDB8fChoLnk8MD9oPW5ldyBhKGgueCsoZi54LWgueCkqKCgwLWgueSkvKGYueS1oLnkpKSwwKS5fcm91bmQoKTpmLnk8MCYmKGY9bmV3IGEoaC54KyhmLngtaC54KSooKDAtaC55KS8oZi55LWgueSkpLDApLl9yb3VuZCgpKSxoLng+PW4mJmYueD49bnx8KGgueD49bj9oPW5ldyBhKG4saC55KyhmLnktaC55KSooKG4taC54KS8oZi54LWgueCkpKS5fcm91bmQoKTpmLng+PW4mJihmPW5ldyBhKG4saC55KyhmLnktaC55KSooKG4taC54KS8oZi54LWgueCkpKS5fcm91bmQoKSksaC55Pj1pJiZmLnk+PWl8fChoLnk+PWk/aD1uZXcgYShoLngrKGYueC1oLngpKigoaS1oLnkpLyhmLnktaC55KSksaSkuX3JvdW5kKCk6Zi55Pj1pJiYoZj1uZXcgYShoLngrKGYueC1oLngpKigoaS1oLnkpLyhmLnktaC55KSksaSkuX3JvdW5kKCkpLGMmJmguZXF1YWxzKGNbYy5sZW5ndGgtMV0pfHwoYz1baF0sby5wdXNoKGMpKSxjLnB1c2goZikpKSkpfXJldHVybiBvfShlLmdlb21ldHJ5LDAsMCxlaSxlaSk7RTxMLmxlbmd0aDtFKz0xKWZvcih2YXIgQz1MW0VdLFA9MCxPPSRsKEMseSxfLHIudmVydGljYWx8fHAsbiwyNCx2LHQub3ZlcnNjYWxpbmcsZWkpO1A8Ty5sZW5ndGg7UCs9MSl7dmFyIHo9T1tQXTtwJiZtYyh0LHAudGV4dCxBLHopfHxTKEMseil9ZWxzZSBpZigibGluZS1jZW50ZXIiPT09TSlmb3IodmFyIEk9MCxEPWUuZ2VvbWV0cnk7STxELmxlbmd0aDtJKz0xKXt2YXIgUj1EW0ldO2lmKFIubGVuZ3RoPjEpe3ZhciBGPVFsKFIsXyxyLnZlcnRpY2FsfHxwLG4sMjQsdik7RiYmUyhSLEYpfX1lbHNlIGlmKCJQb2x5Z29uIj09PWUudHlwZSlmb3IodmFyIEI9MCxOPW1vKGUuZ2VvbWV0cnksMCk7QjxOLmxlbmd0aDtCKz0xKXt2YXIgaj1OW0JdLFY9bmMoaiwxNik7UyhqWzBdLG5ldyBicyhWLngsVi55LDApKX1lbHNlIGlmKCJMaW5lU3RyaW5nIj09PWUudHlwZSlmb3IodmFyIFU9MCxxPWUuZ2VvbWV0cnk7VTxxLmxlbmd0aDtVKz0xKXt2YXIgSD1xW1VdO1MoSCxuZXcgYnMoSFswXS54LEhbMF0ueSwwKSl9ZWxzZSBpZigiUG9pbnQiPT09ZS50eXBlKWZvcih2YXIgRz0wLFk9ZS5nZW9tZXRyeTtHPFkubGVuZ3RoO0crPTEpZm9yKHZhciBXPTAsWD1ZW0ddO1c8WC5sZW5ndGg7Vys9MSl7dmFyIFo9WFtXXTtTKFtaXSxuZXcgYnMoWi54LFoueSwwKSl9fSh0LG8saCxELGMsdSxwKX0sXz0wLGs9dC5mZWF0dXJlcztfPGsubGVuZ3RoO18rPTEpYigpO28mJnQuZ2VuZXJhdGVDb2xsaXNpb25EZWJ1Z0J1ZmZlcnMoKX0sdC5wZXJzcGVjdGl2ZT1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpLG89MS9NYXRoLnRhbihlLzIpO3JldHVybiB0WzBdPW8vcix0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT1vLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzExXT0tMSx0WzEyXT0wLHRbMTNdPTAsdFsxNV09MCxudWxsIT1hJiZhIT09MS8wPyhpPTEvKG4tYSksdFsxMF09KGErbikqaSx0WzE0XT0yKmEqbippKToodFsxMF09LTEsdFsxNF09LTIqbiksdH0sdC5waWNrPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGE9ZVtuXTthIGluIHQmJihyW2FdPXRbYV0pfXJldHVybiByfSx0LnBsdWdpbj1Dbix0LnBvbHlnb25JbnRlcnNlY3RzUG9seWdvbj1vaSx0LnBvc3RNYXBMb2FkRXZlbnQ9ZXQsdC5wb3N0VHVybnN0aWxlRXZlbnQ9JCx0LnBvdHBhY2s9cXMsdC5yYXN0ZXJCb3VuZHNBdHRyaWJ1dGVzPU5sLHQucmVmUHJvcGVydGllcz1bInR5cGUiLCJzb3VyY2UiLCJzb3VyY2UtbGF5ZXIiLCJtaW56b29tIiwibWF4em9vbSIsImZpbHRlciIsImxheW91dCJdLHQucmVnaXN0ZXI9ZG4sdC5yZWdpc3RlckZvclBsdWdpbkF2YWlsYWJpbGl0eT1mdW5jdGlvbih0KXtyZXR1cm4gU24/dCh7cGx1Z2luVVJMOlNuLGNvbXBsZXRpb25DYWxsYmFjazpNbn0pOkxuLm9uY2UoInBsdWdpbkF2YWlsYWJsZSIsdCksdH0sdC5yb3RhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFdLGk9ZVsyXSxvPWVbM10scz1NYXRoLnNpbihyKSxsPU1hdGguY29zKHIpO3JldHVybiB0WzBdPW4qbCtpKnMsdFsxXT1hKmwrbypzLHRbMl09biotcytpKmwsdFszXT1hKi1zK28qbCx0fSx0LnJvdGF0ZVg9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGguc2luKHIpLGE9TWF0aC5jb3MociksaT1lWzRdLG89ZVs1XSxzPWVbNl0sbD1lWzddLGM9ZVs4XSx1PWVbOV0saD1lWzEwXSxmPWVbMTFdO3JldHVybiBlIT09dCYmKHRbMF09ZVswXSx0WzFdPWVbMV0sdFsyXT1lWzJdLHRbM109ZVszXSx0WzEyXT1lWzEyXSx0WzEzXT1lWzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1lWzE1XSksdFs0XT1pKmErYypuLHRbNV09byphK3Uqbix0WzZdPXMqYStoKm4sdFs3XT1sKmErZipuLHRbOF09YyphLWkqbix0WzldPXUqYS1vKm4sdFsxMF09aCphLXMqbix0WzExXT1mKmEtbCpuLHR9LHQucm90YXRlWj1mdW5jdGlvbih0LGUscil7dmFyIG49TWF0aC5zaW4ociksYT1NYXRoLmNvcyhyKSxpPWVbMF0sbz1lWzFdLHM9ZVsyXSxsPWVbM10sYz1lWzRdLHU9ZVs1XSxoPWVbNl0sZj1lWzddO3JldHVybiBlIT09dCYmKHRbOF09ZVs4XSx0WzldPWVbOV0sdFsxMF09ZVsxMF0sdFsxMV09ZVsxMV0sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pLHRbMF09aSphK2Mqbix0WzFdPW8qYSt1Km4sdFsyXT1zKmEraCpuLHRbM109bCphK2Yqbix0WzRdPWMqYS1pKm4sdFs1XT11KmEtbypuLHRbNl09aCphLXMqbix0WzddPWYqYS1sKm4sdH0sdC5zY2FsZT1mdW5jdGlvbih0LGUscil7dmFyIG49clswXSxhPXJbMV0saT1yWzJdO3JldHVybiB0WzBdPWVbMF0qbix0WzFdPWVbMV0qbix0WzJdPWVbMl0qbix0WzNdPWVbM10qbix0WzRdPWVbNF0qYSx0WzVdPWVbNV0qYSx0WzZdPWVbNl0qYSx0WzddPWVbN10qYSx0WzhdPWVbOF0qaSx0WzldPWVbOV0qaSx0WzEwXT1lWzEwXSppLHRbMTFdPWVbMTFdKmksdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0sdH0sdC5zZXRDYWNoZUxpbWl0cz1mdW5jdGlvbih0LGUpe250PXQsYXQ9ZX0sdC5zZXRSVExUZXh0UGx1Z2luPWZ1bmN0aW9uKHQsZSl7aWYoQW4pdGhyb3cgbmV3IEVycm9yKCJzZXRSVExUZXh0UGx1Z2luIGNhbm5vdCBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuIik7QW49ITAsU249SS5yZXNvbHZlVVJMKHQpLE1uPWZ1bmN0aW9uKHQpe3Q/KEFuPSExLFNuPW51bGwsZSYmZSh0KSk6RW49ITB9LExuLmZpcmUobmV3IF90KCJwbHVnaW5BdmFpbGFibGUiLHtwbHVnaW5VUkw6U24sY29tcGxldGlvbkNhbGxiYWNrOk1ufSkpfSx0LnNwaGVyaWNhbFRvQ2FydGVzaWFuPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXTtyZXR1cm4gcis9OTAscio9TWF0aC5QSS8xODAsbio9TWF0aC5QSS8xODAse3g6ZSpNYXRoLmNvcyhyKSpNYXRoLnNpbihuKSx5OmUqTWF0aC5zaW4ocikqTWF0aC5zaW4obiksejplKk1hdGguY29zKG4pfX0sdC5zdHlsZVNwZWM9VHQsdC5zeW1ib2xTaXplPU1zLHQudHJhbnNmb3JtTWF0Mz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdO3JldHVybiB0WzBdPW4qclswXSthKnJbM10raSpyWzZdLHRbMV09bipyWzFdK2Eqcls0XStpKnJbN10sdFsyXT1uKnJbMl0rYSpyWzVdK2kqcls4XSx0fSx0LnRyYW5zZm9ybU1hdDQ9VGksdC50cmFuc2xhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnPXJbMF0sdj1yWzFdLG09clsyXTtyZXR1cm4gZT09PXQ/KHRbMTJdPWVbMF0qZytlWzRdKnYrZVs4XSptK2VbMTJdLHRbMTNdPWVbMV0qZytlWzVdKnYrZVs5XSptK2VbMTNdLHRbMTRdPWVbMl0qZytlWzZdKnYrZVsxMF0qbStlWzE0XSx0WzE1XT1lWzNdKmcrZVs3XSp2K2VbMTFdKm0rZVsxNV0pOihuPWVbMF0sYT1lWzFdLGk9ZVsyXSxvPWVbM10scz1lWzRdLGw9ZVs1XSxjPWVbNl0sdT1lWzddLGg9ZVs4XSxmPWVbOV0scD1lWzEwXSxkPWVbMTFdLHRbMF09bix0WzFdPWEsdFsyXT1pLHRbM109byx0WzRdPXMsdFs1XT1sLHRbNl09Yyx0WzddPXUsdFs4XT1oLHRbOV09Zix0WzEwXT1wLHRbMTFdPWQsdFsxMl09bipnK3MqditoKm0rZVsxMl0sdFsxM109YSpnK2wqditmKm0rZVsxM10sdFsxNF09aSpnK2MqditwKm0rZVsxNF0sdFsxNV09bypnK3UqditkKm0rZVsxNV0pLHR9LHQudW5pcXVlSWQ9cCx0LnZhbGlkYXRlQ3VzdG9tU3R5bGVMYXllcj1mdW5jdGlvbih0KXt2YXIgZT1bXSxyPXQuaWQ7cmV0dXJuIHZvaWQgMD09PXImJmUucHVzaCh7bWVzc2FnZToibGF5ZXJzLiIrcisnOiBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5ICJpZCInfSksdm9pZCAwPT09dC5yZW5kZXImJmUucHVzaCh7bWVzc2FnZToibGF5ZXJzLiIrcisnOiBtaXNzaW5nIHJlcXVpcmVkIG1ldGhvZCAicmVuZGVyIid9KSx0LnJlbmRlcmluZ01vZGUmJiIyZCIhPT10LnJlbmRlcmluZ01vZGUmJiIzZCIhPT10LnJlbmRlcmluZ01vZGUmJmUucHVzaCh7bWVzc2FnZToibGF5ZXJzLiIrcisnOiBwcm9wZXJ0eSAicmVuZGVyaW5nTW9kZSIgbXVzdCBiZSBlaXRoZXIgIjJkIiBvciAiM2QiJ30pLGV9LHQudmFsaWRhdGVMaWdodD1hbix0LnZhbGlkYXRlU3R5bGU9bm4sdC52YWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHRbcl0pO3JldHVybiBlfSx0LnZlY3RvclRpbGU9SW8sdC52ZXJzaW9uPSIxLjMuMiIsdC53YXJuT25jZT13LHQud2VicFN1cHBvcnRlZD1SLHQud2luZG93PXNlbGYsdC53cmFwPXV9KSxuKDAsZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj10eXBlb2YgdDtpZigibnVtYmVyIj09PXJ8fCJib29sZWFuIj09PXJ8fCJzdHJpbmciPT09cnx8bnVsbD09dClyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCk7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBuPSJbIixhPTAsaT10O2E8aS5sZW5ndGg7YSs9MSluKz1lKGlbYV0pKyIsIjtyZXR1cm4gbisiXSJ9Zm9yKHZhciBvPU9iamVjdC5rZXlzKHQpLnNvcnQoKSxzPSJ7IixsPTA7bDxvLmxlbmd0aDtsKyspcys9SlNPTi5zdHJpbmdpZnkob1tsXSkrIjoiK2UodFtvW2xdXSkrIiwiO3JldHVybiBzKyJ9In1mdW5jdGlvbiByKHIpe2Zvcih2YXIgbj0iIixhPTAsaT10LnJlZlByb3BlcnRpZXM7YTxpLmxlbmd0aDthKz0xKW4rPSIvIitlKHJbaVthXV0pO3JldHVybiBufXZhciBuPWZ1bmN0aW9uKHQpe3RoaXMua2V5Q2FjaGU9e30sdCYmdGhpcy5yZXBsYWNlKHQpfTtuLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKHQpe3RoaXMuX2xheWVyQ29uZmlncz17fSx0aGlzLl9sYXllcnM9e30sdGhpcy51cGRhdGUodCxbXSl9LG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgYT10aGlzLGk9MCxvPWU7aTxvLmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ldO3RoaXMuX2xheWVyQ29uZmlnc1tzLmlkXT1zO3ZhciBsPXRoaXMuX2xheWVyc1tzLmlkXT10LmNyZWF0ZVN0eWxlTGF5ZXIocyk7bC5fZmVhdHVyZUZpbHRlcj10LmZlYXR1cmVGaWx0ZXIobC5maWx0ZXIpLHRoaXMua2V5Q2FjaGVbcy5pZF0mJmRlbGV0ZSB0aGlzLmtleUNhY2hlW3MuaWRdfWZvcih2YXIgYz0wLHU9bjtjPHUubGVuZ3RoO2MrPTEpe3ZhciBoPXVbY107ZGVsZXRlIHRoaXMua2V5Q2FjaGVbaF0sZGVsZXRlIHRoaXMuX2xheWVyQ29uZmlnc1toXSxkZWxldGUgdGhpcy5fbGF5ZXJzW2hdfXRoaXMuZmFtaWxpZXNCeVNvdXJjZT17fTtmb3IodmFyIGY9MCxwPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXt9LGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIGk9ZSYmZVt0W2FdLmlkXXx8cih0W2FdKTtlJiYoZVt0W2FdLmlkXT1pKTt2YXIgbz1uW2ldO298fChvPW5baV09W10pLG8ucHVzaCh0W2FdKX12YXIgcz1bXTtmb3IodmFyIGwgaW4gbilzLnB1c2gobltsXSk7cmV0dXJuIHN9KHQudmFsdWVzKHRoaXMuX2xheWVyQ29uZmlncyksdGhpcy5rZXlDYWNoZSk7ZjxwLmxlbmd0aDtmKz0xKXt2YXIgZD1wW2ZdLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYS5fbGF5ZXJzW3QuaWRdfSksZz1kWzBdO2lmKCJub25lIiE9PWcudmlzaWJpbGl0eSl7dmFyIHY9Zy5zb3VyY2V8fCIiLG09dGhpcy5mYW1pbGllc0J5U291cmNlW3ZdO218fChtPXRoaXMuZmFtaWxpZXNCeVNvdXJjZVt2XT17fSk7dmFyIHk9Zy5zb3VyY2VMYXllcnx8Il9nZW9qc29uVGlsZUxheWVyIix4PW1beV07eHx8KHg9bVt5XT1bXSkseC5wdXNoKGQpfX19O3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciByPXt9LG49W107Zm9yKHZhciBhIGluIGUpe3ZhciBpPWVbYV0sbz1yW2FdPXt9O2Zvcih2YXIgcyBpbiBpKXt2YXIgbD1pWytzXTtpZihsJiYwIT09bC5iaXRtYXAud2lkdGgmJjAhPT1sLmJpdG1hcC5oZWlnaHQpe3ZhciBjPXt4OjAseTowLHc6bC5iaXRtYXAud2lkdGgrMixoOmwuYml0bWFwLmhlaWdodCsyfTtuLnB1c2goYyksb1tzXT17cmVjdDpjLG1ldHJpY3M6bC5tZXRyaWNzfX19fXZhciB1PXQucG90cGFjayhuKSxoPXUudyxmPXUuaCxwPW5ldyB0LkFscGhhSW1hZ2Uoe3dpZHRoOmh8fDEsaGVpZ2h0OmZ8fDF9KTtmb3IodmFyIGQgaW4gZSl7dmFyIGc9ZVtkXTtmb3IodmFyIHYgaW4gZyl7dmFyIG09Z1srdl07aWYobSYmMCE9PW0uYml0bWFwLndpZHRoJiYwIT09bS5iaXRtYXAuaGVpZ2h0KXt2YXIgeT1yW2RdW3ZdLnJlY3Q7dC5BbHBoYUltYWdlLmNvcHkobS5iaXRtYXAscCx7eDowLHk6MH0se3g6eS54KzEseTp5LnkrMX0sbS5iaXRtYXApfX19dGhpcy5pbWFnZT1wLHRoaXMucG9zaXRpb25zPXJ9O3QucmVnaXN0ZXIoIkdseXBoQXRsYXMiLGEpO3ZhciBpPWZ1bmN0aW9uKGUpe3RoaXMudGlsZUlEPW5ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS50aWxlSUQub3ZlcnNjYWxlZFosZS50aWxlSUQud3JhcCxlLnRpbGVJRC5jYW5vbmljYWwueixlLnRpbGVJRC5jYW5vbmljYWwueCxlLnRpbGVJRC5jYW5vbmljYWwueSksdGhpcy51aWQ9ZS51aWQsdGhpcy56b29tPWUuem9vbSx0aGlzLnBpeGVsUmF0aW89ZS5waXhlbFJhdGlvLHRoaXMudGlsZVNpemU9ZS50aWxlU2l6ZSx0aGlzLnNvdXJjZT1lLnNvdXJjZSx0aGlzLm92ZXJzY2FsaW5nPXRoaXMudGlsZUlELm92ZXJzY2FsZUZhY3RvcigpLHRoaXMuc2hvd0NvbGxpc2lvbkJveGVzPWUuc2hvd0NvbGxpc2lvbkJveGVzLHRoaXMuY29sbGVjdFJlc291cmNlVGltaW5nPSEhZS5jb2xsZWN0UmVzb3VyY2VUaW1pbmcsdGhpcy5yZXR1cm5EZXBlbmRlbmNpZXM9ISFlLnJldHVybkRlcGVuZGVuY2llc307ZnVuY3Rpb24gbyhlLHIpe2Zvcih2YXIgbj1uZXcgdC5FdmFsdWF0aW9uUGFyYW1ldGVycyhyKSxhPTAsaT1lO2E8aS5sZW5ndGg7YSs9MSlpW2FdLnJlY2FsY3VsYXRlKG4pfWkucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGUscixuLGkpe3ZhciBzPXRoaXM7dGhpcy5zdGF0dXM9InBhcnNpbmciLHRoaXMuZGF0YT1lLHRoaXMuY29sbGlzaW9uQm94QXJyYXk9bmV3IHQuQ29sbGlzaW9uQm94QXJyYXk7dmFyIGw9bmV3IHQuRGljdGlvbmFyeUNvZGVyKE9iamVjdC5rZXlzKGUubGF5ZXJzKS5zb3J0KCkpLGM9bmV3IHQuRmVhdHVyZUluZGV4KHRoaXMudGlsZUlEKTtjLmJ1Y2tldExheWVySURzPVtdO3ZhciB1LGgsZixwLGQ9e30sZz17ZmVhdHVyZUluZGV4OmMsaWNvbkRlcGVuZGVuY2llczp7fSxwYXR0ZXJuRGVwZW5kZW5jaWVzOnt9LGdseXBoRGVwZW5kZW5jaWVzOnt9fSx2PXIuZmFtaWxpZXNCeVNvdXJjZVt0aGlzLnNvdXJjZV07Zm9yKHZhciBtIGluIHYpe3ZhciB5PWUubGF5ZXJzW21dO2lmKHkpezE9PT15LnZlcnNpb24mJnQud2Fybk9uY2UoJ1ZlY3RvciB0aWxlIHNvdXJjZSAiJyt0aGlzLnNvdXJjZSsnIiBsYXllciAiJyttKyciIGRvZXMgbm90IHVzZSB2ZWN0b3IgdGlsZSBzcGVjIHYyIGFuZCB0aGVyZWZvcmUgbWF5IGhhdmUgc29tZSByZW5kZXJpbmcgZXJyb3JzLicpO2Zvcih2YXIgeD1sLmVuY29kZShtKSxiPVtdLF89MDtfPHkubGVuZ3RoO18rKyl7dmFyIHc9eS5mZWF0dXJlKF8pO2IucHVzaCh7ZmVhdHVyZTp3LGluZGV4Ol8sc291cmNlTGF5ZXJJbmRleDp4fSl9Zm9yKHZhciBrPTAsVD12W21dO2s8VC5sZW5ndGg7ays9MSl7dmFyIE09VFtrXSxBPU1bMF07QS5taW56b29tJiZ0aGlzLnpvb208TWF0aC5mbG9vcihBLm1pbnpvb20pfHxBLm1heHpvb20mJnRoaXMuem9vbT49QS5tYXh6b29tfHwibm9uZSIhPT1BLnZpc2liaWxpdHkmJihvKE0sdGhpcy56b29tKSwoZFtBLmlkXT1BLmNyZWF0ZUJ1Y2tldCh7aW5kZXg6Yy5idWNrZXRMYXllcklEcy5sZW5ndGgsbGF5ZXJzOk0sem9vbTp0aGlzLnpvb20scGl4ZWxSYXRpbzp0aGlzLnBpeGVsUmF0aW8sb3ZlcnNjYWxpbmc6dGhpcy5vdmVyc2NhbGluZyxjb2xsaXNpb25Cb3hBcnJheTp0aGlzLmNvbGxpc2lvbkJveEFycmF5LHNvdXJjZUxheWVySW5kZXg6eCxzb3VyY2VJRDp0aGlzLnNvdXJjZX0pKS5wb3B1bGF0ZShiLGcpLGMuYnVja2V0TGF5ZXJJRHMucHVzaChNLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKSl9fX12YXIgUz10Lm1hcE9iamVjdChnLmdseXBoRGVwZW5kZW5jaWVzLGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoTnVtYmVyKX0pO09iamVjdC5rZXlzKFMpLmxlbmd0aD9uLnNlbmQoImdldEdseXBocyIse3VpZDp0aGlzLnVpZCxzdGFja3M6U30sZnVuY3Rpb24odCxlKXt1fHwodT10LGg9ZSxDLmNhbGwocykpfSk6aD17fTt2YXIgRT1PYmplY3Qua2V5cyhnLmljb25EZXBlbmRlbmNpZXMpO0UubGVuZ3RoP24uc2VuZCgiZ2V0SW1hZ2VzIix7aWNvbnM6RX0sZnVuY3Rpb24odCxlKXt1fHwodT10LGY9ZSxDLmNhbGwocykpfSk6Zj17fTt2YXIgTD1PYmplY3Qua2V5cyhnLnBhdHRlcm5EZXBlbmRlbmNpZXMpO2Z1bmN0aW9uIEMoKXtpZih1KXJldHVybiBpKHUpO2lmKGgmJmYmJnApe3ZhciBlPW5ldyBhKGgpLHI9bmV3IHQuSW1hZ2VBdGxhcyhmLHApO2Zvcih2YXIgbiBpbiBkKXt2YXIgcz1kW25dO3MgaW5zdGFuY2VvZiB0LlN5bWJvbEJ1Y2tldD8obyhzLmxheWVycyx0aGlzLnpvb20pLHQucGVyZm9ybVN5bWJvbExheW91dChzLGgsZS5wb3NpdGlvbnMsZixyLmljb25Qb3NpdGlvbnMsdGhpcy5zaG93Q29sbGlzaW9uQm94ZXMpKTpzLmhhc1BhdHRlcm4mJihzIGluc3RhbmNlb2YgdC5MaW5lQnVja2V0fHxzIGluc3RhbmNlb2YgdC5GaWxsQnVja2V0fHxzIGluc3RhbmNlb2YgdC5GaWxsRXh0cnVzaW9uQnVja2V0KSYmKG8ocy5sYXllcnMsdGhpcy56b29tKSxzLmFkZEZlYXR1cmVzKGcsci5wYXR0ZXJuUG9zaXRpb25zKSl9dGhpcy5zdGF0dXM9ImRvbmUiLGkobnVsbCx7YnVja2V0czp0LnZhbHVlcyhkKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIXQuaXNFbXB0eSgpfSksZmVhdHVyZUluZGV4OmMsY29sbGlzaW9uQm94QXJyYXk6dGhpcy5jb2xsaXNpb25Cb3hBcnJheSxnbHlwaEF0bGFzSW1hZ2U6ZS5pbWFnZSxpbWFnZUF0bGFzOnIsZ2x5cGhNYXA6dGhpcy5yZXR1cm5EZXBlbmRlbmNpZXM/aDpudWxsLGljb25NYXA6dGhpcy5yZXR1cm5EZXBlbmRlbmNpZXM/ZjpudWxsLGdseXBoUG9zaXRpb25zOnRoaXMucmV0dXJuRGVwZW5kZW5jaWVzP2UucG9zaXRpb25zOm51bGx9KX19TC5sZW5ndGg/bi5zZW5kKCJnZXRJbWFnZXMiLHtpY29uczpMfSxmdW5jdGlvbih0LGUpe3V8fCh1PXQscD1lLEMuY2FsbChzKSl9KTpwPXt9LEMuY2FsbCh0aGlzKX07dmFyIHM9InVuZGVmaW5lZCIhPXR5cGVvZiBwZXJmb3JtYW5jZSxsPXtnZXRFbnRyaWVzQnlOYW1lOmZ1bmN0aW9uKHQpe3JldHVybiEhKHMmJnBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKSYmcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSh0KX0sbWFyazpmdW5jdGlvbih0KXtyZXR1cm4hIShzJiZwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2UubWFyaykmJnBlcmZvcm1hbmNlLm1hcmsodCl9LG1lYXN1cmU6ZnVuY3Rpb24odCxlLHIpe3JldHVybiEhKHMmJnBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5tZWFzdXJlKSYmcGVyZm9ybWFuY2UubWVhc3VyZSh0LGUscil9LGNsZWFyTWFya3M6ZnVuY3Rpb24odCl7cmV0dXJuISEocyYmcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLmNsZWFyTWFya3MpJiZwZXJmb3JtYW5jZS5jbGVhck1hcmtzKHQpfSxjbGVhck1lYXN1cmVzOmZ1bmN0aW9uKHQpe3JldHVybiEhKHMmJnBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKSYmcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyh0KX19LGM9ZnVuY3Rpb24odCl7dGhpcy5fbWFya3M9e3N0YXJ0Olt0LnVybCwic3RhcnQiXS5qb2luKCIjIiksZW5kOlt0LnVybCwiZW5kIl0uam9pbigiIyIpLG1lYXN1cmU6dC51cmwudG9TdHJpbmcoKX0sbC5tYXJrKHRoaXMuX21hcmtzLnN0YXJ0KX07ZnVuY3Rpb24gdShlLHIpe3ZhciBuPXQuZ2V0QXJyYXlCdWZmZXIoZS5yZXF1ZXN0LGZ1bmN0aW9uKGUsbixhLGkpe2U/cihlKTpuJiZyKG51bGwse3ZlY3RvclRpbGU6bmV3IHQudmVjdG9yVGlsZS5WZWN0b3JUaWxlKG5ldyB0LnBiZihuKSkscmF3RGF0YTpuLGNhY2hlQ29udHJvbDphLGV4cGlyZXM6aX0pfSk7cmV0dXJuIGZ1bmN0aW9uKCl7bi5jYW5jZWwoKSxyKCl9fWMucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe2wubWFyayh0aGlzLl9tYXJrcy5lbmQpO3ZhciB0PWwuZ2V0RW50cmllc0J5TmFtZSh0aGlzLl9tYXJrcy5tZWFzdXJlKTtyZXR1cm4gMD09PXQubGVuZ3RoJiYobC5tZWFzdXJlKHRoaXMuX21hcmtzLm1lYXN1cmUsdGhpcy5fbWFya3Muc3RhcnQsdGhpcy5fbWFya3MuZW5kKSx0PWwuZ2V0RW50cmllc0J5TmFtZSh0aGlzLl9tYXJrcy5tZWFzdXJlKSxsLmNsZWFyTWFya3ModGhpcy5fbWFya3Muc3RhcnQpLGwuY2xlYXJNYXJrcyh0aGlzLl9tYXJrcy5lbmQpLGwuY2xlYXJNZWFzdXJlcyh0aGlzLl9tYXJrcy5tZWFzdXJlKSksdH0sbC5QZXJmb3JtYW5jZT1jO3ZhciBoPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmFjdG9yPXQsdGhpcy5sYXllckluZGV4PWUsdGhpcy5sb2FkVmVjdG9yRGF0YT1yfHx1LHRoaXMubG9hZGluZz17fSx0aGlzLmxvYWRlZD17fX07aC5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLGE9ZS51aWQ7dGhpcy5sb2FkaW5nfHwodGhpcy5sb2FkaW5nPXt9KTt2YXIgbz0hIShlJiZlLnJlcXVlc3QmJmUucmVxdWVzdC5jb2xsZWN0UmVzb3VyY2VUaW1pbmcpJiZuZXcgbC5QZXJmb3JtYW5jZShlLnJlcXVlc3QpLHM9dGhpcy5sb2FkaW5nW2FdPW5ldyBpKGUpO3MuYWJvcnQ9dGhpcy5sb2FkVmVjdG9yRGF0YShlLGZ1bmN0aW9uKGUsaSl7aWYoZGVsZXRlIG4ubG9hZGluZ1thXSxlfHwhaSlyZXR1cm4gcy5zdGF0dXM9ImRvbmUiLG4ubG9hZGVkW2FdPXMscihlKTt2YXIgbD1pLnJhd0RhdGEsYz17fTtpLmV4cGlyZXMmJihjLmV4cGlyZXM9aS5leHBpcmVzKSxpLmNhY2hlQ29udHJvbCYmKGMuY2FjaGVDb250cm9sPWkuY2FjaGVDb250cm9sKTt2YXIgdT17fTtpZihvKXt2YXIgaD1vLmZpbmlzaCgpO2gmJih1LnJlc291cmNlVGltaW5nPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaCkpKX1zLnZlY3RvclRpbGU9aS52ZWN0b3JUaWxlLHMucGFyc2UoaS52ZWN0b3JUaWxlLG4ubGF5ZXJJbmRleCxuLmFjdG9yLGZ1bmN0aW9uKGUsbil7aWYoZXx8IW4pcmV0dXJuIHIoZSk7cihudWxsLHQuZXh0ZW5kKHtyYXdUaWxlRGF0YTpsLnNsaWNlKDApfSxuLGMsdSkpfSksbi5sb2FkZWQ9bi5sb2FkZWR8fHt9LG4ubG9hZGVkW2FdPXN9KX0saC5wcm90b3R5cGUucmVsb2FkVGlsZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubG9hZGVkLG49dC51aWQsYT10aGlzO2lmKHImJnJbbl0pe3ZhciBpPXJbbl07aS5zaG93Q29sbGlzaW9uQm94ZXM9dC5zaG93Q29sbGlzaW9uQm94ZXM7dmFyIG89ZnVuY3Rpb24odCxyKXt2YXIgbj1pLnJlbG9hZENhbGxiYWNrO24mJihkZWxldGUgaS5yZWxvYWRDYWxsYmFjayxpLnBhcnNlKGkudmVjdG9yVGlsZSxhLmxheWVySW5kZXgsYS5hY3RvcixuKSksZSh0LHIpfTsicGFyc2luZyI9PT1pLnN0YXR1cz9pLnJlbG9hZENhbGxiYWNrPW86ImRvbmUiPT09aS5zdGF0dXMmJihpLnZlY3RvclRpbGU/aS5wYXJzZShpLnZlY3RvclRpbGUsdGhpcy5sYXllckluZGV4LHRoaXMuYWN0b3Isbyk6bygpKX19LGgucHJvdG90eXBlLmFib3J0VGlsZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubG9hZGluZyxuPXQudWlkO3ImJnJbbl0mJnJbbl0uYWJvcnQmJihyW25dLmFib3J0KCksZGVsZXRlIHJbbl0pLGUoKX0saC5wcm90b3R5cGUucmVtb3ZlVGlsZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubG9hZGVkLG49dC51aWQ7ciYmcltuXSYmZGVsZXRlIHJbbl0sZSgpfTt2YXIgZj1mdW5jdGlvbigpe3RoaXMubG9hZGVkPXt9fTtmLnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbihlLHIpe3ZhciBuPWUudWlkLGE9ZS5lbmNvZGluZyxpPWUucmF3SW1hZ2VEYXRhLG89bmV3IHQuREVNRGF0YShuLGksYSk7dGhpcy5sb2FkZWQ9dGhpcy5sb2FkZWR8fHt9LHRoaXMubG9hZGVkW25dPW8scihudWxsLG8pfSxmLnByb3RvdHlwZS5yZW1vdmVUaWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubG9hZGVkLHI9dC51aWQ7ZSYmZVtyXSYmZGVsZXRlIGVbcl19O3ZhciBwPXtSQURJVVM6NjM3ODEzNyxGTEFUVEVOSU5HOjEvMjk4LjI1NzIyMzU2MyxQT0xBUl9SQURJVVM6NjM1Njc1Mi4zMTQyfTtmdW5jdGlvbiBkKHQpe3ZhciBlPTA7aWYodCYmdC5sZW5ndGg+MCl7ZSs9TWF0aC5hYnMoZyh0WzBdKSk7Zm9yKHZhciByPTE7cjx0Lmxlbmd0aDtyKyspZS09TWF0aC5hYnMoZyh0W3JdKSl9cmV0dXJuIGV9ZnVuY3Rpb24gZyh0KXt2YXIgZSxyLG4sYSxpLG8scz0wLGw9dC5sZW5ndGg7aWYobD4yKXtmb3Iobz0wO288bDtvKyspbz09PWwtMj8obj1sLTIsYT1sLTEsaT0wKTpvPT09bC0xPyhuPWwtMSxhPTAsaT0xKToobj1vLGE9bysxLGk9bysyKSxlPXRbbl0scj10W2FdLHMrPSh2KHRbaV1bMF0pLXYoZVswXSkpKk1hdGguc2luKHYoclsxXSkpO3M9cypwLlJBRElVUypwLlJBRElVUy8yfXJldHVybiBzfWZ1bmN0aW9uIHYodCl7cmV0dXJuIHQqTWF0aC5QSS8xODB9dmFyIG09e2dlb21ldHJ5OmZ1bmN0aW9uIHQoZSl7dmFyIHIsbj0wO3N3aXRjaChlLnR5cGUpe2Nhc2UiUG9seWdvbiI6cmV0dXJuIGQoZS5jb29yZGluYXRlcyk7Y2FzZSJNdWx0aVBvbHlnb24iOmZvcihyPTA7cjxlLmNvb3JkaW5hdGVzLmxlbmd0aDtyKyspbis9ZChlLmNvb3JkaW5hdGVzW3JdKTtyZXR1cm4gbjtjYXNlIlBvaW50IjpjYXNlIk11bHRpUG9pbnQiOmNhc2UiTGluZVN0cmluZyI6Y2FzZSJNdWx0aUxpbmVTdHJpbmciOnJldHVybiAwO2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpmb3Iocj0wO3I8ZS5nZW9tZXRyaWVzLmxlbmd0aDtyKyspbis9dChlLmdlb21ldHJpZXNbcl0pO3JldHVybiBufX0scmluZzpnfTtmdW5jdGlvbiB5KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KHIsZSl9fWZ1bmN0aW9uIHgodCxlKXtlPSEhZSx0WzBdPWIodFswXSxlKTtmb3IodmFyIHI9MTtyPHQubGVuZ3RoO3IrKyl0W3JdPWIodFtyXSwhZSk7cmV0dXJuIHR9ZnVuY3Rpb24gYih0LGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbS5yaW5nKHQpPj0wfSh0KT09PWU/dDp0LnJldmVyc2UoKX12YXIgXz10LnZlY3RvclRpbGUuVmVjdG9yVGlsZUZlYXR1cmUucHJvdG90eXBlLnRvR2VvSlNPTix3PWZ1bmN0aW9uKGUpe3RoaXMuX2ZlYXR1cmU9ZSx0aGlzLmV4dGVudD10LkVYVEVOVCx0aGlzLnR5cGU9ZS50eXBlLHRoaXMucHJvcGVydGllcz1lLnRhZ3MsImlkImluIGUmJiFpc05hTihlLmlkKSYmKHRoaXMuaWQ9cGFyc2VJbnQoZS5pZCwxMCkpfTt3LnByb3RvdHlwZS5sb2FkR2VvbWV0cnk9ZnVuY3Rpb24oKXtpZigxPT09dGhpcy5fZmVhdHVyZS50eXBlKXtmb3IodmFyIGU9W10scj0wLG49dGhpcy5fZmVhdHVyZS5nZW9tZXRyeTtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl07ZS5wdXNoKFtuZXcgdC5Qb2ludCQxKGFbMF0sYVsxXSldKX1yZXR1cm4gZX1mb3IodmFyIGk9W10sbz0wLHM9dGhpcy5fZmVhdHVyZS5nZW9tZXRyeTtvPHMubGVuZ3RoO28rPTEpe2Zvcih2YXIgbD1bXSxjPTAsdT1zW29dO2M8dS5sZW5ndGg7Yys9MSl7dmFyIGg9dVtjXTtsLnB1c2gobmV3IHQuUG9pbnQkMShoWzBdLGhbMV0pKX1pLnB1c2gobCl9cmV0dXJuIGl9LHcucHJvdG90eXBlLnRvR2VvSlNPTj1mdW5jdGlvbih0LGUscil7cmV0dXJuIF8uY2FsbCh0aGlzLHQsZSxyKX07dmFyIGs9ZnVuY3Rpb24oZSl7dGhpcy5sYXllcnM9e19nZW9qc29uVGlsZUxheWVyOnRoaXN9LHRoaXMubmFtZT0iX2dlb2pzb25UaWxlTGF5ZXIiLHRoaXMuZXh0ZW50PXQuRVhURU5ULHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuX2ZlYXR1cmVzPWV9O2sucHJvdG90eXBlLmZlYXR1cmU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB3KHRoaXMuX2ZlYXR1cmVzW3RdKX07dmFyIFQ9dC52ZWN0b3JUaWxlLlZlY3RvclRpbGVGZWF0dXJlLE09QTtmdW5jdGlvbiBBKHQsZSl7dGhpcy5vcHRpb25zPWV8fHt9LHRoaXMuZmVhdHVyZXM9dCx0aGlzLmxlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiBTKHQsZSl7dGhpcy5pZD0ibnVtYmVyIj09dHlwZW9mIHQuaWQ/dC5pZDp2b2lkIDAsdGhpcy50eXBlPXQudHlwZSx0aGlzLnJhd0dlb21ldHJ5PTE9PT10LnR5cGU/W3QuZ2VvbWV0cnldOnQuZ2VvbWV0cnksdGhpcy5wcm9wZXJ0aWVzPXQudGFncyx0aGlzLmV4dGVudD1lfHw0MDk2fUEucHJvdG90eXBlLmZlYXR1cmU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBTKHRoaXMuZmVhdHVyZXNbdF0sdGhpcy5vcHRpb25zLmV4dGVudCl9LFMucHJvdG90eXBlLmxvYWRHZW9tZXRyeT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmF3R2VvbWV0cnk7dGhpcy5nZW9tZXRyeT1bXTtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7Zm9yKHZhciBuPWVbcl0sYT1bXSxpPTA7aTxuLmxlbmd0aDtpKyspYS5wdXNoKG5ldyB0LlBvaW50JDEobltpXVswXSxuW2ldWzFdKSk7dGhpcy5nZW9tZXRyeS5wdXNoKGEpfXJldHVybiB0aGlzLmdlb21ldHJ5fSxTLnByb3RvdHlwZS5iYm94PWZ1bmN0aW9uKCl7dGhpcy5nZW9tZXRyeXx8dGhpcy5sb2FkR2VvbWV0cnkoKTtmb3IodmFyIHQ9dGhpcy5nZW9tZXRyeSxlPTEvMCxyPS0xLzAsbj0xLzAsYT0tMS8wLGk9MDtpPHQubGVuZ3RoO2krKylmb3IodmFyIG89dFtpXSxzPTA7czxvLmxlbmd0aDtzKyspe3ZhciBsPW9bc107ZT1NYXRoLm1pbihlLGwueCkscj1NYXRoLm1heChyLGwueCksbj1NYXRoLm1pbihuLGwueSksYT1NYXRoLm1heChhLGwueSl9cmV0dXJuW2UsbixyLGFdfSxTLnByb3RvdHlwZS50b0dlb0pTT049VC5wcm90b3R5cGUudG9HZW9KU09OO3ZhciBFPVAsTD1QLEM9TTtmdW5jdGlvbiBQKGUpe3ZhciByPW5ldyB0LnBiZjtyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gdC5sYXllcnMpZS53cml0ZU1lc3NhZ2UoMyxPLHQubGF5ZXJzW3JdKX0oZSxyKSxyLmZpbmlzaCgpfWZ1bmN0aW9uIE8odCxlKXt2YXIgcjtlLndyaXRlVmFyaW50RmllbGQoMTUsdC52ZXJzaW9ufHwxKSxlLndyaXRlU3RyaW5nRmllbGQoMSx0Lm5hbWV8fCIiKSxlLndyaXRlVmFyaW50RmllbGQoNSx0LmV4dGVudHx8NDA5Nik7dmFyIG49e2tleXM6W10sdmFsdWVzOltdLGtleWNhY2hlOnt9LHZhbHVlY2FjaGU6e319O2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspbi5mZWF0dXJlPXQuZmVhdHVyZShyKSxlLndyaXRlTWVzc2FnZSgyLHosbik7dmFyIGE9bi5rZXlzO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspZS53cml0ZVN0cmluZ0ZpZWxkKDMsYVtyXSk7dmFyIGk9bi52YWx1ZXM7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyllLndyaXRlTWVzc2FnZSg0LEIsaVtyXSl9ZnVuY3Rpb24geih0LGUpe3ZhciByPXQuZmVhdHVyZTt2b2lkIDAhPT1yLmlkJiZlLndyaXRlVmFyaW50RmllbGQoMSxyLmlkKSxlLndyaXRlTWVzc2FnZSgyLEksdCksZS53cml0ZVZhcmludEZpZWxkKDMsci50eXBlKSxlLndyaXRlTWVzc2FnZSg0LEYscil9ZnVuY3Rpb24gSSh0LGUpe3ZhciByPXQuZmVhdHVyZSxuPXQua2V5cyxhPXQudmFsdWVzLGk9dC5rZXljYWNoZSxvPXQudmFsdWVjYWNoZTtmb3IodmFyIHMgaW4gci5wcm9wZXJ0aWVzKXt2YXIgbD1pW3NdO3ZvaWQgMD09PWwmJihuLnB1c2gocyksbD1uLmxlbmd0aC0xLGlbc109bCksZS53cml0ZVZhcmludChsKTt2YXIgYz1yLnByb3BlcnRpZXNbc10sdT10eXBlb2YgYzsic3RyaW5nIiE9PXUmJiJib29sZWFuIiE9PXUmJiJudW1iZXIiIT09dSYmKGM9SlNPTi5zdHJpbmdpZnkoYykpO3ZhciBoPXUrIjoiK2MsZj1vW2hdO3ZvaWQgMD09PWYmJihhLnB1c2goYyksZj1hLmxlbmd0aC0xLG9baF09ZiksZS53cml0ZVZhcmludChmKX19ZnVuY3Rpb24gRCh0LGUpe3JldHVybihlPDwzKSsoNyZ0KX1mdW5jdGlvbiBSKHQpe3JldHVybiB0PDwxXnQ+PjMxfWZ1bmN0aW9uIEYodCxlKXtmb3IodmFyIHI9dC5sb2FkR2VvbWV0cnkoKSxuPXQudHlwZSxhPTAsaT0wLG89ci5sZW5ndGgscz0wO3M8bztzKyspe3ZhciBsPXJbc10sYz0xOzE9PT1uJiYoYz1sLmxlbmd0aCksZS53cml0ZVZhcmludChEKDEsYykpO2Zvcih2YXIgdT0zPT09bj9sLmxlbmd0aC0xOmwubGVuZ3RoLGg9MDtoPHU7aCsrKXsxPT09aCYmMSE9PW4mJmUud3JpdGVWYXJpbnQoRCgyLHUtMSkpO3ZhciBmPWxbaF0ueC1hLHA9bFtoXS55LWk7ZS53cml0ZVZhcmludChSKGYpKSxlLndyaXRlVmFyaW50KFIocCkpLGErPWYsaSs9cH0zPT09biYmZS53cml0ZVZhcmludChEKDcsMSkpfX1mdW5jdGlvbiBCKHQsZSl7dmFyIHI9dHlwZW9mIHQ7InN0cmluZyI9PT1yP2Uud3JpdGVTdHJpbmdGaWVsZCgxLHQpOiJib29sZWFuIj09PXI/ZS53cml0ZUJvb2xlYW5GaWVsZCg3LHQpOiJudW1iZXIiPT09ciYmKHQlMSE9MD9lLndyaXRlRG91YmxlRmllbGQoMyx0KTp0PDA/ZS53cml0ZVNWYXJpbnRGaWVsZCg2LHQpOmUud3JpdGVWYXJpbnRGaWVsZCg1LHQpKX1mdW5jdGlvbiBOKHQsZSxyLG4pe2oodCxyLG4pLGooZSwyKnIsMipuKSxqKGUsMipyKzEsMipuKzEpfWZ1bmN0aW9uIGoodCxlLHIpe3ZhciBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1mdW5jdGlvbiBWKHQsZSxyLG4pe3ZhciBhPXQtcixpPWUtbjtyZXR1cm4gYSphK2kqaX1FLmZyb21WZWN0b3JUaWxlSnM9TCxFLmZyb21HZW9qc29uVnQ9ZnVuY3Rpb24odCxlKXtlPWV8fHt9O3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0KXJbbl09bmV3IE0odFtuXS5mZWF0dXJlcyxlKSxyW25dLm5hbWU9bixyW25dLnZlcnNpb249ZS52ZXJzaW9uLHJbbl0uZXh0ZW50PWUuZXh0ZW50O3JldHVybiBQKHtsYXllcnM6cn0pfSxFLkdlb0pTT05XcmFwcGVyPUM7dmFyIFU9ZnVuY3Rpb24odCl7cmV0dXJuIHRbMF19LHE9ZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19LEg9ZnVuY3Rpb24odCxlLHIsbixhKXt2b2lkIDA9PT1lJiYoZT1VKSx2b2lkIDA9PT1yJiYocj1xKSx2b2lkIDA9PT1uJiYobj02NCksdm9pZCAwPT09YSYmKGE9RmxvYXQ2NEFycmF5KSx0aGlzLm5vZGVTaXplPW4sdGhpcy5wb2ludHM9dDtmb3IodmFyIGk9dC5sZW5ndGg8NjU1MzY/VWludDE2QXJyYXk6VWludDMyQXJyYXksbz10aGlzLmlkcz1uZXcgaSh0Lmxlbmd0aCkscz10aGlzLmNvb3Jkcz1uZXcgYSgyKnQubGVuZ3RoKSxsPTA7bDx0Lmxlbmd0aDtsKyspb1tsXT1sLHNbMipsXT1lKHRbbF0pLHNbMipsKzFdPXIodFtsXSk7IWZ1bmN0aW9uIHQoZSxyLG4sYSxpLG8pe2lmKCEoaS1hPD1uKSl7dmFyIHM9YStpPj4xOyFmdW5jdGlvbiB0KGUscixuLGEsaSxvKXtmb3IoO2k+YTspe2lmKGktYT42MDApe3ZhciBzPWktYSsxLGw9bi1hKzEsYz1NYXRoLmxvZyhzKSx1PS41Kk1hdGguZXhwKDIqYy8zKSxoPS41Kk1hdGguc3FydChjKnUqKHMtdSkvcykqKGwtcy8yPDA/LTE6MSk7dChlLHIsbixNYXRoLm1heChhLE1hdGguZmxvb3Iobi1sKnUvcytoKSksTWF0aC5taW4oaSxNYXRoLmZsb29yKG4rKHMtbCkqdS9zK2gpKSxvKX12YXIgZj1yWzIqbitvXSxwPWEsZD1pO2ZvcihOKGUscixhLG4pLHJbMippK29dPmYmJk4oZSxyLGEsaSk7cDxkOyl7Zm9yKE4oZSxyLHAsZCkscCsrLGQtLTtyWzIqcCtvXTxmOylwKys7Zm9yKDtyWzIqZCtvXT5mOylkLS19clsyKmErb109PT1mP04oZSxyLGEsZCk6TihlLHIsKytkLGkpLGQ8PW4mJihhPWQrMSksbjw9ZCYmKGk9ZC0xKX19KGUscixzLGEsaSxvJTIpLHQoZSxyLG4sYSxzLTEsbysxKSx0KGUscixuLHMrMSxpLG8rMSl9fShvLHMsbiwwLG8ubGVuZ3RoLTEsMCl9O0gucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbih0LGUscixuLGEsaSxvKXtmb3IodmFyIHMsbCxjPVswLHQubGVuZ3RoLTEsMF0sdT1bXTtjLmxlbmd0aDspe3ZhciBoPWMucG9wKCksZj1jLnBvcCgpLHA9Yy5wb3AoKTtpZihmLXA8PW8pZm9yKHZhciBkPXA7ZDw9ZjtkKyspcz1lWzIqZF0sbD1lWzIqZCsxXSxzPj1yJiZzPD1hJiZsPj1uJiZsPD1pJiZ1LnB1c2godFtkXSk7ZWxzZXt2YXIgZz1NYXRoLmZsb29yKChwK2YpLzIpO3M9ZVsyKmddLGw9ZVsyKmcrMV0scz49ciYmczw9YSYmbD49biYmbDw9aSYmdS5wdXNoKHRbZ10pO3ZhciB2PShoKzEpJTI7KDA9PT1oP3I8PXM6bjw9bCkmJihjLnB1c2gocCksYy5wdXNoKGctMSksYy5wdXNoKHYpKSwoMD09PWg/YT49czppPj1sKSYmKGMucHVzaChnKzEpLGMucHVzaChmKSxjLnB1c2godikpfX1yZXR1cm4gdX0odGhpcy5pZHMsdGhpcy5jb29yZHMsdCxlLHIsbix0aGlzLm5vZGVTaXplKX0sSC5wcm90b3R5cGUud2l0aGluPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsbixhLGkpe2Zvcih2YXIgbz1bMCx0Lmxlbmd0aC0xLDBdLHM9W10sbD1hKmE7by5sZW5ndGg7KXt2YXIgYz1vLnBvcCgpLHU9by5wb3AoKSxoPW8ucG9wKCk7aWYodS1oPD1pKWZvcih2YXIgZj1oO2Y8PXU7ZisrKVYoZVsyKmZdLGVbMipmKzFdLHIsbik8PWwmJnMucHVzaCh0W2ZdKTtlbHNle3ZhciBwPU1hdGguZmxvb3IoKGgrdSkvMiksZD1lWzIqcF0sZz1lWzIqcCsxXTtWKGQsZyxyLG4pPD1sJiZzLnB1c2godFtwXSk7dmFyIHY9KGMrMSklMjsoMD09PWM/ci1hPD1kOm4tYTw9ZykmJihvLnB1c2goaCksby5wdXNoKHAtMSksby5wdXNoKHYpKSwoMD09PWM/cithPj1kOm4rYT49ZykmJihvLnB1c2gocCsxKSxvLnB1c2godSksby5wdXNoKHYpKX19cmV0dXJuIHN9KHRoaXMuaWRzLHRoaXMuY29vcmRzLHQsZSxyLHRoaXMubm9kZVNpemUpfTt2YXIgRz17bWluWm9vbTowLG1heFpvb206MTYscmFkaXVzOjQwLGV4dGVudDo1MTIsbm9kZVNpemU6NjQsbG9nOiExLHJlZHVjZTpudWxsLG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gdH19LFk9ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPSQoT2JqZWN0LmNyZWF0ZShHKSx0KSx0aGlzLnRyZWVzPW5ldyBBcnJheSh0aGlzLm9wdGlvbnMubWF4Wm9vbSsxKX07ZnVuY3Rpb24gVyh0LGUscixuLGEpe3JldHVybnt4OnQseTplLHpvb206MS8wLGlkOnIscGFyZW50SWQ6LTEsbnVtUG9pbnRzOm4scHJvcGVydGllczphfX1mdW5jdGlvbiBYKHQsZSl7dmFyIHI9dC5nZW9tZXRyeS5jb29yZGluYXRlcyxuPXJbMF0sYT1yWzFdO3JldHVybnt4OksobikseTpRKGEpLHpvb206MS8wLGluZGV4OmUscGFyZW50SWQ6LTF9fWZ1bmN0aW9uIFoodCl7cmV0dXJue3R5cGU6IkZlYXR1cmUiLGlkOnQuaWQscHJvcGVydGllczpKKHQpLGdlb21ldHJ5Ont0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6WyhuPXQueCwzNjAqKG4tLjUpKSwoZT10Lnkscj0oMTgwLTM2MCplKSpNYXRoLlBJLzE4MCwzNjAqTWF0aC5hdGFuKE1hdGguZXhwKHIpKS9NYXRoLlBJLTkwKV19fTt2YXIgZSxyLG59ZnVuY3Rpb24gSih0KXt2YXIgZT10Lm51bVBvaW50cyxyPWU+PTFlND9NYXRoLnJvdW5kKGUvMWUzKSsiayI6ZT49MWUzP01hdGgucm91bmQoZS8xMDApLzEwKyJrIjplO3JldHVybiAkKCQoe30sdC5wcm9wZXJ0aWVzKSx7Y2x1c3RlcjohMCxjbHVzdGVyX2lkOnQuaWQscG9pbnRfY291bnQ6ZSxwb2ludF9jb3VudF9hYmJyZXZpYXRlZDpyfSl9ZnVuY3Rpb24gSyh0KXtyZXR1cm4gdC8zNjArLjV9ZnVuY3Rpb24gUSh0KXt2YXIgZT1NYXRoLnNpbih0Kk1hdGguUEkvMTgwKSxyPS41LS4yNSpNYXRoLmxvZygoMStlKS8oMS1lKSkvTWF0aC5QSTtyZXR1cm4gcjwwPzA6cj4xPzE6cn1mdW5jdGlvbiAkKHQsZSl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdO3JldHVybiB0fWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIHQueX1mdW5jdGlvbiBydCh0LGUscixuLGEsaSl7dmFyIG89YS1yLHM9aS1uO2lmKDAhPT1vfHwwIT09cyl7dmFyIGw9KCh0LXIpKm8rKGUtbikqcykvKG8qbytzKnMpO2w+MT8ocj1hLG49aSk6bD4wJiYocis9bypsLG4rPXMqbCl9cmV0dXJuKG89dC1yKSpvKyhzPWUtbikqc31mdW5jdGlvbiBudCh0LGUscixuKXt2YXIgYT17aWQ6dm9pZCAwPT09dD9udWxsOnQsdHlwZTplLGdlb21ldHJ5OnIsdGFnczpuLG1pblg6MS8wLG1pblk6MS8wLG1heFg6LTEvMCxtYXhZOi0xLzB9O3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10Lmdlb21ldHJ5LHI9dC50eXBlO2lmKCJQb2ludCI9PT1yfHwiTXVsdGlQb2ludCI9PT1yfHwiTGluZVN0cmluZyI9PT1yKWF0KHQsZSk7ZWxzZSBpZigiUG9seWdvbiI9PT1yfHwiTXVsdGlMaW5lU3RyaW5nIj09PXIpZm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspYXQodCxlW25dKTtlbHNlIGlmKCJNdWx0aVBvbHlnb24iPT09cilmb3Iobj0wO248ZS5sZW5ndGg7bisrKWZvcih2YXIgYT0wO2E8ZVtuXS5sZW5ndGg7YSsrKWF0KHQsZVtuXVthXSl9KGEpLGF9ZnVuY3Rpb24gYXQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrPTMpdC5taW5YPU1hdGgubWluKHQubWluWCxlW3JdKSx0Lm1pblk9TWF0aC5taW4odC5taW5ZLGVbcisxXSksdC5tYXhYPU1hdGgubWF4KHQubWF4WCxlW3JdKSx0Lm1heFk9TWF0aC5tYXgodC5tYXhZLGVbcisxXSl9ZnVuY3Rpb24gaXQodCxlLHIsbil7aWYoZS5nZW9tZXRyeSl7dmFyIGE9ZS5nZW9tZXRyeS5jb29yZGluYXRlcyxpPWUuZ2VvbWV0cnkudHlwZSxvPU1hdGgucG93KHIudG9sZXJhbmNlLygoMTw8ci5tYXhab29tKSpyLmV4dGVudCksMikscz1bXSxsPWUuaWQ7aWYoci5wcm9tb3RlSWQ/bD1lLnByb3BlcnRpZXNbci5wcm9tb3RlSWRdOnIuZ2VuZXJhdGVJZCYmKGw9bnx8MCksIlBvaW50Ij09PWkpb3QoYSxzKTtlbHNlIGlmKCJNdWx0aVBvaW50Ij09PWkpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspb3QoYVtjXSxzKTtlbHNlIGlmKCJMaW5lU3RyaW5nIj09PWkpc3QoYSxzLG8sITEpO2Vsc2UgaWYoIk11bHRpTGluZVN0cmluZyI9PT1pKXtpZihyLmxpbmVNZXRyaWNzKXtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKXM9W10sc3QoYVtjXSxzLG8sITEpLHQucHVzaChudChsLCJMaW5lU3RyaW5nIixzLGUucHJvcGVydGllcykpO3JldHVybn1sdChhLHMsbywhMSl9ZWxzZSBpZigiUG9seWdvbiI9PT1pKWx0KGEscyxvLCEwKTtlbHNle2lmKCJNdWx0aVBvbHlnb24iIT09aSl7aWYoIkdlb21ldHJ5Q29sbGVjdGlvbiI9PT1pKXtmb3IoYz0wO2M8ZS5nZW9tZXRyeS5nZW9tZXRyaWVzLmxlbmd0aDtjKyspaXQodCx7aWQ6bCxnZW9tZXRyeTplLmdlb21ldHJ5Lmdlb21ldHJpZXNbY10scHJvcGVydGllczplLnByb3BlcnRpZXN9LHIsbik7cmV0dXJufXRocm93IG5ldyBFcnJvcigiSW5wdXQgZGF0YSBpcyBub3QgYSB2YWxpZCBHZW9KU09OIG9iamVjdC4iKX1mb3IoYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgdT1bXTtsdChhW2NdLHUsbywhMCkscy5wdXNoKHUpfX10LnB1c2gobnQobCxpLHMsZS5wcm9wZXJ0aWVzKSl9fWZ1bmN0aW9uIG90KHQsZSl7ZS5wdXNoKGN0KHRbMF0pKSxlLnB1c2godXQodFsxXSkpLGUucHVzaCgwKX1mdW5jdGlvbiBzdCh0LGUscixuKXtmb3IodmFyIGEsaSxvPTAscz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgbD1jdCh0W3NdWzBdKSxjPXV0KHRbc11bMV0pO2UucHVzaChsKSxlLnB1c2goYyksZS5wdXNoKDApLHM+MCYmKG8rPW4/KGEqYy1sKmkpLzI6TWF0aC5zcXJ0KE1hdGgucG93KGwtYSwyKStNYXRoLnBvdyhjLWksMikpKSxhPWwsaT1jfXZhciB1PWUubGVuZ3RoLTM7ZVsyXT0xLGZ1bmN0aW9uIHQoZSxyLG4sYSl7Zm9yKHZhciBpLG89YSxzPW4tcj4+MSxsPW4tcixjPWVbcl0sdT1lW3IrMV0saD1lW25dLGY9ZVtuKzFdLHA9ciszO3A8bjtwKz0zKXt2YXIgZD1ydChlW3BdLGVbcCsxXSxjLHUsaCxmKTtpZihkPm8paT1wLG89ZDtlbHNlIGlmKGQ9PT1vKXt2YXIgZz1NYXRoLmFicyhwLXMpO2c8bCYmKGk9cCxsPWcpfX1vPmEmJihpLXI+MyYmdChlLHIsaSxhKSxlW2krMl09byxuLWk+MyYmdChlLGksbixhKSl9KGUsMCx1LHIpLGVbdSsyXT0xLGUuc2l6ZT1NYXRoLmFicyhvKSxlLnN0YXJ0PTAsZS5lbmQ9ZS5zaXplfWZ1bmN0aW9uIGx0KHQsZSxyLG4pe2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgaT1bXTtzdCh0W2FdLGkscixuKSxlLnB1c2goaSl9fWZ1bmN0aW9uIGN0KHQpe3JldHVybiB0LzM2MCsuNX1mdW5jdGlvbiB1dCh0KXt2YXIgZT1NYXRoLnNpbih0Kk1hdGguUEkvMTgwKSxyPS41LS4yNSpNYXRoLmxvZygoMStlKS8oMS1lKSkvTWF0aC5QSTtyZXR1cm4gcjwwPzA6cj4xPzE6cn1mdW5jdGlvbiBodCh0LGUscixuLGEsaSxvLHMpe2lmKG4vPWUsaT49KHIvPWUpJiZvPG4pcmV0dXJuIHQ7aWYobzxyfHxpPj1uKXJldHVybiBudWxsO2Zvcih2YXIgbD1bXSxjPTA7Yzx0Lmxlbmd0aDtjKyspe3ZhciB1PXRbY10saD11Lmdlb21ldHJ5LGY9dS50eXBlLHA9MD09PWE/dS5taW5YOnUubWluWSxkPTA9PT1hP3UubWF4WDp1Lm1heFk7aWYocD49ciYmZDxuKWwucHVzaCh1KTtlbHNlIGlmKCEoZDxyfHxwPj1uKSl7dmFyIGc9W107aWYoIlBvaW50Ij09PWZ8fCJNdWx0aVBvaW50Ij09PWYpZnQoaCxnLHIsbixhKTtlbHNlIGlmKCJMaW5lU3RyaW5nIj09PWYpcHQoaCxnLHIsbixhLCExLHMubGluZU1ldHJpY3MpO2Vsc2UgaWYoIk11bHRpTGluZVN0cmluZyI9PT1mKWd0KGgsZyxyLG4sYSwhMSk7ZWxzZSBpZigiUG9seWdvbiI9PT1mKWd0KGgsZyxyLG4sYSwhMCk7ZWxzZSBpZigiTXVsdGlQb2x5Z29uIj09PWYpZm9yKHZhciB2PTA7djxoLmxlbmd0aDt2Kyspe3ZhciBtPVtdO2d0KGhbdl0sbSxyLG4sYSwhMCksbS5sZW5ndGgmJmcucHVzaChtKX1pZihnLmxlbmd0aCl7aWYocy5saW5lTWV0cmljcyYmIkxpbmVTdHJpbmciPT09Zil7Zm9yKHY9MDt2PGcubGVuZ3RoO3YrKylsLnB1c2gobnQodS5pZCxmLGdbdl0sdS50YWdzKSk7Y29udGludWV9IkxpbmVTdHJpbmciIT09ZiYmIk11bHRpTGluZVN0cmluZyIhPT1mfHwoMT09PWcubGVuZ3RoPyhmPSJMaW5lU3RyaW5nIixnPWdbMF0pOmY9Ik11bHRpTGluZVN0cmluZyIpLCJQb2ludCIhPT1mJiYiTXVsdGlQb2ludCIhPT1mfHwoZj0zPT09Zy5sZW5ndGg/IlBvaW50IjoiTXVsdGlQb2ludCIpLGwucHVzaChudCh1LmlkLGYsZyx1LnRhZ3MpKX19fXJldHVybiBsLmxlbmd0aD9sOm51bGx9ZnVuY3Rpb24gZnQodCxlLHIsbixhKXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krPTMpe3ZhciBvPXRbaSthXTtvPj1yJiZvPD1uJiYoZS5wdXNoKHRbaV0pLGUucHVzaCh0W2krMV0pLGUucHVzaCh0W2krMl0pKX19ZnVuY3Rpb24gcHQodCxlLHIsbixhLGksbyl7Zm9yKHZhciBzLGwsYz1kdCh0KSx1PTA9PT1hP210Onl0LGg9dC5zdGFydCxmPTA7Zjx0Lmxlbmd0aC0zO2YrPTMpe3ZhciBwPXRbZl0sZD10W2YrMV0sZz10W2YrMl0sdj10W2YrM10sbT10W2YrNF0seT0wPT09YT9wOmQseD0wPT09YT92Om0sYj0hMTtvJiYocz1NYXRoLnNxcnQoTWF0aC5wb3cocC12LDIpK01hdGgucG93KGQtbSwyKSkpLHk8cj94PnImJihsPXUoYyxwLGQsdixtLHIpLG8mJihjLnN0YXJ0PWgrcypsKSk6eT5uP3g8biYmKGw9dShjLHAsZCx2LG0sbiksbyYmKGMuc3RhcnQ9aCtzKmwpKTp2dChjLHAsZCxnKSx4PHImJnk+PXImJihsPXUoYyxwLGQsdixtLHIpLGI9ITApLHg+biYmeTw9biYmKGw9dShjLHAsZCx2LG0sbiksYj0hMCksIWkmJmImJihvJiYoYy5lbmQ9aCtzKmwpLGUucHVzaChjKSxjPWR0KHQpKSxvJiYoaCs9cyl9dmFyIF89dC5sZW5ndGgtMztwPXRbX10sZD10W18rMV0sZz10W18rMl0sKHk9MD09PWE/cDpkKT49ciYmeTw9biYmdnQoYyxwLGQsZyksXz1jLmxlbmd0aC0zLGkmJl8+PTMmJihjW19dIT09Y1swXXx8Y1tfKzFdIT09Y1sxXSkmJnZ0KGMsY1swXSxjWzFdLGNbMl0pLGMubGVuZ3RoJiZlLnB1c2goYyl9ZnVuY3Rpb24gZHQodCl7dmFyIGU9W107cmV0dXJuIGUuc2l6ZT10LnNpemUsZS5zdGFydD10LnN0YXJ0LGUuZW5kPXQuZW5kLGV9ZnVuY3Rpb24gZ3QodCxlLHIsbixhLGkpe2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXB0KHRbb10sZSxyLG4sYSxpLCExKX1mdW5jdGlvbiB2dCh0LGUscixuKXt0LnB1c2goZSksdC5wdXNoKHIpLHQucHVzaChuKX1mdW5jdGlvbiBtdCh0LGUscixuLGEsaSl7dmFyIG89KGktZSkvKG4tZSk7cmV0dXJuIHQucHVzaChpKSx0LnB1c2gocisoYS1yKSpvKSx0LnB1c2goMSksb31mdW5jdGlvbiB5dCh0LGUscixuLGEsaSl7dmFyIG89KGktcikvKGEtcik7cmV0dXJuIHQucHVzaChlKyhuLWUpKm8pLHQucHVzaChpKSx0LnB1c2goMSksb31mdW5jdGlvbiB4dCh0LGUpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBhLGk9dFtuXSxvPWkudHlwZTtpZigiUG9pbnQiPT09b3x8Ik11bHRpUG9pbnQiPT09b3x8IkxpbmVTdHJpbmciPT09bylhPWJ0KGkuZ2VvbWV0cnksZSk7ZWxzZSBpZigiTXVsdGlMaW5lU3RyaW5nIj09PW98fCJQb2x5Z29uIj09PW8pe2E9W107Zm9yKHZhciBzPTA7czxpLmdlb21ldHJ5Lmxlbmd0aDtzKyspYS5wdXNoKGJ0KGkuZ2VvbWV0cnlbc10sZSkpfWVsc2UgaWYoIk11bHRpUG9seWdvbiI9PT1vKWZvcihhPVtdLHM9MDtzPGkuZ2VvbWV0cnkubGVuZ3RoO3MrKyl7Zm9yKHZhciBsPVtdLGM9MDtjPGkuZ2VvbWV0cnlbc10ubGVuZ3RoO2MrKylsLnB1c2goYnQoaS5nZW9tZXRyeVtzXVtjXSxlKSk7YS5wdXNoKGwpfXIucHVzaChudChpLmlkLG8sYSxpLnRhZ3MpKX1yZXR1cm4gcn1mdW5jdGlvbiBidCh0LGUpe3ZhciByPVtdO3Iuc2l6ZT10LnNpemUsdm9pZCAwIT09dC5zdGFydCYmKHIuc3RhcnQ9dC5zdGFydCxyLmVuZD10LmVuZCk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0zKXIucHVzaCh0W25dK2UsdFtuKzFdLHRbbisyXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gX3QodCxlKXtpZih0LnRyYW5zZm9ybWVkKXJldHVybiB0O3ZhciByLG4sYSxpPTE8PHQueixvPXQueCxzPXQueTtmb3Iocj0wO3I8dC5mZWF0dXJlcy5sZW5ndGg7cisrKXt2YXIgbD10LmZlYXR1cmVzW3JdLGM9bC5nZW9tZXRyeSx1PWwudHlwZTtpZihsLmdlb21ldHJ5PVtdLDE9PT11KWZvcihuPTA7bjxjLmxlbmd0aDtuKz0yKWwuZ2VvbWV0cnkucHVzaCh3dChjW25dLGNbbisxXSxlLGksbyxzKSk7ZWxzZSBmb3Iobj0wO248Yy5sZW5ndGg7bisrKXt2YXIgaD1bXTtmb3IoYT0wO2E8Y1tuXS5sZW5ndGg7YSs9MiloLnB1c2god3QoY1tuXVthXSxjW25dW2ErMV0sZSxpLG8scykpO2wuZ2VvbWV0cnkucHVzaChoKX19cmV0dXJuIHQudHJhbnNmb3JtZWQ9ITAsdH1mdW5jdGlvbiB3dCh0LGUscixuLGEsaSl7cmV0dXJuW01hdGgucm91bmQocioodCpuLWEpKSxNYXRoLnJvdW5kKHIqKGUqbi1pKSldfWZ1bmN0aW9uIGt0KHQsZSxyLG4sYSl7Zm9yKHZhciBpPWU9PT1hLm1heFpvb20/MDphLnRvbGVyYW5jZS8oKDE8PGUpKmEuZXh0ZW50KSxvPXtmZWF0dXJlczpbXSxudW1Qb2ludHM6MCxudW1TaW1wbGlmaWVkOjAsbnVtRmVhdHVyZXM6MCxzb3VyY2U6bnVsbCx4OnIseTpuLHo6ZSx0cmFuc2Zvcm1lZDohMSxtaW5YOjIsbWluWToxLG1heFg6LTEsbWF4WTowfSxzPTA7czx0Lmxlbmd0aDtzKyspe28ubnVtRmVhdHVyZXMrKyxUdChvLHRbc10saSxhKTt2YXIgbD10W3NdLm1pblgsYz10W3NdLm1pblksdT10W3NdLm1heFgsaD10W3NdLm1heFk7bDxvLm1pblgmJihvLm1pblg9bCksYzxvLm1pblkmJihvLm1pblk9YyksdT5vLm1heFgmJihvLm1heFg9dSksaD5vLm1heFkmJihvLm1heFk9aCl9cmV0dXJuIG99ZnVuY3Rpb24gVHQodCxlLHIsbil7dmFyIGE9ZS5nZW9tZXRyeSxpPWUudHlwZSxvPVtdO2lmKCJQb2ludCI9PT1pfHwiTXVsdGlQb2ludCI9PT1pKWZvcih2YXIgcz0wO3M8YS5sZW5ndGg7cys9MylvLnB1c2goYVtzXSksby5wdXNoKGFbcysxXSksdC5udW1Qb2ludHMrKyx0Lm51bVNpbXBsaWZpZWQrKztlbHNlIGlmKCJMaW5lU3RyaW5nIj09PWkpTXQobyxhLHQsciwhMSwhMSk7ZWxzZSBpZigiTXVsdGlMaW5lU3RyaW5nIj09PWl8fCJQb2x5Z29uIj09PWkpZm9yKHM9MDtzPGEubGVuZ3RoO3MrKylNdChvLGFbc10sdCxyLCJQb2x5Z29uIj09PWksMD09PXMpO2Vsc2UgaWYoIk11bHRpUG9seWdvbiI9PT1pKWZvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsrKXt2YXIgYz1hW2xdO2ZvcihzPTA7czxjLmxlbmd0aDtzKyspTXQobyxjW3NdLHQsciwhMCwwPT09cyl9aWYoby5sZW5ndGgpe3ZhciB1PWUudGFnc3x8bnVsbDtpZigiTGluZVN0cmluZyI9PT1pJiZuLmxpbmVNZXRyaWNzKXtmb3IodmFyIGggaW4gdT17fSxlLnRhZ3MpdVtoXT1lLnRhZ3NbaF07dS5tYXBib3hfY2xpcF9zdGFydD1hLnN0YXJ0L2Euc2l6ZSx1Lm1hcGJveF9jbGlwX2VuZD1hLmVuZC9hLnNpemV9dmFyIGY9e2dlb21ldHJ5Om8sdHlwZToiUG9seWdvbiI9PT1pfHwiTXVsdGlQb2x5Z29uIj09PWk/MzoiTGluZVN0cmluZyI9PT1pfHwiTXVsdGlMaW5lU3RyaW5nIj09PWk/MjoxLHRhZ3M6dX07bnVsbCE9PWUuaWQmJihmLmlkPWUuaWQpLHQuZmVhdHVyZXMucHVzaChmKX19ZnVuY3Rpb24gTXQodCxlLHIsbixhLGkpe3ZhciBvPW4qbjtpZihuPjAmJmUuc2l6ZTwoYT9vOm4pKXIubnVtUG9pbnRzKz1lLmxlbmd0aC8zO2Vsc2V7Zm9yKHZhciBzPVtdLGw9MDtsPGUubGVuZ3RoO2wrPTMpKDA9PT1ufHxlW2wrMl0+bykmJihyLm51bVNpbXBsaWZpZWQrKyxzLnB1c2goZVtsXSkscy5wdXNoKGVbbCsxXSkpLHIubnVtUG9pbnRzKys7YSYmZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPTAsYT10Lmxlbmd0aCxpPWEtMjtuPGE7aT1uLG4rPTIpcis9KHRbbl0tdFtpXSkqKHRbbisxXSt0W2krMV0pO2lmKHI+MD09PWUpZm9yKG49MCxhPXQubGVuZ3RoO248YS8yO24rPTIpe3ZhciBvPXRbbl0scz10W24rMV07dFtuXT10W2EtMi1uXSx0W24rMV09dFthLTEtbl0sdFthLTItbl09byx0W2EtMS1uXT1zfX0ocyxpKSx0LnB1c2gocyl9fWZ1bmN0aW9uIEF0KHQsZSl7dmFyIHI9KGU9dGhpcy5vcHRpb25zPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdO3JldHVybiB0fShPYmplY3QuY3JlYXRlKHRoaXMub3B0aW9ucyksZSkpLmRlYnVnO2lmKHImJmNvbnNvbGUudGltZSgicHJlcHJvY2VzcyBkYXRhIiksZS5tYXhab29tPDB8fGUubWF4Wm9vbT4yNCl0aHJvdyBuZXcgRXJyb3IoIm1heFpvb20gc2hvdWxkIGJlIGluIHRoZSAwLTI0IHJhbmdlIik7aWYoZS5wcm9tb3RlSWQmJmUuZ2VuZXJhdGVJZCl0aHJvdyBuZXcgRXJyb3IoInByb21vdGVJZCBhbmQgZ2VuZXJhdGVJZCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4iKTt2YXIgbj1mdW5jdGlvbih0LGUpe3ZhciByPVtdO2lmKCJGZWF0dXJlQ29sbGVjdGlvbiI9PT10LnR5cGUpZm9yKHZhciBuPTA7bjx0LmZlYXR1cmVzLmxlbmd0aDtuKyspaXQocix0LmZlYXR1cmVzW25dLGUsbik7ZWxzZSJGZWF0dXJlIj09PXQudHlwZT9pdChyLHQsZSk6aXQocix7Z2VvbWV0cnk6dH0sZSk7cmV0dXJuIHJ9KHQsZSk7dGhpcy50aWxlcz17fSx0aGlzLnRpbGVDb29yZHM9W10sciYmKGNvbnNvbGUudGltZUVuZCgicHJlcHJvY2VzcyBkYXRhIiksY29uc29sZS5sb2coImluZGV4OiBtYXhab29tOiAlZCwgbWF4UG9pbnRzOiAlZCIsZS5pbmRleE1heFpvb20sZS5pbmRleE1heFBvaW50cyksY29uc29sZS50aW1lKCJnZW5lcmF0ZSB0aWxlcyIpLHRoaXMuc3RhdHM9e30sdGhpcy50b3RhbD0wKSwobj1mdW5jdGlvbih0LGUpe3ZhciByPWUuYnVmZmVyL2UuZXh0ZW50LG49dCxhPWh0KHQsMSwtMS1yLHIsMCwtMSwyLGUpLGk9aHQodCwxLDEtciwyK3IsMCwtMSwyLGUpO3JldHVybihhfHxpKSYmKG49aHQodCwxLC1yLDErciwwLC0xLDIsZSl8fFtdLGEmJihuPXh0KGEsMSkuY29uY2F0KG4pKSxpJiYobj1uLmNvbmNhdCh4dChpLC0xKSkpKSxufShuLGUpKS5sZW5ndGgmJnRoaXMuc3BsaXRUaWxlKG4sMCwwLDApLHImJihuLmxlbmd0aCYmY29uc29sZS5sb2coImZlYXR1cmVzOiAlZCwgcG9pbnRzOiAlZCIsdGhpcy50aWxlc1swXS5udW1GZWF0dXJlcyx0aGlzLnRpbGVzWzBdLm51bVBvaW50cyksY29uc29sZS50aW1lRW5kKCJnZW5lcmF0ZSB0aWxlcyIpLGNvbnNvbGUubG9nKCJ0aWxlcyBnZW5lcmF0ZWQ6Iix0aGlzLnRvdGFsLEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdHMpKSl9ZnVuY3Rpb24gU3QodCxlLHIpe3JldHVybiAzMiooKDE8PHQpKnIrZSkrdH1mdW5jdGlvbiBFdCh0LGUpe3ZhciByPXQudGlsZUlELmNhbm9uaWNhbDtpZighdGhpcy5fZ2VvSlNPTkluZGV4KXJldHVybiBlKG51bGwsbnVsbCk7dmFyIG49dGhpcy5fZ2VvSlNPTkluZGV4LmdldFRpbGUoci56LHIueCxyLnkpO2lmKCFuKXJldHVybiBlKG51bGwsbnVsbCk7dmFyIGE9bmV3IGsobi5mZWF0dXJlcyksaT1FKGEpOzA9PT1pLmJ5dGVPZmZzZXQmJmkuYnl0ZUxlbmd0aD09PWkuYnVmZmVyLmJ5dGVMZW5ndGh8fChpPW5ldyBVaW50OEFycmF5KGkpKSxlKG51bGwse3ZlY3RvclRpbGU6YSxyYXdEYXRhOmkuYnVmZmVyfSl9WS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMscj1lLmxvZyxuPWUubWluWm9vbSxhPWUubWF4Wm9vbSxpPWUubm9kZVNpemU7ciYmY29uc29sZS50aW1lKCJ0b3RhbCB0aW1lIik7dmFyIG89InByZXBhcmUgIit0Lmxlbmd0aCsiIHBvaW50cyI7ciYmY29uc29sZS50aW1lKG8pLHRoaXMucG9pbnRzPXQ7Zm9yKHZhciBzPVtdLGw9MDtsPHQubGVuZ3RoO2wrKyl0W2xdLmdlb21ldHJ5JiZzLnB1c2goWCh0W2xdLGwpKTt0aGlzLnRyZWVzW2ErMV09bmV3IEgocyx0dCxldCxpLEZsb2F0MzJBcnJheSksciYmY29uc29sZS50aW1lRW5kKG8pO2Zvcih2YXIgYz1hO2M+PW47Yy0tKXt2YXIgdT0rRGF0ZS5ub3coKTtzPXRoaXMuX2NsdXN0ZXIocyxjKSx0aGlzLnRyZWVzW2NdPW5ldyBIKHMsdHQsZXQsaSxGbG9hdDMyQXJyYXkpLHImJmNvbnNvbGUubG9nKCJ6JWQ6ICVkIGNsdXN0ZXJzIGluICVkbXMiLGMscy5sZW5ndGgsK0RhdGUubm93KCktdSl9cmV0dXJuIHImJmNvbnNvbGUudGltZUVuZCgidG90YWwgdGltZSIpLHRoaXN9LFkucHJvdG90eXBlLmdldENsdXN0ZXJzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9KCh0WzBdKzE4MCklMzYwKzM2MCklMzYwLTE4MCxuPU1hdGgubWF4KC05MCxNYXRoLm1pbig5MCx0WzFdKSksYT0xODA9PT10WzJdPzE4MDooKHRbMl0rMTgwKSUzNjArMzYwKSUzNjAtMTgwLGk9TWF0aC5tYXgoLTkwLE1hdGgubWluKDkwLHRbM10pKTtpZih0WzJdLXRbMF0+PTM2MClyPS0xODAsYT0xODA7ZWxzZSBpZihyPmEpe3ZhciBvPXRoaXMuZ2V0Q2x1c3RlcnMoW3IsbiwxODAsaV0sZSkscz10aGlzLmdldENsdXN0ZXJzKFstMTgwLG4sYSxpXSxlKTtyZXR1cm4gby5jb25jYXQocyl9Zm9yKHZhciBsPXRoaXMudHJlZXNbdGhpcy5fbGltaXRab29tKGUpXSxjPVtdLHU9MCxoPWwucmFuZ2UoSyhyKSxRKGkpLEsoYSksUShuKSk7dTxoLmxlbmd0aDt1Kz0xKXt2YXIgZj1oW3VdLHA9bC5wb2ludHNbZl07Yy5wdXNoKHAubnVtUG9pbnRzP1oocCk6dGhpcy5wb2ludHNbcC5pbmRleF0pfXJldHVybiBjfSxZLnByb3RvdHlwZS5nZXRDaGlsZHJlbj1mdW5jdGlvbih0KXt2YXIgZT10Pj41LHI9dCUzMixuPSJObyBjbHVzdGVyIHdpdGggdGhlIHNwZWNpZmllZCBpZC4iLGE9dGhpcy50cmVlc1tyXTtpZighYSl0aHJvdyBuZXcgRXJyb3Iobik7dmFyIGk9YS5wb2ludHNbZV07aWYoIWkpdGhyb3cgbmV3IEVycm9yKG4pO2Zvcih2YXIgbz10aGlzLm9wdGlvbnMucmFkaXVzLyh0aGlzLm9wdGlvbnMuZXh0ZW50Kk1hdGgucG93KDIsci0xKSkscz1bXSxsPTAsYz1hLndpdGhpbihpLngsaS55LG8pO2w8Yy5sZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXSxoPWEucG9pbnRzW3VdO2gucGFyZW50SWQ9PT10JiZzLnB1c2goaC5udW1Qb2ludHM/WihoKTp0aGlzLnBvaW50c1toLmluZGV4XSl9aWYoMD09PXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihuKTtyZXR1cm4gc30sWS5wcm90b3R5cGUuZ2V0TGVhdmVzPWZ1bmN0aW9uKHQsZSxyKXtlPWV8fDEwLHI9cnx8MDt2YXIgbj1bXTtyZXR1cm4gdGhpcy5fYXBwZW5kTGVhdmVzKG4sdCxlLHIsMCksbn0sWS5wcm90b3R5cGUuZ2V0VGlsZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy50cmVlc1t0aGlzLl9saW1pdFpvb20odCldLGE9TWF0aC5wb3coMix0KSxpPXRoaXMub3B0aW9ucyxvPWkuZXh0ZW50LHM9aS5yYWRpdXMvbyxsPShyLXMpL2EsYz0ocisxK3MpL2EsdT17ZmVhdHVyZXM6W119O3JldHVybiB0aGlzLl9hZGRUaWxlRmVhdHVyZXMobi5yYW5nZSgoZS1zKS9hLGwsKGUrMStzKS9hLGMpLG4ucG9pbnRzLGUscixhLHUpLDA9PT1lJiZ0aGlzLl9hZGRUaWxlRmVhdHVyZXMobi5yYW5nZSgxLXMvYSxsLDEsYyksbi5wb2ludHMsYSxyLGEsdSksZT09PWEtMSYmdGhpcy5fYWRkVGlsZUZlYXR1cmVzKG4ucmFuZ2UoMCxsLHMvYSxjKSxuLnBvaW50cywtMSxyLGEsdSksdS5mZWF0dXJlcy5sZW5ndGg/dTpudWxsfSxZLnByb3RvdHlwZS5nZXRDbHVzdGVyRXhwYW5zaW9uWm9vbT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dCUzMi0xO2U8PXRoaXMub3B0aW9ucy5tYXhab29tOyl7dmFyIHI9dGhpcy5nZXRDaGlsZHJlbih0KTtpZihlKyssMSE9PXIubGVuZ3RoKWJyZWFrO3Q9clswXS5wcm9wZXJ0aWVzLmNsdXN0ZXJfaWR9cmV0dXJuIGV9LFkucHJvdG90eXBlLl9hcHBlbmRMZWF2ZXM9ZnVuY3Rpb24odCxlLHIsbixhKXtmb3IodmFyIGk9MCxvPXRoaXMuZ2V0Q2hpbGRyZW4oZSk7aTxvLmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ldLGw9cy5wcm9wZXJ0aWVzO2lmKGwmJmwuY2x1c3Rlcj9hK2wucG9pbnRfY291bnQ8PW4/YSs9bC5wb2ludF9jb3VudDphPXRoaXMuX2FwcGVuZExlYXZlcyh0LGwuY2x1c3Rlcl9pZCxyLG4sYSk6YTxuP2ErKzp0LnB1c2gocyksdC5sZW5ndGg9PT1yKWJyZWFrfXJldHVybiBhfSxZLnByb3RvdHlwZS5fYWRkVGlsZUZlYXR1cmVzPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtmb3IodmFyIG89MCxzPXQ7bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1lW3Nbb11dLGM9e3R5cGU6MSxnZW9tZXRyeTpbW01hdGgucm91bmQodGhpcy5vcHRpb25zLmV4dGVudCoobC54KmEtcikpLE1hdGgucm91bmQodGhpcy5vcHRpb25zLmV4dGVudCoobC55KmEtbikpXV0sdGFnczpsLm51bVBvaW50cz9KKGwpOnRoaXMucG9pbnRzW2wuaW5kZXhdLnByb3BlcnRpZXN9LHU9bC5udW1Qb2ludHM/bC5pZDp0aGlzLnBvaW50c1tsLmluZGV4XS5pZDt2b2lkIDAhPT11JiYoYy5pZD11KSxpLmZlYXR1cmVzLnB1c2goYyl9fSxZLnByb3RvdHlwZS5fbGltaXRab29tPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCh0aGlzLm9wdGlvbnMubWluWm9vbSxNYXRoLm1pbih0LHRoaXMub3B0aW9ucy5tYXhab29tKzEpKX0sWS5wcm90b3R5cGUuX2NsdXN0ZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sbj10aGlzLm9wdGlvbnMsYT1uLnJhZGl1cyxpPW4uZXh0ZW50LG89bi5yZWR1Y2Uscz1hLyhpKk1hdGgucG93KDIsZSkpLGw9MDtsPHQubGVuZ3RoO2wrKyl7dmFyIGM9dFtsXTtpZighKGMuem9vbTw9ZSkpe2Muem9vbT1lO2Zvcih2YXIgdT10aGlzLnRyZWVzW2UrMV0saD11LndpdGhpbihjLngsYy55LHMpLGY9Yy5udW1Qb2ludHN8fDEscD1jLngqZixkPWMueSpmLGc9byYmZj4xP3RoaXMuX21hcChjLCEwKTpudWxsLHY9KGw8PDUpKyhlKzEpLG09MCx5PWg7bTx5Lmxlbmd0aDttKz0xKXt2YXIgeD15W21dLGI9dS5wb2ludHNbeF07aWYoIShiLnpvb208PWUpKXtiLnpvb209ZTt2YXIgXz1iLm51bVBvaW50c3x8MTtwKz1iLngqXyxkKz1iLnkqXyxmKz1fLGIucGFyZW50SWQ9dixvJiYoZ3x8KGc9dGhpcy5fbWFwKGMsITApKSxvKGcsdGhpcy5fbWFwKGIpKSl9fTE9PT1mP3IucHVzaChjKTooYy5wYXJlbnRJZD12LHIucHVzaChXKHAvZixkL2YsdixmLGcpKSl9fXJldHVybiByfSxZLnByb3RvdHlwZS5fbWFwPWZ1bmN0aW9uKHQsZSl7aWYodC5udW1Qb2ludHMpcmV0dXJuIGU/JCh7fSx0LnByb3BlcnRpZXMpOnQucHJvcGVydGllczt2YXIgcj10aGlzLnBvaW50c1t0LmluZGV4XS5wcm9wZXJ0aWVzLG49dGhpcy5vcHRpb25zLm1hcChyKTtyZXR1cm4gZSYmbj09PXI/JCh7fSxuKTpufSxBdC5wcm90b3R5cGUub3B0aW9ucz17bWF4Wm9vbToxNCxpbmRleE1heFpvb206NSxpbmRleE1heFBvaW50czoxZTUsdG9sZXJhbmNlOjMsZXh0ZW50OjQwOTYsYnVmZmVyOjY0LGxpbmVNZXRyaWNzOiExLHByb21vdGVJZDpudWxsLGdlbmVyYXRlSWQ6ITEsZGVidWc6MH0sQXQucHJvdG90eXBlLnNwbGl0VGlsZT1mdW5jdGlvbih0LGUscixuLGEsaSxvKXtmb3IodmFyIHM9W3QsZSxyLG5dLGw9dGhpcy5vcHRpb25zLGM9bC5kZWJ1ZztzLmxlbmd0aDspe249cy5wb3AoKSxyPXMucG9wKCksZT1zLnBvcCgpLHQ9cy5wb3AoKTt2YXIgdT0xPDxlLGg9U3QoZSxyLG4pLGY9dGhpcy50aWxlc1toXTtpZighZiYmKGM+MSYmY29uc29sZS50aW1lKCJjcmVhdGlvbiIpLGY9dGhpcy50aWxlc1toXT1rdCh0LGUscixuLGwpLHRoaXMudGlsZUNvb3Jkcy5wdXNoKHt6OmUseDpyLHk6bn0pLGMpKXtjPjEmJihjb25zb2xlLmxvZygidGlsZSB6JWQtJWQtJWQgKGZlYXR1cmVzOiAlZCwgcG9pbnRzOiAlZCwgc2ltcGxpZmllZDogJWQpIixlLHIsbixmLm51bUZlYXR1cmVzLGYubnVtUG9pbnRzLGYubnVtU2ltcGxpZmllZCksY29uc29sZS50aW1lRW5kKCJjcmVhdGlvbiIpKTt2YXIgcD0ieiIrZTt0aGlzLnN0YXRzW3BdPSh0aGlzLnN0YXRzW3BdfHwwKSsxLHRoaXMudG90YWwrK31pZihmLnNvdXJjZT10LGEpe2lmKGU9PT1sLm1heFpvb218fGU9PT1hKWNvbnRpbnVlO3ZhciBkPTE8PGEtZTtpZihyIT09TWF0aC5mbG9vcihpL2QpfHxuIT09TWF0aC5mbG9vcihvL2QpKWNvbnRpbnVlfWVsc2UgaWYoZT09PWwuaW5kZXhNYXhab29tfHxmLm51bVBvaW50czw9bC5pbmRleE1heFBvaW50cyljb250aW51ZTtpZihmLnNvdXJjZT1udWxsLDAhPT10Lmxlbmd0aCl7Yz4xJiZjb25zb2xlLnRpbWUoImNsaXBwaW5nIik7dmFyIGcsdixtLHkseCxiLF89LjUqbC5idWZmZXIvbC5leHRlbnQsdz0uNS1fLGs9LjUrXyxUPTErXztnPXY9bT15PW51bGwseD1odCh0LHUsci1fLHIraywwLGYubWluWCxmLm1heFgsbCksYj1odCh0LHUscit3LHIrVCwwLGYubWluWCxmLm1heFgsbCksdD1udWxsLHgmJihnPWh0KHgsdSxuLV8sbitrLDEsZi5taW5ZLGYubWF4WSxsKSx2PWh0KHgsdSxuK3csbitULDEsZi5taW5ZLGYubWF4WSxsKSx4PW51bGwpLGImJihtPWh0KGIsdSxuLV8sbitrLDEsZi5taW5ZLGYubWF4WSxsKSx5PWh0KGIsdSxuK3csbitULDEsZi5taW5ZLGYubWF4WSxsKSxiPW51bGwpLGM+MSYmY29uc29sZS50aW1lRW5kKCJjbGlwcGluZyIpLHMucHVzaChnfHxbXSxlKzEsMipyLDIqbikscy5wdXNoKHZ8fFtdLGUrMSwyKnIsMipuKzEpLHMucHVzaChtfHxbXSxlKzEsMipyKzEsMipuKSxzLnB1c2goeXx8W10sZSsxLDIqcisxLDIqbisxKX19fSxBdC5wcm90b3R5cGUuZ2V0VGlsZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5vcHRpb25zLGE9bi5leHRlbnQsaT1uLmRlYnVnO2lmKHQ8MHx8dD4yNClyZXR1cm4gbnVsbDt2YXIgbz0xPDx0LHM9U3QodCxlPShlJW8rbyklbyxyKTtpZih0aGlzLnRpbGVzW3NdKXJldHVybiBfdCh0aGlzLnRpbGVzW3NdLGEpO2k+MSYmY29uc29sZS5sb2coImRyaWxsaW5nIGRvd24gdG8geiVkLSVkLSVkIix0LGUscik7Zm9yKHZhciBsLGM9dCx1PWUsaD1yOyFsJiZjPjA7KWMtLSx1PU1hdGguZmxvb3IodS8yKSxoPU1hdGguZmxvb3IoaC8yKSxsPXRoaXMudGlsZXNbU3QoYyx1LGgpXTtyZXR1cm4gbCYmbC5zb3VyY2U/KGk+MSYmY29uc29sZS5sb2coImZvdW5kIHBhcmVudCB0aWxlIHolZC0lZC0lZCIsYyx1LGgpLGk+MSYmY29uc29sZS50aW1lKCJkcmlsbGluZyBkb3duIiksdGhpcy5zcGxpdFRpbGUobC5zb3VyY2UsYyx1LGgsdCxlLHIpLGk+MSYmY29uc29sZS50aW1lRW5kKCJkcmlsbGluZyBkb3duIiksdGhpcy50aWxlc1tzXT9fdCh0aGlzLnRpbGVzW3NdLGEpOm51bGwpOm51bGx9O3ZhciBMdD1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHQscixuKXtlLmNhbGwodGhpcyx0LHIsRXQpLG4mJih0aGlzLmxvYWRHZW9KU09OPW4pfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2FkRGF0YT1mdW5jdGlvbih0LGUpe3RoaXMuX3BlbmRpbmdDYWxsYmFjayYmdGhpcy5fcGVuZGluZ0NhbGxiYWNrKG51bGwse2FiYW5kb25lZDohMH0pLHRoaXMuX3BlbmRpbmdDYWxsYmFjaz1lLHRoaXMuX3BlbmRpbmdMb2FkRGF0YVBhcmFtcz10LHRoaXMuX3N0YXRlJiYiSWRsZSIhPT10aGlzLl9zdGF0ZT90aGlzLl9zdGF0ZT0iTmVlZHNMb2FkRGF0YSI6KHRoaXMuX3N0YXRlPSJDb2FsZXNjaW5nIix0aGlzLl9sb2FkRGF0YSgpKX0sci5wcm90b3R5cGUuX2xvYWREYXRhPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0aGlzLl9wZW5kaW5nQ2FsbGJhY2smJnRoaXMuX3BlbmRpbmdMb2FkRGF0YVBhcmFtcyl7dmFyIHI9dGhpcy5fcGVuZGluZ0NhbGxiYWNrLG49dGhpcy5fcGVuZGluZ0xvYWREYXRhUGFyYW1zO2RlbGV0ZSB0aGlzLl9wZW5kaW5nQ2FsbGJhY2ssZGVsZXRlIHRoaXMuX3BlbmRpbmdMb2FkRGF0YVBhcmFtczt2YXIgYT0hIShuJiZuLnJlcXVlc3QmJm4ucmVxdWVzdC5jb2xsZWN0UmVzb3VyY2VUaW1pbmcpJiZuZXcgbC5QZXJmb3JtYW5jZShuLnJlcXVlc3QpO3RoaXMubG9hZEdlb0pTT04obixmdW5jdGlvbihpLG8pe2lmKGl8fCFvKXJldHVybiByKGkpO2lmKCJvYmplY3QiIT10eXBlb2YgbylyZXR1cm4gcihuZXcgRXJyb3IoIklucHV0IGRhdGEgZ2l2ZW4gdG8gJyIrbi5zb3VyY2UrIicgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuIikpOyFmdW5jdGlvbiB0KGUscil7c3dpdGNoKGUmJmUudHlwZXx8bnVsbCl7Y2FzZSJGZWF0dXJlQ29sbGVjdGlvbiI6cmV0dXJuIGUuZmVhdHVyZXM9ZS5mZWF0dXJlcy5tYXAoeSh0LHIpKSxlO2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpyZXR1cm4gZS5nZW9tZXRyaWVzPWUuZ2VvbWV0cmllcy5tYXAoeSh0LHIpKSxlO2Nhc2UiRmVhdHVyZSI6cmV0dXJuIGUuZ2VvbWV0cnk9dChlLmdlb21ldHJ5LHIpLGU7Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIlBvbHlnb24iPT09dC50eXBlP3QuY29vcmRpbmF0ZXM9eCh0LmNvb3JkaW5hdGVzLGUpOiJNdWx0aVBvbHlnb24iPT09dC50eXBlJiYodC5jb29yZGluYXRlcz10LmNvb3JkaW5hdGVzLm1hcCh5KHgsZSkpKSx0fShlLHIpO2RlZmF1bHQ6cmV0dXJuIGV9fShvLCEwKTt0cnl7ZS5fZ2VvSlNPTkluZGV4PW4uY2x1c3Rlcj9uZXcgWShmdW5jdGlvbihlKXt2YXIgcj1lLnN1cGVyY2x1c3Rlck9wdGlvbnMsbj1lLmNsdXN0ZXJQcm9wZXJ0aWVzO2lmKCFufHwhcilyZXR1cm4gcjtmb3IodmFyIGE9e30saT17fSxvPXthY2N1bXVsYXRlZDpudWxsLHpvb206MH0scz17cHJvcGVydGllczpudWxsfSxsPU9iamVjdC5rZXlzKG4pLGM9MCx1PWw7Yzx1Lmxlbmd0aDtjKz0xKXt2YXIgaD11W2NdLGY9bltoXSxwPWZbMF0sZD1mWzFdLGc9dC5jcmVhdGVFeHByZXNzaW9uKGQpLHY9dC5jcmVhdGVFeHByZXNzaW9uKCJzdHJpbmciPT10eXBlb2YgcD9bcCxbImFjY3VtdWxhdGVkIl0sWyJnZXQiLGhdXTpwKTthW2hdPWcudmFsdWUsaVtoXT12LnZhbHVlfXJldHVybiByLm1hcD1mdW5jdGlvbih0KXtzLnByb3BlcnRpZXM9dDtmb3IodmFyIGU9e30scj0wLG49bDtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBpPW5bcl07ZVtpXT1hW2ldLmV2YWx1YXRlKG8scyl9cmV0dXJuIGV9LHIucmVkdWNlPWZ1bmN0aW9uKHQsZSl7cy5wcm9wZXJ0aWVzPWU7Zm9yKHZhciByPTAsbj1sO3I8bi5sZW5ndGg7cis9MSl7dmFyIGE9bltyXTtvLmFjY3VtdWxhdGVkPXRbYV0sdFthXT1pW2FdLmV2YWx1YXRlKG8scyl9fSxyfShuKSkubG9hZChvLmZlYXR1cmVzKTpuZXcgQXQobyxuLmdlb2pzb25WdE9wdGlvbnMpfWNhdGNoKGkpe3JldHVybiByKGkpfWUubG9hZGVkPXt9O3ZhciBzPXt9O2lmKGEpe3ZhciBsPWEuZmluaXNoKCk7bCYmKHMucmVzb3VyY2VUaW1pbmc9e30scy5yZXNvdXJjZVRpbWluZ1tuLnNvdXJjZV09SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsKSkpfXIobnVsbCxzKX0pfX0sci5wcm90b3R5cGUuY29hbGVzY2U9ZnVuY3Rpb24oKXsiQ29hbGVzY2luZyI9PT10aGlzLl9zdGF0ZT90aGlzLl9zdGF0ZT0iSWRsZSI6Ik5lZWRzTG9hZERhdGEiPT09dGhpcy5fc3RhdGUmJih0aGlzLl9zdGF0ZT0iQ29hbGVzY2luZyIsdGhpcy5fbG9hZERhdGEoKSl9LHIucHJvdG90eXBlLnJlbG9hZFRpbGU9ZnVuY3Rpb24odCxyKXt2YXIgbj10aGlzLmxvYWRlZCxhPXQudWlkO3JldHVybiBuJiZuW2FdP2UucHJvdG90eXBlLnJlbG9hZFRpbGUuY2FsbCh0aGlzLHQscik6dGhpcy5sb2FkVGlsZSh0LHIpfSxyLnByb3RvdHlwZS5sb2FkR2VvSlNPTj1mdW5jdGlvbihlLHIpe2lmKGUucmVxdWVzdCl0LmdldEpTT04oZS5yZXF1ZXN0LHIpO2Vsc2V7aWYoInN0cmluZyIhPXR5cGVvZiBlLmRhdGEpcmV0dXJuIHIobmV3IEVycm9yKCJJbnB1dCBkYXRhIGdpdmVuIHRvICciK2Uuc291cmNlKyInIGlzIG5vdCBhIHZhbGlkIEdlb0pTT04gb2JqZWN0LiIpKTt0cnl7cmV0dXJuIHIobnVsbCxKU09OLnBhcnNlKGUuZGF0YSkpfWNhdGNoKHQpe3JldHVybiByKG5ldyBFcnJvcigiSW5wdXQgZGF0YSBnaXZlbiB0byAnIitlLnNvdXJjZSsiJyBpcyBub3QgYSB2YWxpZCBHZW9KU09OIG9iamVjdC4iKSl9fX0sci5wcm90b3R5cGUucmVtb3ZlU291cmNlPWZ1bmN0aW9uKHQsZSl7dGhpcy5fcGVuZGluZ0NhbGxiYWNrJiZ0aGlzLl9wZW5kaW5nQ2FsbGJhY2sobnVsbCx7YWJhbmRvbmVkOiEwfSksZSgpfSxyLnByb3RvdHlwZS5nZXRDbHVzdGVyRXhwYW5zaW9uWm9vbT1mdW5jdGlvbih0LGUpe2UobnVsbCx0aGlzLl9nZW9KU09OSW5kZXguZ2V0Q2x1c3RlckV4cGFuc2lvblpvb20odC5jbHVzdGVySWQpKX0sci5wcm90b3R5cGUuZ2V0Q2x1c3RlckNoaWxkcmVuPWZ1bmN0aW9uKHQsZSl7ZShudWxsLHRoaXMuX2dlb0pTT05JbmRleC5nZXRDaGlsZHJlbih0LmNsdXN0ZXJJZCkpfSxyLnByb3RvdHlwZS5nZXRDbHVzdGVyTGVhdmVzPWZ1bmN0aW9uKHQsZSl7ZShudWxsLHRoaXMuX2dlb0pTT05JbmRleC5nZXRMZWF2ZXModC5jbHVzdGVySWQsdC5saW1pdCx0Lm9mZnNldCkpfSxyfShoKSxDdD1mdW5jdGlvbihlKXt2YXIgcj10aGlzO3RoaXMuc2VsZj1lLHRoaXMuYWN0b3I9bmV3IHQuQWN0b3IoZSx0aGlzKSx0aGlzLmxheWVySW5kZXhlcz17fSx0aGlzLndvcmtlclNvdXJjZVR5cGVzPXt2ZWN0b3I6aCxnZW9qc29uOkx0fSx0aGlzLndvcmtlclNvdXJjZXM9e30sdGhpcy5kZW1Xb3JrZXJTb3VyY2VzPXt9LHRoaXMuc2VsZi5yZWdpc3RlcldvcmtlclNvdXJjZT1mdW5jdGlvbih0LGUpe2lmKHIud29ya2VyU291cmNlVHlwZXNbdF0pdGhyb3cgbmV3IEVycm9yKCdXb3JrZXIgc291cmNlIHdpdGggbmFtZSAiJyt0KyciIGFscmVhZHkgcmVnaXN0ZXJlZC4nKTtyLndvcmtlclNvdXJjZVR5cGVzW3RdPWV9LHRoaXMuc2VsZi5yZWdpc3RlclJUTFRleHRQbHVnaW49ZnVuY3Rpb24oZSl7aWYodC5wbHVnaW4uaXNMb2FkZWQoKSl0aHJvdyBuZXcgRXJyb3IoIlJUTCB0ZXh0IHBsdWdpbiBhbHJlYWR5IHJlZ2lzdGVyZWQuIik7dC5wbHVnaW4uYXBwbHlBcmFiaWNTaGFwaW5nPWUuYXBwbHlBcmFiaWNTaGFwaW5nLHQucGx1Z2luLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dD1lLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dCx0LnBsdWdpbi5wcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHQ9ZS5wcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHR9fTtyZXR1cm4gQ3QucHJvdG90eXBlLnNldFJlZmVycmVyPWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWZlcnJlcj1lfSxDdC5wcm90b3R5cGUuc2V0TGF5ZXJzPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmdldExheWVySW5kZXgodCkucmVwbGFjZShlKSxyKCl9LEN0LnByb3RvdHlwZS51cGRhdGVMYXllcnM9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2V0TGF5ZXJJbmRleCh0KS51cGRhdGUoZS5sYXllcnMsZS5yZW1vdmVkSWRzKSxyKCl9LEN0LnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbih0LGUscil7dGhpcy5nZXRXb3JrZXJTb3VyY2UodCxlLnR5cGUsZS5zb3VyY2UpLmxvYWRUaWxlKGUscil9LEN0LnByb3RvdHlwZS5sb2FkREVNVGlsZT1mdW5jdGlvbih0LGUscil7dGhpcy5nZXRERU1Xb3JrZXJTb3VyY2UodCxlLnNvdXJjZSkubG9hZFRpbGUoZSxyKX0sQ3QucHJvdG90eXBlLnJlbG9hZFRpbGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2V0V29ya2VyU291cmNlKHQsZS50eXBlLGUuc291cmNlKS5yZWxvYWRUaWxlKGUscil9LEN0LnByb3RvdHlwZS5hYm9ydFRpbGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2V0V29ya2VyU291cmNlKHQsZS50eXBlLGUuc291cmNlKS5hYm9ydFRpbGUoZSxyKX0sQ3QucHJvdG90eXBlLnJlbW92ZVRpbGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2V0V29ya2VyU291cmNlKHQsZS50eXBlLGUuc291cmNlKS5yZW1vdmVUaWxlKGUscil9LEN0LnByb3RvdHlwZS5yZW1vdmVERU1UaWxlPWZ1bmN0aW9uKHQsZSl7dGhpcy5nZXRERU1Xb3JrZXJTb3VyY2UodCxlLnNvdXJjZSkucmVtb3ZlVGlsZShlKX0sQ3QucHJvdG90eXBlLnJlbW92ZVNvdXJjZT1mdW5jdGlvbih0LGUscil7aWYodGhpcy53b3JrZXJTb3VyY2VzW3RdJiZ0aGlzLndvcmtlclNvdXJjZXNbdF1bZS50eXBlXSYmdGhpcy53b3JrZXJTb3VyY2VzW3RdW2UudHlwZV1bZS5zb3VyY2VdKXt2YXIgbj10aGlzLndvcmtlclNvdXJjZXNbdF1bZS50eXBlXVtlLnNvdXJjZV07ZGVsZXRlIHRoaXMud29ya2VyU291cmNlc1t0XVtlLnR5cGVdW2Uuc291cmNlXSx2b2lkIDAhPT1uLnJlbW92ZVNvdXJjZT9uLnJlbW92ZVNvdXJjZShlLHIpOnIoKX19LEN0LnByb3RvdHlwZS5sb2FkV29ya2VyU291cmNlPWZ1bmN0aW9uKHQsZSxyKXt0cnl7dGhpcy5zZWxmLmltcG9ydFNjcmlwdHMoZS51cmwpLHIoKX1jYXRjaCh0KXtyKHQudG9TdHJpbmcoKSl9fSxDdC5wcm90b3R5cGUubG9hZFJUTFRleHRQbHVnaW49ZnVuY3Rpb24oZSxyLG4pe3RyeXt0LnBsdWdpbi5pc0xvYWRlZCgpfHwodGhpcy5zZWxmLmltcG9ydFNjcmlwdHMociksbih0LnBsdWdpbi5pc0xvYWRlZCgpP251bGw6bmV3IEVycm9yKCJSVEwgVGV4dCBQbHVnaW4gZmFpbGVkIHRvIGltcG9ydCBzY3JpcHRzIGZyb20gIityKSkpfWNhdGNoKHQpe24odC50b1N0cmluZygpKX19LEN0LnByb3RvdHlwZS5nZXRMYXllckluZGV4PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGF5ZXJJbmRleGVzW3RdO3JldHVybiBlfHwoZT10aGlzLmxheWVySW5kZXhlc1t0XT1uZXcgbiksZX0sQ3QucHJvdG90eXBlLmdldFdvcmtlclNvdXJjZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcztpZih0aGlzLndvcmtlclNvdXJjZXNbdF18fCh0aGlzLndvcmtlclNvdXJjZXNbdF09e30pLHRoaXMud29ya2VyU291cmNlc1t0XVtlXXx8KHRoaXMud29ya2VyU291cmNlc1t0XVtlXT17fSksIXRoaXMud29ya2VyU291cmNlc1t0XVtlXVtyXSl7dmFyIGE9e3NlbmQ6ZnVuY3Rpb24oZSxyLGEpe24uYWN0b3Iuc2VuZChlLHIsYSx0KX19O3RoaXMud29ya2VyU291cmNlc1t0XVtlXVtyXT1uZXcgdGhpcy53b3JrZXJTb3VyY2VUeXBlc1tlXShhLHRoaXMuZ2V0TGF5ZXJJbmRleCh0KSl9cmV0dXJuIHRoaXMud29ya2VyU291cmNlc1t0XVtlXVtyXX0sQ3QucHJvdG90eXBlLmdldERFTVdvcmtlclNvdXJjZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlbVdvcmtlclNvdXJjZXNbdF18fCh0aGlzLmRlbVdvcmtlclNvdXJjZXNbdF09e30pLHRoaXMuZGVtV29ya2VyU291cmNlc1t0XVtlXXx8KHRoaXMuZGVtV29ya2VyU291cmNlc1t0XVtlXT1uZXcgZiksdGhpcy5kZW1Xb3JrZXJTb3VyY2VzW3RdW2VdfSxDdC5wcm90b3R5cGUuZW5mb3JjZUNhY2hlU2l6ZUxpbWl0PWZ1bmN0aW9uKGUscil7dC5lbmZvcmNlQ2FjaGVTaXplTGltaXQocil9LCJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnZvaWQgMCE9PXQud2luZG93JiZ0LndpbmRvdyBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiYodC53aW5kb3cud29ya2VyPW5ldyBDdCh0LndpbmRvdykpLEN0fSksbigwLGZ1bmN0aW9uKHQpe3ZhciBlPXQuY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4hISgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmQXJyYXkucHJvdG90eXBlJiZBcnJheS5wcm90b3R5cGUuZXZlcnkmJkFycmF5LnByb3RvdHlwZS5maWx0ZXImJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoJiZBcnJheS5wcm90b3R5cGUuaW5kZXhPZiYmQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mJiZBcnJheS5wcm90b3R5cGUubWFwJiZBcnJheS5wcm90b3R5cGUuc29tZSYmQXJyYXkucHJvdG90eXBlLnJlZHVjZSYmQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0JiZBcnJheS5pc0FycmF5JiZGdW5jdGlvbi5wcm90b3R5cGUmJkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiZPYmplY3Qua2V5cyYmT2JqZWN0LmNyZWF0ZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyYmT2JqZWN0LmlzU2VhbGVkJiZPYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0V4dGVuc2libGUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMmJk9iamVjdC5zZWFsJiZPYmplY3QuZnJlZXplJiZPYmplY3QucHJldmVudEV4dGVuc2lvbnMmJiJKU09OImluIHdpbmRvdyYmInBhcnNlImluIEpTT04mJiJzdHJpbmdpZnkiaW4gSlNPTiYmZnVuY3Rpb24oKXtpZighKCJXb3JrZXIiaW4gd2luZG93JiYiQmxvYiJpbiB3aW5kb3cmJiJVUkwiaW4gd2luZG93KSlyZXR1cm4hMTt2YXIgdCxlLHI9bmV3IEJsb2IoWyIiXSx7dHlwZToidGV4dC9qYXZhc2NyaXB0In0pLG49VVJMLmNyZWF0ZU9iamVjdFVSTChyKTt0cnl7ZT1uZXcgV29ya2VyKG4pLHQ9ITB9Y2F0Y2goZSl7dD0hMX1yZXR1cm4gZSYmZS50ZXJtaW5hdGUoKSxVUkwucmV2b2tlT2JqZWN0VVJMKG4pLHR9KCkmJiJVaW50OENsYW1wZWRBcnJheSJpbiB3aW5kb3cmJkFycmF5QnVmZmVyLmlzVmlldyYmZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXJbdF0mJihyW3RdPWZ1bmN0aW9uKHQpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLG49T2JqZWN0LmNyZWF0ZShlLndlYkdMQ29udGV4dEF0dHJpYnV0ZXMpO3JldHVybiBuLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ9dCxyLnByb2JhYmx5U3VwcG9ydHNDb250ZXh0P3IucHJvYmFibHlTdXBwb3J0c0NvbnRleHQoIndlYmdsIixuKXx8ci5wcm9iYWJseVN1cHBvcnRzQ29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIixuKTpyLnN1cHBvcnRzQ29udGV4dD9yLnN1cHBvcnRzQ29udGV4dCgid2ViZ2wiLG4pfHxyLnN1cHBvcnRzQ29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIixuKTpyLmdldENvbnRleHQoIndlYmdsIixuKXx8ci5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiLG4pfSh0KSksclt0XX0odCYmdC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSl9dC5leHBvcnRzP3QuZXhwb3J0cz1lOndpbmRvdyYmKHdpbmRvdy5tYXBib3hnbD13aW5kb3cubWFwYm94Z2x8fHt9LHdpbmRvdy5tYXBib3hnbC5zdXBwb3J0ZWQ9ZSk7dmFyIHI9e307ZS53ZWJHTENvbnRleHRBdHRyaWJ1dGVzPXthbnRpYWxpYXM6ITEsYWxwaGE6ITAsc3RlbmNpbDohMCxkZXB0aDohMH19KSxyPXtjcmVhdGU6ZnVuY3Rpb24oZSxyLG4pe3ZhciBhPXQud2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIHZvaWQgMCE9PXImJihhLmNsYXNzTmFtZT1yKSxuJiZuLmFwcGVuZENoaWxkKGEpLGF9LGNyZWF0ZU5TOmZ1bmN0aW9uKGUscil7cmV0dXJuIHQud2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLHIpfX0sbj10LndpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGU7ZnVuY3Rpb24gYSh0KXtpZighbilyZXR1cm4gdFswXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdaW4gbilyZXR1cm4gdFtlXTtyZXR1cm4gdFswXX12YXIgaSxvPWEoWyJ1c2VyU2VsZWN0IiwiTW96VXNlclNlbGVjdCIsIldlYmtpdFVzZXJTZWxlY3QiLCJtc1VzZXJTZWxlY3QiXSk7ci5kaXNhYmxlRHJhZz1mdW5jdGlvbigpe24mJm8mJihpPW5bb10sbltvXT0ibm9uZSIpfSxyLmVuYWJsZURyYWc9ZnVuY3Rpb24oKXtuJiZvJiYobltvXT1pKX07dmFyIHM9YShbInRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSJdKTtyLnNldFRyYW5zZm9ybT1mdW5jdGlvbih0LGUpe3Quc3R5bGVbc109ZX07dmFyIGw9ITE7dHJ5e3ZhciBjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe2w9ITB9fSk7dC53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsYyxjKSx0LndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixjLGMpfWNhdGNoKHQpe2w9ITF9ci5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxyLG4pe3ZvaWQgMD09PW4mJihuPXt9KSwicGFzc2l2ZSJpbiBuJiZsP3QuYWRkRXZlbnRMaXN0ZW5lcihlLHIsbik6dC5hZGRFdmVudExpc3RlbmVyKGUscixuLmNhcHR1cmUpfSxyLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLHIsbil7dm9pZCAwPT09biYmKG49e30pLCJwYXNzaXZlImluIG4mJmw/dC5yZW1vdmVFdmVudExpc3RlbmVyKGUscixuKTp0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxyLG4uY2FwdHVyZSl9O3ZhciB1PWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix1LCEwKX07ZnVuY3Rpb24gaCh0KXt2YXIgZT10LnVzZXJJbWFnZTtyZXR1cm4hIShlJiZlLnJlbmRlciYmZS5yZW5kZXIoKSkmJih0LmRhdGEucmVwbGFjZShuZXcgVWludDhBcnJheShlLmRhdGEuYnVmZmVyKSksITApfXIuc3VwcHJlc3NDbGljaz1mdW5jdGlvbigpe3Qud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix1LCEwKSx0LndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHUsITApfSwwKX0sci5tb3VzZVBvcz1mdW5jdGlvbihlLHIpe3ZhciBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT10LndpbmRvdy5Ub3VjaEV2ZW50JiZyIGluc3RhbmNlb2YgdC53aW5kb3cuVG91Y2hFdmVudD9yLnRvdWNoZXNbMF06cjtyZXR1cm4gbmV3IHQuUG9pbnQoYS5jbGllbnRYLW4ubGVmdC1lLmNsaWVudExlZnQsYS5jbGllbnRZLW4udG9wLWUuY2xpZW50VG9wKX0sci50b3VjaFBvcz1mdW5jdGlvbihlLHIpe2Zvcih2YXIgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9W10saT0idG91Y2hlbmQiPT09ci50eXBlP3IuY2hhbmdlZFRvdWNoZXM6ci50b3VjaGVzLG89MDtvPGkubGVuZ3RoO28rKylhLnB1c2gobmV3IHQuUG9pbnQoaVtvXS5jbGllbnRYLW4ubGVmdC1lLmNsaWVudExlZnQsaVtvXS5jbGllbnRZLW4udG9wLWUuY2xpZW50VG9wKSk7cmV0dXJuIGF9LHIubW91c2VCdXR0b249ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXQud2luZG93Lkluc3RhbGxUcmlnZ2VyJiYyPT09ZS5idXR0b24mJmUuY3RybEtleSYmdC53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiTUFDIik+PTA/MDplLmJ1dHRvbn0sci5yZW1vdmU9ZnVuY3Rpb24odCl7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9O3ZhciBmPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoKXtlLmNhbGwodGhpcyksdGhpcy5pbWFnZXM9e30sdGhpcy51cGRhdGVkSW1hZ2VzPXt9LHRoaXMuY2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lPXt9LHRoaXMubG9hZGVkPSExLHRoaXMucmVxdWVzdG9ycz1bXSx0aGlzLnBhdHRlcm5zPXt9LHRoaXMuYXRsYXNJbWFnZT1uZXcgdC5SR0JBSW1hZ2Uoe3dpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLmRpcnR5PSEwfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5pc0xvYWRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvYWRlZH0sci5wcm90b3R5cGUuc2V0TG9hZGVkPWZ1bmN0aW9uKHQpe2lmKHRoaXMubG9hZGVkIT09dCYmKHRoaXMubG9hZGVkPXQsdCkpe2Zvcih2YXIgZT0wLHI9dGhpcy5yZXF1ZXN0b3JzO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXSxhPW4uaWRzLGk9bi5jYWxsYmFjazt0aGlzLl9ub3RpZnkoYSxpKX10aGlzLnJlcXVlc3RvcnM9W119fSxyLnByb3RvdHlwZS5nZXRJbWFnZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbWFnZXNbdF19LHIucHJvdG90eXBlLmFkZEltYWdlPWZ1bmN0aW9uKHQsZSl7dGhpcy5pbWFnZXNbdF09ZX0sci5wcm90b3R5cGUudXBkYXRlSW1hZ2U9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmltYWdlc1t0XTtlLnZlcnNpb249ci52ZXJzaW9uKzEsdGhpcy5pbWFnZXNbdF09ZSx0aGlzLnVwZGF0ZWRJbWFnZXNbdF09ITB9LHIucHJvdG90eXBlLnJlbW92ZUltYWdlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW1hZ2VzW3RdO2RlbGV0ZSB0aGlzLmltYWdlc1t0XSxkZWxldGUgdGhpcy5wYXR0ZXJuc1t0XSxlLnVzZXJJbWFnZSYmZS51c2VySW1hZ2Uub25SZW1vdmUmJmUudXNlckltYWdlLm9uUmVtb3ZlKCl9LHIucHJvdG90eXBlLmxpc3RJbWFnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5pbWFnZXMpfSxyLnByb3RvdHlwZS5nZXRJbWFnZXM9ZnVuY3Rpb24odCxlKXt2YXIgcj0hMDtpZighdGhpcy5pc0xvYWRlZCgpKWZvcih2YXIgbj0wLGE9dDtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl07dGhpcy5pbWFnZXNbaV18fChyPSExKX10aGlzLmlzTG9hZGVkKCl8fHI/dGhpcy5fbm90aWZ5KHQsZSk6dGhpcy5yZXF1ZXN0b3JzLnB1c2goe2lkczp0LGNhbGxiYWNrOmV9KX0sci5wcm90b3R5cGUuX25vdGlmeT1mdW5jdGlvbihlLHIpe2Zvcih2YXIgbj17fSxhPTAsaT1lO2E8aS5sZW5ndGg7YSs9MSl7dmFyIG89aVthXTt0aGlzLmltYWdlc1tvXXx8dGhpcy5maXJlKG5ldyB0LkV2ZW50KCJzdHlsZWltYWdlbWlzc2luZyIse2lkOm99KSk7dmFyIHM9dGhpcy5pbWFnZXNbb107cz9uW29dPXtkYXRhOnMuZGF0YS5jbG9uZSgpLHBpeGVsUmF0aW86cy5waXhlbFJhdGlvLHNkZjpzLnNkZix2ZXJzaW9uOnMudmVyc2lvbixoYXNSZW5kZXJDYWxsYmFjazpCb29sZWFuKHMudXNlckltYWdlJiZzLnVzZXJJbWFnZS5yZW5kZXIpfTp0Lndhcm5PbmNlKCdJbWFnZSAiJytvKyciIGNvdWxkIG5vdCBiZSBsb2FkZWQuIFBsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgYWRkZWQgdGhlIGltYWdlIHdpdGggbWFwLmFkZEltYWdlKCkgb3IgYSAic3ByaXRlIiBwcm9wZXJ0eSBpbiB5b3VyIHN0eWxlLiBZb3UgY2FuIHByb3ZpZGUgbWlzc2luZyBpbWFnZXMgYnkgbGlzdGVuaW5nIGZvciB0aGUgInN0eWxlaW1hZ2VtaXNzaW5nIiBtYXAgZXZlbnQuJyl9cihudWxsLG4pfSxyLnByb3RvdHlwZS5nZXRQaXhlbFNpemU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmF0bGFzSW1hZ2U7cmV0dXJue3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fX0sci5wcm90b3R5cGUuZ2V0UGF0dGVybj1mdW5jdGlvbihlKXt2YXIgcj10aGlzLnBhdHRlcm5zW2VdLG49dGhpcy5nZXRJbWFnZShlKTtpZighbilyZXR1cm4gbnVsbDtpZihyJiZyLnBvc2l0aW9uLnZlcnNpb249PT1uLnZlcnNpb24pcmV0dXJuIHIucG9zaXRpb247aWYocilyLnBvc2l0aW9uLnZlcnNpb249bi52ZXJzaW9uO2Vsc2V7dmFyIGE9e3c6bi5kYXRhLndpZHRoKzIsaDpuLmRhdGEuaGVpZ2h0KzIseDowLHk6MH0saT1uZXcgdC5JbWFnZVBvc2l0aW9uKGEsbik7dGhpcy5wYXR0ZXJuc1tlXT17YmluOmEscG9zaXRpb246aX19cmV0dXJuIHRoaXMuX3VwZGF0ZVBhdHRlcm5BdGxhcygpLHRoaXMucGF0dGVybnNbZV0ucG9zaXRpb259LHIucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSl7dmFyIHI9ZS5nbDt0aGlzLmF0bGFzVGV4dHVyZT90aGlzLmRpcnR5JiYodGhpcy5hdGxhc1RleHR1cmUudXBkYXRlKHRoaXMuYXRsYXNJbWFnZSksdGhpcy5kaXJ0eT0hMSk6dGhpcy5hdGxhc1RleHR1cmU9bmV3IHQuVGV4dHVyZShlLHRoaXMuYXRsYXNJbWFnZSxyLlJHQkEpLHRoaXMuYXRsYXNUZXh0dXJlLmJpbmQoci5MSU5FQVIsci5DTEFNUF9UT19FREdFKX0sci5wcm90b3R5cGUuX3VwZGF0ZVBhdHRlcm5BdGxhcz1mdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0aGlzLnBhdHRlcm5zKWUucHVzaCh0aGlzLnBhdHRlcm5zW3JdLmJpbik7dmFyIG49dC5wb3RwYWNrKGUpLGE9bi53LGk9bi5oLG89dGhpcy5hdGxhc0ltYWdlO2Zvcih2YXIgcyBpbiBvLnJlc2l6ZSh7d2lkdGg6YXx8MSxoZWlnaHQ6aXx8MX0pLHRoaXMucGF0dGVybnMpe3ZhciBsPXRoaXMucGF0dGVybnNbc10uYmluLGM9bC54KzEsdT1sLnkrMSxoPXRoaXMuaW1hZ2VzW3NdLmRhdGEsZj1oLndpZHRoLHA9aC5oZWlnaHQ7dC5SR0JBSW1hZ2UuY29weShoLG8se3g6MCx5OjB9LHt4OmMseTp1fSx7d2lkdGg6ZixoZWlnaHQ6cH0pLHQuUkdCQUltYWdlLmNvcHkoaCxvLHt4OjAseTpwLTF9LHt4OmMseTp1LTF9LHt3aWR0aDpmLGhlaWdodDoxfSksdC5SR0JBSW1hZ2UuY29weShoLG8se3g6MCx5OjB9LHt4OmMseTp1K3B9LHt3aWR0aDpmLGhlaWdodDoxfSksdC5SR0JBSW1hZ2UuY29weShoLG8se3g6Zi0xLHk6MH0se3g6Yy0xLHk6dX0se3dpZHRoOjEsaGVpZ2h0OnB9KSx0LlJHQkFJbWFnZS5jb3B5KGgsbyx7eDowLHk6MH0se3g6YytmLHk6dX0se3dpZHRoOjEsaGVpZ2h0OnB9KX10aGlzLmRpcnR5PSEwfSxyLnByb3RvdHlwZS5iZWdpbkZyYW1lPWZ1bmN0aW9uKCl7dGhpcy5jYWxsYmFja0Rpc3BhdGNoZWRUaGlzRnJhbWU9e319LHIucHJvdG90eXBlLmRpc3BhdGNoUmVuZGVyQ2FsbGJhY2tzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dDtlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV07aWYoIXRoaXMuY2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lW25dKXt0aGlzLmNhbGxiYWNrRGlzcGF0Y2hlZFRoaXNGcmFtZVtuXT0hMDt2YXIgYT10aGlzLmltYWdlc1tuXTtoKGEpJiZ0aGlzLnVwZGF0ZUltYWdlKG4sYSl9fX0scn0odC5FdmVudGVkKSxwPXYsZD12LGc9MWUyMDtmdW5jdGlvbiB2KHQsZSxyLG4sYSxpKXt0aGlzLmZvbnRTaXplPXR8fDI0LHRoaXMuYnVmZmVyPXZvaWQgMD09PWU/MzplLHRoaXMuY3V0b2ZmPW58fC4yNSx0aGlzLmZvbnRGYW1pbHk9YXx8InNhbnMtc2VyaWYiLHRoaXMuZm9udFdlaWdodD1pfHwibm9ybWFsIix0aGlzLnJhZGl1cz1yfHw4O3ZhciBvPXRoaXMuc2l6ZT10aGlzLmZvbnRTaXplKzIqdGhpcy5idWZmZXI7dGhpcy5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5jYW52YXMud2lkdGg9dGhpcy5jYW52YXMuaGVpZ2h0PW8sdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSx0aGlzLmN0eC5mb250PXRoaXMuZm9udFdlaWdodCsiICIrdGhpcy5mb250U2l6ZSsicHggIit0aGlzLmZvbnRGYW1pbHksdGhpcy5jdHgudGV4dEJhc2VsaW5lPSJtaWRkbGUiLHRoaXMuY3R4LmZpbGxTdHlsZT0iYmxhY2siLHRoaXMuZ3JpZE91dGVyPW5ldyBGbG9hdDY0QXJyYXkobypvKSx0aGlzLmdyaWRJbm5lcj1uZXcgRmxvYXQ2NEFycmF5KG8qbyksdGhpcy5mPW5ldyBGbG9hdDY0QXJyYXkobyksdGhpcy5kPW5ldyBGbG9hdDY0QXJyYXkobyksdGhpcy56PW5ldyBGbG9hdDY0QXJyYXkobysxKSx0aGlzLnY9bmV3IEludDE2QXJyYXkobyksdGhpcy5taWRkbGU9TWF0aC5yb3VuZChvLzIqKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiR2Vja28vIik+PTA/MS4yOjEpKX1mdW5jdGlvbiBtKHQsZSxyLG4sYSxpLG8pe2Zvcih2YXIgcz0wO3M8ZTtzKyspe2Zvcih2YXIgbD0wO2w8cjtsKyspbltsXT10W2wqZStzXTtmb3IoeShuLGEsaSxvLHIpLGw9MDtsPHI7bCsrKXRbbCplK3NdPWFbbF19Zm9yKGw9MDtsPHI7bCsrKXtmb3Iocz0wO3M8ZTtzKyspbltzXT10W2wqZStzXTtmb3IoeShuLGEsaSxvLGUpLHM9MDtzPGU7cysrKXRbbCplK3NdPU1hdGguc3FydChhW3NdKX19ZnVuY3Rpb24geSh0LGUscixuLGEpe3JbMF09MCxuWzBdPS1nLG5bMV09K2c7Zm9yKHZhciBpPTEsbz0wO2k8YTtpKyspe2Zvcih2YXIgcz0odFtpXStpKmktKHRbcltvXV0rcltvXSpyW29dKSkvKDIqaS0yKnJbb10pO3M8PW5bb107KW8tLSxzPSh0W2ldK2kqaS0odFtyW29dXStyW29dKnJbb10pKS8oMippLTIqcltvXSk7clsrK29dPWksbltvXT1zLG5bbysxXT0rZ31mb3IoaT0wLG89MDtpPGE7aSsrKXtmb3IoO25bbysxXTxpOylvKys7ZVtpXT0oaS1yW29dKSooaS1yW29dKSt0W3Jbb11dfX12LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQpe3RoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5zaXplLHRoaXMuc2l6ZSksdGhpcy5jdHguZmlsbFRleHQodCx0aGlzLmJ1ZmZlcix0aGlzLm1pZGRsZSk7Zm9yKHZhciBlPXRoaXMuY3R4LmdldEltYWdlRGF0YSgwLDAsdGhpcy5zaXplLHRoaXMuc2l6ZSkscj1uZXcgVWludDhDbGFtcGVkQXJyYXkodGhpcy5zaXplKnRoaXMuc2l6ZSksbj0wO248dGhpcy5zaXplKnRoaXMuc2l6ZTtuKyspe3ZhciBhPWUuZGF0YVs0Km4rM10vMjU1O3RoaXMuZ3JpZE91dGVyW25dPTE9PT1hPzA6MD09PWE/ZzpNYXRoLnBvdyhNYXRoLm1heCgwLC41LWEpLDIpLHRoaXMuZ3JpZElubmVyW25dPTE9PT1hP2c6MD09PWE/MDpNYXRoLnBvdyhNYXRoLm1heCgwLGEtLjUpLDIpfWZvcihtKHRoaXMuZ3JpZE91dGVyLHRoaXMuc2l6ZSx0aGlzLnNpemUsdGhpcy5mLHRoaXMuZCx0aGlzLnYsdGhpcy56KSxtKHRoaXMuZ3JpZElubmVyLHRoaXMuc2l6ZSx0aGlzLnNpemUsdGhpcy5mLHRoaXMuZCx0aGlzLnYsdGhpcy56KSxuPTA7bjx0aGlzLnNpemUqdGhpcy5zaXplO24rKyl7dmFyIGk9dGhpcy5ncmlkT3V0ZXJbbl0tdGhpcy5ncmlkSW5uZXJbbl07cltuXT1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI1NS0yNTUqKGkvdGhpcy5yYWRpdXMrdGhpcy5jdXRvZmYpKSkpfXJldHVybiByfSxwLmRlZmF1bHQ9ZDt2YXIgeD1mdW5jdGlvbih0LGUpe3RoaXMucmVxdWVzdE1hbmFnZXI9dCx0aGlzLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseT1lLHRoaXMuZW50cmllcz17fX07eC5wcm90b3R5cGUuc2V0VVJMPWZ1bmN0aW9uKHQpe3RoaXMudXJsPXR9LHgucHJvdG90eXBlLmdldEdseXBocz1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMsYT1bXTtmb3IodmFyIGkgaW4gZSlmb3IodmFyIG89MCxzPWVbaV07bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1zW29dO2EucHVzaCh7c3RhY2s6aSxpZDpsfSl9dC5hc3luY0FsbChhLGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5zdGFjayxhPXQuaWQsaT1uLmVudHJpZXNbcl07aXx8KGk9bi5lbnRyaWVzW3JdPXtnbHlwaHM6e30scmVxdWVzdHM6e319KTt2YXIgbz1pLmdseXBoc1thXTtpZih2b2lkIDA9PT1vKXtpZihvPW4uX3RpbnlTREYoaSxyLGEpKXJldHVybiBpLmdseXBoc1thXT1vLHZvaWQgZShudWxsLHtzdGFjazpyLGlkOmEsZ2x5cGg6b30pO3ZhciBzPU1hdGguZmxvb3IoYS8yNTYpO2lmKDI1NipzPjY1NTM1KWUobmV3IEVycm9yKCJnbHlwaHMgPiA2NTUzNSBub3Qgc3VwcG9ydGVkIikpO2Vsc2V7dmFyIGw9aS5yZXF1ZXN0c1tzXTtsfHwobD1pLnJlcXVlc3RzW3NdPVtdLHgubG9hZEdseXBoUmFuZ2UocixzLG4udXJsLG4ucmVxdWVzdE1hbmFnZXIsZnVuY3Rpb24odCxlKXtpZihlKWZvcih2YXIgciBpbiBlKW4uX2RvZXNDaGFyU3VwcG9ydExvY2FsR2x5cGgoK3IpfHwoaS5nbHlwaHNbK3JdPWVbK3JdKTtmb3IodmFyIGE9MCxvPWw7YTxvLmxlbmd0aDthKz0xKSgwLG9bYV0pKHQsZSk7ZGVsZXRlIGkucmVxdWVzdHNbc119KSksbC5wdXNoKGZ1bmN0aW9uKHQsbil7dD9lKHQpOm4mJmUobnVsbCx7c3RhY2s6cixpZDphLGdseXBoOm5bYV18fG51bGx9KX0pfX1lbHNlIGUobnVsbCx7c3RhY2s6cixpZDphLGdseXBoOm99KX0sZnVuY3Rpb24odCxlKXtpZih0KXIodCk7ZWxzZSBpZihlKXtmb3IodmFyIG49e30sYT0wLGk9ZTthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV0scz1vLnN0YWNrLGw9by5pZCxjPW8uZ2x5cGg7KG5bc118fChuW3NdPXt9KSlbbF09YyYme2lkOmMuaWQsYml0bWFwOmMuYml0bWFwLmNsb25lKCksbWV0cmljczpjLm1ldHJpY3N9fXIobnVsbCxuKX19KX0seC5wcm90b3R5cGUuX2RvZXNDaGFyU3VwcG9ydExvY2FsR2x5cGg9ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseSYmKHQuaXNDaGFyWyJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIl0oZSl8fHQuaXNDaGFyWyJIYW5ndWwgU3lsbGFibGVzIl0oZSl8fHQuaXNDaGFyLkhpcmFnYW5hKGUpfHx0LmlzQ2hhci5LYXRha2FuYShlKSl9LHgucHJvdG90eXBlLl90aW55U0RGPWZ1bmN0aW9uKGUscixuKXt2YXIgYT10aGlzLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseTtpZihhJiZ0aGlzLl9kb2VzQ2hhclN1cHBvcnRMb2NhbEdseXBoKG4pKXt2YXIgaT1lLnRpbnlTREY7aWYoIWkpe3ZhciBvPSI0MDAiOy9ib2xkL2kudGVzdChyKT9vPSI5MDAiOi9tZWRpdW0vaS50ZXN0KHIpP289IjUwMCI6L2xpZ2h0L2kudGVzdChyKSYmKG89IjIwMCIpLGk9ZS50aW55U0RGPW5ldyB4LlRpbnlTREYoMjQsMyw4LC4yNSxhLG8pfXJldHVybntpZDpuLGJpdG1hcDpuZXcgdC5BbHBoYUltYWdlKHt3aWR0aDozMCxoZWlnaHQ6MzB9LGkuZHJhdyhTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKSksbWV0cmljczp7d2lkdGg6MjQsaGVpZ2h0OjI0LGxlZnQ6MCx0b3A6LTgsYWR2YW5jZToyNH19fX0seC5sb2FkR2x5cGhSYW5nZT1mdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvPTI1NipyLHM9bysyNTUsbD1hLnRyYW5zZm9ybVJlcXVlc3QoYS5ub3JtYWxpemVHbHlwaHNVUkwobikucmVwbGFjZSgie2ZvbnRzdGFja30iLGUpLnJlcGxhY2UoIntyYW5nZX0iLG8rIi0iK3MpLHQuUmVzb3VyY2VUeXBlLkdseXBocyk7dC5nZXRBcnJheUJ1ZmZlcihsLGZ1bmN0aW9uKGUscil7aWYoZSlpKGUpO2Vsc2UgaWYocil7Zm9yKHZhciBuPXt9LGE9MCxvPXQucGFyc2VHbHlwaFBCRihyKTthPG8ubGVuZ3RoO2ErPTEpe3ZhciBzPW9bYV07bltzLmlkXT1zfWkobnVsbCxuKX19KX0seC5UaW55U0RGPXA7dmFyIGI9ZnVuY3Rpb24oKXt0aGlzLnNwZWNpZmljYXRpb249dC5zdHlsZVNwZWMubGlnaHQucG9zaXRpb259O2IucHJvdG90eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5zcGhlcmljYWxUb0NhcnRlc2lhbihlLmV4cHJlc3Npb24uZXZhbHVhdGUocikpfSxiLnByb3RvdHlwZS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihlLHIsbil7cmV0dXJue3g6dC5udW1iZXIoZS54LHIueCxuKSx5OnQubnVtYmVyKGUueSxyLnksbiksejp0Lm51bWJlcihlLnosci56LG4pfX07dmFyIF89bmV3IHQuUHJvcGVydGllcyh7YW5jaG9yOm5ldyB0LkRhdGFDb25zdGFudFByb3BlcnR5KHQuc3R5bGVTcGVjLmxpZ2h0LmFuY2hvcikscG9zaXRpb246bmV3IGIsY29sb3I6bmV3IHQuRGF0YUNvbnN0YW50UHJvcGVydHkodC5zdHlsZVNwZWMubGlnaHQuY29sb3IpLGludGVuc2l0eTpuZXcgdC5EYXRhQ29uc3RhbnRQcm9wZXJ0eSh0LnN0eWxlU3BlYy5saWdodC5pbnRlbnNpdHkpfSksdz1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHIpe2UuY2FsbCh0aGlzKSx0aGlzLl90cmFuc2l0aW9uYWJsZT1uZXcgdC5UcmFuc2l0aW9uYWJsZShfKSx0aGlzLnNldExpZ2h0KHIpLHRoaXMuX3RyYW5zaXRpb25pbmc9dGhpcy5fdHJhbnNpdGlvbmFibGUudW50cmFuc2l0aW9uZWQoKX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUuZ2V0TGlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbmFibGUuc2VyaWFsaXplKCl9LHIucHJvdG90eXBlLnNldExpZ2h0PWZ1bmN0aW9uKGUscil7aWYodm9pZCAwPT09ciYmKHI9e30pLCF0aGlzLl92YWxpZGF0ZSh0LnZhbGlkYXRlTGlnaHQsZSxyKSlmb3IodmFyIG4gaW4gZSl7dmFyIGE9ZVtuXTt0LmVuZHNXaXRoKG4sIi10cmFuc2l0aW9uIik/dGhpcy5fdHJhbnNpdGlvbmFibGUuc2V0VHJhbnNpdGlvbihuLnNsaWNlKDAsLSItdHJhbnNpdGlvbiIubGVuZ3RoKSxhKTp0aGlzLl90cmFuc2l0aW9uYWJsZS5zZXRWYWx1ZShuLGEpfX0sci5wcm90b3R5cGUudXBkYXRlVHJhbnNpdGlvbnM9ZnVuY3Rpb24odCl7dGhpcy5fdHJhbnNpdGlvbmluZz10aGlzLl90cmFuc2l0aW9uYWJsZS50cmFuc2l0aW9uZWQodCx0aGlzLl90cmFuc2l0aW9uaW5nKX0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uaW5nLmhhc1RyYW5zaXRpb24oKX0sci5wcm90b3R5cGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24odCl7dGhpcy5wcm9wZXJ0aWVzPXRoaXMuX3RyYW5zaXRpb25pbmcucG9zc2libHlFdmFsdWF0ZSh0KX0sci5wcm90b3R5cGUuX3ZhbGlkYXRlPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4oIW58fCExIT09bi52YWxpZGF0ZSkmJnQuZW1pdFZhbGlkYXRpb25FcnJvcnModGhpcyxlLmNhbGwodC52YWxpZGF0ZVN0eWxlLHQuZXh0ZW5kKHt2YWx1ZTpyLHN0eWxlOntnbHlwaHM6ITAsc3ByaXRlOiEwfSxzdHlsZVNwZWM6dC5zdHlsZVNwZWN9KSkpfSxyfSh0LkV2ZW50ZWQpLGs9ZnVuY3Rpb24odCxlKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLm5leHRSb3c9MCx0aGlzLmJ5dGVzPTQsdGhpcy5kYXRhPW5ldyBVaW50OEFycmF5KHRoaXMud2lkdGgqdGhpcy5oZWlnaHQqdGhpcy5ieXRlcyksdGhpcy5wb3NpdGlvbnM9e319O2sucHJvdG90eXBlLmdldERhc2g9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmpvaW4oIiwiKStTdHJpbmcoZSk7cmV0dXJuIHRoaXMucG9zaXRpb25zW3JdfHwodGhpcy5wb3NpdGlvbnNbcl09dGhpcy5hZGREYXNoKHQsZSkpLHRoaXMucG9zaXRpb25zW3JdfSxrLnByb3RvdHlwZS5hZGREYXNoPWZ1bmN0aW9uKGUscil7dmFyIG49cj83OjAsYT0yKm4rMTtpZih0aGlzLm5leHRSb3crYT50aGlzLmhlaWdodClyZXR1cm4gdC53YXJuT25jZSgiTGluZUF0bGFzIG91dCBvZiBzcGFjZSIpLG51bGw7Zm9yKHZhciBpPTAsbz0wO288ZS5sZW5ndGg7bysrKWkrPWVbb107Zm9yKHZhciBzPXRoaXMud2lkdGgvaSxsPXMvMixjPWUubGVuZ3RoJTI9PTEsdT0tbjt1PD1uO3UrKylmb3IodmFyIGg9dGhpcy5uZXh0Um93K24rdSxmPXRoaXMud2lkdGgqaCxwPWM/LWVbZS5sZW5ndGgtMV06MCxkPWVbMF0sZz0xLHY9MDt2PHRoaXMud2lkdGg7disrKXtmb3IoO2Q8di9zOylwPWQsZCs9ZVtnXSxjJiZnPT09ZS5sZW5ndGgtMSYmKGQrPWVbMF0pLGcrKzt2YXIgbT1NYXRoLmFicyh2LXAqcykseT1NYXRoLmFicyh2LWQqcykseD1NYXRoLm1pbihtLHkpLGI9ZyUyPT0xLF89dm9pZCAwO2lmKHIpe3ZhciB3PW4/dS9uKihsKzEpOjA7aWYoYil7dmFyIGs9bC1NYXRoLmFicyh3KTtfPU1hdGguc3FydCh4KngrayprKX1lbHNlIF89bC1NYXRoLnNxcnQoeCp4K3cqdyl9ZWxzZSBfPShiPzE6LTEpKng7dGhpcy5kYXRhWzMrNCooZit2KV09TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsXysxMjgpKX12YXIgVD17eToodGhpcy5uZXh0Um93K24rLjUpL3RoaXMuaGVpZ2h0LGhlaWdodDoyKm4vdGhpcy5oZWlnaHQsd2lkdGg6aX07cmV0dXJuIHRoaXMubmV4dFJvdys9YSx0aGlzLmRpcnR5PSEwLFR9LGsucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5nbDt0aGlzLnRleHR1cmU/KGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksdGhpcy5kaXJ0eSYmKHRoaXMuZGlydHk9ITEsZS50ZXhTdWJJbWFnZTJEKGUuVEVYVFVSRV8yRCwwLDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LGUuUkdCQSxlLlVOU0lHTkVEX0JZVEUsdGhpcy5kYXRhKSkpOih0aGlzLnRleHR1cmU9ZS5jcmVhdGVUZXh0dXJlKCksZS5iaW5kVGV4dHVyZShlLlRFWFRVUkVfMkQsdGhpcy50ZXh0dXJlKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9XUkFQX1MsZS5SRVBFQVQpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX1dSQVBfVCxlLlJFUEVBVCksZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfTUlOX0ZJTFRFUixlLkxJTkVBUiksZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfTUFHX0ZJTFRFUixlLkxJTkVBUiksZS50ZXhJbWFnZTJEKGUuVEVYVFVSRV8yRCwwLGUuUkdCQSx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LDAsZS5SR0JBLGUuVU5TSUdORURfQllURSx0aGlzLmRhdGEpKX07dmFyIFQ9ZnVuY3Rpb24gZShyLG4pe3RoaXMud29ya2VyUG9vbD1yLHRoaXMuYWN0b3JzPVtdLHRoaXMuY3VycmVudEFjdG9yPTAsdGhpcy5pZD10LnVuaXF1ZUlkKCk7Zm9yKHZhciBhPXRoaXMud29ya2VyUG9vbC5hY3F1aXJlKHRoaXMuaWQpLGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIG89YVtpXSxzPW5ldyBlLkFjdG9yKG8sbix0aGlzLmlkKTtzLm5hbWU9IldvcmtlciAiK2ksdGhpcy5hY3RvcnMucHVzaChzKX19O2Z1bmN0aW9uIE0oZSxyLG4pe3ZhciBhPWZ1bmN0aW9uKGEsaSl7aWYoYSlyZXR1cm4gbihhKTtpZihpKXt2YXIgbz10LnBpY2sodC5leHRlbmQoaSxlKSxbInRpbGVzIiwibWluem9vbSIsIm1heHpvb20iLCJhdHRyaWJ1dGlvbiIsIm1hcGJveF9sb2dvIiwiYm91bmRzIiwic2NoZW1lIiwidGlsZVNpemUiLCJlbmNvZGluZyJdKTtpLnZlY3Rvcl9sYXllcnMmJihvLnZlY3RvckxheWVycz1pLnZlY3Rvcl9sYXllcnMsby52ZWN0b3JMYXllcklkcz1vLnZlY3RvckxheWVycy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSksZS51cmwmJihvLnRpbGVzPXIuY2Fub25pY2FsaXplVGlsZXNldChvLGUudXJsKSksbihudWxsLG8pfX07cmV0dXJuIGUudXJsP3QuZ2V0SlNPTihyLnRyYW5zZm9ybVJlcXVlc3Qoci5ub3JtYWxpemVTb3VyY2VVUkwoZS51cmwpLHQuUmVzb3VyY2VUeXBlLlNvdXJjZSksYSk6dC5icm93c2VyLmZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIGEobnVsbCxlKX0pfVQucHJvdG90eXBlLmJyb2FkY2FzdD1mdW5jdGlvbihlLHIsbil7bj1ufHxmdW5jdGlvbigpe30sdC5hc3luY0FsbCh0aGlzLmFjdG9ycyxmdW5jdGlvbih0LG4pe3Quc2VuZChlLHIsbil9LG4pfSxULnByb3RvdHlwZS5nZXRBY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRBY3Rvcj0odGhpcy5jdXJyZW50QWN0b3IrMSkldGhpcy5hY3RvcnMubGVuZ3RoLHRoaXMuYWN0b3JzW3RoaXMuY3VycmVudEFjdG9yXX0sVC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5hY3RvcnMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnJlbW92ZSgpfSksdGhpcy5hY3RvcnM9W10sdGhpcy53b3JrZXJQb29sLnJlbGVhc2UodGhpcy5pZCl9LFQuQWN0b3I9dC5BY3Rvcjt2YXIgQT1mdW5jdGlvbihlLHIsbil7dGhpcy5ib3VuZHM9dC5MbmdMYXRCb3VuZHMuY29udmVydCh0aGlzLnZhbGlkYXRlQm91bmRzKGUpKSx0aGlzLm1pbnpvb209cnx8MCx0aGlzLm1heHpvb209bnx8MjR9O0EucHJvdG90eXBlLnZhbGlkYXRlQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiY0PT09dC5sZW5ndGg/W01hdGgubWF4KC0xODAsdFswXSksTWF0aC5tYXgoLTkwLHRbMV0pLE1hdGgubWluKDE4MCx0WzJdKSxNYXRoLm1pbig5MCx0WzNdKV06Wy0xODAsLTkwLDE4MCw5MF19LEEucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKGUpe3ZhciByPU1hdGgucG93KDIsZS56KSxuPU1hdGguZmxvb3IodC5tZXJjYXRvclhmcm9tTG5nKHRoaXMuYm91bmRzLmdldFdlc3QoKSkqciksYT1NYXRoLmZsb29yKHQubWVyY2F0b3JZZnJvbUxhdCh0aGlzLmJvdW5kcy5nZXROb3J0aCgpKSpyKSxpPU1hdGguY2VpbCh0Lm1lcmNhdG9yWGZyb21MbmcodGhpcy5ib3VuZHMuZ2V0RWFzdCgpKSpyKSxvPU1hdGguY2VpbCh0Lm1lcmNhdG9yWWZyb21MYXQodGhpcy5ib3VuZHMuZ2V0U291dGgoKSkqcik7cmV0dXJuIGUueD49biYmZS54PGkmJmUueT49YSYmZS55PG99O3ZhciBTPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIocixuLGEsaSl7aWYoZS5jYWxsKHRoaXMpLHRoaXMuaWQ9cix0aGlzLmRpc3BhdGNoZXI9YSx0aGlzLnR5cGU9InZlY3RvciIsdGhpcy5taW56b29tPTAsdGhpcy5tYXh6b29tPTIyLHRoaXMuc2NoZW1lPSJ4eXoiLHRoaXMudGlsZVNpemU9NTEyLHRoaXMucmVwYXJzZU92ZXJzY2FsZWQ9ITAsdGhpcy5pc1RpbGVDbGlwcGVkPSEwLHRoaXMuX2xvYWRlZD0hMSx0LmV4dGVuZCh0aGlzLHQucGljayhuLFsidXJsIiwic2NoZW1lIiwidGlsZVNpemUiXSkpLHRoaXMuX29wdGlvbnM9dC5leHRlbmQoe3R5cGU6InZlY3RvciJ9LG4pLHRoaXMuX2NvbGxlY3RSZXNvdXJjZVRpbWluZz1uLmNvbGxlY3RSZXNvdXJjZVRpbWluZyw1MTIhPT10aGlzLnRpbGVTaXplKXRocm93IG5ldyBFcnJvcigidmVjdG9yIHRpbGUgc291cmNlcyBtdXN0IGhhdmUgYSB0aWxlU2l6ZSBvZiA1MTIiKTt0aGlzLnNldEV2ZW50ZWRQYXJlbnQoaSl9cmV0dXJuIGUmJihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2xvYWRlZD0hMSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRhdGFsb2FkaW5nIix7ZGF0YVR5cGU6InNvdXJjZSJ9KSksdGhpcy5fdGlsZUpTT05SZXF1ZXN0PU0odGhpcy5fb3B0aW9ucyx0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIsZnVuY3Rpb24ocixuKXtlLl90aWxlSlNPTlJlcXVlc3Q9bnVsbCxlLl9sb2FkZWQ9ITAscj9lLmZpcmUobmV3IHQuRXJyb3JFdmVudChyKSk6biYmKHQuZXh0ZW5kKGUsbiksbi5ib3VuZHMmJihlLnRpbGVCb3VuZHM9bmV3IEEobi5ib3VuZHMsZS5taW56b29tLGUubWF4em9vbSkpLHQucG9zdFR1cm5zdGlsZUV2ZW50KG4udGlsZXMsZS5tYXAuX3JlcXVlc3RNYW5hZ2VyLl9jdXN0b21BY2Nlc3NUb2tlbiksdC5wb3N0TWFwTG9hZEV2ZW50KG4udGlsZXMsZS5tYXAuX2dldE1hcElkKCksZS5tYXAuX3JlcXVlc3RNYW5hZ2VyLl9za3VUb2tlbixlLm1hcC5fcmVxdWVzdE1hbmFnZXIuX2N1c3RvbUFjY2Vzc1Rva2VuKSxlLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic291cmNlIixzb3VyY2VEYXRhVHlwZToibWV0YWRhdGEifSkpLGUuZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzb3VyY2UiLHNvdXJjZURhdGFUeXBlOiJjb250ZW50In0pKSl9KX0sci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRlZH0sci5wcm90b3R5cGUuaGFzVGlsZT1mdW5jdGlvbih0KXtyZXR1cm4hdGhpcy50aWxlQm91bmRzfHx0aGlzLnRpbGVCb3VuZHMuY29udGFpbnModC5jYW5vbmljYWwpfSxyLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt0aGlzLm1hcD10LHRoaXMubG9hZCgpfSxyLnByb3RvdHlwZS5vblJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3RpbGVKU09OUmVxdWVzdCYmKHRoaXMuX3RpbGVKU09OUmVxdWVzdC5jYW5jZWwoKSx0aGlzLl90aWxlSlNPTlJlcXVlc3Q9bnVsbCl9LHIucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0LmV4dGVuZCh7fSx0aGlzLl9vcHRpb25zKX0sci5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIubm9ybWFsaXplVGlsZVVSTChlLnRpbGVJRC5jYW5vbmljYWwudXJsKHRoaXMudGlsZXMsdGhpcy5zY2hlbWUpLHRoaXMudXJsLG51bGwpLGE9e3JlcXVlc3Q6dGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3Qobix0LlJlc291cmNlVHlwZS5UaWxlKSx1aWQ6ZS51aWQsdGlsZUlEOmUudGlsZUlELHpvb206ZS50aWxlSUQub3ZlcnNjYWxlZFosdGlsZVNpemU6dGhpcy50aWxlU2l6ZSplLnRpbGVJRC5vdmVyc2NhbGVGYWN0b3IoKSx0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5pZCxwaXhlbFJhdGlvOnQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLHNob3dDb2xsaXNpb25Cb3hlczp0aGlzLm1hcC5zaG93Q29sbGlzaW9uQm94ZXN9O2Z1bmN0aW9uIGkobixhKXtyZXR1cm4gZGVsZXRlIGUucmVxdWVzdCxlLmFib3J0ZWQ/cihudWxsKTpuJiY0MDQhPT1uLnN0YXR1cz9yKG4pOihhJiZhLnJlc291cmNlVGltaW5nJiYoZS5yZXNvdXJjZVRpbWluZz1hLnJlc291cmNlVGltaW5nKSx0aGlzLm1hcC5fcmVmcmVzaEV4cGlyZWRUaWxlcyYmYSYmZS5zZXRFeHBpcnlEYXRhKGEpLGUubG9hZFZlY3RvckRhdGEoYSx0aGlzLm1hcC5wYWludGVyKSx0LmNhY2hlRW50cnlQb3NzaWJseUFkZGVkKHRoaXMuZGlzcGF0Y2hlcikscihudWxsKSx2b2lkKGUucmVsb2FkQ2FsbGJhY2smJih0aGlzLmxvYWRUaWxlKGUsZS5yZWxvYWRDYWxsYmFjayksZS5yZWxvYWRDYWxsYmFjaz1udWxsKSkpfWEucmVxdWVzdC5jb2xsZWN0UmVzb3VyY2VUaW1pbmc9dGhpcy5fY29sbGVjdFJlc291cmNlVGltaW5nLGUuYWN0b3ImJiJleHBpcmVkIiE9PWUuc3RhdGU/ImxvYWRpbmciPT09ZS5zdGF0ZT9lLnJlbG9hZENhbGxiYWNrPXI6ZS5yZXF1ZXN0PWUuYWN0b3Iuc2VuZCgicmVsb2FkVGlsZSIsYSxpLmJpbmQodGhpcykpOihlLmFjdG9yPXRoaXMuZGlzcGF0Y2hlci5nZXRBY3RvcigpLGUucmVxdWVzdD1lLmFjdG9yLnNlbmQoImxvYWRUaWxlIixhLGkuYmluZCh0aGlzKSkpfSxyLnByb3RvdHlwZS5hYm9ydFRpbGU9ZnVuY3Rpb24odCl7dC5yZXF1ZXN0JiYodC5yZXF1ZXN0LmNhbmNlbCgpLGRlbGV0ZSB0LnJlcXVlc3QpLHQuYWN0b3ImJnQuYWN0b3Iuc2VuZCgiYWJvcnRUaWxlIix7dWlkOnQudWlkLHR5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkfSx2b2lkIDApfSxyLnByb3RvdHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKHQpe3QudW5sb2FkVmVjdG9yRGF0YSgpLHQuYWN0b3ImJnQuYWN0b3Iuc2VuZCgicmVtb3ZlVGlsZSIse3VpZDp0LnVpZCx0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5pZH0sdm9pZCAwKX0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiExfSxyfSh0LkV2ZW50ZWQpLEU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyLG4sYSxpKXtlLmNhbGwodGhpcyksdGhpcy5pZD1yLHRoaXMuZGlzcGF0Y2hlcj1hLHRoaXMuc2V0RXZlbnRlZFBhcmVudChpKSx0aGlzLnR5cGU9InJhc3RlciIsdGhpcy5taW56b29tPTAsdGhpcy5tYXh6b29tPTIyLHRoaXMucm91bmRab29tPSEwLHRoaXMuc2NoZW1lPSJ4eXoiLHRoaXMudGlsZVNpemU9NTEyLHRoaXMuX2xvYWRlZD0hMSx0aGlzLl9vcHRpb25zPXQuZXh0ZW5kKHt0eXBlOiJyYXN0ZXIifSxuKSx0LmV4dGVuZCh0aGlzLHQucGljayhuLFsidXJsIiwic2NoZW1lIiwidGlsZVNpemUiXSkpfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9sb2FkZWQ9ITEsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse2RhdGFUeXBlOiJzb3VyY2UifSkpLHRoaXMuX3RpbGVKU09OUmVxdWVzdD1NKHRoaXMuX29wdGlvbnMsdGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLGZ1bmN0aW9uKHIsbil7ZS5fdGlsZUpTT05SZXF1ZXN0PW51bGwsZS5fbG9hZGVkPSEwLHI/ZS5maXJlKG5ldyB0LkVycm9yRXZlbnQocikpOm4mJih0LmV4dGVuZChlLG4pLG4uYm91bmRzJiYoZS50aWxlQm91bmRzPW5ldyBBKG4uYm91bmRzLGUubWluem9vbSxlLm1heHpvb20pKSx0LnBvc3RUdXJuc3RpbGVFdmVudChuLnRpbGVzKSx0LnBvc3RNYXBMb2FkRXZlbnQobi50aWxlcyxlLm1hcC5fZ2V0TWFwSWQoKSxlLm1hcC5fcmVxdWVzdE1hbmFnZXIuX3NrdVRva2VuKSxlLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic291cmNlIixzb3VyY2VEYXRhVHlwZToibWV0YWRhdGEifSkpLGUuZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzb3VyY2UiLHNvdXJjZURhdGFUeXBlOiJjb250ZW50In0pKSl9KX0sci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRlZH0sci5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5tYXA9dCx0aGlzLmxvYWQoKX0sci5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl90aWxlSlNPTlJlcXVlc3QmJih0aGlzLl90aWxlSlNPTlJlcXVlc3QuY2FuY2VsKCksdGhpcy5fdGlsZUpTT05SZXF1ZXN0PW51bGwpfSxyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5leHRlbmQoe30sdGhpcy5fb3B0aW9ucyl9LHIucHJvdG90eXBlLmhhc1RpbGU9ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMudGlsZUJvdW5kc3x8dGhpcy50aWxlQm91bmRzLmNvbnRhaW5zKHQuY2Fub25pY2FsKX0sci5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLGE9dGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLm5vcm1hbGl6ZVRpbGVVUkwoZS50aWxlSUQuY2Fub25pY2FsLnVybCh0aGlzLnRpbGVzLHRoaXMuc2NoZW1lKSx0aGlzLnVybCx0aGlzLnRpbGVTaXplKTtlLnJlcXVlc3Q9dC5nZXRJbWFnZSh0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdChhLHQuUmVzb3VyY2VUeXBlLlRpbGUpLGZ1bmN0aW9uKGEsaSl7aWYoZGVsZXRlIGUucmVxdWVzdCxlLmFib3J0ZWQpZS5zdGF0ZT0idW5sb2FkZWQiLHIobnVsbCk7ZWxzZSBpZihhKWUuc3RhdGU9ImVycm9yZWQiLHIoYSk7ZWxzZSBpZihpKXtuLm1hcC5fcmVmcmVzaEV4cGlyZWRUaWxlcyYmZS5zZXRFeHBpcnlEYXRhKGkpLGRlbGV0ZSBpLmNhY2hlQ29udHJvbCxkZWxldGUgaS5leHBpcmVzO3ZhciBvPW4ubWFwLnBhaW50ZXIuY29udGV4dCxzPW8uZ2w7ZS50ZXh0dXJlPW4ubWFwLnBhaW50ZXIuZ2V0VGlsZVRleHR1cmUoaS53aWR0aCksZS50ZXh0dXJlP2UudGV4dHVyZS51cGRhdGUoaSx7dXNlTWlwbWFwOiEwfSk6KGUudGV4dHVyZT1uZXcgdC5UZXh0dXJlKG8saSxzLlJHQkEse3VzZU1pcG1hcDohMH0pLGUudGV4dHVyZS5iaW5kKHMuTElORUFSLHMuQ0xBTVBfVE9fRURHRSxzLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCksby5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMmJnMudGV4UGFyYW1ldGVyZihzLlRFWFRVUkVfMkQsby5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsby5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWNNYXgpKSxlLnN0YXRlPSJsb2FkZWQiLHQuY2FjaGVFbnRyeVBvc3NpYmx5QWRkZWQobi5kaXNwYXRjaGVyKSxyKG51bGwpfX0pfSxyLnByb3RvdHlwZS5hYm9ydFRpbGU9ZnVuY3Rpb24odCxlKXt0LnJlcXVlc3QmJih0LnJlcXVlc3QuY2FuY2VsKCksZGVsZXRlIHQucmVxdWVzdCksZSgpfSxyLnByb3RvdHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKHQsZSl7dC50ZXh0dXJlJiZ0aGlzLm1hcC5wYWludGVyLnNhdmVUaWxlVGV4dHVyZSh0LnRleHR1cmUpLGUoKX0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiExfSxyfSh0LkV2ZW50ZWQpLEw9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyLG4sYSxpKXtlLmNhbGwodGhpcyxyLG4sYSxpKSx0aGlzLnR5cGU9InJhc3Rlci1kZW0iLHRoaXMubWF4em9vbT0yMix0aGlzLl9vcHRpb25zPXQuZXh0ZW5kKHt0eXBlOiJyYXN0ZXItZGVtIn0sbiksdGhpcy5lbmNvZGluZz1uLmVuY29kaW5nfHwibWFwYm94In1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6InJhc3Rlci1kZW0iLHVybDp0aGlzLnVybCx0aWxlU2l6ZTp0aGlzLnRpbGVTaXplLHRpbGVzOnRoaXMudGlsZXMsYm91bmRzOnRoaXMuYm91bmRzLGVuY29kaW5nOnRoaXMuZW5jb2Rpbmd9fSxyLnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci5ub3JtYWxpemVUaWxlVVJMKGUudGlsZUlELmNhbm9uaWNhbC51cmwodGhpcy50aWxlcyx0aGlzLnNjaGVtZSksdGhpcy51cmwsdGhpcy50aWxlU2l6ZSk7ZS5yZXF1ZXN0PXQuZ2V0SW1hZ2UodGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3Qobix0LlJlc291cmNlVHlwZS5UaWxlKSxmdW5jdGlvbihuLGEpe2lmKGRlbGV0ZSBlLnJlcXVlc3QsZS5hYm9ydGVkKWUuc3RhdGU9InVubG9hZGVkIixyKG51bGwpO2Vsc2UgaWYobillLnN0YXRlPSJlcnJvcmVkIixyKG4pO2Vsc2UgaWYoYSl7dGhpcy5tYXAuX3JlZnJlc2hFeHBpcmVkVGlsZXMmJmUuc2V0RXhwaXJ5RGF0YShhKSxkZWxldGUgYS5jYWNoZUNvbnRyb2wsZGVsZXRlIGEuZXhwaXJlczt2YXIgaT10LmJyb3dzZXIuZ2V0SW1hZ2VEYXRhKGEpLG89e3VpZDplLnVpZCxjb29yZDplLnRpbGVJRCxzb3VyY2U6dGhpcy5pZCxyYXdJbWFnZURhdGE6aSxlbmNvZGluZzp0aGlzLmVuY29kaW5nfTtlLmFjdG9yJiYiZXhwaXJlZCIhPT1lLnN0YXRlfHwoZS5hY3Rvcj10aGlzLmRpc3BhdGNoZXIuZ2V0QWN0b3IoKSxlLmFjdG9yLnNlbmQoImxvYWRERU1UaWxlIixvLGZ1bmN0aW9uKHQsbil7dCYmKGUuc3RhdGU9ImVycm9yZWQiLHIodCkpLG4mJihlLmRlbT1uLGUubmVlZHNIaWxsc2hhZGVQcmVwYXJlPSEwLGUuc3RhdGU9ImxvYWRlZCIscihudWxsKSl9LmJpbmQodGhpcykpKX19LmJpbmQodGhpcykpLGUubmVpZ2hib3JpbmdUaWxlcz10aGlzLl9nZXROZWlnaGJvcmluZ1RpbGVzKGUudGlsZUlEKX0sci5wcm90b3R5cGUuX2dldE5laWdoYm9yaW5nVGlsZXM9ZnVuY3Rpb24oZSl7dmFyIHI9ZS5jYW5vbmljYWwsbj1NYXRoLnBvdygyLHIueiksYT0oci54LTErbiklbixpPTA9PT1yLng/ZS53cmFwLTE6ZS53cmFwLG89KHIueCsxK24pJW4scz1yLngrMT09PW4/ZS53cmFwKzE6ZS53cmFwLGw9e307cmV0dXJuIGxbbmV3IHQuT3ZlcnNjYWxlZFRpbGVJRChlLm92ZXJzY2FsZWRaLGksci56LGEsci55KS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixzLHIueixvLHIueSkua2V5XT17YmFja2ZpbGxlZDohMX0sci55PjAmJihsW25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixpLHIueixhLHIueS0xKS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixlLndyYXAsci56LHIueCxyLnktMSkua2V5XT17YmFja2ZpbGxlZDohMX0sbFtuZXcgdC5PdmVyc2NhbGVkVGlsZUlEKGUub3ZlcnNjYWxlZFoscyxyLnosbyxyLnktMSkua2V5XT17YmFja2ZpbGxlZDohMX0pLHIueSsxPG4mJihsW25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixpLHIueixhLHIueSsxKS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixlLndyYXAsci56LHIueCxyLnkrMSkua2V5XT17YmFja2ZpbGxlZDohMX0sbFtuZXcgdC5PdmVyc2NhbGVkVGlsZUlEKGUub3ZlcnNjYWxlZFoscyxyLnosbyxyLnkrMSkua2V5XT17YmFja2ZpbGxlZDohMX0pLGx9LHIucHJvdG90eXBlLnVubG9hZFRpbGU9ZnVuY3Rpb24odCl7dC5kZW1UZXh0dXJlJiZ0aGlzLm1hcC5wYWludGVyLnNhdmVUaWxlVGV4dHVyZSh0LmRlbVRleHR1cmUpLHQuZmJvJiYodC5mYm8uZGVzdHJveSgpLGRlbGV0ZSB0LmZibyksdC5kZW0mJmRlbGV0ZSB0LmRlbSxkZWxldGUgdC5uZWlnaGJvcmluZ1RpbGVzLHQuc3RhdGU9InVubG9hZGVkIix0LmFjdG9yJiZ0LmFjdG9yLnNlbmQoInJlbW92ZURFTVRpbGUiLHt1aWQ6dC51aWQsc291cmNlOnRoaXMuaWR9KX0scn0oRSksQz1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHIsbixhLGkpe2UuY2FsbCh0aGlzKSx0aGlzLmlkPXIsdGhpcy50eXBlPSJnZW9qc29uIix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MTgsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy5pc1RpbGVDbGlwcGVkPSEwLHRoaXMucmVwYXJzZU92ZXJzY2FsZWQ9ITAsdGhpcy5fcmVtb3ZlZD0hMSx0aGlzLl9sb2FkZWQ9ITEsdGhpcy5hY3Rvcj1hLmdldEFjdG9yKCksdGhpcy5zZXRFdmVudGVkUGFyZW50KGkpLHRoaXMuX2RhdGE9bi5kYXRhLHRoaXMuX29wdGlvbnM9dC5leHRlbmQoe30sbiksdGhpcy5fY29sbGVjdFJlc291cmNlVGltaW5nPW4uY29sbGVjdFJlc291cmNlVGltaW5nLHRoaXMuX3Jlc291cmNlVGltaW5nPVtdLHZvaWQgMCE9PW4ubWF4em9vbSYmKHRoaXMubWF4em9vbT1uLm1heHpvb20pLG4udHlwZSYmKHRoaXMudHlwZT1uLnR5cGUpLG4uYXR0cmlidXRpb24mJih0aGlzLmF0dHJpYnV0aW9uPW4uYXR0cmlidXRpb24pO3ZhciBvPXQuRVhURU5UL3RoaXMudGlsZVNpemU7dGhpcy53b3JrZXJPcHRpb25zPXQuZXh0ZW5kKHtzb3VyY2U6dGhpcy5pZCxjbHVzdGVyOm4uY2x1c3Rlcnx8ITEsZ2VvanNvblZ0T3B0aW9uczp7YnVmZmVyOih2b2lkIDAhPT1uLmJ1ZmZlcj9uLmJ1ZmZlcjoxMjgpKm8sdG9sZXJhbmNlOih2b2lkIDAhPT1uLnRvbGVyYW5jZT9uLnRvbGVyYW5jZTouMzc1KSpvLGV4dGVudDp0LkVYVEVOVCxtYXhab29tOnRoaXMubWF4em9vbSxsaW5lTWV0cmljczpuLmxpbmVNZXRyaWNzfHwhMSxnZW5lcmF0ZUlkOm4uZ2VuZXJhdGVJZHx8ITF9LHN1cGVyY2x1c3Rlck9wdGlvbnM6e21heFpvb206dm9pZCAwIT09bi5jbHVzdGVyTWF4Wm9vbT9NYXRoLm1pbihuLmNsdXN0ZXJNYXhab29tLHRoaXMubWF4em9vbS0xKTp0aGlzLm1heHpvb20tMSxleHRlbnQ6dC5FWFRFTlQscmFkaXVzOihuLmNsdXN0ZXJSYWRpdXN8fDUwKSpvLGxvZzohMX0sY2x1c3RlclByb3BlcnRpZXM6bi5jbHVzdGVyUHJvcGVydGllc30sbi53b3JrZXJPcHRpb25zKX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUubG9hZD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse2RhdGFUeXBlOiJzb3VyY2UifSkpLHRoaXMuX3VwZGF0ZVdvcmtlckRhdGEoZnVuY3Rpb24ocil7aWYocillLmZpcmUobmV3IHQuRXJyb3JFdmVudChyKSk7ZWxzZXt2YXIgbj17ZGF0YVR5cGU6InNvdXJjZSIsc291cmNlRGF0YVR5cGU6Im1ldGFkYXRhIn07ZS5fY29sbGVjdFJlc291cmNlVGltaW5nJiZlLl9yZXNvdXJjZVRpbWluZyYmZS5fcmVzb3VyY2VUaW1pbmcubGVuZ3RoPjAmJihuLnJlc291cmNlVGltaW5nPWUuX3Jlc291cmNlVGltaW5nLGUuX3Jlc291cmNlVGltaW5nPVtdKSxlLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLG4pKX19KX0sci5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5tYXA9dCx0aGlzLmxvYWQoKX0sci5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbihlKXt2YXIgcj10aGlzO3JldHVybiB0aGlzLl9kYXRhPWUsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse2RhdGFUeXBlOiJzb3VyY2UifSkpLHRoaXMuX3VwZGF0ZVdvcmtlckRhdGEoZnVuY3Rpb24oZSl7aWYoZSlyLmZpcmUobmV3IHQuRXJyb3JFdmVudChlKSk7ZWxzZXt2YXIgbj17ZGF0YVR5cGU6InNvdXJjZSIsc291cmNlRGF0YVR5cGU6ImNvbnRlbnQifTtyLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmcmJnIuX3Jlc291cmNlVGltaW5nJiZyLl9yZXNvdXJjZVRpbWluZy5sZW5ndGg+MCYmKG4ucmVzb3VyY2VUaW1pbmc9ci5fcmVzb3VyY2VUaW1pbmcsci5fcmVzb3VyY2VUaW1pbmc9W10pLHIuZmlyZShuZXcgdC5FdmVudCgiZGF0YSIsbikpfX0pLHRoaXN9LHIucHJvdG90eXBlLmdldENsdXN0ZXJFeHBhbnNpb25ab29tPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWN0b3Iuc2VuZCgiZ2VvanNvbi5nZXRDbHVzdGVyRXhwYW5zaW9uWm9vbSIse2NsdXN0ZXJJZDp0LHNvdXJjZTp0aGlzLmlkfSxlKSx0aGlzfSxyLnByb3RvdHlwZS5nZXRDbHVzdGVyQ2hpbGRyZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hY3Rvci5zZW5kKCJnZW9qc29uLmdldENsdXN0ZXJDaGlsZHJlbiIse2NsdXN0ZXJJZDp0LHNvdXJjZTp0aGlzLmlkfSxlKSx0aGlzfSxyLnByb3RvdHlwZS5nZXRDbHVzdGVyTGVhdmVzPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLmFjdG9yLnNlbmQoImdlb2pzb24uZ2V0Q2x1c3RlckxlYXZlcyIse3NvdXJjZTp0aGlzLmlkLGNsdXN0ZXJJZDp0LGxpbWl0OmUsb2Zmc2V0OnJ9LG4pLHRoaXN9LHIucHJvdG90eXBlLl91cGRhdGVXb3JrZXJEYXRhPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7dGhpcy5fbG9hZGVkPSExO3ZhciBuPXQuZXh0ZW5kKHt9LHRoaXMud29ya2VyT3B0aW9ucyksYT10aGlzLl9kYXRhOyJzdHJpbmciPT10eXBlb2YgYT8obi5yZXF1ZXN0PXRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KHQuYnJvd3Nlci5yZXNvbHZlVVJMKGEpLHQuUmVzb3VyY2VUeXBlLlNvdXJjZSksbi5yZXF1ZXN0LmNvbGxlY3RSZXNvdXJjZVRpbWluZz10aGlzLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmcpOm4uZGF0YT1KU09OLnN0cmluZ2lmeShhKSx0aGlzLmFjdG9yLnNlbmQodGhpcy50eXBlKyIubG9hZERhdGEiLG4sZnVuY3Rpb24odCxhKXtyLl9yZW1vdmVkfHxhJiZhLmFiYW5kb25lZHx8KHIuX2xvYWRlZD0hMCxhJiZhLnJlc291cmNlVGltaW5nJiZhLnJlc291cmNlVGltaW5nW3IuaWRdJiYoci5fcmVzb3VyY2VUaW1pbmc9YS5yZXNvdXJjZVRpbWluZ1tyLmlkXS5zbGljZSgwKSksci5hY3Rvci5zZW5kKHIudHlwZSsiLmNvYWxlc2NlIix7c291cmNlOm4uc291cmNlfSxudWxsKSxlKHQpKX0pfSxyLnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGVkfSxyLnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMsYT1lLmFjdG9yPyJyZWxvYWRUaWxlIjoibG9hZFRpbGUiO2UuYWN0b3I9dGhpcy5hY3Rvcjt2YXIgaT17dHlwZTp0aGlzLnR5cGUsdWlkOmUudWlkLHRpbGVJRDplLnRpbGVJRCx6b29tOmUudGlsZUlELm92ZXJzY2FsZWRaLG1heFpvb206dGhpcy5tYXh6b29tLHRpbGVTaXplOnRoaXMudGlsZVNpemUsc291cmNlOnRoaXMuaWQscGl4ZWxSYXRpbzp0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyxzaG93Q29sbGlzaW9uQm94ZXM6dGhpcy5tYXAuc2hvd0NvbGxpc2lvbkJveGVzfTtlLnJlcXVlc3Q9dGhpcy5hY3Rvci5zZW5kKGEsaSxmdW5jdGlvbih0LGkpe3JldHVybiBkZWxldGUgZS5yZXF1ZXN0LGUudW5sb2FkVmVjdG9yRGF0YSgpLGUuYWJvcnRlZD9yKG51bGwpOnQ/cih0KTooZS5sb2FkVmVjdG9yRGF0YShpLG4ubWFwLnBhaW50ZXIsInJlbG9hZFRpbGUiPT09YSkscihudWxsKSl9KX0sci5wcm90b3R5cGUuYWJvcnRUaWxlPWZ1bmN0aW9uKHQpe3QucmVxdWVzdCYmKHQucmVxdWVzdC5jYW5jZWwoKSxkZWxldGUgdC5yZXF1ZXN0KSx0LmFib3J0ZWQ9ITB9LHIucHJvdG90eXBlLnVubG9hZFRpbGU9ZnVuY3Rpb24odCl7dC51bmxvYWRWZWN0b3JEYXRhKCksdGhpcy5hY3Rvci5zZW5kKCJyZW1vdmVUaWxlIix7dWlkOnQudWlkLHR5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkfSl9LHIucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlZD0hMCx0aGlzLmFjdG9yLnNlbmQoInJlbW92ZVNvdXJjZSIse3R5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkfSl9LHIucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0LmV4dGVuZCh7fSx0aGlzLl9vcHRpb25zLHt0eXBlOnRoaXMudHlwZSxkYXRhOnRoaXMuX2RhdGF9KX0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiExfSxyfSh0LkV2ZW50ZWQpLFA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0LHIsbixhKXtlLmNhbGwodGhpcyksdGhpcy5pZD10LHRoaXMuZGlzcGF0Y2hlcj1uLHRoaXMuY29vcmRpbmF0ZXM9ci5jb29yZGluYXRlcyx0aGlzLnR5cGU9ImltYWdlIix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MjIsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy50aWxlcz17fSx0aGlzLl9sb2FkZWQ9ITEsdGhpcy5zZXRFdmVudGVkUGFyZW50KGEpLHRoaXMub3B0aW9ucz1yfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpczt0aGlzLl9sb2FkZWQ9ITEsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse2RhdGFUeXBlOiJzb3VyY2UifSkpLHRoaXMudXJsPXRoaXMub3B0aW9ucy51cmwsdC5nZXRJbWFnZSh0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdCh0aGlzLnVybCx0LlJlc291cmNlVHlwZS5JbWFnZSksZnVuY3Rpb24oYSxpKXtuLl9sb2FkZWQ9ITAsYT9uLmZpcmUobmV3IHQuRXJyb3JFdmVudChhKSk6aSYmKG4uaW1hZ2U9aSxlJiYobi5jb29yZGluYXRlcz1lKSxyJiZyKCksbi5fZmluaXNoTG9hZGluZygpKX0pfSxyLnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGVkfSxyLnByb3RvdHlwZS51cGRhdGVJbWFnZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLmltYWdlJiZ0LnVybD8odGhpcy5vcHRpb25zLnVybD10LnVybCx0aGlzLmxvYWQodC5jb29yZGluYXRlcyxmdW5jdGlvbigpe2UudGV4dHVyZT1udWxsfSksdGhpcyk6dGhpc30sci5wcm90b3R5cGUuX2ZpbmlzaExvYWRpbmc9ZnVuY3Rpb24oKXt0aGlzLm1hcCYmKHRoaXMuc2V0Q29vcmRpbmF0ZXModGhpcy5jb29yZGluYXRlcyksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6InNvdXJjZSIsc291cmNlRGF0YVR5cGU6Im1ldGFkYXRhIn0pKSl9LHIucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3RoaXMubWFwPXQsdGhpcy5sb2FkKCl9LHIucHJvdG90eXBlLnNldENvb3JkaW5hdGVzPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7dGhpcy5jb29yZGluYXRlcz1lO3ZhciBuPWUubWFwKHQuTWVyY2F0b3JDb29yZGluYXRlLmZyb21MbmdMYXQpO3RoaXMudGlsZUlEPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0xLzAsbj0xLzAsYT0tMS8wLGk9LTEvMCxvPTAscz1lO288cy5sZW5ndGg7bys9MSl7dmFyIGw9c1tvXTtyPU1hdGgubWluKHIsbC54KSxuPU1hdGgubWluKG4sbC55KSxhPU1hdGgubWF4KGEsbC54KSxpPU1hdGgubWF4KGksbC55KX12YXIgYz1hLXIsdT1pLW4saD1NYXRoLm1heChjLHUpLGY9TWF0aC5tYXgoMCxNYXRoLmZsb29yKC1NYXRoLmxvZyhoKS9NYXRoLkxOMikpLHA9TWF0aC5wb3coMixmKTtyZXR1cm4gbmV3IHQuQ2Fub25pY2FsVGlsZUlEKGYsTWF0aC5mbG9vcigocithKS8yKnApLE1hdGguZmxvb3IoKG4raSkvMipwKSl9KG4pLHRoaXMubWluem9vbT10aGlzLm1heHpvb209dGhpcy50aWxlSUQuejt2YXIgYT1uLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gci50aWxlSUQuZ2V0VGlsZVBvaW50KHQpLl9yb3VuZCgpfSk7cmV0dXJuIHRoaXMuX2JvdW5kc0FycmF5PW5ldyB0LlN0cnVjdEFycmF5TGF5b3V0NGk4LHRoaXMuX2JvdW5kc0FycmF5LmVtcGxhY2VCYWNrKGFbMF0ueCxhWzBdLnksMCwwKSx0aGlzLl9ib3VuZHNBcnJheS5lbXBsYWNlQmFjayhhWzFdLngsYVsxXS55LHQuRVhURU5ULDApLHRoaXMuX2JvdW5kc0FycmF5LmVtcGxhY2VCYWNrKGFbM10ueCxhWzNdLnksMCx0LkVYVEVOVCksdGhpcy5fYm91bmRzQXJyYXkuZW1wbGFjZUJhY2soYVsyXS54LGFbMl0ueSx0LkVYVEVOVCx0LkVYVEVOVCksdGhpcy5ib3VuZHNCdWZmZXImJih0aGlzLmJvdW5kc0J1ZmZlci5kZXN0cm95KCksZGVsZXRlIHRoaXMuYm91bmRzQnVmZmVyKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic291cmNlIixzb3VyY2VEYXRhVHlwZToiY29udGVudCJ9KSksdGhpc30sci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe2lmKDAhPT1PYmplY3Qua2V5cyh0aGlzLnRpbGVzKS5sZW5ndGgmJnRoaXMuaW1hZ2Upe3ZhciBlPXRoaXMubWFwLnBhaW50ZXIuY29udGV4dCxyPWUuZ2w7Zm9yKHZhciBuIGluIHRoaXMuYm91bmRzQnVmZmVyfHwodGhpcy5ib3VuZHNCdWZmZXI9ZS5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5fYm91bmRzQXJyYXksdC5yYXN0ZXJCb3VuZHNBdHRyaWJ1dGVzLm1lbWJlcnMpKSx0aGlzLmJvdW5kc1NlZ21lbnRzfHwodGhpcy5ib3VuZHNTZWdtZW50cz10LlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCwyKSksdGhpcy50ZXh0dXJlfHwodGhpcy50ZXh0dXJlPW5ldyB0LlRleHR1cmUoZSx0aGlzLmltYWdlLHIuUkdCQSksdGhpcy50ZXh0dXJlLmJpbmQoci5MSU5FQVIsci5DTEFNUF9UT19FREdFKSksdGhpcy50aWxlcyl7dmFyIGE9dGhpcy50aWxlc1tuXTsibG9hZGVkIiE9PWEuc3RhdGUmJihhLnN0YXRlPSJsb2FkZWQiLGEudGV4dHVyZT10aGlzLnRleHR1cmUpfX19LHIucHJvdG90eXBlLmxvYWRUaWxlPWZ1bmN0aW9uKHQsZSl7dGhpcy50aWxlSUQmJnRoaXMudGlsZUlELmVxdWFscyh0LnRpbGVJRC5jYW5vbmljYWwpPyh0aGlzLnRpbGVzW1N0cmluZyh0LnRpbGVJRC53cmFwKV09dCx0LmJ1Y2tldHM9e30sZShudWxsKSk6KHQuc3RhdGU9ImVycm9yZWQiLGUobnVsbCkpfSxyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiaW1hZ2UiLHVybDp0aGlzLm9wdGlvbnMudXJsLGNvb3JkaW5hdGVzOnRoaXMuY29vcmRpbmF0ZXN9fSxyLnByb3RvdHlwZS5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHJ9KHQuRXZlbnRlZCksTz1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHQscixuLGEpe2UuY2FsbCh0aGlzLHQscixuLGEpLHRoaXMucm91bmRab29tPSEwLHRoaXMudHlwZT0idmlkZW8iLHRoaXMub3B0aW9ucz1yfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9sb2FkZWQ9ITE7dmFyIHI9dGhpcy5vcHRpb25zO3RoaXMudXJscz1bXTtmb3IodmFyIG49MCxhPXIudXJscztuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl07dGhpcy51cmxzLnB1c2godGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3QoaSx0LlJlc291cmNlVHlwZS5Tb3VyY2UpLnVybCl9dC5nZXRWaWRlbyh0aGlzLnVybHMsZnVuY3Rpb24ocixuKXtlLl9sb2FkZWQ9ITAscj9lLmZpcmUobmV3IHQuRXJyb3JFdmVudChyKSk6biYmKGUudmlkZW89bixlLnZpZGVvLmxvb3A9ITAsZS52aWRlby5hZGRFdmVudExpc3RlbmVyKCJwbGF5aW5nIixmdW5jdGlvbigpe2UubWFwLnRyaWdnZXJSZXBhaW50KCl9KSxlLm1hcCYmZS52aWRlby5wbGF5KCksZS5fZmluaXNoTG9hZGluZygpKX0pfSxyLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3RoaXMudmlkZW8mJnRoaXMudmlkZW8ucGF1c2UoKX0sci5wcm90b3R5cGUucGxheT1mdW5jdGlvbigpe3RoaXMudmlkZW8mJnRoaXMudmlkZW8ucGxheSgpfSxyLnByb3RvdHlwZS5zZWVrPWZ1bmN0aW9uKGUpe2lmKHRoaXMudmlkZW8pe3ZhciByPXRoaXMudmlkZW8uc2Vla2FibGU7ZTxyLnN0YXJ0KDApfHxlPnIuZW5kKDApP3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyB0LlZhbGlkYXRpb25FcnJvcigiUGxheWJhY2sgZm9yIHRoaXMgdmlkZW8gY2FuIGJlIHNldCBvbmx5IGJldHdlZW4gdGhlICIrci5zdGFydCgwKSsiIGFuZCAiK3IuZW5kKDApKyItc2Vjb25kIG1hcmsuIikpKTp0aGlzLnZpZGVvLmN1cnJlbnRUaW1lPWV9fSxyLnByb3RvdHlwZS5nZXRWaWRlbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZGVvfSxyLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt0aGlzLm1hcHx8KHRoaXMubWFwPXQsdGhpcy5sb2FkKCksdGhpcy52aWRlbyYmKHRoaXMudmlkZW8ucGxheSgpLHRoaXMuc2V0Q29vcmRpbmF0ZXModGhpcy5jb29yZGluYXRlcykpKX0sci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe2lmKCEoMD09PU9iamVjdC5rZXlzKHRoaXMudGlsZXMpLmxlbmd0aHx8dGhpcy52aWRlby5yZWFkeVN0YXRlPDIpKXt2YXIgZT10aGlzLm1hcC5wYWludGVyLmNvbnRleHQscj1lLmdsO2Zvcih2YXIgbiBpbiB0aGlzLmJvdW5kc0J1ZmZlcnx8KHRoaXMuYm91bmRzQnVmZmVyPWUuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuX2JvdW5kc0FycmF5LHQucmFzdGVyQm91bmRzQXR0cmlidXRlcy5tZW1iZXJzKSksdGhpcy5ib3VuZHNTZWdtZW50c3x8KHRoaXMuYm91bmRzU2VnbWVudHM9dC5TZWdtZW50VmVjdG9yLnNpbXBsZVNlZ21lbnQoMCwwLDQsMikpLHRoaXMudGV4dHVyZT90aGlzLnZpZGVvLnBhdXNlZHx8KHRoaXMudGV4dHVyZS5iaW5kKHIuTElORUFSLHIuQ0xBTVBfVE9fRURHRSksci50ZXhTdWJJbWFnZTJEKHIuVEVYVFVSRV8yRCwwLDAsMCxyLlJHQkEsci5VTlNJR05FRF9CWVRFLHRoaXMudmlkZW8pKToodGhpcy50ZXh0dXJlPW5ldyB0LlRleHR1cmUoZSx0aGlzLnZpZGVvLHIuUkdCQSksdGhpcy50ZXh0dXJlLmJpbmQoci5MSU5FQVIsci5DTEFNUF9UT19FREdFKSksdGhpcy50aWxlcyl7dmFyIGE9dGhpcy50aWxlc1tuXTsibG9hZGVkIiE9PWEuc3RhdGUmJihhLnN0YXRlPSJsb2FkZWQiLGEudGV4dHVyZT10aGlzLnRleHR1cmUpfX19LHIucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJ2aWRlbyIsdXJsczp0aGlzLnVybHMsY29vcmRpbmF0ZXM6dGhpcy5jb29yZGluYXRlc319LHIucHJvdG90eXBlLmhhc1RyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aWRlbyYmIXRoaXMudmlkZW8ucGF1c2VkfSxyfShQKSx6PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIocixuLGEsaSl7ZS5jYWxsKHRoaXMscixuLGEsaSksbi5jb29yZGluYXRlcz9BcnJheS5pc0FycmF5KG4uY29vcmRpbmF0ZXMpJiY0PT09bi5jb29yZGluYXRlcy5sZW5ndGgmJiFuLmNvb3JkaW5hdGVzLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIUFycmF5LmlzQXJyYXkodCl8fDIhPT10Lmxlbmd0aHx8dC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiJudW1iZXIiIT10eXBlb2YgdH0pfSl8fHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyB0LlZhbGlkYXRpb25FcnJvcigic291cmNlcy4iK3IsbnVsbCwnImNvb3JkaW5hdGVzIiBwcm9wZXJ0eSBtdXN0IGJlIGFuIGFycmF5IG9mIDQgbG9uZ2l0dWRlL2xhdGl0dWRlIGFycmF5IHBhaXJzJykpKTp0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgdC5WYWxpZGF0aW9uRXJyb3IoInNvdXJjZXMuIityLG51bGwsJ21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgImNvb3JkaW5hdGVzIicpKSksbi5hbmltYXRlJiYiYm9vbGVhbiIhPXR5cGVvZiBuLmFuaW1hdGUmJnRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyB0LlZhbGlkYXRpb25FcnJvcigic291cmNlcy4iK3IsbnVsbCwnb3B0aW9uYWwgImFuaW1hdGUiIHByb3BlcnR5IG11c3QgYmUgYSBib29sZWFuIHZhbHVlJykpKSxuLmNhbnZhcz8ic3RyaW5nIj09dHlwZW9mIG4uY2FudmFzfHxuLmNhbnZhcyBpbnN0YW5jZW9mIHQud2luZG93LkhUTUxDYW52YXNFbGVtZW50fHx0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgdC5WYWxpZGF0aW9uRXJyb3IoInNvdXJjZXMuIityLG51bGwsJyJjYW52YXMiIG11c3QgYmUgZWl0aGVyIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgSUQgb2YgdGhlIGNhbnZhcyBlbGVtZW50IGZyb20gd2hpY2ggdG8gcmVhZCwgb3IgYW4gSFRNTENhbnZhc0VsZW1lbnQgaW5zdGFuY2UnKSkpOnRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyB0LlZhbGlkYXRpb25FcnJvcigic291cmNlcy4iK3IsbnVsbCwnbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSAiY2FudmFzIicpKSksdGhpcy5vcHRpb25zPW4sdGhpcy5hbmltYXRlPXZvaWQgMD09PW4uYW5pbWF0ZXx8bi5hbmltYXRlfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKCl7dGhpcy5fbG9hZGVkPSEwLHRoaXMuY2FudmFzfHwodGhpcy5jYW52YXM9dGhpcy5vcHRpb25zLmNhbnZhcyBpbnN0YW5jZW9mIHQud2luZG93LkhUTUxDYW52YXNFbGVtZW50P3RoaXMub3B0aW9ucy5jYW52YXM6dC53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5vcHRpb25zLmNhbnZhcykpLHRoaXMud2lkdGg9dGhpcy5jYW52YXMud2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy5jYW52YXMuaGVpZ2h0LHRoaXMuX2hhc0ludmFsaWREaW1lbnNpb25zKCk/dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJDYW52YXMgZGltZW5zaW9ucyBjYW5ub3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8uIikpKToodGhpcy5wbGF5PWZ1bmN0aW9uKCl7dGhpcy5fcGxheWluZz0hMCx0aGlzLm1hcC50cmlnZ2VyUmVwYWludCgpfSx0aGlzLnBhdXNlPWZ1bmN0aW9uKCl7dGhpcy5fcGxheWluZyYmKHRoaXMucHJlcGFyZSgpLHRoaXMuX3BsYXlpbmc9ITEpfSx0aGlzLl9maW5pc2hMb2FkaW5nKCkpfSxyLnByb3RvdHlwZS5nZXRDYW52YXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW52YXN9LHIucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3RoaXMubWFwPXQsdGhpcy5sb2FkKCksdGhpcy5jYW52YXMmJnRoaXMuYW5pbWF0ZSYmdGhpcy5wbGF5KCl9LHIucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5wYXVzZSgpfSxyLnByb3RvdHlwZS5wcmVwYXJlPWZ1bmN0aW9uKCl7dmFyIGU9ITE7aWYodGhpcy5jYW52YXMud2lkdGghPT10aGlzLndpZHRoJiYodGhpcy53aWR0aD10aGlzLmNhbnZhcy53aWR0aCxlPSEwKSx0aGlzLmNhbnZhcy5oZWlnaHQhPT10aGlzLmhlaWdodCYmKHRoaXMuaGVpZ2h0PXRoaXMuY2FudmFzLmhlaWdodCxlPSEwKSwhdGhpcy5faGFzSW52YWxpZERpbWVuc2lvbnMoKSYmMCE9PU9iamVjdC5rZXlzKHRoaXMudGlsZXMpLmxlbmd0aCl7dmFyIHI9dGhpcy5tYXAucGFpbnRlci5jb250ZXh0LG49ci5nbDtmb3IodmFyIGEgaW4gdGhpcy5ib3VuZHNCdWZmZXJ8fCh0aGlzLmJvdW5kc0J1ZmZlcj1yLmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLl9ib3VuZHNBcnJheSx0LnJhc3RlckJvdW5kc0F0dHJpYnV0ZXMubWVtYmVycykpLHRoaXMuYm91bmRzU2VnbWVudHN8fCh0aGlzLmJvdW5kc1NlZ21lbnRzPXQuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpKSx0aGlzLnRleHR1cmU/KGV8fHRoaXMuX3BsYXlpbmcpJiZ0aGlzLnRleHR1cmUudXBkYXRlKHRoaXMuY2FudmFzLHtwcmVtdWx0aXBseTohMH0pOnRoaXMudGV4dHVyZT1uZXcgdC5UZXh0dXJlKHIsdGhpcy5jYW52YXMsbi5SR0JBLHtwcmVtdWx0aXBseTohMH0pLHRoaXMudGlsZXMpe3ZhciBpPXRoaXMudGlsZXNbYV07ImxvYWRlZCIhPT1pLnN0YXRlJiYoaS5zdGF0ZT0ibG9hZGVkIixpLnRleHR1cmU9dGhpcy50ZXh0dXJlKX19fSxyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiY2FudmFzIixjb29yZGluYXRlczp0aGlzLmNvb3JkaW5hdGVzfX0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wbGF5aW5nfSxyLnByb3RvdHlwZS5faGFzSW52YWxpZERpbWVuc2lvbnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPVt0aGlzLmNhbnZhcy53aWR0aCx0aGlzLmNhbnZhcy5oZWlnaHRdO3Q8ZS5sZW5ndGg7dCs9MSl7dmFyIHI9ZVt0XTtpZihpc05hTihyKXx8cjw9MClyZXR1cm4hMH1yZXR1cm4hMX0scn0oUCksST17dmVjdG9yOlMscmFzdGVyOkUsInJhc3Rlci1kZW0iOkwsZ2VvanNvbjpDLHZpZGVvOk8saW1hZ2U6UCxjYW52YXM6en0sRD1mdW5jdGlvbihlLHIsbixhKXt2YXIgaT1uZXcgSVtyLnR5cGVdKGUscixuLGEpO2lmKGkuaWQhPT1lKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgU291cmNlIGlkIHRvIGJlICIrZSsiIGluc3RlYWQgb2YgIitpLmlkKTtyZXR1cm4gdC5iaW5kQWxsKFsibG9hZCIsImFib3J0IiwidW5sb2FkIiwic2VyaWFsaXplIiwicHJlcGFyZSJdLGkpLGl9O2Z1bmN0aW9uIFIoZSxyKXt2YXIgbj10LmlkZW50aXR5KFtdKTtyZXR1cm4gdC50cmFuc2xhdGUobixuLFsxLDEsMF0pLHQuc2NhbGUobixuLFsuNSplLndpZHRoLC41KmUuaGVpZ2h0LDFdKSx0Lm11bHRpcGx5KG4sbixlLmNhbGN1bGF0ZVBvc01hdHJpeChyLnRvVW53cmFwcGVkKCkpKX1mdW5jdGlvbiBGKHQsZSxyLG4sYSl7dmFyIGk9ZnVuY3Rpb24odCxlLHIpe2lmKHQpZm9yKHZhciBuPTAsYT10O248YS5sZW5ndGg7bis9MSl7dmFyIGk9ZVthW25dXTtpZihpJiZpLnNvdXJjZT09PXImJiJmaWxsLWV4dHJ1c2lvbiI9PT1pLnR5cGUpcmV0dXJuITB9ZWxzZSBmb3IodmFyIG8gaW4gZSl7dmFyIHM9ZVtvXTtpZihzLnNvdXJjZT09PXImJiJmaWxsLWV4dHJ1c2lvbiI9PT1zLnR5cGUpcmV0dXJuITB9cmV0dXJuITF9KG4mJm4ubGF5ZXJzLGUsdC5pZCksbz1hLm1heFBpdGNoU2NhbGVGYWN0b3IoKSxzPXQudGlsZXNJbihyLG8saSk7cy5zb3J0KEIpO2Zvcih2YXIgbD1bXSxjPTAsdT1zO2M8dS5sZW5ndGg7Yys9MSl7dmFyIGg9dVtjXTtsLnB1c2goe3dyYXBwZWRUaWxlSUQ6aC50aWxlSUQud3JhcHBlZCgpLmtleSxxdWVyeVJlc3VsdHM6aC50aWxlLnF1ZXJ5UmVuZGVyZWRGZWF0dXJlcyhlLHQuX3N0YXRlLGgucXVlcnlHZW9tZXRyeSxoLmNhbWVyYVF1ZXJ5R2VvbWV0cnksaC5zY2FsZSxuLGEsbyxSKHQudHJhbnNmb3JtLGgudGlsZUlEKSl9KX12YXIgZj1mdW5jdGlvbih0KXtmb3IodmFyIGU9e30scj17fSxuPTAsYT10O248YS5sZW5ndGg7bis9MSl7dmFyIGk9YVtuXSxvPWkucXVlcnlSZXN1bHRzLHM9aS53cmFwcGVkVGlsZUlELGw9cltzXT1yW3NdfHx7fTtmb3IodmFyIGMgaW4gbylmb3IodmFyIHU9b1tjXSxoPWxbY109bFtjXXx8e30sZj1lW2NdPWVbY118fFtdLHA9MCxkPXU7cDxkLmxlbmd0aDtwKz0xKXt2YXIgZz1kW3BdO2hbZy5mZWF0dXJlSW5kZXhdfHwoaFtnLmZlYXR1cmVJbmRleF09ITAsZi5wdXNoKGcpKX19cmV0dXJuIGV9KGwpO2Zvcih2YXIgcCBpbiBmKWZbcF0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcj1lLmZlYXR1cmUsbj10LmdldEZlYXR1cmVTdGF0ZShyLmxheWVyWyJzb3VyY2UtbGF5ZXIiXSxyLmlkKTtyLnNvdXJjZT1yLmxheWVyLnNvdXJjZSxyLmxheWVyWyJzb3VyY2UtbGF5ZXIiXSYmKHIuc291cmNlTGF5ZXI9ci5sYXllclsic291cmNlLWxheWVyIl0pLHIuc3RhdGU9bn0pO3JldHVybiBmfWZ1bmN0aW9uIEIodCxlKXt2YXIgcj10LnRpbGVJRCxuPWUudGlsZUlEO3JldHVybiByLm92ZXJzY2FsZWRaLW4ub3ZlcnNjYWxlZFp8fHIuY2Fub25pY2FsLnktbi5jYW5vbmljYWwueXx8ci53cmFwLW4ud3JhcHx8ci5jYW5vbmljYWwueC1uLmNhbm9uaWNhbC54fXZhciBOPWZ1bmN0aW9uKHQsZSl7dGhpcy5tYXg9dCx0aGlzLm9uUmVtb3ZlPWUsdGhpcy5yZXNldCgpfTtOLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLmRhdGEpZm9yKHZhciBlPTAscj10aGlzLmRhdGFbdF07ZTxyLmxlbmd0aDtlKz0xKXt2YXIgbj1yW2VdO24udGltZW91dCYmY2xlYXJUaW1lb3V0KG4udGltZW91dCksdGhpcy5vblJlbW92ZShuLnZhbHVlKX1yZXR1cm4gdGhpcy5kYXRhPXt9LHRoaXMub3JkZXI9W10sdGhpc30sTi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLGE9dC53cmFwcGVkKCkua2V5O3ZvaWQgMD09PXRoaXMuZGF0YVthXSYmKHRoaXMuZGF0YVthXT1bXSk7dmFyIGk9e3ZhbHVlOmUsdGltZW91dDp2b2lkIDB9O2lmKHZvaWQgMCE9PXImJihpLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe24ucmVtb3ZlKHQsaSl9LHIpKSx0aGlzLmRhdGFbYV0ucHVzaChpKSx0aGlzLm9yZGVyLnB1c2goYSksdGhpcy5vcmRlci5sZW5ndGg+dGhpcy5tYXgpe3ZhciBvPXRoaXMuX2dldEFuZFJlbW92ZUJ5S2V5KHRoaXMub3JkZXJbMF0pO28mJnRoaXMub25SZW1vdmUobyl9cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdC53cmFwcGVkKCkua2V5IGluIHRoaXMuZGF0YX0sTi5wcm90b3R5cGUuZ2V0QW5kUmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhcyh0KT90aGlzLl9nZXRBbmRSZW1vdmVCeUtleSh0LndyYXBwZWQoKS5rZXkpOm51bGx9LE4ucHJvdG90eXBlLl9nZXRBbmRSZW1vdmVCeUtleT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRhdGFbdF0uc2hpZnQoKTtyZXR1cm4gZS50aW1lb3V0JiZjbGVhclRpbWVvdXQoZS50aW1lb3V0KSwwPT09dGhpcy5kYXRhW3RdLmxlbmd0aCYmZGVsZXRlIHRoaXMuZGF0YVt0XSx0aGlzLm9yZGVyLnNwbGljZSh0aGlzLm9yZGVyLmluZGV4T2YodCksMSksZS52YWx1ZX0sTi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhcyh0KT90aGlzLmRhdGFbdC53cmFwcGVkKCkua2V5XVswXS52YWx1ZTpudWxsfSxOLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5oYXModCkpcmV0dXJuIHRoaXM7dmFyIHI9dC53cmFwcGVkKCkua2V5LG49dm9pZCAwPT09ZT8wOnRoaXMuZGF0YVtyXS5pbmRleE9mKGUpLGE9dGhpcy5kYXRhW3JdW25dO3JldHVybiB0aGlzLmRhdGFbcl0uc3BsaWNlKG4sMSksYS50aW1lb3V0JiZjbGVhclRpbWVvdXQoYS50aW1lb3V0KSwwPT09dGhpcy5kYXRhW3JdLmxlbmd0aCYmZGVsZXRlIHRoaXMuZGF0YVtyXSx0aGlzLm9uUmVtb3ZlKGEudmFsdWUpLHRoaXMub3JkZXIuc3BsaWNlKHRoaXMub3JkZXIuaW5kZXhPZihyKSwxKSx0aGlzfSxOLnByb3RvdHlwZS5zZXRNYXhTaXplPWZ1bmN0aW9uKHQpe2Zvcih0aGlzLm1heD10O3RoaXMub3JkZXIubGVuZ3RoPnRoaXMubWF4Oyl7dmFyIGU9dGhpcy5fZ2V0QW5kUmVtb3ZlQnlLZXkodGhpcy5vcmRlclswXSk7ZSYmdGhpcy5vblJlbW92ZShlKX1yZXR1cm4gdGhpc307dmFyIGo9ZnVuY3Rpb24odCxlLHIpe3RoaXMuY29udGV4dD10O3ZhciBuPXQuZ2w7dGhpcy5idWZmZXI9bi5jcmVhdGVCdWZmZXIoKSx0aGlzLmR5bmFtaWNEcmF3PUJvb2xlYW4ociksdGhpcy5jb250ZXh0LnVuYmluZFZBTygpLHQuYmluZEVsZW1lbnRCdWZmZXIuc2V0KHRoaXMuYnVmZmVyKSxuLmJ1ZmZlckRhdGEobi5FTEVNRU5UX0FSUkFZX0JVRkZFUixlLmFycmF5QnVmZmVyLHRoaXMuZHluYW1pY0RyYXc/bi5EWU5BTUlDX0RSQVc6bi5TVEFUSUNfRFJBVyksdGhpcy5keW5hbWljRHJhd3x8ZGVsZXRlIGUuYXJyYXlCdWZmZXJ9O2oucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLmNvbnRleHQuYmluZEVsZW1lbnRCdWZmZXIuc2V0KHRoaXMuYnVmZmVyKX0sai5wcm90b3R5cGUudXBkYXRlRGF0YT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbnRleHQuZ2w7dGhpcy5jb250ZXh0LnVuYmluZFZBTygpLHRoaXMuYmluZCgpLGUuYnVmZmVyU3ViRGF0YShlLkVMRU1FTlRfQVJSQVlfQlVGRkVSLDAsdC5hcnJheUJ1ZmZlcil9LGoucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQuZ2w7dGhpcy5idWZmZXImJih0LmRlbGV0ZUJ1ZmZlcih0aGlzLmJ1ZmZlciksZGVsZXRlIHRoaXMuYnVmZmVyKX07dmFyIFY9e0ludDg6IkJZVEUiLFVpbnQ4OiJVTlNJR05FRF9CWVRFIixJbnQxNjoiU0hPUlQiLFVpbnQxNjoiVU5TSUdORURfU0hPUlQiLEludDMyOiJJTlQiLFVpbnQzMjoiVU5TSUdORURfSU5UIixGbG9hdDMyOiJGTE9BVCJ9LFU9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5hdHRyaWJ1dGVzPXIsdGhpcy5pdGVtU2l6ZT1lLmJ5dGVzUGVyRWxlbWVudCx0aGlzLmR5bmFtaWNEcmF3PW4sdGhpcy5jb250ZXh0PXQ7dmFyIGE9dC5nbDt0aGlzLmJ1ZmZlcj1hLmNyZWF0ZUJ1ZmZlcigpLHQuYmluZFZlcnRleEJ1ZmZlci5zZXQodGhpcy5idWZmZXIpLGEuYnVmZmVyRGF0YShhLkFSUkFZX0JVRkZFUixlLmFycmF5QnVmZmVyLHRoaXMuZHluYW1pY0RyYXc/YS5EWU5BTUlDX0RSQVc6YS5TVEFUSUNfRFJBVyksdGhpcy5keW5hbWljRHJhd3x8ZGVsZXRlIGUuYXJyYXlCdWZmZXJ9O1UucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLmNvbnRleHQuYmluZFZlcnRleEJ1ZmZlci5zZXQodGhpcy5idWZmZXIpfSxVLnByb3RvdHlwZS51cGRhdGVEYXRhPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29udGV4dC5nbDt0aGlzLmJpbmQoKSxlLmJ1ZmZlclN1YkRhdGEoZS5BUlJBWV9CVUZGRVIsMCx0LmFycmF5QnVmZmVyKX0sVS5wcm90b3R5cGUuZW5hYmxlQXR0cmlidXRlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8dGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDtyKyspe3ZhciBuPXRoaXMuYXR0cmlidXRlc1tyXSxhPWUuYXR0cmlidXRlc1tuLm5hbWVdO3ZvaWQgMCE9PWEmJnQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoYSl9fSxVLnByb3RvdHlwZS5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTA7bjx0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoO24rKyl7dmFyIGE9dGhpcy5hdHRyaWJ1dGVzW25dLGk9ZS5hdHRyaWJ1dGVzW2EubmFtZV07dm9pZCAwIT09aSYmdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGksYS5jb21wb25lbnRzLHRbVlthLnR5cGVdXSwhMSx0aGlzLml0ZW1TaXplLGEub2Zmc2V0K3RoaXMuaXRlbVNpemUqKHJ8fDApKX19LFUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQuZ2w7dGhpcy5idWZmZXImJih0LmRlbGV0ZUJ1ZmZlcih0aGlzLmJ1ZmZlciksZGVsZXRlIHRoaXMuYnVmZmVyKX07dmFyIHE9ZnVuY3Rpb24odCl7dGhpcy5nbD10LmdsLHRoaXMuZGVmYXVsdD10aGlzLmdldERlZmF1bHQoKSx0aGlzLmN1cnJlbnQ9dGhpcy5kZWZhdWx0LHRoaXMuZGlydHk9ITF9O3EucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnR9LHEucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt9LHEucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0fSxxLnByb3RvdHlwZS5zZXREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5zZXQodGhpcy5kZWZhdWx0KX07dmFyIEg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuQ29sb3IudHJhbnNwYXJlbnR9LHIucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHQuciE9PWUucnx8dC5nIT09ZS5nfHx0LmIhPT1lLmJ8fHQuYSE9PWUuYXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmNsZWFyQ29sb3IodC5yLHQuZyx0LmIsdC5hKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0scn0ocSksRz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuY2xlYXJEZXB0aCh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0ocSksWT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuY2xlYXJTdGVuY2lsKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxXPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVyblshMCwhMCwhMCwhMF19LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXXx8dFsyXSE9PWVbMl18fHRbM10hPT1lWzNdfHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuY29sb3JNYXNrKHRbMF0sdFsxXSx0WzJdLHRbM10pLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxYPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7KHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5kZXB0aE1hc2sodCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLFo9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIDI1NX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuc3RlbmNpbE1hc2sodCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLEo9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJue2Z1bmM6dGhpcy5nbC5BTFdBWVMscmVmOjAsbWFzazoyNTV9fSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0LmZ1bmMhPT1lLmZ1bmN8fHQucmVmIT09ZS5yZWZ8fHQubWFzayE9PWUubWFza3x8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLnN0ZW5jaWxGdW5jKHQuZnVuYyx0LnJlZix0Lm1hc2spLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxLPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2w7cmV0dXJuW3QuS0VFUCx0LktFRVAsdC5LRUVQXX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudDsodFswXSE9PWVbMF18fHRbMV0hPT1lWzFdfHx0WzJdIT09ZVsyXXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLnN0ZW5jaWxPcCh0WzBdLHRbMV0sdFsyXSksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLFE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO3Q/ZS5lbmFibGUoZS5TVEVOQ0lMX1RFU1QpOmUuZGlzYWJsZShlLlNURU5DSUxfVEVTVCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KHEpLCQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuWzAsMV19LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmRlcHRoUmFuZ2UodFswXSx0WzFdKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0ocSksdHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO3Q/ZS5lbmFibGUoZS5ERVBUSF9URVNUKTplLmRpc2FibGUoZS5ERVBUSF9URVNUKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0ocSksZXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2wuTEVTU30sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuZGVwdGhGdW5jKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxydD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpe3ZhciBlPXRoaXMuZ2w7dD9lLmVuYWJsZShlLkJMRU5EKTplLmRpc2FibGUoZS5CTEVORCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KHEpLG50PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2w7cmV0dXJuW3QuT05FLHQuWkVST119LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmJsZW5kRnVuYyh0WzBdLHRbMV0pLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxhdD1mdW5jdGlvbihlKXtmdW5jdGlvbiByKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGUmJihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5Db2xvci50cmFuc3BhcmVudH0sci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudDsodC5yIT09ZS5yfHx0LmchPT1lLmd8fHQuYiE9PWUuYnx8dC5hIT09ZS5hfHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuYmxlbmRDb2xvcih0LnIsdC5nLHQuYix0LmEpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxyfShxKSxpdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nbC5GVU5DX0FERH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuYmxlbmRFcXVhdGlvbih0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0ocSksb3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO3Q/ZS5lbmFibGUoZS5DVUxMX0ZBQ0UpOmUuZGlzYWJsZShlLkNVTExfRkFDRSksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KHEpLHN0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdsLkJBQ0t9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmN1bGxGYWNlKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxsdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nbC5DQ1d9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmZyb250RmFjZSh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0ocSksY3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLnVzZVByb2dyYW0odCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLHV0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdsLlRFWFRVUkUwfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7KHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5hY3RpdmVUZXh0dXJlKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxodD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdsO3JldHVyblswLDAsdC5kcmF3aW5nQnVmZmVyV2lkdGgsdC5kcmF3aW5nQnVmZmVySGVpZ2h0XX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudDsodFswXSE9PWVbMF18fHRbMV0hPT1lWzFdfHx0WzJdIT09ZVsyXXx8dFszXSE9PWVbM118fHRoaXMuZGlydHkpJiYodGhpcy5nbC52aWV3cG9ydCh0WzBdLHRbMV0sdFsyXSx0WzNdKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0ocSksZnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO2UuYmluZEZyYW1lYnVmZmVyKGUuRlJBTUVCVUZGRVIsdCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KHEpLHB0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDtlLmJpbmRSZW5kZXJidWZmZXIoZS5SRU5ERVJCVUZGRVIsdCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KHEpLGR0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDtlLmJpbmRUZXh0dXJlKGUuVEVYVFVSRV8yRCx0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0ocSksZ3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO2UuYmluZEJ1ZmZlcihlLkFSUkFZX0JVRkZFUix0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0ocSksdnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdsO2UuYmluZEJ1ZmZlcihlLkVMRU1FTlRfQVJSQVlfQlVGRkVSLHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9LGV9KHEpLG10PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSksdGhpcy52YW89ZS5leHRWZXJ0ZXhBcnJheU9iamVjdH1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy52YW8mJih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMudmFvLmJpbmRWZXJ0ZXhBcnJheU9FUyh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0ocSkseXQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIDR9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO2UucGl4ZWxTdG9yZWkoZS5VTlBBQ0tfQUxJR05NRU5ULHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShxKSx4dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpe3ZhciBlPXRoaXMuZ2w7ZS5waXhlbFN0b3JlaShlLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCx0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0ocSksYnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO2UucGl4ZWxTdG9yZWkoZS5VTlBBQ0tfRkxJUF9ZX1dFQkdMLHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShxKSxfdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dC5jYWxsKHRoaXMsZSksdGhpcy5jb250ZXh0PWUsdGhpcy5wYXJlbnQ9cn1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlfShxKSx3dD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnNldERpcnR5PWZ1bmN0aW9uKCl7dGhpcy5kaXJ0eT0hMH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpe3RoaXMuY29udGV4dC5iaW5kRnJhbWVidWZmZXIuc2V0KHRoaXMucGFyZW50KTt2YXIgZT10aGlzLmdsO2UuZnJhbWVidWZmZXJUZXh0dXJlMkQoZS5GUkFNRUJVRkZFUixlLkNPTE9SX0FUVEFDSE1FTlQwLGUuVEVYVFVSRV8yRCx0LDApLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShfdCksa3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dGhpcy5jb250ZXh0LmJpbmRGcmFtZWJ1ZmZlci5zZXQodGhpcy5wYXJlbnQpO3ZhciBlPXRoaXMuZ2w7ZS5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihlLkZSQU1FQlVGRkVSLGUuREVQVEhfQVRUQUNITUVOVCxlLlJFTkRFUkJVRkZFUix0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0oX3QpLFR0PWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmNvbnRleHQ9dCx0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9cjt2YXIgbj10LmdsLGE9dGhpcy5mcmFtZWJ1ZmZlcj1uLmNyZWF0ZUZyYW1lYnVmZmVyKCk7dGhpcy5jb2xvckF0dGFjaG1lbnQ9bmV3IHd0KHQsYSksdGhpcy5kZXB0aEF0dGFjaG1lbnQ9bmV3IGt0KHQsYSl9O1R0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0LmdsLGU9dGhpcy5jb2xvckF0dGFjaG1lbnQuZ2V0KCk7ZSYmdC5kZWxldGVUZXh0dXJlKGUpO3ZhciByPXRoaXMuZGVwdGhBdHRhY2htZW50LmdldCgpO3ImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIpLHQuZGVsZXRlRnJhbWVidWZmZXIodGhpcy5mcmFtZWJ1ZmZlcil9O3ZhciBNdD1mdW5jdGlvbih0LGUscil7dGhpcy5mdW5jPXQsdGhpcy5tYXNrPWUsdGhpcy5yYW5nZT1yfTtNdC5SZWFkT25seT0hMSxNdC5SZWFkV3JpdGU9ITAsTXQuZGlzYWJsZWQ9bmV3IE10KDUxOSxNdC5SZWFkT25seSxbMCwxXSk7dmFyIEF0PWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt0aGlzLnRlc3Q9dCx0aGlzLnJlZj1lLHRoaXMubWFzaz1yLHRoaXMuZmFpbD1uLHRoaXMuZGVwdGhGYWlsPWEsdGhpcy5wYXNzPWl9O0F0LmRpc2FibGVkPW5ldyBBdCh7ZnVuYzo1MTksbWFzazowfSwwLDAsNzY4MCw3NjgwLDc2ODApO3ZhciBTdD1mdW5jdGlvbih0LGUscil7dGhpcy5ibGVuZEZ1bmN0aW9uPXQsdGhpcy5ibGVuZENvbG9yPWUsdGhpcy5tYXNrPXJ9O1N0LmRpc2FibGVkPW5ldyBTdChTdC5SZXBsYWNlPVsxLDBdLHQuQ29sb3IudHJhbnNwYXJlbnQsWyExLCExLCExLCExXSksU3QudW5ibGVuZGVkPW5ldyBTdChTdC5SZXBsYWNlLHQuQ29sb3IudHJhbnNwYXJlbnQsWyEwLCEwLCEwLCEwXSksU3QuYWxwaGFCbGVuZGVkPW5ldyBTdChbMSw3NzFdLHQuQ29sb3IudHJhbnNwYXJlbnQsWyEwLCEwLCEwLCEwXSk7dmFyIEV0PWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmVuYWJsZT10LHRoaXMubW9kZT1lLHRoaXMuZnJvbnRGYWNlPXJ9O0V0LmRpc2FibGVkPW5ldyBFdCghMSwxMDI5LDIzMDUpLEV0LmJhY2tDQ1c9bmV3IEV0KCEwLDEwMjksMjMwNSk7dmFyIEx0PWZ1bmN0aW9uKHQpe3RoaXMuZ2w9dCx0aGlzLmV4dFZlcnRleEFycmF5T2JqZWN0PXRoaXMuZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpLHRoaXMuY2xlYXJDb2xvcj1uZXcgSCh0aGlzKSx0aGlzLmNsZWFyRGVwdGg9bmV3IEcodGhpcyksdGhpcy5jbGVhclN0ZW5jaWw9bmV3IFkodGhpcyksdGhpcy5jb2xvck1hc2s9bmV3IFcodGhpcyksdGhpcy5kZXB0aE1hc2s9bmV3IFgodGhpcyksdGhpcy5zdGVuY2lsTWFzaz1uZXcgWih0aGlzKSx0aGlzLnN0ZW5jaWxGdW5jPW5ldyBKKHRoaXMpLHRoaXMuc3RlbmNpbE9wPW5ldyBLKHRoaXMpLHRoaXMuc3RlbmNpbFRlc3Q9bmV3IFEodGhpcyksdGhpcy5kZXB0aFJhbmdlPW5ldyAkKHRoaXMpLHRoaXMuZGVwdGhUZXN0PW5ldyB0dCh0aGlzKSx0aGlzLmRlcHRoRnVuYz1uZXcgZXQodGhpcyksdGhpcy5ibGVuZD1uZXcgcnQodGhpcyksdGhpcy5ibGVuZEZ1bmM9bmV3IG50KHRoaXMpLHRoaXMuYmxlbmRDb2xvcj1uZXcgYXQodGhpcyksdGhpcy5ibGVuZEVxdWF0aW9uPW5ldyBpdCh0aGlzKSx0aGlzLmN1bGxGYWNlPW5ldyBvdCh0aGlzKSx0aGlzLmN1bGxGYWNlU2lkZT1uZXcgc3QodGhpcyksdGhpcy5mcm9udEZhY2U9bmV3IGx0KHRoaXMpLHRoaXMucHJvZ3JhbT1uZXcgY3QodGhpcyksdGhpcy5hY3RpdmVUZXh0dXJlPW5ldyB1dCh0aGlzKSx0aGlzLnZpZXdwb3J0PW5ldyBodCh0aGlzKSx0aGlzLmJpbmRGcmFtZWJ1ZmZlcj1uZXcgZnQodGhpcyksdGhpcy5iaW5kUmVuZGVyYnVmZmVyPW5ldyBwdCh0aGlzKSx0aGlzLmJpbmRUZXh0dXJlPW5ldyBkdCh0aGlzKSx0aGlzLmJpbmRWZXJ0ZXhCdWZmZXI9bmV3IGd0KHRoaXMpLHRoaXMuYmluZEVsZW1lbnRCdWZmZXI9bmV3IHZ0KHRoaXMpLHRoaXMuYmluZFZlcnRleEFycmF5T0VTPXRoaXMuZXh0VmVydGV4QXJyYXlPYmplY3QmJm5ldyBtdCh0aGlzKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2s9bmV3IHl0KHRoaXMpLHRoaXMucGl4ZWxTdG9yZVVucGFja1ByZW11bHRpcGx5QWxwaGE9bmV3IHh0KHRoaXMpLHRoaXMucGl4ZWxTdG9yZVVucGFja0ZsaXBZPW5ldyBidCh0aGlzKSx0aGlzLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz10LmdldEV4dGVuc2lvbigiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiksdGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMmJih0aGlzLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpY01heD10LmdldFBhcmFtZXRlcih0aGlzLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpKSx0aGlzLmV4dFRleHR1cmVIYWxmRmxvYXQ9dC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSx0aGlzLmV4dFRleHR1cmVIYWxmRmxvYXQmJnQuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpfTtMdC5wcm90b3R5cGUuc2V0RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMudW5iaW5kVkFPKCksdGhpcy5jbGVhckNvbG9yLnNldERlZmF1bHQoKSx0aGlzLmNsZWFyRGVwdGguc2V0RGVmYXVsdCgpLHRoaXMuY2xlYXJTdGVuY2lsLnNldERlZmF1bHQoKSx0aGlzLmNvbG9yTWFzay5zZXREZWZhdWx0KCksdGhpcy5kZXB0aE1hc2suc2V0RGVmYXVsdCgpLHRoaXMuc3RlbmNpbE1hc2suc2V0RGVmYXVsdCgpLHRoaXMuc3RlbmNpbEZ1bmMuc2V0RGVmYXVsdCgpLHRoaXMuc3RlbmNpbE9wLnNldERlZmF1bHQoKSx0aGlzLnN0ZW5jaWxUZXN0LnNldERlZmF1bHQoKSx0aGlzLmRlcHRoUmFuZ2Uuc2V0RGVmYXVsdCgpLHRoaXMuZGVwdGhUZXN0LnNldERlZmF1bHQoKSx0aGlzLmRlcHRoRnVuYy5zZXREZWZhdWx0KCksdGhpcy5ibGVuZC5zZXREZWZhdWx0KCksdGhpcy5ibGVuZEZ1bmMuc2V0RGVmYXVsdCgpLHRoaXMuYmxlbmRDb2xvci5zZXREZWZhdWx0KCksdGhpcy5ibGVuZEVxdWF0aW9uLnNldERlZmF1bHQoKSx0aGlzLmN1bGxGYWNlLnNldERlZmF1bHQoKSx0aGlzLmN1bGxGYWNlU2lkZS5zZXREZWZhdWx0KCksdGhpcy5mcm9udEZhY2Uuc2V0RGVmYXVsdCgpLHRoaXMucHJvZ3JhbS5zZXREZWZhdWx0KCksdGhpcy5hY3RpdmVUZXh0dXJlLnNldERlZmF1bHQoKSx0aGlzLmJpbmRGcmFtZWJ1ZmZlci5zZXREZWZhdWx0KCksdGhpcy5waXhlbFN0b3JlVW5wYWNrLnNldERlZmF1bHQoKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhLnNldERlZmF1bHQoKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2tGbGlwWS5zZXREZWZhdWx0KCl9LEx0LnByb3RvdHlwZS5zZXREaXJ0eT1mdW5jdGlvbigpe3RoaXMuY2xlYXJDb2xvci5kaXJ0eT0hMCx0aGlzLmNsZWFyRGVwdGguZGlydHk9ITAsdGhpcy5jbGVhclN0ZW5jaWwuZGlydHk9ITAsdGhpcy5jb2xvck1hc2suZGlydHk9ITAsdGhpcy5kZXB0aE1hc2suZGlydHk9ITAsdGhpcy5zdGVuY2lsTWFzay5kaXJ0eT0hMCx0aGlzLnN0ZW5jaWxGdW5jLmRpcnR5PSEwLHRoaXMuc3RlbmNpbE9wLmRpcnR5PSEwLHRoaXMuc3RlbmNpbFRlc3QuZGlydHk9ITAsdGhpcy5kZXB0aFJhbmdlLmRpcnR5PSEwLHRoaXMuZGVwdGhUZXN0LmRpcnR5PSEwLHRoaXMuZGVwdGhGdW5jLmRpcnR5PSEwLHRoaXMuYmxlbmQuZGlydHk9ITAsdGhpcy5ibGVuZEZ1bmMuZGlydHk9ITAsdGhpcy5ibGVuZENvbG9yLmRpcnR5PSEwLHRoaXMuYmxlbmRFcXVhdGlvbi5kaXJ0eT0hMCx0aGlzLmN1bGxGYWNlLmRpcnR5PSEwLHRoaXMuY3VsbEZhY2VTaWRlLmRpcnR5PSEwLHRoaXMuZnJvbnRGYWNlLmRpcnR5PSEwLHRoaXMucHJvZ3JhbS5kaXJ0eT0hMCx0aGlzLmFjdGl2ZVRleHR1cmUuZGlydHk9ITAsdGhpcy52aWV3cG9ydC5kaXJ0eT0hMCx0aGlzLmJpbmRGcmFtZWJ1ZmZlci5kaXJ0eT0hMCx0aGlzLmJpbmRSZW5kZXJidWZmZXIuZGlydHk9ITAsdGhpcy5iaW5kVGV4dHVyZS5kaXJ0eT0hMCx0aGlzLmJpbmRWZXJ0ZXhCdWZmZXIuZGlydHk9ITAsdGhpcy5iaW5kRWxlbWVudEJ1ZmZlci5kaXJ0eT0hMCx0aGlzLmV4dFZlcnRleEFycmF5T2JqZWN0JiYodGhpcy5iaW5kVmVydGV4QXJyYXlPRVMuZGlydHk9ITApLHRoaXMucGl4ZWxTdG9yZVVucGFjay5kaXJ0eT0hMCx0aGlzLnBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhLmRpcnR5PSEwLHRoaXMucGl4ZWxTdG9yZVVucGFja0ZsaXBZLmRpcnR5PSEwfSxMdC5wcm90b3R5cGUuY3JlYXRlSW5kZXhCdWZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGoodGhpcyx0LGUpfSxMdC5wcm90b3R5cGUuY3JlYXRlVmVydGV4QnVmZmVyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbmV3IFUodGhpcyx0LGUscil9LEx0LnByb3RvdHlwZS5jcmVhdGVSZW5kZXJidWZmZXI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuZ2wsYT1uLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpO3JldHVybiB0aGlzLmJpbmRSZW5kZXJidWZmZXIuc2V0KGEpLG4ucmVuZGVyYnVmZmVyU3RvcmFnZShuLlJFTkRFUkJVRkZFUix0LGUsciksdGhpcy5iaW5kUmVuZGVyYnVmZmVyLnNldChudWxsKSxhfSxMdC5wcm90b3R5cGUuY3JlYXRlRnJhbWVidWZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFR0KHRoaXMsdCxlKX0sTHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3Iscj10LmRlcHRoLG49dGhpcy5nbCxhPTA7ZSYmKGF8PW4uQ09MT1JfQlVGRkVSX0JJVCx0aGlzLmNsZWFyQ29sb3Iuc2V0KGUpLHRoaXMuY29sb3JNYXNrLnNldChbITAsITAsITAsITBdKSksdm9pZCAwIT09ciYmKGF8PW4uREVQVEhfQlVGRkVSX0JJVCx0aGlzLmRlcHRoUmFuZ2Uuc2V0KFswLDFdKSx0aGlzLmNsZWFyRGVwdGguc2V0KHIpLHRoaXMuZGVwdGhNYXNrLnNldCghMCkpLG4uY2xlYXIoYSl9LEx0LnByb3RvdHlwZS5zZXRDdWxsRmFjZT1mdW5jdGlvbih0KXshMT09PXQuZW5hYmxlP3RoaXMuY3VsbEZhY2Uuc2V0KCExKToodGhpcy5jdWxsRmFjZS5zZXQoITApLHRoaXMuY3VsbEZhY2VTaWRlLnNldCh0Lm1vZGUpLHRoaXMuZnJvbnRGYWNlLnNldCh0LmZyb250RmFjZSkpfSxMdC5wcm90b3R5cGUuc2V0RGVwdGhNb2RlPWZ1bmN0aW9uKHQpe3QuZnVuYyE9PXRoaXMuZ2wuQUxXQVlTfHx0Lm1hc2s/KHRoaXMuZGVwdGhUZXN0LnNldCghMCksdGhpcy5kZXB0aEZ1bmMuc2V0KHQuZnVuYyksdGhpcy5kZXB0aE1hc2suc2V0KHQubWFzayksdGhpcy5kZXB0aFJhbmdlLnNldCh0LnJhbmdlKSk6dGhpcy5kZXB0aFRlc3Quc2V0KCExKX0sTHQucHJvdG90eXBlLnNldFN0ZW5jaWxNb2RlPWZ1bmN0aW9uKHQpe3QudGVzdC5mdW5jIT09dGhpcy5nbC5BTFdBWVN8fHQubWFzaz8odGhpcy5zdGVuY2lsVGVzdC5zZXQoITApLHRoaXMuc3RlbmNpbE1hc2suc2V0KHQubWFzayksdGhpcy5zdGVuY2lsT3Auc2V0KFt0LmZhaWwsdC5kZXB0aEZhaWwsdC5wYXNzXSksdGhpcy5zdGVuY2lsRnVuYy5zZXQoe2Z1bmM6dC50ZXN0LmZ1bmMscmVmOnQucmVmLG1hc2s6dC50ZXN0Lm1hc2t9KSk6dGhpcy5zdGVuY2lsVGVzdC5zZXQoITEpfSxMdC5wcm90b3R5cGUuc2V0Q29sb3JNb2RlPWZ1bmN0aW9uKGUpe3QuZGVlcEVxdWFsKGUuYmxlbmRGdW5jdGlvbixTdC5SZXBsYWNlKT90aGlzLmJsZW5kLnNldCghMSk6KHRoaXMuYmxlbmQuc2V0KCEwKSx0aGlzLmJsZW5kRnVuYy5zZXQoZS5ibGVuZEZ1bmN0aW9uKSx0aGlzLmJsZW5kQ29sb3Iuc2V0KGUuYmxlbmRDb2xvcikpLHRoaXMuY29sb3JNYXNrLnNldChlLm1hc2spfSxMdC5wcm90b3R5cGUudW5iaW5kVkFPPWZ1bmN0aW9uKCl7dGhpcy5leHRWZXJ0ZXhBcnJheU9iamVjdCYmdGhpcy5iaW5kVmVydGV4QXJyYXlPRVMuc2V0KG51bGwpfTt2YXIgQ3Q9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyLG4sYSl7dmFyIGk9dGhpcztlLmNhbGwodGhpcyksdGhpcy5pZD1yLHRoaXMuZGlzcGF0Y2hlcj1hLHRoaXMub24oImRhdGEiLGZ1bmN0aW9uKHQpeyJzb3VyY2UiPT09dC5kYXRhVHlwZSYmIm1ldGFkYXRhIj09PXQuc291cmNlRGF0YVR5cGUmJihpLl9zb3VyY2VMb2FkZWQ9ITApLGkuX3NvdXJjZUxvYWRlZCYmIWkuX3BhdXNlZCYmInNvdXJjZSI9PT10LmRhdGFUeXBlJiYiY29udGVudCI9PT10LnNvdXJjZURhdGFUeXBlJiYoaS5yZWxvYWQoKSxpLnRyYW5zZm9ybSYmaS51cGRhdGUoaS50cmFuc2Zvcm0pKX0pLHRoaXMub24oImVycm9yIixmdW5jdGlvbigpe2kuX3NvdXJjZUVycm9yZWQ9ITB9KSx0aGlzLl9zb3VyY2U9RChyLG4sYSx0aGlzKSx0aGlzLl90aWxlcz17fSx0aGlzLl9jYWNoZT1uZXcgTigwLHRoaXMuX3VubG9hZFRpbGUuYmluZCh0aGlzKSksdGhpcy5fdGltZXJzPXt9LHRoaXMuX2NhY2hlVGltZXJzPXt9LHRoaXMuX21heFRpbGVDYWNoZVNpemU9bnVsbCx0aGlzLl9jb3ZlcmVkVGlsZXM9e30sdGhpcy5fc3RhdGU9bmV3IHQuU291cmNlRmVhdHVyZVN0YXRlfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt0aGlzLm1hcD10LHRoaXMuX21heFRpbGVDYWNoZVNpemU9dD90Ll9tYXhUaWxlQ2FjaGVTaXplOm51bGwsdGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2Uub25BZGQmJnRoaXMuX3NvdXJjZS5vbkFkZCh0KX0sci5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24odCl7dGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2Uub25SZW1vdmUmJnRoaXMuX3NvdXJjZS5vblJlbW92ZSh0KX0sci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5fc291cmNlRXJyb3JlZClyZXR1cm4hMDtpZighdGhpcy5fc291cmNlTG9hZGVkKXJldHVybiExO2lmKCF0aGlzLl9zb3VyY2UubG9hZGVkKCkpcmV0dXJuITE7Zm9yKHZhciB0IGluIHRoaXMuX3RpbGVzKXt2YXIgZT10aGlzLl90aWxlc1t0XTtpZigibG9hZGVkIiE9PWUuc3RhdGUmJiJlcnJvcmVkIiE9PWUuc3RhdGUpcmV0dXJuITF9cmV0dXJuITB9LHIucHJvdG90eXBlLmdldFNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3VyY2V9LHIucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7dGhpcy5fcGF1c2VkPSEwfSxyLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXtpZih0aGlzLl9wYXVzZWQpe3ZhciB0PXRoaXMuX3Nob3VsZFJlbG9hZE9uUmVzdW1lO3RoaXMuX3BhdXNlZD0hMSx0aGlzLl9zaG91bGRSZWxvYWRPblJlc3VtZT0hMSx0JiZ0aGlzLnJlbG9hZCgpLHRoaXMudHJhbnNmb3JtJiZ0aGlzLnVwZGF0ZSh0aGlzLnRyYW5zZm9ybSl9fSxyLnByb3RvdHlwZS5fbG9hZFRpbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fc291cmNlLmxvYWRUaWxlKHQsZSl9LHIucHJvdG90eXBlLl91bmxvYWRUaWxlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX3NvdXJjZS51bmxvYWRUaWxlKXJldHVybiB0aGlzLl9zb3VyY2UudW5sb2FkVGlsZSh0LGZ1bmN0aW9uKCl7fSl9LHIucHJvdG90eXBlLl9hYm9ydFRpbGU9ZnVuY3Rpb24odCl7aWYodGhpcy5fc291cmNlLmFib3J0VGlsZSlyZXR1cm4gdGhpcy5fc291cmNlLmFib3J0VGlsZSh0LGZ1bmN0aW9uKCl7fSl9LHIucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3VyY2Uuc2VyaWFsaXplKCl9LHIucHJvdG90eXBlLnByZXBhcmU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX3NvdXJjZS5wcmVwYXJlJiZ0aGlzLl9zb3VyY2UucHJlcGFyZSgpLHRoaXMuX3N0YXRlLmNvYWxlc2NlQ2hhbmdlcyh0aGlzLl90aWxlcyx0aGlzLm1hcD90aGlzLm1hcC5wYWludGVyOm51bGwpLHRoaXMuX3RpbGVzKXt2YXIgcj10aGlzLl90aWxlc1tlXTtyLnVwbG9hZCh0KSxyLnByZXBhcmUodGhpcy5tYXAuc3R5bGUuaW1hZ2VNYW5hZ2VyKX19LHIucHJvdG90eXBlLmdldElkcz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl90aWxlcykubWFwKE51bWJlcikuc29ydChQdCl9LHIucHJvdG90eXBlLmdldFJlbmRlcmFibGVJZHM9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcyxuPVtdO2Zvcih2YXIgYSBpbiB0aGlzLl90aWxlcyl0aGlzLl9pc0lkUmVuZGVyYWJsZSgrYSxlKSYmbi5wdXNoKCthKTtyZXR1cm4gZT9uLnNvcnQoZnVuY3Rpb24oZSxuKXt2YXIgYT1yLl90aWxlc1tlXS50aWxlSUQsaT1yLl90aWxlc1tuXS50aWxlSUQsbz1uZXcgdC5Qb2ludChhLmNhbm9uaWNhbC54LGEuY2Fub25pY2FsLnkpLl9yb3RhdGUoci50cmFuc2Zvcm0uYW5nbGUpLHM9bmV3IHQuUG9pbnQoaS5jYW5vbmljYWwueCxpLmNhbm9uaWNhbC55KS5fcm90YXRlKHIudHJhbnNmb3JtLmFuZ2xlKTtyZXR1cm4gYS5vdmVyc2NhbGVkWi1pLm92ZXJzY2FsZWRafHxzLnktby55fHxzLngtby54fSk6bi5zb3J0KFB0KX0sci5wcm90b3R5cGUuaGFzUmVuZGVyYWJsZVBhcmVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZpbmRMb2FkZWRQYXJlbnQodCwwKTtyZXR1cm4hIWUmJnRoaXMuX2lzSWRSZW5kZXJhYmxlKGUudGlsZUlELmtleSl9LHIucHJvdG90eXBlLl9pc0lkUmVuZGVyYWJsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90aWxlc1t0XSYmdGhpcy5fdGlsZXNbdF0uaGFzRGF0YSgpJiYhdGhpcy5fY292ZXJlZFRpbGVzW3RdJiYoZXx8IXRoaXMuX3RpbGVzW3RdLmhvbGRpbmdGb3JGYWRlKCkpfSxyLnByb3RvdHlwZS5yZWxvYWQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9wYXVzZWQpdGhpcy5fc2hvdWxkUmVsb2FkT25SZXN1bWU9ITA7ZWxzZSBmb3IodmFyIHQgaW4gdGhpcy5fY2FjaGUucmVzZXQoKSx0aGlzLl90aWxlcykiZXJyb3JlZCIhPT10aGlzLl90aWxlc1t0XS5zdGF0ZSYmdGhpcy5fcmVsb2FkVGlsZSh0LCJyZWxvYWRpbmciKX0sci5wcm90b3R5cGUuX3JlbG9hZFRpbGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl90aWxlc1t0XTtyJiYoImxvYWRpbmciIT09ci5zdGF0ZSYmKHIuc3RhdGU9ZSksdGhpcy5fbG9hZFRpbGUocix0aGlzLl90aWxlTG9hZGVkLmJpbmQodGhpcyxyLHQsZSkpKX0sci5wcm90b3R5cGUuX3RpbGVMb2FkZWQ9ZnVuY3Rpb24oZSxyLG4sYSl7aWYoYSlyZXR1cm4gZS5zdGF0ZT0iZXJyb3JlZCIsdm9pZCg0MDQhPT1hLnN0YXR1cz90aGlzLl9zb3VyY2UuZmlyZShuZXcgdC5FcnJvckV2ZW50KGEse3RpbGU6ZX0pKTp0aGlzLnVwZGF0ZSh0aGlzLnRyYW5zZm9ybSkpO2UudGltZUFkZGVkPXQuYnJvd3Nlci5ub3coKSwiZXhwaXJlZCI9PT1uJiYoZS5yZWZyZXNoZWRVcG9uRXhwaXJhdGlvbj0hMCksdGhpcy5fc2V0VGlsZVJlbG9hZFRpbWVyKHIsZSksInJhc3Rlci1kZW0iPT09dGhpcy5nZXRTb3VyY2UoKS50eXBlJiZlLmRlbSYmdGhpcy5fYmFja2ZpbGxERU0oZSksdGhpcy5fc3RhdGUuaW5pdGlhbGl6ZVRpbGVTdGF0ZShlLHRoaXMubWFwP3RoaXMubWFwLnBhaW50ZXI6bnVsbCksdGhpcy5fc291cmNlLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic291cmNlIix0aWxlOmUsY29vcmQ6ZS50aWxlSUR9KSl9LHIucHJvdG90eXBlLl9iYWNrZmlsbERFTT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5nZXRSZW5kZXJhYmxlSWRzKCkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO2lmKHQubmVpZ2hib3JpbmdUaWxlcyYmdC5uZWlnaGJvcmluZ1RpbGVzW25dKXt2YXIgYT10aGlzLmdldFRpbGVCeUlEKG4pO2kodCxhKSxpKGEsdCl9fWZ1bmN0aW9uIGkodCxlKXt0Lm5lZWRzSGlsbHNoYWRlUHJlcGFyZT0hMDt2YXIgcj1lLnRpbGVJRC5jYW5vbmljYWwueC10LnRpbGVJRC5jYW5vbmljYWwueCxuPWUudGlsZUlELmNhbm9uaWNhbC55LXQudGlsZUlELmNhbm9uaWNhbC55LGE9TWF0aC5wb3coMix0LnRpbGVJRC5jYW5vbmljYWwueiksaT1lLnRpbGVJRC5rZXk7MD09PXImJjA9PT1ufHxNYXRoLmFicyhuKT4xfHwoTWF0aC5hYnMocik+MSYmKDE9PT1NYXRoLmFicyhyK2EpP3IrPWE6MT09PU1hdGguYWJzKHItYSkmJihyLT1hKSksZS5kZW0mJnQuZGVtJiYodC5kZW0uYmFja2ZpbGxCb3JkZXIoZS5kZW0scixuKSx0Lm5laWdoYm9yaW5nVGlsZXMmJnQubmVpZ2hib3JpbmdUaWxlc1tpXSYmKHQubmVpZ2hib3JpbmdUaWxlc1tpXS5iYWNrZmlsbGVkPSEwKSkpfX0sci5wcm90b3R5cGUuZ2V0VGlsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRUaWxlQnlJRCh0LmtleSl9LHIucHJvdG90eXBlLmdldFRpbGVCeUlEPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90aWxlc1t0XX0sci5wcm90b3R5cGUuZ2V0Wm9vbT1mdW5jdGlvbih0KXtyZXR1cm4gdC56b29tK3Quc2NhbGVab29tKHQudGlsZVNpemUvdGhpcy5fc291cmNlLnRpbGVTaXplKX0sci5wcm90b3R5cGUuX3JldGFpbkxvYWRlZENoaWxkcmVuPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgYSBpbiB0aGlzLl90aWxlcyl7dmFyIGk9dGhpcy5fdGlsZXNbYV07aWYoIShuW2FdfHwhaS5oYXNEYXRhKCl8fGkudGlsZUlELm92ZXJzY2FsZWRaPD1lfHxpLnRpbGVJRC5vdmVyc2NhbGVkWj5yKSl7Zm9yKHZhciBvPWkudGlsZUlEO2kmJmkudGlsZUlELm92ZXJzY2FsZWRaPmUrMTspe3ZhciBzPWkudGlsZUlELnNjYWxlZFRvKGkudGlsZUlELm92ZXJzY2FsZWRaLTEpOyhpPXRoaXMuX3RpbGVzW3Mua2V5XSkmJmkuaGFzRGF0YSgpJiYobz1zKX1mb3IodmFyIGw9bztsLm92ZXJzY2FsZWRaPmU7KWlmKHRbKGw9bC5zY2FsZWRUbyhsLm92ZXJzY2FsZWRaLTEpKS5rZXldKXtuW28ua2V5XT1vO2JyZWFrfX19fSxyLnByb3RvdHlwZS5maW5kTG9hZGVkUGFyZW50PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQub3ZlcnNjYWxlZFotMTtyPj1lO3ItLSl7dmFyIG49dC5zY2FsZWRUbyhyKTtpZighbilyZXR1cm47dmFyIGE9U3RyaW5nKG4ua2V5KSxpPXRoaXMuX3RpbGVzW2FdO2lmKGkmJmkuaGFzRGF0YSgpKXJldHVybiBpO2lmKHRoaXMuX2NhY2hlLmhhcyhuKSlyZXR1cm4gdGhpcy5fY2FjaGUuZ2V0KG4pfX0sci5wcm90b3R5cGUudXBkYXRlQ2FjaGVTaXplPWZ1bmN0aW9uKHQpe3ZhciBlPShNYXRoLmNlaWwodC53aWR0aC90aGlzLl9zb3VyY2UudGlsZVNpemUpKzEpKihNYXRoLmNlaWwodC5oZWlnaHQvdGhpcy5fc291cmNlLnRpbGVTaXplKSsxKSxyPU1hdGguZmxvb3IoNSplKSxuPSJudW1iZXIiPT10eXBlb2YgdGhpcy5fbWF4VGlsZUNhY2hlU2l6ZT9NYXRoLm1pbih0aGlzLl9tYXhUaWxlQ2FjaGVTaXplLHIpOnI7dGhpcy5fY2FjaGUuc2V0TWF4U2l6ZShuKX0sci5wcm90b3R5cGUuaGFuZGxlV3JhcEp1bXA9ZnVuY3Rpb24odCl7dmFyIGU9KHQtKHZvaWQgMD09PXRoaXMuX3ByZXZMbmc/dDp0aGlzLl9wcmV2TG5nKSkvMzYwLHI9TWF0aC5yb3VuZChlKTtpZih0aGlzLl9wcmV2TG5nPXQscil7dmFyIG49e307Zm9yKHZhciBhIGluIHRoaXMuX3RpbGVzKXt2YXIgaT10aGlzLl90aWxlc1thXTtpLnRpbGVJRD1pLnRpbGVJRC51bndyYXBUbyhpLnRpbGVJRC53cmFwK3IpLG5baS50aWxlSUQua2V5XT1pfWZvcih2YXIgbyBpbiB0aGlzLl90aWxlcz1uLHRoaXMuX3RpbWVycyljbGVhclRpbWVvdXQodGhpcy5fdGltZXJzW29dKSxkZWxldGUgdGhpcy5fdGltZXJzW29dO2Zvcih2YXIgcyBpbiB0aGlzLl90aWxlcyl7dmFyIGw9dGhpcy5fdGlsZXNbc107dGhpcy5fc2V0VGlsZVJlbG9hZFRpbWVyKHMsbCl9fX0sci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7aWYodGhpcy50cmFuc2Zvcm09ZSx0aGlzLl9zb3VyY2VMb2FkZWQmJiF0aGlzLl9wYXVzZWQpe3ZhciBhO3RoaXMudXBkYXRlQ2FjaGVTaXplKGUpLHRoaXMuaGFuZGxlV3JhcEp1bXAodGhpcy50cmFuc2Zvcm0uY2VudGVyLmxuZyksdGhpcy5fY292ZXJlZFRpbGVzPXt9LHRoaXMudXNlZD90aGlzLl9zb3VyY2UudGlsZUlEP2E9ZS5nZXRWaXNpYmxlVW53cmFwcGVkQ29vcmRpbmF0ZXModGhpcy5fc291cmNlLnRpbGVJRCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdC5PdmVyc2NhbGVkVGlsZUlEKGUuY2Fub25pY2FsLnosZS53cmFwLGUuY2Fub25pY2FsLnosZS5jYW5vbmljYWwueCxlLmNhbm9uaWNhbC55KX0pOihhPWUuY292ZXJpbmdUaWxlcyh7dGlsZVNpemU6dGhpcy5fc291cmNlLnRpbGVTaXplLG1pbnpvb206dGhpcy5fc291cmNlLm1pbnpvb20sbWF4em9vbTp0aGlzLl9zb3VyY2UubWF4em9vbSxyb3VuZFpvb206dGhpcy5fc291cmNlLnJvdW5kWm9vbSxyZXBhcnNlT3ZlcnNjYWxlZDp0aGlzLl9zb3VyY2UucmVwYXJzZU92ZXJzY2FsZWR9KSx0aGlzLl9zb3VyY2UuaGFzVGlsZSYmKGE9YS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIG4uX3NvdXJjZS5oYXNUaWxlKHQpfSkpKTphPVtdO3ZhciBpPSh0aGlzLl9zb3VyY2Uucm91bmRab29tP01hdGgucm91bmQ6TWF0aC5mbG9vcikodGhpcy5nZXRab29tKGUpKSxvPU1hdGgubWF4KGktci5tYXhPdmVyem9vbWluZyx0aGlzLl9zb3VyY2UubWluem9vbSkscz1NYXRoLm1heChpK3IubWF4VW5kZXJ6b29taW5nLHRoaXMuX3NvdXJjZS5taW56b29tKSxsPXRoaXMuX3VwZGF0ZVJldGFpbmVkVGlsZXMoYSxpKTtpZihPdCh0aGlzLl9zb3VyY2UudHlwZSkpe2Zvcih2YXIgYz17fSx1PXt9LGg9MCxmPU9iamVjdC5rZXlzKGwpO2g8Zi5sZW5ndGg7aCs9MSl7dmFyIHA9ZltoXSxkPWxbcF0sZz10aGlzLl90aWxlc1twXTtpZihnJiYhKGcuZmFkZUVuZFRpbWUmJmcuZmFkZUVuZFRpbWU8PXQuYnJvd3Nlci5ub3coKSkpe3ZhciB2PXRoaXMuZmluZExvYWRlZFBhcmVudChkLG8pO3YmJih0aGlzLl9hZGRUaWxlKHYudGlsZUlEKSxjW3YudGlsZUlELmtleV09di50aWxlSUQpLHVbcF09ZH19Zm9yKHZhciBtIGluIHRoaXMuX3JldGFpbkxvYWRlZENoaWxkcmVuKHUsaSxzLGwpLGMpbFttXXx8KHRoaXMuX2NvdmVyZWRUaWxlc1ttXT0hMCxsW21dPWNbbV0pfWZvcih2YXIgeSBpbiBsKXRoaXMuX3RpbGVzW3ldLmNsZWFyRmFkZUhvbGQoKTtmb3IodmFyIHg9MCxiPXQua2V5c0RpZmZlcmVuY2UodGhpcy5fdGlsZXMsbCk7eDxiLmxlbmd0aDt4Kz0xKXt2YXIgXz1iW3hdLHc9dGhpcy5fdGlsZXNbX107dy5oYXNTeW1ib2xCdWNrZXRzJiYhdy5ob2xkaW5nRm9yRmFkZSgpP3cuc2V0SG9sZER1cmF0aW9uKHRoaXMubWFwLl9mYWRlRHVyYXRpb24pOncuaGFzU3ltYm9sQnVja2V0cyYmIXcuc3ltYm9sRmFkZUZpbmlzaGVkKCl8fHRoaXMuX3JlbW92ZVRpbGUoXyl9fX0sci5wcm90b3R5cGUucmVsZWFzZVN5bWJvbEZhZGVUaWxlcz1mdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5ob2xkaW5nRm9yRmFkZSgpJiZ0aGlzLl9yZW1vdmVUaWxlKHQpfSxyLnByb3RvdHlwZS5fdXBkYXRlUmV0YWluZWRUaWxlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj17fSxhPXt9LGk9TWF0aC5tYXgoZS1yLm1heE92ZXJ6b29taW5nLHRoaXMuX3NvdXJjZS5taW56b29tKSxvPU1hdGgubWF4KGUrci5tYXhVbmRlcnpvb21pbmcsdGhpcy5fc291cmNlLm1pbnpvb20pLHM9e30sbD0wLGM9dDtsPGMubGVuZ3RoO2wrPTEpe3ZhciB1PWNbbF0saD10aGlzLl9hZGRUaWxlKHUpO25bdS5rZXldPXUsaC5oYXNEYXRhKCl8fGU8dGhpcy5fc291cmNlLm1heHpvb20mJihzW3Uua2V5XT11KX10aGlzLl9yZXRhaW5Mb2FkZWRDaGlsZHJlbihzLGUsbyxuKTtmb3IodmFyIGY9MCxwPXQ7ZjxwLmxlbmd0aDtmKz0xKXt2YXIgZD1wW2ZdLGc9dGhpcy5fdGlsZXNbZC5rZXldO2lmKCFnLmhhc0RhdGEoKSl7aWYoZSsxPnRoaXMuX3NvdXJjZS5tYXh6b29tKXt2YXIgdj1kLmNoaWxkcmVuKHRoaXMuX3NvdXJjZS5tYXh6b29tKVswXSxtPXRoaXMuZ2V0VGlsZSh2KTtpZihtJiZtLmhhc0RhdGEoKSl7blt2LmtleV09djtjb250aW51ZX19ZWxzZXt2YXIgeT1kLmNoaWxkcmVuKHRoaXMuX3NvdXJjZS5tYXh6b29tKTtpZihuW3lbMF0ua2V5XSYmblt5WzFdLmtleV0mJm5beVsyXS5rZXldJiZuW3lbM10ua2V5XSljb250aW51ZX1mb3IodmFyIHg9Zy53YXNSZXF1ZXN0ZWQoKSxiPWQub3ZlcnNjYWxlZFotMTtiPj1pOy0tYil7dmFyIF89ZC5zY2FsZWRUbyhiKTtpZihhW18ua2V5XSlicmVhaztpZihhW18ua2V5XT0hMCwhKGc9dGhpcy5nZXRUaWxlKF8pKSYmeCYmKGc9dGhpcy5fYWRkVGlsZShfKSksZyYmKG5bXy5rZXldPV8seD1nLndhc1JlcXVlc3RlZCgpLGcuaGFzRGF0YSgpKSlicmVha319fXJldHVybiBufSxyLnByb3RvdHlwZS5fYWRkVGlsZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLl90aWxlc1tlLmtleV07aWYocilyZXR1cm4gcjsocj10aGlzLl9jYWNoZS5nZXRBbmRSZW1vdmUoZSkpJiYodGhpcy5fc2V0VGlsZVJlbG9hZFRpbWVyKGUua2V5LHIpLHIudGlsZUlEPWUsdGhpcy5fc3RhdGUuaW5pdGlhbGl6ZVRpbGVTdGF0ZShyLHRoaXMubWFwP3RoaXMubWFwLnBhaW50ZXI6bnVsbCksdGhpcy5fY2FjaGVUaW1lcnNbZS5rZXldJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2NhY2hlVGltZXJzW2Uua2V5XSksZGVsZXRlIHRoaXMuX2NhY2hlVGltZXJzW2Uua2V5XSx0aGlzLl9zZXRUaWxlUmVsb2FkVGltZXIoZS5rZXkscikpKTt2YXIgbj1Cb29sZWFuKHIpO3JldHVybiBufHwocj1uZXcgdC5UaWxlKGUsdGhpcy5fc291cmNlLnRpbGVTaXplKmUub3ZlcnNjYWxlRmFjdG9yKCkpLHRoaXMuX2xvYWRUaWxlKHIsdGhpcy5fdGlsZUxvYWRlZC5iaW5kKHRoaXMscixlLmtleSxyLnN0YXRlKSkpLHI/KHIudXNlcysrLHRoaXMuX3RpbGVzW2Uua2V5XT1yLG58fHRoaXMuX3NvdXJjZS5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse3RpbGU6cixjb29yZDpyLnRpbGVJRCxkYXRhVHlwZToic291cmNlIn0pKSxyKTpudWxsfSxyLnByb3RvdHlwZS5fc2V0VGlsZVJlbG9hZFRpbWVyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpczt0IGluIHRoaXMuX3RpbWVycyYmKGNsZWFyVGltZW91dCh0aGlzLl90aW1lcnNbdF0pLGRlbGV0ZSB0aGlzLl90aW1lcnNbdF0pO3ZhciBuPWUuZ2V0RXhwaXJ5VGltZW91dCgpO24mJih0aGlzLl90aW1lcnNbdF09c2V0VGltZW91dChmdW5jdGlvbigpe3IuX3JlbG9hZFRpbGUodCwiZXhwaXJlZCIpLGRlbGV0ZSByLl90aW1lcnNbdF19LG4pKX0sci5wcm90b3R5cGUuX3JlbW92ZVRpbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZXNbdF07ZSYmKGUudXNlcy0tLGRlbGV0ZSB0aGlzLl90aWxlc1t0XSx0aGlzLl90aW1lcnNbdF0mJihjbGVhclRpbWVvdXQodGhpcy5fdGltZXJzW3RdKSxkZWxldGUgdGhpcy5fdGltZXJzW3RdKSxlLnVzZXM+MHx8KGUuaGFzRGF0YSgpJiYicmVsb2FkaW5nIiE9PWUuc3RhdGU/dGhpcy5fY2FjaGUuYWRkKGUudGlsZUlELGUsZS5nZXRFeHBpcnlUaW1lb3V0KCkpOihlLmFib3J0ZWQ9ITAsdGhpcy5fYWJvcnRUaWxlKGUpLHRoaXMuX3VubG9hZFRpbGUoZSkpKSl9LHIucHJvdG90eXBlLmNsZWFyVGlsZXM9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fc2hvdWxkUmVsb2FkT25SZXN1bWU9ITEsdGhpcy5fcGF1c2VkPSExLHRoaXMuX3RpbGVzKXRoaXMuX3JlbW92ZVRpbGUodCk7dGhpcy5fY2FjaGUucmVzZXQoKX0sci5wcm90b3R5cGUudGlsZXNJbj1mdW5jdGlvbihlLHIsbil7dmFyIGE9dGhpcyxpPVtdLG89dGhpcy50cmFuc2Zvcm07aWYoIW8pcmV0dXJuIGk7Zm9yKHZhciBzPW4/by5nZXRDYW1lcmFRdWVyeUdlb21ldHJ5KGUpOmUsbD1lLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gby5wb2ludENvb3JkaW5hdGUodCl9KSxjPXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBvLnBvaW50Q29vcmRpbmF0ZSh0KX0pLHU9dGhpcy5nZXRJZHMoKSxoPTEvMCxmPTEvMCxwPS0xLzAsZD0tMS8wLGc9MCx2PWM7Zzx2Lmxlbmd0aDtnKz0xKXt2YXIgbT12W2ddO2g9TWF0aC5taW4oaCxtLngpLGY9TWF0aC5taW4oZixtLnkpLHA9TWF0aC5tYXgocCxtLngpLGQ9TWF0aC5tYXgoZCxtLnkpfWZvcih2YXIgeT1mdW5jdGlvbihlKXt2YXIgbj1hLl90aWxlc1t1W2VdXTtpZighbi5ob2xkaW5nRm9yRmFkZSgpKXt2YXIgcz1uLnRpbGVJRCxnPU1hdGgucG93KDIsby56b29tLW4udGlsZUlELm92ZXJzY2FsZWRaKSx2PXIqbi5xdWVyeVBhZGRpbmcqdC5FWFRFTlQvbi50aWxlU2l6ZS9nLG09W3MuZ2V0VGlsZVBvaW50KG5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZShoLGYpKSxzLmdldFRpbGVQb2ludChuZXcgdC5NZXJjYXRvckNvb3JkaW5hdGUocCxkKSldO2lmKG1bMF0ueC12PHQuRVhURU5UJiZtWzBdLnktdjx0LkVYVEVOVCYmbVsxXS54K3Y+PTAmJm1bMV0ueSt2Pj0wKXt2YXIgeT1sLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcy5nZXRUaWxlUG9pbnQodCl9KSx4PWMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBzLmdldFRpbGVQb2ludCh0KX0pO2kucHVzaCh7dGlsZTpuLHRpbGVJRDpzLHF1ZXJ5R2VvbWV0cnk6eSxjYW1lcmFRdWVyeUdlb21ldHJ5Ongsc2NhbGU6Z30pfX19LHg9MDt4PHUubGVuZ3RoO3grKyl5KHgpO3JldHVybiBpfSxyLnByb3RvdHlwZS5nZXRWaXNpYmxlQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMscj10aGlzLmdldFJlbmRlcmFibGVJZHModCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLl90aWxlc1t0XS50aWxlSUR9KSxuPTAsYT1yO248YS5sZW5ndGg7bis9MSl7dmFyIGk9YVtuXTtpLnBvc01hdHJpeD10aGlzLnRyYW5zZm9ybS5jYWxjdWxhdGVQb3NNYXRyaXgoaS50b1Vud3JhcHBlZCgpKX1yZXR1cm4gcn0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMuX3NvdXJjZS5oYXNUcmFuc2l0aW9uKCkpcmV0dXJuITA7aWYoT3QodGhpcy5fc291cmNlLnR5cGUpKWZvcih2YXIgZSBpbiB0aGlzLl90aWxlcyl7dmFyIHI9dGhpcy5fdGlsZXNbZV07aWYodm9pZCAwIT09ci5mYWRlRW5kVGltZSYmci5mYWRlRW5kVGltZT49dC5icm93c2VyLm5vdygpKXJldHVybiEwfXJldHVybiExfSxyLnByb3RvdHlwZS5zZXRGZWF0dXJlU3RhdGU9ZnVuY3Rpb24odCxlLHIpe3Q9dHx8Il9nZW9qc29uVGlsZUxheWVyIix0aGlzLl9zdGF0ZS51cGRhdGVTdGF0ZSh0LGUscil9LHIucHJvdG90eXBlLnJlbW92ZUZlYXR1cmVTdGF0ZT1mdW5jdGlvbih0LGUscil7dD10fHwiX2dlb2pzb25UaWxlTGF5ZXIiLHRoaXMuX3N0YXRlLnJlbW92ZUZlYXR1cmVTdGF0ZSh0LGUscil9LHIucHJvdG90eXBlLmdldEZlYXR1cmVTdGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0PXR8fCJfZ2VvanNvblRpbGVMYXllciIsdGhpcy5fc3RhdGUuZ2V0U3RhdGUodCxlKX0scn0odC5FdmVudGVkKTtmdW5jdGlvbiBQdCh0LGUpe3JldHVybiB0JTMyLWUlMzJ8fGUtdH1mdW5jdGlvbiBPdCh0KXtyZXR1cm4icmFzdGVyIj09PXR8fCJpbWFnZSI9PT10fHwidmlkZW8iPT09dH1mdW5jdGlvbiB6dCgpe3JldHVybiBuZXcgdC53aW5kb3cuV29ya2VyKCRuLndvcmtlclVybCl9Q3QubWF4T3Zlcnpvb21pbmc9MTAsQ3QubWF4VW5kZXJ6b29taW5nPTM7dmFyIEl0PWZ1bmN0aW9uKCl7dGhpcy5hY3RpdmU9e319O0l0LnByb3RvdHlwZS5hY3F1aXJlPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLndvcmtlcnMpZm9yKHRoaXMud29ya2Vycz1bXTt0aGlzLndvcmtlcnMubGVuZ3RoPEl0LndvcmtlckNvdW50Oyl0aGlzLndvcmtlcnMucHVzaChuZXcgenQpO3JldHVybiB0aGlzLmFjdGl2ZVt0XT0hMCx0aGlzLndvcmtlcnMuc2xpY2UoKX0sSXQucHJvdG90eXBlLnJlbGVhc2U9ZnVuY3Rpb24odCl7ZGVsZXRlIHRoaXMuYWN0aXZlW3RdLDA9PT1PYmplY3Qua2V5cyh0aGlzLmFjdGl2ZSkubGVuZ3RoJiYodGhpcy53b3JrZXJzLmZvckVhY2goZnVuY3Rpb24odCl7dC50ZXJtaW5hdGUoKX0pLHRoaXMud29ya2Vycz1udWxsKX07dmFyIER0LFJ0PU1hdGguZmxvb3IodC5icm93c2VyLmhhcmR3YXJlQ29uY3VycmVuY3kvMik7ZnVuY3Rpb24gRnQoZSxyKXt2YXIgbj17fTtmb3IodmFyIGEgaW4gZSkicmVmIiE9PWEmJihuW2FdPWVbYV0pO3JldHVybiB0LnJlZlByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0IGluIHImJihuW3RdPXJbdF0pfSksbn1mdW5jdGlvbiBCdCh0KXt0PXQuc2xpY2UoKTtmb3IodmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKSxyPTA7cjx0Lmxlbmd0aDtyKyspZVt0W3JdLmlkXT10W3JdO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKSJyZWYiaW4gdFtuXSYmKHRbbl09RnQodFtuXSxlW3Rbbl0ucmVmXSkpO3JldHVybiB0fUl0LndvcmtlckNvdW50PU1hdGgubWF4KE1hdGgubWluKFJ0LDYpLDEpO3ZhciBOdD17c2V0U3R5bGU6InNldFN0eWxlIixhZGRMYXllcjoiYWRkTGF5ZXIiLHJlbW92ZUxheWVyOiJyZW1vdmVMYXllciIsc2V0UGFpbnRQcm9wZXJ0eToic2V0UGFpbnRQcm9wZXJ0eSIsc2V0TGF5b3V0UHJvcGVydHk6InNldExheW91dFByb3BlcnR5IixzZXRGaWx0ZXI6InNldEZpbHRlciIsYWRkU291cmNlOiJhZGRTb3VyY2UiLHJlbW92ZVNvdXJjZToicmVtb3ZlU291cmNlIixzZXRHZW9KU09OU291cmNlRGF0YToic2V0R2VvSlNPTlNvdXJjZURhdGEiLHNldExheWVyWm9vbVJhbmdlOiJzZXRMYXllclpvb21SYW5nZSIsc2V0TGF5ZXJQcm9wZXJ0eToic2V0TGF5ZXJQcm9wZXJ0eSIsc2V0Q2VudGVyOiJzZXRDZW50ZXIiLHNldFpvb206InNldFpvb20iLHNldEJlYXJpbmc6InNldEJlYXJpbmciLHNldFBpdGNoOiJzZXRQaXRjaCIsc2V0U3ByaXRlOiJzZXRTcHJpdGUiLHNldEdseXBoczoic2V0R2x5cGhzIixzZXRUcmFuc2l0aW9uOiJzZXRUcmFuc2l0aW9uIixzZXRMaWdodDoic2V0TGlnaHQifTtmdW5jdGlvbiBqdCh0LGUscil7ci5wdXNoKHtjb21tYW5kOk50LmFkZFNvdXJjZSxhcmdzOlt0LGVbdF1dfSl9ZnVuY3Rpb24gVnQodCxlLHIpe2UucHVzaCh7Y29tbWFuZDpOdC5yZW1vdmVTb3VyY2UsYXJnczpbdF19KSxyW3RdPSEwfWZ1bmN0aW9uIFV0KHQsZSxyLG4pe1Z0KHQscixuKSxqdCh0LGUscil9ZnVuY3Rpb24gcXQoZSxyLG4pe3ZhciBhO2ZvcihhIGluIGVbbl0paWYoZVtuXS5oYXNPd25Qcm9wZXJ0eShhKSYmImRhdGEiIT09YSYmIXQuZGVlcEVxdWFsKGVbbl1bYV0scltuXVthXSkpcmV0dXJuITE7Zm9yKGEgaW4gcltuXSlpZihyW25dLmhhc093blByb3BlcnR5KGEpJiYiZGF0YSIhPT1hJiYhdC5kZWVwRXF1YWwoZVtuXVthXSxyW25dW2FdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBIdChlLHIsbixhLGksbyl7dmFyIHM7Zm9yKHMgaW4gcj1yfHx7fSxlPWV8fHt9KWUuaGFzT3duUHJvcGVydHkocykmJih0LmRlZXBFcXVhbChlW3NdLHJbc10pfHxuLnB1c2goe2NvbW1hbmQ6byxhcmdzOlthLHMscltzXSxpXX0pKTtmb3IocyBpbiByKXIuaGFzT3duUHJvcGVydHkocykmJiFlLmhhc093blByb3BlcnR5KHMpJiYodC5kZWVwRXF1YWwoZVtzXSxyW3NdKXx8bi5wdXNoKHtjb21tYW5kOm8sYXJnczpbYSxzLHJbc10saV19KSl9ZnVuY3Rpb24gR3QodCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gWXQodCxlKXtyZXR1cm4gdFtlLmlkXT1lLHR9dmFyIFd0PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLmJveENlbGxzPVtdLGE9dGhpcy5jaXJjbGVDZWxscz1bXTt0aGlzLnhDZWxsQ291bnQ9TWF0aC5jZWlsKHQvciksdGhpcy55Q2VsbENvdW50PU1hdGguY2VpbChlL3IpO2Zvcih2YXIgaT0wO2k8dGhpcy54Q2VsbENvdW50KnRoaXMueUNlbGxDb3VudDtpKyspbi5wdXNoKFtdKSxhLnB1c2goW10pO3RoaXMuY2lyY2xlS2V5cz1bXSx0aGlzLmJveEtleXM9W10sdGhpcy5iYm94ZXM9W10sdGhpcy5jaXJjbGVzPVtdLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMueFNjYWxlPXRoaXMueENlbGxDb3VudC90LHRoaXMueVNjYWxlPXRoaXMueUNlbGxDb3VudC9lLHRoaXMuYm94VWlkPTAsdGhpcy5jaXJjbGVVaWQ9MH07ZnVuY3Rpb24gWHQoZSxyLG4sYSxpKXt2YXIgbz10LmNyZWF0ZSgpO3JldHVybiByPyh0LnNjYWxlKG8sbyxbMS9pLDEvaSwxXSksbnx8dC5yb3RhdGVaKG8sbyxhLmFuZ2xlKSk6dC5tdWx0aXBseShvLGEubGFiZWxQbGFuZU1hdHJpeCxlKSxvfWZ1bmN0aW9uIFp0KGUscixuLGEsaSl7aWYocil7dmFyIG89dC5jbG9uZShlKTtyZXR1cm4gdC5zY2FsZShvLG8sW2ksaSwxXSksbnx8dC5yb3RhdGVaKG8sbywtYS5hbmdsZSksb31yZXR1cm4gYS5nbENvb3JkTWF0cml4fWZ1bmN0aW9uIEp0KGUscil7dmFyIG49W2UueCxlLnksMCwxXTtvZShuLG4scik7dmFyIGE9blszXTtyZXR1cm57cG9pbnQ6bmV3IHQuUG9pbnQoblswXS9hLG5bMV0vYSksc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhOmF9fWZ1bmN0aW9uIEt0KHQsZSl7dmFyIHI9dFswXS90WzNdLG49dFsxXS90WzNdO3JldHVybiByPj0tZVswXSYmcjw9ZVswXSYmbj49LWVbMV0mJm48PWVbMV19ZnVuY3Rpb24gUXQoZSxyLG4sYSxpLG8scyxsKXt2YXIgYz1hP2UudGV4dFNpemVEYXRhOmUuaWNvblNpemVEYXRhLHU9dC5ldmFsdWF0ZVNpemVGb3Jab29tKGMsbi50cmFuc2Zvcm0uem9vbSksaD1bMjU2L24ud2lkdGgqMisxLDI1Ni9uLmhlaWdodCoyKzFdLGY9YT9lLnRleHQuZHluYW1pY0xheW91dFZlcnRleEFycmF5OmUuaWNvbi5keW5hbWljTGF5b3V0VmVydGV4QXJyYXk7Zi5jbGVhcigpO2Zvcih2YXIgcD1lLmxpbmVWZXJ0ZXhBcnJheSxkPWE/ZS50ZXh0LnBsYWNlZFN5bWJvbEFycmF5OmUuaWNvbi5wbGFjZWRTeW1ib2xBcnJheSxnPW4udHJhbnNmb3JtLndpZHRoL24udHJhbnNmb3JtLmhlaWdodCx2PSExLG09MDttPGQubGVuZ3RoO20rKyl7dmFyIHk9ZC5nZXQobSk7aWYoeS5oaWRkZW58fHkud3JpdGluZ01vZGU9PT10LldyaXRpbmdNb2RlLnZlcnRpY2FsJiYhdilpZSh5Lm51bUdseXBocyxmKTtlbHNle3Y9ITE7dmFyIHg9W3kuYW5jaG9yWCx5LmFuY2hvclksMCwxXTtpZih0LnRyYW5zZm9ybU1hdDQoeCx4LHIpLEt0KHgsaCkpe3ZhciBiPS41K3hbM10vbi50cmFuc2Zvcm0uY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSouNSxfPXQuZXZhbHVhdGVTaXplRm9yRmVhdHVyZShjLHUseSksdz1zP18qYjpfL2Isaz1uZXcgdC5Qb2ludCh5LmFuY2hvclgseS5hbmNob3JZKSxUPUp0KGssaSkucG9pbnQsTT17fSxBPWVlKHksdywhMSxsLHIsaSxvLGUuZ2x5cGhPZmZzZXRBcnJheSxwLGYsVCxrLE0sZyk7dj1BLnVzZVZlcnRpY2FsLChBLm5vdEVub3VnaFJvb218fHZ8fEEubmVlZHNGbGlwcGluZyYmZWUoeSx3LCEwLGwscixpLG8sZS5nbHlwaE9mZnNldEFycmF5LHAsZixULGssTSxnKS5ub3RFbm91Z2hSb29tKSYmaWUoeS5udW1HbHlwaHMsZil9ZWxzZSBpZSh5Lm51bUdseXBocyxmKX19YT9lLnRleHQuZHluYW1pY0xheW91dFZlcnRleEJ1ZmZlci51cGRhdGVEYXRhKGYpOmUuaWNvbi5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEoZil9ZnVuY3Rpb24gJHQodCxlLHIsbixhLGksbyxzLGwsYyx1LGgpe3ZhciBmPXMuZ2x5cGhTdGFydEluZGV4K3MubnVtR2x5cGhzLHA9cy5saW5lU3RhcnRJbmRleCxkPXMubGluZVN0YXJ0SW5kZXgrcy5saW5lTGVuZ3RoLGc9ZS5nZXRvZmZzZXRYKHMuZ2x5cGhTdGFydEluZGV4KSx2PWUuZ2V0b2Zmc2V0WChmLTEpLG09bmUodCpnLHIsbixhLGksbyxzLnNlZ21lbnQscCxkLGwsYyx1LGgpO2lmKCFtKXJldHVybiBudWxsO3ZhciB5PW5lKHQqdixyLG4sYSxpLG8scy5zZWdtZW50LHAsZCxsLGMsdSxoKTtyZXR1cm4geT97Zmlyc3Q6bSxsYXN0Onl9Om51bGx9ZnVuY3Rpb24gdGUoZSxyLG4sYSl7cmV0dXJuIGU9PT10LldyaXRpbmdNb2RlLmhvcml6b250YWwmJk1hdGguYWJzKG4ueS1yLnkpPk1hdGguYWJzKG4ueC1yLngpKmE/e3VzZVZlcnRpY2FsOiEwfTooZT09PXQuV3JpdGluZ01vZGUudmVydGljYWw/ci55PG4ueTpyLng+bi54KT97bmVlZHNGbGlwcGluZzohMH06bnVsbH1mdW5jdGlvbiBlZShlLHIsbixhLGksbyxzLGwsYyx1LGgsZixwLGQpe3ZhciBnLHY9ci8yNCxtPWUubGluZU9mZnNldFgqdix5PWUubGluZU9mZnNldFkqdjtpZihlLm51bUdseXBocz4xKXt2YXIgeD1lLmdseXBoU3RhcnRJbmRleCtlLm51bUdseXBocyxiPWUubGluZVN0YXJ0SW5kZXgsXz1lLmxpbmVTdGFydEluZGV4K2UubGluZUxlbmd0aCx3PSR0KHYsbCxtLHksbixoLGYsZSxjLG8scCwhMSk7aWYoIXcpcmV0dXJue25vdEVub3VnaFJvb206ITB9O3ZhciBrPUp0KHcuZmlyc3QucG9pbnQscykucG9pbnQsVD1KdCh3Lmxhc3QucG9pbnQscykucG9pbnQ7aWYoYSYmIW4pe3ZhciBNPXRlKGUud3JpdGluZ01vZGUsayxULGQpO2lmKE0pcmV0dXJuIE19Zz1bdy5maXJzdF07Zm9yKHZhciBBPWUuZ2x5cGhTdGFydEluZGV4KzE7QTx4LTE7QSsrKWcucHVzaChuZSh2KmwuZ2V0b2Zmc2V0WChBKSxtLHksbixoLGYsZS5zZWdtZW50LGIsXyxjLG8scCwhMSkpO2cucHVzaCh3Lmxhc3QpfWVsc2V7aWYoYSYmIW4pe3ZhciBTPUp0KGYsaSkucG9pbnQsRT1lLmxpbmVTdGFydEluZGV4K2Uuc2VnbWVudCsxLEw9bmV3IHQuUG9pbnQoYy5nZXR4KEUpLGMuZ2V0eShFKSksQz1KdChMLGkpLFA9Qy5zaWduZWREaXN0YW5jZUZyb21DYW1lcmE+MD9DLnBvaW50OnJlKGYsTCxTLDEsaSksTz10ZShlLndyaXRpbmdNb2RlLFMsUCxkKTtpZihPKXJldHVybiBPfXZhciB6PW5lKHYqbC5nZXRvZmZzZXRYKGUuZ2x5cGhTdGFydEluZGV4KSxtLHksbixoLGYsZS5zZWdtZW50LGUubGluZVN0YXJ0SW5kZXgsZS5saW5lU3RhcnRJbmRleCtlLmxpbmVMZW5ndGgsYyxvLHAsITEpO2lmKCF6KXJldHVybntub3RFbm91Z2hSb29tOiEwfTtnPVt6XX1mb3IodmFyIEk9MCxEPWc7STxELmxlbmd0aDtJKz0xKXt2YXIgUj1EW0ldO3QuYWRkRHluYW1pY0F0dHJpYnV0ZXModSxSLnBvaW50LFIuYW5nbGUpfXJldHVybnt9fWZ1bmN0aW9uIHJlKHQsZSxyLG4sYSl7dmFyIGk9SnQodC5hZGQodC5zdWIoZSkuX3VuaXQoKSksYSkucG9pbnQsbz1yLnN1YihpKTtyZXR1cm4gci5hZGQoby5fbXVsdChuL28ubWFnKCkpKX1mdW5jdGlvbiBuZShlLHIsbixhLGksbyxzLGwsYyx1LGgsZixwKXt2YXIgZD1hP2UtcjplK3IsZz1kPjA/MTotMSx2PTA7YSYmKGcqPS0xLHY9TWF0aC5QSSksZzwwJiYodis9TWF0aC5QSSk7Zm9yKHZhciBtPWc+MD9sK3M6bCtzKzEseT1tLHg9aSxiPWksXz0wLHc9MCxrPU1hdGguYWJzKGQpO18rdzw9azspe2lmKChtKz1nKTxsfHxtPj1jKXJldHVybiBudWxsO2lmKGI9eCx2b2lkIDA9PT0oeD1mW21dKSl7dmFyIFQ9bmV3IHQuUG9pbnQodS5nZXR4KG0pLHUuZ2V0eShtKSksTT1KdChULGgpO2lmKE0uc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhPjApeD1mW21dPU0ucG9pbnQ7ZWxzZXt2YXIgQT1tLWc7eD1yZSgwPT09Xz9vOm5ldyB0LlBvaW50KHUuZ2V0eChBKSx1LmdldHkoQSkpLFQsYixrLV8rMSxoKX19Xys9dyx3PWIuZGlzdCh4KX12YXIgUz0oay1fKS93LEU9eC5zdWIoYiksTD1FLm11bHQoUykuX2FkZChiKTtyZXR1cm4gTC5fYWRkKEUuX3VuaXQoKS5fcGVycCgpLl9tdWx0KG4qZykpLHtwb2ludDpMLGFuZ2xlOnYrTWF0aC5hdGFuMih4LnktYi55LHgueC1iLngpLHRpbGVEaXN0YW5jZTpwP3twcmV2VGlsZURpc3RhbmNlOm0tZz09PXk/MDp1LmdldHRpbGVVbml0RGlzdGFuY2VGcm9tQW5jaG9yKG0tZyksbGFzdFNlZ21lbnRWaWV3cG9ydERpc3RhbmNlOmstX306bnVsbH19V3QucHJvdG90eXBlLmtleXNMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ib3hLZXlzLmxlbmd0aCt0aGlzLmNpcmNsZUtleXMubGVuZ3RofSxXdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dGhpcy5fZm9yRWFjaENlbGwoZSxyLG4sYSx0aGlzLl9pbnNlcnRCb3hDZWxsLHRoaXMuYm94VWlkKyspLHRoaXMuYm94S2V5cy5wdXNoKHQpLHRoaXMuYmJveGVzLnB1c2goZSksdGhpcy5iYm94ZXMucHVzaChyKSx0aGlzLmJib3hlcy5wdXNoKG4pLHRoaXMuYmJveGVzLnB1c2goYSl9LFd0LnByb3RvdHlwZS5pbnNlcnRDaXJjbGU9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5fZm9yRWFjaENlbGwoZS1uLHItbixlK24scituLHRoaXMuX2luc2VydENpcmNsZUNlbGwsdGhpcy5jaXJjbGVVaWQrKyksdGhpcy5jaXJjbGVLZXlzLnB1c2godCksdGhpcy5jaXJjbGVzLnB1c2goZSksdGhpcy5jaXJjbGVzLnB1c2gociksdGhpcy5jaXJjbGVzLnB1c2gobil9LFd0LnByb3RvdHlwZS5faW5zZXJ0Qm94Q2VsbD1mdW5jdGlvbih0LGUscixuLGEsaSl7dGhpcy5ib3hDZWxsc1thXS5wdXNoKGkpfSxXdC5wcm90b3R5cGUuX2luc2VydENpcmNsZUNlbGw9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3RoaXMuY2lyY2xlQ2VsbHNbYV0ucHVzaChpKX0sV3QucHJvdG90eXBlLl9xdWVyeT1mdW5jdGlvbih0LGUscixuLGEsaSl7aWYocjwwfHx0PnRoaXMud2lkdGh8fG48MHx8ZT50aGlzLmhlaWdodClyZXR1cm4hYSYmW107dmFyIG89W107aWYodDw9MCYmZTw9MCYmdGhpcy53aWR0aDw9ciYmdGhpcy5oZWlnaHQ8PW4pe2lmKGEpcmV0dXJuITA7Zm9yKHZhciBzPTA7czx0aGlzLmJveEtleXMubGVuZ3RoO3MrKylvLnB1c2goe2tleTp0aGlzLmJveEtleXNbc10seDE6dGhpcy5iYm94ZXNbNCpzXSx5MTp0aGlzLmJib3hlc1s0KnMrMV0seDI6dGhpcy5iYm94ZXNbNCpzKzJdLHkyOnRoaXMuYmJveGVzWzQqcyszXX0pO2Zvcih2YXIgbD0wO2w8dGhpcy5jaXJjbGVLZXlzLmxlbmd0aDtsKyspe3ZhciBjPXRoaXMuY2lyY2xlc1szKmxdLHU9dGhpcy5jaXJjbGVzWzMqbCsxXSxoPXRoaXMuY2lyY2xlc1szKmwrMl07by5wdXNoKHtrZXk6dGhpcy5jaXJjbGVLZXlzW2xdLHgxOmMtaCx5MTp1LWgseDI6YytoLHkyOnUraH0pfXJldHVybiBpP28uZmlsdGVyKGkpOm99dmFyIGY9e2hpdFRlc3Q6YSxzZWVuVWlkczp7Ym94Ont9LGNpcmNsZTp7fX19O3JldHVybiB0aGlzLl9mb3JFYWNoQ2VsbCh0LGUscixuLHRoaXMuX3F1ZXJ5Q2VsbCxvLGYsaSksYT9vLmxlbmd0aD4wOm99LFd0LnByb3RvdHlwZS5fcXVlcnlDaXJjbGU9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT10LXIsbz10K3Iscz1lLXIsbD1lK3I7aWYobzwwfHxpPnRoaXMud2lkdGh8fGw8MHx8cz50aGlzLmhlaWdodClyZXR1cm4hbiYmW107dmFyIGM9W10sdT17aGl0VGVzdDpuLGNpcmNsZTp7eDp0LHk6ZSxyYWRpdXM6cn0sc2VlblVpZHM6e2JveDp7fSxjaXJjbGU6e319fTtyZXR1cm4gdGhpcy5fZm9yRWFjaENlbGwoaSxzLG8sbCx0aGlzLl9xdWVyeUNlbGxDaXJjbGUsYyx1LGEpLG4/Yy5sZW5ndGg+MDpjfSxXdC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlLHIsbixhKXtyZXR1cm4gdGhpcy5fcXVlcnkodCxlLHIsbiwhMSxhKX0sV3QucHJvdG90eXBlLmhpdFRlc3Q9ZnVuY3Rpb24odCxlLHIsbixhKXtyZXR1cm4gdGhpcy5fcXVlcnkodCxlLHIsbiwhMCxhKX0sV3QucHJvdG90eXBlLmhpdFRlc3RDaXJjbGU9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHRoaXMuX3F1ZXJ5Q2lyY2xlKHQsZSxyLCEwLG4pfSxXdC5wcm90b3R5cGUuX3F1ZXJ5Q2VsbD1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe3ZhciBsPW8uc2VlblVpZHMsYz10aGlzLmJveENlbGxzW2FdO2lmKG51bGwhPT1jKWZvcih2YXIgdT10aGlzLmJib3hlcyxoPTAsZj1jO2g8Zi5sZW5ndGg7aCs9MSl7dmFyIHA9ZltoXTtpZighbC5ib3hbcF0pe2wuYm94W3BdPSEwO3ZhciBkPTQqcDtpZih0PD11W2QrMl0mJmU8PXVbZCszXSYmcj49dVtkKzBdJiZuPj11W2QrMV0mJighc3x8cyh0aGlzLmJveEtleXNbcF0pKSl7aWYoby5oaXRUZXN0KXJldHVybiBpLnB1c2goITApLCEwO2kucHVzaCh7a2V5OnRoaXMuYm94S2V5c1twXSx4MTp1W2RdLHkxOnVbZCsxXSx4Mjp1W2QrMl0seTI6dVtkKzNdfSl9fX12YXIgZz10aGlzLmNpcmNsZUNlbGxzW2FdO2lmKG51bGwhPT1nKWZvcih2YXIgdj10aGlzLmNpcmNsZXMsbT0wLHk9ZzttPHkubGVuZ3RoO20rPTEpe3ZhciB4PXlbbV07aWYoIWwuY2lyY2xlW3hdKXtsLmNpcmNsZVt4XT0hMDt2YXIgYj0zKng7aWYodGhpcy5fY2lyY2xlQW5kUmVjdENvbGxpZGUodltiXSx2W2IrMV0sdltiKzJdLHQsZSxyLG4pJiYoIXN8fHModGhpcy5jaXJjbGVLZXlzW3hdKSkpe2lmKG8uaGl0VGVzdClyZXR1cm4gaS5wdXNoKCEwKSwhMDt2YXIgXz12W2JdLHc9dltiKzFdLGs9dltiKzJdO2kucHVzaCh7a2V5OnRoaXMuY2lyY2xlS2V5c1t4XSx4MTpfLWsseTE6dy1rLHgyOl8rayx5Mjp3K2t9KX19fX0sV3QucHJvdG90eXBlLl9xdWVyeUNlbGxDaXJjbGU9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzKXt2YXIgbD1vLmNpcmNsZSxjPW8uc2VlblVpZHMsdT10aGlzLmJveENlbGxzW2FdO2lmKG51bGwhPT11KWZvcih2YXIgaD10aGlzLmJib3hlcyxmPTAscD11O2Y8cC5sZW5ndGg7Zis9MSl7dmFyIGQ9cFtmXTtpZighYy5ib3hbZF0pe2MuYm94W2RdPSEwO3ZhciBnPTQqZDtpZih0aGlzLl9jaXJjbGVBbmRSZWN0Q29sbGlkZShsLngsbC55LGwucmFkaXVzLGhbZyswXSxoW2crMV0saFtnKzJdLGhbZyszXSkmJighc3x8cyh0aGlzLmJveEtleXNbZF0pKSlyZXR1cm4gaS5wdXNoKCEwKSwhMH19dmFyIHY9dGhpcy5jaXJjbGVDZWxsc1thXTtpZihudWxsIT09dilmb3IodmFyIG09dGhpcy5jaXJjbGVzLHk9MCx4PXY7eTx4Lmxlbmd0aDt5Kz0xKXt2YXIgYj14W3ldO2lmKCFjLmNpcmNsZVtiXSl7Yy5jaXJjbGVbYl09ITA7dmFyIF89MypiO2lmKHRoaXMuX2NpcmNsZXNDb2xsaWRlKG1bX10sbVtfKzFdLG1bXysyXSxsLngsbC55LGwucmFkaXVzKSYmKCFzfHxzKHRoaXMuY2lyY2xlS2V5c1tiXSkpKXJldHVybiBpLnB1c2goITApLCEwfX19LFd0LnByb3RvdHlwZS5fZm9yRWFjaENlbGw9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzKXtmb3IodmFyIGw9dGhpcy5fY29udmVydFRvWENlbGxDb29yZCh0KSxjPXRoaXMuX2NvbnZlcnRUb1lDZWxsQ29vcmQoZSksdT10aGlzLl9jb252ZXJ0VG9YQ2VsbENvb3JkKHIpLGg9dGhpcy5fY29udmVydFRvWUNlbGxDb29yZChuKSxmPWw7Zjw9dTtmKyspZm9yKHZhciBwPWM7cDw9aDtwKyspe3ZhciBkPXRoaXMueENlbGxDb3VudCpwK2Y7aWYoYS5jYWxsKHRoaXMsdCxlLHIsbixkLGksbyxzKSlyZXR1cm59fSxXdC5wcm90b3R5cGUuX2NvbnZlcnRUb1hDZWxsQ29vcmQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4odGhpcy54Q2VsbENvdW50LTEsTWF0aC5mbG9vcih0KnRoaXMueFNjYWxlKSkpfSxXdC5wcm90b3R5cGUuX2NvbnZlcnRUb1lDZWxsQ29vcmQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4odGhpcy55Q2VsbENvdW50LTEsTWF0aC5mbG9vcih0KnRoaXMueVNjYWxlKSkpfSxXdC5wcm90b3R5cGUuX2NpcmNsZXNDb2xsaWRlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbz1uLXQscz1hLWUsbD1yK2k7cmV0dXJuIGwqbD5vKm8rcypzfSxXdC5wcm90b3R5cGUuX2NpcmNsZUFuZFJlY3RDb2xsaWRlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe3ZhciBzPShpLW4pLzIsbD1NYXRoLmFicyh0LShuK3MpKTtpZihsPnMrcilyZXR1cm4hMTt2YXIgYz0oby1hKS8yLHU9TWF0aC5hYnMoZS0oYStjKSk7aWYodT5jK3IpcmV0dXJuITE7aWYobDw9c3x8dTw9YylyZXR1cm4hMDt2YXIgaD1sLXMsZj11LWM7cmV0dXJuIGgqaCtmKmY8PXIqcn07dmFyIGFlPW5ldyBGbG9hdDMyQXJyYXkoWy0xLzAsLTEvMCwwLC0xLzAsLTEvMCwwLC0xLzAsLTEvMCwwLC0xLzAsLTEvMCwwXSk7ZnVuY3Rpb24gaWUodCxlKXtmb3IodmFyIHI9MDtyPHQ7cisrKXt2YXIgbj1lLmxlbmd0aDtlLnJlc2l6ZShuKzQpLGUuZmxvYXQzMi5zZXQoYWUsMypuKX19ZnVuY3Rpb24gb2UodCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFdO3JldHVybiB0WzBdPXJbMF0qbityWzRdKmErclsxMl0sdFsxXT1yWzFdKm4rcls1XSphK3JbMTNdLHRbM109clszXSpuK3JbN10qYStyWzE1XSx0fXZhciBzZT1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9bmV3IFd0KHQud2lkdGgrMjAwLHQuaGVpZ2h0KzIwMCwyNSkpLHZvaWQgMD09PXImJihyPW5ldyBXdCh0LndpZHRoKzIwMCx0LmhlaWdodCsyMDAsMjUpKSx0aGlzLnRyYW5zZm9ybT10LHRoaXMuZ3JpZD1lLHRoaXMuaWdub3JlZEdyaWQ9cix0aGlzLnBpdGNoZmFjdG9yPU1hdGguY29zKHQuX3BpdGNoKSp0LmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UsdGhpcy5zY3JlZW5SaWdodEJvdW5kYXJ5PXQud2lkdGgrMTAwLHRoaXMuc2NyZWVuQm90dG9tQm91bmRhcnk9dC5oZWlnaHQrMTAwLHRoaXMuZ3JpZFJpZ2h0Qm91bmRhcnk9dC53aWR0aCsyMDAsdGhpcy5ncmlkQm90dG9tQm91bmRhcnk9dC5oZWlnaHQrMjAwfTtmdW5jdGlvbiBsZSh0LGUscil7dFtlKzRdPXI/MTowfWZ1bmN0aW9uIGNlKGUscixuKXtyZXR1cm4gcioodC5FWFRFTlQvKGUudGlsZVNpemUqTWF0aC5wb3coMixuLWUudGlsZUlELm92ZXJzY2FsZWRaKSkpfXNlLnByb3RvdHlwZS5wbGFjZUNvbGxpc2lvbkJveD1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPXRoaXMucHJvamVjdEFuZEdldFBlcnNwZWN0aXZlUmF0aW8obix0LmFuY2hvclBvaW50WCx0LmFuY2hvclBvaW50WSksbz1yKmkucGVyc3BlY3RpdmVSYXRpbyxzPXQueDEqbytpLnBvaW50LngsbD10LnkxKm8raS5wb2ludC55LGM9dC54MipvK2kucG9pbnQueCx1PXQueTIqbytpLnBvaW50Lnk7cmV0dXJuIXRoaXMuaXNJbnNpZGVHcmlkKHMsbCxjLHUpfHwhZSYmdGhpcy5ncmlkLmhpdFRlc3QocyxsLGMsdSxhKT97Ym94OltdLG9mZnNjcmVlbjohMX06e2JveDpbcyxsLGMsdV0sb2Zmc2NyZWVuOnRoaXMuaXNPZmZzY3JlZW4ocyxsLGMsdSl9fSxzZS5wcm90b3R5cGUuYXBwcm94aW1hdGVUaWxlRGlzdGFuY2U9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT1hPzE6bi90aGlzLnBpdGNoZmFjdG9yLG89dC5sYXN0U2VnbWVudFZpZXdwb3J0RGlzdGFuY2UqcjtyZXR1cm4gdC5wcmV2VGlsZURpc3RhbmNlK28rKGktMSkqbypNYXRoLmFicyhNYXRoLnNpbihlKSl9LHNlLnByb3RvdHlwZS5wbGFjZUNvbGxpc2lvbkNpcmNsZXM9ZnVuY3Rpb24oZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCl7dmFyIGQ9W10sZz10aGlzLnByb2plY3RBbmNob3IoYyxpLmFuY2hvclgsaS5hbmNob3JZKSx2PWwvMjQsbT1pLmxpbmVPZmZzZXRYKmwseT1pLmxpbmVPZmZzZXRZKmwseD1uZXcgdC5Qb2ludChpLmFuY2hvclgsaS5hbmNob3JZKSxiPSR0KHYscyxtLHksITEsSnQoeCx1KS5wb2ludCx4LGksbyx1LHt9LCEwKSxfPSExLHc9ITEsaz0hMCxUPWcucGVyc3BlY3RpdmVSYXRpbyphLE09MS8oYSpuKSxBPTAsUz0wO2ImJihBPXRoaXMuYXBwcm94aW1hdGVUaWxlRGlzdGFuY2UoYi5maXJzdC50aWxlRGlzdGFuY2UsYi5maXJzdC5hbmdsZSxNLGcuY2FtZXJhRGlzdGFuY2UsZiksUz10aGlzLmFwcHJveGltYXRlVGlsZURpc3RhbmNlKGIubGFzdC50aWxlRGlzdGFuY2UsYi5sYXN0LmFuZ2xlLE0sZy5jYW1lcmFEaXN0YW5jZSxmKSk7Zm9yKHZhciBFPTA7RTxlLmxlbmd0aDtFKz01KXt2YXIgTD1lW0VdLEM9ZVtFKzFdLFA9ZVtFKzJdLE89ZVtFKzNdO2lmKCFifHxPPC1BfHxPPlMpbGUoZSxFLCExKTtlbHNle3ZhciB6PXRoaXMucHJvamVjdFBvaW50KGMsTCxDKSxJPVAqVDtpZihkLmxlbmd0aD4wKXt2YXIgRD16LngtZFtkLmxlbmd0aC00XSxSPXoueS1kW2QubGVuZ3RoLTNdO2lmKEkqSSoyPkQqRCtSKlImJkUrODxlLmxlbmd0aCl7dmFyIEY9ZVtFKzhdO2lmKEY+LUEmJkY8Uyl7bGUoZSxFLCExKTtjb250aW51ZX19fXZhciBCPUUvNTtkLnB1c2goei54LHoueSxJLEIpLGxlKGUsRSwhMCk7dmFyIE49ei54LUksaj16LnktSSxWPXoueCtJLFU9ei55K0k7aWYoaz1rJiZ0aGlzLmlzT2Zmc2NyZWVuKE4saixWLFUpLHc9d3x8dGhpcy5pc0luc2lkZUdyaWQoTixqLFYsVSksIXImJnRoaXMuZ3JpZC5oaXRUZXN0Q2lyY2xlKHoueCx6LnksSSxwKSl7aWYoIWgpcmV0dXJue2NpcmNsZXM6W10sb2Zmc2NyZWVuOiExfTtfPSEwfX19cmV0dXJue2NpcmNsZXM6X3x8IXc/W106ZCxvZmZzY3JlZW46a319LHNlLnByb3RvdHlwZS5xdWVyeVJlbmRlcmVkU3ltYm9scz1mdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmdyaWQua2V5c0xlbmd0aCgpJiYwPT09dGhpcy5pZ25vcmVkR3JpZC5rZXlzTGVuZ3RoKCkpcmV0dXJue307Zm9yKHZhciByPVtdLG49MS8wLGE9MS8wLGk9LTEvMCxvPS0xLzAscz0wLGw9ZTtzPGwubGVuZ3RoO3MrPTEpe3ZhciBjPWxbc10sdT1uZXcgdC5Qb2ludChjLngrMTAwLGMueSsxMDApO249TWF0aC5taW4obix1LngpLGE9TWF0aC5taW4oYSx1LnkpLGk9TWF0aC5tYXgoaSx1LngpLG89TWF0aC5tYXgobyx1LnkpLHIucHVzaCh1KX1mb3IodmFyIGg9e30sZj17fSxwPTAsZD10aGlzLmdyaWQucXVlcnkobixhLGksbykuY29uY2F0KHRoaXMuaWdub3JlZEdyaWQucXVlcnkobixhLGksbykpO3A8ZC5sZW5ndGg7cCs9MSl7dmFyIGc9ZFtwXSx2PWcua2V5O2lmKHZvaWQgMD09PWhbdi5idWNrZXRJbnN0YW5jZUlkXSYmKGhbdi5idWNrZXRJbnN0YW5jZUlkXT17fSksIWhbdi5idWNrZXRJbnN0YW5jZUlkXVt2LmZlYXR1cmVJbmRleF0pe3ZhciBtPVtuZXcgdC5Qb2ludChnLngxLGcueTEpLG5ldyB0LlBvaW50KGcueDIsZy55MSksbmV3IHQuUG9pbnQoZy54MixnLnkyKSxuZXcgdC5Qb2ludChnLngxLGcueTIpXTt0LnBvbHlnb25JbnRlcnNlY3RzUG9seWdvbihyLG0pJiYoaFt2LmJ1Y2tldEluc3RhbmNlSWRdW3YuZmVhdHVyZUluZGV4XT0hMCx2b2lkIDA9PT1mW3YuYnVja2V0SW5zdGFuY2VJZF0mJihmW3YuYnVja2V0SW5zdGFuY2VJZF09W10pLGZbdi5idWNrZXRJbnN0YW5jZUlkXS5wdXNoKHYuZmVhdHVyZUluZGV4KSl9fXJldHVybiBmfSxzZS5wcm90b3R5cGUuaW5zZXJ0Q29sbGlzaW9uQm94PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9e2J1Y2tldEluc3RhbmNlSWQ6cixmZWF0dXJlSW5kZXg6bixjb2xsaXNpb25Hcm91cElEOmF9OyhlP3RoaXMuaWdub3JlZEdyaWQ6dGhpcy5ncmlkKS5pbnNlcnQoaSx0WzBdLHRbMV0sdFsyXSx0WzNdKX0sc2UucHJvdG90eXBlLmluc2VydENvbGxpc2lvbkNpcmNsZXM9ZnVuY3Rpb24odCxlLHIsbixhKXtmb3IodmFyIGk9ZT90aGlzLmlnbm9yZWRHcmlkOnRoaXMuZ3JpZCxvPXtidWNrZXRJbnN0YW5jZUlkOnIsZmVhdHVyZUluZGV4Om4sY29sbGlzaW9uR3JvdXBJRDphfSxzPTA7czx0Lmxlbmd0aDtzKz00KWkuaW5zZXJ0Q2lyY2xlKG8sdFtzXSx0W3MrMV0sdFtzKzJdKX0sc2UucHJvdG90eXBlLnByb2plY3RBbmNob3I9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVtlLHIsMCwxXTtyZXR1cm4gb2UobixuLHQpLHtwZXJzcGVjdGl2ZVJhdGlvOi41K3RoaXMudHJhbnNmb3JtLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UvblszXSouNSxjYW1lcmFEaXN0YW5jZTpuWzNdfX0sc2UucHJvdG90eXBlLnByb2plY3RQb2ludD1mdW5jdGlvbihlLHIsbil7dmFyIGE9W3IsbiwwLDFdO3JldHVybiBvZShhLGEsZSksbmV3IHQuUG9pbnQoKGFbMF0vYVszXSsxKS8yKnRoaXMudHJhbnNmb3JtLndpZHRoKzEwMCwoLWFbMV0vYVszXSsxKS8yKnRoaXMudHJhbnNmb3JtLmhlaWdodCsxMDApfSxzZS5wcm90b3R5cGUucHJvamVjdEFuZEdldFBlcnNwZWN0aXZlUmF0aW89ZnVuY3Rpb24oZSxyLG4pe3ZhciBhPVtyLG4sMCwxXTtyZXR1cm4gb2UoYSxhLGUpLHtwb2ludDpuZXcgdC5Qb2ludCgoYVswXS9hWzNdKzEpLzIqdGhpcy50cmFuc2Zvcm0ud2lkdGgrMTAwLCgtYVsxXS9hWzNdKzEpLzIqdGhpcy50cmFuc2Zvcm0uaGVpZ2h0KzEwMCkscGVyc3BlY3RpdmVSYXRpbzouNSt0aGlzLnRyYW5zZm9ybS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlL2FbM10qLjV9fSxzZS5wcm90b3R5cGUuaXNPZmZzY3JlZW49ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHI8MTAwfHx0Pj10aGlzLnNjcmVlblJpZ2h0Qm91bmRhcnl8fG48MTAwfHxlPnRoaXMuc2NyZWVuQm90dG9tQm91bmRhcnl9LHNlLnByb3RvdHlwZS5pc0luc2lkZUdyaWQ9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHI+PTAmJnQ8dGhpcy5ncmlkUmlnaHRCb3VuZGFyeSYmbj49MCYmZTx0aGlzLmdyaWRCb3R0b21Cb3VuZGFyeX07dmFyIHVlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMub3BhY2l0eT10P01hdGgubWF4KDAsTWF0aC5taW4oMSx0Lm9wYWNpdHkrKHQucGxhY2VkP2U6LWUpKSk6biYmcj8xOjAsdGhpcy5wbGFjZWQ9cn07dWUucHJvdG90eXBlLmlzSGlkZGVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm9wYWNpdHkmJiF0aGlzLnBsYWNlZH07dmFyIGhlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dGhpcy50ZXh0PW5ldyB1ZSh0P3QudGV4dDpudWxsLGUscixhKSx0aGlzLmljb249bmV3IHVlKHQ/dC5pY29uOm51bGwsZSxuLGEpfTtoZS5wcm90b3R5cGUuaXNIaWRkZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0LmlzSGlkZGVuKCkmJnRoaXMuaWNvbi5pc0hpZGRlbigpfTt2YXIgZmU9ZnVuY3Rpb24odCxlLHIpe3RoaXMudGV4dD10LHRoaXMuaWNvbj1lLHRoaXMuc2tpcEZhZGU9cn0scGU9ZnVuY3Rpb24odCxlLHIsbixhKXt0aGlzLmJ1Y2tldEluc3RhbmNlSWQ9dCx0aGlzLmZlYXR1cmVJbmRleD1lLHRoaXMuc291cmNlTGF5ZXJJbmRleD1yLHRoaXMuYnVja2V0SW5kZXg9bix0aGlzLnRpbGVJRD1hfSxkZT1mdW5jdGlvbih0KXt0aGlzLmNyb3NzU291cmNlQ29sbGlzaW9ucz10LHRoaXMubWF4R3JvdXBJRD0wLHRoaXMuY29sbGlzaW9uR3JvdXBzPXt9fTtmdW5jdGlvbiBnZShlLHIsbixhLGkpe3ZhciBvPXQuZ2V0QW5jaG9yQWxpZ25tZW50KGUpLHM9LShvLmhvcml6b250YWxBbGlnbi0uNSkqcixsPS0oby52ZXJ0aWNhbEFsaWduLS41KSpuLGM9dC5ldmFsdWF0ZVJhZGlhbE9mZnNldChlLGEpO3JldHVybiBuZXcgdC5Qb2ludChzK2NbMF0qaSxsK2NbMV0qaSl9ZGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtpZih0aGlzLmNyb3NzU291cmNlQ29sbGlzaW9ucylyZXR1cm57SUQ6MCxwcmVkaWNhdGU6bnVsbH07aWYoIXRoaXMuY29sbGlzaW9uR3JvdXBzW3RdKXt2YXIgZT0rK3RoaXMubWF4R3JvdXBJRDt0aGlzLmNvbGxpc2lvbkdyb3Vwc1t0XT17SUQ6ZSxwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sbGlzaW9uR3JvdXBJRD09PWV9fX1yZXR1cm4gdGhpcy5jb2xsaXNpb25Hcm91cHNbdF19O3ZhciB2ZT1mdW5jdGlvbih0LGUscixuKXt0aGlzLnRyYW5zZm9ybT10LmNsb25lKCksdGhpcy5jb2xsaXNpb25JbmRleD1uZXcgc2UodGhpcy50cmFuc2Zvcm0pLHRoaXMucGxhY2VtZW50cz17fSx0aGlzLm9wYWNpdGllcz17fSx0aGlzLnZhcmlhYmxlT2Zmc2V0cz17fSx0aGlzLnN0YWxlPSExLHRoaXMuY29tbWl0VGltZT0wLHRoaXMuZmFkZUR1cmF0aW9uPWUsdGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YT17fSx0aGlzLmNvbGxpc2lvbkdyb3Vwcz1uZXcgZGUociksdGhpcy5wcmV2UGxhY2VtZW50PW4sbiYmKG4ucHJldlBsYWNlbWVudD12b2lkIDApLHRoaXMucGxhY2VkT3JpZW50YXRpb25zPXt9fTtmdW5jdGlvbiBtZSh0LGUscixuLGEpe3QuZW1wbGFjZUJhY2soZT8xOjAscj8xOjAsbnx8MCxhfHwwKSx0LmVtcGxhY2VCYWNrKGU/MTowLHI/MTowLG58fDAsYXx8MCksdC5lbXBsYWNlQmFjayhlPzE6MCxyPzE6MCxufHwwLGF8fDApLHQuZW1wbGFjZUJhY2soZT8xOjAscj8xOjAsbnx8MCxhfHwwKX12ZS5wcm90b3R5cGUucGxhY2VMYXllclRpbGU9ZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGk9ci5nZXRCdWNrZXQoZSksbz1yLmxhdGVzdEZlYXR1cmVJbmRleDtpZihpJiZvJiZlLmlkPT09aS5sYXllcklkc1swXSl7dmFyIHM9ci5jb2xsaXNpb25Cb3hBcnJheSxsPWkubGF5ZXJzWzBdLmxheW91dCxjPU1hdGgucG93KDIsdGhpcy50cmFuc2Zvcm0uem9vbS1yLnRpbGVJRC5vdmVyc2NhbGVkWiksdT1yLnRpbGVTaXplL3QuRVhURU5ULGg9dGhpcy50cmFuc2Zvcm0uY2FsY3VsYXRlUG9zTWF0cml4KHIudGlsZUlELnRvVW53cmFwcGVkKCkpLGY9WHQoaCwibWFwIj09PWwuZ2V0KCJ0ZXh0LXBpdGNoLWFsaWdubWVudCIpLCJtYXAiPT09bC5nZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50IiksdGhpcy50cmFuc2Zvcm0sY2UociwxLHRoaXMudHJhbnNmb3JtLnpvb20pKSxwPVh0KGgsIm1hcCI9PT1sLmdldCgiaWNvbi1waXRjaC1hbGlnbm1lbnQiKSwibWFwIj09PWwuZ2V0KCJpY29uLXJvdGF0aW9uLWFsaWdubWVudCIpLHRoaXMudHJhbnNmb3JtLGNlKHIsMSx0aGlzLnRyYW5zZm9ybS56b29tKSk7dGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YVtpLmJ1Y2tldEluc3RhbmNlSWRdPW5ldyBwZShpLmJ1Y2tldEluc3RhbmNlSWQsbyxpLnNvdXJjZUxheWVySW5kZXgsaS5pbmRleCxyLnRpbGVJRCksdGhpcy5wbGFjZUxheWVyQnVja2V0KGksaCxmLHAsYyx1LG4sci5ob2xkaW5nRm9yRmFkZSgpLGEscyl9fSx2ZS5wcm90b3R5cGUuYXR0ZW1wdEFuY2hvclBsYWNlbWVudD1mdW5jdGlvbihlLHIsbixhLGksbyxzLGwsYyx1LGgsZixwLGQsZyl7dmFyIHYsbT1nZShlLG4sYSxpLG8pLHk9dGhpcy5jb2xsaXNpb25JbmRleC5wbGFjZUNvbGxpc2lvbkJveChmdW5jdGlvbihlLHIsbixhLGksbyl7dmFyIHM9ZS54MSxsPWUueDIsYz1lLnkxLHU9ZS55MixoPWUuYW5jaG9yUG9pbnRYLGY9ZS5hbmNob3JQb2ludFkscD1uZXcgdC5Qb2ludChyLG4pO3JldHVybiBhJiZwLl9yb3RhdGUoaT9vOi1vKSx7eDE6cytwLngseTE6YytwLnkseDI6bCtwLngseTI6dStwLnksYW5jaG9yUG9pbnRYOmgsYW5jaG9yUG9pbnRZOmZ9fShyLG0ueCxtLnkscyxsLHRoaXMudHJhbnNmb3JtLmFuZ2xlKSxmLGMsdSxoLnByZWRpY2F0ZSk7aWYoeS5ib3gubGVuZ3RoPjApcmV0dXJuIHRoaXMucHJldlBsYWNlbWVudCYmdGhpcy5wcmV2UGxhY2VtZW50LnZhcmlhYmxlT2Zmc2V0c1twLmNyb3NzVGlsZUlEXSYmdGhpcy5wcmV2UGxhY2VtZW50LnBsYWNlbWVudHNbcC5jcm9zc1RpbGVJRF0mJnRoaXMucHJldlBsYWNlbWVudC5wbGFjZW1lbnRzW3AuY3Jvc3NUaWxlSURdLnRleHQmJih2PXRoaXMucHJldlBsYWNlbWVudC52YXJpYWJsZU9mZnNldHNbcC5jcm9zc1RpbGVJRF0uYW5jaG9yKSx0aGlzLnZhcmlhYmxlT2Zmc2V0c1twLmNyb3NzVGlsZUlEXT17cmFkaWFsT2Zmc2V0Omksd2lkdGg6bixoZWlnaHQ6YSxhbmNob3I6ZSx0ZXh0Qm94U2NhbGU6byxwcmV2QW5jaG9yOnZ9LHRoaXMubWFya1VzZWRKdXN0aWZpY2F0aW9uKGQsZSxwLGcpLGQuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmKHRoaXMubWFya1VzZWRPcmllbnRhdGlvbihkLGcscCksdGhpcy5wbGFjZWRPcmllbnRhdGlvbnNbcC5jcm9zc1RpbGVJRF09ZykseX0sdmUucHJvdG90eXBlLnBsYWNlTGF5ZXJCdWNrZXQ9ZnVuY3Rpb24oZSxyLG4sYSxpLG8scyxsLGMsdSl7dmFyIGg9dGhpcyxmPWUubGF5ZXJzWzBdLmxheW91dCxwPXQuZXZhbHVhdGVTaXplRm9yWm9vbShlLnRleHRTaXplRGF0YSx0aGlzLnRyYW5zZm9ybS56b29tKSxkPWYuZ2V0KCJ0ZXh0LW9wdGlvbmFsIiksZz1mLmdldCgiaWNvbi1vcHRpb25hbCIpLHY9Zi5nZXQoInRleHQtYWxsb3ctb3ZlcmxhcCIpLG09Zi5nZXQoImljb24tYWxsb3ctb3ZlcmxhcCIpLHk9diYmKG18fCFlLmhhc0ljb25EYXRhKCl8fGcpLHg9bSYmKHZ8fCFlLmhhc1RleHREYXRhKCl8fGQpLGI9dGhpcy5jb2xsaXNpb25Hcm91cHMuZ2V0KGUuc291cmNlSUQpLF89Im1hcCI9PT1mLmdldCgidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiKSx3PSJtYXAiPT09Zi5nZXQoInRleHQtcGl0Y2gtYWxpZ25tZW50Iiksaz0idmlld3BvcnQteSI9PT1mLmdldCgic3ltYm9sLXotb3JkZXIiKTshZS5jb2xsaXNpb25BcnJheXMmJnUmJmUuZGVzZXJpYWxpemVDb2xsaXNpb25Cb3hlcyh1KTt2YXIgVD1mdW5jdGlvbihhLHUpe2lmKCFjW2EuY3Jvc3NUaWxlSURdKWlmKGwpaC5wbGFjZW1lbnRzW2EuY3Jvc3NUaWxlSURdPW5ldyBmZSghMSwhMSwhMSk7ZWxzZXt2YXIgbSxrPSExLFQ9ITEsTT0hMCxBPXtib3g6bnVsbCxvZmZzY3JlZW46bnVsbH0sUz17Ym94Om51bGwsb2Zmc2NyZWVuOm51bGx9LEU9bnVsbCxMPW51bGwsQz0wLFA9MCxPPTA7dS50ZXh0RmVhdHVyZUluZGV4JiYoQz11LnRleHRGZWF0dXJlSW5kZXgpLHUudmVydGljYWxUZXh0RmVhdHVyZUluZGV4JiYoUD11LnZlcnRpY2FsVGV4dEZlYXR1cmVJbmRleCk7dmFyIHo9dS50ZXh0Qm94O2lmKHope3ZhciBJPWZ1bmN0aW9uKHIpe3ZhciBuPXQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbDtpZihlLmFsbG93VmVydGljYWxQbGFjZW1lbnQmJiFyJiZoLnByZXZQbGFjZW1lbnQpe3ZhciBpPWgucHJldlBsYWNlbWVudC5wbGFjZWRPcmllbnRhdGlvbnNbYS5jcm9zc1RpbGVJRF07aSYmKGgucGxhY2VkT3JpZW50YXRpb25zW2EuY3Jvc3NUaWxlSURdPWksbj1pLGgubWFya1VzZWRPcmllbnRhdGlvbihlLG4sYSkpfXJldHVybiBufSxEPWZ1bmN0aW9uKHIsbil7aWYoZS5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZhLm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcz4wJiZ1LnZlcnRpY2FsVGV4dEJveClmb3IodmFyIGk9MCxvPWUud3JpdGluZ01vZGVzO2k8by5sZW5ndGgmJihvW2ldPT09dC5Xcml0aW5nTW9kZS52ZXJ0aWNhbD8oQT1uKCksUz1BKTpBPXIoKSwhKEEmJkEuYm94JiZBLmJveC5sZW5ndGgpKTtpKz0xKTtlbHNlIEE9cigpfTtpZihmLmdldCgidGV4dC12YXJpYWJsZS1hbmNob3IiKSl7dmFyIFI9Zi5nZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIik7aWYoaC5wcmV2UGxhY2VtZW50JiZoLnByZXZQbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzW2EuY3Jvc3NUaWxlSURdKXt2YXIgRj1oLnByZXZQbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzW2EuY3Jvc3NUaWxlSURdO1IuaW5kZXhPZihGLmFuY2hvcik+MCYmKFI9Ui5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1GLmFuY2hvcn0pKS51bnNoaWZ0KEYuYW5jaG9yKX12YXIgQj1mdW5jdGlvbih0LG4pe2Zvcih2YXIgaT10LngyLXQueDEscz10LnkyLXQueTEsbD1hLnRleHRCb3hTY2FsZSxjPXtib3g6W10sb2Zmc2NyZWVuOiExfSx1PXY/MipSLmxlbmd0aDpSLmxlbmd0aCxmPTA7Zjx1OysrZil7dmFyIHA9UltmJVIubGVuZ3RoXSxkPWY+PVIubGVuZ3RoO2lmKChjPWguYXR0ZW1wdEFuY2hvclBsYWNlbWVudChwLHQsaSxzLGEucmFkaWFsVGV4dE9mZnNldCxsLF8sdyxvLHIsYixkLGEsZSxuKSkmJmMuYm94JiZjLmJveC5sZW5ndGgpe2s9ITA7YnJlYWt9fXJldHVybiBjfTtEKGZ1bmN0aW9uKCl7cmV0dXJuIEIoeix0LldyaXRpbmdNb2RlLmhvcml6b250YWwpfSxmdW5jdGlvbigpe3ZhciByPXUudmVydGljYWxUZXh0Qm94LG49QSYmQS5ib3gmJkEuYm94Lmxlbmd0aDtyZXR1cm4gZS5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiYhbiYmYS5udW1WZXJ0aWNhbEdseXBoVmVydGljZXM+MCYmcj9CKHIsdC5Xcml0aW5nTW9kZS52ZXJ0aWNhbCk6e2JveDpudWxsLG9mZnNjcmVlbjpudWxsfX0pLEEmJihrPUEuYm94LE09QS5vZmZzY3JlZW4pO3ZhciBOPUkoQSYmQS5ib3gpO2lmKCFrJiZoLnByZXZQbGFjZW1lbnQpe3ZhciBqPWgucHJldlBsYWNlbWVudC52YXJpYWJsZU9mZnNldHNbYS5jcm9zc1RpbGVJRF07aiYmKGgudmFyaWFibGVPZmZzZXRzW2EuY3Jvc3NUaWxlSURdPWosaC5tYXJrVXNlZEp1c3RpZmljYXRpb24oZSxqLmFuY2hvcixhLE4pKX19ZWxzZXt2YXIgVj1mdW5jdGlvbih0LG4pe3ZhciBpPWguY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25Cb3godCxmLmdldCgidGV4dC1hbGxvdy1vdmVybGFwIiksbyxyLGIucHJlZGljYXRlKTtyZXR1cm4gaSYmaS5ib3gmJmkuYm94Lmxlbmd0aCYmKGgubWFya1VzZWRPcmllbnRhdGlvbihlLG4sYSksaC5wbGFjZWRPcmllbnRhdGlvbnNbYS5jcm9zc1RpbGVJRF09biksaX07RChmdW5jdGlvbigpe3JldHVybiBWKHosdC5Xcml0aW5nTW9kZS5ob3Jpem9udGFsKX0sZnVuY3Rpb24oKXt2YXIgcj11LnZlcnRpY2FsVGV4dEJveDtyZXR1cm4gZS5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZhLm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcz4wJiZyP1Yocix0LldyaXRpbmdNb2RlLnZlcnRpY2FsKTp7Ym94Om51bGwsb2Zmc2NyZWVuOm51bGx9fSksSShBJiZBLmJveCYmQS5ib3gubGVuZ3RoKX19az0obT1BKSYmbS5ib3gmJm0uYm94Lmxlbmd0aD4wLE09bSYmbS5vZmZzY3JlZW47dmFyIFU9dS50ZXh0Q2lyY2xlcztpZihVKXt2YXIgcT1lLnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KGEuY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4KSxIPXQuZXZhbHVhdGVTaXplRm9yRmVhdHVyZShlLnRleHRTaXplRGF0YSxwLHEpO0U9aC5jb2xsaXNpb25JbmRleC5wbGFjZUNvbGxpc2lvbkNpcmNsZXMoVSxmLmdldCgidGV4dC1hbGxvdy1vdmVybGFwIiksaSxvLHEsZS5saW5lVmVydGV4QXJyYXksZS5nbHlwaE9mZnNldEFycmF5LEgscixuLHMsdyxiLnByZWRpY2F0ZSksaz1mLmdldCgidGV4dC1hbGxvdy1vdmVybGFwIil8fEUuY2lyY2xlcy5sZW5ndGg+MCxNPU0mJkUub2Zmc2NyZWVufXUuaWNvbkZlYXR1cmVJbmRleCYmKE89dS5pY29uRmVhdHVyZUluZGV4KSx1Lmljb25Cb3gmJihUPShMPWguY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25Cb3godS5pY29uQm94LGYuZ2V0KCJpY29uLWFsbG93LW92ZXJsYXAiKSxvLHIsYi5wcmVkaWNhdGUpKS5ib3gubGVuZ3RoPjAsTT1NJiZMLm9mZnNjcmVlbik7dmFyIEc9ZHx8MD09PWEubnVtSG9yaXpvbnRhbEdseXBoVmVydGljZXMmJjA9PT1hLm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcyxZPWd8fDA9PT1hLm51bUljb25WZXJ0aWNlcztHfHxZP1k/R3x8KFQ9VCYmayk6az1UJiZrOlQ9az1UJiZrLGsmJm0mJm0uYm94JiYoUyYmUy5ib3gmJlA/aC5jb2xsaXNpb25JbmRleC5pbnNlcnRDb2xsaXNpb25Cb3gobS5ib3gsZi5nZXQoInRleHQtaWdub3JlLXBsYWNlbWVudCIpLGUuYnVja2V0SW5zdGFuY2VJZCxQLGIuSUQpOmguY29sbGlzaW9uSW5kZXguaW5zZXJ0Q29sbGlzaW9uQm94KG0uYm94LGYuZ2V0KCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnQiKSxlLmJ1Y2tldEluc3RhbmNlSWQsQyxiLklEKSksVCYmTCYmaC5jb2xsaXNpb25JbmRleC5pbnNlcnRDb2xsaXNpb25Cb3goTC5ib3gsZi5nZXQoImljb24taWdub3JlLXBsYWNlbWVudCIpLGUuYnVja2V0SW5zdGFuY2VJZCxPLGIuSUQpLGsmJkUmJmguY29sbGlzaW9uSW5kZXguaW5zZXJ0Q29sbGlzaW9uQ2lyY2xlcyhFLmNpcmNsZXMsZi5nZXQoInRleHQtaWdub3JlLXBsYWNlbWVudCIpLGUuYnVja2V0SW5zdGFuY2VJZCxDLGIuSUQpLGgucGxhY2VtZW50c1thLmNyb3NzVGlsZUlEXT1uZXcgZmUoa3x8eSxUfHx4LE18fGUuanVzdFJlbG9hZGVkKSxjW2EuY3Jvc3NUaWxlSURdPSEwfX07aWYoaylmb3IodmFyIE09ZS5nZXRTb3J0ZWRTeW1ib2xJbmRleGVzKHRoaXMudHJhbnNmb3JtLmFuZ2xlKSxBPU0ubGVuZ3RoLTE7QT49MDstLUEpe3ZhciBTPU1bQV07VChlLnN5bWJvbEluc3RhbmNlcy5nZXQoUyksZS5jb2xsaXNpb25BcnJheXNbU10pfWVsc2UgZm9yKHZhciBFPTA7RTxlLnN5bWJvbEluc3RhbmNlcy5sZW5ndGg7KytFKVQoZS5zeW1ib2xJbnN0YW5jZXMuZ2V0KEUpLGUuY29sbGlzaW9uQXJyYXlzW0VdKTtlLmp1c3RSZWxvYWRlZD0hMX0sdmUucHJvdG90eXBlLm1hcmtVc2VkSnVzdGlmaWNhdGlvbj1mdW5jdGlvbihlLHIsbixhKXt2YXIgaSxvPXtsZWZ0Om4ubGVmdEp1c3RpZmllZFRleHRTeW1ib2xJbmRleCxjZW50ZXI6bi5jZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgscmlnaHQ6bi5yaWdodEp1c3RpZmllZFRleHRTeW1ib2xJbmRleH07aT1hPT09dC5Xcml0aW5nTW9kZS52ZXJ0aWNhbD9uLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4Om9bdC5nZXRBbmNob3JKdXN0aWZpY2F0aW9uKHIpXTtmb3IodmFyIHM9MCxsPVtuLmxlZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsbi5jZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsbi5yaWdodEp1c3RpZmllZFRleHRTeW1ib2xJbmRleCxuLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4XTtzPGwubGVuZ3RoO3MrPTEpe3ZhciBjPWxbc107Yz49MCYmKGUudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQoYykuY3Jvc3NUaWxlSUQ9aT49MCYmYyE9PWk/MDpuLmNyb3NzVGlsZUlEKX19LHZlLnByb3RvdHlwZS5tYXJrVXNlZE9yaWVudGF0aW9uPWZ1bmN0aW9uKGUscixuKXtmb3IodmFyIGE9cj09PXQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbHx8cj09PXQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbE9ubHk/cjowLGk9cj09PXQuV3JpdGluZ01vZGUudmVydGljYWw/cjowLG89MCxzPVtuLmxlZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsbi5jZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsbi5yaWdodEp1c3RpZmllZFRleHRTeW1ib2xJbmRleF07bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1zW29dO2UudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQobCkucGxhY2VkT3JpZW50YXRpb249YX1uLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4JiYoZS50ZXh0LnBsYWNlZFN5bWJvbEFycmF5LmdldChuLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4KS5wbGFjZWRPcmllbnRhdGlvbj1pKX0sdmUucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbih0KXt0aGlzLmNvbW1pdFRpbWU9dDt2YXIgZT10aGlzLnByZXZQbGFjZW1lbnQscj0hMSxuPWUmJjAhPT10aGlzLmZhZGVEdXJhdGlvbj8odGhpcy5jb21taXRUaW1lLWUuY29tbWl0VGltZSkvdGhpcy5mYWRlRHVyYXRpb246MSxhPWU/ZS5vcGFjaXRpZXM6e30saT1lP2UudmFyaWFibGVPZmZzZXRzOnt9LG89ZT9lLnBsYWNlZE9yaWVudGF0aW9uczp7fTtmb3IodmFyIHMgaW4gdGhpcy5wbGFjZW1lbnRzKXt2YXIgbD10aGlzLnBsYWNlbWVudHNbc10sYz1hW3NdO2M/KHRoaXMub3BhY2l0aWVzW3NdPW5ldyBoZShjLG4sbC50ZXh0LGwuaWNvbikscj1yfHxsLnRleHQhPT1jLnRleHQucGxhY2VkfHxsLmljb24hPT1jLmljb24ucGxhY2VkKToodGhpcy5vcGFjaXRpZXNbc109bmV3IGhlKG51bGwsbixsLnRleHQsbC5pY29uLGwuc2tpcEZhZGUpLHI9cnx8bC50ZXh0fHxsLmljb24pfWZvcih2YXIgdSBpbiBhKXt2YXIgaD1hW3VdO2lmKCF0aGlzLm9wYWNpdGllc1t1XSl7dmFyIGY9bmV3IGhlKGgsbiwhMSwhMSk7Zi5pc0hpZGRlbigpfHwodGhpcy5vcGFjaXRpZXNbdV09ZixyPXJ8fGgudGV4dC5wbGFjZWR8fGguaWNvbi5wbGFjZWQpfX1mb3IodmFyIHAgaW4gaSl0aGlzLnZhcmlhYmxlT2Zmc2V0c1twXXx8IXRoaXMub3BhY2l0aWVzW3BdfHx0aGlzLm9wYWNpdGllc1twXS5pc0hpZGRlbigpfHwodGhpcy52YXJpYWJsZU9mZnNldHNbcF09aVtwXSk7Zm9yKHZhciBkIGluIG8pdGhpcy5wbGFjZWRPcmllbnRhdGlvbnNbZF18fCF0aGlzLm9wYWNpdGllc1tkXXx8dGhpcy5vcGFjaXRpZXNbZF0uaXNIaWRkZW4oKXx8KHRoaXMucGxhY2VkT3JpZW50YXRpb25zW2RdPW9bZF0pO3I/dGhpcy5sYXN0UGxhY2VtZW50Q2hhbmdlVGltZT10OiJudW1iZXIiIT10eXBlb2YgdGhpcy5sYXN0UGxhY2VtZW50Q2hhbmdlVGltZSYmKHRoaXMubGFzdFBsYWNlbWVudENoYW5nZVRpbWU9ZT9lLmxhc3RQbGFjZW1lbnRDaGFuZ2VUaW1lOnQpfSx2ZS5wcm90b3R5cGUudXBkYXRlTGF5ZXJPcGFjaXRpZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9e30sbj0wLGE9ZTtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl0sbz1pLmdldEJ1Y2tldCh0KTtvJiZpLmxhdGVzdEZlYXR1cmVJbmRleCYmdC5pZD09PW8ubGF5ZXJJZHNbMF0mJnRoaXMudXBkYXRlQnVja2V0T3BhY2l0aWVzKG8scixpLmNvbGxpc2lvbkJveEFycmF5KX19LHZlLnByb3RvdHlwZS51cGRhdGVCdWNrZXRPcGFjaXRpZXM9ZnVuY3Rpb24oZSxyLG4pe2UuaGFzVGV4dERhdGEoKSYmZS50ZXh0Lm9wYWNpdHlWZXJ0ZXhBcnJheS5jbGVhcigpLGUuaGFzSWNvbkRhdGEoKSYmZS5pY29uLm9wYWNpdHlWZXJ0ZXhBcnJheS5jbGVhcigpLGUuaGFzQ29sbGlzaW9uQm94RGF0YSgpJiZlLmNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheS5jbGVhcigpLGUuaGFzQ29sbGlzaW9uQ2lyY2xlRGF0YSgpJiZlLmNvbGxpc2lvbkNpcmNsZS5jb2xsaXNpb25WZXJ0ZXhBcnJheS5jbGVhcigpO3ZhciBhPWUubGF5ZXJzWzBdLmxheW91dCxpPW5ldyBoZShudWxsLDAsITEsITEsITApLG89YS5nZXQoInRleHQtYWxsb3ctb3ZlcmxhcCIpLHM9YS5nZXQoImljb24tYWxsb3ctb3ZlcmxhcCIpLGw9YS5nZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIiksYz0ibWFwIj09PWEuZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCIpLHU9Im1hcCI9PT1hLmdldCgidGV4dC1waXRjaC1hbGlnbm1lbnQiKSxoPW5ldyBoZShudWxsLDAsbyYmKHN8fCFlLmhhc0ljb25EYXRhKCl8fGEuZ2V0KCJpY29uLW9wdGlvbmFsIikpLHMmJihvfHwhZS5oYXNUZXh0RGF0YSgpfHxhLmdldCgidGV4dC1vcHRpb25hbCIpKSwhMCk7IWUuY29sbGlzaW9uQXJyYXlzJiZuJiYoZS5oYXNDb2xsaXNpb25Cb3hEYXRhKCl8fGUuaGFzQ29sbGlzaW9uQ2lyY2xlRGF0YSgpKSYmZS5kZXNlcmlhbGl6ZUNvbGxpc2lvbkJveGVzKG4pO2Zvcih2YXIgZj0wO2Y8ZS5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoO2YrKyl7dmFyIHA9ZS5zeW1ib2xJbnN0YW5jZXMuZ2V0KGYpLGQ9cC5udW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlcyxnPXAubnVtVmVydGljYWxHbHlwaFZlcnRpY2VzLHY9cC5jcm9zc1RpbGVJRCxtPXJbdl0seT10aGlzLm9wYWNpdGllc1t2XTttP3k9aTp5fHwoeT1oLHRoaXMub3BhY2l0aWVzW3ZdPXkpLHJbdl09ITA7dmFyIHg9ZD4wfHxnPjAsYj1wLm51bUljb25WZXJ0aWNlcz4wO2lmKHgpe2Zvcih2YXIgXz1NZSh5LnRleHQpLHc9KGQrZykvNCxrPTA7azx3O2srKyllLnRleHQub3BhY2l0eVZlcnRleEFycmF5LmVtcGxhY2VCYWNrKF8pO3ZhciBUPXkudGV4dC5pc0hpZGRlbigpPzE6MCxNPXRoaXMucGxhY2VkT3JpZW50YXRpb25zW3AuY3Jvc3NUaWxlSURdLEE9TT09PXQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbHx8TT09PXQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbE9ubHk/MTowLFM9TT09PXQuV3JpdGluZ01vZGUudmVydGljYWw/MTowO1twLnJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LHAuY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LHAubGVmdEp1c3RpZmllZFRleHRTeW1ib2xJbmRleF0uZm9yRWFjaChmdW5jdGlvbih0KXt0Pj0wJiYoZS50ZXh0LnBsYWNlZFN5bWJvbEFycmF5LmdldCh0KS5oaWRkZW49VHx8Uyl9KSxwLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4Pj0wJiYoZS50ZXh0LnBsYWNlZFN5bWJvbEFycmF5LmdldChwLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4KS5oaWRkZW49VHx8QSk7dmFyIEU9dGhpcy52YXJpYWJsZU9mZnNldHNbcC5jcm9zc1RpbGVJRF07RSYmdGhpcy5tYXJrVXNlZEp1c3RpZmljYXRpb24oZSxFLmFuY2hvcixwLE0pO3ZhciBMPXRoaXMucGxhY2VkT3JpZW50YXRpb25zW3AuY3Jvc3NUaWxlSURdO0wmJih0aGlzLm1hcmtVc2VkSnVzdGlmaWNhdGlvbihlLCJsZWZ0IixwLEwpLHRoaXMubWFya1VzZWRPcmllbnRhdGlvbihlLEwscCkpfWlmKGIpe2Zvcih2YXIgQz1NZSh5Lmljb24pLFA9MDtQPHAubnVtSWNvblZlcnRpY2VzLzQ7UCsrKWUuaWNvbi5vcGFjaXR5VmVydGV4QXJyYXkuZW1wbGFjZUJhY2soQyk7ZS5pY29uLnBsYWNlZFN5bWJvbEFycmF5LmdldChmKS5oaWRkZW49eS5pY29uLmlzSGlkZGVuKCl9aWYoZS5oYXNDb2xsaXNpb25Cb3hEYXRhKCl8fGUuaGFzQ29sbGlzaW9uQ2lyY2xlRGF0YSgpKXt2YXIgTz1lLmNvbGxpc2lvbkFycmF5c1tmXTtpZihPKXtpZihPLnRleHRCb3gpe3ZhciB6PW5ldyB0LlBvaW50KDAsMCksST0hMDtpZihsKXt2YXIgRD10aGlzLnZhcmlhYmxlT2Zmc2V0c1t2XTtEPyh6PWdlKEQuYW5jaG9yLEQud2lkdGgsRC5oZWlnaHQsRC5yYWRpYWxPZmZzZXQsRC50ZXh0Qm94U2NhbGUpLGMmJnouX3JvdGF0ZSh1P3RoaXMudHJhbnNmb3JtLmFuZ2xlOi10aGlzLnRyYW5zZm9ybS5hbmdsZSkpOkk9ITF9bWUoZS5jb2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QXJyYXkseS50ZXh0LnBsYWNlZCwhSSx6Lngsei55KX1PLmljb25Cb3gmJm1lKGUuY29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEFycmF5LHkuaWNvbi5wbGFjZWQsITEpO3ZhciBSPU8udGV4dENpcmNsZXM7aWYoUiYmZS5oYXNDb2xsaXNpb25DaXJjbGVEYXRhKCkpZm9yKHZhciBGPTA7RjxSLmxlbmd0aDtGKz01KXt2YXIgQj1tfHwwPT09UltGKzRdO21lKGUuY29sbGlzaW9uQ2lyY2xlLmNvbGxpc2lvblZlcnRleEFycmF5LHkudGV4dC5wbGFjZWQsQil9fX19ZS5zb3J0RmVhdHVyZXModGhpcy50cmFuc2Zvcm0uYW5nbGUpLHRoaXMucmV0YWluZWRRdWVyeURhdGFbZS5idWNrZXRJbnN0YW5jZUlkXSYmKHRoaXMucmV0YWluZWRRdWVyeURhdGFbZS5idWNrZXRJbnN0YW5jZUlkXS5mZWF0dXJlU29ydE9yZGVyPWUuZmVhdHVyZVNvcnRPcmRlciksZS5oYXNUZXh0RGF0YSgpJiZlLnRleHQub3BhY2l0eVZlcnRleEJ1ZmZlciYmZS50ZXh0Lm9wYWNpdHlWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShlLnRleHQub3BhY2l0eVZlcnRleEFycmF5KSxlLmhhc0ljb25EYXRhKCkmJmUuaWNvbi5vcGFjaXR5VmVydGV4QnVmZmVyJiZlLmljb24ub3BhY2l0eVZlcnRleEJ1ZmZlci51cGRhdGVEYXRhKGUuaWNvbi5vcGFjaXR5VmVydGV4QXJyYXkpLGUuaGFzQ29sbGlzaW9uQm94RGF0YSgpJiZlLmNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhCdWZmZXImJmUuY29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEJ1ZmZlci51cGRhdGVEYXRhKGUuY29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEFycmF5KSxlLmhhc0NvbGxpc2lvbkNpcmNsZURhdGEoKSYmZS5jb2xsaXNpb25DaXJjbGUuY29sbGlzaW9uVmVydGV4QnVmZmVyJiZlLmNvbGxpc2lvbkNpcmNsZS5jb2xsaXNpb25WZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShlLmNvbGxpc2lvbkNpcmNsZS5jb2xsaXNpb25WZXJ0ZXhBcnJheSl9LHZlLnByb3RvdHlwZS5zeW1ib2xGYWRlQ2hhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5mYWRlRHVyYXRpb24/MToodC10aGlzLmNvbW1pdFRpbWUpL3RoaXMuZmFkZUR1cmF0aW9ufSx2ZS5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3RhbGV8fHQtdGhpcy5sYXN0UGxhY2VtZW50Q2hhbmdlVGltZTx0aGlzLmZhZGVEdXJhdGlvbn0sdmUucHJvdG90eXBlLnN0aWxsUmVjZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbW1pdFRpbWUrdGhpcy5mYWRlRHVyYXRpb24+dH0sdmUucHJvdG90eXBlLnNldFN0YWxlPWZ1bmN0aW9uKCl7dGhpcy5zdGFsZT0hMH07dmFyIHllPU1hdGgucG93KDIsMjUpLHhlPU1hdGgucG93KDIsMjQpLGJlPU1hdGgucG93KDIsMTcpLF9lPU1hdGgucG93KDIsMTYpLHdlPU1hdGgucG93KDIsOSksa2U9TWF0aC5wb3coMiw4KSxUZT1NYXRoLnBvdygyLDEpO2Z1bmN0aW9uIE1lKHQpe2lmKDA9PT10Lm9wYWNpdHkmJiF0LnBsYWNlZClyZXR1cm4gMDtpZigxPT09dC5vcGFjaXR5JiZ0LnBsYWNlZClyZXR1cm4gNDI5NDk2NzI5NTt2YXIgZT10LnBsYWNlZD8xOjAscj1NYXRoLmZsb29yKDEyNyp0Lm9wYWNpdHkpO3JldHVybiByKnllK2UqeGUrcipiZStlKl9lK3Iqd2UrZSprZStyKlRlK2V9dmFyIEFlPWZ1bmN0aW9uKCl7dGhpcy5fY3VycmVudFRpbGVJbmRleD0wLHRoaXMuX3NlZW5Dcm9zc1RpbGVJRHM9e319O0FlLnByb3RvdHlwZS5jb250aW51ZVBsYWNlbWVudD1mdW5jdGlvbih0LGUscixuLGEpe2Zvcig7dGhpcy5fY3VycmVudFRpbGVJbmRleDx0Lmxlbmd0aDspe3ZhciBpPXRbdGhpcy5fY3VycmVudFRpbGVJbmRleF07aWYoZS5wbGFjZUxheWVyVGlsZShuLGkscix0aGlzLl9zZWVuQ3Jvc3NUaWxlSURzKSx0aGlzLl9jdXJyZW50VGlsZUluZGV4KyssYSgpKXJldHVybiEwfX07dmFyIFNlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe3RoaXMucGxhY2VtZW50PW5ldyB2ZSh0LGEsaSxvKSx0aGlzLl9jdXJyZW50UGxhY2VtZW50SW5kZXg9ZS5sZW5ndGgtMSx0aGlzLl9mb3JjZUZ1bGxQbGFjZW1lbnQ9cix0aGlzLl9zaG93Q29sbGlzaW9uQm94ZXM9bix0aGlzLl9kb25lPSExfTtTZS5wcm90b3R5cGUuaXNEb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RvbmV9LFNlLnByb3RvdHlwZS5jb250aW51ZVBsYWNlbWVudD1mdW5jdGlvbihlLHIsbil7Zm9yKHZhciBhPXRoaXMsaT10LmJyb3dzZXIubm93KCksbz1mdW5jdGlvbigpe3ZhciBlPXQuYnJvd3Nlci5ub3coKS1pO3JldHVybiFhLl9mb3JjZUZ1bGxQbGFjZW1lbnQmJmU+Mn07dGhpcy5fY3VycmVudFBsYWNlbWVudEluZGV4Pj0wOyl7dmFyIHM9cltlW3RoaXMuX2N1cnJlbnRQbGFjZW1lbnRJbmRleF1dLGw9dGhpcy5wbGFjZW1lbnQuY29sbGlzaW9uSW5kZXgudHJhbnNmb3JtLnpvb207aWYoInN5bWJvbCI9PT1zLnR5cGUmJighcy5taW56b29tfHxzLm1pbnpvb208PWwpJiYoIXMubWF4em9vbXx8cy5tYXh6b29tPmwpKXtpZih0aGlzLl9pblByb2dyZXNzTGF5ZXJ8fCh0aGlzLl9pblByb2dyZXNzTGF5ZXI9bmV3IEFlKSx0aGlzLl9pblByb2dyZXNzTGF5ZXIuY29udGludWVQbGFjZW1lbnQobltzLnNvdXJjZV0sdGhpcy5wbGFjZW1lbnQsdGhpcy5fc2hvd0NvbGxpc2lvbkJveGVzLHMsbykpcmV0dXJuO2RlbGV0ZSB0aGlzLl9pblByb2dyZXNzTGF5ZXJ9dGhpcy5fY3VycmVudFBsYWNlbWVudEluZGV4LS19dGhpcy5fZG9uZT0hMH0sU2UucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wbGFjZW1lbnQuY29tbWl0KHQpLHRoaXMucGxhY2VtZW50fTt2YXIgRWU9NTEyL3QuRVhURU5ULzIsTGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMudGlsZUlEPXQsdGhpcy5pbmRleGVkU3ltYm9sSW5zdGFuY2VzPXt9LHRoaXMuYnVja2V0SW5zdGFuY2VJZD1yO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgYT1lLmdldChuKSxpPWEua2V5O3RoaXMuaW5kZXhlZFN5bWJvbEluc3RhbmNlc1tpXXx8KHRoaXMuaW5kZXhlZFN5bWJvbEluc3RhbmNlc1tpXT1bXSksdGhpcy5pbmRleGVkU3ltYm9sSW5zdGFuY2VzW2ldLnB1c2goe2Nyb3NzVGlsZUlEOmEuY3Jvc3NUaWxlSUQsY29vcmQ6dGhpcy5nZXRTY2FsZWRDb29yZGluYXRlcyhhLHQpfSl9fTtMZS5wcm90b3R5cGUuZ2V0U2NhbGVkQ29vcmRpbmF0ZXM9ZnVuY3Rpb24oZSxyKXt2YXIgbj1yLmNhbm9uaWNhbC56LXRoaXMudGlsZUlELmNhbm9uaWNhbC56LGE9RWUvTWF0aC5wb3coMixuKTtyZXR1cm57eDpNYXRoLmZsb29yKChyLmNhbm9uaWNhbC54KnQuRVhURU5UK2UuYW5jaG9yWCkqYSkseTpNYXRoLmZsb29yKChyLmNhbm9uaWNhbC55KnQuRVhURU5UK2UuYW5jaG9yWSkqYSl9fSxMZS5wcm90b3R5cGUuZmluZE1hdGNoZXM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj10aGlzLnRpbGVJRC5jYW5vbmljYWwuejxlLmNhbm9uaWNhbC56PzE6TWF0aC5wb3coMix0aGlzLnRpbGVJRC5jYW5vbmljYWwuei1lLmNhbm9uaWNhbC56KSxhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBpPXQuZ2V0KGEpO2lmKCFpLmNyb3NzVGlsZUlEKXt2YXIgbz10aGlzLmluZGV4ZWRTeW1ib2xJbnN0YW5jZXNbaS5rZXldO2lmKG8pZm9yKHZhciBzPXRoaXMuZ2V0U2NhbGVkQ29vcmRpbmF0ZXMoaSxlKSxsPTAsYz1vO2w8Yy5sZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXTtpZihNYXRoLmFicyh1LmNvb3JkLngtcy54KTw9biYmTWF0aC5hYnModS5jb29yZC55LXMueSk8PW4mJiFyW3UuY3Jvc3NUaWxlSURdKXtyW3UuY3Jvc3NUaWxlSURdPSEwLGkuY3Jvc3NUaWxlSUQ9dS5jcm9zc1RpbGVJRDticmVha319fX19O3ZhciBDZT1mdW5jdGlvbigpe3RoaXMubWF4Q3Jvc3NUaWxlSUQ9MH07Q2UucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKCl7cmV0dXJuKyt0aGlzLm1heENyb3NzVGlsZUlEfTt2YXIgUGU9ZnVuY3Rpb24oKXt0aGlzLmluZGV4ZXM9e30sdGhpcy51c2VkQ3Jvc3NUaWxlSURzPXt9LHRoaXMubG5nPTB9O1BlLnByb3RvdHlwZS5oYW5kbGVXcmFwSnVtcD1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLnJvdW5kKCh0LXRoaXMubG5nKS8zNjApO2lmKDAhPT1lKWZvcih2YXIgciBpbiB0aGlzLmluZGV4ZXMpe3ZhciBuPXRoaXMuaW5kZXhlc1tyXSxhPXt9O2Zvcih2YXIgaSBpbiBuKXt2YXIgbz1uW2ldO28udGlsZUlEPW8udGlsZUlELnVud3JhcFRvKG8udGlsZUlELndyYXArZSksYVtvLnRpbGVJRC5rZXldPW99dGhpcy5pbmRleGVzW3JdPWF9dGhpcy5sbmc9dH0sUGUucHJvdG90eXBlLmFkZEJ1Y2tldD1mdW5jdGlvbih0LGUscil7aWYodGhpcy5pbmRleGVzW3Qub3ZlcnNjYWxlZFpdJiZ0aGlzLmluZGV4ZXNbdC5vdmVyc2NhbGVkWl1bdC5rZXldKXtpZih0aGlzLmluZGV4ZXNbdC5vdmVyc2NhbGVkWl1bdC5rZXldLmJ1Y2tldEluc3RhbmNlSWQ9PT1lLmJ1Y2tldEluc3RhbmNlSWQpcmV0dXJuITE7dGhpcy5yZW1vdmVCdWNrZXRDcm9zc1RpbGVJRHModC5vdmVyc2NhbGVkWix0aGlzLmluZGV4ZXNbdC5vdmVyc2NhbGVkWl1bdC5rZXldKX1mb3IodmFyIG49MDtuPGUuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDtuKyspZS5zeW1ib2xJbnN0YW5jZXMuZ2V0KG4pLmNyb3NzVGlsZUlEPTA7dGhpcy51c2VkQ3Jvc3NUaWxlSURzW3Qub3ZlcnNjYWxlZFpdfHwodGhpcy51c2VkQ3Jvc3NUaWxlSURzW3Qub3ZlcnNjYWxlZFpdPXt9KTt2YXIgYT10aGlzLnVzZWRDcm9zc1RpbGVJRHNbdC5vdmVyc2NhbGVkWl07Zm9yKHZhciBpIGluIHRoaXMuaW5kZXhlcyl7dmFyIG89dGhpcy5pbmRleGVzW2ldO2lmKE51bWJlcihpKT50Lm92ZXJzY2FsZWRaKWZvcih2YXIgcyBpbiBvKXt2YXIgbD1vW3NdO2wudGlsZUlELmlzQ2hpbGRPZih0KSYmbC5maW5kTWF0Y2hlcyhlLnN5bWJvbEluc3RhbmNlcyx0LGEpfWVsc2V7dmFyIGM9b1t0LnNjYWxlZFRvKE51bWJlcihpKSkua2V5XTtjJiZjLmZpbmRNYXRjaGVzKGUuc3ltYm9sSW5zdGFuY2VzLHQsYSl9fWZvcih2YXIgdT0wO3U8ZS5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoO3UrKyl7dmFyIGg9ZS5zeW1ib2xJbnN0YW5jZXMuZ2V0KHUpO2guY3Jvc3NUaWxlSUR8fChoLmNyb3NzVGlsZUlEPXIuZ2VuZXJhdGUoKSxhW2guY3Jvc3NUaWxlSURdPSEwKX1yZXR1cm4gdm9pZCAwPT09dGhpcy5pbmRleGVzW3Qub3ZlcnNjYWxlZFpdJiYodGhpcy5pbmRleGVzW3Qub3ZlcnNjYWxlZFpdPXt9KSx0aGlzLmluZGV4ZXNbdC5vdmVyc2NhbGVkWl1bdC5rZXldPW5ldyBMZSh0LGUuc3ltYm9sSW5zdGFuY2VzLGUuYnVja2V0SW5zdGFuY2VJZCksITB9LFBlLnByb3RvdHlwZS5yZW1vdmVCdWNrZXRDcm9zc1RpbGVJRHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gZS5pbmRleGVkU3ltYm9sSW5zdGFuY2VzKWZvcih2YXIgbj0wLGE9ZS5pbmRleGVkU3ltYm9sSW5zdGFuY2VzW3JdO248YS5sZW5ndGg7bis9MSl7dmFyIGk9YVtuXTtkZWxldGUgdGhpcy51c2VkQ3Jvc3NUaWxlSURzW3RdW2kuY3Jvc3NUaWxlSURdfX0sUGUucHJvdG90eXBlLnJlbW92ZVN0YWxlQnVja2V0cz1mdW5jdGlvbih0KXt2YXIgZT0hMTtmb3IodmFyIHIgaW4gdGhpcy5pbmRleGVzKXt2YXIgbj10aGlzLmluZGV4ZXNbcl07Zm9yKHZhciBhIGluIG4pdFtuW2FdLmJ1Y2tldEluc3RhbmNlSWRdfHwodGhpcy5yZW1vdmVCdWNrZXRDcm9zc1RpbGVJRHMocixuW2FdKSxkZWxldGUgblthXSxlPSEwKX1yZXR1cm4gZX07dmFyIE9lPWZ1bmN0aW9uKCl7dGhpcy5sYXllckluZGV4ZXM9e30sdGhpcy5jcm9zc1RpbGVJRHM9bmV3IENlLHRoaXMubWF4QnVja2V0SW5zdGFuY2VJZD0wLHRoaXMuYnVja2V0c0luQ3VycmVudFBsYWNlbWVudD17fX07T2UucHJvdG90eXBlLmFkZExheWVyPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLmxheWVySW5kZXhlc1t0LmlkXTt2b2lkIDA9PT1uJiYobj10aGlzLmxheWVySW5kZXhlc1t0LmlkXT1uZXcgUGUpO3ZhciBhPSExLGk9e307bi5oYW5kbGVXcmFwSnVtcChyKTtmb3IodmFyIG89MCxzPWU7bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1zW29dLGM9bC5nZXRCdWNrZXQodCk7YyYmdC5pZD09PWMubGF5ZXJJZHNbMF0mJihjLmJ1Y2tldEluc3RhbmNlSWR8fChjLmJ1Y2tldEluc3RhbmNlSWQ9Kyt0aGlzLm1heEJ1Y2tldEluc3RhbmNlSWQpLG4uYWRkQnVja2V0KGwudGlsZUlELGMsdGhpcy5jcm9zc1RpbGVJRHMpJiYoYT0hMCksaVtjLmJ1Y2tldEluc3RhbmNlSWRdPSEwKX1yZXR1cm4gbi5yZW1vdmVTdGFsZUJ1Y2tldHMoaSkmJihhPSEwKSxhfSxPZS5wcm90b3R5cGUucHJ1bmVVbnVzZWRMYXllcnM9ZnVuY3Rpb24odCl7dmFyIGU9e307Zm9yKHZhciByIGluIHQuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPSEwfSksdGhpcy5sYXllckluZGV4ZXMpZVtyXXx8ZGVsZXRlIHRoaXMubGF5ZXJJbmRleGVzW3JdfTt2YXIgemU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5lbWl0VmFsaWRhdGlvbkVycm9ycyhlLHImJnIuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiJzb3VyY2UuY2FudmFzIiE9PXQuaWRlbnRpZmllcn0pKX0sSWU9dC5waWNrKE50LFsiYWRkTGF5ZXIiLCJyZW1vdmVMYXllciIsInNldFBhaW50UHJvcGVydHkiLCJzZXRMYXlvdXRQcm9wZXJ0eSIsInNldEZpbHRlciIsImFkZFNvdXJjZSIsInJlbW92ZVNvdXJjZSIsInNldExheWVyWm9vbVJhbmdlIiwic2V0TGlnaHQiLCJzZXRUcmFuc2l0aW9uIiwic2V0R2VvSlNPTlNvdXJjZURhdGEiXSksRGU9dC5waWNrKE50LFsic2V0Q2VudGVyIiwic2V0Wm9vbSIsInNldEJlYXJpbmciLCJzZXRQaXRjaCJdKSxSZT1mdW5jdGlvbihlKXtmdW5jdGlvbiByKG4sYSl7dmFyIGk9dGhpczt2b2lkIDA9PT1hJiYoYT17fSksZS5jYWxsKHRoaXMpLHRoaXMubWFwPW4sdGhpcy5kaXNwYXRjaGVyPW5ldyBUKChEdHx8KER0PW5ldyBJdCksRHQpLHRoaXMpLHRoaXMuaW1hZ2VNYW5hZ2VyPW5ldyBmLHRoaXMuaW1hZ2VNYW5hZ2VyLnNldEV2ZW50ZWRQYXJlbnQodGhpcyksdGhpcy5nbHlwaE1hbmFnZXI9bmV3IHgobi5fcmVxdWVzdE1hbmFnZXIsYS5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHkpLHRoaXMubGluZUF0bGFzPW5ldyBrKDI1Niw1MTIpLHRoaXMuY3Jvc3NUaWxlU3ltYm9sSW5kZXg9bmV3IE9lLHRoaXMuX2xheWVycz17fSx0aGlzLl9vcmRlcj1bXSx0aGlzLnNvdXJjZUNhY2hlcz17fSx0aGlzLnpvb21IaXN0b3J5PW5ldyB0Llpvb21IaXN0b3J5LHRoaXMuX2xvYWRlZD0hMSx0aGlzLl9yZXNldFVwZGF0ZXMoKSx0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KCJzZXRSZWZlcnJlciIsdC5nZXRSZWZlcnJlcigpKTt2YXIgbz10aGlzO3RoaXMuX3J0bFRleHRQbHVnaW5DYWxsYmFjaz1yLnJlZ2lzdGVyRm9yUGx1Z2luQXZhaWxhYmlsaXR5KGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiBvLmRpc3BhdGNoZXIuYnJvYWRjYXN0KCJsb2FkUlRMVGV4dFBsdWdpbiIsdC5wbHVnaW5VUkwsdC5jb21wbGV0aW9uQ2FsbGJhY2spLG8uc291cmNlQ2FjaGVzKW8uc291cmNlQ2FjaGVzW2VdLnJlbG9hZCgpfSksdGhpcy5vbigiZGF0YSIsZnVuY3Rpb24odCl7aWYoInNvdXJjZSI9PT10LmRhdGFUeXBlJiYibWV0YWRhdGEiPT09dC5zb3VyY2VEYXRhVHlwZSl7dmFyIGU9aS5zb3VyY2VDYWNoZXNbdC5zb3VyY2VJZF07aWYoZSl7dmFyIHI9ZS5nZXRTb3VyY2UoKTtpZihyJiZyLnZlY3RvckxheWVySWRzKWZvcih2YXIgbiBpbiBpLl9sYXllcnMpe3ZhciBhPWkuX2xheWVyc1tuXTthLnNvdXJjZT09PXIuaWQmJmkuX3ZhbGlkYXRlTGF5ZXIoYSl9fX19KX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUubG9hZFVSTD1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXM7dm9pZCAwPT09ciYmKHI9e30pLHRoaXMuZmlyZShuZXcgdC5FdmVudCgiZGF0YWxvYWRpbmciLHtkYXRhVHlwZToic3R5bGUifSkpO3ZhciBhPSJib29sZWFuIj09dHlwZW9mIHIudmFsaWRhdGU/ci52YWxpZGF0ZTohdC5pc01hcGJveFVSTChlKTtlPXRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci5ub3JtYWxpemVTdHlsZVVSTChlLHIuYWNjZXNzVG9rZW4pO3ZhciBpPXRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KGUsdC5SZXNvdXJjZVR5cGUuU3R5bGUpO3RoaXMuX3JlcXVlc3Q9dC5nZXRKU09OKGksZnVuY3Rpb24oZSxyKXtuLl9yZXF1ZXN0PW51bGwsZT9uLmZpcmUobmV3IHQuRXJyb3JFdmVudChlKSk6ciYmbi5fbG9hZChyLGEpfSl9LHIucHJvdG90eXBlLmxvYWRKU09OPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpczt2b2lkIDA9PT1yJiYocj17fSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse2RhdGFUeXBlOiJzdHlsZSJ9KSksdGhpcy5fcmVxdWVzdD10LmJyb3dzZXIuZnJhbWUoZnVuY3Rpb24oKXtuLl9yZXF1ZXN0PW51bGwsbi5fbG9hZChlLCExIT09ci52YWxpZGF0ZSl9KX0sci5wcm90b3R5cGUuX2xvYWQ9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzO2lmKCFyfHwhemUodGhpcyx0LnZhbGlkYXRlU3R5bGUoZSkpKXtmb3IodmFyIGEgaW4gdGhpcy5fbG9hZGVkPSEwLHRoaXMuc3R5bGVzaGVldD1lLGUuc291cmNlcyl0aGlzLmFkZFNvdXJjZShhLGUuc291cmNlc1thXSx7dmFsaWRhdGU6ITF9KTtlLnNwcml0ZT90aGlzLl9zcHJpdGVSZXF1ZXN0PWZ1bmN0aW9uKGUscixuKXt2YXIgYSxpLG8scz10LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbz4xPyJAMngiOiIiLGw9dC5nZXRKU09OKHIudHJhbnNmb3JtUmVxdWVzdChyLm5vcm1hbGl6ZVNwcml0ZVVSTChlLHMsIi5qc29uIiksdC5SZXNvdXJjZVR5cGUuU3ByaXRlSlNPTiksZnVuY3Rpb24odCxlKXtsPW51bGwsb3x8KG89dCxhPWUsdSgpKX0pLGM9dC5nZXRJbWFnZShyLnRyYW5zZm9ybVJlcXVlc3Qoci5ub3JtYWxpemVTcHJpdGVVUkwoZSxzLCIucG5nIiksdC5SZXNvdXJjZVR5cGUuU3ByaXRlSW1hZ2UpLGZ1bmN0aW9uKHQsZSl7Yz1udWxsLG98fChvPXQsaT1lLHUoKSl9KTtmdW5jdGlvbiB1KCl7aWYobyluKG8pO2Vsc2UgaWYoYSYmaSl7dmFyIGU9dC5icm93c2VyLmdldEltYWdlRGF0YShpKSxyPXt9O2Zvcih2YXIgcyBpbiBhKXt2YXIgbD1hW3NdLGM9bC53aWR0aCx1PWwuaGVpZ2h0LGg9bC54LGY9bC55LHA9bC5zZGYsZD1sLnBpeGVsUmF0aW8sZz1uZXcgdC5SR0JBSW1hZ2Uoe3dpZHRoOmMsaGVpZ2h0OnV9KTt0LlJHQkFJbWFnZS5jb3B5KGUsZyx7eDpoLHk6Zn0se3g6MCx5OjB9LHt3aWR0aDpjLGhlaWdodDp1fSkscltzXT17ZGF0YTpnLHBpeGVsUmF0aW86ZCxzZGY6cH19bihudWxsLHIpfX1yZXR1cm57Y2FuY2VsOmZ1bmN0aW9uKCl7bCYmKGwuY2FuY2VsKCksbD1udWxsKSxjJiYoYy5jYW5jZWwoKSxjPW51bGwpfX19KGUuc3ByaXRlLHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlcixmdW5jdGlvbihlLHIpe2lmKG4uX3Nwcml0ZVJlcXVlc3Q9bnVsbCxlKW4uZmlyZShuZXcgdC5FcnJvckV2ZW50KGUpKTtlbHNlIGlmKHIpZm9yKHZhciBhIGluIHIpbi5pbWFnZU1hbmFnZXIuYWRkSW1hZ2UoYSxyW2FdKTtuLmltYWdlTWFuYWdlci5zZXRMb2FkZWQoITApLG4uZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzdHlsZSJ9KSl9KTp0aGlzLmltYWdlTWFuYWdlci5zZXRMb2FkZWQoITApLHRoaXMuZ2x5cGhNYW5hZ2VyLnNldFVSTChlLmdseXBocyk7dmFyIGk9QnQodGhpcy5zdHlsZXNoZWV0LmxheWVycyk7dGhpcy5fb3JkZXI9aS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSx0aGlzLl9sYXllcnM9e307Zm9yKHZhciBvPTAscz1pO288cy5sZW5ndGg7bys9MSl7dmFyIGw9c1tvXTsobD10LmNyZWF0ZVN0eWxlTGF5ZXIobCkpLnNldEV2ZW50ZWRQYXJlbnQodGhpcyx7bGF5ZXI6e2lkOmwuaWR9fSksdGhpcy5fbGF5ZXJzW2wuaWRdPWx9dGhpcy5kaXNwYXRjaGVyLmJyb2FkY2FzdCgic2V0TGF5ZXJzIix0aGlzLl9zZXJpYWxpemVMYXllcnModGhpcy5fb3JkZXIpKSx0aGlzLmxpZ2h0PW5ldyB3KHRoaXMuc3R5bGVzaGVldC5saWdodCksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6InN0eWxlIn0pKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoInN0eWxlLmxvYWQiKSl9fSxyLnByb3RvdHlwZS5fdmFsaWRhdGVMYXllcj1mdW5jdGlvbihlKXt2YXIgcj10aGlzLnNvdXJjZUNhY2hlc1tlLnNvdXJjZV07aWYocil7dmFyIG49ZS5zb3VyY2VMYXllcjtpZihuKXt2YXIgYT1yLmdldFNvdXJjZSgpOygiZ2VvanNvbiI9PT1hLnR5cGV8fGEudmVjdG9yTGF5ZXJJZHMmJi0xPT09YS52ZWN0b3JMYXllcklkcy5pbmRleE9mKG4pKSYmdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCdTb3VyY2UgbGF5ZXIgIicrbisnIiBkb2VzIG5vdCBleGlzdCBvbiBzb3VyY2UgIicrYS5pZCsnIiBhcyBzcGVjaWZpZWQgYnkgc3R5bGUgbGF5ZXIgIicrZS5pZCsnIicpKSl9fX0sci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2xvYWRlZClyZXR1cm4hMTtpZihPYmplY3Qua2V5cyh0aGlzLl91cGRhdGVkU291cmNlcykubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgdCBpbiB0aGlzLnNvdXJjZUNhY2hlcylpZighdGhpcy5zb3VyY2VDYWNoZXNbdF0ubG9hZGVkKCkpcmV0dXJuITE7cmV0dXJuISF0aGlzLmltYWdlTWFuYWdlci5pc0xvYWRlZCgpfSxyLnByb3RvdHlwZS5fc2VyaWFsaXplTGF5ZXJzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPTAsbj10O3I8bi5sZW5ndGg7cis9MSl7dmFyIGE9bltyXSxpPXRoaXMuX2xheWVyc1thXTsiY3VzdG9tIiE9PWkudHlwZSYmZS5wdXNoKGkuc2VyaWFsaXplKCkpfXJldHVybiBlfSxyLnByb3RvdHlwZS5oYXNUcmFuc2l0aW9ucz1mdW5jdGlvbigpe2lmKHRoaXMubGlnaHQmJnRoaXMubGlnaHQuaGFzVHJhbnNpdGlvbigpKXJldHVybiEwO2Zvcih2YXIgdCBpbiB0aGlzLnNvdXJjZUNhY2hlcylpZih0aGlzLnNvdXJjZUNhY2hlc1t0XS5oYXNUcmFuc2l0aW9uKCkpcmV0dXJuITA7Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycylpZih0aGlzLl9sYXllcnNbZV0uaGFzVHJhbnNpdGlvbigpKXJldHVybiEwO3JldHVybiExfSxyLnByb3RvdHlwZS5fY2hlY2tMb2FkZWQ9ZnVuY3Rpb24oKXtpZighdGhpcy5fbG9hZGVkKXRocm93IG5ldyBFcnJvcigiU3R5bGUgaXMgbm90IGRvbmUgbG9hZGluZyIpfSxyLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbG9hZGVkKXt2YXIgcj10aGlzLl9jaGFuZ2VkO2lmKHRoaXMuX2NoYW5nZWQpe3ZhciBuPU9iamVjdC5rZXlzKHRoaXMuX3VwZGF0ZWRMYXllcnMpLGE9T2JqZWN0LmtleXModGhpcy5fcmVtb3ZlZExheWVycyk7Zm9yKHZhciBpIGluKG4ubGVuZ3RofHxhLmxlbmd0aCkmJnRoaXMuX3VwZGF0ZVdvcmtlckxheWVycyhuLGEpLHRoaXMuX3VwZGF0ZWRTb3VyY2VzKXt2YXIgbz10aGlzLl91cGRhdGVkU291cmNlc1tpXTsicmVsb2FkIj09PW8/dGhpcy5fcmVsb2FkU291cmNlKGkpOiJjbGVhciI9PT1vJiZ0aGlzLl9jbGVhclNvdXJjZShpKX1mb3IodmFyIHMgaW4gdGhpcy5fdXBkYXRlZFBhaW50UHJvcHMpdGhpcy5fbGF5ZXJzW3NdLnVwZGF0ZVRyYW5zaXRpb25zKGUpO3RoaXMubGlnaHQudXBkYXRlVHJhbnNpdGlvbnMoZSksdGhpcy5fcmVzZXRVcGRhdGVzKCl9Zm9yKHZhciBsIGluIHRoaXMuc291cmNlQ2FjaGVzKXRoaXMuc291cmNlQ2FjaGVzW2xdLnVzZWQ9ITE7Zm9yKHZhciBjPTAsdT10aGlzLl9vcmRlcjtjPHUubGVuZ3RoO2MrPTEpe3ZhciBoPXVbY10sZj10aGlzLl9sYXllcnNbaF07Zi5yZWNhbGN1bGF0ZShlKSwhZi5pc0hpZGRlbihlLnpvb20pJiZmLnNvdXJjZSYmKHRoaXMuc291cmNlQ2FjaGVzW2Yuc291cmNlXS51c2VkPSEwKX10aGlzLmxpZ2h0LnJlY2FsY3VsYXRlKGUpLHRoaXMuej1lLnpvb20sciYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6InN0eWxlIn0pKX19LHIucHJvdG90eXBlLl91cGRhdGVXb3JrZXJMYXllcnM9ZnVuY3Rpb24odCxlKXt0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KCJ1cGRhdGVMYXllcnMiLHtsYXllcnM6dGhpcy5fc2VyaWFsaXplTGF5ZXJzKHQpLHJlbW92ZWRJZHM6ZX0pfSxyLnByb3RvdHlwZS5fcmVzZXRVcGRhdGVzPWZ1bmN0aW9uKCl7dGhpcy5fY2hhbmdlZD0hMSx0aGlzLl91cGRhdGVkTGF5ZXJzPXt9LHRoaXMuX3JlbW92ZWRMYXllcnM9e30sdGhpcy5fdXBkYXRlZFNvdXJjZXM9e30sdGhpcy5fdXBkYXRlZFBhaW50UHJvcHM9e319LHIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSx6ZSh0aGlzLHQudmFsaWRhdGVTdHlsZShlKSkpcmV0dXJuITE7KGU9dC5jbG9uZSQxKGUpKS5sYXllcnM9QnQoZS5sYXllcnMpO3ZhciBuPWZ1bmN0aW9uKGUscil7aWYoIWUpcmV0dXJuW3tjb21tYW5kOk50LnNldFN0eWxlLGFyZ3M6W3JdfV07dmFyIG49W107dHJ5e2lmKCF0LmRlZXBFcXVhbChlLnZlcnNpb24sci52ZXJzaW9uKSlyZXR1cm5be2NvbW1hbmQ6TnQuc2V0U3R5bGUsYXJnczpbcl19XTt0LmRlZXBFcXVhbChlLmNlbnRlcixyLmNlbnRlcil8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRDZW50ZXIsYXJnczpbci5jZW50ZXJdfSksdC5kZWVwRXF1YWwoZS56b29tLHIuem9vbSl8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRab29tLGFyZ3M6W3Iuem9vbV19KSx0LmRlZXBFcXVhbChlLmJlYXJpbmcsci5iZWFyaW5nKXx8bi5wdXNoKHtjb21tYW5kOk50LnNldEJlYXJpbmcsYXJnczpbci5iZWFyaW5nXX0pLHQuZGVlcEVxdWFsKGUucGl0Y2gsci5waXRjaCl8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRQaXRjaCxhcmdzOltyLnBpdGNoXX0pLHQuZGVlcEVxdWFsKGUuc3ByaXRlLHIuc3ByaXRlKXx8bi5wdXNoKHtjb21tYW5kOk50LnNldFNwcml0ZSxhcmdzOltyLnNwcml0ZV19KSx0LmRlZXBFcXVhbChlLmdseXBocyxyLmdseXBocyl8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRHbHlwaHMsYXJnczpbci5nbHlwaHNdfSksdC5kZWVwRXF1YWwoZS50cmFuc2l0aW9uLHIudHJhbnNpdGlvbil8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRUcmFuc2l0aW9uLGFyZ3M6W3IudHJhbnNpdGlvbl19KSx0LmRlZXBFcXVhbChlLmxpZ2h0LHIubGlnaHQpfHxuLnB1c2goe2NvbW1hbmQ6TnQuc2V0TGlnaHQsYXJnczpbci5saWdodF19KTt2YXIgYT17fSxpPVtdOyFmdW5jdGlvbihlLHIsbixhKXt2YXIgaTtmb3IoaSBpbiByPXJ8fHt9LGU9ZXx8e30pZS5oYXNPd25Qcm9wZXJ0eShpKSYmKHIuaGFzT3duUHJvcGVydHkoaSl8fFZ0KGksbixhKSk7Zm9yKGkgaW4gcilyLmhhc093blByb3BlcnR5KGkpJiYoZS5oYXNPd25Qcm9wZXJ0eShpKT90LmRlZXBFcXVhbChlW2ldLHJbaV0pfHwoImdlb2pzb24iPT09ZVtpXS50eXBlJiYiZ2VvanNvbiI9PT1yW2ldLnR5cGUmJnF0KGUscixpKT9uLnB1c2goe2NvbW1hbmQ6TnQuc2V0R2VvSlNPTlNvdXJjZURhdGEsYXJnczpbaSxyW2ldLmRhdGFdfSk6VXQoaSxyLG4sYSkpOmp0KGkscixuKSl9KGUuc291cmNlcyxyLnNvdXJjZXMsaSxhKTt2YXIgbz1bXTtlLmxheWVycyYmZS5sYXllcnMuZm9yRWFjaChmdW5jdGlvbih0KXthW3Quc291cmNlXT9uLnB1c2goe2NvbW1hbmQ6TnQucmVtb3ZlTGF5ZXIsYXJnczpbdC5pZF19KTpvLnB1c2godCl9KSxuPW4uY29uY2F0KGkpLGZ1bmN0aW9uKGUscixuKXtyPXJ8fFtdO3ZhciBhLGksbyxzLGwsYyx1LGg9KGU9ZXx8W10pLm1hcChHdCksZj1yLm1hcChHdCkscD1lLnJlZHVjZShZdCx7fSksZD1yLnJlZHVjZShZdCx7fSksZz1oLnNsaWNlKCksdj1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihhPTAsaT0wO2E8aC5sZW5ndGg7YSsrKW89aFthXSxkLmhhc093blByb3BlcnR5KG8pP2krKzoobi5wdXNoKHtjb21tYW5kOk50LnJlbW92ZUxheWVyLGFyZ3M6W29dfSksZy5zcGxpY2UoZy5pbmRleE9mKG8saSksMSkpO2ZvcihhPTAsaT0wO2E8Zi5sZW5ndGg7YSsrKW89ZltmLmxlbmd0aC0xLWFdLGdbZy5sZW5ndGgtMS1hXSE9PW8mJihwLmhhc093blByb3BlcnR5KG8pPyhuLnB1c2goe2NvbW1hbmQ6TnQucmVtb3ZlTGF5ZXIsYXJnczpbb119KSxnLnNwbGljZShnLmxhc3RJbmRleE9mKG8sZy5sZW5ndGgtaSksMSkpOmkrKyxjPWdbZy5sZW5ndGgtYV0sbi5wdXNoKHtjb21tYW5kOk50LmFkZExheWVyLGFyZ3M6W2Rbb10sY119KSxnLnNwbGljZShnLmxlbmd0aC1hLDAsbyksdltvXT0hMCk7Zm9yKGE9MDthPGYubGVuZ3RoO2ErKylpZihzPXBbbz1mW2FdXSxsPWRbb10sIXZbb10mJiF0LmRlZXBFcXVhbChzLGwpKWlmKHQuZGVlcEVxdWFsKHMuc291cmNlLGwuc291cmNlKSYmdC5kZWVwRXF1YWwoc1sic291cmNlLWxheWVyIl0sbFsic291cmNlLWxheWVyIl0pJiZ0LmRlZXBFcXVhbChzLnR5cGUsbC50eXBlKSl7Zm9yKHUgaW4gSHQocy5sYXlvdXQsbC5sYXlvdXQsbixvLG51bGwsTnQuc2V0TGF5b3V0UHJvcGVydHkpLEh0KHMucGFpbnQsbC5wYWludCxuLG8sbnVsbCxOdC5zZXRQYWludFByb3BlcnR5KSx0LmRlZXBFcXVhbChzLmZpbHRlcixsLmZpbHRlcil8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRGaWx0ZXIsYXJnczpbbyxsLmZpbHRlcl19KSx0LmRlZXBFcXVhbChzLm1pbnpvb20sbC5taW56b29tKSYmdC5kZWVwRXF1YWwocy5tYXh6b29tLGwubWF4em9vbSl8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRMYXllclpvb21SYW5nZSxhcmdzOltvLGwubWluem9vbSxsLm1heHpvb21dfSkscylzLmhhc093blByb3BlcnR5KHUpJiYibGF5b3V0IiE9PXUmJiJwYWludCIhPT11JiYiZmlsdGVyIiE9PXUmJiJtZXRhZGF0YSIhPT11JiYibWluem9vbSIhPT11JiYibWF4em9vbSIhPT11JiYoMD09PXUuaW5kZXhPZigicGFpbnQuIik/SHQoc1t1XSxsW3VdLG4sbyx1LnNsaWNlKDYpLE50LnNldFBhaW50UHJvcGVydHkpOnQuZGVlcEVxdWFsKHNbdV0sbFt1XSl8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRMYXllclByb3BlcnR5LGFyZ3M6W28sdSxsW3VdXX0pKTtmb3IodSBpbiBsKWwuaGFzT3duUHJvcGVydHkodSkmJiFzLmhhc093blByb3BlcnR5KHUpJiYibGF5b3V0IiE9PXUmJiJwYWludCIhPT11JiYiZmlsdGVyIiE9PXUmJiJtZXRhZGF0YSIhPT11JiYibWluem9vbSIhPT11JiYibWF4em9vbSIhPT11JiYoMD09PXUuaW5kZXhPZigicGFpbnQuIik/SHQoc1t1XSxsW3VdLG4sbyx1LnNsaWNlKDYpLE50LnNldFBhaW50UHJvcGVydHkpOnQuZGVlcEVxdWFsKHNbdV0sbFt1XSl8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRMYXllclByb3BlcnR5LGFyZ3M6W28sdSxsW3VdXX0pKX1lbHNlIG4ucHVzaCh7Y29tbWFuZDpOdC5yZW1vdmVMYXllcixhcmdzOltvXX0pLGM9Z1tnLmxhc3RJbmRleE9mKG8pKzFdLG4ucHVzaCh7Y29tbWFuZDpOdC5hZGRMYXllcixhcmdzOltsLGNdfSl9KG8sci5sYXllcnMsbil9Y2F0Y2godCl7Y29uc29sZS53YXJuKCJVbmFibGUgdG8gY29tcHV0ZSBzdHlsZSBkaWZmOiIsdCksbj1be2NvbW1hbmQ6TnQuc2V0U3R5bGUsYXJnczpbcl19XX1yZXR1cm4gbn0odGhpcy5zZXJpYWxpemUoKSxlKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuISh0LmNvbW1hbmQgaW4gRGUpfSk7aWYoMD09PW4ubGVuZ3RoKXJldHVybiExO3ZhciBhPW4uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEodC5jb21tYW5kIGluIEllKX0pO2lmKGEubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCJVbmltcGxlbWVudGVkOiAiK2EubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbW1hbmR9KS5qb2luKCIsICIpKyIuIik7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbih0KXsic2V0VHJhbnNpdGlvbiIhPT10LmNvbW1hbmQmJnJbdC5jb21tYW5kXS5hcHBseShyLHQuYXJncyl9KSx0aGlzLnN0eWxlc2hlZXQ9ZSwhMH0sci5wcm90b3R5cGUuYWRkSW1hZ2U9ZnVuY3Rpb24oZSxyKXtpZih0aGlzLmdldEltYWdlKGUpKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIkFuIGltYWdlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLiIpKSk7dGhpcy5pbWFnZU1hbmFnZXIuYWRkSW1hZ2UoZSxyKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic3R5bGUifSkpfSxyLnByb3RvdHlwZS51cGRhdGVJbWFnZT1mdW5jdGlvbih0LGUpe3RoaXMuaW1hZ2VNYW5hZ2VyLnVwZGF0ZUltYWdlKHQsZSl9LHIucHJvdG90eXBlLmdldEltYWdlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmltYWdlTWFuYWdlci5nZXRJbWFnZSh0KX0sci5wcm90b3R5cGUucmVtb3ZlSW1hZ2U9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZ2V0SW1hZ2UoZSkpcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiTm8gaW1hZ2Ugd2l0aCB0aGlzIG5hbWUgZXhpc3RzLiIpKSk7dGhpcy5pbWFnZU1hbmFnZXIucmVtb3ZlSW1hZ2UoZSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6InN0eWxlIn0pKX0sci5wcm90b3R5cGUubGlzdEltYWdlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja0xvYWRlZCgpLHRoaXMuaW1hZ2VNYW5hZ2VyLmxpc3RJbWFnZXMoKX0sci5wcm90b3R5cGUuYWRkU291cmNlPWZ1bmN0aW9uKGUscixuKXt2YXIgYT10aGlzO2lmKHZvaWQgMD09PW4mJihuPXt9KSx0aGlzLl9jaGVja0xvYWRlZCgpLHZvaWQgMCE9PXRoaXMuc291cmNlQ2FjaGVzW2VdKXRocm93IG5ldyBFcnJvcigiVGhlcmUgaXMgYWxyZWFkeSBhIHNvdXJjZSB3aXRoIHRoaXMgSUQiKTtpZighci50eXBlKXRocm93IG5ldyBFcnJvcigiVGhlIHR5cGUgcHJvcGVydHkgbXVzdCBiZSBkZWZpbmVkLCBidXQgdGhlIG9ubHkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHdlcmUgZ2l2ZW46ICIrT2JqZWN0LmtleXMocikuam9pbigiLCAiKSsiLiIpO2lmKCEoWyJ2ZWN0b3IiLCJyYXN0ZXIiLCJnZW9qc29uIiwidmlkZW8iLCJpbWFnZSJdLmluZGV4T2Yoci50eXBlKT49MCYmdGhpcy5fdmFsaWRhdGUodC52YWxpZGF0ZVN0eWxlLnNvdXJjZSwic291cmNlcy4iK2UscixudWxsLG4pKSl7dGhpcy5tYXAmJnRoaXMubWFwLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmcmJihyLmNvbGxlY3RSZXNvdXJjZVRpbWluZz0hMCk7dmFyIGk9dGhpcy5zb3VyY2VDYWNoZXNbZV09bmV3IEN0KGUscix0aGlzLmRpc3BhdGNoZXIpO2kuc3R5bGU9dGhpcyxpLnNldEV2ZW50ZWRQYXJlbnQodGhpcyxmdW5jdGlvbigpe3JldHVybntpc1NvdXJjZUxvYWRlZDphLmxvYWRlZCgpLHNvdXJjZTppLnNlcmlhbGl6ZSgpLHNvdXJjZUlkOmV9fSksaS5vbkFkZCh0aGlzLm1hcCksdGhpcy5fY2hhbmdlZD0hMH19LHIucHJvdG90eXBlLnJlbW92ZVNvdXJjZT1mdW5jdGlvbihlKXtpZih0aGlzLl9jaGVja0xvYWRlZCgpLHZvaWQgMD09PXRoaXMuc291cmNlQ2FjaGVzW2VdKXRocm93IG5ldyBFcnJvcigiVGhlcmUgaXMgbm8gc291cmNlIHdpdGggdGhpcyBJRCIpO2Zvcih2YXIgciBpbiB0aGlzLl9sYXllcnMpaWYodGhpcy5fbGF5ZXJzW3JdLnNvdXJjZT09PWUpcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcignU291cmNlICInK2UrJyIgY2Fubm90IGJlIHJlbW92ZWQgd2hpbGUgbGF5ZXIgIicrcisnIiBpcyB1c2luZyBpdC4nKSkpO3ZhciBuPXRoaXMuc291cmNlQ2FjaGVzW2VdO2RlbGV0ZSB0aGlzLnNvdXJjZUNhY2hlc1tlXSxkZWxldGUgdGhpcy5fdXBkYXRlZFNvdXJjZXNbZV0sbi5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7c291cmNlRGF0YVR5cGU6Im1ldGFkYXRhIixkYXRhVHlwZToic291cmNlIixzb3VyY2VJZDplfSkpLG4uc2V0RXZlbnRlZFBhcmVudChudWxsKSxuLmNsZWFyVGlsZXMoKSxuLm9uUmVtb3ZlJiZuLm9uUmVtb3ZlKHRoaXMubWFwKSx0aGlzLl9jaGFuZ2VkPSEwfSxyLnByb3RvdHlwZS5zZXRHZW9KU09OU291cmNlRGF0YT1mdW5jdGlvbih0LGUpe3RoaXMuX2NoZWNrTG9hZGVkKCksdGhpcy5zb3VyY2VDYWNoZXNbdF0uZ2V0U291cmNlKCkuc2V0RGF0YShlKSx0aGlzLl9jaGFuZ2VkPSEwfSxyLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc291cmNlQ2FjaGVzW3RdJiZ0aGlzLnNvdXJjZUNhY2hlc1t0XS5nZXRTb3VyY2UoKX0sci5wcm90b3R5cGUuYWRkTGF5ZXI9ZnVuY3Rpb24oZSxyLG4pe3ZvaWQgMD09PW4mJihuPXt9KSx0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciBhPWUuaWQ7aWYodGhpcy5nZXRMYXllcihhKSl0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoJ0xheWVyIHdpdGggaWQgIicrYSsnIiBhbHJlYWR5IGV4aXN0cyBvbiB0aGlzIG1hcCcpKSk7ZWxzZXt2YXIgaTtpZigiY3VzdG9tIj09PWUudHlwZSl7aWYoemUodGhpcyx0LnZhbGlkYXRlQ3VzdG9tU3R5bGVMYXllcihlKSkpcmV0dXJuO2k9dC5jcmVhdGVTdHlsZUxheWVyKGUpfWVsc2V7aWYoIm9iamVjdCI9PXR5cGVvZiBlLnNvdXJjZSYmKHRoaXMuYWRkU291cmNlKGEsZS5zb3VyY2UpLGU9dC5jbG9uZSQxKGUpLGU9dC5leHRlbmQoZSx7c291cmNlOmF9KSksdGhpcy5fdmFsaWRhdGUodC52YWxpZGF0ZVN0eWxlLmxheWVyLCJsYXllcnMuIithLGUse2FycmF5SW5kZXg6LTF9LG4pKXJldHVybjtpPXQuY3JlYXRlU3R5bGVMYXllcihlKSx0aGlzLl92YWxpZGF0ZUxheWVyKGkpLGkuc2V0RXZlbnRlZFBhcmVudCh0aGlzLHtsYXllcjp7aWQ6YX19KX12YXIgbz1yP3RoaXMuX29yZGVyLmluZGV4T2Yocik6dGhpcy5fb3JkZXIubGVuZ3RoO2lmKHImJi0xPT09byl0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoJ0xheWVyIHdpdGggaWQgIicrcisnIiBkb2VzIG5vdCBleGlzdCBvbiB0aGlzIG1hcC4nKSkpO2Vsc2V7aWYodGhpcy5fb3JkZXIuc3BsaWNlKG8sMCxhKSx0aGlzLl9sYXllck9yZGVyQ2hhbmdlZD0hMCx0aGlzLl9sYXllcnNbYV09aSx0aGlzLl9yZW1vdmVkTGF5ZXJzW2FdJiZpLnNvdXJjZSYmImN1c3RvbSIhPT1pLnR5cGUpe3ZhciBzPXRoaXMuX3JlbW92ZWRMYXllcnNbYV07ZGVsZXRlIHRoaXMuX3JlbW92ZWRMYXllcnNbYV0scy50eXBlIT09aS50eXBlP3RoaXMuX3VwZGF0ZWRTb3VyY2VzW2kuc291cmNlXT0iY2xlYXIiOih0aGlzLl91cGRhdGVkU291cmNlc1tpLnNvdXJjZV09InJlbG9hZCIsdGhpcy5zb3VyY2VDYWNoZXNbaS5zb3VyY2VdLnBhdXNlKCkpfXRoaXMuX3VwZGF0ZUxheWVyKGkpLGkub25BZGQmJmkub25BZGQodGhpcy5tYXApfX19LHIucHJvdG90eXBlLm1vdmVMYXllcj1mdW5jdGlvbihlLHIpe2lmKHRoaXMuX2NoZWNrTG9hZGVkKCksdGhpcy5fY2hhbmdlZD0hMCx0aGlzLl9sYXllcnNbZV0pe2lmKGUhPT1yKXt2YXIgbj10aGlzLl9vcmRlci5pbmRleE9mKGUpO3RoaXMuX29yZGVyLnNwbGljZShuLDEpO3ZhciBhPXI/dGhpcy5fb3JkZXIuaW5kZXhPZihyKTp0aGlzLl9vcmRlci5sZW5ndGg7ciYmLTE9PT1hP3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcignTGF5ZXIgd2l0aCBpZCAiJytyKyciIGRvZXMgbm90IGV4aXN0IG9uIHRoaXMgbWFwLicpKSk6KHRoaXMuX29yZGVyLnNwbGljZShhLDAsZSksdGhpcy5fbGF5ZXJPcmRlckNoYW5nZWQ9ITApfX1lbHNlIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIGxheWVyICciK2UrIicgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgYmUgbW92ZWQuIikpKX0sci5wcm90b3R5cGUucmVtb3ZlTGF5ZXI9ZnVuY3Rpb24oZSl7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgcj10aGlzLl9sYXllcnNbZV07aWYocil7ci5zZXRFdmVudGVkUGFyZW50KG51bGwpO3ZhciBuPXRoaXMuX29yZGVyLmluZGV4T2YoZSk7dGhpcy5fb3JkZXIuc3BsaWNlKG4sMSksdGhpcy5fbGF5ZXJPcmRlckNoYW5nZWQ9ITAsdGhpcy5fY2hhbmdlZD0hMCx0aGlzLl9yZW1vdmVkTGF5ZXJzW2VdPXIsZGVsZXRlIHRoaXMuX2xheWVyc1tlXSxkZWxldGUgdGhpcy5fdXBkYXRlZExheWVyc1tlXSxkZWxldGUgdGhpcy5fdXBkYXRlZFBhaW50UHJvcHNbZV0sci5vblJlbW92ZSYmci5vblJlbW92ZSh0aGlzLm1hcCl9ZWxzZSB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIHJlbW92ZWQuIikpKX0sci5wcm90b3R5cGUuZ2V0TGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xheWVyc1t0XX0sci5wcm90b3R5cGUuc2V0TGF5ZXJab29tUmFuZ2U9ZnVuY3Rpb24oZSxyLG4pe3RoaXMuX2NoZWNrTG9hZGVkKCk7dmFyIGE9dGhpcy5nZXRMYXllcihlKTthP2EubWluem9vbT09PXImJmEubWF4em9vbT09PW58fChudWxsIT1yJiYoYS5taW56b29tPXIpLG51bGwhPW4mJihhLm1heHpvb209biksdGhpcy5fdXBkYXRlTGF5ZXIoYSkpOnRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIGxheWVyICciK2UrIicgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgaGF2ZSB6b29tIGV4dGVudC4iKSkpfSxyLnByb3RvdHlwZS5zZXRGaWx0ZXI9ZnVuY3Rpb24oZSxyLG4pe3ZvaWQgMD09PW4mJihuPXt9KSx0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciBhPXRoaXMuZ2V0TGF5ZXIoZSk7aWYoYSl7aWYoIXQuZGVlcEVxdWFsKGEuZmlsdGVyLHIpKXJldHVybiBudWxsPT1yPyhhLmZpbHRlcj12b2lkIDAsdm9pZCB0aGlzLl91cGRhdGVMYXllcihhKSk6dm9pZCh0aGlzLl92YWxpZGF0ZSh0LnZhbGlkYXRlU3R5bGUuZmlsdGVyLCJsYXllcnMuIithLmlkKyIuZmlsdGVyIixyLG51bGwsbil8fChhLmZpbHRlcj10LmNsb25lJDEociksdGhpcy5fdXBkYXRlTGF5ZXIoYSkpKX1lbHNlIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIGxheWVyICciK2UrIicgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgYmUgZmlsdGVyZWQuIikpKX0sci5wcm90b3R5cGUuZ2V0RmlsdGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0LmNsb25lJDEodGhpcy5nZXRMYXllcihlKS5maWx0ZXIpfSxyLnByb3RvdHlwZS5zZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbihlLHIsbixhKXt2b2lkIDA9PT1hJiYoYT17fSksdGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgaT10aGlzLmdldExheWVyKGUpO2k/dC5kZWVwRXF1YWwoaS5nZXRMYXlvdXRQcm9wZXJ0eShyKSxuKXx8KGkuc2V0TGF5b3V0UHJvcGVydHkocixuLGEpLHRoaXMuX3VwZGF0ZUxheWVyKGkpKTp0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIHN0eWxlZC4iKSkpfSxyLnByb3RvdHlwZS5nZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMuZ2V0TGF5ZXIoZSk7aWYobilyZXR1cm4gbi5nZXRMYXlvdXRQcm9wZXJ0eShyKTt0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZS4iKSkpfSxyLnByb3RvdHlwZS5zZXRQYWludFByb3BlcnR5PWZ1bmN0aW9uKGUscixuLGEpe3ZvaWQgMD09PWEmJihhPXt9KSx0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciBpPXRoaXMuZ2V0TGF5ZXIoZSk7aT90LmRlZXBFcXVhbChpLmdldFBhaW50UHJvcGVydHkociksbil8fChpLnNldFBhaW50UHJvcGVydHkocixuLGEpJiZ0aGlzLl91cGRhdGVMYXllcihpKSx0aGlzLl9jaGFuZ2VkPSEwLHRoaXMuX3VwZGF0ZWRQYWludFByb3BzW2VdPSEwKTp0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIHN0eWxlZC4iKSkpfSxyLnByb3RvdHlwZS5nZXRQYWludFByb3BlcnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0TGF5ZXIodCkuZ2V0UGFpbnRQcm9wZXJ0eShlKX0sci5wcm90b3R5cGUuc2V0RmVhdHVyZVN0YXRlPWZ1bmN0aW9uKGUscil7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgbj1lLnNvdXJjZSxhPWUuc291cmNlTGF5ZXIsaT10aGlzLnNvdXJjZUNhY2hlc1tuXSxvPXBhcnNlSW50KGUuaWQsMTApO2lmKHZvaWQgMCE9PWkpe3ZhciBzPWkuZ2V0U291cmNlKCkudHlwZTsiZ2VvanNvbiI9PT1zJiZhP3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiR2VvSlNPTiBzb3VyY2VzIGNhbm5vdCBoYXZlIGEgc291cmNlTGF5ZXIgcGFyYW1ldGVyLiIpKSk6InZlY3RvciIhPT1zfHxhP2lzTmFOKG8pfHxvPDA/dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUgZmVhdHVyZSBpZCBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZCBhbmQgbm9uLW5lZ2F0aXZlLiIpKSk6aS5zZXRGZWF0dXJlU3RhdGUoYSxvLHIpOnRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIHNvdXJjZUxheWVyIHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkIGZvciB2ZWN0b3Igc291cmNlIHR5cGVzLiIpKSl9ZWxzZSB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBzb3VyY2UgJyIrbisiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuIikpKX0sci5wcm90b3R5cGUucmVtb3ZlRmVhdHVyZVN0YXRlPWZ1bmN0aW9uKGUscil7dGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgbj1lLnNvdXJjZSxhPXRoaXMuc291cmNlQ2FjaGVzW25dO2lmKHZvaWQgMCE9PWEpe3ZhciBpPWEuZ2V0U291cmNlKCkudHlwZSxvPSJ2ZWN0b3IiPT09aT9lLnNvdXJjZUxheWVyOnZvaWQgMCxzPXBhcnNlSW50KGUuaWQsMTApOyJ2ZWN0b3IiIT09aXx8bz92b2lkIDAhPT1lLmlkJiZpc05hTihzKXx8czwwP3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIGZlYXR1cmUgaWQgcGFyYW1ldGVyIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiIpKSk6ciYmInN0cmluZyIhPXR5cGVvZiBlLmlkJiYibnVtYmVyIiE9dHlwZW9mIGUuaWQ/dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJBIGZlYXR1cmUgaWQgaXMgcmVxdXJlZCB0byByZW1vdmUgaXRzIHNwZWNpZmljIHN0YXRlIHByb3BlcnR5LiIpKSk6YS5yZW1vdmVGZWF0dXJlU3RhdGUobyxzLHIpOnRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIHNvdXJjZUxheWVyIHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkIGZvciB2ZWN0b3Igc291cmNlIHR5cGVzLiIpKSl9ZWxzZSB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBzb3VyY2UgJyIrbisiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuIikpKX0sci5wcm90b3R5cGUuZ2V0RmVhdHVyZVN0YXRlPWZ1bmN0aW9uKGUpe3RoaXMuX2NoZWNrTG9hZGVkKCk7dmFyIHI9ZS5zb3VyY2Usbj1lLnNvdXJjZUxheWVyLGE9dGhpcy5zb3VyY2VDYWNoZXNbcl0saT1wYXJzZUludChlLmlkLDEwKTtpZih2b2lkIDAhPT1hKWlmKCJ2ZWN0b3IiIT09YS5nZXRTb3VyY2UoKS50eXBlfHxuKXtpZighKGlzTmFOKGkpfHxpPDApKXJldHVybiBhLmdldEZlYXR1cmVTdGF0ZShuLGkpO3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIGZlYXR1cmUgaWQgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWQgYW5kIG5vbi1uZWdhdGl2ZS4iKSkpfWVsc2UgdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUgc291cmNlTGF5ZXIgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWQgZm9yIHZlY3RvciBzb3VyY2UgdHlwZXMuIikpKTtlbHNlIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIHNvdXJjZSAnIityKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZS4iKSkpfSxyLnByb3RvdHlwZS5nZXRUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZXh0ZW5kKHtkdXJhdGlvbjozMDAsZGVsYXk6MH0sdGhpcy5zdHlsZXNoZWV0JiZ0aGlzLnN0eWxlc2hlZXQudHJhbnNpdGlvbil9LHIucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0LmZpbHRlck9iamVjdCh7dmVyc2lvbjp0aGlzLnN0eWxlc2hlZXQudmVyc2lvbixuYW1lOnRoaXMuc3R5bGVzaGVldC5uYW1lLG1ldGFkYXRhOnRoaXMuc3R5bGVzaGVldC5tZXRhZGF0YSxsaWdodDp0aGlzLnN0eWxlc2hlZXQubGlnaHQsY2VudGVyOnRoaXMuc3R5bGVzaGVldC5jZW50ZXIsem9vbTp0aGlzLnN0eWxlc2hlZXQuem9vbSxiZWFyaW5nOnRoaXMuc3R5bGVzaGVldC5iZWFyaW5nLHBpdGNoOnRoaXMuc3R5bGVzaGVldC5waXRjaCxzcHJpdGU6dGhpcy5zdHlsZXNoZWV0LnNwcml0ZSxnbHlwaHM6dGhpcy5zdHlsZXNoZWV0LmdseXBocyx0cmFuc2l0aW9uOnRoaXMuc3R5bGVzaGVldC50cmFuc2l0aW9uLHNvdXJjZXM6dC5tYXBPYmplY3QodGhpcy5zb3VyY2VDYWNoZXMsZnVuY3Rpb24odCl7cmV0dXJuIHQuc2VyaWFsaXplKCl9KSxsYXllcnM6dGhpcy5fc2VyaWFsaXplTGF5ZXJzKHRoaXMuX29yZGVyKX0sZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXR9KX0sci5wcm90b3R5cGUuX3VwZGF0ZUxheWVyPWZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZWRMYXllcnNbdC5pZF09ITAsdC5zb3VyY2UmJiF0aGlzLl91cGRhdGVkU291cmNlc1t0LnNvdXJjZV0mJih0aGlzLl91cGRhdGVkU291cmNlc1t0LnNvdXJjZV09InJlbG9hZCIsdGhpcy5zb3VyY2VDYWNoZXNbdC5zb3VyY2VdLnBhdXNlKCkpLHRoaXMuX2NoYW5nZWQ9ITB9LHIucHJvdG90eXBlLl9mbGF0dGVuQW5kU29ydFJlbmRlcmVkRmVhdHVyZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMscj1mdW5jdGlvbih0KXtyZXR1cm4iZmlsbC1leHRydXNpb24iPT09ZS5fbGF5ZXJzW3RdLnR5cGV9LG49e30sYT1bXSxpPXRoaXMuX29yZGVyLmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgbz10aGlzLl9vcmRlcltpXTtpZihyKG8pKXtuW29dPWk7Zm9yKHZhciBzPTAsbD10O3M8bC5sZW5ndGg7cys9MSl7dmFyIGM9bFtzXVtvXTtpZihjKWZvcih2YXIgdT0wLGg9Yzt1PGgubGVuZ3RoO3UrPTEpe3ZhciBmPWhbdV07YS5wdXNoKGYpfX19fWEuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLmludGVyc2VjdGlvblotdC5pbnRlcnNlY3Rpb25afSk7Zm9yKHZhciBwPVtdLGQ9dGhpcy5fb3JkZXIubGVuZ3RoLTE7ZD49MDtkLS0pe3ZhciBnPXRoaXMuX29yZGVyW2RdO2lmKHIoZykpZm9yKHZhciB2PWEubGVuZ3RoLTE7dj49MDt2LS0pe3ZhciBtPWFbdl0uZmVhdHVyZTtpZihuW20ubGF5ZXIuaWRdPGQpYnJlYWs7cC5wdXNoKG0pLGEucG9wKCl9ZWxzZSBmb3IodmFyIHk9MCx4PXQ7eTx4Lmxlbmd0aDt5Kz0xKXt2YXIgYj14W3ldW2ddO2lmKGIpZm9yKHZhciBfPTAsdz1iO188dy5sZW5ndGg7Xys9MSl7dmFyIGs9d1tfXTtwLnB1c2goay5mZWF0dXJlKX19fXJldHVybiBwfSxyLnByb3RvdHlwZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXM9ZnVuY3Rpb24oZSxyLG4pe3ImJnIuZmlsdGVyJiZ0aGlzLl92YWxpZGF0ZSh0LnZhbGlkYXRlU3R5bGUuZmlsdGVyLCJxdWVyeVJlbmRlcmVkRmVhdHVyZXMuZmlsdGVyIixyLmZpbHRlcixudWxsLHIpO3ZhciBhPXt9O2lmKHImJnIubGF5ZXJzKXtpZighQXJyYXkuaXNBcnJheShyLmxheWVycykpcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigicGFyYW1ldGVycy5sYXllcnMgbXVzdCBiZSBhbiBBcnJheS4iKSkpLFtdO2Zvcih2YXIgaT0wLG89ci5sYXllcnM7aTxvLmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ldLGw9dGhpcy5fbGF5ZXJzW3NdO2lmKCFsKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitzKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIHF1ZXJpZWQgZm9yIGZlYXR1cmVzLiIpKSksW107YVtsLnNvdXJjZV09ITB9fXZhciBjPVtdO2Zvcih2YXIgdSBpbiB0aGlzLnNvdXJjZUNhY2hlcylyLmxheWVycyYmIWFbdV18fGMucHVzaChGKHRoaXMuc291cmNlQ2FjaGVzW3VdLHRoaXMuX2xheWVycyxlLHIsbikpO3JldHVybiB0aGlzLnBsYWNlbWVudCYmYy5wdXNoKGZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtmb3IodmFyIG89e30scz1hLnF1ZXJ5UmVuZGVyZWRTeW1ib2xzKHIpLGw9W10sYz0wLHU9T2JqZWN0LmtleXMocykubWFwKE51bWJlcik7Yzx1Lmxlbmd0aDtjKz0xKXt2YXIgaD11W2NdO2wucHVzaChpW2hdKX1sLnNvcnQoQik7Zm9yKHZhciBmPWZ1bmN0aW9uKCl7dmFyIGU9ZFtwXSxyPWUuZmVhdHVyZUluZGV4Lmxvb2t1cFN5bWJvbEZlYXR1cmVzKHNbZS5idWNrZXRJbnN0YW5jZUlkXSxlLmJ1Y2tldEluZGV4LGUuc291cmNlTGF5ZXJJbmRleCxuLmZpbHRlcixuLmxheWVycyx0KTtmb3IodmFyIGEgaW4gcil7dmFyIGk9b1thXT1vW2FdfHxbXSxsPXJbYV07bC5zb3J0KGZ1bmN0aW9uKHQscil7dmFyIG49ZS5mZWF0dXJlU29ydE9yZGVyO2lmKG4pe3ZhciBhPW4uaW5kZXhPZih0LmZlYXR1cmVJbmRleCk7cmV0dXJuIG4uaW5kZXhPZihyLmZlYXR1cmVJbmRleCktYX1yZXR1cm4gci5mZWF0dXJlSW5kZXgtdC5mZWF0dXJlSW5kZXh9KTtmb3IodmFyIGM9MCx1PWw7Yzx1Lmxlbmd0aDtjKz0xKXt2YXIgaD11W2NdO2kucHVzaChoKX19fSxwPTAsZD1sO3A8ZC5sZW5ndGg7cCs9MSlmKCk7dmFyIGc9ZnVuY3Rpb24ocil7b1tyXS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBhPW4uZmVhdHVyZSxpPXRbcl0sbz1lW2kuc291cmNlXS5nZXRGZWF0dXJlU3RhdGUoYS5sYXllclsic291cmNlLWxheWVyIl0sYS5pZCk7YS5zb3VyY2U9YS5sYXllci5zb3VyY2UsYS5sYXllclsic291cmNlLWxheWVyIl0mJihhLnNvdXJjZUxheWVyPWEubGF5ZXJbInNvdXJjZS1sYXllciJdKSxhLnN0YXRlPW99KX07Zm9yKHZhciB2IGluIG8pZyh2KTtyZXR1cm4gb30odGhpcy5fbGF5ZXJzLHRoaXMuc291cmNlQ2FjaGVzLGUscix0aGlzLnBsYWNlbWVudC5jb2xsaXNpb25JbmRleCx0aGlzLnBsYWNlbWVudC5yZXRhaW5lZFF1ZXJ5RGF0YSkpLHRoaXMuX2ZsYXR0ZW5BbmRTb3J0UmVuZGVyZWRGZWF0dXJlcyhjKX0sci5wcm90b3R5cGUucXVlcnlTb3VyY2VGZWF0dXJlcz1mdW5jdGlvbihlLHIpe3ImJnIuZmlsdGVyJiZ0aGlzLl92YWxpZGF0ZSh0LnZhbGlkYXRlU3R5bGUuZmlsdGVyLCJxdWVyeVNvdXJjZUZlYXR1cmVzLmZpbHRlciIsci5maWx0ZXIsbnVsbCxyKTt2YXIgbj10aGlzLnNvdXJjZUNhY2hlc1tlXTtyZXR1cm4gbj9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmdldFJlbmRlcmFibGVJZHMoKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2V0VGlsZUJ5SUQoZSl9KSxuPVtdLGE9e30saT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldLHM9by50aWxlSUQuY2Fub25pY2FsLmtleTthW3NdfHwoYVtzXT0hMCxvLnF1ZXJ5U291cmNlRmVhdHVyZXMobixlKSl9cmV0dXJuIG59KG4scik6W119LHIucHJvdG90eXBlLmFkZFNvdXJjZVR5cGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByLmdldFNvdXJjZVR5cGUodCk/bihuZXcgRXJyb3IoJ0Egc291cmNlIHR5cGUgY2FsbGVkICInK3QrJyIgYWxyZWFkeSBleGlzdHMuJykpOihyLnNldFNvdXJjZVR5cGUodCxlKSxlLndvcmtlclNvdXJjZVVSTD92b2lkIHRoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoImxvYWRXb3JrZXJTb3VyY2UiLHtuYW1lOnQsdXJsOmUud29ya2VyU291cmNlVVJMfSxuKTpuKG51bGwsbnVsbCkpfSxyLnByb3RvdHlwZS5nZXRMaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxpZ2h0LmdldExpZ2h0KCl9LHIucHJvdG90eXBlLnNldExpZ2h0PWZ1bmN0aW9uKGUscil7dm9pZCAwPT09ciYmKHI9e30pLHRoaXMuX2NoZWNrTG9hZGVkKCk7dmFyIG49dGhpcy5saWdodC5nZXRMaWdodCgpLGE9ITE7Zm9yKHZhciBpIGluIGUpaWYoIXQuZGVlcEVxdWFsKGVbaV0sbltpXSkpe2E9ITA7YnJlYWt9aWYoYSl7dmFyIG89e25vdzp0LmJyb3dzZXIubm93KCksdHJhbnNpdGlvbjp0LmV4dGVuZCh7ZHVyYXRpb246MzAwLGRlbGF5OjB9LHRoaXMuc3R5bGVzaGVldC50cmFuc2l0aW9uKX07dGhpcy5saWdodC5zZXRMaWdodChlLHIpLHRoaXMubGlnaHQudXBkYXRlVHJhbnNpdGlvbnMobyl9fSxyLnByb3RvdHlwZS5fdmFsaWRhdGU9ZnVuY3Rpb24oZSxyLG4sYSxpKXtyZXR1cm4gdm9pZCAwPT09aSYmKGk9e30pLCghaXx8ITEhPT1pLnZhbGlkYXRlKSYmemUodGhpcyxlLmNhbGwodC52YWxpZGF0ZVN0eWxlLHQuZXh0ZW5kKHtrZXk6cixzdHlsZTp0aGlzLnNlcmlhbGl6ZSgpLHZhbHVlOm4sc3R5bGVTcGVjOnQuc3R5bGVTcGVjfSxhKSkpfSxyLnByb3RvdHlwZS5fcmVtb3ZlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuX3JlcXVlc3QmJih0aGlzLl9yZXF1ZXN0LmNhbmNlbCgpLHRoaXMuX3JlcXVlc3Q9bnVsbCksdGhpcy5fc3ByaXRlUmVxdWVzdCYmKHRoaXMuX3Nwcml0ZVJlcXVlc3QuY2FuY2VsKCksdGhpcy5fc3ByaXRlUmVxdWVzdD1udWxsKSx0LmV2ZW50ZWQub2ZmKCJwbHVnaW5BdmFpbGFibGUiLHRoaXMuX3J0bFRleHRQbHVnaW5DYWxsYmFjayksdGhpcy5zb3VyY2VDYWNoZXMpdGhpcy5zb3VyY2VDYWNoZXNbZV0uY2xlYXJUaWxlcygpO3RoaXMuZGlzcGF0Y2hlci5yZW1vdmUoKX0sci5wcm90b3R5cGUuX2NsZWFyU291cmNlPWZ1bmN0aW9uKHQpe3RoaXMuc291cmNlQ2FjaGVzW3RdLmNsZWFyVGlsZXMoKX0sci5wcm90b3R5cGUuX3JlbG9hZFNvdXJjZT1mdW5jdGlvbih0KXt0aGlzLnNvdXJjZUNhY2hlc1t0XS5yZXN1bWUoKSx0aGlzLnNvdXJjZUNhY2hlc1t0XS5yZWxvYWQoKX0sci5wcm90b3R5cGUuX3VwZGF0ZVNvdXJjZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuc291cmNlQ2FjaGVzKXRoaXMuc291cmNlQ2FjaGVzW2VdLnVwZGF0ZSh0KX0sci5wcm90b3R5cGUuX2dlbmVyYXRlQ29sbGlzaW9uQm94ZXM9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5zb3VyY2VDYWNoZXMpdGhpcy5fcmVsb2FkU291cmNlKHQpfSxyLnByb3RvdHlwZS5fdXBkYXRlUGxhY2VtZW50PWZ1bmN0aW9uKGUscixuLGEpe2Zvcih2YXIgaT0hMSxvPSExLHM9e30sbD0wLGM9dGhpcy5fb3JkZXI7bDxjLmxlbmd0aDtsKz0xKXt2YXIgdT1jW2xdLGg9dGhpcy5fbGF5ZXJzW3VdO2lmKCJzeW1ib2wiPT09aC50eXBlKXtpZighc1toLnNvdXJjZV0pe3ZhciBmPXRoaXMuc291cmNlQ2FjaGVzW2guc291cmNlXTtzW2guc291cmNlXT1mLmdldFJlbmRlcmFibGVJZHMoITApLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZi5nZXRUaWxlQnlJRCh0KX0pLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS50aWxlSUQub3ZlcnNjYWxlZFotdC50aWxlSUQub3ZlcnNjYWxlZFp8fCh0LnRpbGVJRC5pc0xlc3NUaGFuKGUudGlsZUlEKT8tMToxKX0pfXZhciBwPXRoaXMuY3Jvc3NUaWxlU3ltYm9sSW5kZXguYWRkTGF5ZXIoaCxzW2guc291cmNlXSxlLmNlbnRlci5sbmcpO2k9aXx8cH19dGhpcy5jcm9zc1RpbGVTeW1ib2xJbmRleC5wcnVuZVVudXNlZExheWVycyh0aGlzLl9vcmRlcik7dmFyIGQ9dGhpcy5fbGF5ZXJPcmRlckNoYW5nZWR8fDA9PT1uO2lmKChkfHwhdGhpcy5wYXVzZWFibGVQbGFjZW1lbnR8fHRoaXMucGF1c2VhYmxlUGxhY2VtZW50LmlzRG9uZSgpJiYhdGhpcy5wbGFjZW1lbnQuc3RpbGxSZWNlbnQodC5icm93c2VyLm5vdygpKSkmJih0aGlzLnBhdXNlYWJsZVBsYWNlbWVudD1uZXcgU2UoZSx0aGlzLl9vcmRlcixkLHIsbixhLHRoaXMucGxhY2VtZW50KSx0aGlzLl9sYXllck9yZGVyQ2hhbmdlZD0hMSksdGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuaXNEb25lKCk/dGhpcy5wbGFjZW1lbnQuc2V0U3RhbGUoKToodGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuY29udGludWVQbGFjZW1lbnQodGhpcy5fb3JkZXIsdGhpcy5fbGF5ZXJzLHMpLHRoaXMucGF1c2VhYmxlUGxhY2VtZW50LmlzRG9uZSgpJiYodGhpcy5wbGFjZW1lbnQ9dGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuY29tbWl0KHQuYnJvd3Nlci5ub3coKSksbz0hMCksaSYmdGhpcy5wYXVzZWFibGVQbGFjZW1lbnQucGxhY2VtZW50LnNldFN0YWxlKCkpLG98fGkpZm9yKHZhciBnPTAsdj10aGlzLl9vcmRlcjtnPHYubGVuZ3RoO2crPTEpe3ZhciBtPXZbZ10seT10aGlzLl9sYXllcnNbbV07InN5bWJvbCI9PT15LnR5cGUmJnRoaXMucGxhY2VtZW50LnVwZGF0ZUxheWVyT3BhY2l0aWVzKHksc1t5LnNvdXJjZV0pfXJldHVybiF0aGlzLnBhdXNlYWJsZVBsYWNlbWVudC5pc0RvbmUoKXx8dGhpcy5wbGFjZW1lbnQuaGFzVHJhbnNpdGlvbnModC5icm93c2VyLm5vdygpKX0sci5wcm90b3R5cGUuX3JlbGVhc2VTeW1ib2xGYWRlVGlsZXM9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5zb3VyY2VDYWNoZXMpdGhpcy5zb3VyY2VDYWNoZXNbdF0ucmVsZWFzZVN5bWJvbEZhZGVUaWxlcygpfSxyLnByb3RvdHlwZS5nZXRJbWFnZXM9ZnVuY3Rpb24odCxlLHIpe3RoaXMuaW1hZ2VNYW5hZ2VyLmdldEltYWdlcyhlLmljb25zLHIpfSxyLnByb3RvdHlwZS5nZXRHbHlwaHM9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2x5cGhNYW5hZ2VyLmdldEdseXBocyhlLnN0YWNrcyxyKX0sci5wcm90b3R5cGUuZ2V0UmVzb3VyY2U9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0Lm1ha2VSZXF1ZXN0KHIsbil9LHJ9KHQuRXZlbnRlZCk7UmUuZ2V0U291cmNlVHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gSVt0XX0sUmUuc2V0U291cmNlVHlwZT1mdW5jdGlvbih0LGUpe0lbdF09ZX0sUmUucmVnaXN0ZXJGb3JQbHVnaW5BdmFpbGFiaWxpdHk9dC5yZWdpc3RlckZvclBsdWdpbkF2YWlsYWJpbGl0eTt2YXIgRmU9dC5jcmVhdGVMYXlvdXQoW3tuYW1lOiJhX3BvcyIsdHlwZToiSW50MTYiLGNvbXBvbmVudHM6Mn1dKSxCZT1jcigiI2lmZGVmIEdMX0VTXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNlbHNlXG4jaWYgIWRlZmluZWQobG93cClcbiNkZWZpbmUgbG93cFxuI2VuZGlmXG4jaWYgIWRlZmluZWQobWVkaXVtcClcbiNkZWZpbmUgbWVkaXVtcFxuI2VuZGlmXG4jaWYgIWRlZmluZWQoaGlnaHApXG4jZGVmaW5lIGhpZ2hwXG4jZW5kaWZcbiNlbmRpZiIsIiNpZmRlZiBHTF9FU1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2Vsc2VcbiNpZiAhZGVmaW5lZChsb3dwKVxuI2RlZmluZSBsb3dwXG4jZW5kaWZcbiNpZiAhZGVmaW5lZChtZWRpdW1wKVxuI2RlZmluZSBtZWRpdW1wXG4jZW5kaWZcbiNpZiAhZGVmaW5lZChoaWdocClcbiNkZWZpbmUgaGlnaHBcbiNlbmRpZlxuI2VuZGlmXG52ZWMyIHVucGFja19mbG9hdChjb25zdCBmbG9hdCBwYWNrZWRWYWx1ZSkge2ludCBwYWNrZWRJbnRWYWx1ZT1pbnQocGFja2VkVmFsdWUpO2ludCB2MD1wYWNrZWRJbnRWYWx1ZS8yNTY7cmV0dXJuIHZlYzIodjAscGFja2VkSW50VmFsdWUtdjAqMjU2KTt9dmVjMiB1bnBhY2tfb3BhY2l0eShjb25zdCBmbG9hdCBwYWNrZWRPcGFjaXR5KSB7aW50IGludE9wYWNpdHk9aW50KHBhY2tlZE9wYWNpdHkpLzI7cmV0dXJuIHZlYzIoZmxvYXQoaW50T3BhY2l0eSkvMTI3LjAsbW9kKHBhY2tlZE9wYWNpdHksMi4wKSk7fXZlYzQgZGVjb2RlX2NvbG9yKGNvbnN0IHZlYzIgZW5jb2RlZENvbG9yKSB7cmV0dXJuIHZlYzQodW5wYWNrX2Zsb2F0KGVuY29kZWRDb2xvclswXSkvMjU1LjAsdW5wYWNrX2Zsb2F0KGVuY29kZWRDb2xvclsxXSkvMjU1LjBcbik7fWZsb2F0IHVucGFja19taXhfdmVjMihjb25zdCB2ZWMyIHBhY2tlZFZhbHVlLGNvbnN0IGZsb2F0IHQpIHtyZXR1cm4gbWl4KHBhY2tlZFZhbHVlWzBdLHBhY2tlZFZhbHVlWzFdLHQpO312ZWM0IHVucGFja19taXhfY29sb3IoY29uc3QgdmVjNCBwYWNrZWRDb2xvcnMsY29uc3QgZmxvYXQgdCkge3ZlYzQgbWluQ29sb3I9ZGVjb2RlX2NvbG9yKHZlYzIocGFja2VkQ29sb3JzWzBdLHBhY2tlZENvbG9yc1sxXSkpO3ZlYzQgbWF4Q29sb3I9ZGVjb2RlX2NvbG9yKHZlYzIocGFja2VkQ29sb3JzWzJdLHBhY2tlZENvbG9yc1szXSkpO3JldHVybiBtaXgobWluQ29sb3IsbWF4Q29sb3IsdCk7fXZlYzIgZ2V0X3BhdHRlcm5fcG9zKGNvbnN0IHZlYzIgcGl4ZWxfY29vcmRfdXBwZXIsY29uc3QgdmVjMiBwaXhlbF9jb29yZF9sb3dlcixjb25zdCB2ZWMyIHBhdHRlcm5fc2l6ZSxjb25zdCBmbG9hdCB0aWxlX3VuaXRzX3RvX3BpeGVscyxjb25zdCB2ZWMyIHBvcykge3ZlYzIgb2Zmc2V0PW1vZChtb2QobW9kKHBpeGVsX2Nvb3JkX3VwcGVyLHBhdHRlcm5fc2l6ZSkqMjU2LjAscGF0dGVybl9zaXplKSoyNTYuMCtwaXhlbF9jb29yZF9sb3dlcixwYXR0ZXJuX3NpemUpO3JldHVybiAodGlsZV91bml0c190b19waXhlbHMqcG9zK29mZnNldCkvcGF0dGVybl9zaXplO30iKSxOZT1jcigidW5pZm9ybSB2ZWM0IHVfY29sb3I7dW5pZm9ybSBmbG9hdCB1X29wYWNpdHk7dm9pZCBtYWluKCkge2dsX0ZyYWdDb2xvcj11X2NvbG9yKnVfb3BhY2l0eTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJhdHRyaWJ1dGUgdmVjMiBhX3Bvczt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt9IiksamU9Y3IoInVuaWZvcm0gdmVjMiB1X3BhdHRlcm5fdGxfYTt1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX2JyX2E7dW5pZm9ybSB2ZWMyIHVfcGF0dGVybl90bF9iO3VuaWZvcm0gdmVjMiB1X3BhdHRlcm5fYnJfYjt1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3VuaWZvcm0gZmxvYXQgdV9taXg7dW5pZm9ybSBmbG9hdCB1X29wYWNpdHk7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt2YXJ5aW5nIHZlYzIgdl9wb3NfYTt2YXJ5aW5nIHZlYzIgdl9wb3NfYjt2b2lkIG1haW4oKSB7dmVjMiBpbWFnZWNvb3JkPW1vZCh2X3Bvc19hLDEuMCk7dmVjMiBwb3M9bWl4KHVfcGF0dGVybl90bF9hL3VfdGV4c2l6ZSx1X3BhdHRlcm5fYnJfYS91X3RleHNpemUsaW1hZ2Vjb29yZCk7dmVjNCBjb2xvcjE9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTt2ZWMyIGltYWdlY29vcmRfYj1tb2Qodl9wb3NfYiwxLjApO3ZlYzIgcG9zMj1taXgodV9wYXR0ZXJuX3RsX2IvdV90ZXhzaXplLHVfcGF0dGVybl9icl9iL3VfdGV4c2l6ZSxpbWFnZWNvb3JkX2IpO3ZlYzQgY29sb3IyPXRleHR1cmUyRCh1X2ltYWdlLHBvczIpO2dsX0ZyYWdDb2xvcj1taXgoY29sb3IxLGNvbG9yMix1X21peCkqdV9vcGFjaXR5O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYTt1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3NpemVfYjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIGZsb2F0IHVfc2NhbGVfYTt1bmlmb3JtIGZsb2F0IHVfc2NhbGVfYjt1bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zX2E7dmFyeWluZyB2ZWMyIHZfcG9zX2I7dm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt2X3Bvc19hPWdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93ZXIsdV9zY2FsZV9hKnVfcGF0dGVybl9zaXplX2EsdV90aWxlX3VuaXRzX3RvX3BpeGVscyxhX3Bvcyk7dl9wb3NfYj1nZXRfcGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVsX2Nvb3JkX2xvd2VyLHVfc2NhbGVfYip1X3BhdHRlcm5fc2l6ZV9iLHVfdGlsZV91bml0c190b19waXhlbHMsYV9wb3MpO30iKSxWZT1jcigidmFyeWluZyB2ZWMzIHZfZGF0YTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHJhZGl1c1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgc3Ryb2tlX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgc3Ryb2tlX3dpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgcmFkaXVzXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBzdHJva2VfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgc3Ryb2tlX3dpZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IHN0cm9rZV9vcGFjaXR5XG52ZWMyIGV4dHJ1ZGU9dl9kYXRhLnh5O2Zsb2F0IGV4dHJ1ZGVfbGVuZ3RoPWxlbmd0aChleHRydWRlKTtsb3dwIGZsb2F0IGFudGlhbGlhc2JsdXI9dl9kYXRhLno7ZmxvYXQgYW50aWFsaWFzZWRfYmx1cj0tbWF4KGJsdXIsYW50aWFsaWFzYmx1cik7ZmxvYXQgb3BhY2l0eV90PXNtb290aHN0ZXAoMC4wLGFudGlhbGlhc2VkX2JsdXIsZXh0cnVkZV9sZW5ndGgtMS4wKTtmbG9hdCBjb2xvcl90PXN0cm9rZV93aWR0aCA8IDAuMDEgPyAwLjAgOiBzbW9vdGhzdGVwKGFudGlhbGlhc2VkX2JsdXIsMC4wLGV4dHJ1ZGVfbGVuZ3RoLXJhZGl1cy8ocmFkaXVzK3N0cm9rZV93aWR0aCkpO2dsX0ZyYWdDb2xvcj1vcGFjaXR5X3QqbWl4KGNvbG9yKm9wYWNpdHksc3Ryb2tlX2NvbG9yKnN0cm9rZV9vcGFjaXR5LGNvbG9yX3QpO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIGJvb2wgdV9zY2FsZV93aXRoX21hcDt1bmlmb3JtIGJvb2wgdV9waXRjaF93aXRoX21hcDt1bmlmb3JtIHZlYzIgdV9leHRydWRlX3NjYWxlO3VuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTthdHRyaWJ1dGUgdmVjMiBhX3Bvczt2YXJ5aW5nIHZlYzMgdl9kYXRhO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgcmFkaXVzXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBzdHJva2VfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBzdHJva2Vfd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBzdHJva2Vfb3BhY2l0eVxudm9pZCBtYWluKHZvaWQpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgcmFkaXVzXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBzdHJva2VfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgc3Ryb2tlX3dpZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IHN0cm9rZV9vcGFjaXR5XG52ZWMyIGV4dHJ1ZGU9dmVjMihtb2QoYV9wb3MsMi4wKSoyLjAtMS4wKTt2ZWMyIGNpcmNsZV9jZW50ZXI9Zmxvb3IoYV9wb3MqMC41KTtpZiAodV9waXRjaF93aXRoX21hcCkge3ZlYzIgY29ybmVyX3Bvc2l0aW9uPWNpcmNsZV9jZW50ZXI7aWYgKHVfc2NhbGVfd2l0aF9tYXApIHtjb3JuZXJfcG9zaXRpb24rPWV4dHJ1ZGUqKHJhZGl1cytzdHJva2Vfd2lkdGgpKnVfZXh0cnVkZV9zY2FsZTt9IGVsc2Uge3ZlYzQgcHJvamVjdGVkX2NlbnRlcj11X21hdHJpeCp2ZWM0KGNpcmNsZV9jZW50ZXIsMCwxKTtjb3JuZXJfcG9zaXRpb24rPWV4dHJ1ZGUqKHJhZGl1cytzdHJva2Vfd2lkdGgpKnVfZXh0cnVkZV9zY2FsZSoocHJvamVjdGVkX2NlbnRlci53L3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSk7fWdsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoY29ybmVyX3Bvc2l0aW9uLDAsMSk7fSBlbHNlIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGNpcmNsZV9jZW50ZXIsMCwxKTtpZiAodV9zY2FsZV93aXRoX21hcCkge2dsX1Bvc2l0aW9uLnh5Kz1leHRydWRlKihyYWRpdXMrc3Ryb2tlX3dpZHRoKSp1X2V4dHJ1ZGVfc2NhbGUqdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO30gZWxzZSB7Z2xfUG9zaXRpb24ueHkrPWV4dHJ1ZGUqKHJhZGl1cytzdHJva2Vfd2lkdGgpKnVfZXh0cnVkZV9zY2FsZSpnbF9Qb3NpdGlvbi53O319bG93cCBmbG9hdCBhbnRpYWxpYXNibHVyPTEuMC91X2RldmljZV9waXhlbF9yYXRpby8ocmFkaXVzK3N0cm9rZV93aWR0aCk7dl9kYXRhPXZlYzMoZXh0cnVkZS54LGV4dHJ1ZGUueSxhbnRpYWxpYXNibHVyKTt9IiksVWU9Y3IoInZvaWQgbWFpbigpIHtnbF9GcmFnQ29sb3I9dmVjNCgxLjApO30iLCJhdHRyaWJ1dGUgdmVjMiBhX3Bvczt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt9IikscWU9Y3IoInVuaWZvcm0gaGlnaHAgZmxvYXQgdV9pbnRlbnNpdHk7dmFyeWluZyB2ZWMyIHZfZXh0cnVkZTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgZmxvYXQgd2VpZ2h0XG4jZGVmaW5lIEdBVVNTX0NPRUYgMC4zOTg5NDIyODA0MDE0MzI3XG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCBmbG9hdCB3ZWlnaHRcbmZsb2F0IGQ9LTAuNSozLjAqMy4wKmRvdCh2X2V4dHJ1ZGUsdl9leHRydWRlKTtmbG9hdCB2YWw9d2VpZ2h0KnVfaW50ZW5zaXR5KkdBVVNTX0NPRUYqZXhwKGQpO2dsX0ZyYWdDb2xvcj12ZWM0KHZhbCwxLjAsMS4wLDEuMCk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gZmxvYXQgdV9leHRydWRlX3NjYWxlO3VuaWZvcm0gZmxvYXQgdV9vcGFjaXR5O3VuaWZvcm0gZmxvYXQgdV9pbnRlbnNpdHk7YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMyIHZfZXh0cnVkZTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgZmxvYXQgd2VpZ2h0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgcmFkaXVzXG5jb25zdCBoaWdocCBmbG9hdCBaRVJPPTEuMC8yNTUuMC8xNi4wO1xuI2RlZmluZSBHQVVTU19DT0VGIDAuMzk4OTQyMjgwNDAxNDMyN1xudm9pZCBtYWluKHZvaWQpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIGZsb2F0IHdlaWdodFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCByYWRpdXNcbnZlYzIgdW5zY2FsZWRfZXh0cnVkZT12ZWMyKG1vZChhX3BvcywyLjApKjIuMC0xLjApO2Zsb2F0IFM9c3FydCgtMi4wKmxvZyhaRVJPL3dlaWdodC91X2ludGVuc2l0eS9HQVVTU19DT0VGKSkvMy4wO3ZfZXh0cnVkZT1TKnVuc2NhbGVkX2V4dHJ1ZGU7dmVjMiBleHRydWRlPXZfZXh0cnVkZSpyYWRpdXMqdV9leHRydWRlX3NjYWxlO3ZlYzQgcG9zPXZlYzQoZmxvb3IoYV9wb3MqMC41KStleHRydWRlLDAsMSk7Z2xfUG9zaXRpb249dV9tYXRyaXgqcG9zO30iKSxIZT1jcigidW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt1bmlmb3JtIHNhbXBsZXIyRCB1X2NvbG9yX3JhbXA7dW5pZm9ybSBmbG9hdCB1X29wYWNpdHk7dmFyeWluZyB2ZWMyIHZfcG9zO3ZvaWQgbWFpbigpIHtmbG9hdCB0PXRleHR1cmUyRCh1X2ltYWdlLHZfcG9zKS5yO3ZlYzQgY29sb3I9dGV4dHVyZTJEKHVfY29sb3JfcmFtcCx2ZWMyKHQsMC41KSk7Z2xfRnJhZ0NvbG9yPWNvbG9yKnVfb3BhY2l0eTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDAuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfd29ybGQ7YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zO3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zKnVfd29ybGQsMCwxKTt2X3Bvcy54PWFfcG9zLng7dl9wb3MueT0xLjAtYV9wb3MueTt9IiksR2U9Y3IoInZhcnlpbmcgZmxvYXQgdl9wbGFjZWQ7dmFyeWluZyBmbG9hdCB2X25vdFVzZWQ7dm9pZCBtYWluKCkge2Zsb2F0IGFscGhhPTAuNTtnbF9GcmFnQ29sb3I9dmVjNCgxLjAsMC4wLDAuMCwxLjApKmFscGhhO2lmICh2X3BsYWNlZCA+IDAuNSkge2dsX0ZyYWdDb2xvcj12ZWM0KDAuMCwwLjAsMS4wLDAuNSkqYWxwaGE7fWlmICh2X25vdFVzZWQgPiAwLjUpIHtnbF9GcmFnQ29sb3IqPS4xO319IiwiYXR0cmlidXRlIHZlYzIgYV9wb3M7YXR0cmlidXRlIHZlYzIgYV9hbmNob3JfcG9zO2F0dHJpYnV0ZSB2ZWMyIGFfZXh0cnVkZTthdHRyaWJ1dGUgdmVjMiBhX3BsYWNlZDthdHRyaWJ1dGUgdmVjMiBhX3NoaWZ0O3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9leHRydWRlX3NjYWxlO3VuaWZvcm0gZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3ZhcnlpbmcgZmxvYXQgdl9wbGFjZWQ7dmFyeWluZyBmbG9hdCB2X25vdFVzZWQ7dm9pZCBtYWluKCkge3ZlYzQgcHJvamVjdGVkUG9pbnQ9dV9tYXRyaXgqdmVjNChhX2FuY2hvcl9wb3MsMCwxKTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlPXByb2plY3RlZFBvaW50Lnc7aGlnaHAgZmxvYXQgY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvPWNsYW1wKDAuNSswLjUqKHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZS9jYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlKSwwLjAsNC4wKTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAuMCwxLjApO2dsX1Bvc2l0aW9uLnh5Kz0oYV9leHRydWRlK2Ffc2hpZnQpKnVfZXh0cnVkZV9zY2FsZSpnbF9Qb3NpdGlvbi53KmNvbGxpc2lvbl9wZXJzcGVjdGl2ZV9yYXRpbzt2X3BsYWNlZD1hX3BsYWNlZC54O3Zfbm90VXNlZD1hX3BsYWNlZC55O30iKSxZZT1jcigidW5pZm9ybSBmbG9hdCB1X292ZXJzY2FsZV9mYWN0b3I7dmFyeWluZyBmbG9hdCB2X3BsYWNlZDt2YXJ5aW5nIGZsb2F0IHZfbm90VXNlZDt2YXJ5aW5nIGZsb2F0IHZfcmFkaXVzO3ZhcnlpbmcgdmVjMiB2X2V4dHJ1ZGU7dmFyeWluZyB2ZWMyIHZfZXh0cnVkZV9zY2FsZTt2b2lkIG1haW4oKSB7ZmxvYXQgYWxwaGE9MC41O3ZlYzQgY29sb3I9dmVjNCgxLjAsMC4wLDAuMCwxLjApKmFscGhhO2lmICh2X3BsYWNlZCA+IDAuNSkge2NvbG9yPXZlYzQoMC4wLDAuMCwxLjAsMC41KSphbHBoYTt9aWYgKHZfbm90VXNlZCA+IDAuNSkge2NvbG9yKj0uMjt9ZmxvYXQgZXh0cnVkZV9zY2FsZV9sZW5ndGg9bGVuZ3RoKHZfZXh0cnVkZV9zY2FsZSk7ZmxvYXQgZXh0cnVkZV9sZW5ndGg9bGVuZ3RoKHZfZXh0cnVkZSkqZXh0cnVkZV9zY2FsZV9sZW5ndGg7ZmxvYXQgc3Ryb2tlX3dpZHRoPTE1LjAqZXh0cnVkZV9zY2FsZV9sZW5ndGgvdV9vdmVyc2NhbGVfZmFjdG9yO2Zsb2F0IHJhZGl1cz12X3JhZGl1cypleHRydWRlX3NjYWxlX2xlbmd0aDtmbG9hdCBkaXN0YW5jZV90b19lZGdlPWFicyhleHRydWRlX2xlbmd0aC1yYWRpdXMpO2Zsb2F0IG9wYWNpdHlfdD1zbW9vdGhzdGVwKC1zdHJva2Vfd2lkdGgsMC4wLC1kaXN0YW5jZV90b19lZGdlKTtnbF9GcmFnQ29sb3I9b3BhY2l0eV90KmNvbG9yO30iLCJhdHRyaWJ1dGUgdmVjMiBhX3BvczthdHRyaWJ1dGUgdmVjMiBhX2FuY2hvcl9wb3M7YXR0cmlidXRlIHZlYzIgYV9leHRydWRlO2F0dHJpYnV0ZSB2ZWMyIGFfcGxhY2VkO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9leHRydWRlX3NjYWxlO3VuaWZvcm0gZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3ZhcnlpbmcgZmxvYXQgdl9wbGFjZWQ7dmFyeWluZyBmbG9hdCB2X25vdFVzZWQ7dmFyeWluZyBmbG9hdCB2X3JhZGl1czt2YXJ5aW5nIHZlYzIgdl9leHRydWRlO3ZhcnlpbmcgdmVjMiB2X2V4dHJ1ZGVfc2NhbGU7dm9pZCBtYWluKCkge3ZlYzQgcHJvamVjdGVkUG9pbnQ9dV9tYXRyaXgqdmVjNChhX2FuY2hvcl9wb3MsMCwxKTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlPXByb2plY3RlZFBvaW50Lnc7aGlnaHAgZmxvYXQgY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvPWNsYW1wKDAuNSswLjUqKHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZS9jYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlKSwwLjAsNC4wKTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAuMCwxLjApO2hpZ2hwIGZsb2F0IHBhZGRpbmdfZmFjdG9yPTEuMjtnbF9Qb3NpdGlvbi54eSs9YV9leHRydWRlKnVfZXh0cnVkZV9zY2FsZSpwYWRkaW5nX2ZhY3RvcipnbF9Qb3NpdGlvbi53KmNvbGxpc2lvbl9wZXJzcGVjdGl2ZV9yYXRpbzt2X3BsYWNlZD1hX3BsYWNlZC54O3Zfbm90VXNlZD1hX3BsYWNlZC55O3ZfcmFkaXVzPWFicyhhX2V4dHJ1ZGUueSk7dl9leHRydWRlPWFfZXh0cnVkZSpwYWRkaW5nX2ZhY3Rvcjt2X2V4dHJ1ZGVfc2NhbGU9dV9leHRydWRlX3NjYWxlKnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSpjb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW87fSIpLFdlPWNyKCJ1bmlmb3JtIGhpZ2hwIHZlYzQgdV9jb2xvcjt2b2lkIG1haW4oKSB7Z2xfRnJhZ0NvbG9yPXVfY29sb3I7fSIsImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt2b2lkIG1haW4oKSB7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO30iKSxYZT1jcigiI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5nbF9GcmFnQ29sb3I9Y29sb3Iqb3BhY2l0eTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJhdHRyaWJ1dGUgdmVjMiBhX3Bvczt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbmdsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt9IiksWmU9Y3IoInZhcnlpbmcgdmVjMiB2X3BvcztcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBvdXRsaW5lX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBvdXRsaW5lX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbmZsb2F0IGRpc3Q9bGVuZ3RoKHZfcG9zLWdsX0ZyYWdDb29yZC54eSk7ZmxvYXQgYWxwaGE9MS4wLXNtb290aHN0ZXAoMC4wLDEuMCxkaXN0KTtnbF9GcmFnQ29sb3I9b3V0bGluZV9jb2xvciooYWxwaGEqb3BhY2l0eSk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3dvcmxkO3ZhcnlpbmcgdmVjMiB2X3BvcztcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBvdXRsaW5lX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBvdXRsaW5lX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbmdsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt2X3Bvcz0oZ2xfUG9zaXRpb24ueHkvZ2xfUG9zaXRpb24udysxLjApLzIuMCp1X3dvcmxkO30iKSxKZT1jcigidW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3VuaWZvcm0gZmxvYXQgdV9mYWRlO3ZhcnlpbmcgdmVjMiB2X3Bvc19hO3ZhcnlpbmcgdmVjMiB2X3Bvc19iO3ZhcnlpbmcgdmVjMiB2X3BvcztcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fdG9cbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbnZlYzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5fYnJfYT1wYXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O3ZlYzIgaW1hZ2Vjb29yZD1tb2Qodl9wb3NfYSwxLjApO3ZlYzIgcG9zPW1peChwYXR0ZXJuX3RsX2EvdV90ZXhzaXplLHBhdHRlcm5fYnJfYS91X3RleHNpemUsaW1hZ2Vjb29yZCk7dmVjNCBjb2xvcjE9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTt2ZWMyIGltYWdlY29vcmRfYj1tb2Qodl9wb3NfYiwxLjApO3ZlYzIgcG9zMj1taXgocGF0dGVybl90bF9iL3VfdGV4c2l6ZSxwYXR0ZXJuX2JyX2IvdV90ZXhzaXplLGltYWdlY29vcmRfYik7dmVjNCBjb2xvcjI9dGV4dHVyZTJEKHVfaW1hZ2UscG9zMik7ZmxvYXQgZGlzdD1sZW5ndGgodl9wb3MtZ2xfRnJhZ0Nvb3JkLnh5KTtmbG9hdCBhbHBoYT0xLjAtc21vb3Roc3RlcCgwLjAsMS4wLGRpc3QpO2dsX0ZyYWdDb2xvcj1taXgoY29sb3IxLGNvbG9yMix1X2ZhZGUpKmFscGhhKm9wYWNpdHk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3dvcmxkO3VuaWZvcm0gdmVjMiB1X3BpeGVsX2Nvb3JkX3VwcGVyO3VuaWZvcm0gdmVjMiB1X3BpeGVsX2Nvb3JkX2xvd2VyO3VuaWZvcm0gdmVjNCB1X3NjYWxlO2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvc19hO3ZhcnlpbmcgdmVjMiB2X3Bvc19iO3ZhcnlpbmcgdmVjMiB2X3BvcztcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fdG9cbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbnZlYzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5fYnJfYT1wYXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O2Zsb2F0IHBpeGVsUmF0aW89dV9zY2FsZS54O2Zsb2F0IHRpbGVSYXRpbz11X3NjYWxlLnk7ZmxvYXQgZnJvbVNjYWxlPXVfc2NhbGUuejtmbG9hdCB0b1NjYWxlPXVfc2NhbGUudztnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7dmVjMiBkaXNwbGF5X3NpemVfYT12ZWMyKChwYXR0ZXJuX2JyX2EueC1wYXR0ZXJuX3RsX2EueCkvcGl4ZWxSYXRpbywocGF0dGVybl9icl9hLnktcGF0dGVybl90bF9hLnkpL3BpeGVsUmF0aW8pO3ZlYzIgZGlzcGxheV9zaXplX2I9dmVjMigocGF0dGVybl9icl9iLngtcGF0dGVybl90bF9iLngpL3BpeGVsUmF0aW8sKHBhdHRlcm5fYnJfYi55LXBhdHRlcm5fdGxfYi55KS9waXhlbFJhdGlvKTt2X3Bvc19hPWdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93ZXIsZnJvbVNjYWxlKmRpc3BsYXlfc2l6ZV9hLHRpbGVSYXRpbyxhX3Bvcyk7dl9wb3NfYj1nZXRfcGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVsX2Nvb3JkX2xvd2VyLHRvU2NhbGUqZGlzcGxheV9zaXplX2IsdGlsZVJhdGlvLGFfcG9zKTt2X3Bvcz0oZ2xfUG9zaXRpb24ueHkvZ2xfUG9zaXRpb24udysxLjApLzIuMCp1X3dvcmxkO30iKSxLZT1jcigidW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIGZsb2F0IHVfZmFkZTt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3ZhcnlpbmcgdmVjMiB2X3Bvc19hO3ZhcnlpbmcgdmVjMiB2X3Bvc19iO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl90b1xudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl90b1xudmVjMiBwYXR0ZXJuX3RsX2E9cGF0dGVybl9mcm9tLnh5O3ZlYzIgcGF0dGVybl9icl9hPXBhdHRlcm5fZnJvbS56dzt2ZWMyIHBhdHRlcm5fdGxfYj1wYXR0ZXJuX3RvLnh5O3ZlYzIgcGF0dGVybl9icl9iPXBhdHRlcm5fdG8uenc7dmVjMiBpbWFnZWNvb3JkPW1vZCh2X3Bvc19hLDEuMCk7dmVjMiBwb3M9bWl4KHBhdHRlcm5fdGxfYS91X3RleHNpemUscGF0dGVybl9icl9hL3VfdGV4c2l6ZSxpbWFnZWNvb3JkKTt2ZWM0IGNvbG9yMT10ZXh0dXJlMkQodV9pbWFnZSxwb3MpO3ZlYzIgaW1hZ2Vjb29yZF9iPW1vZCh2X3Bvc19iLDEuMCk7dmVjMiBwb3MyPW1peChwYXR0ZXJuX3RsX2IvdV90ZXhzaXplLHBhdHRlcm5fYnJfYi91X3RleHNpemUsaW1hZ2Vjb29yZF9iKTt2ZWM0IGNvbG9yMj10ZXh0dXJlMkQodV9pbWFnZSxwb3MyKTtnbF9GcmFnQ29sb3I9bWl4KGNvbG9yMSxjb2xvcjIsdV9mYWRlKSpvcGFjaXR5O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIHZlYzQgdV9zY2FsZTthdHRyaWJ1dGUgdmVjMiBhX3Bvczt2YXJ5aW5nIHZlYzIgdl9wb3NfYTt2YXJ5aW5nIHZlYzIgdl9wb3NfYjtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fdG9cbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbnZlYzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5fYnJfYT1wYXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O2Zsb2F0IHBpeGVsUmF0aW89dV9zY2FsZS54O2Zsb2F0IHRpbGVab29tUmF0aW89dV9zY2FsZS55O2Zsb2F0IGZyb21TY2FsZT11X3NjYWxlLno7ZmxvYXQgdG9TY2FsZT11X3NjYWxlLnc7dmVjMiBkaXNwbGF5X3NpemVfYT12ZWMyKChwYXR0ZXJuX2JyX2EueC1wYXR0ZXJuX3RsX2EueCkvcGl4ZWxSYXRpbywocGF0dGVybl9icl9hLnktcGF0dGVybl90bF9hLnkpL3BpeGVsUmF0aW8pO3ZlYzIgZGlzcGxheV9zaXplX2I9dmVjMigocGF0dGVybl9icl9iLngtcGF0dGVybl90bF9iLngpL3BpeGVsUmF0aW8sKHBhdHRlcm5fYnJfYi55LXBhdHRlcm5fdGxfYi55KS9waXhlbFJhdGlvKTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7dl9wb3NfYT1nZXRfcGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVsX2Nvb3JkX2xvd2VyLGZyb21TY2FsZSpkaXNwbGF5X3NpemVfYSx0aWxlWm9vbVJhdGlvLGFfcG9zKTt2X3Bvc19iPWdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93ZXIsdG9TY2FsZSpkaXNwbGF5X3NpemVfYix0aWxlWm9vbVJhdGlvLGFfcG9zKTt9IiksUWU9Y3IoInZhcnlpbmcgdmVjNCB2X2NvbG9yO3ZvaWQgbWFpbigpIHtnbF9GcmFnQ29sb3I9dl9jb2xvcjtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMzIHVfbGlnaHRjb2xvcjt1bmlmb3JtIGxvd3AgdmVjMyB1X2xpZ2h0cG9zO3VuaWZvcm0gbG93cCBmbG9hdCB1X2xpZ2h0aW50ZW5zaXR5O3VuaWZvcm0gZmxvYXQgdV92ZXJ0aWNhbF9ncmFkaWVudDt1bmlmb3JtIGxvd3AgZmxvYXQgdV9vcGFjaXR5O2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO2F0dHJpYnV0ZSB2ZWM0IGFfbm9ybWFsX2VkO3ZhcnlpbmcgdmVjNCB2X2NvbG9yO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCBmbG9hdCBiYXNlXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIGZsb2F0IGhlaWdodFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCBmbG9hdCBiYXNlXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCBmbG9hdCBoZWlnaHRcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcbnZlYzMgbm9ybWFsPWFfbm9ybWFsX2VkLnh5ejtiYXNlPW1heCgwLjAsYmFzZSk7aGVpZ2h0PW1heCgwLjAsaGVpZ2h0KTtmbG9hdCB0PW1vZChub3JtYWwueCwyLjApO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsdCA+IDAuMCA/IGhlaWdodCA6IGJhc2UsMSk7ZmxvYXQgY29sb3J2YWx1ZT1jb2xvci5yKjAuMjEyNitjb2xvci5nKjAuNzE1Mitjb2xvci5iKjAuMDcyMjt2X2NvbG9yPXZlYzQoMC4wLDAuMCwwLjAsMS4wKTt2ZWM0IGFtYmllbnRsaWdodD12ZWM0KDAuMDMsMC4wMywwLjAzLDEuMCk7Y29sb3IrPWFtYmllbnRsaWdodDtmbG9hdCBkaXJlY3Rpb25hbD1jbGFtcChkb3Qobm9ybWFsLzE2Mzg0LjAsdV9saWdodHBvcyksMC4wLDEuMCk7ZGlyZWN0aW9uYWw9bWl4KCgxLjAtdV9saWdodGludGVuc2l0eSksbWF4KCgxLjAtY29sb3J2YWx1ZSt1X2xpZ2h0aW50ZW5zaXR5KSwxLjApLGRpcmVjdGlvbmFsKTtpZiAobm9ybWFsLnkgIT0wLjApIHtkaXJlY3Rpb25hbCo9KCgxLjAtdV92ZXJ0aWNhbF9ncmFkaWVudCkrKHVfdmVydGljYWxfZ3JhZGllbnQqY2xhbXAoKHQrYmFzZSkqcG93KGhlaWdodC8xNTAuMCwwLjUpLG1peCgwLjcsMC45OCwxLjAtdV9saWdodGludGVuc2l0eSksMS4wKSkpO312X2NvbG9yLnIrPWNsYW1wKGNvbG9yLnIqZGlyZWN0aW9uYWwqdV9saWdodGNvbG9yLnIsbWl4KDAuMCwwLjMsMS4wLXVfbGlnaHRjb2xvci5yKSwxLjApO3ZfY29sb3IuZys9Y2xhbXAoY29sb3IuZypkaXJlY3Rpb25hbCp1X2xpZ2h0Y29sb3IuZyxtaXgoMC4wLDAuMywxLjAtdV9saWdodGNvbG9yLmcpLDEuMCk7dl9jb2xvci5iKz1jbGFtcChjb2xvci5iKmRpcmVjdGlvbmFsKnVfbGlnaHRjb2xvci5iLG1peCgwLjAsMC4zLDEuMC11X2xpZ2h0Y29sb3IuYiksMS4wKTt2X2NvbG9yKj11X29wYWNpdHk7fSIpLCRlPWNyKCJ1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3VuaWZvcm0gZmxvYXQgdV9mYWRlO3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWluZyB2ZWMyIHZfcG9zX2E7dmFyeWluZyB2ZWMyIHZfcG9zX2I7dmFyeWluZyB2ZWM0IHZfbGlnaHRpbmc7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmFzZVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhlaWdodFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJhc2VcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGVpZ2h0XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl90b1xudmVjMiBwYXR0ZXJuX3RsX2E9cGF0dGVybl9mcm9tLnh5O3ZlYzIgcGF0dGVybl9icl9hPXBhdHRlcm5fZnJvbS56dzt2ZWMyIHBhdHRlcm5fdGxfYj1wYXR0ZXJuX3RvLnh5O3ZlYzIgcGF0dGVybl9icl9iPXBhdHRlcm5fdG8uenc7dmVjMiBpbWFnZWNvb3JkPW1vZCh2X3Bvc19hLDEuMCk7dmVjMiBwb3M9bWl4KHBhdHRlcm5fdGxfYS91X3RleHNpemUscGF0dGVybl9icl9hL3VfdGV4c2l6ZSxpbWFnZWNvb3JkKTt2ZWM0IGNvbG9yMT10ZXh0dXJlMkQodV9pbWFnZSxwb3MpO3ZlYzIgaW1hZ2Vjb29yZF9iPW1vZCh2X3Bvc19iLDEuMCk7dmVjMiBwb3MyPW1peChwYXR0ZXJuX3RsX2IvdV90ZXhzaXplLHBhdHRlcm5fYnJfYi91X3RleHNpemUsaW1hZ2Vjb29yZF9iKTt2ZWM0IGNvbG9yMj10ZXh0dXJlMkQodV9pbWFnZSxwb3MyKTt2ZWM0IG1peGVkQ29sb3I9bWl4KGNvbG9yMSxjb2xvcjIsdV9mYWRlKTtnbF9GcmFnQ29sb3I9bWl4ZWRDb2xvcip2X2xpZ2h0aW5nO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIGZsb2F0IHVfaGVpZ2h0X2ZhY3Rvcjt1bmlmb3JtIHZlYzQgdV9zY2FsZTt1bmlmb3JtIGZsb2F0IHVfdmVydGljYWxfZ3JhZGllbnQ7dW5pZm9ybSBsb3dwIGZsb2F0IHVfb3BhY2l0eTt1bmlmb3JtIHZlYzMgdV9saWdodGNvbG9yO3VuaWZvcm0gbG93cCB2ZWMzIHVfbGlnaHRwb3M7dW5pZm9ybSBsb3dwIGZsb2F0IHVfbGlnaHRpbnRlbnNpdHk7YXR0cmlidXRlIHZlYzIgYV9wb3M7YXR0cmlidXRlIHZlYzQgYV9ub3JtYWxfZWQ7dmFyeWluZyB2ZWMyIHZfcG9zX2E7dmFyeWluZyB2ZWMyIHZfcG9zX2I7dmFyeWluZyB2ZWM0IHZfbGlnaHRpbmc7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmFzZVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhlaWdodFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJhc2VcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGVpZ2h0XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl90b1xudmVjMiBwYXR0ZXJuX3RsX2E9cGF0dGVybl9mcm9tLnh5O3ZlYzIgcGF0dGVybl9icl9hPXBhdHRlcm5fZnJvbS56dzt2ZWMyIHBhdHRlcm5fdGxfYj1wYXR0ZXJuX3RvLnh5O3ZlYzIgcGF0dGVybl9icl9iPXBhdHRlcm5fdG8uenc7ZmxvYXQgcGl4ZWxSYXRpbz11X3NjYWxlLng7ZmxvYXQgdGlsZVJhdGlvPXVfc2NhbGUueTtmbG9hdCBmcm9tU2NhbGU9dV9zY2FsZS56O2Zsb2F0IHRvU2NhbGU9dV9zY2FsZS53O3ZlYzMgbm9ybWFsPWFfbm9ybWFsX2VkLnh5ejtmbG9hdCBlZGdlZGlzdGFuY2U9YV9ub3JtYWxfZWQudzt2ZWMyIGRpc3BsYXlfc2l6ZV9hPXZlYzIoKHBhdHRlcm5fYnJfYS54LXBhdHRlcm5fdGxfYS54KS9waXhlbFJhdGlvLChwYXR0ZXJuX2JyX2EueS1wYXR0ZXJuX3RsX2EueSkvcGl4ZWxSYXRpbyk7dmVjMiBkaXNwbGF5X3NpemVfYj12ZWMyKChwYXR0ZXJuX2JyX2IueC1wYXR0ZXJuX3RsX2IueCkvcGl4ZWxSYXRpbywocGF0dGVybl9icl9iLnktcGF0dGVybl90bF9iLnkpL3BpeGVsUmF0aW8pO2Jhc2U9bWF4KDAuMCxiYXNlKTtoZWlnaHQ9bWF4KDAuMCxoZWlnaHQpO2Zsb2F0IHQ9bW9kKG5vcm1hbC54LDIuMCk7ZmxvYXQgej10ID4gMC4wID8gaGVpZ2h0IDogYmFzZTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLHosMSk7dmVjMiBwb3M9bm9ybWFsLng9PTEuMCAmJiBub3JtYWwueT09MC4wICYmIG5vcm1hbC56PT0xNjM4NC4wXG4/IGFfcG9zXG46IHZlYzIoZWRnZWRpc3RhbmNlLHoqdV9oZWlnaHRfZmFjdG9yKTt2X3Bvc19hPWdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93ZXIsZnJvbVNjYWxlKmRpc3BsYXlfc2l6ZV9hLHRpbGVSYXRpbyxwb3MpO3ZfcG9zX2I9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcix0b1NjYWxlKmRpc3BsYXlfc2l6ZV9iLHRpbGVSYXRpbyxwb3MpO3ZfbGlnaHRpbmc9dmVjNCgwLjAsMC4wLDAuMCwxLjApO2Zsb2F0IGRpcmVjdGlvbmFsPWNsYW1wKGRvdChub3JtYWwvMTYzODMuMCx1X2xpZ2h0cG9zKSwwLjAsMS4wKTtkaXJlY3Rpb25hbD1taXgoKDEuMC11X2xpZ2h0aW50ZW5zaXR5KSxtYXgoKDAuNSt1X2xpZ2h0aW50ZW5zaXR5KSwxLjApLGRpcmVjdGlvbmFsKTtpZiAobm9ybWFsLnkgIT0wLjApIHtkaXJlY3Rpb25hbCo9KCgxLjAtdV92ZXJ0aWNhbF9ncmFkaWVudCkrKHVfdmVydGljYWxfZ3JhZGllbnQqY2xhbXAoKHQrYmFzZSkqcG93KGhlaWdodC8xNTAuMCwwLjUpLG1peCgwLjcsMC45OCwxLjAtdV9saWdodGludGVuc2l0eSksMS4wKSkpO312X2xpZ2h0aW5nLnJnYis9Y2xhbXAoZGlyZWN0aW9uYWwqdV9saWdodGNvbG9yLG1peCh2ZWMzKDAuMCksdmVjMygwLjMpLDEuMC11X2xpZ2h0Y29sb3IpLHZlYzMoMS4wKSk7dl9saWdodGluZyo9dV9vcGFjaXR5O30iKSx0cj1jcigiI2lmZGVmIEdMX0VTXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZW5kaWZcbnVuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWluZyB2ZWMyIHZfcG9zO3VuaWZvcm0gdmVjMiB1X2RpbWVuc2lvbjt1bmlmb3JtIGZsb2F0IHVfem9vbTt1bmlmb3JtIGZsb2F0IHVfbWF4em9vbTtmbG9hdCBnZXRFbGV2YXRpb24odmVjMiBjb29yZCxmbG9hdCBiaWFzKSB7dmVjNCBkYXRhPXRleHR1cmUyRCh1X2ltYWdlLGNvb3JkKSoyNTUuMDtyZXR1cm4gKGRhdGEucitkYXRhLmcqMjU2LjArZGF0YS5iKjI1Ni4wKjI1Ni4wKS80LjA7fXZvaWQgbWFpbigpIHt2ZWMyIGVwc2lsb249MS4wL3VfZGltZW5zaW9uO2Zsb2F0IGE9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoLWVwc2lsb24ueCwtZXBzaWxvbi55KSwwLjApO2Zsb2F0IGI9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoMCwtZXBzaWxvbi55KSwwLjApO2Zsb2F0IGM9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoZXBzaWxvbi54LC1lcHNpbG9uLnkpLDAuMCk7ZmxvYXQgZD1nZXRFbGV2YXRpb24odl9wb3MrdmVjMigtZXBzaWxvbi54LDApLDAuMCk7ZmxvYXQgZT1nZXRFbGV2YXRpb24odl9wb3MsMC4wKTtmbG9hdCBmPWdldEVsZXZhdGlvbih2X3Bvcyt2ZWMyKGVwc2lsb24ueCwwKSwwLjApO2Zsb2F0IGc9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoLWVwc2lsb24ueCxlcHNpbG9uLnkpLDAuMCk7ZmxvYXQgaD1nZXRFbGV2YXRpb24odl9wb3MrdmVjMigwLGVwc2lsb24ueSksMC4wKTtmbG9hdCBpPWdldEVsZXZhdGlvbih2X3Bvcyt2ZWMyKGVwc2lsb24ueCxlcHNpbG9uLnkpLDAuMCk7ZmxvYXQgZXhhZ2dlcmF0aW9uPXVfem9vbSA8IDIuMCA/IDAuNCA6IHVfem9vbSA8IDQuNSA/IDAuMzUgOiAwLjM7dmVjMiBkZXJpdj12ZWMyKChjK2YrZitpKS0oYStkK2QrZyksKGcraCtoK2kpLShhK2IrYitjKSkvIHBvdygyLjAsKHVfem9vbS11X21heHpvb20pKmV4YWdnZXJhdGlvbisxOS4yNTYyLXVfem9vbSk7Z2xfRnJhZ0NvbG9yPWNsYW1wKHZlYzQoZGVyaXYueC8yLjArMC41LGRlcml2LnkvMi4wKzAuNSwxLjAsMS4wKSwwLjAsMS4wKTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfZGltZW5zaW9uO2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO2F0dHJpYnV0ZSB2ZWMyIGFfdGV4dHVyZV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zO3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7aGlnaHAgdmVjMiBlcHNpbG9uPTEuMC91X2RpbWVuc2lvbjtmbG9hdCBzY2FsZT0odV9kaW1lbnNpb24ueC0yLjApL3VfZGltZW5zaW9uLng7dl9wb3M9KGFfdGV4dHVyZV9wb3MvODE5Mi4wKSpzY2FsZStlcHNpbG9uO30iKSxlcj1jcigidW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt2YXJ5aW5nIHZlYzIgdl9wb3M7dW5pZm9ybSB2ZWMyIHVfbGF0cmFuZ2U7dW5pZm9ybSB2ZWMyIHVfbGlnaHQ7dW5pZm9ybSB2ZWM0IHVfc2hhZG93O3VuaWZvcm0gdmVjNCB1X2hpZ2hsaWdodDt1bmlmb3JtIHZlYzQgdV9hY2NlbnQ7XG4jZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzXG52b2lkIG1haW4oKSB7dmVjNCBwaXhlbD10ZXh0dXJlMkQodV9pbWFnZSx2X3Bvcyk7dmVjMiBkZXJpdj0oKHBpeGVsLnJnKjIuMCktMS4wKTtmbG9hdCBzY2FsZUZhY3Rvcj1jb3MocmFkaWFucygodV9sYXRyYW5nZVswXS11X2xhdHJhbmdlWzFdKSooMS4wLXZfcG9zLnkpK3VfbGF0cmFuZ2VbMV0pKTtmbG9hdCBzbG9wZT1hdGFuKDEuMjUqbGVuZ3RoKGRlcml2KS9zY2FsZUZhY3Rvcik7ZmxvYXQgYXNwZWN0PWRlcml2LnggIT0wLjAgPyBhdGFuKGRlcml2LnksLWRlcml2LngpIDogUEkvMi4wKihkZXJpdi55ID4gMC4wID8gMS4wIDotMS4wKTtmbG9hdCBpbnRlbnNpdHk9dV9saWdodC54O2Zsb2F0IGF6aW11dGg9dV9saWdodC55K1BJO2Zsb2F0IGJhc2U9MS44NzUtaW50ZW5zaXR5KjEuNzU7ZmxvYXQgbWF4VmFsdWU9MC41KlBJO2Zsb2F0IHNjYWxlZFNsb3BlPWludGVuc2l0eSAhPTAuNSA/ICgocG93KGJhc2Usc2xvcGUpLTEuMCkvKHBvdyhiYXNlLG1heFZhbHVlKS0xLjApKSptYXhWYWx1ZSA6IHNsb3BlO2Zsb2F0IGFjY2VudD1jb3Moc2NhbGVkU2xvcGUpO3ZlYzQgYWNjZW50X2NvbG9yPSgxLjAtYWNjZW50KSp1X2FjY2VudCpjbGFtcChpbnRlbnNpdHkqMi4wLDAuMCwxLjApO2Zsb2F0IHNoYWRlPWFicyhtb2QoKGFzcGVjdCthemltdXRoKS9QSSswLjUsMi4wKS0xLjApO3ZlYzQgc2hhZGVfY29sb3I9bWl4KHVfc2hhZG93LHVfaGlnaGxpZ2h0LHNoYWRlKSpzaW4oc2NhbGVkU2xvcGUpKmNsYW1wKGludGVuc2l0eSoyLjAsMC4wLDEuMCk7Z2xfRnJhZ0NvbG9yPWFjY2VudF9jb2xvciooMS4wLXNoYWRlX2NvbG9yLmEpK3NoYWRlX2NvbG9yO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDthdHRyaWJ1dGUgdmVjMiBhX3BvczthdHRyaWJ1dGUgdmVjMiBhX3RleHR1cmVfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lkIG1haW4oKSB7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO3ZfcG9zPWFfdGV4dHVyZV9wb3MvODE5Mi4wO30iKSxycj1jcigidW5pZm9ybSBsb3dwIGZsb2F0IHVfZGV2aWNlX3BpeGVsX3JhdGlvO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIHZlYzIgdl9ub3JtYWw7dmFyeWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5mbG9hdCBkaXN0PWxlbmd0aCh2X25vcm1hbCkqdl93aWR0aDIucztmbG9hdCBibHVyMj0oYmx1cisxLjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8pKnZfZ2FtbWFfc2NhbGU7ZmxvYXQgYWxwaGE9Y2xhbXAobWluKGRpc3QtKHZfd2lkdGgyLnQtYmx1cjIpLHZfd2lkdGgyLnMtZGlzdCkvYmx1cjIsMC4wLDEuMCk7Z2xfRnJhZ0NvbG9yPWNvbG9yKihhbHBoYSpvcGFjaXR5KTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJcbiNkZWZpbmUgc2NhbGUgMC4wMTU4NzMwMTZcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zX25vcm1hbDthdHRyaWJ1dGUgdmVjNCBhX2RhdGE7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1X3JhdGlvO3VuaWZvcm0gdmVjMiB1X3VuaXRzX3RvX3BpeGVsczt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7dmFyeWluZyBoaWdocCBmbG9hdCB2X2xpbmVzb2ZhcjtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvZmZzZXRcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCB3aWR0aFxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb2Zmc2V0XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHdpZHRoXG5mbG9hdCBBTlRJQUxJQVNJTkc9MS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvLzIuMDt2ZWMyIGFfZXh0cnVkZT1hX2RhdGEueHktMTI4LjA7ZmxvYXQgYV9kaXJlY3Rpb249bW9kKGFfZGF0YS56LDQuMCktMS4wO3ZfbGluZXNvZmFyPShmbG9vcihhX2RhdGEuei80LjApK2FfZGF0YS53KjY0LjApKjIuMDt2ZWMyIHBvcz1mbG9vcihhX3Bvc19ub3JtYWwqMC41KTttZWRpdW1wIHZlYzIgbm9ybWFsPWFfcG9zX25vcm1hbC0yLjAqcG9zO25vcm1hbC55PW5vcm1hbC55KjIuMC0xLjA7dl9ub3JtYWw9bm9ybWFsO2dhcHdpZHRoPWdhcHdpZHRoLzIuMDtmbG9hdCBoYWxmd2lkdGg9d2lkdGgvMi4wO29mZnNldD0tMS4wKm9mZnNldDtmbG9hdCBpbnNldD1nYXB3aWR0aCsoZ2Fwd2lkdGggPiAwLjAgPyBBTlRJQUxJQVNJTkcgOiAwLjApO2Zsb2F0IG91dHNldD1nYXB3aWR0aCtoYWxmd2lkdGgqKGdhcHdpZHRoID4gMC4wID8gMi4wIDogMS4wKSsoaGFsZndpZHRoPT0wLjAgPyAwLjAgOiBBTlRJQUxJQVNJTkcpO21lZGl1bXAgdmVjMiBkaXN0PW91dHNldCphX2V4dHJ1ZGUqc2NhbGU7bWVkaXVtcCBmbG9hdCB1PTAuNSphX2RpcmVjdGlvbjttZWRpdW1wIGZsb2F0IHQ9MS4wLWFicyh1KTttZWRpdW1wIHZlYzIgb2Zmc2V0Mj1vZmZzZXQqYV9leHRydWRlKnNjYWxlKm5vcm1hbC55Km1hdDIodCwtdSx1LHQpO3ZlYzQgcHJvamVjdGVkX2V4dHJ1ZGU9dV9tYXRyaXgqdmVjNChkaXN0L3VfcmF0aW8sMC4wLDAuMCk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChwb3Mrb2Zmc2V0Mi91X3JhdGlvLDAuMCwxLjApK3Byb2plY3RlZF9leHRydWRlO2Zsb2F0IGV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmU9bGVuZ3RoKGRpc3QpO2Zsb2F0IGV4dHJ1ZGVfbGVuZ3RoX3dpdGhfcGVyc3BlY3RpdmU9bGVuZ3RoKHByb2plY3RlZF9leHRydWRlLnh5L2dsX1Bvc2l0aW9uLncqdV91bml0c190b19waXhlbHMpO3ZfZ2FtbWFfc2NhbGU9ZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2ZS9leHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlO3Zfd2lkdGgyPXZlYzIob3V0c2V0LGluc2V0KTt9IiksbnI9Y3IoInVuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIHZlYzIgdl9ub3JtYWw7dmFyeWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO3ZhcnlpbmcgaGlnaHAgZmxvYXQgdl9saW5lcHJvZ3Jlc3M7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5mbG9hdCBkaXN0PWxlbmd0aCh2X25vcm1hbCkqdl93aWR0aDIucztmbG9hdCBibHVyMj0oYmx1cisxLjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8pKnZfZ2FtbWFfc2NhbGU7ZmxvYXQgYWxwaGE9Y2xhbXAobWluKGRpc3QtKHZfd2lkdGgyLnQtYmx1cjIpLHZfd2lkdGgyLnMtZGlzdCkvYmx1cjIsMC4wLDEuMCk7dmVjNCBjb2xvcj10ZXh0dXJlMkQodV9pbWFnZSx2ZWMyKHZfbGluZXByb2dyZXNzLDAuNSkpO2dsX0ZyYWdDb2xvcj1jb2xvciooYWxwaGEqb3BhY2l0eSk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwiXG4jZGVmaW5lIE1BWF9MSU5FX0RJU1RBTkNFIDMyNzY3LjBcbiNkZWZpbmUgc2NhbGUgMC4wMTU4NzMwMTZcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zX25vcm1hbDthdHRyaWJ1dGUgdmVjNCBhX2RhdGE7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1X3JhdGlvO3VuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1bmlmb3JtIHZlYzIgdV91bml0c190b19waXhlbHM7dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7dmFyeWluZyBoaWdocCBmbG9hdCB2X2xpbmVwcm9ncmVzcztcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb2Zmc2V0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgd2lkdGhcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9mZnNldFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCB3aWR0aFxuZmxvYXQgQU5USUFMSUFTSU5HPTEuMC91X2RldmljZV9waXhlbF9yYXRpby8yLjA7dmVjMiBhX2V4dHJ1ZGU9YV9kYXRhLnh5LTEyOC4wO2Zsb2F0IGFfZGlyZWN0aW9uPW1vZChhX2RhdGEueiw0LjApLTEuMDt2X2xpbmVwcm9ncmVzcz0oZmxvb3IoYV9kYXRhLnovNC4wKSthX2RhdGEudyo2NC4wKSoyLjAvTUFYX0xJTkVfRElTVEFOQ0U7dmVjMiBwb3M9Zmxvb3IoYV9wb3Nfbm9ybWFsKjAuNSk7bWVkaXVtcCB2ZWMyIG5vcm1hbD1hX3Bvc19ub3JtYWwtMi4wKnBvcztub3JtYWwueT1ub3JtYWwueSoyLjAtMS4wO3Zfbm9ybWFsPW5vcm1hbDtnYXB3aWR0aD1nYXB3aWR0aC8yLjA7ZmxvYXQgaGFsZndpZHRoPXdpZHRoLzIuMDtvZmZzZXQ9LTEuMCpvZmZzZXQ7ZmxvYXQgaW5zZXQ9Z2Fwd2lkdGgrKGdhcHdpZHRoID4gMC4wID8gQU5USUFMSUFTSU5HIDogMC4wKTtmbG9hdCBvdXRzZXQ9Z2Fwd2lkdGgraGFsZndpZHRoKihnYXB3aWR0aCA+IDAuMCA/IDIuMCA6IDEuMCkrKGhhbGZ3aWR0aD09MC4wID8gMC4wIDogQU5USUFMSUFTSU5HKTttZWRpdW1wIHZlYzIgZGlzdD1vdXRzZXQqYV9leHRydWRlKnNjYWxlO21lZGl1bXAgZmxvYXQgdT0wLjUqYV9kaXJlY3Rpb247bWVkaXVtcCBmbG9hdCB0PTEuMC1hYnModSk7bWVkaXVtcCB2ZWMyIG9mZnNldDI9b2Zmc2V0KmFfZXh0cnVkZSpzY2FsZSpub3JtYWwueSptYXQyKHQsLXUsdSx0KTt2ZWM0IHByb2plY3RlZF9leHRydWRlPXVfbWF0cml4KnZlYzQoZGlzdC91X3JhdGlvLDAuMCwwLjApO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQocG9zK29mZnNldDIvdV9yYXRpbywwLjAsMS4wKStwcm9qZWN0ZWRfZXh0cnVkZTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlPWxlbmd0aChkaXN0KTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlPWxlbmd0aChwcm9qZWN0ZWRfZXh0cnVkZS54eS9nbF9Qb3NpdGlvbi53KnVfdW5pdHNfdG9fcGl4ZWxzKTt2X2dhbW1hX3NjYWxlPWV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmUvZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZTt2X3dpZHRoMj12ZWMyKG91dHNldCxpbnNldCk7fSIpLGFyPWNyKCJ1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIGZsb2F0IHVfZmFkZTt1bmlmb3JtIG1lZGl1bXAgdmVjNCB1X3NjYWxlO3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZfbGluZXNvZmFyO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl90b1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl90b1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZlYzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5fYnJfYT1wYXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O2Zsb2F0IHBpeGVsUmF0aW89dV9zY2FsZS54O2Zsb2F0IHRpbGVab29tUmF0aW89dV9zY2FsZS55O2Zsb2F0IGZyb21TY2FsZT11X3NjYWxlLno7ZmxvYXQgdG9TY2FsZT11X3NjYWxlLnc7dmVjMiBkaXNwbGF5X3NpemVfYT12ZWMyKChwYXR0ZXJuX2JyX2EueC1wYXR0ZXJuX3RsX2EueCkvcGl4ZWxSYXRpbywocGF0dGVybl9icl9hLnktcGF0dGVybl90bF9hLnkpL3BpeGVsUmF0aW8pO3ZlYzIgZGlzcGxheV9zaXplX2I9dmVjMigocGF0dGVybl9icl9iLngtcGF0dGVybl90bF9iLngpL3BpeGVsUmF0aW8sKHBhdHRlcm5fYnJfYi55LXBhdHRlcm5fdGxfYi55KS9waXhlbFJhdGlvKTt2ZWMyIHBhdHRlcm5fc2l6ZV9hPXZlYzIoZGlzcGxheV9zaXplX2EueCpmcm9tU2NhbGUvdGlsZVpvb21SYXRpbyxkaXNwbGF5X3NpemVfYS55KTt2ZWMyIHBhdHRlcm5fc2l6ZV9iPXZlYzIoZGlzcGxheV9zaXplX2IueCp0b1NjYWxlL3RpbGVab29tUmF0aW8sZGlzcGxheV9zaXplX2IueSk7ZmxvYXQgZGlzdD1sZW5ndGgodl9ub3JtYWwpKnZfd2lkdGgyLnM7ZmxvYXQgYmx1cjI9KGJsdXIrMS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvKSp2X2dhbW1hX3NjYWxlO2Zsb2F0IGFscGhhPWNsYW1wKG1pbihkaXN0LSh2X3dpZHRoMi50LWJsdXIyKSx2X3dpZHRoMi5zLWRpc3QpL2JsdXIyLDAuMCwxLjApO2Zsb2F0IHhfYT1tb2Qodl9saW5lc29mYXIvcGF0dGVybl9zaXplX2EueCwxLjApO2Zsb2F0IHhfYj1tb2Qodl9saW5lc29mYXIvcGF0dGVybl9zaXplX2IueCwxLjApO2Zsb2F0IHlfYT0wLjUrKHZfbm9ybWFsLnkqY2xhbXAodl93aWR0aDIucywwLjAsKHBhdHRlcm5fc2l6ZV9hLnkrMi4wKS8yLjApL3BhdHRlcm5fc2l6ZV9hLnkpO2Zsb2F0IHlfYj0wLjUrKHZfbm9ybWFsLnkqY2xhbXAodl93aWR0aDIucywwLjAsKHBhdHRlcm5fc2l6ZV9iLnkrMi4wKS8yLjApL3BhdHRlcm5fc2l6ZV9iLnkpO3ZlYzIgcG9zX2E9bWl4KHBhdHRlcm5fdGxfYS91X3RleHNpemUscGF0dGVybl9icl9hL3VfdGV4c2l6ZSx2ZWMyKHhfYSx5X2EpKTt2ZWMyIHBvc19iPW1peChwYXR0ZXJuX3RsX2IvdV90ZXhzaXplLHBhdHRlcm5fYnJfYi91X3RleHNpemUsdmVjMih4X2IseV9iKSk7dmVjNCBjb2xvcj1taXgodGV4dHVyZTJEKHVfaW1hZ2UscG9zX2EpLHRleHR1cmUyRCh1X2ltYWdlLHBvc19iKSx1X2ZhZGUpO2dsX0ZyYWdDb2xvcj1jb2xvciphbHBoYSpvcGFjaXR5O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsIlxuI2RlZmluZSBzY2FsZSAwLjAxNTg3MzAxNlxuI2RlZmluZSBMSU5FX0RJU1RBTkNFX1NDQUxFIDIuMFxuYXR0cmlidXRlIHZlYzIgYV9wb3Nfbm9ybWFsO2F0dHJpYnV0ZSB2ZWM0IGFfZGF0YTt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfdW5pdHNfdG9fcGl4ZWxzO3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1X3JhdGlvO3VuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt2YXJ5aW5nIHZlYzIgdl9ub3JtYWw7dmFyeWluZyB2ZWMyIHZfd2lkdGgyO3ZhcnlpbmcgZmxvYXQgdl9saW5lc29mYXI7dmFyeWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb2Zmc2V0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCB3aWR0aFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvZmZzZXRcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX3RvXG5mbG9hdCBBTlRJQUxJQVNJTkc9MS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvLzIuMDt2ZWMyIGFfZXh0cnVkZT1hX2RhdGEueHktMTI4LjA7ZmxvYXQgYV9kaXJlY3Rpb249bW9kKGFfZGF0YS56LDQuMCktMS4wO2Zsb2F0IGFfbGluZXNvZmFyPShmbG9vcihhX2RhdGEuei80LjApK2FfZGF0YS53KjY0LjApKkxJTkVfRElTVEFOQ0VfU0NBTEU7dmVjMiBwb3M9Zmxvb3IoYV9wb3Nfbm9ybWFsKjAuNSk7bWVkaXVtcCB2ZWMyIG5vcm1hbD1hX3Bvc19ub3JtYWwtMi4wKnBvcztub3JtYWwueT1ub3JtYWwueSoyLjAtMS4wO3Zfbm9ybWFsPW5vcm1hbDtnYXB3aWR0aD1nYXB3aWR0aC8yLjA7ZmxvYXQgaGFsZndpZHRoPXdpZHRoLzIuMDtvZmZzZXQ9LTEuMCpvZmZzZXQ7ZmxvYXQgaW5zZXQ9Z2Fwd2lkdGgrKGdhcHdpZHRoID4gMC4wID8gQU5USUFMSUFTSU5HIDogMC4wKTtmbG9hdCBvdXRzZXQ9Z2Fwd2lkdGgraGFsZndpZHRoKihnYXB3aWR0aCA+IDAuMCA/IDIuMCA6IDEuMCkrKGhhbGZ3aWR0aD09MC4wID8gMC4wIDogQU5USUFMSUFTSU5HKTttZWRpdW1wIHZlYzIgZGlzdD1vdXRzZXQqYV9leHRydWRlKnNjYWxlO21lZGl1bXAgZmxvYXQgdT0wLjUqYV9kaXJlY3Rpb247bWVkaXVtcCBmbG9hdCB0PTEuMC1hYnModSk7bWVkaXVtcCB2ZWMyIG9mZnNldDI9b2Zmc2V0KmFfZXh0cnVkZSpzY2FsZSpub3JtYWwueSptYXQyKHQsLXUsdSx0KTt2ZWM0IHByb2plY3RlZF9leHRydWRlPXVfbWF0cml4KnZlYzQoZGlzdC91X3JhdGlvLDAuMCwwLjApO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQocG9zK29mZnNldDIvdV9yYXRpbywwLjAsMS4wKStwcm9qZWN0ZWRfZXh0cnVkZTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlPWxlbmd0aChkaXN0KTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlPWxlbmd0aChwcm9qZWN0ZWRfZXh0cnVkZS54eS9nbF9Qb3NpdGlvbi53KnVfdW5pdHNfdG9fcGl4ZWxzKTt2X2dhbW1hX3NjYWxlPWV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmUvZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZTt2X2xpbmVzb2Zhcj1hX2xpbmVzb2Zhcjt2X3dpZHRoMj12ZWMyKG91dHNldCxpbnNldCk7fSIpLGlyPWNyKCJ1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt1bmlmb3JtIGZsb2F0IHVfc2RmZ2FtbWE7dW5pZm9ybSBmbG9hdCB1X21peDt2YXJ5aW5nIHZlYzIgdl9ub3JtYWw7dmFyeWluZyB2ZWMyIHZfd2lkdGgyO3ZhcnlpbmcgdmVjMiB2X3RleF9hO3ZhcnlpbmcgdmVjMiB2X3RleF9iO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBmbG9vcndpZHRoXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCB3aWR0aFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBmbG9vcndpZHRoXG5mbG9hdCBkaXN0PWxlbmd0aCh2X25vcm1hbCkqdl93aWR0aDIucztmbG9hdCBibHVyMj0oYmx1cisxLjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8pKnZfZ2FtbWFfc2NhbGU7ZmxvYXQgYWxwaGE9Y2xhbXAobWluKGRpc3QtKHZfd2lkdGgyLnQtYmx1cjIpLHZfd2lkdGgyLnMtZGlzdCkvYmx1cjIsMC4wLDEuMCk7ZmxvYXQgc2RmZGlzdF9hPXRleHR1cmUyRCh1X2ltYWdlLHZfdGV4X2EpLmE7ZmxvYXQgc2RmZGlzdF9iPXRleHR1cmUyRCh1X2ltYWdlLHZfdGV4X2IpLmE7ZmxvYXQgc2RmZGlzdD1taXgoc2RmZGlzdF9hLHNkZmRpc3RfYix1X21peCk7YWxwaGEqPXNtb290aHN0ZXAoMC41LXVfc2RmZ2FtbWEvZmxvb3J3aWR0aCwwLjUrdV9zZGZnYW1tYS9mbG9vcndpZHRoLHNkZmRpc3QpO2dsX0ZyYWdDb2xvcj1jb2xvciooYWxwaGEqb3BhY2l0eSk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwiXG4jZGVmaW5lIHNjYWxlIDAuMDE1ODczMDE2XG4jZGVmaW5lIExJTkVfRElTVEFOQ0VfU0NBTEUgMi4wXG5hdHRyaWJ1dGUgdmVjMiBhX3Bvc19ub3JtYWw7YXR0cmlidXRlIHZlYzQgYV9kYXRhO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdV9yYXRpbzt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5pZm9ybSB2ZWMyIHVfcGF0dGVybnNjYWxlX2E7dW5pZm9ybSBmbG9hdCB1X3RleF95X2E7dW5pZm9ybSB2ZWMyIHVfcGF0dGVybnNjYWxlX2I7dW5pZm9ybSBmbG9hdCB1X3RleF95X2I7dW5pZm9ybSB2ZWMyIHVfdW5pdHNfdG9fcGl4ZWxzO3ZhcnlpbmcgdmVjMiB2X25vcm1hbDt2YXJ5aW5nIHZlYzIgdl93aWR0aDI7dmFyeWluZyB2ZWMyIHZfdGV4X2E7dmFyeWluZyB2ZWMyIHZfdGV4X2I7dmFyeWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBnYXB3aWR0aFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9mZnNldFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHdpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb2Zmc2V0XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHdpZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGZsb29yd2lkdGhcbmZsb2F0IEFOVElBTElBU0lORz0xLjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8vMi4wO3ZlYzIgYV9leHRydWRlPWFfZGF0YS54eS0xMjguMDtmbG9hdCBhX2RpcmVjdGlvbj1tb2QoYV9kYXRhLnosNC4wKS0xLjA7ZmxvYXQgYV9saW5lc29mYXI9KGZsb29yKGFfZGF0YS56LzQuMCkrYV9kYXRhLncqNjQuMCkqTElORV9ESVNUQU5DRV9TQ0FMRTt2ZWMyIHBvcz1mbG9vcihhX3Bvc19ub3JtYWwqMC41KTttZWRpdW1wIHZlYzIgbm9ybWFsPWFfcG9zX25vcm1hbC0yLjAqcG9zO25vcm1hbC55PW5vcm1hbC55KjIuMC0xLjA7dl9ub3JtYWw9bm9ybWFsO2dhcHdpZHRoPWdhcHdpZHRoLzIuMDtmbG9hdCBoYWxmd2lkdGg9d2lkdGgvMi4wO29mZnNldD0tMS4wKm9mZnNldDtmbG9hdCBpbnNldD1nYXB3aWR0aCsoZ2Fwd2lkdGggPiAwLjAgPyBBTlRJQUxJQVNJTkcgOiAwLjApO2Zsb2F0IG91dHNldD1nYXB3aWR0aCtoYWxmd2lkdGgqKGdhcHdpZHRoID4gMC4wID8gMi4wIDogMS4wKSsoaGFsZndpZHRoPT0wLjAgPyAwLjAgOiBBTlRJQUxJQVNJTkcpO21lZGl1bXAgdmVjMiBkaXN0PW91dHNldCphX2V4dHJ1ZGUqc2NhbGU7bWVkaXVtcCBmbG9hdCB1PTAuNSphX2RpcmVjdGlvbjttZWRpdW1wIGZsb2F0IHQ9MS4wLWFicyh1KTttZWRpdW1wIHZlYzIgb2Zmc2V0Mj1vZmZzZXQqYV9leHRydWRlKnNjYWxlKm5vcm1hbC55Km1hdDIodCwtdSx1LHQpO3ZlYzQgcHJvamVjdGVkX2V4dHJ1ZGU9dV9tYXRyaXgqdmVjNChkaXN0L3VfcmF0aW8sMC4wLDAuMCk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChwb3Mrb2Zmc2V0Mi91X3JhdGlvLDAuMCwxLjApK3Byb2plY3RlZF9leHRydWRlO2Zsb2F0IGV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmU9bGVuZ3RoKGRpc3QpO2Zsb2F0IGV4dHJ1ZGVfbGVuZ3RoX3dpdGhfcGVyc3BlY3RpdmU9bGVuZ3RoKHByb2plY3RlZF9leHRydWRlLnh5L2dsX1Bvc2l0aW9uLncqdV91bml0c190b19waXhlbHMpO3ZfZ2FtbWFfc2NhbGU9ZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2ZS9leHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlO3ZfdGV4X2E9dmVjMihhX2xpbmVzb2Zhcip1X3BhdHRlcm5zY2FsZV9hLngvZmxvb3J3aWR0aCxub3JtYWwueSp1X3BhdHRlcm5zY2FsZV9hLnkrdV90ZXhfeV9hKTt2X3RleF9iPXZlYzIoYV9saW5lc29mYXIqdV9wYXR0ZXJuc2NhbGVfYi54L2Zsb29yd2lkdGgsbm9ybWFsLnkqdV9wYXR0ZXJuc2NhbGVfYi55K3VfdGV4X3lfYik7dl93aWR0aDI9dmVjMihvdXRzZXQsaW5zZXQpO30iKSxvcj1jcigidW5pZm9ybSBmbG9hdCB1X2ZhZGVfdDt1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlMDt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlMTt2YXJ5aW5nIHZlYzIgdl9wb3MwO3ZhcnlpbmcgdmVjMiB2X3BvczE7dW5pZm9ybSBmbG9hdCB1X2JyaWdodG5lc3NfbG93O3VuaWZvcm0gZmxvYXQgdV9icmlnaHRuZXNzX2hpZ2g7dW5pZm9ybSBmbG9hdCB1X3NhdHVyYXRpb25fZmFjdG9yO3VuaWZvcm0gZmxvYXQgdV9jb250cmFzdF9mYWN0b3I7dW5pZm9ybSB2ZWMzIHVfc3Bpbl93ZWlnaHRzO3ZvaWQgbWFpbigpIHt2ZWM0IGNvbG9yMD10ZXh0dXJlMkQodV9pbWFnZTAsdl9wb3MwKTt2ZWM0IGNvbG9yMT10ZXh0dXJlMkQodV9pbWFnZTEsdl9wb3MxKTtpZiAoY29sb3IwLmEgPiAwLjApIHtjb2xvcjAucmdiPWNvbG9yMC5yZ2IvY29sb3IwLmE7fWlmIChjb2xvcjEuYSA+IDAuMCkge2NvbG9yMS5yZ2I9Y29sb3IxLnJnYi9jb2xvcjEuYTt9dmVjNCBjb2xvcj1taXgoY29sb3IwLGNvbG9yMSx1X2ZhZGVfdCk7Y29sb3IuYSo9dV9vcGFjaXR5O3ZlYzMgcmdiPWNvbG9yLnJnYjtyZ2I9dmVjMyhkb3QocmdiLHVfc3Bpbl93ZWlnaHRzLnh5eiksZG90KHJnYix1X3NwaW5fd2VpZ2h0cy56eHkpLGRvdChyZ2IsdV9zcGluX3dlaWdodHMueXp4KSk7ZmxvYXQgYXZlcmFnZT0oY29sb3Iucitjb2xvci5nK2NvbG9yLmIpLzMuMDtyZ2IrPShhdmVyYWdlLXJnYikqdV9zYXR1cmF0aW9uX2ZhY3RvcjtyZ2I9KHJnYi0wLjUpKnVfY29udHJhc3RfZmFjdG9yKzAuNTt2ZWMzIHVfaGlnaF92ZWM9dmVjMyh1X2JyaWdodG5lc3NfbG93LHVfYnJpZ2h0bmVzc19sb3csdV9icmlnaHRuZXNzX2xvdyk7dmVjMyB1X2xvd192ZWM9dmVjMyh1X2JyaWdodG5lc3NfaGlnaCx1X2JyaWdodG5lc3NfaGlnaCx1X2JyaWdodG5lc3NfaGlnaCk7Z2xfRnJhZ0NvbG9yPXZlYzQobWl4KHVfaGlnaF92ZWMsdV9sb3dfdmVjLHJnYikqY29sb3IuYSxjb2xvci5hKTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfdGxfcGFyZW50O3VuaWZvcm0gZmxvYXQgdV9zY2FsZV9wYXJlbnQ7dW5pZm9ybSBmbG9hdCB1X2J1ZmZlcl9zY2FsZTthdHRyaWJ1dGUgdmVjMiBhX3BvczthdHRyaWJ1dGUgdmVjMiBhX3RleHR1cmVfcG9zO3ZhcnlpbmcgdmVjMiB2X3BvczA7dmFyeWluZyB2ZWMyIHZfcG9zMTt2b2lkIG1haW4oKSB7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO3ZfcG9zMD0oKChhX3RleHR1cmVfcG9zLzgxOTIuMCktMC41KS91X2J1ZmZlcl9zY2FsZSApKzAuNTt2X3BvczE9KHZfcG9zMCp1X3NjYWxlX3BhcmVudCkrdV90bF9wYXJlbnQ7fSIpLHNyPWNyKCJ1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7dmFyeWluZyB2ZWMyIHZfdGV4O3ZhcnlpbmcgZmxvYXQgdl9mYWRlX29wYWNpdHk7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5sb3dwIGZsb2F0IGFscGhhPW9wYWNpdHkqdl9mYWRlX29wYWNpdHk7Z2xfRnJhZ0NvbG9yPXRleHR1cmUyRCh1X3RleHR1cmUsdl90ZXgpKmFscGhhO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsImNvbnN0IGZsb2F0IFBJPTMuMTQxNTkyNjUzNTg5NzkzO2F0dHJpYnV0ZSB2ZWM0IGFfcG9zX29mZnNldDthdHRyaWJ1dGUgdmVjNCBhX2RhdGE7YXR0cmlidXRlIHZlYzMgYV9wcm9qZWN0ZWRfcG9zO2F0dHJpYnV0ZSBmbG9hdCBhX2ZhZGVfb3BhY2l0eTt1bmlmb3JtIGJvb2wgdV9pc19zaXplX3pvb21fY29uc3RhbnQ7dW5pZm9ybSBib29sIHVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9zaXplX3Q7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3NpemU7dW5pZm9ybSBoaWdocCBmbG9hdCB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3BpdGNoO3VuaWZvcm0gYm9vbCB1X3JvdGF0ZV9zeW1ib2w7dW5pZm9ybSBoaWdocCBmbG9hdCB1X2FzcGVjdF9yYXRpbzt1bmlmb3JtIGZsb2F0IHVfZmFkZV9jaGFuZ2U7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gbWF0NCB1X2xhYmVsX3BsYW5lX21hdHJpeDt1bmlmb3JtIG1hdDQgdV9jb29yZF9tYXRyaXg7dW5pZm9ybSBib29sIHVfaXNfdGV4dDt1bmlmb3JtIGJvb2wgdV9waXRjaF93aXRoX21hcDt1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3ZhcnlpbmcgdmVjMiB2X3RleDt2YXJ5aW5nIGZsb2F0IHZfZmFkZV9vcGFjaXR5O1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxudmVjMiBhX3Bvcz1hX3Bvc19vZmZzZXQueHk7dmVjMiBhX29mZnNldD1hX3Bvc19vZmZzZXQuenc7dmVjMiBhX3RleD1hX2RhdGEueHk7dmVjMiBhX3NpemU9YV9kYXRhLnp3O2hpZ2hwIGZsb2F0IHNlZ21lbnRfYW5nbGU9LWFfcHJvamVjdGVkX3Bvc1syXTtmbG9hdCBzaXplO2lmICghdV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1taXgoYV9zaXplWzBdLGFfc2l6ZVsxXSx1X3NpemVfdCkvMjU2LjA7fSBlbHNlIGlmICh1X2lzX3NpemVfem9vbV9jb25zdGFudCAmJiAhdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtzaXplPWFfc2l6ZVswXS8yNTYuMDt9IGVsc2UgaWYgKCF1X2lzX3NpemVfem9vbV9jb25zdGFudCAmJiB1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudCkge3NpemU9dV9zaXplO30gZWxzZSB7c2l6ZT11X3NpemU7fXZlYzQgcHJvamVjdGVkUG9pbnQ9dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO2hpZ2hwIGZsb2F0IGNhbWVyYV90b19hbmNob3JfZGlzdGFuY2U9cHJvamVjdGVkUG9pbnQudztoaWdocCBmbG9hdCBkaXN0YW5jZV9yYXRpbz11X3BpdGNoX3dpdGhfbWFwID9cbmNhbWVyYV90b19hbmNob3JfZGlzdGFuY2UvdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlIDpcbnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZS9jYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlO2hpZ2hwIGZsb2F0IHBlcnNwZWN0aXZlX3JhdGlvPWNsYW1wKDAuNSswLjUqZGlzdGFuY2VfcmF0aW8sMC4wLDQuMCk7c2l6ZSo9cGVyc3BlY3RpdmVfcmF0aW87ZmxvYXQgZm9udFNjYWxlPXVfaXNfdGV4dCA/IHNpemUvMjQuMCA6IHNpemU7aGlnaHAgZmxvYXQgc3ltYm9sX3JvdGF0aW9uPTAuMDtpZiAodV9yb3RhdGVfc3ltYm9sKSB7dmVjNCBvZmZzZXRQcm9qZWN0ZWRQb2ludD11X21hdHJpeCp2ZWM0KGFfcG9zK3ZlYzIoMSwwKSwwLDEpO3ZlYzIgYT1wcm9qZWN0ZWRQb2ludC54eS9wcm9qZWN0ZWRQb2ludC53O3ZlYzIgYj1vZmZzZXRQcm9qZWN0ZWRQb2ludC54eS9vZmZzZXRQcm9qZWN0ZWRQb2ludC53O3N5bWJvbF9yb3RhdGlvbj1hdGFuKChiLnktYS55KS91X2FzcGVjdF9yYXRpbyxiLngtYS54KTt9aGlnaHAgZmxvYXQgYW5nbGVfc2luPXNpbihzZWdtZW50X2FuZ2xlK3N5bWJvbF9yb3RhdGlvbik7aGlnaHAgZmxvYXQgYW5nbGVfY29zPWNvcyhzZWdtZW50X2FuZ2xlK3N5bWJvbF9yb3RhdGlvbik7bWF0MiByb3RhdGlvbl9tYXRyaXg9bWF0MihhbmdsZV9jb3MsLTEuMCphbmdsZV9zaW4sYW5nbGVfc2luLGFuZ2xlX2Nvcyk7dmVjNCBwcm9qZWN0ZWRfcG9zPXVfbGFiZWxfcGxhbmVfbWF0cml4KnZlYzQoYV9wcm9qZWN0ZWRfcG9zLnh5LDAuMCwxLjApO2dsX1Bvc2l0aW9uPXVfY29vcmRfbWF0cml4KnZlYzQocHJvamVjdGVkX3Bvcy54eS9wcm9qZWN0ZWRfcG9zLncrcm90YXRpb25fbWF0cml4KihhX29mZnNldC8zMi4wKmZvbnRTY2FsZSksMC4wLDEuMCk7dl90ZXg9YV90ZXgvdV90ZXhzaXplO3ZlYzIgZmFkZV9vcGFjaXR5PXVucGFja19vcGFjaXR5KGFfZmFkZV9vcGFjaXR5KTtmbG9hdCBmYWRlX2NoYW5nZT1mYWRlX29wYWNpdHlbMV0gPiAwLjUgPyB1X2ZhZGVfY2hhbmdlIDotdV9mYWRlX2NoYW5nZTt2X2ZhZGVfb3BhY2l0eT1tYXgoMC4wLG1pbigxLjAsZmFkZV9vcGFjaXR5WzBdK2ZhZGVfY2hhbmdlKSk7fSIpLGxyPWNyKCIjZGVmaW5lIFNERl9QWCA4LjBcbnVuaWZvcm0gYm9vbCB1X2lzX2hhbG87dW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9nYW1tYV9zY2FsZTt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5pZm9ybSBib29sIHVfaXNfdGV4dDt2YXJ5aW5nIHZlYzIgdl9kYXRhMDt2YXJ5aW5nIHZlYzMgdl9kYXRhMTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBmaWxsX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb19ibHVyXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb19ibHVyXG5mbG9hdCBFREdFX0dBTU1BPTAuMTA1L3VfZGV2aWNlX3BpeGVsX3JhdGlvO3ZlYzIgdGV4PXZfZGF0YTAueHk7ZmxvYXQgZ2FtbWFfc2NhbGU9dl9kYXRhMS54O2Zsb2F0IHNpemU9dl9kYXRhMS55O2Zsb2F0IGZhZGVfb3BhY2l0eT12X2RhdGExWzJdO2Zsb2F0IGZvbnRTY2FsZT11X2lzX3RleHQgPyBzaXplLzI0LjAgOiBzaXplO2xvd3AgdmVjNCBjb2xvcj1maWxsX2NvbG9yO2hpZ2hwIGZsb2F0IGdhbW1hPUVER0VfR0FNTUEvKGZvbnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtsb3dwIGZsb2F0IGJ1ZmY9KDI1Ni4wLTY0LjApLzI1Ni4wO2lmICh1X2lzX2hhbG8pIHtjb2xvcj1oYWxvX2NvbG9yO2dhbW1hPShoYWxvX2JsdXIqMS4xOS9TREZfUFgrRURHRV9HQU1NQSkvKGZvbnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtidWZmPSg2LjAtaGFsb193aWR0aC9mb250U2NhbGUpL1NERl9QWDt9bG93cCBmbG9hdCBkaXN0PXRleHR1cmUyRCh1X3RleHR1cmUsdGV4KS5hO2hpZ2hwIGZsb2F0IGdhbW1hX3NjYWxlZD1nYW1tYSpnYW1tYV9zY2FsZTtoaWdocCBmbG9hdCBhbHBoYT1zbW9vdGhzdGVwKGJ1ZmYtZ2FtbWFfc2NhbGVkLGJ1ZmYrZ2FtbWFfc2NhbGVkLGRpc3QpO2dsX0ZyYWdDb2xvcj1jb2xvciooYWxwaGEqb3BhY2l0eSpmYWRlX29wYWNpdHkpO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsImNvbnN0IGZsb2F0IFBJPTMuMTQxNTkyNjUzNTg5NzkzO2F0dHJpYnV0ZSB2ZWM0IGFfcG9zX29mZnNldDthdHRyaWJ1dGUgdmVjNCBhX2RhdGE7YXR0cmlidXRlIHZlYzMgYV9wcm9qZWN0ZWRfcG9zO2F0dHJpYnV0ZSBmbG9hdCBhX2ZhZGVfb3BhY2l0eTt1bmlmb3JtIGJvb2wgdV9pc19zaXplX3pvb21fY29uc3RhbnQ7dW5pZm9ybSBib29sIHVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9zaXplX3Q7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3NpemU7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gbWF0NCB1X2xhYmVsX3BsYW5lX21hdHJpeDt1bmlmb3JtIG1hdDQgdV9jb29yZF9tYXRyaXg7dW5pZm9ybSBib29sIHVfaXNfdGV4dDt1bmlmb3JtIGJvb2wgdV9waXRjaF93aXRoX21hcDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfcGl0Y2g7dW5pZm9ybSBib29sIHVfcm90YXRlX3N5bWJvbDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfYXNwZWN0X3JhdGlvO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3VuaWZvcm0gZmxvYXQgdV9mYWRlX2NoYW5nZTt1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3ZhcnlpbmcgdmVjMiB2X2RhdGEwO3ZhcnlpbmcgdmVjMyB2X2RhdGExO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBoYWxvX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX2JsdXJcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgZmlsbF9jb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBoYWxvX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb193aWR0aFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoYWxvX2JsdXJcbnZlYzIgYV9wb3M9YV9wb3Nfb2Zmc2V0Lnh5O3ZlYzIgYV9vZmZzZXQ9YV9wb3Nfb2Zmc2V0Lnp3O3ZlYzIgYV90ZXg9YV9kYXRhLnh5O3ZlYzIgYV9zaXplPWFfZGF0YS56dztoaWdocCBmbG9hdCBzZWdtZW50X2FuZ2xlPS1hX3Byb2plY3RlZF9wb3NbMl07ZmxvYXQgc2l6ZTtpZiAoIXVfaXNfc2l6ZV96b29tX2NvbnN0YW50ICYmICF1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudCkge3NpemU9bWl4KGFfc2l6ZVswXSxhX3NpemVbMV0sdV9zaXplX3QpLzI1Ni4wO30gZWxzZSBpZiAodV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1hX3NpemVbMF0vMjU2LjA7fSBlbHNlIGlmICghdV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtzaXplPXVfc2l6ZTt9IGVsc2Uge3NpemU9dV9zaXplO312ZWM0IHByb2plY3RlZFBvaW50PXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlPXByb2plY3RlZFBvaW50Lnc7aGlnaHAgZmxvYXQgZGlzdGFuY2VfcmF0aW89dV9waXRjaF93aXRoX21hcCA/XG5jYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlL3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSA6XG51X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UvY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZTtoaWdocCBmbG9hdCBwZXJzcGVjdGl2ZV9yYXRpbz1jbGFtcCgwLjUrMC41KmRpc3RhbmNlX3JhdGlvLDAuMCw0LjApO3NpemUqPXBlcnNwZWN0aXZlX3JhdGlvO2Zsb2F0IGZvbnRTY2FsZT11X2lzX3RleHQgPyBzaXplLzI0LjAgOiBzaXplO2hpZ2hwIGZsb2F0IHN5bWJvbF9yb3RhdGlvbj0wLjA7aWYgKHVfcm90YXRlX3N5bWJvbCkge3ZlYzQgb2Zmc2V0UHJvamVjdGVkUG9pbnQ9dV9tYXRyaXgqdmVjNChhX3Bvcyt2ZWMyKDEsMCksMCwxKTt2ZWMyIGE9cHJvamVjdGVkUG9pbnQueHkvcHJvamVjdGVkUG9pbnQudzt2ZWMyIGI9b2Zmc2V0UHJvamVjdGVkUG9pbnQueHkvb2Zmc2V0UHJvamVjdGVkUG9pbnQudztzeW1ib2xfcm90YXRpb249YXRhbigoYi55LWEueSkvdV9hc3BlY3RfcmF0aW8sYi54LWEueCk7fWhpZ2hwIGZsb2F0IGFuZ2xlX3Npbj1zaW4oc2VnbWVudF9hbmdsZStzeW1ib2xfcm90YXRpb24pO2hpZ2hwIGZsb2F0IGFuZ2xlX2Nvcz1jb3Moc2VnbWVudF9hbmdsZStzeW1ib2xfcm90YXRpb24pO21hdDIgcm90YXRpb25fbWF0cml4PW1hdDIoYW5nbGVfY29zLC0xLjAqYW5nbGVfc2luLGFuZ2xlX3NpbixhbmdsZV9jb3MpO3ZlYzQgcHJvamVjdGVkX3Bvcz11X2xhYmVsX3BsYW5lX21hdHJpeCp2ZWM0KGFfcHJvamVjdGVkX3Bvcy54eSwwLjAsMS4wKTtnbF9Qb3NpdGlvbj11X2Nvb3JkX21hdHJpeCp2ZWM0KHByb2plY3RlZF9wb3MueHkvcHJvamVjdGVkX3Bvcy53K3JvdGF0aW9uX21hdHJpeCooYV9vZmZzZXQvMzIuMCpmb250U2NhbGUpLDAuMCwxLjApO2Zsb2F0IGdhbW1hX3NjYWxlPWdsX1Bvc2l0aW9uLnc7dmVjMiB0ZXg9YV90ZXgvdV90ZXhzaXplO3ZlYzIgZmFkZV9vcGFjaXR5PXVucGFja19vcGFjaXR5KGFfZmFkZV9vcGFjaXR5KTtmbG9hdCBmYWRlX2NoYW5nZT1mYWRlX29wYWNpdHlbMV0gPiAwLjUgPyB1X2ZhZGVfY2hhbmdlIDotdV9mYWRlX2NoYW5nZTtmbG9hdCBpbnRlcnBvbGF0ZWRfZmFkZV9vcGFjaXR5PW1heCgwLjAsbWluKDEuMCxmYWRlX29wYWNpdHlbMF0rZmFkZV9jaGFuZ2UpKTt2X2RhdGEwPXZlYzIodGV4LngsdGV4LnkpO3ZfZGF0YTE9dmVjMyhnYW1tYV9zY2FsZSxzaXplLGludGVycG9sYXRlZF9mYWRlX29wYWNpdHkpO30iKTtmdW5jdGlvbiBjcih0LGUpe3ZhciByPS8jcHJhZ21hIG1hcGJveDogKFtcd10rKSAoW1x3XSspIChbXHddKykgKFtcd10rKS9nLG49e307cmV0dXJue2ZyYWdtZW50U291cmNlOnQ9dC5yZXBsYWNlKHIsZnVuY3Rpb24odCxlLHIsYSxpKXtyZXR1cm4gbltpXT0hMCwiZGVmaW5lIj09PWU/IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIraSsiXG52YXJ5aW5nICIrcisiICIrYSsiICIraSsiO1xuI2Vsc2VcbnVuaWZvcm0gIityKyIgIithKyIgdV8iK2krIjtcbiNlbmRpZlxuIjoiXG4jaWZkZWYgSEFTX1VOSUZPUk1fdV8iK2krIlxuICAgICIrcisiICIrYSsiICIraSsiID0gdV8iK2krIjtcbiNlbmRpZlxuIn0pLHZlcnRleFNvdXJjZTplPWUucmVwbGFjZShyLGZ1bmN0aW9uKHQsZSxyLGEsaSl7dmFyIG89ImZsb2F0Ij09PWE/InZlYzIiOiJ2ZWM0IixzPWkubWF0Y2goL2NvbG9yLyk/ImNvbG9yIjpvO3JldHVybiBuW2ldPyJkZWZpbmUiPT09ZT8iXG4jaWZuZGVmIEhBU19VTklGT1JNX3VfIitpKyJcbnVuaWZvcm0gbG93cCBmbG9hdCB1XyIraSsiX3Q7XG5hdHRyaWJ1dGUgIityKyIgIitvKyIgYV8iK2krIjtcbnZhcnlpbmcgIityKyIgIithKyIgIitpKyI7XG4jZWxzZVxudW5pZm9ybSAiK3IrIiAiK2ErIiB1XyIraSsiO1xuI2VuZGlmXG4iOiJ2ZWM0Ij09PXM/IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIraSsiXG4gICAgIitpKyIgPSBhXyIraSsiO1xuI2Vsc2VcbiAgICAiK3IrIiAiK2ErIiAiK2krIiA9IHVfIitpKyI7XG4jZW5kaWZcbiI6IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIraSsiXG4gICAgIitpKyIgPSB1bnBhY2tfbWl4XyIrcysiKGFfIitpKyIsIHVfIitpKyJfdCk7XG4jZWxzZVxuICAgICIrcisiICIrYSsiICIraSsiID0gdV8iK2krIjtcbiNlbmRpZlxuIjoiZGVmaW5lIj09PWU/IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIraSsiXG51bmlmb3JtIGxvd3AgZmxvYXQgdV8iK2krIl90O1xuYXR0cmlidXRlICIrcisiICIrbysiIGFfIitpKyI7XG4jZWxzZVxudW5pZm9ybSAiK3IrIiAiK2ErIiB1XyIraSsiO1xuI2VuZGlmXG4iOiJ2ZWM0Ij09PXM/IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIraSsiXG4gICAgIityKyIgIithKyIgIitpKyIgPSBhXyIraSsiO1xuI2Vsc2VcbiAgICAiK3IrIiAiK2ErIiAiK2krIiA9IHVfIitpKyI7XG4jZW5kaWZcbiI6IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIraSsiXG4gICAgIityKyIgIithKyIgIitpKyIgPSB1bnBhY2tfbWl4XyIrcysiKGFfIitpKyIsIHVfIitpKyJfdCk7XG4jZWxzZVxuICAgICIrcisiICIrYSsiICIraSsiID0gdV8iK2krIjtcbiNlbmRpZlxuIn0pfX12YXIgdXI9T2JqZWN0LmZyZWV6ZSh7cHJlbHVkZTpCZSxiYWNrZ3JvdW5kOk5lLGJhY2tncm91bmRQYXR0ZXJuOmplLGNpcmNsZTpWZSxjbGlwcGluZ01hc2s6VWUsaGVhdG1hcDpxZSxoZWF0bWFwVGV4dHVyZTpIZSxjb2xsaXNpb25Cb3g6R2UsY29sbGlzaW9uQ2lyY2xlOlllLGRlYnVnOldlLGZpbGw6WGUsZmlsbE91dGxpbmU6WmUsZmlsbE91dGxpbmVQYXR0ZXJuOkplLGZpbGxQYXR0ZXJuOktlLGZpbGxFeHRydXNpb246UWUsZmlsbEV4dHJ1c2lvblBhdHRlcm46JGUsaGlsbHNoYWRlUHJlcGFyZTp0cixoaWxsc2hhZGU6ZXIsbGluZTpycixsaW5lR3JhZGllbnQ6bnIsbGluZVBhdHRlcm46YXIsbGluZVNERjppcixyYXN0ZXI6b3Isc3ltYm9sSWNvbjpzcixzeW1ib2xTREY6bHJ9KSxocj1mdW5jdGlvbigpe3RoaXMuYm91bmRQcm9ncmFtPW51bGwsdGhpcy5ib3VuZExheW91dFZlcnRleEJ1ZmZlcj1udWxsLHRoaXMuYm91bmRQYWludFZlcnRleEJ1ZmZlcnM9W10sdGhpcy5ib3VuZEluZGV4QnVmZmVyPW51bGwsdGhpcy5ib3VuZFZlcnRleE9mZnNldD1udWxsLHRoaXMuYm91bmREeW5hbWljVmVydGV4QnVmZmVyPW51bGwsdGhpcy52YW89bnVsbH07aHIucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzKXt0aGlzLmNvbnRleHQ9dDtmb3IodmFyIGw9dGhpcy5ib3VuZFBhaW50VmVydGV4QnVmZmVycy5sZW5ndGghPT1uLmxlbmd0aCxjPTA7IWwmJmM8bi5sZW5ndGg7YysrKXRoaXMuYm91bmRQYWludFZlcnRleEJ1ZmZlcnNbY10hPT1uW2NdJiYobD0hMCk7dmFyIHU9IXRoaXMudmFvfHx0aGlzLmJvdW5kUHJvZ3JhbSE9PWV8fHRoaXMuYm91bmRMYXlvdXRWZXJ0ZXhCdWZmZXIhPT1yfHxsfHx0aGlzLmJvdW5kSW5kZXhCdWZmZXIhPT1hfHx0aGlzLmJvdW5kVmVydGV4T2Zmc2V0IT09aXx8dGhpcy5ib3VuZER5bmFtaWNWZXJ0ZXhCdWZmZXIhPT1vfHx0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1ZmZlcjIhPT1zOyF0LmV4dFZlcnRleEFycmF5T2JqZWN0fHx1P3RoaXMuZnJlc2hCaW5kKGUscixuLGEsaSxvLHMpOih0LmJpbmRWZXJ0ZXhBcnJheU9FUy5zZXQodGhpcy52YW8pLG8mJm8uYmluZCgpLGEmJmEuZHluYW1pY0RyYXcmJmEuYmluZCgpLHMmJnMuYmluZCgpKX0saHIucHJvdG90eXBlLmZyZXNoQmluZD1mdW5jdGlvbih0LGUscixuLGEsaSxvKXt2YXIgcyxsPXQubnVtQXR0cmlidXRlcyxjPXRoaXMuY29udGV4dCx1PWMuZ2w7aWYoYy5leHRWZXJ0ZXhBcnJheU9iamVjdCl0aGlzLnZhbyYmdGhpcy5kZXN0cm95KCksdGhpcy52YW89Yy5leHRWZXJ0ZXhBcnJheU9iamVjdC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpLGMuYmluZFZlcnRleEFycmF5T0VTLnNldCh0aGlzLnZhbykscz0wLHRoaXMuYm91bmRQcm9ncmFtPXQsdGhpcy5ib3VuZExheW91dFZlcnRleEJ1ZmZlcj1lLHRoaXMuYm91bmRQYWludFZlcnRleEJ1ZmZlcnM9cix0aGlzLmJvdW5kSW5kZXhCdWZmZXI9bix0aGlzLmJvdW5kVmVydGV4T2Zmc2V0PWEsdGhpcy5ib3VuZER5bmFtaWNWZXJ0ZXhCdWZmZXI9aSx0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1ZmZlcjI9bztlbHNle3M9Yy5jdXJyZW50TnVtQXR0cmlidXRlc3x8MDtmb3IodmFyIGg9bDtoPHM7aCsrKXUuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGgpfWUuZW5hYmxlQXR0cmlidXRlcyh1LHQpO2Zvcih2YXIgZj0wLHA9cjtmPHAubGVuZ3RoO2YrPTEpcFtmXS5lbmFibGVBdHRyaWJ1dGVzKHUsdCk7aSYmaS5lbmFibGVBdHRyaWJ1dGVzKHUsdCksbyYmby5lbmFibGVBdHRyaWJ1dGVzKHUsdCksZS5iaW5kKCksZS5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyh1LHQsYSk7Zm9yKHZhciBkPTAsZz1yO2Q8Zy5sZW5ndGg7ZCs9MSl7dmFyIHY9Z1tkXTt2LmJpbmQoKSx2LnNldFZlcnRleEF0dHJpYlBvaW50ZXJzKHUsdCxhKX1pJiYoaS5iaW5kKCksaS5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyh1LHQsYSkpLG4mJm4uYmluZCgpLG8mJihvLmJpbmQoKSxvLnNldFZlcnRleEF0dHJpYlBvaW50ZXJzKHUsdCxhKSksYy5jdXJyZW50TnVtQXR0cmlidXRlcz1sfSxoci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMudmFvJiYodGhpcy5jb250ZXh0LmV4dFZlcnRleEFycmF5T2JqZWN0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHRoaXMudmFvKSx0aGlzLnZhbz1udWxsKX07dmFyIGZyPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9dC5nbDt0aGlzLnByb2dyYW09aS5jcmVhdGVQcm9ncmFtKCk7dmFyIG89ci5kZWZpbmVzKCk7YSYmby5wdXNoKCIjZGVmaW5lIE9WRVJEUkFXX0lOU1BFQ1RPUjsiKTt2YXIgcz1vLmNvbmNhdChCZS5mcmFnbWVudFNvdXJjZSxlLmZyYWdtZW50U291cmNlKS5qb2luKCJcbiIpLGw9by5jb25jYXQoQmUudmVydGV4U291cmNlLGUudmVydGV4U291cmNlKS5qb2luKCJcbiIpLGM9aS5jcmVhdGVTaGFkZXIoaS5GUkFHTUVOVF9TSEFERVIpO2kuc2hhZGVyU291cmNlKGMscyksaS5jb21waWxlU2hhZGVyKGMpLGkuYXR0YWNoU2hhZGVyKHRoaXMucHJvZ3JhbSxjKTt2YXIgdT1pLmNyZWF0ZVNoYWRlcihpLlZFUlRFWF9TSEFERVIpO2kuc2hhZGVyU291cmNlKHUsbCksaS5jb21waWxlU2hhZGVyKHUpLGkuYXR0YWNoU2hhZGVyKHRoaXMucHJvZ3JhbSx1KTtmb3IodmFyIGg9ci5sYXlvdXRBdHRyaWJ1dGVzfHxbXSxmPTA7ZjxoLmxlbmd0aDtmKyspaS5iaW5kQXR0cmliTG9jYXRpb24odGhpcy5wcm9ncmFtLGYsaFtmXS5uYW1lKTtpLmxpbmtQcm9ncmFtKHRoaXMucHJvZ3JhbSksdGhpcy5udW1BdHRyaWJ1dGVzPWkuZ2V0UHJvZ3JhbVBhcmFtZXRlcih0aGlzLnByb2dyYW0saS5BQ1RJVkVfQVRUUklCVVRFUyksdGhpcy5hdHRyaWJ1dGVzPXt9O2Zvcih2YXIgcD17fSxkPTA7ZDx0aGlzLm51bUF0dHJpYnV0ZXM7ZCsrKXt2YXIgZz1pLmdldEFjdGl2ZUF0dHJpYih0aGlzLnByb2dyYW0sZCk7ZyYmKHRoaXMuYXR0cmlidXRlc1tnLm5hbWVdPWkuZ2V0QXR0cmliTG9jYXRpb24odGhpcy5wcm9ncmFtLGcubmFtZSkpfWZvcih2YXIgdj1pLmdldFByb2dyYW1QYXJhbWV0ZXIodGhpcy5wcm9ncmFtLGkuQUNUSVZFX1VOSUZPUk1TKSxtPTA7bTx2O20rKyl7dmFyIHk9aS5nZXRBY3RpdmVVbmlmb3JtKHRoaXMucHJvZ3JhbSxtKTt5JiYocFt5Lm5hbWVdPWkuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSx5Lm5hbWUpKX10aGlzLmZpeGVkVW5pZm9ybXM9bih0LHApLHRoaXMuYmluZGVyVW5pZm9ybXM9ci5nZXRVbmlmb3Jtcyh0LHApfTtmdW5jdGlvbiBwcihlLHIsbil7dmFyIGE9MS9jZShuLDEsci50cmFuc2Zvcm0udGlsZVpvb20pLGk9TWF0aC5wb3coMixuLnRpbGVJRC5vdmVyc2NhbGVkWiksbz1uLnRpbGVTaXplKk1hdGgucG93KDIsci50cmFuc2Zvcm0udGlsZVpvb20pL2kscz1vKihuLnRpbGVJRC5jYW5vbmljYWwueCtuLnRpbGVJRC53cmFwKmkpLGw9bypuLnRpbGVJRC5jYW5vbmljYWwueTtyZXR1cm57dV9pbWFnZTowLHVfdGV4c2l6ZTpuLmltYWdlQXRsYXNUZXh0dXJlLnNpemUsdV9zY2FsZTpbdC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8sYSxlLmZyb21TY2FsZSxlLnRvU2NhbGVdLHVfZmFkZTplLnQsdV9waXhlbF9jb29yZF91cHBlcjpbcz4+MTYsbD4+MTZdLHVfcGl4ZWxfY29vcmRfbG93ZXI6WzY1NTM1JnMsNjU1MzUmbF19fWZyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCxkLGcpe3ZhciB2LG09dC5nbDtmb3IodmFyIHkgaW4gdC5wcm9ncmFtLnNldCh0aGlzLnByb2dyYW0pLHQuc2V0RGVwdGhNb2RlKHIpLHQuc2V0U3RlbmNpbE1vZGUobiksdC5zZXRDb2xvck1vZGUoYSksdC5zZXRDdWxsRmFjZShpKSx0aGlzLmZpeGVkVW5pZm9ybXMpdGhpcy5maXhlZFVuaWZvcm1zW3ldLnNldChvW3ldKTtwJiZwLnNldFVuaWZvcm1zKHQsdGhpcy5iaW5kZXJVbmlmb3JtcyxoLHt6b29tOmZ9KTtmb3IodmFyIHg9KHY9e30sdlttLkxJTkVTXT0yLHZbbS5UUklBTkdMRVNdPTMsdlttLkxJTkVfU1RSSVBdPTEsdilbZV0sYj0wLF89dS5nZXQoKTtiPF8ubGVuZ3RoO2IrPTEpe3ZhciB3PV9bYl0saz13LnZhb3N8fCh3LnZhb3M9e30pOyhrW3NdfHwoa1tzXT1uZXcgaHIpKS5iaW5kKHQsdGhpcyxsLHA/cC5nZXRQYWludFZlcnRleEJ1ZmZlcnMoKTpbXSxjLHcudmVydGV4T2Zmc2V0LGQsZyksbS5kcmF3RWxlbWVudHMoZSx3LnByaW1pdGl2ZUxlbmd0aCp4LG0uVU5TSUdORURfU0hPUlQsdy5wcmltaXRpdmVPZmZzZXQqeCoyKX19O3ZhciBkcj1mdW5jdGlvbihlLHIsbixhKXt2YXIgaT1yLnN0eWxlLmxpZ2h0LG89aS5wcm9wZXJ0aWVzLmdldCgicG9zaXRpb24iKSxzPVtvLngsby55LG8uel0sbD10LmNyZWF0ZSQxKCk7InZpZXdwb3J0Ij09PWkucHJvcGVydGllcy5nZXQoImFuY2hvciIpJiZ0LmZyb21Sb3RhdGlvbihsLC1yLnRyYW5zZm9ybS5hbmdsZSksdC50cmFuc2Zvcm1NYXQzKHMscyxsKTt2YXIgYz1pLnByb3BlcnRpZXMuZ2V0KCJjb2xvciIpO3JldHVybnt1X21hdHJpeDplLHVfbGlnaHRwb3M6cyx1X2xpZ2h0aW50ZW5zaXR5OmkucHJvcGVydGllcy5nZXQoImludGVuc2l0eSIpLHVfbGlnaHRjb2xvcjpbYy5yLGMuZyxjLmJdLHVfdmVydGljYWxfZ3JhZGllbnQ6K24sdV9vcGFjaXR5OmF9fSxncj1mdW5jdGlvbihlLHIsbixhLGksbyxzKXtyZXR1cm4gdC5leHRlbmQoZHIoZSxyLG4sYSkscHIobyxyLHMpLHt1X2hlaWdodF9mYWN0b3I6LU1hdGgucG93KDIsaS5vdmVyc2NhbGVkWikvcy50aWxlU2l6ZS84fSl9LHZyPWZ1bmN0aW9uKHQpe3JldHVybnt1X21hdHJpeDp0fX0sbXI9ZnVuY3Rpb24oZSxyLG4sYSl7cmV0dXJuIHQuZXh0ZW5kKHZyKGUpLHByKG4scixhKSl9LHlyPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3VfbWF0cml4OnQsdV93b3JsZDplfX0seHI9ZnVuY3Rpb24oZSxyLG4sYSxpKXtyZXR1cm4gdC5leHRlbmQobXIoZSxyLG4sYSkse3Vfd29ybGQ6aX0pfSxicj1mdW5jdGlvbihlLHIsbixhKXt2YXIgaSxvLHM9ZS50cmFuc2Zvcm07aWYoIm1hcCI9PT1hLnBhaW50LmdldCgiY2lyY2xlLXBpdGNoLWFsaWdubWVudCIpKXt2YXIgbD1jZShuLDEscy56b29tKTtpPSEwLG89W2wsbF19ZWxzZSBpPSExLG89cy5waXhlbHNUb0dMVW5pdHM7cmV0dXJue3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UsdV9zY2FsZV93aXRoX21hcDorKCJtYXAiPT09YS5wYWludC5nZXQoImNpcmNsZS1waXRjaC1zY2FsZSIpKSx1X21hdHJpeDplLnRyYW5zbGF0ZVBvc01hdHJpeChyLnBvc01hdHJpeCxuLGEucGFpbnQuZ2V0KCJjaXJjbGUtdHJhbnNsYXRlIiksYS5wYWludC5nZXQoImNpcmNsZS10cmFuc2xhdGUtYW5jaG9yIikpLHVfcGl0Y2hfd2l0aF9tYXA6K2ksdV9kZXZpY2VfcGl4ZWxfcmF0aW86dC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8sdV9leHRydWRlX3NjYWxlOm99fSxfcj1mdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U6bmV3IHQuVW5pZm9ybTFmKGUsci51X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UpLHVfcGl4ZWxzX3RvX3RpbGVfdW5pdHM6bmV3IHQuVW5pZm9ybTFmKGUsci51X3BpeGVsc190b190aWxlX3VuaXRzKSx1X2V4dHJ1ZGVfc2NhbGU6bmV3IHQuVW5pZm9ybTJmKGUsci51X2V4dHJ1ZGVfc2NhbGUpLHVfb3ZlcnNjYWxlX2ZhY3RvcjpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfb3ZlcnNjYWxlX2ZhY3Rvcil9fSx3cj1mdW5jdGlvbih0LGUscil7dmFyIG49Y2UociwxLGUuem9vbSksYT1NYXRoLnBvdygyLGUuem9vbS1yLnRpbGVJRC5vdmVyc2NhbGVkWiksaT1yLnRpbGVJRC5vdmVyc2NhbGVGYWN0b3IoKTtyZXR1cm57dV9tYXRyaXg6dCx1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U6ZS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLHVfcGl4ZWxzX3RvX3RpbGVfdW5pdHM6bix1X2V4dHJ1ZGVfc2NhbGU6W2UucGl4ZWxzVG9HTFVuaXRzWzBdLyhuKmEpLGUucGl4ZWxzVG9HTFVuaXRzWzFdLyhuKmEpXSx1X292ZXJzY2FsZV9mYWN0b3I6aX19LGtyPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3VfbWF0cml4OnQsdV9jb2xvcjplfX0sVHI9ZnVuY3Rpb24odCl7cmV0dXJue3VfbWF0cml4OnR9fSxNcj1mdW5jdGlvbih0LGUscixuKXtyZXR1cm57dV9tYXRyaXg6dCx1X2V4dHJ1ZGVfc2NhbGU6Y2UoZSwxLHIpLHVfaW50ZW5zaXR5Om59fSxBcj1mdW5jdGlvbih0LGUscil7dmFyIG49ci5wYWludC5nZXQoImhpbGxzaGFkZS1zaGFkb3ctY29sb3IiKSxhPXIucGFpbnQuZ2V0KCJoaWxsc2hhZGUtaGlnaGxpZ2h0LWNvbG9yIiksaT1yLnBhaW50LmdldCgiaGlsbHNoYWRlLWFjY2VudC1jb2xvciIpLG89ci5wYWludC5nZXQoImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9uIikqKE1hdGguUEkvMTgwKTsidmlld3BvcnQiPT09ci5wYWludC5nZXQoImhpbGxzaGFkZS1pbGx1bWluYXRpb24tYW5jaG9yIikmJihvLT10LnRyYW5zZm9ybS5hbmdsZSk7dmFyIHM9IXQub3B0aW9ucy5tb3Zpbmc7cmV0dXJue3VfbWF0cml4OnQudHJhbnNmb3JtLmNhbGN1bGF0ZVBvc01hdHJpeChlLnRpbGVJRC50b1Vud3JhcHBlZCgpLHMpLHVfaW1hZ2U6MCx1X2xhdHJhbmdlOkVyKHQsZS50aWxlSUQpLHVfbGlnaHQ6W3IucGFpbnQuZ2V0KCJoaWxsc2hhZGUtZXhhZ2dlcmF0aW9uIiksb10sdV9zaGFkb3c6bix1X2hpZ2hsaWdodDphLHVfYWNjZW50Oml9fSxTcj1mdW5jdGlvbihlLHIpe3ZhciBuPWUuZGVtLnN0cmlkZSxhPXQuY3JlYXRlKCk7cmV0dXJuIHQub3J0aG8oYSwwLHQuRVhURU5ULC10LkVYVEVOVCwwLDAsMSksdC50cmFuc2xhdGUoYSxhLFswLC10LkVYVEVOVCwwXSkse3VfbWF0cml4OmEsdV9pbWFnZToxLHVfZGltZW5zaW9uOltuLG5dLHVfem9vbTplLnRpbGVJRC5vdmVyc2NhbGVkWix1X21heHpvb206cn19O2Z1bmN0aW9uIEVyKGUscil7dmFyIG49TWF0aC5wb3coMixyLmNhbm9uaWNhbC56KSxhPXIuY2Fub25pY2FsLnk7cmV0dXJuW25ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZSgwLGEvbikudG9MbmdMYXQoKS5sYXQsbmV3IHQuTWVyY2F0b3JDb29yZGluYXRlKDAsKGErMSkvbikudG9MbmdMYXQoKS5sYXRdfXZhciBMcj1mdW5jdGlvbihlLHIsbil7dmFyIGE9ZS50cmFuc2Zvcm07cmV0dXJue3VfbWF0cml4OklyKGUscixuKSx1X3JhdGlvOjEvY2UociwxLGEuem9vbSksdV9kZXZpY2VfcGl4ZWxfcmF0aW86dC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8sdV91bml0c190b19waXhlbHM6WzEvYS5waXhlbHNUb0dMVW5pdHNbMF0sMS9hLnBpeGVsc1RvR0xVbml0c1sxXV19fSxDcj1mdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuZXh0ZW5kKExyKGUscixuKSx7dV9pbWFnZTowfSl9LFByPWZ1bmN0aW9uKGUscixuLGEpe3ZhciBpPWUudHJhbnNmb3JtLG89enIocixpKTtyZXR1cm57dV9tYXRyaXg6SXIoZSxyLG4pLHVfdGV4c2l6ZTpyLmltYWdlQXRsYXNUZXh0dXJlLnNpemUsdV9yYXRpbzoxL2NlKHIsMSxpLnpvb20pLHVfZGV2aWNlX3BpeGVsX3JhdGlvOnQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLHVfaW1hZ2U6MCx1X3NjYWxlOlt0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyxvLGEuZnJvbVNjYWxlLGEudG9TY2FsZV0sdV9mYWRlOmEudCx1X3VuaXRzX3RvX3BpeGVsczpbMS9pLnBpeGVsc1RvR0xVbml0c1swXSwxL2kucGl4ZWxzVG9HTFVuaXRzWzFdXX19LE9yPWZ1bmN0aW9uKGUscixuLGEsaSl7dmFyIG89ZS50cmFuc2Zvcm0scz1lLmxpbmVBdGxhcyxsPXpyKHIsbyksYz0icm91bmQiPT09bi5sYXlvdXQuZ2V0KCJsaW5lLWNhcCIpLHU9cy5nZXREYXNoKGEuZnJvbSxjKSxoPXMuZ2V0RGFzaChhLnRvLGMpLGY9dS53aWR0aCppLmZyb21TY2FsZSxwPWgud2lkdGgqaS50b1NjYWxlO3JldHVybiB0LmV4dGVuZChMcihlLHIsbikse3VfcGF0dGVybnNjYWxlX2E6W2wvZiwtdS5oZWlnaHQvMl0sdV9wYXR0ZXJuc2NhbGVfYjpbbC9wLC1oLmhlaWdodC8yXSx1X3NkZmdhbW1hOnMud2lkdGgvKDI1NipNYXRoLm1pbihmLHApKnQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvKS8yLHVfaW1hZ2U6MCx1X3RleF95X2E6dS55LHVfdGV4X3lfYjpoLnksdV9taXg6aS50fSl9O2Z1bmN0aW9uIHpyKHQsZSl7cmV0dXJuIDEvY2UodCwxLGUudGlsZVpvb20pfWZ1bmN0aW9uIElyKHQsZSxyKXtyZXR1cm4gdC50cmFuc2xhdGVQb3NNYXRyaXgoZS50aWxlSUQucG9zTWF0cml4LGUsci5wYWludC5nZXQoImxpbmUtdHJhbnNsYXRlIiksci5wYWludC5nZXQoImxpbmUtdHJhbnNsYXRlLWFuY2hvciIpKX12YXIgRHI9ZnVuY3Rpb24odCxlLHIsbixhKXtyZXR1cm57dV9tYXRyaXg6dCx1X3RsX3BhcmVudDplLHVfc2NhbGVfcGFyZW50OnIsdV9idWZmZXJfc2NhbGU6MSx1X2ZhZGVfdDpuLm1peCx1X29wYWNpdHk6bi5vcGFjaXR5KmEucGFpbnQuZ2V0KCJyYXN0ZXItb3BhY2l0eSIpLHVfaW1hZ2UwOjAsdV9pbWFnZTE6MSx1X2JyaWdodG5lc3NfbG93OmEucGFpbnQuZ2V0KCJyYXN0ZXItYnJpZ2h0bmVzcy1taW4iKSx1X2JyaWdodG5lc3NfaGlnaDphLnBhaW50LmdldCgicmFzdGVyLWJyaWdodG5lc3MtbWF4IiksdV9zYXR1cmF0aW9uX2ZhY3Rvcjoobz1hLnBhaW50LmdldCgicmFzdGVyLXNhdHVyYXRpb24iKSxvPjA/MS0xLygxLjAwMS1vKTotbyksdV9jb250cmFzdF9mYWN0b3I6KGk9YS5wYWludC5nZXQoInJhc3Rlci1jb250cmFzdCIpLGk+MD8xLygxLWkpOjEraSksdV9zcGluX3dlaWdodHM6UnIoYS5wYWludC5nZXQoInJhc3Rlci1odWUtcm90YXRlIikpfTt2YXIgaSxvfTtmdW5jdGlvbiBScih0KXt0Kj1NYXRoLlBJLzE4MDt2YXIgZT1NYXRoLnNpbih0KSxyPU1hdGguY29zKHQpO3JldHVyblsoMipyKzEpLzMsKC1NYXRoLnNxcnQoMykqZS1yKzEpLzMsKE1hdGguc3FydCgzKSplLXIrMSkvM119dmFyIEZyPWZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8scyxsLGMpe3ZhciB1PWEudHJhbnNmb3JtO3JldHVybnt1X2lzX3NpemVfem9vbV9jb25zdGFudDorKCJjb25zdGFudCI9PT10fHwic291cmNlIj09PXQpLHVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50OisoImNvbnN0YW50Ij09PXR8fCJjYW1lcmEiPT09dCksdV9zaXplX3Q6ZT9lLnVTaXplVDowLHVfc2l6ZTplP2UudVNpemU6MCx1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U6dS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLHVfcGl0Y2g6dS5waXRjaC8zNjAqMipNYXRoLlBJLHVfcm90YXRlX3N5bWJvbDorcix1X2FzcGVjdF9yYXRpbzp1LndpZHRoL3UuaGVpZ2h0LHVfZmFkZV9jaGFuZ2U6YS5vcHRpb25zLmZhZGVEdXJhdGlvbj9hLnN5bWJvbEZhZGVDaGFuZ2U6MSx1X21hdHJpeDppLHVfbGFiZWxfcGxhbmVfbWF0cml4Om8sdV9jb29yZF9tYXRyaXg6cyx1X2lzX3RleHQ6K2wsdV9waXRjaF93aXRoX21hcDorbix1X3RleHNpemU6Yyx1X3RleHR1cmU6MH19LEJyPWZ1bmN0aW9uKGUscixuLGEsaSxvLHMsbCxjLHUsaCl7dmFyIGY9aS50cmFuc2Zvcm07cmV0dXJuIHQuZXh0ZW5kKEZyKGUscixuLGEsaSxvLHMsbCxjLHUpLHt1X2dhbW1hX3NjYWxlOmE/TWF0aC5jb3MoZi5fcGl0Y2gpKmYuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZToxLHVfZGV2aWNlX3BpeGVsX3JhdGlvOnQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLHVfaXNfaGFsbzoraH0pfSxOcj1mdW5jdGlvbih0LGUscil7cmV0dXJue3VfbWF0cml4OnQsdV9vcGFjaXR5OmUsdV9jb2xvcjpyfX0sanI9ZnVuY3Rpb24oZSxyLG4sYSxpLG8pe3JldHVybiB0LmV4dGVuZChmdW5jdGlvbih0LGUscixuKXt2YXIgYT1yLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKHQuZnJvbSksaT1yLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKHQudG8pLG89ci5pbWFnZU1hbmFnZXIuZ2V0UGl4ZWxTaXplKCkscz1vLndpZHRoLGw9by5oZWlnaHQsYz1NYXRoLnBvdygyLG4udGlsZUlELm92ZXJzY2FsZWRaKSx1PW4udGlsZVNpemUqTWF0aC5wb3coMixyLnRyYW5zZm9ybS50aWxlWm9vbSkvYyxoPXUqKG4udGlsZUlELmNhbm9uaWNhbC54K24udGlsZUlELndyYXAqYyksZj11Km4udGlsZUlELmNhbm9uaWNhbC55O3JldHVybnt1X2ltYWdlOjAsdV9wYXR0ZXJuX3RsX2E6YS50bCx1X3BhdHRlcm5fYnJfYTphLmJyLHVfcGF0dGVybl90bF9iOmkudGwsdV9wYXR0ZXJuX2JyX2I6aS5icix1X3RleHNpemU6W3MsbF0sdV9taXg6ZS50LHVfcGF0dGVybl9zaXplX2E6YS5kaXNwbGF5U2l6ZSx1X3BhdHRlcm5fc2l6ZV9iOmkuZGlzcGxheVNpemUsdV9zY2FsZV9hOmUuZnJvbVNjYWxlLHVfc2NhbGVfYjplLnRvU2NhbGUsdV90aWxlX3VuaXRzX3RvX3BpeGVsczoxL2NlKG4sMSxyLnRyYW5zZm9ybS50aWxlWm9vbSksdV9waXhlbF9jb29yZF91cHBlcjpbaD4+MTYsZj4+MTZdLHVfcGl4ZWxfY29vcmRfbG93ZXI6WzY1NTM1JmgsNjU1MzUmZl19fShhLG8sbixpKSx7dV9tYXRyaXg6ZSx1X29wYWNpdHk6cn0pfSxWcj17ZmlsbEV4dHJ1c2lvbjpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2xpZ2h0cG9zOm5ldyB0LlVuaWZvcm0zZihlLHIudV9saWdodHBvcyksdV9saWdodGludGVuc2l0eTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfbGlnaHRpbnRlbnNpdHkpLHVfbGlnaHRjb2xvcjpuZXcgdC5Vbmlmb3JtM2YoZSxyLnVfbGlnaHRjb2xvciksdV92ZXJ0aWNhbF9ncmFkaWVudDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfdmVydGljYWxfZ3JhZGllbnQpLHVfb3BhY2l0eTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfb3BhY2l0eSl9fSxmaWxsRXh0cnVzaW9uUGF0dGVybjpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2xpZ2h0cG9zOm5ldyB0LlVuaWZvcm0zZihlLHIudV9saWdodHBvcyksdV9saWdodGludGVuc2l0eTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfbGlnaHRpbnRlbnNpdHkpLHVfbGlnaHRjb2xvcjpuZXcgdC5Vbmlmb3JtM2YoZSxyLnVfbGlnaHRjb2xvciksdV92ZXJ0aWNhbF9ncmFkaWVudDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfdmVydGljYWxfZ3JhZGllbnQpLHVfaGVpZ2h0X2ZhY3RvcjpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfaGVpZ2h0X2ZhY3RvciksdV9pbWFnZTpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaW1hZ2UpLHVfdGV4c2l6ZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdGV4c2l6ZSksdV9waXhlbF9jb29yZF91cHBlcjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGl4ZWxfY29vcmRfdXBwZXIpLHVfcGl4ZWxfY29vcmRfbG93ZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BpeGVsX2Nvb3JkX2xvd2VyKSx1X3NjYWxlOm5ldyB0LlVuaWZvcm00ZihlLHIudV9zY2FsZSksdV9mYWRlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9mYWRlKSx1X29wYWNpdHk6bmV3IHQuVW5pZm9ybTFmKGUsci51X29wYWNpdHkpfX0sZmlsbDpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KX19LGZpbGxQYXR0ZXJuOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3RleHNpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RleHNpemUpLHVfcGl4ZWxfY29vcmRfdXBwZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BpeGVsX2Nvb3JkX3VwcGVyKSx1X3BpeGVsX2Nvb3JkX2xvd2VyOm5ldyB0LlVuaWZvcm0yZihlLHIudV9waXhlbF9jb29yZF9sb3dlciksdV9zY2FsZTpuZXcgdC5Vbmlmb3JtNGYoZSxyLnVfc2NhbGUpLHVfZmFkZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZSl9fSxmaWxsT3V0bGluZTpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X3dvcmxkOm5ldyB0LlVuaWZvcm0yZihlLHIudV93b3JsZCl9fSxmaWxsT3V0bGluZVBhdHRlcm46ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV93b3JsZDpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfd29ybGQpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3RleHNpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RleHNpemUpLHVfcGl4ZWxfY29vcmRfdXBwZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BpeGVsX2Nvb3JkX3VwcGVyKSx1X3BpeGVsX2Nvb3JkX2xvd2VyOm5ldyB0LlVuaWZvcm0yZihlLHIudV9waXhlbF9jb29yZF9sb3dlciksdV9zY2FsZTpuZXcgdC5Vbmlmb3JtNGYoZSxyLnVfc2NhbGUpLHVfZmFkZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZSl9fSxjaXJjbGU6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlKSx1X3NjYWxlX3dpdGhfbWFwOm5ldyB0LlVuaWZvcm0xaShlLHIudV9zY2FsZV93aXRoX21hcCksdV9waXRjaF93aXRoX21hcDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcGl0Y2hfd2l0aF9tYXApLHVfZXh0cnVkZV9zY2FsZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfZXh0cnVkZV9zY2FsZSksdV9kZXZpY2VfcGl4ZWxfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2RldmljZV9waXhlbF9yYXRpbyksdV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCl9fSxjb2xsaXNpb25Cb3g6X3IsY29sbGlzaW9uQ2lyY2xlOl9yLGRlYnVnOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfY29sb3I6bmV3IHQuVW5pZm9ybUNvbG9yKGUsci51X2NvbG9yKSx1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KX19LGNsaXBwaW5nTWFzazpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KX19LGhlYXRtYXA6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9leHRydWRlX3NjYWxlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9leHRydWRlX3NjYWxlKSx1X2ludGVuc2l0eTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfaW50ZW5zaXR5KSx1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KX19LGhlYXRtYXBUZXh0dXJlOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfd29ybGQ6bmV3IHQuVW5pZm9ybTJmKGUsci51X3dvcmxkKSx1X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIudV9pbWFnZSksdV9jb2xvcl9yYW1wOm5ldyB0LlVuaWZvcm0xaShlLHIudV9jb2xvcl9yYW1wKSx1X29wYWNpdHk6bmV3IHQuVW5pZm9ybTFmKGUsci51X29wYWNpdHkpfX0saGlsbHNoYWRlOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X2xhdHJhbmdlOm5ldyB0LlVuaWZvcm0yZihlLHIudV9sYXRyYW5nZSksdV9saWdodDpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfbGlnaHQpLHVfc2hhZG93Om5ldyB0LlVuaWZvcm1Db2xvcihlLHIudV9zaGFkb3cpLHVfaGlnaGxpZ2h0Om5ldyB0LlVuaWZvcm1Db2xvcihlLHIudV9oaWdobGlnaHQpLHVfYWNjZW50Om5ldyB0LlVuaWZvcm1Db2xvcihlLHIudV9hY2NlbnQpfX0saGlsbHNoYWRlUHJlcGFyZTpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIudV9pbWFnZSksdV9kaW1lbnNpb246bmV3IHQuVW5pZm9ybTJmKGUsci51X2RpbWVuc2lvbiksdV96b29tOm5ldyB0LlVuaWZvcm0xZihlLHIudV96b29tKSx1X21heHpvb206bmV3IHQuVW5pZm9ybTFmKGUsci51X21heHpvb20pfX0sbGluZTpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9yYXRpbyksdV9kZXZpY2VfcGl4ZWxfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2RldmljZV9waXhlbF9yYXRpbyksdV91bml0c190b19waXhlbHM6bmV3IHQuVW5pZm9ybTJmKGUsci51X3VuaXRzX3RvX3BpeGVscyl9fSxsaW5lR3JhZGllbnQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV9yYXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcmF0aW8pLHVfZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxfcmF0aW8pLHVfdW5pdHNfdG9fcGl4ZWxzOm5ldyB0LlVuaWZvcm0yZihlLHIudV91bml0c190b19waXhlbHMpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKX19LGxpbmVQYXR0ZXJuOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfdGV4c2l6ZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdGV4c2l6ZSksdV9yYXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcmF0aW8pLHVfZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxfcmF0aW8pLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3VuaXRzX3RvX3BpeGVsczpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdW5pdHNfdG9fcGl4ZWxzKSx1X3NjYWxlOm5ldyB0LlVuaWZvcm00ZihlLHIudV9zY2FsZSksdV9mYWRlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9mYWRlKX19LGxpbmVTREY6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV9yYXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcmF0aW8pLHVfZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxfcmF0aW8pLHVfdW5pdHNfdG9fcGl4ZWxzOm5ldyB0LlVuaWZvcm0yZihlLHIudV91bml0c190b19waXhlbHMpLHVfcGF0dGVybnNjYWxlX2E6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BhdHRlcm5zY2FsZV9hKSx1X3BhdHRlcm5zY2FsZV9iOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuc2NhbGVfYiksdV9zZGZnYW1tYTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2RmZ2FtbWEpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3RleF95X2E6bmV3IHQuVW5pZm9ybTFmKGUsci51X3RleF95X2EpLHVfdGV4X3lfYjpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfdGV4X3lfYiksdV9taXg6bmV3IHQuVW5pZm9ybTFmKGUsci51X21peCl9fSxyYXN0ZXI6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV90bF9wYXJlbnQ6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RsX3BhcmVudCksdV9zY2FsZV9wYXJlbnQ6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NjYWxlX3BhcmVudCksdV9idWZmZXJfc2NhbGU6bmV3IHQuVW5pZm9ybTFmKGUsci51X2J1ZmZlcl9zY2FsZSksdV9mYWRlX3Q6bmV3IHQuVW5pZm9ybTFmKGUsci51X2ZhZGVfdCksdV9vcGFjaXR5Om5ldyB0LlVuaWZvcm0xZihlLHIudV9vcGFjaXR5KSx1X2ltYWdlMDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaW1hZ2UwKSx1X2ltYWdlMTpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaW1hZ2UxKSx1X2JyaWdodG5lc3NfbG93Om5ldyB0LlVuaWZvcm0xZihlLHIudV9icmlnaHRuZXNzX2xvdyksdV9icmlnaHRuZXNzX2hpZ2g6bmV3IHQuVW5pZm9ybTFmKGUsci51X2JyaWdodG5lc3NfaGlnaCksdV9zYXR1cmF0aW9uX2ZhY3RvcjpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2F0dXJhdGlvbl9mYWN0b3IpLHVfY29udHJhc3RfZmFjdG9yOm5ldyB0LlVuaWZvcm0xZihlLHIudV9jb250cmFzdF9mYWN0b3IpLHVfc3Bpbl93ZWlnaHRzOm5ldyB0LlVuaWZvcm0zZihlLHIudV9zcGluX3dlaWdodHMpfX0sc3ltYm9sSWNvbjpmdW5jdGlvbihlLHIpe3JldHVybnt1X2lzX3NpemVfem9vbV9jb25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfc2l6ZV96b29tX2NvbnN0YW50KSx1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSx1X3NpemVfdDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2l6ZV90KSx1X3NpemU6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NpemUpLHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSksdV9waXRjaDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcGl0Y2gpLHVfcm90YXRlX3N5bWJvbDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcm90YXRlX3N5bWJvbCksdV9hc3BlY3RfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2FzcGVjdF9yYXRpbyksdV9mYWRlX2NoYW5nZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZV9jaGFuZ2UpLHVfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfbGFiZWxfcGxhbmVfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9sYWJlbF9wbGFuZV9tYXRyaXgpLHVfY29vcmRfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9jb29yZF9tYXRyaXgpLHVfaXNfdGV4dDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfaXNfdGV4dCksdV9waXRjaF93aXRoX21hcDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcGl0Y2hfd2l0aF9tYXApLHVfdGV4c2l6ZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdGV4c2l6ZSksdV90ZXh0dXJlOm5ldyB0LlVuaWZvcm0xaShlLHIudV90ZXh0dXJlKX19LHN5bWJvbFNERjpmdW5jdGlvbihlLHIpe3JldHVybnt1X2lzX3NpemVfem9vbV9jb25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfc2l6ZV96b29tX2NvbnN0YW50KSx1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSx1X3NpemVfdDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2l6ZV90KSx1X3NpemU6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NpemUpLHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSksdV9waXRjaDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcGl0Y2gpLHVfcm90YXRlX3N5bWJvbDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcm90YXRlX3N5bWJvbCksdV9hc3BlY3RfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2FzcGVjdF9yYXRpbyksdV9mYWRlX2NoYW5nZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZV9jaGFuZ2UpLHVfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfbGFiZWxfcGxhbmVfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9sYWJlbF9wbGFuZV9tYXRyaXgpLHVfY29vcmRfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9jb29yZF9tYXRyaXgpLHVfaXNfdGV4dDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfaXNfdGV4dCksdV9waXRjaF93aXRoX21hcDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcGl0Y2hfd2l0aF9tYXApLHVfdGV4c2l6ZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdGV4c2l6ZSksdV90ZXh0dXJlOm5ldyB0LlVuaWZvcm0xaShlLHIudV90ZXh0dXJlKSx1X2dhbW1hX3NjYWxlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9nYW1tYV9zY2FsZSksdV9kZXZpY2VfcGl4ZWxfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2RldmljZV9waXhlbF9yYXRpbyksdV9pc19oYWxvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9pc19oYWxvKX19LGJhY2tncm91bmQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV9vcGFjaXR5Om5ldyB0LlVuaWZvcm0xZihlLHIudV9vcGFjaXR5KSx1X2NvbG9yOm5ldyB0LlVuaWZvcm1Db2xvcihlLHIudV9jb2xvcil9fSxiYWNrZ3JvdW5kUGF0dGVybjpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X29wYWNpdHk6bmV3IHQuVW5pZm9ybTFmKGUsci51X29wYWNpdHkpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3BhdHRlcm5fdGxfYTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGF0dGVybl90bF9hKSx1X3BhdHRlcm5fYnJfYTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGF0dGVybl9icl9hKSx1X3BhdHRlcm5fdGxfYjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGF0dGVybl90bF9iKSx1X3BhdHRlcm5fYnJfYjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGF0dGVybl9icl9iKSx1X3RleHNpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RleHNpemUpLHVfbWl4Om5ldyB0LlVuaWZvcm0xZihlLHIudV9taXgpLHVfcGF0dGVybl9zaXplX2E6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BhdHRlcm5fc2l6ZV9hKSx1X3BhdHRlcm5fc2l6ZV9iOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuX3NpemVfYiksdV9zY2FsZV9hOm5ldyB0LlVuaWZvcm0xZihlLHIudV9zY2FsZV9hKSx1X3NjYWxlX2I6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NjYWxlX2IpLHVfcGl4ZWxfY29vcmRfdXBwZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BpeGVsX2Nvb3JkX3VwcGVyKSx1X3BpeGVsX2Nvb3JkX2xvd2VyOm5ldyB0LlVuaWZvcm0yZihlLHIudV9waXhlbF9jb29yZF9sb3dlciksdV90aWxlX3VuaXRzX3RvX3BpeGVsczpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfdGlsZV91bml0c190b19waXhlbHMpfX19O2Z1bmN0aW9uIFVyKGUscil7Zm9yKHZhciBuPWUuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnRpbGVJRC5pc0xlc3NUaGFuKGUudGlsZUlEKT8tMTplLnRpbGVJRC5pc0xlc3NUaGFuKHQudGlsZUlEKT8xOjB9KSxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBpPXt9LG89blthXSxzPW4uc2xpY2UoYSsxKTtxcihvLnRpbGVJRC53cmFwcGVkKCksby50aWxlSUQscyxuZXcgdC5PdmVyc2NhbGVkVGlsZUlEKDAsby50aWxlSUQud3JhcCsxLDAsMCwwKSxpKSxvLnNldE1hc2soaSxyKX19ZnVuY3Rpb24gcXIoZSxyLG4sYSxpKXtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIHM9bltvXTtpZihhLmlzTGVzc1RoYW4ocy50aWxlSUQpKWJyZWFrO2lmKHIua2V5PT09cy50aWxlSUQua2V5KXJldHVybjtpZihzLnRpbGVJRC5pc0NoaWxkT2Yocikpe2Zvcih2YXIgbD1yLmNoaWxkcmVuKDEvMCksYz0wO2M8bC5sZW5ndGg7YysrKXFyKGUsbFtjXSxuLnNsaWNlKG8pLGEsaSk7cmV0dXJufX12YXIgdT1yLm92ZXJzY2FsZWRaLWUub3ZlcnNjYWxlZFosaD1uZXcgdC5DYW5vbmljYWxUaWxlSUQodSxyLmNhbm9uaWNhbC54LShlLmNhbm9uaWNhbC54PDx1KSxyLmNhbm9uaWNhbC55LShlLmNhbm9uaWNhbC55PDx1KSk7aVtoLmtleV09aVtoLmtleV18fGh9ZnVuY3Rpb24gSHIodCxlLHIsbixhKXtmb3IodmFyIGk9dC5jb250ZXh0LG89aS5nbCxzPWE/dC51c2VQcm9ncmFtKCJjb2xsaXNpb25DaXJjbGUiKTp0LnVzZVByb2dyYW0oImNvbGxpc2lvbkJveCIpLGw9MDtsPG4ubGVuZ3RoO2wrKyl7dmFyIGM9bltsXSx1PWUuZ2V0VGlsZShjKSxoPXUuZ2V0QnVja2V0KHIpO2lmKGgpe3ZhciBmPWE/aC5jb2xsaXNpb25DaXJjbGU6aC5jb2xsaXNpb25Cb3g7ZiYmcy5kcmF3KGksYT9vLlRSSUFOR0xFUzpvLkxJTkVTLE10LmRpc2FibGVkLEF0LmRpc2FibGVkLHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLEV0LmRpc2FibGVkLHdyKGMucG9zTWF0cml4LHQudHJhbnNmb3JtLHUpLHIuaWQsZi5sYXlvdXRWZXJ0ZXhCdWZmZXIsZi5pbmRleEJ1ZmZlcixmLnNlZ21lbnRzLG51bGwsdC50cmFuc2Zvcm0uem9vbSxudWxsLG51bGwsZi5jb2xsaXNpb25WZXJ0ZXhCdWZmZXIpfX19dmFyIEdyPXQuaWRlbnRpdHkobmV3IEZsb2F0MzJBcnJheSgxNikpO2Z1bmN0aW9uIFlyKGUscixuLGEsaSxvKXt2YXIgcz10LmdldEFuY2hvckFsaWdubWVudChlKSxsPS0ocy5ob3Jpem9udGFsQWxpZ24tLjUpKnIsYz0tKHMudmVydGljYWxBbGlnbi0uNSkqbix1PXQuZXZhbHVhdGVSYWRpYWxPZmZzZXQoZSxhKTtyZXR1cm4gbmV3IHQuUG9pbnQoKGwvaSt1WzBdKSpvLChjL2krdVsxXSkqbyl9ZnVuY3Rpb24gV3IoZSxyLG4sYSxpLG8scyxsLGMsdSl7dmFyIGg9ZS50ZXh0LnBsYWNlZFN5bWJvbEFycmF5LGY9ZS50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheTtmLmNsZWFyKCk7Zm9yKHZhciBwPTA7cDxoLmxlbmd0aDtwKyspe3ZhciBkPWguZ2V0KHApLGc9ZS5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiYhZC5wbGFjZWRPcmllbnRhdGlvbix2PWQuaGlkZGVufHwhZC5jcm9zc1RpbGVJRHx8Zz9udWxsOmFbZC5jcm9zc1RpbGVJRF07aWYodil7dmFyIG09bmV3IHQuUG9pbnQoZC5hbmNob3JYLGQuYW5jaG9yWSkseT1KdChtLG4/bDpzKSx4PS41K28uY2FtZXJhVG9DZW50ZXJEaXN0YW5jZS95LnNpZ25lZERpc3RhbmNlRnJvbUNhbWVyYSouNSxiPWkuZXZhbHVhdGVTaXplRm9yRmVhdHVyZShlLnRleHRTaXplRGF0YSx1LGQpKngvdC5PTkVfRU07biYmKGIqPWUudGlsZVBpeGVsUmF0aW8vYyk7Zm9yKHZhciBfPXYud2lkdGgsdz12LmhlaWdodCxrPXYucmFkaWFsT2Zmc2V0LFQ9di50ZXh0Qm94U2NhbGUsTT1Zcih2LmFuY2hvcixfLHcsayxULGIpLEE9bj9KdChtLmFkZChNKSxzKS5wb2ludDp5LnBvaW50LmFkZChyP00ucm90YXRlKC1vLmFuZ2xlKTpNKSxTPWUuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmZC5wbGFjZWRPcmllbnRhdGlvbj09PXQuV3JpdGluZ01vZGUudmVydGljYWw/TWF0aC5QSS8yOjAsRT0wO0U8ZC5udW1HbHlwaHM7RSsrKXQuYWRkRHluYW1pY0F0dHJpYnV0ZXMoZixBLFMpfWVsc2UgaWUoZC5udW1HbHlwaHMsZil9ZS50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShmKX1mdW5jdGlvbiBYcihlKXt2YXIgcj1lLnRleHQucGxhY2VkU3ltYm9sQXJyYXksbj1lLnRleHQuZHluYW1pY0xheW91dFZlcnRleEFycmF5O24uY2xlYXIoKTtmb3IodmFyIGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGk9ci5nZXQoYSk7aWYoaS5oaWRkZW58fCFpLnBsYWNlZE9yaWVudGF0aW9uKWllKGkubnVtR2x5cGhzLG4pO2Vsc2UgZm9yKHZhciBvPW5ldyB0LlBvaW50KGkuYW5jaG9yWCxpLmFuY2hvclkpLHM9ZS5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZpLnBsYWNlZE9yaWVudGF0aW9uPT09dC5Xcml0aW5nTW9kZS52ZXJ0aWNhbD9NYXRoLlBJLzI6MCxsPTA7bDxpLm51bUdseXBocztsKyspdC5hZGREeW5hbWljQXR0cmlidXRlcyhuLG8scyl9ZS50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShuKX1mdW5jdGlvbiBacihlLHIsbixhLGksbyxzLGwsYyx1LGgsZixwKXtmb3IodmFyIGQsZyx2PWUuY29udGV4dCxtPXYuZ2wseT1lLnRyYW5zZm9ybSx4PSJtYXAiPT09bCxiPSJtYXAiPT09YyxfPXgmJiJwb2ludCIhPT1uLmxheW91dC5nZXQoInN5bWJvbC1wbGFjZW1lbnQiKSx3PXgmJiFiJiYhXyxrPXZvaWQgMCE9PW4ubGF5b3V0LmdldCgic3ltYm9sLXNvcnQta2V5IikuY29uc3RhbnRPcigxKSxUPWUuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCxNdC5SZWFkT25seSksTT1uLmxheW91dC5nZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIiksQT1bXSxTPTAsRT1hO1M8RS5sZW5ndGg7Uys9MSl7dmFyIEw9RVtTXSxDPXIuZ2V0VGlsZShMKSxQPUMuZ2V0QnVja2V0KG4pO2lmKFApe3ZhciBPPWk/UC50ZXh0OlAuaWNvbjtpZihPJiZPLnNlZ21lbnRzLmdldCgpLmxlbmd0aCl7dmFyIHo9Ty5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZ2V0KG4uaWQpLEk9aXx8UC5zZGZJY29ucyxEPWk/UC50ZXh0U2l6ZURhdGE6UC5pY29uU2l6ZURhdGE7ZHx8KGQ9ZS51c2VQcm9ncmFtKEk/InN5bWJvbFNERiI6InN5bWJvbEljb24iLHopLGc9dC5ldmFsdWF0ZVNpemVGb3Jab29tKEQseS56b29tKSksdi5hY3RpdmVUZXh0dXJlLnNldChtLlRFWFRVUkUwKTt2YXIgUj12b2lkIDAsRj12b2lkIDAsQj12b2lkIDA7aWYoaSlGPUMuZ2x5cGhBdGxhc1RleHR1cmUsQj1tLkxJTkVBUixSPUMuZ2x5cGhBdGxhc1RleHR1cmUuc2l6ZTtlbHNle3ZhciBOPTEhPT1uLmxheW91dC5nZXQoImljb24tc2l6ZSIpLmNvbnN0YW50T3IoMCl8fFAuaWNvbnNOZWVkTGluZWFyLGo9Ynx8MCE9PXkucGl0Y2g7Rj1DLmltYWdlQXRsYXNUZXh0dXJlLEI9SXx8ZS5vcHRpb25zLnJvdGF0aW5nfHxlLm9wdGlvbnMuem9vbWluZ3x8Tnx8aj9tLkxJTkVBUjptLk5FQVJFU1QsUj1DLmltYWdlQXRsYXNUZXh0dXJlLnNpemV9dmFyIFY9Y2UoQywxLGUudHJhbnNmb3JtLnpvb20pLFU9WHQoTC5wb3NNYXRyaXgsYix4LGUudHJhbnNmb3JtLFYpLHE9WnQoTC5wb3NNYXRyaXgsYix4LGUudHJhbnNmb3JtLFYpO2lmKF8pUXQoUCxMLnBvc01hdHJpeCxlLGksVSxxLGIsdSk7ZWxzZSBpZihpJiZnJiZNKXt2YXIgSD1NYXRoLnBvdygyLHkuem9vbS1DLnRpbGVJRC5vdmVyc2NhbGVkWik7V3IoUCx4LGIscCx0LnN5bWJvbFNpemUseSxVLEwucG9zTWF0cml4LEgsZyl9ZWxzZSBpJiZnJiZQLmFsbG93VmVydGljYWxQbGFjZW1lbnQmJlhyKFApO3ZhciBHPWUudHJhbnNsYXRlUG9zTWF0cml4KEwucG9zTWF0cml4LEMsbyxzKSxZPV98fGkmJk0/R3I6VSxXPWUudHJhbnNsYXRlUG9zTWF0cml4KHEsQyxvLHMsITApLFg9SSYmMCE9PW4ucGFpbnQuZ2V0KGk/InRleHQtaGFsby13aWR0aCI6Imljb24taGFsby13aWR0aCIpLmNvbnN0YW50T3IoMSksWj17cHJvZ3JhbTpkLGJ1ZmZlcnM6Tyx1bmlmb3JtVmFsdWVzOkk/QnIoRC5raW5kLGcsdyxiLGUsRyxZLFcsaSxSLCEwKTpGcihELmtpbmQsZyx3LGIsZSxHLFksVyxpLFIpLGF0bGFzVGV4dHVyZTpGLGF0bGFzSW50ZXJwb2xhdGlvbjpCLGlzU0RGOkksaGFzSGFsbzpYfTtpZihrKWZvcih2YXIgSj0wLEs9Ty5zZWdtZW50cy5nZXQoKTtKPEsubGVuZ3RoO0orPTEpe3ZhciBRPUtbSl07QS5wdXNoKHtzZWdtZW50czpuZXcgdC5TZWdtZW50VmVjdG9yKFtRXSksc29ydEtleTpRLnNvcnRLZXksc3RhdGU6Wn0pfWVsc2UgQS5wdXNoKHtzZWdtZW50czpPLnNlZ21lbnRzLHNvcnRLZXk6MCxzdGF0ZTpafSl9fX1rJiZBLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zb3J0S2V5LWUuc29ydEtleX0pO2Zvcih2YXIgJD0wLHR0PUE7JDx0dC5sZW5ndGg7JCs9MSl7dmFyIGV0PXR0WyRdLHJ0PWV0LnN0YXRlO2lmKHJ0LmF0bGFzVGV4dHVyZS5iaW5kKHJ0LmF0bGFzSW50ZXJwb2xhdGlvbixtLkNMQU1QX1RPX0VER0UpLHJ0LmlzU0RGKXt2YXIgbnQ9cnQudW5pZm9ybVZhbHVlcztydC5oYXNIYWxvJiYobnQudV9pc19oYWxvPTEsSnIocnQuYnVmZmVycyxldC5zZWdtZW50cyxuLGUscnQucHJvZ3JhbSxULGgsZixudCkpLG50LnVfaXNfaGFsbz0wfUpyKHJ0LmJ1ZmZlcnMsZXQuc2VnbWVudHMsbixlLHJ0LnByb2dyYW0sVCxoLGYscnQudW5pZm9ybVZhbHVlcyl9fWZ1bmN0aW9uIEpyKHQsZSxyLG4sYSxpLG8scyxsKXt2YXIgYz1uLmNvbnRleHQsdT1jLmdsO2EuZHJhdyhjLHUuVFJJQU5HTEVTLGksbyxzLEV0LmRpc2FibGVkLGwsci5pZCx0LmxheW91dFZlcnRleEJ1ZmZlcix0LmluZGV4QnVmZmVyLGUsci5wYWludCxuLnRyYW5zZm9ybS56b29tLHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChyLmlkKSx0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIsdC5vcGFjaXR5VmVydGV4QnVmZmVyKX1mdW5jdGlvbiBLcih0LGUscixuLGEsaSxvKXt2YXIgcyxsLGMsdSxoLGY9dC5jb250ZXh0LmdsLHA9ci5wYWludC5nZXQoImZpbGwtcGF0dGVybiIpLGQ9cCYmcC5jb25zdGFudE9yKDEpLGc9ci5nZXRDcm9zc2ZhZGVQYXJhbWV0ZXJzKCk7bz8obD1kJiYhci5nZXRQYWludFByb3BlcnR5KCJmaWxsLW91dGxpbmUtY29sb3IiKT8iZmlsbE91dGxpbmVQYXR0ZXJuIjoiZmlsbE91dGxpbmUiLHM9Zi5MSU5FUyk6KGw9ZD8iZmlsbFBhdHRlcm4iOiJmaWxsIixzPWYuVFJJQU5HTEVTKTtmb3IodmFyIHY9MCxtPW47djxtLmxlbmd0aDt2Kz0xKXt2YXIgeT1tW3ZdLHg9ZS5nZXRUaWxlKHkpO2lmKCFkfHx4LnBhdHRlcm5zTG9hZGVkKCkpe3ZhciBiPXguZ2V0QnVja2V0KHIpO2lmKGIpe3ZhciBfPWIucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChyLmlkKSx3PXQudXNlUHJvZ3JhbShsLF8pO2QmJih0LmNvbnRleHQuYWN0aXZlVGV4dHVyZS5zZXQoZi5URVhUVVJFMCkseC5pbWFnZUF0bGFzVGV4dHVyZS5iaW5kKGYuTElORUFSLGYuQ0xBTVBfVE9fRURHRSksXy51cGRhdGVQYXR0ZXJuUGFpbnRCdWZmZXJzKGcpKTt2YXIgaz1wLmNvbnN0YW50T3IobnVsbCk7aWYoayYmeC5pbWFnZUF0bGFzKXt2YXIgVD14LmltYWdlQXRsYXMucGF0dGVyblBvc2l0aW9uc1trLnRvXSxNPXguaW1hZ2VBdGxhcy5wYXR0ZXJuUG9zaXRpb25zW2suZnJvbV07VCYmTSYmXy5zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnMoVCxNKX12YXIgQT10LnRyYW5zbGF0ZVBvc01hdHJpeCh5LnBvc01hdHJpeCx4LHIucGFpbnQuZ2V0KCJmaWxsLXRyYW5zbGF0ZSIpLHIucGFpbnQuZ2V0KCJmaWxsLXRyYW5zbGF0ZS1hbmNob3IiKSk7aWYobyl7dT1iLmluZGV4QnVmZmVyMixoPWIuc2VnbWVudHMyO3ZhciBTPVtmLmRyYXdpbmdCdWZmZXJXaWR0aCxmLmRyYXdpbmdCdWZmZXJIZWlnaHRdO2M9ImZpbGxPdXRsaW5lUGF0dGVybiI9PT1sJiZkP3hyKEEsdCxnLHgsUyk6eXIoQSxTKX1lbHNlIHU9Yi5pbmRleEJ1ZmZlcixoPWIuc2VnbWVudHMsYz1kP21yKEEsdCxnLHgpOnZyKEEpO3cuZHJhdyh0LmNvbnRleHQscyxhLHQuc3RlbmNpbE1vZGVGb3JDbGlwcGluZyh5KSxpLEV0LmRpc2FibGVkLGMsci5pZCxiLmxheW91dFZlcnRleEJ1ZmZlcix1LGgsci5wYWludCx0LnRyYW5zZm9ybS56b29tLF8pfX19fWZ1bmN0aW9uIFFyKHQsZSxyLG4sYSxpLG8pe2Zvcih2YXIgcz10LmNvbnRleHQsbD1zLmdsLGM9ci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4iKSx1PWMuY29uc3RhbnRPcigxKSxoPXIuZ2V0Q3Jvc3NmYWRlUGFyYW1ldGVycygpLGY9ci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLW9wYWNpdHkiKSxwPTAsZD1uO3A8ZC5sZW5ndGg7cCs9MSl7dmFyIGc9ZFtwXSx2PWUuZ2V0VGlsZShnKSxtPXYuZ2V0QnVja2V0KHIpO2lmKG0pe3ZhciB5PW0ucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChyLmlkKSx4PXQudXNlUHJvZ3JhbSh1PyJmaWxsRXh0cnVzaW9uUGF0dGVybiI6ImZpbGxFeHRydXNpb24iLHkpO3UmJih0LmNvbnRleHQuYWN0aXZlVGV4dHVyZS5zZXQobC5URVhUVVJFMCksdi5pbWFnZUF0bGFzVGV4dHVyZS5iaW5kKGwuTElORUFSLGwuQ0xBTVBfVE9fRURHRSkseS51cGRhdGVQYXR0ZXJuUGFpbnRCdWZmZXJzKGgpKTt2YXIgYj1jLmNvbnN0YW50T3IobnVsbCk7aWYoYiYmdi5pbWFnZUF0bGFzKXt2YXIgXz12LmltYWdlQXRsYXMucGF0dGVyblBvc2l0aW9uc1tiLnRvXSx3PXYuaW1hZ2VBdGxhcy5wYXR0ZXJuUG9zaXRpb25zW2IuZnJvbV07XyYmdyYmeS5zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnMoXyx3KX12YXIgaz10LnRyYW5zbGF0ZVBvc01hdHJpeChnLnBvc01hdHJpeCx2LHIucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUiKSxyLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlLWFuY2hvciIpKSxUPXIucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi12ZXJ0aWNhbC1ncmFkaWVudCIpLE09dT9ncihrLHQsVCxmLGcsaCx2KTpkcihrLHQsVCxmKTt4LmRyYXcocyxzLmdsLlRSSUFOR0xFUyxhLGksbyxFdC5iYWNrQ0NXLE0sci5pZCxtLmxheW91dFZlcnRleEJ1ZmZlcixtLmluZGV4QnVmZmVyLG0uc2VnbWVudHMsci5wYWludCx0LnRyYW5zZm9ybS56b29tLHkpfX19ZnVuY3Rpb24gJHIodCxlLHIsbixhLGkpe3ZhciBvPXQuY29udGV4dCxzPW8uZ2wsbD1lLmZibztpZihsKXt2YXIgYz10LnVzZVByb2dyYW0oImhpbGxzaGFkZSIpO28uYWN0aXZlVGV4dHVyZS5zZXQocy5URVhUVVJFMCkscy5iaW5kVGV4dHVyZShzLlRFWFRVUkVfMkQsbC5jb2xvckF0dGFjaG1lbnQuZ2V0KCkpO3ZhciB1PUFyKHQsZSxyKTtlLm1hc2tlZEJvdW5kc0J1ZmZlciYmZS5tYXNrZWRJbmRleEJ1ZmZlciYmZS5zZWdtZW50cz9jLmRyYXcobyxzLlRSSUFOR0xFUyxuLGEsaSxFdC5kaXNhYmxlZCx1LHIuaWQsZS5tYXNrZWRCb3VuZHNCdWZmZXIsZS5tYXNrZWRJbmRleEJ1ZmZlcixlLnNlZ21lbnRzKTpjLmRyYXcobyxzLlRSSUFOR0xFUyxuLGEsaSxFdC5kaXNhYmxlZCx1LHIuaWQsdC5yYXN0ZXJCb3VuZHNCdWZmZXIsdC5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZlcix0LnJhc3RlckJvdW5kc1NlZ21lbnRzKX19ZnVuY3Rpb24gdG4oZSxyLG4sYSxpLG8scyl7dmFyIGw9ZS5jb250ZXh0LGM9bC5nbDtpZihyLmRlbSYmci5kZW0uZGF0YSl7dmFyIHU9ci5kZW0uZGltLGg9ci5kZW0uc3RyaWRlLGY9ci5kZW0uZ2V0UGl4ZWxzKCk7aWYobC5hY3RpdmVUZXh0dXJlLnNldChjLlRFWFRVUkUxKSxsLnBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhLnNldCghMSksci5kZW1UZXh0dXJlPXIuZGVtVGV4dHVyZXx8ZS5nZXRUaWxlVGV4dHVyZShoKSxyLmRlbVRleHR1cmUpe3ZhciBwPXIuZGVtVGV4dHVyZTtwLnVwZGF0ZShmLHtwcmVtdWx0aXBseTohMX0pLHAuYmluZChjLk5FQVJFU1QsYy5DTEFNUF9UT19FREdFKX1lbHNlIHIuZGVtVGV4dHVyZT1uZXcgdC5UZXh0dXJlKGwsZixjLlJHQkEse3ByZW11bHRpcGx5OiExfSksci5kZW1UZXh0dXJlLmJpbmQoYy5ORUFSRVNULGMuQ0xBTVBfVE9fRURHRSk7bC5hY3RpdmVUZXh0dXJlLnNldChjLlRFWFRVUkUwKTt2YXIgZD1yLmZibztpZighZCl7dmFyIGc9bmV3IHQuVGV4dHVyZShsLHt3aWR0aDp1LGhlaWdodDp1LGRhdGE6bnVsbH0sYy5SR0JBKTtnLmJpbmQoYy5MSU5FQVIsYy5DTEFNUF9UT19FREdFKSwoZD1yLmZibz1sLmNyZWF0ZUZyYW1lYnVmZmVyKHUsdSkpLmNvbG9yQXR0YWNobWVudC5zZXQoZy50ZXh0dXJlKX1sLmJpbmRGcmFtZWJ1ZmZlci5zZXQoZC5mcmFtZWJ1ZmZlciksbC52aWV3cG9ydC5zZXQoWzAsMCx1LHVdKSxlLnVzZVByb2dyYW0oImhpbGxzaGFkZVByZXBhcmUiKS5kcmF3KGwsYy5UUklBTkdMRVMsaSxvLHMsRXQuZGlzYWJsZWQsU3IocixhKSxuLmlkLGUucmFzdGVyQm91bmRzQnVmZmVyLGUucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsZS5yYXN0ZXJCb3VuZHNTZWdtZW50cyksci5uZWVkc0hpbGxzaGFkZVByZXBhcmU9ITF9fWZ1bmN0aW9uIGVuKGUscixuLGEsaSl7dmFyIG89YS5wYWludC5nZXQoInJhc3Rlci1mYWRlLWR1cmF0aW9uIik7aWYobz4wKXt2YXIgcz10LmJyb3dzZXIubm93KCksbD0ocy1lLnRpbWVBZGRlZCkvbyxjPXI/KHMtci50aW1lQWRkZWQpL286LTEsdT1uLmdldFNvdXJjZSgpLGg9aS5jb3ZlcmluZ1pvb21MZXZlbCh7dGlsZVNpemU6dS50aWxlU2l6ZSxyb3VuZFpvb206dS5yb3VuZFpvb219KSxmPSFyfHxNYXRoLmFicyhyLnRpbGVJRC5vdmVyc2NhbGVkWi1oKT5NYXRoLmFicyhlLnRpbGVJRC5vdmVyc2NhbGVkWi1oKSxwPWYmJmUucmVmcmVzaGVkVXBvbkV4cGlyYXRpb24/MTp0LmNsYW1wKGY/bDoxLWMsMCwxKTtyZXR1cm4gZS5yZWZyZXNoZWRVcG9uRXhwaXJhdGlvbiYmbD49MSYmKGUucmVmcmVzaGVkVXBvbkV4cGlyYXRpb249ITEpLHI/e29wYWNpdHk6MSxtaXg6MS1wfTp7b3BhY2l0eTpwLG1peDowfX1yZXR1cm57b3BhY2l0eToxLG1peDowfX1mdW5jdGlvbiBybihlLHIsbil7dmFyIGE9ZS5jb250ZXh0LGk9YS5nbCxvPW4ucG9zTWF0cml4LHM9ZS51c2VQcm9ncmFtKCJkZWJ1ZyIpLGw9TXQuZGlzYWJsZWQsYz1BdC5kaXNhYmxlZCx1PWUuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGg9IiRkZWJ1ZyI7cy5kcmF3KGEsaS5MSU5FX1NUUklQLGwsYyx1LEV0LmRpc2FibGVkLGtyKG8sdC5Db2xvci5yZWQpLGgsZS5kZWJ1Z0J1ZmZlcixlLnRpbGVCb3JkZXJJbmRleEJ1ZmZlcixlLmRlYnVnU2VnbWVudHMpO2Zvcih2YXIgZj1yLmdldFRpbGVCeUlEKG4ua2V5KS5sYXRlc3RSYXdUaWxlRGF0YSxwPWYmJmYuYnl0ZUxlbmd0aHx8MCxkPU1hdGguZmxvb3IocC8xMDI0KSxnPXIuZ2V0VGlsZShuKS50aWxlU2l6ZSx2PTUxMi9NYXRoLm1pbihnLDUxMiksbT1mdW5jdGlvbih0LGUscixuKXtuPW58fDE7dmFyIGEsaSxvLHMsbCxjLHUsaCxmPVtdO2ZvcihhPTAsaT10Lmxlbmd0aDthPGk7YSsrKWlmKGw9bm5bdFthXV0pe2ZvcihoPW51bGwsbz0wLHM9bFsxXS5sZW5ndGg7bzxzO28rPTIpLTE9PT1sWzFdW29dJiYtMT09PWxbMV1bbysxXT9oPW51bGw6KGM9ZStsWzFdW29dKm4sdT1yLWxbMV1bbysxXSpuLGgmJmYucHVzaChoLngsaC55LGMsdSksaD17eDpjLHk6dX0pO2UrPWxbMF0qbn1yZXR1cm4gZn0obi50b1N0cmluZygpKyIgIitkKyJrYiIsNTAsMjAwKnYsNSp2KSx5PW5ldyB0LlN0cnVjdEFycmF5TGF5b3V0Mmk0LHg9bmV3IHQuU3RydWN0QXJyYXlMYXlvdXQydWk0LGI9MDtiPG0ubGVuZ3RoO2IrPTIpeS5lbXBsYWNlQmFjayhtW2JdLG1bYisxXSkseC5lbXBsYWNlQmFjayhiLGIrMSk7Zm9yKHZhciBfPWEuY3JlYXRlVmVydGV4QnVmZmVyKHksRmUubWVtYmVycyksdz1hLmNyZWF0ZUluZGV4QnVmZmVyKHgpLGs9dC5TZWdtZW50VmVjdG9yLnNpbXBsZVNlZ21lbnQoMCwwLHkubGVuZ3RoLzIseS5sZW5ndGgvMiksVD10LkVYVEVOVC8oTWF0aC5wb3coMixlLnRyYW5zZm9ybS56b29tLW4ub3ZlcnNjYWxlZFopKmcqdiksTT1bXSxBPS0xO0E8PTE7QSsrKWZvcih2YXIgUz0tMTtTPD0xJiYoMCE9PUF8fDAhPT1TKTtTKyspTS5wdXNoKFtBLFNdKTtmb3IodmFyIEU9MDtFPE0ubGVuZ3RoO0UrKyl7dmFyIEw9TVtFXTtzLmRyYXcoYSxpLkxJTkVTLGwsYyx1LEV0LmRpc2FibGVkLGtyKHQudHJhbnNsYXRlKFtdLG8sW1QqTFswXSxUKkxbMV0sMF0pLHQuQ29sb3Iud2hpdGUpLGgsXyx3LGspfXMuZHJhdyhhLGkuTElORVMsbCxjLHUsRXQuZGlzYWJsZWQsa3Iobyx0LkNvbG9yLmJsYWNrKSxoLF8sdyxrKX12YXIgbm49eyIgIjpbMTYsW11dLCIhIjpbMTAsWzUsMjEsNSw3LC0xLC0xLDUsMiw0LDEsNSwwLDYsMSw1LDJdXSwnIic6WzE2LFs0LDIxLDQsMTQsLTEsLTEsMTIsMjEsMTIsMTRdXSwiIyI6WzIxLFsxMSwyNSw0LC03LC0xLC0xLDE3LDI1LDEwLC03LC0xLC0xLDQsMTIsMTgsMTIsLTEsLTEsMyw2LDE3LDZdXSwkOlsyMCxbOCwyNSw4LC00LC0xLC0xLDEyLDI1LDEyLC00LC0xLC0xLDE3LDE4LDE1LDIwLDEyLDIxLDgsMjEsNSwyMCwzLDE4LDMsMTYsNCwxNCw1LDEzLDcsMTIsMTMsMTAsMTUsOSwxNiw4LDE3LDYsMTcsMywxNSwxLDEyLDAsOCwwLDUsMSwzLDNdXSwiJSI6WzI0LFsyMSwyMSwzLDAsLTEsLTEsOCwyMSwxMCwxOSwxMCwxNyw5LDE1LDcsMTQsNSwxNCwzLDE2LDMsMTgsNCwyMCw2LDIxLDgsMjEsMTAsMjAsMTMsMTksMTYsMTksMTksMjAsMjEsMjEsLTEsLTEsMTcsNywxNSw2LDE0LDQsMTQsMiwxNiwwLDE4LDAsMjAsMSwyMSwzLDIxLDUsMTksNywxNyw3XV0sIiYiOlsyNixbMjMsMTIsMjMsMTMsMjIsMTQsMjEsMTQsMjAsMTMsMTksMTEsMTcsNiwxNSwzLDEzLDEsMTEsMCw3LDAsNSwxLDQsMiwzLDQsMyw2LDQsOCw1LDksMTIsMTMsMTMsMTQsMTQsMTYsMTQsMTgsMTMsMjAsMTEsMjEsOSwyMCw4LDE4LDgsMTYsOSwxMywxMSwxMCwxNiwzLDE4LDEsMjAsMCwyMiwwLDIzLDEsMjMsMl1dLCInIjpbMTAsWzUsMTksNCwyMCw1LDIxLDYsMjAsNiwxOCw1LDE2LDQsMTVdXSwiKCI6WzE0LFsxMSwyNSw5LDIzLDcsMjAsNSwxNiw0LDExLDQsNyw1LDIsNywtMiw5LC01LDExLC03XV0sIikiOlsxNCxbMywyNSw1LDIzLDcsMjAsOSwxNiwxMCwxMSwxMCw3LDksMiw3LC0yLDUsLTUsMywtN11dLCIqIjpbMTYsWzgsMjEsOCw5LC0xLC0xLDMsMTgsMTMsMTIsLTEsLTEsMTMsMTgsMywxMl1dLCIrIjpbMjYsWzEzLDE4LDEzLDAsLTEsLTEsNCw5LDIyLDldXSwiLCI6WzEwLFs2LDEsNSwwLDQsMSw1LDIsNiwxLDYsLTEsNSwtMyw0LC00XV0sIi0iOlsyNixbNCw5LDIyLDldXSwiLiI6WzEwLFs1LDIsNCwxLDUsMCw2LDEsNSwyXV0sIi8iOlsyMixbMjAsMjUsMiwtN11dLDA6WzIwLFs5LDIxLDYsMjAsNCwxNywzLDEyLDMsOSw0LDQsNiwxLDksMCwxMSwwLDE0LDEsMTYsNCwxNyw5LDE3LDEyLDE2LDE3LDE0LDIwLDExLDIxLDksMjFdXSwxOlsyMCxbNiwxNyw4LDE4LDExLDIxLDExLDBdXSwyOlsyMCxbNCwxNiw0LDE3LDUsMTksNiwyMCw4LDIxLDEyLDIxLDE0LDIwLDE1LDE5LDE2LDE3LDE2LDE1LDE1LDEzLDEzLDEwLDMsMCwxNywwXV0sMzpbMjAsWzUsMjEsMTYsMjEsMTAsMTMsMTMsMTMsMTUsMTIsMTYsMTEsMTcsOCwxNyw2LDE2LDMsMTQsMSwxMSwwLDgsMCw1LDEsNCwyLDMsNF1dLDQ6WzIwLFsxMywyMSwzLDcsMTgsNywtMSwtMSwxMywyMSwxMywwXV0sNTpbMjAsWzE1LDIxLDUsMjEsNCwxMiw1LDEzLDgsMTQsMTEsMTQsMTQsMTMsMTYsMTEsMTcsOCwxNyw2LDE2LDMsMTQsMSwxMSwwLDgsMCw1LDEsNCwyLDMsNF1dLDY6WzIwLFsxNiwxOCwxNSwyMCwxMiwyMSwxMCwyMSw3LDIwLDUsMTcsNCwxMiw0LDcsNSwzLDcsMSwxMCwwLDExLDAsMTQsMSwxNiwzLDE3LDYsMTcsNywxNiwxMCwxNCwxMiwxMSwxMywxMCwxMyw3LDEyLDUsMTAsNCw3XV0sNzpbMjAsWzE3LDIxLDcsMCwtMSwtMSwzLDIxLDE3LDIxXV0sODpbMjAsWzgsMjEsNSwyMCw0LDE4LDQsMTYsNSwxNCw3LDEzLDExLDEyLDE0LDExLDE2LDksMTcsNywxNyw0LDE2LDIsMTUsMSwxMiwwLDgsMCw1LDEsNCwyLDMsNCwzLDcsNCw5LDYsMTEsOSwxMiwxMywxMywxNSwxNCwxNiwxNiwxNiwxOCwxNSwyMCwxMiwyMSw4LDIxXV0sOTpbMjAsWzE2LDE0LDE1LDExLDEzLDksMTAsOCw5LDgsNiw5LDQsMTEsMywxNCwzLDE1LDQsMTgsNiwyMCw5LDIxLDEwLDIxLDEzLDIwLDE1LDE4LDE2LDE0LDE2LDksMTUsNCwxMywxLDEwLDAsOCwwLDUsMSw0LDNdXSwiOiI6WzEwLFs1LDE0LDQsMTMsNSwxMiw2LDEzLDUsMTQsLTEsLTEsNSwyLDQsMSw1LDAsNiwxLDUsMl1dLCI7IjpbMTAsWzUsMTQsNCwxMyw1LDEyLDYsMTMsNSwxNCwtMSwtMSw2LDEsNSwwLDQsMSw1LDIsNiwxLDYsLTEsNSwtMyw0LC00XV0sIjwiOlsyNCxbMjAsMTgsNCw5LDIwLDBdXSwiPSI6WzI2LFs0LDEyLDIyLDEyLC0xLC0xLDQsNiwyMiw2XV0sIj4iOlsyNCxbNCwxOCwyMCw5LDQsMF1dLCI/IjpbMTgsWzMsMTYsMywxNyw0LDE5LDUsMjAsNywyMSwxMSwyMSwxMywyMCwxNCwxOSwxNSwxNywxNSwxNSwxNCwxMywxMywxMiw5LDEwLDksNywtMSwtMSw5LDIsOCwxLDksMCwxMCwxLDksMl1dLCJAIjpbMjcsWzE4LDEzLDE3LDE1LDE1LDE2LDEyLDE2LDEwLDE1LDksMTQsOCwxMSw4LDgsOSw2LDExLDUsMTQsNSwxNiw2LDE3LDgsLTEsLTEsMTIsMTYsMTAsMTQsOSwxMSw5LDgsMTAsNiwxMSw1LC0xLC0xLDE4LDE2LDE3LDgsMTcsNiwxOSw1LDIxLDUsMjMsNywyNCwxMCwyNCwxMiwyMywxNSwyMiwxNywyMCwxOSwxOCwyMCwxNSwyMSwxMiwyMSw5LDIwLDcsMTksNSwxNyw0LDE1LDMsMTIsMyw5LDQsNiw1LDQsNywyLDksMSwxMiwwLDE1LDAsMTgsMSwyMCwyLDIxLDMsLTEsLTEsMTksMTYsMTgsOCwxOCw2LDE5LDVdXSxBOlsxOCxbOSwyMSwxLDAsLTEsLTEsOSwyMSwxNywwLC0xLC0xLDQsNywxNCw3XV0sQjpbMjEsWzQsMjEsNCwwLC0xLC0xLDQsMjEsMTMsMjEsMTYsMjAsMTcsMTksMTgsMTcsMTgsMTUsMTcsMTMsMTYsMTIsMTMsMTEsLTEsLTEsNCwxMSwxMywxMSwxNiwxMCwxNyw5LDE4LDcsMTgsNCwxNywyLDE2LDEsMTMsMCw0LDBdXSxDOlsyMSxbMTgsMTYsMTcsMTgsMTUsMjAsMTMsMjEsOSwyMSw3LDIwLDUsMTgsNCwxNiwzLDEzLDMsOCw0LDUsNSwzLDcsMSw5LDAsMTMsMCwxNSwxLDE3LDMsMTgsNV1dLEQ6WzIxLFs0LDIxLDQsMCwtMSwtMSw0LDIxLDExLDIxLDE0LDIwLDE2LDE4LDE3LDE2LDE4LDEzLDE4LDgsMTcsNSwxNiwzLDE0LDEsMTEsMCw0LDBdXSxFOlsxOSxbNCwyMSw0LDAsLTEsLTEsNCwyMSwxNywyMSwtMSwtMSw0LDExLDEyLDExLC0xLC0xLDQsMCwxNywwXV0sRjpbMTgsWzQsMjEsNCwwLC0xLC0xLDQsMjEsMTcsMjEsLTEsLTEsNCwxMSwxMiwxMV1dLEc6WzIxLFsxOCwxNiwxNywxOCwxNSwyMCwxMywyMSw5LDIxLDcsMjAsNSwxOCw0LDE2LDMsMTMsMyw4LDQsNSw1LDMsNywxLDksMCwxMywwLDE1LDEsMTcsMywxOCw1LDE4LDgsLTEsLTEsMTMsOCwxOCw4XV0sSDpbMjIsWzQsMjEsNCwwLC0xLC0xLDE4LDIxLDE4LDAsLTEsLTEsNCwxMSwxOCwxMV1dLEk6WzgsWzQsMjEsNCwwXV0sSjpbMTYsWzEyLDIxLDEyLDUsMTEsMiwxMCwxLDgsMCw2LDAsNCwxLDMsMiwyLDUsMiw3XV0sSzpbMjEsWzQsMjEsNCwwLC0xLC0xLDE4LDIxLDQsNywtMSwtMSw5LDEyLDE4LDBdXSxMOlsxNyxbNCwyMSw0LDAsLTEsLTEsNCwwLDE2LDBdXSxNOlsyNCxbNCwyMSw0LDAsLTEsLTEsNCwyMSwxMiwwLC0xLC0xLDIwLDIxLDEyLDAsLTEsLTEsMjAsMjEsMjAsMF1dLE46WzIyLFs0LDIxLDQsMCwtMSwtMSw0LDIxLDE4LDAsLTEsLTEsMTgsMjEsMTgsMF1dLE86WzIyLFs5LDIxLDcsMjAsNSwxOCw0LDE2LDMsMTMsMyw4LDQsNSw1LDMsNywxLDksMCwxMywwLDE1LDEsMTcsMywxOCw1LDE5LDgsMTksMTMsMTgsMTYsMTcsMTgsMTUsMjAsMTMsMjEsOSwyMV1dLFA6WzIxLFs0LDIxLDQsMCwtMSwtMSw0LDIxLDEzLDIxLDE2LDIwLDE3LDE5LDE4LDE3LDE4LDE0LDE3LDEyLDE2LDExLDEzLDEwLDQsMTBdXSxROlsyMixbOSwyMSw3LDIwLDUsMTgsNCwxNiwzLDEzLDMsOCw0LDUsNSwzLDcsMSw5LDAsMTMsMCwxNSwxLDE3LDMsMTgsNSwxOSw4LDE5LDEzLDE4LDE2LDE3LDE4LDE1LDIwLDEzLDIxLDksMjEsLTEsLTEsMTIsNCwxOCwtMl1dLFI6WzIxLFs0LDIxLDQsMCwtMSwtMSw0LDIxLDEzLDIxLDE2LDIwLDE3LDE5LDE4LDE3LDE4LDE1LDE3LDEzLDE2LDEyLDEzLDExLDQsMTEsLTEsLTEsMTEsMTEsMTgsMF1dLFM6WzIwLFsxNywxOCwxNSwyMCwxMiwyMSw4LDIxLDUsMjAsMywxOCwzLDE2LDQsMTQsNSwxMyw3LDEyLDEzLDEwLDE1LDksMTYsOCwxNyw2LDE3LDMsMTUsMSwxMiwwLDgsMCw1LDEsMywzXV0sVDpbMTYsWzgsMjEsOCwwLC0xLC0xLDEsMjEsMTUsMjFdXSxVOlsyMixbNCwyMSw0LDYsNSwzLDcsMSwxMCwwLDEyLDAsMTUsMSwxNywzLDE4LDYsMTgsMjFdXSxWOlsxOCxbMSwyMSw5LDAsLTEsLTEsMTcsMjEsOSwwXV0sVzpbMjQsWzIsMjEsNywwLC0xLC0xLDEyLDIxLDcsMCwtMSwtMSwxMiwyMSwxNywwLC0xLC0xLDIyLDIxLDE3LDBdXSxYOlsyMCxbMywyMSwxNywwLC0xLC0xLDE3LDIxLDMsMF1dLFk6WzE4LFsxLDIxLDksMTEsOSwwLC0xLC0xLDE3LDIxLDksMTFdXSxaOlsyMCxbMTcsMjEsMywwLC0xLC0xLDMsMjEsMTcsMjEsLTEsLTEsMywwLDE3LDBdXSwiWyI6WzE0LFs0LDI1LDQsLTcsLTEsLTEsNSwyNSw1LC03LC0xLC0xLDQsMjUsMTEsMjUsLTEsLTEsNCwtNywxMSwtN11dLCJcXCI6WzE0LFswLDIxLDE0LC0zXV0sIl0iOlsxNCxbOSwyNSw5LC03LC0xLC0xLDEwLDI1LDEwLC03LC0xLC0xLDMsMjUsMTAsMjUsLTEsLTEsMywtNywxMCwtN11dLCJeIjpbMTYsWzYsMTUsOCwxOCwxMCwxNSwtMSwtMSwzLDEyLDgsMTcsMTMsMTIsLTEsLTEsOCwxNyw4LDBdXSxfOlsxNixbMCwtMiwxNiwtMl1dLCJgIjpbMTAsWzYsMjEsNSwyMCw0LDE4LDQsMTYsNSwxNSw2LDE2LDUsMTddXSxhOlsxOSxbMTUsMTQsMTUsMCwtMSwtMSwxNSwxMSwxMywxMywxMSwxNCw4LDE0LDYsMTMsNCwxMSwzLDgsMyw2LDQsMyw2LDEsOCwwLDExLDAsMTMsMSwxNSwzXV0sYjpbMTksWzQsMjEsNCwwLC0xLC0xLDQsMTEsNiwxMyw4LDE0LDExLDE0LDEzLDEzLDE1LDExLDE2LDgsMTYsNiwxNSwzLDEzLDEsMTEsMCw4LDAsNiwxLDQsM11dLGM6WzE4LFsxNSwxMSwxMywxMywxMSwxNCw4LDE0LDYsMTMsNCwxMSwzLDgsMyw2LDQsMyw2LDEsOCwwLDExLDAsMTMsMSwxNSwzXV0sZDpbMTksWzE1LDIxLDE1LDAsLTEsLTEsMTUsMTEsMTMsMTMsMTEsMTQsOCwxNCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEsMTUsM11dLGU6WzE4LFszLDgsMTUsOCwxNSwxMCwxNCwxMiwxMywxMywxMSwxNCw4LDE0LDYsMTMsNCwxMSwzLDgsMyw2LDQsMyw2LDEsOCwwLDExLDAsMTMsMSwxNSwzXV0sZjpbMTIsWzEwLDIxLDgsMjEsNiwyMCw1LDE3LDUsMCwtMSwtMSwyLDE0LDksMTRdXSxnOlsxOSxbMTUsMTQsMTUsLTIsMTQsLTUsMTMsLTYsMTEsLTcsOCwtNyw2LC02LC0xLC0xLDE1LDExLDEzLDEzLDExLDE0LDgsMTQsNiwxMyw0LDExLDMsOCwzLDYsNCwzLDYsMSw4LDAsMTEsMCwxMywxLDE1LDNdXSxoOlsxOSxbNCwyMSw0LDAsLTEsLTEsNCwxMCw3LDEzLDksMTQsMTIsMTQsMTQsMTMsMTUsMTAsMTUsMF1dLGk6WzgsWzMsMjEsNCwyMCw1LDIxLDQsMjIsMywyMSwtMSwtMSw0LDE0LDQsMF1dLGo6WzEwLFs1LDIxLDYsMjAsNywyMSw2LDIyLDUsMjEsLTEsLTEsNiwxNCw2LC0zLDUsLTYsMywtNywxLC03XV0sazpbMTcsWzQsMjEsNCwwLC0xLC0xLDE0LDE0LDQsNCwtMSwtMSw4LDgsMTUsMF1dLGw6WzgsWzQsMjEsNCwwXV0sbTpbMzAsWzQsMTQsNCwwLC0xLC0xLDQsMTAsNywxMyw5LDE0LDEyLDE0LDE0LDEzLDE1LDEwLDE1LDAsLTEsLTEsMTUsMTAsMTgsMTMsMjAsMTQsMjMsMTQsMjUsMTMsMjYsMTAsMjYsMF1dLG46WzE5LFs0LDE0LDQsMCwtMSwtMSw0LDEwLDcsMTMsOSwxNCwxMiwxNCwxNCwxMywxNSwxMCwxNSwwXV0sbzpbMTksWzgsMTQsNiwxMyw0LDExLDMsOCwzLDYsNCwzLDYsMSw4LDAsMTEsMCwxMywxLDE1LDMsMTYsNiwxNiw4LDE1LDExLDEzLDEzLDExLDE0LDgsMTRdXSxwOlsxOSxbNCwxNCw0LC03LC0xLC0xLDQsMTEsNiwxMyw4LDE0LDExLDE0LDEzLDEzLDE1LDExLDE2LDgsMTYsNiwxNSwzLDEzLDEsMTEsMCw4LDAsNiwxLDQsM11dLHE6WzE5LFsxNSwxNCwxNSwtNywtMSwtMSwxNSwxMSwxMywxMywxMSwxNCw4LDE0LDYsMTMsNCwxMSwzLDgsMyw2LDQsMyw2LDEsOCwwLDExLDAsMTMsMSwxNSwzXV0scjpbMTMsWzQsMTQsNCwwLC0xLC0xLDQsOCw1LDExLDcsMTMsOSwxNCwxMiwxNF1dLHM6WzE3LFsxNCwxMSwxMywxMywxMCwxNCw3LDE0LDQsMTMsMywxMSw0LDksNiw4LDExLDcsMTMsNiwxNCw0LDE0LDMsMTMsMSwxMCwwLDcsMCw0LDEsMywzXV0sdDpbMTIsWzUsMjEsNSw0LDYsMSw4LDAsMTAsMCwtMSwtMSwyLDE0LDksMTRdXSx1OlsxOSxbNCwxNCw0LDQsNSwxLDcsMCwxMCwwLDEyLDEsMTUsNCwtMSwtMSwxNSwxNCwxNSwwXV0sdjpbMTYsWzIsMTQsOCwwLC0xLC0xLDE0LDE0LDgsMF1dLHc6WzIyLFszLDE0LDcsMCwtMSwtMSwxMSwxNCw3LDAsLTEsLTEsMTEsMTQsMTUsMCwtMSwtMSwxOSwxNCwxNSwwXV0seDpbMTcsWzMsMTQsMTQsMCwtMSwtMSwxNCwxNCwzLDBdXSx5OlsxNixbMiwxNCw4LDAsLTEsLTEsMTQsMTQsOCwwLDYsLTQsNCwtNiwyLC03LDEsLTddXSx6OlsxNyxbMTQsMTQsMywwLC0xLC0xLDMsMTQsMTQsMTQsLTEsLTEsMywwLDE0LDBdXSwieyI6WzE0LFs5LDI1LDcsMjQsNiwyMyw1LDIxLDUsMTksNiwxNyw3LDE2LDgsMTQsOCwxMiw2LDEwLC0xLC0xLDcsMjQsNiwyMiw2LDIwLDcsMTgsOCwxNyw5LDE1LDksMTMsOCwxMSw0LDksOCw3LDksNSw5LDMsOCwxLDcsMCw2LC0yLDYsLTQsNywtNiwtMSwtMSw2LDgsOCw2LDgsNCw3LDIsNiwxLDUsLTEsNSwtMyw2LC01LDcsLTYsOSwtN11dLCJ8IjpbOCxbNCwyNSw0LC03XV0sIn0iOlsxNCxbNSwyNSw3LDI0LDgsMjMsOSwyMSw5LDE5LDgsMTcsNywxNiw2LDE0LDYsMTIsOCwxMCwtMSwtMSw3LDI0LDgsMjIsOCwyMCw3LDE4LDYsMTcsNSwxNSw1LDEzLDYsMTEsMTAsOSw2LDcsNSw1LDUsMyw2LDEsNywwLDgsLTIsOCwtNCw3LC02LC0xLC0xLDgsOCw2LDYsNiw0LDcsMiw4LDEsOSwtMSw5LC0zLDgsLTUsNywtNiw1LC03XV0sIn4iOlsyNCxbMyw2LDMsOCw0LDExLDYsMTIsOCwxMiwxMCwxMSwxNCw4LDE2LDcsMTgsNywyMCw4LDIxLDEwLC0xLC0xLDMsOCw0LDEwLDYsMTEsOCwxMSwxMCwxMCwxNCw3LDE2LDYsMTgsNiwyMCw3LDIxLDEwLDIxLDEyXV19LGFuPXtzeW1ib2w6ZnVuY3Rpb24odCxlLHIsbixhKXtpZigidHJhbnNsdWNlbnQiPT09dC5yZW5kZXJQYXNzKXt2YXIgaT1BdC5kaXNhYmxlZCxvPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpOzAhPT1yLnBhaW50LmdldCgiaWNvbi1vcGFjaXR5IikuY29uc3RhbnRPcigxKSYmWnIodCxlLHIsbiwhMSxyLnBhaW50LmdldCgiaWNvbi10cmFuc2xhdGUiKSxyLnBhaW50LmdldCgiaWNvbi10cmFuc2xhdGUtYW5jaG9yIiksci5sYXlvdXQuZ2V0KCJpY29uLXJvdGF0aW9uLWFsaWdubWVudCIpLHIubGF5b3V0LmdldCgiaWNvbi1waXRjaC1hbGlnbm1lbnQiKSxyLmxheW91dC5nZXQoImljb24ta2VlcC11cHJpZ2h0IiksaSxvLGEpLDAhPT1yLnBhaW50LmdldCgidGV4dC1vcGFjaXR5IikuY29uc3RhbnRPcigxKSYmWnIodCxlLHIsbiwhMCxyLnBhaW50LmdldCgidGV4dC10cmFuc2xhdGUiKSxyLnBhaW50LmdldCgidGV4dC10cmFuc2xhdGUtYW5jaG9yIiksci5sYXlvdXQuZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCIpLHIubGF5b3V0LmdldCgidGV4dC1waXRjaC1hbGlnbm1lbnQiKSxyLmxheW91dC5nZXQoInRleHQta2VlcC11cHJpZ2h0IiksaSxvLGEpLGUubWFwLnNob3dDb2xsaXNpb25Cb3hlcyYmZnVuY3Rpb24odCxlLHIsbil7SHIodCxlLHIsbiwhMSksSHIodCxlLHIsbiwhMCl9KHQsZSxyLG4pfX0sY2lyY2xlOmZ1bmN0aW9uKGUscixuLGEpe2lmKCJ0cmFuc2x1Y2VudCI9PT1lLnJlbmRlclBhc3Mpe3ZhciBpPW4ucGFpbnQuZ2V0KCJjaXJjbGUtb3BhY2l0eSIpLG89bi5wYWludC5nZXQoImNpcmNsZS1zdHJva2Utd2lkdGgiKSxzPW4ucGFpbnQuZ2V0KCJjaXJjbGUtc3Ryb2tlLW9wYWNpdHkiKSxsPXZvaWQgMCE9PW4ubGF5b3V0LmdldCgiY2lyY2xlLXNvcnQta2V5IikuY29uc3RhbnRPcigxKTtpZigwIT09aS5jb25zdGFudE9yKDEpfHwwIT09by5jb25zdGFudE9yKDEpJiYwIT09cy5jb25zdGFudE9yKDEpKXtmb3IodmFyIGM9ZS5jb250ZXh0LHU9Yy5nbCxoPWUuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCxNdC5SZWFkT25seSksZj1BdC5kaXNhYmxlZCxwPWUuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGQ9W10sZz0wO2c8YS5sZW5ndGg7ZysrKXt2YXIgdj1hW2ddLG09ci5nZXRUaWxlKHYpLHk9bS5nZXRCdWNrZXQobik7aWYoeSl7dmFyIHg9eS5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZ2V0KG4uaWQpLGI9e3Byb2dyYW1Db25maWd1cmF0aW9uOngscHJvZ3JhbTplLnVzZVByb2dyYW0oImNpcmNsZSIseCksbGF5b3V0VmVydGV4QnVmZmVyOnkubGF5b3V0VmVydGV4QnVmZmVyLGluZGV4QnVmZmVyOnkuaW5kZXhCdWZmZXIsdW5pZm9ybVZhbHVlczpicihlLHYsbSxuKX07aWYobClmb3IodmFyIF89MCx3PXkuc2VnbWVudHMuZ2V0KCk7Xzx3Lmxlbmd0aDtfKz0xKXt2YXIgaz13W19dO2QucHVzaCh7c2VnbWVudHM6bmV3IHQuU2VnbWVudFZlY3Rvcihba10pLHNvcnRLZXk6ay5zb3J0S2V5LHN0YXRlOmJ9KX1lbHNlIGQucHVzaCh7c2VnbWVudHM6eS5zZWdtZW50cyxzb3J0S2V5OjAsc3RhdGU6Yn0pfX1sJiZkLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zb3J0S2V5LWUuc29ydEtleX0pO2Zvcih2YXIgVD0wLE09ZDtUPE0ubGVuZ3RoO1QrPTEpe3ZhciBBPU1bVF0sUz1BLnN0YXRlLEU9Uy5wcm9ncmFtQ29uZmlndXJhdGlvbixMPVMucHJvZ3JhbSxDPVMubGF5b3V0VmVydGV4QnVmZmVyLFA9Uy5pbmRleEJ1ZmZlcixPPVMudW5pZm9ybVZhbHVlcyx6PUEuc2VnbWVudHM7TC5kcmF3KGMsdS5UUklBTkdMRVMsaCxmLHAsRXQuZGlzYWJsZWQsTyxuLmlkLEMsUCx6LG4ucGFpbnQsZS50cmFuc2Zvcm0uem9vbSxFKX19fX0saGVhdG1hcDpmdW5jdGlvbihlLHIsbixhKXtpZigwIT09bi5wYWludC5nZXQoImhlYXRtYXAtb3BhY2l0eSIpKWlmKCJvZmZzY3JlZW4iPT09ZS5yZW5kZXJQYXNzKXt2YXIgaT1lLmNvbnRleHQsbz1pLmdsLHM9ZS5kZXB0aE1vZGVGb3JTdWJsYXllcigwLE10LlJlYWRPbmx5KSxsPUF0LmRpc2FibGVkLGM9bmV3IFN0KFtvLk9ORSxvLk9ORV0sdC5Db2xvci50cmFuc3BhcmVudCxbITAsITAsITAsITBdKTshZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuZ2w7dC5hY3RpdmVUZXh0dXJlLnNldChuLlRFWFRVUkUxKSx0LnZpZXdwb3J0LnNldChbMCwwLGUud2lkdGgvNCxlLmhlaWdodC80XSk7dmFyIGE9ci5oZWF0bWFwRmJvO2lmKGEpbi5iaW5kVGV4dHVyZShuLlRFWFRVUkVfMkQsYS5jb2xvckF0dGFjaG1lbnQuZ2V0KCkpLHQuYmluZEZyYW1lYnVmZmVyLnNldChhLmZyYW1lYnVmZmVyKTtlbHNle3ZhciBpPW4uY3JlYXRlVGV4dHVyZSgpO24uYmluZFRleHR1cmUobi5URVhUVVJFXzJELGkpLG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJFX1dSQVBfUyxuLkNMQU1QX1RPX0VER0UpLG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJFX1dSQVBfVCxuLkNMQU1QX1RPX0VER0UpLG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJFX01JTl9GSUxURVIsbi5MSU5FQVIpLG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJFX01BR19GSUxURVIsbi5MSU5FQVIpLGE9ci5oZWF0bWFwRmJvPXQuY3JlYXRlRnJhbWVidWZmZXIoZS53aWR0aC80LGUuaGVpZ2h0LzQpLGZ1bmN0aW9uIHQoZSxyLG4sYSl7dmFyIGk9ZS5nbDtpLnRleEltYWdlMkQoaS5URVhUVVJFXzJELDAsaS5SR0JBLHIud2lkdGgvNCxyLmhlaWdodC80LDAsaS5SR0JBLGUuZXh0VGV4dHVyZUhhbGZGbG9hdD9lLmV4dFRleHR1cmVIYWxmRmxvYXQuSEFMRl9GTE9BVF9PRVM6aS5VTlNJR05FRF9CWVRFLG51bGwpLGEuY29sb3JBdHRhY2htZW50LnNldChuKSxlLmV4dFRleHR1cmVIYWxmRmxvYXQmJmkuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhpLkZSQU1FQlVGRkVSKSE9PWkuRlJBTUVCVUZGRVJfQ09NUExFVEUmJihlLmV4dFRleHR1cmVIYWxmRmxvYXQ9bnVsbCxhLmNvbG9yQXR0YWNobWVudC5zZXREaXJ0eSgpLHQoZSxyLG4sYSkpfSh0LGUsaSxhKX19KGksZSxuKSxpLmNsZWFyKHtjb2xvcjp0LkNvbG9yLnRyYW5zcGFyZW50fSk7Zm9yKHZhciB1PTA7dTxhLmxlbmd0aDt1Kyspe3ZhciBoPWFbdV07aWYoIXIuaGFzUmVuZGVyYWJsZVBhcmVudChoKSl7dmFyIGY9ci5nZXRUaWxlKGgpLHA9Zi5nZXRCdWNrZXQobik7aWYocCl7dmFyIGQ9cC5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZ2V0KG4uaWQpLGc9ZS51c2VQcm9ncmFtKCJoZWF0bWFwIixkKSx2PWUudHJhbnNmb3JtLnpvb207Zy5kcmF3KGksby5UUklBTkdMRVMscyxsLGMsRXQuZGlzYWJsZWQsTXIoaC5wb3NNYXRyaXgsZix2LG4ucGFpbnQuZ2V0KCJoZWF0bWFwLWludGVuc2l0eSIpKSxuLmlkLHAubGF5b3V0VmVydGV4QnVmZmVyLHAuaW5kZXhCdWZmZXIscC5zZWdtZW50cyxuLnBhaW50LGUudHJhbnNmb3JtLnpvb20sZCl9fX1pLnZpZXdwb3J0LnNldChbMCwwLGUud2lkdGgsZS5oZWlnaHRdKX1lbHNlInRyYW5zbHVjZW50Ij09PWUucmVuZGVyUGFzcyYmKGUuY29udGV4dC5zZXRDb2xvck1vZGUoZS5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCkpLGZ1bmN0aW9uKGUscil7dmFyIG49ZS5jb250ZXh0LGE9bi5nbCxpPXIuaGVhdG1hcEZibztpZihpKXtuLmFjdGl2ZVRleHR1cmUuc2V0KGEuVEVYVFVSRTApLGEuYmluZFRleHR1cmUoYS5URVhUVVJFXzJELGkuY29sb3JBdHRhY2htZW50LmdldCgpKSxuLmFjdGl2ZVRleHR1cmUuc2V0KGEuVEVYVFVSRTEpO3ZhciBvPXIuY29sb3JSYW1wVGV4dHVyZTtvfHwobz1yLmNvbG9yUmFtcFRleHR1cmU9bmV3IHQuVGV4dHVyZShuLHIuY29sb3JSYW1wLGEuUkdCQSkpLG8uYmluZChhLkxJTkVBUixhLkNMQU1QX1RPX0VER0UpLGUudXNlUHJvZ3JhbSgiaGVhdG1hcFRleHR1cmUiKS5kcmF3KG4sYS5UUklBTkdMRVMsTXQuZGlzYWJsZWQsQXQuZGlzYWJsZWQsZS5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksRXQuZGlzYWJsZWQsZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGk9dC5jcmVhdGUoKTt0Lm9ydGhvKGksMCxlLndpZHRoLGUuaGVpZ2h0LDAsMCwxKTt2YXIgbz1lLmNvbnRleHQuZ2w7cmV0dXJue3VfbWF0cml4OmksdV93b3JsZDpbby5kcmF3aW5nQnVmZmVyV2lkdGgsby5kcmF3aW5nQnVmZmVySGVpZ2h0XSx1X2ltYWdlOm4sdV9jb2xvcl9yYW1wOmEsdV9vcGFjaXR5OnIucGFpbnQuZ2V0KCJoZWF0bWFwLW9wYWNpdHkiKX19KGUsciwwLDEpLHIuaWQsZS52aWV3cG9ydEJ1ZmZlcixlLnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLGUudmlld3BvcnRTZWdtZW50cyxyLnBhaW50LGUudHJhbnNmb3JtLnpvb20pfX0oZSxuKSl9LGxpbmU6ZnVuY3Rpb24oZSxyLG4sYSl7aWYoInRyYW5zbHVjZW50Ij09PWUucmVuZGVyUGFzcyl7dmFyIGk9bi5wYWludC5nZXQoImxpbmUtb3BhY2l0eSIpLG89bi5wYWludC5nZXQoImxpbmUtd2lkdGgiKTtpZigwIT09aS5jb25zdGFudE9yKDEpJiYwIT09by5jb25zdGFudE9yKDEpKXt2YXIgcz1lLmRlcHRoTW9kZUZvclN1YmxheWVyKDAsTXQuUmVhZE9ubHkpLGw9ZS5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksYz1uLnBhaW50LmdldCgibGluZS1kYXNoYXJyYXkiKSx1PW4ucGFpbnQuZ2V0KCJsaW5lLXBhdHRlcm4iKSxoPXUuY29uc3RhbnRPcigxKSxmPW4ucGFpbnQuZ2V0KCJsaW5lLWdyYWRpZW50IikscD1uLmdldENyb3NzZmFkZVBhcmFtZXRlcnMoKSxkPWM/ImxpbmVTREYiOmg/ImxpbmVQYXR0ZXJuIjpmPyJsaW5lR3JhZGllbnQiOiJsaW5lIixnPWUuY29udGV4dCx2PWcuZ2wsbT0hMDtpZihmKXtnLmFjdGl2ZVRleHR1cmUuc2V0KHYuVEVYVFVSRTApO3ZhciB5PW4uZ3JhZGllbnRUZXh0dXJlO2lmKCFuLmdyYWRpZW50KXJldHVybjt5fHwoeT1uLmdyYWRpZW50VGV4dHVyZT1uZXcgdC5UZXh0dXJlKGcsbi5ncmFkaWVudCx2LlJHQkEpKSx5LmJpbmQodi5MSU5FQVIsdi5DTEFNUF9UT19FREdFKX1mb3IodmFyIHg9MCxiPWE7eDxiLmxlbmd0aDt4Kz0xKXt2YXIgXz1iW3hdLHc9ci5nZXRUaWxlKF8pO2lmKCFofHx3LnBhdHRlcm5zTG9hZGVkKCkpe3ZhciBrPXcuZ2V0QnVja2V0KG4pO2lmKGspe3ZhciBUPWsucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChuLmlkKSxNPWUuY29udGV4dC5wcm9ncmFtLmdldCgpLEE9ZS51c2VQcm9ncmFtKGQsVCksUz1tfHxBLnByb2dyYW0hPT1NLEU9dS5jb25zdGFudE9yKG51bGwpO2lmKEUmJncuaW1hZ2VBdGxhcyl7dmFyIEw9dy5pbWFnZUF0bGFzLnBhdHRlcm5Qb3NpdGlvbnNbRS50b10sQz13LmltYWdlQXRsYXMucGF0dGVyblBvc2l0aW9uc1tFLmZyb21dO0wmJkMmJlQuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zKEwsQyl9dmFyIFA9Yz9PcihlLHcsbixjLHApOmg/UHIoZSx3LG4scCk6Zj9DcihlLHcsbik6THIoZSx3LG4pO2MmJihTfHxlLmxpbmVBdGxhcy5kaXJ0eSk/KGcuYWN0aXZlVGV4dHVyZS5zZXQodi5URVhUVVJFMCksZS5saW5lQXRsYXMuYmluZChnKSk6aCYmKGcuYWN0aXZlVGV4dHVyZS5zZXQodi5URVhUVVJFMCksdy5pbWFnZUF0bGFzVGV4dHVyZS5iaW5kKHYuTElORUFSLHYuQ0xBTVBfVE9fRURHRSksVC51cGRhdGVQYXR0ZXJuUGFpbnRCdWZmZXJzKHApKSxBLmRyYXcoZyx2LlRSSUFOR0xFUyxzLGUuc3RlbmNpbE1vZGVGb3JDbGlwcGluZyhfKSxsLEV0LmRpc2FibGVkLFAsbi5pZCxrLmxheW91dFZlcnRleEJ1ZmZlcixrLmluZGV4QnVmZmVyLGsuc2VnbWVudHMsbi5wYWludCxlLnRyYW5zZm9ybS56b29tLFQpLG09ITF9fX19fX0sZmlsbDpmdW5jdGlvbihlLHIsbixhKXt2YXIgaT1uLnBhaW50LmdldCgiZmlsbC1jb2xvciIpLG89bi5wYWludC5nZXQoImZpbGwtb3BhY2l0eSIpO2lmKDAhPT1vLmNvbnN0YW50T3IoMSkpe3ZhciBzPWUuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGw9bi5wYWludC5nZXQoImZpbGwtcGF0dGVybiIpLGM9ZS5vcGFxdWVQYXNzRW5hYmxlZEZvckxheWVyKCkmJiFsLmNvbnN0YW50T3IoMSkmJjE9PT1pLmNvbnN0YW50T3IodC5Db2xvci50cmFuc3BhcmVudCkuYSYmMT09PW8uY29uc3RhbnRPcigwKT8ib3BhcXVlIjoidHJhbnNsdWNlbnQiO2lmKGUucmVuZGVyUGFzcz09PWMpe3ZhciB1PWUuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMSwib3BhcXVlIj09PWUucmVuZGVyUGFzcz9NdC5SZWFkV3JpdGU6TXQuUmVhZE9ubHkpO0tyKGUscixuLGEsdSxzLCExKX1pZigidHJhbnNsdWNlbnQiPT09ZS5yZW5kZXJQYXNzJiZuLnBhaW50LmdldCgiZmlsbC1hbnRpYWxpYXMiKSl7dmFyIGg9ZS5kZXB0aE1vZGVGb3JTdWJsYXllcihuLmdldFBhaW50UHJvcGVydHkoImZpbGwtb3V0bGluZS1jb2xvciIpPzI6MCxNdC5SZWFkT25seSk7S3IoZSxyLG4sYSxoLHMsITApfX19LCJmaWxsLWV4dHJ1c2lvbiI6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLW9wYWNpdHkiKTtpZigwIT09YSYmInRyYW5zbHVjZW50Ij09PXQucmVuZGVyUGFzcyl7dmFyIGk9bmV3IE10KHQuY29udGV4dC5nbC5MRVFVQUwsTXQuUmVhZFdyaXRlLHQuZGVwdGhSYW5nZUZvcjNEKTtpZigxIT09YXx8ci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4iKS5jb25zdGFudE9yKDEpKVFyKHQsZSxyLG4saSxBdC5kaXNhYmxlZCxTdC5kaXNhYmxlZCksUXIodCxlLHIsbixpLHQuc3RlbmNpbE1vZGVGb3IzRCgpLHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKTtlbHNle3ZhciBvPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpO1FyKHQsZSxyLG4saSxBdC5kaXNhYmxlZCxvKX19fSxoaWxsc2hhZGU6ZnVuY3Rpb24odCxlLHIsbil7aWYoIm9mZnNjcmVlbiI9PT10LnJlbmRlclBhc3N8fCJ0cmFuc2x1Y2VudCI9PT10LnJlbmRlclBhc3Mpe2Zvcih2YXIgYT10LmNvbnRleHQsaT1lLmdldFNvdXJjZSgpLm1heHpvb20sbz10LmRlcHRoTW9kZUZvclN1YmxheWVyKDAsTXQuUmVhZE9ubHkpLHM9QXQuZGlzYWJsZWQsbD10LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSxjPTAsdT1uO2M8dS5sZW5ndGg7Yys9MSl7dmFyIGg9dVtjXSxmPWUuZ2V0VGlsZShoKTtmLm5lZWRzSGlsbHNoYWRlUHJlcGFyZSYmIm9mZnNjcmVlbiI9PT10LnJlbmRlclBhc3M/dG4odCxmLHIsaSxvLHMsbCk6InRyYW5zbHVjZW50Ij09PXQucmVuZGVyUGFzcyYmJHIodCxmLHIsbyxzLGwpfWEudmlld3BvcnQuc2V0KFswLDAsdC53aWR0aCx0LmhlaWdodF0pfX0scmFzdGVyOmZ1bmN0aW9uKHQsZSxyLG4pe2lmKCJ0cmFuc2x1Y2VudCI9PT10LnJlbmRlclBhc3MmJjAhPT1yLnBhaW50LmdldCgicmFzdGVyLW9wYWNpdHkiKSlmb3IodmFyIGE9dC5jb250ZXh0LGk9YS5nbCxvPWUuZ2V0U291cmNlKCkscz10LnVzZVByb2dyYW0oInJhc3RlciIpLGw9QXQuZGlzYWJsZWQsYz10LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSx1PW4ubGVuZ3RoJiZuWzBdLm92ZXJzY2FsZWRaLGg9IXQub3B0aW9ucy5tb3ZpbmcsZj0wLHA9bjtmPHAubGVuZ3RoO2YrPTEpe3ZhciBkPXBbZl0sZz10LmRlcHRoTW9kZUZvclN1YmxheWVyKGQub3ZlcnNjYWxlZFotdSwxPT09ci5wYWludC5nZXQoInJhc3Rlci1vcGFjaXR5Iik/TXQuUmVhZFdyaXRlOk10LlJlYWRPbmx5LGkuTEVTUyksdj1lLmdldFRpbGUoZCksbT10LnRyYW5zZm9ybS5jYWxjdWxhdGVQb3NNYXRyaXgoZC50b1Vud3JhcHBlZCgpLGgpO3YucmVnaXN0ZXJGYWRlRHVyYXRpb24oci5wYWludC5nZXQoInJhc3Rlci1mYWRlLWR1cmF0aW9uIikpO3ZhciB5PWUuZmluZExvYWRlZFBhcmVudChkLDApLHg9ZW4odix5LGUscix0LnRyYW5zZm9ybSksYj12b2lkIDAsXz12b2lkIDAsdz0ibmVhcmVzdCI9PT1yLnBhaW50LmdldCgicmFzdGVyLXJlc2FtcGxpbmciKT9pLk5FQVJFU1Q6aS5MSU5FQVI7YS5hY3RpdmVUZXh0dXJlLnNldChpLlRFWFRVUkUwKSx2LnRleHR1cmUuYmluZCh3LGkuQ0xBTVBfVE9fRURHRSxpLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCksYS5hY3RpdmVUZXh0dXJlLnNldChpLlRFWFRVUkUxKSx5Pyh5LnRleHR1cmUuYmluZCh3LGkuQ0xBTVBfVE9fRURHRSxpLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCksYj1NYXRoLnBvdygyLHkudGlsZUlELm92ZXJzY2FsZWRaLXYudGlsZUlELm92ZXJzY2FsZWRaKSxfPVt2LnRpbGVJRC5jYW5vbmljYWwueCpiJTEsdi50aWxlSUQuY2Fub25pY2FsLnkqYiUxXSk6di50ZXh0dXJlLmJpbmQodyxpLkNMQU1QX1RPX0VER0UsaS5MSU5FQVJfTUlQTUFQX05FQVJFU1QpO3ZhciBrPURyKG0sX3x8WzAsMF0sYnx8MSx4LHIpO28gaW5zdGFuY2VvZiBQP3MuZHJhdyhhLGkuVFJJQU5HTEVTLGcsbCxjLEV0LmRpc2FibGVkLGssci5pZCxvLmJvdW5kc0J1ZmZlcix0LnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLG8uYm91bmRzU2VnbWVudHMpOnYubWFza2VkQm91bmRzQnVmZmVyJiZ2Lm1hc2tlZEluZGV4QnVmZmVyJiZ2LnNlZ21lbnRzP3MuZHJhdyhhLGkuVFJJQU5HTEVTLGcsbCxjLEV0LmRpc2FibGVkLGssci5pZCx2Lm1hc2tlZEJvdW5kc0J1ZmZlcix2Lm1hc2tlZEluZGV4QnVmZmVyLHYuc2VnbWVudHMsci5wYWludCx0LnRyYW5zZm9ybS56b29tKTpzLmRyYXcoYSxpLlRSSUFOR0xFUyxnLGwsYyxFdC5kaXNhYmxlZCxrLHIuaWQsdC5yYXN0ZXJCb3VuZHNCdWZmZXIsdC5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZlcix0LnJhc3RlckJvdW5kc1NlZ21lbnRzKX19LGJhY2tncm91bmQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIucGFpbnQuZ2V0KCJiYWNrZ3JvdW5kLWNvbG9yIiksYT1yLnBhaW50LmdldCgiYmFja2dyb3VuZC1vcGFjaXR5Iik7aWYoMCE9PWEpe3ZhciBpPXQuY29udGV4dCxvPWkuZ2wscz10LnRyYW5zZm9ybSxsPXMudGlsZVNpemUsYz1yLnBhaW50LmdldCgiYmFja2dyb3VuZC1wYXR0ZXJuIik7aWYoIXQuaXNQYXR0ZXJuTWlzc2luZyhjKSl7dmFyIHU9IWMmJjE9PT1uLmEmJjE9PT1hJiZ0Lm9wYXF1ZVBhc3NFbmFibGVkRm9yTGF5ZXIoKT8ib3BhcXVlIjoidHJhbnNsdWNlbnQiO2lmKHQucmVuZGVyUGFzcz09PXUpe3ZhciBoPUF0LmRpc2FibGVkLGY9dC5kZXB0aE1vZGVGb3JTdWJsYXllcigwLCJvcGFxdWUiPT09dT9NdC5SZWFkV3JpdGU6TXQuUmVhZE9ubHkpLHA9dC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksZD10LnVzZVByb2dyYW0oYz8iYmFja2dyb3VuZFBhdHRlcm4iOiJiYWNrZ3JvdW5kIiksZz1zLmNvdmVyaW5nVGlsZXMoe3RpbGVTaXplOmx9KTtjJiYoaS5hY3RpdmVUZXh0dXJlLnNldChvLlRFWFRVUkUwKSx0LmltYWdlTWFuYWdlci5iaW5kKHQuY29udGV4dCkpO2Zvcih2YXIgdj1yLmdldENyb3NzZmFkZVBhcmFtZXRlcnMoKSxtPTAseT1nO208eS5sZW5ndGg7bSs9MSl7dmFyIHg9eVttXSxiPXQudHJhbnNmb3JtLmNhbGN1bGF0ZVBvc01hdHJpeCh4LnRvVW53cmFwcGVkKCkpLF89Yz9qcihiLGEsdCxjLHt0aWxlSUQ6eCx0aWxlU2l6ZTpsfSx2KTpOcihiLGEsbik7ZC5kcmF3KGksby5UUklBTkdMRVMsZixoLHAsRXQuZGlzYWJsZWQsXyxyLmlkLHQudGlsZUV4dGVudEJ1ZmZlcix0LnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLHQudGlsZUV4dGVudFNlZ21lbnRzKX19fX19LGRlYnVnOmZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKylybih0LGUscltuXSl9LGN1c3RvbTpmdW5jdGlvbih0LGUscil7dmFyIG49dC5jb250ZXh0LGE9ci5pbXBsZW1lbnRhdGlvbjtpZigib2Zmc2NyZWVuIj09PXQucmVuZGVyUGFzcyl7dmFyIGk9YS5wcmVyZW5kZXI7aSYmKHQuc2V0Q3VzdG9tTGF5ZXJEZWZhdWx0cygpLG4uc2V0Q29sb3JNb2RlKHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKSxpLmNhbGwoYSxuLmdsLHQudHJhbnNmb3JtLmN1c3RvbUxheWVyTWF0cml4KCkpLG4uc2V0RGlydHkoKSx0LnNldEJhc2VTdGF0ZSgpKX1lbHNlIGlmKCJ0cmFuc2x1Y2VudCI9PT10LnJlbmRlclBhc3Mpe3Quc2V0Q3VzdG9tTGF5ZXJEZWZhdWx0cygpLG4uc2V0Q29sb3JNb2RlKHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKSxuLnNldFN0ZW5jaWxNb2RlKEF0LmRpc2FibGVkKTt2YXIgbz0iM2QiPT09YS5yZW5kZXJpbmdNb2RlP25ldyBNdCh0LmNvbnRleHQuZ2wuTEVRVUFMLE10LlJlYWRXcml0ZSx0LmRlcHRoUmFuZ2VGb3IzRCk6dC5kZXB0aE1vZGVGb3JTdWJsYXllcigwLE10LlJlYWRPbmx5KTtuLnNldERlcHRoTW9kZShvKSxhLnJlbmRlcihuLmdsLHQudHJhbnNmb3JtLmN1c3RvbUxheWVyTWF0cml4KCkpLG4uc2V0RGlydHkoKSx0LnNldEJhc2VTdGF0ZSgpLG4uYmluZEZyYW1lYnVmZmVyLnNldChudWxsKX19fSxvbj1mdW5jdGlvbihlLHIpe3RoaXMuY29udGV4dD1uZXcgTHQoZSksdGhpcy50cmFuc2Zvcm09cix0aGlzLl90aWxlVGV4dHVyZXM9e30sdGhpcy5zZXR1cCgpLHRoaXMubnVtU3VibGF5ZXJzPUN0Lm1heFVuZGVyem9vbWluZytDdC5tYXhPdmVyem9vbWluZysxLHRoaXMuZGVwdGhFcHNpbG9uPTEvTWF0aC5wb3coMiwxNiksdGhpcy5kZXB0aFJib05lZWRzQ2xlYXI9ITAsdGhpcy5lbXB0eVByb2dyYW1Db25maWd1cmF0aW9uPW5ldyB0LlByb2dyYW1Db25maWd1cmF0aW9uLHRoaXMuY3Jvc3NUaWxlU3ltYm9sSW5kZXg9bmV3IE9lfTtmdW5jdGlvbiBzbih0LGUpe2lmKHQueT5lLnkpe3ZhciByPXQ7dD1lLGU9cn1yZXR1cm57eDA6dC54LHkwOnQueSx4MTplLngseTE6ZS55LGR4OmUueC10LngsZHk6ZS55LXQueX19ZnVuY3Rpb24gbG4odCxlLHIsbixhKXt2YXIgaT1NYXRoLm1heChyLE1hdGguZmxvb3IoZS55MCkpLG89TWF0aC5taW4obixNYXRoLmNlaWwoZS55MSkpO2lmKHQueDA9PT1lLngwJiZ0LnkwPT09ZS55MD90LngwK2UuZHkvdC5keSp0LmR4PGUueDE6dC54MS1lLmR5L3QuZHkqdC5keDxlLngwKXt2YXIgcz10O3Q9ZSxlPXN9Zm9yKHZhciBsPXQuZHgvdC5keSxjPWUuZHgvZS5keSx1PXQuZHg+MCxoPWUuZHg8MCxmPWk7ZjxvO2YrKyl7dmFyIHA9bCpNYXRoLm1heCgwLE1hdGgubWluKHQuZHksZit1LXQueTApKSt0LngwLGQ9YypNYXRoLm1heCgwLE1hdGgubWluKGUuZHksZitoLWUueTApKStlLngwO2EoTWF0aC5mbG9vcihkKSxNYXRoLmNlaWwocCksZil9fWZ1bmN0aW9uIGNuKHQsZSxyLG4sYSxpKXt2YXIgbyxzPXNuKHQsZSksbD1zbihlLHIpLGM9c24ocix0KTtzLmR5PmwuZHkmJihvPXMscz1sLGw9bykscy5keT5jLmR5JiYobz1zLHM9YyxjPW8pLGwuZHk+Yy5keSYmKG89bCxsPWMsYz1vKSxzLmR5JiZsbihjLHMsbixhLGkpLGwuZHkmJmxuKGMsbCxuLGEsaSl9b24ucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMuY29udGV4dC5nbDtpZih0aGlzLndpZHRoPWUqdC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8sdGhpcy5oZWlnaHQ9cip0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLmNvbnRleHQudmlld3BvcnQuc2V0KFswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0pLHRoaXMuc3R5bGUpZm9yKHZhciBhPTAsaT10aGlzLnN0eWxlLl9vcmRlcjthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV07dGhpcy5zdHlsZS5fbGF5ZXJzW29dLnJlc2l6ZSgpfXRoaXMuZGVwdGhSYm8mJihuLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0aGlzLmRlcHRoUmJvKSx0aGlzLmRlcHRoUmJvPW51bGwpfSxvbi5wcm90b3R5cGUuc2V0dXA9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnRleHQscj1uZXcgdC5TdHJ1Y3RBcnJheUxheW91dDJpNDtyLmVtcGxhY2VCYWNrKDAsMCksci5lbXBsYWNlQmFjayh0LkVYVEVOVCwwKSxyLmVtcGxhY2VCYWNrKDAsdC5FWFRFTlQpLHIuZW1wbGFjZUJhY2sodC5FWFRFTlQsdC5FWFRFTlQpLHRoaXMudGlsZUV4dGVudEJ1ZmZlcj1lLmNyZWF0ZVZlcnRleEJ1ZmZlcihyLEZlLm1lbWJlcnMpLHRoaXMudGlsZUV4dGVudFNlZ21lbnRzPXQuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpO3ZhciBuPW5ldyB0LlN0cnVjdEFycmF5TGF5b3V0Mmk0O24uZW1wbGFjZUJhY2soMCwwKSxuLmVtcGxhY2VCYWNrKHQuRVhURU5ULDApLG4uZW1wbGFjZUJhY2soMCx0LkVYVEVOVCksbi5lbXBsYWNlQmFjayh0LkVYVEVOVCx0LkVYVEVOVCksdGhpcy5kZWJ1Z0J1ZmZlcj1lLmNyZWF0ZVZlcnRleEJ1ZmZlcihuLEZlLm1lbWJlcnMpLHRoaXMuZGVidWdTZWdtZW50cz10LlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCw1KTt2YXIgYT1uZXcgdC5TdHJ1Y3RBcnJheUxheW91dDRpODthLmVtcGxhY2VCYWNrKDAsMCwwLDApLGEuZW1wbGFjZUJhY2sodC5FWFRFTlQsMCx0LkVYVEVOVCwwKSxhLmVtcGxhY2VCYWNrKDAsdC5FWFRFTlQsMCx0LkVYVEVOVCksYS5lbXBsYWNlQmFjayh0LkVYVEVOVCx0LkVYVEVOVCx0LkVYVEVOVCx0LkVYVEVOVCksdGhpcy5yYXN0ZXJCb3VuZHNCdWZmZXI9ZS5jcmVhdGVWZXJ0ZXhCdWZmZXIoYSx0LnJhc3RlckJvdW5kc0F0dHJpYnV0ZXMubWVtYmVycyksdGhpcy5yYXN0ZXJCb3VuZHNTZWdtZW50cz10LlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCwyKTt2YXIgaT1uZXcgdC5TdHJ1Y3RBcnJheUxheW91dDJpNDtpLmVtcGxhY2VCYWNrKDAsMCksaS5lbXBsYWNlQmFjaygxLDApLGkuZW1wbGFjZUJhY2soMCwxKSxpLmVtcGxhY2VCYWNrKDEsMSksdGhpcy52aWV3cG9ydEJ1ZmZlcj1lLmNyZWF0ZVZlcnRleEJ1ZmZlcihpLEZlLm1lbWJlcnMpLHRoaXMudmlld3BvcnRTZWdtZW50cz10LlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCwyKTt2YXIgbz1uZXcgdC5TdHJ1Y3RBcnJheUxheW91dDF1aTI7by5lbXBsYWNlQmFjaygwKSxvLmVtcGxhY2VCYWNrKDEpLG8uZW1wbGFjZUJhY2soMyksby5lbXBsYWNlQmFjaygyKSxvLmVtcGxhY2VCYWNrKDApLHRoaXMudGlsZUJvcmRlckluZGV4QnVmZmVyPWUuY3JlYXRlSW5kZXhCdWZmZXIobyk7dmFyIHM9bmV3IHQuU3RydWN0QXJyYXlMYXlvdXQzdWk2O3MuZW1wbGFjZUJhY2soMCwxLDIpLHMuZW1wbGFjZUJhY2soMiwxLDMpLHRoaXMucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXI9ZS5jcmVhdGVJbmRleEJ1ZmZlcihzKTt2YXIgbD10aGlzLmNvbnRleHQuZ2w7dGhpcy5zdGVuY2lsQ2xlYXJNb2RlPW5ldyBBdCh7ZnVuYzpsLkFMV0FZUyxtYXNrOjB9LDAsMjU1LGwuWkVSTyxsLlpFUk8sbC5aRVJPKX0sb24ucHJvdG90eXBlLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY29udGV4dCxyPWUuZ2w7dGhpcy5uZXh0U3RlbmNpbElEPTEsdGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZT12b2lkIDA7dmFyIG49dC5jcmVhdGUoKTt0Lm9ydGhvKG4sMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LDAsMCwxKSx0LnNjYWxlKG4sbixbci5kcmF3aW5nQnVmZmVyV2lkdGgsci5kcmF3aW5nQnVmZmVySGVpZ2h0LDBdKSx0aGlzLnVzZVByb2dyYW0oImNsaXBwaW5nTWFzayIpLmRyYXcoZSxyLlRSSUFOR0xFUyxNdC5kaXNhYmxlZCx0aGlzLnN0ZW5jaWxDbGVhck1vZGUsU3QuZGlzYWJsZWQsRXQuZGlzYWJsZWQsVHIobiksIiRjbGlwcGluZyIsdGhpcy52aWV3cG9ydEJ1ZmZlcix0aGlzLnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLHRoaXMudmlld3BvcnRTZWdtZW50cyl9LG9uLnByb3RvdHlwZS5fcmVuZGVyVGlsZUNsaXBwaW5nTWFza3M9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmN1cnJlbnRTdGVuY2lsU291cmNlIT09dC5zb3VyY2UmJnQuaXNUaWxlQ2xpcHBlZCgpJiZlJiZlLmxlbmd0aCl7dGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZT10LnNvdXJjZTt2YXIgcj10aGlzLmNvbnRleHQsbj1yLmdsO3RoaXMubmV4dFN0ZW5jaWxJRCtlLmxlbmd0aD4yNTYmJnRoaXMuY2xlYXJTdGVuY2lsKCksci5zZXRDb2xvck1vZGUoU3QuZGlzYWJsZWQpLHIuc2V0RGVwdGhNb2RlKE10LmRpc2FibGVkKTt2YXIgYT10aGlzLnVzZVByb2dyYW0oImNsaXBwaW5nTWFzayIpO3RoaXMuX3RpbGVDbGlwcGluZ01hc2tJRHM9e307Zm9yKHZhciBpPTAsbz1lO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXSxsPXRoaXMuX3RpbGVDbGlwcGluZ01hc2tJRHNbcy5rZXldPXRoaXMubmV4dFN0ZW5jaWxJRCsrO2EuZHJhdyhyLG4uVFJJQU5HTEVTLE10LmRpc2FibGVkLG5ldyBBdCh7ZnVuYzpuLkFMV0FZUyxtYXNrOjB9LGwsMjU1LG4uS0VFUCxuLktFRVAsbi5SRVBMQUNFKSxTdC5kaXNhYmxlZCxFdC5kaXNhYmxlZCxUcihzLnBvc01hdHJpeCksIiRjbGlwcGluZyIsdGhpcy50aWxlRXh0ZW50QnVmZmVyLHRoaXMucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsdGhpcy50aWxlRXh0ZW50U2VnbWVudHMpfX19LG9uLnByb3RvdHlwZS5zdGVuY2lsTW9kZUZvcjNEPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZT12b2lkIDAsdGhpcy5uZXh0U3RlbmNpbElEKzE+MjU2JiZ0aGlzLmNsZWFyU3RlbmNpbCgpO3ZhciB0PXRoaXMubmV4dFN0ZW5jaWxJRCsrLGU9dGhpcy5jb250ZXh0LmdsO3JldHVybiBuZXcgQXQoe2Z1bmM6ZS5OT1RFUVVBTCxtYXNrOjI1NX0sdCwyNTUsZS5LRUVQLGUuS0VFUCxlLlJFUExBQ0UpfSxvbi5wcm90b3R5cGUuc3RlbmNpbE1vZGVGb3JDbGlwcGluZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbnRleHQuZ2w7cmV0dXJuIG5ldyBBdCh7ZnVuYzplLkVRVUFMLG1hc2s6MjU1fSx0aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzW3Qua2V5XSwwLGUuS0VFUCxlLktFRVAsZS5SRVBMQUNFKX0sb24ucHJvdG90eXBlLmNvbG9yTW9kZUZvclJlbmRlclBhc3M9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnRleHQuZ2w7cmV0dXJuIHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcj9uZXcgU3QoW2UuQ09OU1RBTlRfQ09MT1IsZS5PTkVdLG5ldyB0LkNvbG9yKDEvOCwxLzgsMS84LDApLFshMCwhMCwhMCwhMF0pOiJvcGFxdWUiPT09dGhpcy5yZW5kZXJQYXNzP1N0LnVuYmxlbmRlZDpTdC5hbHBoYUJsZW5kZWR9LG9uLnByb3RvdHlwZS5kZXB0aE1vZGVGb3JTdWJsYXllcj1mdW5jdGlvbih0LGUscil7aWYoIXRoaXMub3BhcXVlUGFzc0VuYWJsZWRGb3JMYXllcigpKXJldHVybiBNdC5kaXNhYmxlZDt2YXIgbj0xLSgoMSt0aGlzLmN1cnJlbnRMYXllcikqdGhpcy5udW1TdWJsYXllcnMrdCkqdGhpcy5kZXB0aEVwc2lsb247cmV0dXJuIG5ldyBNdChyfHx0aGlzLmNvbnRleHQuZ2wuTEVRVUFMLGUsW24sbl0pfSxvbi5wcm90b3R5cGUub3BhcXVlUGFzc0VuYWJsZWRGb3JMYXllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRMYXllcjx0aGlzLm9wYXF1ZVBhc3NDdXRvZmZ9LG9uLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSxyKXt0aGlzLnN0eWxlPWUsdGhpcy5vcHRpb25zPXIsdGhpcy5saW5lQXRsYXM9ZS5saW5lQXRsYXMsdGhpcy5pbWFnZU1hbmFnZXI9ZS5pbWFnZU1hbmFnZXIsdGhpcy5nbHlwaE1hbmFnZXI9ZS5nbHlwaE1hbmFnZXIsdGhpcy5zeW1ib2xGYWRlQ2hhbmdlPWUucGxhY2VtZW50LnN5bWJvbEZhZGVDaGFuZ2UodC5icm93c2VyLm5vdygpKSx0aGlzLmltYWdlTWFuYWdlci5iZWdpbkZyYW1lKCk7dmFyIG49dGhpcy5zdHlsZS5fb3JkZXIsYT10aGlzLnN0eWxlLnNvdXJjZUNhY2hlcztmb3IodmFyIGkgaW4gYSl7dmFyIG89YVtpXTtvLnVzZWQmJm8ucHJlcGFyZSh0aGlzLmNvbnRleHQpfXZhciBzPXt9LGw9e30sYz17fTtmb3IodmFyIHUgaW4gYSl7dmFyIGg9YVt1XTtzW3VdPWguZ2V0VmlzaWJsZUNvb3JkaW5hdGVzKCksbFt1XT1zW3VdLnNsaWNlKCkucmV2ZXJzZSgpLGNbdV09aC5nZXRWaXNpYmxlQ29vcmRpbmF0ZXMoITApLnJldmVyc2UoKX1mb3IodmFyIGYgaW4gYSl7dmFyIHA9YVtmXSxkPXAuZ2V0U291cmNlKCk7aWYoInJhc3RlciI9PT1kLnR5cGV8fCJyYXN0ZXItZGVtIj09PWQudHlwZSl7Zm9yKHZhciBnPVtdLHY9MCxtPXNbZl07djxtLmxlbmd0aDt2Kz0xKXt2YXIgeT1tW3ZdO2cucHVzaChwLmdldFRpbGUoeSkpfVVyKGcsdGhpcy5jb250ZXh0KX19dGhpcy5vcGFxdWVQYXNzQ3V0b2ZmPTEvMDtmb3IodmFyIHg9MDt4PG4ubGVuZ3RoO3grKyl7dmFyIGI9blt4XTtpZih0aGlzLnN0eWxlLl9sYXllcnNbYl0uaXMzRCgpKXt0aGlzLm9wYXF1ZVBhc3NDdXRvZmY9eDticmVha319dGhpcy5yZW5kZXJQYXNzPSJvZmZzY3JlZW4iLHRoaXMuZGVwdGhSYm9OZWVkc0NsZWFyPSEwO2Zvcih2YXIgXz0wLHc9bjtfPHcubGVuZ3RoO18rPTEpe3ZhciBrPXdbX10sVD10aGlzLnN0eWxlLl9sYXllcnNba107aWYoVC5oYXNPZmZzY3JlZW5QYXNzKCkmJiFULmlzSGlkZGVuKHRoaXMudHJhbnNmb3JtLnpvb20pKXt2YXIgTT1sW1Quc291cmNlXTsoImN1c3RvbSI9PT1ULnR5cGV8fE0ubGVuZ3RoKSYmdGhpcy5yZW5kZXJMYXllcih0aGlzLGFbVC5zb3VyY2VdLFQsTSl9fWZvcih0aGlzLmNvbnRleHQuYmluZEZyYW1lYnVmZmVyLnNldChudWxsKSx0aGlzLmNvbnRleHQuY2xlYXIoe2NvbG9yOnIuc2hvd092ZXJkcmF3SW5zcGVjdG9yP3QuQ29sb3IuYmxhY2s6dC5Db2xvci50cmFuc3BhcmVudCxkZXB0aDoxfSksdGhpcy5jbGVhclN0ZW5jaWwoKSx0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3I9ci5zaG93T3ZlcmRyYXdJbnNwZWN0b3IsdGhpcy5kZXB0aFJhbmdlRm9yM0Q9WzAsMS0oZS5fb3JkZXIubGVuZ3RoKzIpKnRoaXMubnVtU3VibGF5ZXJzKnRoaXMuZGVwdGhFcHNpbG9uXSx0aGlzLnJlbmRlclBhc3M9Im9wYXF1ZSIsdGhpcy5jdXJyZW50TGF5ZXI9bi5sZW5ndGgtMTt0aGlzLmN1cnJlbnRMYXllcj49MDt0aGlzLmN1cnJlbnRMYXllci0tKXt2YXIgQT10aGlzLnN0eWxlLl9sYXllcnNbblt0aGlzLmN1cnJlbnRMYXllcl1dLFM9YVtBLnNvdXJjZV0sRT1zW0Euc291cmNlXTt0aGlzLl9yZW5kZXJUaWxlQ2xpcHBpbmdNYXNrcyhBLEUpLHRoaXMucmVuZGVyTGF5ZXIodGhpcyxTLEEsRSl9Zm9yKHRoaXMucmVuZGVyUGFzcz0idHJhbnNsdWNlbnQiLHRoaXMuY3VycmVudExheWVyPTA7dGhpcy5jdXJyZW50TGF5ZXI8bi5sZW5ndGg7dGhpcy5jdXJyZW50TGF5ZXIrKyl7dmFyIEw9dGhpcy5zdHlsZS5fbGF5ZXJzW25bdGhpcy5jdXJyZW50TGF5ZXJdXSxDPWFbTC5zb3VyY2VdLFA9KCJzeW1ib2wiPT09TC50eXBlP2M6bClbTC5zb3VyY2VdO3RoaXMuX3JlbmRlclRpbGVDbGlwcGluZ01hc2tzKEwsc1tMLnNvdXJjZV0pLHRoaXMucmVuZGVyTGF5ZXIodGhpcyxDLEwsUCl9aWYodGhpcy5vcHRpb25zLnNob3dUaWxlQm91bmRhcmllcylmb3IodmFyIE8gaW4gYSl7YW4uZGVidWcodGhpcyxhW09dLHNbT10pO2JyZWFrfXRoaXMuY29udGV4dC5zZXREZWZhdWx0KCl9LG9uLnByb3RvdHlwZS5zZXR1cE9mZnNjcmVlbkRlcHRoUmVuZGVyYnVmZmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0O3RoaXMuZGVwdGhSYm98fCh0aGlzLmRlcHRoUmJvPXQuY3JlYXRlUmVuZGVyYnVmZmVyKHQuZ2wuREVQVEhfQ09NUE9ORU5UMTYsdGhpcy53aWR0aCx0aGlzLmhlaWdodCkpfSxvbi5wcm90b3R5cGUucmVuZGVyTGF5ZXI9ZnVuY3Rpb24odCxlLHIsbil7ci5pc0hpZGRlbih0aGlzLnRyYW5zZm9ybS56b29tKXx8KCJiYWNrZ3JvdW5kIj09PXIudHlwZXx8ImN1c3RvbSI9PT1yLnR5cGV8fG4ubGVuZ3RoKSYmKHRoaXMuaWQ9ci5pZCxhbltyLnR5cGVdKHQsZSxyLG4sdGhpcy5zdHlsZS5wbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzKSl9LG9uLnByb3RvdHlwZS50cmFuc2xhdGVQb3NNYXRyaXg9ZnVuY3Rpb24oZSxyLG4sYSxpKXtpZighblswXSYmIW5bMV0pcmV0dXJuIGU7dmFyIG89aT8ibWFwIj09PWE/dGhpcy50cmFuc2Zvcm0uYW5nbGU6MDoidmlld3BvcnQiPT09YT8tdGhpcy50cmFuc2Zvcm0uYW5nbGU6MDtpZihvKXt2YXIgcz1NYXRoLnNpbihvKSxsPU1hdGguY29zKG8pO249W25bMF0qbC1uWzFdKnMsblswXSpzK25bMV0qbF19dmFyIGM9W2k/blswXTpjZShyLG5bMF0sdGhpcy50cmFuc2Zvcm0uem9vbSksaT9uWzFdOmNlKHIsblsxXSx0aGlzLnRyYW5zZm9ybS56b29tKSwwXSx1PW5ldyBGbG9hdDMyQXJyYXkoMTYpO3JldHVybiB0LnRyYW5zbGF0ZSh1LGUsYyksdX0sb24ucHJvdG90eXBlLnNhdmVUaWxlVGV4dHVyZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aWxlVGV4dHVyZXNbdC5zaXplWzBdXTtlP2UucHVzaCh0KTp0aGlzLl90aWxlVGV4dHVyZXNbdC5zaXplWzBdXT1bdF19LG9uLnByb3RvdHlwZS5nZXRUaWxlVGV4dHVyZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aWxlVGV4dHVyZXNbdF07cmV0dXJuIGUmJmUubGVuZ3RoPjA/ZS5wb3AoKTpudWxsfSxvbi5wcm90b3R5cGUuaXNQYXR0ZXJuTWlzc2luZz1mdW5jdGlvbih0KXtpZighdClyZXR1cm4hMTt2YXIgZT10aGlzLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKHQuZnJvbSkscj10aGlzLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKHQudG8pO3JldHVybiFlfHwhcn0sb24ucHJvdG90eXBlLnVzZVByb2dyYW09ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT10aGlzLmVtcHR5UHJvZ3JhbUNvbmZpZ3VyYXRpb24pLHRoaXMuY2FjaGU9dGhpcy5jYWNoZXx8e307dmFyIHI9IiIrdCsoZS5jYWNoZUtleXx8IiIpKyh0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3I/Ii9vdmVyZHJhdyI6IiIpO3JldHVybiB0aGlzLmNhY2hlW3JdfHwodGhpcy5jYWNoZVtyXT1uZXcgZnIodGhpcy5jb250ZXh0LHVyW3RdLGUsVnJbdF0sdGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yKSksdGhpcy5jYWNoZVtyXX0sb24ucHJvdG90eXBlLnNldEN1c3RvbUxheWVyRGVmYXVsdHM9ZnVuY3Rpb24oKXt0aGlzLmNvbnRleHQudW5iaW5kVkFPKCksdGhpcy5jb250ZXh0LmN1bGxGYWNlLnNldERlZmF1bHQoKSx0aGlzLmNvbnRleHQuYWN0aXZlVGV4dHVyZS5zZXREZWZhdWx0KCksdGhpcy5jb250ZXh0LnBpeGVsU3RvcmVVbnBhY2suc2V0RGVmYXVsdCgpLHRoaXMuY29udGV4dC5waXhlbFN0b3JlVW5wYWNrUHJlbXVsdGlwbHlBbHBoYS5zZXREZWZhdWx0KCksdGhpcy5jb250ZXh0LnBpeGVsU3RvcmVVbnBhY2tGbGlwWS5zZXREZWZhdWx0KCl9LG9uLnByb3RvdHlwZS5zZXRCYXNlU3RhdGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQuZ2w7dGhpcy5jb250ZXh0LmN1bGxGYWNlLnNldCghMSksdGhpcy5jb250ZXh0LnZpZXdwb3J0LnNldChbMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHRdKSx0aGlzLmNvbnRleHQuYmxlbmRFcXVhdGlvbi5zZXQodC5GVU5DX0FERCl9O3ZhciB1bj1mdW5jdGlvbihlLHIsbil7dGhpcy50aWxlU2l6ZT01MTIsdGhpcy5tYXhWYWxpZExhdGl0dWRlPTg1LjA1MTEyOSx0aGlzLl9yZW5kZXJXb3JsZENvcGllcz12b2lkIDA9PT1ufHxuLHRoaXMuX21pblpvb209ZXx8MCx0aGlzLl9tYXhab29tPXJ8fDIyLHRoaXMuc2V0TWF4Qm91bmRzKCksdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5fY2VudGVyPW5ldyB0LkxuZ0xhdCgwLDApLHRoaXMuem9vbT0wLHRoaXMuYW5nbGU9MCx0aGlzLl9mb3Y9LjY0MzUwMTEwODc5MzI4NDQsdGhpcy5fcGl0Y2g9MCx0aGlzLl91bm1vZGlmaWVkPSEwLHRoaXMuX3Bvc01hdHJpeENhY2hlPXt9LHRoaXMuX2FsaWduZWRQb3NNYXRyaXhDYWNoZT17fX0saG49e21pblpvb206e2NvbmZpZ3VyYWJsZTohMH0sbWF4Wm9vbTp7Y29uZmlndXJhYmxlOiEwfSxyZW5kZXJXb3JsZENvcGllczp7Y29uZmlndXJhYmxlOiEwfSx3b3JsZFNpemU6e2NvbmZpZ3VyYWJsZTohMH0sY2VudGVyUG9pbnQ6e2NvbmZpZ3VyYWJsZTohMH0sc2l6ZTp7Y29uZmlndXJhYmxlOiEwfSxiZWFyaW5nOntjb25maWd1cmFibGU6ITB9LHBpdGNoOntjb25maWd1cmFibGU6ITB9LGZvdjp7Y29uZmlndXJhYmxlOiEwfSx6b29tOntjb25maWd1cmFibGU6ITB9LGNlbnRlcjp7Y29uZmlndXJhYmxlOiEwfSx1bm1vZGlmaWVkOntjb25maWd1cmFibGU6ITB9LHBvaW50Ontjb25maWd1cmFibGU6ITB9fTt1bi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgdW4odGhpcy5fbWluWm9vbSx0aGlzLl9tYXhab29tLHRoaXMuX3JlbmRlcldvcmxkQ29waWVzKTtyZXR1cm4gdC50aWxlU2l6ZT10aGlzLnRpbGVTaXplLHQubGF0UmFuZ2U9dGhpcy5sYXRSYW5nZSx0LndpZHRoPXRoaXMud2lkdGgsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5fY2VudGVyPXRoaXMuX2NlbnRlcix0Lnpvb209dGhpcy56b29tLHQuYW5nbGU9dGhpcy5hbmdsZSx0Ll9mb3Y9dGhpcy5fZm92LHQuX3BpdGNoPXRoaXMuX3BpdGNoLHQuX3VubW9kaWZpZWQ9dGhpcy5fdW5tb2RpZmllZCx0Ll9jYWxjTWF0cmljZXMoKSx0fSxobi5taW5ab29tLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5ab29tfSxobi5taW5ab29tLnNldD1mdW5jdGlvbih0KXt0aGlzLl9taW5ab29tIT09dCYmKHRoaXMuX21pblpvb209dCx0aGlzLnpvb209TWF0aC5tYXgodGhpcy56b29tLHQpKX0saG4ubWF4Wm9vbS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4Wm9vbX0saG4ubWF4Wm9vbS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fbWF4Wm9vbSE9PXQmJih0aGlzLl9tYXhab29tPXQsdGhpcy56b29tPU1hdGgubWluKHRoaXMuem9vbSx0KSl9LGhuLnJlbmRlcldvcmxkQ29waWVzLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJXb3JsZENvcGllc30saG4ucmVuZGVyV29ybGRDb3BpZXMuc2V0PWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQ/dD0hMDpudWxsPT09dCYmKHQ9ITEpLHRoaXMuX3JlbmRlcldvcmxkQ29waWVzPXR9LGhuLndvcmxkU2l6ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWxlU2l6ZSp0aGlzLnNjYWxlfSxobi5jZW50ZXJQb2ludC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXplLl9kaXYoMil9LGhuLnNpemUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0LlBvaW50KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfSxobi5iZWFyaW5nLmdldD1mdW5jdGlvbigpe3JldHVybi10aGlzLmFuZ2xlL01hdGguUEkqMTgwfSxobi5iZWFyaW5nLnNldD1mdW5jdGlvbihlKXt2YXIgcj0tdC53cmFwKGUsLTE4MCwxODApKk1hdGguUEkvMTgwO3RoaXMuYW5nbGUhPT1yJiYodGhpcy5fdW5tb2RpZmllZD0hMSx0aGlzLmFuZ2xlPXIsdGhpcy5fY2FsY01hdHJpY2VzKCksdGhpcy5yb3RhdGlvbk1hdHJpeD10LmNyZWF0ZSQyKCksdC5yb3RhdGUodGhpcy5yb3RhdGlvbk1hdHJpeCx0aGlzLnJvdGF0aW9uTWF0cml4LHRoaXMuYW5nbGUpKX0saG4ucGl0Y2guZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpdGNoL01hdGguUEkqMTgwfSxobi5waXRjaC5zZXQ9ZnVuY3Rpb24oZSl7dmFyIHI9dC5jbGFtcChlLDAsNjApLzE4MCpNYXRoLlBJO3RoaXMuX3BpdGNoIT09ciYmKHRoaXMuX3VubW9kaWZpZWQ9ITEsdGhpcy5fcGl0Y2g9cix0aGlzLl9jYWxjTWF0cmljZXMoKSl9LGhuLmZvdi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm92L01hdGguUEkqMTgwfSxobi5mb3Yuc2V0PWZ1bmN0aW9uKHQpe3Q9TWF0aC5tYXgoLjAxLE1hdGgubWluKDYwLHQpKSx0aGlzLl9mb3YhPT10JiYodGhpcy5fdW5tb2RpZmllZD0hMSx0aGlzLl9mb3Y9dC8xODAqTWF0aC5QSSx0aGlzLl9jYWxjTWF0cmljZXMoKSl9LGhuLnpvb20uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvb219LGhuLnpvb20uc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWluKE1hdGgubWF4KHQsdGhpcy5taW5ab29tKSx0aGlzLm1heFpvb20pO3RoaXMuX3pvb20hPT1lJiYodGhpcy5fdW5tb2RpZmllZD0hMSx0aGlzLl96b29tPWUsdGhpcy5zY2FsZT10aGlzLnpvb21TY2FsZShlKSx0aGlzLnRpbGVab29tPU1hdGguZmxvb3IoZSksdGhpcy56b29tRnJhY3Rpb249ZS10aGlzLnRpbGVab29tLHRoaXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpKX0saG4uY2VudGVyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jZW50ZXJ9LGhuLmNlbnRlci5zZXQ9ZnVuY3Rpb24odCl7dC5sYXQ9PT10aGlzLl9jZW50ZXIubGF0JiZ0LmxuZz09PXRoaXMuX2NlbnRlci5sbmd8fCh0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2NlbnRlcj10LHRoaXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpKX0sdW4ucHJvdG90eXBlLmNvdmVyaW5nWm9vbUxldmVsPWZ1bmN0aW9uKHQpe3JldHVybih0LnJvdW5kWm9vbT9NYXRoLnJvdW5kOk1hdGguZmxvb3IpKHRoaXMuem9vbSt0aGlzLnNjYWxlWm9vbSh0aGlzLnRpbGVTaXplL3QudGlsZVNpemUpKX0sdW4ucHJvdG90eXBlLmdldFZpc2libGVVbndyYXBwZWRDb29yZGluYXRlcz1mdW5jdGlvbihlKXt2YXIgcj1bbmV3IHQuVW53cmFwcGVkVGlsZUlEKDAsZSldO2lmKHRoaXMuX3JlbmRlcldvcmxkQ29waWVzKWZvcih2YXIgbj10aGlzLnBvaW50Q29vcmRpbmF0ZShuZXcgdC5Qb2ludCgwLDApKSxhPXRoaXMucG9pbnRDb29yZGluYXRlKG5ldyB0LlBvaW50KHRoaXMud2lkdGgsMCkpLGk9dGhpcy5wb2ludENvb3JkaW5hdGUobmV3IHQuUG9pbnQodGhpcy53aWR0aCx0aGlzLmhlaWdodCkpLG89dGhpcy5wb2ludENvb3JkaW5hdGUobmV3IHQuUG9pbnQoMCx0aGlzLmhlaWdodCkpLHM9TWF0aC5mbG9vcihNYXRoLm1pbihuLngsYS54LGkueCxvLngpKSxsPU1hdGguZmxvb3IoTWF0aC5tYXgobi54LGEueCxpLngsby54KSksYz1zLTE7Yzw9bCsxO2MrKykwIT09YyYmci5wdXNoKG5ldyB0LlVud3JhcHBlZFRpbGVJRChjLGUpKTtyZXR1cm4gcn0sdW4ucHJvdG90eXBlLmNvdmVyaW5nVGlsZXM9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5jb3ZlcmluZ1pvb21MZXZlbChlKSxuPXI7aWYodm9pZCAwIT09ZS5taW56b29tJiZyPGUubWluem9vbSlyZXR1cm5bXTt2b2lkIDAhPT1lLm1heHpvb20mJnI+ZS5tYXh6b29tJiYocj1lLm1heHpvb20pO3ZhciBhPXQuTWVyY2F0b3JDb29yZGluYXRlLmZyb21MbmdMYXQodGhpcy5jZW50ZXIpLGk9TWF0aC5wb3coMixyKSxvPW5ldyB0LlBvaW50KGkqYS54LS41LGkqYS55LS41KTtyZXR1cm4gZnVuY3Rpb24oZSxyLG4sYSl7dm9pZCAwPT09YSYmKGE9ITApO3ZhciBpPTE8PGUsbz17fTtmdW5jdGlvbiBzKHIscyxsKXt2YXIgYyx1LGgsZjtpZihsPj0wJiZsPD1pKWZvcihjPXI7YzxzO2MrKyl1PU1hdGguZmxvb3IoYy9pKSxoPShjJWkraSklaSwwIT09dSYmITAhPT1hfHwoZj1uZXcgdC5PdmVyc2NhbGVkVGlsZUlEKG4sdSxlLGgsbCksb1tmLmtleV09Zil9dmFyIGw9ci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0LlBvaW50KGUueCxlLnkpLl9tdWx0KGkpfSk7cmV0dXJuIGNuKGxbMF0sbFsxXSxsWzJdLDAsaSxzKSxjbihsWzJdLGxbM10sbFswXSwwLGkscyksT2JqZWN0LmtleXMobykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfSl9KHIsW3RoaXMucG9pbnRDb29yZGluYXRlKG5ldyB0LlBvaW50KDAsMCkpLHRoaXMucG9pbnRDb29yZGluYXRlKG5ldyB0LlBvaW50KHRoaXMud2lkdGgsMCkpLHRoaXMucG9pbnRDb29yZGluYXRlKG5ldyB0LlBvaW50KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpKSx0aGlzLnBvaW50Q29vcmRpbmF0ZShuZXcgdC5Qb2ludCgwLHRoaXMuaGVpZ2h0KSldLGUucmVwYXJzZU92ZXJzY2FsZWQ/bjpyLHRoaXMuX3JlbmRlcldvcmxkQ29waWVzKS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8uZGlzdCh0LmNhbm9uaWNhbCktby5kaXN0KGUuY2Fub25pY2FsKX0pfSx1bi5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQsZSl7dGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5waXhlbHNUb0dMVW5pdHM9WzIvdCwtMi9lXSx0aGlzLl9jb25zdHJhaW4oKSx0aGlzLl9jYWxjTWF0cmljZXMoKX0saG4udW5tb2RpZmllZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdW5tb2RpZmllZH0sdW4ucHJvdG90eXBlLnpvb21TY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3coMix0KX0sdW4ucHJvdG90eXBlLnNjYWxlWm9vbT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjJ9LHVuLnByb3RvdHlwZS5wcm9qZWN0PWZ1bmN0aW9uKGUpe3ZhciByPXQuY2xhbXAoZS5sYXQsLXRoaXMubWF4VmFsaWRMYXRpdHVkZSx0aGlzLm1heFZhbGlkTGF0aXR1ZGUpO3JldHVybiBuZXcgdC5Qb2ludCh0Lm1lcmNhdG9yWGZyb21MbmcoZS5sbmcpKnRoaXMud29ybGRTaXplLHQubWVyY2F0b3JZZnJvbUxhdChyKSp0aGlzLndvcmxkU2l6ZSl9LHVuLnByb3RvdHlwZS51bnByb2plY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZShlLngvdGhpcy53b3JsZFNpemUsZS55L3RoaXMud29ybGRTaXplKS50b0xuZ0xhdCgpfSxobi5wb2ludC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9qZWN0KHRoaXMuY2VudGVyKX0sdW4ucHJvdG90eXBlLnNldExvY2F0aW9uQXRQb2ludD1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMucG9pbnRDb29yZGluYXRlKHIpLGE9dGhpcy5wb2ludENvb3JkaW5hdGUodGhpcy5jZW50ZXJQb2ludCksaT10aGlzLmxvY2F0aW9uQ29vcmRpbmF0ZShlKSxvPW5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZShpLngtKG4ueC1hLngpLGkueS0obi55LWEueSkpO3RoaXMuY2VudGVyPXRoaXMuY29vcmRpbmF0ZUxvY2F0aW9uKG8pLHRoaXMuX3JlbmRlcldvcmxkQ29waWVzJiYodGhpcy5jZW50ZXI9dGhpcy5jZW50ZXIud3JhcCgpKX0sdW4ucHJvdG90eXBlLmxvY2F0aW9uUG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29vcmRpbmF0ZVBvaW50KHRoaXMubG9jYXRpb25Db29yZGluYXRlKHQpKX0sdW4ucHJvdG90eXBlLnBvaW50TG9jYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29vcmRpbmF0ZUxvY2F0aW9uKHRoaXMucG9pbnRDb29yZGluYXRlKHQpKX0sdW4ucHJvdG90eXBlLmxvY2F0aW9uQ29vcmRpbmF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5NZXJjYXRvckNvb3JkaW5hdGUuZnJvbUxuZ0xhdChlKX0sdW4ucHJvdG90eXBlLmNvb3JkaW5hdGVMb2NhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdC50b0xuZ0xhdCgpfSx1bi5wcm90b3R5cGUucG9pbnRDb29yZGluYXRlPWZ1bmN0aW9uKGUpe3ZhciByPVtlLngsZS55LDAsMV0sbj1bZS54LGUueSwxLDFdO3QudHJhbnNmb3JtTWF0NChyLHIsdGhpcy5waXhlbE1hdHJpeEludmVyc2UpLHQudHJhbnNmb3JtTWF0NChuLG4sdGhpcy5waXhlbE1hdHJpeEludmVyc2UpO3ZhciBhPXJbM10saT1uWzNdLG89clswXS9hLHM9blswXS9pLGw9clsxXS9hLGM9blsxXS9pLHU9clsyXS9hLGg9blsyXS9pLGY9dT09PWg/MDooMC11KS8oaC11KTtyZXR1cm4gbmV3IHQuTWVyY2F0b3JDb29yZGluYXRlKHQubnVtYmVyKG8scyxmKS90aGlzLndvcmxkU2l6ZSx0Lm51bWJlcihsLGMsZikvdGhpcy53b3JsZFNpemUpfSx1bi5wcm90b3R5cGUuY29vcmRpbmF0ZVBvaW50PWZ1bmN0aW9uKGUpe3ZhciByPVtlLngqdGhpcy53b3JsZFNpemUsZS55KnRoaXMud29ybGRTaXplLDAsMV07cmV0dXJuIHQudHJhbnNmb3JtTWF0NChyLHIsdGhpcy5waXhlbE1hdHJpeCksbmV3IHQuUG9pbnQoclswXS9yWzNdLHJbMV0vclszXSl9LHVuLnByb3RvdHlwZS5nZXRCb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHQuTG5nTGF0Qm91bmRzKS5leHRlbmQodGhpcy5wb2ludExvY2F0aW9uKG5ldyB0LlBvaW50KDAsMCkpKS5leHRlbmQodGhpcy5wb2ludExvY2F0aW9uKG5ldyB0LlBvaW50KHRoaXMud2lkdGgsMCkpKS5leHRlbmQodGhpcy5wb2ludExvY2F0aW9uKG5ldyB0LlBvaW50KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpKSkuZXh0ZW5kKHRoaXMucG9pbnRMb2NhdGlvbihuZXcgdC5Qb2ludCgwLHRoaXMuaGVpZ2h0KSkpfSx1bi5wcm90b3R5cGUuZ2V0TWF4Qm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF0UmFuZ2UmJjI9PT10aGlzLmxhdFJhbmdlLmxlbmd0aCYmdGhpcy5sbmdSYW5nZSYmMj09PXRoaXMubG5nUmFuZ2UubGVuZ3RoP25ldyB0LkxuZ0xhdEJvdW5kcyhbdGhpcy5sbmdSYW5nZVswXSx0aGlzLmxhdFJhbmdlWzBdXSxbdGhpcy5sbmdSYW5nZVsxXSx0aGlzLmxhdFJhbmdlWzFdXSk6bnVsbH0sdW4ucHJvdG90eXBlLnNldE1heEJvdW5kcz1mdW5jdGlvbih0KXt0Pyh0aGlzLmxuZ1JhbmdlPVt0LmdldFdlc3QoKSx0LmdldEVhc3QoKV0sdGhpcy5sYXRSYW5nZT1bdC5nZXRTb3V0aCgpLHQuZ2V0Tm9ydGgoKV0sdGhpcy5fY29uc3RyYWluKCkpOih0aGlzLmxuZ1JhbmdlPW51bGwsdGhpcy5sYXRSYW5nZT1bLXRoaXMubWF4VmFsaWRMYXRpdHVkZSx0aGlzLm1heFZhbGlkTGF0aXR1ZGVdKX0sdW4ucHJvdG90eXBlLmNhbGN1bGF0ZVBvc01hdHJpeD1mdW5jdGlvbihlLHIpe3ZvaWQgMD09PXImJihyPSExKTt2YXIgbj1lLmtleSxhPXI/dGhpcy5fYWxpZ25lZFBvc01hdHJpeENhY2hlOnRoaXMuX3Bvc01hdHJpeENhY2hlO2lmKGFbbl0pcmV0dXJuIGFbbl07dmFyIGk9ZS5jYW5vbmljYWwsbz10aGlzLndvcmxkU2l6ZS90aGlzLnpvb21TY2FsZShpLnopLHM9aS54K01hdGgucG93KDIsaS56KSplLndyYXAsbD10LmlkZW50aXR5KG5ldyBGbG9hdDY0QXJyYXkoMTYpKTtyZXR1cm4gdC50cmFuc2xhdGUobCxsLFtzKm8saS55Km8sMF0pLHQuc2NhbGUobCxsLFtvL3QuRVhURU5ULG8vdC5FWFRFTlQsMV0pLHQubXVsdGlwbHkobCxyP3RoaXMuYWxpZ25lZFByb2pNYXRyaXg6dGhpcy5wcm9qTWF0cml4LGwpLGFbbl09bmV3IEZsb2F0MzJBcnJheShsKSxhW25dfSx1bi5wcm90b3R5cGUuY3VzdG9tTGF5ZXJNYXRyaXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXJjYXRvck1hdHJpeC5zbGljZSgpfSx1bi5wcm90b3R5cGUuX2NvbnN0cmFpbj1mdW5jdGlvbigpe2lmKHRoaXMuY2VudGVyJiZ0aGlzLndpZHRoJiZ0aGlzLmhlaWdodCYmIXRoaXMuX2NvbnN0cmFpbmluZyl7dGhpcy5fY29uc3RyYWluaW5nPSEwO3ZhciBlLHIsbixhLGk9LTkwLG89OTAscz0tMTgwLGw9MTgwLGM9dGhpcy5zaXplLHU9dGhpcy5fdW5tb2RpZmllZDtpZih0aGlzLmxhdFJhbmdlKXt2YXIgaD10aGlzLmxhdFJhbmdlO2k9dC5tZXJjYXRvcllmcm9tTGF0KGhbMV0pKnRoaXMud29ybGRTaXplLGU9KG89dC5tZXJjYXRvcllmcm9tTGF0KGhbMF0pKnRoaXMud29ybGRTaXplKS1pPGMueT9jLnkvKG8taSk6MH1pZih0aGlzLmxuZ1JhbmdlKXt2YXIgZj10aGlzLmxuZ1JhbmdlO3M9dC5tZXJjYXRvclhmcm9tTG5nKGZbMF0pKnRoaXMud29ybGRTaXplLHI9KGw9dC5tZXJjYXRvclhmcm9tTG5nKGZbMV0pKnRoaXMud29ybGRTaXplKS1zPGMueD9jLngvKGwtcyk6MH12YXIgcD10aGlzLnBvaW50LGQ9TWF0aC5tYXgocnx8MCxlfHwwKTtpZihkKXJldHVybiB0aGlzLmNlbnRlcj10aGlzLnVucHJvamVjdChuZXcgdC5Qb2ludChyPyhsK3MpLzI6cC54LGU/KG8raSkvMjpwLnkpKSx0aGlzLnpvb20rPXRoaXMuc2NhbGVab29tKGQpLHRoaXMuX3VubW9kaWZpZWQ9dSx2b2lkKHRoaXMuX2NvbnN0cmFpbmluZz0hMSk7aWYodGhpcy5sYXRSYW5nZSl7dmFyIGc9cC55LHY9Yy55LzI7Zy12PGkmJihhPWkrdiksZyt2Pm8mJihhPW8tdil9aWYodGhpcy5sbmdSYW5nZSl7dmFyIG09cC54LHk9Yy54LzI7bS15PHMmJihuPXMreSksbSt5PmwmJihuPWwteSl9dm9pZCAwPT09biYmdm9pZCAwPT09YXx8KHRoaXMuY2VudGVyPXRoaXMudW5wcm9qZWN0KG5ldyB0LlBvaW50KHZvaWQgMCE9PW4/bjpwLngsdm9pZCAwIT09YT9hOnAueSkpKSx0aGlzLl91bm1vZGlmaWVkPXUsdGhpcy5fY29uc3RyYWluaW5nPSExfX0sdW4ucHJvdG90eXBlLl9jYWxjTWF0cmljZXM9ZnVuY3Rpb24oKXtpZih0aGlzLmhlaWdodCl7dGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlPS41L01hdGgudGFuKHRoaXMuX2Zvdi8yKSp0aGlzLmhlaWdodDt2YXIgZT10aGlzLl9mb3YvMixyPU1hdGguUEkvMit0aGlzLl9waXRjaCxuPU1hdGguc2luKGUpKnRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZS9NYXRoLnNpbihNYXRoLlBJLXItZSksYT10aGlzLnBvaW50LGk9YS54LG89YS55LHM9MS4wMSooTWF0aC5jb3MoTWF0aC5QSS8yLXRoaXMuX3BpdGNoKSpuK3RoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSksbD10aGlzLmhlaWdodC81MCxjPW5ldyBGbG9hdDY0QXJyYXkoMTYpO3QucGVyc3BlY3RpdmUoYyx0aGlzLl9mb3YsdGhpcy53aWR0aC90aGlzLmhlaWdodCxsLHMpLHQuc2NhbGUoYyxjLFsxLC0xLDFdKSx0LnRyYW5zbGF0ZShjLGMsWzAsMCwtdGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlXSksdC5yb3RhdGVYKGMsYyx0aGlzLl9waXRjaCksdC5yb3RhdGVaKGMsYyx0aGlzLmFuZ2xlKSx0LnRyYW5zbGF0ZShjLGMsWy1pLC1vLDBdKSx0aGlzLm1lcmNhdG9yTWF0cml4PXQuc2NhbGUoW10sYyxbdGhpcy53b3JsZFNpemUsdGhpcy53b3JsZFNpemUsdGhpcy53b3JsZFNpemVdKSx0LnNjYWxlKGMsYyxbMSwxLHQubWVyY2F0b3JaZnJvbUFsdGl0dWRlKDEsdGhpcy5jZW50ZXIubGF0KSp0aGlzLndvcmxkU2l6ZSwxXSksdGhpcy5wcm9qTWF0cml4PWM7dmFyIHU9dGhpcy53aWR0aCUyLzIsaD10aGlzLmhlaWdodCUyLzIsZj1NYXRoLmNvcyh0aGlzLmFuZ2xlKSxwPU1hdGguc2luKHRoaXMuYW5nbGUpLGQ9aS1NYXRoLnJvdW5kKGkpK2YqdStwKmgsZz1vLU1hdGgucm91bmQobykrZipoK3AqdSx2PW5ldyBGbG9hdDY0QXJyYXkoYyk7aWYodC50cmFuc2xhdGUodix2LFtkPi41P2QtMTpkLGc+LjU/Zy0xOmcsMF0pLHRoaXMuYWxpZ25lZFByb2pNYXRyaXg9dixjPXQuY3JlYXRlKCksdC5zY2FsZShjLGMsW3RoaXMud2lkdGgvMiwtdGhpcy5oZWlnaHQvMiwxXSksdC50cmFuc2xhdGUoYyxjLFsxLC0xLDBdKSx0aGlzLmxhYmVsUGxhbmVNYXRyaXg9YyxjPXQuY3JlYXRlKCksdC5zY2FsZShjLGMsWzEsLTEsMV0pLHQudHJhbnNsYXRlKGMsYyxbLTEsLTEsMF0pLHQuc2NhbGUoYyxjLFsyL3RoaXMud2lkdGgsMi90aGlzLmhlaWdodCwxXSksdGhpcy5nbENvb3JkTWF0cml4PWMsdGhpcy5waXhlbE1hdHJpeD10Lm11bHRpcGx5KG5ldyBGbG9hdDY0QXJyYXkoMTYpLHRoaXMubGFiZWxQbGFuZU1hdHJpeCx0aGlzLnByb2pNYXRyaXgpLCEoYz10LmludmVydChuZXcgRmxvYXQ2NEFycmF5KDE2KSx0aGlzLnBpeGVsTWF0cml4KSkpdGhyb3cgbmV3IEVycm9yKCJmYWlsZWQgdG8gaW52ZXJ0IG1hdHJpeCIpO3RoaXMucGl4ZWxNYXRyaXhJbnZlcnNlPWMsdGhpcy5fcG9zTWF0cml4Q2FjaGU9e30sdGhpcy5fYWxpZ25lZFBvc01hdHJpeENhY2hlPXt9fX0sdW4ucHJvdG90eXBlLm1heFBpdGNoU2NhbGVGYWN0b3I9ZnVuY3Rpb24oKXtpZighdGhpcy5waXhlbE1hdHJpeEludmVyc2UpcmV0dXJuIDE7dmFyIGU9dGhpcy5wb2ludENvb3JkaW5hdGUobmV3IHQuUG9pbnQoMCwwKSkscj1bZS54KnRoaXMud29ybGRTaXplLGUueSp0aGlzLndvcmxkU2l6ZSwwLDFdO3JldHVybiB0LnRyYW5zZm9ybU1hdDQocixyLHRoaXMucGl4ZWxNYXRyaXgpWzNdL3RoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZX0sdW4ucHJvdG90eXBlLmdldENhbWVyYVBvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcGl0Y2gscj1NYXRoLnRhbihlKSoodGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlfHwxKTtyZXR1cm4gdGhpcy5jZW50ZXJQb2ludC5hZGQobmV3IHQuUG9pbnQoMCxyKSl9LHVuLnByb3RvdHlwZS5nZXRDYW1lcmFRdWVyeUdlb21ldHJ5PWZ1bmN0aW9uKGUpe3ZhciByPXRoaXMuZ2V0Q2FtZXJhUG9pbnQoKTtpZigxPT09ZS5sZW5ndGgpcmV0dXJuW2VbMF0scl07Zm9yKHZhciBuPXIueCxhPXIueSxpPXIueCxvPXIueSxzPTAsbD1lO3M8bC5sZW5ndGg7cys9MSl7dmFyIGM9bFtzXTtuPU1hdGgubWluKG4sYy54KSxhPU1hdGgubWluKGEsYy55KSxpPU1hdGgubWF4KGksYy54KSxvPU1hdGgubWF4KG8sYy55KX1yZXR1cm5bbmV3IHQuUG9pbnQobixhKSxuZXcgdC5Qb2ludChpLGEpLG5ldyB0LlBvaW50KGksbyksbmV3IHQuUG9pbnQobixvKSxuZXcgdC5Qb2ludChuLGEpXX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXModW4ucHJvdG90eXBlLGhuKTt2YXIgZm49ZnVuY3Rpb24oKXt2YXIgZSxyLG4sYTt0LmJpbmRBbGwoWyJfb25IYXNoQ2hhbmdlIiwiX3VwZGF0ZUhhc2giXSx0aGlzKSx0aGlzLl91cGRhdGVIYXNoPShlPXRoaXMuX3VwZGF0ZUhhc2hVbnRocm90dGxlZC5iaW5kKHRoaXMpLDMwMCxyPSExLG49bnVsbCxhPWZ1bmN0aW9uKCl7bj1udWxsLHImJihlKCksbj1zZXRUaW1lb3V0KGEsMzAwKSxyPSExKX0sZnVuY3Rpb24oKXtyZXR1cm4gcj0hMCxufHxhKCksbn0pfTtmbi5wcm90b3R5cGUuYWRkVG89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX21hcD1lLHQud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHRoaXMuX29uSGFzaENoYW5nZSwhMSksdGhpcy5fbWFwLm9uKCJtb3ZlZW5kIix0aGlzLl91cGRhdGVIYXNoKSx0aGlzfSxmbi5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHQud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHRoaXMuX29uSGFzaENoYW5nZSwhMSksdGhpcy5fbWFwLm9mZigibW92ZWVuZCIsdGhpcy5fdXBkYXRlSGFzaCksY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUhhc2goKSksZGVsZXRlIHRoaXMuX21hcCx0aGlzfSxmbi5wcm90b3R5cGUuZ2V0SGFzaFN0cmluZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAuZ2V0Q2VudGVyKCkscj1NYXRoLnJvdW5kKDEwMCp0aGlzLl9tYXAuZ2V0Wm9vbSgpKS8xMDAsbj1NYXRoLmNlaWwoKHIqTWF0aC5MTjIrTWF0aC5sb2coNTEyLzM2MC8uNSkpL01hdGguTE4xMCksYT1NYXRoLnBvdygxMCxuKSxpPU1hdGgucm91bmQoZS5sbmcqYSkvYSxvPU1hdGgucm91bmQoZS5sYXQqYSkvYSxzPXRoaXMuX21hcC5nZXRCZWFyaW5nKCksbD10aGlzLl9tYXAuZ2V0UGl0Y2goKSxjPSIiO3JldHVybiBjKz10PyIjLyIraSsiLyIrbysiLyIrcjoiIyIrcisiLyIrbysiLyIraSwoc3x8bCkmJihjKz0iLyIrTWF0aC5yb3VuZCgxMCpzKS8xMCksbCYmKGMrPSIvIitNYXRoLnJvdW5kKGwpKSxjfSxmbi5wcm90b3R5cGUuX29uSGFzaENoYW5nZT1mdW5jdGlvbigpe3ZhciBlPXQud2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZSgiIyIsIiIpLnNwbGl0KCIvIik7cmV0dXJuIGUubGVuZ3RoPj0zJiYodGhpcy5fbWFwLmp1bXBUbyh7Y2VudGVyOlsrZVsyXSwrZVsxXV0sem9vbTorZVswXSxiZWFyaW5nOisoZVszXXx8MCkscGl0Y2g6KyhlWzRdfHwwKX0pLCEwKX0sZm4ucHJvdG90eXBlLl91cGRhdGVIYXNoVW50aHJvdHRsZWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEhhc2hTdHJpbmcoKTt0cnl7dC53aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUodC53aW5kb3cuaGlzdG9yeS5zdGF0ZSwiIixlKX1jYXRjaCh0KXt9fTt2YXIgcG49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihuLGEsaSxvKXt2b2lkIDA9PT1vJiYobz17fSk7dmFyIHM9ci5tb3VzZVBvcyhhLmdldENhbnZhc0NvbnRhaW5lcigpLGkpLGw9YS51bnByb2plY3Qocyk7ZS5jYWxsKHRoaXMsbix0LmV4dGVuZCh7cG9pbnQ6cyxsbmdMYXQ6bCxvcmlnaW5hbEV2ZW50Oml9LG8pKSx0aGlzLl9kZWZhdWx0UHJldmVudGVkPSExLHRoaXMudGFyZ2V0PWF9ZSYmKG4uX19wcm90b19fPWUpLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW47dmFyIGE9e2RlZmF1bHRQcmV2ZW50ZWQ6e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiBuLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuX2RlZmF1bHRQcmV2ZW50ZWQ9ITB9LGEuZGVmYXVsdFByZXZlbnRlZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmYXVsdFByZXZlbnRlZH0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobi5wcm90b3R5cGUsYSksbn0odC5FdmVudCksZG49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihuLGEsaSl7dmFyIG89ci50b3VjaFBvcyhhLmdldENhbnZhc0NvbnRhaW5lcigpLGkpLHM9by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGEudW5wcm9qZWN0KHQpfSksbD1vLnJlZHVjZShmdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdC5hZGQoZS5kaXYobi5sZW5ndGgpKX0sbmV3IHQuUG9pbnQoMCwwKSksYz1hLnVucHJvamVjdChsKTtlLmNhbGwodGhpcyxuLHtwb2ludHM6byxwb2ludDpsLGxuZ0xhdHM6cyxsbmdMYXQ6YyxvcmlnaW5hbEV2ZW50Oml9KSx0aGlzLl9kZWZhdWx0UHJldmVudGVkPSExfWUmJihuLl9fcHJvdG9fXz1lKSxuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uO3ZhciBhPXtkZWZhdWx0UHJldmVudGVkOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gbi5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLl9kZWZhdWx0UHJldmVudGVkPSEwfSxhLmRlZmF1bHRQcmV2ZW50ZWQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRQcmV2ZW50ZWR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4ucHJvdG90eXBlLGEpLG59KHQuRXZlbnQpLGduPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyLG4pe3QuY2FsbCh0aGlzLGUse29yaWdpbmFsRXZlbnQ6bn0pLHRoaXMuX2RlZmF1bHRQcmV2ZW50ZWQ9ITF9dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7dmFyIHI9e2RlZmF1bHRQcmV2ZW50ZWQ6e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiBlLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuX2RlZmF1bHRQcmV2ZW50ZWQ9ITB9LHIuZGVmYXVsdFByZXZlbnRlZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmYXVsdFByZXZlbnRlZH0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsciksZX0odC5FdmVudCksdm49ZnVuY3Rpb24oZSl7dGhpcy5fbWFwPWUsdGhpcy5fZWw9ZS5nZXRDYW52YXNDb250YWluZXIoKSx0aGlzLl9kZWx0YT0wLHRoaXMuX2RlZmF1bHRab29tUmF0ZT0uMDEsdGhpcy5fd2hlZWxab29tUmF0ZT0xLzQ1MCx0LmJpbmRBbGwoWyJfb25XaGVlbCIsIl9vblRpbWVvdXQiLCJfb25TY3JvbGxGcmFtZSIsIl9vblNjcm9sbEZpbmlzaGVkIl0sdGhpcyl9O3ZuLnByb3RvdHlwZS5zZXRab29tUmF0ZT1mdW5jdGlvbih0KXt0aGlzLl9kZWZhdWx0Wm9vbVJhdGU9dH0sdm4ucHJvdG90eXBlLnNldFdoZWVsWm9vbVJhdGU9ZnVuY3Rpb24odCl7dGhpcy5fd2hlZWxab29tUmF0ZT10fSx2bi5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfSx2bi5wcm90b3R5cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2FjdGl2ZX0sdm4ucHJvdG90eXBlLmlzWm9vbWluZz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fem9vbWluZ30sdm4ucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbih0KXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZW5hYmxlZD0hMCx0aGlzLl9hcm91bmRDZW50ZXI9dCYmImNlbnRlciI9PT10LmFyb3VuZCl9LHZuLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKSYmKHRoaXMuX2VuYWJsZWQ9ITEpfSx2bi5wcm90b3R5cGUub25XaGVlbD1mdW5jdGlvbihlKXtpZih0aGlzLmlzRW5hYmxlZCgpKXt2YXIgcj1lLmRlbHRhTW9kZT09PXQud2luZG93LldoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU/NDAqZS5kZWx0YVk6ZS5kZWx0YVksbj10LmJyb3dzZXIubm93KCksYT1uLSh0aGlzLl9sYXN0V2hlZWxFdmVudFRpbWV8fDApO3RoaXMuX2xhc3RXaGVlbEV2ZW50VGltZT1uLDAhPT1yJiZyJTQuMDAwMjQ0MTQwNjI1PT0wP3RoaXMuX3R5cGU9IndoZWVsIjowIT09ciYmTWF0aC5hYnMocik8ND90aGlzLl90eXBlPSJ0cmFja3BhZCI6YT40MDA/KHRoaXMuX3R5cGU9bnVsbCx0aGlzLl9sYXN0VmFsdWU9cix0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQodGhpcy5fb25UaW1lb3V0LDQwLGUpKTp0aGlzLl90eXBlfHwodGhpcy5fdHlwZT1NYXRoLmFicyhhKnIpPDIwMD8idHJhY2twYWQiOiJ3aGVlbCIsdGhpcy5fdGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSx0aGlzLl90aW1lb3V0PW51bGwscis9dGhpcy5fbGFzdFZhbHVlKSksZS5zaGlmdEtleSYmciYmKHIvPTQpLHRoaXMuX3R5cGUmJih0aGlzLl9sYXN0V2hlZWxFdmVudD1lLHRoaXMuX2RlbHRhLT1yLHRoaXMuaXNBY3RpdmUoKXx8dGhpcy5fc3RhcnQoZSkpLGUucHJldmVudERlZmF1bHQoKX19LHZuLnByb3RvdHlwZS5fb25UaW1lb3V0PWZ1bmN0aW9uKHQpe3RoaXMuX3R5cGU9IndoZWVsIix0aGlzLl9kZWx0YS09dGhpcy5fbGFzdFZhbHVlLHRoaXMuaXNBY3RpdmUoKXx8dGhpcy5fc3RhcnQodCl9LHZuLnByb3RvdHlwZS5fc3RhcnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5fZGVsdGEpe3RoaXMuX2ZyYW1lSWQmJih0aGlzLl9tYXAuX2NhbmNlbFJlbmRlckZyYW1lKHRoaXMuX2ZyYW1lSWQpLHRoaXMuX2ZyYW1lSWQ9bnVsbCksdGhpcy5fYWN0aXZlPSEwLHRoaXMuaXNab29taW5nKCl8fCh0aGlzLl96b29taW5nPSEwLHRoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KCJtb3Zlc3RhcnQiLHtvcmlnaW5hbEV2ZW50OmV9KSksdGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQoInpvb21zdGFydCIse29yaWdpbmFsRXZlbnQ6ZX0pKSksdGhpcy5fZmluaXNoVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX2ZpbmlzaFRpbWVvdXQpO3ZhciBuPXIubW91c2VQb3ModGhpcy5fZWwsZSk7dGhpcy5fYXJvdW5kPXQuTG5nTGF0LmNvbnZlcnQodGhpcy5fYXJvdW5kQ2VudGVyP3RoaXMuX21hcC5nZXRDZW50ZXIoKTp0aGlzLl9tYXAudW5wcm9qZWN0KG4pKSx0aGlzLl9hcm91bmRQb2ludD10aGlzLl9tYXAudHJhbnNmb3JtLmxvY2F0aW9uUG9pbnQodGhpcy5fYXJvdW5kKSx0aGlzLl9mcmFtZUlkfHwodGhpcy5fZnJhbWVJZD10aGlzLl9tYXAuX3JlcXVlc3RSZW5kZXJGcmFtZSh0aGlzLl9vblNjcm9sbEZyYW1lKSl9fSx2bi5wcm90b3R5cGUuX29uU2Nyb2xsRnJhbWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKHRoaXMuX2ZyYW1lSWQ9bnVsbCx0aGlzLmlzQWN0aXZlKCkpe3ZhciByPXRoaXMuX21hcC50cmFuc2Zvcm07aWYoMCE9PXRoaXMuX2RlbHRhKXt2YXIgbj0id2hlZWwiPT09dGhpcy5fdHlwZSYmTWF0aC5hYnModGhpcy5fZGVsdGEpPjQuMDAwMjQ0MTQwNjI1P3RoaXMuX3doZWVsWm9vbVJhdGU6dGhpcy5fZGVmYXVsdFpvb21SYXRlLGE9Mi8oMStNYXRoLmV4cCgtTWF0aC5hYnModGhpcy5fZGVsdGEqbikpKTt0aGlzLl9kZWx0YTwwJiYwIT09YSYmKGE9MS9hKTt2YXIgaT0ibnVtYmVyIj09dHlwZW9mIHRoaXMuX3RhcmdldFpvb20/ci56b29tU2NhbGUodGhpcy5fdGFyZ2V0Wm9vbSk6ci5zY2FsZTt0aGlzLl90YXJnZXRab29tPU1hdGgubWluKHIubWF4Wm9vbSxNYXRoLm1heChyLm1pblpvb20sci5zY2FsZVpvb20oaSphKSkpLCJ3aGVlbCI9PT10aGlzLl90eXBlJiYodGhpcy5fc3RhcnRab29tPXIuem9vbSx0aGlzLl9lYXNpbmc9dGhpcy5fc21vb3RoT3V0RWFzaW5nKDIwMCkpLHRoaXMuX2RlbHRhPTB9dmFyIG89Im51bWJlciI9PXR5cGVvZiB0aGlzLl90YXJnZXRab29tP3RoaXMuX3RhcmdldFpvb206ci56b29tLHM9dGhpcy5fc3RhcnRab29tLGw9dGhpcy5fZWFzaW5nLGM9ITE7aWYoIndoZWVsIj09PXRoaXMuX3R5cGUmJnMmJmwpe3ZhciB1PU1hdGgubWluKCh0LmJyb3dzZXIubm93KCktdGhpcy5fbGFzdFdoZWVsRXZlbnRUaW1lKS8yMDAsMSksaD1sKHUpO3Iuem9vbT10Lm51bWJlcihzLG8saCksdTwxP3RoaXMuX2ZyYW1lSWR8fCh0aGlzLl9mcmFtZUlkPXRoaXMuX21hcC5fcmVxdWVzdFJlbmRlckZyYW1lKHRoaXMuX29uU2Nyb2xsRnJhbWUpKTpjPSEwfWVsc2Ugci56b29tPW8sYz0hMDtyLnNldExvY2F0aW9uQXRQb2ludCh0aGlzLl9hcm91bmQsdGhpcy5fYXJvdW5kUG9pbnQpLHRoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KCJtb3ZlIix7b3JpZ2luYWxFdmVudDp0aGlzLl9sYXN0V2hlZWxFdmVudH0pKSx0aGlzLl9tYXAuZmlyZShuZXcgdC5FdmVudCgiem9vbSIse29yaWdpbmFsRXZlbnQ6dGhpcy5fbGFzdFdoZWVsRXZlbnR9KSksYyYmKHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9maW5pc2hUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLl96b29taW5nPSExLGUuX21hcC5maXJlKG5ldyB0LkV2ZW50KCJ6b29tZW5kIix7b3JpZ2luYWxFdmVudDplLl9sYXN0V2hlZWxFdmVudH0pKSxlLl9tYXAuZmlyZShuZXcgdC5FdmVudCgibW92ZWVuZCIse29yaWdpbmFsRXZlbnQ6ZS5fbGFzdFdoZWVsRXZlbnR9KSksZGVsZXRlIGUuX3RhcmdldFpvb219LDIwMCkpfX0sdm4ucHJvdG90eXBlLl9zbW9vdGhPdXRFYXNpbmc9ZnVuY3Rpb24oZSl7dmFyIHI9dC5lYXNlO2lmKHRoaXMuX3ByZXZFYXNlKXt2YXIgbj10aGlzLl9wcmV2RWFzZSxhPSh0LmJyb3dzZXIubm93KCktbi5zdGFydCkvbi5kdXJhdGlvbixpPW4uZWFzaW5nKGErLjAxKS1uLmVhc2luZyhhKSxvPS4yNy9NYXRoLnNxcnQoaSppKzFlLTQpKi4wMSxzPU1hdGguc3FydCguMDcyOS1vKm8pO3I9dC5iZXppZXIobyxzLC4yNSwxKX1yZXR1cm4gdGhpcy5fcHJldkVhc2U9e3N0YXJ0OnQuYnJvd3Nlci5ub3coKSxkdXJhdGlvbjplLGVhc2luZzpyfSxyfTt2YXIgbW49ZnVuY3Rpb24oZSxyKXt0aGlzLl9tYXA9ZSx0aGlzLl9lbD1lLmdldENhbnZhc0NvbnRhaW5lcigpLHRoaXMuX2NvbnRhaW5lcj1lLmdldENvbnRhaW5lcigpLHRoaXMuX2NsaWNrVG9sZXJhbmNlPXIuY2xpY2tUb2xlcmFuY2V8fDEsdC5iaW5kQWxsKFsiX29uTW91c2VNb3ZlIiwiX29uTW91c2VVcCIsIl9vbktleURvd24iXSx0aGlzKX07bW4ucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH0sbW4ucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9hY3RpdmV9LG1uLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZW5hYmxlZD0hMCl9LG1uLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKSYmKHRoaXMuX2VuYWJsZWQ9ITEpfSxtbi5wcm90b3R5cGUub25Nb3VzZURvd249ZnVuY3Rpb24oZSl7dGhpcy5pc0VuYWJsZWQoKSYmZS5zaGlmdEtleSYmMD09PWUuYnV0dG9uJiYodC53aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLl9vbk1vdXNlTW92ZSwhMSksdC53aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLCExKSx0LndpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXAsITEpLHIuZGlzYWJsZURyYWcoKSx0aGlzLl9zdGFydFBvcz10aGlzLl9sYXN0UG9zPXIubW91c2VQb3ModGhpcy5fZWwsZSksdGhpcy5fYWN0aXZlPSEwKX0sbW4ucHJvdG90eXBlLl9vbk1vdXNlTW92ZT1mdW5jdGlvbih0KXt2YXIgZT1yLm1vdXNlUG9zKHRoaXMuX2VsLHQpO2lmKCEodGhpcy5fbGFzdFBvcy5lcXVhbHMoZSl8fCF0aGlzLl9ib3gmJmUuZGlzdCh0aGlzLl9zdGFydFBvcyk8dGhpcy5fY2xpY2tUb2xlcmFuY2UpKXt2YXIgbj10aGlzLl9zdGFydFBvczt0aGlzLl9sYXN0UG9zPWUsdGhpcy5fYm94fHwodGhpcy5fYm94PXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1ib3h6b29tIix0aGlzLl9jb250YWluZXIpLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jcm9zc2hhaXIiKSx0aGlzLl9maXJlRXZlbnQoImJveHpvb21zdGFydCIsdCkpO3ZhciBhPU1hdGgubWluKG4ueCxlLngpLGk9TWF0aC5tYXgobi54LGUueCksbz1NYXRoLm1pbihuLnksZS55KSxzPU1hdGgubWF4KG4ueSxlLnkpO3Iuc2V0VHJhbnNmb3JtKHRoaXMuX2JveCwidHJhbnNsYXRlKCIrYSsicHgsIitvKyJweCkiKSx0aGlzLl9ib3guc3R5bGUud2lkdGg9aS1hKyJweCIsdGhpcy5fYm94LnN0eWxlLmhlaWdodD1zLW8rInB4In19LG1uLnByb3RvdHlwZS5fb25Nb3VzZVVwPWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmJ1dHRvbil7dmFyIG49dGhpcy5fc3RhcnRQb3MsYT1yLm1vdXNlUG9zKHRoaXMuX2VsLGUpO3RoaXMuX2ZpbmlzaCgpLHIuc3VwcHJlc3NDbGljaygpLG4ueD09PWEueCYmbi55PT09YS55P3RoaXMuX2ZpcmVFdmVudCgiYm94em9vbWNhbmNlbCIsZSk6dGhpcy5fbWFwLmZpdFNjcmVlbkNvb3JkaW5hdGVzKG4sYSx0aGlzLl9tYXAuZ2V0QmVhcmluZygpLHtsaW5lYXI6ITB9KS5maXJlKG5ldyB0LkV2ZW50KCJib3h6b29tZW5kIix7b3JpZ2luYWxFdmVudDplfSkpfX0sbW4ucHJvdG90eXBlLl9vbktleURvd249ZnVuY3Rpb24odCl7Mjc9PT10LmtleUNvZGUmJih0aGlzLl9maW5pc2goKSx0aGlzLl9maXJlRXZlbnQoImJveHpvb21jYW5jZWwiLHQpKX0sbW4ucHJvdG90eXBlLl9maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl9hY3RpdmU9ITEsdC53aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLl9vbk1vdXNlTW92ZSwhMSksdC53aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLCExKSx0LndpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXAsITEpLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jcm9zc2hhaXIiKSx0aGlzLl9ib3gmJihyLnJlbW92ZSh0aGlzLl9ib3gpLHRoaXMuX2JveD1udWxsKSxyLmVuYWJsZURyYWcoKSxkZWxldGUgdGhpcy5fc3RhcnRQb3MsZGVsZXRlIHRoaXMuX2xhc3RQb3N9LG1uLnByb3RvdHlwZS5fZmlyZUV2ZW50PWZ1bmN0aW9uKGUscil7cmV0dXJuIHRoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KGUse29yaWdpbmFsRXZlbnQ6cn0pKX07dmFyIHluPXQuYmV6aWVyKDAsMCwuMjUsMSkseG49ZnVuY3Rpb24oZSxyKXt0aGlzLl9tYXA9ZSx0aGlzLl9lbD1yLmVsZW1lbnR8fGUuZ2V0Q2FudmFzQ29udGFpbmVyKCksdGhpcy5fc3RhdGU9ImRpc2FibGVkIix0aGlzLl9idXR0b249ci5idXR0b258fCJyaWdodCIsdGhpcy5fYmVhcmluZ1NuYXA9ci5iZWFyaW5nU25hcHx8MCx0aGlzLl9waXRjaFdpdGhSb3RhdGU9ITEhPT1yLnBpdGNoV2l0aFJvdGF0ZSx0LmJpbmRBbGwoWyJvbk1vdXNlRG93biIsIl9vbk1vdXNlTW92ZSIsIl9vbk1vdXNlVXAiLCJfb25CbHVyIiwiX29uRHJhZ0ZyYW1lIl0sdGhpcyl9O3huLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4iZGlzYWJsZWQiIT09dGhpcy5fc3RhdGV9LHhuLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiJhY3RpdmUiPT09dGhpcy5fc3RhdGV9LHhuLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fc3RhdGU9ImVuYWJsZWQiKX0seG4ucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXtpZih0aGlzLmlzRW5hYmxlZCgpKXN3aXRjaCh0aGlzLl9zdGF0ZSl7Y2FzZSJhY3RpdmUiOnRoaXMuX3N0YXRlPSJkaXNhYmxlZCIsdGhpcy5fdW5iaW5kKCksdGhpcy5fZGVhY3RpdmF0ZSgpLHRoaXMuX2ZpcmVFdmVudCgicm90YXRlZW5kIiksdGhpcy5fcGl0Y2hXaXRoUm90YXRlJiZ0aGlzLl9maXJlRXZlbnQoInBpdGNoZW5kIiksdGhpcy5fZmlyZUV2ZW50KCJtb3ZlZW5kIik7YnJlYWs7Y2FzZSJwZW5kaW5nIjp0aGlzLl9zdGF0ZT0iZGlzYWJsZWQiLHRoaXMuX3VuYmluZCgpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fc3RhdGU9ImRpc2FibGVkIn19LHhuLnByb3RvdHlwZS5vbk1vdXNlRG93bj1mdW5jdGlvbihlKXtpZigiZW5hYmxlZCI9PT10aGlzLl9zdGF0ZSl7dmFyIG49InRvdWNoc3RhcnQiPT09ZS50eXBlO2lmKG4pdGhpcy5fc3RhcnRUaW1lPURhdGUubm93KCk7ZWxzZSBpZigicmlnaHQiPT09dGhpcy5fYnV0dG9uKXtpZih0aGlzLl9ldmVudEJ1dHRvbj1yLm1vdXNlQnV0dG9uKGUpLHRoaXMuX2V2ZW50QnV0dG9uIT09KGUuY3RybEtleT8wOjIpKXJldHVybn1lbHNle2lmKGUuY3RybEtleXx8MCE9PXIubW91c2VCdXR0b24oZSkpcmV0dXJuO3RoaXMuX2V2ZW50QnV0dG9uPTB9ci5kaXNhYmxlRHJhZygpLG4/KHQud2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUse2NhcHR1cmU6ITB9KSx0LndpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fb25Nb3VzZVVwKSk6KHQud2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUse2NhcHR1cmU6ITB9KSx0LndpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXApKSx0LndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9vbkJsdXIpLHRoaXMuX3N0YXRlPSJwZW5kaW5nIix0aGlzLl9pbmVydGlhPVtbdC5icm93c2VyLm5vdygpLHRoaXMuX21hcC5nZXRCZWFyaW5nKCldXSx0aGlzLl9zdGFydFBvcz10aGlzLl9wcmV2UG9zPXRoaXMuX2xhc3RQb3M9ci5tb3VzZVBvcyh0aGlzLl9lbCxlKSx0aGlzLl9jZW50ZXI9dGhpcy5fbWFwLnRyYW5zZm9ybS5jZW50ZXJQb2ludCxlLnByZXZlbnREZWZhdWx0KCl9fSx4bi5wcm90b3R5cGUuX29uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXIubW91c2VQb3ModGhpcy5fZWwsdCk7dGhpcy5fbGFzdFBvcy5lcXVhbHMoZSl8fCh0aGlzLl9sYXN0TW92ZUV2ZW50PXQsdGhpcy5fbGFzdFBvcz1lLCJwZW5kaW5nIj09PXRoaXMuX3N0YXRlJiYodGhpcy5fc3RhdGU9ImFjdGl2ZSIsdGhpcy5fZmlyZUV2ZW50KCJyb3RhdGVzdGFydCIsdCksdGhpcy5fZmlyZUV2ZW50KCJtb3Zlc3RhcnQiLHQpLHRoaXMuX3BpdGNoV2l0aFJvdGF0ZSYmdGhpcy5fZmlyZUV2ZW50KCJwaXRjaHN0YXJ0Iix0KSksdGhpcy5fZnJhbWVJZHx8KHRoaXMuX2ZyYW1lSWQ9dGhpcy5fbWFwLl9yZXF1ZXN0UmVuZGVyRnJhbWUodGhpcy5fb25EcmFnRnJhbWUpKSl9LHhuLnByb3RvdHlwZS5fb25EcmFnRnJhbWU9ZnVuY3Rpb24oKXt0aGlzLl9mcmFtZUlkPW51bGw7dmFyIGU9dGhpcy5fbGFzdE1vdmVFdmVudDtpZihlKXt2YXIgcj10aGlzLl9tYXAudHJhbnNmb3JtLG49dGhpcy5fcHJldlBvcyxhPXRoaXMuX2xhc3RQb3MsaT0uOCoobi54LWEueCksbz0tLjUqKG4ueS1hLnkpLHM9ci5iZWFyaW5nLWksbD1yLnBpdGNoLW8sYz10aGlzLl9pbmVydGlhLHU9Y1tjLmxlbmd0aC0xXTt0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKSxjLnB1c2goW3QuYnJvd3Nlci5ub3coKSx0aGlzLl9tYXAuX25vcm1hbGl6ZUJlYXJpbmcocyx1WzFdKV0pLHIuYmVhcmluZz1zLHRoaXMuX3BpdGNoV2l0aFJvdGF0ZSYmKHRoaXMuX2ZpcmVFdmVudCgicGl0Y2giLGUpLHIucGl0Y2g9bCksdGhpcy5fZmlyZUV2ZW50KCJyb3RhdGUiLGUpLHRoaXMuX2ZpcmVFdmVudCgibW92ZSIsZSksZGVsZXRlIHRoaXMuX2xhc3RNb3ZlRXZlbnQsdGhpcy5fcHJldlBvcz10aGlzLl9sYXN0UG9zfX0seG4ucHJvdG90eXBlLl9vbk1vdXNlVXA9ZnVuY3Rpb24odCl7aWYoInRvdWNoZW5kIj09PXQudHlwZSYmdGhpcy5fc3RhcnRQb3M9PT10aGlzLl9sYXN0UG9zJiZEYXRlLm5vdygpLXRoaXMuX3N0YXJ0VGltZTwzMDAmJnRoaXMuX2VsLmNsaWNrKCksci5tb3VzZUJ1dHRvbih0KT09PXRoaXMuX2V2ZW50QnV0dG9uKXN3aXRjaCh0aGlzLl9zdGF0ZSl7Y2FzZSJhY3RpdmUiOnRoaXMuX3N0YXRlPSJlbmFibGVkIixyLnN1cHByZXNzQ2xpY2soKSx0aGlzLl91bmJpbmQoKSx0aGlzLl9kZWFjdGl2YXRlKCksdGhpcy5faW5lcnRpYWxSb3RhdGUodCk7YnJlYWs7Y2FzZSJwZW5kaW5nIjp0aGlzLl9zdGF0ZT0iZW5hYmxlZCIsdGhpcy5fdW5iaW5kKCl9fSx4bi5wcm90b3R5cGUuX29uQmx1cj1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5fc3RhdGUpe2Nhc2UiYWN0aXZlIjp0aGlzLl9zdGF0ZT0iZW5hYmxlZCIsdGhpcy5fdW5iaW5kKCksdGhpcy5fZGVhY3RpdmF0ZSgpLHRoaXMuX2ZpcmVFdmVudCgicm90YXRlZW5kIix0KSx0aGlzLl9waXRjaFdpdGhSb3RhdGUmJnRoaXMuX2ZpcmVFdmVudCgicGl0Y2hlbmQiLHQpLHRoaXMuX2ZpcmVFdmVudCgibW92ZWVuZCIsdCk7YnJlYWs7Y2FzZSJwZW5kaW5nIjp0aGlzLl9zdGF0ZT0iZW5hYmxlZCIsdGhpcy5fdW5iaW5kKCl9fSx4bi5wcm90b3R5cGUuX3VuYmluZD1mdW5jdGlvbigpe3Qud2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUse2NhcHR1cmU6ITB9KSx0LndpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXApLHQud2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUse2NhcHR1cmU6ITB9KSx0LndpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fb25Nb3VzZVVwKSx0LndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9vbkJsdXIpLHIuZW5hYmxlRHJhZygpfSx4bi5wcm90b3R5cGUuX2RlYWN0aXZhdGU9ZnVuY3Rpb24oKXt0aGlzLl9mcmFtZUlkJiYodGhpcy5fbWFwLl9jYW5jZWxSZW5kZXJGcmFtZSh0aGlzLl9mcmFtZUlkKSx0aGlzLl9mcmFtZUlkPW51bGwpLGRlbGV0ZSB0aGlzLl9sYXN0TW92ZUV2ZW50LGRlbGV0ZSB0aGlzLl9zdGFydFBvcyxkZWxldGUgdGhpcy5fcHJldlBvcyxkZWxldGUgdGhpcy5fbGFzdFBvc30seG4ucHJvdG90eXBlLl9pbmVydGlhbFJvdGF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2ZpcmVFdmVudCgicm90YXRlZW5kIix0KSx0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKTt2YXIgcj10aGlzLl9tYXAsbj1yLmdldEJlYXJpbmcoKSxhPXRoaXMuX2luZXJ0aWEsaT1mdW5jdGlvbigpe01hdGguYWJzKG4pPGUuX2JlYXJpbmdTbmFwP3IucmVzZXROb3J0aCh7bm9Nb3ZlU3RhcnQ6ITB9LHtvcmlnaW5hbEV2ZW50OnR9KTplLl9maXJlRXZlbnQoIm1vdmVlbmQiLHQpLGUuX3BpdGNoV2l0aFJvdGF0ZSYmZS5fZmlyZUV2ZW50KCJwaXRjaGVuZCIsdCl9O2lmKGEubGVuZ3RoPDIpaSgpO2Vsc2V7dmFyIG89YVswXSxzPWFbYS5sZW5ndGgtMV0sbD1hW2EubGVuZ3RoLTJdLGM9ci5fbm9ybWFsaXplQmVhcmluZyhuLGxbMV0pLHU9c1sxXS1vWzFdLGg9dTwwPy0xOjEsZj0oc1swXS1vWzBdKS8xZTM7aWYoMCE9PXUmJjAhPT1mKXt2YXIgcD1NYXRoLmFicyh1KiguMjUvZikpO3A+MTgwJiYocD0xODApO3ZhciBkPXAvMTgwO2MrPWgqcCooZC8yKSxNYXRoLmFicyhyLl9ub3JtYWxpemVCZWFyaW5nKGMsMCkpPHRoaXMuX2JlYXJpbmdTbmFwJiYoYz1yLl9ub3JtYWxpemVCZWFyaW5nKDAsYykpLHIucm90YXRlVG8oYyx7ZHVyYXRpb246MWUzKmQsZWFzaW5nOnluLG5vTW92ZVN0YXJ0OiEwfSx7b3JpZ2luYWxFdmVudDp0fSl9ZWxzZSBpKCl9fSx4bi5wcm90b3R5cGUuX2ZpcmVFdmVudD1mdW5jdGlvbihlLHIpe3JldHVybiB0aGlzLl9tYXAuZmlyZShuZXcgdC5FdmVudChlLHI/e29yaWdpbmFsRXZlbnQ6cn06e30pKX0seG4ucHJvdG90eXBlLl9kcmFpbkluZXJ0aWFCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5faW5lcnRpYSxyPXQuYnJvd3Nlci5ub3coKTtlLmxlbmd0aD4wJiZyLWVbMF1bMF0+MTYwOyllLnNoaWZ0KCl9O3ZhciBibj10LmJlemllcigwLDAsLjMsMSksX249ZnVuY3Rpb24oZSxyKXt0aGlzLl9tYXA9ZSx0aGlzLl9lbD1lLmdldENhbnZhc0NvbnRhaW5lcigpLHRoaXMuX3N0YXRlPSJkaXNhYmxlZCIsdGhpcy5fY2xpY2tUb2xlcmFuY2U9ci5jbGlja1RvbGVyYW5jZXx8MSx0LmJpbmRBbGwoWyJfb25Nb3ZlIiwiX29uTW91c2VVcCIsIl9vblRvdWNoRW5kIiwiX29uQmx1ciIsIl9vbkRyYWdGcmFtZSJdLHRoaXMpfTtfbi5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuImRpc2FibGVkIiE9PXRoaXMuX3N0YXRlfSxfbi5wcm90b3R5cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4iYWN0aXZlIj09PXRoaXMuX3N0YXRlfSxfbi5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKXx8KHRoaXMuX2VsLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLXRvdWNoLWRyYWctcGFuIiksdGhpcy5fc3RhdGU9ImVuYWJsZWQiKX0sX24ucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXtpZih0aGlzLmlzRW5hYmxlZCgpKXN3aXRjaCh0aGlzLl9lbC5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC10b3VjaC1kcmFnLXBhbiIpLHRoaXMuX3N0YXRlKXtjYXNlImFjdGl2ZSI6dGhpcy5fc3RhdGU9ImRpc2FibGVkIix0aGlzLl91bmJpbmQoKSx0aGlzLl9kZWFjdGl2YXRlKCksdGhpcy5fZmlyZUV2ZW50KCJkcmFnZW5kIiksdGhpcy5fZmlyZUV2ZW50KCJtb3ZlZW5kIik7YnJlYWs7Y2FzZSJwZW5kaW5nIjp0aGlzLl9zdGF0ZT0iZGlzYWJsZWQiLHRoaXMuX3VuYmluZCgpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fc3RhdGU9ImRpc2FibGVkIn19LF9uLnByb3RvdHlwZS5vbk1vdXNlRG93bj1mdW5jdGlvbihlKXsiZW5hYmxlZCI9PT10aGlzLl9zdGF0ZSYmKGUuY3RybEtleXx8MCE9PXIubW91c2VCdXR0b24oZSl8fChyLmFkZEV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3ZlLHtjYXB0dXJlOiEwfSksci5hZGRFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3VtZW50LCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXApLHRoaXMuX3N0YXJ0KGUpKSl9LF9uLnByb3RvdHlwZS5vblRvdWNoU3RhcnQ9ZnVuY3Rpb24oZSl7ImVuYWJsZWQiPT09dGhpcy5fc3RhdGUmJihlLnRvdWNoZXMubGVuZ3RoPjF8fChyLmFkZEV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxyLmFkZEV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kKSx0aGlzLl9zdGFydChlKSkpfSxfbi5wcm90b3R5cGUuX3N0YXJ0PWZ1bmN0aW9uKGUpe3Qud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX29uQmx1ciksdGhpcy5fc3RhdGU9InBlbmRpbmciLHRoaXMuX3N0YXJ0UG9zPXRoaXMuX21vdXNlRG93blBvcz10aGlzLl9wcmV2UG9zPXRoaXMuX2xhc3RQb3M9ci5tb3VzZVBvcyh0aGlzLl9lbCxlKSx0aGlzLl9pbmVydGlhPVtbdC5icm93c2VyLm5vdygpLHRoaXMuX3N0YXJ0UG9zXV19LF9uLnByb3RvdHlwZS5fb25Nb3ZlPWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgbj1yLm1vdXNlUG9zKHRoaXMuX2VsLGUpO3RoaXMuX2xhc3RQb3MuZXF1YWxzKG4pfHwicGVuZGluZyI9PT10aGlzLl9zdGF0ZSYmbi5kaXN0KHRoaXMuX21vdXNlRG93blBvcyk8dGhpcy5fY2xpY2tUb2xlcmFuY2V8fCh0aGlzLl9sYXN0TW92ZUV2ZW50PWUsdGhpcy5fbGFzdFBvcz1uLHRoaXMuX2RyYWluSW5lcnRpYUJ1ZmZlcigpLHRoaXMuX2luZXJ0aWEucHVzaChbdC5icm93c2VyLm5vdygpLHRoaXMuX2xhc3RQb3NdKSwicGVuZGluZyI9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3N0YXRlPSJhY3RpdmUiLHRoaXMuX2ZpcmVFdmVudCgiZHJhZ3N0YXJ0IixlKSx0aGlzLl9maXJlRXZlbnQoIm1vdmVzdGFydCIsZSkpLHRoaXMuX2ZyYW1lSWR8fCh0aGlzLl9mcmFtZUlkPXRoaXMuX21hcC5fcmVxdWVzdFJlbmRlckZyYW1lKHRoaXMuX29uRHJhZ0ZyYW1lKSkpfSxfbi5wcm90b3R5cGUuX29uRHJhZ0ZyYW1lPWZ1bmN0aW9uKCl7dGhpcy5fZnJhbWVJZD1udWxsO3ZhciB0PXRoaXMuX2xhc3RNb3ZlRXZlbnQ7aWYodCl7dmFyIGU9dGhpcy5fbWFwLnRyYW5zZm9ybTtlLnNldExvY2F0aW9uQXRQb2ludChlLnBvaW50TG9jYXRpb24odGhpcy5fcHJldlBvcyksdGhpcy5fbGFzdFBvcyksdGhpcy5fZmlyZUV2ZW50KCJkcmFnIix0KSx0aGlzLl9maXJlRXZlbnQoIm1vdmUiLHQpLHRoaXMuX3ByZXZQb3M9dGhpcy5fbGFzdFBvcyxkZWxldGUgdGhpcy5fbGFzdE1vdmVFdmVudH19LF9uLnByb3RvdHlwZS5fb25Nb3VzZVVwPWZ1bmN0aW9uKHQpe2lmKDA9PT1yLm1vdXNlQnV0dG9uKHQpKXN3aXRjaCh0aGlzLl9zdGF0ZSl7Y2FzZSJhY3RpdmUiOnRoaXMuX3N0YXRlPSJlbmFibGVkIixyLnN1cHByZXNzQ2xpY2soKSx0aGlzLl91bmJpbmQoKSx0aGlzLl9kZWFjdGl2YXRlKCksdGhpcy5faW5lcnRpYWxQYW4odCk7YnJlYWs7Y2FzZSJwZW5kaW5nIjp0aGlzLl9zdGF0ZT0iZW5hYmxlZCIsdGhpcy5fdW5iaW5kKCl9fSxfbi5wcm90b3R5cGUuX29uVG91Y2hFbmQ9ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuX3N0YXRlKXtjYXNlImFjdGl2ZSI6dGhpcy5fc3RhdGU9ImVuYWJsZWQiLHRoaXMuX3VuYmluZCgpLHRoaXMuX2RlYWN0aXZhdGUoKSx0aGlzLl9pbmVydGlhbFBhbih0KTticmVhaztjYXNlInBlbmRpbmciOnRoaXMuX3N0YXRlPSJlbmFibGVkIix0aGlzLl91bmJpbmQoKX19LF9uLnByb3RvdHlwZS5fb25CbHVyPWZ1bmN0aW9uKHQpe3N3aXRjaCh0aGlzLl9zdGF0ZSl7Y2FzZSJhY3RpdmUiOnRoaXMuX3N0YXRlPSJlbmFibGVkIix0aGlzLl91bmJpbmQoKSx0aGlzLl9kZWFjdGl2YXRlKCksdGhpcy5fZmlyZUV2ZW50KCJkcmFnZW5kIix0KSx0aGlzLl9maXJlRXZlbnQoIm1vdmVlbmQiLHQpO2JyZWFrO2Nhc2UicGVuZGluZyI6dGhpcy5fc3RhdGU9ImVuYWJsZWQiLHRoaXMuX3VuYmluZCgpfX0sX24ucHJvdG90eXBlLl91bmJpbmQ9ZnVuY3Rpb24oKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3ZlLHtjYXB0dXJlOiEwfSksci5yZW1vdmVFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3VtZW50LCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXApLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LndpbmRvdywiYmx1ciIsdGhpcy5fb25CbHVyKX0sX24ucHJvdG90eXBlLl9kZWFjdGl2YXRlPWZ1bmN0aW9uKCl7dGhpcy5fZnJhbWVJZCYmKHRoaXMuX21hcC5fY2FuY2VsUmVuZGVyRnJhbWUodGhpcy5fZnJhbWVJZCksdGhpcy5fZnJhbWVJZD1udWxsKSxkZWxldGUgdGhpcy5fbGFzdE1vdmVFdmVudCxkZWxldGUgdGhpcy5fc3RhcnRQb3MsZGVsZXRlIHRoaXMuX3ByZXZQb3MsZGVsZXRlIHRoaXMuX21vdXNlRG93blBvcyxkZWxldGUgdGhpcy5fbGFzdFBvc30sX24ucHJvdG90eXBlLl9pbmVydGlhbFBhbj1mdW5jdGlvbih0KXt0aGlzLl9maXJlRXZlbnQoImRyYWdlbmQiLHQpLHRoaXMuX2RyYWluSW5lcnRpYUJ1ZmZlcigpO3ZhciBlPXRoaXMuX2luZXJ0aWE7aWYoZS5sZW5ndGg8Mil0aGlzLl9maXJlRXZlbnQoIm1vdmVlbmQiLHQpO2Vsc2V7dmFyIHI9ZVtlLmxlbmd0aC0xXSxuPWVbMF0sYT1yWzFdLnN1YihuWzFdKSxpPShyWzBdLW5bMF0pLzFlMztpZigwPT09aXx8clsxXS5lcXVhbHMoblsxXSkpdGhpcy5fZmlyZUV2ZW50KCJtb3ZlZW5kIix0KTtlbHNle3ZhciBvPWEubXVsdCguMy9pKSxzPW8ubWFnKCk7cz4xNDAwJiYocz0xNDAwLG8uX3VuaXQoKS5fbXVsdChzKSk7dmFyIGw9cy83NTAsYz1vLm11bHQoLWwvMik7dGhpcy5fbWFwLnBhbkJ5KGMse2R1cmF0aW9uOjFlMypsLGVhc2luZzpibixub01vdmVTdGFydDohMH0se29yaWdpbmFsRXZlbnQ6dH0pfX19LF9uLnByb3RvdHlwZS5fZmlyZUV2ZW50PWZ1bmN0aW9uKGUscil7cmV0dXJuIHRoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KGUscj97b3JpZ2luYWxFdmVudDpyfTp7fSkpfSxfbi5wcm90b3R5cGUuX2RyYWluSW5lcnRpYUJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLl9pbmVydGlhLHI9dC5icm93c2VyLm5vdygpO2UubGVuZ3RoPjAmJnItZVswXVswXT4xNjA7KWUuc2hpZnQoKX07dmFyIHduPWZ1bmN0aW9uKGUpe3RoaXMuX21hcD1lLHRoaXMuX2VsPWUuZ2V0Q2FudmFzQ29udGFpbmVyKCksdC5iaW5kQWxsKFsiX29uS2V5RG93biJdLHRoaXMpfTtmdW5jdGlvbiBrbih0KXtyZXR1cm4gdCooMi10KX13bi5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfSx3bi5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKXx8KHRoaXMuX2VsLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uS2V5RG93biwhMSksdGhpcy5fZW5hYmxlZD0hMCl9LHduLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKSYmKHRoaXMuX2VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uS2V5RG93biksdGhpcy5fZW5hYmxlZD0hMSl9LHduLnByb3RvdHlwZS5fb25LZXlEb3duPWZ1bmN0aW9uKHQpe2lmKCEodC5hbHRLZXl8fHQuY3RybEtleXx8dC5tZXRhS2V5KSl7dmFyIGU9MCxyPTAsbj0wLGE9MCxpPTA7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSA2MTpjYXNlIDEwNzpjYXNlIDE3MTpjYXNlIDE4NzplPTE7YnJlYWs7Y2FzZSAxODk6Y2FzZSAxMDk6Y2FzZSAxNzM6ZT0tMTticmVhaztjYXNlIDM3OnQuc2hpZnRLZXk/cj0tMToodC5wcmV2ZW50RGVmYXVsdCgpLGE9LTEpO2JyZWFrO2Nhc2UgMzk6dC5zaGlmdEtleT9yPTE6KHQucHJldmVudERlZmF1bHQoKSxhPTEpO2JyZWFrO2Nhc2UgMzg6dC5zaGlmdEtleT9uPTE6KHQucHJldmVudERlZmF1bHQoKSxpPS0xKTticmVhaztjYXNlIDQwOnQuc2hpZnRLZXk/bj0tMTooaT0xLHQucHJldmVudERlZmF1bHQoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59dmFyIG89dGhpcy5fbWFwLHM9by5nZXRab29tKCksbD17ZHVyYXRpb246MzAwLGRlbGF5RW5kRXZlbnRzOjUwMCxlYXNpbmc6a24sem9vbTplP01hdGgucm91bmQocykrZSoodC5zaGlmdEtleT8yOjEpOnMsYmVhcmluZzpvLmdldEJlYXJpbmcoKSsxNSpyLHBpdGNoOm8uZ2V0UGl0Y2goKSsxMCpuLG9mZnNldDpbMTAwKi1hLDEwMCotaV0sY2VudGVyOm8uZ2V0Q2VudGVyKCl9O28uZWFzZVRvKGwse29yaWdpbmFsRXZlbnQ6dH0pfX07dmFyIFRuPWZ1bmN0aW9uKGUpe3RoaXMuX21hcD1lLHQuYmluZEFsbChbIl9vbkRibENsaWNrIiwiX29uWm9vbUVuZCJdLHRoaXMpfTtUbi5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfSxUbi5wcm90b3R5cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2FjdGl2ZX0sVG4ucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCl8fCh0aGlzLl9lbmFibGVkPSEwKX0sVG4ucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpJiYodGhpcy5fZW5hYmxlZD0hMSl9LFRuLnByb3RvdHlwZS5vblRvdWNoU3RhcnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLmlzRW5hYmxlZCgpJiYhKHQucG9pbnRzLmxlbmd0aD4xKSlpZih0aGlzLl90YXBwZWQpe3ZhciByPXQucG9pbnRzWzBdLG49dGhpcy5fdGFwcGVkUG9pbnQ7aWYobiYmbi5kaXN0KHIpPD0zMCl7dC5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7dmFyIGE9ZnVuY3Rpb24oKXtlLl90YXBwZWQmJmUuX3pvb20odCksZS5fbWFwLm9mZigidG91Y2hjYW5jZWwiLGkpLGUuX3Jlc2V0VGFwcGVkKCl9LGk9ZnVuY3Rpb24oKXtlLl9tYXAub2ZmKCJ0b3VjaGVuZCIsYSksZS5fcmVzZXRUYXBwZWQoKX07dGhpcy5fbWFwLm9uY2UoInRvdWNoZW5kIixhKSx0aGlzLl9tYXAub25jZSgidG91Y2hjYW5jZWwiLGkpfWVsc2UgdGhpcy5fcmVzZXRUYXBwZWQoKX1lbHNlIHRoaXMuX3RhcHBlZFBvaW50PXQucG9pbnRzWzBdLHRoaXMuX3RhcHBlZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5fdGFwcGVkPW51bGwsZS5fdGFwcGVkUG9pbnQ9bnVsbH0sMzAwKX0sVG4ucHJvdG90eXBlLl9yZXNldFRhcHBlZD1mdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl90YXBwZWQpLHRoaXMuX3RhcHBlZD1udWxsLHRoaXMuX3RhcHBlZFBvaW50PW51bGx9LFRuLnByb3RvdHlwZS5vbkRibENsaWNrPWZ1bmN0aW9uKHQpe3RoaXMuaXNFbmFibGVkKCkmJih0Lm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKSx0aGlzLl96b29tKHQpKX0sVG4ucHJvdG90eXBlLl96b29tPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZT0hMCx0aGlzLl9tYXAub24oInpvb21lbmQiLHRoaXMuX29uWm9vbUVuZCksdGhpcy5fbWFwLnpvb21Ubyh0aGlzLl9tYXAuZ2V0Wm9vbSgpKyh0Lm9yaWdpbmFsRXZlbnQuc2hpZnRLZXk/LTE6MSkse2Fyb3VuZDp0LmxuZ0xhdH0sdCl9LFRuLnByb3RvdHlwZS5fb25ab29tRW5kPWZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZlPSExLHRoaXMuX21hcC5vZmYoInpvb21lbmQiLHRoaXMuX29uWm9vbUVuZCl9O3ZhciBNbj10LmJlemllcigwLDAsLjE1LDEpLEFuPWZ1bmN0aW9uKGUpe3RoaXMuX21hcD1lLHRoaXMuX2VsPWUuZ2V0Q2FudmFzQ29udGFpbmVyKCksdC5iaW5kQWxsKFsiX29uTW92ZSIsIl9vbkVuZCIsIl9vblRvdWNoRnJhbWUiXSx0aGlzKX07QW4ucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH0sQW4ucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbih0KXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZWwuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtdG91Y2gtem9vbS1yb3RhdGUiKSx0aGlzLl9lbmFibGVkPSEwLHRoaXMuX2Fyb3VuZENlbnRlcj0hIXQmJiJjZW50ZXIiPT09dC5hcm91bmQpfSxBbi5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9lbC5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC10b3VjaC16b29tLXJvdGF0ZSIpLHRoaXMuX2VuYWJsZWQ9ITEpfSxBbi5wcm90b3R5cGUuZGlzYWJsZVJvdGF0aW9uPWZ1bmN0aW9uKCl7dGhpcy5fcm90YXRpb25EaXNhYmxlZD0hMH0sQW4ucHJvdG90eXBlLmVuYWJsZVJvdGF0aW9uPWZ1bmN0aW9uKCl7dGhpcy5fcm90YXRpb25EaXNhYmxlZD0hMX0sQW4ucHJvdG90eXBlLm9uU3RhcnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5pc0VuYWJsZWQoKSYmMj09PWUudG91Y2hlcy5sZW5ndGgpe3ZhciBuPXIubW91c2VQb3ModGhpcy5fZWwsZS50b3VjaGVzWzBdKSxhPXIubW91c2VQb3ModGhpcy5fZWwsZS50b3VjaGVzWzFdKSxpPW4uYWRkKGEpLmRpdigyKTt0aGlzLl9zdGFydFZlYz1uLnN1YihhKSx0aGlzLl9zdGFydEFyb3VuZD10aGlzLl9tYXAudHJhbnNmb3JtLnBvaW50TG9jYXRpb24oaSksdGhpcy5fZ2VzdHVyZUludGVudD12b2lkIDAsdGhpcy5faW5lcnRpYT1bXSxyLmFkZEV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlLHtwYXNzaXZlOiExfSksci5hZGRFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3VtZW50LCJ0b3VjaGVuZCIsdGhpcy5fb25FbmQpfX0sQW4ucHJvdG90eXBlLl9nZXRUb3VjaEV2ZW50RGF0YT1mdW5jdGlvbih0KXt2YXIgZT1yLm1vdXNlUG9zKHRoaXMuX2VsLHQudG91Y2hlc1swXSksbj1yLm1vdXNlUG9zKHRoaXMuX2VsLHQudG91Y2hlc1sxXSksYT1lLnN1YihuKTtyZXR1cm57dmVjOmEsY2VudGVyOmUuYWRkKG4pLmRpdigyKSxzY2FsZTphLm1hZygpL3RoaXMuX3N0YXJ0VmVjLm1hZygpLGJlYXJpbmc6dGhpcy5fcm90YXRpb25EaXNhYmxlZD8wOjE4MCphLmFuZ2xlV2l0aCh0aGlzLl9zdGFydFZlYykvTWF0aC5QSX19LEFuLnByb3RvdHlwZS5fb25Nb3ZlPWZ1bmN0aW9uKGUpe2lmKDI9PT1lLnRvdWNoZXMubGVuZ3RoKXt2YXIgcj10aGlzLl9nZXRUb3VjaEV2ZW50RGF0YShlKSxuPXIudmVjLGE9ci5zY2FsZSxpPXIuYmVhcmluZztpZighdGhpcy5fZ2VzdHVyZUludGVudCl7dmFyIG89dGhpcy5fcm90YXRpb25EaXNhYmxlZCYmMSE9PWF8fE1hdGguYWJzKDEtYSk+LjE1O01hdGguYWJzKGkpPjEwP3RoaXMuX2dlc3R1cmVJbnRlbnQ9InJvdGF0ZSI6byYmKHRoaXMuX2dlc3R1cmVJbnRlbnQ9Inpvb20iKSx0aGlzLl9nZXN0dXJlSW50ZW50JiYodGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQodGhpcy5fZ2VzdHVyZUludGVudCsic3RhcnQiLHtvcmlnaW5hbEV2ZW50OmV9KSksdGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVzdGFydCIse29yaWdpbmFsRXZlbnQ6ZX0pKSx0aGlzLl9zdGFydFZlYz1uKX10aGlzLl9sYXN0VG91Y2hFdmVudD1lLHRoaXMuX2ZyYW1lSWR8fCh0aGlzLl9mcmFtZUlkPXRoaXMuX21hcC5fcmVxdWVzdFJlbmRlckZyYW1lKHRoaXMuX29uVG91Y2hGcmFtZSkpLGUucHJldmVudERlZmF1bHQoKX19LEFuLnByb3RvdHlwZS5fb25Ub3VjaEZyYW1lPWZ1bmN0aW9uKCl7dGhpcy5fZnJhbWVJZD1udWxsO3ZhciBlPXRoaXMuX2dlc3R1cmVJbnRlbnQ7aWYoZSl7dmFyIHI9dGhpcy5fbWFwLnRyYW5zZm9ybTt0aGlzLl9zdGFydFNjYWxlfHwodGhpcy5fc3RhcnRTY2FsZT1yLnNjYWxlLHRoaXMuX3N0YXJ0QmVhcmluZz1yLmJlYXJpbmcpO3ZhciBuPXRoaXMuX2dldFRvdWNoRXZlbnREYXRhKHRoaXMuX2xhc3RUb3VjaEV2ZW50KSxhPW4uY2VudGVyLGk9bi5iZWFyaW5nLG89bi5zY2FsZSxzPXIucG9pbnRMb2NhdGlvbihhKSxsPXIubG9jYXRpb25Qb2ludChzKTsicm90YXRlIj09PWUmJihyLmJlYXJpbmc9dGhpcy5fc3RhcnRCZWFyaW5nK2kpLHIuem9vbT1yLnNjYWxlWm9vbSh0aGlzLl9zdGFydFNjYWxlKm8pLHIuc2V0TG9jYXRpb25BdFBvaW50KHRoaXMuX3N0YXJ0QXJvdW5kLGwpLHRoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KGUse29yaWdpbmFsRXZlbnQ6dGhpcy5fbGFzdFRvdWNoRXZlbnR9KSksdGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQoIm1vdmUiLHtvcmlnaW5hbEV2ZW50OnRoaXMuX2xhc3RUb3VjaEV2ZW50fSkpLHRoaXMuX2RyYWluSW5lcnRpYUJ1ZmZlcigpLHRoaXMuX2luZXJ0aWEucHVzaChbdC5icm93c2VyLm5vdygpLG8sYV0pfX0sQW4ucHJvdG90eXBlLl9vbkVuZD1mdW5jdGlvbihlKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIodC53aW5kb3cuZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlLHtwYXNzaXZlOiExfSksci5yZW1vdmVFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3VtZW50LCJ0b3VjaGVuZCIsdGhpcy5fb25FbmQpO3ZhciBuPXRoaXMuX2dlc3R1cmVJbnRlbnQsYT10aGlzLl9zdGFydFNjYWxlO2lmKHRoaXMuX2ZyYW1lSWQmJih0aGlzLl9tYXAuX2NhbmNlbFJlbmRlckZyYW1lKHRoaXMuX2ZyYW1lSWQpLHRoaXMuX2ZyYW1lSWQ9bnVsbCksZGVsZXRlIHRoaXMuX2dlc3R1cmVJbnRlbnQsZGVsZXRlIHRoaXMuX3N0YXJ0U2NhbGUsZGVsZXRlIHRoaXMuX3N0YXJ0QmVhcmluZyxkZWxldGUgdGhpcy5fbGFzdFRvdWNoRXZlbnQsbil7dGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQobisiZW5kIix7b3JpZ2luYWxFdmVudDplfSkpLHRoaXMuX2RyYWluSW5lcnRpYUJ1ZmZlcigpO3ZhciBpPXRoaXMuX2luZXJ0aWEsbz10aGlzLl9tYXA7aWYoaS5sZW5ndGg8MilvLnNuYXBUb05vcnRoKHt9LHtvcmlnaW5hbEV2ZW50OmV9KTtlbHNle3ZhciBzPWlbaS5sZW5ndGgtMV0sbD1pWzBdLGM9by50cmFuc2Zvcm0uc2NhbGVab29tKGEqc1sxXSksdT1vLnRyYW5zZm9ybS5zY2FsZVpvb20oYSpsWzFdKSxoPWMtdSxmPShzWzBdLWxbMF0pLzFlMyxwPXNbMl07aWYoMCE9PWYmJmMhPT11KXt2YXIgZD0uMTUqaC9mO01hdGguYWJzKGQpPjIuNSYmKGQ9ZD4wPzIuNTotMi41KTt2YXIgZz0xZTMqTWF0aC5hYnMoZC8oMTIqLjE1KSksdj1jK2QqZy8yZTM7djwwJiYodj0wKSxvLmVhc2VUbyh7em9vbTp2LGR1cmF0aW9uOmcsZWFzaW5nOk1uLGFyb3VuZDp0aGlzLl9hcm91bmRDZW50ZXI/by5nZXRDZW50ZXIoKTpvLnVucHJvamVjdChwKSxub01vdmVTdGFydDohMH0se29yaWdpbmFsRXZlbnQ6ZX0pfWVsc2Ugby5zbmFwVG9Ob3J0aCh7fSx7b3JpZ2luYWxFdmVudDplfSl9fX0sQW4ucHJvdG90eXBlLl9kcmFpbkluZXJ0aWFCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5faW5lcnRpYSxyPXQuYnJvd3Nlci5ub3coKTtlLmxlbmd0aD4yJiZyLWVbMF1bMF0+MTYwOyllLnNoaWZ0KCl9O3ZhciBTbj17c2Nyb2xsWm9vbTp2bixib3hab29tOm1uLGRyYWdSb3RhdGU6eG4sZHJhZ1BhbjpfbixrZXlib2FyZDp3bixkb3VibGVDbGlja1pvb206VG4sdG91Y2hab29tUm90YXRlOkFufSxFbj1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHIsbil7ZS5jYWxsKHRoaXMpLHRoaXMuX21vdmluZz0hMSx0aGlzLl96b29taW5nPSExLHRoaXMudHJhbnNmb3JtPXIsdGhpcy5fYmVhcmluZ1NuYXA9bi5iZWFyaW5nU25hcCx0LmJpbmRBbGwoWyJfcmVuZGVyRnJhbWVDYWxsYmFjayJdLHRoaXMpfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5nZXRDZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQuTG5nTGF0KHRoaXMudHJhbnNmb3JtLmNlbnRlci5sbmcsdGhpcy50cmFuc2Zvcm0uY2VudGVyLmxhdCl9LHIucHJvdG90eXBlLnNldENlbnRlcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmp1bXBUbyh7Y2VudGVyOnR9LGUpfSxyLnByb3RvdHlwZS5wYW5CeT1mdW5jdGlvbihlLHIsbil7cmV0dXJuIGU9dC5Qb2ludC5jb252ZXJ0KGUpLm11bHQoLTEpLHRoaXMucGFuVG8odGhpcy50cmFuc2Zvcm0uY2VudGVyLHQuZXh0ZW5kKHtvZmZzZXQ6ZX0sciksbil9LHIucHJvdG90eXBlLnBhblRvPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdGhpcy5lYXNlVG8odC5leHRlbmQoe2NlbnRlcjplfSxyKSxuKX0sci5wcm90b3R5cGUuZ2V0Wm9vbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyYW5zZm9ybS56b29tfSxyLnByb3RvdHlwZS5zZXRab29tPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuanVtcFRvKHt6b29tOnR9LGUpLHRoaXN9LHIucHJvdG90eXBlLnpvb21Ubz1mdW5jdGlvbihlLHIsbil7cmV0dXJuIHRoaXMuZWFzZVRvKHQuZXh0ZW5kKHt6b29tOmV9LHIpLG4pfSxyLnByb3RvdHlwZS56b29tSW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy56b29tVG8odGhpcy5nZXRab29tKCkrMSx0LGUpLHRoaXN9LHIucHJvdG90eXBlLnpvb21PdXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy56b29tVG8odGhpcy5nZXRab29tKCktMSx0LGUpLHRoaXN9LHIucHJvdG90eXBlLmdldEJlYXJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uYmVhcmluZ30sci5wcm90b3R5cGUuc2V0QmVhcmluZz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmp1bXBUbyh7YmVhcmluZzp0fSxlKSx0aGlzfSxyLnByb3RvdHlwZS5yb3RhdGVUbz1mdW5jdGlvbihlLHIsbil7cmV0dXJuIHRoaXMuZWFzZVRvKHQuZXh0ZW5kKHtiZWFyaW5nOmV9LHIpLG4pfSxyLnByb3RvdHlwZS5yZXNldE5vcnRoPWZ1bmN0aW9uKGUscil7cmV0dXJuIHRoaXMucm90YXRlVG8oMCx0LmV4dGVuZCh7ZHVyYXRpb246MWUzfSxlKSxyKSx0aGlzfSxyLnByb3RvdHlwZS5yZXNldE5vcnRoUGl0Y2g9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdGhpcy5lYXNlVG8odC5leHRlbmQoe2JlYXJpbmc6MCxwaXRjaDowLGR1cmF0aW9uOjFlM30sZSksciksdGhpc30sci5wcm90b3R5cGUuc25hcFRvTm9ydGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5hYnModGhpcy5nZXRCZWFyaW5nKCkpPHRoaXMuX2JlYXJpbmdTbmFwP3RoaXMucmVzZXROb3J0aCh0LGUpOnRoaXN9LHIucHJvdG90eXBlLmdldFBpdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLnBpdGNofSxyLnByb3RvdHlwZS5zZXRQaXRjaD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmp1bXBUbyh7cGl0Y2g6dH0sZSksdGhpc30sci5wcm90b3R5cGUuY2FtZXJhRm9yQm91bmRzPWZ1bmN0aW9uKGUscil7cmV0dXJuIGU9dC5MbmdMYXRCb3VuZHMuY29udmVydChlKSx0aGlzLl9jYW1lcmFGb3JCb3hBbmRCZWFyaW5nKGUuZ2V0Tm9ydGhXZXN0KCksZS5nZXRTb3V0aEVhc3QoKSwwLHIpfSxyLnByb3RvdHlwZS5fY2FtZXJhRm9yQm94QW5kQmVhcmluZz1mdW5jdGlvbihlLHIsbixhKXtpZigibnVtYmVyIj09dHlwZW9mKGE9dC5leHRlbmQoe3BhZGRpbmc6e3RvcDowLGJvdHRvbTowLHJpZ2h0OjAsbGVmdDowfSxvZmZzZXQ6WzAsMF0sbWF4Wm9vbTp0aGlzLnRyYW5zZm9ybS5tYXhab29tfSxhKSkucGFkZGluZyl7dmFyIGk9YS5wYWRkaW5nO2EucGFkZGluZz17dG9wOmksYm90dG9tOmkscmlnaHQ6aSxsZWZ0Oml9fWlmKHQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGEucGFkZGluZykuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6MH0pLFsiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwidG9wIl0pKXt2YXIgbz10aGlzLnRyYW5zZm9ybSxzPW8ucHJvamVjdCh0LkxuZ0xhdC5jb252ZXJ0KGUpKSxsPW8ucHJvamVjdCh0LkxuZ0xhdC5jb252ZXJ0KHIpKSxjPXMucm90YXRlKC1uKk1hdGguUEkvMTgwKSx1PWwucm90YXRlKC1uKk1hdGguUEkvMTgwKSxoPW5ldyB0LlBvaW50KE1hdGgubWF4KGMueCx1LngpLE1hdGgubWF4KGMueSx1LnkpKSxmPW5ldyB0LlBvaW50KE1hdGgubWluKGMueCx1LngpLE1hdGgubWluKGMueSx1LnkpKSxwPWguc3ViKGYpLGQ9KG8ud2lkdGgtYS5wYWRkaW5nLmxlZnQtYS5wYWRkaW5nLnJpZ2h0KS9wLngsZz0oby5oZWlnaHQtYS5wYWRkaW5nLnRvcC1hLnBhZGRpbmcuYm90dG9tKS9wLnk7aWYoIShnPDB8fGQ8MCkpe3ZhciB2PU1hdGgubWluKG8uc2NhbGVab29tKG8uc2NhbGUqTWF0aC5taW4oZCxnKSksYS5tYXhab29tKSxtPXQuUG9pbnQuY29udmVydChhLm9mZnNldCkseT0oYS5wYWRkaW5nLmxlZnQtYS5wYWRkaW5nLnJpZ2h0KS8yLHg9KGEucGFkZGluZy50b3AtYS5wYWRkaW5nLmJvdHRvbSkvMixiPW5ldyB0LlBvaW50KG0ueCt5LG0ueSt4KS5tdWx0KG8uc2NhbGUvby56b29tU2NhbGUodikpO3JldHVybntjZW50ZXI6by51bnByb2plY3Qocy5hZGQobCkuZGl2KDIpLnN1YihiKSksem9vbTp2LGJlYXJpbmc6bn19dC53YXJuT25jZSgiTWFwIGNhbm5vdCBmaXQgd2l0aGluIGNhbnZhcyB3aXRoIHRoZSBnaXZlbiBib3VuZHMsIHBhZGRpbmcsIGFuZC9vciBvZmZzZXQuIil9ZWxzZSB0Lndhcm5PbmNlKCJvcHRpb25zLnBhZGRpbmcgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciwgb3IgYW4gT2JqZWN0IHdpdGgga2V5cyAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnLCAndG9wJyIpfSxyLnByb3RvdHlwZS5maXRCb3VuZHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLl9maXRJbnRlcm5hbCh0aGlzLmNhbWVyYUZvckJvdW5kcyh0LGUpLGUscil9LHIucHJvdG90eXBlLmZpdFNjcmVlbkNvb3JkaW5hdGVzPWZ1bmN0aW9uKGUscixuLGEsaSl7cmV0dXJuIHRoaXMuX2ZpdEludGVybmFsKHRoaXMuX2NhbWVyYUZvckJveEFuZEJlYXJpbmcodGhpcy50cmFuc2Zvcm0ucG9pbnRMb2NhdGlvbih0LlBvaW50LmNvbnZlcnQoZSkpLHRoaXMudHJhbnNmb3JtLnBvaW50TG9jYXRpb24odC5Qb2ludC5jb252ZXJ0KHIpKSxuLGEpLGEsaSl9LHIucHJvdG90eXBlLl9maXRJbnRlcm5hbD1mdW5jdGlvbihlLHIsbil7cmV0dXJuIGU/KHI9dC5leHRlbmQoZSxyKSkubGluZWFyP3RoaXMuZWFzZVRvKHIsbik6dGhpcy5mbHlUbyhyLG4pOnRoaXN9LHIucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihlLHIpe3RoaXMuc3RvcCgpO3ZhciBuPXRoaXMudHJhbnNmb3JtLGE9ITEsaT0hMSxvPSExO3JldHVybiJ6b29tImluIGUmJm4uem9vbSE9PStlLnpvb20mJihhPSEwLG4uem9vbT0rZS56b29tKSx2b2lkIDAhPT1lLmNlbnRlciYmKG4uY2VudGVyPXQuTG5nTGF0LmNvbnZlcnQoZS5jZW50ZXIpKSwiYmVhcmluZyJpbiBlJiZuLmJlYXJpbmchPT0rZS5iZWFyaW5nJiYoaT0hMCxuLmJlYXJpbmc9K2UuYmVhcmluZyksInBpdGNoImluIGUmJm4ucGl0Y2ghPT0rZS5waXRjaCYmKG89ITAsbi5waXRjaD0rZS5waXRjaCksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJtb3Zlc3RhcnQiLHIpKS5maXJlKG5ldyB0LkV2ZW50KCJtb3ZlIixyKSksYSYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJ6b29tc3RhcnQiLHIpKS5maXJlKG5ldyB0LkV2ZW50KCJ6b29tIixyKSkuZmlyZShuZXcgdC5FdmVudCgiem9vbWVuZCIscikpLGkmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgicm90YXRlc3RhcnQiLHIpKS5maXJlKG5ldyB0LkV2ZW50KCJyb3RhdGUiLHIpKS5maXJlKG5ldyB0LkV2ZW50KCJyb3RhdGVlbmQiLHIpKSxvJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInBpdGNoc3RhcnQiLHIpKS5maXJlKG5ldyB0LkV2ZW50KCJwaXRjaCIscikpLmZpcmUobmV3IHQuRXZlbnQoInBpdGNoZW5kIixyKSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJtb3ZlZW5kIixyKSl9LHIucHJvdG90eXBlLmVhc2VUbz1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXM7dGhpcy5zdG9wKCksKCExPT09KGU9dC5leHRlbmQoe29mZnNldDpbMCwwXSxkdXJhdGlvbjo1MDAsZWFzaW5nOnQuZWFzZX0sZSkpLmFuaW1hdGV8fHQuYnJvd3Nlci5wcmVmZXJzUmVkdWNlZE1vdGlvbikmJihlLmR1cmF0aW9uPTApO3ZhciBhPXRoaXMudHJhbnNmb3JtLGk9dGhpcy5nZXRab29tKCksbz10aGlzLmdldEJlYXJpbmcoKSxzPXRoaXMuZ2V0UGl0Y2goKSxsPSJ6b29tImluIGU/K2Uuem9vbTppLGM9ImJlYXJpbmciaW4gZT90aGlzLl9ub3JtYWxpemVCZWFyaW5nKGUuYmVhcmluZyxvKTpvLHU9InBpdGNoImluIGU/K2UucGl0Y2g6cyxoPWEuY2VudGVyUG9pbnQuYWRkKHQuUG9pbnQuY29udmVydChlLm9mZnNldCkpLGY9YS5wb2ludExvY2F0aW9uKGgpLHA9dC5MbmdMYXQuY29udmVydChlLmNlbnRlcnx8Zik7dGhpcy5fbm9ybWFsaXplQ2VudGVyKHApO3ZhciBkLGcsdj1hLnByb2plY3QoZiksbT1hLnByb2plY3QocCkuc3ViKHYpLHk9YS56b29tU2NhbGUobC1pKTtyZXR1cm4gZS5hcm91bmQmJihkPXQuTG5nTGF0LmNvbnZlcnQoZS5hcm91bmQpLGc9YS5sb2NhdGlvblBvaW50KGQpKSx0aGlzLl96b29taW5nPWwhPT1pLHRoaXMuX3JvdGF0aW5nPW8hPT1jLHRoaXMuX3BpdGNoaW5nPXUhPT1zLHRoaXMuX3ByZXBhcmVFYXNlKHIsZS5ub01vdmVTdGFydCksY2xlYXJUaW1lb3V0KHRoaXMuX2Vhc2VFbmRUaW1lb3V0SUQpLHRoaXMuX2Vhc2UoZnVuY3Rpb24oZSl7aWYobi5fem9vbWluZyYmKGEuem9vbT10Lm51bWJlcihpLGwsZSkpLG4uX3JvdGF0aW5nJiYoYS5iZWFyaW5nPXQubnVtYmVyKG8sYyxlKSksbi5fcGl0Y2hpbmcmJihhLnBpdGNoPXQubnVtYmVyKHMsdSxlKSksZClhLnNldExvY2F0aW9uQXRQb2ludChkLGcpO2Vsc2V7dmFyIGY9YS56b29tU2NhbGUoYS56b29tLWkpLHA9bD5pP01hdGgubWluKDIseSk6TWF0aC5tYXgoLjUseSkseD1NYXRoLnBvdyhwLDEtZSksYj1hLnVucHJvamVjdCh2LmFkZChtLm11bHQoZSp4KSkubXVsdChmKSk7YS5zZXRMb2NhdGlvbkF0UG9pbnQoYS5yZW5kZXJXb3JsZENvcGllcz9iLndyYXAoKTpiLGgpfW4uX2ZpcmVNb3ZlRXZlbnRzKHIpfSxmdW5jdGlvbigpe2UuZGVsYXlFbmRFdmVudHM/bi5fZWFzZUVuZFRpbWVvdXRJRD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2FmdGVyRWFzZShyKX0sZS5kZWxheUVuZEV2ZW50cyk6bi5fYWZ0ZXJFYXNlKHIpfSxlKSx0aGlzfSxyLnByb3RvdHlwZS5fcHJlcGFyZUVhc2U9ZnVuY3Rpb24oZSxyKXt0aGlzLl9tb3Zpbmc9ITAscnx8dGhpcy5maXJlKG5ldyB0LkV2ZW50KCJtb3Zlc3RhcnQiLGUpKSx0aGlzLl96b29taW5nJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInpvb21zdGFydCIsZSkpLHRoaXMuX3JvdGF0aW5nJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInJvdGF0ZXN0YXJ0IixlKSksdGhpcy5fcGl0Y2hpbmcmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgicGl0Y2hzdGFydCIsZSkpfSxyLnByb3RvdHlwZS5fZmlyZU1vdmVFdmVudHM9ZnVuY3Rpb24oZSl7dGhpcy5maXJlKG5ldyB0LkV2ZW50KCJtb3ZlIixlKSksdGhpcy5fem9vbWluZyYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJ6b29tIixlKSksdGhpcy5fcm90YXRpbmcmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgicm90YXRlIixlKSksdGhpcy5fcGl0Y2hpbmcmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgicGl0Y2giLGUpKX0sci5wcm90b3R5cGUuX2FmdGVyRWFzZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLl96b29taW5nLG49dGhpcy5fcm90YXRpbmcsYT10aGlzLl9waXRjaGluZzt0aGlzLl9tb3Zpbmc9ITEsdGhpcy5fem9vbWluZz0hMSx0aGlzLl9yb3RhdGluZz0hMSx0aGlzLl9waXRjaGluZz0hMSxyJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInpvb21lbmQiLGUpKSxuJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInJvdGF0ZWVuZCIsZSkpLGEmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgicGl0Y2hlbmQiLGUpKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVlbmQiLGUpKX0sci5wcm90b3R5cGUuZmx5VG89ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzO2lmKHQuYnJvd3Nlci5wcmVmZXJzUmVkdWNlZE1vdGlvbil7dmFyIGE9dC5waWNrKGUsWyJjZW50ZXIiLCJ6b29tIiwiYmVhcmluZyIsInBpdGNoIiwiYXJvdW5kIl0pO3JldHVybiB0aGlzLmp1bXBUbyhhLHIpfXRoaXMuc3RvcCgpLGU9dC5leHRlbmQoe29mZnNldDpbMCwwXSxzcGVlZDoxLjIsY3VydmU6MS40MixlYXNpbmc6dC5lYXNlfSxlKTt2YXIgaT10aGlzLnRyYW5zZm9ybSxvPXRoaXMuZ2V0Wm9vbSgpLHM9dGhpcy5nZXRCZWFyaW5nKCksbD10aGlzLmdldFBpdGNoKCksYz0iem9vbSJpbiBlP3QuY2xhbXAoK2Uuem9vbSxpLm1pblpvb20saS5tYXhab29tKTpvLHU9ImJlYXJpbmciaW4gZT90aGlzLl9ub3JtYWxpemVCZWFyaW5nKGUuYmVhcmluZyxzKTpzLGg9InBpdGNoImluIGU/K2UucGl0Y2g6bCxmPWkuem9vbVNjYWxlKGMtbykscD1pLmNlbnRlclBvaW50LmFkZCh0LlBvaW50LmNvbnZlcnQoZS5vZmZzZXQpKSxkPWkucG9pbnRMb2NhdGlvbihwKSxnPXQuTG5nTGF0LmNvbnZlcnQoZS5jZW50ZXJ8fGQpO3RoaXMuX25vcm1hbGl6ZUNlbnRlcihnKTt2YXIgdj1pLnByb2plY3QoZCksbT1pLnByb2plY3QoZykuc3ViKHYpLHk9ZS5jdXJ2ZSx4PU1hdGgubWF4KGkud2lkdGgsaS5oZWlnaHQpLGI9eC9mLF89bS5tYWcoKTtpZigibWluWm9vbSJpbiBlKXt2YXIgdz10LmNsYW1wKE1hdGgubWluKGUubWluWm9vbSxvLGMpLGkubWluWm9vbSxpLm1heFpvb20pLGs9eC9pLnpvb21TY2FsZSh3LW8pO3k9TWF0aC5zcXJ0KGsvXyoyKX12YXIgVD15Knk7ZnVuY3Rpb24gTSh0KXt2YXIgZT0oYipiLXgqeCsodD8tMToxKSpUKlQqXypfKS8oMioodD9iOngpKlQqXyk7cmV0dXJuIE1hdGgubG9nKE1hdGguc3FydChlKmUrMSktZSl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4oTWF0aC5leHAodCktTWF0aC5leHAoLXQpKS8yfWZ1bmN0aW9uIFModCl7cmV0dXJuKE1hdGguZXhwKHQpK01hdGguZXhwKC10KSkvMn12YXIgRT1NKDApLEw9ZnVuY3Rpb24odCl7cmV0dXJuIFMoRSkvUyhFK3kqdCl9LEM9ZnVuY3Rpb24odCl7cmV0dXJuIHgqKChTKEUpKihBKGU9RSt5KnQpL1MoZSkpLUEoRSkpL1QpL187dmFyIGV9LFA9KE0oMSktRSkveTtpZihNYXRoLmFicyhfKTwxZS02fHwhaXNGaW5pdGUoUCkpe2lmKE1hdGguYWJzKHgtYik8MWUtNilyZXR1cm4gdGhpcy5lYXNlVG8oZSxyKTt2YXIgTz1iPHg/LTE6MTtQPU1hdGguYWJzKE1hdGgubG9nKGIveCkpL3ksQz1mdW5jdGlvbigpe3JldHVybiAwfSxMPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmV4cChPKnkqdCl9fWlmKCJkdXJhdGlvbiJpbiBlKWUuZHVyYXRpb249K2UuZHVyYXRpb247ZWxzZXt2YXIgej0ic2NyZWVuU3BlZWQiaW4gZT8rZS5zY3JlZW5TcGVlZC95OitlLnNwZWVkO2UuZHVyYXRpb249MWUzKlAven1yZXR1cm4gZS5tYXhEdXJhdGlvbiYmZS5kdXJhdGlvbj5lLm1heER1cmF0aW9uJiYoZS5kdXJhdGlvbj0wKSx0aGlzLl96b29taW5nPSEwLHRoaXMuX3JvdGF0aW5nPXMhPT11LHRoaXMuX3BpdGNoaW5nPWghPT1sLHRoaXMuX3ByZXBhcmVFYXNlKHIsITEpLHRoaXMuX2Vhc2UoZnVuY3Rpb24oZSl7dmFyIGE9ZSpQLGY9MS9MKGEpO2kuem9vbT0xPT09ZT9jOm8raS5zY2FsZVpvb20oZiksbi5fcm90YXRpbmcmJihpLmJlYXJpbmc9dC5udW1iZXIocyx1LGUpKSxuLl9waXRjaGluZyYmKGkucGl0Y2g9dC5udW1iZXIobCxoLGUpKTt2YXIgZD0xPT09ZT9nOmkudW5wcm9qZWN0KHYuYWRkKG0ubXVsdChDKGEpKSkubXVsdChmKSk7aS5zZXRMb2NhdGlvbkF0UG9pbnQoaS5yZW5kZXJXb3JsZENvcGllcz9kLndyYXAoKTpkLHApLG4uX2ZpcmVNb3ZlRXZlbnRzKHIpfSxmdW5jdGlvbigpe3JldHVybiBuLl9hZnRlckVhc2Uocil9LGUpLHRoaXN9LHIucHJvdG90eXBlLmlzRWFzaW5nPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lYXNlRnJhbWVJZH0sci5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe2lmKHRoaXMuX2Vhc2VGcmFtZUlkJiYodGhpcy5fY2FuY2VsUmVuZGVyRnJhbWUodGhpcy5fZWFzZUZyYW1lSWQpLGRlbGV0ZSB0aGlzLl9lYXNlRnJhbWVJZCxkZWxldGUgdGhpcy5fb25FYXNlRnJhbWUpLHRoaXMuX29uRWFzZUVuZCl7dmFyIHQ9dGhpcy5fb25FYXNlRW5kO2RlbGV0ZSB0aGlzLl9vbkVhc2VFbmQsdC5jYWxsKHRoaXMpfXJldHVybiB0aGlzfSxyLnByb3RvdHlwZS5fZWFzZT1mdW5jdGlvbihlLHIsbil7ITE9PT1uLmFuaW1hdGV8fDA9PT1uLmR1cmF0aW9uPyhlKDEpLHIoKSk6KHRoaXMuX2Vhc2VTdGFydD10LmJyb3dzZXIubm93KCksdGhpcy5fZWFzZU9wdGlvbnM9bix0aGlzLl9vbkVhc2VGcmFtZT1lLHRoaXMuX29uRWFzZUVuZD1yLHRoaXMuX2Vhc2VGcmFtZUlkPXRoaXMuX3JlcXVlc3RSZW5kZXJGcmFtZSh0aGlzLl9yZW5kZXJGcmFtZUNhbGxiYWNrKSl9LHIucHJvdG90eXBlLl9yZW5kZXJGcmFtZUNhbGxiYWNrPWZ1bmN0aW9uKCl7dmFyIGU9TWF0aC5taW4oKHQuYnJvd3Nlci5ub3coKS10aGlzLl9lYXNlU3RhcnQpL3RoaXMuX2Vhc2VPcHRpb25zLmR1cmF0aW9uLDEpO3RoaXMuX29uRWFzZUZyYW1lKHRoaXMuX2Vhc2VPcHRpb25zLmVhc2luZyhlKSksZTwxP3RoaXMuX2Vhc2VGcmFtZUlkPXRoaXMuX3JlcXVlc3RSZW5kZXJGcmFtZSh0aGlzLl9yZW5kZXJGcmFtZUNhbGxiYWNrKTp0aGlzLnN0b3AoKX0sci5wcm90b3R5cGUuX25vcm1hbGl6ZUJlYXJpbmc9ZnVuY3Rpb24oZSxyKXtlPXQud3JhcChlLC0xODAsMTgwKTt2YXIgbj1NYXRoLmFicyhlLXIpO3JldHVybiBNYXRoLmFicyhlLTM2MC1yKTxuJiYoZS09MzYwKSxNYXRoLmFicyhlKzM2MC1yKTxuJiYoZSs9MzYwKSxlfSxyLnByb3RvdHlwZS5fbm9ybWFsaXplQ2VudGVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHJhbnNmb3JtO2lmKGUucmVuZGVyV29ybGRDb3BpZXMmJiFlLmxuZ1JhbmdlKXt2YXIgcj10LmxuZy1lLmNlbnRlci5sbmc7dC5sbmcrPXI+MTgwPy0zNjA6cjwtMTgwPzM2MDowfX0scn0odC5FdmVudGVkKSxMbj1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5vcHRpb25zPWUsdC5iaW5kQWxsKFsiX3VwZGF0ZUVkaXRMaW5rIiwiX3VwZGF0ZURhdGEiLCJfdXBkYXRlQ29tcGFjdCJdLHRoaXMpfTtMbi5wcm90b3R5cGUuZ2V0RGVmYXVsdFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuImJvdHRvbS1yaWdodCJ9LExuLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5jb21wYWN0O3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXI9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwgbWFwYm94Z2wtY3RybC1hdHRyaWIiKSx0aGlzLl9pbm5lckNvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY3RybC1hdHRyaWItaW5uZXIiLHRoaXMuX2NvbnRhaW5lciksZSYmdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWNvbXBhY3QiKSx0aGlzLl91cGRhdGVBdHRyaWJ1dGlvbnMoKSx0aGlzLl91cGRhdGVFZGl0TGluaygpLHRoaXMuX21hcC5vbigic3R5bGVkYXRhIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub24oInNvdXJjZWRhdGEiLHRoaXMuX3VwZGF0ZURhdGEpLHRoaXMuX21hcC5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlRWRpdExpbmspLHZvaWQgMD09PWUmJih0aGlzLl9tYXAub24oInJlc2l6ZSIsdGhpcy5fdXBkYXRlQ29tcGFjdCksdGhpcy5fdXBkYXRlQ29tcGFjdCgpKSx0aGlzLl9jb250YWluZXJ9LExuLnByb3RvdHlwZS5vblJlbW92ZT1mdW5jdGlvbigpe3IucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fbWFwLm9mZigic3R5bGVkYXRhIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub2ZmKCJzb3VyY2VkYXRhIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub2ZmKCJtb3ZlZW5kIix0aGlzLl91cGRhdGVFZGl0TGluayksdGhpcy5fbWFwLm9mZigicmVzaXplIix0aGlzLl91cGRhdGVDb21wYWN0KSx0aGlzLl9tYXA9dm9pZCAwfSxMbi5wcm90b3R5cGUuX3VwZGF0ZUVkaXRMaW5rPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZWRpdExpbms7ZXx8KGU9dGhpcy5fZWRpdExpbms9dGhpcy5fY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5tYXBib3gtaW1wcm92ZS1tYXAiKSk7dmFyIHI9W3trZXk6Im93bmVyIix2YWx1ZTp0aGlzLnN0eWxlT3duZXJ9LHtrZXk6ImlkIix2YWx1ZTp0aGlzLnN0eWxlSWR9LHtrZXk6ImFjY2Vzc190b2tlbiIsdmFsdWU6dGhpcy5fbWFwLl9yZXF1ZXN0TWFuYWdlci5fY3VzdG9tQWNjZXNzVG9rZW58fHQuY29uZmlnLkFDQ0VTU19UT0tFTn1dO2lmKGUpe3ZhciBuPXIucmVkdWNlKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZS52YWx1ZSYmKHQrPWUua2V5KyI9IitlLnZhbHVlKyhuPHIubGVuZ3RoLTE/IiYiOiIiKSksdH0sIj8iKTtlLmhyZWY9dC5jb25maWcuRkVFREJBQ0tfVVJMKyIvIituKyh0aGlzLl9tYXAuX2hhc2g/dGhpcy5fbWFwLl9oYXNoLmdldEhhc2hTdHJpbmcoITApOiIiKSxlLnJlbD0ibm9vcGVuZXIgbm9mb2xsb3cifX0sTG4ucHJvdG90eXBlLl91cGRhdGVEYXRhPWZ1bmN0aW9uKHQpeyF0fHwibWV0YWRhdGEiIT09dC5zb3VyY2VEYXRhVHlwZSYmInN0eWxlIiE9PXQuZGF0YVR5cGV8fCh0aGlzLl91cGRhdGVBdHRyaWJ1dGlvbnMoKSx0aGlzLl91cGRhdGVFZGl0TGluaygpKX0sTG4ucHJvdG90eXBlLl91cGRhdGVBdHRyaWJ1dGlvbnM9ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXAuc3R5bGUpe3ZhciB0PVtdO2lmKHRoaXMub3B0aW9ucy5jdXN0b21BdHRyaWJ1dGlvbiYmKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLmN1c3RvbUF0dHJpYnV0aW9uKT90PXQuY29uY2F0KHRoaXMub3B0aW9ucy5jdXN0b21BdHRyaWJ1dGlvbi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0PyIiOnR9KSk6InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuY3VzdG9tQXR0cmlidXRpb24mJnQucHVzaCh0aGlzLm9wdGlvbnMuY3VzdG9tQXR0cmlidXRpb24pKSx0aGlzLl9tYXAuc3R5bGUuc3R5bGVzaGVldCl7dmFyIGU9dGhpcy5fbWFwLnN0eWxlLnN0eWxlc2hlZXQ7dGhpcy5zdHlsZU93bmVyPWUub3duZXIsdGhpcy5zdHlsZUlkPWUuaWR9dmFyIHI9dGhpcy5fbWFwLnN0eWxlLnNvdXJjZUNhY2hlcztmb3IodmFyIG4gaW4gcil7dmFyIGE9cltuXTtpZihhLnVzZWQpe3ZhciBpPWEuZ2V0U291cmNlKCk7aS5hdHRyaWJ1dGlvbiYmdC5pbmRleE9mKGkuYXR0cmlidXRpb24pPDAmJnQucHVzaChpLmF0dHJpYnV0aW9uKX19dC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoLWUubGVuZ3RofSk7dmFyIG89KHQ9dC5maWx0ZXIoZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49cisxO248dC5sZW5ndGg7bisrKWlmKHRbbl0uaW5kZXhPZihlKT49MClyZXR1cm4hMTtyZXR1cm4hMH0pKS5qb2luKCIgfCAiKTtvIT09dGhpcy5fYXR0cmliSFRNTCYmKHRoaXMuX2F0dHJpYkhUTUw9byx0Lmxlbmd0aD8odGhpcy5faW5uZXJDb250YWluZXIuaW5uZXJIVE1MPW8sdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWF0dHJpYi1lbXB0eSIpKTp0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtYXR0cmliLWVtcHR5IiksdGhpcy5fZWRpdExpbms9bnVsbCl9fSxMbi5wcm90b3R5cGUuX3VwZGF0ZUNvbXBhY3Q9ZnVuY3Rpb24oKXt0aGlzLl9tYXAuZ2V0Q2FudmFzQ29udGFpbmVyKCkub2Zmc2V0V2lkdGg8PTY0MD90aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY29tcGFjdCIpOnRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jb21wYWN0Iil9O3ZhciBDbj1mdW5jdGlvbigpe3QuYmluZEFsbChbIl91cGRhdGVMb2dvIl0sdGhpcyksdC5iaW5kQWxsKFsiX3VwZGF0ZUNvbXBhY3QiXSx0aGlzKX07Q24ucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY3RybCIpO3ZhciBlPXIuY3JlYXRlKCJhIiwibWFwYm94Z2wtY3RybC1sb2dvIik7cmV0dXJuIGUudGFyZ2V0PSJfYmxhbmsiLGUucmVsPSJub29wZW5lciBub2ZvbGxvdyIsZS5ocmVmPSJodHRwczovL3d3dy5tYXBib3guY29tLyIsZS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCJNYXBib3ggbG9nbyIpLGUuc2V0QXR0cmlidXRlKCJyZWwiLCJub29wZW5lciBub2ZvbGxvdyIpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChlKSx0aGlzLl9jb250YWluZXIuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5fbWFwLm9uKCJzb3VyY2VkYXRhIix0aGlzLl91cGRhdGVMb2dvKSx0aGlzLl91cGRhdGVMb2dvKCksdGhpcy5fbWFwLm9uKCJyZXNpemUiLHRoaXMuX3VwZGF0ZUNvbXBhY3QpLHRoaXMuX3VwZGF0ZUNvbXBhY3QoKSx0aGlzLl9jb250YWluZXJ9LENuLnByb3RvdHlwZS5vblJlbW92ZT1mdW5jdGlvbigpe3IucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fbWFwLm9mZigic291cmNlZGF0YSIsdGhpcy5fdXBkYXRlTG9nbyksdGhpcy5fbWFwLm9mZigicmVzaXplIix0aGlzLl91cGRhdGVDb21wYWN0KX0sQ24ucHJvdG90eXBlLmdldERlZmF1bHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiJib3R0b20tbGVmdCJ9LENuLnByb3RvdHlwZS5fdXBkYXRlTG9nbz1mdW5jdGlvbih0KXt0JiYibWV0YWRhdGEiIT09dC5zb3VyY2VEYXRhVHlwZXx8KHRoaXMuX2NvbnRhaW5lci5zdHlsZS5kaXNwbGF5PXRoaXMuX2xvZ29SZXF1aXJlZCgpPyJibG9jayI6Im5vbmUiKX0sQ24ucHJvdG90eXBlLl9sb2dvUmVxdWlyZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXAuc3R5bGUpe3ZhciB0PXRoaXMuX21hcC5zdHlsZS5zb3VyY2VDYWNoZXM7Zm9yKHZhciBlIGluIHQpaWYodFtlXS5nZXRTb3VyY2UoKS5tYXBib3hfbG9nbylyZXR1cm4hMDtyZXR1cm4hMX19LENuLnByb3RvdHlwZS5fdXBkYXRlQ29tcGFjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lci5jaGlsZHJlbjtpZih0Lmxlbmd0aCl7dmFyIGU9dFswXTt0aGlzLl9tYXAuZ2V0Q2FudmFzQ29udGFpbmVyKCkub2Zmc2V0V2lkdGg8MjUwP2UuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY29tcGFjdCIpOmUuY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY29tcGFjdCIpfX07dmFyIFBuPWZ1bmN0aW9uKCl7dGhpcy5fcXVldWU9W10sdGhpcy5faWQ9MCx0aGlzLl9jbGVhcmVkPSExLHRoaXMuX2N1cnJlbnRseVJ1bm5pbmc9ITF9O1BuLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU9Kyt0aGlzLl9pZDtyZXR1cm4gdGhpcy5fcXVldWUucHVzaCh7Y2FsbGJhY2s6dCxpZDplLGNhbmNlbGxlZDohMX0pLGV9LFBuLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2N1cnJlbnRseVJ1bm5pbmcscj0wLG49ZT90aGlzLl9xdWV1ZS5jb25jYXQoZSk6dGhpcy5fcXVldWU7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1uW3JdO2lmKGEuaWQ9PT10KXJldHVybiB2b2lkKGEuY2FuY2VsbGVkPSEwKX19LFBuLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jdXJyZW50bHlSdW5uaW5nPXRoaXMuX3F1ZXVlO3RoaXMuX3F1ZXVlPVtdO2Zvcih2YXIgZT0wLHI9dDtlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV07aWYoIW4uY2FuY2VsbGVkJiYobi5jYWxsYmFjaygpLHRoaXMuX2NsZWFyZWQpKWJyZWFrfXRoaXMuX2NsZWFyZWQ9ITEsdGhpcy5fY3VycmVudGx5UnVubmluZz0hMX0sUG4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fY3VycmVudGx5UnVubmluZyYmKHRoaXMuX2NsZWFyZWQ9ITApLHRoaXMuX3F1ZXVlPVtdfTt2YXIgT249dC53aW5kb3cuSFRNTEltYWdlRWxlbWVudCx6bj10LndpbmRvdy5IVE1MRWxlbWVudCxJbj17Y2VudGVyOlswLDBdLHpvb206MCxiZWFyaW5nOjAscGl0Y2g6MCxtaW5ab29tOjAsbWF4Wm9vbToyMixpbnRlcmFjdGl2ZTohMCxzY3JvbGxab29tOiEwLGJveFpvb206ITAsZHJhZ1JvdGF0ZTohMCxkcmFnUGFuOiEwLGtleWJvYXJkOiEwLGRvdWJsZUNsaWNrWm9vbTohMCx0b3VjaFpvb21Sb3RhdGU6ITAsYmVhcmluZ1NuYXA6NyxjbGlja1RvbGVyYW5jZTozLGhhc2g6ITEsYXR0cmlidXRpb25Db250cm9sOiEwLGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6ITEscHJlc2VydmVEcmF3aW5nQnVmZmVyOiExLHRyYWNrUmVzaXplOiEwLHJlbmRlcldvcmxkQ29waWVzOiEwLHJlZnJlc2hFeHBpcmVkVGlsZXM6ITAsbWF4VGlsZUNhY2hlU2l6ZTpudWxsLGxvY2FsSWRlb2dyYXBoRm9udEZhbWlseToic2Fucy1zZXJpZiIsdHJhbnNmb3JtUmVxdWVzdDpudWxsLGFjY2Vzc1Rva2VuOm51bGwsZmFkZUR1cmF0aW9uOjMwMCxjcm9zc1NvdXJjZUNvbGxpc2lvbnM6ITB9LERuPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGEoZSl7dmFyIGE9dGhpcztpZihudWxsIT0oZT10LmV4dGVuZCh7fSxJbixlKSkubWluWm9vbSYmbnVsbCE9ZS5tYXhab29tJiZlLm1pblpvb20+ZS5tYXhab29tKXRocm93IG5ldyBFcnJvcigibWF4Wm9vbSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5ab29tIik7dmFyIGk9bmV3IHVuKGUubWluWm9vbSxlLm1heFpvb20sZS5yZW5kZXJXb3JsZENvcGllcyk7aWYobi5jYWxsKHRoaXMsaSxlKSx0aGlzLl9pbnRlcmFjdGl2ZT1lLmludGVyYWN0aXZlLHRoaXMuX21heFRpbGVDYWNoZVNpemU9ZS5tYXhUaWxlQ2FjaGVTaXplLHRoaXMuX2ZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ9ZS5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0LHRoaXMuX3ByZXNlcnZlRHJhd2luZ0J1ZmZlcj1lLnByZXNlcnZlRHJhd2luZ0J1ZmZlcix0aGlzLl9hbnRpYWxpYXM9ZS5hbnRpYWxpYXMsdGhpcy5fdHJhY2tSZXNpemU9ZS50cmFja1Jlc2l6ZSx0aGlzLl9iZWFyaW5nU25hcD1lLmJlYXJpbmdTbmFwLHRoaXMuX3JlZnJlc2hFeHBpcmVkVGlsZXM9ZS5yZWZyZXNoRXhwaXJlZFRpbGVzLHRoaXMuX2ZhZGVEdXJhdGlvbj1lLmZhZGVEdXJhdGlvbix0aGlzLl9jcm9zc1NvdXJjZUNvbGxpc2lvbnM9ZS5jcm9zc1NvdXJjZUNvbGxpc2lvbnMsdGhpcy5fY3Jvc3NGYWRpbmdGYWN0b3I9MSx0aGlzLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmc9ZS5jb2xsZWN0UmVzb3VyY2VUaW1pbmcsdGhpcy5fcmVuZGVyVGFza1F1ZXVlPW5ldyBQbix0aGlzLl9jb250cm9scz1bXSx0aGlzLl9tYXBJZD10LnVuaXF1ZUlkKCksdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IHQuUmVxdWVzdE1hbmFnZXIoZS50cmFuc2Zvcm1SZXF1ZXN0LGUuYWNjZXNzVG9rZW4pLCJzdHJpbmciPT10eXBlb2YgZS5jb250YWluZXIpe2lmKHRoaXMuX2NvbnRhaW5lcj10LndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlLmNvbnRhaW5lciksIXRoaXMuX2NvbnRhaW5lcil0aHJvdyBuZXcgRXJyb3IoIkNvbnRhaW5lciAnIitlLmNvbnRhaW5lcisiJyBub3QgZm91bmQuIil9ZWxzZXtpZighKGUuY29udGFpbmVyIGluc3RhbmNlb2Ygem4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0eXBlOiAnY29udGFpbmVyJyBtdXN0IGJlIGEgU3RyaW5nIG9yIEhUTUxFbGVtZW50LiIpO3RoaXMuX2NvbnRhaW5lcj1lLmNvbnRhaW5lcn1pZihlLm1heEJvdW5kcyYmdGhpcy5zZXRNYXhCb3VuZHMoZS5tYXhCb3VuZHMpLHQuYmluZEFsbChbIl9vbldpbmRvd09ubGluZSIsIl9vbldpbmRvd1Jlc2l6ZSIsIl9jb250ZXh0TG9zdCIsIl9jb250ZXh0UmVzdG9yZWQiXSx0aGlzKSx0aGlzLl9zZXR1cENvbnRhaW5lcigpLHRoaXMuX3NldHVwUGFpbnRlcigpLHZvaWQgMD09PXRoaXMucGFpbnRlcil0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIFdlYkdMLiIpO3RoaXMub24oIm1vdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuX3VwZGF0ZSghMSl9KSx0aGlzLm9uKCJtb3ZlZW5kIixmdW5jdGlvbigpe3JldHVybiBhLl91cGRhdGUoITEpfSksdGhpcy5vbigiem9vbSIsZnVuY3Rpb24oKXtyZXR1cm4gYS5fdXBkYXRlKCEwKX0pLHZvaWQgMCE9PXQud2luZG93JiYodC53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigib25saW5lIix0aGlzLl9vbldpbmRvd09ubGluZSwhMSksdC53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9vbldpbmRvd1Jlc2l6ZSwhMSkpLGZ1bmN0aW9uKHQsZSl7dmFyIG49dC5nZXRDYW52YXNDb250YWluZXIoKSxhPW51bGwsaT0hMSxvPW51bGw7Zm9yKHZhciBzIGluIFNuKXRbc109bmV3IFNuW3NdKHQsZSksZS5pbnRlcmFjdGl2ZSYmZVtzXSYmdFtzXS5lbmFibGUoZVtzXSk7ci5hZGRFdmVudExpc3RlbmVyKG4sIm1vdXNlb3V0IixmdW5jdGlvbihlKXt0LmZpcmUobmV3IHBuKCJtb3VzZW91dCIsdCxlKSl9KSxyLmFkZEV2ZW50TGlzdGVuZXIobiwibW91c2Vkb3duIixmdW5jdGlvbihhKXtpPSEwLG89ci5tb3VzZVBvcyhuLGEpO3ZhciBzPW5ldyBwbigibW91c2Vkb3duIix0LGEpO3QuZmlyZShzKSxzLmRlZmF1bHRQcmV2ZW50ZWR8fChlLmludGVyYWN0aXZlJiYhdC5kb3VibGVDbGlja1pvb20uaXNBY3RpdmUoKSYmdC5zdG9wKCksdC5ib3hab29tLm9uTW91c2VEb3duKGEpLHQuYm94Wm9vbS5pc0FjdGl2ZSgpfHx0LmRyYWdQYW4uaXNBY3RpdmUoKXx8dC5kcmFnUm90YXRlLm9uTW91c2VEb3duKGEpLHQuYm94Wm9vbS5pc0FjdGl2ZSgpfHx0LmRyYWdSb3RhdGUuaXNBY3RpdmUoKXx8dC5kcmFnUGFuLm9uTW91c2VEb3duKGEpKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcihuLCJtb3VzZXVwIixmdW5jdGlvbihlKXt2YXIgcj10LmRyYWdSb3RhdGUuaXNBY3RpdmUoKTthJiYhciYmdC5maXJlKG5ldyBwbigiY29udGV4dG1lbnUiLHQsYSkpLGE9bnVsbCxpPSExLHQuZmlyZShuZXcgcG4oIm1vdXNldXAiLHQsZSkpfSksci5hZGRFdmVudExpc3RlbmVyKG4sIm1vdXNlbW92ZSIsZnVuY3Rpb24oZSl7aWYoIXQuZHJhZ1Bhbi5pc0FjdGl2ZSgpJiYhdC5kcmFnUm90YXRlLmlzQWN0aXZlKCkpe2Zvcih2YXIgcj1lLnRhcmdldDtyJiZyIT09bjspcj1yLnBhcmVudE5vZGU7cj09PW4mJnQuZmlyZShuZXcgcG4oIm1vdXNlbW92ZSIsdCxlKSl9fSksci5hZGRFdmVudExpc3RlbmVyKG4sIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSl7Zm9yKHZhciByPWUudGFyZ2V0O3ImJnIhPT1uOylyPXIucGFyZW50Tm9kZTtyPT09biYmdC5maXJlKG5ldyBwbigibW91c2VvdmVyIix0LGUpKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcihuLCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihyKXt2YXIgbj1uZXcgZG4oInRvdWNoc3RhcnQiLHQscik7dC5maXJlKG4pLG4uZGVmYXVsdFByZXZlbnRlZHx8KGUuaW50ZXJhY3RpdmUmJnQuc3RvcCgpLHQuYm94Wm9vbS5pc0FjdGl2ZSgpfHx0LmRyYWdSb3RhdGUuaXNBY3RpdmUoKXx8dC5kcmFnUGFuLm9uVG91Y2hTdGFydChyKSx0LnRvdWNoWm9vbVJvdGF0ZS5vblN0YXJ0KHIpLHQuZG91YmxlQ2xpY2tab29tLm9uVG91Y2hTdGFydChuKSl9LHtwYXNzaXZlOiExfSksci5hZGRFdmVudExpc3RlbmVyKG4sInRvdWNobW92ZSIsZnVuY3Rpb24oZSl7dC5maXJlKG5ldyBkbigidG91Y2htb3ZlIix0LGUpKX0se3Bhc3NpdmU6ITF9KSxyLmFkZEV2ZW50TGlzdGVuZXIobiwidG91Y2hlbmQiLGZ1bmN0aW9uKGUpe3QuZmlyZShuZXcgZG4oInRvdWNoZW5kIix0LGUpKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcihuLCJ0b3VjaGNhbmNlbCIsZnVuY3Rpb24oZSl7dC5maXJlKG5ldyBkbigidG91Y2hjYW5jZWwiLHQsZSkpfSksci5hZGRFdmVudExpc3RlbmVyKG4sImNsaWNrIixmdW5jdGlvbihhKXt2YXIgaT1yLm1vdXNlUG9zKG4sYSk7KCFvfHxpLmVxdWFscyhvKXx8aS5kaXN0KG8pPGUuY2xpY2tUb2xlcmFuY2UpJiZ0LmZpcmUobmV3IHBuKCJjbGljayIsdCxhKSl9KSxyLmFkZEV2ZW50TGlzdGVuZXIobiwiZGJsY2xpY2siLGZ1bmN0aW9uKGUpe3ZhciByPW5ldyBwbigiZGJsY2xpY2siLHQsZSk7dC5maXJlKHIpLHIuZGVmYXVsdFByZXZlbnRlZHx8dC5kb3VibGVDbGlja1pvb20ub25EYmxDbGljayhyKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcihuLCJjb250ZXh0bWVudSIsZnVuY3Rpb24oZSl7dmFyIHI9dC5kcmFnUm90YXRlLmlzQWN0aXZlKCk7aXx8cj9pJiYoYT1lKTp0LmZpcmUobmV3IHBuKCJjb250ZXh0bWVudSIsdCxlKSksKHQuZHJhZ1JvdGF0ZS5pc0VuYWJsZWQoKXx8dC5saXN0ZW5zKCJjb250ZXh0bWVudSIpKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSksci5hZGRFdmVudExpc3RlbmVyKG4sIndoZWVsIixmdW5jdGlvbihyKXtlLmludGVyYWN0aXZlJiZ0LnN0b3AoKTt2YXIgbj1uZXcgZ24oIndoZWVsIix0LHIpO3QuZmlyZShuKSxuLmRlZmF1bHRQcmV2ZW50ZWR8fHQuc2Nyb2xsWm9vbS5vbldoZWVsKHIpfSx7cGFzc2l2ZTohMX0pfSh0aGlzLGUpLHRoaXMuX2hhc2g9ZS5oYXNoJiYobmV3IGZuKS5hZGRUbyh0aGlzKSx0aGlzLl9oYXNoJiZ0aGlzLl9oYXNoLl9vbkhhc2hDaGFuZ2UoKXx8KHRoaXMuanVtcFRvKHtjZW50ZXI6ZS5jZW50ZXIsem9vbTplLnpvb20sYmVhcmluZzplLmJlYXJpbmcscGl0Y2g6ZS5waXRjaH0pLGUuYm91bmRzJiYodGhpcy5yZXNpemUoKSx0aGlzLmZpdEJvdW5kcyhlLmJvdW5kcyx0LmV4dGVuZCh7fSxlLmZpdEJvdW5kc09wdGlvbnMse2R1cmF0aW9uOjB9KSkpKSx0aGlzLnJlc2l6ZSgpLHRoaXMuX2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseT1lLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseSxlLnN0eWxlJiZ0aGlzLnNldFN0eWxlKGUuc3R5bGUse2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseTplLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseX0pLGUuYXR0cmlidXRpb25Db250cm9sJiZ0aGlzLmFkZENvbnRyb2wobmV3IExuKHtjdXN0b21BdHRyaWJ1dGlvbjplLmN1c3RvbUF0dHJpYnV0aW9ufSkpLHRoaXMuYWRkQ29udHJvbChuZXcgQ24sZS5sb2dvUG9zaXRpb24pLHRoaXMub24oInN0eWxlLmxvYWQiLGZ1bmN0aW9uKCl7YS50cmFuc2Zvcm0udW5tb2RpZmllZCYmYS5qdW1wVG8oYS5zdHlsZS5zdHlsZXNoZWV0KX0pLHRoaXMub24oImRhdGEiLGZ1bmN0aW9uKGUpe2EuX3VwZGF0ZSgic3R5bGUiPT09ZS5kYXRhVHlwZSksYS5maXJlKG5ldyB0LkV2ZW50KGUuZGF0YVR5cGUrImRhdGEiLGUpKX0pLHRoaXMub24oImRhdGFsb2FkaW5nIixmdW5jdGlvbihlKXthLmZpcmUobmV3IHQuRXZlbnQoZS5kYXRhVHlwZSsiZGF0YWxvYWRpbmciLGUpKX0pfW4mJihhLl9fcHJvdG9fXz1uKSxhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4mJm4ucHJvdG90eXBlKSxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO3ZhciBpPXtzaG93VGlsZUJvdW5kYXJpZXM6e2NvbmZpZ3VyYWJsZTohMH0sc2hvd0NvbGxpc2lvbkJveGVzOntjb25maWd1cmFibGU6ITB9LHNob3dPdmVyZHJhd0luc3BlY3Rvcjp7Y29uZmlndXJhYmxlOiEwfSxyZXBhaW50Ontjb25maWd1cmFibGU6ITB9LHZlcnRpY2VzOntjb25maWd1cmFibGU6ITB9LHZlcnNpb246e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiBhLnByb3RvdHlwZS5fZ2V0TWFwSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwSWR9LGEucHJvdG90eXBlLmFkZENvbnRyb2w9ZnVuY3Rpb24oZSxyKXtpZih2b2lkIDA9PT1yJiZlLmdldERlZmF1bHRQb3NpdGlvbiYmKHI9ZS5nZXREZWZhdWx0UG9zaXRpb24oKSksdm9pZCAwPT09ciYmKHI9InRvcC1yaWdodCIpLCFlfHwhZS5vbkFkZClyZXR1cm4gdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHRvIG1hcC5hZGRDb250cm9sKCkuIEFyZ3VtZW50IG11c3QgYmUgYSBjb250cm9sIHdpdGggb25BZGQgYW5kIG9uUmVtb3ZlIG1ldGhvZHMuIikpKTt2YXIgbj1lLm9uQWRkKHRoaXMpO3RoaXMuX2NvbnRyb2xzLnB1c2goZSk7dmFyIGE9dGhpcy5fY29udHJvbFBvc2l0aW9uc1tyXTtyZXR1cm4tMSE9PXIuaW5kZXhPZigiYm90dG9tIik/YS5pbnNlcnRCZWZvcmUobixhLmZpcnN0Q2hpbGQpOmEuYXBwZW5kQ2hpbGQobiksdGhpc30sYS5wcm90b3R5cGUucmVtb3ZlQ29udHJvbD1mdW5jdGlvbihlKXtpZighZXx8IWUub25SZW1vdmUpcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCB0byBtYXAucmVtb3ZlQ29udHJvbCgpLiBBcmd1bWVudCBtdXN0IGJlIGEgY29udHJvbCB3aXRoIG9uQWRkIGFuZCBvblJlbW92ZSBtZXRob2RzLiIpKSk7dmFyIHI9dGhpcy5fY29udHJvbHMuaW5kZXhPZihlKTtyZXR1cm4gcj4tMSYmdGhpcy5fY29udHJvbHMuc3BsaWNlKHIsMSksZS5vblJlbW92ZSh0aGlzKSx0aGlzfSxhLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5fY29udGFpbmVyRGltZW5zaW9ucygpLG49clswXSxhPXJbMV07cmV0dXJuIHRoaXMuX3Jlc2l6ZUNhbnZhcyhuLGEpLHRoaXMudHJhbnNmb3JtLnJlc2l6ZShuLGEpLHRoaXMucGFpbnRlci5yZXNpemUobixhKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVzdGFydCIsZSkpLmZpcmUobmV3IHQuRXZlbnQoIm1vdmUiLGUpKS5maXJlKG5ldyB0LkV2ZW50KCJyZXNpemUiLGUpKS5maXJlKG5ldyB0LkV2ZW50KCJtb3ZlZW5kIixlKSksdGhpc30sYS5wcm90b3R5cGUuZ2V0Qm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLmdldEJvdW5kcygpfSxhLnByb3RvdHlwZS5nZXRNYXhCb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uZ2V0TWF4Qm91bmRzKCl9LGEucHJvdG90eXBlLnNldE1heEJvdW5kcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uc2V0TWF4Qm91bmRzKHQuTG5nTGF0Qm91bmRzLmNvbnZlcnQoZSkpLHRoaXMuX3VwZGF0ZSgpfSxhLnByb3RvdHlwZS5zZXRNaW5ab29tPWZ1bmN0aW9uKHQpe2lmKCh0PW51bGw9PXQ/MDp0KT49MCYmdDw9dGhpcy50cmFuc2Zvcm0ubWF4Wm9vbSlyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWluWm9vbT10LHRoaXMuX3VwZGF0ZSgpLHRoaXMuZ2V0Wm9vbSgpPHQmJnRoaXMuc2V0Wm9vbSh0KSx0aGlzO3Rocm93IG5ldyBFcnJvcigibWluWm9vbSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgdGhlIGN1cnJlbnQgbWF4Wm9vbSwgaW5jbHVzaXZlIil9LGEucHJvdG90eXBlLmdldE1pblpvb209ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWluWm9vbX0sYS5wcm90b3R5cGUuc2V0TWF4Wm9vbT1mdW5jdGlvbih0KXtpZigodD1udWxsPT10PzIyOnQpPj10aGlzLnRyYW5zZm9ybS5taW5ab29tKXJldHVybiB0aGlzLnRyYW5zZm9ybS5tYXhab29tPXQsdGhpcy5fdXBkYXRlKCksdGhpcy5nZXRab29tKCk+dCYmdGhpcy5zZXRab29tKHQpLHRoaXM7dGhyb3cgbmV3IEVycm9yKCJtYXhab29tIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG1pblpvb20iKX0sYS5wcm90b3R5cGUuZ2V0UmVuZGVyV29ybGRDb3BpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ucmVuZGVyV29ybGRDb3BpZXN9LGEucHJvdG90eXBlLnNldFJlbmRlcldvcmxkQ29waWVzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5yZW5kZXJXb3JsZENvcGllcz10LHRoaXMuX3VwZGF0ZSgpfSxhLnByb3RvdHlwZS5nZXRNYXhab29tPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLm1heFpvb219LGEucHJvdG90eXBlLnByb2plY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLmxvY2F0aW9uUG9pbnQodC5MbmdMYXQuY29udmVydChlKSl9LGEucHJvdG90eXBlLnVucHJvamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ucG9pbnRMb2NhdGlvbih0LlBvaW50LmNvbnZlcnQoZSkpfSxhLnByb3RvdHlwZS5pc01vdmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3Zpbmd8fHRoaXMuZHJhZ1Bhbi5pc0FjdGl2ZSgpfHx0aGlzLmRyYWdSb3RhdGUuaXNBY3RpdmUoKXx8dGhpcy5zY3JvbGxab29tLmlzQWN0aXZlKCl9LGEucHJvdG90eXBlLmlzWm9vbWluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl96b29taW5nfHx0aGlzLnNjcm9sbFpvb20uaXNab29taW5nKCl9LGEucHJvdG90eXBlLmlzUm90YXRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm90YXRpbmd8fHRoaXMuZHJhZ1JvdGF0ZS5pc0FjdGl2ZSgpfSxhLnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcztpZih2b2lkIDA9PT1yKXJldHVybiBuLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsdCxlKTt2YXIgaT1mdW5jdGlvbigpe3ZhciBuO2lmKCJtb3VzZWVudGVyIj09PXR8fCJtb3VzZW92ZXIiPT09dCl7dmFyIGk9ITE7cmV0dXJue2xheWVyOmUsbGlzdGVuZXI6cixkZWxlZ2F0ZXM6e21vdXNlbW92ZTpmdW5jdGlvbihuKXt2YXIgbz1hLmdldExheWVyKGUpP2EucXVlcnlSZW5kZXJlZEZlYXR1cmVzKG4ucG9pbnQse2xheWVyczpbZV19KTpbXTtvLmxlbmd0aD9pfHwoaT0hMCxyLmNhbGwoYSxuZXcgcG4odCxhLG4ub3JpZ2luYWxFdmVudCx7ZmVhdHVyZXM6b30pKSk6aT0hMX0sbW91c2VvdXQ6ZnVuY3Rpb24oKXtpPSExfX19fWlmKCJtb3VzZWxlYXZlIj09PXR8fCJtb3VzZW91dCI9PT10KXt2YXIgbz0hMTtyZXR1cm57bGF5ZXI6ZSxsaXN0ZW5lcjpyLGRlbGVnYXRlczp7bW91c2Vtb3ZlOmZ1bmN0aW9uKG4peyhhLmdldExheWVyKGUpP2EucXVlcnlSZW5kZXJlZEZlYXR1cmVzKG4ucG9pbnQse2xheWVyczpbZV19KTpbXSkubGVuZ3RoP289ITA6byYmKG89ITEsci5jYWxsKGEsbmV3IHBuKHQsYSxuLm9yaWdpbmFsRXZlbnQpKSl9LG1vdXNlb3V0OmZ1bmN0aW9uKGUpe28mJihvPSExLHIuY2FsbChhLG5ldyBwbih0LGEsZS5vcmlnaW5hbEV2ZW50KSkpfX19fXJldHVybntsYXllcjplLGxpc3RlbmVyOnIsZGVsZWdhdGVzOihuPXt9LG5bdF09ZnVuY3Rpb24odCl7dmFyIG49YS5nZXRMYXllcihlKT9hLnF1ZXJ5UmVuZGVyZWRGZWF0dXJlcyh0LnBvaW50LHtsYXllcnM6W2VdfSk6W107bi5sZW5ndGgmJih0LmZlYXR1cmVzPW4sci5jYWxsKGEsdCksZGVsZXRlIHQuZmVhdHVyZXMpfSxuKX19KCk7Zm9yKHZhciBvIGluIHRoaXMuX2RlbGVnYXRlZExpc3RlbmVycz10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnN8fHt9LHRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1t0XT10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnNbdF18fFtdLHRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1t0XS5wdXNoKGkpLGkuZGVsZWdhdGVzKXRoaXMub24obyxpLmRlbGVnYXRlc1tvXSk7cmV0dXJuIHRoaXN9LGEucHJvdG90eXBlLm9mZj1mdW5jdGlvbih0LGUscil7aWYodm9pZCAwPT09cilyZXR1cm4gbi5wcm90b3R5cGUub2ZmLmNhbGwodGhpcyx0LGUpO2lmKHRoaXMuX2RlbGVnYXRlZExpc3RlbmVycyYmdGhpcy5fZGVsZWdhdGVkTGlzdGVuZXJzW3RdKWZvcih2YXIgYT10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnNbdF0saT0wO2k8YS5sZW5ndGg7aSsrKXt2YXIgbz1hW2ldO2lmKG8ubGF5ZXI9PT1lJiZvLmxpc3RlbmVyPT09cil7Zm9yKHZhciBzIGluIG8uZGVsZWdhdGVzKXRoaXMub2ZmKHMsby5kZWxlZ2F0ZXNbc10pO3JldHVybiBhLnNwbGljZShpLDEpLHRoaXN9fXJldHVybiB0aGlzfSxhLnByb3RvdHlwZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXM9ZnVuY3Rpb24oZSxyKXtpZighdGhpcy5zdHlsZSlyZXR1cm5bXTt2YXIgbjtpZih2b2lkIDAhPT1yfHx2b2lkIDA9PT1lfHxlIGluc3RhbmNlb2YgdC5Qb2ludHx8QXJyYXkuaXNBcnJheShlKXx8KHI9ZSxlPXZvaWQgMCkscj1yfHx7fSwoZT1lfHxbWzAsMF0sW3RoaXMudHJhbnNmb3JtLndpZHRoLHRoaXMudHJhbnNmb3JtLmhlaWdodF1dKWluc3RhbmNlb2YgdC5Qb2ludHx8Im51bWJlciI9PXR5cGVvZiBlWzBdKW49W3QuUG9pbnQuY29udmVydChlKV07ZWxzZXt2YXIgYT10LlBvaW50LmNvbnZlcnQoZVswXSksaT10LlBvaW50LmNvbnZlcnQoZVsxXSk7bj1bYSxuZXcgdC5Qb2ludChpLngsYS55KSxpLG5ldyB0LlBvaW50KGEueCxpLnkpLGFdfXJldHVybiB0aGlzLnN0eWxlLnF1ZXJ5UmVuZGVyZWRGZWF0dXJlcyhuLHIsdGhpcy50cmFuc2Zvcm0pfSxhLnByb3RvdHlwZS5xdWVyeVNvdXJjZUZlYXR1cmVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUucXVlcnlTb3VyY2VGZWF0dXJlcyh0LGUpfSxhLnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbihlLHIpe3JldHVybiExIT09KHI9dC5leHRlbmQoe30se2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseTp0aGlzLl9sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHl9LHIpKS5kaWZmJiZyLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseT09PXRoaXMuX2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseSYmdGhpcy5zdHlsZSYmZT8odGhpcy5fZGlmZlN0eWxlKGUsciksdGhpcyk6KHRoaXMuX2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseT1yLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseSx0aGlzLl91cGRhdGVTdHlsZShlLHIpKX0sYS5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUmJih0aGlzLnN0eWxlLnNldEV2ZW50ZWRQYXJlbnQobnVsbCksdGhpcy5zdHlsZS5fcmVtb3ZlKCkpLHQ/KHRoaXMuc3R5bGU9bmV3IFJlKHRoaXMsZXx8e30pLHRoaXMuc3R5bGUuc2V0RXZlbnRlZFBhcmVudCh0aGlzLHtzdHlsZTp0aGlzLnN0eWxlfSksInN0cmluZyI9PXR5cGVvZiB0P3RoaXMuc3R5bGUubG9hZFVSTCh0KTp0aGlzLnN0eWxlLmxvYWRKU09OKHQpLHRoaXMpOihkZWxldGUgdGhpcy5zdHlsZSx0aGlzKX0sYS5wcm90b3R5cGUuX2RpZmZTdHlsZT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgYT10aGlzLl9yZXF1ZXN0TWFuYWdlci5ub3JtYWxpemVTdHlsZVVSTChlKSxpPXRoaXMuX3JlcXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3QoYSx0LlJlc291cmNlVHlwZS5TdHlsZSk7dC5nZXRKU09OKGksZnVuY3Rpb24oZSxhKXtlP24uZmlyZShuZXcgdC5FcnJvckV2ZW50KGUpKTphJiZuLl91cGRhdGVEaWZmKGEscil9KX1lbHNlIm9iamVjdCI9PXR5cGVvZiBlJiZ0aGlzLl91cGRhdGVEaWZmKGUscil9LGEucHJvdG90eXBlLl91cGRhdGVEaWZmPWZ1bmN0aW9uKGUscil7dHJ5e3RoaXMuc3R5bGUuc2V0U3RhdGUoZSkmJnRoaXMuX3VwZGF0ZSghMCl9Y2F0Y2gobil7dC53YXJuT25jZSgiVW5hYmxlIHRvIHBlcmZvcm0gc3R5bGUgZGlmZjogIisobi5tZXNzYWdlfHxuLmVycm9yfHxuKSsiLiAgUmVidWlsZGluZyB0aGUgc3R5bGUgZnJvbSBzY3JhdGNoLiIpLHRoaXMuX3VwZGF0ZVN0eWxlKGUscil9fSxhLnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbigpe2lmKHRoaXMuc3R5bGUpcmV0dXJuIHRoaXMuc3R5bGUuc2VyaWFsaXplKCl9LGEucHJvdG90eXBlLmlzU3R5bGVMb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZT90aGlzLnN0eWxlLmxvYWRlZCgpOnQud2Fybk9uY2UoIlRoZXJlIGlzIG5vIHN0eWxlIGFkZGVkIHRvIHRoZSBtYXAuIil9LGEucHJvdG90eXBlLmFkZFNvdXJjZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLmFkZFNvdXJjZSh0LGUpLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90eXBlLmlzU291cmNlTG9hZGVkPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXMuc3R5bGUmJnRoaXMuc3R5bGUuc291cmNlQ2FjaGVzW2VdO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubG9hZGVkKCk7dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGVyZSBpcyBubyBzb3VyY2Ugd2l0aCBJRCAnIitlKyInIikpKX0sYS5wcm90b3R5cGUuYXJlVGlsZXNMb2FkZWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN0eWxlJiZ0aGlzLnN0eWxlLnNvdXJjZUNhY2hlcztmb3IodmFyIGUgaW4gdCl7dmFyIHI9dFtlXS5fdGlsZXM7Zm9yKHZhciBuIGluIHIpe3ZhciBhPXJbbl07aWYoImxvYWRlZCIhPT1hLnN0YXRlJiYiZXJyb3JlZCIhPT1hLnN0YXRlKXJldHVybiExfX1yZXR1cm4hMH0sYS5wcm90b3R5cGUuYWRkU291cmNlVHlwZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuc3R5bGUuYWRkU291cmNlVHlwZSh0LGUscil9LGEucHJvdG90eXBlLnJlbW92ZVNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdHlsZS5yZW1vdmVTb3VyY2UodCksdGhpcy5fdXBkYXRlKCEwKX0sYS5wcm90b3R5cGUuZ2V0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLmdldFNvdXJjZSh0KX0sYS5wcm90b3R5cGUuYWRkSW1hZ2U9ZnVuY3Rpb24oZSxyLG4pe3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgYT1uLnBpeGVsUmF0aW87dm9pZCAwPT09YSYmKGE9MSk7dmFyIGk9bi5zZGY7aWYodm9pZCAwPT09aSYmKGk9ITEpLHIgaW5zdGFuY2VvZiBPbil7dmFyIG89dC5icm93c2VyLmdldEltYWdlRGF0YShyKSxzPW8ud2lkdGgsbD1vLmhlaWdodCxjPW8uZGF0YTt0aGlzLnN0eWxlLmFkZEltYWdlKGUse2RhdGE6bmV3IHQuUkdCQUltYWdlKHt3aWR0aDpzLGhlaWdodDpsfSxjKSxwaXhlbFJhdGlvOmEsc2RmOmksdmVyc2lvbjowfSl9ZWxzZXtpZih2b2lkIDA9PT1yLndpZHRofHx2b2lkIDA9PT1yLmhlaWdodClyZXR1cm4gdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyB0byBtYXAuYWRkSW1hZ2UoKS4gVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGFuIGBIVE1MSW1hZ2VFbGVtZW50YCwgYEltYWdlRGF0YWAsIG9yIG9iamVjdCB3aXRoIGB3aWR0aGAsIGBoZWlnaHRgLCBhbmQgYGRhdGFgIHByb3BlcnRpZXMgd2l0aCB0aGUgc2FtZSBmb3JtYXQgYXMgYEltYWdlRGF0YWAiKSkpO3ZhciB1PXIud2lkdGgsaD1yLmhlaWdodCxmPXIuZGF0YSxwPXI7dGhpcy5zdHlsZS5hZGRJbWFnZShlLHtkYXRhOm5ldyB0LlJHQkFJbWFnZSh7d2lkdGg6dSxoZWlnaHQ6aH0sbmV3IFVpbnQ4QXJyYXkoZikpLHBpeGVsUmF0aW86YSxzZGY6aSx2ZXJzaW9uOjAsdXNlckltYWdlOnB9KSxwLm9uQWRkJiZwLm9uQWRkKHRoaXMsZSl9fSxhLnByb3RvdHlwZS51cGRhdGVJbWFnZT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMuc3R5bGUuZ2V0SW1hZ2UoZSk7aWYoIW4pcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIG1hcCBoYXMgbm8gaW1hZ2Ugd2l0aCB0aGF0IGlkLiBJZiB5b3UgYXJlIGFkZGluZyBhIG5ldyBpbWFnZSB1c2UgYG1hcC5hZGRJbWFnZSguLi4pYCBpbnN0ZWFkLiIpKSk7dmFyIGE9ciBpbnN0YW5jZW9mIE9uP3QuYnJvd3Nlci5nZXRJbWFnZURhdGEocik6cixpPWEud2lkdGgsbz1hLmhlaWdodCxzPWEuZGF0YTtpZih2b2lkIDA9PT1pfHx2b2lkIDA9PT1vKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHRvIG1hcC51cGRhdGVJbWFnZSgpLiBUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYW4gYEhUTUxJbWFnZUVsZW1lbnRgLCBgSW1hZ2VEYXRhYCwgb3Igb2JqZWN0IHdpdGggYHdpZHRoYCwgYGhlaWdodGAsIGFuZCBgZGF0YWAgcHJvcGVydGllcyB3aXRoIHRoZSBzYW1lIGZvcm1hdCBhcyBgSW1hZ2VEYXRhYCIpKSk7aWYoaSE9PW4uZGF0YS53aWR0aHx8byE9PW4uZGF0YS5oZWlnaHQpcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHVwZGF0ZWQgaW1hZ2UgbXVzdCBiZSB0aGF0IHNhbWUgYXMgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIGltYWdlIikpKTt2YXIgbD0hKHIgaW5zdGFuY2VvZiBPbik7bi5kYXRhLnJlcGxhY2UocyxsKSx0aGlzLnN0eWxlLnVwZGF0ZUltYWdlKGUsbil9LGEucHJvdG90eXBlLmhhc0ltYWdlPWZ1bmN0aW9uKGUpe3JldHVybiBlPyEhdGhpcy5zdHlsZS5nZXRJbWFnZShlKToodGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIGltYWdlIGlkIikpKSwhMSl9LGEucHJvdG90eXBlLnJlbW92ZUltYWdlPWZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUucmVtb3ZlSW1hZ2UodCl9LGEucHJvdG90eXBlLmxvYWRJbWFnZT1mdW5jdGlvbihlLHIpe3QuZ2V0SW1hZ2UodGhpcy5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdChlLHQuUmVzb3VyY2VUeXBlLkltYWdlKSxyKX0sYS5wcm90b3R5cGUubGlzdEltYWdlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlLmxpc3RJbWFnZXMoKX0sYS5wcm90b3R5cGUuYWRkTGF5ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zdHlsZS5hZGRMYXllcih0LGUpLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90eXBlLm1vdmVMYXllcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLm1vdmVMYXllcih0LGUpLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90eXBlLnJlbW92ZUxheWVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLnJlbW92ZUxheWVyKHQpLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90eXBlLmdldExheWVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLmdldExheWVyKHQpfSxhLnByb3RvdHlwZS5zZXRGaWx0ZXI9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj17fSksdGhpcy5zdHlsZS5zZXRGaWx0ZXIodCxlLHIpLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90eXBlLnNldExheWVyWm9vbVJhbmdlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5zdHlsZS5zZXRMYXllclpvb21SYW5nZSh0LGUsciksdGhpcy5fdXBkYXRlKCEwKX0sYS5wcm90b3R5cGUuZ2V0RmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLmdldEZpbHRlcih0KX0sYS5wcm90b3R5cGUuc2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49e30pLHRoaXMuc3R5bGUuc2V0UGFpbnRQcm9wZXJ0eSh0LGUscixuKSx0aGlzLl91cGRhdGUoITApfSxhLnByb3RvdHlwZS5nZXRQYWludFByb3BlcnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0UGFpbnRQcm9wZXJ0eSh0LGUpfSxhLnByb3RvdHlwZS5zZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49e30pLHRoaXMuc3R5bGUuc2V0TGF5b3V0UHJvcGVydHkodCxlLHIsbiksdGhpcy5fdXBkYXRlKCEwKX0sYS5wcm90b3R5cGUuZ2V0TGF5b3V0UHJvcGVydHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRMYXlvdXRQcm9wZXJ0eSh0LGUpfSxhLnByb3RvdHlwZS5zZXRMaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5zdHlsZS5zZXRMaWdodCh0LGUpLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90eXBlLmdldExpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0TGlnaHQoKX0sYS5wcm90b3R5cGUuc2V0RmVhdHVyZVN0YXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUuc2V0RmVhdHVyZVN0YXRlKHQsZSksdGhpcy5fdXBkYXRlKCl9LGEucHJvdG90eXBlLnJlbW92ZUZlYXR1cmVTdGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLnJlbW92ZUZlYXR1cmVTdGF0ZSh0LGUpLHRoaXMuX3VwZGF0ZSgpfSxhLnByb3RvdHlwZS5nZXRGZWF0dXJlU3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0RmVhdHVyZVN0YXRlKHQpfSxhLnByb3RvdHlwZS5nZXRDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxhLnByb3RvdHlwZS5nZXRDYW52YXNDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FudmFzQ29udGFpbmVyfSxhLnByb3RvdHlwZS5nZXRDYW52YXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FudmFzfSxhLnByb3RvdHlwZS5fY29udGFpbmVyRGltZW5zaW9ucz1mdW5jdGlvbigpe3ZhciB0PTAsZT0wO3JldHVybiB0aGlzLl9jb250YWluZXImJih0PXRoaXMuX2NvbnRhaW5lci5jbGllbnRXaWR0aHx8NDAwLGU9dGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodHx8MzAwKSxbdCxlXX0sYS5wcm90b3R5cGUuX2RldGVjdE1pc3NpbmdDU1M9ZnVuY3Rpb24oKXsicmdiKDI1MCwgMTI4LCAxMTQpIiE9PXQud2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbWlzc2luZ0NTU0NhbmFyeSkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpJiZ0Lndhcm5PbmNlKCJUaGlzIHBhZ2UgYXBwZWFycyB0byBiZSBtaXNzaW5nIENTUyBkZWNsYXJhdGlvbnMgZm9yIE1hcGJveCBHTCBKUywgd2hpY2ggbWF5IGNhdXNlIHRoZSBtYXAgdG8gZGlzcGxheSBpbmNvcnJlY3RseS4gUGxlYXNlIGVuc3VyZSB5b3VyIHBhZ2UgaW5jbHVkZXMgbWFwYm94LWdsLmNzcywgYXMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3Lm1hcGJveC5jb20vbWFwYm94LWdsLWpzL2FwaS8uIil9LGEucHJvdG90eXBlLl9zZXR1cENvbnRhaW5lcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcjt0LmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLW1hcCIpLCh0aGlzLl9taXNzaW5nQ1NTQ2FuYXJ5PXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1jYW5hcnkiLHQpKS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuX2RldGVjdE1pc3NpbmdDU1MoKTt2YXIgZT10aGlzLl9jYW52YXNDb250YWluZXI9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLWNhbnZhcy1jb250YWluZXIiLHQpO3RoaXMuX2ludGVyYWN0aXZlJiZlLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWludGVyYWN0aXZlIiksdGhpcy5fY2FudmFzPXIuY3JlYXRlKCJjYW52YXMiLCJtYXBib3hnbC1jYW52YXMiLGUpLHRoaXMuX2NhbnZhcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0Iix0aGlzLl9jb250ZXh0TG9zdCwhMSksdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIix0aGlzLl9jb250ZXh0UmVzdG9yZWQsITEpLHRoaXMuX2NhbnZhcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLHRoaXMuX2NhbnZhcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCJNYXAiKTt2YXIgbj10aGlzLl9jb250YWluZXJEaW1lbnNpb25zKCk7dGhpcy5fcmVzaXplQ2FudmFzKG5bMF0sblsxXSk7dmFyIGE9dGhpcy5fY29udHJvbENvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY29udHJvbC1jb250YWluZXIiLHQpLGk9dGhpcy5fY29udHJvbFBvc2l0aW9ucz17fTtbInRvcC1sZWZ0IiwidG9wLXJpZ2h0IiwiYm90dG9tLWxlZnQiLCJib3R0b20tcmlnaHQiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lbdF09ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwtIit0LGEpfSl9LGEucHJvdG90eXBlLl9yZXNpemVDYW52YXM9ZnVuY3Rpb24oZSxyKXt2YXIgbj10LndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxO3RoaXMuX2NhbnZhcy53aWR0aD1uKmUsdGhpcy5fY2FudmFzLmhlaWdodD1uKnIsdGhpcy5fY2FudmFzLnN0eWxlLndpZHRoPWUrInB4Iix0aGlzLl9jYW52YXMuc3R5bGUuaGVpZ2h0PXIrInB4In0sYS5wcm90b3R5cGUuX3NldHVwUGFpbnRlcj1mdW5jdGlvbigpe3ZhciByPXQuZXh0ZW5kKHt9LGUud2ViR0xDb250ZXh0QXR0cmlidXRlcyx7ZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDp0aGlzLl9mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0LHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0aGlzLl9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIsYW50aWFsaWFzOnRoaXMuX2FudGlhbGlhc3x8ITF9KSxuPXRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIscil8fHRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiLHIpO24/KHRoaXMucGFpbnRlcj1uZXcgb24obix0aGlzLnRyYW5zZm9ybSksdC53ZWJwU3VwcG9ydGVkLnRlc3RTdXBwb3J0KG4pKTp0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIFdlYkdMIikpKX0sYS5wcm90b3R5cGUuX2NvbnRleHRMb3N0PWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLl9mcmFtZSYmKHRoaXMuX2ZyYW1lLmNhbmNlbCgpLHRoaXMuX2ZyYW1lPW51bGwpLHRoaXMuZmlyZShuZXcgdC5FdmVudCgid2ViZ2xjb250ZXh0bG9zdCIse29yaWdpbmFsRXZlbnQ6ZX0pKX0sYS5wcm90b3R5cGUuX2NvbnRleHRSZXN0b3JlZD1mdW5jdGlvbihlKXt0aGlzLl9zZXR1cFBhaW50ZXIoKSx0aGlzLnJlc2l6ZSgpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuZmlyZShuZXcgdC5FdmVudCgid2ViZ2xjb250ZXh0cmVzdG9yZWQiLHtvcmlnaW5hbEV2ZW50OmV9KSl9LGEucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3JldHVybiF0aGlzLl9zdHlsZURpcnR5JiYhdGhpcy5fc291cmNlc0RpcnR5JiYhIXRoaXMuc3R5bGUmJnRoaXMuc3R5bGUubG9hZGVkKCl9LGEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3R5bGU/KHRoaXMuX3N0eWxlRGlydHk9dGhpcy5fc3R5bGVEaXJ0eXx8dCx0aGlzLl9zb3VyY2VzRGlydHk9ITAsdGhpcy50cmlnZ2VyUmVwYWludCgpLHRoaXMpOnRoaXN9LGEucHJvdG90eXBlLl9yZXF1ZXN0UmVuZGVyRnJhbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VwZGF0ZSgpLHRoaXMuX3JlbmRlclRhc2tRdWV1ZS5hZGQodCl9LGEucHJvdG90eXBlLl9jYW5jZWxSZW5kZXJGcmFtZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJUYXNrUXVldWUucmVtb3ZlKHQpfSxhLnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKCl7dGhpcy5wYWludGVyLmNvbnRleHQuc2V0RGlydHkoKSx0aGlzLnBhaW50ZXIuc2V0QmFzZVN0YXRlKCksdGhpcy5fcmVuZGVyVGFza1F1ZXVlLnJ1bigpO3ZhciBlPSExO2lmKHRoaXMuc3R5bGUmJnRoaXMuX3N0eWxlRGlydHkpe3RoaXMuX3N0eWxlRGlydHk9ITE7dmFyIHI9dGhpcy50cmFuc2Zvcm0uem9vbSxuPXQuYnJvd3Nlci5ub3coKTt0aGlzLnN0eWxlLnpvb21IaXN0b3J5LnVwZGF0ZShyLG4pO3ZhciBhPW5ldyB0LkV2YWx1YXRpb25QYXJhbWV0ZXJzKHIse25vdzpuLGZhZGVEdXJhdGlvbjp0aGlzLl9mYWRlRHVyYXRpb24sem9vbUhpc3Rvcnk6dGhpcy5zdHlsZS56b29tSGlzdG9yeSx0cmFuc2l0aW9uOnRoaXMuc3R5bGUuZ2V0VHJhbnNpdGlvbigpfSksaT1hLmNyb3NzRmFkaW5nRmFjdG9yKCk7MT09PWkmJmk9PT10aGlzLl9jcm9zc0ZhZGluZ0ZhY3Rvcnx8KGU9ITAsdGhpcy5fY3Jvc3NGYWRpbmdGYWN0b3I9aSksdGhpcy5zdHlsZS51cGRhdGUoYSl9cmV0dXJuIHRoaXMuc3R5bGUmJnRoaXMuX3NvdXJjZXNEaXJ0eSYmKHRoaXMuX3NvdXJjZXNEaXJ0eT0hMSx0aGlzLnN0eWxlLl91cGRhdGVTb3VyY2VzKHRoaXMudHJhbnNmb3JtKSksdGhpcy5fcGxhY2VtZW50RGlydHk9dGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5fdXBkYXRlUGxhY2VtZW50KHRoaXMucGFpbnRlci50cmFuc2Zvcm0sdGhpcy5zaG93Q29sbGlzaW9uQm94ZXMsdGhpcy5fZmFkZUR1cmF0aW9uLHRoaXMuX2Nyb3NzU291cmNlQ29sbGlzaW9ucyksdGhpcy5wYWludGVyLnJlbmRlcih0aGlzLnN0eWxlLHtzaG93VGlsZUJvdW5kYXJpZXM6dGhpcy5zaG93VGlsZUJvdW5kYXJpZXMsc2hvd092ZXJkcmF3SW5zcGVjdG9yOnRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcixyb3RhdGluZzp0aGlzLmlzUm90YXRpbmcoKSx6b29taW5nOnRoaXMuaXNab29taW5nKCksbW92aW5nOnRoaXMuaXNNb3ZpbmcoKSxmYWRlRHVyYXRpb246dGhpcy5fZmFkZUR1cmF0aW9ufSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJyZW5kZXIiKSksdGhpcy5sb2FkZWQoKSYmIXRoaXMuX2xvYWRlZCYmKHRoaXMuX2xvYWRlZD0hMCx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImxvYWQiKSkpLHRoaXMuc3R5bGUmJih0aGlzLnN0eWxlLmhhc1RyYW5zaXRpb25zKCl8fGUpJiYodGhpcy5fc3R5bGVEaXJ0eT0hMCksdGhpcy5zdHlsZSYmIXRoaXMuX3BsYWNlbWVudERpcnR5JiZ0aGlzLnN0eWxlLl9yZWxlYXNlU3ltYm9sRmFkZVRpbGVzKCksdGhpcy5fc291cmNlc0RpcnR5fHx0aGlzLl9yZXBhaW50fHx0aGlzLl9zdHlsZURpcnR5fHx0aGlzLl9wbGFjZW1lbnREaXJ0eT90aGlzLnRyaWdnZXJSZXBhaW50KCk6IXRoaXMuaXNNb3ZpbmcoKSYmdGhpcy5sb2FkZWQoKSYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJpZGxlIikpLHRoaXN9LGEucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX2hhc2gmJnRoaXMuX2hhc2gucmVtb3ZlKCk7Zm9yKHZhciBlPTAscj10aGlzLl9jb250cm9scztlPHIubGVuZ3RoO2UrPTEpcltlXS5vblJlbW92ZSh0aGlzKTt0aGlzLl9jb250cm9scz1bXSx0aGlzLl9mcmFtZSYmKHRoaXMuX2ZyYW1lLmNhbmNlbCgpLHRoaXMuX2ZyYW1lPW51bGwpLHRoaXMuX3JlbmRlclRhc2tRdWV1ZS5jbGVhcigpLHRoaXMuc2V0U3R5bGUobnVsbCksdm9pZCAwIT09dC53aW5kb3cmJih0LndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX29uV2luZG93UmVzaXplLCExKSx0LndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJvbmxpbmUiLHRoaXMuX29uV2luZG93T25saW5lLCExKSk7dmFyIG49dGhpcy5wYWludGVyLmNvbnRleHQuZ2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9sb3NlX2NvbnRleHQiKTtuJiZuLmxvc2VDb250ZXh0KCksUm4odGhpcy5fY2FudmFzQ29udGFpbmVyKSxSbih0aGlzLl9jb250cm9sQ29udGFpbmVyKSxSbih0aGlzLl9taXNzaW5nQ1NTQ2FuYXJ5KSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtbWFwIiksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJyZW1vdmUiKSl9LGEucHJvdG90eXBlLnRyaWdnZXJSZXBhaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnN0eWxlJiYhdGhpcy5fZnJhbWUmJih0aGlzLl9mcmFtZT10LmJyb3dzZXIuZnJhbWUoZnVuY3Rpb24oKXtlLl9mcmFtZT1udWxsLGUuX3JlbmRlcigpfSkpfSxhLnByb3RvdHlwZS5fb25XaW5kb3dPbmxpbmU9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGUoKX0sYS5wcm90b3R5cGUuX29uV2luZG93UmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5fdHJhY2tSZXNpemUmJnRoaXMucmVzaXplKCkuX3VwZGF0ZSgpfSxpLnNob3dUaWxlQm91bmRhcmllcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX3Nob3dUaWxlQm91bmRhcmllc30saS5zaG93VGlsZUJvdW5kYXJpZXMuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3Nob3dUaWxlQm91bmRhcmllcyE9PXQmJih0aGlzLl9zaG93VGlsZUJvdW5kYXJpZXM9dCx0aGlzLl91cGRhdGUoKSl9LGkuc2hvd0NvbGxpc2lvbkJveGVzLmdldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fc2hvd0NvbGxpc2lvbkJveGVzfSxpLnNob3dDb2xsaXNpb25Cb3hlcy5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc2hvd0NvbGxpc2lvbkJveGVzIT09dCYmKHRoaXMuX3Nob3dDb2xsaXNpb25Cb3hlcz10LHQ/dGhpcy5zdHlsZS5fZ2VuZXJhdGVDb2xsaXNpb25Cb3hlcygpOnRoaXMuX3VwZGF0ZSgpKX0saS5zaG93T3ZlcmRyYXdJbnNwZWN0b3IuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3J9LGkuc2hvd092ZXJkcmF3SW5zcGVjdG9yLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3IhPT10JiYodGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yPXQsdGhpcy5fdXBkYXRlKCkpfSxpLnJlcGFpbnQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9yZXBhaW50fSxpLnJlcGFpbnQuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3JlcGFpbnQhPT10JiYodGhpcy5fcmVwYWludD10LHRoaXMudHJpZ2dlclJlcGFpbnQoKSl9LGkudmVydGljZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl92ZXJ0aWNlc30saS52ZXJ0aWNlcy5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fdmVydGljZXM9dCx0aGlzLl91cGRhdGUoKX0sYS5wcm90b3R5cGUuX3NldENhY2hlTGltaXRzPWZ1bmN0aW9uKGUscil7dC5zZXRDYWNoZUxpbWl0cyhlLHIpfSxpLnZlcnNpb24uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHQudmVyc2lvbn0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYS5wcm90b3R5cGUsaSksYX0oRW4pO2Z1bmN0aW9uIFJuKHQpe3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfXZhciBGbj17c2hvd0NvbXBhc3M6ITAsc2hvd1pvb206ITAsdmlzdWFsaXplUGl0Y2g6ITF9LEJuPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7dGhpcy5vcHRpb25zPXQuZXh0ZW5kKHt9LEZuLGUpLHRoaXMuX2NvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLWdyb3VwIiksdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpfSksdGhpcy5vcHRpb25zLnNob3dab29tJiYodC5iaW5kQWxsKFsiX3VwZGF0ZVpvb21CdXR0b25zIl0sdGhpcyksdGhpcy5fem9vbUluQnV0dG9uPXRoaXMuX2NyZWF0ZUJ1dHRvbigibWFwYm94Z2wtY3RybC1pY29uIG1hcGJveGdsLWN0cmwtem9vbS1pbiIsIlpvb20gaW4iLGZ1bmN0aW9uKCl7cmV0dXJuIG4uX21hcC56b29tSW4oKX0pLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKCJtYXBib3hnbC1jdHJsLWljb24gbWFwYm94Z2wtY3RybC16b29tLW91dCIsIlpvb20gb3V0IixmdW5jdGlvbigpe3JldHVybiBuLl9tYXAuem9vbU91dCgpfSkpLHRoaXMub3B0aW9ucy5zaG93Q29tcGFzcyYmKHQuYmluZEFsbChbIl9yb3RhdGVDb21wYXNzQXJyb3ciXSx0aGlzKSx0aGlzLl9jb21wYXNzPXRoaXMuX2NyZWF0ZUJ1dHRvbigibWFwYm94Z2wtY3RybC1pY29uIG1hcGJveGdsLWN0cmwtY29tcGFzcyIsIlJlc2V0IGJlYXJpbmcgdG8gbm9ydGgiLGZ1bmN0aW9uKCl7bi5vcHRpb25zLnZpc3VhbGl6ZVBpdGNoP24uX21hcC5yZXNldE5vcnRoUGl0Y2goKTpuLl9tYXAucmVzZXROb3J0aCgpfSksdGhpcy5fY29tcGFzc0Fycm93PXIuY3JlYXRlKCJzcGFuIiwibWFwYm94Z2wtY3RybC1jb21wYXNzLWFycm93Iix0aGlzLl9jb21wYXNzKSl9O2Z1bmN0aW9uIE5uKGUscixuKXtpZihlPW5ldyB0LkxuZ0xhdChlLmxuZyxlLmxhdCkscil7dmFyIGE9bmV3IHQuTG5nTGF0KGUubG5nLTM2MCxlLmxhdCksaT1uZXcgdC5MbmdMYXQoZS5sbmcrMzYwLGUubGF0KSxvPW4ubG9jYXRpb25Qb2ludChlKS5kaXN0U3FyKHIpO24ubG9jYXRpb25Qb2ludChhKS5kaXN0U3FyKHIpPG8/ZT1hOm4ubG9jYXRpb25Qb2ludChpKS5kaXN0U3FyKHIpPG8mJihlPWkpfWZvcig7TWF0aC5hYnMoZS5sbmctbi5jZW50ZXIubG5nKT4xODA7KXt2YXIgcz1uLmxvY2F0aW9uUG9pbnQoZSk7aWYocy54Pj0wJiZzLnk+PTAmJnMueDw9bi53aWR0aCYmcy55PD1uLmhlaWdodClicmVhaztlLmxuZz5uLmNlbnRlci5sbmc/ZS5sbmctPTM2MDplLmxuZys9MzYwfXJldHVybiBlfUJuLnByb3RvdHlwZS5fdXBkYXRlWm9vbUJ1dHRvbnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuZ2V0Wm9vbSgpO3Q9PT10aGlzLl9tYXAuZ2V0TWF4Wm9vbSgpP3RoaXMuX3pvb21JbkJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWljb24tZGlzYWJsZWQiKTp0aGlzLl96b29tSW5CdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1pY29uLWRpc2FibGVkIiksdD09PXRoaXMuX21hcC5nZXRNaW5ab29tKCk/dGhpcy5fem9vbU91dEJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWljb24tZGlzYWJsZWQiKTp0aGlzLl96b29tT3V0QnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtaWNvbi1kaXNhYmxlZCIpfSxCbi5wcm90b3R5cGUuX3JvdGF0ZUNvbXBhc3NBcnJvdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy52aXN1YWxpemVQaXRjaD8ic2NhbGUoIisxL01hdGgucG93KE1hdGguY29zKHRoaXMuX21hcC50cmFuc2Zvcm0ucGl0Y2gqKE1hdGguUEkvMTgwKSksLjUpKyIpIHJvdGF0ZVgoIit0aGlzLl9tYXAudHJhbnNmb3JtLnBpdGNoKyJkZWcpIHJvdGF0ZVooIit0aGlzLl9tYXAudHJhbnNmb3JtLmFuZ2xlKigxODAvTWF0aC5QSSkrImRlZykiOiJyb3RhdGUoIit0aGlzLl9tYXAudHJhbnNmb3JtLmFuZ2xlKigxODAvTWF0aC5QSSkrImRlZykiO3RoaXMuX2NvbXBhc3NBcnJvdy5zdHlsZS50cmFuc2Zvcm09dH0sQm4ucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLm9wdGlvbnMuc2hvd1pvb20mJih0aGlzLl9tYXAub24oInpvb20iLHRoaXMuX3VwZGF0ZVpvb21CdXR0b25zKSx0aGlzLl91cGRhdGVab29tQnV0dG9ucygpKSx0aGlzLm9wdGlvbnMuc2hvd0NvbXBhc3MmJih0aGlzLm9wdGlvbnMudmlzdWFsaXplUGl0Y2gmJnRoaXMuX21hcC5vbigicGl0Y2giLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksdGhpcy5fbWFwLm9uKCJyb3RhdGUiLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksdGhpcy5fcm90YXRlQ29tcGFzc0Fycm93KCksdGhpcy5faGFuZGxlcj1uZXcgeG4odCx7YnV0dG9uOiJsZWZ0IixlbGVtZW50OnRoaXMuX2NvbXBhc3N9KSxyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY29tcGFzcywibW91c2Vkb3duIix0aGlzLl9oYW5kbGVyLm9uTW91c2VEb3duKSxyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY29tcGFzcywidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlci5vbk1vdXNlRG93bix7cGFzc2l2ZTohMX0pLHRoaXMuX2hhbmRsZXIuZW5hYmxlKCkpLHRoaXMuX2NvbnRhaW5lcn0sQm4ucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7ci5yZW1vdmUodGhpcy5fY29udGFpbmVyKSx0aGlzLm9wdGlvbnMuc2hvd1pvb20mJnRoaXMuX21hcC5vZmYoInpvb20iLHRoaXMuX3VwZGF0ZVpvb21CdXR0b25zKSx0aGlzLm9wdGlvbnMuc2hvd0NvbXBhc3MmJih0aGlzLm9wdGlvbnMudmlzdWFsaXplUGl0Y2gmJnRoaXMuX21hcC5vZmYoInBpdGNoIix0aGlzLl9yb3RhdGVDb21wYXNzQXJyb3cpLHRoaXMuX21hcC5vZmYoInJvdGF0ZSIsdGhpcy5fcm90YXRlQ29tcGFzc0Fycm93KSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fY29tcGFzcywibW91c2Vkb3duIix0aGlzLl9oYW5kbGVyLm9uTW91c2VEb3duKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fY29tcGFzcywidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlci5vbk1vdXNlRG93bix7cGFzc2l2ZTohMX0pLHRoaXMuX2hhbmRsZXIuZGlzYWJsZSgpLGRlbGV0ZSB0aGlzLl9oYW5kbGVyKSxkZWxldGUgdGhpcy5fbWFwfSxCbi5wcm90b3R5cGUuX2NyZWF0ZUJ1dHRvbj1mdW5jdGlvbih0LGUsbil7dmFyIGE9ci5jcmVhdGUoImJ1dHRvbiIsdCx0aGlzLl9jb250YWluZXIpO3JldHVybiBhLnR5cGU9ImJ1dHRvbiIsYS50aXRsZT1lLGEuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixlKSxhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixuKSxhfTt2YXIgam49e2NlbnRlcjoidHJhbnNsYXRlKC01MCUsLTUwJSkiLHRvcDoidHJhbnNsYXRlKC01MCUsMCkiLCJ0b3AtbGVmdCI6InRyYW5zbGF0ZSgwLDApIiwidG9wLXJpZ2h0IjoidHJhbnNsYXRlKC0xMDAlLDApIixib3R0b206InRyYW5zbGF0ZSgtNTAlLC0xMDAlKSIsImJvdHRvbS1sZWZ0IjoidHJhbnNsYXRlKDAsLTEwMCUpIiwiYm90dG9tLXJpZ2h0IjoidHJhbnNsYXRlKC0xMDAlLC0xMDAlKSIsbGVmdDoidHJhbnNsYXRlKDAsLTUwJSkiLHJpZ2h0OiJ0cmFuc2xhdGUoLTEwMCUsLTUwJSkifTtmdW5jdGlvbiBWbih0LGUscil7dmFyIG49dC5jbGFzc0xpc3Q7Zm9yKHZhciBhIGluIGpuKW4ucmVtb3ZlKCJtYXBib3hnbC0iK3IrIi1hbmNob3ItIithKTtuLmFkZCgibWFwYm94Z2wtIityKyItYW5jaG9yLSIrZSl9dmFyIFVuLHFuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4obixhKXtpZihlLmNhbGwodGhpcyksKG4gaW5zdGFuY2VvZiB0LndpbmRvdy5IVE1MRWxlbWVudHx8YSkmJihuPXQuZXh0ZW5kKHtlbGVtZW50Om59LGEpKSx0LmJpbmRBbGwoWyJfdXBkYXRlIiwiX29uTW92ZSIsIl9vblVwIiwiX2FkZERyYWdIYW5kbGVyIiwiX29uTWFwQ2xpY2siXSx0aGlzKSx0aGlzLl9hbmNob3I9biYmbi5hbmNob3J8fCJjZW50ZXIiLHRoaXMuX2NvbG9yPW4mJm4uY29sb3J8fCIjM0ZCMUNFIix0aGlzLl9kcmFnZ2FibGU9biYmbi5kcmFnZ2FibGV8fCExLHRoaXMuX3N0YXRlPSJpbmFjdGl2ZSIsbiYmbi5lbGVtZW50KXRoaXMuX2VsZW1lbnQ9bi5lbGVtZW50LHRoaXMuX29mZnNldD10LlBvaW50LmNvbnZlcnQobiYmbi5vZmZzZXR8fFswLDBdKTtlbHNle3RoaXMuX2RlZmF1bHRNYXJrZXI9ITAsdGhpcy5fZWxlbWVudD1yLmNyZWF0ZSgiZGl2Iik7dmFyIGk9ci5jcmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImRpc3BsYXkiLCJibG9jayIpLGkuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IiwiNDFweCIpLGkuc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIyN3B4IiksaS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ2aWV3Qm94IiwiMCAwIDI3IDQxIik7dmFyIG89ci5jcmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIik7by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UiLCJub25lIiksby5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utd2lkdGgiLCIxIiksby5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpLG8uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1ydWxlIiwiZXZlbm9kZCIpO3ZhciBzPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpO3Muc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1ydWxlIiwibm9uemVybyIpO3ZhciBsPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIiwidHJhbnNsYXRlKDMuMCwgMjkuMCkiKSxsLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjMDAwMDAwIik7Zm9yKHZhciBjPTAsdT1be3J4OiIxMC41IixyeToiNS4yNTAwMjI3MyJ9LHtyeDoiMTAuNSIscnk6IjUuMjUwMDIyNzMifSx7cng6IjkuNSIscnk6IjQuNzcyNzUwMDcifSx7cng6IjguNSIscnk6IjQuMjk1NDk5MzYifSx7cng6IjcuNSIscnk6IjMuODE4MjIzMDgifSx7cng6IjYuNSIscnk6IjMuMzQwOTQ2NzkifSx7cng6IjUuNSIscnk6IjIuODYzNjcwNTEifSx7cng6IjQuNSIscnk6IjIuMzg2MzY4NjQifV07Yzx1Lmxlbmd0aDtjKz0xKXt2YXIgaD11W2NdLGY9ci5jcmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJlbGxpcHNlIik7Zi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJvcGFjaXR5IiwiMC4wNCIpLGYuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLCIxMC41IiksZi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjeSIsIjUuODAwMjkwMDgiKSxmLnNldEF0dHJpYnV0ZU5TKG51bGwsInJ4IixoLnJ4KSxmLnNldEF0dHJpYnV0ZU5TKG51bGwsInJ5IixoLnJ5KSxsLmFwcGVuZENoaWxkKGYpfXZhciBwPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpO3Auc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5fY29sb3IpO3ZhciBkPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpO2Quc2V0QXR0cmlidXRlTlMobnVsbCwiZCIsIk0yNywxMy41IEMyNywxOS4wNzQ2NDQgMjAuMjUwMDAxLDI3LjAwMDAwMiAxNC43NSwzNC41MDAwMDIgQzE0LjAxNjY2NSwzNS41MDAwMDQgMTIuOTgzMzM1LDM1LjUwMDAwNCAxMi4yNSwzNC41MDAwMDIgQzYuNzQ5OTk5MywyNy4wMDAwMDIgMCwxOS4yMjI1NjIgMCwxMy41IEMwLDYuMDQ0MTU1OSA2LjA0NDE1NTksMCAxMy41LDAgQzIwLjk1NTg0NCwwIDI3LDYuMDQ0MTU1OSAyNywxMy41IFoiKSxwLmFwcGVuZENoaWxkKGQpO3ZhciBnPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpO2cuc2V0QXR0cmlidXRlTlMobnVsbCwib3BhY2l0eSIsIjAuMjUiKSxnLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjMDAwMDAwIik7dmFyIHY9ci5jcmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7di5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIiwiTTEzLjUsMCBDNi4wNDQxNTU5LDAgMCw2LjA0NDE1NTkgMCwxMy41IEMwLDE5LjIyMjU2MiA2Ljc0OTk5OTMsMjcgMTIuMjUsMzQuNSBDMTMsMzUuNTIyNzI3IDE0LjAxNjY2NCwzNS41MDAwMDQgMTQuNzUsMzQuNSBDMjAuMjUwMDAxLDI3IDI3LDE5LjA3NDY0NCAyNywxMy41IEMyNyw2LjA0NDE1NTkgMjAuOTU1ODQ0LDAgMTMuNSwwIFogTTEzLjUsMSBDMjAuNDE1NDA0LDEgMjYsNi41ODQ1OTYgMjYsMTMuNSBDMjYsMTUuODk4NjU3IDI0LjQ5NTU4NCwxOS4xODE0MzEgMjIuMjIwNzAzLDIyLjczODI4MSBDMTkuOTQ1ODIzLDI2LjI5NTEzMiAxNi43MDUxMTksMzAuMTQyMTY3IDEzLjk0MzM1OSwzMy45MDgyMDMgQzEzLjc0MzQ0NSwzNC4xODA4MTQgMTMuNjEyNzE1LDM0LjMyMjczOCAxMy41LDM0LjQ0MTQwNiBDMTMuMzg3Mjg1LDM0LjMyMjczOCAxMy4yNTY1NTUsMzQuMTgwODE0IDEzLjA1NjY0MSwzMy45MDgyMDMgQzEwLjI4NDQ4MSwzMC4xMjc5ODUgNy40MTQ4Njg0LDI2LjMxNDE1OSA1LjAxNTYyNSwyMi43NzM0MzggQzIuNjE2MzgxNiwxOS4yMzI3MTUgMSwxNS45NTM1MzggMSwxMy41IEMxLDYuNTg0NTk2IDYuNTg0NTk2LDEgMTMuNSwxIFoiKSxnLmFwcGVuZENoaWxkKHYpO3ZhciBtPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpO20uc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIiwidHJhbnNsYXRlKDYuMCwgNy4wKSIpLG0uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIiNGRkZGRkYiKTt2YXIgeT1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKTt5LnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSg4LjAsIDguMCkiKTt2YXIgeD1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImNpcmNsZSIpO3guc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIiMwMDAwMDAiKSx4LnNldEF0dHJpYnV0ZU5TKG51bGwsIm9wYWNpdHkiLCIwLjI1IikseC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjeCIsIjUuNSIpLHguc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLCI1LjUiKSx4LnNldEF0dHJpYnV0ZU5TKG51bGwsInIiLCI1LjQ5OTk5NjIiKTt2YXIgYj1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImNpcmNsZSIpO2Iuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIiNGRkZGRkYiKSxiLnNldEF0dHJpYnV0ZU5TKG51bGwsImN4IiwiNS41IiksYi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjeSIsIjUuNSIpLGIuc2V0QXR0cmlidXRlTlMobnVsbCwiciIsIjUuNDk5OTk2MiIpLHkuYXBwZW5kQ2hpbGQoeCkseS5hcHBlbmRDaGlsZChiKSxzLmFwcGVuZENoaWxkKGwpLHMuYXBwZW5kQ2hpbGQocCkscy5hcHBlbmRDaGlsZChnKSxzLmFwcGVuZENoaWxkKG0pLHMuYXBwZW5kQ2hpbGQoeSksaS5hcHBlbmRDaGlsZChzKSx0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGkpLHRoaXMuX29mZnNldD10LlBvaW50LmNvbnZlcnQobiYmbi5vZmZzZXR8fFswLC0xNF0pfXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtbWFya2VyIiksdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0pLFZuKHRoaXMuX2VsZW1lbnQsdGhpcy5fYW5jaG9yLCJtYXJrZXIiKSx0aGlzLl9wb3B1cD1udWxsfXJldHVybiBlJiYobi5fX3Byb3RvX189ZSksbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksbi5wcm90b3R5cGUuY29uc3RydWN0b3I9bixuLnByb3RvdHlwZS5hZGRUbz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZW1vdmUoKSx0aGlzLl9tYXA9dCx0LmdldENhbnZhc0NvbnRhaW5lcigpLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLHQub24oIm1vdmUiLHRoaXMuX3VwZGF0ZSksdC5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlKSx0aGlzLnNldERyYWdnYWJsZSh0aGlzLl9kcmFnZ2FibGUpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX29uTWFwQ2xpY2spLHRoaXN9LG4ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJih0aGlzLl9tYXAub2ZmKCJjbGljayIsdGhpcy5fb25NYXBDbGljayksdGhpcy5fbWFwLm9mZigibW92ZSIsdGhpcy5fdXBkYXRlKSx0aGlzLl9tYXAub2ZmKCJtb3ZlZW5kIix0aGlzLl91cGRhdGUpLHRoaXMuX21hcC5vZmYoIm1vdXNlZG93biIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpLHRoaXMuX21hcC5vZmYoInRvdWNoc3RhcnQiLHRoaXMuX2FkZERyYWdIYW5kbGVyKSx0aGlzLl9tYXAub2ZmKCJtb3VzZXVwIix0aGlzLl9vblVwKSx0aGlzLl9tYXAub2ZmKCJ0b3VjaGVuZCIsdGhpcy5fb25VcCksdGhpcy5fbWFwLm9mZigibW91c2Vtb3ZlIix0aGlzLl9vbk1vdmUpLHRoaXMuX21hcC5vZmYoInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlKSxkZWxldGUgdGhpcy5fbWFwKSxyLnJlbW92ZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAucmVtb3ZlKCksdGhpc30sbi5wcm90b3R5cGUuZ2V0TG5nTGF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xuZ0xhdH0sbi5wcm90b3R5cGUuc2V0TG5nTGF0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9sbmdMYXQ9dC5MbmdMYXQuY29udmVydChlKSx0aGlzLl9wb3M9bnVsbCx0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuc2V0TG5nTGF0KHRoaXMuX2xuZ0xhdCksdGhpcy5fdXBkYXRlKCksdGhpc30sbi5wcm90b3R5cGUuZ2V0RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGVtZW50fSxuLnByb3RvdHlwZS5zZXRQb3B1cD1mdW5jdGlvbih0KXtpZih0aGlzLl9wb3B1cCYmKHRoaXMuX3BvcHVwLnJlbW92ZSgpLHRoaXMuX3BvcHVwPW51bGwpLHQpe2lmKCEoIm9mZnNldCJpbiB0Lm9wdGlvbnMpKXt2YXIgZT1NYXRoLnNxcnQoTWF0aC5wb3coMTMuNSwyKS8yKTt0Lm9wdGlvbnMub2Zmc2V0PXRoaXMuX2RlZmF1bHRNYXJrZXI/e3RvcDpbMCwwXSwidG9wLWxlZnQiOlswLDBdLCJ0b3AtcmlnaHQiOlswLDBdLGJvdHRvbTpbMCwtMzguMV0sImJvdHRvbS1sZWZ0IjpbZSwtMSooMjQuNitlKV0sImJvdHRvbS1yaWdodCI6Wy1lLC0xKigyNC42K2UpXSxsZWZ0OlsxMy41LC0yNC42XSxyaWdodDpbLTEzLjUsLTI0LjZdfTp0aGlzLl9vZmZzZXR9dGhpcy5fcG9wdXA9dCx0aGlzLl9sbmdMYXQmJnRoaXMuX3BvcHVwLnNldExuZ0xhdCh0aGlzLl9sbmdMYXQpfXJldHVybiB0aGlzfSxuLnByb3RvdHlwZS5fb25NYXBDbGljaz1mdW5jdGlvbih0KXt2YXIgZT10Lm9yaWdpbmFsRXZlbnQudGFyZ2V0LHI9dGhpcy5fZWxlbWVudDt0aGlzLl9wb3B1cCYmKGU9PT1yfHxyLmNvbnRhaW5zKGUpKSYmdGhpcy50b2dnbGVQb3B1cCgpfSxuLnByb3RvdHlwZS5nZXRQb3B1cD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cH0sbi5wcm90b3R5cGUudG9nZ2xlUG9wdXA9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wb3B1cDtyZXR1cm4gdD8odC5pc09wZW4oKT90LnJlbW92ZSgpOnQuYWRkVG8odGhpcy5fbWFwKSx0aGlzKTp0aGlzfSxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuX21hcCYmKHRoaXMuX21hcC50cmFuc2Zvcm0ucmVuZGVyV29ybGRDb3BpZXMmJih0aGlzLl9sbmdMYXQ9Tm4odGhpcy5fbG5nTGF0LHRoaXMuX3Bvcyx0aGlzLl9tYXAudHJhbnNmb3JtKSksdGhpcy5fcG9zPXRoaXMuX21hcC5wcm9qZWN0KHRoaXMuX2xuZ0xhdCkuX2FkZCh0aGlzLl9vZmZzZXQpLHQmJiJtb3ZlZW5kIiE9PXQudHlwZXx8KHRoaXMuX3Bvcz10aGlzLl9wb3Mucm91bmQoKSksci5zZXRUcmFuc2Zvcm0odGhpcy5fZWxlbWVudCxqblt0aGlzLl9hbmNob3JdKyIgdHJhbnNsYXRlKCIrdGhpcy5fcG9zLngrInB4LCAiK3RoaXMuX3Bvcy55KyJweCkiKSl9LG4ucHJvdG90eXBlLmdldE9mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9vZmZzZXR9LG4ucHJvdG90eXBlLnNldE9mZnNldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fb2Zmc2V0PXQuUG9pbnQuY29udmVydChlKSx0aGlzLl91cGRhdGUoKSx0aGlzfSxuLnByb3RvdHlwZS5fb25Nb3ZlPWZ1bmN0aW9uKGUpe3RoaXMuX3Bvcz1lLnBvaW50LnN1Yih0aGlzLl9wb3NpdGlvbkRlbHRhKSx0aGlzLl9sbmdMYXQ9dGhpcy5fbWFwLnVucHJvamVjdCh0aGlzLl9wb3MpLHRoaXMuc2V0TG5nTGF0KHRoaXMuX2xuZ0xhdCksdGhpcy5fZWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIiwicGVuZGluZyI9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3N0YXRlPSJhY3RpdmUiLHRoaXMuZmlyZShuZXcgdC5FdmVudCgiZHJhZ3N0YXJ0IikpKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRyYWciKSl9LG4ucHJvdG90eXBlLl9vblVwPWZ1bmN0aW9uKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIix0aGlzLl9wb3NpdGlvbkRlbHRhPW51bGwsdGhpcy5fbWFwLm9mZigibW91c2Vtb3ZlIix0aGlzLl9vbk1vdmUpLHRoaXMuX21hcC5vZmYoInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlKSwiYWN0aXZlIj09PXRoaXMuX3N0YXRlJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRyYWdlbmQiKSksdGhpcy5fc3RhdGU9ImluYWN0aXZlIn0sbi5wcm90b3R5cGUuX2FkZERyYWdIYW5kbGVyPWZ1bmN0aW9uKHQpe3RoaXMuX2VsZW1lbnQuY29udGFpbnModC5vcmlnaW5hbEV2ZW50LnRhcmdldCkmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fcG9zaXRpb25EZWx0YT10LnBvaW50LnN1Yih0aGlzLl9wb3MpLmFkZCh0aGlzLl9vZmZzZXQpLHRoaXMuX3N0YXRlPSJwZW5kaW5nIix0aGlzLl9tYXAub24oIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3ZlKSx0aGlzLl9tYXAub24oInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlKSx0aGlzLl9tYXAub25jZSgibW91c2V1cCIsdGhpcy5fb25VcCksdGhpcy5fbWFwLm9uY2UoInRvdWNoZW5kIix0aGlzLl9vblVwKSl9LG4ucHJvdG90eXBlLnNldERyYWdnYWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ2dhYmxlPSEhdCx0aGlzLl9tYXAmJih0Pyh0aGlzLl9tYXAub24oIm1vdXNlZG93biIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpLHRoaXMuX21hcC5vbigidG91Y2hzdGFydCIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpKToodGhpcy5fbWFwLm9mZigibW91c2Vkb3duIix0aGlzLl9hZGREcmFnSGFuZGxlciksdGhpcy5fbWFwLm9mZigidG91Y2hzdGFydCIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpKSksdGhpc30sbi5wcm90b3R5cGUuaXNEcmFnZ2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ2dhYmxlfSxufSh0LkV2ZW50ZWQpLEhuPXtwb3NpdGlvbk9wdGlvbnM6e2VuYWJsZUhpZ2hBY2N1cmFjeTohMSxtYXhpbXVtQWdlOjAsdGltZW91dDo2ZTN9LGZpdEJvdW5kc09wdGlvbnM6e21heFpvb206MTV9LHRyYWNrVXNlckxvY2F0aW9uOiExLHNob3dVc2VyTG9jYXRpb246ITB9LEduPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4ocil7ZS5jYWxsKHRoaXMpLHRoaXMub3B0aW9ucz10LmV4dGVuZCh7fSxIbixyKSx0LmJpbmRBbGwoWyJfb25TdWNjZXNzIiwiX29uRXJyb3IiLCJfZmluaXNoIiwiX3NldHVwVUkiLCJfdXBkYXRlQ2FtZXJhIiwiX3VwZGF0ZU1hcmtlciJdLHRoaXMpfXJldHVybiBlJiYobi5fX3Byb3RvX189ZSksbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksbi5wcm90b3R5cGUuY29uc3RydWN0b3I9bixuLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbihlKXt2YXIgbjtyZXR1cm4gdGhpcy5fbWFwPWUsdGhpcy5fY29udGFpbmVyPXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1jdHJsIG1hcGJveGdsLWN0cmwtZ3JvdXAiKSxuPXRoaXMuX3NldHVwVUksdm9pZCAwIT09VW4/bihVbik6dm9pZCAwIT09dC53aW5kb3cubmF2aWdhdG9yLnBlcm1pc3Npb25zP3Qud2luZG93Lm5hdmlnYXRvci5wZXJtaXNzaW9ucy5xdWVyeSh7bmFtZToiZ2VvbG9jYXRpb24ifSkudGhlbihmdW5jdGlvbih0KXtVbj0iZGVuaWVkIiE9PXQuc3RhdGUsbihVbil9KTooVW49ISF0LndpbmRvdy5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sbihVbikpLHRoaXMuX2NvbnRhaW5lcn0sbi5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQmJih0LndpbmRvdy5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQpLHRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRD12b2lkIDApLHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXImJnRoaXMuX3VzZXJMb2NhdGlvbkRvdE1hcmtlci5yZW1vdmUoKSxyLnJlbW92ZSh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcD12b2lkIDB9LG4ucHJvdG90eXBlLl9vblN1Y2Nlc3M9ZnVuY3Rpb24oZSl7aWYodGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uKXN3aXRjaCh0aGlzLl9sYXN0S25vd25Qb3NpdGlvbj1lLHRoaXMuX3dhdGNoU3RhdGUpe2Nhc2UiV0FJVElOR19BQ1RJVkUiOmNhc2UiQUNUSVZFX0xPQ0siOmNhc2UiQUNUSVZFX0VSUk9SIjp0aGlzLl93YXRjaFN0YXRlPSJBQ1RJVkVfTE9DSyIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZSIpO2JyZWFrO2Nhc2UiQkFDS0dST1VORCI6Y2FzZSJCQUNLR1JPVU5EX0VSUk9SIjp0aGlzLl93YXRjaFN0YXRlPSJCQUNLR1JPVU5EIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQiKX10aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmIk9GRiIhPT10aGlzLl93YXRjaFN0YXRlJiZ0aGlzLl91cGRhdGVNYXJrZXIoZSksdGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uJiYiQUNUSVZFX0xPQ0siIT09dGhpcy5fd2F0Y2hTdGF0ZXx8dGhpcy5fdXBkYXRlQ2FtZXJhKGUpLHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLl9kb3RFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90LXN0YWxlIiksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJnZW9sb2NhdGUiLGUpKSx0aGlzLl9maW5pc2goKX0sbi5wcm90b3R5cGUuX3VwZGF0ZUNhbWVyYT1mdW5jdGlvbihlKXt2YXIgcj1uZXcgdC5MbmdMYXQoZS5jb29yZHMubG9uZ2l0dWRlLGUuY29vcmRzLmxhdGl0dWRlKSxuPWUuY29vcmRzLmFjY3VyYWN5LGE9dGhpcy5fbWFwLmdldEJlYXJpbmcoKSxpPXQuZXh0ZW5kKHtiZWFyaW5nOmF9LHRoaXMub3B0aW9ucy5maXRCb3VuZHNPcHRpb25zKTt0aGlzLl9tYXAuZml0Qm91bmRzKHIudG9Cb3VuZHMobiksaSx7Z2VvbG9jYXRlU291cmNlOiEwfSl9LG4ucHJvdG90eXBlLl91cGRhdGVNYXJrZXI9ZnVuY3Rpb24odCl7dD90aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXIuc2V0TG5nTGF0KFt0LmNvb3Jkcy5sb25naXR1ZGUsdC5jb29yZHMubGF0aXR1ZGVdKS5hZGRUbyh0aGlzLl9tYXApOnRoaXMuX3VzZXJMb2NhdGlvbkRvdE1hcmtlci5yZW1vdmUoKX0sbi5wcm90b3R5cGUuX29uRXJyb3I9ZnVuY3Rpb24oZSl7aWYodGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uKWlmKDE9PT1lLmNvZGUpdGhpcy5fd2F0Y2hTdGF0ZT0iT0ZGIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvciIpLHZvaWQgMCE9PXRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRCYmdGhpcy5fY2xlYXJXYXRjaCgpO2Vsc2Ugc3dpdGNoKHRoaXMuX3dhdGNoU3RhdGUpe2Nhc2UiV0FJVElOR19BQ1RJVkUiOnRoaXMuX3dhdGNoU3RhdGU9IkFDVElWRV9FUlJPUiIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZSIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUtZXJyb3IiKTticmVhaztjYXNlIkFDVElWRV9MT0NLIjp0aGlzLl93YXRjaFN0YXRlPSJBQ1RJVkVfRVJST1IiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmciKTticmVhaztjYXNlIkJBQ0tHUk9VTkQiOnRoaXMuX3dhdGNoU3RhdGU9IkJBQ0tHUk9VTkRfRVJST1IiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3IiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyIpfSJPRkYiIT09dGhpcy5fd2F0Y2hTdGF0ZSYmdGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJnRoaXMuX2RvdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtdXNlci1sb2NhdGlvbi1kb3Qtc3RhbGUiKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImVycm9yIixlKSksdGhpcy5fZmluaXNoKCl9LG4ucHJvdG90eXBlLl9maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl90aW1lb3V0SWQmJmNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJZD12b2lkIDB9LG4ucHJvdG90eXBlLl9zZXR1cFVJPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7ITEhPT1lPyh0aGlzLl9jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0KCl9KSx0aGlzLl9nZW9sb2NhdGVCdXR0b249ci5jcmVhdGUoImJ1dHRvbiIsIm1hcGJveGdsLWN0cmwtaWNvbiBtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZSIsdGhpcy5fY29udGFpbmVyKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24udHlwZT0iYnV0dG9uIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiR2VvbG9jYXRlIiksdGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uJiYodGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwiZmFsc2UiKSx0aGlzLl93YXRjaFN0YXRlPSJPRkYiKSx0aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmKHRoaXMuX2RvdEVsZW1lbnQ9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90IiksdGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2VyPW5ldyBxbih0aGlzLl9kb3RFbGVtZW50KSx0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJih0aGlzLl93YXRjaFN0YXRlPSJPRkYiKSksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLnRyaWdnZXIuYmluZCh0aGlzKSksdGhpcy5fc2V0dXA9ITAsdGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uJiZ0aGlzLl9tYXAub24oIm1vdmVzdGFydCIsZnVuY3Rpb24oZSl7ZS5nZW9sb2NhdGVTb3VyY2V8fCJBQ1RJVkVfTE9DSyIhPT1uLl93YXRjaFN0YXRlfHwobi5fd2F0Y2hTdGF0ZT0iQkFDS0dST1VORCIsbi5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQiKSxuLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIiksbi5maXJlKG5ldyB0LkV2ZW50KCJ0cmFja3VzZXJsb2NhdGlvbmVuZCIpKSl9KSk6dC53YXJuT25jZSgiR2VvbG9jYXRpb24gc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLCB0aGUgR2VvbG9jYXRlQ29udHJvbCB3aWxsIG5vdCBiZSB2aXNpYmxlLiIpfSxuLnByb3RvdHlwZS50cmlnZ2VyPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX3NldHVwKXJldHVybiB0Lndhcm5PbmNlKCJHZW9sb2NhdGUgY29udHJvbCB0cmlnZ2VyZWQgYmVmb3JlIGFkZGVkIHRvIGEgbWFwIiksITE7aWYodGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uKXtzd2l0Y2godGhpcy5fd2F0Y2hTdGF0ZSl7Y2FzZSJPRkYiOnRoaXMuX3dhdGNoU3RhdGU9IldBSVRJTkdfQUNUSVZFIix0aGlzLmZpcmUobmV3IHQuRXZlbnQoInRyYWNrdXNlcmxvY2F0aW9uc3RhcnQiKSk7YnJlYWs7Y2FzZSJXQUlUSU5HX0FDVElWRSI6Y2FzZSJBQ1RJVkVfTE9DSyI6Y2FzZSJBQ1RJVkVfRVJST1IiOmNhc2UiQkFDS0dST1VORF9FUlJPUiI6dGhpcy5fd2F0Y2hTdGF0ZT0iT0ZGIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvciIpLHRoaXMuZmlyZShuZXcgdC5FdmVudCgidHJhY2t1c2VybG9jYXRpb25lbmQiKSk7YnJlYWs7Y2FzZSJCQUNLR1JPVU5EIjp0aGlzLl93YXRjaFN0YXRlPSJBQ1RJVkVfTE9DSyIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQiKSx0aGlzLl9sYXN0S25vd25Qb3NpdGlvbiYmdGhpcy5fdXBkYXRlQ2FtZXJhKHRoaXMuX2xhc3RLbm93blBvc2l0aW9uKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoInRyYWNrdXNlcmxvY2F0aW9uc3RhcnQiKSl9c3dpdGNoKHRoaXMuX3dhdGNoU3RhdGUpe2Nhc2UiV0FJVElOR19BQ1RJVkUiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZSIpO2JyZWFrO2Nhc2UiQUNUSVZFX0xPQ0siOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKTticmVhaztjYXNlIkFDVElWRV9FUlJPUiI6dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yIik7YnJlYWs7Y2FzZSJCQUNLR1JPVU5EIjp0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZCIpO2JyZWFrO2Nhc2UiQkFDS0dST1VORF9FUlJPUiI6dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvciIpfSJPRkYiPT09dGhpcy5fd2F0Y2hTdGF0ZSYmdm9pZCAwIT09dGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEP3RoaXMuX2NsZWFyV2F0Y2goKTp2b2lkIDA9PT10aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQmJih0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsInRydWUiKSx0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQ9dC53aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24odGhpcy5fb25TdWNjZXNzLHRoaXMuX29uRXJyb3IsdGhpcy5vcHRpb25zLnBvc2l0aW9uT3B0aW9ucykpfWVsc2UgdC53aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbih0aGlzLl9vblN1Y2Nlc3MsdGhpcy5fb25FcnJvcix0aGlzLm9wdGlvbnMucG9zaXRpb25PcHRpb25zKSx0aGlzLl90aW1lb3V0SWQ9c2V0VGltZW91dCh0aGlzLl9maW5pc2gsMWU0KTtyZXR1cm4hMH0sbi5wcm90b3R5cGUuX2NsZWFyV2F0Y2g9ZnVuY3Rpb24oKXt0LndpbmRvdy5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQpLHRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRD12b2lkIDAsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpLHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLl91cGRhdGVNYXJrZXIobnVsbCl9LG59KHQuRXZlbnRlZCksWW49e21heFdpZHRoOjEwMCx1bml0OiJtZXRyaWMifSxXbj1mdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9dC5leHRlbmQoe30sWW4sZSksdC5iaW5kQWxsKFsiX29uTW92ZSIsInNldFVuaXQiXSx0aGlzKX07ZnVuY3Rpb24gWG4odCxlLHIpe3ZhciBuLGEsaSxvLHMsbCxjPXImJnIubWF4V2lkdGh8fDEwMCx1PXQuX2NvbnRhaW5lci5jbGllbnRIZWlnaHQvMixoPShuPXQudW5wcm9qZWN0KFswLHVdKSxhPXQudW5wcm9qZWN0KFtjLHVdKSxpPU1hdGguUEkvMTgwLG89bi5sYXQqaSxzPWEubGF0KmksbD1NYXRoLnNpbihvKSpNYXRoLnNpbihzKStNYXRoLmNvcyhvKSpNYXRoLmNvcyhzKSpNYXRoLmNvcygoYS5sbmctbi5sbmcpKmkpLDYzNzFlMypNYXRoLmFjb3MoTWF0aC5taW4obCwxKSkpO2lmKHImJiJpbXBlcmlhbCI9PT1yLnVuaXQpe3ZhciBmPTMuMjgwOCpoO2Y+NTI4MD9abihlLGMsZi81MjgwLCJtaSIpOlpuKGUsYyxmLCJmdCIpfWVsc2UgciYmIm5hdXRpY2FsIj09PXIudW5pdD9abihlLGMsaC8xODUyLCJubSIpOlpuKGUsYyxoLCJtIil9ZnVuY3Rpb24gWm4odCxlLHIsbil7dmFyIGEsaSxvLHM9KGE9ciwoaT1NYXRoLnBvdygxMCwoIiIrTWF0aC5mbG9vcihhKSkubGVuZ3RoLTEpKSoobz0obz1hL2kpPj0xMD8xMDpvPj01PzU6bz49Mz8zOm8+PTI/MjpvPj0xPzE6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5wb3coMTAsTWF0aC5jZWlsKC1NYXRoLmxvZyh0KS9NYXRoLkxOMTApKTtyZXR1cm4gTWF0aC5yb3VuZCh0KmUpL2V9KG8pKSksbD1zL3I7Im0iPT09biYmcz49MWUzJiYocy89MWUzLG49ImttIiksdC5zdHlsZS53aWR0aD1lKmwrInB4Iix0LmlubmVySFRNTD1zK259V24ucHJvdG90eXBlLmdldERlZmF1bHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiJib3R0b20tbGVmdCJ9LFduLnByb3RvdHlwZS5fb25Nb3ZlPWZ1bmN0aW9uKCl7WG4odGhpcy5fbWFwLHRoaXMuX2NvbnRhaW5lcix0aGlzLm9wdGlvbnMpfSxXbi5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLXNjYWxlIix0LmdldENvbnRhaW5lcigpKSx0aGlzLl9tYXAub24oIm1vdmUiLHRoaXMuX29uTW92ZSksdGhpcy5fb25Nb3ZlKCksdGhpcy5fY29udGFpbmVyfSxXbi5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtyLnJlbW92ZSh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcC5vZmYoIm1vdmUiLHRoaXMuX29uTW92ZSksdGhpcy5fbWFwPXZvaWQgMH0sV24ucHJvdG90eXBlLnNldFVuaXQ9ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLnVuaXQ9dCxYbih0aGlzLl9tYXAsdGhpcy5fY29udGFpbmVyLHRoaXMub3B0aW9ucyl9O3ZhciBKbj1mdW5jdGlvbihlKXt0aGlzLl9mdWxsc2NyZWVuPSExLGUmJmUuY29udGFpbmVyJiYoZS5jb250YWluZXIgaW5zdGFuY2VvZiB0LndpbmRvdy5IVE1MRWxlbWVudD90aGlzLl9jb250YWluZXI9ZS5jb250YWluZXI6dC53YXJuT25jZSgiRnVsbCBzY3JlZW4gY29udHJvbCAnY29udGFpbmVyJyBtdXN0IGJlIGEgRE9NIGVsZW1lbnQuIikpLHQuYmluZEFsbChbIl9vbkNsaWNrRnVsbHNjcmVlbiIsIl9jaGFuZ2VJY29uIl0sdGhpcyksIm9uZnVsbHNjcmVlbmNoYW5nZSJpbiB0LndpbmRvdy5kb2N1bWVudD90aGlzLl9mdWxsc2NyZWVuY2hhbmdlPSJmdWxsc2NyZWVuY2hhbmdlIjoib25tb3pmdWxsc2NyZWVuY2hhbmdlImluIHQud2luZG93LmRvY3VtZW50P3RoaXMuX2Z1bGxzY3JlZW5jaGFuZ2U9Im1vemZ1bGxzY3JlZW5jaGFuZ2UiOiJvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiaW4gdC53aW5kb3cuZG9jdW1lbnQ/dGhpcy5fZnVsbHNjcmVlbmNoYW5nZT0id2Via2l0ZnVsbHNjcmVlbmNoYW5nZSI6Im9ubXNmdWxsc2NyZWVuY2hhbmdlImluIHQud2luZG93LmRvY3VtZW50JiYodGhpcy5fZnVsbHNjcmVlbmNoYW5nZT0iTVNGdWxsc2NyZWVuQ2hhbmdlIiksdGhpcy5fY2xhc3NOYW1lPSJtYXBib3hnbC1jdHJsIn07Sm4ucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXA9ZSx0aGlzLl9jb250YWluZXJ8fCh0aGlzLl9jb250YWluZXI9dGhpcy5fbWFwLmdldENvbnRhaW5lcigpKSx0aGlzLl9jb250cm9sQ29udGFpbmVyPXIuY3JlYXRlKCJkaXYiLHRoaXMuX2NsYXNzTmFtZSsiIG1hcGJveGdsLWN0cmwtZ3JvdXAiKSx0aGlzLl9jaGVja0Z1bGxzY3JlZW5TdXBwb3J0KCk/dGhpcy5fc2V0dXBVSSgpOih0aGlzLl9jb250cm9sQ29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHQud2Fybk9uY2UoIlRoaXMgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgZnVsbHNjcmVlbiBtb2RlLiIpKSx0aGlzLl9jb250cm9sQ29udGFpbmVyfSxKbi5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtyLnJlbW92ZSh0aGlzLl9jb250cm9sQ29udGFpbmVyKSx0aGlzLl9tYXA9bnVsbCx0LndpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuX2Z1bGxzY3JlZW5jaGFuZ2UsdGhpcy5fY2hhbmdlSWNvbil9LEpuLnByb3RvdHlwZS5fY2hlY2tGdWxsc2NyZWVuU3VwcG9ydD1mdW5jdGlvbigpe3JldHVybiEhKHQud2luZG93LmRvY3VtZW50LmZ1bGxzY3JlZW5FbmFibGVkfHx0LndpbmRvdy5kb2N1bWVudC5tb3pGdWxsU2NyZWVuRW5hYmxlZHx8dC53aW5kb3cuZG9jdW1lbnQubXNGdWxsc2NyZWVuRW5hYmxlZHx8dC53aW5kb3cuZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQpfSxKbi5wcm90b3R5cGUuX3NldHVwVUk9ZnVuY3Rpb24oKXsodGhpcy5fZnVsbHNjcmVlbkJ1dHRvbj1yLmNyZWF0ZSgiYnV0dG9uIix0aGlzLl9jbGFzc05hbWUrIi1pY29uICIrdGhpcy5fY2xhc3NOYW1lKyItZnVsbHNjcmVlbiIsdGhpcy5fY29udHJvbENvbnRhaW5lcikpLnR5cGU9ImJ1dHRvbiIsdGhpcy5fdXBkYXRlVGl0bGUoKSx0aGlzLl9mdWxsc2NyZWVuQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9vbkNsaWNrRnVsbHNjcmVlbiksdC53aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9mdWxsc2NyZWVuY2hhbmdlLHRoaXMuX2NoYW5nZUljb24pfSxKbi5wcm90b3R5cGUuX3VwZGF0ZVRpdGxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faXNGdWxsc2NyZWVuKCk/IkV4aXQgZnVsbHNjcmVlbiI6IkVudGVyIGZ1bGxzY3JlZW4iO3RoaXMuX2Z1bGxzY3JlZW5CdXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSx0aGlzLl9mdWxsc2NyZWVuQnV0dG9uLnRpdGxlPXR9LEpuLnByb3RvdHlwZS5faXNGdWxsc2NyZWVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1bGxzY3JlZW59LEpuLnByb3RvdHlwZS5fY2hhbmdlSWNvbj1mdW5jdGlvbigpeyh0LndpbmRvdy5kb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudHx8dC53aW5kb3cuZG9jdW1lbnQubW96RnVsbFNjcmVlbkVsZW1lbnR8fHQud2luZG93LmRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHx0LndpbmRvdy5kb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50KT09PXRoaXMuX2NvbnRhaW5lciE9PXRoaXMuX2Z1bGxzY3JlZW4mJih0aGlzLl9mdWxsc2NyZWVuPSF0aGlzLl9mdWxsc2NyZWVuLHRoaXMuX2Z1bGxzY3JlZW5CdXR0b24uY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLl9jbGFzc05hbWUrIi1zaHJpbmsiKSx0aGlzLl9mdWxsc2NyZWVuQnV0dG9uLmNsYXNzTGlzdC50b2dnbGUodGhpcy5fY2xhc3NOYW1lKyItZnVsbHNjcmVlbiIpLHRoaXMuX3VwZGF0ZVRpdGxlKCkpfSxKbi5wcm90b3R5cGUuX29uQ2xpY2tGdWxsc2NyZWVuPWZ1bmN0aW9uKCl7dGhpcy5faXNGdWxsc2NyZWVuKCk/dC53aW5kb3cuZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4/dC53aW5kb3cuZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTp0LndpbmRvdy5kb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuP3Qud2luZG93LmRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4oKTp0LndpbmRvdy5kb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVuP3Qud2luZG93LmRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4oKTp0LndpbmRvdy5kb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuJiZ0LndpbmRvdy5kb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk6dGhpcy5fY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuP3RoaXMuX2NvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpOnRoaXMuX2NvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbj90aGlzLl9jb250YWluZXIubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTp0aGlzLl9jb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbj90aGlzLl9jb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbigpOnRoaXMuX2NvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbiYmdGhpcy5fY29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9O3ZhciBLbj17Y2xvc2VCdXR0b246ITAsY2xvc2VPbkNsaWNrOiEwLGNsYXNzTmFtZToiIixtYXhXaWR0aDoiMjQwcHgifSxRbj1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKHIpe2UuY2FsbCh0aGlzKSx0aGlzLm9wdGlvbnM9dC5leHRlbmQoT2JqZWN0LmNyZWF0ZShLbiksciksdC5iaW5kQWxsKFsiX3VwZGF0ZSIsIl9vbkNsaWNrQ2xvc2UiLCJyZW1vdmUiXSx0aGlzKX1yZXR1cm4gZSYmKG4uX19wcm90b19fPWUpLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sbi5wcm90b3R5cGUuYWRkVG89ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5fbWFwPWUsdGhpcy5vcHRpb25zLmNsb3NlT25DbGljayYmdGhpcy5fbWFwLm9uKCJjbGljayIsdGhpcy5fb25DbGlja0Nsb3NlKSx0aGlzLl9tYXAub24oInJlbW92ZSIsdGhpcy5yZW1vdmUpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX3RyYWNrUG9pbnRlcj8odGhpcy5fbWFwLm9uKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKHQpe3IuX3VwZGF0ZSh0LnBvaW50KX0pLHRoaXMuX21hcC5vbigibW91c2V1cCIsZnVuY3Rpb24odCl7ci5fdXBkYXRlKHQucG9pbnQpfSksdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLXBvcHVwLXRyYWNrLXBvaW50ZXIiKSx0aGlzLl9tYXAuX2NhbnZhc0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC10cmFjay1wb2ludGVyIikpOnRoaXMuX21hcC5vbigibW92ZSIsdGhpcy5fdXBkYXRlKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoIm9wZW4iKSksdGhpc30sbi5wcm90b3R5cGUuaXNPcGVuPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9tYXB9LG4ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50JiZyLnJlbW92ZSh0aGlzLl9jb250ZW50KSx0aGlzLl9jb250YWluZXImJihyLnJlbW92ZSh0aGlzLl9jb250YWluZXIpLGRlbGV0ZSB0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcCYmKHRoaXMuX21hcC5vZmYoIm1vdmUiLHRoaXMuX3VwZGF0ZSksdGhpcy5fbWFwLm9mZigiY2xpY2siLHRoaXMuX29uQ2xpY2tDbG9zZSksdGhpcy5fbWFwLm9mZigicmVtb3ZlIix0aGlzLnJlbW92ZSksdGhpcy5fbWFwLm9mZigibW91c2Vtb3ZlIiksZGVsZXRlIHRoaXMuX21hcCksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJjbG9zZSIpKSx0aGlzfSxuLnByb3RvdHlwZS5nZXRMbmdMYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG5nTGF0fSxuLnByb3RvdHlwZS5zZXRMbmdMYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2xuZ0xhdD10LkxuZ0xhdC5jb252ZXJ0KGUpLHRoaXMuX3Bvcz1udWxsLHRoaXMuX3RyYWNrUG9pbnRlcj0hMSx0aGlzLl91cGRhdGUoKSx0aGlzLl9tYXAmJih0aGlzLl9tYXAub24oIm1vdmUiLHRoaXMuX3VwZGF0ZSksdGhpcy5fbWFwLm9mZigibW91c2Vtb3ZlIiksdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLXBvcHVwLXRyYWNrLXBvaW50ZXIiKSx0aGlzLl9tYXAuX2NhbnZhc0NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC10cmFjay1wb2ludGVyIikpLHRoaXN9LG4ucHJvdG90eXBlLnRyYWNrUG9pbnRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3RyYWNrUG9pbnRlcj0hMCx0aGlzLl9wb3M9bnVsbCx0aGlzLl9tYXAmJih0aGlzLl9tYXAub2ZmKCJtb3ZlIix0aGlzLl91cGRhdGUpLHRoaXMuX21hcC5vbigibW91c2Vtb3ZlIixmdW5jdGlvbihlKXt0Ll91cGRhdGUoZS5wb2ludCl9KSx0aGlzLl9tYXAub24oImRyYWciLGZ1bmN0aW9uKGUpe3QuX3VwZGF0ZShlLnBvaW50KX0pLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1wb3B1cC10cmFjay1wb2ludGVyIiksdGhpcy5fbWFwLl9jYW52YXNDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtdHJhY2stcG9pbnRlciIpKSx0aGlzfSxuLnByb3RvdHlwZS5nZXRFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sbi5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXRET01Db250ZW50KHQud2luZG93LmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpKX0sbi5wcm90b3R5cGUuc2V0SFRNTD1mdW5jdGlvbihlKXt2YXIgcixuPXQud2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxhPXQud2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKTtmb3IoYS5pbm5lckhUTUw9ZTtyPWEuZmlyc3RDaGlsZDspbi5hcHBlbmRDaGlsZChyKTtyZXR1cm4gdGhpcy5zZXRET01Db250ZW50KG4pfSxuLnByb3RvdHlwZS5nZXRNYXhXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250YWluZXIuc3R5bGUubWF4V2lkdGh9LG4ucHJvdG90eXBlLnNldE1heFdpZHRoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMubWF4V2lkdGg9dCx0aGlzLl91cGRhdGUoKSx0aGlzfSxuLnByb3RvdHlwZS5zZXRET01Db250ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jcmVhdGVDb250ZW50KCksdGhpcy5fY29udGVudC5hcHBlbmRDaGlsZCh0KSx0aGlzLl91cGRhdGUoKSx0aGlzfSxuLnByb3RvdHlwZS5fY3JlYXRlQ29udGVudD1mdW5jdGlvbigpe3RoaXMuX2NvbnRlbnQmJnIucmVtb3ZlKHRoaXMuX2NvbnRlbnQpLHRoaXMuX2NvbnRlbnQ9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLXBvcHVwLWNvbnRlbnQiLHRoaXMuX2NvbnRhaW5lciksdGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uJiYodGhpcy5fY2xvc2VCdXR0b249ci5jcmVhdGUoImJ1dHRvbiIsIm1hcGJveGdsLXBvcHVwLWNsb3NlLWJ1dHRvbiIsdGhpcy5fY29udGVudCksdGhpcy5fY2xvc2VCdXR0b24udHlwZT0iYnV0dG9uIix0aGlzLl9jbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCJDbG9zZSBwb3B1cCIpLHRoaXMuX2Nsb3NlQnV0dG9uLmlubmVySFRNTD0iJiMyMTU7Iix0aGlzLl9jbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fb25DbGlja0Nsb3NlKSl9LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyxhPXRoaXMuX2xuZ0xhdHx8dGhpcy5fdHJhY2tQb2ludGVyO2lmKHRoaXMuX21hcCYmYSYmdGhpcy5fY29udGVudCYmKHRoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2NvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtcG9wdXAiLHRoaXMuX21hcC5nZXRDb250YWluZXIoKSksdGhpcy5fdGlwPXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1wb3B1cC10aXAiLHRoaXMuX2NvbnRhaW5lciksdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnQpLHRoaXMub3B0aW9ucy5jbGFzc05hbWUmJnRoaXMub3B0aW9ucy5jbGFzc05hbWUuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCh0KX0pKSx0aGlzLm9wdGlvbnMubWF4V2lkdGgmJnRoaXMuX2NvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCE9PXRoaXMub3B0aW9ucy5tYXhXaWR0aCYmKHRoaXMuX2NvbnRhaW5lci5zdHlsZS5tYXhXaWR0aD10aGlzLm9wdGlvbnMubWF4V2lkdGgpLHRoaXMuX21hcC50cmFuc2Zvcm0ucmVuZGVyV29ybGRDb3BpZXMmJiF0aGlzLl90cmFja1BvaW50ZXImJih0aGlzLl9sbmdMYXQ9Tm4odGhpcy5fbG5nTGF0LHRoaXMuX3Bvcyx0aGlzLl9tYXAudHJhbnNmb3JtKSksIXRoaXMuX3RyYWNrUG9pbnRlcnx8ZSkpe3ZhciBpPXRoaXMuX3Bvcz10aGlzLl90cmFja1BvaW50ZXImJmU/ZTp0aGlzLl9tYXAucHJvamVjdCh0aGlzLl9sbmdMYXQpLG89dGhpcy5vcHRpb25zLmFuY2hvcixzPWZ1bmN0aW9uIGUocil7aWYocil7aWYoIm51bWJlciI9PXR5cGVvZiByKXt2YXIgbj1NYXRoLnJvdW5kKE1hdGguc3FydCguNSpNYXRoLnBvdyhyLDIpKSk7cmV0dXJue2NlbnRlcjpuZXcgdC5Qb2ludCgwLDApLHRvcDpuZXcgdC5Qb2ludCgwLHIpLCJ0b3AtbGVmdCI6bmV3IHQuUG9pbnQobixuKSwidG9wLXJpZ2h0IjpuZXcgdC5Qb2ludCgtbixuKSxib3R0b206bmV3IHQuUG9pbnQoMCwtciksImJvdHRvbS1sZWZ0IjpuZXcgdC5Qb2ludChuLC1uKSwiYm90dG9tLXJpZ2h0IjpuZXcgdC5Qb2ludCgtbiwtbiksbGVmdDpuZXcgdC5Qb2ludChyLDApLHJpZ2h0Om5ldyB0LlBvaW50KC1yLDApfX1pZihyIGluc3RhbmNlb2YgdC5Qb2ludHx8QXJyYXkuaXNBcnJheShyKSl7dmFyIGE9dC5Qb2ludC5jb252ZXJ0KHIpO3JldHVybntjZW50ZXI6YSx0b3A6YSwidG9wLWxlZnQiOmEsInRvcC1yaWdodCI6YSxib3R0b206YSwiYm90dG9tLWxlZnQiOmEsImJvdHRvbS1yaWdodCI6YSxsZWZ0OmEscmlnaHQ6YX19cmV0dXJue2NlbnRlcjp0LlBvaW50LmNvbnZlcnQoci5jZW50ZXJ8fFswLDBdKSx0b3A6dC5Qb2ludC5jb252ZXJ0KHIudG9wfHxbMCwwXSksInRvcC1sZWZ0Ijp0LlBvaW50LmNvbnZlcnQoclsidG9wLWxlZnQiXXx8WzAsMF0pLCJ0b3AtcmlnaHQiOnQuUG9pbnQuY29udmVydChyWyJ0b3AtcmlnaHQiXXx8WzAsMF0pLGJvdHRvbTp0LlBvaW50LmNvbnZlcnQoci5ib3R0b218fFswLDBdKSwiYm90dG9tLWxlZnQiOnQuUG9pbnQuY29udmVydChyWyJib3R0b20tbGVmdCJdfHxbMCwwXSksImJvdHRvbS1yaWdodCI6dC5Qb2ludC5jb252ZXJ0KHJbImJvdHRvbS1yaWdodCJdfHxbMCwwXSksbGVmdDp0LlBvaW50LmNvbnZlcnQoci5sZWZ0fHxbMCwwXSkscmlnaHQ6dC5Qb2ludC5jb252ZXJ0KHIucmlnaHR8fFswLDBdKX19cmV0dXJuIGUobmV3IHQuUG9pbnQoMCwwKSl9KHRoaXMub3B0aW9ucy5vZmZzZXQpO2lmKCFvKXt2YXIgbCxjPXRoaXMuX2NvbnRhaW5lci5vZmZzZXRXaWR0aCx1PXRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQ7bD1pLnkrcy5ib3R0b20ueTx1P1sidG9wIl06aS55PnRoaXMuX21hcC50cmFuc2Zvcm0uaGVpZ2h0LXU/WyJib3R0b20iXTpbXSxpLng8Yy8yP2wucHVzaCgibGVmdCIpOmkueD50aGlzLl9tYXAudHJhbnNmb3JtLndpZHRoLWMvMiYmbC5wdXNoKCJyaWdodCIpLG89MD09PWwubGVuZ3RoPyJib3R0b20iOmwuam9pbigiLSIpfXZhciBoPWkuYWRkKHNbb10pLnJvdW5kKCk7ci5zZXRUcmFuc2Zvcm0odGhpcy5fY29udGFpbmVyLGpuW29dKyIgdHJhbnNsYXRlKCIraC54KyJweCwiK2gueSsicHgpIiksVm4odGhpcy5fY29udGFpbmVyLG8sInBvcHVwIil9fSxuLnByb3RvdHlwZS5fb25DbGlja0Nsb3NlPWZ1bmN0aW9uKCl7dGhpcy5yZW1vdmUoKX0sbn0odC5FdmVudGVkKSwkbj17dmVyc2lvbjp0LnZlcnNpb24sc3VwcG9ydGVkOmUsc2V0UlRMVGV4dFBsdWdpbjp0LnNldFJUTFRleHRQbHVnaW4sTWFwOkRuLE5hdmlnYXRpb25Db250cm9sOkJuLEdlb2xvY2F0ZUNvbnRyb2w6R24sQXR0cmlidXRpb25Db250cm9sOkxuLFNjYWxlQ29udHJvbDpXbixGdWxsc2NyZWVuQ29udHJvbDpKbixQb3B1cDpRbixNYXJrZXI6cW4sU3R5bGU6UmUsTG5nTGF0OnQuTG5nTGF0LExuZ0xhdEJvdW5kczp0LkxuZ0xhdEJvdW5kcyxQb2ludDp0LlBvaW50LE1lcmNhdG9yQ29vcmRpbmF0ZTp0Lk1lcmNhdG9yQ29vcmRpbmF0ZSxFdmVudGVkOnQuRXZlbnRlZCxjb25maWc6dC5jb25maWcsZ2V0IGFjY2Vzc1Rva2VuKCl7cmV0dXJuIHQuY29uZmlnLkFDQ0VTU19UT0tFTn0sc2V0IGFjY2Vzc1Rva2VuKGUpe3QuY29uZmlnLkFDQ0VTU19UT0tFTj1lfSxnZXQgYmFzZUFwaVVybCgpe3JldHVybiB0LmNvbmZpZy5BUElfVVJMfSxzZXQgYmFzZUFwaVVybChlKXt0LmNvbmZpZy5BUElfVVJMPWV9LGdldCB3b3JrZXJDb3VudCgpe3JldHVybiBJdC53b3JrZXJDb3VudH0sc2V0IHdvcmtlckNvdW50KHQpe0l0LndvcmtlckNvdW50PXR9LGdldCBtYXhQYXJhbGxlbEltYWdlUmVxdWVzdHMoKXtyZXR1cm4gdC5jb25maWcuTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTfSxzZXQgbWF4UGFyYWxsZWxJbWFnZVJlcXVlc3RzKGUpe3QuY29uZmlnLk1BWF9QQVJBTExFTF9JTUFHRV9SRVFVRVNUUz1lfSxjbGVhclN0b3JhZ2U6ZnVuY3Rpb24oZSl7dC5jbGVhclRpbGVDYWNoZShlKX0sd29ya2VyVXJsOiIifTtyZXR1cm4gJG59KSxyfSwib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9lLmV4cG9ydHM9YSgpOihuPW58fHNlbGYpLm1hcGJveGdsPWEoKX0se31dLDQyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE8PHQrMSxyPW5ldyBBcnJheShlKSxuPTA7bjxlOysrbilyW25dPWkodCxuKTtyZXR1cm4gcn07dmFyIG49dCgiY29udmV4LWh1bGwiKTtmdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG49bmV3IEFycmF5KHQpLGE9MDthPHQ7KythKW5bYV09MCxhPT09ZSYmKG5bYV0rPS41KSxhPT09ciYmKG5bYV0rPS41KTtyZXR1cm4gbn1mdW5jdGlvbiBpKHQsZSl7aWYoMD09PWV8fGU9PT0oMTw8dCsxKS0xKXJldHVybltdO2Zvcih2YXIgcj1bXSxpPVtdLG89MDtvPD10OysrbylpZihlJjE8PG8pe3IucHVzaChhKHQsby0xLG8tMSkpLGkucHVzaChudWxsKTtmb3IodmFyIHM9MDtzPD10Oysrcyl+ZSYxPDxzJiYoci5wdXNoKGEodCxvLTEscy0xKSksaS5wdXNoKFtvLHNdKSl9dmFyIGw9bihyKSxjPVtdO3Q6Zm9yKG89MDtvPGwubGVuZ3RoOysrbyl7dmFyIHU9bFtvXSxoPVtdO2ZvcihzPTA7czx1Lmxlbmd0aDsrK3Mpe2lmKCFpW3Vbc11dKWNvbnRpbnVlIHQ7aC5wdXNoKGlbdVtzXV0uc2xpY2UoKSl9Yy5wdXNoKGgpfXJldHVybiBjfX0seyJjb252ZXgtaHVsbCI6MTMyfV0sNDMwOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9ub3JtYWxpemUiKSxhPXQoImdsLW1hdDQvY3JlYXRlIiksaT10KCJnbC1tYXQ0L2Nsb25lIiksbz10KCJnbC1tYXQ0L2RldGVybWluYW50Iikscz10KCJnbC1tYXQ0L2ludmVydCIpLGw9dCgiZ2wtbWF0NC90cmFuc3Bvc2UiKSxjPXtsZW5ndGg6dCgiZ2wtdmVjMy9sZW5ndGgiKSxub3JtYWxpemU6dCgiZ2wtdmVjMy9ub3JtYWxpemUiKSxkb3Q6dCgiZ2wtdmVjMy9kb3QiKSxjcm9zczp0KCJnbC12ZWMzL2Nyb3NzIil9LHU9YSgpLGg9YSgpLGY9WzAsMCwwLDBdLHA9W1swLDAsMF0sWzAsMCwwXSxbMCwwLDBdXSxkPVswLDAsMF07ZnVuY3Rpb24gZyh0LGUscixuLGEpe3RbMF09ZVswXSpuK3JbMF0qYSx0WzFdPWVbMV0qbityWzFdKmEsdFsyXT1lWzJdKm4rclsyXSphfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhLHYsbSl7aWYoZXx8KGU9WzAsMCwwXSkscnx8KHI9WzAsMCwwXSksYXx8KGE9WzAsMCwwXSksdnx8KHY9WzAsMCwwLDFdKSxtfHwobT1bMCwwLDAsMV0pLCFuKHUsdCkpcmV0dXJuITE7aWYoaShoLHUpLGhbM109MCxoWzddPTAsaFsxMV09MCxoWzE1XT0xLE1hdGguYWJzKG8oaCk8MWUtOCkpcmV0dXJuITE7dmFyIHkseCxiLF8sdyxrLFQsTT11WzNdLEE9dVs3XSxTPXVbMTFdLEU9dVsxMl0sTD11WzEzXSxDPXVbMTRdLFA9dVsxNV07aWYoMCE9PU18fDAhPT1BfHwwIT09Uyl7aWYoZlswXT1NLGZbMV09QSxmWzJdPVMsZlszXT1QLCFzKGgsaCkpcmV0dXJuITE7bChoLGgpLHk9dixiPWgsXz0oeD1mKVswXSx3PXhbMV0saz14WzJdLFQ9eFszXSx5WzBdPWJbMF0qXytiWzRdKncrYls4XSprK2JbMTJdKlQseVsxXT1iWzFdKl8rYls1XSp3K2JbOV0qaytiWzEzXSpULHlbMl09YlsyXSpfK2JbNl0qdytiWzEwXSprK2JbMTRdKlQseVszXT1iWzNdKl8rYls3XSp3K2JbMTFdKmsrYlsxNV0qVH1lbHNlIHZbMF09dlsxXT12WzJdPTAsdlszXT0xO2lmKGVbMF09RSxlWzFdPUwsZVsyXT1DLGZ1bmN0aW9uKHQsZSl7dFswXVswXT1lWzBdLHRbMF1bMV09ZVsxXSx0WzBdWzJdPWVbMl0sdFsxXVswXT1lWzRdLHRbMV1bMV09ZVs1XSx0WzFdWzJdPWVbNl0sdFsyXVswXT1lWzhdLHRbMl1bMV09ZVs5XSx0WzJdWzJdPWVbMTBdfShwLHUpLHJbMF09Yy5sZW5ndGgocFswXSksYy5ub3JtYWxpemUocFswXSxwWzBdKSxhWzBdPWMuZG90KHBbMF0scFsxXSksZyhwWzFdLHBbMV0scFswXSwxLC1hWzBdKSxyWzFdPWMubGVuZ3RoKHBbMV0pLGMubm9ybWFsaXplKHBbMV0scFsxXSksYVswXS89clsxXSxhWzFdPWMuZG90KHBbMF0scFsyXSksZyhwWzJdLHBbMl0scFswXSwxLC1hWzFdKSxhWzJdPWMuZG90KHBbMV0scFsyXSksZyhwWzJdLHBbMl0scFsxXSwxLC1hWzJdKSxyWzJdPWMubGVuZ3RoKHBbMl0pLGMubm9ybWFsaXplKHBbMl0scFsyXSksYVsxXS89clsyXSxhWzJdLz1yWzJdLGMuY3Jvc3MoZCxwWzFdLHBbMl0pLGMuZG90KHBbMF0sZCk8MClmb3IodmFyIE89MDtPPDM7TysrKXJbT10qPS0xLHBbT11bMF0qPS0xLHBbT11bMV0qPS0xLHBbT11bMl0qPS0xO3JldHVybiBtWzBdPS41Kk1hdGguc3FydChNYXRoLm1heCgxK3BbMF1bMF0tcFsxXVsxXS1wWzJdWzJdLDApKSxtWzFdPS41Kk1hdGguc3FydChNYXRoLm1heCgxLXBbMF1bMF0rcFsxXVsxXS1wWzJdWzJdLDApKSxtWzJdPS41Kk1hdGguc3FydChNYXRoLm1heCgxLXBbMF1bMF0tcFsxXVsxXStwWzJdWzJdLDApKSxtWzNdPS41Kk1hdGguc3FydChNYXRoLm1heCgxK3BbMF1bMF0rcFsxXVsxXStwWzJdWzJdLDApKSxwWzJdWzFdPnBbMV1bMl0mJihtWzBdPS1tWzBdKSxwWzBdWzJdPnBbMl1bMF0mJihtWzFdPS1tWzFdKSxwWzFdWzBdPnBbMF1bMV0mJihtWzJdPS1tWzJdKSwhMH19LHsiLi9ub3JtYWxpemUiOjQzMSwiZ2wtbWF0NC9jbG9uZSI6MjYyLCJnbC1tYXQ0L2NyZWF0ZSI6MjYzLCJnbC1tYXQ0L2RldGVybWluYW50IjoyNjQsImdsLW1hdDQvaW52ZXJ0IjoyNjgsImdsLW1hdDQvdHJhbnNwb3NlIjoyNzksImdsLXZlYzMvY3Jvc3MiOjMzNiwiZ2wtdmVjMy9kb3QiOjM0MSwiZ2wtdmVjMy9sZW5ndGgiOjM1MSwiZ2wtdmVjMy9ub3JtYWxpemUiOjM1OH1dLDQzMTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMTVdO2lmKDA9PT1yKXJldHVybiExO2Zvcih2YXIgbj0xL3IsYT0wO2E8MTY7YSsrKXRbYV09ZVthXSpuO3JldHVybiEwfX0se31dLDQzMjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdsLXZlYzMvbGVycCIpLGE9dCgibWF0NC1yZWNvbXBvc2UiKSxpPXQoIm1hdDQtZGVjb21wb3NlIiksbz10KCJnbC1tYXQ0L2RldGVybWluYW50Iikscz10KCJxdWF0LXNsZXJwIiksbD1oKCksYz1oKCksdT1oKCk7ZnVuY3Rpb24gaCgpe3JldHVybnt0cmFuc2xhdGU6ZigpLHNjYWxlOmYoMSksc2tldzpmKCkscGVyc3BlY3RpdmU6WzAsMCwwLDFdLHF1YXRlcm5pb246WzAsMCwwLDFdfX1mdW5jdGlvbiBmKHQpe3JldHVyblt0fHwwLHR8fDAsdHx8MF19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGgpe2lmKDA9PT1vKGUpfHwwPT09byhyKSlyZXR1cm4hMTt2YXIgZj1pKGUsbC50cmFuc2xhdGUsbC5zY2FsZSxsLnNrZXcsbC5wZXJzcGVjdGl2ZSxsLnF1YXRlcm5pb24pLHA9aShyLGMudHJhbnNsYXRlLGMuc2NhbGUsYy5za2V3LGMucGVyc3BlY3RpdmUsYy5xdWF0ZXJuaW9uKTtyZXR1cm4hKCFmfHwhcHx8KG4odS50cmFuc2xhdGUsbC50cmFuc2xhdGUsYy50cmFuc2xhdGUsaCksbih1LnNrZXcsbC5za2V3LGMuc2tldyxoKSxuKHUuc2NhbGUsbC5zY2FsZSxjLnNjYWxlLGgpLG4odS5wZXJzcGVjdGl2ZSxsLnBlcnNwZWN0aXZlLGMucGVyc3BlY3RpdmUsaCkscyh1LnF1YXRlcm5pb24sbC5xdWF0ZXJuaW9uLGMucXVhdGVybmlvbixoKSxhKHQsdS50cmFuc2xhdGUsdS5zY2FsZSx1LnNrZXcsdS5wZXJzcGVjdGl2ZSx1LnF1YXRlcm5pb24pLDApKX19LHsiZ2wtbWF0NC9kZXRlcm1pbmFudCI6MjY0LCJnbC12ZWMzL2xlcnAiOjM1MiwibWF0NC1kZWNvbXBvc2UiOjQzMCwibWF0NC1yZWNvbXBvc2UiOjQzMywicXVhdC1zbGVycCI6NDg1fV0sNDMzOltmdW5jdGlvbih0LGUscil7dmFyIG49e2lkZW50aXR5OnQoImdsLW1hdDQvaWRlbnRpdHkiKSx0cmFuc2xhdGU6dCgiZ2wtbWF0NC90cmFuc2xhdGUiKSxtdWx0aXBseTp0KCJnbC1tYXQ0L211bHRpcGx5IiksY3JlYXRlOnQoImdsLW1hdDQvY3JlYXRlIiksc2NhbGU6dCgiZ2wtbWF0NC9zY2FsZSIpLGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uOnQoImdsLW1hdDQvZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24iKX0sYT0obi5jcmVhdGUoKSxuLmNyZWF0ZSgpKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxvLHMpe3JldHVybiBuLmlkZW50aXR5KHQpLG4uZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24odCxzLGUpLHRbM109b1swXSx0WzddPW9bMV0sdFsxMV09b1syXSx0WzE1XT1vWzNdLG4uaWRlbnRpdHkoYSksMCE9PWlbMl0mJihhWzldPWlbMl0sbi5tdWx0aXBseSh0LHQsYSkpLDAhPT1pWzFdJiYoYVs5XT0wLGFbOF09aVsxXSxuLm11bHRpcGx5KHQsdCxhKSksMCE9PWlbMF0mJihhWzhdPTAsYVs0XT1pWzBdLG4ubXVsdGlwbHkodCx0LGEpKSxuLnNjYWxlKHQsdCxyKSx0fX0seyJnbC1tYXQ0L2NyZWF0ZSI6MjYzLCJnbC1tYXQ0L2Zyb21Sb3RhdGlvblRyYW5zbGF0aW9uIjoyNjYsImdsLW1hdDQvaWRlbnRpdHkiOjI2NywiZ2wtbWF0NC9tdWx0aXBseSI6MjcwLCJnbC1tYXQ0L3NjYWxlIjoyNzcsImdsLW1hdDQvdHJhbnNsYXRlIjoyNzh9XSw0MzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPU1hdGgubG9nMnx8ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpKk1hdGguTE9HMkV9fSx7fV0sNDM1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksYT10KCJtYXQ0LWludGVycG9sYXRlIiksaT10KCJnbC1tYXQ0L2ludmVydCIpLG89dCgiZ2wtbWF0NC9yb3RhdGVYIikscz10KCJnbC1tYXQ0L3JvdGF0ZVkiKSxsPXQoImdsLW1hdDQvcm90YXRlWiIpLGM9dCgiZ2wtbWF0NC9sb29rQXQiKSx1PXQoImdsLW1hdDQvdHJhbnNsYXRlIiksaD0odCgiZ2wtbWF0NC9zY2FsZSIpLHQoImdsLXZlYzMvbm9ybWFsaXplIikpLGY9WzAsMCwwXTtmdW5jdGlvbiBwKHQpe3RoaXMuX2NvbXBvbmVudHM9dC5zbGljZSgpLHRoaXMuX3RpbWU9WzBdLHRoaXMucHJldk1hdHJpeD10LnNsaWNlKCksdGhpcy5uZXh0TWF0cml4PXQuc2xpY2UoKSx0aGlzLmNvbXB1dGVkTWF0cml4PXQuc2xpY2UoKSx0aGlzLmNvbXB1dGVkSW52ZXJzZT10LnNsaWNlKCksdGhpcy5jb21wdXRlZEV5ZT1bMCwwLDBdLHRoaXMuY29tcHV0ZWRVcD1bMCwwLDBdLHRoaXMuY29tcHV0ZWRDZW50ZXI9WzAsMCwwXSx0aGlzLmNvbXB1dGVkUmFkaXVzPVswXSx0aGlzLl9saW1pdHM9Wy0xLzAsMS8wXX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwKCh0PXR8fHt9KS5tYXRyaXh8fFsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXSl9O3ZhciBkPXAucHJvdG90eXBlO2QucmVjYWxjTWF0cml4PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbWUscj1uLmxlKGUsdCksbz10aGlzLmNvbXB1dGVkTWF0cml4O2lmKCEocjwwKSl7dmFyIHM9dGhpcy5fY29tcG9uZW50cztpZihyPT09ZS5sZW5ndGgtMSlmb3IodmFyIGw9MTYqcixjPTA7YzwxNjsrK2Mpb1tjXT1zW2wrK107ZWxzZXt2YXIgdT1lW3IrMV0tZVtyXSxmPShsPTE2KnIsdGhpcy5wcmV2TWF0cml4KSxwPSEwO2ZvcihjPTA7YzwxNjsrK2MpZltjXT1zW2wrK107dmFyIGQ9dGhpcy5uZXh0TWF0cml4O2ZvcihjPTA7YzwxNjsrK2MpZFtjXT1zW2wrK10scD1wJiZmW2NdPT09ZFtjXTtpZih1PDFlLTZ8fHApZm9yKGM9MDtjPDE2OysrYylvW2NdPWZbY107ZWxzZSBhKG8sZixkLCh0LWVbcl0pL3UpfXZhciBnPXRoaXMuY29tcHV0ZWRVcDtnWzBdPW9bMV0sZ1sxXT1vWzVdLGdbMl09b1s5XSxoKGcsZyk7dmFyIHY9dGhpcy5jb21wdXRlZEludmVyc2U7aSh2LG8pO3ZhciBtPXRoaXMuY29tcHV0ZWRFeWUseT12WzE1XTttWzBdPXZbMTJdL3ksbVsxXT12WzEzXS95LG1bMl09dlsxNF0veTt2YXIgeD10aGlzLmNvbXB1dGVkQ2VudGVyLGI9TWF0aC5leHAodGhpcy5jb21wdXRlZFJhZGl1c1swXSk7Zm9yKGM9MDtjPDM7KytjKXhbY109bVtjXS1vWzIrNCpjXSpifX0sZC5pZGxlPWZ1bmN0aW9uKHQpe2lmKCEodDx0aGlzLmxhc3RUKCkpKXtmb3IodmFyIGU9dGhpcy5fY29tcG9uZW50cyxyPWUubGVuZ3RoLTE2LG49MDtuPDE2OysrbillLnB1c2goZVtyKytdKTt0aGlzLl90aW1lLnB1c2godCl9fSxkLmZsdXNoPWZ1bmN0aW9uKHQpe3ZhciBlPW4uZ3QodGhpcy5fdGltZSx0KS0yO2U8MHx8KHRoaXMuX3RpbWUuc3BsaWNlKDAsZSksdGhpcy5fY29tcG9uZW50cy5zcGxpY2UoMCwxNiplKSl9LGQubGFzdFQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGltZVt0aGlzLl90aW1lLmxlbmd0aC0xXX0sZC5sb29rQXQ9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5yZWNhbGNNYXRyaXgodCksZT1lfHx0aGlzLmNvbXB1dGVkRXllLHI9cnx8ZixuPW58fHRoaXMuY29tcHV0ZWRVcCx0aGlzLnNldE1hdHJpeCh0LGModGhpcy5jb21wdXRlZE1hdHJpeCxlLHIsbikpO2Zvcih2YXIgYT0wLGk9MDtpPDM7KytpKWErPU1hdGgucG93KHJbaV0tZVtpXSwyKTthPU1hdGgubG9nKE1hdGguc3FydChhKSksdGhpcy5jb21wdXRlZFJhZGl1c1swXT1hfSxkLnJvdGF0ZT1mdW5jdGlvbih0LGUscixuKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgYT10aGlzLmNvbXB1dGVkSW52ZXJzZTtlJiZzKGEsYSxlKSxyJiZvKGEsYSxyKSxuJiZsKGEsYSxuKSx0aGlzLnNldE1hdHJpeCh0LGkodGhpcy5jb21wdXRlZE1hdHJpeCxhKSl9O3ZhciBnPVswLDAsMF07ZC5wYW49ZnVuY3Rpb24odCxlLHIsbil7Z1swXT0tKGV8fDApLGdbMV09LShyfHwwKSxnWzJdPS0obnx8MCksdGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIGE9dGhpcy5jb21wdXRlZEludmVyc2U7dShhLGEsZyksdGhpcy5zZXRNYXRyaXgodCxpKGEsYSkpfSxkLnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUscixuKXtnWzBdPWV8fDAsZ1sxXT1yfHwwLGdbMl09bnx8MCx0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgYT10aGlzLmNvbXB1dGVkTWF0cml4O3UoYSxhLGcpLHRoaXMuc2V0TWF0cml4KHQsYSl9LGQuc2V0TWF0cml4PWZ1bmN0aW9uKHQsZSl7aWYoISh0PHRoaXMubGFzdFQoKSkpe3RoaXMuX3RpbWUucHVzaCh0KTtmb3IodmFyIHI9MDtyPDE2Oysrcil0aGlzLl9jb21wb25lbnRzLnB1c2goZVtyXSl9fSxkLnNldERpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7dGhpcy5jb21wdXRlZFJhZGl1c1swXT1lfSxkLnNldERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fbGltaXRzO3JbMF09dCxyWzFdPWV9LGQuZ2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbGltaXRzO3JldHVybiB0Pyh0WzBdPWVbMF0sdFsxXT1lWzFdLHQpOmV9fSx7ImJpbmFyeS1zZWFyY2gtYm91bmRzIjo5MywiZ2wtbWF0NC9pbnZlcnQiOjI2OCwiZ2wtbWF0NC9sb29rQXQiOjI2OSwiZ2wtbWF0NC9yb3RhdGVYIjoyNzQsImdsLW1hdDQvcm90YXRlWSI6Mjc1LCJnbC1tYXQ0L3JvdGF0ZVoiOjI3NiwiZ2wtbWF0NC9zY2FsZSI6Mjc3LCJnbC1tYXQ0L3RyYW5zbGF0ZSI6Mjc4LCJnbC12ZWMzL25vcm1hbGl6ZSI6MzU4LCJtYXQ0LWludGVycG9sYXRlIjo0MzJ9XSw0MzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO2lmKGU8Myl7Zm9yKHZhciByPW5ldyBBcnJheShlKSxhPTA7YTxlOysrYSlyW2FdPWE7cmV0dXJuIDI9PT1lJiZ0WzBdWzBdPT09dFsxXVswXSYmdFswXVsxXT09PXRbMV1bMV0/WzBdOnJ9Zm9yKHZhciBpPW5ldyBBcnJheShlKSxhPTA7YTxlOysrYSlpW2FdPWE7aS5zb3J0KGZ1bmN0aW9uKGUscil7dmFyIG49dFtlXVswXS10W3JdWzBdO3JldHVybiBufHx0W2VdWzFdLXRbcl1bMV19KTtmb3IodmFyIG89W2lbMF0saVsxXV0scz1baVswXSxpWzFdXSxhPTI7YTxlOysrYSl7Zm9yKHZhciBsPWlbYV0sYz10W2xdLHU9by5sZW5ndGg7dT4xJiZuKHRbb1t1LTJdXSx0W29bdS0xXV0sYyk8PTA7KXUtPTEsby5wb3AoKTtmb3Ioby5wdXNoKGwpLHU9cy5sZW5ndGg7dT4xJiZuKHRbc1t1LTJdXSx0W3NbdS0xXV0sYyk+PTA7KXUtPTEscy5wb3AoKTtzLnB1c2gobCl9Zm9yKHZhciByPW5ldyBBcnJheShzLmxlbmd0aCtvLmxlbmd0aC0yKSxoPTAsYT0wLGY9by5sZW5ndGg7YTxmOysrYSlyW2grK109b1thXTtmb3IodmFyIHA9cy5sZW5ndGgtMjtwPjA7LS1wKXJbaCsrXT1zW3BdO3JldHVybiByfTt2YXIgbj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXX0seyJyb2J1c3Qtb3JpZW50YXRpb24iOjUwOX1dLDQzNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT10LHQ9d2luZG93KTt2YXIgcj0wLGE9MCxpPTAsbz17c2hpZnQ6ITEsYWx0OiExLGNvbnRyb2w6ITEsbWV0YTohMX0scz0hMTtmdW5jdGlvbiBsKHQpe3ZhciBlPSExO3JldHVybiJhbHRLZXkiaW4gdCYmKGU9ZXx8dC5hbHRLZXkhPT1vLmFsdCxvLmFsdD0hIXQuYWx0S2V5KSwic2hpZnRLZXkiaW4gdCYmKGU9ZXx8dC5zaGlmdEtleSE9PW8uc2hpZnQsby5zaGlmdD0hIXQuc2hpZnRLZXkpLCJjdHJsS2V5ImluIHQmJihlPWV8fHQuY3RybEtleSE9PW8uY29udHJvbCxvLmNvbnRyb2w9ISF0LmN0cmxLZXkpLCJtZXRhS2V5ImluIHQmJihlPWV8fHQubWV0YUtleSE9PW8ubWV0YSxvLm1ldGE9ISF0Lm1ldGFLZXkpLGV9ZnVuY3Rpb24gYyh0LHMpe3ZhciBjPW4ueChzKSx1PW4ueShzKTsiYnV0dG9ucyJpbiBzJiYodD0wfHMuYnV0dG9ucyksKHQhPT1yfHxjIT09YXx8dSE9PWl8fGwocykpJiYocj0wfHQsYT1jfHwwLGk9dXx8MCxlJiZlKHIsYSxpLG8pKX1mdW5jdGlvbiB1KHQpe2MoMCx0KX1mdW5jdGlvbiBoKCl7KHJ8fGF8fGl8fG8uc2hpZnR8fG8uYWx0fHxvLm1ldGF8fG8uY29udHJvbCkmJihhPWk9MCxyPTAsby5zaGlmdD1vLmFsdD1vLmNvbnRyb2w9by5tZXRhPSExLGUmJmUoMCwwLDAsbykpfWZ1bmN0aW9uIGYodCl7bCh0KSYmZSYmZShyLGEsaSxvKX1mdW5jdGlvbiBwKHQpezA9PT1uLmJ1dHRvbnModCk/YygwLHQpOmMocix0KX1mdW5jdGlvbiBkKHQpe2MocnxuLmJ1dHRvbnModCksdCl9ZnVuY3Rpb24gZyh0KXtjKHImfm4uYnV0dG9ucyh0KSx0KX1mdW5jdGlvbiB2KCl7c3x8KHM9ITAsdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHApLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixkKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGcpLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsdSksdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIix1KSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iix1KSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsdSksdC5hZGRFdmVudExpc3RlbmVyKCJibHVyIixoKSx0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixmKSx0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGYpLHQuYWRkRXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLGYpLHQhPT13aW5kb3cmJih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsaCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixmKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixmKSkpfXYoKTt2YXIgbT17ZWxlbWVudDp0fTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobSx7ZW5hYmxlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlKXtlP3YoKTpzJiYocz0hMSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIscCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGQpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsZyksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIix1KSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLHUpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLHUpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix1KSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLGgpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLGYpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZiksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIsZiksdCE9PXdpbmRvdyYmKHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixoKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLGYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixmKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLGYpKSl9LGVudW1lcmFibGU6ITB9LGJ1dHRvbnM6e2dldDpmdW5jdGlvbigpe3JldHVybiByfSxlbnVtZXJhYmxlOiEwfSx4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sZW51bWVyYWJsZTohMH0seTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGVudW1lcmFibGU6ITB9LG1vZHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBvfSxlbnVtZXJhYmxlOiEwfX0pLG19O3ZhciBuPXQoIm1vdXNlLWV2ZW50Iil9LHsibW91c2UtZXZlbnQiOjQzOX1dLDQzODpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXtsZWZ0OjAsdG9wOjB9O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7ZT1lfHx0LmN1cnJlbnRUYXJnZXR8fHQuc3JjRWxlbWVudCxBcnJheS5pc0FycmF5KHIpfHwocj1bMCwwXSk7dmFyIGE9dC5jbGllbnRYfHwwLGk9dC5jbGllbnRZfHwwLG89KHM9ZSxzPT09d2luZG93fHxzPT09ZG9jdW1lbnR8fHM9PT1kb2N1bWVudC5ib2R5P246cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIHM7cmV0dXJuIHJbMF09YS1vLmxlZnQsclsxXT1pLW8udG9wLHJ9fSx7fV0sNDM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQudGFyZ2V0fHx0LnNyY0VsZW1lbnR8fHdpbmRvd31yLmJ1dHRvbnM9ZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtpZigiYnV0dG9ucyJpbiB0KXJldHVybiB0LmJ1dHRvbnM7aWYoIndoaWNoImluIHQpe2lmKDI9PT0oZT10LndoaWNoKSlyZXR1cm4gNDtpZigzPT09ZSlyZXR1cm4gMjtpZihlPjApcmV0dXJuIDE8PGUtMX1lbHNlIGlmKCJidXR0b24iaW4gdCl7dmFyIGU7aWYoMT09PShlPXQuYnV0dG9uKSlyZXR1cm4gNDtpZigyPT09ZSlyZXR1cm4gMjtpZihlPj0wKXJldHVybiAxPDxlfX1yZXR1cm4gMH0sci5lbGVtZW50PW4sci54PWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYoIm9mZnNldFgiaW4gdClyZXR1cm4gdC5vZmZzZXRYO3ZhciBlPW4odCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIHQuY2xpZW50WC1lLmxlZnR9cmV0dXJuIDB9LHIueT1mdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJvZmZzZXRZImluIHQpcmV0dXJuIHQub2Zmc2V0WTt2YXIgZT1uKHQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiB0LmNsaWVudFktZS50b3B9cmV0dXJuIDB9fSx7fV0sNDQwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInRvLXB4Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHI9ISFlLGU9dCx0PXdpbmRvdyk7dmFyIGE9bigiZXgiLHQpLGk9ZnVuY3Rpb24odCl7ciYmdC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPXQuZGVsdGFYfHwwLGk9dC5kZWx0YVl8fDAsbz10LmRlbHRhWnx8MCxzPXQuZGVsdGFNb2RlLGw9MTtzd2l0Y2gocyl7Y2FzZSAxOmw9YTticmVhaztjYXNlIDI6bD13aW5kb3cuaW5uZXJIZWlnaHR9aWYoaSo9bCxvKj1sLChuKj1sKXx8aXx8bylyZXR1cm4gZShuLGksbyx0KX07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLGkpLGl9fSx7InRvLXB4Ijo1Mzh9XSw0NDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidHlwZWRhcnJheS1wb29sIik7ZnVuY3Rpb24gYSh0KXtyZXR1cm4iYSIrdH1mdW5jdGlvbiBpKHQpe3JldHVybiJkIit0fWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4iYyIrdCsiXyIrZX1mdW5jdGlvbiBzKHQpe3JldHVybiJzIit0fWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4idCIrdCsiXyIrZX1mdW5jdGlvbiBjKHQpe3JldHVybiJvIit0fWZ1bmN0aW9uIHUodCl7cmV0dXJuIngiK3R9ZnVuY3Rpb24gaCh0KXtyZXR1cm4icCIrdH1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuImQiK3QrIl8iK2V9ZnVuY3Rpb24gcCh0KXtyZXR1cm4iaSIrdH1mdW5jdGlvbiBkKHQsZSl7cmV0dXJuInUiK3QrIl8iK2V9ZnVuY3Rpb24gZyh0KXtyZXR1cm4iYiIrdH1mdW5jdGlvbiB2KHQpe3JldHVybiJ5Iit0fWZ1bmN0aW9uIG0odCl7cmV0dXJuImUiK3R9ZnVuY3Rpb24geSh0KXtyZXR1cm4idiIrdH1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt0aHJvdyBuZXcgRXJyb3IoIm5kYXJyYXktZXh0cmFjdC1jb250b3VyOiAiK3QpfSJvYmplY3QiIT10eXBlb2YgdCYmZSgiTXVzdCBzcGVjaWZ5IGFyZ3VtZW50cyIpO3ZhciByPXQub3JkZXI7QXJyYXkuaXNBcnJheShyKXx8ZSgiTXVzdCBzcGVjaWZ5IG9yZGVyIik7dmFyIEE9dC5hcnJheUFyZ3VtZW50c3x8MTtBPDEmJmUoIk11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYXJyYXkgYXJndW1lbnQiKTt2YXIgUz10LnNjYWxhckFyZ3VtZW50c3x8MDtTPDAmJmUoIlNjYWxhciBhcmcgY291bnQgbXVzdCBiZSA+IDAiKTsiZnVuY3Rpb24iIT10eXBlb2YgdC52ZXJ0ZXgmJmUoIk11c3Qgc3BlY2lmeSB2ZXJ0ZXggY3JlYXRpb24gZnVuY3Rpb24iKTsiZnVuY3Rpb24iIT10eXBlb2YgdC5jZWxsJiZlKCJNdXN0IHNwZWNpZnkgY2VsbCBjcmVhdGlvbiBmdW5jdGlvbiIpOyJmdW5jdGlvbiIhPXR5cGVvZiB0LnBoYXNlJiZlKCJNdXN0IHNwZWNpZnkgcGhhc2UgZnVuY3Rpb24iKTtmb3IodmFyIEU9dC5nZXR0ZXJzfHxbXSxMPW5ldyBBcnJheShBKSxDPTA7QzxBOysrQylFLmluZGV4T2YoQyk+PTA/TFtDXT0hMDpMW0NdPSExO3JldHVybiBmdW5jdGlvbih0LGUscixBLFMsRSl7dmFyIEw9RS5sZW5ndGgsQz1TLmxlbmd0aDtpZihDPDIpdGhyb3cgbmV3IEVycm9yKCJuZGFycmF5LWV4dHJhY3QtY29udG91cjogRGltZW5zaW9uIG11c3QgYmUgYXQgbGVhc3QgMiIpO2Zvcih2YXIgUD0iZXh0cmFjdENvbnRvdXIiK1Muam9pbigiXyIpLE89W10sej1bXSxJPVtdLEQ9MDtEPEw7KytEKUkucHVzaChhKEQpKTtmb3IodmFyIEQ9MDtEPEE7KytEKUkucHVzaCh1KEQpKTtmb3IodmFyIEQ9MDtEPEM7KytEKXoucHVzaChzKEQpKyI9IithKDApKyIuc2hhcGVbIitEKyJdfDAiKTtmb3IodmFyIEQ9MDtEPEw7KytEKXt6LnB1c2goaShEKSsiPSIrYShEKSsiLmRhdGEiLGMoRCkrIj0iK2EoRCkrIi5vZmZzZXR8MCIpO2Zvcih2YXIgUj0wO1I8QzsrK1Ipei5wdXNoKGwoRCxSKSsiPSIrYShEKSsiLnN0cmlkZVsiK1IrIl18MCIpfWZvcih2YXIgRD0wO0Q8TDsrK0Qpe3oucHVzaChoKEQpKyI9IitjKEQpKSx6LnB1c2gobyhELDApKTtmb3IodmFyIFI9MTtSPDE8PEM7KytSKXtmb3IodmFyIEY9W10sQj0wO0I8QzsrK0IpUiYxPDxCJiZGLnB1c2goIi0iK2woRCxCKSk7ei5wdXNoKGYoRCxSKSsiPSgiK0Yuam9pbigiIikrIil8MCIpLHoucHVzaChvKEQsUikrIj0wIil9fWZvcih2YXIgRD0wO0Q8TDsrK0QpZm9yKHZhciBSPTA7UjxDOysrUil7dmFyIE49W2woRCxTW1JdKV07Uj4wJiZOLnB1c2gobChELFNbUi0xXSkrIioiK3MoU1tSLTFdKSksei5wdXNoKGQoRCxTW1JdKSsiPSgiK04uam9pbigiLSIpKyIpfDAiKX1mb3IodmFyIEQ9MDtEPEM7KytEKXoucHVzaChwKEQpKyI9MCIpO3oucHVzaChfKyI9MCIpO2Zvcih2YXIgaj1bIjIiXSxEPUMtMjtEPj0wOy0tRClqLnB1c2gocyhTW0RdKSk7ei5wdXNoKHcrIj0oIitqLmpvaW4oIioiKSsiKXwwIixiKyI9bWFsbG9jVWludDMyKCIrdysiKSIseCsiPW1hbGxvY1VpbnQzMigiK3crIikiLGsrIj0wIiksei5wdXNoKGcoMCkrIj0wIik7Zm9yKHZhciBSPTE7UjwxPDxDOysrUil7Zm9yKHZhciBWPVtdLFU9W10sQj0wO0I8QzsrK0IpUiYxPDxCJiYoMD09PVUubGVuZ3RoP1YucHVzaCgiMSIpOlYudW5zaGlmdChVLmpvaW4oIioiKSkpLFUucHVzaChzKFNbQl0pKTt2YXIgcT0iIjtWWzBdLmluZGV4T2YocyhTW0MtMl0pKTwwJiYocT0iLSIpO3ZhciBIPU0oQyxSLFMpO3oucHVzaChtKEgpKyI9KC0iK1Yuam9pbigiLSIpKyIpfDAiLHYoSCkrIj0oIitxK1Yuam9pbigiLSIpKyIpfDAiLGcoSCkrIj0wIil9ZnVuY3Rpb24gRyh0LGUpe08ucHVzaCgiZm9yKCIscChTW3RdKSwiPSIsZSwiOyIscChTW3RdKSwiPCIscyhTW3RdKSwiOyIsIisrIixwKFNbdF0pLCIpeyIpfWZ1bmN0aW9uIFkodCl7Zm9yKHZhciBlPTA7ZTxMOysrZSlPLnB1c2goaChlKSwiKz0iLGQoZSxTW3RdKSwiOyIpO08ucHVzaCgifSIpfWZ1bmN0aW9uIFcoKXtmb3IodmFyIHQ9MTt0PDE8PEM7Kyt0KU8ucHVzaChULCI9IixtKHQpLCI7IixtKHQpLCI9Iix2KHQpLCI7Iix2KHQpLCI9IixULCI7Iil9ei5wdXNoKHkoMCkrIj0wIixUKyI9MCIpLGZ1bmN0aW9uIHQoZSxyKXtpZihlPDApcmV0dXJuIHZvaWQgZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxMOysrZSlFW2VdP08ucHVzaChvKGUsMCksIj0iLGkoZSksIi5nZXQoIixoKGUpLCIpOyIpOk8ucHVzaChvKGUsMCksIj0iLGkoZSksIlsiLGgoZSksIl07Iik7Zm9yKHZhciByPVtdLGU9MDtlPEw7KytlKXIucHVzaChvKGUsMCkpO2Zvcih2YXIgZT0wO2U8QTsrK2Upci5wdXNoKHUoZSkpO08ucHVzaChnKDApLCI9IixiLCJbIixrLCJdPXBoYXNlKCIsci5qb2luKCksIik7Iik7Zm9yKHZhciBuPTE7bjwxPDxDOysrbilPLnB1c2goZyhuKSwiPSIsYiwiWyIsaywiKyIsbShuKSwiXTsiKTtmb3IodmFyIGE9W10sbj0xO248MTw8QzsrK24pYS5wdXNoKCIoIitnKDApKyIhPT0iK2cobikrIikiKTtPLnB1c2goImlmKCIsYS5qb2luKCJ8fCIpLCIpeyIpO2Zvcih2YXIgcz1bXSxlPTA7ZTxDOysrZSlzLnB1c2gocChlKSk7Zm9yKHZhciBlPTA7ZTxMOysrZSl7cy5wdXNoKG8oZSwwKSk7Zm9yKHZhciBuPTE7bjwxPDxDOysrbilFW2VdP08ucHVzaChvKGUsbiksIj0iLGkoZSksIi5nZXQoIixoKGUpLCIrIixmKGUsbiksIik7Iik6Ty5wdXNoKG8oZSxuKSwiPSIsaShlKSwiWyIsaChlKSwiKyIsZihlLG4pLCJdOyIpLHMucHVzaChvKGUsbikpfWZvcih2YXIgZT0wO2U8MTw8QzsrK2Upcy5wdXNoKGcoZSkpO2Zvcih2YXIgZT0wO2U8QTsrK2Upcy5wdXNoKHUoZSkpO08ucHVzaCgidmVydGV4KCIscy5qb2luKCksIik7Iix5KDApLCI9Iix4LCJbIixrLCJdPSIsXywiKys7Iik7Zm9yKHZhciBsPSgxPDxDKS0xLGM9ZyhsKSxuPTA7bjxDOysrbilpZigwPT0odCZ+KDE8PG4pKSl7Zm9yKHZhciBkPWxeMTw8bix2PWcoZCksdz1bXSxUPWQ7VD4wO1Q9VC0xJmQpdy5wdXNoKHgrIlsiK2srIisiK20oVCkrIl0iKTt3LnB1c2goeSgwKSk7Zm9yKHZhciBUPTA7VDxMOysrVCkxJm4/dy5wdXNoKG8oVCxsKSxvKFQsZCkpOncucHVzaChvKFQsZCksbyhULGwpKTsxJm4/dy5wdXNoKGMsdik6dy5wdXNoKHYsYyk7Zm9yKHZhciBUPTA7VDxBOysrVCl3LnB1c2godShUKSk7Ty5wdXNoKCJpZigiLGMsIiE9PSIsdiwiKXsiLCJmYWNlKCIsdy5qb2luKCksIil9Iil9Ty5wdXNoKCJ9IixrLCIrPTE7Iil9KHIpOyFmdW5jdGlvbih0KXtmb3IodmFyIGU9dC0xO2U+PTA7LS1lKUcoZSwwKTtmb3IodmFyIHI9W10sZT0wO2U8TDsrK2UpRVtlXT9yLnB1c2goaShlKSsiLmdldCgiK2goZSkrIikiKTpyLnB1c2goaShlKSsiWyIraChlKSsiXSIpO2Zvcih2YXIgZT0wO2U8QTsrK2Upci5wdXNoKHUoZSkpO08ucHVzaChiLCJbIixrLCIrK109cGhhc2UoIixyLmpvaW4oKSwiKTsiKTtmb3IodmFyIGU9MDtlPHQ7KytlKVkoZSk7Zm9yKHZhciBuPTA7bjxMOysrbilPLnB1c2goaChuKSwiKz0iLGQobixTW3RdKSwiOyIpfShlKTtPLnB1c2goImlmKCIscyhTW2VdKSwiPjApeyIscChTW2VdKSwiPTE7Iik7dChlLTEscnwxPDxTW2VdKTtmb3IodmFyIG49MDtuPEw7KytuKU8ucHVzaChoKG4pLCIrPSIsZChuLFNbZV0pLCI7Iik7ZT09PUMtMSYmKE8ucHVzaChrLCI9MDsiKSxXKCkpO0coZSwyKTt0KGUtMSxyKTtlPT09Qy0xJiYoTy5wdXNoKCJpZigiLHAoU1tDLTFdKSwiJjEpeyIsaywiPTA7fSIpLFcoKSk7WShlKTtPLnB1c2goIn0iKX0oQy0xLDApLE8ucHVzaCgiZnJlZVVpbnQzMigiLHgsIik7ZnJlZVVpbnQzMigiLGIsIik7Iik7dmFyIFg9WyIndXNlIHN0cmljdCc7IiwiZnVuY3Rpb24gIixQLCIoIixJLmpvaW4oKSwiKXsiLCJ2YXIgIix6LmpvaW4oKSwiOyIsTy5qb2luKCIiKSwifSIsInJldHVybiAiLFBdLmpvaW4oIiIpO3JldHVybiBuZXcgRnVuY3Rpb24oInZlcnRleCIsImZhY2UiLCJwaGFzZSIsIm1hbGxvY1VpbnQzMiIsImZyZWVVaW50MzIiLFgpKHQsZSxyLG4ubWFsbG9jVWludDMyLG4uZnJlZVVpbnQzMil9KHQudmVydGV4LHQuY2VsbCx0LnBoYXNlLFMscixMKX07dmFyIHg9IlYiLGI9IlAiLF89Ik4iLHc9IlEiLGs9IlgiLFQ9IlQiO2Z1bmN0aW9uIE0odCxlLHIpe2Zvcih2YXIgbj0wLGE9MDthPHQ7KythKWUmMTw8YSYmKG58PTE8PHJbYV0pO3JldHVybiBufX0seyJ0eXBlZGFycmF5LXBvb2wiOjU0NH1dLDQ0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjd2lzZS9saWIvd3JhcHBlciIpKHthcmdzOlsiaW5kZXgiLCJhcnJheSIsInNjYWxhciJdLHByZTp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7X2lubGluZV8xX2FyZzFfPV9pbmxpbmVfMV9hcmcyXy5hcHBseSh2b2lkIDAsX2lubGluZV8xX2FyZzBfKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMV9hcmcxXyIsbHZhbHVlOiEwLHJ2YWx1ZTohMSxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LHBvc3Q6e2JvZHk6Int9IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZGVidWc6ITEsZnVuY05hbWU6ImN3aXNlIixibG9ja1NpemU6NjR9KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LGUpLHR9fSx7ImN3aXNlL2xpYi93cmFwcGVyIjoxNTF9XSw0NDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZihBcnJheS5pc0FycmF5KHIpKXtpZihyLmxlbmd0aCE9PWUuZGltZW5zaW9uKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogaW52YWxpZCBib3VuZGFyeSBjb25kaXRpb25zIil9ZWxzZSByPW4oZS5kaW1lbnNpb24sInN0cmluZyI9PXR5cGVvZiByP3I6ImNsYW1wIik7aWYodC5kaW1lbnNpb24hPT1lLmRpbWVuc2lvbisxKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogb3V0cHV0IGRpbWVuc2lvbiBtdXN0IGJlICsxIGlucHV0IGRpbWVuc2lvbiIpO2lmKHQuc2hhcGVbZS5kaW1lbnNpb25dIT09ZS5kaW1lbnNpb24pdGhyb3cgbmV3IEVycm9yKCJuZGFycmF5LWdyYWRpZW50OiBvdXRwdXQgc2hhcGUgbXVzdCBtYXRjaCBpbnB1dCBzaGFwZSIpO2Zvcih2YXIgYT0wO2E8ZS5kaW1lbnNpb247KythKWlmKHQuc2hhcGVbYV0hPT1lLnNoYXBlW2FdKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogc2hhcGUgbWlzbWF0Y2giKTtpZigwPT09ZS5zaXplKXJldHVybiB0O2lmKGUuZGltZW5zaW9uPD0wKXJldHVybiB0LnNldCgwKSx0O3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10LmpvaW4oKTtpZihtPW9bZV0pcmV0dXJuIG07dmFyIHI9dC5sZW5ndGgsbj1bImZ1bmN0aW9uIGdyYWRpZW50KGRzdCxzcmMpe3ZhciBzPXNyYy5zaGFwZS5zbGljZSgpOyJdO2Z1bmN0aW9uIGEoZSl7Zm9yKHZhciBhPXItZS5sZW5ndGgsaT1bXSxvPVtdLHM9W10sbD0wO2w8cjsrK2wpZS5pbmRleE9mKGwrMSk+PTA/cy5wdXNoKCIwIik6ZS5pbmRleE9mKC0obCsxKSk+PTA/cy5wdXNoKCJzWyIrbCsiXS0xIik6KHMucHVzaCgiLTEiKSxpLnB1c2goIjEiKSxvLnB1c2goInNbIitsKyJdLTIiKSk7dmFyIGM9Ii5sbygiK2kuam9pbigpKyIpLmhpKCIrby5qb2luKCkrIikiO2lmKDA9PT1pLmxlbmd0aCYmKGM9IiIpLGE+MCl7bi5wdXNoKCJpZigxIik7Zm9yKHZhciBsPTA7bDxyOysrbCllLmluZGV4T2YobCsxKT49MHx8ZS5pbmRleE9mKC0obCsxKSk+PTB8fG4ucHVzaCgiJiZzWyIsbCwiXT4yIik7bi5wdXNoKCIpe2dyYWQiLGEsIihzcmMucGljaygiLHMuam9pbigpLCIpIixjKTtmb3IodmFyIGw9MDtsPHI7KytsKWUuaW5kZXhPZihsKzEpPj0wfHxlLmluZGV4T2YoLShsKzEpKT49MHx8bi5wdXNoKCIsZHN0LnBpY2soIixzLmpvaW4oKSwiLCIsbCwiKSIsYyk7bi5wdXNoKCIpOyIpfWZvcih2YXIgbD0wO2w8ZS5sZW5ndGg7KytsKXt2YXIgdT1NYXRoLmFicyhlW2xdKS0xLGg9ImRzdC5waWNrKCIrcy5qb2luKCkrIiwiK3UrIikiK2M7c3dpdGNoKHRbdV0pe2Nhc2UiY2xhbXAiOnZhciBmPXMuc2xpY2UoKSxwPXMuc2xpY2UoKTtlW2xdPDA/Zlt1XT0ic1siK3UrIl0tMiI6cFt1XT0iMSIsMD09PWE/bi5wdXNoKCJpZihzWyIsdSwiXT4xKXtkc3Quc2V0KCIscy5qb2luKCksIiwiLHUsIiwwLjUqKHNyYy5nZXQoIixmLmpvaW4oKSwiKS1zcmMuZ2V0KCIscC5qb2luKCksIikpKX1lbHNle2RzdC5zZXQoIixzLmpvaW4oKSwiLCIsdSwiLDApfTsiKTpuLnB1c2goImlmKHNbIix1LCJdPjEpe2RpZmYoIixoLCIsc3JjLnBpY2soIixmLmpvaW4oKSwiKSIsYywiLHNyYy5waWNrKCIscC5qb2luKCksIikiLGMsIik7fWVsc2V7emVybygiLGgsIik7fTsiKTticmVhaztjYXNlIm1pcnJvciI6MD09PWE/bi5wdXNoKCJkc3Quc2V0KCIscy5qb2luKCksIiwiLHUsIiwwKTsiKTpuLnB1c2goInplcm8oIixoLCIpOyIpO2JyZWFrO2Nhc2Uid3JhcCI6dmFyIGQ9cy5zbGljZSgpLGc9cy5zbGljZSgpO2VbbF08MD8oZFt1XT0ic1siK3UrIl0tMiIsZ1t1XT0iMCIpOihkW3VdPSJzWyIrdSsiXS0xIixnW3VdPSIxIiksMD09PWE/bi5wdXNoKCJpZihzWyIsdSwiXT4yKXtkc3Quc2V0KCIscy5qb2luKCksIiwiLHUsIiwwLjUqKHNyYy5nZXQoIixkLmpvaW4oKSwiKS1zcmMuZ2V0KCIsZy5qb2luKCksIikpKX1lbHNle2RzdC5zZXQoIixzLmpvaW4oKSwiLCIsdSwiLDApfTsiKTpuLnB1c2goImlmKHNbIix1LCJdPjIpe2RpZmYoIixoLCIsc3JjLnBpY2soIixkLmpvaW4oKSwiKSIsYywiLHNyYy5waWNrKCIsZy5qb2luKCksIikiLGMsIik7fWVsc2V7emVybygiLGgsIik7fTsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVudDogSW52YWxpZCBib3VuZGFyeSBjb25kaXRpb24iKX19YT4wJiZuLnB1c2goIn07Iil9Zm9yKHZhciBzPTA7czwxPDxyOysrcyl7Zm9yKHZhciBoPVtdLGY9MDtmPHI7KytmKXMmMTw8ZiYmaC5wdXNoKGYrMSk7Zm9yKHZhciBwPTA7cDwxPDxoLmxlbmd0aDsrK3Ape2Zvcih2YXIgZD1oLnNsaWNlKCksZj0wO2Y8aC5sZW5ndGg7KytmKXAmMTw8ZiYmKGRbZl09LWRbZl0pO2EoZCl9fW4ucHVzaCgicmV0dXJuIGRzdDt9O3JldHVybiBncmFkaWVudCIpO2Zvcih2YXIgZz1bImRpZmYiLCJ6ZXJvIl0sdj1bbCxjXSxzPTE7czw9cjsrK3MpZy5wdXNoKCJncmFkIitzKSx2LnB1c2godShzKSk7Zy5wdXNoKG4uam9pbigiIikpO3ZhciBtPUZ1bmN0aW9uLmFwcGx5KHZvaWQgMCxnKS5hcHBseSh2b2lkIDAsdik7cmV0dXJuIGlbZV09bSxtfShyKSh0LGUpfTt2YXIgbj10KCJkdXAiKSxhPXQoImN3aXNlLWNvbXBpbGVyIiksaT17fSxvPXt9LHM9e2JvZHk6IiIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGw9YSh7YXJnczpbImFycmF5IiwiYXJyYXkiLCJhcnJheSJdLHByZTpzLHBvc3Q6cyxib2R5OnthcmdzOlt7bmFtZToib3V0IixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJsZWZ0IixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJyaWdodCIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sYm9keToib3V0PTAuNSoobGVmdC1yaWdodCkiLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZnVuY05hbWU6ImNkaWZmIn0pLGM9YSh7YXJnczpbImFycmF5Il0scHJlOnMscG9zdDpzLGJvZHk6e2FyZ3M6W3tuYW1lOiJvdXQiLGx2YWx1ZTohMCxydmFsdWU6ITEsY291bnQ6MX1dLGJvZHk6Im91dD0wIix0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGZ1bmNOYW1lOiJ6ZXJvIn0pO2Z1bmN0aW9uIHUodCl7aWYodCBpbiBpKXJldHVybiBpW3RdO2Zvcih2YXIgZT1bXSxyPTA7cjx0OysrcillLnB1c2goIm91dCIsciwicz0wLjUqKGlucCIsciwibC1pbnAiLHIsInIpOyIpO3ZhciBvPVsiYXJyYXkiXSxsPVsianVuayJdO2ZvcihyPTA7cjx0Oysrcil7by5wdXNoKCJhcnJheSIpLGwucHVzaCgib3V0IityKyJzIik7dmFyIGM9bih0KTtjW3JdPS0xLG8ucHVzaCh7YXJyYXk6MCxvZmZzZXQ6Yy5zbGljZSgpfSksY1tyXT0xLG8ucHVzaCh7YXJyYXk6MCxvZmZzZXQ6Yy5zbGljZSgpfSksbC5wdXNoKCJpbnAiK3IrImwiLCJpbnAiK3IrInIiKX1yZXR1cm4gaVt0XT1hKHthcmdzOm8scHJlOnMscG9zdDpzLGJvZHk6e2JvZHk6ZS5qb2luKCIiKSxhcmdzOmwubWFwKGZ1bmN0aW9uKHQpe3JldHVybntuYW1lOnQsbHZhbHVlOjA9PT10LmluZGV4T2YoIm91dCIpLHJ2YWx1ZTowPT09dC5pbmRleE9mKCJpbnAiKSxjb3VudDoianVuayIhPT10fDB9fSksdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxmdW5jTmFtZToiZmRUZW1wbGF0ZSIrdH0pfX0seyJjd2lzZS1jb21waWxlciI6MTQ4LGR1cDoxNzJ9XSw0NDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgibmRhcnJheS13YXJwIiksYT10KCJnbC1tYXRyaXgtaW52ZXJ0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1lLmRpbWVuc2lvbixvPWEoW10scik7cmV0dXJuIG4odCxlLGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjxpOysrcil7dFtyXT1vWyhpKzEpKmkrcl07Zm9yKHZhciBuPTA7bjxpOysrbil0W3JdKz1vWyhpKzEpKm4rcl0qZVtuXX12YXIgYT1vWyhpKzEpKihpKzEpLTFdO2ZvcihuPTA7bjxpOysrbilhKz1vWyhpKzEpKm4raV0qZVtuXTt2YXIgcz0xL2E7Zm9yKHI9MDtyPGk7KytyKXRbcl0qPXM7cmV0dXJuIHR9KSx0fX0seyJnbC1tYXRyaXgtaW52ZXJ0IjoyODAsIm5kYXJyYXktd2FycCI6NDUxfV0sNDQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1NYXRoLmZsb29yKGUpLG49ZS1yLGE9MDw9ciYmcjx0LnNoYXBlWzBdLGk9MDw9cisxJiZyKzE8dC5zaGFwZVswXTtyZXR1cm4oMS1uKSooYT8rdC5nZXQocik6MCkrbiooaT8rdC5nZXQocisxKTowKX1mdW5jdGlvbiBhKHQsZSxyKXt2YXIgbj1NYXRoLmZsb29yKGUpLGE9ZS1uLGk9MDw9biYmbjx0LnNoYXBlWzBdLG89MDw9bisxJiZuKzE8dC5zaGFwZVswXSxzPU1hdGguZmxvb3IociksbD1yLXMsYz0wPD1zJiZzPHQuc2hhcGVbMV0sdT0wPD1zKzEmJnMrMTx0LnNoYXBlWzFdLGg9aSYmYz90LmdldChuLHMpOjAsZj1pJiZ1P3QuZ2V0KG4scysxKTowO3JldHVybigxLWwpKigoMS1hKSpoK2EqKG8mJmM/dC5nZXQobisxLHMpOjApKStsKigoMS1hKSpmK2EqKG8mJnU/dC5nZXQobisxLHMrMSk6MCkpfWZ1bmN0aW9uIGkodCxlLHIsbil7dmFyIGE9TWF0aC5mbG9vcihlKSxpPWUtYSxvPTA8PWEmJmE8dC5zaGFwZVswXSxzPTA8PWErMSYmYSsxPHQuc2hhcGVbMF0sbD1NYXRoLmZsb29yKHIpLGM9ci1sLHU9MDw9bCYmbDx0LnNoYXBlWzFdLGg9MDw9bCsxJiZsKzE8dC5zaGFwZVsxXSxmPU1hdGguZmxvb3IobikscD1uLWYsZD0wPD1mJiZmPHQuc2hhcGVbMl0sZz0wPD1mKzEmJmYrMTx0LnNoYXBlWzJdLHY9byYmdSYmZD90LmdldChhLGwsZik6MCxtPW8mJmgmJmQ/dC5nZXQoYSxsKzEsZik6MCx5PXMmJnUmJmQ/dC5nZXQoYSsxLGwsZik6MCx4PXMmJmgmJmQ/dC5nZXQoYSsxLGwrMSxmKTowLGI9byYmdSYmZz90LmdldChhLGwsZisxKTowLF89byYmaCYmZz90LmdldChhLGwrMSxmKzEpOjA7cmV0dXJuKDEtcCkqKCgxLWMpKigoMS1pKSp2K2kqeSkrYyooKDEtaSkqbStpKngpKStwKigoMS1jKSooKDEtaSkqYitpKihzJiZ1JiZnP3QuZ2V0KGErMSxsLGYrMSk6MCkpK2MqKCgxLWkpKl8raSoocyYmaCYmZz90LmdldChhKzEsbCsxLGYrMSk6MCkpKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7c3dpdGNoKHQuc2hhcGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIDA7Y2FzZSAxOnJldHVybiBuKHQsZSk7Y2FzZSAyOnJldHVybiBhKHQsZSxyKTtjYXNlIDM6cmV0dXJuIGkodCxlLHIsbyk7ZGVmYXVsdDpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGUscixuPTB8dC5zaGFwZS5sZW5ndGgsYT1uZXcgQXJyYXkobiksaT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobikscz1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKXI9K2FyZ3VtZW50c1tlKzFdLGFbZV09TWF0aC5mbG9vcihyKSxpW2VdPXItYVtlXSxvW2VdPTA8PWFbZV0mJmFbZV08dC5zaGFwZVtlXSxzW2VdPTA8PWFbZV0rMSYmYVtlXSsxPHQuc2hhcGVbZV07dmFyIGwsYyx1LGg9MDt0OmZvcihlPTA7ZTwxPDxuOysrZSl7Zm9yKGM9MSx1PXQub2Zmc2V0LGw9MDtsPG47KytsKWlmKGUmMTw8bCl7aWYoIXNbbF0pY29udGludWUgdDtjKj1pW2xdLHUrPXQuc3RyaWRlW2xdKihhW2xdKzEpfWVsc2V7aWYoIW9bbF0pY29udGludWUgdDtjKj0xLWlbbF0sdSs9dC5zdHJpZGVbbF0qYVtsXX1oKz1jKnQuZGF0YVt1XX1yZXR1cm4gaH0uYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fSxlLmV4cG9ydHMuZDE9bixlLmV4cG9ydHMuZDI9YSxlLmV4cG9ydHMuZDM9aX0se31dLDQ0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjd2lzZS1jb21waWxlciIpLGE9e2JvZHk6IiIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119O2Z1bmN0aW9uIGkodCl7aWYoIXQpcmV0dXJuIGE7Zm9yKHZhciBlPTA7ZTx0LmFyZ3MubGVuZ3RoOysrZSl7dmFyIHI9dC5hcmdzW2VdO3QuYXJnc1tlXT0wPT09ZT97bmFtZTpyLGx2YWx1ZTohMCxydmFsdWU6ISF0LnJ2YWx1ZSxjb3VudDp0LmNvdW50fHwxfTp7bmFtZTpyLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX19cmV0dXJuIHQudGhpc1ZhcnN8fCh0LnRoaXNWYXJzPVtdKSx0LmxvY2FsVmFyc3x8KHQubG9jYWxWYXJzPVtdKSx0fWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPVtdLHI9MDtyPHQuYXJncy5sZW5ndGg7KytyKWUucHVzaCgiYSIrcik7cmV0dXJuIG5ldyBGdW5jdGlvbigiUCIsWyJyZXR1cm4gZnVuY3Rpb24gIix0LmZ1bmNOYW1lLCJfbmRhcnJheW9wcygiLGUuam9pbigiLCIpLCIpIHtQKCIsZS5qb2luKCIsIiksIik7cmV0dXJuIGEwfSJdLmpvaW4oIiIpKShmdW5jdGlvbih0KXtyZXR1cm4gbih7YXJnczp0LmFyZ3MscHJlOmkodC5wcmUpLGJvZHk6aSh0LmJvZHkpLHBvc3Q6aSh0LnByb2MpLGZ1bmNOYW1lOnQuZnVuY05hbWV9KX0odCkpfXZhciBzPXthZGQ6IisiLHN1YjoiLSIsbXVsOiIqIixkaXY6Ii8iLG1vZDoiJSIsYmFuZDoiJiIsYm9yOiJ8IixieG9yOiJeIixsc2hpZnQ6Ijw8Iixyc2hpZnQ6Ij4+IixycnNoaWZ0OiI+Pj4ifTshZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gcyl7dmFyIGU9c1t0XTtyW3RdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5IiwiYXJyYXkiXSxib2R5OnthcmdzOlsiYSIsImIiLCJjIl0sYm9keToiYT1iIitlKyJjIn0sZnVuY05hbWU6dH0pLHJbdCsiZXEiXT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSJdLGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImEiK2UrIj1iIn0scnZhbHVlOiEwLGZ1bmNOYW1lOnQrImVxIn0pLHJbdCsicyJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Iiwic2NhbGFyIl0sYm9keTp7YXJnczpbImEiLCJiIiwicyJdLGJvZHk6ImE9YiIrZSsicyJ9LGZ1bmNOYW1lOnQrInMifSksclt0KyJzZXEiXT1vKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIiXSxib2R5OnthcmdzOlsiYSIsInMiXSxib2R5OiJhIitlKyI9cyJ9LHJ2YWx1ZTohMCxmdW5jTmFtZTp0KyJzZXEifSl9fSgpO3ZhciBsPXtub3Q6IiEiLGJub3Q6In4iLG5lZzoiLSIscmVjaXA6IjEuMC8ifTshZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gbCl7dmFyIGU9bFt0XTtyW3RdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Il0sYm9keTp7YXJnczpbImEiLCJiIl0sYm9keToiYT0iK2UrImIifSxmdW5jTmFtZTp0fSksclt0KyJlcSJdPW8oe2FyZ3M6WyJhcnJheSJdLGJvZHk6e2FyZ3M6WyJhIl0sYm9keToiYT0iK2UrImEifSxydmFsdWU6ITAsY291bnQ6MixmdW5jTmFtZTp0KyJlcSJ9KX19KCk7dmFyIGM9e2FuZDoiJiYiLG9yOiJ8fCIsZXE6Ij09PSIsbmVxOiIhPT0iLGx0OiI8IixndDoiPiIsbGVxOiI8PSIsZ2VxOiI+PSJ9OyFmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiBjKXt2YXIgZT1jW3RdO3JbdF09byh7YXJnczpbImFycmF5IiwiYXJyYXkiLCJhcnJheSJdLGJvZHk6e2FyZ3M6WyJhIiwiYiIsImMiXSxib2R5OiJhPWIiK2UrImMifSxmdW5jTmFtZTp0fSksclt0KyJzIl09byh7YXJnczpbImFycmF5IiwiYXJyYXkiLCJzY2FsYXIiXSxib2R5OnthcmdzOlsiYSIsImIiLCJzIl0sYm9keToiYT1iIitlKyJzIn0sZnVuY05hbWU6dCsicyJ9KSxyW3QrImVxIl09byh7YXJnczpbImFycmF5IiwiYXJyYXkiXSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPWEiK2UrImIifSxydmFsdWU6ITAsY291bnQ6MixmdW5jTmFtZTp0KyJlcSJ9KSxyW3QrInNlcSJdPW8oe2FyZ3M6WyJhcnJheSIsInNjYWxhciJdLGJvZHk6e2FyZ3M6WyJhIiwicyJdLGJvZHk6ImE9YSIrZSsicyJ9LHJ2YWx1ZTohMCxjb3VudDoyLGZ1bmNOYW1lOnQrInNlcSJ9KX19KCk7dmFyIHU9WyJhYnMiLCJhY29zIiwiYXNpbiIsImF0YW4iLCJjZWlsIiwiY29zIiwiZXhwIiwiZmxvb3IiLCJsb2ciLCJyb3VuZCIsInNpbiIsInNxcnQiLCJ0YW4iXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHUubGVuZ3RoOysrdCl7dmFyIGU9dVt0XTtyW2VdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Il0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPXRoaXNfZihiKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sZnVuY05hbWU6ZX0pLHJbZSsiZXEiXT1vKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGguIitlLHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIl0sYm9keToiYT10aGlzX2YoYSkiLHRoaXNWYXJzOlsidGhpc19mIl19LHJ2YWx1ZTohMCxjb3VudDoyLGZ1bmNOYW1lOmUrImVxIn0pfX0oKTt2YXIgaD1bIm1heCIsIm1pbiIsImF0YW4yIiwicG93Il07IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxoLmxlbmd0aDsrK3Qpe3ZhciBlPWhbdF07cltlXT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSIsImFycmF5Il0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiLCJjIl0sYm9keToiYT10aGlzX2YoYixjKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sZnVuY05hbWU6ZX0pLHJbZSsicyJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Iiwic2NhbGFyIl0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiLCJjIl0sYm9keToiYT10aGlzX2YoYixjKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sZnVuY05hbWU6ZSsicyJ9KSxyW2UrImVxIl09byh7YXJnczpbImFycmF5IiwiYXJyYXkiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGguIitlLHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImE9dGhpc19mKGEsYikiLHRoaXNWYXJzOlsidGhpc19mIl19LHJ2YWx1ZTohMCxjb3VudDoyLGZ1bmNOYW1lOmUrImVxIn0pLHJbZSsic2VxIl09byh7YXJnczpbImFycmF5Iiwic2NhbGFyIl0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPXRoaXNfZihhLGIpIix0aGlzVmFyczpbInRoaXNfZiJdfSxydmFsdWU6ITAsY291bnQ6MixmdW5jTmFtZTplKyJzZXEifSl9fSgpO3ZhciBmPVsiYXRhbjIiLCJwb3ciXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PGYubGVuZ3RoOysrdCl7dmFyIGU9Zlt0XTtyW2UrIm9wIl09byh7YXJnczpbImFycmF5IiwiYXJyYXkiLCJhcnJheSJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJiIiwiYyJdLGJvZHk6ImE9dGhpc19mKGMsYikiLHRoaXNWYXJzOlsidGhpc19mIl19LGZ1bmNOYW1lOmUrIm9wIn0pLHJbZSsib3BzIl09byh7YXJnczpbImFycmF5IiwiYXJyYXkiLCJzY2FsYXIiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGguIitlLHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIiwiYiIsImMiXSxib2R5OiJhPXRoaXNfZihjLGIpIix0aGlzVmFyczpbInRoaXNfZiJdfSxmdW5jTmFtZTplKyJvcHMifSkscltlKyJvcGVxIl09byh7YXJnczpbImFycmF5IiwiYXJyYXkiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGguIitlLHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImE9dGhpc19mKGIsYSkiLHRoaXNWYXJzOlsidGhpc19mIl19LHJ2YWx1ZTohMCxjb3VudDoyLGZ1bmNOYW1lOmUrIm9wZXEifSkscltlKyJvcHNlcSJdPW8oe2FyZ3M6WyJhcnJheSIsInNjYWxhciJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJiIl0sYm9keToiYT10aGlzX2YoYixhKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0scnZhbHVlOiEwLGNvdW50OjIsZnVuY05hbWU6ZSsib3BzZXEifSl9fSgpLHIuYW55PW4oe2FyZ3M6WyJhcnJheSJdLHByZTphLGJvZHk6e2FyZ3M6W3tuYW1lOiJhIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSxib2R5OiJpZihhKXtyZXR1cm4gdHJ1ZX0iLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbXX0scG9zdDp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6W10sYm9keToicmV0dXJuIGZhbHNlIn0sZnVuY05hbWU6ImFueSJ9KSxyLmFsbD1uKHthcmdzOlsiYXJyYXkiXSxwcmU6YSxib2R5OnthcmdzOlt7bmFtZToieCIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sYm9keToiaWYoIXgpe3JldHVybiBmYWxzZX0iLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbXX0scG9zdDp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6W10sYm9keToicmV0dXJuIHRydWUifSxmdW5jTmFtZToiYWxsIn0pLHIuc3VtPW4oe2FyZ3M6WyJhcnJheSJdLHByZTp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJ0aGlzX3M9MCJ9LGJvZHk6e2FyZ3M6W3tuYW1lOiJhIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSxib2R5OiJ0aGlzX3MrPWEiLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdfSxwb3N0OnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InJldHVybiB0aGlzX3MifSxmdW5jTmFtZToic3VtIn0pLHIucHJvZD1uKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToidGhpc19zPTEifSxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sYm9keToidGhpc19zKj1hIixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXX0scG9zdDp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJyZXR1cm4gdGhpc19zIn0sZnVuY05hbWU6InByb2QifSksci5ub3JtMnNxdWFyZWQ9bih7YXJnczpbImFycmF5Il0scHJlOnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InRoaXNfcz0wIn0sYm9keTp7YXJnczpbe25hbWU6ImEiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6Mn1dLGJvZHk6InRoaXNfcys9YSphIixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXX0scG9zdDp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJyZXR1cm4gdGhpc19zIn0sZnVuY05hbWU6Im5vcm0yc3F1YXJlZCJ9KSxyLm5vcm0yPW4oe2FyZ3M6WyJhcnJheSJdLHByZTp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJ0aGlzX3M9MCJ9LGJvZHk6e2FyZ3M6W3tuYW1lOiJhIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9XSxib2R5OiJ0aGlzX3MrPWEqYSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToicmV0dXJuIE1hdGguc3FydCh0aGlzX3MpIn0sZnVuY05hbWU6Im5vcm0yIn0pLHIubm9ybWluZj1uKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToidGhpc19zPTAifSxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDo0fV0sYm9keToiaWYoLWE+dGhpc19zKXt0aGlzX3M9LWF9ZWxzZSBpZihhPnRoaXNfcyl7dGhpc19zPWF9Iixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXX0scG9zdDp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJyZXR1cm4gdGhpc19zIn0sZnVuY05hbWU6Im5vcm1pbmYifSksci5ub3JtMT1uKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToidGhpc19zPTAifSxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDozfV0sYm9keToidGhpc19zKz1hPDA/LWE6YSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToicmV0dXJuIHRoaXNfcyJ9LGZ1bmNOYW1lOiJub3JtMSJ9KSxyLnN1cD1uKHthcmdzOlsiYXJyYXkiXSxwcmU6e2JvZHk6InRoaXNfaD0tSW5maW5pdHkiLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX2giXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6ImlmKF9pbmxpbmVfMV9hcmcwXz50aGlzX2gpdGhpc19oPV9pbmxpbmVfMV9hcmcwXyIsYXJnczpbe25hbWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfV0sdGhpc1ZhcnM6WyJ0aGlzX2giXSxsb2NhbFZhcnM6W119LHBvc3Q6e2JvZHk6InJldHVybiB0aGlzX2giLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX2giXSxsb2NhbFZhcnM6W119fSksci5pbmY9bih7YXJnczpbImFycmF5Il0scHJlOntib2R5OiJ0aGlzX2g9SW5maW5pdHkiLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX2giXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6ImlmKF9pbmxpbmVfMV9hcmcwXzx0aGlzX2gpdGhpc19oPV9pbmxpbmVfMV9hcmcwXyIsYXJnczpbe25hbWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfV0sdGhpc1ZhcnM6WyJ0aGlzX2giXSxsb2NhbFZhcnM6W119LHBvc3Q6e2JvZHk6InJldHVybiB0aGlzX2giLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX2giXSxsb2NhbFZhcnM6W119fSksci5hcmdtaW49bih7YXJnczpbImluZGV4IiwiYXJyYXkiLCJzaGFwZSJdLHByZTp7Ym9keToie3RoaXNfdj1JbmZpbml0eTt0aGlzX2k9X2lubGluZV8wX2FyZzJfLnNsaWNlKDApfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMF9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV8wX2FyZzFfIixsdmFsdWU6ITEscnZhbHVlOiExLGNvdW50OjB9LHtuYW1lOiJfaW5saW5lXzBfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLHRoaXNWYXJzOlsidGhpc19pIiwidGhpc192Il0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7aWYoX2lubGluZV8xX2FyZzFfPHRoaXNfdil7dGhpc192PV9pbmxpbmVfMV9hcmcxXztmb3IodmFyIF9pbmxpbmVfMV9rPTA7X2lubGluZV8xX2s8X2lubGluZV8xX2FyZzBfLmxlbmd0aDsrK19pbmxpbmVfMV9rKXt0aGlzX2lbX2lubGluZV8xX2tdPV9pbmxpbmVfMV9hcmcwX1tfaW5saW5lXzFfa119fX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6Mn0se25hbWU6Il9pbmxpbmVfMV9hcmcxXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfV0sdGhpc1ZhcnM6WyJ0aGlzX2kiLCJ0aGlzX3YiXSxsb2NhbFZhcnM6WyJfaW5saW5lXzFfayJdfSxwb3N0Ontib2R5OiJ7cmV0dXJuIHRoaXNfaX0iLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX2kiXSxsb2NhbFZhcnM6W119fSksci5hcmdtYXg9bih7YXJnczpbImluZGV4IiwiYXJyYXkiLCJzaGFwZSJdLHByZTp7Ym9keToie3RoaXNfdj0tSW5maW5pdHk7dGhpc19pPV9pbmxpbmVfMF9hcmcyXy5zbGljZSgwKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzBfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291bnQ6MH0se25hbWU6Il9pbmxpbmVfMF9hcmcxXyIsbHZhbHVlOiExLHJ2YWx1ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV8wX2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfaSIsInRoaXNfdiJdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie2lmKF9pbmxpbmVfMV9hcmcxXz50aGlzX3Ype3RoaXNfdj1faW5saW5lXzFfYXJnMV87Zm9yKHZhciBfaW5saW5lXzFfaz0wO19pbmxpbmVfMV9rPF9pbmxpbmVfMV9hcmcwXy5sZW5ndGg7KytfaW5saW5lXzFfayl7dGhpc19pW19pbmxpbmVfMV9rXT1faW5saW5lXzFfYXJnMF9bX2lubGluZV8xX2tdfX19IixhcmdzOlt7bmFtZToiX2lubGluZV8xX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9LHtuYW1lOiJfaW5saW5lXzFfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6Mn1dLHRoaXNWYXJzOlsidGhpc19pIiwidGhpc192Il0sbG9jYWxWYXJzOlsiX2lubGluZV8xX2siXX0scG9zdDp7Ym9keToie3JldHVybiB0aGlzX2l9IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19pIl0sbG9jYWxWYXJzOltdfX0pLHIucmFuZG9tPW8oe2FyZ3M6WyJhcnJheSJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0aC5yYW5kb20iLHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIl0sYm9keToiYT10aGlzX2YoKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sZnVuY05hbWU6InJhbmRvbSJ9KSxyLmFzc2lnbj1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSJdLGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImE9YiJ9LGZ1bmNOYW1lOiJhc3NpZ24ifSksci5hc3NpZ25zPW8oe2FyZ3M6WyJhcnJheSIsInNjYWxhciJdLGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImE9YiJ9LGZ1bmNOYW1lOiJhc3NpZ25zIn0pLHIuZXF1YWxzPW4oe2FyZ3M6WyJhcnJheSIsImFycmF5Il0scHJlOmEsYm9keTp7YXJnczpbe25hbWU6IngiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6InkiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLGJvZHk6ImlmKHghPT15KXtyZXR1cm4gZmFsc2V9Iixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6W119LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOltdLGJvZHk6InJldHVybiB0cnVlIn0sZnVuY05hbWU6ImVxdWFscyJ9KX0seyJjd2lzZS1jb21waWxlciI6MTQ4fV0sNDQ3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIm5kYXJyYXkiKSxhPXQoIi4vZG9Db252ZXJ0LmpzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLGk9dCxvPTE7QXJyYXkuaXNBcnJheShpKTspci5wdXNoKGkubGVuZ3RoKSxvKj1pLmxlbmd0aCxpPWlbMF07cmV0dXJuIDA9PT1yLmxlbmd0aD9uKCk6KGV8fChlPW4obmV3IEZsb2F0NjRBcnJheShvKSxyKSksYShlLHQpLGUpfX0seyIuL2RvQ29udmVydC5qcyI6NDQ4LG5kYXJyYXk6NDUyfV0sNDQ4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoImN3aXNlLWNvbXBpbGVyIikoe2FyZ3M6WyJhcnJheSIsInNjYWxhciIsImluZGV4Il0scHJlOntib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntcbnZhciBfaW5saW5lXzFfdj1faW5saW5lXzFfYXJnMV8sX2lubGluZV8xX2lcbmZvcihfaW5saW5lXzFfaT0wO19pbmxpbmVfMV9pPF9pbmxpbmVfMV9hcmcyXy5sZW5ndGgtMTsrK19pbmxpbmVfMV9pKSB7XG5faW5saW5lXzFfdj1faW5saW5lXzFfdltfaW5saW5lXzFfYXJnMl9bX2lubGluZV8xX2ldXVxufVxuX2lubGluZV8xX2FyZzBfPV9pbmxpbmVfMV92W19pbmxpbmVfMV9hcmcyX1tfaW5saW5lXzFfYXJnMl8ubGVuZ3RoLTFdXVxufSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZhbHVlOiEwLHJ2YWx1ZTohMSxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzFfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzFfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6NH1dLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbIl9pbmxpbmVfMV9pIiwiX2lubGluZV8xX3YiXX0scG9zdDp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxmdW5jTmFtZToiY29udmVydCIsYmxvY2tTaXplOjY0fSl9LHsiY3dpc2UtY29tcGlsZXIiOjE0OH1dLDQ0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0eXBlZGFycmF5LXBvb2wiKSxhPTMyO2Z1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UidWludDgiOnJldHVybltuLm1hbGxvY1VpbnQ4LG4uZnJlZVVpbnQ4XTtjYXNlInVpbnQxNiI6cmV0dXJuW24ubWFsbG9jVWludDE2LG4uZnJlZVVpbnQxNl07Y2FzZSJ1aW50MzIiOnJldHVybltuLm1hbGxvY1VpbnQzMixuLmZyZWVVaW50MzJdO2Nhc2UiaW50OCI6cmV0dXJuW24ubWFsbG9jSW50OCxuLmZyZWVJbnQ4XTtjYXNlImludDE2IjpyZXR1cm5bbi5tYWxsb2NJbnQxNixuLmZyZWVJbnQxNl07Y2FzZSJpbnQzMiI6cmV0dXJuW24ubWFsbG9jSW50MzIsbi5mcmVlSW50MzJdO2Nhc2UiZmxvYXQzMiI6cmV0dXJuW24ubWFsbG9jRmxvYXQsbi5mcmVlRmxvYXRdO2Nhc2UiZmxvYXQ2NCI6cmV0dXJuW24ubWFsbG9jRG91YmxlLG4uZnJlZURvdWJsZV07ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9W10scj0wO3I8dDsrK3IpZS5wdXNoKCJzIityKTtmb3Iocj0wO3I8dDsrK3IpZS5wdXNoKCJuIityKTtmb3Iocj0xO3I8dDsrK3IpZS5wdXNoKCJkIityKTtmb3Iocj0xO3I8dDsrK3IpZS5wdXNoKCJlIityKTtmb3Iocj0xO3I8dDsrK3IpZS5wdXNoKCJmIityKTtyZXR1cm4gZX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1bIid1c2Ugc3RyaWN0JyJdLG49WyJuZGFycmF5U29ydFdyYXBwZXIiLHQuam9pbigiZCIpLGVdLmpvaW4oIiIpO3IucHVzaChbImZ1bmN0aW9uICIsbiwiKCIsWyJhcnJheSJdLmpvaW4oIiwiKSwiKXsiXS5qb2luKCIiKSk7Zm9yKHZhciBzPVsiZGF0YT1hcnJheS5kYXRhLG9mZnNldD1hcnJheS5vZmZzZXR8MCxzaGFwZT1hcnJheS5zaGFwZSxzdHJpZGU9YXJyYXkuc3RyaWRlIl0sbD0wO2w8dC5sZW5ndGg7KytsKXMucHVzaChbInMiLGwsIj1zdHJpZGVbIixsLCJdfDAsbiIsbCwiPXNoYXBlWyIsbCwiXXwwIl0uam9pbigiIikpO3ZhciBjPW5ldyBBcnJheSh0Lmxlbmd0aCksdT1bXTtmb3IobD0wO2w8dC5sZW5ndGg7KytsKTAhPT0ocD10W2xdKSYmKDA9PT11Lmxlbmd0aD9jW3BdPSIxIjpjW3BdPXUuam9pbigiKiIpLHUucHVzaCgibiIrcCkpO3ZhciBoPS0xLGY9LTE7Zm9yKGw9MDtsPHQubGVuZ3RoOysrbCl7dmFyIHAsZD10W2xdOzAhPT1kJiYoaD4wP3MucHVzaChbImQiLGQsIj1zIixkLCItZCIsaCwiKm4iLGhdLmpvaW4oIiIpKTpzLnB1c2goWyJkIixkLCI9cyIsZF0uam9pbigiIikpLGg9ZCksMCE9KHA9dC5sZW5ndGgtMS1sKSYmKGY+MD9zLnB1c2goWyJlIixwLCI9cyIscCwiLWUiLGYsIipuIixmLCIsZiIscCwiPSIsY1twXSwiLWYiLGYsIipuIixmXS5qb2luKCIiKSk6cy5wdXNoKFsiZSIscCwiPXMiLHAsIixmIixwLCI9IixjW3BdXS5qb2luKCIiKSksZj1wKX1yLnB1c2goInZhciAiK3Muam9pbigiLCIpKTt2YXIgZz1bIjAiLCJuMC0xIiwiZGF0YSIsIm9mZnNldCJdLmNvbmNhdChvKHQubGVuZ3RoKSk7ci5wdXNoKFsiaWYobjA8PSIsYSwiKXsiLCJpbnNlcnRpb25Tb3J0KCIsZy5qb2luKCIsIiksIil9ZWxzZXsiLCJxdWlja1NvcnQoIixnLmpvaW4oIiwiKSwiKX0iXS5qb2luKCIiKSksci5wdXNoKCJ9cmV0dXJuICIrbik7dmFyIHY9bmV3IEZ1bmN0aW9uKCJpbnNlcnRpb25Tb3J0IiwicXVpY2tTb3J0IixyLmpvaW4oIlxuIikpLG09ZnVuY3Rpb24odCxlKXt2YXIgcj1bIid1c2Ugc3RyaWN0JyJdLG49WyJuZGFycmF5SW5zZXJ0aW9uU29ydCIsdC5qb2luKCJkIiksZV0uam9pbigiIiksYT1bImxlZnQiLCJyaWdodCIsImRhdGEiLCJvZmZzZXQiXS5jb25jYXQobyh0Lmxlbmd0aCkpLHM9aShlKSxsPVsiaSxqLGNwdHIscHRyPWxlZnQqczArb2Zmc2V0Il07aWYodC5sZW5ndGg+MSl7Zm9yKHZhciBjPVtdLHU9MTt1PHQubGVuZ3RoOysrdSlsLnB1c2goImkiK3UpLGMucHVzaCgibiIrdSk7cz9sLnB1c2goInNjcmF0Y2g9bWFsbG9jKCIrYy5qb2luKCIqIikrIikiKTpsLnB1c2goInNjcmF0Y2g9bmV3IEFycmF5KCIrYy5qb2luKCIqIikrIikiKSxsLnB1c2goImRwdHIiLCJzcHRyIiwiYSIsImIiKX1lbHNlIGwucHVzaCgic2NyYXRjaCIpO2Z1bmN0aW9uIGgodCl7cmV0dXJuImdlbmVyaWMiPT09ZT9bImRhdGEuZ2V0KCIsdCwiKSJdLmpvaW4oIiIpOlsiZGF0YVsiLHQsIl0iXS5qb2luKCIiKX1mdW5jdGlvbiBmKHQscil7cmV0dXJuImdlbmVyaWMiPT09ZT9bImRhdGEuc2V0KCIsdCwiLCIsciwiKSJdLmpvaW4oIiIpOlsiZGF0YVsiLHQsIl09IixyXS5qb2luKCIiKX1pZihyLnB1c2goWyJmdW5jdGlvbiAiLG4sIigiLGEuam9pbigiLCIpLCIpe3ZhciAiLGwuam9pbigiLCIpXS5qb2luKCIiKSwiZm9yKGk9bGVmdCsxO2k8PXJpZ2h0OysraSl7Iiwiaj1pO3B0cis9czAiLCJjcHRyPXB0ciIpLHQubGVuZ3RoPjEpe2ZvcihyLnB1c2goImRwdHI9MDtzcHRyPXB0ciIpLHU9dC5sZW5ndGgtMTt1Pj0wOy0tdSkwIT09KHA9dFt1XSkmJnIucHVzaChbImZvcihpIixwLCI9MDtpIixwLCI8biIscCwiOysraSIscCwiKXsiXS5qb2luKCIiKSk7Zm9yKHIucHVzaCgic2NyYXRjaFtkcHRyKytdPSIsaCgic3B0ciIpKSx1PTA7dTx0Lmxlbmd0aDsrK3UpMCE9PShwPXRbdV0pJiZyLnB1c2goInNwdHIrPWQiK3AsIn0iKTtmb3Ioci5wdXNoKCJfX2c6d2hpbGUoai0tXHgzZWxlZnQpeyIsImRwdHI9MCIsInNwdHI9Y3B0ci1zMCIpLHU9MTt1PHQubGVuZ3RoOysrdSkxPT09dSYmci5wdXNoKCJfX2w6Iiksci5wdXNoKFsiZm9yKGkiLHUsIj0wO2kiLHUsIjxuIix1LCI7KytpIix1LCIpeyJdLmpvaW4oIiIpKTtmb3Ioci5wdXNoKFsiYT0iLGgoInNwdHIiKSwiXG5iPXNjcmF0Y2hbZHB0cl1cbmlmKGE8Yil7YnJlYWsgX19nfVxuaWYoYT5iKXticmVhayBfX2x9Il0uam9pbigiIikpLHU9dC5sZW5ndGgtMTt1Pj0xOy0tdSlyLnB1c2goInNwdHIrPWUiK3UsImRwdHIrPWYiK3UsIn0iKTtmb3Ioci5wdXNoKCJkcHRyPWNwdHI7c3B0cj1jcHRyLXMwIiksdT10Lmxlbmd0aC0xO3U+PTA7LS11KTAhPT0ocD10W3VdKSYmci5wdXNoKFsiZm9yKGkiLHAsIj0wO2kiLHAsIjxuIixwLCI7KytpIixwLCIpeyJdLmpvaW4oIiIpKTtmb3Ioci5wdXNoKGYoImRwdHIiLGgoInNwdHIiKSkpLHU9MDt1PHQubGVuZ3RoOysrdSkwIT09KHA9dFt1XSkmJnIucHVzaChbImRwdHIrPWQiLHAsIjtzcHRyKz1kIixwXS5qb2luKCIiKSwifSIpO2ZvcihyLnB1c2goImNwdHItPXMwXG59Iiksci5wdXNoKCJkcHRyPWNwdHI7c3B0cj0wIiksdT10Lmxlbmd0aC0xO3U+PTA7LS11KTAhPT0ocD10W3VdKSYmci5wdXNoKFsiZm9yKGkiLHAsIj0wO2kiLHAsIjxuIixwLCI7KytpIixwLCIpeyJdLmpvaW4oIiIpKTtmb3Ioci5wdXNoKGYoImRwdHIiLCJzY3JhdGNoW3NwdHIrK10iKSksdT0wO3U8dC5sZW5ndGg7Kyt1KXt2YXIgcDswIT09KHA9dFt1XSkmJnIucHVzaCgiZHB0cis9ZCIrcCwifSIpfX1lbHNlIHIucHVzaCgic2NyYXRjaD0iK2goInB0ciIpLCJ3aGlsZSgoai0tXHgzZWxlZnQpJiYoIitoKCJjcHRyLXMwIikrIj5zY3JhdGNoKSl7IixmKCJjcHRyIixoKCJjcHRyLXMwIikpLCJjcHRyLT1zMCIsIn0iLGYoImNwdHIiLCJzY3JhdGNoIikpO3JldHVybiByLnB1c2goIn0iKSx0Lmxlbmd0aD4xJiZzJiZyLnB1c2goImZyZWUoc2NyYXRjaCkiKSxyLnB1c2goIn0gcmV0dXJuICIrbikscz9uZXcgRnVuY3Rpb24oIm1hbGxvYyIsImZyZWUiLHIuam9pbigiXG4iKSkoc1swXSxzWzFdKTpuZXcgRnVuY3Rpb24oci5qb2luKCJcbiIpKSgpfSh0LGUpLHk9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVsiJ3VzZSBzdHJpY3QnIl0scz1bIm5kYXJyYXlRdWlja1NvcnQiLHQuam9pbigiZCIpLGVdLmpvaW4oIiIpLGw9WyJsZWZ0IiwicmlnaHQiLCJkYXRhIiwib2Zmc2V0Il0uY29uY2F0KG8odC5sZW5ndGgpKSxjPWkoZSksdT0wO24ucHVzaChbImZ1bmN0aW9uICIscywiKCIsbC5qb2luKCIsIiksIil7Il0uam9pbigiIikpO3ZhciBoPVsic2l4dGg9KChyaWdodC1sZWZ0KzEpLzYpfDAiLCJpbmRleDE9bGVmdCtzaXh0aCIsImluZGV4NT1yaWdodC1zaXh0aCIsImluZGV4Mz0obGVmdCtyaWdodCk+PjEiLCJpbmRleDI9aW5kZXgzLXNpeHRoIiwiaW5kZXg0PWluZGV4MytzaXh0aCIsImVsMT1pbmRleDEiLCJlbDI9aW5kZXgyIiwiZWwzPWluZGV4MyIsImVsND1pbmRleDQiLCJlbDU9aW5kZXg1IiwibGVzcz1sZWZ0KzEiLCJncmVhdD1yaWdodC0xIiwicGl2b3RzX2FyZV9lcXVhbD10cnVlIiwidG1wIiwidG1wMCIsIngiLCJ5IiwieiIsImsiLCJwdHIwIiwicHRyMSIsInB0cjIiLCJjb21wX3Bpdm90MT0wIiwiY29tcF9waXZvdDI9MCIsImNvbXA9MCJdO2lmKHQubGVuZ3RoPjEpe2Zvcih2YXIgZj1bXSxwPTE7cDx0Lmxlbmd0aDsrK3ApZi5wdXNoKCJuIitwKSxoLnB1c2goImkiK3ApO2ZvcihwPTA7cDw4OysrcCloLnB1c2goImJfcHRyIitwKTtoLnB1c2goInB0cjMiLCJwdHI0IiwicHRyNSIsInB0cjYiLCJwdHI3IiwicGl2b3RfcHRyIiwicHRyX3NoaWZ0IiwiZWxlbWVudFNpemU9IitmLmpvaW4oIioiKSksYz9oLnB1c2goInBpdm90MT1tYWxsb2MoZWxlbWVudFNpemUpIiwicGl2b3QyPW1hbGxvYyhlbGVtZW50U2l6ZSkiKTpoLnB1c2goInBpdm90MT1uZXcgQXJyYXkoZWxlbWVudFNpemUpLHBpdm90Mj1uZXcgQXJyYXkoZWxlbWVudFNpemUpIil9ZWxzZSBoLnB1c2goInBpdm90MSIsInBpdm90MiIpO2Z1bmN0aW9uIGQodCl7cmV0dXJuWyIob2Zmc2V0KyIsdCwiKnMwKSJdLmpvaW4oIiIpfWZ1bmN0aW9uIGcodCl7cmV0dXJuImdlbmVyaWMiPT09ZT9bImRhdGEuZ2V0KCIsdCwiKSJdLmpvaW4oIiIpOlsiZGF0YVsiLHQsIl0iXS5qb2luKCIiKX1mdW5jdGlvbiB2KHQscil7cmV0dXJuImdlbmVyaWMiPT09ZT9bImRhdGEuc2V0KCIsdCwiLCIsciwiKSJdLmpvaW4oIiIpOlsiZGF0YVsiLHQsIl09IixyXS5qb2luKCIiKX1mdW5jdGlvbiBtKGUscixhKXtpZigxPT09ZS5sZW5ndGgpbi5wdXNoKCJwdHIwPSIrZChlWzBdKSk7ZWxzZSBmb3IodmFyIGk9MDtpPGUubGVuZ3RoOysraSluLnB1c2goWyJiX3B0ciIsaSwiPXMwKiIsZVtpXV0uam9pbigiIikpO2ZvcihyJiZuLnB1c2goInBpdm90X3B0cj0wIiksbi5wdXNoKCJwdHJfc2hpZnQ9b2Zmc2V0IiksaT10Lmxlbmd0aC0xO2k+PTA7LS1pKTAhPT0obz10W2ldKSYmbi5wdXNoKFsiZm9yKGkiLG8sIj0wO2kiLG8sIjxuIixvLCI7KytpIixvLCIpeyJdLmpvaW4oIiIpKTtpZihlLmxlbmd0aD4xKWZvcihpPTA7aTxlLmxlbmd0aDsrK2kpbi5wdXNoKFsicHRyIixpLCI9Yl9wdHIiLGksIitwdHJfc2hpZnQiXS5qb2luKCIiKSk7Zm9yKG4ucHVzaChhKSxyJiZuLnB1c2goIisrcGl2b3RfcHRyIiksaT0wO2k8dC5sZW5ndGg7KytpKXt2YXIgbzswIT09KG89dFtpXSkmJihlLmxlbmd0aD4xP24ucHVzaCgicHRyX3NoaWZ0Kz1kIitvKTpuLnB1c2goInB0cjArPWQiK28pLG4ucHVzaCgifSIpKX19ZnVuY3Rpb24geShlLHIsYSxpKXtpZigxPT09ci5sZW5ndGgpbi5wdXNoKCJwdHIwPSIrZChyWzBdKSk7ZWxzZXtmb3IodmFyIG89MDtvPHIubGVuZ3RoOysrbyluLnB1c2goWyJiX3B0ciIsbywiPXMwKiIscltvXV0uam9pbigiIikpO24ucHVzaCgicHRyX3NoaWZ0PW9mZnNldCIpfWZvcihhJiZuLnB1c2goInBpdm90X3B0cj0wIiksZSYmbi5wdXNoKGUrIjoiKSxvPTE7bzx0Lmxlbmd0aDsrK28pbi5wdXNoKFsiZm9yKGkiLG8sIj0wO2kiLG8sIjxuIixvLCI7KytpIixvLCIpeyJdLmpvaW4oIiIpKTtpZihyLmxlbmd0aD4xKWZvcihvPTA7bzxyLmxlbmd0aDsrK28pbi5wdXNoKFsicHRyIixvLCI9Yl9wdHIiLG8sIitwdHJfc2hpZnQiXS5qb2luKCIiKSk7Zm9yKG4ucHVzaChpKSxvPXQubGVuZ3RoLTE7bz49MTstLW8pYSYmbi5wdXNoKCJwaXZvdF9wdHIrPWYiK28pLHIubGVuZ3RoPjE/bi5wdXNoKCJwdHJfc2hpZnQrPWUiK28pOm4ucHVzaCgicHRyMCs9ZSIrbyksbi5wdXNoKCJ9Iil9ZnVuY3Rpb24geCgpe3QubGVuZ3RoPjEmJmMmJm4ucHVzaCgiZnJlZShwaXZvdDEpIiwiZnJlZShwaXZvdDIpIil9ZnVuY3Rpb24gYihlLHIpe3ZhciBhPSJlbCIrZSxpPSJlbCIrcjtpZih0Lmxlbmd0aD4xKXt2YXIgbz0iX19sIisgKyt1O3kobyxbYSxpXSwhMSxbImNvbXA9IixnKCJwdHIwIiksIi0iLGcoInB0cjEiKSwiXG4iLCJpZihjb21wPjApe3RtcDA9IixhLCI7IixhLCI9IixpLCI7IixpLCI9dG1wMDticmVhayAiLG8sIn1cbiIsImlmKGNvbXA8MCl7YnJlYWsgIixvLCJ9Il0uam9pbigiIikpfWVsc2Ugbi5wdXNoKFsiaWYoIixnKGQoYSkpLCI+IixnKGQoaSkpLCIpe3RtcDA9IixhLCI7IixhLCI9IixpLCI7IixpLCI9dG1wMH0iXS5qb2luKCIiKSl9ZnVuY3Rpb24gXyhlLHIpe3QubGVuZ3RoPjE/bShbZSxyXSwhMSx2KCJwdHIwIixnKCJwdHIxIikpKTpuLnB1c2godihkKGUpLGcoZChyKSkpKX1mdW5jdGlvbiB3KGUscixhKXtpZih0Lmxlbmd0aD4xKXt2YXIgaT0iX19sIisgKyt1O3koaSxbcl0sITAsW2UsIj0iLGcoInB0cjAiKSwiLXBpdm90IixhLCJbcGl2b3RfcHRyXVxuIiwiaWYoIixlLCIhPT0wKXticmVhayAiLGksIn0iXS5qb2luKCIiKSl9ZWxzZSBuLnB1c2goW2UsIj0iLGcoZChyKSksIi1waXZvdCIsYV0uam9pbigiIikpfWZ1bmN0aW9uIGsoZSxyKXt0Lmxlbmd0aD4xP20oW2Uscl0sITEsWyJ0bXA9IixnKCJwdHIwIiksIlxuIix2KCJwdHIwIixnKCJwdHIxIikpLCJcbiIsdigicHRyMSIsInRtcCIpXS5qb2luKCIiKSk6bi5wdXNoKFsicHRyMD0iLGQoZSksIlxuIiwicHRyMT0iLGQociksIlxuIiwidG1wPSIsZygicHRyMCIpLCJcbiIsdigicHRyMCIsZygicHRyMSIpKSwiXG4iLHYoInB0cjEiLCJ0bXAiKV0uam9pbigiIikpfWZ1bmN0aW9uIFQoZSxyLGEpe3QubGVuZ3RoPjE/KG0oW2UscixhXSwhMSxbInRtcD0iLGcoInB0cjAiKSwiXG4iLHYoInB0cjAiLGcoInB0cjEiKSksIlxuIix2KCJwdHIxIixnKCJwdHIyIikpLCJcbiIsdigicHRyMiIsInRtcCIpXS5qb2luKCIiKSksbi5wdXNoKCIrKyIrciwiLS0iK2EpKTpuLnB1c2goWyJwdHIwPSIsZChlKSwiXG4iLCJwdHIxPSIsZChyKSwiXG4iLCJwdHIyPSIsZChhKSwiXG4iLCIrKyIsciwiXG4iLCItLSIsYSwiXG4iLCJ0bXA9IixnKCJwdHIwIiksIlxuIix2KCJwdHIwIixnKCJwdHIxIikpLCJcbiIsdigicHRyMSIsZygicHRyMiIpKSwiXG4iLHYoInB0cjIiLCJ0bXAiKV0uam9pbigiIikpfWZ1bmN0aW9uIE0odCxlKXtrKHQsZSksbi5wdXNoKCItLSIrZSl9ZnVuY3Rpb24gQShlLHIsYSl7dC5sZW5ndGg+MT9tKFtlLHJdLCEwLFt2KCJwdHIwIixnKCJwdHIxIikpLCJcbiIsdigicHRyMSIsWyJwaXZvdCIsYSwiW3Bpdm90X3B0cl0iXS5qb2luKCIiKSldLmpvaW4oIiIpKTpuLnB1c2godihkKGUpLGcoZChyKSkpLHYoZChyKSwicGl2b3QiK2EpKX1mdW5jdGlvbiBTKGUscil7bi5wdXNoKFsiaWYoKCIsciwiLSIsZSwiKTw9IixhLCIpe1xuIiwiaW5zZXJ0aW9uU29ydCgiLGUsIiwiLHIsIixkYXRhLG9mZnNldCwiLG8odC5sZW5ndGgpLmpvaW4oIiwiKSwiKVxuIiwifWVsc2V7XG4iLHMsIigiLGUsIiwiLHIsIixkYXRhLG9mZnNldCwiLG8odC5sZW5ndGgpLmpvaW4oIiwiKSwiKVxuIiwifSJdLmpvaW4oIiIpKX1mdW5jdGlvbiBFKGUscixhKXt0Lmxlbmd0aD4xPyhuLnB1c2goWyJfX2wiLCsrdSwiOndoaWxlKHRydWUpeyJdLmpvaW4oIiIpKSxtKFtlXSwhMCxbImlmKCIsZygicHRyMCIpLCIhPT1waXZvdCIsciwiW3Bpdm90X3B0cl0pe2JyZWFrIF9fbCIsdSwifSJdLmpvaW4oIiIpKSxuLnB1c2goYSwifSIpKTpuLnB1c2goWyJ3aGlsZSgiLGcoZChlKSksIj09PXBpdm90IixyLCIpeyIsYSwifSJdLmpvaW4oIiIpKX1yZXR1cm4gbi5wdXNoKCJ2YXIgIitoLmpvaW4oIiwiKSksYigxLDIpLGIoNCw1KSxiKDEsMyksYigyLDMpLGIoMSw0KSxiKDMsNCksYigyLDUpLGIoMiwzKSxiKDQsNSksdC5sZW5ndGg+MT9tKFsiZWwxIiwiZWwyIiwiZWwzIiwiZWw0IiwiZWw1IiwiaW5kZXgxIiwiaW5kZXgzIiwiaW5kZXg1Il0sITAsWyJwaXZvdDFbcGl2b3RfcHRyXT0iLGcoInB0cjEiKSwiXG4iLCJwaXZvdDJbcGl2b3RfcHRyXT0iLGcoInB0cjMiKSwiXG4iLCJwaXZvdHNfYXJlX2VxdWFsPXBpdm90c19hcmVfZXF1YWwmJihwaXZvdDFbcGl2b3RfcHRyXT09PXBpdm90MltwaXZvdF9wdHJdKVxuIiwieD0iLGcoInB0cjAiKSwiXG4iLCJ5PSIsZygicHRyMiIpLCJcbiIsIno9IixnKCJwdHI0IiksIlxuIix2KCJwdHI1IiwieCIpLCJcbiIsdigicHRyNiIsInkiKSwiXG4iLHYoInB0cjciLCJ6IildLmpvaW4oIiIpKTpuLnB1c2goWyJwaXZvdDE9IixnKGQoImVsMiIpKSwiXG4iLCJwaXZvdDI9IixnKGQoImVsNCIpKSwiXG4iLCJwaXZvdHNfYXJlX2VxdWFsPXBpdm90MT09PXBpdm90MlxuIiwieD0iLGcoZCgiZWwxIikpLCJcbiIsInk9IixnKGQoImVsMyIpKSwiXG4iLCJ6PSIsZyhkKCJlbDUiKSksIlxuIix2KGQoImluZGV4MSIpLCJ4IiksIlxuIix2KGQoImluZGV4MyIpLCJ5IiksIlxuIix2KGQoImluZGV4NSIpLCJ6IildLmpvaW4oIiIpKSxfKCJpbmRleDIiLCJsZWZ0IiksXygiaW5kZXg0IiwicmlnaHQiKSxuLnB1c2goImlmKHBpdm90c19hcmVfZXF1YWwpeyIpLG4ucHVzaCgiZm9yKGs9bGVzcztrPD1ncmVhdDsrK2speyIpLHcoImNvbXAiLCJrIiwxKSxuLnB1c2goImlmKGNvbXA9PT0wKXtjb250aW51ZX0iKSxuLnB1c2goImlmKGNvbXA8MCl7Iiksbi5wdXNoKCJpZihrIT09bGVzcyl7IiksaygiayIsImxlc3MiKSxuLnB1c2goIn0iKSxuLnB1c2goIisrbGVzcyIpLG4ucHVzaCgifWVsc2V7Iiksbi5wdXNoKCJ3aGlsZSh0cnVlKXsiKSx3KCJjb21wIiwiZ3JlYXQiLDEpLG4ucHVzaCgiaWYoY29tcD4wKXsiKSxuLnB1c2goImdyZWF0LS0iKSxuLnB1c2goIn1lbHNlIGlmKGNvbXA8MCl7IiksVCgiayIsImxlc3MiLCJncmVhdCIpLG4ucHVzaCgiYnJlYWsiKSxuLnB1c2goIn1lbHNleyIpLE0oImsiLCJncmVhdCIpLG4ucHVzaCgiYnJlYWsiKSxuLnB1c2goIn0iKSxuLnB1c2goIn0iKSxuLnB1c2goIn0iKSxuLnB1c2goIn0iKSxuLnB1c2goIn1lbHNleyIpLG4ucHVzaCgiZm9yKGs9bGVzcztrPD1ncmVhdDsrK2speyIpLHcoImNvbXBfcGl2b3QxIiwiayIsMSksbi5wdXNoKCJpZihjb21wX3Bpdm90MTwwKXsiKSxuLnB1c2goImlmKGshPT1sZXNzKXsiKSxrKCJrIiwibGVzcyIpLG4ucHVzaCgifSIpLG4ucHVzaCgiKytsZXNzIiksbi5wdXNoKCJ9ZWxzZXsiKSx3KCJjb21wX3Bpdm90MiIsImsiLDIpLG4ucHVzaCgiaWYoY29tcF9waXZvdDI+MCl7Iiksbi5wdXNoKCJ3aGlsZSh0cnVlKXsiKSx3KCJjb21wIiwiZ3JlYXQiLDIpLG4ucHVzaCgiaWYoY29tcD4wKXsiKSxuLnB1c2goImlmKC0tZ3JlYXQ8ayl7YnJlYWt9Iiksbi5wdXNoKCJjb250aW51ZSIpLG4ucHVzaCgifWVsc2V7IiksdygiY29tcCIsImdyZWF0IiwxKSxuLnB1c2goImlmKGNvbXA8MCl7IiksVCgiayIsImxlc3MiLCJncmVhdCIpLG4ucHVzaCgifWVsc2V7IiksTSgiayIsImdyZWF0Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJicmVhayIpLG4ucHVzaCgifSIpLG4ucHVzaCgifSIpLG4ucHVzaCgifSIpLG4ucHVzaCgifSIpLG4ucHVzaCgifSIpLG4ucHVzaCgifSIpLEEoImxlZnQiLCIobGVzcy0xKSIsMSksQSgicmlnaHQiLCIoZ3JlYXQrMSkiLDIpLFMoImxlZnQiLCIobGVzcy0yKSIpLFMoIihncmVhdCsyKSIsInJpZ2h0Iiksbi5wdXNoKCJpZihwaXZvdHNfYXJlX2VxdWFsKXsiKSx4KCksbi5wdXNoKCJyZXR1cm4iKSxuLnB1c2goIn0iKSxuLnB1c2goImlmKGxlc3M8aW5kZXgxJiZncmVhdD5pbmRleDUpeyIpLEUoImxlc3MiLDEsIisrbGVzcyIpLEUoImdyZWF0IiwyLCItLWdyZWF0Iiksbi5wdXNoKCJmb3Ioaz1sZXNzO2s8PWdyZWF0Oysrayl7IiksdygiY29tcF9waXZvdDEiLCJrIiwxKSxuLnB1c2goImlmKGNvbXBfcGl2b3QxPT09MCl7Iiksbi5wdXNoKCJpZihrIT09bGVzcyl7IiksaygiayIsImxlc3MiKSxuLnB1c2goIn0iKSxuLnB1c2goIisrbGVzcyIpLG4ucHVzaCgifWVsc2V7IiksdygiY29tcF9waXZvdDIiLCJrIiwyKSxuLnB1c2goImlmKGNvbXBfcGl2b3QyPT09MCl7Iiksbi5wdXNoKCJ3aGlsZSh0cnVlKXsiKSx3KCJjb21wIiwiZ3JlYXQiLDIpLG4ucHVzaCgiaWYoY29tcD09PTApeyIpLG4ucHVzaCgiaWYoLS1ncmVhdDxrKXticmVha30iKSxuLnB1c2goImNvbnRpbnVlIiksbi5wdXNoKCJ9ZWxzZXsiKSx3KCJjb21wIiwiZ3JlYXQiLDEpLG4ucHVzaCgiaWYoY29tcDwwKXsiKSxUKCJrIiwibGVzcyIsImdyZWF0Iiksbi5wdXNoKCJ9ZWxzZXsiKSxNKCJrIiwiZ3JlYXQiKSxuLnB1c2goIn0iKSxuLnB1c2goImJyZWFrIiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJ9IikseCgpLFMoImxlc3MiLCJncmVhdCIpLG4ucHVzaCgifXJldHVybiAiK3MpLHQubGVuZ3RoPjEmJmM/bmV3IEZ1bmN0aW9uKCJpbnNlcnRpb25Tb3J0IiwibWFsbG9jIiwiZnJlZSIsbi5qb2luKCJcbiIpKShyLGNbMF0sY1sxXSk6bmV3IEZ1bmN0aW9uKCJpbnNlcnRpb25Tb3J0IixuLmpvaW4oIlxuIikpKHIpfSh0LGUsbSk7cmV0dXJuIHYobSx5KX19LHsidHlwZWRhcnJheS1wb29sIjo1NDR9XSw0NTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvY29tcGlsZV9zb3J0LmpzIiksYT17fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5vcmRlcixyPXQuZHR5cGUsaT1bZSxyXS5qb2luKCI6Iiksbz1hW2ldO3JldHVybiBvfHwoYVtpXT1vPW4oZSxyKSksbyh0KSx0fX0seyIuL2xpYi9jb21waWxlX3NvcnQuanMiOjQ0OX1dLDQ1MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJuZGFycmF5LWxpbmVhci1pbnRlcnBvbGF0ZSIpLGE9dCgiY3dpc2UvbGliL3dyYXBwZXIiKSh7YXJnczpbImluZGV4IiwiYXJyYXkiLCJzY2FsYXIiLCJzY2FsYXIiLCJzY2FsYXIiXSxwcmU6e2JvZHk6Int0aGlzX3dhcnBlZD1uZXcgQXJyYXkoX2lubGluZV8zX2FyZzRfKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzNfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291bnQ6MH0se25hbWU6Il9pbmxpbmVfM19hcmcxXyIsbHZhbHVlOiExLHJ2YWx1ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV8zX2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiExLGNvdW50OjB9LHtuYW1lOiJfaW5saW5lXzNfYXJnM18iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291bnQ6MH0se25hbWU6Il9pbmxpbmVfM19hcmc0XyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sdGhpc1ZhcnM6WyJ0aGlzX3dhcnBlZCJdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie19pbmxpbmVfNF9hcmcyXyh0aGlzX3dhcnBlZCxfaW5saW5lXzRfYXJnMF8pLF9pbmxpbmVfNF9hcmcxXz1faW5saW5lXzRfYXJnM18uYXBwbHkodm9pZCAwLHRoaXNfd2FycGVkKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzRfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfNF9hcmcxXyIsbHZhbHVlOiEwLHJ2YWx1ZTohMSxjb3VudDoxfSx7bmFtZToiX2lubGluZV80X2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzRfYXJnM18iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfNF9hcmc0XyIsbHZhbHVlOiExLHJ2YWx1ZTohMSxjb3VudDowfV0sdGhpc1ZhcnM6WyJ0aGlzX3dhcnBlZCJdLGxvY2FsVmFyczpbXX0scG9zdDp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxkZWJ1ZzohMSxmdW5jTmFtZToid2FycE5EIixibG9ja1NpemU6NjR9KSxpPXQoImN3aXNlL2xpYi93cmFwcGVyIikoe2FyZ3M6WyJpbmRleCIsImFycmF5Iiwic2NhbGFyIiwic2NhbGFyIiwic2NhbGFyIl0scHJlOntib2R5OiJ7dGhpc193YXJwZWQ9WzBdfSIsYXJnczpbXSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7X2lubGluZV83X2FyZzJfKHRoaXNfd2FycGVkLF9pbmxpbmVfN19hcmcwXyksX2lubGluZV83X2FyZzFfPV9pbmxpbmVfN19hcmczXyhfaW5saW5lXzdfYXJnNF8sdGhpc193YXJwZWRbMF0pfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfN19hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV83X2FyZzFfIixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzdfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfN19hcmczXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV83X2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGRlYnVnOiExLGZ1bmNOYW1lOiJ3YXJwMUQiLGJsb2NrU2l6ZTo2NH0pLG89dCgiY3dpc2UvbGliL3dyYXBwZXIiKSh7YXJnczpbImluZGV4IiwiYXJyYXkiLCJzY2FsYXIiLCJzY2FsYXIiLCJzY2FsYXIiXSxwcmU6e2JvZHk6Int0aGlzX3dhcnBlZD1bMCwwXX0iLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlzX3dhcnBlZCJdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie19pbmxpbmVfMTBfYXJnMl8odGhpc193YXJwZWQsX2lubGluZV8xMF9hcmcwXyksX2lubGluZV8xMF9hcmcxXz1faW5saW5lXzEwX2FyZzNfKF9pbmxpbmVfMTBfYXJnNF8sdGhpc193YXJwZWRbMF0sdGhpc193YXJwZWRbMV0pfSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMTBfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTBfYXJnMV8iLGx2YWx1ZTohMCxydmFsdWU6ITEsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTBfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTBfYXJnM18iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTBfYXJnNF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLHRoaXNWYXJzOlsidGhpc193YXJwZWQiXSxsb2NhbFZhcnM6W119LHBvc3Q6e2JvZHk6Int9IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZGVidWc6ITEsZnVuY05hbWU6IndhcnAyRCIsYmxvY2tTaXplOjY0fSkscz10KCJjd2lzZS9saWIvd3JhcHBlciIpKHthcmdzOlsiaW5kZXgiLCJhcnJheSIsInNjYWxhciIsInNjYWxhciIsInNjYWxhciJdLHByZTp7Ym9keToie3RoaXNfd2FycGVkPVswLDAsMF19IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc193YXJwZWQiXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntfaW5saW5lXzEzX2FyZzJfKHRoaXNfd2FycGVkLF9pbmxpbmVfMTNfYXJnMF8pLF9pbmxpbmVfMTNfYXJnMV89X2lubGluZV8xM19hcmczXyhfaW5saW5lXzEzX2FyZzRfLHRoaXNfd2FycGVkWzBdLHRoaXNfd2FycGVkWzFdLHRoaXNfd2FycGVkWzJdKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzEzX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEzX2FyZzFfIixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEzX2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEzX2FyZzNfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEzX2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGRlYnVnOiExLGZ1bmNOYW1lOiJ3YXJwM0QiLGJsb2NrU2l6ZTo2NH0pO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7c3dpdGNoKGUuc2hhcGUubGVuZ3RoKXtjYXNlIDE6aSh0LHIsbi5kMSxlKTticmVhaztjYXNlIDI6byh0LHIsbi5kMixlKTticmVhaztjYXNlIDM6cyh0LHIsbi5kMyxlKTticmVhaztkZWZhdWx0OmEodCxyLG4uYmluZCh2b2lkIDAsZSksZS5zaGFwZS5sZW5ndGgpfXJldHVybiB0fX0seyJjd2lzZS9saWIvd3JhcHBlciI6MTUxLCJuZGFycmF5LWxpbmVhci1pbnRlcnBvbGF0ZSI6NDQ1fV0sNDUyOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiaW90YS1hcnJheSIpLGE9dCgiaXMtYnVmZmVyIiksaT0idW5kZWZpbmVkIiE9dHlwZW9mIEZsb2F0NjRBcnJheTtmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBzKCl7dmFyIHQsZT10aGlzLnN0cmlkZSxyPW5ldyBBcnJheShlLmxlbmd0aCk7Zm9yKHQ9MDt0PHIubGVuZ3RoOysrdClyW3RdPVtNYXRoLmFicyhlW3RdKSx0XTtyLnNvcnQobyk7dmFyIG49bmV3IEFycmF5KHIubGVuZ3RoKTtmb3IodD0wO3Q8bi5sZW5ndGg7Kyt0KW5bdF09clt0XVsxXTtyZXR1cm4gbn1mdW5jdGlvbiBsKHQsZSl7dmFyIHI9WyJWaWV3IixlLCJkIix0XS5qb2luKCIiKTtlPDAmJihyPSJWaWV3X05pbCIrdCk7dmFyIGE9ImdlbmVyaWMiPT09dDtpZigtMT09PWUpe3ZhciBpPSJmdW5jdGlvbiAiK3IrIihhKXt0aGlzLmRhdGE9YTt9O3ZhciBwcm90bz0iK3IrIi5wcm90b3R5cGU7cHJvdG8uZHR5cGU9JyIrdCsiJztwcm90by5pbmRleD1mdW5jdGlvbigpe3JldHVybiAtMX07cHJvdG8uc2l6ZT0wO3Byb3RvLmRpbWVuc2lvbj0tMTtwcm90by5zaGFwZT1wcm90by5zdHJpZGU9cHJvdG8ub3JkZXI9W107cHJvdG8ubG89cHJvdG8uaGk9cHJvdG8udHJhbnNwb3NlPXByb3RvLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3ICIrcisiKHRoaXMuZGF0YSk7fTtwcm90by5nZXQ9cHJvdG8uc2V0PWZ1bmN0aW9uKCl7fTtwcm90by5waWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RfIityKyIoYSl7cmV0dXJuIG5ldyAiK3IrIihhKTt9IjtyZXR1cm4gbmV3IEZ1bmN0aW9uKGkpKCl9aWYoMD09PWUpe2k9ImZ1bmN0aW9uICIrcisiKGEsZCkge3RoaXMuZGF0YSA9IGE7dGhpcy5vZmZzZXQgPSBkfTt2YXIgcHJvdG89IityKyIucHJvdG90eXBlO3Byb3RvLmR0eXBlPSciK3QrIic7cHJvdG8uaW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXR9O3Byb3RvLmRpbWVuc2lvbj0wO3Byb3RvLnNpemU9MTtwcm90by5zaGFwZT1wcm90by5zdHJpZGU9cHJvdG8ub3JkZXI9W107cHJvdG8ubG89cHJvdG8uaGk9cHJvdG8udHJhbnNwb3NlPXByb3RvLnN0ZXA9ZnVuY3Rpb24gIityKyJfY29weSgpIHtyZXR1cm4gbmV3ICIrcisiKHRoaXMuZGF0YSx0aGlzLm9mZnNldCl9O3Byb3RvLnBpY2s9ZnVuY3Rpb24gIityKyJfcGljaygpe3JldHVybiBUcml2aWFsQXJyYXkodGhpcy5kYXRhKTt9O3Byb3RvLnZhbHVlT2Y9cHJvdG8uZ2V0PWZ1bmN0aW9uICIrcisiX2dldCgpe3JldHVybiAiKyhhPyJ0aGlzLmRhdGEuZ2V0KHRoaXMub2Zmc2V0KSI6InRoaXMuZGF0YVt0aGlzLm9mZnNldF0iKSsifTtwcm90by5zZXQ9ZnVuY3Rpb24gIityKyJfc2V0KHYpe3JldHVybiAiKyhhPyJ0aGlzLmRhdGEuc2V0KHRoaXMub2Zmc2V0LHYpIjoidGhpcy5kYXRhW3RoaXMub2Zmc2V0XT12IikrIn07cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdF8iK3IrIihhLGIsYyxkKXtyZXR1cm4gbmV3ICIrcisiKGEsZCl9IjtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJUcml2aWFsQXJyYXkiLGkpKGNbdF1bMF0pfWk9WyIndXNlIHN0cmljdCciXTt2YXIgbz1uKGUpLGw9by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImkiK3R9KSx1PSJ0aGlzLm9mZnNldCsiK28ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJ0aGlzLnN0cmlkZVsiK3QrIl0qaSIrdH0pLmpvaW4oIisiKSxoPW8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJiIit0fSkuam9pbigiLCIpLGY9by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImMiK3R9KS5qb2luKCIsIik7aS5wdXNoKCJmdW5jdGlvbiAiK3IrIihhLCIraCsiLCIrZisiLGQpe3RoaXMuZGF0YT1hIiwidGhpcy5zaGFwZT1bIitoKyJdIiwidGhpcy5zdHJpZGU9WyIrZisiXSIsInRoaXMub2Zmc2V0PWR8MH0iLCJ2YXIgcHJvdG89IityKyIucHJvdG90eXBlIiwicHJvdG8uZHR5cGU9JyIrdCsiJyIsInByb3RvLmRpbWVuc2lvbj0iK2UpLGkucHVzaCgiT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCdzaXplJyx7Z2V0OmZ1bmN0aW9uICIrcisiX3NpemUoKXtyZXR1cm4gIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4idGhpcy5zaGFwZVsiK3QrIl0ifSkuam9pbigiKiIpLCJ9fSkiKSwxPT09ZT9pLnB1c2goInByb3RvLm9yZGVyPVswXSIpOihpLnB1c2goIk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywnb3JkZXInLHtnZXQ6IiksZTw0PyhpLnB1c2goImZ1bmN0aW9uICIrcisiX29yZGVyKCl7IiksMj09PWU/aS5wdXNoKCJyZXR1cm4gKE1hdGguYWJzKHRoaXMuc3RyaWRlWzBdKT5NYXRoLmFicyh0aGlzLnN0cmlkZVsxXSkpP1sxLDBdOlswLDFdfX0pIik6Mz09PWUmJmkucHVzaCgidmFyIHMwPU1hdGguYWJzKHRoaXMuc3RyaWRlWzBdKSxzMT1NYXRoLmFicyh0aGlzLnN0cmlkZVsxXSksczI9TWF0aC5hYnModGhpcy5zdHJpZGVbMl0pO2lmKHMwPnMxKXtpZihzMT5zMil7cmV0dXJuIFsyLDEsMF07fWVsc2UgaWYoczA+czIpe3JldHVybiBbMSwyLDBdO31lbHNle3JldHVybiBbMSwwLDJdO319ZWxzZSBpZihzMD5zMil7cmV0dXJuIFsyLDAsMV07fWVsc2UgaWYoczI+czEpe3JldHVybiBbMCwxLDJdO31lbHNle3JldHVybiBbMCwyLDFdO319fSkiKSk6aS5wdXNoKCJPUkRFUn0pIikpLGkucHVzaCgicHJvdG8uc2V0PWZ1bmN0aW9uICIrcisiX3NldCgiK2wuam9pbigiLCIpKyIsdil7IiksYT9pLnB1c2goInJldHVybiB0aGlzLmRhdGEuc2V0KCIrdSsiLHYpfSIpOmkucHVzaCgicmV0dXJuIHRoaXMuZGF0YVsiK3UrIl09dn0iKSxpLnB1c2goInByb3RvLmdldD1mdW5jdGlvbiAiK3IrIl9nZXQoIitsLmpvaW4oIiwiKSsiKXsiKSxhP2kucHVzaCgicmV0dXJuIHRoaXMuZGF0YS5nZXQoIit1KyIpfSIpOmkucHVzaCgicmV0dXJuIHRoaXMuZGF0YVsiK3UrIl19IiksaS5wdXNoKCJwcm90by5pbmRleD1mdW5jdGlvbiAiK3IrIl9pbmRleCgiLGwuam9pbigpLCIpe3JldHVybiAiK3UrIn0iKSxpLnB1c2goInByb3RvLmhpPWZ1bmN0aW9uICIrcisiX2hpKCIrbC5qb2luKCIsIikrIil7cmV0dXJuIG5ldyAiK3IrIih0aGlzLmRhdGEsIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bIih0eXBlb2YgaSIsdCwiIT09J251bWJlcid8fGkiLHQsIjwwKT90aGlzLnNoYXBlWyIsdCwiXTppIix0LCJ8MCJdLmpvaW4oIiIpfSkuam9pbigiLCIpKyIsIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4idGhpcy5zdHJpZGVbIit0KyJdIn0pLmpvaW4oIiwiKSsiLHRoaXMub2Zmc2V0KX0iKTt2YXIgcD1vLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iYSIrdCsiPXRoaXMuc2hhcGVbIit0KyJdIn0pLGQ9by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImMiK3QrIj10aGlzLnN0cmlkZVsiK3QrIl0ifSk7aS5wdXNoKCJwcm90by5sbz1mdW5jdGlvbiAiK3IrIl9sbygiK2wuam9pbigiLCIpKyIpe3ZhciBiPXRoaXMub2Zmc2V0LGQ9MCwiK3Auam9pbigiLCIpKyIsIitkLmpvaW4oIiwiKSk7Zm9yKHZhciBnPTA7ZzxlOysrZylpLnB1c2goImlmKHR5cGVvZiBpIitnKyI9PT0nbnVtYmVyJyYmaSIrZysiPj0wKXtkPWkiK2crInwwO2IrPWMiK2crIipkO2EiK2crIi09ZH0iKTtpLnB1c2goInJldHVybiBuZXcgIityKyIodGhpcy5kYXRhLCIrby5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImEiK3R9KS5qb2luKCIsIikrIiwiK28ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJjIit0fSkuam9pbigiLCIpKyIsYil9IiksaS5wdXNoKCJwcm90by5zdGVwPWZ1bmN0aW9uICIrcisiX3N0ZXAoIitsLmpvaW4oIiwiKSsiKXt2YXIgIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iYSIrdCsiPXRoaXMuc2hhcGVbIit0KyJdIn0pLmpvaW4oIiwiKSsiLCIrby5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImIiK3QrIj10aGlzLnN0cmlkZVsiK3QrIl0ifSkuam9pbigiLCIpKyIsYz10aGlzLm9mZnNldCxkPTAsY2VpbD1NYXRoLmNlaWwiKTtmb3IoZz0wO2c8ZTsrK2cpaS5wdXNoKCJpZih0eXBlb2YgaSIrZysiPT09J251bWJlcicpe2Q9aSIrZysifDA7aWYoZDwwKXtjKz1iIitnKyIqKGEiK2crIi0xKTthIitnKyI9Y2VpbCgtYSIrZysiL2QpfWVsc2V7YSIrZysiPWNlaWwoYSIrZysiL2QpfWIiK2crIio9ZH0iKTtpLnB1c2goInJldHVybiBuZXcgIityKyIodGhpcy5kYXRhLCIrby5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImEiK3R9KS5qb2luKCIsIikrIiwiK28ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJiIit0fSkuam9pbigiLCIpKyIsYyl9Iik7dmFyIHY9bmV3IEFycmF5KGUpLG09bmV3IEFycmF5KGUpO2ZvcihnPTA7ZzxlOysrZyl2W2ddPSJhW2kiK2crIl0iLG1bZ109ImJbaSIrZysiXSI7aS5wdXNoKCJwcm90by50cmFuc3Bvc2U9ZnVuY3Rpb24gIityKyJfdHJhbnNwb3NlKCIrbCsiKXsiK2wubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrIj0oIit0KyI9PT11bmRlZmluZWQ/IitlKyI6Iit0KyJ8MCkifSkuam9pbigiOyIpLCJ2YXIgYT10aGlzLnNoYXBlLGI9dGhpcy5zdHJpZGU7cmV0dXJuIG5ldyAiK3IrIih0aGlzLmRhdGEsIit2LmpvaW4oIiwiKSsiLCIrbS5qb2luKCIsIikrIix0aGlzLm9mZnNldCl9IiksaS5wdXNoKCJwcm90by5waWNrPWZ1bmN0aW9uICIrcisiX3BpY2soIitsKyIpe3ZhciBhPVtdLGI9W10sYz10aGlzLm9mZnNldCIpO2ZvcihnPTA7ZzxlOysrZylpLnB1c2goImlmKHR5cGVvZiBpIitnKyI9PT0nbnVtYmVyJyYmaSIrZysiPj0wKXtjPShjK3RoaXMuc3RyaWRlWyIrZysiXSppIitnKyIpfDB9ZWxzZXthLnB1c2godGhpcy5zaGFwZVsiK2crIl0pO2IucHVzaCh0aGlzLnN0cmlkZVsiK2crIl0pfSIpO3JldHVybiBpLnB1c2goInZhciBjdG9yPUNUT1JfTElTVFthLmxlbmd0aCsxXTtyZXR1cm4gY3Rvcih0aGlzLmRhdGEsYSxiLGMpfSIpLGkucHVzaCgicmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdF8iK3IrIihkYXRhLHNoYXBlLHN0cmlkZSxvZmZzZXQpe3JldHVybiBuZXcgIityKyIoZGF0YSwiK28ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJzaGFwZVsiK3QrIl0ifSkuam9pbigiLCIpKyIsIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4ic3RyaWRlWyIrdCsiXSJ9KS5qb2luKCIsIikrIixvZmZzZXQpfSIpLG5ldyBGdW5jdGlvbigiQ1RPUl9MSVNUIiwiT1JERVIiLGkuam9pbigiXG4iKSkoY1t0XSxzKX12YXIgYz17ZmxvYXQzMjpbXSxmbG9hdDY0OltdLGludDg6W10saW50MTY6W10saW50MzI6W10sdWludDg6W10sdWludDE2OltdLHVpbnQzMjpbXSxhcnJheTpbXSx1aW50OF9jbGFtcGVkOltdLGJ1ZmZlcjpbXSxnZW5lcmljOltdfTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7aWYodm9pZCAwPT09dClyZXR1cm4oMCxjLmFycmF5WzBdKShbXSk7Im51bWJlciI9PXR5cGVvZiB0JiYodD1bdF0pLHZvaWQgMD09PWUmJihlPVt0Lmxlbmd0aF0pO3ZhciBvPWUubGVuZ3RoO2lmKHZvaWQgMD09PXIpe3I9bmV3IEFycmF5KG8pO2Zvcih2YXIgcz1vLTEsdT0xO3M+PTA7LS1zKXJbc109dSx1Kj1lW3NdfWlmKHZvaWQgMD09PW4pZm9yKG49MCxzPTA7czxvOysrcylyW3NdPDAmJihuLT0oZVtzXS0xKSpyW3NdKTtmb3IodmFyIGg9ZnVuY3Rpb24odCl7aWYoYSh0KSlyZXR1cm4iYnVmZmVyIjtpZihpKXN3aXRjaChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpe2Nhc2UiW29iamVjdCBGbG9hdDY0QXJyYXldIjpyZXR1cm4iZmxvYXQ2NCI7Y2FzZSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iOnJldHVybiJmbG9hdDMyIjtjYXNlIltvYmplY3QgSW50OEFycmF5XSI6cmV0dXJuImludDgiO2Nhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6cmV0dXJuImludDE2IjtjYXNlIltvYmplY3QgSW50MzJBcnJheV0iOnJldHVybiJpbnQzMiI7Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpyZXR1cm4idWludDgiO2Nhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOnJldHVybiJ1aW50MTYiO2Nhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiJ1aW50MzIiO2Nhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOnJldHVybiJ1aW50OF9jbGFtcGVkIn1yZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOiJnZW5lcmljIn0odCksZj1jW2hdO2YubGVuZ3RoPD1vKzE7KWYucHVzaChsKGgsZi5sZW5ndGgtMSkpO3JldHVybigwLGZbbysxXSkodCxlLHIsbil9fSx7ImlvdGEtYXJyYXkiOjQxOCwiaXMtYnVmZmVyIjo0MjB9XSw0NTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZG91YmxlLWJpdHMiKSxhPU1hdGgucG93KDIsLTEwNzQpLGk9LTE+Pj4wO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQpfHxpc05hTihlKSlyZXR1cm4gTmFOO2lmKHQ9PT1lKXJldHVybiB0O2lmKDA9PT10KXJldHVybiBlPDA/LWE6YTt2YXIgcj1uLmhpKHQpLG89bi5sbyh0KTtlPnQ9PXQ+MD9vPT09aT8ocis9MSxvPTApOm8rPTE6MD09PW8/KG89aSxyLT0xKTpvLT0xO3JldHVybiBuLnBhY2sobyxyKX19LHsiZG91YmxlLWJpdHMiOjE2OX1dLDQ1NDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGguUEksYT1jKDEyMCk7ZnVuY3Rpb24gaSh0LGUscixuKXtyZXR1cm5bIkMiLHQsZSxyLG4scixuXX1mdW5jdGlvbiBvKHQsZSxyLG4sYSxpKXtyZXR1cm5bIkMiLHQvMysyLzMqcixlLzMrMi8zKm4sYS8zKzIvMypyLGkvMysyLzMqbixhLGldfWZ1bmN0aW9uIHModCxlLHIsaSxvLGMsdSxoLGYscCl7aWYocClrPXBbMF0sVD1wWzFdLF89cFsyXSx3PXBbM107ZWxzZXt2YXIgZD1sKHQsZSwtbyk7dD1kLngsZT1kLnk7dmFyIGc9KHQtKGg9KGQ9bChoLGYsLW8pKS54KSkvMix2PShlLShmPWQueSkpLzIsbT1nKmcvKHIqcikrdip2LyhpKmkpO20+MSYmKHIqPW09TWF0aC5zcXJ0KG0pLGkqPW0pO3ZhciB5PXIqcix4PWkqaSxiPShjPT11Py0xOjEpKk1hdGguc3FydChNYXRoLmFicygoeSp4LXkqdip2LXgqZypnKS8oeSp2KnYreCpnKmcpKSk7Yj09MS8wJiYoYj0xKTt2YXIgXz1iKnIqdi9pKyh0K2gpLzIsdz1iKi1pKmcvcisoZStmKS8yLGs9TWF0aC5hc2luKCgoZS13KS9pKS50b0ZpeGVkKDkpKSxUPU1hdGguYXNpbigoKGYtdykvaSkudG9GaXhlZCg5KSk7KGs9dDxfP24tazprKTwwJiYoaz0yKm4rayksKFQ9aDxfP24tVDpUKTwwJiYoVD0yKm4rVCksdSYmaz5UJiYoay09MipuKSwhdSYmVD5rJiYoVC09MipuKX1pZihNYXRoLmFicyhULWspPmEpe3ZhciBNPVQsQT1oLFM9ZjtUPWsrYSoodSYmVD5rPzE6LTEpO3ZhciBFPXMoaD1fK3IqTWF0aC5jb3MoVCksZj13K2kqTWF0aC5zaW4oVCkscixpLG8sMCx1LEEsUyxbVCxNLF8sd10pfXZhciBMPU1hdGgudGFuKChULWspLzQpLEM9NC8zKnIqTCxQPTQvMyppKkwsTz1bMip0LSh0K0MqTWF0aC5zaW4oaykpLDIqZS0oZS1QKk1hdGguY29zKGspKSxoK0MqTWF0aC5zaW4oVCksZi1QKk1hdGguY29zKFQpLGgsZl07aWYocClyZXR1cm4gTztFJiYoTz1PLmNvbmNhdChFKSk7Zm9yKHZhciB6PTA7ejxPLmxlbmd0aDspe3ZhciBJPWwoT1t6XSxPW3orMV0sbyk7T1t6KytdPUkueCxPW3orK109SS55fXJldHVybiBPfWZ1bmN0aW9uIGwodCxlLHIpe3JldHVybnt4OnQqTWF0aC5jb3MociktZSpNYXRoLnNpbihyKSx5OnQqTWF0aC5zaW4ocikrZSpNYXRoLmNvcyhyKX19ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdCoobi8xODApfWUuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGUscj1bXSxuPTAsYT0wLGw9MCx1PTAsaD1udWxsLGY9bnVsbCxwPTAsZD0wLGc9MCx2PXQubGVuZ3RoO2c8djtnKyspe3ZhciBtPXRbZ10seT1tWzBdO3N3aXRjaCh5KXtjYXNlIk0iOmw9bVsxXSx1PW1bMl07YnJlYWs7Y2FzZSJBIjoobT1zKHAsZCxtWzFdLG1bMl0sYyhtWzNdKSxtWzRdLG1bNV0sbVs2XSxtWzddKSkudW5zaGlmdCgiQyIpLG0ubGVuZ3RoPjcmJihyLnB1c2gobS5zcGxpY2UoMCw3KSksbS51bnNoaWZ0KCJDIikpO2JyZWFrO2Nhc2UiUyI6dmFyIHg9cCxiPWQ7IkMiIT1lJiYiUyIhPWV8fCh4Kz14LW4sYis9Yi1hKSxtPVsiQyIseCxiLG1bMV0sbVsyXSxtWzNdLG1bNF1dO2JyZWFrO2Nhc2UiVCI6IlEiPT1lfHwiVCI9PWU/KGg9MipwLWgsZj0yKmQtZik6KGg9cCxmPWQpLG09byhwLGQsaCxmLG1bMV0sbVsyXSk7YnJlYWs7Y2FzZSJRIjpoPW1bMV0sZj1tWzJdLG09byhwLGQsbVsxXSxtWzJdLG1bM10sbVs0XSk7YnJlYWs7Y2FzZSJMIjptPWkocCxkLG1bMV0sbVsyXSk7YnJlYWs7Y2FzZSJIIjptPWkocCxkLG1bMV0sZCk7YnJlYWs7Y2FzZSJWIjptPWkocCxkLHAsbVsxXSk7YnJlYWs7Y2FzZSJaIjptPWkocCxkLGwsdSl9ZT15LHA9bVttLmxlbmd0aC0yXSxkPW1bbS5sZW5ndGgtMV0sbS5sZW5ndGg+ND8obj1tW20ubGVuZ3RoLTRdLGE9bVttLmxlbmd0aC0zXSk6KG49cCxhPWQpLHIucHVzaChtKX1yZXR1cm4gcn19LHt9XSw0NTU6W2Z1bmN0aW9uKHQsZSxyKXtyLnZlcnRleE5vcm1hbHM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1lLmxlbmd0aCxhPW5ldyBBcnJheShuKSxpPXZvaWQgMD09PXI/MWUtNjpyLG89MDtvPG47KytvKWFbb109WzAsMCwwXTtmb3Iobz0wO288dC5sZW5ndGg7KytvKWZvcih2YXIgcz10W29dLGw9MCxjPXNbcy5sZW5ndGgtMV0sdT1zWzBdLGg9MDtoPHMubGVuZ3RoOysraCl7bD1jLGM9dSx1PXNbKGgrMSklcy5sZW5ndGhdO2Zvcih2YXIgZj1lW2xdLHA9ZVtjXSxkPWVbdV0sZz1uZXcgQXJyYXkoMyksdj0wLG09bmV3IEFycmF5KDMpLHk9MCx4PTA7eDwzOysreClnW3hdPWZbeF0tcFt4XSx2Kz1nW3hdKmdbeF0sbVt4XT1kW3hdLXBbeF0seSs9bVt4XSptW3hdO2lmKHYqeT5pKXt2YXIgYj1hW2NdLF89MS9NYXRoLnNxcnQodip5KTtmb3IoeD0wO3g8MzsrK3gpe3ZhciB3PSh4KzEpJTMsaz0oeCsyKSUzO2JbeF0rPV8qKG1bd10qZ1trXS1tW2tdKmdbd10pfX19Zm9yKG89MDtvPG47KytvKXtiPWFbb107dmFyIFQ9MDtmb3IoeD0wO3g8MzsrK3gpVCs9Ylt4XSpiW3hdO2lmKFQ+aSlmb3IoXz0xL01hdGguc3FydChUKSx4PTA7eDwzOysreCliW3hdKj1fO2Vsc2UgZm9yKHg9MDt4PDM7Kyt4KWJbeF09MH1yZXR1cm4gYX0sci5mYWNlTm9ybWFscz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPXQubGVuZ3RoLGE9bmV3IEFycmF5KG4pLGk9dm9pZCAwPT09cj8xZS02OnIsbz0wO288bjsrK28pe2Zvcih2YXIgcz10W29dLGw9bmV3IEFycmF5KDMpLGM9MDtjPDM7KytjKWxbY109ZVtzW2NdXTt2YXIgdT1uZXcgQXJyYXkoMyksaD1uZXcgQXJyYXkoMyk7Zm9yKGM9MDtjPDM7KytjKXVbY109bFsxXVtjXS1sWzBdW2NdLGhbY109bFsyXVtjXS1sWzBdW2NdO3ZhciBmPW5ldyBBcnJheSgzKSxwPTA7Zm9yKGM9MDtjPDM7KytjKXt2YXIgZD0oYysxKSUzLGc9KGMrMiklMztmW2NdPXVbZF0qaFtnXS11W2ddKmhbZF0scCs9ZltjXSpmW2NdfXA9cD5pPzEvTWF0aC5zcXJ0KHApOjA7Zm9yKGM9MDtjPDM7KytjKWZbY10qPXA7YVtvXT1mfXJldHVybiBhfX0se31dLDQ1NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxpPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciB0PW5ldyBTdHJpbmcoImFiYyIpO2lmKHRbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KVswXSlyZXR1cm4hMTtmb3IodmFyIGU9e30scj0wO3I8MTA7cisrKWVbIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUocildPXI7aWYoIjAxMjM0NTY3ODkiIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkuam9pbigiIikpcmV0dXJuITE7dmFyIG49e307cmV0dXJuImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbih0KXtuW3RdPXR9KSwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxuKSkuam9pbigiIil9Y2F0Y2godCl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbyxzPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KHQpfSh0KSxsPTE7bDxhcmd1bWVudHMubGVuZ3RoO2wrKyl7Zm9yKHZhciBjIGluIHI9T2JqZWN0KGFyZ3VtZW50c1tsXSkpYS5jYWxsKHIsYykmJihzW2NdPXJbY10pO2lmKG4pe289bihyKTtmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrKylpLmNhbGwocixvW3VdKSYmKHNbb1t1XV09cltvW3VdXSl9fXJldHVybiBzfX0se31dLDQ1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwsYyl7dmFyIHU9ZStpK2M7aWYoaD4wKXt2YXIgaD1NYXRoLnNxcnQodSsxKTt0WzBdPS41KihvLWwpL2gsdFsxXT0uNSoocy1uKS9oLHRbMl09LjUqKHItaSkvaCx0WzNdPS41Kmh9ZWxzZXt2YXIgZj1NYXRoLm1heChlLGksYyksaD1NYXRoLnNxcnQoMipmLXUrMSk7ZT49Zj8odFswXT0uNSpoLHRbMV09LjUqKGErcikvaCx0WzJdPS41KihzK24pL2gsdFszXT0uNSooby1sKS9oKTppPj1mPyh0WzBdPS41KihyK2EpL2gsdFsxXT0uNSpoLHRbMl09LjUqKGwrbykvaCx0WzNdPS41KihzLW4pL2gpOih0WzBdPS41KihuK3MpL2gsdFsxXT0uNSoobytsKS9oLHRbMl09LjUqaCx0WzNdPS41KihyLWEpL2gpfXJldHVybiB0fX0se31dLDQ1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9KHQ9dHx8e30pLmNlbnRlcnx8WzAsMCwwXSxyPXQucm90YXRpb258fFswLDAsMCwxXSxuPXQucmFkaXVzfHwxO2U9W10uc2xpY2UuY2FsbChlLDAsMyksdShyPVtdLnNsaWNlLmNhbGwociwwLDQpLHIpO3ZhciBhPW5ldyBoKHIsZSxNYXRoLmxvZyhuKSk7YS5zZXREaXN0YW5jZUxpbWl0cyh0Lnpvb21NaW4sdC56b29tTWF4KSwoImV5ZSJpbiB0fHwidXAiaW4gdCkmJmEubG9va0F0KDAsdC5leWUsdC5jZW50ZXIsdC51cCk7cmV0dXJuIGF9O3ZhciBuPXQoImZpbHRlcmVkLXZlY3RvciIpLGE9dCgiZ2wtbWF0NC9sb29rQXQiKSxpPXQoImdsLW1hdDQvZnJvbVF1YXQiKSxvPXQoImdsLW1hdDQvaW52ZXJ0Iikscz10KCIuL2xpYi9xdWF0RnJvbUZyYW1lIik7ZnVuY3Rpb24gbCh0LGUscil7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyh0LDIpK01hdGgucG93KGUsMikrTWF0aC5wb3cociwyKSl9ZnVuY3Rpb24gYyh0LGUscixuKXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHQsMikrTWF0aC5wb3coZSwyKStNYXRoLnBvdyhyLDIpK01hdGgucG93KG4sMikpfWZ1bmN0aW9uIHUodCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxhPWVbMl0saT1lWzNdLG89YyhyLG4sYSxpKTtvPjFlLTY/KHRbMF09ci9vLHRbMV09bi9vLHRbMl09YS9vLHRbM109aS9vKToodFswXT10WzFdPXRbMl09MCx0WzNdPTEpfWZ1bmN0aW9uIGgodCxlLHIpe3RoaXMucmFkaXVzPW4oW3JdKSx0aGlzLmNlbnRlcj1uKGUpLHRoaXMucm90YXRpb249bih0KSx0aGlzLmNvbXB1dGVkUmFkaXVzPXRoaXMucmFkaXVzLmN1cnZlKDApLHRoaXMuY29tcHV0ZWRDZW50ZXI9dGhpcy5jZW50ZXIuY3VydmUoMCksdGhpcy5jb21wdXRlZFJvdGF0aW9uPXRoaXMucm90YXRpb24uY3VydmUoMCksdGhpcy5jb21wdXRlZFVwPVsuMSwwLDBdLHRoaXMuY29tcHV0ZWRFeWU9Wy4xLDAsMF0sdGhpcy5jb21wdXRlZE1hdHJpeD1bLjEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLHRoaXMucmVjYWxjTWF0cml4KDApfXZhciBmPWgucHJvdG90eXBlO2YubGFzdFQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5yYWRpdXMubGFzdFQoKSx0aGlzLmNlbnRlci5sYXN0VCgpLHRoaXMucm90YXRpb24ubGFzdFQoKSl9LGYucmVjYWxjTWF0cml4PWZ1bmN0aW9uKHQpe3RoaXMucmFkaXVzLmN1cnZlKHQpLHRoaXMuY2VudGVyLmN1cnZlKHQpLHRoaXMucm90YXRpb24uY3VydmUodCk7dmFyIGU9dGhpcy5jb21wdXRlZFJvdGF0aW9uO3UoZSxlKTt2YXIgcj10aGlzLmNvbXB1dGVkTWF0cml4O2kocixlKTt2YXIgbj10aGlzLmNvbXB1dGVkQ2VudGVyLGE9dGhpcy5jb21wdXRlZEV5ZSxvPXRoaXMuY29tcHV0ZWRVcCxzPU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pO2FbMF09blswXStzKnJbMl0sYVsxXT1uWzFdK3Mqcls2XSxhWzJdPW5bMl0rcypyWzEwXSxvWzBdPXJbMV0sb1sxXT1yWzVdLG9bMl09cls5XTtmb3IodmFyIGw9MDtsPDM7KytsKXtmb3IodmFyIGM9MCxoPTA7aDwzOysraCljKz1yW2wrNCpoXSphW2hdO3JbMTIrbF09LWN9fSxmLmdldE1hdHJpeD1mdW5jdGlvbih0LGUpe3RoaXMucmVjYWxjTWF0cml4KHQpO3ZhciByPXRoaXMuY29tcHV0ZWRNYXRyaXg7aWYoZSl7Zm9yKHZhciBuPTA7bjwxNjsrK24pZVtuXT1yW25dO3JldHVybiBlfXJldHVybiByfSxmLmlkbGU9ZnVuY3Rpb24odCl7dGhpcy5jZW50ZXIuaWRsZSh0KSx0aGlzLnJhZGl1cy5pZGxlKHQpLHRoaXMucm90YXRpb24uaWRsZSh0KX0sZi5mbHVzaD1mdW5jdGlvbih0KXt0aGlzLmNlbnRlci5mbHVzaCh0KSx0aGlzLnJhZGl1cy5mbHVzaCh0KSx0aGlzLnJvdGF0aW9uLmZsdXNoKHQpfSxmLnBhbj1mdW5jdGlvbih0LGUscixuKXtlPWV8fDAscj1yfHwwLG49bnx8MCx0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgYT10aGlzLmNvbXB1dGVkTWF0cml4LGk9YVsxXSxvPWFbNV0scz1hWzldLGM9bChpLG8scyk7aS89YyxvLz1jLHMvPWM7dmFyIHU9YVswXSxoPWFbNF0sZj1hWzhdLHA9dSppK2gqbytmKnMsZD1sKHUtPWkqcCxoLT1vKnAsZi09cypwKTt1Lz1kLGgvPWQsZi89ZDt2YXIgZz1hWzJdLHY9YVs2XSxtPWFbMTBdLHk9ZyppK3YqbyttKnMseD1nKnUrdipoK20qZixiPWwoZy09eSppK3gqdSx2LT15Km8reCpoLG0tPXkqcyt4KmYpO2cvPWIsdi89YixtLz1iO3ZhciBfPXUqZStpKnIsdz1oKmUrbypyLGs9ZiplK3Mqcjt0aGlzLmNlbnRlci5tb3ZlKHQsXyx3LGspO3ZhciBUPU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pO1Q9TWF0aC5tYXgoMWUtNCxUK24pLHRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKFQpKX0sZi5yb3RhdGU9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5yZWNhbGNNYXRyaXgodCksZT1lfHwwLHI9cnx8MDt2YXIgYT10aGlzLmNvbXB1dGVkTWF0cml4LGk9YVswXSxvPWFbNF0scz1hWzhdLHU9YVsxXSxoPWFbNV0sZj1hWzldLHA9YVsyXSxkPWFbNl0sZz1hWzEwXSx2PWUqaStyKnUsbT1lKm8rcipoLHk9ZSpzK3IqZix4PS0oZCp5LWcqbSksYj0tKGcqdi1wKnkpLF89LShwKm0tZCp2KSx3PU1hdGguc3FydChNYXRoLm1heCgwLDEtTWF0aC5wb3coeCwyKS1NYXRoLnBvdyhiLDIpLU1hdGgucG93KF8sMikpKSxrPWMoeCxiLF8sdyk7az4xZS02Pyh4Lz1rLGIvPWssXy89ayx3Lz1rKTooeD1iPV89MCx3PTEpO3ZhciBUPXRoaXMuY29tcHV0ZWRSb3RhdGlvbixNPVRbMF0sQT1UWzFdLFM9VFsyXSxFPVRbM10sTD1NKncrRSp4K0EqXy1TKmIsQz1BKncrRSpiK1MqeC1NKl8sUD1TKncrRSpfK00qYi1BKngsTz1FKnctTSp4LUEqYi1TKl87aWYobil7eD1wLGI9ZCxfPWc7dmFyIHo9TWF0aC5zaW4obikvbCh4LGIsXyk7eCo9eixiKj16LF8qPXosTz1PKih3PU1hdGguY29zKGUpKS0oTD1MKncrTyp4K0MqXy1QKmIpKngtKEM9Qyp3K08qYitQKngtTCpfKSpiLShQPVAqdytPKl8rTCpiLUMqeCkqX312YXIgST1jKEwsQyxQLE8pO0k+MWUtNj8oTC89SSxDLz1JLFAvPUksTy89SSk6KEw9Qz1QPTAsTz0xKSx0aGlzLnJvdGF0aW9uLnNldCh0LEwsQyxQLE8pfSxmLmxvb2tBdD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnJlY2FsY01hdHJpeCh0KSxyPXJ8fHRoaXMuY29tcHV0ZWRDZW50ZXIsZT1lfHx0aGlzLmNvbXB1dGVkRXllLG49bnx8dGhpcy5jb21wdXRlZFVwO3ZhciBpPXRoaXMuY29tcHV0ZWRNYXRyaXg7YShpLGUscixuKTt2YXIgbz10aGlzLmNvbXB1dGVkUm90YXRpb247cyhvLGlbMF0saVsxXSxpWzJdLGlbNF0saVs1XSxpWzZdLGlbOF0saVs5XSxpWzEwXSksdShvLG8pLHRoaXMucm90YXRpb24uc2V0KHQsb1swXSxvWzFdLG9bMl0sb1szXSk7Zm9yKHZhciBsPTAsYz0wO2M8MzsrK2MpbCs9TWF0aC5wb3cocltjXS1lW2NdLDIpO3RoaXMucmFkaXVzLnNldCh0LC41Kk1hdGgubG9nKE1hdGgubWF4KGwsMWUtNikpKSx0aGlzLmNlbnRlci5zZXQodCxyWzBdLHJbMV0sclsyXSl9LGYudHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMuY2VudGVyLm1vdmUodCxlfHwwLHJ8fDAsbnx8MCl9LGYuc2V0TWF0cml4PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5jb21wdXRlZFJvdGF0aW9uO3MocixlWzBdLGVbMV0sZVsyXSxlWzRdLGVbNV0sZVs2XSxlWzhdLGVbOV0sZVsxMF0pLHUocixyKSx0aGlzLnJvdGF0aW9uLnNldCh0LHJbMF0sclsxXSxyWzJdLHJbM10pO3ZhciBuPXRoaXMuY29tcHV0ZWRNYXRyaXg7byhuLGUpO3ZhciBhPW5bMTVdO2lmKE1hdGguYWJzKGEpPjFlLTYpe3ZhciBpPW5bMTJdL2EsbD1uWzEzXS9hLGM9blsxNF0vYTt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgaD1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKTt0aGlzLmNlbnRlci5zZXQodCxpLW5bMl0qaCxsLW5bNl0qaCxjLW5bMTBdKmgpLHRoaXMucmFkaXVzLmlkbGUodCl9ZWxzZSB0aGlzLmNlbnRlci5pZGxlKHQpLHRoaXMucmFkaXVzLmlkbGUodCl9LGYuc2V0RGlzdGFuY2U9ZnVuY3Rpb24odCxlKXtlPjAmJnRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKGUpKX0sZi5zZXREaXN0YW5jZUxpbWl0cz1mdW5jdGlvbih0LGUpe3Q9dD4wP01hdGgubG9nKHQpOi0xLzAsZT1lPjA/TWF0aC5sb2coZSk6MS8wLGU9TWF0aC5tYXgoZSx0KSx0aGlzLnJhZGl1cy5ib3VuZHNbMF1bMF09dCx0aGlzLnJhZGl1cy5ib3VuZHNbMV1bMF09ZX0sZi5nZXREaXN0YW5jZUxpbWl0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnJhZGl1cy5ib3VuZHM7cmV0dXJuIHQ/KHRbMF09TWF0aC5leHAoZVswXVswXSksdFsxXT1NYXRoLmV4cChlWzFdWzBdKSx0KTpbTWF0aC5leHAoZVswXVswXSksTWF0aC5leHAoZVsxXVswXSldfSxmLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlY2FsY01hdHJpeCh0aGlzLmxhc3RUKCkpLHtjZW50ZXI6dGhpcy5jb21wdXRlZENlbnRlci5zbGljZSgpLHJvdGF0aW9uOnRoaXMuY29tcHV0ZWRSb3RhdGlvbi5zbGljZSgpLGRpc3RhbmNlOk1hdGgubG9nKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pLHpvb21NaW46dGhpcy5yYWRpdXMuYm91bmRzWzBdWzBdLHpvb21NYXg6dGhpcy5yYWRpdXMuYm91bmRzWzFdWzBdfX0sZi5mcm9tSlNPTj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUKCkscj10LmNlbnRlcjtyJiZ0aGlzLmNlbnRlci5zZXQoZSxyWzBdLHJbMV0sclsyXSk7dmFyIG49dC5yb3RhdGlvbjtuJiZ0aGlzLnJvdGF0aW9uLnNldChlLG5bMF0sblsxXSxuWzJdLG5bM10pO3ZhciBhPXQuZGlzdGFuY2U7YSYmYT4wJiZ0aGlzLnJhZGl1cy5zZXQoZSxNYXRoLmxvZyhhKSksdGhpcy5zZXREaXN0YW5jZUxpbWl0cyh0Lnpvb21NaW4sdC56b29tTWF4KX19LHsiLi9saWIvcXVhdEZyb21GcmFtZSI6NDU3LCJmaWx0ZXJlZC12ZWN0b3IiOjIyOSwiZ2wtbWF0NC9mcm9tUXVhdCI6MjY1LCJnbC1tYXQ0L2ludmVydCI6MjY4LCJnbC1tYXQ0L2xvb2tBdCI6MjY5fV0sNDU5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInJlcGVhdC1zdHJpbmciKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuKHI9InVuZGVmaW5lZCIhPXR5cGVvZiByP3IrIiI6IiAiLGUpK3R9fSx7InJlcGVhdC1zdHJpbmciOjUwMn1dLDQ2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVyblt0XTt2YXIgcj1bdF07InN0cmluZyI9PXR5cGVvZiBlfHxBcnJheS5pc0FycmF5KGUpP2U9e2JyYWNrZXRzOmV9OmV8fChlPXt9KTt2YXIgbj1lLmJyYWNrZXRzP0FycmF5LmlzQXJyYXkoZS5icmFja2V0cyk/ZS5icmFja2V0czpbZS5icmFja2V0c106WyJ7fSIsIltdIiwiKCkiXSxhPWUuZXNjYXBlfHwiX19fIixpPSEhZS5mbGF0O24uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1uZXcgUmVnRXhwKFsiXFwiLHRbMF0sIlteXFwiLHRbMF0sIlxcIix0WzFdLCJdKlxcIix0WzFdXS5qb2luKCIiKSksbj1bXTtmdW5jdGlvbiBpKGUsaSxvKXt2YXIgcz1yLnB1c2goZS5zbGljZSh0WzBdLmxlbmd0aCwtdFsxXS5sZW5ndGgpKS0xO3JldHVybiBuLnB1c2gocyksYStzK2F9ci5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBhLG89MDt0IT1hOylpZihhPXQsdD10LnJlcGxhY2UoZSxpKSxvKys+MWU0KXRocm93IEVycm9yKCJSZWZlcmVuY2VzIGhhdmUgY2lyY3VsYXIgZGVwZW5kZW5jeS4gUGxlYXNlLCBjaGVjayB0aGVtLiIpO3Jbbl09dH0pLG49bi5yZXZlcnNlKCkscj1yLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKHIpe2U9ZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihcXCIrYStyKyJcXCIrYSsiKSIsImciKSx0WzBdKyIkMSIrdFsxXSl9KSxlfSl9KTt2YXIgbz1uZXcgUmVnRXhwKCJcXCIrYSsiKFswLTldKylcXCIrYSk7cmV0dXJuIGk/cjpmdW5jdGlvbiB0KGUscixuKXtmb3IodmFyIGEsaT1bXSxzPTA7YT1vLmV4ZWMoZSk7KXtpZihzKys+MWU0KXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2VzIGluIHBhcmVudGhlc2lzIik7aS5wdXNoKGUuc2xpY2UoMCxhLmluZGV4KSksaS5wdXNoKHQoclthWzFdXSxyKSksZT1lLnNsaWNlKGEuaW5kZXgrYVswXS5sZW5ndGgpfXJldHVybiBpLnB1c2goZSksaX0oclswXSxyKX1mdW5jdGlvbiBhKHQsZSl7aWYoZSYmZS5mbGF0KXt2YXIgcixuPWUmJmUuZXNjYXBlfHwiX19fIixhPXRbMF07aWYoIWEpcmV0dXJuIiI7Zm9yKHZhciBpPW5ldyBSZWdFeHAoIlxcIituKyIoWzAtOV0rKVxcIituKSxvPTA7YSE9cjspe2lmKG8rKz4xZTQpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gIit0KTtyPWEsYT1hLnJlcGxhY2UoaSxzKX1yZXR1cm4gYX1yZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24gdChlLHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpJiYocj1yLnJlZHVjZSh0LCIiKSksZStyfSwiIik7ZnVuY3Rpb24gcyhlLHIpe2lmKG51bGw9PXRbcl0pdGhyb3cgRXJyb3IoIlJlZmVyZW5jZSAiK3IrImlzIHVuZGVmaW5lZCIpO3JldHVybiB0W3JdfX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/YSh0LGUpOm4odCxlKX1pLnBhcnNlPW4saS5zdHJpbmdpZnk9YSxlLmV4cG9ydHM9aX0se31dLDQ2MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJwaWNrLWJ5LWFsaWFzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlO2FyZ3VtZW50cy5sZW5ndGg+MSYmKHQ9YXJndW1lbnRzKTsic3RyaW5nIj09dHlwZW9mIHQ/dD10LnNwbGl0KC9ccy8pLm1hcChwYXJzZUZsb2F0KToibnVtYmVyIj09dHlwZW9mIHQmJih0PVt0XSk7dC5sZW5ndGgmJiJudW1iZXIiPT10eXBlb2YgdFswXT9lPTE9PT10Lmxlbmd0aD97d2lkdGg6dFswXSxoZWlnaHQ6dFswXSx4OjAseTowfToyPT09dC5sZW5ndGg/e3dpZHRoOnRbMF0saGVpZ2h0OnRbMV0seDowLHk6MH06e3g6dFswXSx5OnRbMV0sd2lkdGg6dFsyXS10WzBdfHwwLGhlaWdodDp0WzNdLXRbMV18fDB9OnQmJih0PW4odCx7bGVmdDoieCBsIGxlZnQgTGVmdCIsdG9wOiJ5IHQgdG9wIFRvcCIsd2lkdGg6Incgd2lkdGggVyBXaWR0aCIsaGVpZ2h0OiJoIGhlaWdodCBXIFdpZHRoIixib3R0b206ImIgYm90dG9tIEJvdHRvbSIscmlnaHQ6InIgcmlnaHQgUmlnaHQifSksZT17eDp0LmxlZnR8fDAseTp0LnRvcHx8MH0sbnVsbD09dC53aWR0aD90LnJpZ2h0P2Uud2lkdGg9dC5yaWdodC1lLng6ZS53aWR0aD0wOmUud2lkdGg9dC53aWR0aCxudWxsPT10LmhlaWdodD90LmJvdHRvbT9lLmhlaWdodD10LmJvdHRvbS1lLnk6ZS5oZWlnaHQ9MDplLmhlaWdodD10LmhlaWdodCk7cmV0dXJuIGV9fSx7InBpY2stYnktYWxpYXMiOjQ2N31dLDQ2MjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gdC5yZXBsYWNlKGEsZnVuY3Rpb24odCxyLGEpe3ZhciBvPXIudG9Mb3dlckNhc2UoKTtmb3IoYT1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKGkpO3JldHVybiBlP2UubWFwKE51bWJlcik6W119KGEpLCJtIj09byYmYS5sZW5ndGg+MiYmKGUucHVzaChbcl0uY29uY2F0KGEuc3BsaWNlKDAsMikpKSxvPSJsIixyPSJtIj09cj8ibCI6IkwiKTs7KXtpZihhLmxlbmd0aD09bltvXSlyZXR1cm4gYS51bnNoaWZ0KHIpLGUucHVzaChhKTtpZihhLmxlbmd0aDxuW29dKXRocm93IG5ldyBFcnJvcigibWFsZm9ybWVkIHBhdGggZGF0YSIpO2UucHVzaChbcl0uY29uY2F0KGEuc3BsaWNlKDAsbltvXSkpKX19KSxlfTt2YXIgbj17YTo3LGM6NixoOjEsbDoyLG06MixxOjQsczo0LHQ6Mix2OjEsejowfSxhPS8oW2FzdHZ6cW1obGNdKShbXmFzdHZ6cW1obGNdKikvZ2k7dmFyIGk9Ly0/WzAtOV0qXC4/WzAtOV0rKD86ZVstK10/XGQrKT8vZ2l9LHt9XSw0NjM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT1bMCwiIl0pLHQ9U3RyaW5nKHQpO3ZhciByPXBhcnNlRmxvYXQodCwxMCk7cmV0dXJuIGVbMF09cixlWzFdPXQubWF0Y2goL1tcZC5cLVwrXSpccyooLiopLylbMV18fCIiLGV9fSx7fV0sNDY0OltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbigpe3ZhciByLG4sYSxpLG8sczsidW5kZWZpbmVkIiE9dHlwZW9mIHBlcmZvcm1hbmNlJiZudWxsIT09cGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9lLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9OiJ1bmRlZmluZWQiIT10eXBlb2YgdCYmbnVsbCE9PXQmJnQuaHJ0aW1lPyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4ocigpLW8pLzFlNn0sbj10LmhydGltZSxpPShyPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIDFlOSoodD1uKCkpWzBdK3RbMV19KSgpLHM9MWU5KnQudXB0aW1lKCksbz1pLXMpOkRhdGUubm93PyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKS1hfSxhPURhdGUubm93KCkpOihlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKS1hfSxhPShuZXcgRGF0ZSkuZ2V0VGltZSgpKX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSl9LHtfcHJvY2Vzczo0ODR9XSw0NjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO2lmKGU8bil7Zm9yKHZhciByPTEsaT0wO2k8ZTsrK2kpZm9yKHZhciBvPTA7bzxpOysrbylpZih0W2ldPHRbb10pcj0tcjtlbHNlIGlmKHRbaV09PT10W29dKXJldHVybiAwO3JldHVybiByfWZvcih2YXIgcz1hLm1hbGxvY1VpbnQ4KGUpLGk9MDtpPGU7KytpKXNbaV09MDtmb3IodmFyIHI9MSxpPTA7aTxlOysraSlpZighc1tpXSl7dmFyIGw9MTtzW2ldPTE7Zm9yKHZhciBvPXRbaV07byE9PWk7bz10W29dKXtpZihzW29dKXJldHVybiBhLmZyZWVVaW50OChzKSwwO2wrPTEsc1tvXT0xfTEmbHx8KHI9LXIpfXJldHVybiBhLmZyZWVVaW50OChzKSxyfTt2YXIgbj0zMixhPXQoInR5cGVkYXJyYXktcG9vbCIpfSx7InR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sNDY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInR5cGVkYXJyYXktcG9vbCIpLGE9dCgiaW52ZXJ0LXBlcm11dGF0aW9uIik7ci5yYW5rPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO3N3aXRjaChlKXtjYXNlIDA6Y2FzZSAxOnJldHVybiAwO2Nhc2UgMjpyZXR1cm4gdFsxXX12YXIgcixpLG8scz1uLm1hbGxvY1VpbnQzMihlKSxsPW4ubWFsbG9jVWludDMyKGUpLGM9MDtmb3IoYSh0LGwpLG89MDtvPGU7KytvKXNbb109dFtvXTtmb3Iobz1lLTE7bz4wOy0tbylpPWxbb10scj1zW29dLHNbb109c1tpXSxzW2ldPXIsbFtvXT1sW3JdLGxbcl09aSxjPShjK3IpKm87cmV0dXJuIG4uZnJlZVVpbnQzMihsKSxuLmZyZWVVaW50MzIocyksY30sci51bnJhbms9ZnVuY3Rpb24odCxlLHIpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHJ8fFtdO2Nhc2UgMTpyZXR1cm4gcj8oclswXT0wLHIpOlswXTtjYXNlIDI6cmV0dXJuIHI/KGU/KHJbMF09MCxyWzFdPTEpOihyWzBdPTEsclsxXT0wKSxyKTplP1swLDFdOlsxLDBdfXZhciBuLGEsaSxvPTE7Zm9yKChyPXJ8fG5ldyBBcnJheSh0KSlbMF09MCxpPTE7aTx0OysraSlyW2ldPWksbz1vKml8MDtmb3IoaT10LTE7aT4wOy0taSllPWUtKG49ZS9vfDApKm98MCxvPW8vaXwwLGE9MHxyW2ldLHJbaV09MHxyW25dLHJbbl09MHxhO3JldHVybiByfX0seyJpbnZlcnQtcGVybXV0YXRpb24iOjQxNywidHlwZWRhcnJheS1wb29sIjo1NDR9XSw0Njc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLG89e307aWYoInN0cmluZyI9PXR5cGVvZiBlJiYoZT1hKGUpKSxBcnJheS5pc0FycmF5KGUpKXt2YXIgcz17fTtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKXNbZVtpXV09ITA7ZT1zfWZvcihuIGluIGUpZVtuXT1hKGVbbl0pO3ZhciBsPXt9O2ZvcihuIGluIGUpe3ZhciBjPWVbbl07aWYoQXJyYXkuaXNBcnJheShjKSlmb3IoaT0wO2k8Yy5sZW5ndGg7aSsrKXt2YXIgdT1jW2ldO2lmKHImJihsW3VdPSEwKSx1IGluIHQpe2lmKG9bbl09dFt1XSxyKWZvcih2YXIgaD1pO2g8Yy5sZW5ndGg7aCsrKWxbY1toXV09ITA7YnJlYWt9fWVsc2UgbiBpbiB0JiYoZVtuXSYmKG9bbl09dFtuXSksciYmKGxbbl09ITApKX1pZihyKWZvcihuIGluIHQpbFtuXXx8KG9bbl09dFtuXSk7cmV0dXJuIG99O3ZhciBuPXt9O2Z1bmN0aW9uIGEodCl7cmV0dXJuIG5bdF0/blt0XTooInN0cmluZyI9PXR5cGVvZiB0JiYodD1uW3RdPXQuc3BsaXQoL1xzKixccyp8XHMrLykpLHQpfX0se31dLDQ2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MHxlLmxlbmd0aCxhPXQubGVuZ3RoLGk9W25ldyBBcnJheShyKSxuZXcgQXJyYXkocildLG89MDtvPHI7KytvKWlbMF1bb109W10saVsxXVtvXT1bXTtmb3IodmFyIG89MDtvPGE7KytvKXt2YXIgcz10W29dO2lbMF1bc1swXV0ucHVzaChzKSxpWzFdW3NbMV1dLnB1c2gocyl9Zm9yKHZhciBsPVtdLG89MDtvPHI7KytvKWlbMF1bb10ubGVuZ3RoK2lbMV1bb10ubGVuZ3RoPT09MCYmbC5wdXNoKFtvXSk7ZnVuY3Rpb24gYyh0LGUpe3ZhciByPWlbZV1bdFtlXV07ci5zcGxpY2Uoci5pbmRleE9mKHQpLDEpfWZ1bmN0aW9uIHUodCxyLGEpe2Zvcih2YXIgbyxzLGwsdT0wO3U8MjsrK3UpaWYoaVt1XVtyXS5sZW5ndGg+MCl7bz1pW3VdW3JdWzBdLGw9dTticmVha31zPW9bMV5sXTtmb3IodmFyIGg9MDtoPDI7KytoKWZvcih2YXIgZj1pW2hdW3JdLHA9MDtwPGYubGVuZ3RoOysrcCl7dmFyIGQ9ZltwXSxnPWRbMV5oXSx2PW4oZVt0XSxlW3JdLGVbc10sZVtnXSk7dj4wJiYobz1kLHM9ZyxsPWgpfXJldHVybiBhP3M6KG8mJmMobyxsKSxzKX1mdW5jdGlvbiBoKHQscil7dmFyIGE9aVtyXVt0XVswXSxvPVt0XTtjKGEscik7Zm9yKHZhciBzPWFbMV5yXTs7KXtmb3IoO3MhPT10OylvLnB1c2gocykscz11KG9bby5sZW5ndGgtMl0scywhMSk7aWYoaVswXVt0XS5sZW5ndGgraVsxXVt0XS5sZW5ndGg9PT0wKWJyZWFrO3ZhciBsPW9bby5sZW5ndGgtMV0saD10LGY9b1sxXSxwPXUobCxoLCEwKTtpZihuKGVbbF0sZVtoXSxlW2ZdLGVbcF0pPDApYnJlYWs7by5wdXNoKHQpLHM9dShsLGgpfXJldHVybiBvfWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gZVsxXT09PWVbZS5sZW5ndGgtMV19Zm9yKHZhciBvPTA7bzxyOysrbylmb3IodmFyIHA9MDtwPDI7KytwKXtmb3IodmFyIGQ9W107aVtwXVtvXS5sZW5ndGg+MDspe2lbMF1bb10ubGVuZ3RoO3ZhciBnPWgobyxwKTtmKGQsZyk/ZC5wdXNoLmFwcGx5KGQsZyk6KGQubGVuZ3RoPjAmJmwucHVzaChkKSxkPWcpfWQubGVuZ3RoPjAmJmwucHVzaChkKX1yZXR1cm4gbH07dmFyIG49dCgiY29tcGFyZS1hbmdsZSIpfSx7ImNvbXBhcmUtYW5nbGUiOjEyOX1dLDQ2OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bih0LGUubGVuZ3RoKSxhPW5ldyBBcnJheShlLmxlbmd0aCksaT1uZXcgQXJyYXkoZS5sZW5ndGgpLG89W10scz0wO3M8ZS5sZW5ndGg7KytzKXt2YXIgbD1yW3NdLmxlbmd0aDtpW3NdPWwsYVtzXT0hMCxsPD0xJiZvLnB1c2gocyl9Zm9yKDtvLmxlbmd0aD4wOyl7dmFyIGM9by5wb3AoKTthW2NdPSExO2Zvcih2YXIgdT1yW2NdLHM9MDtzPHUubGVuZ3RoOysrcyl7dmFyIGg9dVtzXTswPT0tLWlbaF0mJm8ucHVzaChoKX19Zm9yKHZhciBmPW5ldyBBcnJheShlLmxlbmd0aCkscD1bXSxzPTA7czxlLmxlbmd0aDsrK3MpaWYoYVtzXSl7dmFyIGM9cC5sZW5ndGg7ZltzXT1jLHAucHVzaChlW3NdKX1lbHNlIGZbc109LTE7Zm9yKHZhciBkPVtdLHM9MDtzPHQubGVuZ3RoOysrcyl7dmFyIGc9dFtzXTthW2dbMF1dJiZhW2dbMV1dJiZkLnB1c2goW2ZbZ1swXV0sZltnWzFdXV0pfXJldHVybltkLHBdfTt2YXIgbj10KCJlZGdlcy10by1hZGphY2VuY3ktbGlzdCIpfSx7ImVkZ2VzLXRvLWFkamFjZW5jeS1saXN0IjoxNzR9XSw0NzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9Yyh0LGUpO3Q9clswXTtmb3IodmFyIGg9KGU9clsxXSkubGVuZ3RoLGY9KHQubGVuZ3RoLG4odCxlLmxlbmd0aCkpLHA9MDtwPGg7KytwKWlmKGZbcF0ubGVuZ3RoJTI9PTEpdGhyb3cgbmV3IEVycm9yKCJwbGFuYXItZ3JhcGgtdG8tcG9seWxpbmU6IGdyYXBoIG11c3QgYmUgbWFuaWZvbGQiKTt2YXIgZD1hKHQsZSk7Zm9yKHZhciBnPShkPWQuZmlsdGVyKGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPVswXSxhPTA7YTxyOysrYSl7dmFyIGk9ZVt0W2FdXSxsPWVbdFsoYSsxKSVyXV0sYz1vKC1pWzBdLGlbMV0pLHU9bygtaVswXSxsWzFdKSxoPW8obFswXSxpWzFdKSxmPW8obFswXSxsWzFdKTtuPXMobixzKHMoYyx1KSxzKGgsZikpKX1yZXR1cm4gbltuLmxlbmd0aC0xXT4wfSkpLmxlbmd0aCx2PW5ldyBBcnJheShnKSxtPW5ldyBBcnJheShnKSxwPTA7cDxnOysrcCl7dltwXT1wO3ZhciB5PW5ldyBBcnJheShnKSx4PWRbcF0ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSksYj1pKFt4XSksXz0wO3Q6Zm9yKHZhciB3PTA7dzxnOysrdylpZih5W3ddPTAscCE9PXcpe2Zvcih2YXIgaz1kW3ddLFQ9ay5sZW5ndGgsTT0wO008VDsrK00pe3ZhciBBPWIoZVtrW01dXSk7aWYoMCE9PUEpe0E8MCYmKHlbd109MSxfKz0xKTtjb250aW51ZSB0fX15W3ddPTEsXys9MX1tW3BdPVtfLHAseV19bS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVbMF0tdFswXX0pO2Zvcih2YXIgcD0wO3A8ZzsrK3ApZm9yKHZhciB5PW1bcF0sUz15WzFdLEU9eVsyXSx3PTA7dzxnOysrdylFW3ddJiYodlt3XT1TKTtmb3IodmFyIEw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPTA7cjx0OysrcillW3JdPVtdO3JldHVybiBlfShnKSxwPTA7cDxnOysrcClMW3BdLnB1c2godltwXSksTFt2W3BdXS5wdXNoKHApO2Zvcih2YXIgQz17fSxQPXUoaCwhMSkscD0wO3A8ZzsrK3ApZm9yKHZhciBrPWRbcF0sVD1rLmxlbmd0aCx3PTA7dzxUOysrdyl7dmFyIE89a1t3XSx6PWtbKHcrMSklVF0sST1NYXRoLm1pbihPLHopKyI6IitNYXRoLm1heChPLHopO2lmKEkgaW4gQyl7dmFyIEQ9Q1tJXTtMW0RdLnB1c2gocCksTFtwXS5wdXNoKEQpLFBbT109UFt6XT0hMH1lbHNlIENbSV09cH1mdW5jdGlvbiBSKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPTA7cjxlOysrcilpZighUFt0W3JdXSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IodmFyIEY9W10sQj11KGcsLTEpLHA9MDtwPGc7KytwKXZbcF0hPT1wfHxSKGRbcF0pP0JbcF09LTE6KEYucHVzaChwKSxCW3BdPTApO3ZhciByPVtdO2Zvcig7Ri5sZW5ndGg+MDspe3ZhciBOPUYucG9wKCksaj1MW05dO2woaixmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KTt2YXIgVixVPWoubGVuZ3RoLHE9QltOXTtpZigwPT09cSl7dmFyIGs9ZFtOXTtWPVtrXX1mb3IodmFyIHA9MDtwPFU7KytwKXt2YXIgSD1qW3BdO2lmKCEoQltIXT49MCkmJihCW0hdPTFecSxGLnB1c2goSCksMD09PXEpKXt2YXIgaz1kW0hdO1Ioayl8fChrLnJldmVyc2UoKSxWLnB1c2goaykpfX0wPT09cSYmci5wdXNoKFYpfXJldHVybiByfTt2YXIgbj10KCJlZGdlcy10by1hZGphY2VuY3ktbGlzdCIpLGE9dCgicGxhbmFyLWR1YWwiKSxpPXQoInBvaW50LWluLWJpZy1wb2x5Z29uIiksbz10KCJ0d28tcHJvZHVjdCIpLHM9dCgicm9idXN0LXN1bSIpLGw9dCgidW5pcSIpLGM9dCgiLi9saWIvdHJpbS1sZWF2ZXMiKTtmdW5jdGlvbiB1KHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheSh0KSxuPTA7bjx0OysrbilyW25dPWU7cmV0dXJuIHJ9fSx7Ii4vbGliL3RyaW0tbGVhdmVzIjo0NjksImVkZ2VzLXRvLWFkamFjZW5jeS1saXN0IjoxNzQsInBsYW5hci1kdWFsIjo0NjgsInBvaW50LWluLWJpZy1wb2x5Z29uIjo0NzQsInJvYnVzdC1zdW0iOjUxNCwidHdvLXByb2R1Y3QiOjU0Mix1bmlxOjU0Nn1dLDQ3MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9xdWFkIil9LHsiLi9xdWFkIjo0NzN9XSw0NzI6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bMTEzXVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6MTEzfV0sNDczOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksYT10KCJjbGFtcCIpLGk9dCgicGFyc2UtcmVjdCIpLG89dCgiYXJyYXktYm91bmRzIikscz10KCJwaWNrLWJ5LWFsaWFzIiksbD10KCJkZWZpbmVkIiksYz10KCJmbGF0dGVuLXZlcnRleC1kYXRhIiksdT10KCJpcy1vYmoiKSxoPXQoImR0eXBlIiksZj10KCJtYXRoLWxvZzIiKSxwPTEwNzM3NDE4MjQ7ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgcj1lWzBdLG49ZVsxXSxpPTEvKGVbMl0tciksbz0xLyhlWzNdLW4pLHM9bmV3IEFycmF5KHQubGVuZ3RoKSxsPTAsYz10Lmxlbmd0aC8yO2w8YztsKyspc1syKmxdPWEoKHRbMipsXS1yKSppLDAsMSksc1syKmwrMV09YSgodFsyKmwrMV0tbikqbywwLDEpO3JldHVybiBzfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2V8fChlPXt9KSx0PWModCwiZmxvYXQ2NCIpLGU9cyhlLHtib3VuZHM6InJhbmdlIGJvdW5kcyBkYXRhQm94IGRhdGFib3giLG1heERlcHRoOiJkZXB0aCBtYXhEZXB0aCBtYXhkZXB0aCBsZXZlbCBtYXhMZXZlbCBtYXhsZXZlbCBsZXZlbHMiLGR0eXBlOiJ0eXBlIGR0eXBlIGZvcm1hdCBvdXQgZHN0IG91dHB1dCBkZXN0aW5hdGlvbiJ9KTt2YXIgcj1sKGUubWF4RGVwdGgsMjU1KSxhPWwoZS5ib3VuZHMsbyh0LDIpKTthWzBdPT09YVsyXSYmYVsyXSsrLGFbMV09PT1hWzNdJiZhWzNdKys7dmFyIGcsdj1kKHQsYSksbT10Lmxlbmd0aD4+PjE7ZS5kdHlwZXx8KGUuZHR5cGU9ImFycmF5IiksInN0cmluZyI9PXR5cGVvZiBlLmR0eXBlP2c9bmV3KGgoZS5kdHlwZSkpKG0pOmUuZHR5cGUmJihnPWUuZHR5cGUsQXJyYXkuaXNBcnJheShnKSYmKGcubGVuZ3RoPW0pKTtmb3IodmFyIHk9MDt5PG07Kyt5KWdbeV09eTt2YXIgeD1bXSxiPVtdLF89W10sdz1bXTshZnVuY3Rpb24gdChlLG4sYSxpLG8scyl7aWYoIWkubGVuZ3RoKXJldHVybiBudWxsO3ZhciBsPXhbb118fCh4W29dPVtdKTt2YXIgYz1fW29dfHwoX1tvXT1bXSk7dmFyIHU9YltvXXx8KGJbb109W10pO3ZhciBoPWwubGVuZ3RoO28rKztpZihvPnJ8fHM+cCl7Zm9yKHZhciBmPTA7ZjxpLmxlbmd0aDtmKyspbC5wdXNoKGlbZl0pLGMucHVzaChzKSx1LnB1c2gobnVsbCxudWxsLG51bGwsbnVsbCk7cmV0dXJuIGh9bC5wdXNoKGlbMF0pO2MucHVzaChzKTtpZihpLmxlbmd0aDw9MSlyZXR1cm4gdS5wdXNoKG51bGwsbnVsbCxudWxsLG51bGwpLGg7dmFyIGQ9LjUqYTt2YXIgZz1lK2QsbT1uK2Q7dmFyIHk9W10sdz1bXSxrPVtdLFQ9W107Zm9yKHZhciBNPTEsQT1pLmxlbmd0aDtNPEE7TSsrKXt2YXIgUz1pW01dLEU9dlsyKlNdLEw9dlsyKlMrMV07RTxnP0w8bT95LnB1c2goUyk6dy5wdXNoKFMpOkw8bT9rLnB1c2goUyk6VC5wdXNoKFMpfXM8PD0yO3UucHVzaCh0KGUsbixkLHksbyxzKSx0KGUsbSxkLHcsbyxzKzEpLHQoZyxuLGQsayxvLHMrMiksdChnLG0sZCxULG8scyszKSk7cmV0dXJuIGh9KDAsMCwxLGcsMCwxKTtmb3IodmFyIGs9MCxUPTA7VDx4Lmxlbmd0aDtUKyspe3ZhciBNPXhbVF07aWYoZy5zZXQpZy5zZXQoTSxrKTtlbHNlIGZvcih2YXIgQT0wLFM9TS5sZW5ndGg7QTxTO0ErKylnW0Era109TVtBXTt2YXIgRT1rK3hbVF0ubGVuZ3RoO3dbVF09W2ssRV0saz1FfXJldHVybiBnLnJhbmdlPWZ1bmN0aW9uKCl7dmFyIGUscj1bXSxvPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDtvLS07KXJbb109YXJndW1lbnRzW29dO2lmKHUocltyLmxlbmd0aC0xXSkpe3ZhciBjPXIucG9wKCk7ci5sZW5ndGh8fG51bGw9PWMueCYmbnVsbD09Yy5sJiZudWxsPT1jLmxlZnR8fChyPVtjXSxlPXt9KSxlPXMoYyx7bGV2ZWw6ImxldmVsIG1heExldmVsIixkOiJkIGRpYW0gZGlhbWV0ZXIgciByYWRpdXMgcHggcHhTaXplIHBpeGVsIHBpeGVsU2l6ZSBtYXhEIHNpemUgbWluU2l6ZSIsbG9kOiJsb2QgZGV0YWlscyByYW5nZXMgb2Zmc2V0cyJ9KX1lbHNlIGU9e307ci5sZW5ndGh8fChyPWEpO3ZhciBoPWkuYXBwbHkodm9pZCAwLHIpLHA9W01hdGgubWluKGgueCxoLngraC53aWR0aCksTWF0aC5taW4oaC55LGgueStoLmhlaWdodCksTWF0aC5tYXgoaC54LGgueCtoLndpZHRoKSxNYXRoLm1heChoLnksaC55K2guaGVpZ2h0KV0sZz1wWzBdLHY9cFsxXSxtPXBbMl0seT1wWzNdLGs9ZChbZyx2LG0seV0sYSksVD1rWzBdLE09a1sxXSxBPWtbMl0sUz1rWzNdLEU9bChlLmxldmVsLHgubGVuZ3RoKTtpZihudWxsIT1lLmQpe3ZhciBDOyJudW1iZXIiPT10eXBlb2YgZS5kP0M9W2UuZCxlLmRdOmUuZC5sZW5ndGgmJihDPWUuZCksRT1NYXRoLm1pbihNYXRoLm1heChNYXRoLmNlaWwoLWYoTWF0aC5hYnMoQ1swXSkvKGFbMl0tYVswXSkpKSxNYXRoLmNlaWwoLWYoTWF0aC5hYnMoQ1sxXSkvKGFbM10tYVsxXSkpKSksRSl9aWYoRT1NYXRoLm1pbihFLHgubGVuZ3RoKSxlLmxvZClyZXR1cm4gZnVuY3Rpb24odCxlLHIsYSxpKXtmb3IodmFyIG89W10scz0wO3M8aTtzKyspe3ZhciBsPV9bc10sYz13W3NdWzBdLHU9TCh0LGUscyksaD1MKHIsYSxzKSxmPW4uZ2UobCx1KSxwPW4uZ3QobCxoLGYsbC5sZW5ndGgtMSk7b1tzXT1bZitjLHArY119cmV0dXJuIG99KFQsTSxBLFMsRSk7dmFyIFA9W107cmV0dXJuIGZ1bmN0aW9uIGUocixuLGEsaSxvLHMpe2lmKG51bGwhPT1vJiZudWxsIT09cyl7dmFyIGw9cithLGM9bithO2lmKCEoVD5sfHxNPmN8fEE8cnx8UzxufHxpPj1FfHxvPT09cykpe3ZhciB1PXhbaV07dm9pZCAwPT09cyYmKHM9dS5sZW5ndGgpO2Zvcih2YXIgaD1vO2g8cztoKyspe3ZhciBmPXVbaF0scD10WzIqZl0sZD10WzIqZisxXTtwPj1nJiZwPD1tJiZkPj12JiZkPD15JiZQLnB1c2goZil9dmFyIF89YltpXSx3PV9bNCpvKzBdLGs9X1s0Km8rMV0sTD1fWzQqbysyXSxDPV9bNCpvKzNdLE89ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bnVsbCxuPTA7bnVsbD09PXI7KWlmKHI9dFs0KmUrbl0sKytuPnQubGVuZ3RoKXJldHVybiBudWxsO3JldHVybiByfShfLG8rMSksej0uNSphLEk9aSsxO2UocixuLHosSSx3LGt8fEx8fEN8fE8pLGUocixuK3oseixJLGssTHx8Q3x8TyksZShyK3osbix6LEksTCxDfHxPKSxlKHIreixuK3oseixJLEMsTyl9fX0oMCwwLDEsMCwwLDEpLFB9LGc7ZnVuY3Rpb24gTCh0LGUscil7Zm9yKHZhciBuPTEsYT0uNSxpPS41LG89LjUscz0wO3M8cjtzKyspbjw8PTIsbis9dDxhP2U8aT8wOjE6ZTxpPzI6MyxvKj0uNSxhKz10PGE/LW86byxpKz1lPGk/LW86bztyZXR1cm4gbn19fSx7ImFycmF5LWJvdW5kcyI6NjgsImJpbmFyeS1zZWFyY2gtYm91bmRzIjo0NzIsY2xhbXA6MTE3LGRlZmluZWQ6MTY2LGR0eXBlOjE3MSwiZmxhdHRlbi12ZXJ0ZXgtZGF0YSI6MjMwLCJpcy1vYmoiOjQyMywibWF0aC1sb2cyIjo0MzQsInBhcnNlLXJlY3QiOjQ2MSwicGljay1ieS1hbGlhcyI6NDY3fV0sNDc0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPVtdLGk9W10scz0wO3M8ZTsrK3MpZm9yKHZhciB1PXRbc10saD11Lmxlbmd0aCxmPWgtMSxwPTA7cDxoO2Y9cCsrKXt2YXIgZD11W2ZdLGc9dVtwXTtkWzBdPT09Z1swXT9pLnB1c2goW2QsZ10pOnIucHVzaChbZCxnXSl9aWYoMD09PXIubGVuZ3RoKXJldHVybiAwPT09aS5sZW5ndGg/Yzoodj1sKGkpLGZ1bmN0aW9uKHQpe3JldHVybiB2KHRbMF0sdFsxXSk/MDoxfSk7dmFyIHY7dmFyIG09YShyKSx5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBhPW8ubGUoZSxyWzBdKTtpZihhPDApcmV0dXJuIDE7dmFyIGk9dFthXTtpZighaSl7aWYoIShhPjAmJmVbYV09PT1yWzBdKSlyZXR1cm4gMTtpPXRbYS0xXX1mb3IodmFyIHM9MTtpOyl7dmFyIGw9aS5rZXksYz1uKHIsbFswXSxsWzFdKTtpZihsWzBdWzBdPGxbMV1bMF0paWYoYzwwKWk9aS5sZWZ0O2Vsc2V7aWYoIShjPjApKXJldHVybiAwO3M9LTEsaT1pLnJpZ2h0fWVsc2UgaWYoYz4wKWk9aS5sZWZ0O2Vsc2V7aWYoIShjPDApKXJldHVybiAwO3M9MSxpPWkucmlnaHR9fXJldHVybiBzfX0obS5zbGFicyxtLmNvb3JkaW5hdGVzKTtyZXR1cm4gMD09PWkubGVuZ3RoP3k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoclswXSxyWzFdKT8wOmUocil9fShsKGkpLHkpfTt2YXIgbj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXSxhPXQoInNsYWItZGVjb21wb3NpdGlvbiIpLGk9dCgiaW50ZXJ2YWwtdHJlZS0xZCIpLG89dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKTtmdW5jdGlvbiBzKCl7cmV0dXJuITB9ZnVuY3Rpb24gbCh0KXtmb3IodmFyIGU9e30scj0wO3I8dC5sZW5ndGg7KytyKXt2YXIgbj10W3JdLGE9blswXVswXSxvPW5bMF1bMV0sbD1uWzFdWzFdLGM9W01hdGgubWluKG8sbCksTWF0aC5tYXgobyxsKV07YSBpbiBlP2VbYV0ucHVzaChjKTplW2FdPVtjXX12YXIgdT17fSxoPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxoLmxlbmd0aDsrK3Ipe3ZhciBmPWVbaFtyXV07dVtoW3JdXT1pKGYpfXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgbj10W2VdO3JldHVybiEhbiYmISFuLnF1ZXJ5UG9pbnQocixzKX19KHUpfWZ1bmN0aW9uIGModCl7cmV0dXJuIDF9fSx7ImJpbmFyeS1zZWFyY2gtYm91bmRzIjo5MywiaW50ZXJ2YWwtdHJlZS0xZCI6NDE2LCJyb2J1c3Qtb3JpZW50YXRpb24iOjUwOSwic2xhYi1kZWNvbXBvc2l0aW9uIjo1MjV9XSw0NzU6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbixhPXQoIi4vbGliL2J1aWxkLWxvZyIpLGk9dCgiLi9saWIvZXBzaWxvbiIpLG89dCgiLi9saWIvaW50ZXJzZWN0ZXIiKSxzPXQoIi4vbGliL3NlZ21lbnQtY2hhaW5lciIpLGw9dCgiLi9saWIvc2VnbWVudC1zZWxlY3RvciIpLGM9dCgiLi9saWIvZ2VvanNvbiIpLHU9ITEsaD1pKCk7ZnVuY3Rpb24gZih0LGUscil7dmFyIGE9bi5zZWdtZW50cyh0KSxpPW4uc2VnbWVudHMoZSksbz1yKG4uY29tYmluZShhLGkpKTtyZXR1cm4gbi5wb2x5Z29uKG8pfW49e2J1aWxkTG9nOmZ1bmN0aW9uKHQpe3JldHVybiEwPT09dD91PWEoKTohMT09PXQmJih1PSExKSwhMSE9PXUmJnUubGlzdH0sZXBzaWxvbjpmdW5jdGlvbih0KXtyZXR1cm4gaC5lcHNpbG9uKHQpfSxzZWdtZW50czpmdW5jdGlvbih0KXt2YXIgZT1vKCEwLGgsdSk7cmV0dXJuIHQucmVnaW9ucy5mb3JFYWNoKGUuYWRkUmVnaW9uKSx7c2VnbWVudHM6ZS5jYWxjdWxhdGUodC5pbnZlcnRlZCksaW52ZXJ0ZWQ6dC5pbnZlcnRlZH19LGNvbWJpbmU6ZnVuY3Rpb24odCxlKXtyZXR1cm57Y29tYmluZWQ6byghMSxoLHUpLmNhbGN1bGF0ZSh0LnNlZ21lbnRzLHQuaW52ZXJ0ZWQsZS5zZWdtZW50cyxlLmludmVydGVkKSxpbnZlcnRlZDE6dC5pbnZlcnRlZCxpbnZlcnRlZDI6ZS5pbnZlcnRlZH19LHNlbGVjdFVuaW9uOmZ1bmN0aW9uKHQpe3JldHVybntzZWdtZW50czpsLnVuaW9uKHQuY29tYmluZWQsdSksaW52ZXJ0ZWQ6dC5pbnZlcnRlZDF8fHQuaW52ZXJ0ZWQyfX0sc2VsZWN0SW50ZXJzZWN0OmZ1bmN0aW9uKHQpe3JldHVybntzZWdtZW50czpsLmludGVyc2VjdCh0LmNvbWJpbmVkLHUpLGludmVydGVkOnQuaW52ZXJ0ZWQxJiZ0LmludmVydGVkMn19LHNlbGVjdERpZmZlcmVuY2U6ZnVuY3Rpb24odCl7cmV0dXJue3NlZ21lbnRzOmwuZGlmZmVyZW5jZSh0LmNvbWJpbmVkLHUpLGludmVydGVkOnQuaW52ZXJ0ZWQxJiYhdC5pbnZlcnRlZDJ9fSxzZWxlY3REaWZmZXJlbmNlUmV2OmZ1bmN0aW9uKHQpe3JldHVybntzZWdtZW50czpsLmRpZmZlcmVuY2VSZXYodC5jb21iaW5lZCx1KSxpbnZlcnRlZDohdC5pbnZlcnRlZDEmJnQuaW52ZXJ0ZWQyfX0sc2VsZWN0WG9yOmZ1bmN0aW9uKHQpe3JldHVybntzZWdtZW50czpsLnhvcih0LmNvbWJpbmVkLHUpLGludmVydGVkOnQuaW52ZXJ0ZWQxIT09dC5pbnZlcnRlZDJ9fSxwb2x5Z29uOmZ1bmN0aW9uKHQpe3JldHVybntyZWdpb25zOnModC5zZWdtZW50cyxoLHUpLGludmVydGVkOnQuaW52ZXJ0ZWR9fSxwb2x5Z29uRnJvbUdlb0pTT046ZnVuY3Rpb24odCl7cmV0dXJuIGMudG9Qb2x5Z29uKG4sdCl9LHBvbHlnb25Ub0dlb0pTT046ZnVuY3Rpb24odCl7cmV0dXJuIGMuZnJvbVBvbHlnb24obixoLHQpfSx1bmlvbjpmdW5jdGlvbih0LGUpe3JldHVybiBmKHQsZSxuLnNlbGVjdFVuaW9uKX0saW50ZXJzZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGYodCxlLG4uc2VsZWN0SW50ZXJzZWN0KX0sZGlmZmVyZW5jZTpmdW5jdGlvbih0LGUpe3JldHVybiBmKHQsZSxuLnNlbGVjdERpZmZlcmVuY2UpfSxkaWZmZXJlbmNlUmV2OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGYodCxlLG4uc2VsZWN0RGlmZmVyZW5jZVJldil9LHhvcjpmdW5jdGlvbih0LGUpe3JldHVybiBmKHQsZSxuLnNlbGVjdFhvcil9fSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5Qb2x5Qm9vbD1uKSxlLmV4cG9ydHM9bn0seyIuL2xpYi9idWlsZC1sb2ciOjQ3NiwiLi9saWIvZXBzaWxvbiI6NDc3LCIuL2xpYi9nZW9qc29uIjo0NzgsIi4vbGliL2ludGVyc2VjdGVyIjo0NzksIi4vbGliL3NlZ21lbnQtY2hhaW5lciI6NDgxLCIuL2xpYi9zZWdtZW50LXNlbGVjdG9yIjo0ODJ9XSw0NzY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdCxlPTAscj0hMTtmdW5jdGlvbiBuKGUscil7cmV0dXJuIHQubGlzdC5wdXNoKHt0eXBlOmUsZGF0YTpyP0pTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocikpOnZvaWQgMH0pLHR9cmV0dXJuIHQ9e2xpc3Q6W10sc2VnbWVudElkOmZ1bmN0aW9uKCl7cmV0dXJuIGUrK30sY2hlY2tJbnRlcnNlY3Rpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gbigiY2hlY2siLHtzZWcxOnQsc2VnMjplfSl9LHNlZ21lbnRDaG9wOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oImRpdl9zZWciLHtzZWc6dCxwdDplfSksbigiY2hvcCIse3NlZzp0LHB0OmV9KX0sc3RhdHVzUmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiBuKCJwb3Bfc2VnIix7c2VnOnR9KX0sc2VnbWVudFVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gbigic2VnX3VwZGF0ZSIse3NlZzp0fSl9LHNlZ21lbnROZXc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbigibmV3X3NlZyIse3NlZzp0LHByaW1hcnk6ZX0pfSxzZWdtZW50UmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiBuKCJyZW1fc2VnIix7c2VnOnR9KX0sdGVtcFN0YXR1czpmdW5jdGlvbih0LGUscil7cmV0dXJuIG4oInRlbXBfc3RhdHVzIix7c2VnOnQsYWJvdmU6ZSxiZWxvdzpyfSl9LHJld2luZDpmdW5jdGlvbih0KXtyZXR1cm4gbigicmV3aW5kIix7c2VnOnR9KX0sc3RhdHVzOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbigic3RhdHVzIix7c2VnOnQsYWJvdmU6ZSxiZWxvdzpyfSl9LHZlcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1yP3Q6KHI9ZSxuKCJ2ZXJ0Iix7eDplfSkpfSxsb2c6ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0JiYodD1KU09OLnN0cmluZ2lmeSh0LCExLCIgICIpKSxuKCJsb2ciLHt0eHQ6dH0pfSxyZXNldDpmdW5jdGlvbigpe3JldHVybiBuKCJyZXNldCIpfSxzZWxlY3RlZDpmdW5jdGlvbih0KXtyZXR1cm4gbigic2VsZWN0ZWQiLHtzZWdzOnR9KX0sY2hhaW5TdGFydDpmdW5jdGlvbih0KXtyZXR1cm4gbigiY2hhaW5fc3RhcnQiLHtzZWc6dH0pfSxjaGFpblJlbW92ZUhlYWQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbigiY2hhaW5fcmVtX2hlYWQiLHtpbmRleDp0LHB0OmV9KX0sY2hhaW5SZW1vdmVUYWlsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oImNoYWluX3JlbV90YWlsIix7aW5kZXg6dCxwdDplfSl9LGNoYWluTmV3OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oImNoYWluX25ldyIse3B0MTp0LHB0MjplfSl9LGNoYWluTWF0Y2g6ZnVuY3Rpb24odCl7cmV0dXJuIG4oImNoYWluX21hdGNoIix7aW5kZXg6dH0pfSxjaGFpbkNsb3NlOmZ1bmN0aW9uKHQpe3JldHVybiBuKCJjaGFpbl9jbG9zZSIse2luZGV4OnR9KX0sY2hhaW5BZGRIZWFkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oImNoYWluX2FkZF9oZWFkIix7aW5kZXg6dCxwdDplfSl9LGNoYWluQWRkVGFpbDpmdW5jdGlvbih0LGUpe3JldHVybiBuKCJjaGFpbl9hZGRfdGFpbCIse2luZGV4OnQscHQ6ZX0pfSxjaGFpbkNvbm5lY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbigiY2hhaW5fY29uIix7aW5kZXgxOnQsaW5kZXgyOmV9KX0sY2hhaW5SZXZlcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuKCJjaGFpbl9yZXYiLHtpbmRleDp0fSl9LGNoYWluSm9pbjpmdW5jdGlvbih0LGUpe3JldHVybiBuKCJjaGFpbl9qb2luIix7aW5kZXgxOnQsaW5kZXgyOmV9KX0sZG9uZTpmdW5jdGlvbigpe3JldHVybiBuKCJkb25lIil9fX19LHt9XSw0Nzc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Im51bWJlciIhPXR5cGVvZiB0JiYodD0xZS0xMCk7dmFyIGU9e2Vwc2lsb246ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiYodD1lKSx0fSxwb2ludEFib3ZlT3JPbkxpbmU6ZnVuY3Rpb24oZSxyLG4pe3ZhciBhPXJbMF0saT1yWzFdLG89blswXSxzPW5bMV0sbD1lWzBdO3JldHVybihvLWEpKihlWzFdLWkpLShzLWkpKihsLWEpPj0tdH0scG9pbnRCZXR3ZWVuOmZ1bmN0aW9uKGUscixuKXt2YXIgYT1lWzFdLXJbMV0saT1uWzBdLXJbMF0sbz1lWzBdLXJbMF0scz1uWzFdLXJbMV0sbD1vKmkrYSpzO3JldHVybiEobDx0fHxsLShpKmkrcypzKT4tdCl9LHBvaW50c1NhbWVYOmZ1bmN0aW9uKGUscil7cmV0dXJuIE1hdGguYWJzKGVbMF0tclswXSk8dH0scG9pbnRzU2FtZVk6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gTWF0aC5hYnMoZVsxXS1yWzFdKTx0fSxwb2ludHNTYW1lOmZ1bmN0aW9uKHQscil7cmV0dXJuIGUucG9pbnRzU2FtZVgodCxyKSYmZS5wb2ludHNTYW1lWSh0LHIpfSxwb2ludHNDb21wYXJlOmZ1bmN0aW9uKHQscil7cmV0dXJuIGUucG9pbnRzU2FtZVgodCxyKT9lLnBvaW50c1NhbWVZKHQscik/MDp0WzFdPHJbMV0/LTE6MTp0WzBdPHJbMF0/LTE6MX0scG9pbnRzQ29sbGluZWFyOmZ1bmN0aW9uKGUscixuKXt2YXIgYT1lWzBdLXJbMF0saT1lWzFdLXJbMV0sbz1yWzBdLW5bMF0scz1yWzFdLW5bMV07cmV0dXJuIE1hdGguYWJzKGEqcy1vKmkpPHR9LGxpbmVzSW50ZXJzZWN0OmZ1bmN0aW9uKGUscixuLGEpe3ZhciBpPXJbMF0tZVswXSxvPXJbMV0tZVsxXSxzPWFbMF0tblswXSxsPWFbMV0tblsxXSxjPWkqbC1vKnM7aWYoTWF0aC5hYnMoYyk8dClyZXR1cm4hMTt2YXIgdT1lWzBdLW5bMF0saD1lWzFdLW5bMV0sZj0ocypoLWwqdSkvYyxwPShpKmgtbyp1KS9jLGQ9e2Fsb25nQTowLGFsb25nQjowLHB0OltlWzBdK2YqaSxlWzFdK2Yqb119O3JldHVybiBkLmFsb25nQT1mPD0tdD8tMjpmPHQ/LTE6Zi0xPD0tdD8wOmYtMTx0PzE6MixkLmFsb25nQj1wPD0tdD8tMjpwPHQ/LTE6cC0xPD0tdD8wOnAtMTx0PzE6MixkfSxwb2ludEluc2lkZVJlZ2lvbjpmdW5jdGlvbihlLHIpe2Zvcih2YXIgbj1lWzBdLGE9ZVsxXSxpPXJbci5sZW5ndGgtMV1bMF0sbz1yW3IubGVuZ3RoLTFdWzFdLHM9ITEsbD0wO2w8ci5sZW5ndGg7bCsrKXt2YXIgYz1yW2xdWzBdLHU9cltsXVsxXTt1LWE+dCE9by1hPnQmJihpLWMpKihhLXUpLyhvLXUpK2Mtbj50JiYocz0hcyksaT1jLG89dX1yZXR1cm4gc319O3JldHVybiBlfX0se31dLDQ3ODpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXt0b1BvbHlnb246ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKGUpe2lmKGUubGVuZ3RoPD0wKXJldHVybiB0LnNlZ21lbnRzKHtpbnZlcnRlZDohMSxyZWdpb25zOltdfSk7ZnVuY3Rpb24gcihlKXt2YXIgcj1lLnNsaWNlKDAsZS5sZW5ndGgtMSk7cmV0dXJuIHQuc2VnbWVudHMoe2ludmVydGVkOiExLHJlZ2lvbnM6W3JdfSl9Zm9yKHZhciBuPXIoZVswXSksYT0xO2E8ZS5sZW5ndGg7YSsrKW49dC5zZWxlY3REaWZmZXJlbmNlKHQuY29tYmluZShuLHIoZVthXSkpKTtyZXR1cm4gbn1pZigiUG9seWdvbiI9PT1lLnR5cGUpcmV0dXJuIHQucG9seWdvbihyKGUuY29vcmRpbmF0ZXMpKTtpZigiTXVsdGlQb2x5Z29uIj09PWUudHlwZSl7Zm9yKHZhciBuPXQuc2VnbWVudHMoe2ludmVydGVkOiExLHJlZ2lvbnM6W119KSxhPTA7YTxlLmNvb3JkaW5hdGVzLmxlbmd0aDthKyspbj10LnNlbGVjdFVuaW9uKHQuY29tYmluZShuLHIoZS5jb29yZGluYXRlc1thXSkpKTtyZXR1cm4gdC5wb2x5Z29uKG4pfXRocm93IG5ldyBFcnJvcigiUG9seUJvb2w6IENhbm5vdCBjb252ZXJ0IEdlb0pTT04gb2JqZWN0IHRvIFBvbHlCb29sIHBvbHlnb24iKX0sZnJvbVBvbHlnb246ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxyKXtyZXR1cm4gZS5wb2ludEluc2lkZVJlZ2lvbihbLjUqKHRbMF1bMF0rdFsxXVswXSksLjUqKHRbMF1bMV0rdFsxXVsxXSldLHIpfWZ1bmN0aW9uIGEodCl7cmV0dXJue3JlZ2lvbjp0LGNoaWxkcmVuOltdfX1yPXQucG9seWdvbih0LnNlZ21lbnRzKHIpKTt2YXIgaT1hKG51bGwpO2Z1bmN0aW9uIG8odCxlKXtmb3IodmFyIHI9MDtyPHQuY2hpbGRyZW4ubGVuZ3RoO3IrKyl7aWYobihlLChzPXQuY2hpbGRyZW5bcl0pLnJlZ2lvbikpcmV0dXJuIHZvaWQgbyhzLGUpfXZhciBpPWEoZSk7Zm9yKHI9MDtyPHQuY2hpbGRyZW4ubGVuZ3RoO3IrKyl7dmFyIHM7bigocz10LmNoaWxkcmVuW3JdKS5yZWdpb24sZSkmJihpLmNoaWxkcmVuLnB1c2gocyksdC5jaGlsZHJlbi5zcGxpY2UociwxKSxyLS0pfXQuY2hpbGRyZW4ucHVzaChpKX1mb3IodmFyIHM9MDtzPHIucmVnaW9ucy5sZW5ndGg7cysrKXt2YXIgbD1yLnJlZ2lvbnNbc107bC5sZW5ndGg8M3x8byhpLGwpfWZ1bmN0aW9uIGModCxlKXtmb3IodmFyIHI9MCxuPXRbdC5sZW5ndGgtMV1bMF0sYT10W3QubGVuZ3RoLTFdWzFdLGk9W10sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz10W29dWzBdLGw9dFtvXVsxXTtpLnB1c2goW3MsbF0pLHIrPWwqbi1zKmEsbj1zLGE9bH1yZXR1cm4gcjwwIT09ZSYmaS5yZXZlcnNlKCksaS5wdXNoKFtpWzBdWzBdLGlbMF1bMV1dKSxpfXZhciB1PVtdO2Z1bmN0aW9uIGgodCl7dmFyIGU9W2ModC5yZWdpb24sITEpXTt1LnB1c2goZSk7Zm9yKHZhciByPTA7cjx0LmNoaWxkcmVuLmxlbmd0aDtyKyspZS5wdXNoKGYodC5jaGlsZHJlbltyXSkpfWZ1bmN0aW9uIGYodCl7Zm9yKHZhciBlPTA7ZTx0LmNoaWxkcmVuLmxlbmd0aDtlKyspaCh0LmNoaWxkcmVuW2VdKTtyZXR1cm4gYyh0LnJlZ2lvbiwhMCl9Zm9yKHM9MDtzPGkuY2hpbGRyZW4ubGVuZ3RoO3MrKyloKGkuY2hpbGRyZW5bc10pO3JldHVybiB1Lmxlbmd0aDw9MD97dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W119OjE9PXUubGVuZ3RoP3t0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczp1WzBdfTp7dHlwZToiTXVsdGlQb2x5Z29uIixjb29yZGluYXRlczp1fX19O2UuZXhwb3J0cz1ufSx7fV0sNDc5OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9saW5rZWQtbGlzdCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJue2lkOnI/ci5zZWdtZW50SWQoKTotMSxzdGFydDp0LGVuZDplLG15RmlsbDp7YWJvdmU6bi5teUZpbGwuYWJvdmUsYmVsb3c6bi5teUZpbGwuYmVsb3d9LG90aGVyRmlsbDpudWxsfX12YXIgaT1uLmNyZWF0ZSgpO2Z1bmN0aW9uIG8odCxyKXtpLmluc2VydEJlZm9yZSh0LGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0LHIsbixhLGksbyl7dmFyIHM9ZS5wb2ludHNDb21wYXJlKHIsaSk7cmV0dXJuIDAhPT1zP3M6ZS5wb2ludHNTYW1lKG4sbyk/MDp0IT09YT90PzE6LTE6ZS5wb2ludEFib3ZlT3JPbkxpbmUobixhP2k6byxhP286aSk/MTotMX0odC5pc1N0YXJ0LHQucHQscixuLmlzU3RhcnQsbi5wdCxuLm90aGVyLnB0KTwwfSl9ZnVuY3Rpb24gcyh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5ub2RlKHtpc1N0YXJ0OiEwLHB0OnQuc3RhcnQsc2VnOnQscHJpbWFyeTplLG90aGVyOm51bGwsc3RhdHVzOm51bGx9KTtyZXR1cm4gbyhyLHQuZW5kKSxyfSh0LGUpO3JldHVybiBmdW5jdGlvbih0LGUscil7dmFyIGE9bi5ub2RlKHtpc1N0YXJ0OiExLHB0OmUuZW5kLHNlZzplLHByaW1hcnk6cixvdGhlcjp0LHN0YXR1czpudWxsfSk7dC5vdGhlcj1hLG8oYSx0LnB0KX0ocix0LGUpLHJ9ZnVuY3Rpb24gbCh0LGUpe3ZhciBuPWEoZSx0LnNlZy5lbmQsdC5zZWcpO3JldHVybiBmdW5jdGlvbih0LGUpe3ImJnIuc2VnbWVudENob3AodC5zZWcsZSksdC5vdGhlci5yZW1vdmUoKSx0LnNlZy5lbmQ9ZSx0Lm90aGVyLnB0PWUsbyh0Lm90aGVyLHQucHQpfSh0LGUpLHMobix0LnByaW1hcnkpfWZ1bmN0aW9uIGMoYSxvKXt2YXIgcz1uLmNyZWF0ZSgpO2Z1bmN0aW9uIGModCl7cmV0dXJuIHMuZmluZFRyYW5zaXRpb24oZnVuY3Rpb24ocil7dmFyIG4sYSxpLG8scyxsO3JldHVybiBuPXQsYT1yLmV2LGk9bi5zZWcuc3RhcnQsbz1uLnNlZy5lbmQscz1hLnNlZy5zdGFydCxsPWEuc2VnLmVuZCwoZS5wb2ludHNDb2xsaW5lYXIoaSxzLGwpP2UucG9pbnRzQ29sbGluZWFyKG8scyxsKT8xOmUucG9pbnRBYm92ZU9yT25MaW5lKG8scyxsKT8xOi0xOmUucG9pbnRBYm92ZU9yT25MaW5lKGkscyxsKT8xOi0xKT4wfSl9ZnVuY3Rpb24gdSh0LG4pe3ZhciBhPXQuc2VnLGk9bi5zZWcsbz1hLnN0YXJ0LHM9YS5lbmQsYz1pLnN0YXJ0LHU9aS5lbmQ7ciYmci5jaGVja0ludGVyc2VjdGlvbihhLGkpO3ZhciBoPWUubGluZXNJbnRlcnNlY3QobyxzLGMsdSk7aWYoITE9PT1oKXtpZighZS5wb2ludHNDb2xsaW5lYXIobyxzLGMpKXJldHVybiExO2lmKGUucG9pbnRzU2FtZShvLHUpfHxlLnBvaW50c1NhbWUocyxjKSlyZXR1cm4hMTt2YXIgZj1lLnBvaW50c1NhbWUobyxjKSxwPWUucG9pbnRzU2FtZShzLHUpO2lmKGYmJnApcmV0dXJuIG47dmFyIGQ9IWYmJmUucG9pbnRCZXR3ZWVuKG8sYyx1KSxnPSFwJiZlLnBvaW50QmV0d2VlbihzLGMsdSk7aWYoZilyZXR1cm4gZz9sKG4scyk6bCh0LHUpLG47ZCYmKHB8fChnP2wobixzKTpsKHQsdSkpLGwobixvKSl9ZWxzZSAwPT09aC5hbG9uZ0EmJigtMT09PWguYWxvbmdCP2wodCxjKTowPT09aC5hbG9uZ0I/bCh0LGgucHQpOjE9PT1oLmFsb25nQiYmbCh0LHUpKSwwPT09aC5hbG9uZ0ImJigtMT09PWguYWxvbmdBP2wobixvKTowPT09aC5hbG9uZ0E/bChuLGgucHQpOjE9PT1oLmFsb25nQSYmbChuLHMpKTtyZXR1cm4hMX1mb3IodmFyIGg9W107IWkuaXNFbXB0eSgpOyl7dmFyIGY9aS5nZXRIZWFkKCk7aWYociYmci52ZXJ0KGYucHRbMF0pLGYuaXNTdGFydCl7ciYmci5zZWdtZW50TmV3KGYuc2VnLGYucHJpbWFyeSk7dmFyIHA9YyhmKSxkPXAuYmVmb3JlP3AuYmVmb3JlLmV2Om51bGwsZz1wLmFmdGVyP3AuYWZ0ZXIuZXY6bnVsbDtmdW5jdGlvbiB2KCl7aWYoZCl7dmFyIHQ9dShmLGQpO2lmKHQpcmV0dXJuIHR9cmV0dXJuISFnJiZ1KGYsZyl9ciYmci50ZW1wU3RhdHVzKGYuc2VnLCEhZCYmZC5zZWcsISFnJiZnLnNlZyk7dmFyIG0seSx4PXYoKTtpZih4KXQ/KHk9bnVsbD09PWYuc2VnLm15RmlsbC5iZWxvd3x8Zi5zZWcubXlGaWxsLmFib3ZlIT09Zi5zZWcubXlGaWxsLmJlbG93KSYmKHguc2VnLm15RmlsbC5hYm92ZT0heC5zZWcubXlGaWxsLmFib3ZlKTp4LnNlZy5vdGhlckZpbGw9Zi5zZWcubXlGaWxsLHImJnIuc2VnbWVudFVwZGF0ZSh4LnNlZyksZi5vdGhlci5yZW1vdmUoKSxmLnJlbW92ZSgpO2lmKGkuZ2V0SGVhZCgpIT09Zil7ciYmci5yZXdpbmQoZi5zZWcpO2NvbnRpbnVlfXQ/KHk9bnVsbD09PWYuc2VnLm15RmlsbC5iZWxvd3x8Zi5zZWcubXlGaWxsLmFib3ZlIT09Zi5zZWcubXlGaWxsLmJlbG93LGYuc2VnLm15RmlsbC5iZWxvdz1nP2cuc2VnLm15RmlsbC5hYm92ZTphLGYuc2VnLm15RmlsbC5hYm92ZT15PyFmLnNlZy5teUZpbGwuYmVsb3c6Zi5zZWcubXlGaWxsLmJlbG93KTpudWxsPT09Zi5zZWcub3RoZXJGaWxsJiYobT1nP2YucHJpbWFyeT09PWcucHJpbWFyeT9nLnNlZy5vdGhlckZpbGwuYWJvdmU6Zy5zZWcubXlGaWxsLmFib3ZlOmYucHJpbWFyeT9vOmEsZi5zZWcub3RoZXJGaWxsPXthYm92ZTptLGJlbG93Om19KSxyJiZyLnN0YXR1cyhmLnNlZywhIWQmJmQuc2VnLCEhZyYmZy5zZWcpLGYub3RoZXIuc3RhdHVzPXAuaW5zZXJ0KG4ubm9kZSh7ZXY6Zn0pKX1lbHNle3ZhciBiPWYuc3RhdHVzO2lmKG51bGw9PT1iKXRocm93IG5ldyBFcnJvcigiUG9seUJvb2w6IFplcm8tbGVuZ3RoIHNlZ21lbnQgZGV0ZWN0ZWQ7IHlvdXIgZXBzaWxvbiBpcyBwcm9iYWJseSB0b28gc21hbGwgb3IgdG9vIGxhcmdlIik7aWYocy5leGlzdHMoYi5wcmV2KSYmcy5leGlzdHMoYi5uZXh0KSYmdShiLnByZXYuZXYsYi5uZXh0LmV2KSxyJiZyLnN0YXR1c1JlbW92ZShiLmV2LnNlZyksYi5yZW1vdmUoKSwhZi5wcmltYXJ5KXt2YXIgXz1mLnNlZy5teUZpbGw7Zi5zZWcubXlGaWxsPWYuc2VnLm90aGVyRmlsbCxmLnNlZy5vdGhlckZpbGw9X31oLnB1c2goZi5zZWcpfWkuZ2V0SGVhZCgpLnJlbW92ZSgpfXJldHVybiByJiZyLmRvbmUoKSxofXJldHVybiB0P3thZGRSZWdpb246ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGEsaSxvPXRbdC5sZW5ndGgtMV0sbD0wO2w8dC5sZW5ndGg7bCsrKXtuPW8sbz10W2xdO3ZhciBjPWUucG9pbnRzQ29tcGFyZShuLG8pOzAhPT1jJiZzKChhPWM8MD9uOm8saT1jPDA/bzpuLHtpZDpyP3Iuc2VnbWVudElkKCk6LTEsc3RhcnQ6YSxlbmQ6aSxteUZpbGw6e2Fib3ZlOm51bGwsYmVsb3c6bnVsbH0sb3RoZXJGaWxsOm51bGx9KSwhMCl9fSxjYWxjdWxhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwhMSl9fTp7Y2FsY3VsYXRlOmZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7cyhhKHQuc3RhcnQsdC5lbmQsdCksITApfSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3MoYSh0LnN0YXJ0LHQuZW5kLHQpLCExKX0pLGMoZSxuKX19fX0seyIuL2xpbmtlZC1saXN0Ijo0ODB9XSw0ODA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9e2NyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXtyb290Ontyb290OiEwLG5leHQ6bnVsbH0sZXhpc3RzOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmZSE9PXQucm9vdH0saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiBudWxsPT09dC5yb290Lm5leHR9LGdldEhlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5yb290Lm5leHR9LGluc2VydEJlZm9yZTpmdW5jdGlvbihlLHIpe2Zvcih2YXIgbj10LnJvb3QsYT10LnJvb3QubmV4dDtudWxsIT09YTspe2lmKHIoYSkpcmV0dXJuIGUucHJldj1hLnByZXYsZS5uZXh0PWEsYS5wcmV2Lm5leHQ9ZSx2b2lkKGEucHJldj1lKTtuPWEsYT1hLm5leHR9bi5uZXh0PWUsZS5wcmV2PW4sZS5uZXh0PW51bGx9LGZpbmRUcmFuc2l0aW9uOmZ1bmN0aW9uKGUpe2Zvcih2YXIgcj10LnJvb3Qsbj10LnJvb3QubmV4dDtudWxsIT09biYmIWUobik7KXI9bixuPW4ubmV4dDtyZXR1cm57YmVmb3JlOnI9PT10LnJvb3Q/bnVsbDpyLGFmdGVyOm4saW5zZXJ0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXY9cix0Lm5leHQ9bixyLm5leHQ9dCxudWxsIT09biYmKG4ucHJldj10KSx0fX19fTtyZXR1cm4gdH0sbm9kZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2PW51bGwsdC5uZXh0PW51bGwsdC5yZW1vdmU9ZnVuY3Rpb24oKXt0LnByZXYubmV4dD10Lm5leHQsdC5uZXh0JiYodC5uZXh0LnByZXY9dC5wcmV2KSx0LnByZXY9bnVsbCx0Lm5leHQ9bnVsbH0sdH19fSx7fV0sNDgxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bXSxhPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dC5zdGFydCxvPXQuZW5kO2lmKGUucG9pbnRzU2FtZShpLG8pKWNvbnNvbGUud2FybigiUG9seUJvb2w6IFdhcm5pbmc6IFplcm8tbGVuZ3RoIHNlZ21lbnQgZGV0ZWN0ZWQ7IHlvdXIgZXBzaWxvbiBpcyBwcm9iYWJseSB0b28gc21hbGwgb3IgdG9vIGxhcmdlIik7ZWxzZXtyJiZyLmNoYWluU3RhcnQodCk7Zm9yKHZhciBzPXtpbmRleDowLG1hdGNoZXNfaGVhZDohMSxtYXRjaGVzX3B0MTohMX0sbD17aW5kZXg6MCxtYXRjaGVzX2hlYWQ6ITEsbWF0Y2hlc19wdDE6ITF9LGM9cyx1PTA7dTxuLmxlbmd0aDt1Kyspe3ZhciBoPSh2PW5bdV0pWzBdLGY9KHZbMV0sdlt2Lmxlbmd0aC0xXSk7aWYodlt2Lmxlbmd0aC0yXSxlLnBvaW50c1NhbWUoaCxpKSl7aWYoVCh1LCEwLCEwKSlicmVha31lbHNlIGlmKGUucG9pbnRzU2FtZShoLG8pKXtpZihUKHUsITAsITEpKWJyZWFrfWVsc2UgaWYoZS5wb2ludHNTYW1lKGYsaSkpe2lmKFQodSwhMSwhMCkpYnJlYWt9ZWxzZSBpZihlLnBvaW50c1NhbWUoZixvKSYmVCh1LCExLCExKSlicmVha31pZihjPT09cylyZXR1cm4gbi5wdXNoKFtpLG9dKSx2b2lkKHImJnIuY2hhaW5OZXcoaSxvKSk7aWYoYz09PWwpe3ImJnIuY2hhaW5NYXRjaChzLmluZGV4KTt2YXIgcD1zLmluZGV4LGQ9cy5tYXRjaGVzX3B0MT9vOmksZz1zLm1hdGNoZXNfaGVhZCx2PW5bcF0sbT1nP3ZbMF06dlt2Lmxlbmd0aC0xXSx5PWc/dlsxXTp2W3YubGVuZ3RoLTJdLHg9Zz92W3YubGVuZ3RoLTFdOnZbMF0sYj1nP3Zbdi5sZW5ndGgtMl06dlsxXTtyZXR1cm4gZS5wb2ludHNDb2xsaW5lYXIoeSxtLGQpJiYoZz8ociYmci5jaGFpblJlbW92ZUhlYWQocy5pbmRleCxkKSx2LnNoaWZ0KCkpOihyJiZyLmNoYWluUmVtb3ZlVGFpbChzLmluZGV4LGQpLHYucG9wKCkpLG09eSksZS5wb2ludHNTYW1lKHgsZCk/KG4uc3BsaWNlKHAsMSksZS5wb2ludHNDb2xsaW5lYXIoYix4LG0pJiYoZz8ociYmci5jaGFpblJlbW92ZVRhaWwocy5pbmRleCxtKSx2LnBvcCgpKToociYmci5jaGFpblJlbW92ZUhlYWQocy5pbmRleCxtKSx2LnNoaWZ0KCkpKSxyJiZyLmNoYWluQ2xvc2Uocy5pbmRleCksdm9pZCBhLnB1c2godikpOnZvaWQoZz8ociYmci5jaGFpbkFkZEhlYWQocy5pbmRleCxkKSx2LnVuc2hpZnQoZCkpOihyJiZyLmNoYWluQWRkVGFpbChzLmluZGV4LGQpLHYucHVzaChkKSkpfXZhciBfPXMuaW5kZXgsdz1sLmluZGV4O3ImJnIuY2hhaW5Db25uZWN0KF8sdyk7dmFyIGs9bltfXS5sZW5ndGg8blt3XS5sZW5ndGg7cy5tYXRjaGVzX2hlYWQ/bC5tYXRjaGVzX2hlYWQ/az8oTShfKSxBKF8sdykpOihNKHcpLEEodyxfKSk6QSh3LF8pOmwubWF0Y2hlc19oZWFkP0EoXyx3KTprPyhNKF8pLEEodyxfKSk6KE0odyksQShfLHcpKX1mdW5jdGlvbiBUKHQsZSxyKXtyZXR1cm4gYy5pbmRleD10LGMubWF0Y2hlc19oZWFkPWUsYy5tYXRjaGVzX3B0MT1yLGM9PT1zPyhjPWwsITEpOihjPW51bGwsITApfWZ1bmN0aW9uIE0odCl7ciYmci5jaGFpblJldmVyc2UodCksblt0XS5yZXZlcnNlKCl9ZnVuY3Rpb24gQSh0LGEpe3ZhciBpPW5bdF0sbz1uW2FdLHM9aVtpLmxlbmd0aC0xXSxsPWlbaS5sZW5ndGgtMl0sYz1vWzBdLHU9b1sxXTtlLnBvaW50c0NvbGxpbmVhcihsLHMsYykmJihyJiZyLmNoYWluUmVtb3ZlVGFpbCh0LHMpLGkucG9wKCkscz1sKSxlLnBvaW50c0NvbGxpbmVhcihzLGMsdSkmJihyJiZyLmNoYWluUmVtb3ZlSGVhZChhLGMpLG8uc2hpZnQoKSksciYmci5jaGFpbkpvaW4odCxhKSxuW3RdPWkuY29uY2F0KG8pLG4uc3BsaWNlKGEsMSl9fSksYX19LHt9XSw0ODI6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXt2YXIgbj1bXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBhPSh0Lm15RmlsbC5hYm92ZT84OjApKyh0Lm15RmlsbC5iZWxvdz80OjApKyh0Lm90aGVyRmlsbCYmdC5vdGhlckZpbGwuYWJvdmU/MjowKSsodC5vdGhlckZpbGwmJnQub3RoZXJGaWxsLmJlbG93PzE6MCk7MCE9PWVbYV0mJm4ucHVzaCh7aWQ6cj9yLnNlZ21lbnRJZCgpOi0xLHN0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kLG15RmlsbDp7YWJvdmU6MT09PWVbYV0sYmVsb3c6Mj09PWVbYV19LG90aGVyRmlsbDpudWxsfSl9KSxyJiZyLnNlbGVjdGVkKG4pLG59dmFyIGE9e3VuaW9uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxbMCwyLDEsMCwyLDIsMCwwLDEsMCwxLDAsMCwwLDAsMF0sZSl9LGludGVyc2VjdDpmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsWzAsMCwwLDAsMCwyLDAsMiwwLDAsMSwxLDAsMiwxLDBdLGUpfSxkaWZmZXJlbmNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxbMCwwLDAsMCwyLDAsMiwwLDEsMSwwLDAsMCwxLDIsMF0sZSl9LGRpZmZlcmVuY2VSZXY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LFswLDIsMSwwLDAsMCwxLDEsMCwyLDAsMiwwLDAsMCwwXSxlKX0seG9yOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxbMCwyLDEsMCwyLDAsMCwxLDEsMCwwLDIsMCwxLDIsMF0sZSl9fTtlLmV4cG9ydHM9YX0se31dLDQ4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1uZXcgRmxvYXQ2NEFycmF5KDQpLGE9bmV3IEZsb2F0NjRBcnJheSg0KSxpPW5ldyBGbG9hdDY0QXJyYXkoNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8scyl7bi5sZW5ndGg8by5sZW5ndGgmJihuPW5ldyBGbG9hdDY0QXJyYXkoby5sZW5ndGgpLGE9bmV3IEZsb2F0NjRBcnJheShvLmxlbmd0aCksaT1uZXcgRmxvYXQ2NEFycmF5KG8ubGVuZ3RoKSk7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDsrK2wpbltsXT10W2xdLW9bbF0sYVtsXT1lW2xdLXRbbF0saVtsXT1yW2xdLXRbbF07dmFyIGM9MCx1PTAsaD0wLGY9MCxwPTAsZD0wO2ZvcihsPTA7bDxvLmxlbmd0aDsrK2wpe3ZhciBnPWFbbF0sdj1pW2xdLG09bltsXTtjKz1nKmcsdSs9Zyp2LGgrPXYqdixmKz1tKmcscCs9bSp2LGQrPW0qbX12YXIgeSx4LGIsXyx3LGs9TWF0aC5hYnMoYypoLXUqdSksVD11KnAtaCpmLE09dSpmLWMqcDtpZihUK008PWspaWYoVDwwKU08MCYmZjwwPyhNPTAsLWY+PWM/KFQ9MSx5PWMrMipmK2QpOnk9ZiooVD0tZi9jKStkKTooVD0wLHA+PTA/KE09MCx5PWQpOi1wPj1oPyhNPTEseT1oKzIqcCtkKTp5PXAqKE09LXAvaCkrZCk7ZWxzZSBpZihNPDApTT0wLGY+PTA/KFQ9MCx5PWQpOi1mPj1jPyhUPTEseT1jKzIqZitkKTp5PWYqKFQ9LWYvYykrZDtlbHNle3ZhciBBPTEvazt5PShUKj1BKSooYypUK3UqKE0qPUEpKzIqZikrTSoodSpUK2gqTSsyKnApK2R9ZWxzZSBUPDA/KGI9aCtwKT4oeD11K2YpPyhfPWIteCk+PSh3PWMtMip1K2gpPyhUPTEsTT0wLHk9YysyKmYrZCk6eT0oVD1fL3cpKihjKlQrdSooTT0xLVQpKzIqZikrTSoodSpUK2gqTSsyKnApK2Q6KFQ9MCxiPD0wPyhNPTEseT1oKzIqcCtkKTpwPj0wPyhNPTAseT1kKTp5PXAqKE09LXAvaCkrZCk6TTwwPyhiPWMrZik+KHg9dStwKT8oXz1iLXgpPj0odz1jLTIqdStoKT8oTT0xLFQ9MCx5PWgrMipwK2QpOnk9KFQ9MS0oTT1fL3cpKSooYypUK3UqTSsyKmYpK00qKHUqVCtoKk0rMipwKStkOihNPTAsYjw9MD8oVD0xLHk9YysyKmYrZCk6Zj49MD8oVD0wLHk9ZCk6eT1mKihUPS1mL2MpK2QpOihfPWgrcC11LWYpPD0wPyhUPTAsTT0xLHk9aCsyKnArZCk6Xz49KHc9Yy0yKnUraCk/KFQ9MSxNPTAseT1jKzIqZitkKTp5PShUPV8vdykqKGMqVCt1KihNPTEtVCkrMipmKStNKih1KlQraCpNKzIqcCkrZDt2YXIgUz0xLVQtTTtmb3IobD0wO2w8by5sZW5ndGg7KytsKXNbbF09Uyp0W2xdK1QqZVtsXStNKnJbbF07cmV0dXJuIHk8MD8wOnl9fSx7fV0sNDg0OltmdW5jdGlvbih0LGUscil7dmFyIG4sYSxpPWUuZXhwb3J0cz17fTtmdW5jdGlvbiBvKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gcygpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gbCh0KXtpZihuPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dCh0LDApO2lmKChuPT09b3x8IW4pJiZzZXRUaW1lb3V0KXJldHVybiBuPXNldFRpbWVvdXQsc2V0VGltZW91dCh0LDApO3RyeXtyZXR1cm4gbih0LDApfWNhdGNoKGUpe3RyeXtyZXR1cm4gbi5jYWxsKG51bGwsdCwwKX1jYXRjaChlKXtyZXR1cm4gbi5jYWxsKHRoaXMsdCwwKX19fSFmdW5jdGlvbigpe3RyeXtuPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6b31jYXRjaCh0KXtuPW99dHJ5e2E9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6c31jYXRjaCh0KXthPXN9fSgpO3ZhciBjLHU9W10saD0hMSxmPS0xO2Z1bmN0aW9uIHAoKXtoJiZjJiYoaD0hMSxjLmxlbmd0aD91PWMuY29uY2F0KHUpOmY9LTEsdS5sZW5ndGgmJmQoKSl9ZnVuY3Rpb24gZCgpe2lmKCFoKXt2YXIgdD1sKHApO2g9ITA7Zm9yKHZhciBlPXUubGVuZ3RoO2U7KXtmb3IoYz11LHU9W107KytmPGU7KWMmJmNbZl0ucnVuKCk7Zj0tMSxlPXUubGVuZ3RofWM9bnVsbCxoPSExLGZ1bmN0aW9uKHQpe2lmKGE9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigoYT09PXN8fCFhKSYmY2xlYXJUaW1lb3V0KXJldHVybiBhPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e2EodCl9Y2F0Y2goZSl7dHJ5e3JldHVybiBhLmNhbGwobnVsbCx0KX1jYXRjaChlKXtyZXR1cm4gYS5jYWxsKHRoaXMsdCl9fX0odCl9fWZ1bmN0aW9uIGcodCxlKXt0aGlzLmZ1bj10LHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiB2KCl7fWkubmV4dFRpY2s9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZVtyLTFdPWFyZ3VtZW50c1tyXTt1LnB1c2gobmV3IGcodCxlKSksMSE9PXUubGVuZ3RofHxofHxsKGQpfSxnLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxpLnRpdGxlPSJicm93c2VyIixpLmJyb3dzZXI9ITAsaS5lbnY9e30saS5hcmd2PVtdLGkudmVyc2lvbj0iIixpLnZlcnNpb25zPXt9LGkub249dixpLmFkZExpc3RlbmVyPXYsaS5vbmNlPXYsaS5vZmY9dixpLnJlbW92ZUxpc3RlbmVyPXYsaS5yZW1vdmVBbGxMaXN0ZW5lcnM9dixpLmVtaXQ9dixpLnByZXBlbmRMaXN0ZW5lcj12LGkucHJlcGVuZE9uY2VMaXN0ZW5lcj12LGkubGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybltdfSxpLmJpbmRpbmc9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxpLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0saS5jaGRpcj1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxpLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV0sNDg1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoImdsLXF1YXQvc2xlcnAiKX0seyJnbC1xdWF0L3NsZXJwIjoyOTZ9XSw0ODY6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24ocil7Zm9yKHZhciBuPXQoInBlcmZvcm1hbmNlLW5vdyIpLGE9InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3c/cjp3aW5kb3csaT1bIm1veiIsIndlYmtpdCJdLG89IkFuaW1hdGlvbkZyYW1lIixzPWFbInJlcXVlc3QiK29dLGw9YVsiY2FuY2VsIitvXXx8YVsiY2FuY2VsUmVxdWVzdCIrb10sYz0wOyFzJiZjPGkubGVuZ3RoO2MrKylzPWFbaVtjXSsiUmVxdWVzdCIrb10sbD1hW2lbY10rIkNhbmNlbCIrb118fGFbaVtjXSsiQ2FuY2VsUmVxdWVzdCIrb107aWYoIXN8fCFsKXt2YXIgdT0wLGg9MCxmPVtdO3M9ZnVuY3Rpb24odCl7aWYoMD09PWYubGVuZ3RoKXt2YXIgZT1uKCkscj1NYXRoLm1heCgwLDFlMy82MC0oZS11KSk7dT1yK2Usc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0PWYuc2xpY2UoMCk7Zi5sZW5ndGg9MDtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZighdFtlXS5jYW5jZWxsZWQpdHJ5e3RbZV0uY2FsbGJhY2sodSl9Y2F0Y2godCl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IHR9LDApfX0sTWF0aC5yb3VuZChyKSl9cmV0dXJuIGYucHVzaCh7aGFuZGxlOisraCxjYWxsYmFjazp0LGNhbmNlbGxlZDohMX0pLGh9LGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxmLmxlbmd0aDtlKyspZltlXS5oYW5kbGU9PT10JiYoZltlXS5jYW5jZWxsZWQ9ITApfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHMuY2FsbChhLHQpfSxlLmV4cG9ydHMuY2FuY2VsPWZ1bmN0aW9uKCl7bC5hcHBseShhLGFyZ3VtZW50cyl9LGUuZXhwb3J0cy5wb2x5ZmlsbD1mdW5jdGlvbih0KXt0fHwodD1hKSx0LnJlcXVlc3RBbmltYXRpb25GcmFtZT1zLHQuY2FuY2VsQW5pbWF0aW9uRnJhbWU9bH19KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsicGVyZm9ybWFuY2Utbm93Ijo0NjR9XSw0ODc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYmlnLXJhdC9hZGQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsYT1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpYVtpXT1uKHRbaV0sZVtpXSk7cmV0dXJuIGF9fSx7ImJpZy1yYXQvYWRkIjo3N31dLDQ4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7KytyKWVbcl09bih0W3JdKTtyZXR1cm4gZX07dmFyIG49dCgiYmlnLXJhdCIpfSx7ImJpZy1yYXQiOjgwfV0sNDg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpZy1yYXQiKSxhPXQoImJpZy1yYXQvbXVsIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW4oZSksaT10Lmxlbmd0aCxvPW5ldyBBcnJheShpKSxzPTA7czxpOysrcylvW3NdPWEodFtzXSxyKTtyZXR1cm4gb319LHsiYmlnLXJhdCI6ODAsImJpZy1yYXQvbXVsIjo4OX1dLDQ5MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaWctcmF0L3N1YiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxhPW5ldyBBcnJheShyKSxpPTA7aTxyOysraSlhW2ldPW4odFtpXSxlW2ldKTtyZXR1cm4gYX19LHsiYmlnLXJhdC9zdWIiOjkxfV0sNDkxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNvbXBhcmUtY2VsbCIpLGE9dCgiY29tcGFyZS1vcmllbnRlZC1jZWxsIiksaT10KCJjZWxsLW9yaWVudGF0aW9uIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3Quc29ydChhKTtmb3IodmFyIGU9dC5sZW5ndGgscj0wLG89MDtvPGU7KytvKXt2YXIgcz10W29dLGw9aShzKTtpZigwIT09bCl7aWYocj4wKXt2YXIgYz10W3ItMV07aWYoMD09PW4ocyxjKSYmaShjKSE9PWwpe3ItPTE7Y29udGludWV9fXRbcisrXT1zfX1yZXR1cm4gdC5sZW5ndGg9cix0fX0seyJjZWxsLW9yaWVudGF0aW9uIjoxMTQsImNvbXBhcmUtY2VsbCI6MTMwLCJjb21wYXJlLW9yaWVudGVkLWNlbGwiOjEzMX1dLDQ5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJhcnJheS1ib3VuZHMiKSxhPXQoImNvbG9yLW5vcm1hbGl6ZSIpLGk9dCgidXBkYXRlLWRpZmYiKSxvPXQoInBpY2stYnktYWxpYXMiKSxzPXQoIm9iamVjdC1hc3NpZ24iKSxsPXQoImZsYXR0ZW4tdmVydGV4LWRhdGEiKSxjPXQoInRvLWZsb2F0MzIiKSx1PWMuZmxvYXQzMixoPWMuZnJhY3QzMjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXsiZnVuY3Rpb24iPT10eXBlb2YgdD8oZXx8KGU9e30pLGUucmVnbD10KTplPXQ7ZS5sZW5ndGgmJihlLnBvc2l0aW9ucz1lKTtpZighKHQ9ZS5yZWdsKS5oYXNFeHRlbnNpb24oIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSl0aHJvdyBFcnJvcigicmVnbC1lcnJvcjJkOiBgQU5HTEVfaW5zdGFuY2VkX2FycmF5c2AgZXh0ZW5zaW9uIHNob3VsZCBiZSBlbmFibGVkIik7dmFyIHIsYyxwLGQsZyx2LG09dC5fZ2wseT17Y29sb3I6ImJsYWNrIixjYXBTaXplOjUsbGluZVdpZHRoOjEsb3BhY2l0eToxLHZpZXdwb3J0Om51bGwscmFuZ2U6bnVsbCxvZmZzZXQ6MCxjb3VudDowLGJvdW5kczpudWxsLHBvc2l0aW9uczpbXSxlcnJvcnM6W119LHg9W107cmV0dXJuIGQ9dC5idWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBlOiJ1aW50OCIsZGF0YTpuZXcgVWludDhBcnJheSgwKX0pLGM9dC5idWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBlOiJmbG9hdCIsZGF0YTpuZXcgVWludDhBcnJheSgwKX0pLHA9dC5idWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBlOiJmbG9hdCIsZGF0YTpuZXcgVWludDhBcnJheSgwKX0pLGc9dC5idWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBlOiJmbG9hdCIsZGF0YTpuZXcgVWludDhBcnJheSgwKX0pLHY9dC5idWZmZXIoe3VzYWdlOiJzdGF0aWMiLHR5cGU6ImZsb2F0IixkYXRhOmZ9KSxrKGUpLHI9dCh7dmVydDoiXG5cdFx0cHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG5cdFx0YXR0cmlidXRlIHZlYzIgcG9zaXRpb24sIHBvc2l0aW9uRnJhY3Q7XG5cdFx0YXR0cmlidXRlIHZlYzQgZXJyb3I7XG5cdFx0YXR0cmlidXRlIHZlYzQgY29sb3I7XG5cblx0XHRhdHRyaWJ1dGUgdmVjMiBkaXJlY3Rpb24sIGxpbmVPZmZzZXQsIGNhcE9mZnNldDtcblxuXHRcdHVuaWZvcm0gdmVjNCB2aWV3cG9ydDtcblx0XHR1bmlmb3JtIGZsb2F0IGxpbmVXaWR0aCwgY2FwU2l6ZTtcblx0XHR1bmlmb3JtIHZlYzIgc2NhbGUsIHNjYWxlRnJhY3QsIHRyYW5zbGF0ZSwgdHJhbnNsYXRlRnJhY3Q7XG5cblx0XHR2YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG5cdFx0dm9pZCBtYWluKCkge1xuXHRcdFx0ZnJhZ0NvbG9yID0gY29sb3IgLyAyNTUuO1xuXG5cdFx0XHR2ZWMyIHBpeGVsT2Zmc2V0ID0gbGluZVdpZHRoICogbGluZU9mZnNldCArIChjYXBTaXplICsgbGluZVdpZHRoKSAqIGNhcE9mZnNldDtcblxuXHRcdFx0dmVjMiBkeHkgPSAtc3RlcCguNSwgZGlyZWN0aW9uLnh5KSAqIGVycm9yLnh6ICsgc3RlcChkaXJlY3Rpb24ueHksIHZlYzIoLS41KSkgKiBlcnJvci55dztcblxuXHRcdFx0dmVjMiBwb3NpdGlvbiA9IHBvc2l0aW9uICsgZHh5O1xuXG5cdFx0XHR2ZWMyIHBvcyA9IChwb3NpdGlvbiArIHRyYW5zbGF0ZSkgKiBzY2FsZVxuXHRcdFx0XHQrIChwb3NpdGlvbkZyYWN0ICsgdHJhbnNsYXRlRnJhY3QpICogc2NhbGVcblx0XHRcdFx0KyAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVGcmFjdFxuXHRcdFx0XHQrIChwb3NpdGlvbkZyYWN0ICsgdHJhbnNsYXRlRnJhY3QpICogc2NhbGVGcmFjdDtcblxuXHRcdFx0cG9zICs9IHBpeGVsT2Zmc2V0IC8gdmlld3BvcnQuenc7XG5cblx0XHRcdGdsX1Bvc2l0aW9uID0gdmVjNChwb3MgKiAyLiAtIDEuLCAwLCAxKTtcblx0XHR9XG5cdFx0IixmcmFnOiJcblx0XHRwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cblx0XHR2YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG5cdFx0dW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG5cdFx0dm9pZCBtYWluKCkge1xuXHRcdFx0Z2xfRnJhZ0NvbG9yID0gZnJhZ0NvbG9yO1xuXHRcdFx0Z2xfRnJhZ0NvbG9yLmEgKj0gb3BhY2l0eTtcblx0XHR9XG5cdFx0Iix1bmlmb3Jtczp7cmFuZ2U6dC5wcm9wKCJyYW5nZSIpLGxpbmVXaWR0aDp0LnByb3AoImxpbmVXaWR0aCIpLGNhcFNpemU6dC5wcm9wKCJjYXBTaXplIiksb3BhY2l0eTp0LnByb3AoIm9wYWNpdHkiKSxzY2FsZTp0LnByb3AoInNjYWxlIiksdHJhbnNsYXRlOnQucHJvcCgidHJhbnNsYXRlIiksc2NhbGVGcmFjdDp0LnByb3AoInNjYWxlRnJhY3QiKSx0cmFuc2xhdGVGcmFjdDp0LnByb3AoInRyYW5zbGF0ZUZyYWN0Iiksdmlld3BvcnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm5bZS52aWV3cG9ydC54LGUudmlld3BvcnQueSx0LnZpZXdwb3J0V2lkdGgsdC52aWV3cG9ydEhlaWdodF19fSxhdHRyaWJ1dGVzOntjb2xvcjp7YnVmZmVyOmQsb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDQqZS5vZmZzZXR9LGRpdmlzb3I6MX0scG9zaXRpb246e2J1ZmZlcjpjLG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiA4KmUub2Zmc2V0fSxkaXZpc29yOjF9LHBvc2l0aW9uRnJhY3Q6e2J1ZmZlcjpwLG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiA4KmUub2Zmc2V0fSxkaXZpc29yOjF9LGVycm9yOntidWZmZXI6ZyxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMTYqZS5vZmZzZXR9LGRpdmlzb3I6MX0sZGlyZWN0aW9uOntidWZmZXI6dixzdHJpZGU6MjQsb2Zmc2V0OjB9LGxpbmVPZmZzZXQ6e2J1ZmZlcjp2LHN0cmlkZToyNCxvZmZzZXQ6OH0sY2FwT2Zmc2V0OntidWZmZXI6dixzdHJpZGU6MjQsb2Zmc2V0OjE2fX0scHJpbWl0aXZlOiJ0cmlhbmdsZXMiLGJsZW5kOntlbmFibGU6ITAsY29sb3I6WzAsMCwwLDBdLGVxdWF0aW9uOntyZ2I6ImFkZCIsYWxwaGE6ImFkZCJ9LGZ1bmM6e3NyY1JHQjoic3JjIGFscGhhIixkc3RSR0I6Im9uZSBtaW51cyBzcmMgYWxwaGEiLHNyY0FscGhhOiJvbmUgbWludXMgZHN0IGFscGhhIixkc3RBbHBoYToib25lIn19LGRlcHRoOntlbmFibGU6ITF9LHNjaXNzb3I6e2VuYWJsZTohMCxib3g6dC5wcm9wKCJ2aWV3cG9ydCIpfSx2aWV3cG9ydDp0LnByb3AoInZpZXdwb3J0Iiksc3RlbmNpbDohMSxpbnN0YW5jZXM6dC5wcm9wKCJjb3VudCIpLGNvdW50OmYubGVuZ3RofSkscyhiLHt1cGRhdGU6ayxkcmF3Ol8sZGVzdHJveTpULHJlZ2w6dCxnbDptLGNhbnZhczptLmNhbnZhcyxncm91cHM6eH0pLGI7ZnVuY3Rpb24gYih0KXt0P2sodCk6bnVsbD09PXQmJlQoKSxfKCl9ZnVuY3Rpb24gXyhlKXtpZigibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIHcoZSk7ZSYmIUFycmF5LmlzQXJyYXkoZSkmJihlPVtlXSksdC5fcmVmcmVzaCgpLHguZm9yRWFjaChmdW5jdGlvbih0LHIpe3QmJihlJiYoZVtyXT90LmRyYXc9ITA6dC5kcmF3PSExKSx0LmRyYXc/dyhyKTp0LmRyYXc9ITApfSl9ZnVuY3Rpb24gdyh0KXsibnVtYmVyIj09dHlwZW9mIHQmJih0PXhbdF0pLG51bGwhPXQmJnQmJnQuY291bnQmJnQuY29sb3ImJnQub3BhY2l0eSYmdC5wb3NpdGlvbnMmJnQucG9zaXRpb25zLmxlbmd0aD4xJiYodC5zY2FsZVJhdGlvPVt0LnNjYWxlWzBdKnQudmlld3BvcnQud2lkdGgsdC5zY2FsZVsxXSp0LnZpZXdwb3J0LmhlaWdodF0scih0KSx0LmFmdGVyJiZ0LmFmdGVyKHQpKX1mdW5jdGlvbiBrKHQpe2lmKHQpe251bGwhPXQubGVuZ3RoPyJudW1iZXIiPT10eXBlb2YgdFswXSYmKHQ9W3twb3NpdGlvbnM6dH1dKTpBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pO3ZhciBlPTAscj0wO2lmKGIuZ3JvdXBzPXg9dC5tYXAoZnVuY3Rpb24odCxjKXt2YXIgdT14W2NdO3JldHVybiB0PygiZnVuY3Rpb24iPT10eXBlb2YgdD90PXthZnRlcjp0fToibnVtYmVyIj09dHlwZW9mIHRbMF0mJih0PXtwb3NpdGlvbnM6dH0pLHQ9byh0LHtjb2xvcjoiY29sb3IgY29sb3JzIGZpbGwiLGNhcFNpemU6ImNhcFNpemUgY2FwIGNhcHNpemUgY2FwLXNpemUiLGxpbmVXaWR0aDoibGluZVdpZHRoIGxpbmUtd2lkdGggd2lkdGggbGluZSB0aGlja25lc3MiLG9wYWNpdHk6Im9wYWNpdHkgYWxwaGEiLHJhbmdlOiJyYW5nZSBkYXRhQm94Iix2aWV3cG9ydDoidmlld3BvcnQgdmlld0JveCIsZXJyb3JzOiJlcnJvcnMgZXJyb3IiLHBvc2l0aW9uczoicG9zaXRpb25zIHBvc2l0aW9uIGRhdGEgcG9pbnRzIn0pLHV8fCh4W2NdPXU9e2lkOmMsc2NhbGU6bnVsbCx0cmFuc2xhdGU6bnVsbCxzY2FsZUZyYWN0Om51bGwsdHJhbnNsYXRlRnJhY3Q6bnVsbCxkcmF3OiEwfSx0PXMoe30seSx0KSksaSh1LHQsW3tsaW5lV2lkdGg6ZnVuY3Rpb24odCl7cmV0dXJuLjUqK3R9LGNhcFNpemU6ZnVuY3Rpb24odCl7cmV0dXJuLjUqK3R9LG9wYWNpdHk6cGFyc2VGbG9hdCxlcnJvcnM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bCh0KSxyKz10Lmxlbmd0aCx0fSxwb3NpdGlvbnM6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdD1sKHQsImZsb2F0NjQiKSxyLmNvdW50PU1hdGguZmxvb3IodC5sZW5ndGgvMiksci5ib3VuZHM9bih0LDIpLHIub2Zmc2V0PWUsZSs9ci5jb3VudCx0fX0se2NvbG9yOmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5jb3VudDtpZih0fHwodD0idHJhbnNwYXJlbnQiKSwhQXJyYXkuaXNBcnJheSh0KXx8Im51bWJlciI9PXR5cGVvZiB0WzBdKXt2YXIgbj10O3Q9QXJyYXkocik7Zm9yKHZhciBpPTA7aTxyO2krKyl0W2ldPW59aWYodC5sZW5ndGg8cil0aHJvdyBFcnJvcigiTm90IGVub3VnaCBjb2xvcnMiKTtmb3IodmFyIG89bmV3IFVpbnQ4QXJyYXkoNCpyKSxzPTA7czxyO3MrKyl7dmFyIGw9YSh0W3NdLCJ1aW50OCIpO28uc2V0KGwsNCpzKX1yZXR1cm4gb30scmFuZ2U6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUuYm91bmRzO3JldHVybiB0fHwodD1uKSxlLnNjYWxlPVsxLyh0WzJdLXRbMF0pLDEvKHRbM10tdFsxXSldLGUudHJhbnNsYXRlPVstdFswXSwtdFsxXV0sZS5zY2FsZUZyYWN0PWgoZS5zY2FsZSksZS50cmFuc2xhdGVGcmFjdD1oKGUudHJhbnNsYXRlKSx0fSx2aWV3cG9ydDpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9lPXt4OnRbMF0seTp0WzFdLHdpZHRoOnRbMl0tdFswXSxoZWlnaHQ6dFszXS10WzFdfTp0PyhlPXt4OnQueHx8dC5sZWZ0fHwwLHk6dC55fHx0LnRvcHx8MH0sdC5yaWdodD9lLndpZHRoPXQucmlnaHQtZS54OmUud2lkdGg9dC53fHx0LndpZHRofHwwLHQuYm90dG9tP2UuaGVpZ2h0PXQuYm90dG9tLWUueTplLmhlaWdodD10Lmh8fHQuaGVpZ2h0fHwwKTplPXt4OjAseTowLHdpZHRoOm0uZHJhd2luZ0J1ZmZlcldpZHRoLGhlaWdodDptLmRyYXdpbmdCdWZmZXJIZWlnaHR9LGV9fV0pLHUpOnV9KSxlfHxyKXt2YXIgZj14LnJlZHVjZShmdW5jdGlvbih0LGUscil7cmV0dXJuIHQrKGU/ZS5jb3VudDowKX0sMCksdj1uZXcgRmxvYXQ2NEFycmF5KDIqZiksXz1uZXcgVWludDhBcnJheSg0KmYpLHc9bmV3IEZsb2F0MzJBcnJheSg0KmYpO3guZm9yRWFjaChmdW5jdGlvbih0LGUpe2lmKHQpe3ZhciByPXQucG9zaXRpb25zLG49dC5jb3VudCxhPXQub2Zmc2V0LGk9dC5jb2xvcixvPXQuZXJyb3JzO24mJihfLnNldChpLDQqYSksdy5zZXQobyw0KmEpLHYuc2V0KHIsMiphKSl9fSksYyh1KHYpKSxwKGgodikpLGQoXyksZyh3KX19fWZ1bmN0aW9uIFQoKXtjLmRlc3Ryb3koKSxwLmRlc3Ryb3koKSxkLmRlc3Ryb3koKSxnLmRlc3Ryb3koKSx2LmRlc3Ryb3koKX19O3ZhciBmPVtbMSwwLDAsMSwwLDBdLFsxLDAsMCwtMSwwLDBdLFstMSwwLDAsLTEsMCwwXSxbLTEsMCwwLC0xLDAsMF0sWy0xLDAsMCwxLDAsMF0sWzEsMCwwLDEsMCwwXSxbMSwwLC0xLDAsMCwxXSxbMSwwLC0xLDAsMCwtMV0sWzEsMCwxLDAsMCwtMV0sWzEsMCwxLDAsMCwtMV0sWzEsMCwxLDAsMCwxXSxbMSwwLC0xLDAsMCwxXSxbLTEsMCwtMSwwLDAsMV0sWy0xLDAsLTEsMCwwLC0xXSxbLTEsMCwxLDAsMCwtMV0sWy0xLDAsMSwwLDAsLTFdLFstMSwwLDEsMCwwLDFdLFstMSwwLC0xLDAsMCwxXSxbMCwxLDEsMCwwLDBdLFswLDEsLTEsMCwwLDBdLFswLC0xLC0xLDAsMCwwXSxbMCwtMSwtMSwwLDAsMF0sWzAsMSwxLDAsMCwwXSxbMCwtMSwxLDAsMCwwXSxbMCwxLDAsLTEsMSwwXSxbMCwxLDAsLTEsLTEsMF0sWzAsMSwwLDEsLTEsMF0sWzAsMSwwLDEsMSwwXSxbMCwxLDAsLTEsMSwwXSxbMCwxLDAsMSwtMSwwXSxbMCwtMSwwLC0xLDEsMF0sWzAsLTEsMCwtMSwtMSwwXSxbMCwtMSwwLDEsLTEsMF0sWzAsLTEsMCwxLDEsMF0sWzAsLTEsMCwtMSwxLDBdLFswLC0xLDAsMSwtMSwwXV19LHsiYXJyYXktYm91bmRzIjo2OCwiY29sb3Itbm9ybWFsaXplIjoxMjIsImZsYXR0ZW4tdmVydGV4LWRhdGEiOjIzMCwib2JqZWN0LWFzc2lnbiI6NDU2LCJwaWNrLWJ5LWFsaWFzIjo0NjcsInRvLWZsb2F0MzIiOjUzNywidXBkYXRlLWRpZmYiOjU0OH1dLDQ5MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjb2xvci1ub3JtYWxpemUiKSxhPXQoImFycmF5LWJvdW5kcyIpLGk9dCgib2JqZWN0LWFzc2lnbiIpLG89dCgiZ2xzbGlmeSIpLHM9dCgicGljay1ieS1hbGlhcyIpLGw9dCgiZmxhdHRlbi12ZXJ0ZXgtZGF0YSIpLGM9dCgiZWFyY3V0IiksdT10KCJhcnJheS1ub3JtYWxpemUiKSxoPXQoInRvLWZsb2F0MzIiKSxmPWguZmxvYXQzMixwPWguZnJhY3QzMixkPXQoImVzNi13ZWFrLW1hcCIpLGc9dCgicGFyc2UtcmVjdCIpO2Z1bmN0aW9uIHYodCxlKXtpZighKHRoaXMgaW5zdGFuY2VvZiB2KSlyZXR1cm4gbmV3IHYodCxlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdD8oZXx8KGU9e30pLGUucmVnbD10KTplPXQsZS5sZW5ndGgmJihlLnBvc2l0aW9ucz1lKSwhKHQ9ZS5yZWdsKS5oYXNFeHRlbnNpb24oIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSl0aHJvdyBFcnJvcigicmVnbC1lcnJvcjJkOiBgQU5HTEVfaW5zdGFuY2VkX2FycmF5c2AgZXh0ZW5zaW9uIHNob3VsZCBiZSBlbmFibGVkIik7dGhpcy5nbD10Ll9nbCx0aGlzLnJlZ2w9dCx0aGlzLnBhc3Nlcz1bXSx0aGlzLnNoYWRlcnM9di5zaGFkZXJzLmhhcyh0KT92LnNoYWRlcnMuZ2V0KHQpOnYuc2hhZGVycy5zZXQodCx2LmNyZWF0ZVNoYWRlcnModCkpLmdldCh0KSx0aGlzLnVwZGF0ZShlKX1lLmV4cG9ydHM9dix2LmRhc2hNdWx0PTIsdi5tYXhQYXR0ZXJuTGVuZ3RoPTI1Nix2LnByZWNpc2lvblRocmVzaG9sZD0zZTYsdi5tYXhQb2ludHM9MWU0LHYubWF4TGluZXM9MjA0OCx2LnNoYWRlcnM9bmV3IGQsdi5jcmVhdGVTaGFkZXJzPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5idWZmZXIoe3VzYWdlOiJzdGF0aWMiLHR5cGU6ImZsb2F0IixkYXRhOlswLDEsMCwwLDEsMSwxLDBdfSksbj17cHJpbWl0aXZlOiJ0cmlhbmdsZSBzdHJpcCIsaW5zdGFuY2VzOnQucHJvcCgiY291bnQiKSxjb3VudDo0LG9mZnNldDowLHVuaWZvcm1zOnttaXRlck1vZGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4icm91bmQiPT09ZS5qb2luPzI6MX0sbWl0ZXJMaW1pdDp0LnByb3AoIm1pdGVyTGltaXQiKSxzY2FsZTp0LnByb3AoInNjYWxlIiksc2NhbGVGcmFjdDp0LnByb3AoInNjYWxlRnJhY3QiKSx0cmFuc2xhdGVGcmFjdDp0LnByb3AoInRyYW5zbGF0ZUZyYWN0IiksdHJhbnNsYXRlOnQucHJvcCgidHJhbnNsYXRlIiksdGhpY2tuZXNzOnQucHJvcCgidGhpY2tuZXNzIiksZGFzaFBhdHRlcm46dC5wcm9wKCJkYXNoVGV4dHVyZSIpLG9wYWNpdHk6dC5wcm9wKCJvcGFjaXR5IikscGl4ZWxSYXRpbzp0LmNvbnRleHQoInBpeGVsUmF0aW8iKSxpZDp0LnByb3AoImlkIiksZGFzaFNpemU6dC5wcm9wKCJkYXNoTGVuZ3RoIiksdmlld3BvcnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm5bZS52aWV3cG9ydC54LGUudmlld3BvcnQueSx0LnZpZXdwb3J0V2lkdGgsdC52aWV3cG9ydEhlaWdodF19LGRlcHRoOnQucHJvcCgiZGVwdGgiKX0sYmxlbmQ6e2VuYWJsZTohMCxjb2xvcjpbMCwwLDAsMF0sZXF1YXRpb246e3JnYjoiYWRkIixhbHBoYToiYWRkIn0sZnVuYzp7c3JjUkdCOiJzcmMgYWxwaGEiLGRzdFJHQjoib25lIG1pbnVzIHNyYyBhbHBoYSIsc3JjQWxwaGE6Im9uZSBtaW51cyBkc3QgYWxwaGEiLGRzdEFscGhhOiJvbmUifX0sZGVwdGg6e2VuYWJsZTpmdW5jdGlvbih0LGUpe3JldHVybiFlLm92ZXJsYXl9fSxzdGVuY2lsOntlbmFibGU6ITF9LHNjaXNzb3I6e2VuYWJsZTohMCxib3g6dC5wcm9wKCJ2aWV3cG9ydCIpfSx2aWV3cG9ydDp0LnByb3AoInZpZXdwb3J0Iil9LGE9dChpKHt2ZXJ0Om8oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBhQ29vcmQsIGJDb29yZCwgYUNvb3JkRnJhY3QsIGJDb29yZEZyYWN0O1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgZmxvYXQgbGluZUVuZCwgbGluZVRvcDtcblxudW5pZm9ybSB2ZWMyIHNjYWxlLCBzY2FsZUZyYWN0LCB0cmFuc2xhdGUsIHRyYW5zbGF0ZUZyYWN0O1xudW5pZm9ybSBmbG9hdCB0aGlja25lc3MsIHBpeGVsUmF0aW8sIGlkLCBkZXB0aDtcbnVuaWZvcm0gdmVjNCB2aWV3cG9ydDtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcbnZhcnlpbmcgdmVjMiB0YW5nZW50O1xuXG52ZWMyIHByb2plY3QodmVjMiBwb3NpdGlvbiwgdmVjMiBwb3NpdGlvbkZyYWN0LCB2ZWMyIHNjYWxlLCB2ZWMyIHNjYWxlRnJhY3QsIHZlYzIgdHJhbnNsYXRlLCB2ZWMyIHRyYW5zbGF0ZUZyYWN0KSB7XG5cdC8vIHRoZSBvcmRlciBpcyBpbXBvcnRhbnRcblx0cmV0dXJuIHBvc2l0aW9uICogc2NhbGUgKyB0cmFuc2xhdGVcbiAgICAgICArIHBvc2l0aW9uRnJhY3QgKiBzY2FsZSArIHRyYW5zbGF0ZUZyYWN0XG4gICAgICAgKyBwb3NpdGlvbiAqIHNjYWxlRnJhY3RcbiAgICAgICArIHBvc2l0aW9uRnJhY3QgKiBzY2FsZUZyYWN0O1xufVxuXG52b2lkIG1haW4oKSB7XG5cdGZsb2F0IGxpbmVTdGFydCA9IDEuIC0gbGluZUVuZDtcblx0ZmxvYXQgbGluZU9mZnNldCA9IGxpbmVUb3AgKiAyLiAtIDEuO1xuXG5cdHZlYzIgZGlmZiA9IChiQ29vcmQgKyBiQ29vcmRGcmFjdCAtIGFDb29yZCAtIGFDb29yZEZyYWN0KTtcblx0dGFuZ2VudCA9IG5vcm1hbGl6ZShkaWZmICogc2NhbGUgKiB2aWV3cG9ydC56dyk7XG5cdHZlYzIgbm9ybWFsID0gdmVjMigtdGFuZ2VudC55LCB0YW5nZW50LngpO1xuXG5cdHZlYzIgcG9zaXRpb24gPSBwcm9qZWN0KGFDb29yZCwgYUNvb3JkRnJhY3QsIHNjYWxlLCBzY2FsZUZyYWN0LCB0cmFuc2xhdGUsIHRyYW5zbGF0ZUZyYWN0KSAqIGxpbmVTdGFydFxuXHRcdCsgcHJvamVjdChiQ29vcmQsIGJDb29yZEZyYWN0LCBzY2FsZSwgc2NhbGVGcmFjdCwgdHJhbnNsYXRlLCB0cmFuc2xhdGVGcmFjdCkgKiBsaW5lRW5kXG5cblx0XHQrIHRoaWNrbmVzcyAqIG5vcm1hbCAqIC41ICogbGluZU9mZnNldCAvIHZpZXdwb3J0Lnp3O1xuXG5cdGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiAqIDIuMCAtIDEuMCwgZGVwdGgsIDEpO1xuXG5cdGZyYWdDb2xvciA9IGNvbG9yIC8gMjU1Ljtcbn1cbiJdKSxmcmFnOm8oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG51bmlmb3JtIHNhbXBsZXIyRCBkYXNoUGF0dGVybjtcblxudW5pZm9ybSBmbG9hdCBkYXNoU2l6ZSwgcGl4ZWxSYXRpbywgdGhpY2tuZXNzLCBvcGFjaXR5LCBpZDtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcbnZhcnlpbmcgdmVjMiB0YW5nZW50O1xuXG52b2lkIG1haW4oKSB7XG5cdGZsb2F0IGFscGhhID0gMS47XG5cblx0ZmxvYXQgdCA9IGZyYWN0KGRvdCh0YW5nZW50LCBnbF9GcmFnQ29vcmQueHkpIC8gZGFzaFNpemUpICogLjUgKyAuMjU7XG5cdGZsb2F0IGRhc2ggPSB0ZXh0dXJlMkQoZGFzaFBhdHRlcm4sIHZlYzIodCwgLjUpKS5yO1xuXG5cdGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvcjtcblx0Z2xfRnJhZ0NvbG9yLmEgKj0gYWxwaGEgKiBvcGFjaXR5ICogZGFzaDtcbn1cbiJdKSxhdHRyaWJ1dGVzOntsaW5lRW5kOntidWZmZXI6cixkaXZpc29yOjAsc3RyaWRlOjgsb2Zmc2V0OjB9LGxpbmVUb3A6e2J1ZmZlcjpyLGRpdmlzb3I6MCxzdHJpZGU6OCxvZmZzZXQ6NH0sYUNvb3JkOntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkJ1ZmZlciIpLHN0cmlkZTo4LG9mZnNldDo4LGRpdmlzb3I6MX0sYkNvb3JkOntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkJ1ZmZlciIpLHN0cmlkZTo4LG9mZnNldDoxNixkaXZpc29yOjF9LGFDb29yZEZyYWN0OntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkZyYWN0QnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0OjgsZGl2aXNvcjoxfSxiQ29vcmRGcmFjdDp7YnVmZmVyOnQucHJvcCgicG9zaXRpb25GcmFjdEJ1ZmZlciIpLHN0cmlkZTo4LG9mZnNldDoxNixkaXZpc29yOjF9LGNvbG9yOntidWZmZXI6dC5wcm9wKCJjb2xvckJ1ZmZlciIpLHN0cmlkZTo0LG9mZnNldDowLGRpdmlzb3I6MX19fSxuKSk7dHJ5e2U9dChpKHtjdWxsOntlbmFibGU6ITAsZmFjZToiYmFjayJ9LHZlcnQ6byhbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIGFDb29yZCwgYkNvb3JkLCBuZXh0Q29vcmQsIHByZXZDb29yZDtcbmF0dHJpYnV0ZSB2ZWM0IGFDb2xvciwgYkNvbG9yO1xuYXR0cmlidXRlIGZsb2F0IGxpbmVFbmQsIGxpbmVUb3A7XG5cbnVuaWZvcm0gdmVjMiBzY2FsZSwgdHJhbnNsYXRlO1xudW5pZm9ybSBmbG9hdCB0aGlja25lc3MsIHBpeGVsUmF0aW8sIGlkLCBkZXB0aDtcbnVuaWZvcm0gdmVjNCB2aWV3cG9ydDtcbnVuaWZvcm0gZmxvYXQgbWl0ZXJMaW1pdCwgbWl0ZXJNb2RlO1xuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudmFyeWluZyB2ZWM0IHN0YXJ0Q3V0b2ZmLCBlbmRDdXRvZmY7XG52YXJ5aW5nIHZlYzIgdGFuZ2VudDtcbnZhcnlpbmcgdmVjMiBzdGFydENvb3JkLCBlbmRDb29yZDtcbnZhcnlpbmcgZmxvYXQgZW5hYmxlU3RhcnRNaXRlciwgZW5hYmxlRW5kTWl0ZXI7XG5cbmNvbnN0IGZsb2F0IFJFVkVSU0VfVEhSRVNIT0xEID0gLS44NzU7XG5jb25zdCBmbG9hdCBNSU5fRElGRiA9IDFlLTY7XG5cbi8vIFRPRE86IHBvc3NpYmxlIG9wdGltaXphdGlvbnM6IGF2b2lkIG92ZXJjYWxjdWxhdGluZyBhbGwgZm9yIHZlcnRpY2VzIGFuZCBjYWxjIGp1c3Qgb25lIGluc3RlYWRcbi8vIFRPRE86IHByZWNhbGN1bGF0ZSBkb3QgcHJvZHVjdHMsIG5vcm1hbGl6ZSB0aGluZ3MgYmVmb3JlaGVhZCBldGMuXG4vLyBUT0RPOiByZWZhY3RvciB0byByZWN0YW5ndWxhciBhbGdvcml0aG1cblxuZmxvYXQgZGlzdFRvTGluZSh2ZWMyIHAsIHZlYzIgYSwgdmVjMiBiKSB7XG5cdHZlYzIgZGlmZiA9IGIgLSBhO1xuXHR2ZWMyIHBlcnAgPSBub3JtYWxpemUodmVjMigtZGlmZi55LCBkaWZmLngpKTtcblx0cmV0dXJuIGRvdChwIC0gYSwgcGVycCk7XG59XG5cbmJvb2wgaXNOYU4oIGZsb2F0IHZhbCApe1xuICByZXR1cm4gKCB2YWwgPCAwLjAgfHwgMC4wIDwgdmFsIHx8IHZhbCA9PSAwLjAgKSA/IGZhbHNlIDogdHJ1ZTtcbn1cblxudm9pZCBtYWluKCkge1xuXHR2ZWMyIGFDb29yZCA9IGFDb29yZCwgYkNvb3JkID0gYkNvb3JkLCBwcmV2Q29vcmQgPSBwcmV2Q29vcmQsIG5leHRDb29yZCA9IG5leHRDb29yZDtcblxuICB2ZWMyIGFkanVzdGVkU2NhbGU7XG4gIGFkanVzdGVkU2NhbGUueCA9IChhYnMoc2NhbGUueCkgPCBNSU5fRElGRikgPyBNSU5fRElGRiA6IHNjYWxlLng7XG4gIGFkanVzdGVkU2NhbGUueSA9IChhYnMoc2NhbGUueSkgPCBNSU5fRElGRikgPyBNSU5fRElGRiA6IHNjYWxlLnk7XG5cbiAgdmVjMiBzY2FsZVJhdGlvID0gYWRqdXN0ZWRTY2FsZSAqIHZpZXdwb3J0Lnp3O1xuXHR2ZWMyIG5vcm1hbFdpZHRoID0gdGhpY2tuZXNzIC8gc2NhbGVSYXRpbztcblxuXHRmbG9hdCBsaW5lU3RhcnQgPSAxLiAtIGxpbmVFbmQ7XG5cdGZsb2F0IGxpbmVCb3QgPSAxLiAtIGxpbmVUb3A7XG5cblx0ZnJhZ0NvbG9yID0gKGxpbmVTdGFydCAqIGFDb2xvciArIGxpbmVFbmQgKiBiQ29sb3IpIC8gMjU1LjtcblxuXHRpZiAoaXNOYU4oYUNvb3JkLngpIHx8IGlzTmFOKGFDb29yZC55KSB8fCBpc05hTihiQ29vcmQueCkgfHwgaXNOYU4oYkNvb3JkLnkpKSByZXR1cm47XG5cblx0aWYgKGFDb29yZCA9PSBwcmV2Q29vcmQpIHByZXZDb29yZCA9IGFDb29yZCArIG5vcm1hbGl6ZShiQ29vcmQgLSBhQ29vcmQpO1xuXHRpZiAoYkNvb3JkID09IG5leHRDb29yZCkgbmV4dENvb3JkID0gYkNvb3JkIC0gbm9ybWFsaXplKGJDb29yZCAtIGFDb29yZCk7XG5cblx0dmVjMiBwcmV2RGlmZiA9IGFDb29yZCAtIHByZXZDb29yZDtcblx0dmVjMiBjdXJyRGlmZiA9IGJDb29yZCAtIGFDb29yZDtcblx0dmVjMiBuZXh0RGlmZiA9IG5leHRDb29yZCAtIGJDb29yZDtcblxuXHR2ZWMyIHByZXZUYW5nZW50ID0gbm9ybWFsaXplKHByZXZEaWZmICogc2NhbGVSYXRpbyk7XG5cdHZlYzIgY3VyclRhbmdlbnQgPSBub3JtYWxpemUoY3VyckRpZmYgKiBzY2FsZVJhdGlvKTtcblx0dmVjMiBuZXh0VGFuZ2VudCA9IG5vcm1hbGl6ZShuZXh0RGlmZiAqIHNjYWxlUmF0aW8pO1xuXG5cdHZlYzIgcHJldk5vcm1hbCA9IHZlYzIoLXByZXZUYW5nZW50LnksIHByZXZUYW5nZW50LngpO1xuXHR2ZWMyIGN1cnJOb3JtYWwgPSB2ZWMyKC1jdXJyVGFuZ2VudC55LCBjdXJyVGFuZ2VudC54KTtcblx0dmVjMiBuZXh0Tm9ybWFsID0gdmVjMigtbmV4dFRhbmdlbnQueSwgbmV4dFRhbmdlbnQueCk7XG5cblx0dmVjMiBzdGFydEpvaW5EaXJlY3Rpb24gPSBub3JtYWxpemUocHJldlRhbmdlbnQgLSBjdXJyVGFuZ2VudCk7XG5cdHZlYzIgZW5kSm9pbkRpcmVjdGlvbiA9IG5vcm1hbGl6ZShjdXJyVGFuZ2VudCAtIG5leHRUYW5nZW50KTtcblxuXHQvLyBjb2xsYXBzZWQvdW5pZGlyZWN0aW9uYWwgc2VnbWVudCBjYXNlc1xuXHQvLyBGSVhNRTogdGhlcmUgc2hvdWxkIGJlIG1vcmUgZWxlZ2FudCBzb2x1dGlvblxuXHR2ZWMyIHByZXZUYW5EaWZmID0gYWJzKHByZXZUYW5nZW50IC0gY3VyclRhbmdlbnQpO1xuXHR2ZWMyIG5leHRUYW5EaWZmID0gYWJzKG5leHRUYW5nZW50IC0gY3VyclRhbmdlbnQpO1xuXHRpZiAobWF4KHByZXZUYW5EaWZmLngsIHByZXZUYW5EaWZmLnkpIDwgTUlOX0RJRkYpIHtcblx0XHRzdGFydEpvaW5EaXJlY3Rpb24gPSBjdXJyTm9ybWFsO1xuXHR9XG5cdGlmIChtYXgobmV4dFRhbkRpZmYueCwgbmV4dFRhbkRpZmYueSkgPCBNSU5fRElGRikge1xuXHRcdGVuZEpvaW5EaXJlY3Rpb24gPSBjdXJyTm9ybWFsO1xuXHR9XG5cdGlmIChhQ29vcmQgPT0gYkNvb3JkKSB7XG5cdFx0ZW5kSm9pbkRpcmVjdGlvbiA9IHN0YXJ0Sm9pbkRpcmVjdGlvbjtcblx0XHRjdXJyTm9ybWFsID0gcHJldk5vcm1hbDtcblx0XHRjdXJyVGFuZ2VudCA9IHByZXZUYW5nZW50O1xuXHR9XG5cblx0dGFuZ2VudCA9IGN1cnJUYW5nZW50O1xuXG5cdC8vY2FsY3VsYXRlIGpvaW4gc2hpZnRzIHJlbGF0aXZlIHRvIG5vcm1hbHNcblx0ZmxvYXQgc3RhcnRKb2luU2hpZnQgPSBkb3QoY3Vyck5vcm1hbCwgc3RhcnRKb2luRGlyZWN0aW9uKTtcblx0ZmxvYXQgZW5kSm9pblNoaWZ0ID0gZG90KGN1cnJOb3JtYWwsIGVuZEpvaW5EaXJlY3Rpb24pO1xuXG5cdGZsb2F0IHN0YXJ0TWl0ZXJSYXRpbyA9IGFicygxLiAvIHN0YXJ0Sm9pblNoaWZ0KTtcblx0ZmxvYXQgZW5kTWl0ZXJSYXRpbyA9IGFicygxLiAvIGVuZEpvaW5TaGlmdCk7XG5cblx0dmVjMiBzdGFydEpvaW4gPSBzdGFydEpvaW5EaXJlY3Rpb24gKiBzdGFydE1pdGVyUmF0aW87XG5cdHZlYzIgZW5kSm9pbiA9IGVuZEpvaW5EaXJlY3Rpb24gKiBlbmRNaXRlclJhdGlvO1xuXG5cdHZlYzIgc3RhcnRUb3BKb2luLCBzdGFydEJvdEpvaW4sIGVuZFRvcEpvaW4sIGVuZEJvdEpvaW47XG5cdHN0YXJ0VG9wSm9pbiA9IHNpZ24oc3RhcnRKb2luU2hpZnQpICogc3RhcnRKb2luICogLjU7XG5cdHN0YXJ0Qm90Sm9pbiA9IC1zdGFydFRvcEpvaW47XG5cblx0ZW5kVG9wSm9pbiA9IHNpZ24oZW5kSm9pblNoaWZ0KSAqIGVuZEpvaW4gKiAuNTtcblx0ZW5kQm90Sm9pbiA9IC1lbmRUb3BKb2luO1xuXG5cdHZlYzIgYVRvcENvb3JkID0gYUNvb3JkICsgbm9ybWFsV2lkdGggKiBzdGFydFRvcEpvaW47XG5cdHZlYzIgYlRvcENvb3JkID0gYkNvb3JkICsgbm9ybWFsV2lkdGggKiBlbmRUb3BKb2luO1xuXHR2ZWMyIGFCb3RDb29yZCA9IGFDb29yZCArIG5vcm1hbFdpZHRoICogc3RhcnRCb3RKb2luO1xuXHR2ZWMyIGJCb3RDb29yZCA9IGJDb29yZCArIG5vcm1hbFdpZHRoICogZW5kQm90Sm9pbjtcblxuXHQvL21pdGVyIGFudGktY2xpcHBpbmdcblx0ZmxvYXQgYmFDbGlwcGluZyA9IGRpc3RUb0xpbmUoYkNvb3JkLCBhQ29vcmQsIGFCb3RDb29yZCkgLyBkb3Qobm9ybWFsaXplKG5vcm1hbFdpZHRoICogZW5kQm90Sm9pbiksIG5vcm1hbGl6ZShub3JtYWxXaWR0aC55eCAqIHZlYzIoLXN0YXJ0Qm90Sm9pbi55LCBzdGFydEJvdEpvaW4ueCkpKTtcblx0ZmxvYXQgYWJDbGlwcGluZyA9IGRpc3RUb0xpbmUoYUNvb3JkLCBiQ29vcmQsIGJUb3BDb29yZCkgLyBkb3Qobm9ybWFsaXplKG5vcm1hbFdpZHRoICogc3RhcnRCb3RKb2luKSwgbm9ybWFsaXplKG5vcm1hbFdpZHRoLnl4ICogdmVjMigtZW5kQm90Sm9pbi55LCBlbmRCb3RKb2luLngpKSk7XG5cblx0Ly9wcmV2ZW50IGNsb3NlIHRvIHJldmVyc2UgZGlyZWN0aW9uIHN3aXRjaFxuXHRib29sIHByZXZSZXZlcnNlID0gZG90KGN1cnJUYW5nZW50LCBwcmV2VGFuZ2VudCkgPD0gUkVWRVJTRV9USFJFU0hPTEQgJiYgYWJzKGRvdChjdXJyVGFuZ2VudCwgcHJldk5vcm1hbCkpICogbWluKGxlbmd0aChwcmV2RGlmZiksIGxlbmd0aChjdXJyRGlmZikpIDwgIGxlbmd0aChub3JtYWxXaWR0aCAqIGN1cnJOb3JtYWwpO1xuXHRib29sIG5leHRSZXZlcnNlID0gZG90KGN1cnJUYW5nZW50LCBuZXh0VGFuZ2VudCkgPD0gUkVWRVJTRV9USFJFU0hPTEQgJiYgYWJzKGRvdChjdXJyVGFuZ2VudCwgbmV4dE5vcm1hbCkpICogbWluKGxlbmd0aChuZXh0RGlmZiksIGxlbmd0aChjdXJyRGlmZikpIDwgIGxlbmd0aChub3JtYWxXaWR0aCAqIGN1cnJOb3JtYWwpO1xuXG5cdGlmIChwcmV2UmV2ZXJzZSkge1xuXHRcdC8vbWFrZSBqb2luIHJlY3Rhbmd1bGFyXG5cdFx0dmVjMiBtaXRlclNoaWZ0ID0gbm9ybWFsV2lkdGggKiBzdGFydEpvaW5EaXJlY3Rpb24gKiBtaXRlckxpbWl0ICogLjU7XG5cdFx0ZmxvYXQgbm9ybWFsQWRqdXN0ID0gMS4gLSBtaW4obWl0ZXJMaW1pdCAvIHN0YXJ0TWl0ZXJSYXRpbywgMS4pO1xuXHRcdGFCb3RDb29yZCA9IGFDb29yZCArIG1pdGVyU2hpZnQgLSBub3JtYWxBZGp1c3QgKiBub3JtYWxXaWR0aCAqIGN1cnJOb3JtYWwgKiAuNTtcblx0XHRhVG9wQ29vcmQgPSBhQ29vcmQgKyBtaXRlclNoaWZ0ICsgbm9ybWFsQWRqdXN0ICogbm9ybWFsV2lkdGggKiBjdXJyTm9ybWFsICogLjU7XG5cdH1cblx0ZWxzZSBpZiAoIW5leHRSZXZlcnNlICYmIGJhQ2xpcHBpbmcgPiAwLiAmJiBiYUNsaXBwaW5nIDwgbGVuZ3RoKG5vcm1hbFdpZHRoICogZW5kQm90Sm9pbikpIHtcblx0XHQvL2hhbmRsZSBtaXRlciBjbGlwcGluZ1xuXHRcdGJUb3BDb29yZCAtPSBub3JtYWxXaWR0aCAqIGVuZFRvcEpvaW47XG5cdFx0YlRvcENvb3JkICs9IG5vcm1hbGl6ZShlbmRUb3BKb2luICogbm9ybWFsV2lkdGgpICogYmFDbGlwcGluZztcblx0fVxuXG5cdGlmIChuZXh0UmV2ZXJzZSkge1xuXHRcdC8vbWFrZSBqb2luIHJlY3Rhbmd1bGFyXG5cdFx0dmVjMiBtaXRlclNoaWZ0ID0gbm9ybWFsV2lkdGggKiBlbmRKb2luRGlyZWN0aW9uICogbWl0ZXJMaW1pdCAqIC41O1xuXHRcdGZsb2F0IG5vcm1hbEFkanVzdCA9IDEuIC0gbWluKG1pdGVyTGltaXQgLyBlbmRNaXRlclJhdGlvLCAxLik7XG5cdFx0YkJvdENvb3JkID0gYkNvb3JkICsgbWl0ZXJTaGlmdCAtIG5vcm1hbEFkanVzdCAqIG5vcm1hbFdpZHRoICogY3Vyck5vcm1hbCAqIC41O1xuXHRcdGJUb3BDb29yZCA9IGJDb29yZCArIG1pdGVyU2hpZnQgKyBub3JtYWxBZGp1c3QgKiBub3JtYWxXaWR0aCAqIGN1cnJOb3JtYWwgKiAuNTtcblx0fVxuXHRlbHNlIGlmICghcHJldlJldmVyc2UgJiYgYWJDbGlwcGluZyA+IDAuICYmIGFiQ2xpcHBpbmcgPCBsZW5ndGgobm9ybWFsV2lkdGggKiBzdGFydEJvdEpvaW4pKSB7XG5cdFx0Ly9oYW5kbGUgbWl0ZXIgY2xpcHBpbmdcblx0XHRhQm90Q29vcmQgLT0gbm9ybWFsV2lkdGggKiBzdGFydEJvdEpvaW47XG5cdFx0YUJvdENvb3JkICs9IG5vcm1hbGl6ZShzdGFydEJvdEpvaW4gKiBub3JtYWxXaWR0aCkgKiBhYkNsaXBwaW5nO1xuXHR9XG5cblx0dmVjMiBhVG9wUG9zaXRpb24gPSAoYVRvcENvb3JkKSAqIGFkanVzdGVkU2NhbGUgKyB0cmFuc2xhdGU7XG5cdHZlYzIgYUJvdFBvc2l0aW9uID0gKGFCb3RDb29yZCkgKiBhZGp1c3RlZFNjYWxlICsgdHJhbnNsYXRlO1xuXG5cdHZlYzIgYlRvcFBvc2l0aW9uID0gKGJUb3BDb29yZCkgKiBhZGp1c3RlZFNjYWxlICsgdHJhbnNsYXRlO1xuXHR2ZWMyIGJCb3RQb3NpdGlvbiA9IChiQm90Q29vcmQpICogYWRqdXN0ZWRTY2FsZSArIHRyYW5zbGF0ZTtcblxuXHQvL3Bvc2l0aW9uIGlzIG5vcm1hbGl6ZWQgMC4uMSBjb29yZCBvbiB0aGUgc2NyZWVuXG5cdHZlYzIgcG9zaXRpb24gPSAoYVRvcFBvc2l0aW9uICogbGluZVRvcCArIGFCb3RQb3NpdGlvbiAqIGxpbmVCb3QpICogbGluZVN0YXJ0ICsgKGJUb3BQb3NpdGlvbiAqIGxpbmVUb3AgKyBiQm90UG9zaXRpb24gKiBsaW5lQm90KSAqIGxpbmVFbmQ7XG5cblx0c3RhcnRDb29yZCA9IGFDb29yZCAqIHNjYWxlUmF0aW8gKyB0cmFuc2xhdGUgKiB2aWV3cG9ydC56dyArIHZpZXdwb3J0Lnh5O1xuXHRlbmRDb29yZCA9IGJDb29yZCAqIHNjYWxlUmF0aW8gKyB0cmFuc2xhdGUgKiB2aWV3cG9ydC56dyArIHZpZXdwb3J0Lnh5O1xuXG5cdGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiAgKiAyLjAgLSAxLjAsIGRlcHRoLCAxKTtcblxuXHRlbmFibGVTdGFydE1pdGVyID0gc3RlcChkb3QoY3VyclRhbmdlbnQsIHByZXZUYW5nZW50KSwgLjUpO1xuXHRlbmFibGVFbmRNaXRlciA9IHN0ZXAoZG90KGN1cnJUYW5nZW50LCBuZXh0VGFuZ2VudCksIC41KTtcblxuXHQvL2JldmVsIG1pdGVyIGN1dG9mZnNcblx0aWYgKG1pdGVyTW9kZSA9PSAxLikge1xuXHRcdGlmIChlbmFibGVTdGFydE1pdGVyID09IDEuKSB7XG5cdFx0XHR2ZWMyIHN0YXJ0TWl0ZXJXaWR0aCA9IHZlYzIoc3RhcnRKb2luRGlyZWN0aW9uKSAqIHRoaWNrbmVzcyAqIG1pdGVyTGltaXQgKiAuNTtcblx0XHRcdHN0YXJ0Q3V0b2ZmID0gdmVjNChhQ29vcmQsIGFDb29yZCk7XG5cdFx0XHRzdGFydEN1dG9mZi56dyArPSB2ZWMyKC1zdGFydEpvaW5EaXJlY3Rpb24ueSwgc3RhcnRKb2luRGlyZWN0aW9uLngpIC8gc2NhbGVSYXRpbztcblx0XHRcdHN0YXJ0Q3V0b2ZmID0gc3RhcnRDdXRvZmYgKiBzY2FsZVJhdGlvLnh5eHkgKyB0cmFuc2xhdGUueHl4eSAqIHZpZXdwb3J0Lnp3enc7XG5cdFx0XHRzdGFydEN1dG9mZiArPSB2aWV3cG9ydC54eXh5O1xuXHRcdFx0c3RhcnRDdXRvZmYgKz0gc3RhcnRNaXRlcldpZHRoLnh5eHk7XG5cdFx0fVxuXG5cdFx0aWYgKGVuYWJsZUVuZE1pdGVyID09IDEuKSB7XG5cdFx0XHR2ZWMyIGVuZE1pdGVyV2lkdGggPSB2ZWMyKGVuZEpvaW5EaXJlY3Rpb24pICogdGhpY2tuZXNzICogbWl0ZXJMaW1pdCAqIC41O1xuXHRcdFx0ZW5kQ3V0b2ZmID0gdmVjNChiQ29vcmQsIGJDb29yZCk7XG5cdFx0XHRlbmRDdXRvZmYuencgKz0gdmVjMigtZW5kSm9pbkRpcmVjdGlvbi55LCBlbmRKb2luRGlyZWN0aW9uLngpICAvIHNjYWxlUmF0aW87XG5cdFx0XHRlbmRDdXRvZmYgPSBlbmRDdXRvZmYgKiBzY2FsZVJhdGlvLnh5eHkgKyB0cmFuc2xhdGUueHl4eSAqIHZpZXdwb3J0Lnp3enc7XG5cdFx0XHRlbmRDdXRvZmYgKz0gdmlld3BvcnQueHl4eTtcblx0XHRcdGVuZEN1dG9mZiArPSBlbmRNaXRlcldpZHRoLnh5eHk7XG5cdFx0fVxuXHR9XG5cblx0Ly9yb3VuZCBtaXRlciBjdXRvZmZzXG5cdGVsc2UgaWYgKG1pdGVyTW9kZSA9PSAyLikge1xuXHRcdGlmIChlbmFibGVTdGFydE1pdGVyID09IDEuKSB7XG5cdFx0XHR2ZWMyIHN0YXJ0TWl0ZXJXaWR0aCA9IHZlYzIoc3RhcnRKb2luRGlyZWN0aW9uKSAqIHRoaWNrbmVzcyAqIGFicyhkb3Qoc3RhcnRKb2luRGlyZWN0aW9uLCBjdXJyTm9ybWFsKSkgKiAuNTtcblx0XHRcdHN0YXJ0Q3V0b2ZmID0gdmVjNChhQ29vcmQsIGFDb29yZCk7XG5cdFx0XHRzdGFydEN1dG9mZi56dyArPSB2ZWMyKC1zdGFydEpvaW5EaXJlY3Rpb24ueSwgc3RhcnRKb2luRGlyZWN0aW9uLngpIC8gc2NhbGVSYXRpbztcblx0XHRcdHN0YXJ0Q3V0b2ZmID0gc3RhcnRDdXRvZmYgKiBzY2FsZVJhdGlvLnh5eHkgKyB0cmFuc2xhdGUueHl4eSAqIHZpZXdwb3J0Lnp3enc7XG5cdFx0XHRzdGFydEN1dG9mZiArPSB2aWV3cG9ydC54eXh5O1xuXHRcdFx0c3RhcnRDdXRvZmYgKz0gc3RhcnRNaXRlcldpZHRoLnh5eHk7XG5cdFx0fVxuXG5cdFx0aWYgKGVuYWJsZUVuZE1pdGVyID09IDEuKSB7XG5cdFx0XHR2ZWMyIGVuZE1pdGVyV2lkdGggPSB2ZWMyKGVuZEpvaW5EaXJlY3Rpb24pICogdGhpY2tuZXNzICogYWJzKGRvdChlbmRKb2luRGlyZWN0aW9uLCBjdXJyTm9ybWFsKSkgKiAuNTtcblx0XHRcdGVuZEN1dG9mZiA9IHZlYzQoYkNvb3JkLCBiQ29vcmQpO1xuXHRcdFx0ZW5kQ3V0b2ZmLnp3ICs9IHZlYzIoLWVuZEpvaW5EaXJlY3Rpb24ueSwgZW5kSm9pbkRpcmVjdGlvbi54KSAgLyBzY2FsZVJhdGlvO1xuXHRcdFx0ZW5kQ3V0b2ZmID0gZW5kQ3V0b2ZmICogc2NhbGVSYXRpby54eXh5ICsgdHJhbnNsYXRlLnh5eHkgKiB2aWV3cG9ydC56d3p3O1xuXHRcdFx0ZW5kQ3V0b2ZmICs9IHZpZXdwb3J0Lnh5eHk7XG5cdFx0XHRlbmRDdXRvZmYgKz0gZW5kTWl0ZXJXaWR0aC54eXh5O1xuXHRcdH1cblx0fVxufVxuIl0pLGZyYWc6byhbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gc2FtcGxlcjJEIGRhc2hQYXR0ZXJuO1xudW5pZm9ybSBmbG9hdCBkYXNoU2l6ZSwgcGl4ZWxSYXRpbywgdGhpY2tuZXNzLCBvcGFjaXR5LCBpZCwgbWl0ZXJNb2RlO1xuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudmFyeWluZyB2ZWMyIHRhbmdlbnQ7XG52YXJ5aW5nIHZlYzQgc3RhcnRDdXRvZmYsIGVuZEN1dG9mZjtcbnZhcnlpbmcgdmVjMiBzdGFydENvb3JkLCBlbmRDb29yZDtcbnZhcnlpbmcgZmxvYXQgZW5hYmxlU3RhcnRNaXRlciwgZW5hYmxlRW5kTWl0ZXI7XG5cbmZsb2F0IGRpc3RUb0xpbmUodmVjMiBwLCB2ZWMyIGEsIHZlYzIgYikge1xuXHR2ZWMyIGRpZmYgPSBiIC0gYTtcblx0dmVjMiBwZXJwID0gbm9ybWFsaXplKHZlYzIoLWRpZmYueSwgZGlmZi54KSk7XG5cdHJldHVybiBkb3QocCAtIGEsIHBlcnApO1xufVxuXG52b2lkIG1haW4oKSB7XG5cdGZsb2F0IGFscGhhID0gMS4sIGRpc3RUb1N0YXJ0LCBkaXN0VG9FbmQ7XG5cdGZsb2F0IGN1dG9mZiA9IHRoaWNrbmVzcyAqIC41O1xuXG5cdC8vYmV2ZWwgbWl0ZXJcblx0aWYgKG1pdGVyTW9kZSA9PSAxLikge1xuXHRcdGlmIChlbmFibGVTdGFydE1pdGVyID09IDEuKSB7XG5cdFx0XHRkaXN0VG9TdGFydCA9IGRpc3RUb0xpbmUoZ2xfRnJhZ0Nvb3JkLnh5LCBzdGFydEN1dG9mZi54eSwgc3RhcnRDdXRvZmYuencpO1xuXHRcdFx0aWYgKGRpc3RUb1N0YXJ0IDwgLTEuKSB7XG5cdFx0XHRcdGRpc2NhcmQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGFscGhhICo9IG1pbihtYXgoZGlzdFRvU3RhcnQgKyAxLiwgMC4pLCAxLik7XG5cdFx0fVxuXG5cdFx0aWYgKGVuYWJsZUVuZE1pdGVyID09IDEuKSB7XG5cdFx0XHRkaXN0VG9FbmQgPSBkaXN0VG9MaW5lKGdsX0ZyYWdDb29yZC54eSwgZW5kQ3V0b2ZmLnh5LCBlbmRDdXRvZmYuencpO1xuXHRcdFx0aWYgKGRpc3RUb0VuZCA8IC0xLikge1xuXHRcdFx0XHRkaXNjYXJkO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRhbHBoYSAqPSBtaW4obWF4KGRpc3RUb0VuZCArIDEuLCAwLiksIDEuKTtcblx0XHR9XG5cdH1cblxuXHQvLyByb3VuZCBtaXRlclxuXHRlbHNlIGlmIChtaXRlck1vZGUgPT0gMi4pIHtcblx0XHRpZiAoZW5hYmxlU3RhcnRNaXRlciA9PSAxLikge1xuXHRcdFx0ZGlzdFRvU3RhcnQgPSBkaXN0VG9MaW5lKGdsX0ZyYWdDb29yZC54eSwgc3RhcnRDdXRvZmYueHksIHN0YXJ0Q3V0b2ZmLnp3KTtcblx0XHRcdGlmIChkaXN0VG9TdGFydCA8IDAuKSB7XG5cdFx0XHRcdGZsb2F0IHJhZGl1cyA9IGxlbmd0aChnbF9GcmFnQ29vcmQueHkgLSBzdGFydENvb3JkKTtcblxuXHRcdFx0XHRpZihyYWRpdXMgPiBjdXRvZmYgKyAuNSkge1xuXHRcdFx0XHRcdGRpc2NhcmQ7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YWxwaGEgLT0gc21vb3Roc3RlcChjdXRvZmYgLSAuNSwgY3V0b2ZmICsgLjUsIHJhZGl1cyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGVuYWJsZUVuZE1pdGVyID09IDEuKSB7XG5cdFx0XHRkaXN0VG9FbmQgPSBkaXN0VG9MaW5lKGdsX0ZyYWdDb29yZC54eSwgZW5kQ3V0b2ZmLnh5LCBlbmRDdXRvZmYuencpO1xuXHRcdFx0aWYgKGRpc3RUb0VuZCA8IDAuKSB7XG5cdFx0XHRcdGZsb2F0IHJhZGl1cyA9IGxlbmd0aChnbF9GcmFnQ29vcmQueHkgLSBlbmRDb29yZCk7XG5cblx0XHRcdFx0aWYocmFkaXVzID4gY3V0b2ZmICsgLjUpIHtcblx0XHRcdFx0XHRkaXNjYXJkO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGFscGhhIC09IHNtb290aHN0ZXAoY3V0b2ZmIC0gLjUsIGN1dG9mZiArIC41LCByYWRpdXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGZsb2F0IHQgPSBmcmFjdChkb3QodGFuZ2VudCwgZ2xfRnJhZ0Nvb3JkLnh5KSAvIGRhc2hTaXplKSAqIC41ICsgLjI1O1xuXHRmbG9hdCBkYXNoID0gdGV4dHVyZTJEKGRhc2hQYXR0ZXJuLCB2ZWMyKHQsIC41KSkucjtcblxuXHRnbF9GcmFnQ29sb3IgPSBmcmFnQ29sb3I7XG5cdGdsX0ZyYWdDb2xvci5hICo9IGFscGhhICogb3BhY2l0eSAqIGRhc2g7XG59XG4iXSksYXR0cmlidXRlczp7bGluZUVuZDp7YnVmZmVyOnIsZGl2aXNvcjowLHN0cmlkZTo4LG9mZnNldDowfSxsaW5lVG9wOntidWZmZXI6cixkaXZpc29yOjAsc3RyaWRlOjgsb2Zmc2V0OjR9LGFDb2xvcjp7YnVmZmVyOnQucHJvcCgiY29sb3JCdWZmZXIiKSxzdHJpZGU6NCxvZmZzZXQ6MCxkaXZpc29yOjF9LGJDb2xvcjp7YnVmZmVyOnQucHJvcCgiY29sb3JCdWZmZXIiKSxzdHJpZGU6NCxvZmZzZXQ6NCxkaXZpc29yOjF9LHByZXZDb29yZDp7YnVmZmVyOnQucHJvcCgicG9zaXRpb25CdWZmZXIiKSxzdHJpZGU6OCxvZmZzZXQ6MCxkaXZpc29yOjF9LGFDb29yZDp7YnVmZmVyOnQucHJvcCgicG9zaXRpb25CdWZmZXIiKSxzdHJpZGU6OCxvZmZzZXQ6OCxkaXZpc29yOjF9LGJDb29yZDp7YnVmZmVyOnQucHJvcCgicG9zaXRpb25CdWZmZXIiKSxzdHJpZGU6OCxvZmZzZXQ6MTYsZGl2aXNvcjoxfSxuZXh0Q29vcmQ6e2J1ZmZlcjp0LnByb3AoInBvc2l0aW9uQnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0OjI0LGRpdmlzb3I6MX19fSxuKSl9Y2F0Y2godCl7ZT1hfXJldHVybntmaWxsOnQoe3ByaW1pdGl2ZToidHJpYW5nbGUiLGVsZW1lbnRzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudHJpYW5nbGVzfSxvZmZzZXQ6MCx2ZXJ0Om8oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbiwgcG9zaXRpb25GcmFjdDtcblxudW5pZm9ybSB2ZWM0IGNvbG9yO1xudW5pZm9ybSB2ZWMyIHNjYWxlLCBzY2FsZUZyYWN0LCB0cmFuc2xhdGUsIHRyYW5zbGF0ZUZyYWN0O1xudW5pZm9ybSBmbG9hdCBwaXhlbFJhdGlvLCBpZDtcbnVuaWZvcm0gdmVjNCB2aWV3cG9ydDtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxuY29uc3QgZmxvYXQgTUFYX0xJTkVTID0gMjU2Ljtcblxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBkZXB0aCA9IChNQVhfTElORVMgLSA0LiAtIGlkKSAvIChNQVhfTElORVMpO1xuXG5cdHZlYzIgcG9zaXRpb24gPSBwb3NpdGlvbiAqIHNjYWxlICsgdHJhbnNsYXRlXG4gICAgICAgKyBwb3NpdGlvbkZyYWN0ICogc2NhbGUgKyB0cmFuc2xhdGVGcmFjdFxuICAgICAgICsgcG9zaXRpb24gKiBzY2FsZUZyYWN0XG4gICAgICAgKyBwb3NpdGlvbkZyYWN0ICogc2NhbGVGcmFjdDtcblxuXHRnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24gKiAyLjAgLSAxLjAsIGRlcHRoLCAxKTtcblxuXHRmcmFnQ29sb3IgPSBjb2xvciAvIDI1NS47XG5cdGZyYWdDb2xvci5hICo9IG9wYWNpdHk7XG59XG4iXSksZnJhZzpvKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSBmcmFnQ29sb3I7XG59XG4iXSksdW5pZm9ybXM6e3NjYWxlOnQucHJvcCgic2NhbGUiKSxjb2xvcjp0LnByb3AoImZpbGwiKSxzY2FsZUZyYWN0OnQucHJvcCgic2NhbGVGcmFjdCIpLHRyYW5zbGF0ZUZyYWN0OnQucHJvcCgidHJhbnNsYXRlRnJhY3QiKSx0cmFuc2xhdGU6dC5wcm9wKCJ0cmFuc2xhdGUiKSxvcGFjaXR5OnQucHJvcCgib3BhY2l0eSIpLHBpeGVsUmF0aW86dC5jb250ZXh0KCJwaXhlbFJhdGlvIiksaWQ6dC5wcm9wKCJpZCIpLHZpZXdwb3J0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuW2Uudmlld3BvcnQueCxlLnZpZXdwb3J0LnksdC52aWV3cG9ydFdpZHRoLHQudmlld3BvcnRIZWlnaHRdfX0sYXR0cmlidXRlczp7cG9zaXRpb246e2J1ZmZlcjp0LnByb3AoInBvc2l0aW9uQnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0Ojh9LHBvc2l0aW9uRnJhY3Q6e2J1ZmZlcjp0LnByb3AoInBvc2l0aW9uRnJhY3RCdWZmZXIiKSxzdHJpZGU6OCxvZmZzZXQ6OH19LGJsZW5kOm4uYmxlbmQsZGVwdGg6e2VuYWJsZTohMX0sc2Npc3NvcjpuLnNjaXNzb3Isc3RlbmNpbDpuLnN0ZW5jaWwsdmlld3BvcnQ6bi52aWV3cG9ydH0pLHJlY3Q6YSxtaXRlcjplfX0sdi5kZWZhdWx0cz17ZGFzaGVzOm51bGwsam9pbjoibWl0ZXIiLG1pdGVyTGltaXQ6MSx0aGlja25lc3M6MTAsY2FwOiJzcXVhcmUiLGNvbG9yOiJibGFjayIsb3BhY2l0eToxLG92ZXJsYXk6ITEsdmlld3BvcnQ6bnVsbCxyYW5nZTpudWxsLGNsb3NlOiExLGZpbGw6bnVsbH0sdi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9W10scj1hcmd1bWVudHMubGVuZ3RoO3ItLTspZVtyXT1hcmd1bWVudHNbcl07ZS5sZW5ndGgmJih0PXRoaXMpLnVwZGF0ZS5hcHBseSh0LGUpLHRoaXMuZHJhdygpfSx2LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7ci0tOyllW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4oZS5sZW5ndGg/ZTp0aGlzLnBhc3NlcykuZm9yRWFjaChmdW5jdGlvbihlLHIpe3ZhciBuO2lmKGUmJkFycmF5LmlzQXJyYXkoZSkpcmV0dXJuKG49dCkuZHJhdy5hcHBseShuLGUpOyJudW1iZXIiPT10eXBlb2YgZSYmKGU9dC5wYXNzZXNbZV0pLGUmJmUuY291bnQ+MSYmZS5vcGFjaXR5JiYodC5yZWdsLl9yZWZyZXNoKCksZS5maWxsJiZlLnRyaWFuZ2xlcyYmZS50cmlhbmdsZXMubGVuZ3RoPjImJnQuc2hhZGVycy5maWxsKGUpLGUudGhpY2tuZXNzJiYoZS5zY2FsZVswXSplLnZpZXdwb3J0LndpZHRoPnYucHJlY2lzaW9uVGhyZXNob2xkfHxlLnNjYWxlWzFdKmUudmlld3BvcnQuaGVpZ2h0PnYucHJlY2lzaW9uVGhyZXNob2xkP3Quc2hhZGVycy5yZWN0KGUpOiJyZWN0Ij09PWUuam9pbnx8IWUuam9pbiYmKGUudGhpY2tuZXNzPD0yfHxlLmNvdW50Pj12Lm1heFBvaW50cyk/dC5zaGFkZXJzLnJlY3QoZSk6dC5zaGFkZXJzLm1pdGVyKGUpKSl9KSx0aGlzfSx2LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0KXtudWxsIT10Lmxlbmd0aD8ibnVtYmVyIj09dHlwZW9mIHRbMF0mJih0PVt7cG9zaXRpb25zOnR9XSk6QXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKTt2YXIgcj10aGlzLnJlZ2wsbz10aGlzLmdsO2lmKHQuZm9yRWFjaChmdW5jdGlvbih0LGgpe3ZhciBkPWUucGFzc2VzW2hdO2lmKHZvaWQgMCE9PXQpaWYobnVsbCE9PXQpe2lmKCJudW1iZXIiPT10eXBlb2YgdFswXSYmKHQ9e3Bvc2l0aW9uczp0fSksdD1zKHQse3Bvc2l0aW9uczoicG9zaXRpb25zIHBvaW50cyBkYXRhIGNvb3JkcyIsdGhpY2tuZXNzOiJ0aGlja25lc3MgbGluZVdpZHRoIGxpbmVXaWR0aHMgbGluZS13aWR0aCBsaW5ld2lkdGggd2lkdGggc3Ryb2tlLXdpZHRoIHN0cm9rZXdpZHRoIHN0cm9rZVdpZHRoIixqb2luOiJsaW5lSm9pbiBsaW5lam9pbiBqb2luIHR5cGUgbW9kZSIsbWl0ZXJMaW1pdDoibWl0ZXJsaW1pdCBtaXRlckxpbWl0IixkYXNoZXM6ImRhc2ggZGFzaGVzIGRhc2hhcnJheSBkYXNoLWFycmF5IGRhc2hBcnJheSIsY29sb3I6ImNvbG9yIGNvbG91ciBzdHJva2UgY29sb3JzIGNvbG91cnMgc3Ryb2tlLWNvbG9yIHN0cm9rZUNvbG9yIixmaWxsOiJmaWxsIGZpbGwtY29sb3IgZmlsbENvbG9yIixvcGFjaXR5OiJhbHBoYSBvcGFjaXR5IixvdmVybGF5OiJvdmVybGF5IGNyZWFzZSBvdmVybGFwIGludGVyc2VjdCIsY2xvc2U6ImNsb3NlZCBjbG9zZSBjbG9zZWQtcGF0aCBjbG9zZVBhdGgiLHJhbmdlOiJyYW5nZSBkYXRhQm94Iix2aWV3cG9ydDoidmlld3BvcnQgdmlld0JveCIsaG9sZToiaG9sZXMgaG9sZSBob2xsb3cifSksZHx8KGUucGFzc2VzW2hdPWQ9e2lkOmgsc2NhbGU6bnVsbCxzY2FsZUZyYWN0Om51bGwsdHJhbnNsYXRlOm51bGwsdHJhbnNsYXRlRnJhY3Q6bnVsbCxjb3VudDowLGhvbGU6W10sZGVwdGg6MCxkYXNoTGVuZ3RoOjEsZGFzaFRleHR1cmU6ci50ZXh0dXJlKHtjaGFubmVsczoxLGRhdGE6bmV3IFVpbnQ4QXJyYXkoWzI1NV0pLHdpZHRoOjEsaGVpZ2h0OjEsbWFnOiJsaW5lYXIiLG1pbjoibGluZWFyIn0pLGNvbG9yQnVmZmVyOnIuYnVmZmVyKHt1c2FnZToiZHluYW1pYyIsdHlwZToidWludDgiLGRhdGE6bmV3IFVpbnQ4QXJyYXl9KSxwb3NpdGlvbkJ1ZmZlcjpyLmJ1ZmZlcih7dXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZsb2F0IixkYXRhOm5ldyBVaW50OEFycmF5fSkscG9zaXRpb25GcmFjdEJ1ZmZlcjpyLmJ1ZmZlcih7dXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZsb2F0IixkYXRhOm5ldyBVaW50OEFycmF5fSl9LHQ9aSh7fSx2LmRlZmF1bHRzLHQpKSxudWxsIT10LnRoaWNrbmVzcyYmKGQudGhpY2tuZXNzPXBhcnNlRmxvYXQodC50aGlja25lc3MpKSxudWxsIT10Lm9wYWNpdHkmJihkLm9wYWNpdHk9cGFyc2VGbG9hdCh0Lm9wYWNpdHkpKSxudWxsIT10Lm1pdGVyTGltaXQmJihkLm1pdGVyTGltaXQ9cGFyc2VGbG9hdCh0Lm1pdGVyTGltaXQpKSxudWxsIT10Lm92ZXJsYXkmJihkLm92ZXJsYXk9ISF0Lm92ZXJsYXksaDx2Lm1heExpbmVzJiYoZC5kZXB0aD0yKih2Lm1heExpbmVzLTEtaCV2Lm1heExpbmVzKS92Lm1heExpbmVzLTEpKSxudWxsIT10LmpvaW4mJihkLmpvaW49dC5qb2luKSxudWxsIT10LmhvbGUmJihkLmhvbGU9dC5ob2xlKSxudWxsIT10LmZpbGwmJihkLmZpbGw9dC5maWxsP24odC5maWxsLCJ1aW50OCIpOm51bGwpLG51bGwhPXQudmlld3BvcnQmJihkLnZpZXdwb3J0PWcodC52aWV3cG9ydCkpLGQudmlld3BvcnR8fChkLnZpZXdwb3J0PWcoW28uZHJhd2luZ0J1ZmZlcldpZHRoLG8uZHJhd2luZ0J1ZmZlckhlaWdodF0pKSxudWxsIT10LmNsb3NlJiYoZC5jbG9zZT10LmNsb3NlKSxudWxsPT09dC5wb3NpdGlvbnMmJih0LnBvc2l0aW9ucz1bXSksdC5wb3NpdGlvbnMpe3ZhciBtLHk7aWYodC5wb3NpdGlvbnMueCYmdC5wb3NpdGlvbnMueSl7dmFyIHg9dC5wb3NpdGlvbnMueCxiPXQucG9zaXRpb25zLnk7eT1kLmNvdW50PU1hdGgubWF4KHgubGVuZ3RoLGIubGVuZ3RoKSxtPW5ldyBGbG9hdDY0QXJyYXkoMip5KTtmb3IodmFyIF89MDtfPHk7XysrKW1bMipfXT14W19dLG1bMipfKzFdPWJbX119ZWxzZSBtPWwodC5wb3NpdGlvbnMsImZsb2F0NjQiKSx5PWQuY291bnQ9TWF0aC5mbG9vcihtLmxlbmd0aC8yKTt2YXIgdz1kLmJvdW5kcz1hKG0sMik7aWYoZC5maWxsKXtmb3IodmFyIGs9W10sVD17fSxNPTAsQT0wLFM9MCxFPWQuY291bnQ7QTxFO0ErKyl7dmFyIEw9bVsyKkFdLEM9bVsyKkErMV07aXNOYU4oTCl8fGlzTmFOKEMpfHxudWxsPT1MfHxudWxsPT1DPyhMPW1bMipNXSxDPW1bMipNKzFdLFRbQV09TSk6TT1BLGtbUysrXT1MLGtbUysrXT1DfWZvcih2YXIgUD1jKGssZC5ob2xlfHxbXSksTz0wLHo9UC5sZW5ndGg7Tzx6O08rKyludWxsIT1UW1BbT11dJiYoUFtPXT1UW1BbT11dKTtkLnRyaWFuZ2xlcz1QfXZhciBJPW5ldyBGbG9hdDY0QXJyYXkobSk7dShJLDIsdyk7dmFyIEQ9bmV3IEZsb2F0NjRBcnJheSgyKnkrNik7ZC5jbG9zZT9tWzBdPT09bVsyKnktMl0mJm1bMV09PT1tWzIqeS0xXT8oRFswXT1JWzIqeS00XSxEWzFdPUlbMip5LTNdKTooRFswXT1JWzIqeS0yXSxEWzFdPUlbMip5LTFdKTooRFswXT1JWzBdLERbMV09SVsxXSksRC5zZXQoSSwyKSxkLmNsb3NlP21bMF09PT1tWzIqeS0yXSYmbVsxXT09PW1bMip5LTFdPyhEWzIqeSsyXT1JWzJdLERbMip5KzNdPUlbM10sZC5jb3VudC09MSk6KERbMip5KzJdPUlbMF0sRFsyKnkrM109SVsxXSxEWzIqeSs0XT1JWzJdLERbMip5KzVdPUlbM10pOihEWzIqeSsyXT1JWzIqeS0yXSxEWzIqeSszXT1JWzIqeS0xXSxEWzIqeSs0XT1JWzIqeS0yXSxEWzIqeSs1XT1JWzIqeS0xXSksZC5wb3NpdGlvbkJ1ZmZlcihmKEQpKSxkLnBvc2l0aW9uRnJhY3RCdWZmZXIocChEKSl9aWYodC5yYW5nZT9kLnJhbmdlPXQucmFuZ2U6ZC5yYW5nZXx8KGQucmFuZ2U9ZC5ib3VuZHMpLCh0LnJhbmdlfHx0LnBvc2l0aW9ucykmJmQuY291bnQpe3ZhciBSPWQuYm91bmRzLEY9UlsyXS1SWzBdLEI9UlszXS1SWzFdLE49ZC5yYW5nZVsyXS1kLnJhbmdlWzBdLGo9ZC5yYW5nZVszXS1kLnJhbmdlWzFdO2Quc2NhbGU9W0YvTixCL2pdLGQudHJhbnNsYXRlPVstZC5yYW5nZVswXS9OK1JbMF0vTnx8MCwtZC5yYW5nZVsxXS9qK1JbMV0vanx8MF0sZC5zY2FsZUZyYWN0PXAoZC5zY2FsZSksZC50cmFuc2xhdGVGcmFjdD1wKGQudHJhbnNsYXRlKX1pZih0LmRhc2hlcyl7dmFyIFYsVT0wO2lmKCF0LmRhc2hlc3x8dC5kYXNoZXMubGVuZ3RoPDIpVT0xLFY9bmV3IFVpbnQ4QXJyYXkoWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdKTtlbHNle1U9MDtmb3IodmFyIHE9MDtxPHQuZGFzaGVzLmxlbmd0aDsrK3EpVSs9dC5kYXNoZXNbcV07Vj1uZXcgVWludDhBcnJheShVKnYuZGFzaE11bHQpO2Zvcih2YXIgSD0wLEc9MjU1LFk9MDtZPDI7WSsrKWZvcih2YXIgVz0wO1c8dC5kYXNoZXMubGVuZ3RoOysrVyl7Zm9yKHZhciBYPTAsWj10LmRhc2hlc1tXXSp2LmRhc2hNdWx0Ki41O1g8WjsrK1gpVltIKytdPUc7R149MjU1fX1kLmRhc2hMZW5ndGg9VSxkLmRhc2hUZXh0dXJlKHtjaGFubmVsczoxLGRhdGE6Vix3aWR0aDpWLmxlbmd0aCxoZWlnaHQ6MSxtYWc6ImxpbmVhciIsbWluOiJsaW5lYXIifSwwLDApfWlmKHQuY29sb3Ipe3ZhciBKPWQuY291bnQsSz10LmNvbG9yO0t8fChLPSJ0cmFuc3BhcmVudCIpO3ZhciBRPW5ldyBVaW50OEFycmF5KDQqSis0KTtpZihBcnJheS5pc0FycmF5KEspJiYibnVtYmVyIiE9dHlwZW9mIEtbMF0pe2Zvcih2YXIgJD0wOyQ8SjskKyspe3ZhciB0dD1uKEtbJF0sInVpbnQ4Iik7US5zZXQodHQsNCokKX1RLnNldChuKEtbMF0sInVpbnQ4IiksNCpKKX1lbHNlIGZvcih2YXIgZXQ9bihLLCJ1aW50OCIpLHJ0PTA7cnQ8SisxO3J0KyspUS5zZXQoZXQsNCpydCk7ZC5jb2xvckJ1ZmZlcih7dXNhZ2U6ImR5bmFtaWMiLHR5cGU6InVpbnQ4IixkYXRhOlF9KX19ZWxzZSBlLnBhc3Nlc1toXT1udWxsfSksdC5sZW5ndGg8dGhpcy5wYXNzZXMubGVuZ3RoKXtmb3IodmFyIGg9dC5sZW5ndGg7aDx0aGlzLnBhc3Nlcy5sZW5ndGg7aCsrKXt2YXIgZD1lLnBhc3Nlc1toXTtkJiYoZC5jb2xvckJ1ZmZlci5kZXN0cm95KCksZC5wb3NpdGlvbkJ1ZmZlci5kZXN0cm95KCksZC5kYXNoVGV4dHVyZS5kZXN0cm95KCkpfXRoaXMucGFzc2VzLmxlbmd0aD10Lmxlbmd0aH1mb3IodmFyIG09W10seT0wO3k8dGhpcy5wYXNzZXMubGVuZ3RoO3krKyludWxsIT09ZS5wYXNzZXNbeV0mJm0ucHVzaChlLnBhc3Nlc1t5XSk7cmV0dXJuIHRoaXMucGFzc2VzPW0sdGhpc319LHYucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXNzZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbG9yQnVmZmVyLmRlc3Ryb3koKSx0LnBvc2l0aW9uQnVmZmVyLmRlc3Ryb3koKSx0LmRhc2hUZXh0dXJlLmRlc3Ryb3koKX0pLHRoaXMucGFzc2VzLmxlbmd0aD0wLHRoaXN9fSx7ImFycmF5LWJvdW5kcyI6NjgsImFycmF5LW5vcm1hbGl6ZSI6NDk0LCJjb2xvci1ub3JtYWxpemUiOjEyMixlYXJjdXQ6MTczLCJlczYtd2Vhay1tYXAiOjQ5NSwiZmxhdHRlbi12ZXJ0ZXgtZGF0YSI6MjMwLGdsc2xpZnk6NDExLCJvYmplY3QtYXNzaWduIjo0NTYsInBhcnNlLXJlY3QiOjQ2MSwicGljay1ieS1hbGlhcyI6NDY3LCJ0by1mbG9hdDMyIjo1Mzd9XSw0OTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYXJyYXktYm91bmRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZighdHx8bnVsbD09dC5sZW5ndGgpdGhyb3cgRXJyb3IoIkFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheSIpO251bGw9PWUmJihlPTEpO251bGw9PXImJihyPW4odCxlKSk7Zm9yKHZhciBhPTA7YTxlO2ErKyl7dmFyIGk9cltlK2FdLG89clthXSxzPWEsbD10Lmxlbmd0aDtpZihpPT09MS8wJiZvPT09LTEvMClmb3Iocz1hO3M8bDtzKz1lKXRbc109dFtzXT09PWk/MTp0W3NdPT09bz8wOi41O2Vsc2UgaWYoaT09PTEvMClmb3Iocz1hO3M8bDtzKz1lKXRbc109dFtzXT09PWk/MTowO2Vsc2UgaWYobz09PS0xLzApZm9yKHM9YTtzPGw7cys9ZSl0W3NdPXRbc109PT1vPzA6MTtlbHNle3ZhciBjPWktbztmb3Iocz1hO3M8bDtzKz1lKWlzTmFOKHRbc10pfHwodFtzXT0wPT09Yz8uNToodFtzXS1vKS9jKX19cmV0dXJuIHR9fSx7ImFycmF5LWJvdW5kcyI6Njh9XSw0OTU6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bMzIwXVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHsiLi9pcy1pbXBsZW1lbnRlZCI6NDk2LCIuL3BvbHlmaWxsIjo0OTgsZHVwOjMyMH1dLDQ5NjpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVszMjFdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1cDozMjF9XSw0OTc6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bMzIyXVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6MzIyfV0sNDk4OltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzMyM11bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7Ii4vaXMtbmF0aXZlLWltcGxlbWVudGVkIjo0OTcsZDoxNTMsZHVwOjMyMywiZXM1LWV4dC9vYmplY3QvaXMtdmFsdWUiOjE5NywiZXM1LWV4dC9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZiI6MjAzLCJlczUtZXh0L29iamVjdC92YWxpZC1vYmplY3QiOjIwNywiZXM1LWV4dC9vYmplY3QvdmFsaWQtdmFsdWUiOjIwOCwiZXM1LWV4dC9zdHJpbmcvcmFuZG9tLXVuaXEiOjIxMywiZXM2LWl0ZXJhdG9yL2Zvci1vZiI6MjE1LCJlczYtaXRlcmF0b3IvZ2V0IjoyMTYsImVzNi1zeW1ib2wiOjIyMn1dLDQ5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0LGUpe3ZhciByPVtdLG49ITAsYT0hMSxpPXZvaWQgMDt0cnl7Zm9yKHZhciBvLHM9dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShvPXMubmV4dCgpKS5kb25lKSYmKHIucHVzaChvLnZhbHVlKSwhZXx8ci5sZW5ndGghPT1lKTtuPSEwKTt9Y2F0Y2godCl7YT0hMCxpPXR9ZmluYWxseXt0cnl7bnx8bnVsbD09cy5yZXR1cm58fHMucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IGl9fXJldHVybiByfSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBhKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9MCxyPW5ldyBBcnJheSh0Lmxlbmd0aCk7ZTx0Lmxlbmd0aDtlKyspcltlXT10W2VdO3JldHVybiByfX0odCl8fGZ1bmN0aW9uKHQpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCl8fCJbb2JqZWN0IEFyZ3VtZW50c10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfXZhciBpPXQoImNvbG9yLW5vcm1hbGl6ZSIpLG89dCgiYXJyYXktYm91bmRzIikscz10KCJjb2xvci1pZCIpLGw9dCgicG9pbnQtY2x1c3RlciIpLGM9dCgib2JqZWN0LWFzc2lnbiIpLHU9dCgiZ2xzbGlmeSIpLGg9dCgicGljay1ieS1hbGlhcyIpLGY9dCgidXBkYXRlLWRpZmYiKSxwPXQoImZsYXR0ZW4tdmVydGV4LWRhdGEiKSxkPXQoImlzLWlleHBsb3JlciIpLGc9dCgidG8tZmxvYXQzMiIpLHY9dCgicGFyc2UtcmVjdCIpLG09eTtmdW5jdGlvbiB5KHQsZSl7dmFyIHI9dGhpcztpZighKHRoaXMgaW5zdGFuY2VvZiB5KSlyZXR1cm4gbmV3IHkodCxlKTsiZnVuY3Rpb24iPT10eXBlb2YgdD8oZXx8KGU9e30pLGUucmVnbD10KTooZT10LHQ9bnVsbCksZSYmZS5sZW5ndGgmJihlLnBvc2l0aW9ucz1lKTt2YXIgbixhPSh0PWUucmVnbCkuX2dsLGk9W107dGhpcy50b29NYW55Q29sb3JzPWQsbj10LnRleHR1cmUoe2RhdGE6bmV3IFVpbnQ4QXJyYXkoMTAyMCksd2lkdGg6MjU1LGhlaWdodDoxLHR5cGU6InVpbnQ4Iixmb3JtYXQ6InJnYmEiLHdyYXBTOiJjbGFtcCIsd3JhcFQ6ImNsYW1wIixtYWc6Im5lYXJlc3QiLG1pbjoibmVhcmVzdCJ9KSxjKHRoaXMse3JlZ2w6dCxnbDphLGdyb3VwczpbXSxtYXJrZXJDYWNoZTpbbnVsbF0sbWFya2VyVGV4dHVyZXM6W251bGxdLHBhbGV0dGU6aSxwYWxldHRlSWRzOnt9LHBhbGV0dGVUZXh0dXJlOm4sbWF4Q29sb3JzOjI1NSxtYXhTaXplOjEwMCxjYW52YXM6YS5jYW52YXN9KSx0aGlzLnVwZGF0ZShlKTt2YXIgbz17dW5pZm9ybXM6e3BpeGVsUmF0aW86dC5jb250ZXh0KCJwaXhlbFJhdGlvIikscGFsZXR0ZTpuLHBhbGV0dGVTaXplOmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3IudG9vTWFueUNvbG9ycz8wOjI1NSxuLmhlaWdodF19LHNjYWxlOnQucHJvcCgic2NhbGUiKSxzY2FsZUZyYWN0OnQucHJvcCgic2NhbGVGcmFjdCIpLHRyYW5zbGF0ZTp0LnByb3AoInRyYW5zbGF0ZSIpLHRyYW5zbGF0ZUZyYWN0OnQucHJvcCgidHJhbnNsYXRlRnJhY3QiKSxvcGFjaXR5OnQucHJvcCgib3BhY2l0eSIpLG1hcmtlcjp0LnByb3AoIm1hcmtlclRleHR1cmUiKX0sYXR0cmlidXRlczp7eDpmdW5jdGlvbih0LGUpe3JldHVybiBlLnhBdHRyfHx7YnVmZmVyOmUucG9zaXRpb25CdWZmZXIsc3RyaWRlOjgsb2Zmc2V0OjB9fSx5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueUF0dHJ8fHtidWZmZXI6ZS5wb3NpdGlvbkJ1ZmZlcixzdHJpZGU6OCxvZmZzZXQ6NH19LHhGcmFjdDpmdW5jdGlvbih0LGUpe3JldHVybiBlLnhBdHRyP3tjb25zdGFudDpbMCwwXX06e2J1ZmZlcjplLnBvc2l0aW9uRnJhY3RCdWZmZXIsc3RyaWRlOjgsb2Zmc2V0OjB9fSx5RnJhY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS55QXR0cj97Y29uc3RhbnQ6WzAsMF19OntidWZmZXI6ZS5wb3NpdGlvbkZyYWN0QnVmZmVyLHN0cmlkZTo4LG9mZnNldDo0fX0sc2l6ZTpmdW5jdGlvbih0LGUpe3JldHVybiBlLnNpemUubGVuZ3RoP3tidWZmZXI6ZS5zaXplQnVmZmVyLHN0cmlkZToyLG9mZnNldDowfTp7Y29uc3RhbnQ6W01hdGgucm91bmQoMjU1KmUuc2l6ZS9yLm1heFNpemUpXX19LGJvcmRlclNpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5ib3JkZXJTaXplLmxlbmd0aD97YnVmZmVyOmUuc2l6ZUJ1ZmZlcixzdHJpZGU6MixvZmZzZXQ6MX06e2NvbnN0YW50OltNYXRoLnJvdW5kKDI1NSplLmJvcmRlclNpemUvci5tYXhTaXplKV19fSxjb2xvcklkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuY29sb3IubGVuZ3RoP3tidWZmZXI6ZS5jb2xvckJ1ZmZlcixzdHJpZGU6ci50b29NYW55Q29sb3JzPzg6NCxvZmZzZXQ6MH06e2NvbnN0YW50OnIudG9vTWFueUNvbG9ycz9pLnNsaWNlKDQqZS5jb2xvciw0KmUuY29sb3IrNCk6W2UuY29sb3JdfX0sYm9yZGVyQ29sb3JJZDpmdW5jdGlvbih0LGUpe3JldHVybiBlLmJvcmRlckNvbG9yLmxlbmd0aD97YnVmZmVyOmUuY29sb3JCdWZmZXIsc3RyaWRlOnIudG9vTWFueUNvbG9ycz84OjQsb2Zmc2V0OnIudG9vTWFueUNvbG9ycz80OjJ9Ontjb25zdGFudDpyLnRvb01hbnlDb2xvcnM/aS5zbGljZSg0KmUuYm9yZGVyQ29sb3IsNCplLmJvcmRlckNvbG9yKzQpOltlLmJvcmRlckNvbG9yXX19LGlzQWN0aXZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuITA9PT1lLmFjdGl2YXRpb24/e2NvbnN0YW50OlsxXX06ZS5hY3RpdmF0aW9uP2UuYWN0aXZhdGlvbjp7Y29uc3RhbnQ6WzBdfX19LGJsZW5kOntlbmFibGU6ITAsY29sb3I6WzAsMCwwLDFdLGZ1bmM6e3NyY1JHQjoic3JjIGFscGhhIixkc3RSR0I6Im9uZSBtaW51cyBzcmMgYWxwaGEiLHNyY0FscGhhOiJvbmUgbWludXMgZHN0IGFscGhhIixkc3RBbHBoYToib25lIn19LHNjaXNzb3I6e2VuYWJsZTohMCxib3g6dC5wcm9wKCJ2aWV3cG9ydCIpfSx2aWV3cG9ydDp0LnByb3AoInZpZXdwb3J0Iiksc3RlbmNpbDp7ZW5hYmxlOiExfSxkZXB0aDp7ZW5hYmxlOiExfSxlbGVtZW50czp0LnByb3AoImVsZW1lbnRzIiksY291bnQ6dC5wcm9wKCJjb3VudCIpLG9mZnNldDp0LnByb3AoIm9mZnNldCIpLHByaW1pdGl2ZToicG9pbnRzIn0scz1jKHt9LG8pO3MuZnJhZz11KFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvciwgZnJhZ0JvcmRlckNvbG9yO1xudmFyeWluZyBmbG9hdCBmcmFnV2lkdGgsIGZyYWdCb3JkZXJDb2xvckxldmVsLCBmcmFnQ29sb3JMZXZlbDtcblxudW5pZm9ybSBzYW1wbGVyMkQgbWFya2VyO1xudW5pZm9ybSBmbG9hdCBwaXhlbFJhdGlvLCBvcGFjaXR5O1xuXG5mbG9hdCBzbW9vdGhTdGVwKGZsb2F0IHgsIGZsb2F0IHkpIHtcbiAgcmV0dXJuIDEuMCAvICgxLjAgKyBleHAoNTAuMCooeCAtIHkpKSk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgZmxvYXQgZGlzdCA9IHRleHR1cmUyRChtYXJrZXIsIGdsX1BvaW50Q29vcmQpLnIsIGRlbHRhID0gZnJhZ1dpZHRoO1xuXG4gIC8vIG1heC1kaXN0YW5jZSBhbHBoYVxuICBpZiAoZGlzdCA8IDAuMDAzKSBkaXNjYXJkO1xuXG4gIC8vIG51bGwtYm9yZGVyIGNhc2VcbiAgaWYgKGZyYWdCb3JkZXJDb2xvckxldmVsID09IGZyYWdDb2xvckxldmVsIHx8IGZyYWdCb3JkZXJDb2xvci5hID09IDAuKSB7XG4gICAgZmxvYXQgY29sb3JBbXQgPSBzbW9vdGhzdGVwKC41IC0gZGVsdGEsIC41ICsgZGVsdGEsIGRpc3QpO1xuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZnJhZ0NvbG9yLnJnYiwgY29sb3JBbXQgKiBmcmFnQ29sb3IuYSAqIG9wYWNpdHkpO1xuICB9XG4gIGVsc2Uge1xuICAgIGZsb2F0IGJvcmRlckNvbG9yQW10ID0gc21vb3Roc3RlcChmcmFnQm9yZGVyQ29sb3JMZXZlbCAtIGRlbHRhLCBmcmFnQm9yZGVyQ29sb3JMZXZlbCArIGRlbHRhLCBkaXN0KTtcbiAgICBmbG9hdCBjb2xvckFtdCA9IHNtb290aHN0ZXAoZnJhZ0NvbG9yTGV2ZWwgLSBkZWx0YSwgZnJhZ0NvbG9yTGV2ZWwgKyBkZWx0YSwgZGlzdCk7XG5cbiAgICB2ZWM0IGNvbG9yID0gZnJhZ0JvcmRlckNvbG9yO1xuICAgIGNvbG9yLmEgKj0gYm9yZGVyQ29sb3JBbXQ7XG4gICAgY29sb3IgPSBtaXgoY29sb3IsIGZyYWdDb2xvciwgY29sb3JBbXQpO1xuICAgIGNvbG9yLmEgKj0gb3BhY2l0eTtcblxuICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xuICB9XG5cbn1cbiJdKSxzLnZlcnQ9dShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSBmbG9hdCB4LCB5LCB4RnJhY3QsIHlGcmFjdDtcbmF0dHJpYnV0ZSBmbG9hdCBzaXplLCBib3JkZXJTaXplO1xuYXR0cmlidXRlIHZlYzQgY29sb3JJZCwgYm9yZGVyQ29sb3JJZDtcbmF0dHJpYnV0ZSBmbG9hdCBpc0FjdGl2ZTtcblxudW5pZm9ybSB2ZWMyIHNjYWxlLCBzY2FsZUZyYWN0LCB0cmFuc2xhdGUsIHRyYW5zbGF0ZUZyYWN0LCBwYWxldHRlU2l6ZTtcbnVuaWZvcm0gZmxvYXQgcGl4ZWxSYXRpbztcbnVuaWZvcm0gc2FtcGxlcjJEIHBhbGV0dGU7XG5cbmNvbnN0IGZsb2F0IG1heFNpemUgPSAxMDAuO1xuY29uc3QgZmxvYXQgYm9yZGVyTGV2ZWwgPSAuNTtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvciwgZnJhZ0JvcmRlckNvbG9yO1xudmFyeWluZyBmbG9hdCBmcmFnUG9pbnRTaXplLCBmcmFnQm9yZGVyUmFkaXVzLCBmcmFnV2lkdGgsIGZyYWdCb3JkZXJDb2xvckxldmVsLCBmcmFnQ29sb3JMZXZlbDtcblxuYm9vbCBpc0RpcmVjdCA9IChwYWxldHRlU2l6ZS54IDwgMS4pO1xuXG52ZWM0IGdldENvbG9yKHZlYzQgaWQpIHtcbiAgcmV0dXJuIGlzRGlyZWN0ID8gaWQgLyAyNTUuIDogdGV4dHVyZTJEKHBhbGV0dGUsXG4gICAgdmVjMihcbiAgICAgIChpZC54ICsgLjUpIC8gcGFsZXR0ZVNpemUueCxcbiAgICAgIChpZC55ICsgLjUpIC8gcGFsZXR0ZVNpemUueVxuICAgIClcbiAgKTtcbn1cblxudm9pZCBtYWluKCkge1xuICBpZiAoaXNBY3RpdmUgPT0gMC4pIHJldHVybjtcblxuICB2ZWMyIHBvc2l0aW9uID0gdmVjMih4LCB5KTtcbiAgdmVjMiBwb3NpdGlvbkZyYWN0ID0gdmVjMih4RnJhY3QsIHlGcmFjdCk7XG5cbiAgdmVjNCBjb2xvciA9IGdldENvbG9yKGNvbG9ySWQpO1xuICB2ZWM0IGJvcmRlckNvbG9yID0gZ2V0Q29sb3IoYm9yZGVyQ29sb3JJZCk7XG5cbiAgZmxvYXQgc2l6ZSA9IHNpemUgKiBtYXhTaXplIC8gMjU1LjtcbiAgZmxvYXQgYm9yZGVyU2l6ZSA9IGJvcmRlclNpemUgKiBtYXhTaXplIC8gMjU1LjtcblxuICBnbF9Qb2ludFNpemUgPSAyLiAqIHNpemUgKiBwaXhlbFJhdGlvO1xuICBmcmFnUG9pbnRTaXplID0gc2l6ZSAqIHBpeGVsUmF0aW87XG5cbiAgdmVjMiBwb3MgPSAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVcbiAgICAgICsgKHBvc2l0aW9uRnJhY3QgKyB0cmFuc2xhdGVGcmFjdCkgKiBzY2FsZVxuICAgICAgKyAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVGcmFjdFxuICAgICAgKyAocG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNjYWxlRnJhY3Q7XG5cbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcyAqIDIuIC0gMS4sIDAsIDEpO1xuXG4gIGZyYWdDb2xvciA9IGNvbG9yO1xuICBmcmFnQm9yZGVyQ29sb3IgPSBib3JkZXJDb2xvcjtcbiAgZnJhZ1dpZHRoID0gMS4gLyBnbF9Qb2ludFNpemU7XG5cbiAgZnJhZ0JvcmRlckNvbG9yTGV2ZWwgPSBjbGFtcChib3JkZXJMZXZlbCAtIGJvcmRlckxldmVsICogYm9yZGVyU2l6ZSAvIHNpemUsIDAuLCAxLik7XG4gIGZyYWdDb2xvckxldmVsID0gY2xhbXAoYm9yZGVyTGV2ZWwgKyAoMS4gLSBib3JkZXJMZXZlbCkgKiBib3JkZXJTaXplIC8gc2l6ZSwgMC4sIDEuKTtcbn0iXSksdGhpcy5kcmF3TWFya2VyPXQocyk7dmFyIGw9Yyh7fSxvKTtsLmZyYWc9dShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3IsIGZyYWdCb3JkZXJDb2xvcjtcblxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyBmbG9hdCBmcmFnQm9yZGVyUmFkaXVzLCBmcmFnV2lkdGg7XG5cbmZsb2F0IHNtb290aFN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCBmbG9hdCB4KSB7XG5cdGZsb2F0IHQ7XG5cdHQgPSBjbGFtcCgoeCAtIGVkZ2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgMC4wLCAxLjApO1xuXHRyZXR1cm4gdCAqIHQgKiAoMy4wIC0gMi4wICogdCk7XG59XG5cbnZvaWQgbWFpbigpIHtcblx0ZmxvYXQgcmFkaXVzLCBhbHBoYSA9IDEuMCwgZGVsdGEgPSBmcmFnV2lkdGg7XG5cblx0cmFkaXVzID0gbGVuZ3RoKDIuMCAqIGdsX1BvaW50Q29vcmQueHkgLSAxLjApO1xuXG5cdGlmIChyYWRpdXMgPiAxLjAgKyBkZWx0YSkge1xuXHRcdGRpc2NhcmQ7XG5cdH1cblxuXHRhbHBoYSAtPSBzbW9vdGhzdGVwKDEuMCAtIGRlbHRhLCAxLjAgKyBkZWx0YSwgcmFkaXVzKTtcblxuXHRmbG9hdCBib3JkZXJSYWRpdXMgPSBmcmFnQm9yZGVyUmFkaXVzO1xuXHRmbG9hdCByYXRpbyA9IHNtb290aHN0ZXAoYm9yZGVyUmFkaXVzIC0gZGVsdGEsIGJvcmRlclJhZGl1cyArIGRlbHRhLCByYWRpdXMpO1xuXHR2ZWM0IGNvbG9yID0gbWl4KGZyYWdDb2xvciwgZnJhZ0JvcmRlckNvbG9yLCByYXRpbyk7XG5cdGNvbG9yLmEgKj0gYWxwaGEgKiBvcGFjaXR5O1xuXHRnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbn1cbiJdKSxsLnZlcnQ9dShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSBmbG9hdCB4LCB5LCB4RnJhY3QsIHlGcmFjdDtcbmF0dHJpYnV0ZSBmbG9hdCBzaXplLCBib3JkZXJTaXplO1xuYXR0cmlidXRlIHZlYzQgY29sb3JJZCwgYm9yZGVyQ29sb3JJZDtcbmF0dHJpYnV0ZSBmbG9hdCBpc0FjdGl2ZTtcblxudW5pZm9ybSB2ZWMyIHNjYWxlLCBzY2FsZUZyYWN0LCB0cmFuc2xhdGUsIHRyYW5zbGF0ZUZyYWN0O1xudW5pZm9ybSBmbG9hdCBwaXhlbFJhdGlvO1xudW5pZm9ybSBzYW1wbGVyMkQgcGFsZXR0ZTtcbnVuaWZvcm0gdmVjMiBwYWxldHRlU2l6ZTtcblxuY29uc3QgZmxvYXQgbWF4U2l6ZSA9IDEwMC47XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3IsIGZyYWdCb3JkZXJDb2xvcjtcbnZhcnlpbmcgZmxvYXQgZnJhZ0JvcmRlclJhZGl1cywgZnJhZ1dpZHRoO1xuXG5ib29sIGlzRGlyZWN0ID0gKHBhbGV0dGVTaXplLnggPCAxLik7XG5cbnZlYzQgZ2V0Q29sb3IodmVjNCBpZCkge1xuICByZXR1cm4gaXNEaXJlY3QgPyBpZCAvIDI1NS4gOiB0ZXh0dXJlMkQocGFsZXR0ZSxcbiAgICB2ZWMyKFxuICAgICAgKGlkLnggKyAuNSkgLyBwYWxldHRlU2l6ZS54LFxuICAgICAgKGlkLnkgKyAuNSkgLyBwYWxldHRlU2l6ZS55XG4gICAgKVxuICApO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIC8vIGlnbm9yZSBpbmFjdGl2ZSBwb2ludHNcbiAgaWYgKGlzQWN0aXZlID09IDAuKSByZXR1cm47XG5cbiAgdmVjMiBwb3NpdGlvbiA9IHZlYzIoeCwgeSk7XG4gIHZlYzIgcG9zaXRpb25GcmFjdCA9IHZlYzIoeEZyYWN0LCB5RnJhY3QpO1xuXG4gIHZlYzQgY29sb3IgPSBnZXRDb2xvcihjb2xvcklkKTtcbiAgdmVjNCBib3JkZXJDb2xvciA9IGdldENvbG9yKGJvcmRlckNvbG9ySWQpO1xuXG4gIGZsb2F0IHNpemUgPSBzaXplICogbWF4U2l6ZSAvIDI1NS47XG4gIGZsb2F0IGJvcmRlclNpemUgPSBib3JkZXJTaXplICogbWF4U2l6ZSAvIDI1NS47XG5cbiAgZ2xfUG9pbnRTaXplID0gKHNpemUgKyBib3JkZXJTaXplKSAqIHBpeGVsUmF0aW87XG5cbiAgdmVjMiBwb3MgPSAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVcbiAgICAgICsgKHBvc2l0aW9uRnJhY3QgKyB0cmFuc2xhdGVGcmFjdCkgKiBzY2FsZVxuICAgICAgKyAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVGcmFjdFxuICAgICAgKyAocG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNjYWxlRnJhY3Q7XG5cbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcyAqIDIuIC0gMS4sIDAsIDEpO1xuXG4gIGZyYWdCb3JkZXJSYWRpdXMgPSAxLiAtIDIuICogYm9yZGVyU2l6ZSAvIChzaXplICsgYm9yZGVyU2l6ZSk7XG4gIGZyYWdDb2xvciA9IGNvbG9yO1xuICBmcmFnQm9yZGVyQ29sb3IgPSBib3JkZXJDb2xvci5hID09IDAuIHx8IGJvcmRlclNpemUgPT0gMC4gPyB2ZWM0KGNvbG9yLnJnYiwgMC4pIDogYm9yZGVyQ29sb3I7XG4gIGZyYWdXaWR0aCA9IDEuIC8gZ2xfUG9pbnRTaXplO1xufVxuIl0pLGQmJihsLmZyYWc9bC5mcmFnLnJlcGxhY2UoInNtb290aHN0ZXAiLCJzbW9vdGhTdGVwIikscy5mcmFnPXMuZnJhZy5yZXBsYWNlKCJzbW9vdGhzdGVwIiwic21vb3RoU3RlcCIpKSx0aGlzLmRyYXdDaXJjbGU9dChsKX15LmRlZmF1bHRzPXtjb2xvcjoiYmxhY2siLGJvcmRlckNvbG9yOiJ0cmFuc3BhcmVudCIsYm9yZGVyU2l6ZTowLHNpemU6MTIsb3BhY2l0eToxLG1hcmtlcjp2b2lkIDAsdmlld3BvcnQ6bnVsbCxyYW5nZTpudWxsLHBpeGVsU2l6ZTpudWxsLGNvdW50OjAsb2Zmc2V0OjAsYm91bmRzOm51bGwscG9zaXRpb25zOltdLHNuYXA6MWU0fSx5LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCYmdGhpcy51cGRhdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuZHJhdygpLHRoaXN9LHkucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07dmFyIGE9dGhpcy5ncm91cHM7aWYoMT09PXIubGVuZ3RoJiZBcnJheS5pc0FycmF5KHJbMF0pJiYobnVsbD09PXJbMF1bMF18fEFycmF5LmlzQXJyYXkoclswXVswXSkpJiYocj1yWzBdKSx0aGlzLnJlZ2wuX3JlZnJlc2goKSxyLmxlbmd0aClmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKyl0aGlzLmRyYXdJdGVtKGkscltpXSk7ZWxzZSBhLmZvckVhY2goZnVuY3Rpb24oZSxyKXt0LmRyYXdJdGVtKHIpfSk7cmV0dXJuIHRoaXN9LHkucHJvdG90eXBlLmRyYXdJdGVtPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5ncm91cHMsbj1yW3RdO2lmKCJudW1iZXIiPT10eXBlb2YgZSYmKHQ9ZSxuPXJbZV0sZT1udWxsKSxuJiZuLmNvdW50JiZuLm9wYWNpdHkpe24uYWN0aXZhdGlvblswXSYmdGhpcy5kcmF3Q2lyY2xlKHRoaXMuZ2V0TWFya2VyRHJhd09wdGlvbnMoMCxuLGUpKTtmb3IodmFyIGk9W10sbz0xO288bi5hY3RpdmF0aW9uLmxlbmd0aDtvKyspbi5hY3RpdmF0aW9uW29dJiYoITA9PT1uLmFjdGl2YXRpb25bb118fG4uYWN0aXZhdGlvbltvXS5kYXRhLmxlbmd0aCkmJmkucHVzaC5hcHBseShpLGEodGhpcy5nZXRNYXJrZXJEcmF3T3B0aW9ucyhvLG4sZSkpKTtpLmxlbmd0aCYmdGhpcy5kcmF3TWFya2VyKGkpfX0seS5wcm90b3R5cGUuZ2V0TWFya2VyRHJhd09wdGlvbnM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPWUucmFuZ2UsaT1lLnRyZWUsbz1lLnZpZXdwb3J0LHM9ZS5hY3RpdmF0aW9uLGw9ZS5zZWxlY3Rpb25CdWZmZXIsdT1lLmNvdW50O3RoaXMucmVnbDtpZighaSlyZXR1cm4gcj9bYyh7fSxlLHttYXJrZXJUZXh0dXJlOnRoaXMubWFya2VyVGV4dHVyZXNbdF0sYWN0aXZhdGlvbjpzW3RdLGNvdW50OnIubGVuZ3RoLGVsZW1lbnRzOnIsb2Zmc2V0OjB9KV06W2Moe30sZSx7bWFya2VyVGV4dHVyZTp0aGlzLm1hcmtlclRleHR1cmVzW3RdLGFjdGl2YXRpb246c1t0XSxvZmZzZXQ6MH0pXTt2YXIgaD1bXSxmPWkucmFuZ2UoYSx7bG9kOiEwLHB4OlsoYVsyXS1hWzBdKS9vLndpZHRoLChhWzNdLWFbMV0pL28uaGVpZ2h0XX0pO2lmKHIpe2Zvcih2YXIgcD1zW3RdLmRhdGEsZD1uZXcgVWludDhBcnJheSh1KSxnPTA7ZzxyLmxlbmd0aDtnKyspe3ZhciB2PXJbZ107ZFt2XT1wP3Bbdl06MX1sLnN1YmRhdGEoZCl9Zm9yKHZhciBtPWYubGVuZ3RoO20tLTspe3ZhciB5PW4oZlttXSwyKSx4PXlbMF0sYj15WzFdO2gucHVzaChjKHt9LGUse21hcmtlclRleHR1cmU6dGhpcy5tYXJrZXJUZXh0dXJlc1t0XSxhY3RpdmF0aW9uOnI/bDpzW3RdLG9mZnNldDp4LGNvdW50OmIteH0pKX1yZXR1cm4gaH0seS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO2lmKHIubGVuZ3RoKXsxPT09ci5sZW5ndGgmJkFycmF5LmlzQXJyYXkoclswXSkmJihyPXJbMF0pO3ZhciBhPXRoaXMuZ3JvdXBzLGk9dGhpcy5nbCxzPXRoaXMucmVnbCx1PXRoaXMubWF4U2l6ZSxkPXRoaXMubWF4Q29sb3JzLG09dGhpcy5wYWxldHRlO3RoaXMuZ3JvdXBzPWE9ci5tYXAoZnVuY3Rpb24oZSxyKXt2YXIgbj1hW3JdO2lmKHZvaWQgMD09PWUpcmV0dXJuIG47bnVsbD09PWU/ZT17cG9zaXRpb25zOm51bGx9OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U9e29uZHJhdzplfToibnVtYmVyIj09dHlwZW9mIGVbMF0mJihlPXtwb3NpdGlvbnM6ZX0pLG51bGw9PT0oZT1oKGUse3Bvc2l0aW9uczoicG9zaXRpb25zIGRhdGEgcG9pbnRzIixzbmFwOiJzbmFwIGNsdXN0ZXIgbG9kIHRyZWUiLHNpemU6InNpemVzIHNpemUgcmFkaXVzIixib3JkZXJTaXplOiJib3JkZXJTaXplcyBib3JkZXJTaXplIGJvcmRlci1zaXplIGJvcmRlcnNpemUgYm9yZGVyV2lkdGggYm9yZGVyV2lkdGhzIGJvcmRlci13aWR0aCBib3JkZXJ3aWR0aCBzdHJva2Utd2lkdGggc3Ryb2tlV2lkdGggc3Ryb2tld2lkdGggb3V0bGluZSIsY29sb3I6ImNvbG9ycyBjb2xvciBmaWxsIGZpbGwtY29sb3IgZmlsbENvbG9yIixib3JkZXJDb2xvcjoiYm9yZGVyQ29sb3JzIGJvcmRlckNvbG9yIHN0cm9rZSBzdHJva2UtY29sb3Igc3Ryb2tlQ29sb3IiLG1hcmtlcjoibWFya2VycyBtYXJrZXIgc2hhcGUiLHJhbmdlOiJyYW5nZSBkYXRhQm94IGRhdGFib3giLHZpZXdwb3J0OiJ2aWV3cG9ydCB2aWV3UG9ydCB2aWV3Qm94IHZpZXdib3giLG9wYWNpdHk6Im9wYWNpdHkgYWxwaGEgdHJhbnNwYXJlbmN5Iixib3VuZHM6ImJvdW5kIGJvdW5kcyBib3VuZGFyaWVzIGxpbWl0cyIsdG9vTWFueUNvbG9yczoidG9vTWFueUNvbG9ycyBwYWxldHRlIHBhbGV0dGVNb2RlIG9wdGltaXplUGFsZXR0ZSBlbmFibGVQYWxldHRlIn0pKS5wb3NpdGlvbnMmJihlLnBvc2l0aW9ucz1bXSksbnVsbCE9ZS50b29NYW55Q29sb3JzJiYodC50b29NYW55Q29sb3JzPWUudG9vTWFueUNvbG9ycyksbnx8KGFbcl09bj17aWQ6cixzY2FsZTpudWxsLHRyYW5zbGF0ZTpudWxsLHNjYWxlRnJhY3Q6bnVsbCx0cmFuc2xhdGVGcmFjdDpudWxsLGFjdGl2YXRpb246W10sc2VsZWN0aW9uQnVmZmVyOnMuYnVmZmVyKHtkYXRhOm5ldyBVaW50OEFycmF5KDApLHVzYWdlOiJzdHJlYW0iLHR5cGU6InVpbnQ4In0pLHNpemVCdWZmZXI6cy5idWZmZXIoe2RhdGE6bmV3IFVpbnQ4QXJyYXkoMCksdXNhZ2U6ImR5bmFtaWMiLHR5cGU6InVpbnQ4In0pLGNvbG9yQnVmZmVyOnMuYnVmZmVyKHtkYXRhOm5ldyBVaW50OEFycmF5KDApLHVzYWdlOiJkeW5hbWljIix0eXBlOiJ1aW50OCJ9KSxwb3NpdGlvbkJ1ZmZlcjpzLmJ1ZmZlcih7ZGF0YTpuZXcgVWludDhBcnJheSgwKSx1c2FnZToiZHluYW1pYyIsdHlwZToiZmxvYXQifSkscG9zaXRpb25GcmFjdEJ1ZmZlcjpzLmJ1ZmZlcih7ZGF0YTpuZXcgVWludDhBcnJheSgwKSx1c2FnZToiZHluYW1pYyIsdHlwZToiZmxvYXQifSl9LGU9Yyh7fSx5LmRlZmF1bHRzLGUpKSwhZS5wb3NpdGlvbnN8fCJtYXJrZXIiaW4gZXx8KGUubWFya2VyPW4ubWFya2VyLGRlbGV0ZSBuLm1hcmtlciksIWUubWFya2VyfHwicG9zaXRpb25zImluIGV8fChlLnBvc2l0aW9ucz1uLnBvc2l0aW9ucyxkZWxldGUgbi5wb3NpdGlvbnMpO3ZhciB4PTAsYj0wO2lmKGYobixlLFt7c25hcDohMCxzaXplOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQmJih0PXkuZGVmYXVsdHMuc2l6ZSkseCs9dCYmdC5sZW5ndGg/MTowLHR9LGJvcmRlclNpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dCYmKHQ9eS5kZWZhdWx0cy5ib3JkZXJTaXplKSx4Kz10JiZ0Lmxlbmd0aD8xOjAsdH0sb3BhY2l0eTpwYXJzZUZsb2F0LGNvbG9yOmZ1bmN0aW9uKGUscil7cmV0dXJuIG51bGw9PWUmJihlPXkuZGVmYXVsdHMuY29sb3IpLGU9dC51cGRhdGVDb2xvcihlKSxiKyssZX0sYm9yZGVyQ29sb3I6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbnVsbD09ZSYmKGU9eS5kZWZhdWx0cy5ib3JkZXJDb2xvciksZT10LnVwZGF0ZUNvbG9yKGUpLGIrKyxlfSxib3VuZHM6ZnVuY3Rpb24odCxlLHIpe3JldHVybiJyYW5nZSJpbiByfHwoci5yYW5nZT1udWxsKSx0fSxwb3NpdGlvbnM6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUuc25hcCxhPWUucG9zaXRpb25CdWZmZXIsaT1lLnBvc2l0aW9uRnJhY3RCdWZmZXIsYz1lLnNlbGVjdGlvbkJ1ZmZlcjtpZih0Lnh8fHQueSlyZXR1cm4gdC54Lmxlbmd0aD9lLnhBdHRyPXtidWZmZXI6cy5idWZmZXIodC54KSxvZmZzZXQ6MCxzdHJpZGU6NCxjb3VudDp0LngubGVuZ3RofTplLnhBdHRyPXtidWZmZXI6dC54LmJ1ZmZlcixvZmZzZXQ6NCp0Lngub2Zmc2V0fHwwLHN0cmlkZTo0Kih0Lnguc3RyaWRlfHwxKSxjb3VudDp0LnguY291bnR9LHQueS5sZW5ndGg/ZS55QXR0cj17YnVmZmVyOnMuYnVmZmVyKHQueSksb2Zmc2V0OjAsc3RyaWRlOjQsY291bnQ6dC55Lmxlbmd0aH06ZS55QXR0cj17YnVmZmVyOnQueS5idWZmZXIsb2Zmc2V0OjQqdC55Lm9mZnNldHx8MCxzdHJpZGU6NCoodC55LnN0cmlkZXx8MSksY291bnQ6dC55LmNvdW50fSxlLmNvdW50PU1hdGgubWF4KGUueEF0dHIuY291bnQsZS55QXR0ci5jb3VudCksdDt0PXAodCwiZmxvYXQ2NCIpO3ZhciB1PWUuY291bnQ9TWF0aC5mbG9vcih0Lmxlbmd0aC8yKSxoPWUuYm91bmRzPXU/byh0LDIpOm51bGw7aWYoci5yYW5nZXx8ZS5yYW5nZXx8KGRlbGV0ZSBlLnJhbmdlLHIucmFuZ2U9aCksci5tYXJrZXJ8fGUubWFya2VyfHwoZGVsZXRlIGUubWFya2VyLHIubWFya2VyPW51bGwpLG4mJighMD09PW58fHU+bik/ZS50cmVlPWwodCx7Ym91bmRzOmh9KTpuJiZuLmxlbmd0aCYmKGUudHJlZT1uKSxlLnRyZWUpe3ZhciBmPXtwcmltaXRpdmU6InBvaW50cyIsdXNhZ2U6InN0YXRpYyIsZGF0YTplLnRyZWUsdHlwZToidWludDMyIn07ZS5lbGVtZW50cz9lLmVsZW1lbnRzKGYpOmUuZWxlbWVudHM9cy5lbGVtZW50cyhmKX1yZXR1cm4gYSh7ZGF0YTpnLmZsb2F0KHQpLHVzYWdlOiJkeW5hbWljIn0pLGkoe2RhdGE6Zy5mcmFjdCh0KSx1c2FnZToiZHluYW1pYyJ9KSxjKHtkYXRhOm5ldyBVaW50OEFycmF5KHUpLHR5cGU6InVpbnQ4Iix1c2FnZToic3RyZWFtIn0pLHR9fSx7bWFya2VyOmZ1bmN0aW9uKGUscixuKXt2YXIgYT1yLmFjdGl2YXRpb247aWYoYS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LmRlc3Ryb3kmJnQuZGVzdHJveSgpfSksYS5sZW5ndGg9MCxlJiYibnVtYmVyIiE9dHlwZW9mIGVbMF0pe2Zvcih2YXIgaT1bXSxvPTAsbD1NYXRoLm1pbihlLmxlbmd0aCxyLmNvdW50KTtvPGw7bysrKXt2YXIgYz10LmFkZE1hcmtlcihlW29dKTtpW2NdfHwoaVtjXT1uZXcgVWludDhBcnJheShyLmNvdW50KSksaVtjXVtvXT0xfWZvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKWlmKGlbdV0pe3ZhciBoPXtkYXRhOmlbdV0sdHlwZToidWludDgiLHVzYWdlOiJzdGF0aWMifTthW3VdP2FbdV0oaCk6YVt1XT1zLmJ1ZmZlcihoKSxhW3VdLmRhdGE9aVt1XX19ZWxzZXthW3QuYWRkTWFya2VyKGUpXT0hMH1yZXR1cm4gZX0scmFuZ2U6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUuYm91bmRzO2lmKG4pcmV0dXJuIHR8fCh0PW4pLGUuc2NhbGU9WzEvKHRbMl0tdFswXSksMS8odFszXS10WzFdKV0sZS50cmFuc2xhdGU9Wy10WzBdLC10WzFdXSxlLnNjYWxlRnJhY3Q9Zy5mcmFjdChlLnNjYWxlKSxlLnRyYW5zbGF0ZUZyYWN0PWcuZnJhY3QoZS50cmFuc2xhdGUpLHR9LHZpZXdwb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB2KHR8fFtpLmRyYXdpbmdCdWZmZXJXaWR0aCxpLmRyYXdpbmdCdWZmZXJIZWlnaHRdKX19XSkseCl7dmFyIF89bix3PV8uY291bnQsaz1fLnNpemUsVD1fLmJvcmRlclNpemUsTT1fLnNpemVCdWZmZXIsQT1uZXcgVWludDhBcnJheSgyKncpO2lmKGsubGVuZ3RofHxULmxlbmd0aClmb3IodmFyIFM9MDtTPHc7UysrKUFbMipTXT1NYXRoLnJvdW5kKDI1NSoobnVsbD09a1tTXT9rOmtbU10pL3UpLEFbMipTKzFdPU1hdGgucm91bmQoMjU1KihudWxsPT1UW1NdP1Q6VFtTXSkvdSk7TSh7ZGF0YTpBLHVzYWdlOiJkeW5hbWljIn0pfWlmKGIpe3ZhciBFLEw9bixDPUwuY291bnQsUD1MLmNvbG9yLE89TC5ib3JkZXJDb2xvcix6PUwuY29sb3JCdWZmZXI7aWYodC50b29NYW55Q29sb3JzKXtpZihQLmxlbmd0aHx8Ty5sZW5ndGgpe0U9bmV3IFVpbnQ4QXJyYXkoOCpDKTtmb3IodmFyIEk9MDtJPEM7SSsrKXt2YXIgRD1QW0ldO0VbOCpJXT1tWzQqRF0sRVs4KkkrMV09bVs0KkQrMV0sRVs4KkkrMl09bVs0KkQrMl0sRVs4KkkrM109bVs0KkQrM107dmFyIFI9T1tJXTtFWzgqSSs0XT1tWzQqUl0sRVs4KkkrNV09bVs0KlIrMV0sRVs4KkkrNl09bVs0KlIrMl0sRVs4KkkrN109bVs0KlIrM119fX1lbHNlIGlmKFAubGVuZ3RofHxPLmxlbmd0aCl7RT1uZXcgVWludDhBcnJheSg0KkMrMik7Zm9yKHZhciBGPTA7RjxDO0YrKyludWxsIT1QW0ZdJiYoRVs0KkZdPVBbRl0lZCxFWzQqRisxXT1NYXRoLmZsb29yKFBbRl0vZCkpLG51bGwhPU9bRl0mJihFWzQqRisyXT1PW0ZdJWQsRVs0KkYrM109TWF0aC5mbG9vcihPW0ZdL2QpKX16KHtkYXRhOkV8fG5ldyBVaW50OEFycmF5KDApLHR5cGU6InVpbnQ4Iix1c2FnZToiZHluYW1pYyJ9KX1yZXR1cm4gbn0pfX0seS5wcm90b3R5cGUuYWRkTWFya2VyPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5tYXJrZXJUZXh0dXJlcyxuPXRoaXMucmVnbCxhPXRoaXMubWFya2VyQ2FjaGUsaT1udWxsPT10PzA6YS5pbmRleE9mKHQpO2lmKGk+PTApcmV0dXJuIGk7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSllPXQ7ZWxzZXtlPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IodmFyIG89MCxzPXQubGVuZ3RoO288cztvKyspZVtvXT0yNTUqdFtvXX12YXIgbD1NYXRoLmZsb29yKE1hdGguc3FydChlLmxlbmd0aCkpO3JldHVybiBpPXIubGVuZ3RoLGEucHVzaCh0KSxyLnB1c2gobi50ZXh0dXJlKHtjaGFubmVsczoxLGRhdGE6ZSxyYWRpdXM6bCxtYWc6ImxpbmVhciIsbWluOiJsaW5lYXIifSkpLGl9LHkucHJvdG90eXBlLnVwZGF0ZUNvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFsZXR0ZUlkcyxyPXRoaXMucGFsZXR0ZSxuPXRoaXMubWF4Q29sb3JzO0FycmF5LmlzQXJyYXkodCl8fCh0PVt0XSk7dmFyIGE9W107aWYoIm51bWJlciI9PXR5cGVvZiB0WzBdKXt2YXIgbz1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCs9NClvLnB1c2godC5zbGljZShsLGwrNCkpO2Vsc2UgZm9yKHZhciBjPTA7Yzx0Lmxlbmd0aDtjKz00KW8ucHVzaCh0LnN1YmFycmF5KGMsYys0KSk7dD1vfWZvcih2YXIgdT0wO3U8dC5sZW5ndGg7dSsrKXt2YXIgaD10W3VdO2g9aShoLCJ1aW50OCIpO3ZhciBmPXMoaCwhMSk7aWYobnVsbD09ZVtmXSl7dmFyIHA9ci5sZW5ndGg7ZVtmXT1NYXRoLmZsb29yKHAvNCkscltwXT1oWzBdLHJbcCsxXT1oWzFdLHJbcCsyXT1oWzJdLHJbcCszXT1oWzNdfWFbdV09ZVtmXX1yZXR1cm4hdGhpcy50b29NYW55Q29sb3JzJiZyLmxlbmd0aD40Km4mJih0aGlzLnRvb01hbnlDb2xvcnM9ITApLHRoaXMudXBkYXRlUGFsZXR0ZShyKSwxPT09YS5sZW5ndGg/YVswXTphfSx5LnByb3RvdHlwZS51cGRhdGVQYWxldHRlPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLnRvb01hbnlDb2xvcnMpe3ZhciBlPXRoaXMubWF4Q29sb3JzLHI9dGhpcy5wYWxldHRlVGV4dHVyZSxuPU1hdGguY2VpbCguMjUqdC5sZW5ndGgvZSk7aWYobj4xKWZvcih2YXIgYT0uMjUqKHQ9dC5zbGljZSgpKS5sZW5ndGglZTthPG4qZTthKyspdC5wdXNoKDAsMCwwLDApO3IuaGVpZ2h0PG4mJnIucmVzaXplKGUsbiksci5zdWJpbWFnZSh7d2lkdGg6TWF0aC5taW4oLjI1KnQubGVuZ3RoLGUpLGhlaWdodDpuLGRhdGE6dH0sMCwwKX19LHkucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnNpemVCdWZmZXIuZGVzdHJveSgpLHQucG9zaXRpb25CdWZmZXIuZGVzdHJveSgpLHQucG9zaXRpb25GcmFjdEJ1ZmZlci5kZXN0cm95KCksdC5jb2xvckJ1ZmZlci5kZXN0cm95KCksdC5hY3RpdmF0aW9uLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuZGVzdHJveSYmdC5kZXN0cm95KCl9KSx0LnNlbGVjdGlvbkJ1ZmZlci5kZXN0cm95KCksdC5lbGVtZW50cyYmdC5lbGVtZW50cy5kZXN0cm95KCl9KSx0aGlzLmdyb3Vwcy5sZW5ndGg9MCx0aGlzLnBhbGV0dGVUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLm1hcmtlclRleHR1cmVzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuZGVzdHJveSYmdC5kZXN0cm95KCl9KSx0aGlzfTt2YXIgeD10KCJvYmplY3QtYXNzaWduIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IG0odCxlKSxuPXIucmVuZGVyLmJpbmQocik7cmV0dXJuIHgobix7cmVuZGVyOm4sdXBkYXRlOnIudXBkYXRlLmJpbmQociksZHJhdzpyLmRyYXcuYmluZChyKSxkZXN0cm95OnIuZGVzdHJveS5iaW5kKHIpLHJlZ2w6ci5yZWdsLGdsOnIuZ2wsY2FudmFzOnIuZ2wuY2FudmFzLGdyb3VwczpyLmdyb3VwcyxtYXJrZXJzOnIubWFya2VyQ2FjaGUscGFsZXR0ZTpyLnBhbGV0dGV9KSxufX0seyJhcnJheS1ib3VuZHMiOjY4LCJjb2xvci1pZCI6MTIwLCJjb2xvci1ub3JtYWxpemUiOjEyMiwiZmxhdHRlbi12ZXJ0ZXgtZGF0YSI6MjMwLGdsc2xpZnk6NDExLCJpcy1pZXhwbG9yZXIiOjQyMSwib2JqZWN0LWFzc2lnbiI6NDU2LCJwYXJzZS1yZWN0Ijo0NjEsInBpY2stYnktYWxpYXMiOjQ2NywicG9pbnQtY2x1c3RlciI6NDcxLCJ0by1mbG9hdDMyIjo1MzcsInVwZGF0ZS1kaWZmIjo1NDh9XSw1MDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicmVnbC1zY2F0dGVyMmQiKSxhPXQoInBpY2stYnktYWxpYXMiKSxpPXQoImFycmF5LWJvdW5kcyIpLG89dCgicmFmIikscz10KCJhcnJheS1yYW5nZSIpLGw9dCgicGFyc2UtcmVjdCIpLGM9dCgiZmxhdHRlbi12ZXJ0ZXgtZGF0YSIpO2Z1bmN0aW9uIHUodCxlKXtpZighKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1cm4gbmV3IHUodCxlKTt0aGlzLnRyYWNlcz1bXSx0aGlzLnBhc3Nlcz17fSx0aGlzLnJlZ2w9dCx0aGlzLnNjYXR0ZXI9bih0KSx0aGlzLmNhbnZhcz10aGlzLnNjYXR0ZXIuY2FudmFzfWZ1bmN0aW9uIGgodCxlLHIpe3JldHVybihudWxsIT10LmlkP3QuaWQ6dCk8PDE2fCgyNTUmZSk8PDh8MjU1JnJ9ZnVuY3Rpb24gZih0LGUscil7dmFyIG4sYSxpLG8scz10W2VdLGw9dFtyXTtyZXR1cm4gcy5sZW5ndGg+Mj8oc1swXSxzWzJdLG49c1sxXSxhPXNbM10pOnMubGVuZ3RoPyhuPXNbMF0sYT1zWzFdKToocy54LG49cy55LHMueCtzLndpZHRoLGE9cy55K3MuaGVpZ2h0KSxsLmxlbmd0aD4yPyhpPWxbMF0sbz1sWzJdLGxbMV0sbFszXSk6bC5sZW5ndGg/KGk9bFswXSxvPWxbMV0pOihpPWwueCxsLnksbz1sLngrbC53aWR0aCxsLnkrbC5oZWlnaHQpLFtpLG4sbyxhXX1mdW5jdGlvbiBwKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm5bdCx0LHQsdF07aWYoMj09PXQubGVuZ3RoKXJldHVyblt0WzBdLHRbMV0sdFswXSx0WzFdXTt2YXIgZT1sKHQpO3JldHVybltlLngsZS55LGUueCtlLndpZHRoLGUueStlLmhlaWdodF19ZS5leHBvcnRzPXUsdS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcyxyPVtdLG49YXJndW1lbnRzLmxlbmd0aDtuLS07KXJbbl09YXJndW1lbnRzW25dO3JldHVybiByLmxlbmd0aCYmKHQ9dGhpcykudXBkYXRlLmFwcGx5KHQsciksdGhpcy5yZWdsLmF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyP3RoaXMuZHJhdygpOih0aGlzLmRpcnR5P251bGw9PXRoaXMucGxhbm5lZCYmKHRoaXMucGxhbm5lZD1vKGZ1bmN0aW9uKCl7ZS5kcmF3KCksZS5kaXJ0eT0hMCxlLnBsYW5uZWQ9bnVsbH0pKToodGhpcy5kcmF3KCksdGhpcy5kaXJ0eT0hMCxvKGZ1bmN0aW9uKCl7ZS5kaXJ0eT0hMX0pKSx0aGlzKX0sdS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9W10scj1hcmd1bWVudHMubGVuZ3RoO3ItLTspZVtyXT1hcmd1bWVudHNbcl07aWYoZS5sZW5ndGgpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMudXBkYXRlSXRlbShuLGVbbl0pO3RoaXMudHJhY2VzPXRoaXMudHJhY2VzLmZpbHRlcihCb29sZWFuKTtmb3IodmFyIGE9W10saT0wLG89MDtvPHRoaXMudHJhY2VzLmxlbmd0aDtvKyspe2Zvcih2YXIgcz10aGlzLnRyYWNlc1tvXSxsPXRoaXMudHJhY2VzW29dLnBhc3NlcyxjPTA7YzxsLmxlbmd0aDtjKyspYS5wdXNoKHRoaXMucGFzc2VzW2xbY11dKTtzLnBhc3NPZmZzZXQ9aSxpKz1zLnBhc3Nlcy5sZW5ndGh9cmV0dXJuKHQ9dGhpcy5zY2F0dGVyKS51cGRhdGUuYXBwbHkodCxhKSx0aGlzfX0sdS5wcm90b3R5cGUudXBkYXRlSXRlbT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMucmVnbDtpZihudWxsPT09ZSlyZXR1cm4gdGhpcy50cmFjZXNbdF09bnVsbCx0aGlzO2lmKCFlKXJldHVybiB0aGlzO3ZhciBuLG89YShlLHtkYXRhOiJkYXRhIGl0ZW1zIGNvbHVtbnMgcm93cyB2YWx1ZXMgZGltZW5zaW9ucyBzYW1wbGVzIHgiLHNuYXA6InNuYXAgY2x1c3RlciIsc2l6ZToic2l6ZXMgc2l6ZSByYWRpdXMiLGNvbG9yOiJjb2xvcnMgY29sb3IgZmlsbCBmaWxsLWNvbG9yIGZpbGxDb2xvciIsb3BhY2l0eToib3BhY2l0eSBhbHBoYSB0cmFuc3BhcmVuY3kgb3BhcXVlIixib3JkZXJTaXplOiJib3JkZXJTaXplcyBib3JkZXJTaXplIGJvcmRlci1zaXplIGJvcmRlcnNpemUgYm9yZGVyV2lkdGggYm9yZGVyV2lkdGhzIGJvcmRlci13aWR0aCBib3JkZXJ3aWR0aCBzdHJva2Utd2lkdGggc3Ryb2tlV2lkdGggc3Ryb2tld2lkdGggb3V0bGluZSIsYm9yZGVyQ29sb3I6ImJvcmRlckNvbG9ycyBib3JkZXJDb2xvciBib3JkZXJjb2xvciBzdHJva2Ugc3Ryb2tlLWNvbG9yIHN0cm9rZUNvbG9yIixtYXJrZXI6Im1hcmtlcnMgbWFya2VyIHNoYXBlIixyYW5nZToicmFuZ2UgcmFuZ2VzIGRhdGFib3ggZGF0YUJveCIsdmlld3BvcnQ6InZpZXdwb3J0IHZpZXdCb3ggdmlld2JveCIsZG9tYWluOiJkb21haW4gZG9tYWlucyBhcmVhIGFyZWFzIixwYWRkaW5nOiJwYWQgcGFkZGluZyBwYWRkaW5ncyBwYWRzIG1hcmdpbiBtYXJnaW5zIix0cmFuc3Bvc2U6InRyYW5zcG9zZSB0cmFuc3Bvc2VkIixkaWFnb25hbDoiZGlhZ29uYWwgZGlhZyBzaG93RGlhZ29uYWwiLHVwcGVyOiJ1cHBlciB1cCB0b3AgdXBwZXJoYWxmIHVwcGVySGFsZiBzaG93dXBwZXJoYWxmIHNob3dVcHBlciBzaG93VXBwZXJIYWxmIixsb3dlcjoibG93ZXIgbG93IGJvdHRvbSBsb3dlcmhhbGYgbG93ZXJIYWxmIHNob3dsb3dlcmhhbGYgc2hvd0xvd2VySGFsZiBzaG93TG93ZXIifSkscz10aGlzLnRyYWNlc1t0XXx8KHRoaXMudHJhY2VzW3RdPXtpZDp0LGJ1ZmZlcjpyLmJ1ZmZlcih7dXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZsb2F0IixkYXRhOm5ldyBVaW50OEFycmF5fSksY29sb3I6ImJsYWNrIixtYXJrZXI6bnVsbCxzaXplOjEyLGJvcmRlckNvbG9yOiJ0cmFuc3BhcmVudCIsYm9yZGVyU2l6ZToxLHZpZXdwb3J0OmwoW3IuX2dsLmRyYXdpbmdCdWZmZXJXaWR0aCxyLl9nbC5kcmF3aW5nQnVmZmVySGVpZ2h0XSkscGFkZGluZzpbMCwwLDAsMF0sb3BhY2l0eToxLGRpYWdvbmFsOiEwLHVwcGVyOiEwLGxvd2VyOiEwfSk7aWYobnVsbCE9by5jb2xvciYmKHMuY29sb3I9by5jb2xvciksbnVsbCE9by5zaXplJiYocy5zaXplPW8uc2l6ZSksbnVsbCE9by5tYXJrZXImJihzLm1hcmtlcj1vLm1hcmtlciksbnVsbCE9by5ib3JkZXJDb2xvciYmKHMuYm9yZGVyQ29sb3I9by5ib3JkZXJDb2xvciksbnVsbCE9by5ib3JkZXJTaXplJiYocy5ib3JkZXJTaXplPW8uYm9yZGVyU2l6ZSksbnVsbCE9by5vcGFjaXR5JiYocy5vcGFjaXR5PW8ub3BhY2l0eSksby52aWV3cG9ydCYmKHMudmlld3BvcnQ9bChvLnZpZXdwb3J0KSksbnVsbCE9by5kaWFnb25hbCYmKHMuZGlhZ29uYWw9by5kaWFnb25hbCksbnVsbCE9by51cHBlciYmKHMudXBwZXI9by51cHBlciksbnVsbCE9by5sb3dlciYmKHMubG93ZXI9by5sb3dlciksby5kYXRhKXtzLmJ1ZmZlcihjKG8uZGF0YSkpLHMuY29sdW1ucz1vLmRhdGEubGVuZ3RoLHMuY291bnQ9by5kYXRhWzBdLmxlbmd0aCxzLmJvdW5kcz1bXTtmb3IodmFyIHU9MDt1PHMuY29sdW1uczt1Kyspcy5ib3VuZHNbdV09aShvLmRhdGFbdV0sMSl9by5yYW5nZSYmKHMucmFuZ2U9by5yYW5nZSxuPXMucmFuZ2UmJiJudW1iZXIiIT10eXBlb2Ygcy5yYW5nZVswXSksby5kb21haW4mJihzLmRvbWFpbj1vLmRvbWFpbik7dmFyIGQ9ITE7bnVsbCE9by5wYWRkaW5nJiYoQXJyYXkuaXNBcnJheShvLnBhZGRpbmcpJiZvLnBhZGRpbmcubGVuZ3RoPT09cy5jb2x1bW5zJiYibnVtYmVyIj09dHlwZW9mIG8ucGFkZGluZ1tvLnBhZGRpbmcubGVuZ3RoLTFdPyhzLnBhZGRpbmc9by5wYWRkaW5nLm1hcChwKSxkPSEwKTpzLnBhZGRpbmc9cChvLnBhZGRpbmcpKTt2YXIgZz1zLmNvbHVtbnMsdj1zLmNvdW50LG09cy52aWV3cG9ydC53aWR0aCx5PXMudmlld3BvcnQuaGVpZ2h0LHg9cy52aWV3cG9ydC54LGI9cy52aWV3cG9ydC55LF89bS9nLHc9eS9nO3MucGFzc2VzPVtdO2Zvcih2YXIgaz0wO2s8ZztrKyspZm9yKHZhciBUPTA7VDxnO1QrKylpZigocy5kaWFnb25hbHx8VCE9PWspJiYocy51cHBlcnx8IShrPlQpKSYmKHMubG93ZXJ8fCEoazxUKSkpe3ZhciBNPWgocy5pZCxrLFQpLEE9dGhpcy5wYXNzZXNbTV18fCh0aGlzLnBhc3Nlc1tNXT17fSk7aWYoby5kYXRhJiYoby50cmFuc3Bvc2U/QS5wb3NpdGlvbnM9e3g6e2J1ZmZlcjpzLmJ1ZmZlcixvZmZzZXQ6VCxjb3VudDp2LHN0cmlkZTpnfSx5OntidWZmZXI6cy5idWZmZXIsb2Zmc2V0OmssY291bnQ6dixzdHJpZGU6Z319OkEucG9zaXRpb25zPXt4OntidWZmZXI6cy5idWZmZXIsb2Zmc2V0OlQqdixjb3VudDp2fSx5OntidWZmZXI6cy5idWZmZXIsb2Zmc2V0Omsqdixjb3VudDp2fX0sQS5ib3VuZHM9ZihzLmJvdW5kcyxrLFQpKSxvLmRvbWFpbnx8by52aWV3cG9ydHx8by5kYXRhKXt2YXIgUz1kP2Yocy5wYWRkaW5nLGssVCk6cy5wYWRkaW5nO2lmKHMuZG9tYWluKXt2YXIgRT1mKHMuZG9tYWluLGssVCksTD1FWzBdLEM9RVsxXSxQPUVbMl0sTz1FWzNdO0Eudmlld3BvcnQ9W3grTCptK1NbMF0sYitDKnkrU1sxXSx4K1AqbS1TWzJdLGIrTyp5LVNbM11dfWVsc2UgQS52aWV3cG9ydD1beCtUKl8rXypTWzBdLGIrayp3K3cqU1sxXSx4KyhUKzEpKl8tXypTWzJdLGIrKGsrMSkqdy13KlNbM11dfW8uY29sb3ImJihBLmNvbG9yPXMuY29sb3IpLG8uc2l6ZSYmKEEuc2l6ZT1zLnNpemUpLG8ubWFya2VyJiYoQS5tYXJrZXI9cy5tYXJrZXIpLG8uYm9yZGVyU2l6ZSYmKEEuYm9yZGVyU2l6ZT1zLmJvcmRlclNpemUpLG8uYm9yZGVyQ29sb3ImJihBLmJvcmRlckNvbG9yPXMuYm9yZGVyQ29sb3IpLG8ub3BhY2l0eSYmKEEub3BhY2l0eT1zLm9wYWNpdHkpLG8ucmFuZ2UmJihBLnJhbmdlPW4/ZihzLnJhbmdlLGssVCk6cy5yYW5nZXx8QS5ib3VuZHMpLHMucGFzc2VzLnB1c2goTSl9cmV0dXJuIHRoaXN9LHUucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7ci0tOyllW3JdPWFyZ3VtZW50c1tyXTtpZihlLmxlbmd0aCl7Zm9yKHZhciBuPVtdLGE9MDthPGUubGVuZ3RoO2ErKylpZigibnVtYmVyIj09dHlwZW9mIGVbYV0pe3ZhciBpPXRoaXMudHJhY2VzW2VbYV1dLG89aS5wYXNzZXMsbD1pLnBhc3NPZmZzZXQ7bi5wdXNoLmFwcGx5KG4scyhsLGwrby5sZW5ndGgpKX1lbHNlIGlmKGVbYV0ubGVuZ3RoKXt2YXIgYz1lW2FdLHU9dGhpcy50cmFjZXNbYV0saD11LnBhc3NlcyxmPXUucGFzc09mZnNldDtoPWgubWFwKGZ1bmN0aW9uKHQsZSl7bltmK2VdPWN9KX0odD10aGlzLnNjYXR0ZXIpLmRyYXcuYXBwbHkodCxuKX1lbHNlIHRoaXMuc2NhdHRlci5kcmF3KCk7cmV0dXJuIHRoaXN9LHUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFjZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0LmJ1ZmZlciYmdC5idWZmZXIuZGVzdHJveSYmdC5idWZmZXIuZGVzdHJveSgpfSksdGhpcy50cmFjZXM9bnVsbCx0aGlzLnBhc3Nlcz1udWxsLHRoaXMuc2NhdHRlci5kZXN0cm95KCksdGhpc319LHsiYXJyYXktYm91bmRzIjo2OCwiYXJyYXktcmFuZ2UiOjY5LCJmbGF0dGVuLXZlcnRleC1kYXRhIjoyMzAsInBhcnNlLXJlY3QiOjQ2MSwicGljay1ieS1hbGlhcyI6NDY3LHJhZjo0ODYsInJlZ2wtc2NhdHRlcjJkIjo0OTl9XSw1MDE6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbixhO249dGhpcyxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuaWQ9VisrLHRoaXMudHlwZT10LHRoaXMuZGF0YT1lfWZ1bmN0aW9uIGUodCl7cmV0dXJuIlsiK2Z1bmN0aW9uIHQoZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciByPWUuY2hhckF0KDApLG49ZS5jaGFyQXQoZS5sZW5ndGgtMSk7aWYoMTxlLmxlbmd0aCYmcj09PW4mJignIic9PT1yfHwiJyI9PT1yKSlyZXR1cm5bJyInK2Uuc3Vic3RyKDEsZS5sZW5ndGgtMikucmVwbGFjZSgvXFwvZywiXFxcXCIpLnJlcGxhY2UoLyIvZywnXFwiJykrJyInXTtpZihyPS9cWyhmYWxzZXx0cnVlfG51bGx8XGQrfCdbXiddKid8IlteIl0qIilcXS8uZXhlYyhlKSlyZXR1cm4gdChlLnN1YnN0cigwLHIuaW5kZXgpKS5jb25jYXQodChyWzFdKSkuY29uY2F0KHQoZS5zdWJzdHIoci5pbmRleCtyWzBdLmxlbmd0aCkpKTtpZigxPT09KHI9ZS5zcGxpdCgiLiIpKS5sZW5ndGgpcmV0dXJuWyciJytlLnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ107Zm9yKGU9W10sbj0wO248ci5sZW5ndGg7KytuKWU9ZS5jb25jYXQodChyW25dKSk7cmV0dXJuIGV9KHQpLmpvaW4oIl1bIikrIl0ifWZ1bmN0aW9uIHIodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoKTp0fWZ1bmN0aW9uIG4odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dH1mdW5jdGlvbiBhKHQpe3ZhciBlLGEsaSxvLHM9dHx8e307dD17fTt2YXIgbD1bXSxjPVtdLHU9InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3c/MTp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxoPSExLGY9ZnVuY3Rpb24odCl7fSxwPWZ1bmN0aW9uKCl7fTtpZigic3RyaW5nIj09dHlwZW9mIHM/ZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMpOiJvYmplY3QiPT10eXBlb2YgcyYmKCJzdHJpbmciPT10eXBlb2Ygcy5ub2RlTmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHMuYXBwZW5kQ2hpbGQmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLmdldEJvdW5kaW5nQ2xpZW50UmVjdD9lPXM6ImZ1bmN0aW9uIj09dHlwZW9mIHMuZHJhd0FycmF5c3x8ImZ1bmN0aW9uIj09dHlwZW9mIHMuZHJhd0VsZW1lbnRzP2k9KG89cykuY2FudmFzOigiZ2wiaW4gcz9vPXMuZ2w6ImNhbnZhcyJpbiBzP2k9bihzLmNhbnZhcyk6ImNvbnRhaW5lciJpbiBzJiYoYT1uKHMuY29udGFpbmVyKSksImF0dHJpYnV0ZXMiaW4gcyYmKHQ9cy5hdHRyaWJ1dGVzKSwiZXh0ZW5zaW9ucyJpbiBzJiYobD1yKHMuZXh0ZW5zaW9ucykpLCJvcHRpb25hbEV4dGVuc2lvbnMiaW4gcyYmKGM9cihzLm9wdGlvbmFsRXh0ZW5zaW9ucykpLCJvbkRvbmUiaW4gcyYmKGY9cy5vbkRvbmUpLCJwcm9maWxlImluIHMmJihoPSEhcy5wcm9maWxlKSwicGl4ZWxSYXRpbyJpbiBzJiYodT0rcy5waXhlbFJhdGlvKSkpLGUmJigiY2FudmFzIj09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9pPWU6YT1lKSwhbyl7aWYoIWkpe2lmKCEoZT1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe3ZhciBlPXdpbmRvdy5pbm5lcldpZHRoLG49d2luZG93LmlubmVySGVpZ2h0O3QhPT1kb2N1bWVudC5ib2R5JiYoZT0obj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS5yaWdodC1uLmxlZnQsbj1uLmJvdHRvbS1uLnRvcCksYS53aWR0aD1yKmUsYS5oZWlnaHQ9cipuLGooYS5zdHlsZSx7d2lkdGg6ZSsicHgiLGhlaWdodDpuKyJweCJ9KX12YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtyZXR1cm4gaihhLnN0eWxlLHtib3JkZXI6MCxtYXJnaW46MCxwYWRkaW5nOjAsdG9wOjAsbGVmdDowfSksdC5hcHBlbmRDaGlsZChhKSx0PT09ZG9jdW1lbnQuYm9keSYmKGEuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixqKHQuc3R5bGUse21hcmdpbjowLHBhZGRpbmc6MH0pKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixuLCExKSxuKCkse2NhbnZhczphLG9uRGVzdHJveTpmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLG4pLHQucmVtb3ZlQ2hpbGQoYSl9fX0oYXx8ZG9jdW1lbnQuYm9keSwwLHUpKSlyZXR1cm4gbnVsbDtpPWUuY2FudmFzLHA9ZS5vbkRlc3Ryb3l9bz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIocil7dHJ5e3JldHVybiB0LmdldENvbnRleHQocixlKX1jYXRjaCh0KXtyZXR1cm4gbnVsbH19cmV0dXJuIHIoIndlYmdsIil8fHIoImV4cGVyaW1lbnRhbC13ZWJnbCIpfHxyKCJ3ZWJnbC1leHBlcmltZW50YWwiKX0oaSx0KX1yZXR1cm4gbz97Z2w6byxjYW52YXM6aSxjb250YWluZXI6YSxleHRlbnNpb25zOmwsb3B0aW9uYWxFeHRlbnNpb25zOmMscGl4ZWxSYXRpbzp1LHByb2ZpbGU6aCxvbkRvbmU6ZixvbkRlc3Ryb3k6cH06KHAoKSxmKCJ3ZWJnbCBub3Qgc3VwcG9ydGVkLCB0cnkgdXBncmFkaW5nIHlvdXIgYnJvd3NlciBvciBncmFwaGljcyBkcml2ZXJzIGh0dHA6Ly9nZXQud2ViZ2wub3JnIiksbnVsbCl9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgcj1BcnJheSh0KSxuPTA7bjx0OysrbilyW25dPWUobik7cmV0dXJuIHJ9ZnVuY3Rpb24gbyh0KXt2YXIgZSxyO3JldHVybiBlPSg2NTUzNTx0KTw8NCxlfD1yPSgyNTU8KHQ+Pj49ZSkpPDwzLChlfD1yPSgxNTwodD4+Pj1yKSk8PDIpfChyPSgzPCh0Pj4+PXIpKTw8MSl8dD4+PnI+PjF9ZnVuY3Rpb24gcygpe2Z1bmN0aW9uIHQodCl7dDp7Zm9yKHZhciBlPTE2OzI2ODQzNTQ1Nj49ZTtlKj0xNilpZih0PD1lKXt0PWU7YnJlYWsgdH10PTB9cmV0dXJuIDA8KGU9cltvKHQpPj4yXSkubGVuZ3RoP2UucG9wKCk6bmV3IEFycmF5QnVmZmVyKHQpfWZ1bmN0aW9uIGUodCl7cltvKHQuYnl0ZUxlbmd0aCk+PjJdLnB1c2godCl9dmFyIHI9aSg4LGZ1bmN0aW9uKCl7cmV0dXJuW119KTtyZXR1cm57YWxsb2M6dCxmcmVlOmUsYWxsb2NUeXBlOmZ1bmN0aW9uKGUscil7dmFyIG49bnVsbDtzd2l0Y2goZSl7Y2FzZSA1MTIwOm49bmV3IEludDhBcnJheSh0KHIpLDAscik7YnJlYWs7Y2FzZSA1MTIxOm49bmV3IFVpbnQ4QXJyYXkodChyKSwwLHIpO2JyZWFrO2Nhc2UgNTEyMjpuPW5ldyBJbnQxNkFycmF5KHQoMipyKSwwLHIpO2JyZWFrO2Nhc2UgNTEyMzpuPW5ldyBVaW50MTZBcnJheSh0KDIqciksMCxyKTticmVhaztjYXNlIDUxMjQ6bj1uZXcgSW50MzJBcnJheSh0KDQqciksMCxyKTticmVhaztjYXNlIDUxMjU6bj1uZXcgVWludDMyQXJyYXkodCg0KnIpLDAscik7YnJlYWs7Y2FzZSA1MTI2Om49bmV3IEZsb2F0MzJBcnJheSh0KDQqciksMCxyKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfXJldHVybiBuLmxlbmd0aCE9PXI/bi5zdWJhcnJheSgwLHIpOm59LGZyZWVUeXBlOmZ1bmN0aW9uKHQpe2UodC5idWZmZXIpfX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4hIXQmJiJvYmplY3QiPT10eXBlb2YgdCYmQXJyYXkuaXNBcnJheSh0LnNoYXBlKSYmQXJyYXkuaXNBcnJheSh0LnN0cmlkZSkmJiJudW1iZXIiPT10eXBlb2YgdC5vZmZzZXQmJnQuc2hhcGUubGVuZ3RoPT09dC5zdHJpZGUubGVuZ3RoJiYoQXJyYXkuaXNBcnJheSh0LmRhdGEpfHxXKHQuZGF0YSkpfWZ1bmN0aW9uIGModCxlLHIsbixhLGkpe2Zvcih2YXIgbz0wO288ZTsrK28pZm9yKHZhciBzPXRbb10sbD0wO2w8cjsrK2wpZm9yKHZhciBjPXNbbF0sdT0wO3U8bjsrK3UpYVtpKytdPWNbdV19ZnVuY3Rpb24gdSh0KXtyZXR1cm4gMHxKW09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KV19ZnVuY3Rpb24gaCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KytyKXRbcl09ZVtyXX1mdW5jdGlvbiBmKHQsZSxyLG4sYSxpLG8pe2Zvcih2YXIgcz0wLGw9MDtsPHI7KytsKWZvcih2YXIgYz0wO2M8bjsrK2MpdFtzKytdPWVbYSpsK2kqYytvXX1mdW5jdGlvbiBwKHQsZSxyLG4pe2Z1bmN0aW9uIGEoZSl7dGhpcy5pZD1jKyssdGhpcy5idWZmZXI9dC5jcmVhdGVCdWZmZXIoKSx0aGlzLnR5cGU9ZSx0aGlzLnVzYWdlPTM1MDQ0LHRoaXMuYnl0ZUxlbmd0aD0wLHRoaXMuZGltZW5zaW9uPTEsdGhpcy5kdHlwZT01MTIxLHRoaXMucGVyc2lzdGVudERhdGE9bnVsbCxyLnByb2ZpbGUmJih0aGlzLnN0YXRzPXtzaXplOjB9KX1mdW5jdGlvbiBpKGUscixuKXtlLmJ5dGVMZW5ndGg9ci5ieXRlTGVuZ3RoLHQuYnVmZmVyRGF0YShlLnR5cGUscixuKX1mdW5jdGlvbiBvKHQsZSxyLG4sYSxvKXtpZih0LnVzYWdlPXIsQXJyYXkuaXNBcnJheShlKSl7aWYodC5kdHlwZT1ufHw1MTI2LDA8ZS5sZW5ndGgpaWYoQXJyYXkuaXNBcnJheShlWzBdKSl7YT10dChlKTtmb3IodmFyIHM9bj0xO3M8YS5sZW5ndGg7KytzKW4qPWFbc107dC5kaW1lbnNpb249bixpKHQsZT0kKGUsYSx0LmR0eXBlKSxyKSxvP3QucGVyc2lzdGVudERhdGE9ZTpHLmZyZWVUeXBlKGUpfWVsc2UibnVtYmVyIj09dHlwZW9mIGVbMF0/KHQuZGltZW5zaW9uPWEsaChhPUcuYWxsb2NUeXBlKHQuZHR5cGUsZS5sZW5ndGgpLGUpLGkodCxhLHIpLG8/dC5wZXJzaXN0ZW50RGF0YT1hOkcuZnJlZVR5cGUoYSkpOlcoZVswXSkmJih0LmRpbWVuc2lvbj1lWzBdLmxlbmd0aCx0LmR0eXBlPW58fHUoZVswXSl8fDUxMjYsaSh0LGU9JChlLFtlLmxlbmd0aCxlWzBdLmxlbmd0aF0sdC5kdHlwZSksciksbz90LnBlcnNpc3RlbnREYXRhPWU6Ry5mcmVlVHlwZShlKSl9ZWxzZSBpZihXKGUpKXQuZHR5cGU9bnx8dShlKSx0LmRpbWVuc2lvbj1hLGkodCxlLHIpLG8mJih0LnBlcnNpc3RlbnREYXRhPW5ldyBVaW50OEFycmF5KG5ldyBVaW50OEFycmF5KGUuYnVmZmVyKSkpO2Vsc2UgaWYobChlKSl7YT1lLnNoYXBlO3ZhciBjPWUuc3RyaWRlLHA9KHM9ZS5vZmZzZXQsMCksZD0wLGc9MCx2PTA7MT09PWEubGVuZ3RoPyhwPWFbMF0sZD0xLGc9Y1swXSx2PTApOjI9PT1hLmxlbmd0aCYmKHA9YVswXSxkPWFbMV0sZz1jWzBdLHY9Y1sxXSksdC5kdHlwZT1ufHx1KGUuZGF0YSl8fDUxMjYsdC5kaW1lbnNpb249ZCxmKGE9Ry5hbGxvY1R5cGUodC5kdHlwZSxwKmQpLGUuZGF0YSxwLGQsZyx2LHMpLGkodCxhLHIpLG8/dC5wZXJzaXN0ZW50RGF0YT1hOkcuZnJlZVR5cGUoYSl9fWZ1bmN0aW9uIHMocil7ZS5idWZmZXJDb3VudC0tO2Zvcih2YXIgYT0wO2E8bi5zdGF0ZS5sZW5ndGg7KythKXt2YXIgaT1uLnN0YXRlW2FdO2kuYnVmZmVyPT09ciYmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGEpLGkuYnVmZmVyPW51bGwpfXQuZGVsZXRlQnVmZmVyKHIuYnVmZmVyKSxyLmJ1ZmZlcj1udWxsLGRlbGV0ZSBwW3IuaWRdfXZhciBjPTAscD17fTthLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dC5iaW5kQnVmZmVyKHRoaXMudHlwZSx0aGlzLmJ1ZmZlcil9LGEucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtzKHRoaXMpfTt2YXIgZD1bXTtyZXR1cm4gci5wcm9maWxlJiYoZS5nZXRUb3RhbEJ1ZmZlclNpemU9ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiBPYmplY3Qua2V5cyhwKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QrPXBbZV0uc3RhdHMuc2l6ZX0pLHR9KSx7Y3JlYXRlOmZ1bmN0aW9uKG4saSxjLGQpe2Z1bmN0aW9uIGcoZSl7dmFyIG49MzUwNDQsYT1udWxsLGk9MCxzPTAsYz0xO3JldHVybiBBcnJheS5pc0FycmF5KGUpfHxXKGUpfHxsKGUpP2E9ZToibnVtYmVyIj09dHlwZW9mIGU/aT0wfGU6ZSYmKCJkYXRhImluIGUmJihhPWUuZGF0YSksInVzYWdlImluIGUmJihuPVFbZS51c2FnZV0pLCJ0eXBlImluIGUmJihzPUtbZS50eXBlXSksImRpbWVuc2lvbiJpbiBlJiYoYz0wfGUuZGltZW5zaW9uKSwibGVuZ3RoImluIGUmJihpPTB8ZS5sZW5ndGgpKSx2LmJpbmQoKSxhP28odixhLG4scyxjLGQpOihpJiZ0LmJ1ZmZlckRhdGEodi50eXBlLGksbiksdi5kdHlwZT1zfHw1MTIxLHYudXNhZ2U9bix2LmRpbWVuc2lvbj1jLHYuYnl0ZUxlbmd0aD1pKSxyLnByb2ZpbGUmJih2LnN0YXRzLnNpemU9di5ieXRlTGVuZ3RoKmV0W3YuZHR5cGVdKSxnfWUuYnVmZmVyQ291bnQrKzt2YXIgdj1uZXcgYShpKTtyZXR1cm4gcFt2LmlkXT12LGN8fGcobiksZy5fcmVnbFR5cGU9ImJ1ZmZlciIsZy5fYnVmZmVyPXYsZy5zdWJkYXRhPWZ1bmN0aW9uKGUscil7dmFyIG4sYT0wfChyfHwwKTtpZih2LmJpbmQoKSxXKGUpKXQuYnVmZmVyU3ViRGF0YSh2LnR5cGUsYSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpe2lmKDA8ZS5sZW5ndGgpaWYoIm51bWJlciI9PXR5cGVvZiBlWzBdKXt2YXIgaT1HLmFsbG9jVHlwZSh2LmR0eXBlLGUubGVuZ3RoKTtoKGksZSksdC5idWZmZXJTdWJEYXRhKHYudHlwZSxhLGkpLEcuZnJlZVR5cGUoaSl9ZWxzZShBcnJheS5pc0FycmF5KGVbMF0pfHxXKGVbMF0pKSYmKG49dHQoZSksaT0kKGUsbix2LmR0eXBlKSx0LmJ1ZmZlclN1YkRhdGEodi50eXBlLGEsaSksRy5mcmVlVHlwZShpKSl9ZWxzZSBpZihsKGUpKXtuPWUuc2hhcGU7dmFyIG89ZS5zdHJpZGUscz1pPTAsYz0wLHA9MDsxPT09bi5sZW5ndGg/KGk9blswXSxzPTEsYz1vWzBdLHA9MCk6Mj09PW4ubGVuZ3RoJiYoaT1uWzBdLHM9blsxXSxjPW9bMF0scD1vWzFdKSxuPUFycmF5LmlzQXJyYXkoZS5kYXRhKT92LmR0eXBlOnUoZS5kYXRhKSxmKG49Ry5hbGxvY1R5cGUobixpKnMpLGUuZGF0YSxpLHMsYyxwLGUub2Zmc2V0KSx0LmJ1ZmZlclN1YkRhdGEodi50eXBlLGEsbiksRy5mcmVlVHlwZShuKX1yZXR1cm4gZ30sci5wcm9maWxlJiYoZy5zdGF0cz12LnN0YXRzKSxnLmRlc3Ryb3k9ZnVuY3Rpb24oKXtzKHYpfSxnfSxjcmVhdGVTdHJlYW06ZnVuY3Rpb24odCxlKXt2YXIgcj1kLnBvcCgpO3JldHVybiByfHwocj1uZXcgYSh0KSksci5iaW5kKCksbyhyLGUsMzUwNDAsMCwxLCExKSxyfSxkZXN0cm95U3RyZWFtOmZ1bmN0aW9uKHQpe2QucHVzaCh0KX0sY2xlYXI6ZnVuY3Rpb24oKXtYKHApLmZvckVhY2gocyksZC5mb3JFYWNoKHMpfSxnZXRCdWZmZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuX2J1ZmZlciBpbnN0YW5jZW9mIGE/dC5fYnVmZmVyOm51bGx9LHJlc3RvcmU6ZnVuY3Rpb24oKXtYKHApLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5idWZmZXI9dC5jcmVhdGVCdWZmZXIoKSx0LmJpbmRCdWZmZXIoZS50eXBlLGUuYnVmZmVyKSx0LmJ1ZmZlckRhdGEoZS50eXBlLGUucGVyc2lzdGVudERhdGF8fGUuYnl0ZUxlbmd0aCxlLnVzYWdlKX0pfSxfaW5pdEJ1ZmZlcjpvfX1mdW5jdGlvbiBkKHQsZSxyLG4pe2Z1bmN0aW9uIGEodCl7dGhpcy5pZD1jKyssc1t0aGlzLmlkXT10aGlzLHRoaXMuYnVmZmVyPXQsdGhpcy5wcmltVHlwZT00LHRoaXMudHlwZT10aGlzLnZlcnRDb3VudD0wfWZ1bmN0aW9uIGkobixhLGksbyxzLGMsdSl7aWYobi5idWZmZXIuYmluZCgpLGEpe3ZhciBoPXU7dXx8VyhhKSYmKCFsKGEpfHxXKGEuZGF0YSkpfHwoaD1lLm9lc19lbGVtZW50X2luZGV4X3VpbnQ/NTEyNTo1MTIzKSxyLl9pbml0QnVmZmVyKG4uYnVmZmVyLGEsaSxoLDMpfWVsc2UgdC5idWZmZXJEYXRhKDM0OTYzLGMsaSksbi5idWZmZXIuZHR5cGU9aHx8NTEyMSxuLmJ1ZmZlci51c2FnZT1pLG4uYnVmZmVyLmRpbWVuc2lvbj0zLG4uYnVmZmVyLmJ5dGVMZW5ndGg9YztpZihoPXUsIXUpe3N3aXRjaChuLmJ1ZmZlci5kdHlwZSl7Y2FzZSA1MTIxOmNhc2UgNTEyMDpoPTUxMjE7YnJlYWs7Y2FzZSA1MTIzOmNhc2UgNTEyMjpoPTUxMjM7YnJlYWs7Y2FzZSA1MTI1OmNhc2UgNTEyNDpoPTUxMjV9bi5idWZmZXIuZHR5cGU9aH1uLnR5cGU9aCwwPihhPXMpJiYoYT1uLmJ1ZmZlci5ieXRlTGVuZ3RoLDUxMjM9PT1oP2E+Pj0xOjUxMjU9PT1oJiYoYT4+PTIpKSxuLnZlcnRDb3VudD1hLGE9bywwPm8mJihhPTQsMT09PShvPW4uYnVmZmVyLmRpbWVuc2lvbikmJihhPTApLDI9PT1vJiYoYT0xKSwzPT09byYmKGE9NCkpLG4ucHJpbVR5cGU9YX1mdW5jdGlvbiBvKHQpe24uZWxlbWVudHNDb3VudC0tLGRlbGV0ZSBzW3QuaWRdLHQuYnVmZmVyLmRlc3Ryb3koKSx0LmJ1ZmZlcj1udWxsfXZhciBzPXt9LGM9MCx1PXt1aW50ODo1MTIxLHVpbnQxNjo1MTIzfTtlLm9lc19lbGVtZW50X2luZGV4X3VpbnQmJih1LnVpbnQzMj01MTI1KSxhLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5idWZmZXIuYmluZCgpfTt2YXIgaD1bXTtyZXR1cm57Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcyh0KXtpZih0KWlmKCJudW1iZXIiPT10eXBlb2YgdCljKHQpLGgucHJpbVR5cGU9NCxoLnZlcnRDb3VudD0wfHQsaC50eXBlPTUxMjE7ZWxzZXt2YXIgZT1udWxsLHI9MzUwNDQsbj0tMSxhPS0xLG89MCxmPTA7QXJyYXkuaXNBcnJheSh0KXx8Vyh0KXx8bCh0KT9lPXQ6KCJkYXRhImluIHQmJihlPXQuZGF0YSksInVzYWdlImluIHQmJihyPVFbdC51c2FnZV0pLCJwcmltaXRpdmUiaW4gdCYmKG49cnRbdC5wcmltaXRpdmVdKSwiY291bnQiaW4gdCYmKGE9MHx0LmNvdW50KSwidHlwZSJpbiB0JiYoZj11W3QudHlwZV0pLCJsZW5ndGgiaW4gdD9vPTB8dC5sZW5ndGg6KG89YSw1MTIzPT09Znx8NTEyMj09PWY/byo9Mjo1MTI1IT09ZiYmNTEyNCE9PWZ8fChvKj00KSkpLGkoaCxlLHIsbixhLG8sZil9ZWxzZSBjKCksaC5wcmltVHlwZT00LGgudmVydENvdW50PTAsaC50eXBlPTUxMjE7cmV0dXJuIHN9dmFyIGM9ci5jcmVhdGUobnVsbCwzNDk2MywhMCksaD1uZXcgYShjLl9idWZmZXIpO3JldHVybiBuLmVsZW1lbnRzQ291bnQrKyxzKHQpLHMuX3JlZ2xUeXBlPSJlbGVtZW50cyIscy5fZWxlbWVudHM9aCxzLnN1YmRhdGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYy5zdWJkYXRhKHQsZSksc30scy5kZXN0cm95PWZ1bmN0aW9uKCl7byhoKX0sc30sY3JlYXRlU3RyZWFtOmZ1bmN0aW9uKHQpe3ZhciBlPWgucG9wKCk7cmV0dXJuIGV8fChlPW5ldyBhKHIuY3JlYXRlKG51bGwsMzQ5NjMsITAsITEpLl9idWZmZXIpKSxpKGUsdCwzNTA0MCwtMSwtMSwwLDApLGV9LGRlc3Ryb3lTdHJlYW06ZnVuY3Rpb24odCl7aC5wdXNoKHQpfSxnZXRFbGVtZW50czpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5fZWxlbWVudHMgaW5zdGFuY2VvZiBhP3QuX2VsZW1lbnRzOm51bGx9LGNsZWFyOmZ1bmN0aW9uKCl7WChzKS5mb3JFYWNoKG8pfX19ZnVuY3Rpb24gZyh0KXtmb3IodmFyIGU9Ry5hbGxvY1R5cGUoNTEyMyx0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7KytyKWlmKGlzTmFOKHRbcl0pKWVbcl09NjU1MzU7ZWxzZSBpZigxLzA9PT10W3JdKWVbcl09MzE3NDQ7ZWxzZSBpZigtMS8wPT09dFtyXSllW3JdPTY0NTEyO2Vsc2V7bnRbMF09dFtyXTt2YXIgbj0oaT1hdFswXSk+Pj4zMTw8MTUsYT0oaTw8MT4+PjI0KS0xMjcsaT1pPj4xMyYxMDIzO2Vbcl09LTI0PmE/bjotMTQ+YT9uKyhpKzEwMjQ+Pi0xNC1hKToxNTxhP24rMzE3NDQ6bisoYSsxNTw8MTApK2l9cmV0dXJuIGV9ZnVuY3Rpb24gdih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KXx8Vyh0KX1mdW5jdGlvbiBtKHQpe3JldHVybiJbb2JqZWN0ICIrdCsiXSJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmKDA9PT10Lmxlbmd0aHx8Im51bWJlciI9PXR5cGVvZiB0WzBdKX1mdW5jdGlvbiB4KHQpe3JldHVybiEoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aHx8IXYodFswXSkpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBfKHQpe2lmKCF0KXJldHVybiExO3ZhciBlPWIodCk7cmV0dXJuIDA8PXB0LmluZGV4T2YoZSl8fCh5KHQpfHx4KHQpfHxsKHQpKX1mdW5jdGlvbiB3KHQsZSl7MzYxOTM9PT10LnR5cGU/KHQuZGF0YT1nKGUpLEcuZnJlZVR5cGUoZSkpOnQuZGF0YT1lfWZ1bmN0aW9uIGsodCxlLHIsbixhLGkpe2lmKHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBndFt0XT9ndFt0XTpzdFt0XSpkdFtlXSxpJiYodCo9NiksYSl7Zm9yKG49MDsxPD1yOyluKz10KnIqcixyLz0yO3JldHVybiBufXJldHVybiB0KnIqbn1mdW5jdGlvbiBUKHQsZSxyLG4sYSxpLG8pe2Z1bmN0aW9uIHMoKXt0aGlzLmZvcm1hdD10aGlzLmludGVybmFsZm9ybWF0PTY0MDgsdGhpcy50eXBlPTUxMjEsdGhpcy5mbGlwWT10aGlzLnByZW11bHRpcGx5QWxwaGE9dGhpcy5jb21wcmVzc2VkPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTEsdGhpcy5jb2xvclNwYWNlPTM3NDQ0LHRoaXMuY2hhbm5lbHM9dGhpcy5oZWlnaHQ9dGhpcy53aWR0aD0wfWZ1bmN0aW9uIGModCxlKXt0LmludGVybmFsZm9ybWF0PWUuaW50ZXJuYWxmb3JtYXQsdC5mb3JtYXQ9ZS5mb3JtYXQsdC50eXBlPWUudHlwZSx0LmNvbXByZXNzZWQ9ZS5jb21wcmVzc2VkLHQucHJlbXVsdGlwbHlBbHBoYT1lLnByZW11bHRpcGx5QWxwaGEsdC5mbGlwWT1lLmZsaXBZLHQudW5wYWNrQWxpZ25tZW50PWUudW5wYWNrQWxpZ25tZW50LHQuY29sb3JTcGFjZT1lLmNvbG9yU3BhY2UsdC53aWR0aD1lLndpZHRoLHQuaGVpZ2h0PWUuaGVpZ2h0LHQuY2hhbm5lbHM9ZS5jaGFubmVsc31mdW5jdGlvbiB1KHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZlKXsicHJlbXVsdGlwbHlBbHBoYSJpbiBlJiYodC5wcmVtdWx0aXBseUFscGhhPWUucHJlbXVsdGlwbHlBbHBoYSksImZsaXBZImluIGUmJih0LmZsaXBZPWUuZmxpcFkpLCJhbGlnbm1lbnQiaW4gZSYmKHQudW5wYWNrQWxpZ25tZW50PWUuYWxpZ25tZW50KSwiY29sb3JTcGFjZSJpbiBlJiYodC5jb2xvclNwYWNlPXFbZS5jb2xvclNwYWNlXSksInR5cGUiaW4gZSYmKHQudHlwZT1IW2UudHlwZV0pO3ZhciByPXQud2lkdGgsbj10LmhlaWdodCxhPXQuY2hhbm5lbHMsaT0hMTsic2hhcGUiaW4gZT8ocj1lLnNoYXBlWzBdLG49ZS5zaGFwZVsxXSwzPT09ZS5zaGFwZS5sZW5ndGgmJihhPWUuc2hhcGVbMl0saT0hMCkpOigicmFkaXVzImluIGUmJihyPW49ZS5yYWRpdXMpLCJ3aWR0aCJpbiBlJiYocj1lLndpZHRoKSwiaGVpZ2h0ImluIGUmJihuPWUuaGVpZ2h0KSwiY2hhbm5lbHMiaW4gZSYmKGE9ZS5jaGFubmVscyxpPSEwKSksdC53aWR0aD0wfHIsdC5oZWlnaHQ9MHxuLHQuY2hhbm5lbHM9MHxhLHI9ITEsImZvcm1hdCJpbiBlJiYocj1lLmZvcm1hdCxuPXQuaW50ZXJuYWxmb3JtYXQ9WVtyXSx0LmZvcm1hdD1wdFtuXSxyIGluIEgmJiEoInR5cGUiaW4gZSkmJih0LnR5cGU9SFtyXSksciBpbiBLJiYodC5jb21wcmVzc2VkPSEwKSxyPSEwKSwhaSYmcj90LmNoYW5uZWxzPXN0W3QuZm9ybWF0XTppJiYhciYmdC5jaGFubmVscyE9PW90W3QuZm9ybWF0XSYmKHQuZm9ybWF0PXQuaW50ZXJuYWxmb3JtYXQ9b3RbdC5jaGFubmVsc10pfX1mdW5jdGlvbiBoKGUpe3QucGl4ZWxTdG9yZWkoMzc0NDAsZS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxlLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzc0NDMsZS5jb2xvclNwYWNlKSx0LnBpeGVsU3RvcmVpKDMzMTcsZS51bnBhY2tBbGlnbm1lbnQpfWZ1bmN0aW9uIGYoKXtzLmNhbGwodGhpcyksdGhpcy55T2Zmc2V0PXRoaXMueE9mZnNldD0wLHRoaXMuZGF0YT1udWxsLHRoaXMubmVlZHNGcmVlPSExLHRoaXMuZWxlbWVudD1udWxsLHRoaXMubmVlZHNDb3B5PSExfWZ1bmN0aW9uIHAodCxlKXt2YXIgcj1udWxsO2lmKF8oZSk/cj1lOmUmJih1KHQsZSksIngiaW4gZSYmKHQueE9mZnNldD0wfGUueCksInkiaW4gZSYmKHQueU9mZnNldD0wfGUueSksXyhlLmRhdGEpJiYocj1lLmRhdGEpKSxlLmNvcHkpe3ZhciBuPWEudmlld3BvcnRXaWR0aCxpPWEudmlld3BvcnRIZWlnaHQ7dC53aWR0aD10LndpZHRofHxuLXQueE9mZnNldCx0LmhlaWdodD10LmhlaWdodHx8aS10LnlPZmZzZXQsdC5uZWVkc0NvcHk9ITB9ZWxzZSBpZihyKXtpZihXKHIpKXQuY2hhbm5lbHM9dC5jaGFubmVsc3x8NCx0LmRhdGE9ciwidHlwZSJpbiBlfHw1MTIxIT09dC50eXBlfHwodC50eXBlPTB8SltPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocildKTtlbHNlIGlmKHkocikpe3N3aXRjaCh0LmNoYW5uZWxzPXQuY2hhbm5lbHN8fDQsaT0obj1yKS5sZW5ndGgsdC50eXBlKXtjYXNlIDUxMjE6Y2FzZSA1MTIzOmNhc2UgNTEyNTpjYXNlIDUxMjY6KGk9Ry5hbGxvY1R5cGUodC50eXBlLGkpKS5zZXQobiksdC5kYXRhPWk7YnJlYWs7Y2FzZSAzNjE5Mzp0LmRhdGE9ZyhuKX10LmFsaWdubWVudD0xLHQubmVlZHNGcmVlPSEwfWVsc2UgaWYobChyKSl7bj1yLmRhdGEsQXJyYXkuaXNBcnJheShuKXx8NTEyMSE9PXQudHlwZXx8KHQudHlwZT0wfEpbT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pXSk7aT1yLnNoYXBlO3ZhciBvLHMsYyxoLGY9ci5zdHJpZGU7Mz09PWkubGVuZ3RoPyhjPWlbMl0saD1mWzJdKTpoPWM9MSxvPWlbMF0scz1pWzFdLGk9ZlswXSxmPWZbMV0sdC5hbGlnbm1lbnQ9MSx0LndpZHRoPW8sdC5oZWlnaHQ9cyx0LmNoYW5uZWxzPWMsdC5mb3JtYXQ9dC5pbnRlcm5hbGZvcm1hdD1vdFtjXSx0Lm5lZWRzRnJlZT0hMCxvPWgscj1yLm9mZnNldCxjPXQud2lkdGgsaD10LmhlaWdodCxzPXQuY2hhbm5lbHM7Zm9yKHZhciBwPUcuYWxsb2NUeXBlKDM2MTkzPT09dC50eXBlPzUxMjY6dC50eXBlLGMqaCpzKSxkPTAsbT0wO208aDsrK20pZm9yKHZhciBrPTA7azxjOysraylmb3IodmFyIFQ9MDtUPHM7KytUKXBbZCsrXT1uW2kqaytmKm0rbypUK3JdO3codCxwKX1lbHNlIGlmKGIocik9PT1sdHx8YihyKT09PWN0KWIocik9PT1sdD90LmVsZW1lbnQ9cjp0LmVsZW1lbnQ9ci5jYW52YXMsdC53aWR0aD10LmVsZW1lbnQud2lkdGgsdC5oZWlnaHQ9dC5lbGVtZW50LmhlaWdodCx0LmNoYW5uZWxzPTQ7ZWxzZSBpZihiKHIpPT09dXQpdC5lbGVtZW50PXIsdC53aWR0aD1yLndpZHRoLHQuaGVpZ2h0PXIuaGVpZ2h0LHQuY2hhbm5lbHM9NDtlbHNlIGlmKGIocik9PT1odCl0LmVsZW1lbnQ9cix0LndpZHRoPXIubmF0dXJhbFdpZHRoLHQuaGVpZ2h0PXIubmF0dXJhbEhlaWdodCx0LmNoYW5uZWxzPTQ7ZWxzZSBpZihiKHIpPT09ZnQpdC5lbGVtZW50PXIsdC53aWR0aD1yLnZpZGVvV2lkdGgsdC5oZWlnaHQ9ci52aWRlb0hlaWdodCx0LmNoYW5uZWxzPTQ7ZWxzZSBpZih4KHIpKXtmb3Iobj10LndpZHRofHxyWzBdLmxlbmd0aCxpPXQuaGVpZ2h0fHxyLmxlbmd0aCxmPXQuY2hhbm5lbHMsZj12KHJbMF1bMF0pP2Z8fHJbMF1bMF0ubGVuZ3RoOmZ8fDEsbz1aLnNoYXBlKHIpLGM9MSxoPTA7aDxvLmxlbmd0aDsrK2gpYyo9b1toXTtjPUcuYWxsb2NUeXBlKDM2MTkzPT09dC50eXBlPzUxMjY6dC50eXBlLGMpLFouZmxhdHRlbihyLG8sIiIsYyksdyh0LGMpLHQuYWxpZ25tZW50PTEsdC53aWR0aD1uLHQuaGVpZ2h0PWksdC5jaGFubmVscz1mLHQuZm9ybWF0PXQuaW50ZXJuYWxmb3JtYXQ9b3RbZl0sdC5uZWVkc0ZyZWU9ITB9fWVsc2UgdC53aWR0aD10LndpZHRofHwxLHQuaGVpZ2h0PXQuaGVpZ2h0fHwxLHQuY2hhbm5lbHM9dC5jaGFubmVsc3x8NH1mdW5jdGlvbiBkKGUscixhLGksbyl7dmFyIHM9ZS5lbGVtZW50LGw9ZS5kYXRhLGM9ZS5pbnRlcm5hbGZvcm1hdCx1PWUuZm9ybWF0LGY9ZS50eXBlLHA9ZS53aWR0aCxkPWUuaGVpZ2h0O2goZSkscz90LnRleFN1YkltYWdlMkQocixvLGEsaSx1LGYscyk6ZS5jb21wcmVzc2VkP3QuY29tcHJlc3NlZFRleFN1YkltYWdlMkQocixvLGEsaSxjLHAsZCxsKTplLm5lZWRzQ29weT8obigpLHQuY29weVRleFN1YkltYWdlMkQocixvLGEsaSxlLnhPZmZzZXQsZS55T2Zmc2V0LHAsZCkpOnQudGV4U3ViSW1hZ2UyRChyLG8sYSxpLHAsZCx1LGYsbCl9ZnVuY3Rpb24gbSgpe3JldHVybiBkdC5wb3AoKXx8bmV3IGZ9ZnVuY3Rpb24gVCh0KXt0Lm5lZWRzRnJlZSYmRy5mcmVlVHlwZSh0LmRhdGEpLGYuY2FsbCh0KSxkdC5wdXNoKHQpfWZ1bmN0aW9uIE0oKXtzLmNhbGwodGhpcyksdGhpcy5nZW5NaXBtYXBzPSExLHRoaXMubWlwbWFwSGludD00MzUyLHRoaXMubWlwbWFzaz0wLHRoaXMuaW1hZ2VzPUFycmF5KDE2KX1mdW5jdGlvbiBBKHQsZSxyKXt2YXIgbj10LmltYWdlc1swXT1tKCk7dC5taXBtYXNrPTEsbi53aWR0aD10LndpZHRoPWUsbi5oZWlnaHQ9dC5oZWlnaHQ9cixuLmNoYW5uZWxzPXQuY2hhbm5lbHM9NH1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9bnVsbDtpZihfKGUpKWMocj10LmltYWdlc1swXT1tKCksdCkscChyLGUpLHQubWlwbWFzaz0xO2Vsc2UgaWYodSh0LGUpLEFycmF5LmlzQXJyYXkoZS5taXBtYXApKWZvcih2YXIgbj1lLm1pcG1hcCxhPTA7YTxuLmxlbmd0aDsrK2EpYyhyPXQuaW1hZ2VzW2FdPW0oKSx0KSxyLndpZHRoPj49YSxyLmhlaWdodD4+PWEscChyLG5bYV0pLHQubWlwbWFza3w9MTw8YTtlbHNlIGMocj10LmltYWdlc1swXT1tKCksdCkscChyLGUpLHQubWlwbWFzaz0xO2ModCx0LmltYWdlc1swXSl9ZnVuY3Rpb24gRShlLHIpe2Zvcih2YXIgYT1lLmltYWdlcyxpPTA7aTxhLmxlbmd0aCYmYVtpXTsrK2kpe3ZhciBvPWFbaV0scz1yLGw9aSxjPW8uZWxlbWVudCx1PW8uZGF0YSxmPW8uaW50ZXJuYWxmb3JtYXQscD1vLmZvcm1hdCxkPW8udHlwZSxnPW8ud2lkdGgsdj1vLmhlaWdodCxtPW8uY2hhbm5lbHM7aChvKSxjP3QudGV4SW1hZ2UyRChzLGwscCxwLGQsYyk6by5jb21wcmVzc2VkP3QuY29tcHJlc3NlZFRleEltYWdlMkQocyxsLGYsZyx2LDAsdSk6by5uZWVkc0NvcHk/KG4oKSx0LmNvcHlUZXhJbWFnZTJEKHMsbCxwLG8ueE9mZnNldCxvLnlPZmZzZXQsZyx2LDApKTooKG89IXUpJiYodT1HLnplcm8uYWxsb2NUeXBlKGQsZyp2Km0pKSx0LnRleEltYWdlMkQocyxsLHAsZyx2LDAscCxkLHUpLG8mJnUmJkcuemVyby5mcmVlVHlwZSh1KSl9fWZ1bmN0aW9uIEwoKXt2YXIgdD1ndC5wb3AoKXx8bmV3IE07cy5jYWxsKHQpO2Zvcih2YXIgZT10Lm1pcG1hc2s9MDsxNj5lOysrZSl0LmltYWdlc1tlXT1udWxsO3JldHVybiB0fWZ1bmN0aW9uIEModCl7Zm9yKHZhciBlPXQuaW1hZ2VzLHI9MDtyPGUubGVuZ3RoOysrcillW3JdJiZUKGVbcl0pLGVbcl09bnVsbDtndC5wdXNoKHQpfWZ1bmN0aW9uIFAoKXt0aGlzLm1hZ0ZpbHRlcj10aGlzLm1pbkZpbHRlcj05NzI4LHRoaXMud3JhcFQ9dGhpcy53cmFwUz0zMzA3MSx0aGlzLmFuaXNvdHJvcGljPTEsdGhpcy5nZW5NaXBtYXBzPSExLHRoaXMubWlwbWFwSGludD00MzUyfWZ1bmN0aW9uIE8odCxlKXsibWluImluIGUmJih0Lm1pbkZpbHRlcj1VW2UubWluXSwwPD1pdC5pbmRleE9mKHQubWluRmlsdGVyKSYmISgiZmFjZXMiaW4gZSkmJih0Lmdlbk1pcG1hcHM9ITApKSwibWFnImluIGUmJih0Lm1hZ0ZpbHRlcj1WW2UubWFnXSk7dmFyIHI9dC53cmFwUyxuPXQud3JhcFQ7aWYoIndyYXAiaW4gZSl7dmFyIGE9ZS53cmFwOyJzdHJpbmciPT10eXBlb2YgYT9yPW49TlthXTpBcnJheS5pc0FycmF5KGEpJiYocj1OW2FbMF1dLG49TlthWzFdXSl9ZWxzZSJ3cmFwUyJpbiBlJiYocj1OW2Uud3JhcFNdKSwid3JhcFQiaW4gZSYmKG49TltlLndyYXBUXSk7aWYodC53cmFwUz1yLHQud3JhcFQ9biwiYW5pc290cm9waWMiaW4gZSYmKHQuYW5pc290cm9waWM9ZS5hbmlzb3Ryb3BpYyksIm1pcG1hcCJpbiBlKXtzd2l0Y2gocj0hMSx0eXBlb2YgZS5taXBtYXApe2Nhc2Uic3RyaW5nIjp0Lm1pcG1hcEhpbnQ9QltlLm1pcG1hcF0scj10Lmdlbk1pcG1hcHM9ITA7YnJlYWs7Y2FzZSJib29sZWFuIjpyPXQuZ2VuTWlwbWFwcz1lLm1pcG1hcDticmVhaztjYXNlIm9iamVjdCI6dC5nZW5NaXBtYXBzPSExLHI9ITB9IXJ8fCJtaW4iaW4gZXx8KHQubWluRmlsdGVyPTk5ODQpfX1mdW5jdGlvbiB6KHIsbil7dC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDEsci5taW5GaWx0ZXIpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLHIubWFnRmlsdGVyKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MixyLndyYXBTKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MyxyLndyYXBUKSxlLmV4dF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyYmdC50ZXhQYXJhbWV0ZXJpKG4sMzQwNDYsci5hbmlzb3Ryb3BpYyksci5nZW5NaXBtYXBzJiYodC5oaW50KDMzMTcwLHIubWlwbWFwSGludCksdC5nZW5lcmF0ZU1pcG1hcChuKSl9ZnVuY3Rpb24gSShlKXtzLmNhbGwodGhpcyksdGhpcy5taXBtYXNrPTAsdGhpcy5pbnRlcm5hbGZvcm1hdD02NDA4LHRoaXMuaWQ9dnQrKyx0aGlzLnJlZkNvdW50PTEsdGhpcy50YXJnZXQ9ZSx0aGlzLnRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksdGhpcy51bml0PS0xLHRoaXMuYmluZENvdW50PTAsdGhpcy50ZXhJbmZvPW5ldyBQLG8ucHJvZmlsZSYmKHRoaXMuc3RhdHM9e3NpemU6MH0pfWZ1bmN0aW9uIEQoZSl7dC5hY3RpdmVUZXh0dXJlKDMzOTg0KSx0LmJpbmRUZXh0dXJlKGUudGFyZ2V0LGUudGV4dHVyZSl9ZnVuY3Rpb24gUigpe3ZhciBlPXh0WzBdO2U/dC5iaW5kVGV4dHVyZShlLnRhcmdldCxlLnRleHR1cmUpOnQuYmluZFRleHR1cmUoMzU1MyxudWxsKX1mdW5jdGlvbiBGKGUpe3ZhciByPWUudGV4dHVyZSxuPWUudW5pdCxhPWUudGFyZ2V0OzA8PW4mJih0LmFjdGl2ZVRleHR1cmUoMzM5ODQrbiksdC5iaW5kVGV4dHVyZShhLG51bGwpLHh0W25dPW51bGwpLHQuZGVsZXRlVGV4dHVyZShyKSxlLnRleHR1cmU9bnVsbCxlLnBhcmFtcz1udWxsLGUucGl4ZWxzPW51bGwsZS5yZWZDb3VudD0wLGRlbGV0ZSBtdFtlLmlkXSxpLnRleHR1cmVDb3VudC0tfXZhciBCPXsiZG9uJ3QgY2FyZSI6NDM1MiwiZG9udCBjYXJlIjo0MzUyLG5pY2U6NDM1NCxmYXN0OjQzNTN9LE49e3JlcGVhdDoxMDQ5NyxjbGFtcDozMzA3MSxtaXJyb3I6MzM2NDh9LFY9e25lYXJlc3Q6OTcyOCxsaW5lYXI6OTcyOX0sVT1qKHttaXBtYXA6OTk4NywibmVhcmVzdCBtaXBtYXAgbmVhcmVzdCI6OTk4NCwibGluZWFyIG1pcG1hcCBuZWFyZXN0Ijo5OTg1LCJuZWFyZXN0IG1pcG1hcCBsaW5lYXIiOjk5ODYsImxpbmVhciBtaXBtYXAgbGluZWFyIjo5OTg3fSxWKSxxPXtub25lOjAsYnJvd3NlcjozNzQ0NH0sSD17dWludDg6NTEyMSxyZ2JhNDozMjgxOSxyZ2I1NjU6MzM2MzUsInJnYjUgYTEiOjMyODIwfSxZPXthbHBoYTo2NDA2LGx1bWluYW5jZTo2NDA5LCJsdW1pbmFuY2UgYWxwaGEiOjY0MTAscmdiOjY0MDcscmdiYTo2NDA4LHJnYmE0OjMyODU0LCJyZ2I1IGExIjozMjg1NSxyZ2I1NjU6MzYxOTR9LEs9e307ZS5leHRfc3JnYiYmKFkuc3JnYj0zNTkwNCxZLnNyZ2JhPTM1OTA2KSxlLm9lc190ZXh0dXJlX2Zsb2F0JiYoSC5mbG9hdDMyPUguZmxvYXQ9NTEyNiksZS5vZXNfdGV4dHVyZV9oYWxmX2Zsb2F0JiYoSC5mbG9hdDE2PUhbImhhbGYgZmxvYXQiXT0zNjE5MyksZS53ZWJnbF9kZXB0aF90ZXh0dXJlJiYoaihZLHtkZXB0aDo2NDAyLCJkZXB0aCBzdGVuY2lsIjozNDA0MX0pLGooSCx7dWludDE2OjUxMjMsdWludDMyOjUxMjUsImRlcHRoIHN0ZW5jaWwiOjM0MDQyfSkpLGUud2ViZ2xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMmJmooSyx7InJnYiBzM3RjIGR4dDEiOjMzNzc2LCJyZ2JhIHMzdGMgZHh0MSI6MzM3NzcsInJnYmEgczN0YyBkeHQzIjozMzc3OCwicmdiYSBzM3RjIGR4dDUiOjMzNzc5fSksZS53ZWJnbF9jb21wcmVzc2VkX3RleHR1cmVfYXRjJiZqKEsseyJyZ2IgYXRjIjozNTk4NiwicmdiYSBhdGMgZXhwbGljaXQgYWxwaGEiOjM1OTg3LCJyZ2JhIGF0YyBpbnRlcnBvbGF0ZWQgYWxwaGEiOjM0Nzk4fSksZS53ZWJnbF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMmJmooSyx7InJnYiBwdnJ0YyA0YnBwdjEiOjM1ODQwLCJyZ2IgcHZydGMgMmJwcHYxIjozNTg0MSwicmdiYSBwdnJ0YyA0YnBwdjEiOjM1ODQyLCJyZ2JhIHB2cnRjIDJicHB2MSI6MzU4NDN9KSxlLndlYmdsX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxJiYoS1sicmdiIGV0YzEiXT0zNjE5Nik7dmFyIFE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5nZXRQYXJhbWV0ZXIoMzQ0NjcpKTtPYmplY3Qua2V5cyhLKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPUtbdF07MDw9US5pbmRleE9mKGUpJiYoWVt0XT1lKX0pO3ZhciAkPU9iamVjdC5rZXlzKFkpO3IudGV4dHVyZUZvcm1hdHM9JDt2YXIgdHQ9W107T2JqZWN0LmtleXMoWSkuZm9yRWFjaChmdW5jdGlvbih0KXt0dFtZW3RdXT10fSk7dmFyIGV0PVtdO09iamVjdC5rZXlzKEgpLmZvckVhY2goZnVuY3Rpb24odCl7ZXRbSFt0XV09dH0pO3ZhciBydD1bXTtPYmplY3Qua2V5cyhWKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3J0W1ZbdF1dPXR9KTt2YXIgbnQ9W107T2JqZWN0LmtleXMoVSkuZm9yRWFjaChmdW5jdGlvbih0KXtudFtVW3RdXT10fSk7dmFyIGF0PVtdO09iamVjdC5rZXlzKE4pLmZvckVhY2goZnVuY3Rpb24odCl7YXRbTlt0XV09dH0pO3ZhciBwdD0kLnJlZHVjZShmdW5jdGlvbih0LGUpe3ZhciByPVlbZV07cmV0dXJuIDY0MDk9PT1yfHw2NDA2PT09cnx8NjQwOT09PXJ8fDY0MTA9PT1yfHw2NDAyPT09cnx8MzQwNDE9PT1yP3Rbcl09cjozMjg1NT09PXJ8fDA8PWUuaW5kZXhPZigicmdiYSIpP3Rbcl09NjQwODp0W3JdPTY0MDcsdH0se30pLGR0PVtdLGd0PVtdLHZ0PTAsbXQ9e30seXQ9ci5tYXhUZXh0dXJlVW5pdHMseHQ9QXJyYXkoeXQpLm1hcChmdW5jdGlvbigpe3JldHVybiBudWxsfSk7cmV0dXJuIGooSS5wcm90b3R5cGUse2JpbmQ6ZnVuY3Rpb24oKXt0aGlzLmJpbmRDb3VudCs9MTt2YXIgZT10aGlzLnVuaXQ7aWYoMD5lKXtmb3IodmFyIHI9MDtyPHl0Oysrcil7dmFyIG49eHRbcl07aWYobil7aWYoMDxuLmJpbmRDb3VudCljb250aW51ZTtuLnVuaXQ9LTF9eHRbcl09dGhpcyxlPXI7YnJlYWt9by5wcm9maWxlJiZpLm1heFRleHR1cmVVbml0czxlKzEmJihpLm1heFRleHR1cmVVbml0cz1lKzEpLHRoaXMudW5pdD1lLHQuYWN0aXZlVGV4dHVyZSgzMzk4NCtlKSx0LmJpbmRUZXh0dXJlKHRoaXMudGFyZ2V0LHRoaXMudGV4dHVyZSl9cmV0dXJuIGV9LHVuYmluZDpmdW5jdGlvbigpey0tdGhpcy5iaW5kQ291bnR9LGRlY1JlZjpmdW5jdGlvbigpezA+PS0tdGhpcy5yZWZDb3VudCYmRih0aGlzKX19KSxvLnByb2ZpbGUmJihpLmdldFRvdGFsVGV4dHVyZVNpemU9ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiBPYmplY3Qua2V5cyhtdCkuZm9yRWFjaChmdW5jdGlvbihlKXt0Kz1tdFtlXS5zdGF0cy5zaXplfSksdH0pLHtjcmVhdGUyRDpmdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1hLnRleEluZm87UC5jYWxsKHIpO3ZhciBpPUwoKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/QShpLDB8dCwibnVtYmVyIj09dHlwZW9mIGU/MHxlOjB8dCk6dD8oTyhyLHQpLFMoaSx0KSk6QShpLDEsMSksci5nZW5NaXBtYXBzJiYoaS5taXBtYXNrPShpLndpZHRoPDwxKS0xKSxhLm1pcG1hc2s9aS5taXBtYXNrLGMoYSxpKSxhLmludGVybmFsZm9ybWF0PWkuaW50ZXJuYWxmb3JtYXQsbi53aWR0aD1pLndpZHRoLG4uaGVpZ2h0PWkuaGVpZ2h0LEQoYSksRShpLDM1NTMpLHoociwzNTUzKSxSKCksQyhpKSxvLnByb2ZpbGUmJihhLnN0YXRzLnNpemU9ayhhLmludGVybmFsZm9ybWF0LGEudHlwZSxpLndpZHRoLGkuaGVpZ2h0LHIuZ2VuTWlwbWFwcywhMSkpLG4uZm9ybWF0PXR0W2EuaW50ZXJuYWxmb3JtYXRdLG4udHlwZT1ldFthLnR5cGVdLG4ubWFnPXJ0W3IubWFnRmlsdGVyXSxuLm1pbj1udFtyLm1pbkZpbHRlcl0sbi53cmFwUz1hdFtyLndyYXBTXSxuLndyYXBUPWF0W3Iud3JhcFRdLG59dmFyIGE9bmV3IEkoMzU1Myk7cmV0dXJuIG10W2EuaWRdPWEsaS50ZXh0dXJlQ291bnQrKyxuKGUsciksbi5zdWJpbWFnZT1mdW5jdGlvbih0LGUscixpKXtlfD0wLHJ8PTAsaXw9MDt2YXIgbz1tKCk7cmV0dXJuIGMobyxhKSxvLndpZHRoPTAsby5oZWlnaHQ9MCxwKG8sdCksby53aWR0aD1vLndpZHRofHwoYS53aWR0aD4+aSktZSxvLmhlaWdodD1vLmhlaWdodHx8KGEuaGVpZ2h0Pj5pKS1yLEQoYSksZChvLDM1NTMsZSxyLGkpLFIoKSxUKG8pLG59LG4ucmVzaXplPWZ1bmN0aW9uKGUscil7dmFyIGk9MHxlLHM9MHxyfHxpO2lmKGk9PT1hLndpZHRoJiZzPT09YS5oZWlnaHQpcmV0dXJuIG47bi53aWR0aD1hLndpZHRoPWksbi5oZWlnaHQ9YS5oZWlnaHQ9cyxEKGEpO2Zvcih2YXIgbCxjPWEuY2hhbm5lbHMsdT1hLnR5cGUsaD0wO2EubWlwbWFzaz4+aDsrK2gpe3ZhciBmPWk+PmgscD1zPj5oO2lmKCFmfHwhcClicmVhaztsPUcuemVyby5hbGxvY1R5cGUodSxmKnAqYyksdC50ZXhJbWFnZTJEKDM1NTMsaCxhLmZvcm1hdCxmLHAsMCxhLmZvcm1hdCxhLnR5cGUsbCksbCYmRy56ZXJvLmZyZWVUeXBlKGwpfXJldHVybiBSKCksby5wcm9maWxlJiYoYS5zdGF0cy5zaXplPWsoYS5pbnRlcm5hbGZvcm1hdCxhLnR5cGUsaSxzLCExLCExKSksbn0sbi5fcmVnbFR5cGU9InRleHR1cmUyZCIsbi5fdGV4dHVyZT1hLG8ucHJvZmlsZSYmKG4uc3RhdHM9YS5zdGF0cyksbi5kZXN0cm95PWZ1bmN0aW9uKCl7YS5kZWNSZWYoKX0sbn0sY3JlYXRlQ3ViZTpmdW5jdGlvbihlLHIsbixhLHMsbCl7ZnVuY3Rpb24gaCh0LGUscixuLGEsaSl7dmFyIHMsbD1mLnRleEluZm87Zm9yKFAuY2FsbChsKSxzPTA7Nj5zOysrcylnW3NdPUwoKTtpZigibnVtYmVyIiE9dHlwZW9mIHQmJnQpe2lmKCJvYmplY3QiPT10eXBlb2YgdClpZihlKVMoZ1swXSx0KSxTKGdbMV0sZSksUyhnWzJdLHIpLFMoZ1szXSxuKSxTKGdbNF0sYSksUyhnWzVdLGkpO2Vsc2UgaWYoTyhsLHQpLHUoZix0KSwiZmFjZXMiaW4gdClmb3IodD10LmZhY2VzLHM9MDs2PnM7KytzKWMoZ1tzXSxmKSxTKGdbc10sdFtzXSk7ZWxzZSBmb3Iocz0wOzY+czsrK3MpUyhnW3NdLHQpfWVsc2UgZm9yKHQ9MHx0fHwxLHM9MDs2PnM7KytzKUEoZ1tzXSx0LHQpO2ZvcihjKGYsZ1swXSksZi5taXBtYXNrPWwuZ2VuTWlwbWFwcz8oZ1swXS53aWR0aDw8MSktMTpnWzBdLm1pcG1hc2ssZi5pbnRlcm5hbGZvcm1hdD1nWzBdLmludGVybmFsZm9ybWF0LGgud2lkdGg9Z1swXS53aWR0aCxoLmhlaWdodD1nWzBdLmhlaWdodCxEKGYpLHM9MDs2PnM7KytzKUUoZ1tzXSwzNDA2OStzKTtmb3IoeihsLDM0MDY3KSxSKCksby5wcm9maWxlJiYoZi5zdGF0cy5zaXplPWsoZi5pbnRlcm5hbGZvcm1hdCxmLnR5cGUsaC53aWR0aCxoLmhlaWdodCxsLmdlbk1pcG1hcHMsITApKSxoLmZvcm1hdD10dFtmLmludGVybmFsZm9ybWF0XSxoLnR5cGU9ZXRbZi50eXBlXSxoLm1hZz1ydFtsLm1hZ0ZpbHRlcl0saC5taW49bnRbbC5taW5GaWx0ZXJdLGgud3JhcFM9YXRbbC53cmFwU10saC53cmFwVD1hdFtsLndyYXBUXSxzPTA7Nj5zOysrcylDKGdbc10pO3JldHVybiBofXZhciBmPW5ldyBJKDM0MDY3KTttdFtmLmlkXT1mLGkuY3ViZUNvdW50Kys7dmFyIGc9QXJyYXkoNik7cmV0dXJuIGgoZSxyLG4sYSxzLGwpLGguc3ViaW1hZ2U9ZnVuY3Rpb24odCxlLHIsbixhKXtyfD0wLG58PTAsYXw9MDt2YXIgaT1tKCk7cmV0dXJuIGMoaSxmKSxpLndpZHRoPTAsaS5oZWlnaHQ9MCxwKGksZSksaS53aWR0aD1pLndpZHRofHwoZi53aWR0aD4+YSktcixpLmhlaWdodD1pLmhlaWdodHx8KGYuaGVpZ2h0Pj5hKS1uLEQoZiksZChpLDM0MDY5K3QscixuLGEpLFIoKSxUKGkpLGh9LGgucmVzaXplPWZ1bmN0aW9uKGUpe2lmKChlfD0wKSE9PWYud2lkdGgpe2gud2lkdGg9Zi53aWR0aD1lLGguaGVpZ2h0PWYuaGVpZ2h0PWUsRChmKTtmb3IodmFyIHI9MDs2PnI7KytyKWZvcih2YXIgbj0wO2YubWlwbWFzaz4+bjsrK24pdC50ZXhJbWFnZTJEKDM0MDY5K3IsbixmLmZvcm1hdCxlPj5uLGU+Pm4sMCxmLmZvcm1hdCxmLnR5cGUsbnVsbCk7cmV0dXJuIFIoKSxvLnByb2ZpbGUmJihmLnN0YXRzLnNpemU9ayhmLmludGVybmFsZm9ybWF0LGYudHlwZSxoLndpZHRoLGguaGVpZ2h0LCExLCEwKSksaH19LGguX3JlZ2xUeXBlPSJ0ZXh0dXJlQ3ViZSIsaC5fdGV4dHVyZT1mLG8ucHJvZmlsZSYmKGguc3RhdHM9Zi5zdGF0cyksaC5kZXN0cm95PWZ1bmN0aW9uKCl7Zi5kZWNSZWYoKX0saH0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHl0OysrZSl0LmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksdC5iaW5kVGV4dHVyZSgzNTUzLG51bGwpLHh0W2VdPW51bGw7WChtdCkuZm9yRWFjaChGKSxpLmN1YmVDb3VudD0wLGkudGV4dHVyZUNvdW50PTB9LGdldFRleHR1cmU6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHJlc3RvcmU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHl0OysrZSl7dmFyIHI9eHRbZV07ciYmKHIuYmluZENvdW50PTAsci51bml0PS0xLHh0W2VdPW51bGwpfVgobXQpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS50ZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgpLHQuYmluZFRleHR1cmUoZS50YXJnZXQsZS50ZXh0dXJlKTtmb3IodmFyIHI9MDszMj5yOysrcilpZigwIT0oZS5taXBtYXNrJjE8PHIpKWlmKDM1NTM9PT1lLnRhcmdldCl0LnRleEltYWdlMkQoMzU1MyxyLGUuaW50ZXJuYWxmb3JtYXQsZS53aWR0aD4+cixlLmhlaWdodD4+ciwwLGUuaW50ZXJuYWxmb3JtYXQsZS50eXBlLG51bGwpO2Vsc2UgZm9yKHZhciBuPTA7Nj5uOysrbil0LnRleEltYWdlMkQoMzQwNjkrbixyLGUuaW50ZXJuYWxmb3JtYXQsZS53aWR0aD4+cixlLmhlaWdodD4+ciwwLGUuaW50ZXJuYWxmb3JtYXQsZS50eXBlLG51bGwpO3ooZS50ZXhJbmZvLGUudGFyZ2V0KX0pfX19ZnVuY3Rpb24gTSh0LGUscixuLGEsaSl7ZnVuY3Rpb24gbyh0LGUscil7dGhpcy50YXJnZXQ9dCx0aGlzLnRleHR1cmU9ZSx0aGlzLnJlbmRlcmJ1ZmZlcj1yO3ZhciBuPXQ9MDtlPyh0PWUud2lkdGgsbj1lLmhlaWdodCk6ciYmKHQ9ci53aWR0aCxuPXIuaGVpZ2h0KSx0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9bn1mdW5jdGlvbiBzKHQpe3QmJih0LnRleHR1cmUmJnQudGV4dHVyZS5fdGV4dHVyZS5kZWNSZWYoKSx0LnJlbmRlcmJ1ZmZlciYmdC5yZW5kZXJidWZmZXIuX3JlbmRlcmJ1ZmZlci5kZWNSZWYoKSl9ZnVuY3Rpb24gbCh0LGUscil7dCYmKHQudGV4dHVyZT90LnRleHR1cmUuX3RleHR1cmUucmVmQ291bnQrPTE6dC5yZW5kZXJidWZmZXIuX3JlbmRlcmJ1ZmZlci5yZWZDb3VudCs9MSl9ZnVuY3Rpb24gYyhlLHIpe3ImJihyLnRleHR1cmU/dC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCxlLHIudGFyZ2V0LHIudGV4dHVyZS5fdGV4dHVyZS50ZXh0dXJlLDApOnQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsZSwzNjE2MSxyLnJlbmRlcmJ1ZmZlci5fcmVuZGVyYnVmZmVyLnJlbmRlcmJ1ZmZlcikpfWZ1bmN0aW9uIHUodCl7dmFyIGU9MzU1MyxyPW51bGwsbj1udWxsLGE9dDtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJihhPXQuZGF0YSwidGFyZ2V0ImluIHQmJihlPTB8dC50YXJnZXQpKSwidGV4dHVyZTJkIj09PSh0PWEuX3JlZ2xUeXBlKT9yPWE6InRleHR1cmVDdWJlIj09PXQ/cj1hOiJyZW5kZXJidWZmZXIiPT09dCYmKG49YSxlPTM2MTYxKSxuZXcgbyhlLHIsbil9ZnVuY3Rpb24gaCh0LGUscixpLHMpe3JldHVybiByPygodD1uLmNyZWF0ZTJEKHt3aWR0aDp0LGhlaWdodDplLGZvcm1hdDppLHR5cGU6c30pKS5fdGV4dHVyZS5yZWZDb3VudD0wLG5ldyBvKDM1NTMsdCxudWxsKSk6KCh0PWEuY3JlYXRlKHt3aWR0aDp0LGhlaWdodDplLGZvcm1hdDppfSkpLl9yZW5kZXJidWZmZXIucmVmQ291bnQ9MCxuZXcgbygzNjE2MSxudWxsLHQpKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0JiYodC50ZXh0dXJlfHx0LnJlbmRlcmJ1ZmZlcil9ZnVuY3Rpb24gcCh0LGUscil7dCYmKHQudGV4dHVyZT90LnRleHR1cmUucmVzaXplKGUscik6dC5yZW5kZXJidWZmZXImJnQucmVuZGVyYnVmZmVyLnJlc2l6ZShlLHIpLHQud2lkdGg9ZSx0LmhlaWdodD1yKX1mdW5jdGlvbiBkKCl7dGhpcy5pZD1rKyssVFt0aGlzLmlkXT10aGlzLHRoaXMuZnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLHRoaXMuaGVpZ2h0PXRoaXMud2lkdGg9MCx0aGlzLmNvbG9yQXR0YWNobWVudHM9W10sdGhpcy5kZXB0aFN0ZW5jaWxBdHRhY2htZW50PXRoaXMuc3RlbmNpbEF0dGFjaG1lbnQ9dGhpcy5kZXB0aEF0dGFjaG1lbnQ9bnVsbH1mdW5jdGlvbiBnKHQpe3QuY29sb3JBdHRhY2htZW50cy5mb3JFYWNoKHMpLHModC5kZXB0aEF0dGFjaG1lbnQpLHModC5zdGVuY2lsQXR0YWNobWVudCkscyh0LmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpfWZ1bmN0aW9uIHYoZSl7dC5kZWxldGVGcmFtZWJ1ZmZlcihlLmZyYW1lYnVmZmVyKSxlLmZyYW1lYnVmZmVyPW51bGwsaS5mcmFtZWJ1ZmZlckNvdW50LS0sZGVsZXRlIFRbZS5pZF19ZnVuY3Rpb24gbShlKXt2YXIgbjt0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlLmZyYW1lYnVmZmVyKTt2YXIgYT1lLmNvbG9yQXR0YWNobWVudHM7Zm9yKG49MDtuPGEubGVuZ3RoOysrbiljKDM2MDY0K24sYVtuXSk7Zm9yKG49YS5sZW5ndGg7bjxyLm1heENvbG9yQXR0YWNobWVudHM7KytuKXQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwNjQrbiwzNTUzLG51bGwsMCk7dC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzMzMwNiwzNTUzLG51bGwsMCksdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLG51bGwsMCksdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjEyOCwzNTUzLG51bGwsMCksYygzNjA5NixlLmRlcHRoQXR0YWNobWVudCksYygzNjEyOCxlLnN0ZW5jaWxBdHRhY2htZW50KSxjKDMzMzA2LGUuZGVwdGhTdGVuY2lsQXR0YWNobWVudCksdC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKSx0LmlzQ29udGV4dExvc3QoKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx4Lm5leHQ/eC5uZXh0LmZyYW1lYnVmZmVyOm51bGwpLHguY3VyPXgubmV4dCx0LmdldEVycm9yKCl9ZnVuY3Rpb24geSh0LGUpe2Z1bmN0aW9uIHIodCxlKXt2YXIgYSxpPTAsbz0wLHM9ITAsYz0hMDthPW51bGw7dmFyIHA9ITAsZD0icmdiYSIsdj0idWludDgiLHk9MSx4PW51bGwsdz1udWxsLGs9bnVsbCxUPSExOyJudW1iZXIiPT10eXBlb2YgdD8oaT0wfHQsbz0wfGV8fGkpOnQ/KCJzaGFwZSJpbiB0PyhpPShvPXQuc2hhcGUpWzBdLG89b1sxXSk6KCJyYWRpdXMiaW4gdCYmKGk9bz10LnJhZGl1cyksIndpZHRoImluIHQmJihpPXQud2lkdGgpLCJoZWlnaHQiaW4gdCYmKG89dC5oZWlnaHQpKSwoImNvbG9yImluIHR8fCJjb2xvcnMiaW4gdCkmJihhPXQuY29sb3J8fHQuY29sb3JzLEFycmF5LmlzQXJyYXkoYSkpLGF8fCgiY29sb3JDb3VudCJpbiB0JiYoeT0wfHQuY29sb3JDb3VudCksImNvbG9yVGV4dHVyZSJpbiB0JiYocD0hIXQuY29sb3JUZXh0dXJlLGQ9InJnYmE0IiksImNvbG9yVHlwZSJpbiB0JiYodj10LmNvbG9yVHlwZSwhcCkmJigiaGFsZiBmbG9hdCI9PT12fHwiZmxvYXQxNiI9PT12P2Q9InJnYmExNmYiOiJmbG9hdCIhPT12JiYiZmxvYXQzMiIhPT12fHwoZD0icmdiYTMyZiIpKSwiY29sb3JGb3JtYXQiaW4gdCYmKGQ9dC5jb2xvckZvcm1hdCwwPD1iLmluZGV4T2YoZCk/cD0hMDowPD1fLmluZGV4T2YoZCkmJihwPSExKSkpLCgiZGVwdGhUZXh0dXJlImluIHR8fCJkZXB0aFN0ZW5jaWxUZXh0dXJlImluIHQpJiYoVD0hKCF0LmRlcHRoVGV4dHVyZSYmIXQuZGVwdGhTdGVuY2lsVGV4dHVyZSkpLCJkZXB0aCJpbiB0JiYoImJvb2xlYW4iPT10eXBlb2YgdC5kZXB0aD9zPXQuZGVwdGg6KHg9dC5kZXB0aCxjPSExKSksInN0ZW5jaWwiaW4gdCYmKCJib29sZWFuIj09dHlwZW9mIHQuc3RlbmNpbD9jPXQuc3RlbmNpbDoodz10LnN0ZW5jaWwscz0hMSkpLCJkZXB0aFN0ZW5jaWwiaW4gdCYmKCJib29sZWFuIj09dHlwZW9mIHQuZGVwdGhTdGVuY2lsP3M9Yz10LmRlcHRoU3RlbmNpbDooaz10LmRlcHRoU3RlbmNpbCxjPXM9ITEpKSk6aT1vPTE7dmFyIE09bnVsbCxBPW51bGwsUz1udWxsLEU9bnVsbDtpZihBcnJheS5pc0FycmF5KGEpKU09YS5tYXAodSk7ZWxzZSBpZihhKU09W3UoYSldO2Vsc2UgZm9yKE09QXJyYXkoeSksYT0wO2E8eTsrK2EpTVthXT1oKGksbyxwLGQsdik7Zm9yKGk9aXx8TVswXS53aWR0aCxvPW98fE1bMF0uaGVpZ2h0LHg/QT11KHgpOnMmJiFjJiYoQT1oKGksbyxULCJkZXB0aCIsInVpbnQzMiIpKSx3P1M9dSh3KTpjJiYhcyYmKFM9aChpLG8sITEsInN0ZW5jaWwiLCJ1aW50OCIpKSxrP0U9dShrKToheCYmIXcmJmMmJnMmJihFPWgoaSxvLFQsImRlcHRoIHN0ZW5jaWwiLCJkZXB0aCBzdGVuY2lsIikpLHM9bnVsbCxhPTA7YTxNLmxlbmd0aDsrK2EpbChNW2FdKSxNW2FdJiZNW2FdLnRleHR1cmUmJihjPXl0W01bYV0udGV4dHVyZS5fdGV4dHVyZS5mb3JtYXRdKnh0W01bYV0udGV4dHVyZS5fdGV4dHVyZS50eXBlXSxudWxsPT09cyYmKHM9YykpO3JldHVybiBsKEEpLGwoUyksbChFKSxnKG4pLG4ud2lkdGg9aSxuLmhlaWdodD1vLG4uY29sb3JBdHRhY2htZW50cz1NLG4uZGVwdGhBdHRhY2htZW50PUEsbi5zdGVuY2lsQXR0YWNobWVudD1TLG4uZGVwdGhTdGVuY2lsQXR0YWNobWVudD1FLHIuY29sb3I9TS5tYXAoZiksci5kZXB0aD1mKEEpLHIuc3RlbmNpbD1mKFMpLHIuZGVwdGhTdGVuY2lsPWYoRSksci53aWR0aD1uLndpZHRoLHIuaGVpZ2h0PW4uaGVpZ2h0LG0obikscn12YXIgbj1uZXcgZDtyZXR1cm4gaS5mcmFtZWJ1ZmZlckNvdW50Kysscih0LGUpLGoocix7cmVzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGE9TWF0aC5tYXgoMHx0LDEpLGk9TWF0aC5tYXgoMHxlfHxhLDEpO2lmKGE9PT1uLndpZHRoJiZpPT09bi5oZWlnaHQpcmV0dXJuIHI7Zm9yKHZhciBvPW4uY29sb3JBdHRhY2htZW50cyxzPTA7czxvLmxlbmd0aDsrK3MpcChvW3NdLGEsaSk7cmV0dXJuIHAobi5kZXB0aEF0dGFjaG1lbnQsYSxpKSxwKG4uc3RlbmNpbEF0dGFjaG1lbnQsYSxpKSxwKG4uZGVwdGhTdGVuY2lsQXR0YWNobWVudCxhLGkpLG4ud2lkdGg9ci53aWR0aD1hLG4uaGVpZ2h0PXIuaGVpZ2h0PWksbShuKSxyfSxfcmVnbFR5cGU6ImZyYW1lYnVmZmVyIixfZnJhbWVidWZmZXI6bixkZXN0cm95OmZ1bmN0aW9uKCl7dihuKSxnKG4pfSx1c2U6ZnVuY3Rpb24odCl7eC5zZXRGQk8oe2ZyYW1lYnVmZmVyOnJ9LHQpfX0pfXZhciB4PXtjdXI6bnVsbCxuZXh0Om51bGwsZGlydHk6ITEsc2V0RkJPOm51bGx9LGI9WyJyZ2JhIl0sXz1bInJnYmE0IiwicmdiNTY1IiwicmdiNSBhMSJdO2UuZXh0X3NyZ2ImJl8ucHVzaCgic3JnYmEiKSxlLmV4dF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCYmXy5wdXNoKCJyZ2JhMTZmIiwicmdiMTZmIiksZS53ZWJnbF9jb2xvcl9idWZmZXJfZmxvYXQmJl8ucHVzaCgicmdiYTMyZiIpO3ZhciB3PVsidWludDgiXTtlLm9lc190ZXh0dXJlX2hhbGZfZmxvYXQmJncucHVzaCgiaGFsZiBmbG9hdCIsImZsb2F0MTYiKSxlLm9lc190ZXh0dXJlX2Zsb2F0JiZ3LnB1c2goImZsb2F0IiwiZmxvYXQzMiIpO3ZhciBrPTAsVD17fTtyZXR1cm4gaih4LHtnZXRGcmFtZWJ1ZmZlcjpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmImZyYW1lYnVmZmVyIj09PXQuX3JlZ2xUeXBlJiYodD10Ll9mcmFtZWJ1ZmZlcilpbnN0YW5jZW9mIGQ/dDpudWxsfSxjcmVhdGU6eSxjcmVhdGVDdWJlOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dmFyIGEsaT17Y29sb3I6bnVsbH0sbz0wLHM9bnVsbDthPSJyZ2JhIjt2YXIgbD0idWludDgiLGM9MTtpZigibnVtYmVyIj09dHlwZW9mIHQ/bz0wfHQ6dD8oInNoYXBlImluIHQ/bz10LnNoYXBlWzBdOigicmFkaXVzImluIHQmJihvPTB8dC5yYWRpdXMpLCJ3aWR0aCJpbiB0P289MHx0LndpZHRoOiJoZWlnaHQiaW4gdCYmKG89MHx0LmhlaWdodCkpLCgiY29sb3IiaW4gdHx8ImNvbG9ycyJpbiB0KSYmKHM9dC5jb2xvcnx8dC5jb2xvcnMsQXJyYXkuaXNBcnJheShzKSksc3x8KCJjb2xvckNvdW50ImluIHQmJihjPTB8dC5jb2xvckNvdW50KSwiY29sb3JUeXBlImluIHQmJihsPXQuY29sb3JUeXBlKSwiY29sb3JGb3JtYXQiaW4gdCYmKGE9dC5jb2xvckZvcm1hdCkpLCJkZXB0aCJpbiB0JiYoaS5kZXB0aD10LmRlcHRoKSwic3RlbmNpbCJpbiB0JiYoaS5zdGVuY2lsPXQuc3RlbmNpbCksImRlcHRoU3RlbmNpbCJpbiB0JiYoaS5kZXB0aFN0ZW5jaWw9dC5kZXB0aFN0ZW5jaWwpKTpvPTEscylpZihBcnJheS5pc0FycmF5KHMpKWZvcih0PVtdLGE9MDthPHMubGVuZ3RoOysrYSl0W2FdPXNbYV07ZWxzZSB0PVtzXTtlbHNlIGZvcih0PUFycmF5KGMpLHM9e3JhZGl1czpvLGZvcm1hdDphLHR5cGU6bH0sYT0wO2E8YzsrK2EpdFthXT1uLmNyZWF0ZUN1YmUocyk7Zm9yKGkuY29sb3I9QXJyYXkodC5sZW5ndGgpLGE9MDthPHQubGVuZ3RoOysrYSljPXRbYV0sbz1vfHxjLndpZHRoLGkuY29sb3JbYV09e3RhcmdldDozNDA2OSxkYXRhOnRbYV19O2ZvcihhPTA7Nj5hOysrYSl7Zm9yKGM9MDtjPHQubGVuZ3RoOysrYylpLmNvbG9yW2NdLnRhcmdldD0zNDA2OSthOzA8YSYmKGkuZGVwdGg9clswXS5kZXB0aCxpLnN0ZW5jaWw9clswXS5zdGVuY2lsLGkuZGVwdGhTdGVuY2lsPXJbMF0uZGVwdGhTdGVuY2lsKSxyW2FdP3JbYV0oaSk6clthXT15KGkpfXJldHVybiBqKGUse3dpZHRoOm8saGVpZ2h0Om8sY29sb3I6dH0pfXZhciByPUFycmF5KDYpO3JldHVybiBlKHQpLGooZSx7ZmFjZXM6cixyZXNpemU6ZnVuY3Rpb24odCl7dmFyIG49MHx0O2lmKG49PT1lLndpZHRoKXJldHVybiBlO3ZhciBhPWUuY29sb3I7Zm9yKHQ9MDt0PGEubGVuZ3RoOysrdClhW3RdLnJlc2l6ZShuKTtmb3IodD0wOzY+dDsrK3Qpclt0XS5yZXNpemUobik7cmV0dXJuIGUud2lkdGg9ZS5oZWlnaHQ9bixlfSxfcmVnbFR5cGU6ImZyYW1lYnVmZmVyQ3ViZSIsZGVzdHJveTpmdW5jdGlvbigpe3IuZm9yRWFjaChmdW5jdGlvbih0KXt0LmRlc3Ryb3koKX0pfX0pfSxjbGVhcjpmdW5jdGlvbigpe1goVCkuZm9yRWFjaCh2KX0scmVzdG9yZTpmdW5jdGlvbigpe3guY3VyPW51bGwseC5uZXh0PW51bGwseC5kaXJ0eT0hMCxYKFQpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5mcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksbShlKX0pfX0pfWZ1bmN0aW9uIEEoKXt0aGlzLnc9dGhpcy56PXRoaXMueT10aGlzLng9dGhpcy5zdGF0ZT0wLHRoaXMuYnVmZmVyPW51bGwsdGhpcy5zaXplPTAsdGhpcy5ub3JtYWxpemVkPSExLHRoaXMudHlwZT01MTI2LHRoaXMuZGl2aXNvcj10aGlzLnN0cmlkZT10aGlzLm9mZnNldD0wfWZ1bmN0aW9uIFModCxlLHIsbil7ZnVuY3Rpb24gYSh0LGUscixuKXt0aGlzLm5hbWU9dCx0aGlzLmlkPWUsdGhpcy5sb2NhdGlvbj1yLHRoaXMuaW5mbz1ufWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcilpZih0W3JdLmlkPT09ZS5pZClyZXR1cm4gdm9pZCh0W3JdLmxvY2F0aW9uPWUubG9jYXRpb24pO3QucHVzaChlKX1mdW5jdGlvbiBvKHIsbixhKXtpZighKG89KGE9MzU2MzI9PT1yP2M6dSlbbl0pKXt2YXIgaT1lLnN0cihuKSxvPXQuY3JlYXRlU2hhZGVyKHIpO3Quc2hhZGVyU291cmNlKG8saSksdC5jb21waWxlU2hhZGVyKG8pLGFbbl09b31yZXR1cm4gb31mdW5jdGlvbiBzKHQsZSl7dGhpcy5pZD1wKyssdGhpcy5mcmFnSWQ9dCx0aGlzLnZlcnRJZD1lLHRoaXMucHJvZ3JhbT1udWxsLHRoaXMudW5pZm9ybXM9W10sdGhpcy5hdHRyaWJ1dGVzPVtdLG4ucHJvZmlsZSYmKHRoaXMuc3RhdHM9e3VuaWZvcm1zQ291bnQ6MCxhdHRyaWJ1dGVzQ291bnQ6MH0pfWZ1bmN0aW9uIGwocixzKXt2YXIgbCxjO2w9bygzNTYzMixyLmZyYWdJZCksYz1vKDM1NjMzLHIudmVydElkKTt2YXIgdT1yLnByb2dyYW09dC5jcmVhdGVQcm9ncmFtKCk7dC5hdHRhY2hTaGFkZXIodSxsKSx0LmF0dGFjaFNoYWRlcih1LGMpLHQubGlua1Byb2dyYW0odSk7dmFyIGg9dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHUsMzU3MTgpO24ucHJvZmlsZSYmKHIuc3RhdHMudW5pZm9ybXNDb3VudD1oKTt2YXIgZj1yLnVuaWZvcm1zO2ZvcihsPTA7bDxoOysrbClpZihjPXQuZ2V0QWN0aXZlVW5pZm9ybSh1LGwpKWlmKDE8Yy5zaXplKWZvcih2YXIgcD0wO3A8Yy5zaXplOysrcCl7dmFyIGQ9Yy5uYW1lLnJlcGxhY2UoIlswXSIsIlsiK3ArIl0iKTtpKGYsbmV3IGEoZCxlLmlkKGQpLHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHUsZCksYykpfWVsc2UgaShmLG5ldyBhKGMubmFtZSxlLmlkKGMubmFtZSksdC5nZXRVbmlmb3JtTG9jYXRpb24odSxjLm5hbWUpLGMpKTtmb3IoaD10LmdldFByb2dyYW1QYXJhbWV0ZXIodSwzNTcyMSksbi5wcm9maWxlJiYoci5zdGF0cy5hdHRyaWJ1dGVzQ291bnQ9aCksZj1yLmF0dHJpYnV0ZXMsbD0wO2w8aDsrK2wpKGM9dC5nZXRBY3RpdmVBdHRyaWIodSxsKSkmJmkoZixuZXcgYShjLm5hbWUsZS5pZChjLm5hbWUpLHQuZ2V0QXR0cmliTG9jYXRpb24odSxjLm5hbWUpLGMpKX12YXIgYz17fSx1PXt9LGg9e30sZj1bXSxwPTA7cmV0dXJuIG4ucHJvZmlsZSYmKHIuZ2V0TWF4VW5pZm9ybXNDb3VudD1mdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXtlLnN0YXRzLnVuaWZvcm1zQ291bnQ+dCYmKHQ9ZS5zdGF0cy51bmlmb3Jtc0NvdW50KX0pLHR9LHIuZ2V0TWF4QXR0cmlidXRlc0NvdW50PWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc3RhdHMuYXR0cmlidXRlc0NvdW50PnQmJih0PWUuc3RhdHMuYXR0cmlidXRlc0NvdW50KX0pLHR9KSx7Y2xlYXI6ZnVuY3Rpb24oKXt2YXIgZT10LmRlbGV0ZVNoYWRlci5iaW5kKHQpO1goYykuZm9yRWFjaChlKSxjPXt9LFgodSkuZm9yRWFjaChlKSx1PXt9LGYuZm9yRWFjaChmdW5jdGlvbihlKXt0LmRlbGV0ZVByb2dyYW0oZS5wcm9ncmFtKX0pLGYubGVuZ3RoPTAsaD17fSxyLnNoYWRlckNvdW50PTB9LHByb2dyYW06ZnVuY3Rpb24odCxlLG4pe3ZhciBhPWhbZV07YXx8KGE9aFtlXT17fSk7dmFyIGk9YVt0XTtyZXR1cm4gaXx8KGk9bmV3IHMoZSx0KSxyLnNoYWRlckNvdW50KyssbChpKSxhW3RdPWksZi5wdXNoKGkpKSxpfSxyZXN0b3JlOmZ1bmN0aW9uKCl7Yz17fSx1PXt9O2Zvcih2YXIgdD0wO3Q8Zi5sZW5ndGg7Kyt0KWwoZlt0XSl9LHNoYWRlcjpvLGZyYWc6LTEsdmVydDotMX19ZnVuY3Rpb24gRSh0LGUscixuLGEsaSxvKXtmdW5jdGlvbiBzKGEpe3ZhciBpO2k9bnVsbD09PWUubmV4dD81MTIxOmUubmV4dC5jb2xvckF0dGFjaG1lbnRzWzBdLnRleHR1cmUuX3RleHR1cmUudHlwZTt2YXIgbz0wLHM9MCxsPW4uZnJhbWVidWZmZXJXaWR0aCxjPW4uZnJhbWVidWZmZXJIZWlnaHQsdT1udWxsO3JldHVybiBXKGEpP3U9YTphJiYobz0wfGEueCxzPTB8YS55LGw9MHwoYS53aWR0aHx8bi5mcmFtZWJ1ZmZlcldpZHRoLW8pLGM9MHwoYS5oZWlnaHR8fG4uZnJhbWVidWZmZXJIZWlnaHQtcyksdT1hLmRhdGF8fG51bGwpLHIoKSxhPWwqYyo0LHV8fCg1MTIxPT09aT91PW5ldyBVaW50OEFycmF5KGEpOjUxMjY9PT1pJiYodT11fHxuZXcgRmxvYXQzMkFycmF5KGEpKSksdC5waXhlbFN0b3JlaSgzMzMzLDQpLHQucmVhZFBpeGVscyhvLHMsbCxjLDY0MDgsaSx1KSx1fXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZyYW1lYnVmZmVyImluIHQ/ZnVuY3Rpb24odCl7dmFyIHI7cmV0dXJuIGUuc2V0RkJPKHtmcmFtZWJ1ZmZlcjp0LmZyYW1lYnVmZmVyfSxmdW5jdGlvbigpe3I9cyh0KX0pLHJ9KHQpOnModCl9fWZ1bmN0aW9uIEwodCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpfWZ1bmN0aW9uIEModCl7cmV0dXJuIEwodCkuam9pbigiIil9ZnVuY3Rpb24gUCgpe2Z1bmN0aW9uIHQoKXt2YXIgdD1bXSxlPVtdO3JldHVybiBqKGZ1bmN0aW9uKCl7dC5wdXNoLmFwcGx5KHQsTChhcmd1bWVudHMpKX0se2RlZjpmdW5jdGlvbigpe3ZhciBuPSJ2IityKys7cmV0dXJuIGUucHVzaChuKSwwPGFyZ3VtZW50cy5sZW5ndGgmJih0LnB1c2gobiwiPSIpLHQucHVzaC5hcHBseSh0LEwoYXJndW1lbnRzKSksdC5wdXNoKCI7IikpLG59LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIEMoWzA8ZS5sZW5ndGg/InZhciAiK2UrIjsiOiIiLEModCldKX19KX1mdW5jdGlvbiBlKCl7ZnVuY3Rpb24gZSh0LGUpe24odCxlLCI9IixyLmRlZih0LGUpLCI7Iil9dmFyIHI9dCgpLG49dCgpLGE9ci50b1N0cmluZyxpPW4udG9TdHJpbmc7cmV0dXJuIGooZnVuY3Rpb24oKXtyLmFwcGx5KHIsTChhcmd1bWVudHMpKX0se2RlZjpyLmRlZixlbnRyeTpyLGV4aXQ6bixzYXZlOmUsc2V0OmZ1bmN0aW9uKHQsbixhKXtlKHQsbikscih0LG4sIj0iLGEsIjsiKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpK2koKX19KX12YXIgcj0wLG49W10sYT1bXSxpPXQoKSxvPXt9O3JldHVybntnbG9iYWw6aSxsaW5rOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7KytlKWlmKGFbZV09PT10KXJldHVybiBuW2VdO3JldHVybiBlPSJnIityKyssbi5wdXNoKGUpLGEucHVzaCh0KSxlfSxibG9jazp0LHByb2M6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKCl7dmFyIHQ9ImEiK2EubGVuZ3RoO3JldHVybiBhLnB1c2godCksdH12YXIgYT1bXTtyPXJ8fDA7Zm9yKHZhciBpPTA7aTxyOysraSluKCk7dmFyIHM9KGk9ZSgpKS50b1N0cmluZztyZXR1cm4gb1t0XT1qKGkse2FyZzpuLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIEMoWyJmdW5jdGlvbigiLGEuam9pbigpLCIpeyIscygpLCJ9Il0pfX0pfSxzY29wZTplLGNvbmQ6ZnVuY3Rpb24oKXt2YXIgdD1DKGFyZ3VtZW50cykscj1lKCksbj1lKCksYT1yLnRvU3RyaW5nLGk9bi50b1N0cmluZztyZXR1cm4gaihyLHt0aGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHIuYXBwbHkocixMKGFyZ3VtZW50cykpLHRoaXN9LGVsc2U6ZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseShuLEwoYXJndW1lbnRzKSksdGhpc30sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT1pKCk7cmV0dXJuIGUmJihlPSJlbHNleyIrZSsifSIpLEMoWyJpZigiLHQsIil7IixhKCksIn0iLGVdKX19KX0sY29tcGlsZTpmdW5jdGlvbigpe3ZhciB0PVsnInVzZSBzdHJpY3QiOycsaSwicmV0dXJuIHsiXTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucHVzaCgnIicsZSwnIjonLG9bZV0udG9TdHJpbmcoKSwiLCIpfSksdC5wdXNoKCJ9Iik7dmFyIGU9Qyh0KS5yZXBsYWNlKC87L2csIjtcbiIpLnJlcGxhY2UoL30vZywifVxuIikucmVwbGFjZSgvey9nLCJ7XG4iKTtyZXR1cm4gRnVuY3Rpb24uYXBwbHkobnVsbCxuLmNvbmNhdChlKSkuYXBwbHkobnVsbCxhKX19fWZ1bmN0aW9uIE8odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl8fFcodCl8fGwodCl9ZnVuY3Rpb24geih0KXtyZXR1cm4gdC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuInZpZXdwb3J0Ij09PXQ/LTE6InZpZXdwb3J0Ij09PWU/MTp0PGU/LTE6MX0pfWZ1bmN0aW9uIEkodCxlLHIsbil7dGhpcy50aGlzRGVwPXQsdGhpcy5jb250ZXh0RGVwPWUsdGhpcy5wcm9wRGVwPXIsdGhpcy5hcHBlbmQ9bn1mdW5jdGlvbiBEKHQpe3JldHVybiB0JiYhKHQudGhpc0RlcHx8dC5jb250ZXh0RGVwfHx0LnByb3BEZXApfWZ1bmN0aW9uIFIodCl7cmV0dXJuIG5ldyBJKCExLCExLCExLHQpfWZ1bmN0aW9uIEYodCxlKXt2YXIgcj10LnR5cGU7cmV0dXJuIDA9PT1yP25ldyBJKCEwLDE8PShyPXQuZGF0YS5sZW5ndGgpLDI8PXIsZSk6ND09PXI/bmV3IEkoKHI9dC5kYXRhKS50aGlzRGVwLHIuY29udGV4dERlcCxyLnByb3BEZXAsZSk6bmV3IEkoMz09PXIsMj09PXIsMT09PXIsZSl9ZnVuY3Rpb24gQih0LGUscixuLGEsbyxzLGwsYyx1LGgsZixwLGQsZyl7ZnVuY3Rpb24gbSh0KXtyZXR1cm4gdC5yZXBsYWNlKCIuIiwiXyIpfWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPW0odCk7bnQucHVzaCh0KSxldFtuXT10dFtuXT0hIXIsYXRbbl09ZX1mdW5jdGlvbiB4KHQsZSxyKXt2YXIgbj1tKHQpO250LnB1c2godCksQXJyYXkuaXNBcnJheShyKT8odHRbbl09ci5zbGljZSgpLGV0W25dPXIuc2xpY2UoKSk6dHRbbl09ZXRbbl09cixpdFtuXT1lfWZ1bmN0aW9uIGIoKXt2YXIgdD1QKCkscj10Lmxpbmssbj10Lmdsb2JhbDt0LmlkPWx0KyssdC5iYXRjaElkPSIwIjt2YXIgYT1yKG90KSxpPXQuc2hhcmVkPXtwcm9wczoiYTAifTtPYmplY3Qua2V5cyhvdCkuZm9yRWFjaChmdW5jdGlvbih0KXtpW3RdPW4uZGVmKGEsIi4iLHQpfSk7dmFyIG89dC5uZXh0PXt9LHM9dC5jdXJyZW50PXt9O09iamVjdC5rZXlzKGl0KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkodHRbdF0pJiYob1t0XT1uLmRlZihpLm5leHQsIi4iLHQpLHNbdF09bi5kZWYoaS5jdXJyZW50LCIuIix0KSl9KTt2YXIgbD10LmNvbnN0YW50cz17fTtPYmplY3Qua2V5cyhzdCkuZm9yRWFjaChmdW5jdGlvbih0KXtsW3RdPW4uZGVmKEpTT04uc3RyaW5naWZ5KHN0W3RdKSl9KSx0Lmludm9rZT1mdW5jdGlvbihlLG4pe3N3aXRjaChuLnR5cGUpe2Nhc2UgMDp2YXIgYT1bInRoaXMiLGkuY29udGV4dCxpLnByb3BzLHQuYmF0Y2hJZF07cmV0dXJuIGUuZGVmKHIobi5kYXRhKSwiLmNhbGwoIixhLnNsaWNlKDAsTWF0aC5tYXgobi5kYXRhLmxlbmd0aCsxLDQpKSwiKSIpO2Nhc2UgMTpyZXR1cm4gZS5kZWYoaS5wcm9wcyxuLmRhdGEpO2Nhc2UgMjpyZXR1cm4gZS5kZWYoaS5jb250ZXh0LG4uZGF0YSk7Y2FzZSAzOnJldHVybiBlLmRlZigidGhpcyIsbi5kYXRhKTtjYXNlIDQ6cmV0dXJuIG4uZGF0YS5hcHBlbmQodCxlKSxuLmRhdGEucmVmfX0sdC5hdHRyaWJDYWNoZT17fTt2YXIgYz17fTtyZXR1cm4gdC5zY29wZUF0dHJpYj1mdW5jdGlvbih0KXtpZigodD1lLmlkKHQpKWluIGMpcmV0dXJuIGNbdF07dmFyIG49dS5zY29wZVt0XTtyZXR1cm4gbnx8KG49dS5zY29wZVt0XT1uZXcgWiksY1t0XT1yKG4pfSx0fWZ1bmN0aW9uIF8odCxlKXt2YXIgcj10LnN0YXRpYyxuPXQuZHluYW1pYztpZigiZnJhbWVidWZmZXIiaW4gcil7dmFyIGE9ci5mcmFtZWJ1ZmZlcjtyZXR1cm4gYT8oYT1sLmdldEZyYW1lYnVmZmVyKGEpLFIoZnVuY3Rpb24odCxlKXt2YXIgcj10LmxpbmsoYSksbj10LnNoYXJlZDtyZXR1cm4gZS5zZXQobi5mcmFtZWJ1ZmZlciwiLm5leHQiLHIpLG49bi5jb250ZXh0LGUuc2V0KG4sIi5mcmFtZWJ1ZmZlcldpZHRoIixyKyIud2lkdGgiKSxlLnNldChuLCIuZnJhbWVidWZmZXJIZWlnaHQiLHIrIi5oZWlnaHQiKSxyfSkpOlIoZnVuY3Rpb24odCxlKXt2YXIgcj10LnNoYXJlZDtyZXR1cm4gZS5zZXQoci5mcmFtZWJ1ZmZlciwiLm5leHQiLCJudWxsIikscj1yLmNvbnRleHQsZS5zZXQociwiLmZyYW1lYnVmZmVyV2lkdGgiLHIrIi5kcmF3aW5nQnVmZmVyV2lkdGgiKSxlLnNldChyLCIuZnJhbWVidWZmZXJIZWlnaHQiLHIrIi5kcmF3aW5nQnVmZmVySGVpZ2h0IiksIm51bGwifSl9aWYoImZyYW1lYnVmZmVyImluIG4pe3ZhciBpPW4uZnJhbWVidWZmZXI7cmV0dXJuIEYoaSxmdW5jdGlvbih0LGUpe3ZhciByPXQuaW52b2tlKGUsaSksbj10LnNoYXJlZCxhPW4uZnJhbWVidWZmZXI7cj1lLmRlZihhLCIuZ2V0RnJhbWVidWZmZXIoIixyLCIpIik7cmV0dXJuIGUuc2V0KGEsIi5uZXh0IixyKSxuPW4uY29udGV4dCxlLnNldChuLCIuZnJhbWVidWZmZXJXaWR0aCIscisiPyIrcisiLndpZHRoOiIrbisiLmRyYXdpbmdCdWZmZXJXaWR0aCIpLGUuc2V0KG4sIi5mcmFtZWJ1ZmZlckhlaWdodCIscisiPyIrcisiLmhlaWdodDoiK24rIi5kcmF3aW5nQnVmZmVySGVpZ2h0Iikscn0pfXJldHVybiBudWxsfWZ1bmN0aW9uIHcodCl7ZnVuY3Rpb24gcih0KXtpZih0IGluIG4pe3ZhciByPWUuaWQoblt0XSk7cmV0dXJuKHQ9UihmdW5jdGlvbigpe3JldHVybiByfSkpLmlkPXIsdH1pZih0IGluIGEpe3ZhciBpPWFbdF07cmV0dXJuIEYoaSxmdW5jdGlvbih0LGUpe3ZhciByPXQuaW52b2tlKGUsaSk7cmV0dXJuIGUuZGVmKHQuc2hhcmVkLnN0cmluZ3MsIi5pZCgiLHIsIikiKX0pfXJldHVybiBudWxsfXZhciBuPXQuc3RhdGljLGE9dC5keW5hbWljLGk9cigiZnJhZyIpLG89cigidmVydCIpLHM9bnVsbDtyZXR1cm4gRChpKSYmRChvKT8ocz1oLnByb2dyYW0oby5pZCxpLmlkKSx0PVIoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5saW5rKHMpfSkpOnQ9bmV3IEkoaSYmaS50aGlzRGVwfHxvJiZvLnRoaXNEZXAsaSYmaS5jb250ZXh0RGVwfHxvJiZvLmNvbnRleHREZXAsaSYmaS5wcm9wRGVwfHxvJiZvLnByb3BEZXAsZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9dC5zaGFyZWQuc2hhZGVyO3JldHVybiByPWk/aS5hcHBlbmQodCxlKTplLmRlZihhLCIuIiwiZnJhZyIpLG49bz9vLmFwcGVuZCh0LGUpOmUuZGVmKGEsIi4iLCJ2ZXJ0IiksZS5kZWYoYSsiLnByb2dyYW0oIituKyIsIityKyIpIil9KSx7ZnJhZzppLHZlcnQ6byxwcm9nVmFyOnQscHJvZ3JhbTpzfX1mdW5jdGlvbiBrKHQsZSl7ZnVuY3Rpb24gcih0LGUpe2lmKHQgaW4gbil7dmFyIHI9MHxuW3RdO3JldHVybiBSKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUmJih0Lk9GRlNFVD1yKSxyfSl9aWYodCBpbiBhKXt2YXIgbz1hW3RdO3JldHVybiBGKG8sZnVuY3Rpb24odCxyKXt2YXIgbj10Lmludm9rZShyLG8pO3JldHVybiBlJiYodC5PRkZTRVQ9biksbn0pfXJldHVybiBlJiZpP1IoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5PRkZTRVQ9IjAiLDB9KTpudWxsfXZhciBuPXQuc3RhdGljLGE9dC5keW5hbWljLGk9ZnVuY3Rpb24oKXtpZigiZWxlbWVudHMiaW4gbil7dmFyIHQ9bi5lbGVtZW50cztPKHQpP3Q9by5nZXRFbGVtZW50cyhvLmNyZWF0ZSh0LCEwKSk6dCYmKHQ9by5nZXRFbGVtZW50cyh0KSk7dmFyIGU9UihmdW5jdGlvbihlLHIpe2lmKHQpe3ZhciBuPWUubGluayh0KTtyZXR1cm4gZS5FTEVNRU5UUz1ufXJldHVybiBlLkVMRU1FTlRTPW51bGx9KTtyZXR1cm4gZS52YWx1ZT10LGV9aWYoImVsZW1lbnRzImluIGEpe3ZhciByPWEuZWxlbWVudHM7cmV0dXJuIEYocixmdW5jdGlvbih0LGUpe3ZhciBuPShhPXQuc2hhcmVkKS5pc0J1ZmZlckFyZ3MsYT1hLmVsZW1lbnRzLGk9dC5pbnZva2UoZSxyKSxvPWUuZGVmKCJudWxsIik7bj1lLmRlZihuLCIoIixpLCIpIiksaT10LmNvbmQobikudGhlbihvLCI9IixhLCIuY3JlYXRlU3RyZWFtKCIsaSwiKTsiKS5lbHNlKG8sIj0iLGEsIi5nZXRFbGVtZW50cygiLGksIik7Iik7cmV0dXJuIGUuZW50cnkoaSksZS5leGl0KHQuY29uZChuKS50aGVuKGEsIi5kZXN0cm95U3RyZWFtKCIsbywiKTsiKSksdC5FTEVNRU5UUz1vfSl9cmV0dXJuIG51bGx9KCkscz1yKCJvZmZzZXQiLCEwKTtyZXR1cm57ZWxlbWVudHM6aSxwcmltaXRpdmU6ZnVuY3Rpb24oKXtpZigicHJpbWl0aXZlImluIG4pe3ZhciB0PW4ucHJpbWl0aXZlO3JldHVybiBSKGZ1bmN0aW9uKGUscil7cmV0dXJuIHJ0W3RdfSl9aWYoInByaW1pdGl2ZSJpbiBhKXt2YXIgZT1hLnByaW1pdGl2ZTtyZXR1cm4gRihlLGZ1bmN0aW9uKHQscil7dmFyIG49dC5jb25zdGFudHMucHJpbVR5cGVzLGE9dC5pbnZva2UocixlKTtyZXR1cm4gci5kZWYobiwiWyIsYSwiXSIpfSl9cmV0dXJuIGk/RChpKT9pLnZhbHVlP1IoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5kZWYodC5FTEVNRU5UUywiLnByaW1UeXBlIil9KTpSKGZ1bmN0aW9uKCl7cmV0dXJuIDR9KTpuZXcgSShpLnRoaXNEZXAsaS5jb250ZXh0RGVwLGkucHJvcERlcCxmdW5jdGlvbih0LGUpe3ZhciByPXQuRUxFTUVOVFM7cmV0dXJuIGUuZGVmKHIsIj8iLHIsIi5wcmltVHlwZToiLDQpfSk6bnVsbH0oKSxjb3VudDpmdW5jdGlvbigpe2lmKCJjb3VudCJpbiBuKXt2YXIgdD0wfG4uY291bnQ7cmV0dXJuIFIoZnVuY3Rpb24oKXtyZXR1cm4gdH0pfWlmKCJjb3VudCJpbiBhKXt2YXIgZT1hLmNvdW50O3JldHVybiBGKGUsZnVuY3Rpb24odCxyKXtyZXR1cm4gdC5pbnZva2UocixlKX0pfXJldHVybiBpP0QoaSk/aT9zP25ldyBJKHMudGhpc0RlcCxzLmNvbnRleHREZXAscy5wcm9wRGVwLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZGVmKHQuRUxFTUVOVFMsIi52ZXJ0Q291bnQtIix0Lk9GRlNFVCl9KTpSKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZGVmKHQuRUxFTUVOVFMsIi52ZXJ0Q291bnQiKX0pOlIoZnVuY3Rpb24oKXtyZXR1cm4tMX0pOm5ldyBJKGkudGhpc0RlcHx8cy50aGlzRGVwLGkuY29udGV4dERlcHx8cy5jb250ZXh0RGVwLGkucHJvcERlcHx8cy5wcm9wRGVwLGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5FTEVNRU5UUztyZXR1cm4gdC5PRkZTRVQ/ZS5kZWYociwiPyIsciwiLnZlcnRDb3VudC0iLHQuT0ZGU0VULCI6LTEiKTplLmRlZihyLCI/IixyLCIudmVydENvdW50Oi0xIil9KTpudWxsfSgpLGluc3RhbmNlczpyKCJpbnN0YW5jZXMiLCExKSxvZmZzZXQ6c319ZnVuY3Rpb24gVCh0LHIpe3ZhciBuPXQuc3RhdGljLGk9dC5keW5hbWljLG89e307cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9blt0XSxpPWUuaWQodCkscz1uZXcgWjtpZihPKHIpKXMuc3RhdGU9MSxzLmJ1ZmZlcj1hLmdldEJ1ZmZlcihhLmNyZWF0ZShyLDM0OTYyLCExLCEwKSkscy50eXBlPTA7ZWxzZSBpZihjPWEuZ2V0QnVmZmVyKHIpKXMuc3RhdGU9MSxzLmJ1ZmZlcj1jLHMudHlwZT0wO2Vsc2UgaWYoImNvbnN0YW50ImluIHIpe3ZhciBsPXIuY29uc3RhbnQ7cy5idWZmZXI9Im51bGwiLHMuc3RhdGU9MiwibnVtYmVyIj09dHlwZW9mIGw/cy54PWw6YnQuZm9yRWFjaChmdW5jdGlvbih0LGUpe2U8bC5sZW5ndGgmJihzW3RdPWxbZV0pfSl9ZWxzZXt2YXIgYz1PKHIuYnVmZmVyKT9hLmdldEJ1ZmZlcihhLmNyZWF0ZShyLmJ1ZmZlciwzNDk2MiwhMSwhMCkpOmEuZ2V0QnVmZmVyKHIuYnVmZmVyKSx1PTB8ci5vZmZzZXQsaD0wfHIuc3RyaWRlLGY9MHxyLnNpemUscD0hIXIubm9ybWFsaXplZCxkPTA7InR5cGUiaW4gciYmKGQ9S1tyLnR5cGVdKSxyPTB8ci5kaXZpc29yLHMuYnVmZmVyPWMscy5zdGF0ZT0xLHMuc2l6ZT1mLHMubm9ybWFsaXplZD1wLHMudHlwZT1kfHxjLmR0eXBlLHMub2Zmc2V0PXUscy5zdHJpZGU9aCxzLmRpdmlzb3I9cn1vW3RdPVIoZnVuY3Rpb24odCxlKXt2YXIgcj10LmF0dHJpYkNhY2hlO2lmKGkgaW4gcilyZXR1cm4gcltpXTt2YXIgbj17aXNTdHJlYW06ITF9O3JldHVybiBPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe25bdF09c1t0XX0pLHMuYnVmZmVyJiYobi5idWZmZXI9dC5saW5rKHMuYnVmZmVyKSxuLnR5cGU9bi50eXBlfHxuLmJ1ZmZlcisiLmR0eXBlIikscltpXT1ufSl9KSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWlbdF07b1t0XT1GKGUsZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKHQpe3IobFt0XSwiPSIsYSwiLiIsdCwifDA7Iil9dmFyIGE9dC5pbnZva2UocixlKSxpPXQuc2hhcmVkLG89aS5pc0J1ZmZlckFyZ3Mscz1pLmJ1ZmZlcixsPXtpc1N0cmVhbTpyLmRlZighMSl9LGM9bmV3IFo7Yy5zdGF0ZT0xLE9iamVjdC5rZXlzKGMpLmZvckVhY2goZnVuY3Rpb24odCl7bFt0XT1yLmRlZigiIitjW3RdKX0pO3ZhciB1PWwuYnVmZmVyLGg9bC50eXBlO3JldHVybiByKCJpZigiLG8sIigiLGEsIikpeyIsbC5pc1N0cmVhbSwiPXRydWU7Iix1LCI9IixzLCIuY3JlYXRlU3RyZWFtKCIsMzQ5NjIsIiwiLGEsIik7IixoLCI9Iix1LCIuZHR5cGU7IiwifWVsc2V7Iix1LCI9IixzLCIuZ2V0QnVmZmVyKCIsYSwiKTsiLCJpZigiLHUsIil7IixoLCI9Iix1LCIuZHR5cGU7IiwnfWVsc2UgaWYoImNvbnN0YW50IiBpbiAnLGEsIil7IixsLnN0YXRlLCI9IiwyLCI7IiwiaWYodHlwZW9mICIrYSsnLmNvbnN0YW50ID09PSAibnVtYmVyIil7JyxsW2J0WzBdXSwiPSIsYSwiLmNvbnN0YW50OyIsYnQuc2xpY2UoMSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBsW3RdfSkuam9pbigiPSIpLCI9MDsiLCJ9ZWxzZXsiLGJ0Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBsW3RdKyI9IithKyIuY29uc3RhbnQubGVuZ3RoPiIrZSsiPyIrYSsiLmNvbnN0YW50WyIrZSsiXTowOyJ9KS5qb2luKCIiKSwifX1lbHNleyIsImlmKCIsbywiKCIsYSwiLmJ1ZmZlcikpeyIsdSwiPSIscywiLmNyZWF0ZVN0cmVhbSgiLDM0OTYyLCIsIixhLCIuYnVmZmVyKTsiLCJ9ZWxzZXsiLHUsIj0iLHMsIi5nZXRCdWZmZXIoIixhLCIuYnVmZmVyKTsiLCJ9IixoLCc9InR5cGUiIGluICcsYSwiPyIsaS5nbFR5cGVzLCJbIixhLCIudHlwZV06Iix1LCIuZHR5cGU7IixsLm5vcm1hbGl6ZWQsIj0hISIsYSwiLm5vcm1hbGl6ZWQ7Iiksbigic2l6ZSIpLG4oIm9mZnNldCIpLG4oInN0cmlkZSIpLG4oImRpdmlzb3IiKSxyKCJ9fSIpLHIuZXhpdCgiaWYoIixsLmlzU3RyZWFtLCIpeyIscywiLmRlc3Ryb3lTdHJlYW0oIix1LCIpOyIsIn0iKSxsfSl9KSxvfWZ1bmN0aW9uIE0odCxlLHIsbixhKXt2YXIgbz1fKHQpLHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7aWYodCBpbiBhKXt2YXIgcj1hW3RdO3Q9ITA7dmFyIG4sbyxzPTB8ci54LGw9MHxyLnk7cmV0dXJuIndpZHRoImluIHI/bj0wfHIud2lkdGg6dD0hMSwiaGVpZ2h0ImluIHI/bz0wfHIuaGVpZ2h0OnQ9ITEsbmV3IEkoIXQmJmUmJmUudGhpc0RlcCwhdCYmZSYmZS5jb250ZXh0RGVwLCF0JiZlJiZlLnByb3BEZXAsZnVuY3Rpb24odCxlKXt2YXIgYT10LnNoYXJlZC5jb250ZXh0LGk9bjsid2lkdGgiaW4gcnx8KGk9ZS5kZWYoYSwiLiIsImZyYW1lYnVmZmVyV2lkdGgiLCItIixzKSk7dmFyIGM9bztyZXR1cm4iaGVpZ2h0ImluIHJ8fChjPWUuZGVmKGEsIi4iLCJmcmFtZWJ1ZmZlckhlaWdodCIsIi0iLGwpKSxbcyxsLGksY119KX1pZih0IGluIGkpe3ZhciBjPWlbdF07cmV0dXJuIHQ9RihjLGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5pbnZva2UoZSxjKSxuPXQuc2hhcmVkLmNvbnRleHQsYT1lLmRlZihyLCIueHwwIiksaT1lLmRlZihyLCIueXwwIik7cmV0dXJuW2EsaSxlLmRlZignIndpZHRoIiBpbiAnLHIsIj8iLHIsIi53aWR0aHwwOiIsIigiLG4sIi4iLCJmcmFtZWJ1ZmZlcldpZHRoIiwiLSIsYSwiKSIpLHI9ZS5kZWYoJyJoZWlnaHQiIGluICcsciwiPyIsciwiLmhlaWdodHwwOiIsIigiLG4sIi4iLCJmcmFtZWJ1ZmZlckhlaWdodCIsIi0iLGksIikiKV19KSxlJiYodC50aGlzRGVwPXQudGhpc0RlcHx8ZS50aGlzRGVwLHQuY29udGV4dERlcD10LmNvbnRleHREZXB8fGUuY29udGV4dERlcCx0LnByb3BEZXA9dC5wcm9wRGVwfHxlLnByb3BEZXApLHR9cmV0dXJuIGU/bmV3IEkoZS50aGlzRGVwLGUuY29udGV4dERlcCxlLnByb3BEZXAsZnVuY3Rpb24odCxlKXt2YXIgcj10LnNoYXJlZC5jb250ZXh0O3JldHVyblswLDAsZS5kZWYociwiLiIsImZyYW1lYnVmZmVyV2lkdGgiKSxlLmRlZihyLCIuIiwiZnJhbWVidWZmZXJIZWlnaHQiKV19KTpudWxsfXZhciBhPXQuc3RhdGljLGk9dC5keW5hbWljO2lmKHQ9bigidmlld3BvcnQiKSl7dmFyIG89dDt0PW5ldyBJKHQudGhpc0RlcCx0LmNvbnRleHREZXAsdC5wcm9wRGVwLGZ1bmN0aW9uKHQsZSl7dmFyIHI9by5hcHBlbmQodCxlKSxuPXQuc2hhcmVkLmNvbnRleHQ7cmV0dXJuIGUuc2V0KG4sIi52aWV3cG9ydFdpZHRoIixyWzJdKSxlLnNldChuLCIudmlld3BvcnRIZWlnaHQiLHJbM10pLHJ9KX1yZXR1cm57dmlld3BvcnQ6dCxzY2lzc29yX2JveDpuKCJzY2lzc29yLmJveCIpfX0odCxvKSxsPWsodCksYz1mdW5jdGlvbih0LGUpe3ZhciByPXQuc3RhdGljLG49dC5keW5hbWljLGE9e307cmV0dXJuIG50LmZvckVhY2goZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLGkpe2lmKHQgaW4gcil7dmFyIHM9ZShyW3RdKTthW29dPVIoZnVuY3Rpb24oKXtyZXR1cm4gc30pfWVsc2UgaWYodCBpbiBuKXt2YXIgbD1uW3RdO2Fbb109RihsLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCxlLHQuaW52b2tlKGUsbCkpfSl9fXZhciBvPW0odCk7c3dpdGNoKHQpe2Nhc2UiY3VsbC5lbmFibGUiOmNhc2UiYmxlbmQuZW5hYmxlIjpjYXNlImRpdGhlciI6Y2FzZSJzdGVuY2lsLmVuYWJsZSI6Y2FzZSJkZXB0aC5lbmFibGUiOmNhc2Uic2Npc3Nvci5lbmFibGUiOmNhc2UicG9seWdvbk9mZnNldC5lbmFibGUiOmNhc2Uic2FtcGxlLmFscGhhIjpjYXNlInNhbXBsZS5lbmFibGUiOmNhc2UiZGVwdGgubWFzayI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuIHR9LGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcn0pO2Nhc2UiZGVwdGguZnVuYyI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuIGt0W3RdfSxmdW5jdGlvbih0LGUscil7cmV0dXJuIGUuZGVmKHQuY29uc3RhbnRzLmNvbXBhcmVGdW5jcywiWyIsciwiXSIpfSk7Y2FzZSJkZXB0aC5yYW5nZSI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuIHR9LGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm5bZS5kZWYoIisiLHIsIlswXSIpLGU9ZS5kZWYoIisiLHIsIlsxXSIpXX0pO2Nhc2UiYmxlbmQuZnVuYyI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuW3d0WyJzcmNSR0IiaW4gdD90LnNyY1JHQjp0LnNyY10sd3RbImRzdFJHQiJpbiB0P3QuZHN0UkdCOnQuZHN0XSx3dFsic3JjQWxwaGEiaW4gdD90LnNyY0FscGhhOnQuc3JjXSx3dFsiZHN0QWxwaGEiaW4gdD90LmRzdEFscGhhOnQuZHN0XV19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsbil7cmV0dXJuIGUuZGVmKCciJyx0LG4sJyIgaW4gJyxyLCI/IixyLCIuIix0LG4sIjoiLHIsIi4iLHQpfXQ9dC5jb25zdGFudHMuYmxlbmRGdW5jczt2YXIgYT1uKCJzcmMiLCJSR0IiKSxpPW4oImRzdCIsIlJHQiIpLG89KGE9ZS5kZWYodCwiWyIsYSwiXSIpLGUuZGVmKHQsIlsiLG4oInNyYyIsIkFscGhhIiksIl0iKSk7cmV0dXJuW2EsaT1lLmRlZih0LCJbIixpLCJdIiksbyx0PWUuZGVmKHQsIlsiLG4oImRzdCIsIkFscGhhIiksIl0iKV19KTtjYXNlImJsZW5kLmVxdWF0aW9uIjpyZXR1cm4gZShmdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/W0pbdF0sSlt0XV06Im9iamVjdCI9PXR5cGVvZiB0P1tKW3QucmdiXSxKW3QuYWxwaGFdXTp2b2lkIDB9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10LmNvbnN0YW50cy5ibGVuZEVxdWF0aW9ucyxhPWUuZGVmKCksaT1lLmRlZigpO3JldHVybih0PXQuY29uZCgidHlwZW9mICIsciwnPT09InN0cmluZyInKSkudGhlbihhLCI9IixpLCI9IixuLCJbIixyLCJdOyIpLHQuZWxzZShhLCI9IixuLCJbIixyLCIucmdiXTsiLGksIj0iLG4sIlsiLHIsIi5hbHBoYV07IiksZSh0KSxbYSxpXX0pO2Nhc2UiYmxlbmQuY29sb3IiOnJldHVybiBlKGZ1bmN0aW9uKHQpe3JldHVybiBpKDQsZnVuY3Rpb24oZSl7cmV0dXJuK3RbZV19KX0sZnVuY3Rpb24odCxlLHIpe3JldHVybiBpKDQsZnVuY3Rpb24odCl7cmV0dXJuIGUuZGVmKCIrIixyLCJbIix0LCJdIil9KX0pO2Nhc2Uic3RlbmNpbC5tYXNrIjpyZXR1cm4gZShmdW5jdGlvbih0KXtyZXR1cm4gMHx0fSxmdW5jdGlvbih0LGUscil7cmV0dXJuIGUuZGVmKHIsInwwIil9KTtjYXNlInN0ZW5jaWwuZnVuYyI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuW2t0W3QuY21wfHwia2VlcCJdLHQucmVmfHwwLCJtYXNrImluIHQ/dC5tYXNrOi0xXX0sZnVuY3Rpb24odCxlLHIpe3JldHVyblt0PWUuZGVmKCciY21wIiBpbiAnLHIsIj8iLHQuY29uc3RhbnRzLmNvbXBhcmVGdW5jcywiWyIsciwiLmNtcF0iLCI6Iiw3NjgwKSxlLmRlZihyLCIucmVmfDAiKSxlPWUuZGVmKCcibWFzayIgaW4gJyxyLCI/IixyLCIubWFza3wwOi0xIildfSk7Y2FzZSJzdGVuY2lsLm9wRnJvbnQiOmNhc2Uic3RlbmNpbC5vcEJhY2siOnJldHVybiBlKGZ1bmN0aW9uKGUpe3JldHVyblsic3RlbmNpbC5vcEJhY2siPT09dD8xMDI5OjEwMjgsVHRbZS5mYWlsfHwia2VlcCJdLFR0W2UuemZhaWx8fCJrZWVwIl0sVHRbZS56cGFzc3x8ImtlZXAiXV19LGZ1bmN0aW9uKGUscixuKXtmdW5jdGlvbiBhKHQpe3JldHVybiByLmRlZignIicsdCwnIiBpbiAnLG4sIj8iLGksIlsiLG4sIi4iLHQsIl06Iiw3NjgwKX12YXIgaT1lLmNvbnN0YW50cy5zdGVuY2lsT3BzO3JldHVyblsic3RlbmNpbC5vcEJhY2siPT09dD8xMDI5OjEwMjgsYSgiZmFpbCIpLGEoInpmYWlsIiksYSgienBhc3MiKV19KTtjYXNlInBvbHlnb25PZmZzZXQub2Zmc2V0IjpyZXR1cm4gZShmdW5jdGlvbih0KXtyZXR1cm5bMHx0LmZhY3RvciwwfHQudW5pdHNdfSxmdW5jdGlvbih0LGUscil7cmV0dXJuW2UuZGVmKHIsIi5mYWN0b3J8MCIpLGU9ZS5kZWYociwiLnVuaXRzfDAiKV19KTtjYXNlImN1bGwuZmFjZSI6cmV0dXJuIGUoZnVuY3Rpb24odCl7dmFyIGU9MDtyZXR1cm4iZnJvbnQiPT09dD9lPTEwMjg6ImJhY2siPT09dCYmKGU9MTAyOSksZX0sZnVuY3Rpb24odCxlLHIpe3JldHVybiBlLmRlZihyLCc9PT0iZnJvbnQiPycsMTAyOCwiOiIsMTAyOSl9KTtjYXNlImxpbmVXaWR0aCI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuIHR9LGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcn0pO2Nhc2UiZnJvbnRGYWNlIjpyZXR1cm4gZShmdW5jdGlvbih0KXtyZXR1cm4gTXRbdF19LGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZS5kZWYocisnPT09ImN3Ij8yMzA0OjIzMDUnKX0pO2Nhc2UiY29sb3JNYXNrIjpyZXR1cm4gZShmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuISF0fSl9LGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gaSg0LGZ1bmN0aW9uKHQpe3JldHVybiIhISIrcisiWyIrdCsiXSJ9KX0pO2Nhc2Uic2FtcGxlLmNvdmVyYWdlIjpyZXR1cm4gZShmdW5jdGlvbih0KXtyZXR1cm5bInZhbHVlImluIHQ/dC52YWx1ZToxLCEhdC5pbnZlcnRdfSxmdW5jdGlvbih0LGUscil7cmV0dXJuW2UuZGVmKCcidmFsdWUiIGluICcsciwiPysiLHIsIi52YWx1ZToxIiksZT1lLmRlZigiISEiLHIsIi5pbnZlcnQiKV19KX19KSxhfSh0KSx1PXcodCksaD1zLnZpZXdwb3J0O3JldHVybiBoJiYoYy52aWV3cG9ydD1oKSwocz1zW2g9bSgic2Npc3Nvci5ib3giKV0pJiYoY1toXT1zKSwobz17ZnJhbWVidWZmZXI6byxkcmF3Omwsc2hhZGVyOnUsc3RhdGU6YyxkaXJ0eTpzPTA8T2JqZWN0LmtleXMoYykubGVuZ3RofSkucHJvZmlsZT1mdW5jdGlvbih0KXt2YXIgZSxyPXQuc3RhdGljO2lmKHQ9dC5keW5hbWljLCJwcm9maWxlImluIHIpe3ZhciBuPSEhci5wcm9maWxlOyhlPVIoZnVuY3Rpb24odCxlKXtyZXR1cm4gbn0pKS5lbmFibGU9bn1lbHNlIGlmKCJwcm9maWxlImluIHQpe3ZhciBhPXQucHJvZmlsZTtlPUYoYSxmdW5jdGlvbih0LGUpe3JldHVybiB0Lmludm9rZShlLGEpfSl9cmV0dXJuIGV9KHQpLG8udW5pZm9ybXM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnN0YXRpYyxuPXQuZHluYW1pYyxhPXt9O3JldHVybiBPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlLG49clt0XTtpZigibnVtYmVyIj09dHlwZW9mIG58fCJib29sZWFuIj09dHlwZW9mIG4pZT1SKGZ1bmN0aW9uKCl7cmV0dXJuIG59KTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXt2YXIgbz1uLl9yZWdsVHlwZTsidGV4dHVyZTJkIj09PW98fCJ0ZXh0dXJlQ3ViZSI9PT1vP2U9UihmdW5jdGlvbih0KXtyZXR1cm4gdC5saW5rKG4pfSk6ImZyYW1lYnVmZmVyIiE9PW8mJiJmcmFtZWJ1ZmZlckN1YmUiIT09b3x8KGU9UihmdW5jdGlvbih0KXtyZXR1cm4gdC5saW5rKG4uY29sb3JbMF0pfSkpfWVsc2UgdihuKSYmKGU9UihmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWwuZGVmKCJbIixpKG4ubGVuZ3RoLGZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfSksIl0iKX0pKTtlLnZhbHVlPW4sYVt0XT1lfSksT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1uW3RdO2FbdF09RihlLGZ1bmN0aW9uKHQscil7cmV0dXJuIHQuaW52b2tlKHIsZSl9KX0pLGF9KHIpLG8uYXR0cmlidXRlcz1UKGUpLG8uY29udGV4dD1mdW5jdGlvbih0KXt2YXIgZT10LnN0YXRpYyxyPXQuZHluYW1pYyxuPXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPWVbdF07blt0XT1SKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiByfHwiYm9vbGVhbiI9PXR5cGVvZiByPyIiK3I6dC5saW5rKHIpfSl9KSxPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXJbdF07blt0XT1GKGUsZnVuY3Rpb24odCxyKXtyZXR1cm4gdC5pbnZva2UocixlKX0pfSksbn0obiksb31mdW5jdGlvbiBBKHQsZSxyKXt2YXIgbj10LnNoYXJlZC5jb250ZXh0LGE9dC5zY29wZSgpO09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oaSl7ZS5zYXZlKG4sIi4iK2kpLGEobiwiLiIsaSwiPSIscltpXS5hcHBlbmQodCxlKSwiOyIpfSksZShhKX1mdW5jdGlvbiBTKHQsZSxyLG4pe3ZhciBhLGk9KHM9dC5zaGFyZWQpLmdsLG89cy5mcmFtZWJ1ZmZlcjskJiYoYT1lLmRlZihzLmV4dGVuc2lvbnMsIi53ZWJnbF9kcmF3X2J1ZmZlcnMiKSk7dmFyIHM9KGw9dC5jb25zdGFudHMpLmRyYXdCdWZmZXIsbD1sLmJhY2tCdWZmZXI7dD1yP3IuYXBwZW5kKHQsZSk6ZS5kZWYobywiLm5leHQiKSxufHxlKCJpZigiLHQsIiE9PSIsbywiLmN1cil7IiksZSgiaWYoIix0LCIpeyIsaSwiLmJpbmRGcmFtZWJ1ZmZlcigiLDM2MTYwLCIsIix0LCIuZnJhbWVidWZmZXIpOyIpLCQmJmUoYSwiLmRyYXdCdWZmZXJzV0VCR0woIixzLCJbIix0LCIuY29sb3JBdHRhY2htZW50cy5sZW5ndGhdKTsiKSxlKCJ9ZWxzZXsiLGksIi5iaW5kRnJhbWVidWZmZXIoIiwzNjE2MCwiLG51bGwpOyIpLCQmJmUoYSwiLmRyYXdCdWZmZXJzV0VCR0woIixsLCIpOyIpLGUoIn0iLG8sIi5jdXI9Iix0LCI7Iiksbnx8ZSgifSIpfWZ1bmN0aW9uIEUodCxlLHIpe3ZhciBuPXQuc2hhcmVkLGE9bi5nbCxvPXQuY3VycmVudCxzPXQubmV4dCxsPW4uY3VycmVudCxjPW4ubmV4dCx1PXQuY29uZChsLCIuZGlydHkiKTtudC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuLGg7aWYoISgoZT1tKGUpKWluIHIuc3RhdGUpKWlmKGUgaW4gcyl7bj1zW2VdLGg9b1tlXTt2YXIgZj1pKHR0W2VdLmxlbmd0aCxmdW5jdGlvbih0KXtyZXR1cm4gdS5kZWYobiwiWyIsdCwiXSIpfSk7dSh0LmNvbmQoZi5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCsiIT09IitoKyJbIitlKyJdIn0pLmpvaW4oInx8IikpLnRoZW4oYSwiLiIsaXRbZV0sIigiLGYsIik7IixmLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBoKyJbIitlKyJdPSIrdH0pLmpvaW4oIjsiKSwiOyIpKX1lbHNlIG49dS5kZWYoYywiLiIsZSksZj10LmNvbmQobiwiIT09IixsLCIuIixlKSx1KGYpLGUgaW4gYXQ/Zih0LmNvbmQobikudGhlbihhLCIuZW5hYmxlKCIsYXRbZV0sIik7IikuZWxzZShhLCIuZGlzYWJsZSgiLGF0W2VdLCIpOyIpLGwsIi4iLGUsIj0iLG4sIjsiKTpmKGEsIi4iLGl0W2VdLCIoIixuLCIpOyIsbCwiLiIsZSwiPSIsbiwiOyIpfSksMD09PU9iamVjdC5rZXlzKHIuc3RhdGUpLmxlbmd0aCYmdShsLCIuZGlydHk9ZmFsc2U7IiksZSh1KX1mdW5jdGlvbiBMKHQsZSxyLG4pe3ZhciBhPXQuc2hhcmVkLGk9dC5jdXJyZW50LG89YS5jdXJyZW50LHM9YS5nbDt6KE9iamVjdC5rZXlzKHIpKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBsPXJbYV07aWYoIW58fG4obCkpe3ZhciBjPWwuYXBwZW5kKHQsZSk7aWYoYXRbYV0pe3ZhciB1PWF0W2FdO0QobCk/ZShzLGM/Ii5lbmFibGUoIjoiLmRpc2FibGUoIix1LCIpOyIpOmUodC5jb25kKGMpLnRoZW4ocywiLmVuYWJsZSgiLHUsIik7IikuZWxzZShzLCIuZGlzYWJsZSgiLHUsIik7IikpLGUobywiLiIsYSwiPSIsYywiOyIpfWVsc2UgaWYodihjKSl7dmFyIGg9aVthXTtlKHMsIi4iLGl0W2FdLCIoIixjLCIpOyIsYy5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gaCsiWyIrZSsiXT0iK3R9KS5qb2luKCI7IiksIjsiKX1lbHNlIGUocywiLiIsaXRbYV0sIigiLGMsIik7IixvLCIuIixhLCI9IixjLCI7Iil9fSl9ZnVuY3Rpb24gQyh0LGUpe1EmJih0Lmluc3RhbmNpbmc9ZS5kZWYodC5zaGFyZWQuZXh0ZW5zaW9ucywiLmFuZ2xlX2luc3RhbmNlZF9hcnJheXMiKSl9ZnVuY3Rpb24gQih0LGUscixuLGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHBlcmZvcm1hbmNlPyJEYXRlLm5vdygpIjoicGVyZm9ybWFuY2Uubm93KCkifWZ1bmN0aW9uIG8odCl7dChjPWUuZGVmKCksIj0iLGkoKSwiOyIpLCJzdHJpbmciPT10eXBlb2YgYT90KGYsIi5jb3VudCs9IixhLCI7Iik6dChmLCIuY291bnQrKzsiKSxkJiYobj90KHU9ZS5kZWYoKSwiPSIsZywiLmdldE51bVBlbmRpbmdRdWVyaWVzKCk7Iik6dChnLCIuYmVnaW5RdWVyeSgiLGYsIik7IikpfWZ1bmN0aW9uIHModCl7dChmLCIuY3B1VGltZSs9IixpKCksIi0iLGMsIjsiKSxkJiYobj90KGcsIi5wdXNoU2NvcGVTdGF0cygiLHUsIiwiLGcsIi5nZXROdW1QZW5kaW5nUXVlcmllcygpLCIsZiwiKTsiKTp0KGcsIi5lbmRRdWVyeSgpOyIpKX1mdW5jdGlvbiBsKHQpe3ZhciByPWUuZGVmKHAsIi5wcm9maWxlIik7ZShwLCIucHJvZmlsZT0iLHQsIjsiKSxlLmV4aXQocCwiLnByb2ZpbGU9IixyLCI7Iil9dmFyIGMsdSxoPXQuc2hhcmVkLGY9dC5zdGF0cyxwPWguY3VycmVudCxnPWgudGltZXI7aWYocj1yLnByb2ZpbGUpe2lmKEQocikpcmV0dXJuIHZvaWQoci5lbmFibGU/KG8oZSkscyhlLmV4aXQpLGwoInRydWUiKSk6bCgiZmFsc2UiKSk7bChyPXIuYXBwZW5kKHQsZSkpfWVsc2Ugcj1lLmRlZihwLCIucHJvZmlsZSIpO28oaD10LmJsb2NrKCkpLGUoImlmKCIsciwiKXsiLGgsIn0iKSxzKHQ9dC5ibG9jaygpKSxlLmV4aXQoImlmKCIsciwiKXsiLHQsIn0iKX1mdW5jdGlvbiBOKHQsZSxyLG4sYSl7ZnVuY3Rpb24gaShyLG4sYSl7ZnVuY3Rpb24gaSgpe2UoImlmKCEiLHUsIi5idWZmZXIpeyIsbCwiLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KCIsYywiKTt9Iik7dmFyIHIsaT1hLnR5cGU7cj1hLnNpemU/ZS5kZWYoYS5zaXplLCJ8fCIsbik6bixlKCJpZigiLHUsIi50eXBlIT09IixpLCJ8fCIsdSwiLnNpemUhPT0iLHIsInx8IixwLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdSsiLiIrdCsiIT09IithW3RdfSkuam9pbigifHwiKSwiKXsiLGwsIi5iaW5kQnVmZmVyKCIsMzQ5NjIsIiwiLGgsIi5idWZmZXIpOyIsbCwiLnZlcnRleEF0dHJpYlBvaW50ZXIoIixbYyxyLGksYS5ub3JtYWxpemVkLGEuc3RyaWRlLGEub2Zmc2V0XSwiKTsiLHUsIi50eXBlPSIsaSwiOyIsdSwiLnNpemU9IixyLCI7IixwLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdSsiLiIrdCsiPSIrYVt0XSsiOyJ9KS5qb2luKCIiKSwifSIpLFEmJihpPWEuZGl2aXNvcixlKCJpZigiLHUsIi5kaXZpc29yIT09IixpLCIpeyIsdC5pbnN0YW5jaW5nLCIudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKCIsW2MsaV0sIik7Iix1LCIuZGl2aXNvcj0iLGksIjt9IikpfWZ1bmN0aW9uIHMoKXtlKCJpZigiLHUsIi5idWZmZXIpeyIsbCwiLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgiLGMsIik7IiwifWlmKCIsYnQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHUrIi4iK3QrIiE9PSIrZltlXX0pLmpvaW4oInx8IiksIil7IixsLCIudmVydGV4QXR0cmliNGYoIixjLCIsIixmLCIpOyIsYnQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHUrIi4iK3QrIj0iK2ZbZV0rIjsifSkuam9pbigiIiksIn0iKX12YXIgbD1vLmdsLGM9ZS5kZWYociwiLmxvY2F0aW9uIiksdT1lLmRlZihvLmF0dHJpYnV0ZXMsIlsiLGMsIl0iKTtyPWEuc3RhdGU7dmFyIGg9YS5idWZmZXIsZj1bYS54LGEueSxhLnosYS53XSxwPVsiYnVmZmVyIiwibm9ybWFsaXplZCIsIm9mZnNldCIsInN0cmlkZSJdOzE9PT1yP2koKToyPT09cj9zKCk6KGUoImlmKCIsciwiPT09IiwxLCIpeyIpLGkoKSxlKCJ9ZWxzZXsiKSxzKCksZSgifSIpKX12YXIgbz10LnNoYXJlZDtuLmZvckVhY2goZnVuY3Rpb24obil7dmFyIG8scz1uLm5hbWUsbD1yLmF0dHJpYnV0ZXNbc107aWYobCl7aWYoIWEobCkpcmV0dXJuO289bC5hcHBlbmQodCxlKX1lbHNle2lmKCFhKEF0KSlyZXR1cm47dmFyIGM9dC5zY29wZUF0dHJpYihzKTtvPXt9LE9iamVjdC5rZXlzKG5ldyBaKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe29bdF09ZS5kZWYoYywiLiIsdCl9KX1pKHQubGluayhuKSxmdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSAzNTY2NDpjYXNlIDM1NjY3OmNhc2UgMzU2NzE6cmV0dXJuIDI7Y2FzZSAzNTY2NTpjYXNlIDM1NjY4OmNhc2UgMzU2NzI6cmV0dXJuIDM7Y2FzZSAzNTY2NjpjYXNlIDM1NjY5OmNhc2UgMzU2NzM6cmV0dXJuIDQ7ZGVmYXVsdDpyZXR1cm4gMX19KG4uaW5mby50eXBlKSxvKX0pfWZ1bmN0aW9uIGoodCxyLG4sYSxvKXtmb3IodmFyIHMsbD10LnNoYXJlZCxjPWwuZ2wsdT0wO3U8YS5sZW5ndGg7Kyt1KXt2YXIgaCxmPShnPWFbdV0pLm5hbWUscD1nLmluZm8udHlwZSxkPW4udW5pZm9ybXNbZl0sZz10LmxpbmsoZykrIi5sb2NhdGlvbiI7aWYoZCl7aWYoIW8oZCkpY29udGludWU7aWYoRChkKSl7aWYoZj1kLnZhbHVlLDM1Njc4PT09cHx8MzU2ODA9PT1wKXIoYywiLnVuaWZvcm0xaSgiLGcsIiwiLChwPXQubGluayhmLl90ZXh0dXJlfHxmLmNvbG9yWzBdLl90ZXh0dXJlKSkrIi5iaW5kKCkpOyIpLHIuZXhpdChwLCIudW5iaW5kKCk7Iik7ZWxzZSBpZigzNTY3ND09PXB8fDM1Njc1PT09cHx8MzU2NzY9PT1wKWQ9MiwzNTY3NT09PXA/ZD0zOjM1Njc2PT09cCYmKGQ9NCkscihjLCIudW5pZm9ybU1hdHJpeCIsZCwiZnYoIixnLCIsZmFsc2UsIixmPXQuZ2xvYmFsLmRlZigibmV3IEZsb2F0MzJBcnJheShbIitBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmKSsiXSkiKSwiKTsiKTtlbHNle3N3aXRjaChwKXtjYXNlIDUxMjY6cz0iMWYiO2JyZWFrO2Nhc2UgMzU2NjQ6cz0iMmYiO2JyZWFrO2Nhc2UgMzU2NjU6cz0iM2YiO2JyZWFrO2Nhc2UgMzU2NjY6cz0iNGYiO2JyZWFrO2Nhc2UgMzU2NzA6Y2FzZSA1MTI0OnM9IjFpIjticmVhaztjYXNlIDM1NjcxOmNhc2UgMzU2Njc6cz0iMmkiO2JyZWFrO2Nhc2UgMzU2NzI6Y2FzZSAzNTY2ODpzPSIzaSI7YnJlYWs7Y2FzZSAzNTY3MzpzPSI0aSI7YnJlYWs7Y2FzZSAzNTY2OTpzPSI0aSJ9cihjLCIudW5pZm9ybSIscywiKCIsZywiLCIsdihmKT9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmKTpmLCIpOyIpfWNvbnRpbnVlfWg9ZC5hcHBlbmQodCxyKX1lbHNle2lmKCFvKEF0KSljb250aW51ZTtoPXIuZGVmKGwudW5pZm9ybXMsIlsiLGUuaWQoZiksIl0iKX1zd2l0Y2goMzU2Nzg9PT1wP3IoImlmKCIsaCwiJiYiLGgsJy5fcmVnbFR5cGU9PT0iZnJhbWVidWZmZXIiKXsnLGgsIj0iLGgsIi5jb2xvclswXTsiLCJ9Iik6MzU2ODA9PT1wJiZyKCJpZigiLGgsIiYmIixoLCcuX3JlZ2xUeXBlPT09ImZyYW1lYnVmZmVyQ3ViZSIpeycsaCwiPSIsaCwiLmNvbG9yWzBdOyIsIn0iKSxmPTEscCl7Y2FzZSAzNTY3ODpjYXNlIDM1NjgwOnA9ci5kZWYoaCwiLl90ZXh0dXJlIikscihjLCIudW5pZm9ybTFpKCIsZywiLCIscCwiLmJpbmQoKSk7Iiksci5leGl0KHAsIi51bmJpbmQoKTsiKTtjb250aW51ZTtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpzPSIxaSI7YnJlYWs7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnM9IjJpIixmPTI7YnJlYWs7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnM9IjNpIixmPTM7YnJlYWs7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnM9IjRpIixmPTQ7YnJlYWs7Y2FzZSA1MTI2OnM9IjFmIjticmVhaztjYXNlIDM1NjY0OnM9IjJmIixmPTI7YnJlYWs7Y2FzZSAzNTY2NTpzPSIzZiIsZj0zO2JyZWFrO2Nhc2UgMzU2NjY6cz0iNGYiLGY9NDticmVhaztjYXNlIDM1Njc0OnM9Ik1hdHJpeDJmdiI7YnJlYWs7Y2FzZSAzNTY3NTpzPSJNYXRyaXgzZnYiO2JyZWFrO2Nhc2UgMzU2NzY6cz0iTWF0cml4NGZ2In1pZihyKGMsIi51bmlmb3JtIixzLCIoIixnLCIsIiksIk0iPT09cy5jaGFyQXQoMCkpe2c9TWF0aC5wb3cocC0zNTY3NCsyLDIpO3ZhciBtPXQuZ2xvYmFsLmRlZigibmV3IEZsb2F0MzJBcnJheSgiLGcsIikiKTtyKCJmYWxzZSwoQXJyYXkuaXNBcnJheSgiLGgsIil8fCIsaCwiIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KT8iLGgsIjooIixpKGcsZnVuY3Rpb24odCl7cmV0dXJuIG0rIlsiK3QrIl09IitoKyJbIit0KyJdIn0pLCIsIixtLCIpIil9ZWxzZSByKDE8Zj9pKGYsZnVuY3Rpb24odCl7cmV0dXJuIGgrIlsiK3QrIl0ifSk6aCk7cigiKTsiKX19ZnVuY3Rpb24gVih0LGUscixuKXtmdW5jdGlvbiBhKGEpe3ZhciBpPWZbYV07cmV0dXJuIGk/aS5jb250ZXh0RGVwJiZuLmNvbnRleHREeW5hbWljfHxpLnByb3BEZXA/aS5hcHBlbmQodCxyKTppLmFwcGVuZCh0LGUpOmUuZGVmKGgsIi4iLGEpfWZ1bmN0aW9uIGkoKXtmdW5jdGlvbiB0KCl7cihsLCIuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoIixbZCx2LG0sZysiPDwoKCIrbSsiLTUxMjEpPj4xKSIsc10sIik7Iil9ZnVuY3Rpb24gZSgpe3IobCwiLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSgiLFtkLGcsdixzXSwiKTsiKX1wP3k/dCgpOihyKCJpZigiLHAsIil7IiksdCgpLHIoIn1lbHNleyIpLGUoKSxyKCJ9IikpOmUoKX1mdW5jdGlvbiBvKCl7ZnVuY3Rpb24gdCgpe3IodSsiLmRyYXdFbGVtZW50cygiK1tkLHYsbSxnKyI8PCgoIittKyItNTEyMSk+PjEpIl0rIik7Iil9ZnVuY3Rpb24gZSgpe3IodSsiLmRyYXdBcnJheXMoIitbZCxnLHZdKyIpOyIpfXA/eT90KCk6KHIoImlmKCIscCwiKXsiKSx0KCkscigifWVsc2V7IiksZSgpLHIoIn0iKSk6ZSgpfXZhciBzLGwsYz10LnNoYXJlZCx1PWMuZ2wsaD1jLmRyYXcsZj1uLmRyYXcscD1mdW5jdGlvbigpe3ZhciBhPWYuZWxlbWVudHMsaT1lO3JldHVybiBhPygoYS5jb250ZXh0RGVwJiZuLmNvbnRleHREeW5hbWljfHxhLnByb3BEZXApJiYoaT1yKSxhPWEuYXBwZW5kKHQsaSkpOmE9aS5kZWYoaCwiLiIsImVsZW1lbnRzIiksYSYmaSgiaWYoIithKyIpIit1KyIuYmluZEJ1ZmZlcigzNDk2MywiK2ErIi5idWZmZXIuYnVmZmVyKTsiKSxhfSgpLGQ9YSgicHJpbWl0aXZlIiksZz1hKCJvZmZzZXQiKSx2PWZ1bmN0aW9uKCl7dmFyIGE9Zi5jb3VudCxpPWU7cmV0dXJuIGE/KChhLmNvbnRleHREZXAmJm4uY29udGV4dER5bmFtaWN8fGEucHJvcERlcCkmJihpPXIpLGE9YS5hcHBlbmQodCxpKSk6YT1pLmRlZihoLCIuIiwiY291bnQiKSxhfSgpO2lmKCJudW1iZXIiPT10eXBlb2Ygdil7aWYoMD09PXYpcmV0dXJufWVsc2UgcigiaWYoIix2LCIpeyIpLHIuZXhpdCgifSIpO1EmJihzPWEoImluc3RhbmNlcyIpLGw9dC5pbnN0YW5jaW5nKTt2YXIgbT1wKyIudHlwZSIseT1mLmVsZW1lbnRzJiZEKGYuZWxlbWVudHMpO1EmJigibnVtYmVyIiE9dHlwZW9mIHN8fDA8PXMpPyJzdHJpbmciPT10eXBlb2Ygcz8ocigiaWYoIixzLCI+MCl7IiksaSgpLHIoIn1lbHNlIGlmKCIscywiPDApeyIpLG8oKSxyKCJ9IikpOmkoKTpvKCl9ZnVuY3Rpb24gcSh0LGUscixuLGEpe3JldHVybiBhPShlPWIoKSkucHJvYygiYm9keSIsYSksUSYmKGUuaW5zdGFuY2luZz1hLmRlZihlLnNoYXJlZC5leHRlbnNpb25zLCIuYW5nbGVfaW5zdGFuY2VkX2FycmF5cyIpKSx0KGUsYSxyLG4pLGUuY29tcGlsZSgpLmJvZHl9ZnVuY3Rpb24gSCh0LGUscixuKXtDKHQsZSksTih0LGUscixuLmF0dHJpYnV0ZXMsZnVuY3Rpb24oKXtyZXR1cm4hMH0pLGoodCxlLHIsbi51bmlmb3JtcyxmdW5jdGlvbigpe3JldHVybiEwfSksVih0LGUsZSxyKX1mdW5jdGlvbiBHKHQsZSxyLG4pe2Z1bmN0aW9uIGEoKXtyZXR1cm4hMH10LmJhdGNoSWQ9ImExIixDKHQsZSksTih0LGUscixuLmF0dHJpYnV0ZXMsYSksaih0LGUscixuLnVuaWZvcm1zLGEpLFYodCxlLGUscil9ZnVuY3Rpb24gWSh0LGUscixuKXtmdW5jdGlvbiBhKHQpe3JldHVybiB0LmNvbnRleHREZXAmJm98fHQucHJvcERlcH1mdW5jdGlvbiBpKHQpe3JldHVybiFhKHQpfUModCxlKTt2YXIgbz1yLmNvbnRleHREZXAscz1lLmRlZigpLGw9ZS5kZWYoKTt0LnNoYXJlZC5wcm9wcz1sLHQuYmF0Y2hJZD1zO3ZhciBjPXQuc2NvcGUoKSx1PXQuc2NvcGUoKTtlKGMuZW50cnksImZvcigiLHMsIj0wOyIscywiPCIsImExIiwiOysrIixzLCIpeyIsbCwiPSIsImEwIiwiWyIscywiXTsiLHUsIn0iLGMuZXhpdCksci5uZWVkc0NvbnRleHQmJkEodCx1LHIuY29udGV4dCksci5uZWVkc0ZyYW1lYnVmZmVyJiZTKHQsdSxyLmZyYW1lYnVmZmVyKSxMKHQsdSxyLnN0YXRlLGEpLHIucHJvZmlsZSYmYShyLnByb2ZpbGUpJiZCKHQsdSxyLCExLCEwKSxuPyhOKHQsYyxyLG4uYXR0cmlidXRlcyxpKSxOKHQsdSxyLG4uYXR0cmlidXRlcyxhKSxqKHQsYyxyLG4udW5pZm9ybXMsaSksaih0LHUscixuLnVuaWZvcm1zLGEpLFYodCxjLHUscikpOihlPXQuZ2xvYmFsLmRlZigie30iKSxuPXIuc2hhZGVyLnByb2dWYXIuYXBwZW5kKHQsdSksbD11LmRlZihuLCIuaWQiKSxjPXUuZGVmKGUsIlsiLGwsIl0iKSx1KHQuc2hhcmVkLmdsLCIudXNlUHJvZ3JhbSgiLG4sIi5wcm9ncmFtKTsiLCJpZighIixjLCIpeyIsYywiPSIsZSwiWyIsbCwiXT0iLHQubGluayhmdW5jdGlvbihlKXtyZXR1cm4gcShHLHQscixlLDIpfSksIigiLG4sIik7fSIsYywiLmNhbGwodGhpcyxhMFsiLHMsIl0sIixzLCIpOyIpKX1mdW5jdGlvbiBXKHQscil7ZnVuY3Rpb24gbihlKXt2YXIgbj1yLnNoYWRlcltlXTtuJiZhLnNldChpLnNoYWRlciwiLiIrZSxuLmFwcGVuZCh0LGEpKX12YXIgYT10LnByb2MoInNjb3BlIiwzKTt0LmJhdGNoSWQ9ImEyIjt2YXIgaT10LnNoYXJlZCxvPWkuY3VycmVudDtBKHQsYSxyLmNvbnRleHQpLHIuZnJhbWVidWZmZXImJnIuZnJhbWVidWZmZXIuYXBwZW5kKHQsYSkseihPYmplY3Qua2V5cyhyLnN0YXRlKSkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbj1yLnN0YXRlW2VdLmFwcGVuZCh0LGEpO3Yobik/bi5mb3JFYWNoKGZ1bmN0aW9uKHIsbil7YS5zZXQodC5uZXh0W2VdLCJbIituKyJdIixyKX0pOmEuc2V0KGkubmV4dCwiLiIrZSxuKX0pLEIodCxhLHIsITAsITApLFsiZWxlbWVudHMiLCJvZmZzZXQiLCJjb3VudCIsImluc3RhbmNlcyIsInByaW1pdGl2ZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49ci5kcmF3W2VdO24mJmEuc2V0KGkuZHJhdywiLiIrZSwiIituLmFwcGVuZCh0LGEpKX0pLE9iamVjdC5rZXlzKHIudW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24obil7YS5zZXQoaS51bmlmb3JtcywiWyIrZS5pZChuKSsiXSIsci51bmlmb3Jtc1tuXS5hcHBlbmQodCxhKSl9KSxPYmplY3Qua2V5cyhyLmF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49ci5hdHRyaWJ1dGVzW2VdLmFwcGVuZCh0LGEpLGk9dC5zY29wZUF0dHJpYihlKTtPYmplY3Qua2V5cyhuZXcgWikuZm9yRWFjaChmdW5jdGlvbih0KXthLnNldChpLCIuIit0LG5bdF0pfSl9KSxuKCJ2ZXJ0IiksbigiZnJhZyIpLDA8T2JqZWN0LmtleXMoci5zdGF0ZSkubGVuZ3RoJiYoYShvLCIuZGlydHk9dHJ1ZTsiKSxhLmV4aXQobywiLmRpcnR5PXRydWU7IikpLGEoImExKCIsdC5zaGFyZWQuY29udGV4dCwiLGEwLCIsdC5iYXRjaElkLCIpOyIpfWZ1bmN0aW9uIFgodCxlLHIpe3ZhciBuPWUuc3RhdGljW3JdO2lmKG4mJmZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdCYmIXYodCkpe2Zvcih2YXIgZT1PYmplY3Qua2V5cyh0KSxyPTA7cjxlLmxlbmd0aDsrK3IpaWYoVS5pc0R5bmFtaWModFtlW3JdXSkpcmV0dXJuITA7cmV0dXJuITF9fShuKSl7dmFyIGE9dC5nbG9iYWwsaT1PYmplY3Qua2V5cyhuKSxvPSExLHM9ITEsbD0hMSxjPXQuZ2xvYmFsLmRlZigie30iKTtpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHI9bltlXTtpZihVLmlzRHluYW1pYyhyKSkiZnVuY3Rpb24iPT10eXBlb2YgciYmKHI9bltlXT1VLnVuYm94KHIpKSxlPUYocixudWxsKSxvPW98fGUudGhpc0RlcCxsPWx8fGUucHJvcERlcCxzPXN8fGUuY29udGV4dERlcDtlbHNle3N3aXRjaChhKGMsIi4iLGUsIj0iKSx0eXBlb2Ygcil7Y2FzZSJudW1iZXIiOmEocik7YnJlYWs7Y2FzZSJzdHJpbmciOmEoJyInLHIsJyInKTticmVhaztjYXNlIm9iamVjdCI6QXJyYXkuaXNBcnJheShyKSYmYSgiWyIsci5qb2luKCksIl0iKTticmVhaztkZWZhdWx0OmEodC5saW5rKHIpKX1hKCI7Iil9fSksZS5keW5hbWljW3JdPW5ldyBVLkR5bmFtaWNWYXJpYWJsZSg0LHt0aGlzRGVwOm8sY29udGV4dERlcDpzLHByb3BEZXA6bCxyZWY6YyxhcHBlbmQ6ZnVuY3Rpb24odCxlKXtpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIGE9bltyXTtVLmlzRHluYW1pYyhhKSYmKGE9dC5pbnZva2UoZSxhKSxlKGMsIi4iLHIsIj0iLGEsIjsiKSl9KX19KSxkZWxldGUgZS5zdGF0aWNbcl19fXZhciBaPXUuUmVjb3JkLEo9e2FkZDozMjc3NCxzdWJ0cmFjdDozMjc3OCwicmV2ZXJzZSBzdWJ0cmFjdCI6MzI3Nzl9O3IuZXh0X2JsZW5kX21pbm1heCYmKEoubWluPTMyNzc1LEoubWF4PTMyNzc2KTt2YXIgUT1yLmFuZ2xlX2luc3RhbmNlZF9hcnJheXMsJD1yLndlYmdsX2RyYXdfYnVmZmVycyx0dD17ZGlydHk6ITAscHJvZmlsZTpnLnByb2ZpbGV9LGV0PXt9LG50PVtdLGF0PXt9LGl0PXt9O3koImRpdGhlciIsMzAyNCkseSgiYmxlbmQuZW5hYmxlIiwzMDQyKSx4KCJibGVuZC5jb2xvciIsImJsZW5kQ29sb3IiLFswLDAsMCwwXSkseCgiYmxlbmQuZXF1YXRpb24iLCJibGVuZEVxdWF0aW9uU2VwYXJhdGUiLFszMjc3NCwzMjc3NF0pLHgoImJsZW5kLmZ1bmMiLCJibGVuZEZ1bmNTZXBhcmF0ZSIsWzEsMCwxLDBdKSx5KCJkZXB0aC5lbmFibGUiLDI5MjksITApLHgoImRlcHRoLmZ1bmMiLCJkZXB0aEZ1bmMiLDUxMykseCgiZGVwdGgucmFuZ2UiLCJkZXB0aFJhbmdlIixbMCwxXSkseCgiZGVwdGgubWFzayIsImRlcHRoTWFzayIsITApLHgoImNvbG9yTWFzayIsImNvbG9yTWFzayIsWyEwLCEwLCEwLCEwXSkseSgiY3VsbC5lbmFibGUiLDI4ODQpLHgoImN1bGwuZmFjZSIsImN1bGxGYWNlIiwxMDI5KSx4KCJmcm9udEZhY2UiLCJmcm9udEZhY2UiLDIzMDUpLHgoImxpbmVXaWR0aCIsImxpbmVXaWR0aCIsMSkseSgicG9seWdvbk9mZnNldC5lbmFibGUiLDMyODIzKSx4KCJwb2x5Z29uT2Zmc2V0Lm9mZnNldCIsInBvbHlnb25PZmZzZXQiLFswLDBdKSx5KCJzYW1wbGUuYWxwaGEiLDMyOTI2KSx5KCJzYW1wbGUuZW5hYmxlIiwzMjkyOCkseCgic2FtcGxlLmNvdmVyYWdlIiwic2FtcGxlQ292ZXJhZ2UiLFsxLCExXSkseSgic3RlbmNpbC5lbmFibGUiLDI5NjApLHgoInN0ZW5jaWwubWFzayIsInN0ZW5jaWxNYXNrIiwtMSkseCgic3RlbmNpbC5mdW5jIiwic3RlbmNpbEZ1bmMiLFs1MTksMCwtMV0pLHgoInN0ZW5jaWwub3BGcm9udCIsInN0ZW5jaWxPcFNlcGFyYXRlIixbMTAyOCw3NjgwLDc2ODAsNzY4MF0pLHgoInN0ZW5jaWwub3BCYWNrIiwic3RlbmNpbE9wU2VwYXJhdGUiLFsxMDI5LDc2ODAsNzY4MCw3NjgwXSkseSgic2Npc3Nvci5lbmFibGUiLDMwODkpLHgoInNjaXNzb3IuYm94Iiwic2Npc3NvciIsWzAsMCx0LmRyYXdpbmdCdWZmZXJXaWR0aCx0LmRyYXdpbmdCdWZmZXJIZWlnaHRdKSx4KCJ2aWV3cG9ydCIsInZpZXdwb3J0IixbMCwwLHQuZHJhd2luZ0J1ZmZlcldpZHRoLHQuZHJhd2luZ0J1ZmZlckhlaWdodF0pO3ZhciBvdD17Z2w6dCxjb250ZXh0OnAsc3RyaW5nczplLG5leHQ6ZXQsY3VycmVudDp0dCxkcmF3OmYsZWxlbWVudHM6byxidWZmZXI6YSxzaGFkZXI6aCxhdHRyaWJ1dGVzOnUuc3RhdGUsdW5pZm9ybXM6YyxmcmFtZWJ1ZmZlcjpsLGV4dGVuc2lvbnM6cix0aW1lcjpkLGlzQnVmZmVyQXJnczpPfSxzdD17cHJpbVR5cGVzOnJ0LGNvbXBhcmVGdW5jczprdCxibGVuZEZ1bmNzOnd0LGJsZW5kRXF1YXRpb25zOkosc3RlbmNpbE9wczpUdCxnbFR5cGVzOkssb3JpZW50YXRpb25UeXBlOk10fTskJiYoc3QuYmFja0J1ZmZlcj1bMTAyOV0sc3QuZHJhd0J1ZmZlcj1pKG4ubWF4RHJhd2J1ZmZlcnMsZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10P1swXTppKHQsZnVuY3Rpb24odCl7cmV0dXJuIDM2MDY0K3R9KX0pKTt2YXIgbHQ9MDtyZXR1cm57bmV4dDpldCxjdXJyZW50OnR0LHByb2NzOmZ1bmN0aW9uKCl7dmFyIHQ9YigpLGU9dC5wcm9jKCJwb2xsIikscj10LnByb2MoInJlZnJlc2giKSxhPXQuYmxvY2soKTtlKGEpLHIoYSk7dmFyIG8scz10LnNoYXJlZCxsPXMuZ2wsYz1zLm5leHQsdT1zLmN1cnJlbnQ7YSh1LCIuZGlydHk9ZmFsc2U7IiksUyh0LGUpLFModCxyLG51bGwsITApLFEmJihvPXQubGluayhRKSk7Zm9yKHZhciBoPTA7aDxuLm1heEF0dHJpYnV0ZXM7KytoKXt2YXIgZj1yLmRlZihzLmF0dHJpYnV0ZXMsIlsiLGgsIl0iKSxwPXQuY29uZChmLCIuYnVmZmVyIik7cC50aGVuKGwsIi5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgiLGgsIik7IixsLCIuYmluZEJ1ZmZlcigiLDM0OTYyLCIsIixmLCIuYnVmZmVyLmJ1ZmZlcik7IixsLCIudmVydGV4QXR0cmliUG9pbnRlcigiLGgsIiwiLGYsIi5zaXplLCIsZiwiLnR5cGUsIixmLCIubm9ybWFsaXplZCwiLGYsIi5zdHJpZGUsIixmLCIub2Zmc2V0KTsiKS5lbHNlKGwsIi5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoIixoLCIpOyIsbCwiLnZlcnRleEF0dHJpYjRmKCIsaCwiLCIsZiwiLngsIixmLCIueSwiLGYsIi56LCIsZiwiLncpOyIsZiwiLmJ1ZmZlcj1udWxsOyIpLHIocCksUSYmcihvLCIudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKCIsaCwiLCIsZiwiLmRpdmlzb3IpOyIpfXJldHVybiBPYmplY3Qua2V5cyhhdCkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT1hdFtuXSxvPWEuZGVmKGMsIi4iLG4pLHM9dC5ibG9jaygpO3MoImlmKCIsbywiKXsiLGwsIi5lbmFibGUoIixpLCIpfWVsc2V7IixsLCIuZGlzYWJsZSgiLGksIil9Iix1LCIuIixuLCI9IixvLCI7IikscihzKSxlKCJpZigiLG8sIiE9PSIsdSwiLiIsbiwiKXsiLHMsIn0iKX0pLE9iamVjdC5rZXlzKGl0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBvLHMsaD1pdFtuXSxmPXR0W25dLHA9dC5ibG9jaygpO3AobCwiLiIsaCwiKCIpLHYoZik/KGg9Zi5sZW5ndGgsbz10Lmdsb2JhbC5kZWYoYywiLiIsbikscz10Lmdsb2JhbC5kZWYodSwiLiIsbikscChpKGgsZnVuY3Rpb24odCl7cmV0dXJuIG8rIlsiK3QrIl0ifSksIik7IixpKGgsZnVuY3Rpb24odCl7cmV0dXJuIHMrIlsiK3QrIl09IitvKyJbIit0KyJdOyJ9KS5qb2luKCIiKSksZSgiaWYoIixpKGgsZnVuY3Rpb24odCl7cmV0dXJuIG8rIlsiK3QrIl0hPT0iK3MrIlsiK3QrIl0ifSkuam9pbigifHwiKSwiKXsiLHAsIn0iKSk6KG89YS5kZWYoYywiLiIsbikscz1hLmRlZih1LCIuIixuKSxwKG8sIik7Iix1LCIuIixuLCI9IixvLCI7IiksZSgiaWYoIixvLCIhPT0iLHMsIil7IixwLCJ9IikpLHIocCl9KSx0LmNvbXBpbGUoKX0oKSxjb21waWxlOmZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9YigpO3JldHVybiBpLnN0YXRzPWkubGluayhhKSxPYmplY3Qua2V5cyhlLnN0YXRpYykuZm9yRWFjaChmdW5jdGlvbih0KXtYKGksZSx0KX0pLF90LmZvckVhY2goZnVuY3Rpb24oZSl7WChpLHQsZSl9KSxyPU0odCxlLHIsbiksZnVuY3Rpb24odCxlKXt2YXIgcj10LnByb2MoImRyYXciLDEpO0ModCxyKSxBKHQscixlLmNvbnRleHQpLFModCxyLGUuZnJhbWVidWZmZXIpLEUodCxyLGUpLEwodCxyLGUuc3RhdGUpLEIodCxyLGUsITEsITApO3ZhciBuPWUuc2hhZGVyLnByb2dWYXIuYXBwZW5kKHQscik7aWYocih0LnNoYXJlZC5nbCwiLnVzZVByb2dyYW0oIixuLCIucHJvZ3JhbSk7IiksZS5zaGFkZXIucHJvZ3JhbSlIKHQscixlLGUuc2hhZGVyLnByb2dyYW0pO2Vsc2V7dmFyIGE9dC5nbG9iYWwuZGVmKCJ7fSIpLGk9ci5kZWYobiwiLmlkIiksbz1yLmRlZihhLCJbIixpLCJdIik7cih0LmNvbmQobykudGhlbihvLCIuY2FsbCh0aGlzLGEwKTsiKS5lbHNlKG8sIj0iLGEsIlsiLGksIl09Iix0LmxpbmsoZnVuY3Rpb24ocil7cmV0dXJuIHEoSCx0LGUsciwxKX0pLCIoIixuLCIpOyIsbywiLmNhbGwodGhpcyxhMCk7IikpfTA8T2JqZWN0LmtleXMoZS5zdGF0ZSkubGVuZ3RoJiZyKHQuc2hhcmVkLmN1cnJlbnQsIi5kaXJ0eT10cnVlOyIpfShpLHIpLFcoaSxyKSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQuY29udGV4dERlcCYmYXx8dC5wcm9wRGVwfXZhciBuPXQucHJvYygiYmF0Y2giLDIpO3QuYmF0Y2hJZD0iMCIsQyh0LG4pO3ZhciBhPSExLGk9ITA7T2JqZWN0LmtleXMoZS5jb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2E9YXx8ZS5jb250ZXh0W3RdLnByb3BEZXB9KSxhfHwoQSh0LG4sZS5jb250ZXh0KSxpPSExKTt2YXIgbz0hMTtpZigocz1lLmZyYW1lYnVmZmVyKT8ocy5wcm9wRGVwP2E9bz0hMDpzLmNvbnRleHREZXAmJmEmJihvPSEwKSxvfHxTKHQsbixzKSk6Uyh0LG4sbnVsbCksZS5zdGF0ZS52aWV3cG9ydCYmZS5zdGF0ZS52aWV3cG9ydC5wcm9wRGVwJiYoYT0hMCksRSh0LG4sZSksTCh0LG4sZS5zdGF0ZSxmdW5jdGlvbih0KXtyZXR1cm4hcih0KX0pLGUucHJvZmlsZSYmcihlLnByb2ZpbGUpfHxCKHQsbixlLCExLCJhMSIpLGUuY29udGV4dERlcD1hLGUubmVlZHNDb250ZXh0PWksZS5uZWVkc0ZyYW1lYnVmZmVyPW8sKGk9ZS5zaGFkZXIucHJvZ1ZhcikuY29udGV4dERlcCYmYXx8aS5wcm9wRGVwKVkodCxuLGUsbnVsbCk7ZWxzZSBpZihpPWkuYXBwZW5kKHQsbiksbih0LnNoYXJlZC5nbCwiLnVzZVByb2dyYW0oIixpLCIucHJvZ3JhbSk7IiksZS5zaGFkZXIucHJvZ3JhbSlZKHQsbixlLGUuc2hhZGVyLnByb2dyYW0pO2Vsc2V7dmFyIHM9dC5nbG9iYWwuZGVmKCJ7fSIpLGw9KG89bi5kZWYoaSwiLmlkIiksbi5kZWYocywiWyIsbywiXSIpKTtuKHQuY29uZChsKS50aGVuKGwsIi5jYWxsKHRoaXMsYTAsYTEpOyIpLmVsc2UobCwiPSIscywiWyIsbywiXT0iLHQubGluayhmdW5jdGlvbihyKXtyZXR1cm4gcShZLHQsZSxyLDIpfSksIigiLGksIik7IixsLCIuY2FsbCh0aGlzLGEwLGExKTsiKSl9MDxPYmplY3Qua2V5cyhlLnN0YXRlKS5sZW5ndGgmJm4odC5zaGFyZWQuY3VycmVudCwiLmRpcnR5PXRydWU7Iil9KGksciksaS5jb21waWxlKCl9fX1mdW5jdGlvbiBOKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpaWYodFtyXT09PWUpcmV0dXJuIHI7cmV0dXJuLTF9dmFyIGo9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9T2JqZWN0LmtleXMoZSksbj0wO248ci5sZW5ndGg7KytuKXRbcltuXV09ZVtyW25dXTtyZXR1cm4gdH0sVj0wLFU9e0R5bmFtaWNWYXJpYWJsZTp0LGRlZmluZTpmdW5jdGlvbihyLG4pe3JldHVybiBuZXcgdChyLGUobisiIikpfSxpc0R5bmFtaWM6ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiFlLl9yZWdsVHlwZXx8ZSBpbnN0YW5jZW9mIHR9LHVuYm94OmZ1bmN0aW9uKGUscil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/bmV3IHQoMCxlKTplfSxhY2Nlc3NvcjplfSxxPXtuZXh0OiJmdW5jdGlvbiI9PXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/ZnVuY3Rpb24odCl7cmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0KX06ZnVuY3Rpb24odCl7cmV0dXJuIHNldFRpbWVvdXQodCwxNil9LGNhbmNlbDoiZnVuY3Rpb24iPT10eXBlb2YgY2FuY2VsQW5pbWF0aW9uRnJhbWU/ZnVuY3Rpb24odCl7cmV0dXJuIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHQpfTpjbGVhclRpbWVvdXR9LEg9InVuZGVmaW5lZCIhPXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P2Z1bmN0aW9uKCl7cmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpfTpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sRz1zKCk7Ry56ZXJvPXMoKTt2YXIgWT1mdW5jdGlvbih0LGUpe3ZhciByPTE7ZS5leHRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMmJihyPXQuZ2V0UGFyYW1ldGVyKDM0MDQ3KSk7dmFyIG49MSxhPTE7ZS53ZWJnbF9kcmF3X2J1ZmZlcnMmJihuPXQuZ2V0UGFyYW1ldGVyKDM0ODUyKSxhPXQuZ2V0UGFyYW1ldGVyKDM2MDYzKSk7dmFyIGk9ISFlLm9lc190ZXh0dXJlX2Zsb2F0O2lmKGkpe2k9dC5jcmVhdGVUZXh0dXJlKCksdC5iaW5kVGV4dHVyZSgzNTUzLGkpLHQudGV4SW1hZ2UyRCgzNTUzLDAsNjQwOCwxLDEsMCw2NDA4LDUxMjYsbnVsbCk7dmFyIG89dC5jcmVhdGVGcmFtZWJ1ZmZlcigpO2lmKHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG8pLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwNjQsMzU1MyxpLDApLHQuYmluZFRleHR1cmUoMzU1MyxudWxsKSwzNjA1MyE9PXQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygzNjE2MCkpaT0hMTtlbHNle3Qudmlld3BvcnQoMCwwLDEsMSksdC5jbGVhckNvbG9yKDEsMCwwLDEpLHQuY2xlYXIoMTYzODQpO3ZhciBzPUcuYWxsb2NUeXBlKDUxMjYsNCk7dC5yZWFkUGl4ZWxzKDAsMCwxLDEsNjQwOCw1MTI2LHMpLHQuZ2V0RXJyb3IoKT9pPSExOih0LmRlbGV0ZUZyYW1lYnVmZmVyKG8pLHQuZGVsZXRlVGV4dHVyZShpKSxpPTE9PT1zWzBdKSxHLmZyZWVUeXBlKHMpfX1yZXR1cm4gcz0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmKC9NU0lFLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfHwvVHJpZGVudFwvLy50ZXN0KG5hdmlnYXRvci5hcHBWZXJzaW9uKXx8L0VkZ2UvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpfHwocz10LmNyZWF0ZVRleHR1cmUoKSxvPUcuYWxsb2NUeXBlKDUxMjEsMzYpLHQuYWN0aXZlVGV4dHVyZSgzMzk4NCksdC5iaW5kVGV4dHVyZSgzNDA2NyxzKSx0LnRleEltYWdlMkQoMzQwNjksMCw2NDA4LDMsMywwLDY0MDgsNTEyMSxvKSxHLmZyZWVUeXBlKG8pLHQuYmluZFRleHR1cmUoMzQwNjcsbnVsbCksdC5kZWxldGVUZXh0dXJlKHMpLHM9IXQuZ2V0RXJyb3IoKSkse2NvbG9yQml0czpbdC5nZXRQYXJhbWV0ZXIoMzQxMCksdC5nZXRQYXJhbWV0ZXIoMzQxMSksdC5nZXRQYXJhbWV0ZXIoMzQxMiksdC5nZXRQYXJhbWV0ZXIoMzQxMyldLGRlcHRoQml0czp0LmdldFBhcmFtZXRlcigzNDE0KSxzdGVuY2lsQml0czp0LmdldFBhcmFtZXRlcigzNDE1KSxzdWJwaXhlbEJpdHM6dC5nZXRQYXJhbWV0ZXIoMzQwOCksZXh0ZW5zaW9uczpPYmplY3Qua2V5cyhlKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuISFlW3RdfSksbWF4QW5pc290cm9waWM6cixtYXhEcmF3YnVmZmVyczpuLG1heENvbG9yQXR0YWNobWVudHM6YSxwb2ludFNpemVEaW1zOnQuZ2V0UGFyYW1ldGVyKDMzOTAxKSxsaW5lV2lkdGhEaW1zOnQuZ2V0UGFyYW1ldGVyKDMzOTAyKSxtYXhWaWV3cG9ydERpbXM6dC5nZXRQYXJhbWV0ZXIoMzM4NiksbWF4Q29tYmluZWRUZXh0dXJlVW5pdHM6dC5nZXRQYXJhbWV0ZXIoMzU2NjEpLG1heEN1YmVNYXBTaXplOnQuZ2V0UGFyYW1ldGVyKDM0MDc2KSxtYXhSZW5kZXJidWZmZXJTaXplOnQuZ2V0UGFyYW1ldGVyKDM0MDI0KSxtYXhUZXh0dXJlVW5pdHM6dC5nZXRQYXJhbWV0ZXIoMzQ5MzApLG1heFRleHR1cmVTaXplOnQuZ2V0UGFyYW1ldGVyKDMzNzkpLG1heEF0dHJpYnV0ZXM6dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLG1heFZlcnRleFVuaWZvcm1zOnQuZ2V0UGFyYW1ldGVyKDM2MzQ3KSxtYXhWZXJ0ZXhUZXh0dXJlVW5pdHM6dC5nZXRQYXJhbWV0ZXIoMzU2NjApLG1heFZhcnlpbmdWZWN0b3JzOnQuZ2V0UGFyYW1ldGVyKDM2MzQ4KSxtYXhGcmFnbWVudFVuaWZvcm1zOnQuZ2V0UGFyYW1ldGVyKDM2MzQ5KSxnbHNsOnQuZ2V0UGFyYW1ldGVyKDM1NzI0KSxyZW5kZXJlcjp0LmdldFBhcmFtZXRlcig3OTM3KSx2ZW5kb3I6dC5nZXRQYXJhbWV0ZXIoNzkzNiksdmVyc2lvbjp0LmdldFBhcmFtZXRlcig3OTM4KSxyZWFkRmxvYXQ6aSxucG90VGV4dHVyZUN1YmU6c319LFc9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0IGluc3RhbmNlb2YgVWludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEludDhBcnJheXx8dCBpbnN0YW5jZW9mIEludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5fHx0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl9LFg9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfSxaPXtzaGFwZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9W107dC5sZW5ndGg7dD10WzBdKWUucHVzaCh0Lmxlbmd0aCk7cmV0dXJuIGV9LGZsYXR0ZW46ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9MTtpZihlLmxlbmd0aClmb3IodmFyIGk9MDtpPGUubGVuZ3RoOysraSlhKj1lW2ldO2Vsc2UgYT0wO3N3aXRjaChyPW58fEcuYWxsb2NUeXBlKHIsYSksZS5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6Zm9yKG49ZVswXSxlPTA7ZTxuOysrZSlyW2VdPXRbZV07YnJlYWs7Y2FzZSAyOmZvcihuPWVbMF0sZT1lWzFdLGk9YT0wO2k8bjsrK2kpZm9yKHZhciBvPXRbaV0scz0wO3M8ZTsrK3MpclthKytdPW9bc107YnJlYWs7Y2FzZSAzOmModCxlWzBdLGVbMV0sZVsyXSxyLDApO2JyZWFrO2RlZmF1bHQ6IWZ1bmN0aW9uIHQoZSxyLG4sYSxpKXtmb3IodmFyIG89MSxzPW4rMTtzPHIubGVuZ3RoOysrcylvKj1yW3NdO3ZhciBsPXJbbl07aWYoND09ci5sZW5ndGgtbil7dmFyIHU9cltuKzFdLGg9cltuKzJdO2ZvcihyPXJbbiszXSxzPTA7czxsOysrcyljKGVbc10sdSxoLHIsYSxpKSxpKz1vfWVsc2UgZm9yKHM9MDtzPGw7KytzKXQoZVtzXSxyLG4rMSxhLGkpLGkrPW99KHQsZSwwLHIsMCl9cmV0dXJuIHJ9fSxKPXsiW29iamVjdCBJbnQ4QXJyYXldIjo1MTIwLCJbb2JqZWN0IEludDE2QXJyYXldIjo1MTIyLCJbb2JqZWN0IEludDMyQXJyYXldIjo1MTI0LCJbb2JqZWN0IFVpbnQ4QXJyYXldIjo1MTIxLCJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI6NTEyMSwiW29iamVjdCBVaW50MTZBcnJheV0iOjUxMjMsIltvYmplY3QgVWludDMyQXJyYXldIjo1MTI1LCJbb2JqZWN0IEZsb2F0MzJBcnJheV0iOjUxMjYsIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6NTEyMSwiW29iamVjdCBBcnJheUJ1ZmZlcl0iOjUxMjF9LEs9e2ludDg6NTEyMCxpbnQxNjo1MTIyLGludDMyOjUxMjQsdWludDg6NTEyMSx1aW50MTY6NTEyMyx1aW50MzI6NTEyNSxmbG9hdDo1MTI2LGZsb2F0MzI6NTEyNn0sUT17ZHluYW1pYzozNTA0OCxzdHJlYW06MzUwNDAsc3RhdGljOjM1MDQ0fSwkPVouZmxhdHRlbix0dD1aLnNoYXBlLGV0PVtdO2V0WzUxMjBdPTEsZXRbNTEyMl09MixldFs1MTI0XT00LGV0WzUxMjFdPTEsZXRbNTEyM109MixldFs1MTI1XT00LGV0WzUxMjZdPTQ7dmFyIHJ0PXtwb2ludHM6MCxwb2ludDowLGxpbmVzOjEsbGluZToxLHRyaWFuZ2xlczo0LHRyaWFuZ2xlOjQsImxpbmUgbG9vcCI6MiwibGluZSBzdHJpcCI6MywidHJpYW5nbGUgc3RyaXAiOjUsInRyaWFuZ2xlIGZhbiI6Nn0sbnQ9bmV3IEZsb2F0MzJBcnJheSgxKSxhdD1uZXcgVWludDMyQXJyYXkobnQuYnVmZmVyKSxpdD1bOTk4NCw5OTg2LDk5ODUsOTk4N10sb3Q9WzAsNjQwOSw2NDEwLDY0MDcsNjQwOF0sc3Q9e307c3RbNjQwOV09c3RbNjQwNl09c3RbNjQwMl09MSxzdFszNDA0MV09c3RbNjQxMF09MixzdFs2NDA3XT1zdFszNTkwNF09MyxzdFs2NDA4XT1zdFszNTkwNl09NDt2YXIgbHQ9bSgiSFRNTENhbnZhc0VsZW1lbnQiKSxjdD1tKCJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQiKSx1dD1tKCJJbWFnZUJpdG1hcCIpLGh0PW0oIkhUTUxJbWFnZUVsZW1lbnQiKSxmdD1tKCJIVE1MVmlkZW9FbGVtZW50IikscHQ9T2JqZWN0LmtleXMoSikuY29uY2F0KFtsdCxjdCx1dCxodCxmdF0pLGR0PVtdO2R0WzUxMjFdPTEsZHRbNTEyNl09NCxkdFszNjE5M109MixkdFs1MTIzXT0yLGR0WzUxMjVdPTQ7dmFyIGd0PVtdO2d0WzMyODU0XT0yLGd0WzMyODU1XT0yLGd0WzM2MTk0XT0yLGd0WzM0MDQxXT00LGd0WzMzNzc2XT0uNSxndFszMzc3N109LjUsZ3RbMzM3NzhdPTEsZ3RbMzM3NzldPTEsZ3RbMzU5ODZdPS41LGd0WzM1OTg3XT0xLGd0WzM0Nzk4XT0xLGd0WzM1ODQwXT0uNSxndFszNTg0MV09LjI1LGd0WzM1ODQyXT0uNSxndFszNTg0M109LjI1LGd0WzM2MTk2XT0uNTt2YXIgdnQ9W107dnRbMzI4NTRdPTIsdnRbMzI4NTVdPTIsdnRbMzYxOTRdPTIsdnRbMzMxODldPTIsdnRbMzYxNjhdPTEsdnRbMzQwNDFdPTQsdnRbMzU5MDddPTQsdnRbMzQ4MzZdPTE2LHZ0WzM0ODQyXT04LHZ0WzM0ODQzXT02O3ZhciBtdD1mdW5jdGlvbih0LGUscixuLGEpe2Z1bmN0aW9uIGkodCl7dGhpcy5pZD1jKyssdGhpcy5yZWZDb3VudD0xLHRoaXMucmVuZGVyYnVmZmVyPXQsdGhpcy5mb3JtYXQ9MzI4NTQsdGhpcy5oZWlnaHQ9dGhpcy53aWR0aD0wLGEucHJvZmlsZSYmKHRoaXMuc3RhdHM9e3NpemU6MH0pfWZ1bmN0aW9uIG8oZSl7dmFyIHI9ZS5yZW5kZXJidWZmZXI7dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLHQuZGVsZXRlUmVuZGVyYnVmZmVyKHIpLGUucmVuZGVyYnVmZmVyPW51bGwsZS5yZWZDb3VudD0wLGRlbGV0ZSB1W2UuaWRdLG4ucmVuZGVyYnVmZmVyQ291bnQtLX12YXIgcz17cmdiYTQ6MzI4NTQscmdiNTY1OjM2MTk0LCJyZ2I1IGExIjozMjg1NSxkZXB0aDozMzE4OSxzdGVuY2lsOjM2MTY4LCJkZXB0aCBzdGVuY2lsIjozNDA0MX07ZS5leHRfc3JnYiYmKHMuc3JnYmE9MzU5MDcpLGUuZXh0X2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0JiYocy5yZ2JhMTZmPTM0ODQyLHMucmdiMTZmPTM0ODQzKSxlLndlYmdsX2NvbG9yX2J1ZmZlcl9mbG9hdCYmKHMucmdiYTMyZj0zNDgzNik7dmFyIGw9W107T2JqZWN0LmtleXMocykuZm9yRWFjaChmdW5jdGlvbih0KXtsW3NbdF1dPXR9KTt2YXIgYz0wLHU9e307cmV0dXJuIGkucHJvdG90eXBlLmRlY1JlZj1mdW5jdGlvbigpezA+PS0tdGhpcy5yZWZDb3VudCYmbyh0aGlzKX0sYS5wcm9maWxlJiYobi5nZXRUb3RhbFJlbmRlcmJ1ZmZlclNpemU9ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiBPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QrPXVbZV0uc3RhdHMuc2l6ZX0pLHR9KSx7Y3JlYXRlOmZ1bmN0aW9uKGUscil7ZnVuY3Rpb24gbyhlLHIpe3ZhciBuPTAsaT0wLHU9MzI4NTQ7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZlPygic2hhcGUiaW4gZT8obj0wfChpPWUuc2hhcGUpWzBdLGk9MHxpWzFdKTooInJhZGl1cyJpbiBlJiYobj1pPTB8ZS5yYWRpdXMpLCJ3aWR0aCJpbiBlJiYobj0wfGUud2lkdGgpLCJoZWlnaHQiaW4gZSYmKGk9MHxlLmhlaWdodCkpLCJmb3JtYXQiaW4gZSYmKHU9c1tlLmZvcm1hdF0pKToibnVtYmVyIj09dHlwZW9mIGU/KG49MHxlLGk9Im51bWJlciI9PXR5cGVvZiByPzB8cjpuKTplfHwobj1pPTEpLG4hPT1jLndpZHRofHxpIT09Yy5oZWlnaHR8fHUhPT1jLmZvcm1hdClyZXR1cm4gby53aWR0aD1jLndpZHRoPW4sby5oZWlnaHQ9Yy5oZWlnaHQ9aSxjLmZvcm1hdD11LHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxjLnJlbmRlcmJ1ZmZlciksdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHUsbixpKSxhLnByb2ZpbGUmJihjLnN0YXRzLnNpemU9dnRbYy5mb3JtYXRdKmMud2lkdGgqYy5oZWlnaHQpLG8uZm9ybWF0PWxbYy5mb3JtYXRdLG99dmFyIGM9bmV3IGkodC5jcmVhdGVSZW5kZXJidWZmZXIoKSk7cmV0dXJuIHVbYy5pZF09YyxuLnJlbmRlcmJ1ZmZlckNvdW50KyssbyhlLHIpLG8ucmVzaXplPWZ1bmN0aW9uKGUscil7dmFyIG49MHxlLGk9MHxyfHxuO3JldHVybiBuPT09Yy53aWR0aCYmaT09PWMuaGVpZ2h0P286KG8ud2lkdGg9Yy53aWR0aD1uLG8uaGVpZ2h0PWMuaGVpZ2h0PWksdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLGMucmVuZGVyYnVmZmVyKSx0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsYy5mb3JtYXQsbixpKSxhLnByb2ZpbGUmJihjLnN0YXRzLnNpemU9dnRbYy5mb3JtYXRdKmMud2lkdGgqYy5oZWlnaHQpLG8pfSxvLl9yZWdsVHlwZT0icmVuZGVyYnVmZmVyIixvLl9yZW5kZXJidWZmZXI9YyxhLnByb2ZpbGUmJihvLnN0YXRzPWMuc3RhdHMpLG8uZGVzdHJveT1mdW5jdGlvbigpe2MuZGVjUmVmKCl9LG99LGNsZWFyOmZ1bmN0aW9uKCl7WCh1KS5mb3JFYWNoKG8pfSxyZXN0b3JlOmZ1bmN0aW9uKCl7WCh1KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLGUucmVuZGVyYnVmZmVyKSx0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsZS5mb3JtYXQsZS53aWR0aCxlLmhlaWdodCl9KSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCl9fX0seXQ9W107eXRbNjQwOF09NCx5dFs2NDA3XT0zO3ZhciB4dD1bXTt4dFs1MTIxXT0xLHh0WzUxMjZdPTQseHRbMzYxOTNdPTI7dmFyIGJ0PVsieCIsInkiLCJ6IiwidyJdLF90PSJibGVuZC5mdW5jIGJsZW5kLmVxdWF0aW9uIHN0ZW5jaWwuZnVuYyBzdGVuY2lsLm9wRnJvbnQgc3RlbmNpbC5vcEJhY2sgc2FtcGxlLmNvdmVyYWdlIHZpZXdwb3J0IHNjaXNzb3IuYm94IHBvbHlnb25PZmZzZXQub2Zmc2V0Ii5zcGxpdCgiICIpLHd0PXswOjAsMToxLHplcm86MCxvbmU6MSwic3JjIGNvbG9yIjo3NjgsIm9uZSBtaW51cyBzcmMgY29sb3IiOjc2OSwic3JjIGFscGhhIjo3NzAsIm9uZSBtaW51cyBzcmMgYWxwaGEiOjc3MSwiZHN0IGNvbG9yIjo3NzQsIm9uZSBtaW51cyBkc3QgY29sb3IiOjc3NSwiZHN0IGFscGhhIjo3NzIsIm9uZSBtaW51cyBkc3QgYWxwaGEiOjc3MywiY29uc3RhbnQgY29sb3IiOjMyNzY5LCJvbmUgbWludXMgY29uc3RhbnQgY29sb3IiOjMyNzcwLCJjb25zdGFudCBhbHBoYSI6MzI3NzEsIm9uZSBtaW51cyBjb25zdGFudCBhbHBoYSI6MzI3NzIsInNyYyBhbHBoYSBzYXR1cmF0ZSI6Nzc2fSxrdD17bmV2ZXI6NTEyLGxlc3M6NTEzLCI8Ijo1MTMsZXF1YWw6NTE0LCI9Ijo1MTQsIj09Ijo1MTQsIj09PSI6NTE0LGxlcXVhbDo1MTUsIjw9Ijo1MTUsZ3JlYXRlcjo1MTYsIj4iOjUxNixub3RlcXVhbDo1MTcsIiE9Ijo1MTcsIiE9PSI6NTE3LGdlcXVhbDo1MTgsIj49Ijo1MTgsYWx3YXlzOjUxOX0sVHQ9ezA6MCx6ZXJvOjAsa2VlcDo3NjgwLHJlcGxhY2U6NzY4MSxpbmNyZW1lbnQ6NzY4MixkZWNyZW1lbnQ6NzY4MywiaW5jcmVtZW50IHdyYXAiOjM0MDU1LCJkZWNyZW1lbnQgd3JhcCI6MzQwNTYsaW52ZXJ0OjUzODZ9LE10PXtjdzoyMzA0LGNjdzoyMzA1fSxBdD1uZXcgSSghMSwhMSwhMSxmdW5jdGlvbigpe30pO3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7aWYoMD09PVoubGVuZ3RoKXcmJncudXBkYXRlKCksJD1udWxsO2Vsc2V7JD1xLm5leHQoZSksaCgpO2Zvcih2YXIgdD1aLmxlbmd0aC0xOzA8PXQ7LS10KXt2YXIgcj1aW3RdO3ImJnIoUCxudWxsLDApfXYuZmx1c2goKSx3JiZ3LnVwZGF0ZSgpfX1mdW5jdGlvbiByKCl7ISQmJjA8Wi5sZW5ndGgmJigkPXEubmV4dChlKSl9ZnVuY3Rpb24gbigpeyQmJihxLmNhbmNlbChlKSwkPW51bGwpfWZ1bmN0aW9uIGkodCl7dC5wcmV2ZW50RGVmYXVsdCgpLG4oKSxKLmZvckVhY2goZnVuY3Rpb24odCl7dCgpfSl9ZnVuY3Rpb24gbyh0KXt2LmdldEVycm9yKCkseS5yZXN0b3JlKCksRC5yZXN0b3JlKCksei5yZXN0b3JlKCksUi5yZXN0b3JlKCksRi5yZXN0b3JlKCksVi5yZXN0b3JlKCksdyYmdy5yZXN0b3JlKCksRy5wcm9jcy5yZWZyZXNoKCkscigpLEsuZm9yRWFjaChmdW5jdGlvbih0KXt0KCl9KX1mdW5jdGlvbiBzKHQpe2Z1bmN0aW9uIGUodCl7dmFyIGU9e30scj17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgYT10W25dO1UuaXNEeW5hbWljKGEpP3Jbbl09VS51bmJveChhLG4pOmVbbl09YX0pLHtkeW5hbWljOnIsc3RhdGljOmV9fXZhciByPWUodC5jb250ZXh0fHx7fSksbj1lKHQudW5pZm9ybXN8fHt9KSxhPWUodC5hdHRyaWJ1dGVzfHx7fSksaT1lKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7aWYodCBpbiByKXt2YXIgZT1yW3RdO2RlbGV0ZSByW3RdLE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24obil7clt0KyIuIituXT1lW25dfSl9fXZhciByPWooe30sdCk7cmV0dXJuIGRlbGV0ZSByLnVuaWZvcm1zLGRlbGV0ZSByLmF0dHJpYnV0ZXMsZGVsZXRlIHIuY29udGV4dCwic3RlbmNpbCJpbiByJiZyLnN0ZW5jaWwub3AmJihyLnN0ZW5jaWwub3BCYWNrPXIuc3RlbmNpbC5vcEZyb250PXIuc3RlbmNpbC5vcCxkZWxldGUgci5zdGVuY2lsLm9wKSxlKCJibGVuZCIpLGUoImRlcHRoIiksZSgiY3VsbCIpLGUoInN0ZW5jaWwiKSxlKCJwb2x5Z29uT2Zmc2V0IiksZSgic2Npc3NvciIpLGUoInNhbXBsZSIpLHJ9KHQpKTt0PXtncHVUaW1lOjAsY3B1VGltZTowLGNvdW50OjB9O3ZhciBvPShyPUcuY29tcGlsZShpLGEsbixyLHQpKS5kcmF3LHM9ci5iYXRjaCxsPXIuc2NvcGUsYz1bXTtyZXR1cm4gaihmdW5jdGlvbih0LGUpe3ZhciByO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiBsLmNhbGwodGhpcyxudWxsLHQsMCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpaWYoIm51bWJlciI9PXR5cGVvZiB0KWZvcihyPTA7cjx0OysrcilsLmNhbGwodGhpcyxudWxsLGUscik7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbC5jYWxsKHRoaXMsdCxlLDApO2ZvcihyPTA7cjx0Lmxlbmd0aDsrK3IpbC5jYWxsKHRoaXMsdFtyXSxlLHIpfWVsc2UgaWYoIm51bWJlciI9PXR5cGVvZiB0KXtpZigwPHQpcmV0dXJuIHMuY2FsbCh0aGlzLGZ1bmN0aW9uKHQpe2Zvcig7Yy5sZW5ndGg8dDspYy5wdXNoKG51bGwpO3JldHVybiBjfSgwfHQpLDB8dCl9ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gby5jYWxsKHRoaXMsdCk7aWYodC5sZW5ndGgpcmV0dXJuIHMuY2FsbCh0aGlzLHQsdC5sZW5ndGgpfX0se3N0YXRzOnR9KX1mdW5jdGlvbiBsKHQsZSl7dmFyIHI9MDtHLnByb2NzLnBvbGwoKTt2YXIgbj1lLmNvbG9yO24mJih2LmNsZWFyQ29sb3IoK25bMF18fDAsK25bMV18fDAsK25bMl18fDAsK25bM118fDApLHJ8PTE2Mzg0KSwiZGVwdGgiaW4gZSYmKHYuY2xlYXJEZXB0aCgrZS5kZXB0aCkscnw9MjU2KSwic3RlbmNpbCJpbiBlJiYodi5jbGVhclN0ZW5jaWwoMHxlLnN0ZW5jaWwpLHJ8PTEwMjQpLHYuY2xlYXIocil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gWi5wdXNoKHQpLHIoKSx7Y2FuY2VsOmZ1bmN0aW9uKCl7dmFyIGU9TihaLHQpO1pbZV09ZnVuY3Rpb24gdCgpe3ZhciBlPU4oWix0KTtaW2VdPVpbWi5sZW5ndGgtMV0sLS1aLmxlbmd0aCwwPj1aLmxlbmd0aCYmbigpfX19fWZ1bmN0aW9uIHUoKXt2YXIgdD1XLnZpZXdwb3J0LGU9Vy5zY2lzc29yX2JveDt0WzBdPXRbMV09ZVswXT1lWzFdPTAsUC52aWV3cG9ydFdpZHRoPVAuZnJhbWVidWZmZXJXaWR0aD1QLmRyYXdpbmdCdWZmZXJXaWR0aD10WzJdPWVbMl09di5kcmF3aW5nQnVmZmVyV2lkdGgsUC52aWV3cG9ydEhlaWdodD1QLmZyYW1lYnVmZmVySGVpZ2h0PVAuZHJhd2luZ0J1ZmZlckhlaWdodD10WzNdPWVbM109di5kcmF3aW5nQnVmZmVySGVpZ2h0fWZ1bmN0aW9uIGgoKXtQLnRpY2srPTEsUC50aW1lPWcoKSx1KCksRy5wcm9jcy5wb2xsKCl9ZnVuY3Rpb24gZigpe3UoKSxHLnByb2NzLnJlZnJlc2goKSx3JiZ3LnVwZGF0ZSgpfWZ1bmN0aW9uIGcoKXtyZXR1cm4oSCgpLWspLzFlM31pZighKHQ9YSh0KSkpcmV0dXJuIG51bGw7dmFyIHY9dC5nbCxtPXYuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTt2LmlzQ29udGV4dExvc3QoKTt2YXIgeT1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoZSl7dmFyIHI7ZT1lLnRvTG93ZXJDYXNlKCk7dHJ5e3I9bltlXT10LmdldEV4dGVuc2lvbihlKX1jYXRjaCh0KXt9cmV0dXJuISFyfWZvcih2YXIgbj17fSxhPTA7YTxlLmV4dGVuc2lvbnMubGVuZ3RoOysrYSl7dmFyIGk9ZS5leHRlbnNpb25zW2FdO2lmKCFyKGkpKXJldHVybiBlLm9uRGVzdHJveSgpLGUub25Eb25lKCciJytpKyciIGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IFdlYkdMIGNvbnRleHQsIHRyeSB1cGdyYWRpbmcgeW91ciBzeXN0ZW0gb3IgYSBkaWZmZXJlbnQgYnJvd3NlcicpLG51bGx9cmV0dXJuIGUub3B0aW9uYWxFeHRlbnNpb25zLmZvckVhY2gocikse2V4dGVuc2lvbnM6bixyZXN0b3JlOmZ1bmN0aW9uKCl7T2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbih0KXtpZihuW3RdJiYhcih0KSl0aHJvdyBFcnJvcigiKHJlZ2wpOiBlcnJvciByZXN0b3JpbmcgZXh0ZW5zaW9uICIrdCl9KX19fSh2LHQpO2lmKCF5KXJldHVybiBudWxsO3ZhciB4PWZ1bmN0aW9uKCl7dmFyIHQ9eyIiOjB9LGU9WyIiXTtyZXR1cm57aWQ6ZnVuY3Rpb24ocil7dmFyIG49dFtyXTtyZXR1cm4gbnx8KG49dFtyXT1lLmxlbmd0aCxlLnB1c2gociksbil9LHN0cjpmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX19fSgpLGI9e2J1ZmZlckNvdW50OjAsZWxlbWVudHNDb3VudDowLGZyYW1lYnVmZmVyQ291bnQ6MCxzaGFkZXJDb3VudDowLHRleHR1cmVDb3VudDowLGN1YmVDb3VudDowLHJlbmRlcmJ1ZmZlckNvdW50OjAsbWF4VGV4dHVyZVVuaXRzOjB9LF89eS5leHRlbnNpb25zLHc9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKCl7dGhpcy5lbmRRdWVyeUluZGV4PXRoaXMuc3RhcnRRdWVyeUluZGV4PS0xLHRoaXMuc3VtPTAsdGhpcy5zdGF0cz1udWxsfWZ1bmN0aW9uIG4odCxlLG4pe3ZhciBhPW8ucG9wKCl8fG5ldyByO2Euc3RhcnRRdWVyeUluZGV4PXQsYS5lbmRRdWVyeUluZGV4PWUsYS5zdW09MCxhLnN0YXRzPW4scy5wdXNoKGEpfWlmKCFlLmV4dF9kaXNqb2ludF90aW1lcl9xdWVyeSlyZXR1cm4gbnVsbDt2YXIgYT1bXSxpPVtdLG89W10scz1bXSxsPVtdLGM9W107cmV0dXJue2JlZ2luUXVlcnk6ZnVuY3Rpb24odCl7dmFyIHI9YS5wb3AoKXx8ZS5leHRfZGlzam9pbnRfdGltZXJfcXVlcnkuY3JlYXRlUXVlcnlFWFQoKTtlLmV4dF9kaXNqb2ludF90aW1lcl9xdWVyeS5iZWdpblF1ZXJ5RVhUKDM1MDA3LHIpLGkucHVzaChyKSxuKGkubGVuZ3RoLTEsaS5sZW5ndGgsdCl9LGVuZFF1ZXJ5OmZ1bmN0aW9uKCl7ZS5leHRfZGlzam9pbnRfdGltZXJfcXVlcnkuZW5kUXVlcnlFWFQoMzUwMDcpfSxwdXNoU2NvcGVTdGF0czpuLHVwZGF0ZTpmdW5jdGlvbigpe3ZhciB0LHI7aWYoMCE9PSh0PWkubGVuZ3RoKSl7Yy5sZW5ndGg9TWF0aC5tYXgoYy5sZW5ndGgsdCsxKSxsLmxlbmd0aD1NYXRoLm1heChsLmxlbmd0aCx0KzEpLGxbMF09MDt2YXIgbj1jWzBdPTA7Zm9yKHI9dD0wO3I8aS5sZW5ndGg7KytyKXt2YXIgdT1pW3JdO2UuZXh0X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5LmdldFF1ZXJ5T2JqZWN0RVhUKHUsMzQ5MTkpPyhuKz1lLmV4dF9kaXNqb2ludF90aW1lcl9xdWVyeS5nZXRRdWVyeU9iamVjdEVYVCh1LDM0OTE4KSxhLnB1c2godSkpOmlbdCsrXT11LGxbcisxXT1uLGNbcisxXT10fWZvcihpLmxlbmd0aD10LHI9dD0wO3I8cy5sZW5ndGg7KytyKXt2YXIgaD0obj1zW3JdKS5zdGFydFF1ZXJ5SW5kZXg7dT1uLmVuZFF1ZXJ5SW5kZXgsbi5zdW0rPWxbdV0tbFtoXSxoPWNbaF0sKHU9Y1t1XSk9PT1oPyhuLnN0YXRzLmdwdVRpbWUrPW4uc3VtLzFlNixvLnB1c2gobikpOihuLnN0YXJ0UXVlcnlJbmRleD1oLG4uZW5kUXVlcnlJbmRleD11LHNbdCsrXT1uKX1zLmxlbmd0aD10fX0sZ2V0TnVtUGVuZGluZ1F1ZXJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gaS5sZW5ndGh9LGNsZWFyOmZ1bmN0aW9uKCl7YS5wdXNoLmFwcGx5KGEsaSk7Zm9yKHZhciB0PTA7dDxhLmxlbmd0aDt0KyspZS5leHRfZGlzam9pbnRfdGltZXJfcXVlcnkuZGVsZXRlUXVlcnlFWFQoYVt0XSk7aS5sZW5ndGg9MCxhLmxlbmd0aD0wfSxyZXN0b3JlOmZ1bmN0aW9uKCl7aS5sZW5ndGg9MCxhLmxlbmd0aD0wfX19KDAsXyksaz1IKCksTD12LmRyYXdpbmdCdWZmZXJXaWR0aCxDPXYuZHJhd2luZ0J1ZmZlckhlaWdodCxQPXt0aWNrOjAsdGltZTowLHZpZXdwb3J0V2lkdGg6TCx2aWV3cG9ydEhlaWdodDpDLGZyYW1lYnVmZmVyV2lkdGg6TCxmcmFtZWJ1ZmZlckhlaWdodDpDLGRyYXdpbmdCdWZmZXJXaWR0aDpMLGRyYXdpbmdCdWZmZXJIZWlnaHQ6QyxwaXhlbFJhdGlvOnQucGl4ZWxSYXRpb30sTz1ZKHYsXyksej0oTD1mdW5jdGlvbih0LGUscixuKXtmb3IodD1yLm1heEF0dHJpYnV0ZXMsZT1BcnJheSh0KSxyPTA7cjx0OysrcillW3JdPW5ldyBBO3JldHVybntSZWNvcmQ6QSxzY29wZTp7fSxzdGF0ZTplfX0odixfLE8pLHAodixiLHQsTCkpLEk9ZCh2LF8seixiKSxEPVModix4LGIsdCksUj1UKHYsXyxPLGZ1bmN0aW9uKCl7Ry5wcm9jcy5wb2xsKCl9LFAsYix0KSxGPW10KHYsXywwLGIsdCksVj1NKHYsXyxPLFIsRixiKSxHPUIodix4LF8sTyx6LEksMCxWLHt9LEwsRCx7ZWxlbWVudHM6bnVsbCxwcmltaXRpdmU6NCxjb3VudDotMSxvZmZzZXQ6MCxpbnN0YW5jZXM6LTF9LFAsdyx0KSxXPSh4PUUodixWLEcucHJvY3MucG9sbCxQKSxHLm5leHQpLFg9di5jYW52YXMsWj1bXSxKPVtdLEs9W10sUT1bdC5vbkRlc3Ryb3ldLCQ9bnVsbDtYJiYoWC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixpLCExKSxYLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixvLCExKSk7dmFyIHR0PVYuc2V0RkJPPXMoe2ZyYW1lYnVmZmVyOlUuZGVmaW5lLmNhbGwobnVsbCwxLCJmcmFtZWJ1ZmZlciIpfSk7cmV0dXJuIGYoKSxtPWoocyx7Y2xlYXI6ZnVuY3Rpb24odCl7aWYoImZyYW1lYnVmZmVyImluIHQpaWYodC5mcmFtZWJ1ZmZlciYmImZyYW1lYnVmZmVyQ3ViZSI9PT10LmZyYW1lYnVmZmVyX3JlZ2xUeXBlKWZvcih2YXIgZT0wOzY+ZTsrK2UpdHQoaih7ZnJhbWVidWZmZXI6dC5mcmFtZWJ1ZmZlci5mYWNlc1tlXX0sdCksbCk7ZWxzZSB0dCh0LGwpO2Vsc2UgbCgwLHQpfSxwcm9wOlUuZGVmaW5lLmJpbmQobnVsbCwxKSxjb250ZXh0OlUuZGVmaW5lLmJpbmQobnVsbCwyKSx0aGlzOlUuZGVmaW5lLmJpbmQobnVsbCwzKSxkcmF3OnMoe30pLGJ1ZmZlcjpmdW5jdGlvbih0KXtyZXR1cm4gei5jcmVhdGUodCwzNDk2MiwhMSwhMSl9LGVsZW1lbnRzOmZ1bmN0aW9uKHQpe3JldHVybiBJLmNyZWF0ZSh0LCExKX0sdGV4dHVyZTpSLmNyZWF0ZTJELGN1YmU6Ui5jcmVhdGVDdWJlLHJlbmRlcmJ1ZmZlcjpGLmNyZWF0ZSxmcmFtZWJ1ZmZlcjpWLmNyZWF0ZSxmcmFtZWJ1ZmZlckN1YmU6Vi5jcmVhdGVDdWJlLGF0dHJpYnV0ZXM6bSxmcmFtZTpjLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIHI7c3dpdGNoKHQpe2Nhc2UiZnJhbWUiOnJldHVybiBjKGUpO2Nhc2UibG9zdCI6cj1KO2JyZWFrO2Nhc2UicmVzdG9yZSI6cj1LO2JyZWFrO2Nhc2UiZGVzdHJveSI6cj1RfXJldHVybiByLnB1c2goZSkse2NhbmNlbDpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7Kyt0KWlmKHJbdF09PT1lKXtyW3RdPXJbci5sZW5ndGgtMV0sci5wb3AoKTticmVha319fX0sbGltaXRzOk8saGFzRXh0ZW5zaW9uOmZ1bmN0aW9uKHQpe3JldHVybiAwPD1PLmV4dGVuc2lvbnMuaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkpfSxyZWFkOngsZGVzdHJveTpmdW5jdGlvbigpe1oubGVuZ3RoPTAsbigpLFgmJihYLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGkpLFgucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLG8pKSxELmNsZWFyKCksVi5jbGVhcigpLEYuY2xlYXIoKSxSLmNsZWFyKCksSS5jbGVhcigpLHouY2xlYXIoKSx3JiZ3LmNsZWFyKCksUS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QoKX0pfSxfZ2w6dixfcmVmcmVzaDpmLHBvbGw6ZnVuY3Rpb24oKXtoKCksdyYmdy51cGRhdGUoKX0sbm93Omcsc3RhdHM6Yn0pLHQub25Eb25lKG51bGwsbSksbX19LCJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP2UuZXhwb3J0cz1hKCk6bi5jcmVhdGVSRUdMPWEoKX0se31dLDUwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhPSIiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJleHBlY3RlZCBhIHN0cmluZyIpO2lmKDE9PT1lKXJldHVybiB0O2lmKDI9PT1lKXJldHVybiB0K3Q7dmFyIHI9dC5sZW5ndGgqZTtpZihuIT09dHx8InVuZGVmaW5lZCI9PXR5cGVvZiBuKW49dCxhPSIiO2Vsc2UgaWYoYS5sZW5ndGg+PXIpcmV0dXJuIGEuc3Vic3RyKDAscik7Zm9yKDtyPmEubGVuZ3RoJiZlPjE7KTEmZSYmKGErPXQpLGU+Pj0xLHQrPXQ7cmV0dXJuIGE9KGErPXQpLnN1YnN0cigwLHIpfX0se31dLDUwMzpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtlLmV4cG9ydHM9dC5wZXJmb3JtYW5jZSYmdC5wZXJmb3JtYW5jZS5ub3c/ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9OkRhdGUubm93fHxmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX19KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHt9XSw1MDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPXRbdC5sZW5ndGgtMV0sbj1lLGE9ZS0yO2E+PTA7LS1hKXt2YXIgaT1yLG89dFthXSxzPShyPWkrbyktaSxsPW8tcztsJiYodFstLW5dPXIscj1sKX1mb3IodmFyIGM9MCxhPW47YTxlOysrYSl7dmFyIGk9dFthXSxvPXIscz0ocj1pK28pLWksbD1vLXM7bCYmKHRbYysrXT1sKX1yZXR1cm4gdFtjKytdPXIsdC5sZW5ndGg9Yyx0fX0se31dLDUwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0d28tcHJvZHVjdCIpLGE9dCgicm9idXN0LXN1bSIpLGk9dCgicm9idXN0LXNjYWxlIiksbz10KCJyb2J1c3QtY29tcHJlc3MiKSxzPTY7ZnVuY3Rpb24gbCh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodC5sZW5ndGgtMSksbj0xO248dC5sZW5ndGg7KytuKWZvcih2YXIgYT1yW24tMV09bmV3IEFycmF5KHQubGVuZ3RoLTEpLGk9MCxvPTA7aTx0Lmxlbmd0aDsrK2kpaSE9PWUmJihhW28rK109dFtuXVtpXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7KytyKXtlW3JdPW5ldyBBcnJheSh0KTtmb3IodmFyIG49MDtuPHQ7KytuKWVbcl1bbl09WyJtWyIsciwiXVsiLG4sIl0iXS5qb2luKCIiKX1yZXR1cm4gZX1mdW5jdGlvbiB1KHQpe2lmKDI9PT10Lmxlbmd0aClyZXR1cm5bInN1bShwcm9kKCIsdFswXVswXSwiLCIsdFsxXVsxXSwiKSxwcm9kKC0iLHRbMF1bMV0sIiwiLHRbMV1bMF0sIikpIl0uam9pbigiIik7Zm9yKHZhciBlPVtdLHI9MDtyPHQubGVuZ3RoOysrcillLnB1c2goWyJzY2FsZSgiLHUobCh0LHIpKSwiLCIsKG49ciwxJm4/Ii0iOiIiKSx0WzBdW3JdLCIpIl0uam9pbigiIikpO3JldHVybiBmdW5jdGlvbiB0KGUpe2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gZVswXTtpZigyPT09ZS5sZW5ndGgpcmV0dXJuWyJzdW0oIixlWzBdLCIsIixlWzFdLCIpIl0uam9pbigiIik7dmFyIHI9ZS5sZW5ndGg+PjE7cmV0dXJuWyJzdW0oIix0KGUuc2xpY2UoMCxyKSksIiwiLHQoZS5zbGljZShyKSksIikiXS5qb2luKCIiKX0oZSk7dmFyIG59ZnVuY3Rpb24gaCh0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJzdW0iLCJzY2FsZSIsInByb2QiLCJjb21wcmVzcyIsWyJmdW5jdGlvbiByb2J1c3REZXRlcm1pbmFudCIsdCwiKG0pe3JldHVybiBjb21wcmVzcygiLHUoYyh0KSksIil9O3JldHVybiByb2J1c3REZXRlcm1pbmFudCIsdF0uam9pbigiIikpKGEsaSxuLG8pfXZhciBmPVtmdW5jdGlvbigpe3JldHVyblswXX0sZnVuY3Rpb24odCl7cmV0dXJuW3RbMF1bMF1dfV07IWZ1bmN0aW9uKCl7Zm9yKDtmLmxlbmd0aDxzOylmLnB1c2goaChmLmxlbmd0aCkpO2Zvcih2YXIgdD1bXSxyPVsiZnVuY3Rpb24gcm9idXN0RGV0ZXJtaW5hbnQobSl7c3dpdGNoKG0ubGVuZ3RoKXsiXSxuPTA7bjxzOysrbil0LnB1c2goImRldCIrbiksci5wdXNoKCJjYXNlICIsbiwiOnJldHVybiBkZXQiLG4sIihtKTsiKTtyLnB1c2goIn12YXIgZGV0PUNBQ0hFW20ubGVuZ3RoXTtpZighZGV0KWRldD1DQUNIRVttLmxlbmd0aF09Z2VuKG0ubGVuZ3RoKTtyZXR1cm4gZGV0KG0pO31yZXR1cm4gcm9idXN0RGV0ZXJtaW5hbnQiKSx0LnB1c2goIkNBQ0hFIiwiZ2VuIixyLmpvaW4oIiIpKTt2YXIgYT1GdW5jdGlvbi5hcHBseSh2b2lkIDAsdCk7Zm9yKGUuZXhwb3J0cz1hLmFwcGx5KHZvaWQgMCxmLmNvbmNhdChbZixoXSkpLG49MDtuPGYubGVuZ3RoOysrbillLmV4cG9ydHNbbl09ZltuXX0oKX0seyJyb2J1c3QtY29tcHJlc3MiOjUwNCwicm9idXN0LXNjYWxlIjo1MTEsInJvYnVzdC1zdW0iOjUxNCwidHdvLXByb2R1Y3QiOjU0Mn1dLDUwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0d28tcHJvZHVjdCIpLGE9dCgicm9idXN0LXN1bSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uKHRbMF0sZVswXSksaT0xO2k8dC5sZW5ndGg7KytpKXI9YShyLG4odFtpXSxlW2ldKSk7cmV0dXJuIHJ9fSx7InJvYnVzdC1zdW0iOjUxNCwidHdvLXByb2R1Y3QiOjU0Mn1dLDUwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0d28tcHJvZHVjdCIpLGE9dCgicm9idXN0LXN1bSIpLGk9dCgicm9idXN0LXN1YnRyYWN0Iiksbz10KCJyb2J1c3Qtc2NhbGUiKSxzPTY7ZnVuY3Rpb24gbCh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodC5sZW5ndGgtMSksbj0xO248dC5sZW5ndGg7KytuKWZvcih2YXIgYT1yW24tMV09bmV3IEFycmF5KHQubGVuZ3RoLTEpLGk9MCxvPTA7aTx0Lmxlbmd0aDsrK2kpaSE9PWUmJihhW28rK109dFtuXVtpXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0KXtpZigxPT09dC5sZW5ndGgpcmV0dXJuIHRbMF07aWYoMj09PXQubGVuZ3RoKXJldHVyblsic3VtKCIsdFswXSwiLCIsdFsxXSwiKSJdLmpvaW4oIiIpO3ZhciBlPXQubGVuZ3RoPj4xO3JldHVyblsic3VtKCIsYyh0LnNsaWNlKDAsZSkpLCIsIixjKHQuc2xpY2UoZSkpLCIpIl0uam9pbigiIil9ZnVuY3Rpb24gdSh0LGUpe2lmKCJtIj09PXQuY2hhckF0KDApKXtpZigidyI9PT1lLmNoYXJBdCgwKSl7dmFyIHI9dC5zcGxpdCgiWyIpO3JldHVyblsidyIsZS5zdWJzdHIoMSksIm0iLHJbMF0uc3Vic3RyKDEpXS5qb2luKCIiKX1yZXR1cm5bInByb2QoIix0LCIsIixlLCIpIl0uam9pbigiIil9cmV0dXJuIHUoZSx0KX1mdW5jdGlvbiBoKHQpe2lmKDI9PT10Lmxlbmd0aClyZXR1cm5bWyJkaWZmKCIsdSh0WzBdWzBdLHRbMV1bMV0pLCIsIix1KHRbMV1bMF0sdFswXVsxXSksIikiXS5qb2luKCIiKV07Zm9yKHZhciBlPVtdLHI9MDtyPHQubGVuZ3RoOysrcillLnB1c2goWyJzY2FsZSgiLGMoaChsKHQscikpKSwiLCIsKG49ciwhMCZuPyItIjoiIiksdFswXVtyXSwiKSJdLmpvaW4oIiIpKTtyZXR1cm4gZTt2YXIgbn1mdW5jdGlvbiBmKHQsZSl7Zm9yKHZhciByPVtdLG49MDtuPGUtMjsrK24pci5wdXNoKFsicHJvZChtIix0LCJbIixuLCJdLG0iLHQsIlsiLG4sIl0pIl0uam9pbigiIikpO3JldHVybiBjKHIpfWZ1bmN0aW9uIHAodCl7Zm9yKHZhciBlPVtdLHI9W10scz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7KytyKXtlW3JdPW5ldyBBcnJheSh0KTtmb3IodmFyIG49MDtuPHQ7KytuKWVbcl1bbl09WyJtIixuLCJbIix0LXItMiwiXSJdLmpvaW4oIiIpfXJldHVybiBlfSh0KSx1PTA7dTx0OysrdSlzWzBdW3VdPSIxIixzW3QtMV1bdV09InciK3U7Zm9yKHU9MDt1PHQ7Kyt1KTA9PSgxJnUpP2UucHVzaC5hcHBseShlLGgobChzLHUpKSk6ci5wdXNoLmFwcGx5KHIsaChsKHMsdSkpKTt2YXIgcD1jKGUpLGQ9YyhyKSxnPSJleGFjdEluU3BoZXJlIit0LHY9W107Zm9yKHU9MDt1PHQ7Kyt1KXYucHVzaCgibSIrdSk7dmFyIG09WyJmdW5jdGlvbiAiLGcsIigiLHYuam9pbigpLCIpeyJdO2Zvcih1PTA7dTx0OysrdSl7bS5wdXNoKCJ2YXIgdyIsdSwiPSIsZih1LHQpLCI7Iik7Zm9yKHZhciB5PTA7eTx0OysreSl5IT09dSYmbS5wdXNoKCJ2YXIgdyIsdSwibSIseSwiPXNjYWxlKHciLHUsIixtIix5LCJbMF0pOyIpfXJldHVybiBtLnB1c2goInZhciBwPSIscCwiLG49IixkLCIsZD1kaWZmKHAsbik7cmV0dXJuIGRbZC5sZW5ndGgtMV07fXJldHVybiAiLGcpLG5ldyBGdW5jdGlvbigic3VtIiwiZGlmZiIsInByb2QiLCJzY2FsZSIsbS5qb2luKCIiKSkoYSxpLG4sbyl9dmFyIGQ9W2Z1bmN0aW9uKCl7cmV0dXJuIDB9LGZ1bmN0aW9uKCl7cmV0dXJuIDB9LGZ1bmN0aW9uKCl7cmV0dXJuIDB9XTtmdW5jdGlvbiBnKHQpe3ZhciBlPWRbdC5sZW5ndGhdO3JldHVybiBlfHwoZT1kW3QubGVuZ3RoXT1wKHQubGVuZ3RoKSksZS5hcHBseSh2b2lkIDAsdCl9IWZ1bmN0aW9uKCl7Zm9yKDtkLmxlbmd0aDw9czspZC5wdXNoKHAoZC5sZW5ndGgpKTtmb3IodmFyIHQ9W10scj1bInNsb3ciXSxuPTA7bjw9czsrK24pdC5wdXNoKCJhIituKSxyLnB1c2goIm8iK24pO3ZhciBhPVsiZnVuY3Rpb24gdGVzdEluU3BoZXJlKCIsdC5qb2luKCksIil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIDA7Il07Zm9yKG49MjtuPD1zOysrbilhLnB1c2goImNhc2UgIixuLCI6cmV0dXJuIG8iLG4sIigiLHQuc2xpY2UoMCxuKS5qb2luKCksIik7Iik7YS5wdXNoKCJ9dmFyIHM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDsrK2kpe3NbaV09YXJndW1lbnRzW2ldfTtyZXR1cm4gc2xvdyhzKTt9cmV0dXJuIHRlc3RJblNwaGVyZSIpLHIucHVzaChhLmpvaW4oIiIpKTt2YXIgaT1GdW5jdGlvbi5hcHBseSh2b2lkIDAscik7Zm9yKGUuZXhwb3J0cz1pLmFwcGx5KHZvaWQgMCxbZ10uY29uY2F0KGQpKSxuPTA7bjw9czsrK24pZS5leHBvcnRzW25dPWRbbl19KCl9LHsicm9idXN0LXNjYWxlIjo1MTEsInJvYnVzdC1zdWJ0cmFjdCI6NTEzLCJyb2J1c3Qtc3VtIjo1MTQsInR3by1wcm9kdWN0Ijo1NDJ9XSw1MDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicm9idXN0LWRldGVybWluYW50IiksYT02O2Z1bmN0aW9uIGkodCl7Zm9yKHZhciBlPSJyb2J1c3RMaW5lYXJTb2x2ZSIrdCsiZCIscj1bImZ1bmN0aW9uICIsZSwiKEEsYil7cmV0dXJuIFsiXSxhPTA7YTx0OysrYSl7ci5wdXNoKCJkZXQoWyIpO2Zvcih2YXIgaT0wO2k8dDsrK2kpe2k+MCYmci5wdXNoKCIsIiksci5wdXNoKCJbIik7Zm9yKHZhciBvPTA7bzx0OysrbylvPjAmJnIucHVzaCgiLCIpLG89PT1hP3IucHVzaCgiK2JbIixpLCJdIik6ci5wdXNoKCIrQVsiLGksIl1bIixvLCJdIik7ci5wdXNoKCJdIil9ci5wdXNoKCJdKSwiKX1yLnB1c2goImRldChBKV19cmV0dXJuICIsZSk7dmFyIHM9bmV3IEZ1bmN0aW9uKCJkZXQiLHIuam9pbigiIikpO3JldHVybiBzKHQ8Nj9uW3RdOm4pfXZhciBvPVtmdW5jdGlvbigpe3JldHVyblswXX0sZnVuY3Rpb24odCxlKXtyZXR1cm5bW2VbMF1dLFt0WzBdWzBdXV19XTshZnVuY3Rpb24oKXtmb3IoO28ubGVuZ3RoPGE7KW8ucHVzaChpKG8ubGVuZ3RoKSk7Zm9yKHZhciB0PVtdLHI9WyJmdW5jdGlvbiBkaXNwYXRjaExpbmVhclNvbHZlKEEsYil7c3dpdGNoKEEubGVuZ3RoKXsiXSxuPTA7bjxhOysrbil0LnB1c2goInMiK24pLHIucHVzaCgiY2FzZSAiLG4sIjpyZXR1cm4gcyIsbiwiKEEsYik7Iik7ci5wdXNoKCJ9dmFyIHM9Q0FDSEVbQS5sZW5ndGhdO2lmKCFzKXM9Q0FDSEVbQS5sZW5ndGhdPWcoQS5sZW5ndGgpO3JldHVybiBzKEEsYil9cmV0dXJuIGRpc3BhdGNoTGluZWFyU29sdmUiKSx0LnB1c2goIkNBQ0hFIiwiZyIsci5qb2luKCIiKSk7dmFyIHM9RnVuY3Rpb24uYXBwbHkodm9pZCAwLHQpO2ZvcihlLmV4cG9ydHM9cy5hcHBseSh2b2lkIDAsby5jb25jYXQoW28saV0pKSxuPTA7bjxhOysrbillLmV4cG9ydHNbbl09b1tuXX0oKX0seyJyb2J1c3QtZGV0ZXJtaW5hbnQiOjUwNX1dLDUwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0d28tcHJvZHVjdCIpLGE9dCgicm9idXN0LXN1bSIpLGk9dCgicm9idXN0LXNjYWxlIiksbz10KCJyb2J1c3Qtc3VidHJhY3QiKSxzPTU7ZnVuY3Rpb24gbCh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodC5sZW5ndGgtMSksbj0xO248dC5sZW5ndGg7KytuKWZvcih2YXIgYT1yW24tMV09bmV3IEFycmF5KHQubGVuZ3RoLTEpLGk9MCxvPTA7aTx0Lmxlbmd0aDsrK2kpaSE9PWUmJihhW28rK109dFtuXVtpXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0KXtpZigxPT09dC5sZW5ndGgpcmV0dXJuIHRbMF07aWYoMj09PXQubGVuZ3RoKXJldHVyblsic3VtKCIsdFswXSwiLCIsdFsxXSwiKSJdLmpvaW4oIiIpO3ZhciBlPXQubGVuZ3RoPj4xO3JldHVyblsic3VtKCIsYyh0LnNsaWNlKDAsZSkpLCIsIixjKHQuc2xpY2UoZSkpLCIpIl0uam9pbigiIil9ZnVuY3Rpb24gdSh0KXtpZigyPT09dC5sZW5ndGgpcmV0dXJuW1sic3VtKHByb2QoIix0WzBdWzBdLCIsIix0WzFdWzFdLCIpLHByb2QoLSIsdFswXVsxXSwiLCIsdFsxXVswXSwiKSkiXS5qb2luKCIiKV07Zm9yKHZhciBlPVtdLHI9MDtyPHQubGVuZ3RoOysrcillLnB1c2goWyJzY2FsZSgiLGModShsKHQscikpKSwiLCIsKG49ciwxJm4/Ii0iOiIiKSx0WzBdW3JdLCIpIl0uam9pbigiIikpO3JldHVybiBlO3ZhciBufWZ1bmN0aW9uIGgodCl7Zm9yKHZhciBlPVtdLHI9W10scz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7KytyKXtlW3JdPW5ldyBBcnJheSh0KTtmb3IodmFyIG49MDtuPHQ7KytuKWVbcl1bbl09WyJtIixuLCJbIix0LXItMSwiXSJdLmpvaW4oIiIpfXJldHVybiBlfSh0KSxoPVtdLGY9MDtmPHQ7KytmKTA9PSgxJmYpP2UucHVzaC5hcHBseShlLHUobChzLGYpKSk6ci5wdXNoLmFwcGx5KHIsdShsKHMsZikpKSxoLnB1c2goIm0iK2YpO3ZhciBwPWMoZSksZD1jKHIpLGc9Im9yaWVudGF0aW9uIit0KyJFeGFjdCIsdj1bImZ1bmN0aW9uICIsZywiKCIsaC5qb2luKCksIil7dmFyIHA9IixwLCIsbj0iLGQsIixkPXN1YihwLG4pO3JldHVybiBkW2QubGVuZ3RoLTFdO307cmV0dXJuICIsZ10uam9pbigiIik7cmV0dXJuIG5ldyBGdW5jdGlvbigic3VtIiwicHJvZCIsInNjYWxlIiwic3ViIix2KShhLG4saSxvKX12YXIgZj1oKDMpLHA9aCg0KSxkPVtmdW5jdGlvbigpe3JldHVybiAwfSxmdW5jdGlvbigpe3JldHVybiAwfSxmdW5jdGlvbih0LGUpe3JldHVybiBlWzBdLXRbMF19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhPSh0WzFdLXJbMV0pKihlWzBdLXJbMF0pLGk9KHRbMF0tclswXSkqKGVbMV0tclsxXSksbz1hLWk7aWYoYT4wKXtpZihpPD0wKXJldHVybiBvO249YStpfWVsc2V7aWYoIShhPDApKXJldHVybiBvO2lmKGk+PTApcmV0dXJuIG87bj0tKGEraSl9dmFyIHM9My4zMzA2NjkwNzM4NzU0NzE2ZS0xNipuO3JldHVybiBvPj1zfHxvPD0tcz9vOmYodCxlLHIpfSxmdW5jdGlvbih0LGUscixuKXt2YXIgYT10WzBdLW5bMF0saT1lWzBdLW5bMF0sbz1yWzBdLW5bMF0scz10WzFdLW5bMV0sbD1lWzFdLW5bMV0sYz1yWzFdLW5bMV0sdT10WzJdLW5bMl0saD1lWzJdLW5bMl0sZj1yWzJdLW5bMl0sZD1pKmMsZz1vKmwsdj1vKnMsbT1hKmMseT1hKmwseD1pKnMsYj11KihkLWcpK2gqKHYtbSkrZiooeS14KSxfPTcuNzcxNTYxMTcyMzc2MTAzZS0xNiooKE1hdGguYWJzKGQpK01hdGguYWJzKGcpKSpNYXRoLmFicyh1KSsoTWF0aC5hYnModikrTWF0aC5hYnMobSkpKk1hdGguYWJzKGgpKyhNYXRoLmFicyh5KStNYXRoLmFicyh4KSkqTWF0aC5hYnMoZikpO3JldHVybiBiPl98fC1iPl8/YjpwKHQsZSxyLG4pfV07ZnVuY3Rpb24gZyh0KXt2YXIgZT1kW3QubGVuZ3RoXTtyZXR1cm4gZXx8KGU9ZFt0Lmxlbmd0aF09aCh0Lmxlbmd0aCkpLGUuYXBwbHkodm9pZCAwLHQpfSFmdW5jdGlvbigpe2Zvcig7ZC5sZW5ndGg8PXM7KWQucHVzaChoKGQubGVuZ3RoKSk7Zm9yKHZhciB0PVtdLHI9WyJzbG93Il0sbj0wO248PXM7KytuKXQucHVzaCgiYSIrbiksci5wdXNoKCJvIituKTt2YXIgYT1bImZ1bmN0aW9uIGdldE9yaWVudGF0aW9uKCIsdC5qb2luKCksIil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIDA7Il07Zm9yKG49MjtuPD1zOysrbilhLnB1c2goImNhc2UgIixuLCI6cmV0dXJuIG8iLG4sIigiLHQuc2xpY2UoMCxuKS5qb2luKCksIik7Iik7YS5wdXNoKCJ9dmFyIHM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDsrK2kpe3NbaV09YXJndW1lbnRzW2ldfTtyZXR1cm4gc2xvdyhzKTt9cmV0dXJuIGdldE9yaWVudGF0aW9uIiksci5wdXNoKGEuam9pbigiIikpO3ZhciBpPUZ1bmN0aW9uLmFwcGx5KHZvaWQgMCxyKTtmb3IoZS5leHBvcnRzPWkuYXBwbHkodm9pZCAwLFtnXS5jb25jYXQoZCkpLG49MDtuPD1zOysrbillLmV4cG9ydHNbbl09ZFtuXX0oKX0seyJyb2J1c3Qtc2NhbGUiOjUxMSwicm9idXN0LXN1YnRyYWN0Ijo1MTMsInJvYnVzdC1zdW0iOjUxNCwidHdvLXByb2R1Y3QiOjU0Mn1dLDUxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJyb2J1c3Qtc3VtIiksYT10KCJyb2J1c3Qtc2NhbGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZigxPT09dC5sZW5ndGgpcmV0dXJuIGEoZSx0WzBdKTtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIGEodCxlWzBdKTtpZigwPT09dC5sZW5ndGh8fDA9PT1lLmxlbmd0aClyZXR1cm5bMF07dmFyIHI9WzBdO2lmKHQubGVuZ3RoPGUubGVuZ3RoKWZvcih2YXIgaT0wO2k8dC5sZW5ndGg7KytpKXI9bihyLGEoZSx0W2ldKSk7ZWxzZSBmb3IodmFyIGk9MDtpPGUubGVuZ3RoOysraSlyPW4ocixhKHQsZVtpXSkpO3JldHVybiByfX0seyJyb2J1c3Qtc2NhbGUiOjUxMSwicm9idXN0LXN1bSI6NTE0fV0sNTExOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInR3by1wcm9kdWN0IiksYT10KCJ0d28tc3VtIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5sZW5ndGg7aWYoMT09PXIpe3ZhciBpPW4odFswXSxlKTtyZXR1cm4gaVswXT9pOltpWzFdXX12YXIgbz1uZXcgQXJyYXkoMipyKSxzPVsuMSwuMV0sbD1bLjEsLjFdLGM9MDtuKHRbMF0sZSxzKSxzWzBdJiYob1tjKytdPXNbMF0pO2Zvcih2YXIgdT0xO3U8cjsrK3Upe24odFt1XSxlLGwpO3ZhciBoPXNbMV07YShoLGxbMF0scyksc1swXSYmKG9bYysrXT1zWzBdKTt2YXIgZj1sWzFdLHA9c1sxXSxkPWYrcCxnPWQtZix2PXAtZztzWzFdPWQsdiYmKG9bYysrXT12KX1zWzFdJiYob1tjKytdPXNbMV0pOzA9PT1jJiYob1tjKytdPTApO3JldHVybiBvLmxlbmd0aD1jLG99fSx7InR3by1wcm9kdWN0Ijo1NDIsInR3by1zdW0iOjU0M31dLDUxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGk9bih0LHIsYSksbz1uKGUscixhKTtpZihpPjAmJm8+MHx8aTwwJiZvPDApcmV0dXJuITE7dmFyIHM9bihyLHQsZSksbD1uKGEsdCxlKTtpZihzPjAmJmw+MHx8czwwJiZsPDApcmV0dXJuITE7aWYoMD09PWkmJjA9PT1vJiYwPT09cyYmMD09PWwpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgYT0wO2E8MjsrK2Epe3ZhciBpPXRbYV0sbz1lW2FdLHM9TWF0aC5taW4oaSxvKSxsPU1hdGgubWF4KGksbyksYz1yW2FdLHU9blthXSxoPU1hdGgubWluKGMsdSksZj1NYXRoLm1heChjLHUpO2lmKGY8c3x8bDxoKXJldHVybiExfXJldHVybiEwfSh0LGUscixhKTtyZXR1cm4hMH07dmFyIG49dCgicm9idXN0LW9yaWVudGF0aW9uIilbM119LHsicm9idXN0LW9yaWVudGF0aW9uIjo1MDl9XSw1MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MHx0Lmxlbmd0aCxuPTB8ZS5sZW5ndGg7aWYoMT09PXImJjE9PT1uKXJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPXQrZSxuPXItdCxhPXQtKHItbikrKGUtbik7aWYoYSlyZXR1cm5bYSxyXTtyZXR1cm5bcl19KHRbMF0sLWVbMF0pO3ZhciBhLGksbz1uZXcgQXJyYXkocituKSxzPTAsbD0wLGM9MCx1PU1hdGguYWJzLGg9dFtsXSxmPXUoaCkscD0tZVtjXSxkPXUocCk7ZjxkPyhpPWgsKGwrPTEpPHImJihoPXRbbF0sZj11KGgpKSk6KGk9cCwoYys9MSk8biYmKHA9LWVbY10sZD11KHApKSk7bDxyJiZmPGR8fGM+PW4/KGE9aCwobCs9MSk8ciYmKGg9dFtsXSxmPXUoaCkpKTooYT1wLChjKz0xKTxuJiYocD0tZVtjXSxkPXUocCkpKTt2YXIgZyx2LG09YStpLHk9bS1hLHg9aS15LGI9eCxfPW07Zm9yKDtsPHImJmM8bjspZjxkPyhhPWgsKGwrPTEpPHImJihoPXRbbF0sZj11KGgpKSk6KGE9cCwoYys9MSk8biYmKHA9LWVbY10sZD11KHApKSksKHg9KGk9YiktKHk9KG09YStpKS1hKSkmJihvW3MrK109eCksYj1fLSgoZz1fK20pLSh2PWctXykpKyhtLXYpLF89Zztmb3IoO2w8cjspKHg9KGk9YiktKHk9KG09KGE9aCkraSktYSkpJiYob1tzKytdPXgpLGI9Xy0oKGc9XyttKS0odj1nLV8pKSsobS12KSxfPWcsKGwrPTEpPHImJihoPXRbbF0pO2Zvcig7YzxuOykoeD0oaT1iKS0oeT0obT0oYT1wKStpKS1hKSkmJihvW3MrK109eCksYj1fLSgoZz1fK20pLSh2PWctXykpKyhtLXYpLF89ZywoYys9MSk8biYmKHA9LWVbY10pO2ImJihvW3MrK109Yik7XyYmKG9bcysrXT1fKTtzfHwob1tzKytdPTApO3JldHVybiBvLmxlbmd0aD1zLG99fSx7fV0sNTE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPTB8dC5sZW5ndGgsbj0wfGUubGVuZ3RoO2lmKDE9PT1yJiYxPT09bilyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj10K2Usbj1yLXQsYT10LShyLW4pKyhlLW4pO2lmKGEpcmV0dXJuW2Escl07cmV0dXJuW3JdfSh0WzBdLGVbMF0pO3ZhciBhLGksbz1uZXcgQXJyYXkocituKSxzPTAsbD0wLGM9MCx1PU1hdGguYWJzLGg9dFtsXSxmPXUoaCkscD1lW2NdLGQ9dShwKTtmPGQ/KGk9aCwobCs9MSk8ciYmKGg9dFtsXSxmPXUoaCkpKTooaT1wLChjKz0xKTxuJiYocD1lW2NdLGQ9dShwKSkpO2w8ciYmZjxkfHxjPj1uPyhhPWgsKGwrPTEpPHImJihoPXRbbF0sZj11KGgpKSk6KGE9cCwoYys9MSk8biYmKHA9ZVtjXSxkPXUocCkpKTt2YXIgZyx2LG09YStpLHk9bS1hLHg9aS15LGI9eCxfPW07Zm9yKDtsPHImJmM8bjspZjxkPyhhPWgsKGwrPTEpPHImJihoPXRbbF0sZj11KGgpKSk6KGE9cCwoYys9MSk8biYmKHA9ZVtjXSxkPXUocCkpKSwoeD0oaT1iKS0oeT0obT1hK2kpLWEpKSYmKG9bcysrXT14KSxiPV8tKChnPV8rbSktKHY9Zy1fKSkrKG0tdiksXz1nO2Zvcig7bDxyOykoeD0oaT1iKS0oeT0obT0oYT1oKStpKS1hKSkmJihvW3MrK109eCksYj1fLSgoZz1fK20pLSh2PWctXykpKyhtLXYpLF89ZywobCs9MSk8ciYmKGg9dFtsXSk7Zm9yKDtjPG47KSh4PShpPWIpLSh5PShtPShhPXApK2kpLWEpKSYmKG9bcysrXT14KSxiPV8tKChnPV8rbSktKHY9Zy1fKSkrKG0tdiksXz1nLChjKz0xKTxuJiYocD1lW2NdKTtiJiYob1tzKytdPWIpO18mJihvW3MrK109Xyk7c3x8KG9bcysrXT0wKTtyZXR1cm4gby5sZW5ndGg9cyxvfX0se31dLDUxNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8tMTp0PjA/MTowfX0se31dLDUxNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEobih0KSl9O3ZhciBuPXQoImJvdW5kYXJ5LWNlbGxzIiksYT10KCJyZWR1Y2Utc2ltcGxpY2lhbC1jb21wbGV4Iil9LHsiYm91bmRhcnktY2VsbHMiOjk3LCJyZWR1Y2Utc2ltcGxpY2lhbC1jb21wbGV4Ijo0OTF9XSw1MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe3I9cnx8MCwidW5kZWZpbmVkIj09dHlwZW9mIHMmJihzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPTAsbj0wO248ZTsrK24pcj0wfE1hdGgubWF4KHIsdFtuXS5sZW5ndGgpO3JldHVybiByLTF9KHQpKTtpZigwPT09dC5sZW5ndGh8fHM8MSlyZXR1cm57Y2VsbHM6W10sdmVydGV4SWRzOltdLHZlcnRleFdlaWdodHM6W119O3ZhciBsPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49YS5tYWxsb2NVaW50OChyKSxpPTA7aTxyOysraSluW2ldPXRbaV08ZXwwO3JldHVybiBufShlLCtyKSxjPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG89ZSooZSsxKS8yKnJ8MCxzPWEubWFsbG9jVWludDMyKDIqbyksbD0wLGM9MDtjPHI7KytjKWZvcih2YXIgdT10W2NdLGU9dS5sZW5ndGgsaD0wO2g8ZTsrK2gpZm9yKHZhciBmPTA7ZjxoOysrZil7dmFyIHA9dVtmXSxkPXVbaF07c1tsKytdPTB8TWF0aC5taW4ocCxkKSxzW2wrK109MHxNYXRoLm1heChwLGQpfWkobihzLFtsLzJ8MCwyXSkpO2Zvcih2YXIgZz0yLGM9MjtjPGw7Yys9MilzW2MtMl09PT1zW2NdJiZzW2MtMV09PT1zW2MrMV18fChzW2crK109c1tjXSxzW2crK109c1tjKzFdKTtyZXR1cm4gbihzLFtnLzJ8MCwyXSl9KHQscyksdT1mdW5jdGlvbih0LGUscixpKXtmb3IodmFyIG89dC5kYXRhLHM9dC5zaGFwZVswXSxsPWEubWFsbG9jRG91YmxlKHMpLGM9MCx1PTA7dTxzOysrdSl7dmFyIGg9b1syKnVdLGY9b1syKnUrMV07aWYocltoXSE9PXJbZl0pe3ZhciBwPWVbaF0sZD1lW2ZdO29bMipjXT1oLG9bMipjKzFdPWYsbFtjKytdPShkLWkpLyhkLXApfX1yZXR1cm4gdC5zaGFwZVswXT1jLG4obCxbY10pfShjLGUsbCwrciksaD1mdW5jdGlvbih0LGUpe3ZhciByPWEubWFsbG9jSW50MzIoMiplKSxuPXQuc2hhcGVbMF0saT10LmRhdGE7clswXT0wO2Zvcih2YXIgbz0wLHM9MDtzPG47KytzKXt2YXIgbD1pWzIqc107aWYobCE9PW8pe2ZvcihyWzIqbysxXT1zOysrbzxsOylyWzIqb109cyxyWzIqbysxXT1zO3JbMipvXT1zfX1yWzIqbysxXT1uO2Zvcig7KytvPGU7KXJbMipvXT1yWzIqbysxXT1uO3JldHVybiByfShjLDB8ZS5sZW5ndGgpLGY9byhzKSh0LGMuZGF0YSxoLGwpLHA9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTB8dC5zaGFwZVswXSxyPXQuZGF0YSxuPW5ldyBBcnJheShlKSxhPTA7YTxlOysrYSluW2FdPVtyWzIqYV0sclsyKmErMV1dO3JldHVybiBufShjKSxkPVtdLnNsaWNlLmNhbGwodS5kYXRhLDAsdS5zaGFwZVswXSk7cmV0dXJuIGEuZnJlZShsKSxhLmZyZWUoYy5kYXRhKSxhLmZyZWUodS5kYXRhKSxhLmZyZWUoaCkse2NlbGxzOmYsdmVydGV4SWRzOnAsdmVydGV4V2VpZ2h0czpkfX07dmFyIG49dCgibmRhcnJheSIpLGE9dCgidHlwZWRhcnJheS1wb29sIiksaT10KCJuZGFycmF5LXNvcnQiKSxvPXQoIi4vbGliL2NvZGVnZW4iKX0seyIuL2xpYi9jb2RlZ2VuIjo1MTgsbmRhcnJheTo0NTIsIm5kYXJyYXktc29ydCI6NDUwLCJ0eXBlZGFycmF5LXBvb2wiOjU0NH1dLDUxODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9aVt0XTtlfHwoZT1pW3RdPWZ1bmN0aW9uKHQpe3ZhciBlPTAscj1uZXcgQXJyYXkodCsxKTtyWzBdPVtbXV07Zm9yKHZhciBpPTE7aTw9dDsrK2kpZm9yKHZhciBvPXJbaV09YShpKSxzPTA7czxvLmxlbmd0aDsrK3MpZT1NYXRoLm1heChlLG9baV0ubGVuZ3RoKTt2YXIgbD1bImZ1bmN0aW9uIEIoQyxFLGksail7IiwidmFyIGE9TWF0aC5taW4oaSxqKXwwLGI9TWF0aC5tYXgoaSxqKXwwLGw9Q1syKmFdLGg9Q1syKmErMV07Iiwid2hpbGUobDxoKXsiLCJ2YXIgbT0obCtoKT4+MSx2PUVbMiptKzFdOyIsImlmKHY9PT1iKXtyZXR1cm4gbX0iLCJpZihiPHYpe2g9bX1lbHNle2w9bSsxfSIsIn0iLCJyZXR1cm4gbDsiLCJ9OyIsImZ1bmN0aW9uIGdldENvbnRvdXIiLHQsImQoRixFLEMsUyl7IiwidmFyIG49Ri5sZW5ndGgsUj1bXTsiLCJmb3IodmFyIGk9MDtpPG47KytpKXt2YXIgYz1GW2ldLGw9Yy5sZW5ndGg7Il07ZnVuY3Rpb24gYyh0KXtpZighKHQubGVuZ3RoPD0wKSl7bC5wdXNoKCJSLnB1c2goIik7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciByPXRbZV07ZT4wJiZsLnB1c2goIiwiKSxsLnB1c2goIlsiKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoOysrbil7dmFyIGE9cltuXTtuPjAmJmwucHVzaCgiLCIpLGwucHVzaCgiQihDLEUsY1siLGFbMF0sIl0sY1siLGFbMV0sIl0pIil9bC5wdXNoKCJdIil9bC5wdXNoKCIpOyIpfX1mb3IodmFyIGk9dCsxO2k+MTstLWkpe2k8dCsxJiZsLnB1c2goImVsc2UgIiksbC5wdXNoKCJpZihsPT09IixpLCIpeyIpO2Zvcih2YXIgdT1bXSxzPTA7czxpOysrcyl1LnB1c2goIihTW2NbIitzKyJdXTw8IitzKyIpIik7bC5wdXNoKCJ2YXIgTT0iLHUuam9pbigiKyIpLCI7aWYoTT09PTB8fE09PT0iLCgxPDxpKS0xLCIpe2NvbnRpbnVlfXN3aXRjaChNKXsiKTtmb3IodmFyIG89cltpLTFdLHM9MDtzPG8ubGVuZ3RoOysrcylsLnB1c2goImNhc2UgIixzLCI6IiksYyhvW3NdKSxsLnB1c2goImJyZWFrOyIpO2wucHVzaCgifX0iKX1yZXR1cm4gbC5wdXNoKCJ9cmV0dXJuIFI7fTtyZXR1cm4gZ2V0Q29udG91ciIsdCwiZCIpLG5ldyBGdW5jdGlvbigicG9vbCIsbC5qb2luKCIiKSkobil9KHQpKTtyZXR1cm4gZX07dmFyIG49dCgidHlwZWRhcnJheS1wb29sIiksYT10KCJtYXJjaGluZy1zaW1wbGV4LXRhYmxlIiksaT17fX0seyJtYXJjaGluZy1zaW1wbGV4LXRhYmxlIjo0MjksInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sNTE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpdC10d2lkZGxlIiksYT10KCJ1bmlvbi1maW5kIik7ZnVuY3Rpb24gaSh0LGUpe3ZhciByPXQubGVuZ3RoLG49dC5sZW5ndGgtZS5sZW5ndGgsYT1NYXRoLm1pbjtpZihuKXJldHVybiBuO3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIDA7Y2FzZSAxOnJldHVybiB0WzBdLWVbMF07Y2FzZSAyOnJldHVybihzPXRbMF0rdFsxXS1lWzBdLWVbMV0pfHxhKHRbMF0sdFsxXSktYShlWzBdLGVbMV0pO2Nhc2UgMzp2YXIgaT10WzBdK3RbMV0sbz1lWzBdK2VbMV07aWYocz1pK3RbMl0tKG8rZVsyXSkpcmV0dXJuIHM7dmFyIHMsbD1hKHRbMF0sdFsxXSksYz1hKGVbMF0sZVsxXSk7cmV0dXJuKHM9YShsLHRbMl0pLWEoYyxlWzJdKSl8fGEobCt0WzJdLGkpLWEoYytlWzJdLG8pO2RlZmF1bHQ6dmFyIHU9dC5zbGljZSgwKTt1LnNvcnQoKTt2YXIgaD1lLnNsaWNlKDApO2guc29ydCgpO2Zvcih2YXIgZj0wO2Y8cjsrK2YpaWYobj11W2ZdLWhbZl0pcmV0dXJuIG47cmV0dXJuIDB9fWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gaSh0WzBdLGVbMF0pfWZ1bmN0aW9uIHModCxlKXtpZihlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksYT0wO2E8cjsrK2EpblthXT1bdFthXSxlW2FdXTtuLnNvcnQobyk7Zm9yKGE9MDthPHI7KythKXRbYV09blthXVswXSxlW2FdPW5bYV1bMV07cmV0dXJuIHR9cmV0dXJuIHQuc29ydChpKSx0fWZ1bmN0aW9uIGwodCl7aWYoMD09PXQubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgZT0xLHI9dC5sZW5ndGgsbj0xO248cjsrK24pe3ZhciBhPXRbbl07aWYoaShhLHRbbi0xXSkpe2lmKG49PT1lKXtlKys7Y29udGludWV9dFtlKytdPWF9fXJldHVybiB0Lmxlbmd0aD1lLHR9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgtMSxhPS0xO3I8PW47KXt2YXIgbz1yK24+PjEscz1pKHRbb10sZSk7czw9MD8oMD09PXMmJihhPW8pLHI9bysxKTpzPjAmJihuPW8tMSl9cmV0dXJuIGF9ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodC5sZW5ndGgpLGE9MCxvPXIubGVuZ3RoO2E8bzsrK2EpclthXT1bXTtmb3IodmFyIHM9W10sbD0oYT0wLGUubGVuZ3RoKTthPGw7KythKWZvcih2YXIgdT1lW2FdLGg9dS5sZW5ndGgsZj0xLHA9MTw8aDtmPHA7KytmKXtzLmxlbmd0aD1uLnBvcENvdW50KGYpO2Zvcih2YXIgZD0wLGc9MDtnPGg7KytnKWYmMTw8ZyYmKHNbZCsrXT11W2ddKTt2YXIgdj1jKHQscyk7aWYoISh2PDApKWZvcig7clt2KytdLnB1c2goYSksISh2Pj10Lmxlbmd0aHx8MCE9PWkodFt2XSxzKSk7KTt9cmV0dXJuIHJ9ZnVuY3Rpb24gaCh0LGUpe2lmKGU8MClyZXR1cm5bXTtmb3IodmFyIHI9W10sYT0oMTw8ZSsxKS0xLGk9MDtpPHQubGVuZ3RoOysraSlmb3IodmFyIG89dFtpXSxsPWE7bDwxPDxvLmxlbmd0aDtsPW4ubmV4dENvbWJpbmF0aW9uKGwpKXtmb3IodmFyIGM9bmV3IEFycmF5KGUrMSksdT0wLGg9MDtoPG8ubGVuZ3RoOysraClsJjE8PGgmJihjW3UrK109b1toXSk7ci5wdXNoKGMpfXJldHVybiBzKHIpfXIuZGltZW5zaW9uPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9TWF0aC5tYXgsbj0wLGE9dC5sZW5ndGg7bjxhOysrbillPXIoZSx0W25dLmxlbmd0aCk7cmV0dXJuIGUtMX0sci5jb3VudFZlcnRpY2VzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0tMSxyPU1hdGgubWF4LG49MCxhPXQubGVuZ3RoO248YTsrK24pZm9yKHZhciBpPXRbbl0sbz0wLHM9aS5sZW5ndGg7bzxzOysrbyllPXIoZSxpW29dKTtyZXR1cm4gZSsxfSxyLmNsb25lQ2VsbHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wLG49dC5sZW5ndGg7cjxuOysrcillW3JdPXRbcl0uc2xpY2UoMCk7cmV0dXJuIGV9LHIuY29tcGFyZUNlbGxzPWksci5ub3JtYWxpemU9cyxyLnVuaXF1ZT1sLHIuZmluZENlbGw9YyxyLmluY2lkZW5jZT11LHIuZHVhbD1mdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiB1KGwoaCh0LDApKSx0KTtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKXJbbl09W107bj0wO2Zvcih2YXIgYT10Lmxlbmd0aDtuPGE7KytuKWZvcih2YXIgaT10W25dLG89MCxzPWkubGVuZ3RoO288czsrK28pcltpW29dXS5wdXNoKG4pO3JldHVybiByfSxyLmV4cGxvZGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3IpZm9yKHZhciBhPXRbcl0saT0wfGEubGVuZ3RoLG89MSxsPTE8PGk7bzxsOysrbyl7Zm9yKHZhciBjPVtdLHU9MDt1PGk7Kyt1KW8+Pj51JjEmJmMucHVzaChhW3VdKTtlLnB1c2goYyl9cmV0dXJuIHMoZSl9LHIuc2tlbGV0b249aCxyLmJvdW5kYXJ5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPTAsbj10Lmxlbmd0aDtyPG47KytyKWZvcih2YXIgYT10W3JdLGk9MCxvPWEubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgbD1uZXcgQXJyYXkoYS5sZW5ndGgtMSksYz0wLHU9MDtjPG87KytjKWMhPT1pJiYobFt1KytdPWFbY10pO2UucHVzaChsKX1yZXR1cm4gcyhlKX0sci5jb25uZWN0ZWRDb21wb25lbnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IGEoZSksbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT10W25dLG89MDtvPGkubGVuZ3RoOysrbylmb3IodmFyIHM9bysxO3M8aS5sZW5ndGg7KytzKXIubGluayhpW29dLGlbc10pO3ZhciBsPVtdLGM9ci5yYW5rcztmb3Iobj0wO248Yy5sZW5ndGg7KytuKWNbbl09LTE7Zm9yKG49MDtuPHQubGVuZ3RoOysrbil7dmFyIHU9ci5maW5kKHRbbl1bMF0pO2NbdV08MD8oY1t1XT1sLmxlbmd0aCxsLnB1c2goW3Rbbl0uc2xpY2UoMCldKSk6bFtjW3VdXS5wdXNoKHRbbl0uc2xpY2UoMCkpfXJldHVybiBsfSh0LGUpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1sKHMoaCh0LDApKSkscj1uZXcgYShlLmxlbmd0aCksbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT10W25dLG89MDtvPGkubGVuZ3RoOysrbylmb3IodmFyIHU9YyhlLFtpW29dXSksZj1vKzE7ZjxpLmxlbmd0aDsrK2Ypci5saW5rKHUsYyhlLFtpW2ZdXSkpO3ZhciBwPVtdLGQ9ci5yYW5rcztmb3Iobj0wO248ZC5sZW5ndGg7KytuKWRbbl09LTE7Zm9yKG49MDtuPHQubGVuZ3RoOysrbil7dmFyIGc9ci5maW5kKGMoZSxbdFtuXVswXV0pKTtkW2ddPDA/KGRbZ109cC5sZW5ndGgscC5wdXNoKFt0W25dLnNsaWNlKDApXSkpOnBbZFtnXV0ucHVzaCh0W25dLnNsaWNlKDApKX1yZXR1cm4gcH0odCl9fSx7ImJpdC10d2lkZGxlIjo5NCwidW5pb24tZmluZCI6NTQ1fV0sNTIwOltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzk0XVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6OTR9XSw1MjE6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bNTE5XVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHsiYml0LXR3aWRkbGUiOjUyMCxkdXA6NTE5LCJ1bmlvbi1maW5kIjo1MjJ9XSw1MjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt0aGlzLnJvb3RzPW5ldyBBcnJheSh0KSx0aGlzLnJhbmtzPW5ldyBBcnJheSh0KTtmb3IodmFyIGU9MDtlPHQ7KytlKXRoaXMucm9vdHNbZV09ZSx0aGlzLnJhbmtzW2VdPTB9ZS5leHBvcnRzPW4sbi5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdHMubGVuZ3RofSxuLnByb3RvdHlwZS5tYWtlU2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yb290cy5sZW5ndGg7cmV0dXJuIHRoaXMucm9vdHMucHVzaCh0KSx0aGlzLnJhbmtzLnB1c2goMCksdH0sbi5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5yb290cztlW3RdIT09dDspe3ZhciByPWVbdF07ZVt0XT1lW3JdLHQ9cn1yZXR1cm4gdH0sbi5wcm90b3R5cGUubGluaz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuZmluZCh0KSxuPXRoaXMuZmluZChlKTtpZihyIT09bil7dmFyIGE9dGhpcy5yYW5rcyxpPXRoaXMucm9vdHMsbz1hW3JdLHM9YVtuXTtvPHM/aVtyXT1uOnM8bz9pW25dPXI6KGlbbl09ciwrK2Fbcl0pfX19LHt9XSw1MjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIGk9ZS5sZW5ndGgsbz10Lmxlbmd0aCxzPW5ldyBBcnJheShpKSxsPW5ldyBBcnJheShpKSxjPW5ldyBBcnJheShpKSx1PW5ldyBBcnJheShpKSxoPTA7aDxpOysraClzW2hdPWxbaF09LTEsY1toXT0xLzAsdVtoXT0hMTtmb3IodmFyIGg9MDtoPG87KytoKXt2YXIgZj10W2hdO2lmKDIhPT1mLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIklucHV0IG11c3QgYmUgYSBncmFwaCIpO3ZhciBwPWZbMV0sZD1mWzBdOy0xIT09bFtkXT9sW2RdPS0yOmxbZF09cCwtMSE9PXNbcF0/c1twXT0tMjpzW3BdPWR9ZnVuY3Rpb24gZyh0KXtpZih1W3RdKXJldHVybiAxLzA7dmFyIHIsYSxpLG8sYyxoPXNbdF0sZj1sW3RdO3JldHVybiBoPDB8fGY8MD8xLzA6KHI9ZVt0XSxhPWVbaF0saT1lW2ZdLG89TWF0aC5hYnMobihyLGEsaSkpLGM9TWF0aC5zcXJ0KE1hdGgucG93KGFbMF0taVswXSwyKStNYXRoLnBvdyhhWzFdLWlbMV0sMikpLG8vYyl9ZnVuY3Rpb24gdih0LGUpe3ZhciByPVRbdF0sbj1UW2VdO1RbdF09bixUW2VdPXIsTVtyXT1lLE1bbl09dH1mdW5jdGlvbiBtKHQpe3JldHVybiBjW1RbdF1dfWZ1bmN0aW9uIHkodCl7cmV0dXJuIDEmdD90LTE+PjE6KHQ+PjEpLTF9ZnVuY3Rpb24geCh0KXtmb3IodmFyIGU9bSh0KTs7KXt2YXIgcj1lLG49Mip0KzEsYT0yKih0KzEpLGk9dDtpZihuPFMpe3ZhciBvPW0obik7bzxyJiYoaT1uLHI9byl9aWYoYTxTKXt2YXIgcz1tKGEpO3M8ciYmKGk9YSl9aWYoaT09PXQpcmV0dXJuIHQ7dih0LGkpLHQ9aX19ZnVuY3Rpb24gYih0KXtmb3IodmFyIGU9bSh0KTt0PjA7KXt2YXIgcj15KHQpO2lmKHI+PTApe3ZhciBuPW0ocik7aWYoZTxuKXt2KHQsciksdD1yO2NvbnRpbnVlfX1yZXR1cm4gdH19ZnVuY3Rpb24gXygpe2lmKFM+MCl7dmFyIHQ9VFswXTtyZXR1cm4gdigwLFMtMSksUy09MSx4KDApLHR9cmV0dXJuLTF9ZnVuY3Rpb24gdyh0LGUpe3ZhciByPVRbdF07cmV0dXJuIGNbcl09PT1lP3Q6KGNbcl09LTEvMCxiKHQpLF8oKSxjW3JdPWUsYigoUys9MSktMSkpfWZ1bmN0aW9uIGsodCl7aWYoIXVbdF0pe3VbdF09ITA7dmFyIGU9c1t0XSxyPWxbdF07c1tyXT49MCYmKHNbcl09ZSksbFtlXT49MCYmKGxbZV09ciksTVtlXT49MCYmdyhNW2VdLGcoZSkpLE1bcl0+PTAmJncoTVtyXSxnKHIpKX19Zm9yKHZhciBUPVtdLE09bmV3IEFycmF5KGkpLGg9MDtoPGk7KytoKXt2YXIgQT1jW2hdPWcoaCk7QTwxLzA/KE1baF09VC5sZW5ndGgsVC5wdXNoKGgpKTpNW2hdPS0xfWZvcih2YXIgUz1ULmxlbmd0aCxoPVM+PjE7aD49MDstLWgpeChoKTtmb3IoOzspe3ZhciBFPV8oKTtpZihFPDB8fGNbRV0+cilicmVhaztrKEUpfWZvcih2YXIgTD1bXSxoPTA7aDxpOysraCl1W2hdfHwoTVtoXT1MLmxlbmd0aCxMLnB1c2goZVtoXS5zbGljZSgpKSk7TC5sZW5ndGg7ZnVuY3Rpb24gQyh0LGUpe2lmKHRbZV08MClyZXR1cm4gZTt2YXIgcj1lLG49ZTtkb3t2YXIgYT10W25dO2lmKCF1W25dfHxhPDB8fGE9PT1uKWJyZWFrO2lmKGE9dFtuPWFdLCF1W25dfHxhPDB8fGE9PT1uKWJyZWFrO249YSxyPXRbcl19d2hpbGUociE9PW4pO2Zvcih2YXIgaT1lO2khPT1uO2k9dFtpXSl0W2ldPW47cmV0dXJuIG59dmFyIFA9W107cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1DKHMsdFswXSkscj1DKGwsdFsxXSk7aWYoZT49MCYmcj49MCYmZSE9PXIpe3ZhciBuPU1bZV0sYT1NW3JdO24hPT1hJiZQLnB1c2goW24sYV0pfX0pLGEudW5pcXVlKGEubm9ybWFsaXplKFApKSx7cG9zaXRpb25zOkwsZWRnZXM6UH19O3ZhciBuPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpLGE9dCgic2ltcGxpY2lhbC1jb21wbGV4Iil9LHsicm9idXN0LW9yaWVudGF0aW9uIjo1MDksInNpbXBsaWNpYWwtY29tcGxleCI6NTIxfV0sNTI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGksbyxzO2lmKGVbMF1bMF08ZVsxXVswXSlyPWVbMF0saT1lWzFdO2Vsc2V7aWYoIShlWzBdWzBdPmVbMV1bMF0pKXJldHVybiBhKGUsdCk7cj1lWzFdLGk9ZVswXX1pZih0WzBdWzBdPHRbMV1bMF0pbz10WzBdLHM9dFsxXTtlbHNle2lmKCEodFswXVswXT50WzFdWzBdKSlyZXR1cm4tYSh0LGUpO289dFsxXSxzPXRbMF19dmFyIGw9bihyLGkscyksYz1uKHIsaSxvKTtpZihsPDApe2lmKGM8PTApcmV0dXJuIGx9ZWxzZSBpZihsPjApe2lmKGM+PTApcmV0dXJuIGx9ZWxzZSBpZihjKXJldHVybiBjO2lmKGw9bihzLG8saSksYz1uKHMsbyxyKSxsPDApe2lmKGM8PTApcmV0dXJuIGx9ZWxzZSBpZihsPjApe2lmKGM+PTApcmV0dXJuIGx9ZWxzZSBpZihjKXJldHVybiBjO3JldHVybiBpWzBdLXNbMF19O3ZhciBuPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpO2Z1bmN0aW9uIGEodCxlKXt2YXIgcixhLGksbztpZihlWzBdWzBdPGVbMV1bMF0pcj1lWzBdLGE9ZVsxXTtlbHNle2lmKCEoZVswXVswXT5lWzFdWzBdKSl7dmFyIHM9TWF0aC5taW4odFswXVsxXSx0WzFdWzFdKSxsPU1hdGgubWF4KHRbMF1bMV0sdFsxXVsxXSksYz1NYXRoLm1pbihlWzBdWzFdLGVbMV1bMV0pLHU9TWF0aC5tYXgoZVswXVsxXSxlWzFdWzFdKTtyZXR1cm4gbDxjP2wtYzpzPnU/cy11OmwtdX1yPWVbMV0sYT1lWzBdfXRbMF1bMV08dFsxXVsxXT8oaT10WzBdLG89dFsxXSk6KGk9dFsxXSxvPXRbMF0pO3ZhciBoPW4oYSxyLGkpO3JldHVybiBofHwoKGg9bihhLHIsbykpfHxvLWEpfX0seyJyb2J1c3Qtb3JpZW50YXRpb24iOjUwOX1dLDUyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9MiplLG49bmV3IEFycmF5KHIpLGk9MDtpPGU7KytpKXt2YXIgbD10W2ldLGM9bFswXVswXTxsWzFdWzBdO25bMippXT1uZXcgaChsWzBdWzBdLGwsYyxpKSxuWzIqaSsxXT1uZXcgaChsWzFdWzBdLGwsIWMsaSl9bi5zb3J0KGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54LWUueDtyZXR1cm4gcnx8KChyPXQuY3JlYXRlLWUuY3JlYXRlKXx8TWF0aC5taW4odC5zZWdtZW50WzBdWzFdLHQuc2VnbWVudFsxXVsxXSktTWF0aC5taW4oZS5zZWdtZW50WzBdWzFdLGUuc2VnbWVudFsxXVsxXSkpfSk7Zm9yKHZhciBmPWEobykscD1bXSxkPVtdLGc9W10saT0wO2k8cjspe2Zvcih2YXIgdj1uW2ldLngsbT1bXTtpPHI7KXt2YXIgeT1uW2ldO2lmKHkueCE9PXYpYnJlYWs7aSs9MSx5LnNlZ21lbnRbMF1bMF09PT15LngmJnkuc2VnbWVudFsxXVswXT09PXkueD95LmNyZWF0ZSYmKHkuc2VnbWVudFswXVsxXTx5LnNlZ21lbnRbMV1bMV0/KG0ucHVzaChuZXcgdSh5LnNlZ21lbnRbMF1bMV0seS5pbmRleCwhMCwhMCkpLG0ucHVzaChuZXcgdSh5LnNlZ21lbnRbMV1bMV0seS5pbmRleCwhMSwhMSkpKToobS5wdXNoKG5ldyB1KHkuc2VnbWVudFsxXVsxXSx5LmluZGV4LCEwLCExKSksbS5wdXNoKG5ldyB1KHkuc2VnbWVudFswXVsxXSx5LmluZGV4LCExLCEwKSkpKTpmPXkuY3JlYXRlP2YuaW5zZXJ0KHkuc2VnbWVudCx5LmluZGV4KTpmLnJlbW92ZSh5LnNlZ21lbnQpfXAucHVzaChmLnJvb3QpLGQucHVzaCh2KSxnLnB1c2gobSl9cmV0dXJuIG5ldyBzKHAsZCxnKX07dmFyIG49dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKSxhPXQoImZ1bmN0aW9uYWwtcmVkLWJsYWNrLXRyZWUiKSxpPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpLG89dCgiLi9saWIvb3JkZXItc2VnbWVudHMiKTtmdW5jdGlvbiBzKHQsZSxyKXt0aGlzLnNsYWJzPXQsdGhpcy5jb29yZGluYXRlcz1lLHRoaXMuaG9yaXpvbnRhbD1yfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdC55LWV9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgcj1udWxsO3Q7KXt2YXIgbixhLG89dC5rZXk7b1swXVswXTxvWzFdWzBdPyhuPW9bMF0sYT1vWzFdKToobj1vWzFdLGE9b1swXSk7dmFyIHM9aShuLGEsZSk7aWYoczwwKXQ9dC5sZWZ0O2Vsc2UgaWYocz4wKWlmKGVbMF0hPT1vWzFdWzBdKXI9dCx0PXQucmlnaHQ7ZWxzZXtpZihsPWModC5yaWdodCxlKSlyZXR1cm4gbDt0PXQubGVmdH1lbHNle2lmKGVbMF0hPT1vWzFdWzBdKXJldHVybiB0O3ZhciBsO2lmKGw9Yyh0LnJpZ2h0LGUpKXJldHVybiBsO3Q9dC5sZWZ0fX1yZXR1cm4gcn1mdW5jdGlvbiB1KHQsZSxyLG4pe3RoaXMueT10LHRoaXMuaW5kZXg9ZSx0aGlzLnN0YXJ0PXIsdGhpcy5jbG9zZWQ9bn1mdW5jdGlvbiBoKHQsZSxyLG4pe3RoaXMueD10LHRoaXMuc2VnbWVudD1lLHRoaXMuY3JlYXRlPXIsdGhpcy5pbmRleD1ufXMucHJvdG90eXBlLmNhc3RVcD1mdW5jdGlvbih0KXt2YXIgZT1uLmxlKHRoaXMuY29vcmRpbmF0ZXMsdFswXSk7aWYoZTwwKXJldHVybi0xO3RoaXMuc2xhYnNbZV07dmFyIHI9Yyh0aGlzLnNsYWJzW2VdLHQpLGE9LTE7aWYociYmKGE9ci52YWx1ZSksdGhpcy5jb29yZGluYXRlc1tlXT09PXRbMF0pe3ZhciBzPW51bGw7aWYociYmKHM9ci5rZXkpLGU+MCl7dmFyIHU9Yyh0aGlzLnNsYWJzW2UtMV0sdCk7dSYmKHM/byh1LmtleSxzKT4wJiYocz11LmtleSxhPXUudmFsdWUpOihhPXUudmFsdWUscz11LmtleSkpfXZhciBoPXRoaXMuaG9yaXpvbnRhbFtlXTtpZihoLmxlbmd0aD4wKXt2YXIgZj1uLmdlKGgsdFsxXSxsKTtpZihmPGgubGVuZ3RoKXt2YXIgcD1oW2ZdO2lmKHRbMV09PT1wLnkpe2lmKHAuY2xvc2VkKXJldHVybiBwLmluZGV4O2Zvcig7ZjxoLmxlbmd0aC0xJiZoW2YrMV0ueT09PXRbMV07KWlmKChwPWhbZis9MV0pLmNsb3NlZClyZXR1cm4gcC5pbmRleDtpZihwLnk9PT10WzFdJiYhcC5zdGFydCl7aWYoKGYrPTEpPj1oLmxlbmd0aClyZXR1cm4gYTtwPWhbZl19fWlmKHAuc3RhcnQpaWYocyl7dmFyIGQ9aShzWzBdLHNbMV0sW3RbMF0scC55XSk7c1swXVswXT5zWzFdWzBdJiYoZD0tZCksZD4wJiYoYT1wLmluZGV4KX1lbHNlIGE9cC5pbmRleDtlbHNlIHAueSE9PXRbMV0mJihhPXAuaW5kZXgpfX19cmV0dXJuIGF9fSx7Ii4vbGliL29yZGVyLXNlZ21lbnRzIjo1MjQsImJpbmFyeS1zZWFyY2gtYm91bmRzIjo5MywiZnVuY3Rpb25hbC1yZWQtYmxhY2stdHJlZSI6MjMzLCJyb2J1c3Qtb3JpZW50YXRpb24iOjUwOX1dLDUyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJyb2J1c3QtZG90LXByb2R1Y3QiKSxhPXQoInJvYnVzdC1zdW0iKTtmdW5jdGlvbiBpKHQsZSl7dmFyIHI9YShuKHQsZSksW2VbZS5sZW5ndGgtMV1dKTtyZXR1cm4gcltyLmxlbmd0aC0xXX1mdW5jdGlvbiBvKHQsZSxyLG4pe3ZhciBhPS1lLyhuLWUpO2E8MD9hPTA6YT4xJiYoYT0xKTtmb3IodmFyIGk9MS1hLG89dC5sZW5ndGgscz1uZXcgQXJyYXkobyksbD0wO2w8bzsrK2wpc1tsXT1hKnRbbF0raSpyW2xdO3JldHVybiBzfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPVtdLGE9aSh0W3QubGVuZ3RoLTFdLGUpLHM9dFt0Lmxlbmd0aC0xXSxsPXRbMF0sYz0wO2M8dC5sZW5ndGg7KytjLHM9bCl7dmFyIHU9aShsPXRbY10sZSk7aWYoYTwwJiZ1PjB8fGE+MCYmdTwwKXt2YXIgaD1vKHMsdSxsLGEpO3IucHVzaChoKSxuLnB1c2goaC5zbGljZSgpKX11PDA/bi5wdXNoKGwuc2xpY2UoKSk6dT4wP3IucHVzaChsLnNsaWNlKCkpOihyLnB1c2gobC5zbGljZSgpKSxuLnB1c2gobC5zbGljZSgpKSksYT11fXJldHVybntwb3NpdGl2ZTpyLG5lZ2F0aXZlOm59fSxlLmV4cG9ydHMucG9zaXRpdmU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sbj1pKHRbdC5sZW5ndGgtMV0sZSksYT10W3QubGVuZ3RoLTFdLHM9dFswXSxsPTA7bDx0Lmxlbmd0aDsrK2wsYT1zKXt2YXIgYz1pKHM9dFtsXSxlKTsobjwwJiZjPjB8fG4+MCYmYzwwKSYmci5wdXNoKG8oYSxjLHMsbikpLGM+PTAmJnIucHVzaChzLnNsaWNlKCkpLG49Y31yZXR1cm4gcn0sZS5leHBvcnRzLm5lZ2F0aXZlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLG49aSh0W3QubGVuZ3RoLTFdLGUpLGE9dFt0Lmxlbmd0aC0xXSxzPXRbMF0sbD0wO2w8dC5sZW5ndGg7KytsLGE9cyl7dmFyIGM9aShzPXRbbF0sZSk7KG48MCYmYz4wfHxuPjAmJmM8MCkmJnIucHVzaChvKGEsYyxzLG4pKSxjPD0wJiZyLnB1c2gocy5zbGljZSgpKSxuPWN9cmV0dXJuIHJ9fSx7InJvYnVzdC1kb3QtcHJvZHVjdCI6NTA2LCJyb2J1c3Qtc3VtIjo1MTR9XSw1Mjc6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9e25vdF9zdHJpbmc6L1tec10vLG5vdF9ib29sOi9bXnRdLyxub3RfdHlwZTovW15UXS8sbm90X3ByaW1pdGl2ZTovW152XS8sbnVtYmVyOi9bZGllZmddLyxudW1lcmljX2FyZzovW2JjZGllZmd1eFhdLyxqc29uOi9bal0vLG5vdF9qc29uOi9bXmpdLyx0ZXh0Oi9eW15ceDI1XSsvLG1vZHVsbzovXlx4MjV7Mn0vLHBsYWNlaG9sZGVyOi9eXHgyNSg/OihbMS05XVxkKilcJHxcKChbXildKylcKSk/KFwrKT8oMHwnW14kXSk/KC0pPyhcZCspPyg/OlwuKFxkKykpPyhbYi1naWpvc3RUdXZ4WF0pLyxrZXk6L14oW2Etel9dW2Etel9cZF0qKS9pLGtleV9hY2Nlc3M6L15cLihbYS16X11bYS16X1xkXSopL2ksaW5kZXhfYWNjZXNzOi9eXFsoXGQrKVxdLyxzaWduOi9eWystXS99O2Z1bmN0aW9uIGUocil7cmV0dXJuIGZ1bmN0aW9uKHIsbil7dmFyIGEsaSxvLHMsbCxjLHUsaCxmLHA9MSxkPXIubGVuZ3RoLGc9IiI7Zm9yKGk9MDtpPGQ7aSsrKWlmKCJzdHJpbmciPT10eXBlb2YgcltpXSlnKz1yW2ldO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiByW2ldKXtpZigocz1yW2ldKS5rZXlzKWZvcihhPW5bcF0sbz0wO288cy5rZXlzLmxlbmd0aDtvKyspe2lmKG51bGw9PWEpdGhyb3cgbmV3IEVycm9yKGUoJ1tzcHJpbnRmXSBDYW5ub3QgYWNjZXNzIHByb3BlcnR5ICIlcyIgb2YgdW5kZWZpbmVkIHZhbHVlICIlcyInLHMua2V5c1tvXSxzLmtleXNbby0xXSkpO2E9YVtzLmtleXNbb11dfWVsc2UgYT1zLnBhcmFtX25vP25bcy5wYXJhbV9ub106bltwKytdO2lmKHQubm90X3R5cGUudGVzdChzLnR5cGUpJiZ0Lm5vdF9wcmltaXRpdmUudGVzdChzLnR5cGUpJiZhIGluc3RhbmNlb2YgRnVuY3Rpb24mJihhPWEoKSksdC5udW1lcmljX2FyZy50ZXN0KHMudHlwZSkmJiJudW1iZXIiIT10eXBlb2YgYSYmaXNOYU4oYSkpdGhyb3cgbmV3IFR5cGVFcnJvcihlKCJbc3ByaW50Zl0gZXhwZWN0aW5nIG51bWJlciBidXQgZm91bmQgJVQiLGEpKTtzd2l0Y2godC5udW1iZXIudGVzdChzLnR5cGUpJiYoaD1hPj0wKSxzLnR5cGUpe2Nhc2UiYiI6YT1wYXJzZUludChhLDEwKS50b1N0cmluZygyKTticmVhaztjYXNlImMiOmE9U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChhLDEwKSk7YnJlYWs7Y2FzZSJkIjpjYXNlImkiOmE9cGFyc2VJbnQoYSwxMCk7YnJlYWs7Y2FzZSJqIjphPUpTT04uc3RyaW5naWZ5KGEsbnVsbCxzLndpZHRoP3BhcnNlSW50KHMud2lkdGgpOjApO2JyZWFrO2Nhc2UiZSI6YT1zLnByZWNpc2lvbj9wYXJzZUZsb2F0KGEpLnRvRXhwb25lbnRpYWwocy5wcmVjaXNpb24pOnBhcnNlRmxvYXQoYSkudG9FeHBvbmVudGlhbCgpO2JyZWFrO2Nhc2UiZiI6YT1zLnByZWNpc2lvbj9wYXJzZUZsb2F0KGEpLnRvRml4ZWQocy5wcmVjaXNpb24pOnBhcnNlRmxvYXQoYSk7YnJlYWs7Y2FzZSJnIjphPXMucHJlY2lzaW9uP1N0cmluZyhOdW1iZXIoYS50b1ByZWNpc2lvbihzLnByZWNpc2lvbikpKTpwYXJzZUZsb2F0KGEpO2JyZWFrO2Nhc2UibyI6YT0ocGFyc2VJbnQoYSwxMCk+Pj4wKS50b1N0cmluZyg4KTticmVhaztjYXNlInMiOmE9U3RyaW5nKGEpLGE9cy5wcmVjaXNpb24/YS5zdWJzdHJpbmcoMCxzLnByZWNpc2lvbik6YTticmVhaztjYXNlInQiOmE9U3RyaW5nKCEhYSksYT1zLnByZWNpc2lvbj9hLnN1YnN0cmluZygwLHMucHJlY2lzaW9uKTphO2JyZWFrO2Nhc2UiVCI6YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSxhPXMucHJlY2lzaW9uP2Euc3Vic3RyaW5nKDAscy5wcmVjaXNpb24pOmE7YnJlYWs7Y2FzZSJ1IjphPXBhcnNlSW50KGEsMTApPj4+MDticmVhaztjYXNlInYiOmE9YS52YWx1ZU9mKCksYT1zLnByZWNpc2lvbj9hLnN1YnN0cmluZygwLHMucHJlY2lzaW9uKTphO2JyZWFrO2Nhc2UieCI6YT0ocGFyc2VJbnQoYSwxMCk+Pj4wKS50b1N0cmluZygxNik7YnJlYWs7Y2FzZSJYIjphPShwYXJzZUludChhLDEwKT4+PjApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfXQuanNvbi50ZXN0KHMudHlwZSk/Zys9YTooIXQubnVtYmVyLnRlc3Qocy50eXBlKXx8aCYmIXMuc2lnbj9mPSIiOihmPWg/IisiOiItIixhPWEudG9TdHJpbmcoKS5yZXBsYWNlKHQuc2lnbiwiIikpLGM9cy5wYWRfY2hhcj8iMCI9PT1zLnBhZF9jaGFyPyIwIjpzLnBhZF9jaGFyLmNoYXJBdCgxKToiICIsdT1zLndpZHRoLShmK2EpLmxlbmd0aCxsPXMud2lkdGgmJnU+MD9jLnJlcGVhdCh1KToiIixnKz1zLmFsaWduP2YrYStsOiIwIj09PWM/ZitsK2E6bCtmK2EpfXJldHVybiBnfShmdW5jdGlvbihlKXtpZihhW2VdKXJldHVybiBhW2VdO3ZhciByLG49ZSxpPVtdLG89MDtmb3IoO247KXtpZihudWxsIT09KHI9dC50ZXh0LmV4ZWMobikpKWkucHVzaChyWzBdKTtlbHNlIGlmKG51bGwhPT0ocj10Lm1vZHVsby5leGVjKG4pKSlpLnB1c2goIiUiKTtlbHNle2lmKG51bGw9PT0ocj10LnBsYWNlaG9sZGVyLmV4ZWMobikpKXRocm93IG5ldyBTeW50YXhFcnJvcigiW3NwcmludGZdIHVuZXhwZWN0ZWQgcGxhY2Vob2xkZXIiKTtpZihyWzJdKXtvfD0xO3ZhciBzPVtdLGw9clsyXSxjPVtdO2lmKG51bGw9PT0oYz10LmtleS5leGVjKGwpKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIltzcHJpbnRmXSBmYWlsZWQgdG8gcGFyc2UgbmFtZWQgYXJndW1lbnQga2V5Iik7Zm9yKHMucHVzaChjWzFdKTsiIiE9PShsPWwuc3Vic3RyaW5nKGNbMF0ubGVuZ3RoKSk7KWlmKG51bGwhPT0oYz10LmtleV9hY2Nlc3MuZXhlYyhsKSkpcy5wdXNoKGNbMV0pO2Vsc2V7aWYobnVsbD09PShjPXQuaW5kZXhfYWNjZXNzLmV4ZWMobCkpKXRocm93IG5ldyBTeW50YXhFcnJvcigiW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBrZXkiKTtzLnB1c2goY1sxXSl9clsyXT1zfWVsc2Ugb3w9MjtpZigzPT09byl0aHJvdyBuZXcgRXJyb3IoIltzcHJpbnRmXSBtaXhpbmcgcG9zaXRpb25hbCBhbmQgbmFtZWQgcGxhY2Vob2xkZXJzIGlzIG5vdCAoeWV0KSBzdXBwb3J0ZWQiKTtpLnB1c2goe3BsYWNlaG9sZGVyOnJbMF0scGFyYW1fbm86clsxXSxrZXlzOnJbMl0sc2lnbjpyWzNdLHBhZF9jaGFyOnJbNF0sYWxpZ246cls1XSx3aWR0aDpyWzZdLHByZWNpc2lvbjpyWzddLHR5cGU6cls4XX0pfW49bi5zdWJzdHJpbmcoclswXS5sZW5ndGgpfXJldHVybiBhW2VdPWl9KHIpLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbih0LHIpe3JldHVybiBlLmFwcGx5KG51bGwsW3RdLmNvbmNhdChyfHxbXSkpfXZhciBhPU9iamVjdC5jcmVhdGUobnVsbCk7InVuZGVmaW5lZCIhPXR5cGVvZiByJiYoci5zcHJpbnRmPWUsci52c3ByaW50Zj1uKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5zcHJpbnRmPWUsd2luZG93LnZzcHJpbnRmPW4pfSgpfSx7fV0sNTI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInBhcmVudGhlc2lzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZihudWxsPT10KXRocm93IEVycm9yKCJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmciKTtpZihudWxsPT1lKXRocm93IEVycm9yKCJTZXBhcmF0b3Igc2hvdWxkIGJlIGEgc3RyaW5nIG9yIGEgUmVnRXhwIik7cj8oInN0cmluZyI9PXR5cGVvZiByfHxBcnJheS5pc0FycmF5KHIpKSYmKHI9e2lnbm9yZTpyfSk6cj17fSxudWxsPT1yLmVzY2FwZSYmKHIuZXNjYXBlPSEwKSxudWxsPT1yLmlnbm9yZT9yLmlnbm9yZT1bIltdIiwiKCkiLCJ7fSIsIjw+IiwnIiInLCInJyIsImBgIiwiXHUyMDFjXHUyMDFkIiwiXHhhYlx4YmIiXTooInN0cmluZyI9PXR5cGVvZiByLmlnbm9yZSYmKHIuaWdub3JlPVtyLmlnbm9yZV0pLHIuaWdub3JlPXIuaWdub3JlLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodCs9dCksdH0pKTt2YXIgYT1uLnBhcnNlKHQse2ZsYXQ6ITAsYnJhY2tldHM6ci5pZ25vcmV9KSxpPWFbMF0uc3BsaXQoZSk7aWYoci5lc2NhcGUpe2Zvcih2YXIgbz1bXSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBsPWlbc10sYz1pW3MrMV07IlxcIj09PWxbbC5sZW5ndGgtMV0mJiJcXCIhPT1sW2wubGVuZ3RoLTJdPyhvLnB1c2gobCtlK2MpLHMrKyk6by5wdXNoKGwpfWk9b31mb3Iocz0wO3M8aS5sZW5ndGg7cysrKWFbMF09aVtzXSxpW3NdPW4uc3RyaW5naWZ5KGEse2ZsYXQ6ITB9KTtyZXR1cm4gaX19LHtwYXJlbnRoZXNpczo0NjB9XSw1Mjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPW5ldyBBcnJheShlKSxhPW5ldyBBcnJheShlKSxpPW5ldyBBcnJheShlKSxvPW5ldyBBcnJheShlKSxzPW5ldyBBcnJheShlKSxsPTA7bDxlOysrbClyW2xdPS0xLG5bbF09MCxhW2xdPSExLGlbbF09MCxvW2xdPS0xLHNbbF09W107dmFyIGMsdT0wLGg9W10sZj1bXTtmdW5jdGlvbiBwKGUpe3ZhciBsPVtlXSxjPVtlXTtmb3IocltlXT1uW2VdPXUsYVtlXT0hMCx1Kz0xO2MubGVuZ3RoPjA7KXtlPWNbYy5sZW5ndGgtMV07dmFyIHA9dFtlXTtpZihpW2VdPHAubGVuZ3RoKXtmb3IodmFyIGQ9aVtlXTtkPHAubGVuZ3RoOysrZCl7dmFyIGc9cFtkXTtpZihyW2ddPDApe3JbZ109bltnXT11LGFbZ109ITAsdSs9MSxsLnB1c2goZyksYy5wdXNoKGcpO2JyZWFrfWFbZ10mJihuW2VdPTB8TWF0aC5taW4obltlXSxuW2ddKSksb1tnXT49MCYmc1tlXS5wdXNoKG9bZ10pfWlbZV09ZH1lbHNle2lmKG5bZV09PT1yW2VdKXtmb3IodmFyIHY9W10sbT1bXSx5PTAsZD1sLmxlbmd0aC0xO2Q+PTA7LS1kKXt2YXIgeD1sW2RdO2lmKGFbeF09ITEsdi5wdXNoKHgpLG0ucHVzaChzW3hdKSx5Kz1zW3hdLmxlbmd0aCxvW3hdPWgubGVuZ3RoLHg9PT1lKXtsLmxlbmd0aD1kO2JyZWFrfX1oLnB1c2godik7Zm9yKHZhciBiPW5ldyBBcnJheSh5KSxkPTA7ZDxtLmxlbmd0aDtkKyspZm9yKHZhciBfPTA7XzxtW2RdLmxlbmd0aDtfKyspYlstLXldPW1bZF1bX107Zi5wdXNoKGIpfWMucG9wKCl9fX1mb3IodmFyIGw9MDtsPGU7KytsKXJbbF08MCYmcChsKTtmb3IodmFyIGw9MDtsPGYubGVuZ3RoO2wrKyl7dmFyIGQ9ZltsXTtpZigwIT09ZC5sZW5ndGgpe2Quc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSxjPVtkWzBdXTtmb3IodmFyIGc9MTtnPGQubGVuZ3RoO2crKylkW2ddIT09ZFtnLTFdJiZjLnB1c2goZFtnXSk7ZltsXT1jfX1yZXR1cm57Y29tcG9uZW50czpoLGFkamFjZW5jeUxpc3Q6Zn19fSx7fV0sNTMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHQuZGltZW5zaW9uPD0wKXJldHVybntwb3NpdGlvbnM6W10sY2VsbHM6W119O2lmKDE9PT10LmRpbWVuc2lvbilyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9aSh0LGUpLG49ci5sZW5ndGgsYT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobikscz0wO3M8bjsrK3MpYVtzXT1bcltzXV0sb1tzXT1bc107cmV0dXJue3Bvc2l0aW9uczphLGNlbGxzOm99fSh0LGUpO3ZhciByPXQub3JkZXIuam9pbigpKyItIit0LmR0eXBlLHM9b1tyXSxlPStlfHwwO3N8fChzPW9bcl09ZnVuY3Rpb24odCxlKXt2YXIgcj10Lmxlbmd0aCxpPVsiJ3VzZSBzdHJpY3QnOyJdLG89InN1cmZhY2VOZXRzIit0LmpvaW4oIl8iKSsiZCIrZTtpLnB1c2goInZhciBjb250b3VyPWdlbkNvbnRvdXIoeyIsIm9yZGVyOlsiLHQuam9pbigpLCJdLCIsInNjYWxhckFyZ3VtZW50czogMywiLCJwaGFzZTpmdW5jdGlvbiBwaGFzZUZ1bmMocCxhLGIsYykgeyByZXR1cm4gKHAgPiBjKXwwIH0sIiksImdlbmVyaWMiPT09ZSYmaS5wdXNoKCJnZXR0ZXJzOlswXSwiKTtmb3IodmFyIHM9W10sbD1bXSxjPTA7YzxyOysrYylzLnB1c2goImQiK2MpLGwucHVzaCgiZCIrYyk7Zm9yKHZhciBjPTA7YzwxPDxyOysrYylzLnB1c2goInYiK2MpLGwucHVzaCgidiIrYyk7Zm9yKHZhciBjPTA7YzwxPDxyOysrYylzLnB1c2goInAiK2MpLGwucHVzaCgicCIrYyk7cy5wdXNoKCJhIiwiYiIsImMiKSxsLnB1c2goImEiLCJjIiksaS5wdXNoKCJ2ZXJ0ZXg6ZnVuY3Rpb24gdmVydGV4RnVuYygiLHMuam9pbigpLCIpeyIpO2Zvcih2YXIgdT1bXSxjPTA7YzwxPDxyOysrYyl1LnB1c2goIihwIitjKyI8PCIrYysiKSIpO2kucHVzaCgidmFyIG09KCIsdS5qb2luKCIrIiksIil8MDtpZihtPT09MHx8bT09PSIsKDE8PCgxPDxyKSktMSwiKXtyZXR1cm59Iik7dmFyIGg9W10sZj1bXTsxPDwoMTw8cik8PTEyOD8oaS5wdXNoKCJzd2l0Y2gobSl7IiksZj1pKTppLnB1c2goInN3aXRjaChtPj4+Nyl7Iik7Zm9yKHZhciBjPTA7YzwxPDwoMTw8cik7KytjKXtpZigxPDwoMTw8cik+MTI4JiZjJTEyOD09MCl7aC5sZW5ndGg+MCYmZi5wdXNoKCJ9fSIpO3ZhciBwPSJ2RXh0cmEiK2gubGVuZ3RoO2kucHVzaCgiY2FzZSAiLGM+Pj43LCI6IixwLCIobSYweDdmLCIsbC5qb2luKCksIik7YnJlYWs7IiksZj1bImZ1bmN0aW9uICIscCwiKG0sIixsLmpvaW4oKSwiKXtzd2l0Y2gobSl7Il0saC5wdXNoKGYpfWYucHVzaCgiY2FzZSAiLDEyNyZjLCI6Iik7Zm9yKHZhciBkPW5ldyBBcnJheShyKSxnPW5ldyBBcnJheShyKSx2PW5ldyBBcnJheShyKSxtPW5ldyBBcnJheShyKSx5PTAseD0wO3g8cjsrK3gpZFt4XT1bXSxnW3hdPVtdLHZbeF09MCxtW3hdPTA7Zm9yKHZhciB4PTA7eDwxPDxyOysreClmb3IodmFyIGI9MDtiPHI7KytiKXt2YXIgXz14XjE8PGI7aWYoIShfPngpJiYhKGMmMTw8XykhPSEoYyYxPDx4KSl7dmFyIHc9MTtjJjE8PF8/Z1tiXS5wdXNoKCJ2IitfKyItdiIreCk6KGdbYl0ucHVzaCgidiIreCsiLXYiK18pLHc9LXcpLHc8MD8oZFtiXS5wdXNoKCItdiIreCsiLXYiK18pLHZbYl0rPTIpOihkW2JdLnB1c2goInYiK3grIit2IitfKSx2W2JdLT0yKSx5Kz0xO2Zvcih2YXIgaz0wO2s8cjsrK2spayE9PWImJihfJjE8PGs/bVtrXSs9MTptW2tdLT0xKX19Zm9yKHZhciBUPVtdLGI9MDtiPHI7KytiKWlmKDA9PT1kW2JdLmxlbmd0aClULnB1c2goImQiK2IrIi0wLjUiKTtlbHNle3ZhciBNPSIiO3ZbYl08MD9NPXZbYl0rIipjIjp2W2JdPjAmJihNPSIrIit2W2JdKyIqYyIpO3ZhciBBPWRbYl0ubGVuZ3RoL3kqLjUsUz0uNSttW2JdL3kqLjU7VC5wdXNoKCJkIitiKyItIitTKyItIitBKyIqKCIrZFtiXS5qb2luKCIrIikrTSsiKS8oIitnW2JdLmpvaW4oIisiKSsiKSIpfWYucHVzaCgiYS5wdXNoKFsiLFQuam9pbigpLCJdKTsiLCJicmVhazsiKX1pLnB1c2goIn19LCIpLGgubGVuZ3RoPjAmJmYucHVzaCgifX0iKTtmb3IodmFyIEU9W10sYz0wO2M8MTw8ci0xOysrYylFLnB1c2goInYiK2MpO0UucHVzaCgiYzAiLCJjMSIsInAwIiwicDEiLCJhIiwiYiIsImMiKSxpLnB1c2goImNlbGw6ZnVuY3Rpb24gY2VsbEZ1bmMoIixFLmpvaW4oKSwiKXsiKTt2YXIgTD1hKHItMSk7aS5wdXNoKCJpZihwMCl7Yi5wdXNoKCIsTC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIlsiK3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJ2Iit0fSkrIl0ifSkuam9pbigpLCIpfWVsc2V7Yi5wdXNoKCIsTC5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgpO3JldHVybiBlLnJldmVyc2UoKSwiWyIrZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInYiK3R9KSsiXSJ9KS5qb2luKCksIil9fX0pO2Z1bmN0aW9uICIsbywiKGFycmF5LGxldmVsKXt2YXIgdmVydHM9W10sY2VsbHM9W107Y29udG91cihhcnJheSx2ZXJ0cyxjZWxscyxsZXZlbCk7cmV0dXJuIHtwb3NpdGlvbnM6dmVydHMsY2VsbHM6Y2VsbHN9O30gcmV0dXJuICIsbywiOyIpO2Zvcih2YXIgYz0wO2M8aC5sZW5ndGg7KytjKWkucHVzaChoW2NdLmpvaW4oIiIpKTtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJnZW5Db250b3VyIixpLmpvaW4oIiIpKShuKX0odC5vcmRlcix0LmR0eXBlKSk7cmV0dXJuIHModCxlKX07dmFyIG49dCgibmRhcnJheS1leHRyYWN0LWNvbnRvdXIiKSxhPXQoInRyaWFuZ3VsYXRlLWh5cGVyY3ViZSIpLGk9dCgiemVyby1jcm9zc2luZ3MiKTt2YXIgbz17fX0seyJuZGFycmF5LWV4dHJhY3QtY29udG91ciI6NDQxLCJ0cmlhbmd1bGF0ZS1oeXBlcmN1YmUiOjU0MCwiemVyby1jcm9zc2luZ3MiOjU3M31dLDUzMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9W10sbj0hMCxhPSExLGk9dm9pZCAwO3RyeXtmb3IodmFyIG8scz10W1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KG89cy5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKG8udmFsdWUpLCFlfHxyLmxlbmd0aCE9PWUpO249ITApO31jYXRjaCh0KXthPSEwLGk9dH1maW5hbGx5e3RyeXshbiYmcy5yZXR1cm4mJnMucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IGl9fXJldHVybiByfSh0LGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX19KCksYT0yKk1hdGguUEksaT1mdW5jdGlvbih0LGUscixuLGEsaSxvKXt2YXIgcz10LngsbD10Lnk7cmV0dXJue3g6bioocyo9ZSktYSoobCo9cikraSx5OmEqcytuKmwrb319LG89ZnVuY3Rpb24odCxlKXt2YXIgcj0uNTUxOTE1MDI0NDk0KihlPDA/LTE6MSksbj1NYXRoLmNvcyh0KSxhPU1hdGguc2luKHQpLGk9TWF0aC5jb3ModCtlKSxvPU1hdGguc2luKHQrZSk7cmV0dXJuW3t4Om4tYSpyLHk6YStuKnJ9LHt4OmkrbypyLHk6by1pKnJ9LHt4OmkseTpvfV19LHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dCpuLWUqcjwwPy0xOjEsaT0odCpyK2UqbikvKE1hdGguc3FydCh0KnQrZSplKSpNYXRoLnNxcnQodCp0K2UqZSkpO3JldHVybiBpPjEmJihpPTEpLGk8LTEmJihpPS0xKSxhKk1hdGguYWNvcyhpKX07ci5kZWZhdWx0PWZ1bmN0aW9uKHQpe3ZhciBlPXQucHgscj10LnB5LGw9dC5jeCxjPXQuY3ksdT10LnJ4LGg9dC5yeSxmPXQueEF4aXNSb3RhdGlvbixwPXZvaWQgMD09PWY/MDpmLGQ9dC5sYXJnZUFyY0ZsYWcsZz12b2lkIDA9PT1kPzA6ZCx2PXQuc3dlZXBGbGFnLG09dm9pZCAwPT09dj8wOnYseT1bXTtpZigwPT09dXx8MD09PWgpcmV0dXJuW107dmFyIHg9TWF0aC5zaW4ocCphLzM2MCksYj1NYXRoLmNvcyhwKmEvMzYwKSxfPWIqKGUtbCkvMit4KihyLWMpLzIsdz0teCooZS1sKS8yK2IqKHItYykvMjtpZigwPT09XyYmMD09PXcpcmV0dXJuW107dT1NYXRoLmFicyh1KSxoPU1hdGguYWJzKGgpO3ZhciBrPU1hdGgucG93KF8sMikvTWF0aC5wb3codSwyKStNYXRoLnBvdyh3LDIpL01hdGgucG93KGgsMik7az4xJiYodSo9TWF0aC5zcXJ0KGspLGgqPU1hdGguc3FydChrKSk7dmFyIFQ9ZnVuY3Rpb24odCxlLHIsbixpLG8sbCxjLHUsaCxmLHApe3ZhciBkPU1hdGgucG93KGksMiksZz1NYXRoLnBvdyhvLDIpLHY9TWF0aC5wb3coZiwyKSxtPU1hdGgucG93KHAsMikseT1kKmctZCptLWcqdjt5PDAmJih5PTApLHkvPWQqbStnKnY7dmFyIHg9KHk9TWF0aC5zcXJ0KHkpKihsPT09Yz8tMToxKSkqaS9vKnAsYj15Ki1vL2kqZixfPWgqeC11KmIrKHQrcikvMix3PXUqeCtoKmIrKGUrbikvMixrPShmLXgpL2ksVD0ocC1iKS9vLE09KC1mLXgpL2ksQT0oLXAtYikvbyxTPXMoMSwwLGssVCksRT1zKGssVCxNLEEpO3JldHVybiAwPT09YyYmRT4wJiYoRS09YSksMT09PWMmJkU8MCYmKEUrPWEpLFtfLHcsUyxFXX0oZSxyLGwsYyx1LGgsZyxtLHgsYixfLHcpLE09bihULDQpLEE9TVswXSxTPU1bMV0sRT1NWzJdLEw9TVszXSxDPU1hdGguYWJzKEwpLyhhLzQpO01hdGguYWJzKDEtQyk8MWUtNyYmKEM9MSk7dmFyIFA9TWF0aC5tYXgoTWF0aC5jZWlsKEMpLDEpO0wvPVA7Zm9yKHZhciBPPTA7TzxQO08rKyl5LnB1c2gobyhFLEwpKSxFKz1MO3JldHVybiB5Lm1hcChmdW5jdGlvbih0KXt2YXIgZT1pKHRbMF0sdSxoLGIseCxBLFMpLHI9ZS54LG49ZS55LGE9aSh0WzFdLHUsaCxiLHgsQSxTKSxvPWEueCxzPWEueSxsPWkodFsyXSx1LGgsYix4LEEsUyk7cmV0dXJue3gxOnIseTE6bix4MjpvLHkyOnMseDpsLngseTpsLnl9fSl9LGUuZXhwb3J0cz1yLmRlZmF1bHR9LHt9XSw1MzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicGFyc2Utc3ZnLXBhdGgiKSxhPXQoImFicy1zdmctcGF0aCIpLGk9dCgibm9ybWFsaXplLXN2Zy1wYXRoIiksbz10KCJpcy1zdmctcGF0aCIpLHM9dCgiYXNzZXJ0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkodCkmJjE9PT10Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0WzBdJiYodD10WzBdKTsic3RyaW5nIj09dHlwZW9mIHQmJihzKG8odCksIlN0cmluZyBpcyBub3QgYW4gU1ZHIHBhdGguIiksdD1uKHQpKTtpZihzKEFycmF5LmlzQXJyYXkodCksIkFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzLiIpLHQ9YSh0KSwhKHQ9aSh0KSkubGVuZ3RoKXJldHVyblswLDAsMCwwXTtmb3IodmFyIGU9WzEvMCwxLzAsLTEvMCwtMS8wXSxyPTAsbD10Lmxlbmd0aDtyPGw7cisrKWZvcih2YXIgYz10W3JdLnNsaWNlKDEpLHU9MDt1PGMubGVuZ3RoO3UrPTIpY1t1KzBdPGVbMF0mJihlWzBdPWNbdSswXSksY1t1KzFdPGVbMV0mJihlWzFdPWNbdSsxXSksY1t1KzBdPmVbMl0mJihlWzJdPWNbdSswXSksY1t1KzFdPmVbM10mJihlWzNdPWNbdSsxXSk7cmV0dXJuIGV9fSx7ImFicy1zdmctcGF0aCI6NjMsYXNzZXJ0OjcwLCJpcy1zdmctcGF0aCI6NDI2LCJub3JtYWxpemUtc3ZnLXBhdGgiOjUzMywicGFyc2Utc3ZnLXBhdGgiOjQ2Mn1dLDUzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9W10sbz0wLHM9MCxsPTAsYz0wLHU9bnVsbCxoPW51bGwsZj0wLHA9MCxkPTAsZz10Lmxlbmd0aDtkPGc7ZCsrKXt2YXIgdj10W2RdLG09dlswXTtzd2l0Y2gobSl7Y2FzZSJNIjpsPXZbMV0sYz12WzJdO2JyZWFrO2Nhc2UiQSI6dmFyIHk9bih7cHg6ZixweTpwLGN4OnZbNl0sY3k6dls3XSxyeDp2WzFdLHJ5OnZbMl0seEF4aXNSb3RhdGlvbjp2WzNdLGxhcmdlQXJjRmxhZzp2WzRdLHN3ZWVwRmxhZzp2WzVdfSk7aWYoIXkubGVuZ3RoKWNvbnRpbnVlO2Zvcih2YXIgeCxiPTA7Yjx5Lmxlbmd0aDtiKyspeD15W2JdLHY9WyJDIix4LngxLHgueTEseC54Mix4LnkyLHgueCx4LnldLGI8eS5sZW5ndGgtMSYmci5wdXNoKHYpO2JyZWFrO2Nhc2UiUyI6dmFyIF89Zix3PXA7IkMiIT1lJiYiUyIhPWV8fChfKz1fLW8sdys9dy1zKSx2PVsiQyIsXyx3LHZbMV0sdlsyXSx2WzNdLHZbNF1dO2JyZWFrO2Nhc2UiVCI6IlEiPT1lfHwiVCI9PWU/KHU9MipmLXUsaD0yKnAtaCk6KHU9ZixoPXApLHY9aShmLHAsdSxoLHZbMV0sdlsyXSk7YnJlYWs7Y2FzZSJRIjp1PXZbMV0saD12WzJdLHY9aShmLHAsdlsxXSx2WzJdLHZbM10sdls0XSk7YnJlYWs7Y2FzZSJMIjp2PWEoZixwLHZbMV0sdlsyXSk7YnJlYWs7Y2FzZSJIIjp2PWEoZixwLHZbMV0scCk7YnJlYWs7Y2FzZSJWIjp2PWEoZixwLGYsdlsxXSk7YnJlYWs7Y2FzZSJaIjp2PWEoZixwLGwsYyl9ZT1tLGY9dlt2Lmxlbmd0aC0yXSxwPXZbdi5sZW5ndGgtMV0sdi5sZW5ndGg+ND8obz12W3YubGVuZ3RoLTRdLHM9dlt2Lmxlbmd0aC0zXSk6KG89ZixzPXApLHIucHVzaCh2KX1yZXR1cm4gcn07dmFyIG49dCgic3ZnLWFyYy10by1jdWJpYy1iZXppZXIiKTtmdW5jdGlvbiBhKHQsZSxyLG4pe3JldHVyblsiQyIsdCxlLHIsbixyLG5dfWZ1bmN0aW9uIGkodCxlLHIsbixhLGkpe3JldHVyblsiQyIsdC8zKzIvMypyLGUvMysyLzMqbixhLzMrMi8zKnIsaS8zKzIvMypuLGEsaV19fSx7InN2Zy1hcmMtdG8tY3ViaWMtYmV6aWVyIjo1MzF9XSw1MzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4sYT10KCJzdmctcGF0aC1ib3VuZHMiKSxpPXQoInBhcnNlLXN2Zy1wYXRoIiksbz10KCJkcmF3LXN2Zy1wYXRoIikscz10KCJpcy1zdmctcGF0aCIpLGw9dCgiYml0bWFwLXNkZiIpLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdT1jLmdldENvbnRleHQoIjJkIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIXModCkpdGhyb3cgRXJyb3IoIkFyZ3VtZW50IHNob3VsZCBiZSB2YWxpZCBzdmcgcGF0aCBzdHJpbmciKTtlfHwoZT17fSk7dmFyIHIsaDtlLnNoYXBlPyhyPWUuc2hhcGVbMF0saD1lLnNoYXBlWzFdKToocj1jLndpZHRoPWUud3x8ZS53aWR0aHx8MjAwLGg9Yy5oZWlnaHQ9ZS5ofHxlLmhlaWdodHx8MjAwKTt2YXIgZj1NYXRoLm1pbihyLGgpLHA9ZS5zdHJva2V8fDAsZD1lLnZpZXdib3h8fGUudmlld0JveHx8YSh0KSxnPVtyLyhkWzJdLWRbMF0pLGgvKGRbM10tZFsxXSldLHY9TWF0aC5taW4oZ1swXXx8MCxnWzFdfHwwKS8yO3UuZmlsbFN0eWxlPSJibGFjayIsdS5maWxsUmVjdCgwLDAscixoKSx1LmZpbGxTdHlsZT0id2hpdGUiLHAmJigibnVtYmVyIiE9dHlwZW9mIHAmJihwPTEpLHUuc3Ryb2tlU3R5bGU9cD4wPyJ3aGl0ZSI6ImJsYWNrIix1LmxpbmVXaWR0aD1NYXRoLmFicyhwKSk7aWYodS50cmFuc2xhdGUoLjUqciwuNSpoKSx1LnNjYWxlKHYsdiksZnVuY3Rpb24oKXtpZihudWxsIT1uKXJldHVybiBuO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7aWYodC5jYW52YXMud2lkdGg9dC5jYW52YXMuaGVpZ2h0PTEsIXdpbmRvdy5QYXRoMkQpcmV0dXJuIG49ITE7dmFyIGU9bmV3IFBhdGgyRCgiTTAsMGgxdjFoLTF2LTFaIik7dC5maWxsU3R5bGU9ImJsYWNrIix0LmZpbGwoZSk7dmFyIHI9dC5nZXRJbWFnZURhdGEoMCwwLDEsMSk7cmV0dXJuIG49ciYmci5kYXRhJiYyNTU9PT1yLmRhdGFbM119KCkpe3ZhciBtPW5ldyBQYXRoMkQodCk7dS5maWxsKG0pLHAmJnUuc3Ryb2tlKG0pfWVsc2V7dmFyIHk9aSh0KTtvKHUseSksdS5maWxsKCkscCYmdS5zdHJva2UoKX1yZXR1cm4gdS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApLGwodSx7Y3V0b2ZmOm51bGwhPWUuY3V0b2ZmP2UuY3V0b2ZmOi41LHJhZGl1czpudWxsIT1lLnJhZGl1cz9lLnJhZGl1czouNSpmfSl9fSx7ImJpdG1hcC1zZGYiOjk1LCJkcmF3LXN2Zy1wYXRoIjoxNzAsImlzLXN2Zy1wYXRoIjo0MjYsInBhcnNlLXN2Zy1wYXRoIjo0NjIsInN2Zy1wYXRoLWJvdW5kcyI6NTMyfV0sNTM1OltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24gdChlLHIsYSl7dmFyIGE9YXx8e307dmFyIG89aVtlXTtvfHwobz1pW2VdPXsiICI6e2RhdGE6bmV3IEZsb2F0MzJBcnJheSgwKSxzaGFwZTouMn19KTt2YXIgcz1vW3JdO2lmKCFzKWlmKHIubGVuZ3RoPD0xfHwhL1xkLy50ZXN0KHIpKXM9b1tyXT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jZWxscyxyPXQucG9zaXRpb25zLG49bmV3IEZsb2F0MzJBcnJheSg2KmUubGVuZ3RoKSxhPTAsaT0wLG89MDtvPGUubGVuZ3RoOysrbylmb3IodmFyIHM9ZVtvXSxsPTA7bDwzOysrbCl7dmFyIGM9cltzW2xdXTtuW2ErK109Y1swXSxuW2ErK109Y1sxXSsxLjQsaT1NYXRoLm1heChjWzBdLGkpfXJldHVybntkYXRhOm4sc2hhcGU6aX19KG4ocix7dHJpYW5nbGVzOiEwLGZvbnQ6ZSx0ZXh0QWxpZ246YS50ZXh0QWxpZ258fCJsZWZ0Iix0ZXh0QmFzZWxpbmU6ImFscGhhYmV0aWMiLHN0eWxldGFnczp7YnJlYWtsaW5lczohMCxib2xkczohMCxpdGFsaWNzOiEwLHN1YnNjcmlwdHM6ITAsc3VwZXJzY3JpcHRzOiEwfX0pKTtlbHNle2Zvcih2YXIgbD1yLnNwbGl0KC8oXGR8XHMpLyksYz1uZXcgQXJyYXkobC5sZW5ndGgpLHU9MCxoPTAsZj0wO2Y8bC5sZW5ndGg7KytmKWNbZl09dChlLGxbZl0pLHUrPWNbZl0uZGF0YS5sZW5ndGgsaCs9Y1tmXS5zaGFwZSxmPjAmJihoKz0uMDIpO2Zvcih2YXIgcD1uZXcgRmxvYXQzMkFycmF5KHUpLGQ9MCxnPS0uNSpoLGY9MDtmPGMubGVuZ3RoOysrZil7Zm9yKHZhciB2PWNbZl0uZGF0YSxtPTA7bTx2Lmxlbmd0aDttKz0yKXBbZCsrXT12W21dK2cscFtkKytdPXZbbSsxXTtnKz1jW2ZdLnNoYXBlKy4wMn1zPW9bcl09e2RhdGE6cCxzaGFwZTpofX1yZXR1cm4gc307dmFyIG49dCgidmVjdG9yaXplLXRleHQiKSxhPXdpbmRvd3x8ci5nbG9iYWx8fHt9LGk9YS5fX1RFWFRfQ0FDSEV8fHt9O2EuX19URVhUX0NBQ0hFPXt9fSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNzIikpfSx7X3Byb2Nlc3M6NDg0LCJ2ZWN0b3JpemUtdGV4dCI6NTQ5fV0sNTM2OltmdW5jdGlvbih0LGUscil7IWZ1bmN0aW9uKHQpe3ZhciByPS9eXHMrLyxuPS9ccyskLyxhPTAsaT10LnJvdW5kLG89dC5taW4scz10Lm1heCxsPXQucmFuZG9tO2Z1bmN0aW9uIGMoZSxsKXtpZihsPWx8fHt9LChlPWV8fCIiKWluc3RhbmNlb2YgYylyZXR1cm4gZTtpZighKHRoaXMgaW5zdGFuY2VvZiBjKSlyZXR1cm4gbmV3IGMoZSxsKTt2YXIgdT1mdW5jdGlvbihlKXt2YXIgYT17cjowLGc6MCxiOjB9LGk9MSxsPW51bGwsYz1udWxsLHU9bnVsbCxoPSExLGY9ITE7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1mdW5jdGlvbih0KXt0PXQucmVwbGFjZShyLCIiKS5yZXBsYWNlKG4sIiIpLnRvTG93ZXJDYXNlKCk7dmFyIGUsYT0hMTtpZihTW3RdKXQ9U1t0XSxhPSEwO2Vsc2UgaWYoInRyYW5zcGFyZW50Ij09dClyZXR1cm57cjowLGc6MCxiOjAsYTowLGZvcm1hdDoibmFtZSJ9O2lmKGU9ai5yZ2IuZXhlYyh0KSlyZXR1cm57cjplWzFdLGc6ZVsyXSxiOmVbM119O2lmKGU9ai5yZ2JhLmV4ZWModCkpcmV0dXJue3I6ZVsxXSxnOmVbMl0sYjplWzNdLGE6ZVs0XX07aWYoZT1qLmhzbC5leGVjKHQpKXJldHVybntoOmVbMV0sczplWzJdLGw6ZVszXX07aWYoZT1qLmhzbGEuZXhlYyh0KSlyZXR1cm57aDplWzFdLHM6ZVsyXSxsOmVbM10sYTplWzRdfTtpZihlPWouaHN2LmV4ZWModCkpcmV0dXJue2g6ZVsxXSxzOmVbMl0sdjplWzNdfTtpZihlPWouaHN2YS5leGVjKHQpKXJldHVybntoOmVbMV0sczplWzJdLHY6ZVszXSxhOmVbNF19O2lmKGU9ai5oZXg4LmV4ZWModCkpcmV0dXJue3I6TyhlWzFdKSxnOk8oZVsyXSksYjpPKGVbM10pLGE6UihlWzRdKSxmb3JtYXQ6YT8ibmFtZSI6ImhleDgifTtpZihlPWouaGV4Ni5leGVjKHQpKXJldHVybntyOk8oZVsxXSksZzpPKGVbMl0pLGI6TyhlWzNdKSxmb3JtYXQ6YT8ibmFtZSI6ImhleCJ9O2lmKGU9ai5oZXg0LmV4ZWModCkpcmV0dXJue3I6TyhlWzFdKyIiK2VbMV0pLGc6TyhlWzJdKyIiK2VbMl0pLGI6TyhlWzNdKyIiK2VbM10pLGE6UihlWzRdKyIiK2VbNF0pLGZvcm1hdDphPyJuYW1lIjoiaGV4OCJ9O2lmKGU9ai5oZXgzLmV4ZWModCkpcmV0dXJue3I6TyhlWzFdKyIiK2VbMV0pLGc6TyhlWzJdKyIiK2VbMl0pLGI6TyhlWzNdKyIiK2VbM10pLGZvcm1hdDphPyJuYW1lIjoiaGV4In07cmV0dXJuITF9KGUpKTsib2JqZWN0Ij09dHlwZW9mIGUmJihWKGUucikmJlYoZS5nKSYmVihlLmIpPyhwPWUucixkPWUuZyxnPWUuYixhPXtyOjI1NSpDKHAsMjU1KSxnOjI1NSpDKGQsMjU1KSxiOjI1NSpDKGcsMjU1KX0saD0hMCxmPSIlIj09PVN0cmluZyhlLnIpLnN1YnN0cigtMSk/InByZ2IiOiJyZ2IiKTpWKGUuaCkmJlYoZS5zKSYmVihlLnYpPyhsPUkoZS5zKSxjPUkoZS52KSxhPWZ1bmN0aW9uKGUscixuKXtlPTYqQyhlLDM2MCkscj1DKHIsMTAwKSxuPUMobiwxMDApO3ZhciBhPXQuZmxvb3IoZSksaT1lLWEsbz1uKigxLXIpLHM9biooMS1pKnIpLGw9biooMS0oMS1pKSpyKSxjPWElNjtyZXR1cm57cjoyNTUqW24scyxvLG8sbCxuXVtjXSxnOjI1NSpbbCxuLG4scyxvLG9dW2NdLGI6MjU1KltvLG8sbCxuLG4sc11bY119fShlLmgsbCxjKSxoPSEwLGY9ImhzdiIpOlYoZS5oKSYmVihlLnMpJiZWKGUubCkmJihsPUkoZS5zKSx1PUkoZS5sKSxhPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGk7ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIHI8MCYmKHIrPTEpLHI+MSYmKHItPTEpLHI8MS82P3QrNiooZS10KSpyOnI8LjU/ZTpyPDIvMz90KyhlLXQpKigyLzMtcikqNjp0fWlmKHQ9Qyh0LDM2MCksZT1DKGUsMTAwKSxyPUMociwxMDApLDA9PT1lKW49YT1pPXI7ZWxzZXt2YXIgcz1yPC41P3IqKDErZSk6citlLXIqZSxsPTIqci1zO249byhsLHMsdCsxLzMpLGE9byhsLHMsdCksaT1vKGwscyx0LTEvMyl9cmV0dXJue3I6MjU1Km4sZzoyNTUqYSxiOjI1NSppfX0oZS5oLGwsdSksaD0hMCxmPSJoc2wiKSxlLmhhc093blByb3BlcnR5KCJhIikmJihpPWUuYSkpO3ZhciBwLGQsZztyZXR1cm4gaT1MKGkpLHtvazpoLGZvcm1hdDplLmZvcm1hdHx8ZixyOm8oMjU1LHMoYS5yLDApKSxnOm8oMjU1LHMoYS5nLDApKSxiOm8oMjU1LHMoYS5iLDApKSxhOml9fShlKTt0aGlzLl9vcmlnaW5hbElucHV0PWUsdGhpcy5fcj11LnIsdGhpcy5fZz11LmcsdGhpcy5fYj11LmIsdGhpcy5fYT11LmEsdGhpcy5fcm91bmRBPWkoMTAwKnRoaXMuX2EpLzEwMCx0aGlzLl9mb3JtYXQ9bC5mb3JtYXR8fHUuZm9ybWF0LHRoaXMuX2dyYWRpZW50VHlwZT1sLmdyYWRpZW50VHlwZSx0aGlzLl9yPDEmJih0aGlzLl9yPWkodGhpcy5fcikpLHRoaXMuX2c8MSYmKHRoaXMuX2c9aSh0aGlzLl9nKSksdGhpcy5fYjwxJiYodGhpcy5fYj1pKHRoaXMuX2IpKSx0aGlzLl9vaz11Lm9rLHRoaXMuX3RjX2lkPWErK31mdW5jdGlvbiB1KHQsZSxyKXt0PUModCwyNTUpLGU9QyhlLDI1NSkscj1DKHIsMjU1KTt2YXIgbixhLGk9cyh0LGUsciksbD1vKHQsZSxyKSxjPShpK2wpLzI7aWYoaT09bCluPWE9MDtlbHNle3ZhciB1PWktbDtzd2l0Y2goYT1jPi41P3UvKDItaS1sKTp1LyhpK2wpLGkpe2Nhc2UgdDpuPShlLXIpL3UrKGU8cj82OjApO2JyZWFrO2Nhc2UgZTpuPShyLXQpL3UrMjticmVhaztjYXNlIHI6bj0odC1lKS91KzR9bi89Nn1yZXR1cm57aDpuLHM6YSxsOmN9fWZ1bmN0aW9uIGgodCxlLHIpe3Q9Qyh0LDI1NSksZT1DKGUsMjU1KSxyPUMociwyNTUpO3ZhciBuLGEsaT1zKHQsZSxyKSxsPW8odCxlLHIpLGM9aSx1PWktbDtpZihhPTA9PT1pPzA6dS9pLGk9PWwpbj0wO2Vsc2V7c3dpdGNoKGkpe2Nhc2UgdDpuPShlLXIpL3UrKGU8cj82OjApO2JyZWFrO2Nhc2UgZTpuPShyLXQpL3UrMjticmVhaztjYXNlIHI6bj0odC1lKS91KzR9bi89Nn1yZXR1cm57aDpuLHM6YSx2OmN9fWZ1bmN0aW9uIGYodCxlLHIsbil7dmFyIGE9W3ooaSh0KS50b1N0cmluZygxNikpLHooaShlKS50b1N0cmluZygxNikpLHooaShyKS50b1N0cmluZygxNikpXTtyZXR1cm4gbiYmYVswXS5jaGFyQXQoMCk9PWFbMF0uY2hhckF0KDEpJiZhWzFdLmNoYXJBdCgwKT09YVsxXS5jaGFyQXQoMSkmJmFbMl0uY2hhckF0KDApPT1hWzJdLmNoYXJBdCgxKT9hWzBdLmNoYXJBdCgwKSthWzFdLmNoYXJBdCgwKSthWzJdLmNoYXJBdCgwKTphLmpvaW4oIiIpfWZ1bmN0aW9uIHAodCxlLHIsbil7cmV0dXJuW3ooRChuKSkseihpKHQpLnRvU3RyaW5nKDE2KSkseihpKGUpLnRvU3RyaW5nKDE2KSkseihpKHIpLnRvU3RyaW5nKDE2KSldLmpvaW4oIiIpfWZ1bmN0aW9uIGQodCxlKXtlPTA9PT1lPzA6ZXx8MTA7dmFyIHI9Yyh0KS50b0hzbCgpO3JldHVybiByLnMtPWUvMTAwLHIucz1QKHIucyksYyhyKX1mdW5jdGlvbiBnKHQsZSl7ZT0wPT09ZT8wOmV8fDEwO3ZhciByPWModCkudG9Ic2woKTtyZXR1cm4gci5zKz1lLzEwMCxyLnM9UChyLnMpLGMocil9ZnVuY3Rpb24gdih0KXtyZXR1cm4gYyh0KS5kZXNhdHVyYXRlKDEwMCl9ZnVuY3Rpb24gbSh0LGUpe2U9MD09PWU/MDplfHwxMDt2YXIgcj1jKHQpLnRvSHNsKCk7cmV0dXJuIHIubCs9ZS8xMDAsci5sPVAoci5sKSxjKHIpfWZ1bmN0aW9uIHkodCxlKXtlPTA9PT1lPzA6ZXx8MTA7dmFyIHI9Yyh0KS50b1JnYigpO3JldHVybiByLnI9cygwLG8oMjU1LHIuci1pKC1lLzEwMCoyNTUpKSksci5nPXMoMCxvKDI1NSxyLmctaSgtZS8xMDAqMjU1KSkpLHIuYj1zKDAsbygyNTUsci5iLWkoLWUvMTAwKjI1NSkpKSxjKHIpfWZ1bmN0aW9uIHgodCxlKXtlPTA9PT1lPzA6ZXx8MTA7dmFyIHI9Yyh0KS50b0hzbCgpO3JldHVybiByLmwtPWUvMTAwLHIubD1QKHIubCksYyhyKX1mdW5jdGlvbiBiKHQsZSl7dmFyIHI9Yyh0KS50b0hzbCgpLG49KHIuaCtlKSUzNjA7cmV0dXJuIHIuaD1uPDA/MzYwK246bixjKHIpfWZ1bmN0aW9uIF8odCl7dmFyIGU9Yyh0KS50b0hzbCgpO3JldHVybiBlLmg9KGUuaCsxODApJTM2MCxjKGUpfWZ1bmN0aW9uIHcodCl7dmFyIGU9Yyh0KS50b0hzbCgpLHI9ZS5oO3JldHVybltjKHQpLGMoe2g6KHIrMTIwKSUzNjAsczplLnMsbDplLmx9KSxjKHtoOihyKzI0MCklMzYwLHM6ZS5zLGw6ZS5sfSldfWZ1bmN0aW9uIGsodCl7dmFyIGU9Yyh0KS50b0hzbCgpLHI9ZS5oO3JldHVybltjKHQpLGMoe2g6KHIrOTApJTM2MCxzOmUucyxsOmUubH0pLGMoe2g6KHIrMTgwKSUzNjAsczplLnMsbDplLmx9KSxjKHtoOihyKzI3MCklMzYwLHM6ZS5zLGw6ZS5sfSldfWZ1bmN0aW9uIFQodCl7dmFyIGU9Yyh0KS50b0hzbCgpLHI9ZS5oO3JldHVybltjKHQpLGMoe2g6KHIrNzIpJTM2MCxzOmUucyxsOmUubH0pLGMoe2g6KHIrMjE2KSUzNjAsczplLnMsbDplLmx9KV19ZnVuY3Rpb24gTSh0LGUscil7ZT1lfHw2LHI9cnx8MzA7dmFyIG49Yyh0KS50b0hzbCgpLGE9MzYwL3IsaT1bYyh0KV07Zm9yKG4uaD0obi5oLShhKmU+PjEpKzcyMCklMzYwOy0tZTspbi5oPShuLmgrYSklMzYwLGkucHVzaChjKG4pKTtyZXR1cm4gaX1mdW5jdGlvbiBBKHQsZSl7ZT1lfHw2O2Zvcih2YXIgcj1jKHQpLnRvSHN2KCksbj1yLmgsYT1yLnMsaT1yLnYsbz1bXSxzPTEvZTtlLS07KW8ucHVzaChjKHtoOm4sczphLHY6aX0pKSxpPShpK3MpJTE7cmV0dXJuIG99Yy5wcm90b3R5cGU9e2lzRGFyazpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJyaWdodG5lc3MoKTwxMjh9LGlzTGlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0RhcmsoKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9va30sZ2V0T3JpZ2luYWxJbnB1dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmlnaW5hbElucHV0fSxnZXRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9ybWF0fSxnZXRBbHBoYTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hfSxnZXRCcmlnaHRuZXNzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50b1JnYigpO3JldHVybigyOTkqdC5yKzU4Nyp0LmcrMTE0KnQuYikvMWUzfSxnZXRMdW1pbmFuY2U6ZnVuY3Rpb24oKXt2YXIgZSxyLG4sYT10aGlzLnRvUmdiKCk7cmV0dXJuIGU9YS5yLzI1NSxyPWEuZy8yNTUsbj1hLmIvMjU1LC4yMTI2KihlPD0uMDM5Mjg/ZS8xMi45Mjp0LnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpKSsuNzE1Mioocjw9LjAzOTI4P3IvMTIuOTI6dC5wb3coKHIrLjA1NSkvMS4wNTUsMi40KSkrLjA3MjIqKG48PS4wMzkyOD9uLzEyLjkyOnQucG93KChuKy4wNTUpLzEuMDU1LDIuNCkpfSxzZXRBbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYT1MKHQpLHRoaXMuX3JvdW5kQT1pKDEwMCp0aGlzLl9hKS8xMDAsdGhpc30sdG9Ic3Y6ZnVuY3Rpb24oKXt2YXIgdD1oKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDozNjAqdC5oLHM6dC5zLHY6dC52LGE6dGhpcy5fYX19LHRvSHN2U3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9aCh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiksZT1pKDM2MCp0LmgpLHI9aSgxMDAqdC5zKSxuPWkoMTAwKnQudik7cmV0dXJuIDE9PXRoaXMuX2E/ImhzdigiK2UrIiwgIityKyIlLCAiK24rIiUpIjoiaHN2YSgiK2UrIiwgIityKyIlLCAiK24rIiUsICIrdGhpcy5fcm91bmRBKyIpIn0sdG9Ic2w6ZnVuY3Rpb24oKXt2YXIgdD11KHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDozNjAqdC5oLHM6dC5zLGw6dC5sLGE6dGhpcy5fYX19LHRvSHNsU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiksZT1pKDM2MCp0LmgpLHI9aSgxMDAqdC5zKSxuPWkoMTAwKnQubCk7cmV0dXJuIDE9PXRoaXMuX2E/ImhzbCgiK2UrIiwgIityKyIlLCAiK24rIiUpIjoiaHNsYSgiK2UrIiwgIityKyIlLCAiK24rIiUsICIrdGhpcy5fcm91bmRBKyIpIn0sdG9IZXg6ZnVuY3Rpb24odCl7cmV0dXJuIGYodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdCl9LHRvSGV4U3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybiIjIit0aGlzLnRvSGV4KHQpfSx0b0hleDg6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIG89W3ooaSh0KS50b1N0cmluZygxNikpLHooaShlKS50b1N0cmluZygxNikpLHooaShyKS50b1N0cmluZygxNikpLHooRChuKSldO2lmKGEmJm9bMF0uY2hhckF0KDApPT1vWzBdLmNoYXJBdCgxKSYmb1sxXS5jaGFyQXQoMCk9PW9bMV0uY2hhckF0KDEpJiZvWzJdLmNoYXJBdCgwKT09b1syXS5jaGFyQXQoMSkmJm9bM10uY2hhckF0KDApPT1vWzNdLmNoYXJBdCgxKSlyZXR1cm4gb1swXS5jaGFyQXQoMCkrb1sxXS5jaGFyQXQoMCkrb1syXS5jaGFyQXQoMCkrb1szXS5jaGFyQXQoMCk7cmV0dXJuIG8uam9pbigiIil9KHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EsdCl9LHRvSGV4OFN0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4iIyIrdGhpcy50b0hleDgodCl9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6aSh0aGlzLl9yKSxnOmkodGhpcy5fZyksYjppKHRoaXMuX2IpLGE6dGhpcy5fYX19LHRvUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/InJnYigiK2kodGhpcy5fcikrIiwgIitpKHRoaXMuX2cpKyIsICIraSh0aGlzLl9iKSsiKSI6InJnYmEoIitpKHRoaXMuX3IpKyIsICIraSh0aGlzLl9nKSsiLCAiK2kodGhpcy5fYikrIiwgIit0aGlzLl9yb3VuZEErIikifSx0b1BlcmNlbnRhZ2VSZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjppKDEwMCpDKHRoaXMuX3IsMjU1KSkrIiUiLGc6aSgxMDAqQyh0aGlzLl9nLDI1NSkpKyIlIixiOmkoMTAwKkModGhpcy5fYiwyNTUpKSsiJSIsYTp0aGlzLl9hfX0sdG9QZXJjZW50YWdlUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/InJnYigiK2koMTAwKkModGhpcy5fciwyNTUpKSsiJSwgIitpKDEwMCpDKHRoaXMuX2csMjU1KSkrIiUsICIraSgxMDAqQyh0aGlzLl9iLDI1NSkpKyIlKSI6InJnYmEoIitpKDEwMCpDKHRoaXMuX3IsMjU1KSkrIiUsICIraSgxMDAqQyh0aGlzLl9nLDI1NSkpKyIlLCAiK2koMTAwKkModGhpcy5fYiwyNTUpKSsiJSwgIit0aGlzLl9yb3VuZEErIikifSx0b05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX2E/InRyYW5zcGFyZW50IjohKHRoaXMuX2E8MSkmJihFW2YodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsITApXXx8ITEpfSx0b0ZpbHRlcjpmdW5jdGlvbih0KXt2YXIgZT0iIyIrcCh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hKSxyPWUsbj10aGlzLl9ncmFkaWVudFR5cGU/IkdyYWRpZW50VHlwZSA9IDEsICI6IiI7aWYodCl7dmFyIGE9Yyh0KTtyPSIjIitwKGEuX3IsYS5fZyxhLl9iLGEuX2EpfXJldHVybiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoIituKyJzdGFydENvbG9yc3RyPSIrZSsiLGVuZENvbG9yc3RyPSIrcisiKSJ9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPSEhdDt0PXR8fHRoaXMuX2Zvcm1hdDt2YXIgcj0hMSxuPXRoaXMuX2E8MSYmdGhpcy5fYT49MDtyZXR1cm4gZXx8IW58fCJoZXgiIT09dCYmImhleDYiIT09dCYmImhleDMiIT09dCYmImhleDQiIT09dCYmImhleDgiIT09dCYmIm5hbWUiIT09dD8oInJnYiI9PT10JiYocj10aGlzLnRvUmdiU3RyaW5nKCkpLCJwcmdiIj09PXQmJihyPXRoaXMudG9QZXJjZW50YWdlUmdiU3RyaW5nKCkpLCJoZXgiIT09dCYmImhleDYiIT09dHx8KHI9dGhpcy50b0hleFN0cmluZygpKSwiaGV4MyI9PT10JiYocj10aGlzLnRvSGV4U3RyaW5nKCEwKSksImhleDQiPT09dCYmKHI9dGhpcy50b0hleDhTdHJpbmcoITApKSwiaGV4OCI9PT10JiYocj10aGlzLnRvSGV4OFN0cmluZygpKSwibmFtZSI9PT10JiYocj10aGlzLnRvTmFtZSgpKSwiaHNsIj09PXQmJihyPXRoaXMudG9Ic2xTdHJpbmcoKSksImhzdiI9PT10JiYocj10aGlzLnRvSHN2U3RyaW5nKCkpLHJ8fHRoaXMudG9IZXhTdHJpbmcoKSk6Im5hbWUiPT09dCYmMD09PXRoaXMuX2E/dGhpcy50b05hbWUoKTp0aGlzLnRvUmdiU3RyaW5nKCl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcy50b1N0cmluZygpKX0sX2FwcGx5TW9kaWZpY2F0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbChlKSkpO3JldHVybiB0aGlzLl9yPXIuX3IsdGhpcy5fZz1yLl9nLHRoaXMuX2I9ci5fYix0aGlzLnNldEFscGhhKHIuX2EpLHRoaXN9LGxpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24obSxhcmd1bWVudHMpfSxicmlnaHRlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbih5LGFyZ3VtZW50cyl9LGRhcmtlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbih4LGFyZ3VtZW50cyl9LGRlc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oZCxhcmd1bWVudHMpfSxzYXR1cmF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihnLGFyZ3VtZW50cyl9LGdyZXlzY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbih2LGFyZ3VtZW50cyl9LHNwaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oYixhcmd1bWVudHMpfSxfYXBwbHlDb21iaW5hdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0LmFwcGx5KG51bGwsW3RoaXNdLmNvbmNhdChbXS5zbGljZS5jYWxsKGUpKSl9LGFuYWxvZ291czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKE0sYXJndW1lbnRzKX0sY29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKF8sYXJndW1lbnRzKX0sbW9ub2Nocm9tYXRpYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEEsYXJndW1lbnRzKX0sc3BsaXRjb21wbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oVCxhcmd1bWVudHMpfSx0cmlhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHcsYXJndW1lbnRzKX0sdGV0cmFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oayxhcmd1bWVudHMpfX0sYy5mcm9tUmF0aW89ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihyW25dPSJhIj09PW4/dFtuXTpJKHRbbl0pKTt0PXJ9cmV0dXJuIGModCxlKX0sYy5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKCF0fHwhZSkmJmModCkudG9SZ2JTdHJpbmcoKT09YyhlKS50b1JnYlN0cmluZygpfSxjLnJhbmRvbT1mdW5jdGlvbigpe3JldHVybiBjLmZyb21SYXRpbyh7cjpsKCksZzpsKCksYjpsKCl9KX0sYy5taXg9ZnVuY3Rpb24odCxlLHIpe3I9MD09PXI/MDpyfHw1MDt2YXIgbj1jKHQpLnRvUmdiKCksYT1jKGUpLnRvUmdiKCksaT1yLzEwMDtyZXR1cm4gYyh7cjooYS5yLW4ucikqaStuLnIsZzooYS5nLW4uZykqaStuLmcsYjooYS5iLW4uYikqaStuLmIsYTooYS5hLW4uYSkqaStuLmF9KX0sYy5yZWFkYWJpbGl0eT1mdW5jdGlvbihlLHIpe3ZhciBuPWMoZSksYT1jKHIpO3JldHVybih0Lm1heChuLmdldEx1bWluYW5jZSgpLGEuZ2V0THVtaW5hbmNlKCkpKy4wNSkvKHQubWluKG4uZ2V0THVtaW5hbmNlKCksYS5nZXRMdW1pbmFuY2UoKSkrLjA1KX0sYy5pc1JlYWRhYmxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGk9Yy5yZWFkYWJpbGl0eSh0LGUpO3N3aXRjaChhPSExLChuPWZ1bmN0aW9uKHQpe3ZhciBlLHI7ZT0oKHQ9dHx8e2xldmVsOiJBQSIsc2l6ZToic21hbGwifSkubGV2ZWx8fCJBQSIpLnRvVXBwZXJDYXNlKCkscj0odC5zaXplfHwic21hbGwiKS50b0xvd2VyQ2FzZSgpLCJBQSIhPT1lJiYiQUFBIiE9PWUmJihlPSJBQSIpOyJzbWFsbCIhPT1yJiYibGFyZ2UiIT09ciYmKHI9InNtYWxsIik7cmV0dXJue2xldmVsOmUsc2l6ZTpyfX0ocikpLmxldmVsK24uc2l6ZSl7Y2FzZSJBQXNtYWxsIjpjYXNlIkFBQWxhcmdlIjphPWk+PTQuNTticmVhaztjYXNlIkFBbGFyZ2UiOmE9aT49MzticmVhaztjYXNlIkFBQXNtYWxsIjphPWk+PTd9cmV0dXJuIGF9LGMubW9zdFJlYWRhYmxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGksbyxzPW51bGwsbD0wO2E9KHI9cnx8e30pLmluY2x1ZGVGYWxsYmFja0NvbG9ycyxpPXIubGV2ZWwsbz1yLnNpemU7Zm9yKHZhciB1PTA7dTxlLmxlbmd0aDt1KyspKG49Yy5yZWFkYWJpbGl0eSh0LGVbdV0pKT5sJiYobD1uLHM9YyhlW3VdKSk7cmV0dXJuIGMuaXNSZWFkYWJsZSh0LHMse2xldmVsOmksc2l6ZTpvfSl8fCFhP3M6KHIuaW5jbHVkZUZhbGxiYWNrQ29sb3JzPSExLGMubW9zdFJlYWRhYmxlKHQsWyIjZmZmIiwiIzAwMCJdLHIpKX07dmFyIFM9Yy5uYW1lcz17YWxpY2VibHVlOiJmMGY4ZmYiLGFudGlxdWV3aGl0ZToiZmFlYmQ3IixhcXVhOiIwZmYiLGFxdWFtYXJpbmU6IjdmZmZkNCIsYXp1cmU6ImYwZmZmZiIsYmVpZ2U6ImY1ZjVkYyIsYmlzcXVlOiJmZmU0YzQiLGJsYWNrOiIwMDAiLGJsYW5jaGVkYWxtb25kOiJmZmViY2QiLGJsdWU6IjAwZiIsYmx1ZXZpb2xldDoiOGEyYmUyIixicm93bjoiYTUyYTJhIixidXJseXdvb2Q6ImRlYjg4NyIsYnVybnRzaWVubmE6ImVhN2U1ZCIsY2FkZXRibHVlOiI1ZjllYTAiLGNoYXJ0cmV1c2U6IjdmZmYwMCIsY2hvY29sYXRlOiJkMjY5MWUiLGNvcmFsOiJmZjdmNTAiLGNvcm5mbG93ZXJibHVlOiI2NDk1ZWQiLGNvcm5zaWxrOiJmZmY4ZGMiLGNyaW1zb246ImRjMTQzYyIsY3lhbjoiMGZmIixkYXJrYmx1ZToiMDAwMDhiIixkYXJrY3lhbjoiMDA4YjhiIixkYXJrZ29sZGVucm9kOiJiODg2MGIiLGRhcmtncmF5OiJhOWE5YTkiLGRhcmtncmVlbjoiMDA2NDAwIixkYXJrZ3JleToiYTlhOWE5IixkYXJra2hha2k6ImJkYjc2YiIsZGFya21hZ2VudGE6IjhiMDA4YiIsZGFya29saXZlZ3JlZW46IjU1NmIyZiIsZGFya29yYW5nZToiZmY4YzAwIixkYXJrb3JjaGlkOiI5OTMyY2MiLGRhcmtyZWQ6IjhiMDAwMCIsZGFya3NhbG1vbjoiZTk5NjdhIixkYXJrc2VhZ3JlZW46IjhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiNDgzZDhiIixkYXJrc2xhdGVncmF5OiIyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IjJmNGY0ZiIsZGFya3R1cnF1b2lzZToiMDBjZWQxIixkYXJrdmlvbGV0OiI5NDAwZDMiLGRlZXBwaW5rOiJmZjE0OTMiLGRlZXBza3libHVlOiIwMGJmZmYiLGRpbWdyYXk6IjY5Njk2OSIsZGltZ3JleToiNjk2OTY5Iixkb2RnZXJibHVlOiIxZTkwZmYiLGZpcmVicmljazoiYjIyMjIyIixmbG9yYWx3aGl0ZToiZmZmYWYwIixmb3Jlc3RncmVlbjoiMjI4YjIyIixmdWNoc2lhOiJmMGYiLGdhaW5zYm9ybzoiZGNkY2RjIixnaG9zdHdoaXRlOiJmOGY4ZmYiLGdvbGQ6ImZmZDcwMCIsZ29sZGVucm9kOiJkYWE1MjAiLGdyYXk6IjgwODA4MCIsZ3JlZW46IjAwODAwMCIsZ3JlZW55ZWxsb3c6ImFkZmYyZiIsZ3JleToiODA4MDgwIixob25leWRldzoiZjBmZmYwIixob3RwaW5rOiJmZjY5YjQiLGluZGlhbnJlZDoiY2Q1YzVjIixpbmRpZ286IjRiMDA4MiIsaXZvcnk6ImZmZmZmMCIsa2hha2k6ImYwZTY4YyIsbGF2ZW5kZXI6ImU2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiZmZmMGY1IixsYXduZ3JlZW46IjdjZmMwMCIsbGVtb25jaGlmZm9uOiJmZmZhY2QiLGxpZ2h0Ymx1ZToiYWRkOGU2IixsaWdodGNvcmFsOiJmMDgwODAiLGxpZ2h0Y3lhbjoiZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiZmFmYWQyIixsaWdodGdyYXk6ImQzZDNkMyIsbGlnaHRncmVlbjoiOTBlZTkwIixsaWdodGdyZXk6ImQzZDNkMyIsbGlnaHRwaW5rOiJmZmI2YzEiLGxpZ2h0c2FsbW9uOiJmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IjIwYjJhYSIsbGlnaHRza3libHVlOiI4N2NlZmEiLGxpZ2h0c2xhdGVncmF5OiI3ODkiLGxpZ2h0c2xhdGVncmV5OiI3ODkiLGxpZ2h0c3RlZWxibHVlOiJiMGM0ZGUiLGxpZ2h0eWVsbG93OiJmZmZmZTAiLGxpbWU6IjBmMCIsbGltZWdyZWVuOiIzMmNkMzIiLGxpbmVuOiJmYWYwZTYiLG1hZ2VudGE6ImYwZiIsbWFyb29uOiI4MDAwMDAiLG1lZGl1bWFxdWFtYXJpbmU6IjY2Y2RhYSIsbWVkaXVtYmx1ZToiMDAwMGNkIixtZWRpdW1vcmNoaWQ6ImJhNTVkMyIsbWVkaXVtcHVycGxlOiI5MzcwZGIiLG1lZGl1bXNlYWdyZWVuOiIzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiN2I2OGVlIixtZWRpdW1zcHJpbmdncmVlbjoiMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IjQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiJjNzE1ODUiLG1pZG5pZ2h0Ymx1ZToiMTkxOTcwIixtaW50Y3JlYW06ImY1ZmZmYSIsbWlzdHlyb3NlOiJmZmU0ZTEiLG1vY2Nhc2luOiJmZmU0YjUiLG5hdmFqb3doaXRlOiJmZmRlYWQiLG5hdnk6IjAwMDA4MCIsb2xkbGFjZToiZmRmNWU2IixvbGl2ZToiODA4MDAwIixvbGl2ZWRyYWI6IjZiOGUyMyIsb3JhbmdlOiJmZmE1MDAiLG9yYW5nZXJlZDoiZmY0NTAwIixvcmNoaWQ6ImRhNzBkNiIscGFsZWdvbGRlbnJvZDoiZWVlOGFhIixwYWxlZ3JlZW46Ijk4ZmI5OCIscGFsZXR1cnF1b2lzZToiYWZlZWVlIixwYWxldmlvbGV0cmVkOiJkYjcwOTMiLHBhcGF5YXdoaXA6ImZmZWZkNSIscGVhY2hwdWZmOiJmZmRhYjkiLHBlcnU6ImNkODUzZiIscGluazoiZmZjMGNiIixwbHVtOiJkZGEwZGQiLHBvd2RlcmJsdWU6ImIwZTBlNiIscHVycGxlOiI4MDAwODAiLHJlYmVjY2FwdXJwbGU6IjY2MzM5OSIscmVkOiJmMDAiLHJvc3licm93bjoiYmM4ZjhmIixyb3lhbGJsdWU6IjQxNjllMSIsc2FkZGxlYnJvd246IjhiNDUxMyIsc2FsbW9uOiJmYTgwNzIiLHNhbmR5YnJvd246ImY0YTQ2MCIsc2VhZ3JlZW46IjJlOGI1NyIsc2Vhc2hlbGw6ImZmZjVlZSIsc2llbm5hOiJhMDUyMmQiLHNpbHZlcjoiYzBjMGMwIixza3libHVlOiI4N2NlZWIiLHNsYXRlYmx1ZToiNmE1YWNkIixzbGF0ZWdyYXk6IjcwODA5MCIsc2xhdGVncmV5OiI3MDgwOTAiLHNub3c6ImZmZmFmYSIsc3ByaW5nZ3JlZW46IjAwZmY3ZiIsc3RlZWxibHVlOiI0NjgyYjQiLHRhbjoiZDJiNDhjIix0ZWFsOiIwMDgwODAiLHRoaXN0bGU6ImQ4YmZkOCIsdG9tYXRvOiJmZjYzNDciLHR1cnF1b2lzZToiNDBlMGQwIix2aW9sZXQ6ImVlODJlZSIsd2hlYXQ6ImY1ZGViMyIsd2hpdGU6ImZmZiIsd2hpdGVzbW9rZToiZjVmNWY1Iix5ZWxsb3c6ImZmMCIseWVsbG93Z3JlZW46IjlhY2QzMiJ9LEU9Yy5oZXhOYW1lcz1mdW5jdGlvbih0KXt2YXIgZT17fTtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYoZVt0W3JdXT1yKTtyZXR1cm4gZX0oUyk7ZnVuY3Rpb24gTCh0KXtyZXR1cm4gdD1wYXJzZUZsb2F0KHQpLChpc05hTih0KXx8dDwwfHx0PjEpJiYodD0xKSx0fWZ1bmN0aW9uIEMoZSxyKXsoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYtMSE9dC5pbmRleE9mKCIuIikmJjE9PT1wYXJzZUZsb2F0KHQpfSkoZSkmJihlPSIxMDAlIik7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYtMSE9dC5pbmRleE9mKCIlIil9KGUpO3JldHVybiBlPW8ocixzKDAscGFyc2VGbG9hdChlKSkpLG4mJihlPXBhcnNlSW50KGUqciwxMCkvMTAwKSx0LmFicyhlLXIpPDFlLTY/MTplJXIvcGFyc2VGbG9hdChyKX1mdW5jdGlvbiBQKHQpe3JldHVybiBvKDEscygwLHQpKX1mdW5jdGlvbiBPKHQpe3JldHVybiBwYXJzZUludCh0LDE2KX1mdW5jdGlvbiB6KHQpe3JldHVybiAxPT10Lmxlbmd0aD8iMCIrdDoiIit0fWZ1bmN0aW9uIEkodCl7cmV0dXJuIHQ8PTEmJih0PTEwMCp0KyIlIiksdH1mdW5jdGlvbiBEKGUpe3JldHVybiB0LnJvdW5kKDI1NSpwYXJzZUZsb2F0KGUpKS50b1N0cmluZygxNil9ZnVuY3Rpb24gUih0KXtyZXR1cm4gTyh0KS8yNTV9dmFyIEYsQixOLGo9KEI9IltcXHN8XFwoXSsoIisoRj0iKD86Wy1cXCtdP1xcZCpcXC5cXGQrJT8pfCg/OlstXFwrXT9cXGQrJT8pIikrIilbLHxcXHNdKygiK0YrIilbLHxcXHNdKygiK0YrIilcXHMqXFwpPyIsTj0iW1xcc3xcXChdKygiK0YrIilbLHxcXHNdKygiK0YrIilbLHxcXHNdKygiK0YrIilbLHxcXHNdKygiK0YrIilcXHMqXFwpPyIse0NTU19VTklUOm5ldyBSZWdFeHAoRikscmdiOm5ldyBSZWdFeHAoInJnYiIrQikscmdiYTpuZXcgUmVnRXhwKCJyZ2JhIitOKSxoc2w6bmV3IFJlZ0V4cCgiaHNsIitCKSxoc2xhOm5ldyBSZWdFeHAoImhzbGEiK04pLGhzdjpuZXcgUmVnRXhwKCJoc3YiK0IpLGhzdmE6bmV3IFJlZ0V4cCgiaHN2YSIrTiksaGV4MzovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4NjovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC8saGV4NDovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDg6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkL30pO2Z1bmN0aW9uIFYodCl7cmV0dXJuISFqLkNTU19VTklULmV4ZWModCl9InVuZGVmaW5lZCIhPXR5cGVvZiBlJiZlLmV4cG9ydHM/ZS5leHBvcnRzPWM6d2luZG93LnRpbnljb2xvcj1jfShNYXRoKX0se31dLDUzNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9YSxlLmV4cG9ydHMuZmxvYXQzMj1lLmV4cG9ydHMuZmxvYXQ9YSxlLmV4cG9ydHMuZnJhY3QzMj1lLmV4cG9ydHMuZnJhY3Q9ZnVuY3Rpb24odCl7aWYodC5sZW5ndGgpe2Zvcih2YXIgZT1hKHQpLHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspZVtyXT10W3JdLWVbcl07cmV0dXJuIGV9cmV0dXJuIGEodC1hKHQpKX07dmFyIG49bmV3IEZsb2F0MzJBcnJheSgxKTtmdW5jdGlvbiBhKHQpe2lmKHQubGVuZ3RoKXtpZih0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KXJldHVybiB0O3ZhciBlPW5ldyBGbG9hdDMyQXJyYXkodCk7cmV0dXJuIGUuc2V0KHQpLGV9cmV0dXJuIG5bMF09dCxuWzBdfX0se31dLDUzODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJwYXJzZS11bml0Iik7ZS5leHBvcnRzPW87dmFyIGE9OTY7ZnVuY3Rpb24gaSh0LGUpe3ZhciByPW4oZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKGUpKTtyZXR1cm4gclswXSpvKHJbMV0sdCl9ZnVuY3Rpb24gbyh0LGUpe3N3aXRjaChlPWV8fGRvY3VtZW50LmJvZHksdD0odHx8InB4IikudHJpbSgpLnRvTG93ZXJDYXNlKCksZSE9PXdpbmRvdyYmZSE9PWRvY3VtZW50fHwoZT1kb2N1bWVudC5ib2R5KSx0KXtjYXNlIiUiOnJldHVybiBlLmNsaWVudEhlaWdodC8xMDA7Y2FzZSJjaCI6Y2FzZSJleCI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5zdHlsZVsiZm9udC1zaXplIl09IjEyOCIrdCxlLmFwcGVuZENoaWxkKHIpO3ZhciBuPWkociwiZm9udC1zaXplIikvMTI4O3JldHVybiBlLnJlbW92ZUNoaWxkKHIpLG59KHQsZSk7Y2FzZSJlbSI6cmV0dXJuIGkoZSwiZm9udC1zaXplIik7Y2FzZSJyZW0iOnJldHVybiBpKGRvY3VtZW50LmJvZHksImZvbnQtc2l6ZSIpO2Nhc2UidnciOnJldHVybiB3aW5kb3cuaW5uZXJXaWR0aC8xMDA7Y2FzZSJ2aCI6cmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodC8xMDA7Y2FzZSJ2bWluIjpyZXR1cm4gTWF0aC5taW4od2luZG93LmlubmVyV2lkdGgsd2luZG93LmlubmVySGVpZ2h0KS8xMDA7Y2FzZSJ2bWF4IjpyZXR1cm4gTWF0aC5tYXgod2luZG93LmlubmVyV2lkdGgsd2luZG93LmlubmVySGVpZ2h0KS8xMDA7Y2FzZSJpbiI6cmV0dXJuIGE7Y2FzZSJjbSI6cmV0dXJuIGEvMi41NDtjYXNlIm1tIjpyZXR1cm4gYS8yNS40O2Nhc2UicHQiOnJldHVybiBhLzcyO2Nhc2UicGMiOnJldHVybiBhLzZ9cmV0dXJuIDF9fSx7InBhcnNlLXVuaXQiOjQ2M31dLDUzOTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuO249dGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHI9ZnVuY3Rpb24odCl7aWYobnVsbD09KHI9dC50cmFuc2Zvcm0pKXJldHVybiBlO3ZhciByLG4sYSxpPXIuc2NhbGVbMF0sbz1yLnNjYWxlWzFdLHM9ci50cmFuc2xhdGVbMF0sbD1yLnRyYW5zbGF0ZVsxXTtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8KG49YT0wKSx0WzBdPShuKz10WzBdKSppK3MsdFsxXT0oYSs9dFsxXSkqbytsLHR9fSxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQuYmJveDtmdW5jdGlvbiBuKHQpe2xbMF09dFswXSxsWzFdPXRbMV0scyhsKSxsWzBdPGMmJihjPWxbMF0pLGxbMF0+aCYmKGg9bFswXSksbFsxXTx1JiYodT1sWzFdKSxsWzFdPmYmJihmPWxbMV0pfWZ1bmN0aW9uIGEodCl7c3dpdGNoKHQudHlwZSl7Y2FzZSJHZW9tZXRyeUNvbGxlY3Rpb24iOnQuZ2VvbWV0cmllcy5mb3JFYWNoKGEpO2JyZWFrO2Nhc2UiUG9pbnQiOm4odC5jb29yZGluYXRlcyk7YnJlYWs7Y2FzZSJNdWx0aVBvaW50Ijp0LmNvb3JkaW5hdGVzLmZvckVhY2gobil9fWlmKCFlKXt2YXIgaSxvLHM9cih0KSxsPW5ldyBBcnJheSgyKSxjPTEvMCx1PWMsaD0tYyxmPS1jO2ZvcihvIGluIHQuYXJjcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0tMSxyPXQubGVuZ3RoOysrZTxyOylpPXRbZV0sbFswXT1pWzBdLGxbMV09aVsxXSxzKGwsZSksbFswXTxjJiYoYz1sWzBdKSxsWzBdPmgmJihoPWxbMF0pLGxbMV08dSYmKHU9bFsxXSksbFsxXT5mJiYoZj1sWzFdKX0pLHQub2JqZWN0cylhKHQub2JqZWN0c1tvXSk7ZT10LmJib3g9W2MsdSxoLGZdfXJldHVybiBlfSxhPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49dC5sZW5ndGgsYT1uLWU7YTwtLW47KXI9dFthXSx0W2ErK109dFtuXSx0W25dPXJ9O2Z1bmN0aW9uIGkodCxlKXt2YXIgcj1lLmlkLG49ZS5iYm94LGE9bnVsbD09ZS5wcm9wZXJ0aWVzP3t9OmUucHJvcGVydGllcyxpPW8odCxlKTtyZXR1cm4gbnVsbD09ciYmbnVsbD09bj97dHlwZToiRmVhdHVyZSIscHJvcGVydGllczphLGdlb21ldHJ5Oml9Om51bGw9PW4/e3R5cGU6IkZlYXR1cmUiLGlkOnIscHJvcGVydGllczphLGdlb21ldHJ5Oml9Ont0eXBlOiJGZWF0dXJlIixpZDpyLGJib3g6bixwcm9wZXJ0aWVzOmEsZ2VvbWV0cnk6aX19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPXIodCksaT10LmFyY3M7ZnVuY3Rpb24gbyh0LGUpe2UubGVuZ3RoJiZlLnBvcCgpO2Zvcih2YXIgcj1pW3Q8MD9+dDp0XSxvPTAscz1yLmxlbmd0aDtvPHM7KytvKWUucHVzaChuKHJbb10uc2xpY2UoKSxvKSk7dDwwJiZhKGUscyl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbih0LnNsaWNlKCkpfWZ1bmN0aW9uIGwodCl7Zm9yKHZhciBlPVtdLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3Ipbyh0W3JdLGUpO3JldHVybiBlLmxlbmd0aDwyJiZlLnB1c2goZVswXS5zbGljZSgpKSxlfWZ1bmN0aW9uIGModCl7Zm9yKHZhciBlPWwodCk7ZS5sZW5ndGg8NDspZS5wdXNoKGVbMF0uc2xpY2UoKSk7cmV0dXJuIGV9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC5tYXAoYyl9cmV0dXJuIGZ1bmN0aW9uIHQoZSl7dmFyIHIsbj1lLnR5cGU7c3dpdGNoKG4pe2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpyZXR1cm57dHlwZTpuLGdlb21ldHJpZXM6ZS5nZW9tZXRyaWVzLm1hcCh0KX07Y2FzZSJQb2ludCI6cj1zKGUuY29vcmRpbmF0ZXMpO2JyZWFrO2Nhc2UiTXVsdGlQb2ludCI6cj1lLmNvb3JkaW5hdGVzLm1hcChzKTticmVhaztjYXNlIkxpbmVTdHJpbmciOnI9bChlLmFyY3MpO2JyZWFrO2Nhc2UiTXVsdGlMaW5lU3RyaW5nIjpyPWUuYXJjcy5tYXAobCk7YnJlYWs7Y2FzZSJQb2x5Z29uIjpyPXUoZS5hcmNzKTticmVhaztjYXNlIk11bHRpUG9seWdvbiI6cj1lLmFyY3MubWFwKHUpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG51bGx9cmV0dXJue3R5cGU6bixjb29yZGluYXRlczpyfX0oZSl9dmFyIHM9ZnVuY3Rpb24odCxlKXt2YXIgcj17fSxuPXt9LGE9e30saT1bXSxvPS0xO2Z1bmN0aW9uIHModCxlKXtmb3IodmFyIG4gaW4gdCl7dmFyIGE9dFtuXTtkZWxldGUgZVthLnN0YXJ0XSxkZWxldGUgYS5zdGFydCxkZWxldGUgYS5lbmQsYS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JbdDwwP350OnRdPTF9KSxpLnB1c2goYSl9fXJldHVybiBlLmZvckVhY2goZnVuY3Rpb24ocixuKXt2YXIgYSxpPXQuYXJjc1tyPDA/fnI6cl07aS5sZW5ndGg8MyYmIWlbMV1bMF0mJiFpWzFdWzFdJiYoYT1lWysrb10sZVtvXT1yLGVbbl09YSl9KSxlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHIsaSxvPWZ1bmN0aW9uKGUpe3ZhciByLG49dC5hcmNzW2U8MD9+ZTplXSxhPW5bMF07dC50cmFuc2Zvcm0/KHI9WzAsMF0sbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JbMF0rPXRbMF0sclsxXSs9dFsxXX0pKTpyPW5bbi5sZW5ndGgtMV07cmV0dXJuIGU8MD9bcixhXTpbYSxyXX0oZSkscz1vWzBdLGw9b1sxXTtpZihyPWFbc10paWYoZGVsZXRlIGFbci5lbmRdLHIucHVzaChlKSxyLmVuZD1sLGk9bltsXSl7ZGVsZXRlIG5baS5zdGFydF07dmFyIGM9aT09PXI/cjpyLmNvbmNhdChpKTtuW2Muc3RhcnQ9ci5zdGFydF09YVtjLmVuZD1pLmVuZF09Y31lbHNlIG5bci5zdGFydF09YVtyLmVuZF09cjtlbHNlIGlmKHI9bltsXSlpZihkZWxldGUgbltyLnN0YXJ0XSxyLnVuc2hpZnQoZSksci5zdGFydD1zLGk9YVtzXSl7ZGVsZXRlIGFbaS5lbmRdO3ZhciB1PWk9PT1yP3I6aS5jb25jYXQocik7blt1LnN0YXJ0PWkuc3RhcnRdPWFbdS5lbmQ9ci5lbmRdPXV9ZWxzZSBuW3Iuc3RhcnRdPWFbci5lbmRdPXI7ZWxzZSBuWyhyPVtlXSkuc3RhcnQ9c109YVtyLmVuZD1sXT1yfSkscyhhLG4pLHMobixhKSxlLmZvckVhY2goZnVuY3Rpb24odCl7clt0PDA/fnQ6dF18fGkucHVzaChbdF0pfSksaX07ZnVuY3Rpb24gbCh0LGUscil7dmFyIG4sYSxpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSluPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhPVtdLGk9W107ZnVuY3Rpb24gbyh0KXt2YXIgZT10PDA/fnQ6dDsoaVtlXXx8KGlbZV09W10pKS5wdXNoKHtpOnQsZzpufSl9ZnVuY3Rpb24gcyh0KXt0LmZvckVhY2gobyl9ZnVuY3Rpb24gbCh0KXt0LmZvckVhY2gocyl9cmV0dXJuIGZ1bmN0aW9uIHQoZSl7c3dpdGNoKG49ZSxlLnR5cGUpe2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjplLmdlb21ldHJpZXMuZm9yRWFjaCh0KTticmVhaztjYXNlIkxpbmVTdHJpbmciOnMoZS5hcmNzKTticmVhaztjYXNlIk11bHRpTGluZVN0cmluZyI6Y2FzZSJQb2x5Z29uIjpsKGUuYXJjcyk7YnJlYWs7Y2FzZSJNdWx0aVBvbHlnb24iOmUuYXJjcy5mb3JFYWNoKGwpfX0oZSksaS5mb3JFYWNoKG51bGw9PXI/ZnVuY3Rpb24odCl7YS5wdXNoKHRbMF0uaSl9OmZ1bmN0aW9uKHQpe3IodFswXS5nLHRbdC5sZW5ndGgtMV0uZykmJmEucHVzaCh0WzBdLmkpfSksYX0oMCxlLHIpO2Vsc2UgZm9yKGE9MCxuPW5ldyBBcnJheShpPXQuYXJjcy5sZW5ndGgpO2E8aTsrK2EpblthXT1hO3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGFyY3M6cyh0LG4pfX1mdW5jdGlvbiBjKHQsZSl7dmFyIHI9e30sbj1bXSxhPVtdO2Z1bmN0aW9uIGkodCl7dC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZm9yRWFjaChmdW5jdGlvbihlKXsocltlPWU8MD9+ZTplXXx8KHJbZV09W10pKS5wdXNoKHQpfSl9KSxuLnB1c2godCl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9LTEsbj10Lmxlbmd0aCxhPXRbbi0xXSxpPTA7KytyPG47KWU9YSxhPXRbcl0saSs9ZVswXSphWzFdLWVbMV0qYVswXTtyZXR1cm4gTWF0aC5hYnMoaSl9KG8odCx7dHlwZToiUG9seWdvbiIsYXJjczpbZV19KS5jb29yZGluYXRlc1swXSl9cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbiB0KGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjplLmdlb21ldHJpZXMuZm9yRWFjaCh0KTticmVhaztjYXNlIlBvbHlnb24iOmkoZS5hcmNzKTticmVhaztjYXNlIk11bHRpUG9seWdvbiI6ZS5hcmNzLmZvckVhY2goaSl9fSksbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKCF0Ll8pe3ZhciBlPVtdLG49W3RdO2Zvcih0Ll89MSxhLnB1c2goZSk7dD1uLnBvcCgpOyllLnB1c2godCksdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaChmdW5jdGlvbih0KXtyW3Q8MD9+dDp0XS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuX3x8KHQuXz0xLG4ucHVzaCh0KSl9KX0pfSl9fSksbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe2RlbGV0ZSB0Ll99KSx7dHlwZToiTXVsdGlQb2x5Z29uIixhcmNzOmEubWFwKGZ1bmN0aW9uKGUpe3ZhciBuLGE9W107aWYoZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaChmdW5jdGlvbih0KXt0LmZvckVhY2goZnVuY3Rpb24odCl7clt0PDA/fnQ6dF0ubGVuZ3RoPDImJmEucHVzaCh0KX0pfSl9KSwobj0oYT1zKHQsYSkpLmxlbmd0aCk+MSlmb3IodmFyIGksbyxjPTEsdT1sKGFbMF0pO2M8bjsrK2MpKGk9bChhW2NdKSk+dSYmKG89YVswXSxhWzBdPWFbY10sYVtjXT1vLHU9aSk7cmV0dXJuIGF9KX19dmFyIHU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjspe3ZhciBhPXIrbj4+PjE7dFthXTxlP3I9YSsxOm49YX1yZXR1cm4gcn07dC5iYm94PW4sdC5mZWF0dXJlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIkdlb21ldHJ5Q29sbGVjdGlvbiI9PT1lLnR5cGU/e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczplLmdlb21ldHJpZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBpKHQsZSl9KX06aSh0LGUpfSx0Lm1lc2g9ZnVuY3Rpb24odCl7cmV0dXJuIG8odCxsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LHQubWVzaEFyY3M9bCx0Lm1lcmdlPWZ1bmN0aW9uKHQpe3JldHVybiBvKHQsYy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSx0Lm1lcmdlQXJjcz1jLHQubmVpZ2hib3JzPWZ1bmN0aW9uKHQpe3ZhciBlPXt9LHI9dC5tYXAoZnVuY3Rpb24oKXtyZXR1cm5bXX0pO2Z1bmN0aW9uIG4odCxyKXt0LmZvckVhY2goZnVuY3Rpb24odCl7dDwwJiYodD1+dCk7dmFyIG49ZVt0XTtuP24ucHVzaChyKTplW3RdPVtyXX0pfWZ1bmN0aW9uIGEodCxlKXt0LmZvckVhY2goZnVuY3Rpb24odCl7bih0LGUpfSl9dmFyIGk9e0xpbmVTdHJpbmc6bixNdWx0aUxpbmVTdHJpbmc6YSxQb2x5Z29uOmEsTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2EodCxlKX0pfX07Zm9yKHZhciBvIGluIHQuZm9yRWFjaChmdW5jdGlvbiB0KGUscil7Ikdlb21ldHJ5Q29sbGVjdGlvbiI9PT1lLnR5cGU/ZS5nZW9tZXRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7dChlLHIpfSk6ZS50eXBlIGluIGkmJmlbZS50eXBlXShlLmFyY3Mscil9KSxlKWZvcih2YXIgcz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpZm9yKHZhciBoPWMrMTtoPGw7KytoKXt2YXIgZixwPXNbY10sZD1zW2hdOyhmPXJbcF0pW289dShmLGQpXSE9PWQmJmYuc3BsaWNlKG8sMCxkKSwoZj1yW2RdKVtvPXUoZixwKV0hPT1wJiZmLnNwbGljZShvLDAscCl9cmV0dXJuIHJ9LHQucXVhbnRpemU9ZnVuY3Rpb24odCxlKXtpZighKChlPU1hdGguZmxvb3IoZSkpPj0yKSl0aHJvdyBuZXcgRXJyb3IoIm4gbXVzdCBiZSBcdTIyNjUyIik7aWYodC50cmFuc2Zvcm0pdGhyb3cgbmV3IEVycm9yKCJhbHJlYWR5IHF1YW50aXplZCIpO3ZhciByLGE9bih0KSxpPWFbMF0sbz0oYVsyXS1pKS8oZS0xKXx8MSxzPWFbMV0sbD0oYVszXS1zKS8oZS0xKXx8MTtmdW5jdGlvbiBjKHQpe3RbMF09TWF0aC5yb3VuZCgodFswXS1pKS9vKSx0WzFdPU1hdGgucm91bmQoKHRbMV0tcykvbCl9ZnVuY3Rpb24gdSh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkdlb21ldHJ5Q29sbGVjdGlvbiI6dC5nZW9tZXRyaWVzLmZvckVhY2godSk7YnJlYWs7Y2FzZSJQb2ludCI6Yyh0LmNvb3JkaW5hdGVzKTticmVhaztjYXNlIk11bHRpUG9pbnQiOnQuY29vcmRpbmF0ZXMuZm9yRWFjaChjKX19Zm9yKHIgaW4gdC5hcmNzLmZvckVhY2goZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixhPTEsYz0xLHU9dC5sZW5ndGgsaD10WzBdLGY9aFswXT1NYXRoLnJvdW5kKChoWzBdLWkpL28pLHA9aFsxXT1NYXRoLnJvdW5kKChoWzFdLXMpL2wpO2E8dTsrK2EpaD10W2FdLHI9TWF0aC5yb3VuZCgoaFswXS1pKS9vKSxuPU1hdGgucm91bmQoKGhbMV0tcykvbCkscj09PWYmJm49PT1wfHwoKGU9dFtjKytdKVswXT1yLWYsZj1yLGVbMV09bi1wLHA9bik7YzwyJiYoKGU9dFtjKytdKVswXT0wLGVbMV09MCksdC5sZW5ndGg9Y30pLHQub2JqZWN0cyl1KHQub2JqZWN0c1tyXSk7cmV0dXJuIHQudHJhbnNmb3JtPXtzY2FsZTpbbyxsXSx0cmFuc2xhdGU6W2ksc119LHR9LHQudHJhbnNmb3JtPXIsdC51bnRyYW5zZm9ybT1mdW5jdGlvbih0KXtpZihudWxsPT0ocj10LnRyYW5zZm9ybSkpcmV0dXJuIGU7dmFyIHIsbixhLGk9ci5zY2FsZVswXSxvPXIuc2NhbGVbMV0scz1yLnRyYW5zbGF0ZVswXSxsPXIudHJhbnNsYXRlWzFdO3JldHVybiBmdW5jdGlvbih0LGUpe2V8fChuPWE9MCk7dmFyIHI9TWF0aC5yb3VuZCgodFswXS1zKS9pKSxjPU1hdGgucm91bmQoKHRbMV0tbCkvbyk7cmV0dXJuIHRbMF09ci1uLG49cix0WzFdPWMtYSxhPWMsdH19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9mIGU/cjpuLnRvcG9qc29uPW4udG9wb2pzb258fHt9KX0se31dLDU0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodDwwKXJldHVybltdO2lmKDA9PT10KXJldHVybltbMF1dO2Zvcih2YXIgZT0wfE1hdGgucm91bmQoaSh0KzEpKSxyPVtdLG89MDtvPGU7KytvKXtmb3IodmFyIHM9bi51bnJhbmsodCxvKSxsPVswXSxjPTAsdT0wO3U8cy5sZW5ndGg7Kyt1KWMrPTE8PHNbdV0sbC5wdXNoKGMpO2Eocyk8MSYmKGxbMF09YyxsW3RdPTApLHIucHVzaChsKX1yZXR1cm4gcn07dmFyIG49dCgicGVybXV0YXRpb24tcmFuayIpLGE9dCgicGVybXV0YXRpb24tcGFyaXR5IiksaT10KCJnYW1tYSIpfSx7Z2FtbWE6MjM0LCJwZXJtdXRhdGlvbi1wYXJpdHkiOjQ2NSwicGVybXV0YXRpb24tcmFuayI6NDY2fV0sNTQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT0odD10fHx7fSkuY2VudGVyfHxbMCwwLDBdLHI9dC51cHx8WzAsMSwwXSxuPXQucmlnaHR8fGgociksYT10LnJhZGl1c3x8MSxpPXQudGhldGF8fDAsdT10LnBoaXx8MDtpZihlPVtdLnNsaWNlLmNhbGwoZSwwLDMpLHI9W10uc2xpY2UuY2FsbChyLDAsMykscyhyLHIpLG49W10uc2xpY2UuY2FsbChuLDAsMykscyhuLG4pLCJleWUiaW4gdCl7dmFyIHA9dC5leWUsZD1bcFswXS1lWzBdLHBbMV0tZVsxXSxwWzJdLWVbMl1dO28obixkLHIpLGMoblswXSxuWzFdLG5bMl0pPDFlLTY/bj1oKHIpOnMobixuKSxhPWMoZFswXSxkWzFdLGRbMl0pO3ZhciBnPWwocixkKS9hLHY9bChuLGQpL2E7dT1NYXRoLmFjb3MoZyksaT1NYXRoLmFjb3Modil9cmV0dXJuIGE9TWF0aC5sb2coYSksbmV3IGYodC56b29tTWluLHQuem9vbU1heCxlLHIsbixhLGksdSl9O3ZhciBuPXQoImZpbHRlcmVkLXZlY3RvciIpLGE9dCgiZ2wtbWF0NC9pbnZlcnQiKSxpPXQoImdsLW1hdDQvcm90YXRlIiksbz10KCJnbC12ZWMzL2Nyb3NzIikscz10KCJnbC12ZWMzL25vcm1hbGl6ZSIpLGw9dCgiZ2wtdmVjMy9kb3QiKTtmdW5jdGlvbiBjKHQsZSxyKXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHQsMikrTWF0aC5wb3coZSwyKStNYXRoLnBvdyhyLDIpKX1mdW5jdGlvbiB1KHQpe3JldHVybiBNYXRoLm1pbigxLE1hdGgubWF4KC0xLHQpKX1mdW5jdGlvbiBoKHQpe3ZhciBlPU1hdGguYWJzKHRbMF0pLHI9TWF0aC5hYnModFsxXSksbj1NYXRoLmFicyh0WzJdKSxhPVswLDAsMF07ZT5NYXRoLm1heChyLG4pP2FbMl09MTpyPk1hdGgubWF4KGUsbik/YVswXT0xOmFbMV09MTtmb3IodmFyIGk9MCxvPTAsbD0wO2w8MzsrK2wpaSs9dFtsXSp0W2xdLG8rPWFbbF0qdFtsXTtmb3IobD0wO2w8MzsrK2wpYVtsXS09by9pKnRbbF07cmV0dXJuIHMoYSxhKSxhfWZ1bmN0aW9uIGYodCxlLHIsYSxpLG8scyxsKXt0aGlzLmNlbnRlcj1uKHIpLHRoaXMudXA9bihhKSx0aGlzLnJpZ2h0PW4oaSksdGhpcy5yYWRpdXM9bihbb10pLHRoaXMuYW5nbGU9bihbcyxsXSksdGhpcy5hbmdsZS5ib3VuZHM9W1stMS8wLC1NYXRoLlBJLzJdLFsxLzAsTWF0aC5QSS8yXV0sdGhpcy5zZXREaXN0YW5jZUxpbWl0cyh0LGUpLHRoaXMuY29tcHV0ZWRDZW50ZXI9dGhpcy5jZW50ZXIuY3VydmUoMCksdGhpcy5jb21wdXRlZFVwPXRoaXMudXAuY3VydmUoMCksdGhpcy5jb21wdXRlZFJpZ2h0PXRoaXMucmlnaHQuY3VydmUoMCksdGhpcy5jb21wdXRlZFJhZGl1cz10aGlzLnJhZGl1cy5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkQW5nbGU9dGhpcy5hbmdsZS5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkVG93YXJkPVswLDAsMF0sdGhpcy5jb21wdXRlZEV5ZT1bMCwwLDBdLHRoaXMuY29tcHV0ZWRNYXRyaXg9bmV3IEFycmF5KDE2KTtmb3IodmFyIGM9MDtjPDE2OysrYyl0aGlzLmNvbXB1dGVkTWF0cml4W2NdPS41O3RoaXMucmVjYWxjTWF0cml4KDApfXZhciBwPWYucHJvdG90eXBlO3Auc2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCxlKXt0PXQ+MD9NYXRoLmxvZyh0KTotMS8wLGU9ZT4wP01hdGgubG9nKGUpOjEvMCxlPU1hdGgubWF4KGUsdCksdGhpcy5yYWRpdXMuYm91bmRzWzBdWzBdPXQsdGhpcy5yYWRpdXMuYm91bmRzWzFdWzBdPWV9LHAuZ2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yYWRpdXMuYm91bmRzWzBdO3JldHVybiB0Pyh0WzBdPU1hdGguZXhwKGVbMF1bMF0pLHRbMV09TWF0aC5leHAoZVsxXVswXSksdCk6W01hdGguZXhwKGVbMF1bMF0pLE1hdGguZXhwKGVbMV1bMF0pXX0scC5yZWNhbGNNYXRyaXg9ZnVuY3Rpb24odCl7dGhpcy5jZW50ZXIuY3VydmUodCksdGhpcy51cC5jdXJ2ZSh0KSx0aGlzLnJpZ2h0LmN1cnZlKHQpLHRoaXMucmFkaXVzLmN1cnZlKHQpLHRoaXMuYW5nbGUuY3VydmUodCk7Zm9yKHZhciBlPXRoaXMuY29tcHV0ZWRVcCxyPXRoaXMuY29tcHV0ZWRSaWdodCxuPTAsYT0wLGk9MDtpPDM7KytpKWErPWVbaV0qcltpXSxuKz1lW2ldKmVbaV07dmFyIGw9TWF0aC5zcXJ0KG4pLHU9MDtmb3IoaT0wO2k8MzsrK2kpcltpXS09ZVtpXSphL24sdSs9cltpXSpyW2ldLGVbaV0vPWw7dmFyIGg9TWF0aC5zcXJ0KHUpO2ZvcihpPTA7aTwzOysraSlyW2ldLz1oO3ZhciBmPXRoaXMuY29tcHV0ZWRUb3dhcmQ7byhmLGUscikscyhmLGYpO3ZhciBwPU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pLGQ9dGhpcy5jb21wdXRlZEFuZ2xlWzBdLGc9dGhpcy5jb21wdXRlZEFuZ2xlWzFdLHY9TWF0aC5jb3MoZCksbT1NYXRoLnNpbihkKSx5PU1hdGguY29zKGcpLHg9TWF0aC5zaW4oZyksYj10aGlzLmNvbXB1dGVkQ2VudGVyLF89dip5LHc9bSp5LGs9eCxUPS12KngsTT0tbSp4LEE9eSxTPXRoaXMuY29tcHV0ZWRFeWUsRT10aGlzLmNvbXB1dGVkTWF0cml4O2ZvcihpPTA7aTwzOysraSl7dmFyIEw9XypyW2ldK3cqZltpXStrKmVbaV07RVs0KmkrMV09VCpyW2ldK00qZltpXStBKmVbaV0sRVs0KmkrMl09TCxFWzQqaSszXT0wfXZhciBDPUVbMV0sUD1FWzVdLE89RVs5XSx6PUVbMl0sST1FWzZdLEQ9RVsxMF0sUj1QKkQtTypJLEY9Typ6LUMqRCxCPUMqSS1QKnosTj1jKFIsRixCKTtSLz1OLEYvPU4sQi89TixFWzBdPVIsRVs0XT1GLEVbOF09Qjtmb3IoaT0wO2k8MzsrK2kpU1tpXT1iW2ldK0VbMis0KmldKnA7Zm9yKGk9MDtpPDM7KytpKXt1PTA7Zm9yKHZhciBqPTA7ajwzOysrail1Kz1FW2krNCpqXSpTW2pdO0VbMTIraV09LXV9RVsxNV09MX0scC5nZXRNYXRyaXg9ZnVuY3Rpb24odCxlKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgcj10aGlzLmNvbXB1dGVkTWF0cml4O2lmKGUpe2Zvcih2YXIgbj0wO248MTY7KytuKWVbbl09cltuXTtyZXR1cm4gZX1yZXR1cm4gcn07dmFyIGQ9WzAsMCwwXTtwLnJvdGF0ZT1mdW5jdGlvbih0LGUscixuKXtpZih0aGlzLmFuZ2xlLm1vdmUodCxlLHIpLG4pe3RoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBhPXRoaXMuY29tcHV0ZWRNYXRyaXg7ZFswXT1hWzJdLGRbMV09YVs2XSxkWzJdPWFbMTBdO2Zvcih2YXIgbz10aGlzLmNvbXB1dGVkVXAscz10aGlzLmNvbXB1dGVkUmlnaHQsbD10aGlzLmNvbXB1dGVkVG93YXJkLGM9MDtjPDM7KytjKWFbNCpjXT1vW2NdLGFbNCpjKzFdPXNbY10sYVs0KmMrMl09bFtjXTtpKGEsYSxuLGQpO2ZvcihjPTA7YzwzOysrYylvW2NdPWFbNCpjXSxzW2NdPWFbNCpjKzFdO3RoaXMudXAuc2V0KHQsb1swXSxvWzFdLG9bMl0pLHRoaXMucmlnaHQuc2V0KHQsc1swXSxzWzFdLHNbMl0pfX0scC5wYW49ZnVuY3Rpb24odCxlLHIsbil7ZT1lfHwwLHI9cnx8MCxuPW58fDAsdGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIGE9dGhpcy5jb21wdXRlZE1hdHJpeCxpPShNYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKSxhWzFdKSxvPWFbNV0scz1hWzldLGw9YyhpLG8scyk7aS89bCxvLz1sLHMvPWw7dmFyIHU9YVswXSxoPWFbNF0sZj1hWzhdLHA9dSppK2gqbytmKnMsZD1jKHUtPWkqcCxoLT1vKnAsZi09cypwKSxnPSh1Lz1kKSplK2kqcix2PShoLz1kKSplK28qcixtPShmLz1kKSplK3Mqcjt0aGlzLmNlbnRlci5tb3ZlKHQsZyx2LG0pO3ZhciB5PU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pO3k9TWF0aC5tYXgoMWUtNCx5K24pLHRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKHkpKX0scC50cmFuc2xhdGU9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5jZW50ZXIubW92ZSh0LGV8fDAscnx8MCxufHwwKX0scC5zZXRNYXRyaXg9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9MTsibnVtYmVyIj09dHlwZW9mIHImJihpPTB8ciksKGk8MHx8aT4zKSYmKGk9MSk7dmFyIG89KGkrMiklMztlfHwodGhpcy5yZWNhbGNNYXRyaXgodCksZT10aGlzLmNvbXB1dGVkTWF0cml4KTt2YXIgcz1lW2ldLGw9ZVtpKzRdLGg9ZVtpKzhdO2lmKG4pe3ZhciBmPU1hdGguYWJzKHMpLHA9TWF0aC5hYnMobCksZD1NYXRoLmFicyhoKSxnPU1hdGgubWF4KGYscCxkKTtmPT09Zz8ocz1zPDA/LTE6MSxsPWg9MCk6ZD09PWc/KGg9aDwwPy0xOjEscz1sPTApOihsPWw8MD8tMToxLHM9aD0wKX1lbHNle3ZhciB2PWMocyxsLGgpO3MvPXYsbC89dixoLz12fXZhciBtLHkseD1lW29dLGI9ZVtvKzRdLF89ZVtvKzhdLHc9eCpzK2IqbCtfKmgsaz1jKHgtPXMqdyxiLT1sKncsXy09aCp3KSxUPWwqKF8vPWspLWgqKGIvPWspLE09aCooeC89ayktcypfLEE9cypiLWwqeCxTPWMoVCxNLEEpO2lmKFQvPVMsTS89UyxBLz1TLHRoaXMuY2VudGVyLmp1bXAodCxILEcsWSksdGhpcy5yYWRpdXMuaWRsZSh0KSx0aGlzLnVwLmp1bXAodCxzLGwsaCksdGhpcy5yaWdodC5qdW1wKHQseCxiLF8pLDI9PT1pKXt2YXIgRT1lWzFdLEw9ZVs1XSxDPWVbOV0sUD1FKngrTCpiK0MqXyxPPUUqVCtMKk0rQypBO209UjwwPy1NYXRoLlBJLzI6TWF0aC5QSS8yLHk9TWF0aC5hdGFuMihPLFApfWVsc2V7dmFyIHo9ZVsyXSxJPWVbNl0sRD1lWzEwXSxSPXoqcytJKmwrRCpoLEY9eip4K0kqYitEKl8sQj16KlQrSSpNK0QqQTttPU1hdGguYXNpbih1KFIpKSx5PU1hdGguYXRhbjIoQixGKX10aGlzLmFuZ2xlLmp1bXAodCx5LG0pLHRoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBOPWVbMl0saj1lWzZdLFY9ZVsxMF0sVT10aGlzLmNvbXB1dGVkTWF0cml4O2EoVSxlKTt2YXIgcT1VWzE1XSxIPVVbMTJdL3EsRz1VWzEzXS9xLFk9VVsxNF0vcSxXPU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0pO3RoaXMuY2VudGVyLmp1bXAodCxILU4qVyxHLWoqVyxZLVYqVyl9LHAubGFzdFQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5jZW50ZXIubGFzdFQoKSx0aGlzLnVwLmxhc3RUKCksdGhpcy5yaWdodC5sYXN0VCgpLHRoaXMucmFkaXVzLmxhc3RUKCksdGhpcy5hbmdsZS5sYXN0VCgpKX0scC5pZGxlPWZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyLmlkbGUodCksdGhpcy51cC5pZGxlKHQpLHRoaXMucmlnaHQuaWRsZSh0KSx0aGlzLnJhZGl1cy5pZGxlKHQpLHRoaXMuYW5nbGUuaWRsZSh0KX0scC5mbHVzaD1mdW5jdGlvbih0KXt0aGlzLmNlbnRlci5mbHVzaCh0KSx0aGlzLnVwLmZsdXNoKHQpLHRoaXMucmlnaHQuZmx1c2godCksdGhpcy5yYWRpdXMuZmx1c2godCksdGhpcy5hbmdsZS5mbHVzaCh0KX0scC5zZXREaXN0YW5jZT1mdW5jdGlvbih0LGUpe2U+MCYmdGhpcy5yYWRpdXMuc2V0KHQsTWF0aC5sb2coZSkpfSxwLmxvb2tBdD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnJlY2FsY01hdHJpeCh0KSxlPWV8fHRoaXMuY29tcHV0ZWRFeWUscj1yfHx0aGlzLmNvbXB1dGVkQ2VudGVyO3ZhciBhPShuPW58fHRoaXMuY29tcHV0ZWRVcClbMF0saT1uWzFdLG89blsyXSxzPWMoYSxpLG8pO2lmKCEoczwxZS02KSl7YS89cyxpLz1zLG8vPXM7dmFyIGw9ZVswXS1yWzBdLGg9ZVsxXS1yWzFdLGY9ZVsyXS1yWzJdLHA9YyhsLGgsZik7aWYoIShwPDFlLTYpKXtsLz1wLGgvPXAsZi89cDt2YXIgZD10aGlzLmNvbXB1dGVkUmlnaHQsZz1kWzBdLHY9ZFsxXSxtPWRbMl0seT1hKmcraSp2K28qbSx4PWMoZy09eSphLHYtPXkqaSxtLT15Km8pO2lmKCEoeDwuMDEmJih4PWMoZz1pKmYtbypoLHY9bypsLWEqZixtPWEqaC1pKmwpKTwxZS02KSl7Zy89eCx2Lz14LG0vPXgsdGhpcy51cC5zZXQodCxhLGksbyksdGhpcy5yaWdodC5zZXQodCxnLHYsbSksdGhpcy5jZW50ZXIuc2V0KHQsclswXSxyWzFdLHJbMl0pLHRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKHApKTt2YXIgYj1pKm0tbyp2LF89bypnLWEqbSx3PWEqdi1pKmcsaz1jKGIsXyx3KSxUPWEqbCtpKmgrbypmLE09ZypsK3YqaCttKmYsQT0oYi89aykqbCsoXy89aykqaCsody89aykqZixTPU1hdGguYXNpbih1KFQpKSxFPU1hdGguYXRhbjIoQSxNKSxMPXRoaXMuYW5nbGUuX3N0YXRlLEM9TFtMLmxlbmd0aC0xXSxQPUxbTC5sZW5ndGgtMl07QyU9MipNYXRoLlBJO3ZhciBPPU1hdGguYWJzKEMrMipNYXRoLlBJLUUpLHo9TWF0aC5hYnMoQy1FKSxJPU1hdGguYWJzKEMtMipNYXRoLlBJLUUpO088eiYmKEMrPTIqTWF0aC5QSSksSTx6JiYoQy09MipNYXRoLlBJKSx0aGlzLmFuZ2xlLmp1bXAodGhpcy5hbmdsZS5sYXN0VCgpLEMsUCksdGhpcy5hbmdsZS5zZXQodCxFLFMpfX19fX0seyJmaWx0ZXJlZC12ZWN0b3IiOjIyOSwiZ2wtbWF0NC9pbnZlcnQiOjI2OCwiZ2wtbWF0NC9yb3RhdGUiOjI3MywiZ2wtdmVjMy9jcm9zcyI6MzM2LCJnbC12ZWMzL2RvdCI6MzQxLCJnbC12ZWMzL25vcm1hbGl6ZSI6MzU4fV0sNTQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGE9dCplLGk9bip0LG89aS0oaS10KSxzPXQtbyxsPW4qZSxjPWwtKGwtZSksdT1lLWMsaD1zKnUtKGEtbypjLXMqYy1vKnUpO2lmKHIpcmV0dXJuIHJbMF09aCxyWzFdPWEscjtyZXR1cm5baCxhXX07dmFyIG49KyhNYXRoLnBvdygyLDI3KSsxKX0se31dLDU0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQrZSxhPW4tdCxpPWUtYSxvPXQtKG4tYSk7aWYocilyZXR1cm4gclswXT1vK2ksclsxXT1uLHI7cmV0dXJuW28raSxuXX19LHt9XSw1NDQ6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSxuKXsidXNlIHN0cmljdCI7dmFyIGE9dCgiYml0LXR3aWRkbGUiKSxpPXQoImR1cCIpO2UuX19UWVBFREFSUkFZX1BPT0x8fChlLl9fVFlQRURBUlJBWV9QT09MPXtVSU5UODppKFszMiwwXSksVUlOVDE2OmkoWzMyLDBdKSxVSU5UMzI6aShbMzIsMF0pLElOVDg6aShbMzIsMF0pLElOVDE2OmkoWzMyLDBdKSxJTlQzMjppKFszMiwwXSksRkxPQVQ6aShbMzIsMF0pLERPVUJMRTppKFszMiwwXSksREFUQTppKFszMiwwXSksVUlOVDhDOmkoWzMyLDBdKSxCVUZGRVI6aShbMzIsMF0pfSk7dmFyIG89InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OENsYW1wZWRBcnJheSxzPWUuX19UWVBFREFSUkFZX1BPT0w7cy5VSU5UOEN8fChzLlVJTlQ4Qz1pKFszMiwwXSkpLHMuQlVGRkVSfHwocy5CVUZGRVI9aShbMzIsMF0pKTt2YXIgbD1zLkRBVEEsYz1zLkJVRkZFUjtmdW5jdGlvbiB1KHQpe2lmKHQpe3ZhciBlPXQubGVuZ3RofHx0LmJ5dGVMZW5ndGgscj1hLmxvZzIoZSk7bFtyXS5wdXNoKHQpfX1mdW5jdGlvbiBoKHQpe3Q9YS5uZXh0UG93Mih0KTt2YXIgZT1hLmxvZzIodCkscj1sW2VdO3JldHVybiByLmxlbmd0aD4wP3IucG9wKCk6bmV3IEFycmF5QnVmZmVyKHQpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGgodCksMCx0KX1mdW5jdGlvbiBwKHQpe3JldHVybiBuZXcgVWludDE2QXJyYXkoaCgyKnQpLDAsdCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGgoNCp0KSwwLHQpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIG5ldyBJbnQ4QXJyYXkoaCh0KSwwLHQpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIG5ldyBJbnQxNkFycmF5KGgoMip0KSwwLHQpfWZ1bmN0aW9uIG0odCl7cmV0dXJuIG5ldyBJbnQzMkFycmF5KGgoNCp0KSwwLHQpfWZ1bmN0aW9uIHkodCl7cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoaCg0KnQpLDAsdCl9ZnVuY3Rpb24geCh0KXtyZXR1cm4gbmV3IEZsb2F0NjRBcnJheShoKDgqdCksMCx0KX1mdW5jdGlvbiBiKHQpe3JldHVybiBvP25ldyBVaW50OENsYW1wZWRBcnJheShoKHQpLDAsdCk6Zih0KX1mdW5jdGlvbiBfKHQpe3JldHVybiBuZXcgRGF0YVZpZXcoaCh0KSwwLHQpfWZ1bmN0aW9uIHcodCl7dD1hLm5leHRQb3cyKHQpO3ZhciBlPWEubG9nMih0KSxyPWNbZV07cmV0dXJuIHIubGVuZ3RoPjA/ci5wb3AoKTpuZXcgbih0KX1yLmZyZWU9ZnVuY3Rpb24odCl7aWYobi5pc0J1ZmZlcih0KSljW2EubG9nMih0Lmxlbmd0aCldLnB1c2godCk7ZWxzZXtpZigiW29iamVjdCBBcnJheUJ1ZmZlcl0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpJiYodD10LmJ1ZmZlciksIXQpcmV0dXJuO3ZhciBlPXQubGVuZ3RofHx0LmJ5dGVMZW5ndGgscj0wfGEubG9nMihlKTtsW3JdLnB1c2godCl9fSxyLmZyZWVVaW50OD1yLmZyZWVVaW50MTY9ci5mcmVlVWludDMyPXIuZnJlZUludDg9ci5mcmVlSW50MTY9ci5mcmVlSW50MzI9ci5mcmVlRmxvYXQzMj1yLmZyZWVGbG9hdD1yLmZyZWVGbG9hdDY0PXIuZnJlZURvdWJsZT1yLmZyZWVVaW50OENsYW1wZWQ9ci5mcmVlRGF0YVZpZXc9ZnVuY3Rpb24odCl7dSh0LmJ1ZmZlcil9LHIuZnJlZUFycmF5QnVmZmVyPXUsci5mcmVlQnVmZmVyPWZ1bmN0aW9uKHQpe2NbYS5sb2cyKHQubGVuZ3RoKV0ucHVzaCh0KX0sci5tYWxsb2M9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1lfHwiYXJyYXlidWZmZXIiPT09ZSlyZXR1cm4gaCh0KTtzd2l0Y2goZSl7Y2FzZSJ1aW50OCI6cmV0dXJuIGYodCk7Y2FzZSJ1aW50MTYiOnJldHVybiBwKHQpO2Nhc2UidWludDMyIjpyZXR1cm4gZCh0KTtjYXNlImludDgiOnJldHVybiBnKHQpO2Nhc2UiaW50MTYiOnJldHVybiB2KHQpO2Nhc2UiaW50MzIiOnJldHVybiBtKHQpO2Nhc2UiZmxvYXQiOmNhc2UiZmxvYXQzMiI6cmV0dXJuIHkodCk7Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQ2NCI6cmV0dXJuIHgodCk7Y2FzZSJ1aW50OF9jbGFtcGVkIjpyZXR1cm4gYih0KTtjYXNlImJ1ZmZlciI6cmV0dXJuIHcodCk7Y2FzZSJkYXRhIjpjYXNlImRhdGF2aWV3IjpyZXR1cm4gXyh0KTtkZWZhdWx0OnJldHVybiBudWxsfXJldHVybiBudWxsfSxyLm1hbGxvY0FycmF5QnVmZmVyPWgsci5tYWxsb2NVaW50OD1mLHIubWFsbG9jVWludDE2PXAsci5tYWxsb2NVaW50MzI9ZCxyLm1hbGxvY0ludDg9ZyxyLm1hbGxvY0ludDE2PXYsci5tYWxsb2NJbnQzMj1tLHIubWFsbG9jRmxvYXQzMj1yLm1hbGxvY0Zsb2F0PXksci5tYWxsb2NGbG9hdDY0PXIubWFsbG9jRG91YmxlPXgsci5tYWxsb2NVaW50OENsYW1wZWQ9YixyLm1hbGxvY0RhdGFWaWV3PV8sci5tYWxsb2NCdWZmZXI9dyxyLmNsZWFyQ2FjaGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDMyOysrdClzLlVJTlQ4W3RdLmxlbmd0aD0wLHMuVUlOVDE2W3RdLmxlbmd0aD0wLHMuVUlOVDMyW3RdLmxlbmd0aD0wLHMuSU5UOFt0XS5sZW5ndGg9MCxzLklOVDE2W3RdLmxlbmd0aD0wLHMuSU5UMzJbdF0ubGVuZ3RoPTAscy5GTE9BVFt0XS5sZW5ndGg9MCxzLkRPVUJMRVt0XS5sZW5ndGg9MCxzLlVJTlQ4Q1t0XS5sZW5ndGg9MCxsW3RdLmxlbmd0aD0wLGNbdF0ubGVuZ3RoPTB9fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sdCgiYnVmZmVyIikuQnVmZmVyKX0seyJiaXQtdHdpZGRsZSI6OTQsYnVmZmVyOjEwNyxkdXA6MTcyfV0sNTQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dGhpcy5yb290cz1uZXcgQXJyYXkodCksdGhpcy5yYW5rcz1uZXcgQXJyYXkodCk7Zm9yKHZhciBlPTA7ZTx0OysrZSl0aGlzLnJvb3RzW2VdPWUsdGhpcy5yYW5rc1tlXT0wfWUuZXhwb3J0cz1uO3ZhciBhPW4ucHJvdG90eXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290cy5sZW5ndGh9fSksYS5tYWtlU2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yb290cy5sZW5ndGg7cmV0dXJuIHRoaXMucm9vdHMucHVzaCh0KSx0aGlzLnJhbmtzLnB1c2goMCksdH0sYS5maW5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LHI9dGhpcy5yb290cztyW3RdIT09dDspdD1yW3RdO2Zvcig7cltlXSE9PXQ7KXt2YXIgbj1yW2VdO3JbZV09dCxlPW59cmV0dXJuIHR9LGEubGluaz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuZmluZCh0KSxuPXRoaXMuZmluZChlKTtpZihyIT09bil7dmFyIGE9dGhpcy5yYW5rcyxpPXRoaXMucm9vdHMsbz1hW3JdLHM9YVtuXTtvPHM/aVtyXT1uOnM8bz9pW25dPXI6KGlbbl09ciwrK2Fbcl0pfX19LHt9XSw1NDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMD09PXQubGVuZ3RoP3Q6ZT8ocnx8dC5zb3J0KGUpLGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTEsbj10Lmxlbmd0aCxhPXRbMF0saT10WzBdLG89MTtvPG47KytvKWlmKGk9YSxlKGE9dFtvXSxpKSl7aWYobz09PXIpe3IrKztjb250aW51ZX10W3IrK109YX1yZXR1cm4gdC5sZW5ndGg9cix0fSh0LGUpKToocnx8dC5zb3J0KCksZnVuY3Rpb24odCl7Zm9yKHZhciBlPTEscj10Lmxlbmd0aCxuPXRbMF0sYT10WzBdLGk9MTtpPHI7KytpLGE9bilpZihhPW4sKG49dFtpXSkhPT1hKXtpZihpPT09ZSl7ZSsrO2NvbnRpbnVlfXRbZSsrXT1ufXJldHVybiB0Lmxlbmd0aD1lLHR9KHQpKX19LHt9XSw1NDc6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj0vW1wnXCJdLztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/KG4udGVzdCh0LmNoYXJBdCgwKSkmJih0PXQuc3Vic3RyKDEpKSxuLnRlc3QodC5jaGFyQXQodC5sZW5ndGgtMSkpJiYodD10LnN1YnN0cigwLHQubGVuZ3RoLTEpKSx0KToiIn19LHt9XSw1NDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtBcnJheS5pc0FycmF5KHIpfHwocj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7Zm9yKHZhciBuPTAsYT1yLmxlbmd0aDtuPGE7bisrKXt2YXIgaT1yW25dO2Zvcih2YXIgbyBpbiBpKWlmKCh2b2lkIDA9PT1lW29dfHxBcnJheS5pc0FycmF5KGVbb10pfHx0W29dIT09ZVtvXSkmJm8gaW4gZSl7dmFyIHM7aWYoITA9PT1pW29dKXM9ZVtvXTtlbHNle2lmKCExPT09aVtvXSljb250aW51ZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgaVtvXSYmdm9pZCAwPT09KHM9aVtvXShlW29dLHQsZSkpKWNvbnRpbnVlfXRbb109c319cmV0dXJuIHR9fSx7fV0sNTQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpeyJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fChlPXt9KTtyZXR1cm4gbih0LGUuY2FudmFzfHxhLGUuY29udGV4dHx8aSxlKX07dmFyIG49dCgiLi9saWIvdnRleHQiKSxhPW51bGwsaT1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigoYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkud2lkdGg9ODE5MixhLmhlaWdodD0xMDI0LGk9YS5nZXRDb250ZXh0KCIyZCIpKX0seyIuL2xpYi92dGV4dCI6NTUwfV0sNTUwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPTY0LG89MS4yNSxzPXticmVha2xpbmVzOiExLGJvbGRzOiExLGl0YWxpY3M6ITEsc3Vic2NyaXB0czohMSxzdXBlcnNjcmlwdHM6ITF9O24mJihuLnNpemUmJm4uc2l6ZT4wJiYoaT1uLnNpemUpLG4ubGluZVNwYWNpbmcmJm4ubGluZVNwYWNpbmc+MCYmKG89bi5saW5lU3BhY2luZyksbi5zdHlsZXRhZ3MmJm4uc3R5bGV0YWdzLmJyZWFrbGluZXMmJihzLmJyZWFrbGluZXM9ISFuLnN0eWxldGFncy5icmVha2xpbmVzKSxuLnN0eWxldGFncyYmbi5zdHlsZXRhZ3MuYm9sZHMmJihzLmJvbGRzPSEhbi5zdHlsZXRhZ3MuYm9sZHMpLG4uc3R5bGV0YWdzJiZuLnN0eWxldGFncy5pdGFsaWNzJiYocy5pdGFsaWNzPSEhbi5zdHlsZXRhZ3MuaXRhbGljcyksbi5zdHlsZXRhZ3MmJm4uc3R5bGV0YWdzLnN1YnNjcmlwdHMmJihzLnN1YnNjcmlwdHM9ISFuLnN0eWxldGFncy5zdWJzY3JpcHRzKSxuLnN0eWxldGFncyYmbi5zdHlsZXRhZ3Muc3VwZXJzY3JpcHRzJiYocy5zdXBlcnNjcmlwdHM9ISFuLnN0eWxldGFncy5zdXBlcnNjcmlwdHMpKTtyZXR1cm4gci5mb250PVtuLmZvbnRTdHlsZSxuLmZvbnRWYXJpYW50LG4uZm9udFdlaWdodCxpKyJweCIsbi5mb250XS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHR9KS5qb2luKCIgIiksci50ZXh0QWxpZ249InN0YXJ0IixyLnRleHRCYXNlbGluZT0iYWxwaGFiZXRpYyIsci5kaXJlY3Rpb249Imx0ciIsdyhmdW5jdGlvbih0LGUscixuLGksbyl7cj1yLnJlcGxhY2UoL1xuL2csIiIpLHI9ITA9PT1vLmJyZWFrbGluZXM/ci5yZXBsYWNlKC9cPGJyXD4vZywiXG4iKTpyLnJlcGxhY2UoL1w8YnJcPi9nLCIgIik7dmFyIHM9IiIsbD1bXTtmb3Ioaz0wO2s8ci5sZW5ndGg7KytrKWxba109czshMD09PW8uYm9sZHMmJihsPXgoYyx1LHIsbCkpLCEwPT09by5pdGFsaWNzJiYobD14KGgsZixyLGwpKSwhMD09PW8uc3VwZXJzY3JpcHRzJiYobD14KHAsZyxyLGwpKSwhMD09PW8uc3Vic2NyaXB0cyYmKGw9eCh2LHkscixsKSk7dmFyIGI9W10sXz0iIjtmb3Ioaz0wO2s8ci5sZW5ndGg7KytrKW51bGwhPT1sW2tdJiYoXys9cltrXSxiLnB1c2gobFtrXSkpO3ZhciB3LGssVCxNLEEsUz1fLnNwbGl0KCJcbiIpLEU9Uy5sZW5ndGgsTD1NYXRoLnJvdW5kKGkqbiksQz1uLFA9MipuLE89MCx6PUUqTCtQO3QuaGVpZ2h0PHomJih0LmhlaWdodD16KSxlLmZpbGxTdHlsZT0iIzAwMCIsZS5maWxsUmVjdCgwLDAsdC53aWR0aCx0LmhlaWdodCksZS5maWxsU3R5bGU9IiNmZmYiO3ZhciBJPTAsRD0iIjtmdW5jdGlvbiBSKCl7aWYoIiIhPT1EKXt2YXIgdD1lLm1lYXN1cmVUZXh0KEQpLndpZHRoO2UuZmlsbFRleHQoRCxDK1QsUCtNKSxUKz10fX1mdW5jdGlvbiBGKCl7cmV0dXJuIE1hdGgucm91bmQoQSkrInB4ICJ9ZnVuY3Rpb24gQih0LHIpe3ZhciBuPSIiK2UuZm9udDtpZighMD09PW8uc3Vic2NyaXB0cyl7dmFyIGE9dC5pbmRleE9mKG0pLGk9ci5pbmRleE9mKG0pLHM9YT4tMT9wYXJzZUludCh0WzErYV0pOjAsbD1pPi0xP3BhcnNlSW50KHJbMStpXSk6MDtzIT09bCYmKG49bi5yZXBsYWNlKEYoKSwiP3B4ICIpLEEqPU1hdGgucG93KC43NSxsLXMpLG49bi5yZXBsYWNlKCI/cHggIixGKCkpKSxNKz0uMjUqTCoobC1zKX1pZighMD09PW8uc3VwZXJzY3JpcHRzKXt2YXIgYz10LmluZGV4T2YoZCksaD1yLmluZGV4T2YoZCkscD1jPi0xP3BhcnNlSW50KHRbMStjXSk6MCxnPWg+LTE/cGFyc2VJbnQoclsxK2hdKTowO3AhPT1nJiYobj1uLnJlcGxhY2UoRigpLCI/cHggIiksQSo9TWF0aC5wb3coLjc1LGctcCksbj1uLnJlcGxhY2UoIj9weCAiLEYoKSkpLE0tPS4yNSpMKihnLXApfWlmKCEwPT09by5ib2xkcyl7dmFyIHY9dC5pbmRleE9mKHUpPi0xLHk9ci5pbmRleE9mKHUpPi0xOyF2JiZ5JiYobj14P24ucmVwbGFjZSgiaXRhbGljICIsIml0YWxpYyBib2xkICIpOiJib2xkICIrbiksdiYmIXkmJihuPW4ucmVwbGFjZSgiYm9sZCAiLCIiKSl9aWYoITA9PT1vLml0YWxpY3Mpe3ZhciB4PXQuaW5kZXhPZihmKT4tMSxiPXIuaW5kZXhPZihmKT4tMTsheCYmYiYmKG49Iml0YWxpYyAiK24pLHgmJiFiJiYobj1uLnJlcGxhY2UoIml0YWxpYyAiLCIiKSl9ZS5mb250PW59Zm9yKHc9MDt3PEU7Kyt3KXt2YXIgTj1TW3ddKyJcbiI7Zm9yKFQ9MCxNPXcqTCxBPW4sRD0iIixrPTA7azxOLmxlbmd0aDsrK2spe3ZhciBqPWsrSTxiLmxlbmd0aD9iW2srSV06YltiLmxlbmd0aC0xXTtzPT09aj9EKz1OW2tdOihSKCksRD1OW2tdLHZvaWQgMCE9PWomJihCKHMsaikscz1qKSl9UigpLEkrPU4ubGVuZ3RoO3ZhciBWPTB8TWF0aC5yb3VuZChUKzIqQyk7TzxWJiYoTz1WKX12YXIgVT1PLHE9UCtMKkU7cmV0dXJuIGEoZS5nZXRJbWFnZURhdGEoMCwwLFUscSkuZGF0YSxbcSxVLDRdKS5waWNrKC0xLC0xLDApLnRyYW5zcG9zZSgxLDApfShlLHIsdCxpLG8scyksbixpKX0sZS5leHBvcnRzLnByb2Nlc3NQaXhlbHM9dzt2YXIgbj10KCJzdXJmYWNlLW5ldHMiKSxhPXQoIm5kYXJyYXkiKSxpPXQoInNpbXBsaWZ5LXBsYW5hci1ncmFwaCIpLG89dCgiY2xlYW4tcHNsZyIpLHM9dCgiY2R0MmQiKSxsPXQoInBsYW5hci1ncmFwaC10by1wb2x5bGluZSIpLGM9ImIiLHU9ImJ8IixoPSJpIixmPSJpfCIscD0ic3VwIixkPSIrIixnPSIrMSIsdj0ic3ViIixtPSItIix5PSItMSI7ZnVuY3Rpb24geCh0LGUscixuKXtmb3IodmFyIGE9IjwiK3QrIj4iLGk9IjwvIit0KyI+IixvPWEubGVuZ3RoLHM9aS5sZW5ndGgsbD1lWzBdPT09ZHx8ZVswXT09PW0sYz0wLHU9LXM7Yz4tMSYmLTEhPT0oYz1yLmluZGV4T2YoYSxjKSkmJi0xIT09KHU9ci5pbmRleE9mKGksYytvKSkmJiEodTw9Yyk7KXtmb3IodmFyIGg9YztoPHUrczsrK2gpaWYoaDxjK298fGg+PXUpbltoXT1udWxsLHI9ci5zdWJzdHIoMCxoKSsiICIrci5zdWJzdHIoaCsxKTtlbHNlIGlmKG51bGwhPT1uW2hdKXt2YXIgZj1uW2hdLmluZGV4T2YoZVswXSk7LTE9PT1mP25baF0rPWU6bCYmKG5baF09bltoXS5zdWJzdHIoMCxmKzEpKygxK3BhcnNlSW50KG5baF1bZisxXSkpK25baF0uc3Vic3RyKGYrMikpfXZhciBwPWMrbyxnPXIuc3Vic3RyKHAsdS1wKS5pbmRleE9mKGEpO2M9LTEhPT1nP2c6dStzfXJldHVybiBufWZ1bmN0aW9uIGIodCxlKXt2YXIgcj1uKHQsMTI4KTtyZXR1cm4gZT9pKHIuY2VsbHMsci5wb3NpdGlvbnMsLjI1KTp7ZWRnZXM6ci5jZWxscyxwb3NpdGlvbnM6ci5wb3NpdGlvbnN9fWZ1bmN0aW9uIF8odCxlLHIsbil7dmFyIGE9Yih0LG4pLGk9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1lLnRleHRBbGlnbnx8InN0YXJ0IixhPWUudGV4dEJhc2VsaW5lfHwiYWxwaGFiZXRpYyIsaT1bMTw8MzAsMTw8MzBdLG89WzAsMF0scz10Lmxlbmd0aCxsPTA7bDxzOysrbClmb3IodmFyIGM9dFtsXSx1PTA7dTwyOysrdSlpW3VdPTB8TWF0aC5taW4oaVt1XSxjW3VdKSxvW3VdPTB8TWF0aC5tYXgob1t1XSxjW3VdKTt2YXIgaD0wO3N3aXRjaChuKXtjYXNlImNlbnRlciI6aD0tLjUqKGlbMF0rb1swXSk7YnJlYWs7Y2FzZSJyaWdodCI6Y2FzZSJlbmQiOmg9LW9bMF07YnJlYWs7Y2FzZSJsZWZ0IjpjYXNlInN0YXJ0IjpoPS1pWzBdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ2ZWN0b3JpemUtdGV4dDogVW5yZWNvZ25pemVkIHRleHRBbGlnbjogJyIrbisiJyIpfXZhciBmPTA7c3dpdGNoKGEpe2Nhc2UiaGFuZ2luZyI6Y2FzZSJ0b3AiOmY9LWlbMV07YnJlYWs7Y2FzZSJtaWRkbGUiOmY9LS41KihpWzFdK29bMV0pO2JyZWFrO2Nhc2UiYWxwaGFiZXRpYyI6Y2FzZSJpZGVvZ3JhcGhpYyI6Zj0tMypyO2JyZWFrO2Nhc2UiYm90dG9tIjpmPS1vWzFdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ2ZWN0b3JpemUtdGV4dDogVW5yZWNvZ2luaXplZCB0ZXh0QmFzZWxpbmU6ICciK2ErIiciKX12YXIgcD0xL3I7cmV0dXJuImxpbmVIZWlnaHQiaW4gZT9wKj0rZS5saW5lSGVpZ2h0OiJ3aWR0aCJpbiBlP3A9ZS53aWR0aC8ob1swXS1pWzBdKToiaGVpZ2h0ImluIGUmJihwPWUuaGVpZ2h0LyhvWzFdLWlbMV0pKSx0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm5bcCoodFswXStoKSxwKih0WzFdK2YpXX0pfShhLnBvc2l0aW9ucyxlLHIpLGM9YS5lZGdlcyx1PSJjY3ciPT09ZS5vcmllbnRhdGlvbjtpZihvKGksYyksZS5wb2x5Z29uc3x8ZS5wb2x5Z29ufHxlLnBvbHlsaW5lKXtmb3IodmFyIGg9bChjLGkpLGY9bmV3IEFycmF5KGgubGVuZ3RoKSxwPTA7cDxoLmxlbmd0aDsrK3Ape2Zvcih2YXIgZD1oW3BdLGc9bmV3IEFycmF5KGQubGVuZ3RoKSx2PTA7djxkLmxlbmd0aDsrK3Ype2Zvcih2YXIgbT1kW3ZdLHk9bmV3IEFycmF5KG0ubGVuZ3RoKSx4PTA7eDxtLmxlbmd0aDsrK3gpeVt4XT1pW21beF1dLnNsaWNlKCk7dSYmeS5yZXZlcnNlKCksZ1t2XT15fWZbcF09Z31yZXR1cm4gZn1yZXR1cm4gZS50cmlhbmdsZXN8fGUudHJpYW5ndWxhdGV8fGUudHJpYW5nbGU/e2NlbGxzOnMoaSxjLHtkZWxhdW5heTohMSxleHRlcmlvcjohMSxpbnRlcmlvcjohMH0pLHBvc2l0aW9uczppfTp7ZWRnZXM6Yyxwb3NpdGlvbnM6aX19ZnVuY3Rpb24gdyh0LGUscil7dHJ5e3JldHVybiBfKHQsZSxyLCEwKX1jYXRjaCh0KXt9dHJ5e3JldHVybiBfKHQsZSxyLCExKX1jYXRjaCh0KXt9cmV0dXJuIGUucG9seWdvbnN8fGUucG9seWxpbmV8fGUucG9seWdvbj9bXTplLnRyaWFuZ2xlc3x8ZS50cmlhbmd1bGF0ZXx8ZS50cmlhbmdsZT97Y2VsbHM6W10scG9zaXRpb25zOltdfTp7ZWRnZXM6W10scG9zaXRpb25zOltdfX19LHtjZHQyZDoxMDgsImNsZWFuLXBzbGciOjExOCxuZGFycmF5OjQ1MiwicGxhbmFyLWdyYXBoLXRvLXBvbHlsaW5lIjo0NzAsInNpbXBsaWZ5LXBsYW5hci1ncmFwaCI6NTIzLCJzdXJmYWNlLW5ldHMiOjUzMH1dLDU1MTpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtpZigidW5kZWZpbmVkIj09dHlwZW9mIHNlc3x8IXNlcy5va3x8c2VzLm9rKCkpeyJ1bmRlZmluZWQiIT10eXBlb2Ygc2VzJiYoc2VzLndlYWtNYXBQZXJtaXRIb3N0T2JqZWN0cz12KTt2YXIgdD0hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgV2Vha01hcCl7dmFyIHI9V2Vha01hcDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmL0ZpcmVmb3gvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpO2Vsc2V7dmFyIG49bmV3IHIsYT1PYmplY3QuZnJlZXplKHt9KTtpZihuLnNldChhLDEpLDE9PT1uLmdldChhKSlyZXR1cm4gdm9pZChlLmV4cG9ydHM9V2Vha01hcCk7dD0hMH19T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxzPU9iamVjdC5pc0V4dGVuc2libGUsbD0id2Vha21hcDoiLGM9bCsiaWRlbnQ6IitNYXRoLnJhbmRvbSgpKyJfX18iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvJiYiZnVuY3Rpb24iPT10eXBlb2YgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheSl7dmFyIHU9bmV3IEFycmF5QnVmZmVyKDI1KSxoPW5ldyBVaW50OEFycmF5KHUpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoaCksYz1sKyJyYW5kOiIrQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGgsZnVuY3Rpb24odCl7cmV0dXJuKHQlMzYpLnRvU3RyaW5nKDM2KX0pLmpvaW4oIiIpKyJfX18ifWlmKG8oT2JqZWN0LCJnZXRPd25Qcm9wZXJ0eU5hbWVzIix7dmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkuZmlsdGVyKG0pfX0pLCJnZXRQcm9wZXJ0eU5hbWVzImluIE9iamVjdCl7dmFyIGY9T2JqZWN0LmdldFByb3BlcnR5TmFtZXM7byhPYmplY3QsImdldFByb3BlcnR5TmFtZXMiLHt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZih0KS5maWx0ZXIobSl9fSl9IWZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LmZyZWV6ZTtvKE9iamVjdCwiZnJlZXplIix7dmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHkoZSksdChlKX19KTt2YXIgZT1PYmplY3Quc2VhbDtvKE9iamVjdCwic2VhbCIse3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB5KHQpLGUodCl9fSk7dmFyIHI9T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO28oT2JqZWN0LCJwcmV2ZW50RXh0ZW5zaW9ucyIse3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB5KHQpLHIodCl9fSl9KCk7dmFyIHA9ITEsZD0wLGc9ZnVuY3Rpb24oKXt0aGlzIGluc3RhbmNlb2YgZ3x8YigpO3ZhciB0PVtdLGU9W10scj1kKys7cmV0dXJuIE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUse2dldF9fXzp7dmFsdWU6eChmdW5jdGlvbihuLGEpe3ZhciBpLG89eShuKTtyZXR1cm4gbz9yIGluIG8/b1tyXTphOihpPXQuaW5kZXhPZihuKSk+PTA/ZVtpXTphfSl9LGhhc19fXzp7dmFsdWU6eChmdW5jdGlvbihlKXt2YXIgbj15KGUpO3JldHVybiBuP3IgaW4gbjp0LmluZGV4T2YoZSk+PTB9KX0sc2V0X19fOnt2YWx1ZTp4KGZ1bmN0aW9uKG4sYSl7dmFyIGksbz15KG4pO3JldHVybiBvP29bcl09YTooaT10LmluZGV4T2YobikpPj0wP2VbaV09YTooaT10Lmxlbmd0aCxlW2ldPWEsdFtpXT1uKSx0aGlzfSl9LGRlbGV0ZV9fXzp7dmFsdWU6eChmdW5jdGlvbihuKXt2YXIgYSxpLG89eShuKTtyZXR1cm4gbz9yIGluIG8mJmRlbGV0ZSBvW3JdOiEoKGE9dC5pbmRleE9mKG4pKTwwfHwoaT10Lmxlbmd0aC0xLHRbYV09dm9pZCAwLGVbYV09ZVtpXSx0W2FdPXRbaV0sdC5sZW5ndGg9aSxlLmxlbmd0aD1pLDApKX0pfX0pfTtnLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUse2dldDp7dmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5nZXRfX18odCxlKX0sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxoYXM6e3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc19fXyh0KX0sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxzZXQ6e3ZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0X19fKHQsZSl9LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sZGVsZXRlOnt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWxldGVfX18odCl9LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSwiZnVuY3Rpb24iPT10eXBlb2Ygcj9mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt0aGlzIGluc3RhbmNlb2YgZ3x8YigpO3ZhciBlLG49bmV3IHIsYT12b2lkIDAsaT0hMTtyZXR1cm4gZT10P2Z1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2V0KHQsZSksbi5oYXModCl8fChhfHwoYT1uZXcgZyksYS5zZXQodCxlKSksdGhpc306ZnVuY3Rpb24odCxlKXtpZihpKXRyeXtuLnNldCh0LGUpfWNhdGNoKHIpe2F8fChhPW5ldyBnKSxhLnNldF9fXyh0LGUpfWVsc2Ugbi5zZXQodCxlKTtyZXR1cm4gdGhpc30sT2JqZWN0LmNyZWF0ZShnLnByb3RvdHlwZSx7Z2V0X19fOnt2YWx1ZTp4KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGE/bi5oYXModCk/bi5nZXQodCk6YS5nZXRfX18odCxlKTpuLmdldCh0LGUpfSl9LGhhc19fXzp7dmFsdWU6eChmdW5jdGlvbih0KXtyZXR1cm4gbi5oYXModCl8fCEhYSYmYS5oYXNfX18odCl9KX0sc2V0X19fOnt2YWx1ZTp4KGUpfSxkZWxldGVfX186e3ZhbHVlOngoZnVuY3Rpb24odCl7dmFyIGU9ISFuLmRlbGV0ZSh0KTtyZXR1cm4gYSYmYS5kZWxldGVfX18odCl8fGV9KX0scGVybWl0SG9zdE9iamVjdHNfX186e3ZhbHVlOngoZnVuY3Rpb24odCl7aWYodCE9PXYpdGhyb3cgbmV3IEVycm9yKCJib2d1cyBjYWxsIHRvIHBlcm1pdEhvc3RPYmplY3RzX19fIik7aT0hMH0pfX0pfXQmJiJ1bmRlZmluZWQiIT10eXBlb2YgUHJveHkmJihQcm94eT12b2lkIDApLG4ucHJvdG90eXBlPWcucHJvdG90eXBlLGUuZXhwb3J0cz1uLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWFrTWFwLnByb3RvdHlwZSwiY29uc3RydWN0b3IiLHt2YWx1ZTpXZWFrTWFwLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9KCk6KCJ1bmRlZmluZWQiIT10eXBlb2YgUHJveHkmJihQcm94eT12b2lkIDApLGUuZXhwb3J0cz1nKX1mdW5jdGlvbiB2KHQpe3QucGVybWl0SG9zdE9iamVjdHNfX18mJnQucGVybWl0SG9zdE9iamVjdHNfX18odil9ZnVuY3Rpb24gbSh0KXtyZXR1cm4hKHQuc3Vic3RyKDAsbC5sZW5ndGgpPT1sJiYiX19fIj09PXQuc3Vic3RyKHQubGVuZ3RoLTMpKX1mdW5jdGlvbiB5KHQpe2lmKHQhPT1PYmplY3QodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiTm90IGFuIG9iamVjdDogIit0KTt2YXIgZT10W2NdO2lmKGUmJmUua2V5PT09dClyZXR1cm4gZTtpZihzKHQpKXtlPXtrZXk6dH07dHJ5e3JldHVybiBvKHQsYyx7dmFsdWU6ZSx3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMX0pLGV9Y2F0Y2godCl7cmV0dXJufX19ZnVuY3Rpb24geCh0KXtyZXR1cm4gdC5wcm90b3R5cGU9bnVsbCxPYmplY3QuZnJlZXplKHQpfWZ1bmN0aW9uIGIoKXtwfHwidW5kZWZpbmVkIj09dHlwZW9mIGNvbnNvbGV8fChwPSEwLGNvbnNvbGUud2FybigiV2Vha01hcCBzaG91bGQgYmUgaW52b2tlZCBhcyBuZXcgV2Vha01hcCgpLCBub3QgV2Vha01hcCgpLiBUaGlzIHdpbGwgYmUgYW4gZXJyb3IgaW4gdGhlIGZ1dHVyZS4iKSl9fSgpfSx7fV0sNTUyOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9oaWRkZW4tc3RvcmUuanMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIldlYWttYXAtc2hpbTogS2V5IG11c3QgYmUgb2JqZWN0Iik7dmFyIHI9ZS52YWx1ZU9mKHQpO3JldHVybiByJiZyLmlkZW50aXR5PT09dD9yOm4oZSx0KX19fSx7Ii4vaGlkZGVuLXN0b3JlLmpzIjo1NTN9XSw1NTM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj17aWRlbnRpdHk6ZX0sbj10LnZhbHVlT2Y7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ2YWx1ZU9mIix7dmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOnJ9LHdyaXRhYmxlOiEwfSkscn19LHt9XSw1NTQ6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuL2NyZWF0ZS1zdG9yZS5qcyIpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0PW4oKTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUscil7dmFyIG49dChlKTtyZXR1cm4gbi5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKT9uLnZhbHVlOnJ9LHNldDpmdW5jdGlvbihlLHIpe3JldHVybiB0KGUpLnZhbHVlPXIsdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiJ2YWx1ZSJpbiB0KGUpfSxkZWxldGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGRlbGV0ZSB0KGUpLnZhbHVlfX19fSx7Ii4vY3JlYXRlLXN0b3JlLmpzIjo1NTJ9XSw1NTU6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnZXQtY2FudmFzLWNvbnRleHQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4oIndlYmdsIix0KX19LHsiZ2V0LWNhbnZhcy1jb250ZXh0IjoyMzV9XSw1NTY6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIiksaT1uLmluc3RhbmNlKCk7ZnVuY3Rpb24gbyh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfW8ucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixhKG8ucHJvdG90eXBlLHtuYW1lOiJDaGluZXNlIixqZEVwb2NoOjE3MjE0MjUuNSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDowLGZpcnN0TW9udGg6MCxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJDaGluZXNlIixlcG9jaHM6WyJCRUMiLCJFQyJdLG1vbnRoTnVtYmVyczpmdW5jdGlvbih0LGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIHI9dC5tYXRjaChsKTtyZXR1cm4gcj9yWzBdOiIifXZhciBuPXRoaXMuX3ZhbGlkYXRlWWVhcih0KSxhPXQubW9udGgoKSxpPSIiK3RoaXMudG9DaGluZXNlTW9udGgobixhKTtyZXR1cm4gZSYmaS5sZW5ndGg8MiYmKGk9IjAiK2kpLHRoaXMuaXNJbnRlcmNhbGFyeU1vbnRoKG4sYSkmJihpKz0iaSIpLGl9LG1vbnRoTmFtZXM6ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgZT10Lm1hdGNoKGMpO3JldHVybiBlP2VbMF06IiJ9dmFyIHI9dGhpcy5fdmFsaWRhdGVZZWFyKHQpLG49dC5tb250aCgpLGE9WyJcdTRlMDBcdTY3MDgiLCJcdTRlOGNcdTY3MDgiLCJcdTRlMDlcdTY3MDgiLCJcdTU2ZGJcdTY3MDgiLCJcdTRlOTRcdTY3MDgiLCJcdTUxNmRcdTY3MDgiLCJcdTRlMDNcdTY3MDgiLCJcdTUxNmJcdTY3MDgiLCJcdTRlNWRcdTY3MDgiLCJcdTUzNDFcdTY3MDgiLCJcdTUzNDFcdTRlMDBcdTY3MDgiLCJcdTUzNDFcdTRlOGNcdTY3MDgiXVt0aGlzLnRvQ2hpbmVzZU1vbnRoKHIsbiktMV07cmV0dXJuIHRoaXMuaXNJbnRlcmNhbGFyeU1vbnRoKHIsbikmJihhPSJcdTk1ZjAiK2EpLGF9LG1vbnRoTmFtZXNTaG9ydDpmdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPXQubWF0Y2godSk7cmV0dXJuIGU/ZVswXToiIn12YXIgcj10aGlzLl92YWxpZGF0ZVllYXIodCksbj10Lm1vbnRoKCksYT1bIlx1NGUwMCIsIlx1NGU4YyIsIlx1NGUwOSIsIlx1NTZkYiIsIlx1NGU5NCIsIlx1NTE2ZCIsIlx1NGUwMyIsIlx1NTE2YiIsIlx1NGU1ZCIsIlx1NTM0MSIsIlx1NTM0MVx1NGUwMCIsIlx1NTM0MVx1NGU4YyJdW3RoaXMudG9DaGluZXNlTW9udGgocixuKS0xXTtyZXR1cm4gdGhpcy5pc0ludGVyY2FsYXJ5TW9udGgocixuKSYmKGE9Ilx1OTVmMCIrYSksYX0scGFyc2VNb250aDpmdW5jdGlvbih0LGUpe3Q9dGhpcy5fdmFsaWRhdGVZZWFyKHQpO3ZhciByLG49cGFyc2VJbnQoZSk7aWYoaXNOYU4obikpIlx1OTVmMCI9PT1lWzBdJiYocj0hMCxlPWUuc3Vic3RyaW5nKDEpKSwiXHU2NzA4Ij09PWVbZS5sZW5ndGgtMV0mJihlPWUuc3Vic3RyaW5nKDAsZS5sZW5ndGgtMSkpLG49MStbIlx1NGUwMCIsIlx1NGU4YyIsIlx1NGUwOSIsIlx1NTZkYiIsIlx1NGU5NCIsIlx1NTE2ZCIsIlx1NGUwMyIsIlx1NTE2YiIsIlx1NGU1ZCIsIlx1NTM0MSIsIlx1NTM0MVx1NGUwMCIsIlx1NTM0MVx1NGU4YyJdLmluZGV4T2YoZSk7ZWxzZXt2YXIgYT1lW2UubGVuZ3RoLTFdO3I9ImkiPT09YXx8IkkiPT09YX1yZXR1cm4gdGhpcy50b01vbnRoSW5kZXgodCxuLHIpfSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJ5eXl5L21tL2RkIixmaXJzdERheToxLGlzUlRMOiExfX0sX3ZhbGlkYXRlWWVhcjpmdW5jdGlvbih0LGUpe2lmKHQueWVhciYmKHQ9dC55ZWFyKCkpLCJudW1iZXIiIT10eXBlb2YgdHx8dDwxODg4fHx0PjIxMTEpdGhyb3cgZS5yZXBsYWNlKC9cezBcfS8sdGhpcy5sb2NhbC5uYW1lKTtyZXR1cm4gdH0sdG9Nb250aEluZGV4OmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLmludGVyY2FsYXJ5TW9udGgodCk7aWYociYmZSE9PWF8fGU8MXx8ZT4xMil0aHJvdyBuLmxvY2FsLmludmFsaWRNb250aC5yZXBsYWNlKC9cezBcfS8sdGhpcy5sb2NhbC5uYW1lKTtyZXR1cm4gYT8hciYmZTw9YT9lLTE6ZTplLTF9LHRvQ2hpbmVzZU1vbnRoOmZ1bmN0aW9uKHQsZSl7dC55ZWFyJiYoZT0odD10LnllYXIoKSkubW9udGgoKSk7dmFyIHI9dGhpcy5pbnRlcmNhbGFyeU1vbnRoKHQpO2lmKGU8MHx8ZT4ocj8xMjoxMSkpdGhyb3cgbi5sb2NhbC5pbnZhbGlkTW9udGgucmVwbGFjZSgvXHswXH0vLHRoaXMubG9jYWwubmFtZSk7cmV0dXJuIHI/ZTxyP2UrMTplOmUrMX0saW50ZXJjYWxhcnlNb250aDpmdW5jdGlvbih0KXtyZXR1cm4gdD10aGlzLl92YWxpZGF0ZVllYXIodCksaFt0LWhbMF1dPj4xM30saXNJbnRlcmNhbGFyeU1vbnRoOmZ1bmN0aW9uKHQsZSl7dC55ZWFyJiYoZT0odD10LnllYXIoKSkubW9udGgoKSk7dmFyIHI9dGhpcy5pbnRlcmNhbGFyeU1vbnRoKHQpO3JldHVybiEhciYmcj09PWV9LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dGhpcy5pbnRlcmNhbGFyeU1vbnRoKHQpfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxvPXRoaXMuX3ZhbGlkYXRlWWVhcih0LG4ubG9jYWwuaW52YWxpZHllYXIpLHM9ZltvLWZbMF1dLGw9cz4+OSY0MDk1LGM9cz4+NSYxNSx1PTMxJnM7KGE9aS5uZXdEYXRlKGwsYyx1KSkuYWRkKDQtKGEuZGF5T2ZXZWVrKCl8fDcpLCJkIik7dmFyIGg9dGhpcy50b0pEKHQsZSxyKS1hLnRvSkQoKTtyZXR1cm4gMStNYXRoLmZsb29yKGgvNyl9LG1vbnRoc0luWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZWFwWWVhcih0KT8xMzoxMn0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXt0LnllYXImJihlPXQubW9udGgoKSx0PXQueWVhcigpKSx0PXRoaXMuX3ZhbGlkYXRlWWVhcih0KTt2YXIgcj1oW3QtaFswXV07aWYoZT4ocj4+MTM/MTI6MTEpKXRocm93IG4ubG9jYWwuaW52YWxpZE1vbnRoLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLmxvY2FsLm5hbWUpO3JldHVybiByJjE8PDEyLWU/MzA6Mjl9LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybih0aGlzLmRheU9mV2Vlayh0LGUscil8fDcpPDZ9LHRvSkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQscyxyLG4ubG9jYWwuaW52YWxpZERhdGUpO3Q9dGhpcy5fdmFsaWRhdGVZZWFyKGEueWVhcigpKSxlPWEubW9udGgoKSxyPWEuZGF5KCk7dmFyIG89dGhpcy5pc0ludGVyY2FsYXJ5TW9udGgodCxlKSxzPXRoaXMudG9DaGluZXNlTW9udGgodCxlKSxsPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGksbyxzO2lmKCJvYmplY3QiPT10eXBlb2YgdClvPXQsaT1lfHx7fTtlbHNle3ZhciBsPSJudW1iZXIiPT10eXBlb2YgdCYmdD49MTg4OCYmdDw9MjExMTtpZighbCl0aHJvdyBuZXcgRXJyb3IoIkx1bmFyIHllYXIgb3V0c2lkZSByYW5nZSAxODg4LTIxMTEiKTt2YXIgYz0ibnVtYmVyIj09dHlwZW9mIGUmJmU+PTEmJmU8PTEyO2lmKCFjKXRocm93IG5ldyBFcnJvcigiTHVuYXIgbW9udGggb3V0c2lkZSByYW5nZSAxIC0gMTIiKTt2YXIgdSxwPSJudW1iZXIiPT10eXBlb2YgciYmcj49MSYmcjw9MzA7aWYoIXApdGhyb3cgbmV3IEVycm9yKCJMdW5hciBkYXkgb3V0c2lkZSByYW5nZSAxIC0gMzAiKTsib2JqZWN0Ij09dHlwZW9mIG4/KHU9ITEsaT1uKToodT0hIW4saT1hfHx7fSksbz17eWVhcjp0LG1vbnRoOmUsZGF5OnIsaXNJbnRlcmNhbGFyeTp1fX1zPW8uZGF5LTE7dmFyIGQsZz1oW28ueWVhci1oWzBdXSx2PWc+PjEzO2Q9dj9vLm1vbnRoPnY/by5tb250aDpvLmlzSW50ZXJjYWxhcnk/by5tb250aDpvLm1vbnRoLTE6by5tb250aC0xO2Zvcih2YXIgbT0wO208ZDttKyspe3ZhciB5PWcmMTw8MTItbT8zMDoyOTtzKz15fXZhciB4PWZbby55ZWFyLWZbMF1dLGI9bmV3IERhdGUoeD4+OSY0MDk1LCh4Pj41JjE1KS0xLCgzMSZ4KStzKTtyZXR1cm4gaS55ZWFyPWIuZ2V0RnVsbFllYXIoKSxpLm1vbnRoPTErYi5nZXRNb250aCgpLGkuZGF5PWIuZ2V0RGF0ZSgpLGl9KHQscyxyLG8pO3JldHVybiBpLnRvSkQobC55ZWFyLGwubW9udGgsbC5kYXkpfSxmcm9tSkQ6ZnVuY3Rpb24odCl7dmFyIGU9aS5mcm9tSkQodCkscj1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpO2lmKCJvYmplY3QiPT10eXBlb2YgdClhPXQsaT1lfHx7fTtlbHNle3ZhciBvPSJudW1iZXIiPT10eXBlb2YgdCYmdD49MTg4OCYmdDw9MjExMTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIlNvbGFyIHllYXIgb3V0c2lkZSByYW5nZSAxODg4LTIxMTEiKTt2YXIgcz0ibnVtYmVyIj09dHlwZW9mIGUmJmU+PTEmJmU8PTEyO2lmKCFzKXRocm93IG5ldyBFcnJvcigiU29sYXIgbW9udGggb3V0c2lkZSByYW5nZSAxIC0gMTIiKTt2YXIgbD0ibnVtYmVyIj09dHlwZW9mIHImJnI+PTEmJnI8PTMxO2lmKCFsKXRocm93IG5ldyBFcnJvcigiU29sYXIgZGF5IG91dHNpZGUgcmFuZ2UgMSAtIDMxIik7YT17eWVhcjp0LG1vbnRoOmUsZGF5OnJ9LGk9bnx8e319dmFyIGM9ZlthLnllYXItZlswXV0sdT1hLnllYXI8PDl8YS5tb250aDw8NXxhLmRheTtpLnllYXI9dT49Yz9hLnllYXI6YS55ZWFyLTEsYz1mW2kueWVhci1mWzBdXTt2YXIgcCxkPW5ldyBEYXRlKGM+PjkmNDA5NSwoYz4+NSYxNSktMSwzMSZjKSxnPW5ldyBEYXRlKGEueWVhcixhLm1vbnRoLTEsYS5kYXkpO3A9TWF0aC5yb3VuZCgoZy1kKS84NjRlNSk7dmFyIHYsbT1oW2kueWVhci1oWzBdXTtmb3Iodj0wO3Y8MTM7disrKXt2YXIgeT1tJjE8PDEyLXY/MzA6Mjk7aWYocDx5KWJyZWFrO3AtPXl9dmFyIHg9bT4+MTM7IXh8fHY8eD8oaS5pc0ludGVyY2FsYXJ5PSExLGkubW9udGg9MSt2KTp2PT09eD8oaS5pc0ludGVyY2FsYXJ5PSEwLGkubW9udGg9dik6KGkuaXNJbnRlcmNhbGFyeT0hMSxpLm1vbnRoPXYpO3JldHVybiBpLmRheT0xK3AsaX0oZS55ZWFyKCksZS5tb250aCgpLGUuZGF5KCkpLG49dGhpcy50b01vbnRoSW5kZXgoci55ZWFyLHIubW9udGgsci5pc0ludGVyY2FsYXJ5KTtyZXR1cm4gdGhpcy5uZXdEYXRlKHIueWVhcixuLHIuZGF5KX0sZnJvbVN0cmluZzpmdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKHMpLHI9dGhpcy5fdmFsaWRhdGVZZWFyKCtlWzFdKSxuPStlWzJdLGE9ISFlWzNdLGk9dGhpcy50b01vbnRoSW5kZXgocixuLGEpLG89K2VbNF07cmV0dXJuIHRoaXMubmV3RGF0ZShyLGksbyl9LGFkZDpmdW5jdGlvbih0LGUscil7dmFyIG49dC55ZWFyKCksYT10Lm1vbnRoKCksaT10aGlzLmlzSW50ZXJjYWxhcnlNb250aChuLGEpLHM9dGhpcy50b0NoaW5lc2VNb250aChuLGEpLGw9T2JqZWN0LmdldFByb3RvdHlwZU9mKG8ucHJvdG90eXBlKS5hZGQuY2FsbCh0aGlzLHQsZSxyKTtpZigieSI9PT1yKXt2YXIgYz1sLnllYXIoKSx1PWwubW9udGgoKSxoPXRoaXMuaXNJbnRlcmNhbGFyeU1vbnRoKGMscyksZj1pJiZoP3RoaXMudG9Nb250aEluZGV4KGMscywhMCk6dGhpcy50b01vbnRoSW5kZXgoYyxzLCExKTtmIT09dSYmbC5tb250aChmKX1yZXR1cm4gbH19KTt2YXIgcz0vXlxzKigtP1xkXGRcZFxkfFxkXGQpWy0vXShcZD9cZCkoW2lJXT8pWy0vXShcZD9cZCkvbSxsPS9eXGQ/XGRbaUldPy9tLGM9L15cdTk1ZjA/XHU1MzQxP1tcdTRlMDBcdTRlOGNcdTRlMDlcdTU2ZGJcdTRlOTRcdTUxNmRcdTRlMDNcdTUxNmJcdTRlNWRdP1x1NjcwOC9tLHU9L15cdTk1ZjA/XHU1MzQxP1tcdTRlMDBcdTRlOGNcdTRlMDlcdTU2ZGJcdTRlOTRcdTUxNmRcdTRlMDNcdTUxNmJcdTRlNWRdPy9tO24uY2FsZW5kYXJzLmNoaW5lc2U9bzt2YXIgaD1bMTg4Nyw1NzgwLDU4MDIsMTkxNTcsMjc0Miw1MDM1OSwxMTk4LDI2NDYsNDYzNzgsNzQ2NiwzNDEyLDMwMTIyLDU0ODIsNjc5NDksMjM5Niw1Mjk0LDQzNTk3LDY3MzIsNjk1NCwzNjE4MSwyNzcyLDQ5NTQsMTg3ODEsMjM5Niw1NDQyNyw1Mjc0LDY3MzAsNDc3ODEsNTgwMCw2ODY4LDIxMjEwLDQ3OTAsNTk3MDMsMjM1MCw1MjcwLDQ2NjY3LDM0MDIsMzQ5NiwzODMyNSwxMzg4LDQ3ODIsMTg3MzUsMjM1MCw1MjM3NCw2ODA0LDc0OTgsNDQ0NTcsMjkwNiwxMzg4LDI5Mjk0LDQ3MDAsNjM3ODksNjQ0Miw2ODA0LDU2MTM4LDU4MDIsMjc3MiwzODIzNSwxMjEwLDQ2OTgsMjI4MjcsNTQxOCw2MzEyNSwzNDc2LDU4MDIsNDM3MDEsMjQ4NCw1MzAyLDI3MjIzLDI2NDYsNzA5NTQsNzQ2NiwzNDEyLDU0Njk4LDU0ODIsMjQxMiwzODA2Miw1Mjk0LDI2MzYsMzIwMzgsNjk1NCw2MDI0NSwyNzcyLDQ4MjYsNDMzNTcsMjM5NCw1Mjc0LDM5NTAxLDY3MzAsNzIzNTcsNTgwMCw1ODQ0LDUzOTc4LDQ3OTAsMjM1OCwzODAzOSw1MjcwLDg3NjI3LDM0MDIsMzQ5Niw1NDcwOCw1NDg0LDQ3ODIsNDMzMTEsMjM1MCwzMjIyLDI3OTc4LDc0OTgsNjg5NjUsMjkwNCw1NDg0LDQ1Njc3LDQ3MDAsNjQ0NCwzOTU3Myw2ODA0LDY5ODYsMTkyODUsMjc3Miw2MjgxMSwxMjEwLDQ2OTgsNDc0MDMsNTQxOCw1NzgwLDM4NTcwLDU1NDYsNzY0NjksMjQyMCw1MzAyLDUxNzk5LDI2NDYsNTQxNCwzNjUwMSwzNDEyLDU1NDYsMTg4NjksMjQxMiw1NDQ0Niw1Mjc2LDY3MzIsNDg0MjIsNjgyMiwyOTAwLDI4MDEwLDQ4MjYsOTI1MDksMjM5NCw1Mjc0LDU1ODgzLDY3MzAsNjgyMCw0Nzk1Niw1ODEyLDI3NzgsMTg3NzksMjM1OCw2MjYxNSw1MjcwLDU0NTAsNDY3NTcsMzQ5Miw1NTU2LDI3MzE4LDQ3MTgsNjc4ODcsMjM1MCwzMjIyLDUyNTU0LDc0OTgsMzQyOCwzODI1Miw1NDY4LDQ3MDAsMzEwMjIsNjQ0NCw2NDE0OSw2ODA0LDY5ODYsNDM4NjEsMjc3Miw1MzM4LDM1NDIxLDI2NTAsNzA5NTUsNTQxOCw1NzgwLDU0OTU0LDU1NDYsMjc0MCwzODA3NCw1MzAyLDI2NDYsMjk5OTEsMzM2Niw2MTAxMSwzNDEyLDU1NDYsNDM0NDUsMjQxMiw1Mjk0LDM1NDA2LDY3MzIsNzI5OTgsNjgyMCw2OTk2LDUyNTg2LDI3NzgsMjM5NiwzODA0NSw1Mjc0LDY2OTgsMjMzMzMsNjgyMCw2NDMzOCw1ODEyLDI3NDYsNDMzNTUsMjM1OCw1MjcwLDM5NDk5LDU0NTAsNzk1MjUsMzQ5Miw1NTQ4XSxmPVsxODg3LDk2NjczMiw5NjcyMzEsOTY3NzMzLDk2ODI2NSw5Njg3NjYsOTY5Mjk3LDk2OTc5OCw5NzAyOTgsOTcwODI5LDk3MTMzMCw5NzE4MzAsOTcyMzYyLDk3Mjg2Myw5NzMzOTUsOTczODk2LDk3NDM5Nyw5NzQ5MjgsOTc1NDI4LDk3NTkyOSw5NzY0NjEsOTc2OTYyLDk3NzQ2Miw5Nzc5OTQsOTc4NDk0LDk3OTAyNiw5Nzk1MjYsOTgwMDI2LDk4MDU1OCw5ODEwNTksOTgxNTU5LDk4MjA5MSw5ODI1OTMsOTgzMTI0LDk4MzYyNCw5ODQxMjQsOTg0NjU2LDk4NTE1Nyw5ODU2NTYsOTg2MTg5LDk4NjY5MCw5ODcxOTEsOTg3NzIyLDk4ODIyMiw5ODg3NTMsOTg5MjU0LDk4OTc1NCw5OTAyODYsOTkwNzg4LDk5MTI4OCw5OTE4MTksOTkyMzE5LDk5Mjg1MSw5OTMzNTIsOTkzODUxLDk5NDM4Myw5OTQ4ODUsOTk1Mzg1LDk5NTkxNyw5OTY0MTgsOTk2OTE4LDk5NzQ1MCw5OTc5NDksOTk4NDgxLDk5ODk4Miw5OTk0ODMsMTAwMDAxNCwxMDAwNTE1LDEwMDEwMTYsMTAwMTU0OCwxMDAyMDQ3LDEwMDI1NzgsMTAwMzA4MCwxMDAzNTgwLDEwMDQxMTEsMTAwNDYxMywxMDA1MTEzLDEwMDU2NDUsMTAwNjE0NiwxMDA2NjQ1LDEwMDcxNzcsMTAwNzY3OCwxMDA4MjA5LDEwMDg3MTAsMTAwOTIxMSwxMDA5NzQzLDEwMTAyNDMsMTAxMDc0MywxMDExMjc1LDEwMTE3NzUsMTAxMjMwNiwxMDEyODA3LDEwMTMzMDgsMTAxMzg0MCwxMDE0MzQxLDEwMTQ4NDEsMTAxNTM3MywxMDE1ODc0LDEwMTY0MDQsMTAxNjkwNSwxMDE3NDA1LDEwMTc5MzcsMTAxODQzOCwxMDE4OTM5LDEwMTk0NzEsMTAxOTk3MiwxMDIwNDcxLDEwMjEwMDIsMTAyMTUwMywxMDIyMDM1LDEwMjI1MzUsMTAyMzAzNiwxMDIzNTY4LDEwMjQwNjksMTAyNDU2OCwxMDI1MTAwLDEwMjU2MDEsMTAyNjEwMiwxMDI2NjMzLDEwMjcxMzMsMTAyNzY2NiwxMDI4MTY3LDEwMjg2NjYsMTAyOTE5OCwxMDI5Njk5LDEwMzAxOTksMTAzMDczMCwxMDMxMjMxLDEwMzE3NjMsMTAzMjI2NCwxMDMyNzY0LDEwMzMyOTYsMTAzMzc5NywxMDM0Mjk3LDEwMzQ4MjgsMTAzNTMyOSwxMDM1ODMwLDEwMzYzNjIsMTAzNjg2MSwxMDM3MzkzLDEwMzc4OTQsMTAzODM5NCwxMDM4OTI1LDEwMzk0MjcsMTAzOTkyNywxMDQwNDU5LDEwNDA5NTksMTA0MTQ5MSwxMDQxOTkyLDEwNDI0OTIsMTA0MzAyMywxMDQzNTI0LDEwNDQwMjQsMTA0NDU1NiwxMDQ1MDU3LDEwNDU1NTgsMTA0NjA5MCwxMDQ2NTkwLDEwNDcxMjEsMTA0NzYyMiwxMDQ4MTIyLDEwNDg2NTQsMTA0OTE1NCwxMDQ5NjU1LDEwNTAxODcsMTA1MDY4OSwxMDUxMjE5LDEwNTE3MjAsMTA1MjIyMCwxMDUyNzUxLDEwNTMyNTIsMTA1Mzc1MiwxMDU0Mjg0LDEwNTQ3ODYsMTA1NTI4NSwxMDU1ODE3LDEwNTYzMTcsMTA1Njg0OSwxMDU3MzQ5LDEwNTc4NTAsMTA1ODM4MiwxMDU4ODgzLDEwNTkzODMsMTA1OTkxNSwxMDYwNDE1LDEwNjA5NDcsMTA2MTQ0NywxMDYxOTQ3LDEwNjI0NzksMTA2Mjk4MSwxMDYzNDgwLDEwNjQwMTIsMTA2NDUxNCwxMDY1MDE0LDEwNjU1NDUsMTA2NjA0NSwxMDY2NTc3LDEwNjcwNzgsMTA2NzU3OCwxMDY4MTEwLDEwNjg2MTEsMTA2OTExMiwxMDY5NjQyLDEwNzAxNDIsMTA3MDY3NCwxMDcxMTc1LDEwNzE2NzUsMTA3MjIwNywxMDcyNzA5LDEwNzMyMDksMTA3Mzc0MCwxMDc0MjQxLDEwNzQ3NDEsMTA3NTI3MywxMDc1NzczLDEwNzYzMDUsMTA3NjgwNywxMDc3MzA4LDEwNzc4MzksMTA3ODM0MCwxMDc4ODQwLDEwNzkzNzIsMTA3OTg3MSwxMDgwNDAzLDEwODA5MDRdfSx7Ii4uL21haW4iOjU3MCwib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTU3OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGE9dCgib2JqZWN0LWFzc2lnbiIpO2Z1bmN0aW9uIGkodCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1pLnByb3RvdHlwZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShpLnByb3RvdHlwZSx7bmFtZToiQ29wdGljIixqZEVwb2NoOjE4MjUwMjkuNSxkYXlzUGVyTW9udGg6WzMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDVdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IkNvcHRpYyIsZXBvY2hzOlsiQkFNIiwiQU0iXSxtb250aE5hbWVzOlsiVGhvdXQiLCJQYW9waSIsIkhhdGhvciIsIktvaWFrIiwiVG9iaSIsIk1lc2hpciIsIlBhcmVtaGF0IiwiUGFyZW1vdWRlIiwiUGFzaG9ucyIsIlBhb25pIiwiRXBpcCIsIk1lc29yaSIsIlBpIEtvZ2kgRW5hdm90Il0sbW9udGhOYW1lc1Nob3J0OlsiVGhvIiwiUGFvIiwiSGF0aCIsIktvaSIsIlRvYiIsIk1lc2giLCJQYXQiLCJQYWQiLCJQYXNoIiwiUGFvIiwiRXBpIiwiTWVzbyIsIlBpSyJdLGRheU5hbWVzOlsiVGt5cmlha2EiLCJQZXNuYXUiLCJQc2hvbWVudCIsIlBlZnRvb3UiLCJQdGlvdSIsIlBzb291IiwiUHNhYmJhdG9uIl0sZGF5TmFtZXNTaG9ydDpbIlRreSIsIlBlcyIsIlBzaCIsIlBlZiIsIlB0aSIsIlBzbyIsIlBzYSJdLGRheU5hbWVzTWluOlsiVGsiLCJQZXMiLCJQc2giLCJQZWYiLCJQdCIsIlBzbyIsIlBzYSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6ImRkL21tL3l5eXkiLGZpcnN0RGF5OjAsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7cmV0dXJuKHQ9ZS55ZWFyKCkrKGUueWVhcigpPDA/MTowKSklND09M3x8dCU0PT0tMX0sbW9udGhzSW5ZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcnx8bi5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWRZZWFyKSwxM30sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoLW4uZGF5T2ZXZWVrKCksImQiKSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdKygxMz09PXIubW9udGgoKSYmdGhpcy5sZWFwWWVhcihyLnllYXIoKSk/MTowKX0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJuKHRoaXMuZGF5T2ZXZWVrKHQsZSxyKXx8Nyk8Nn0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7cmV0dXJuKHQ9YS55ZWFyKCkpPDAmJnQrKyxhLmRheSgpKzMwKihhLm1vbnRoKCktMSkrMzY1Kih0LTEpK01hdGguZmxvb3IodC80KSt0aGlzLmpkRXBvY2gtMX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguZmxvb3IodCkrLjUtdGhpcy5qZEVwb2NoLHI9TWF0aC5mbG9vcigoZS1NYXRoLmZsb29yKChlKzM2NikvMTQ2MSkpLzM2NSkrMTtyPD0wJiZyLS0sZT1NYXRoLmZsb29yKHQpKy41LXRoaXMubmV3RGF0ZShyLDEsMSkudG9KRCgpO3ZhciBuPU1hdGguZmxvb3IoZS8zMCkrMSxhPWUtMzAqKG4tMSkrMTtyZXR1cm4gdGhpcy5uZXdEYXRlKHIsbixhKX19KSxuLmNhbGVuZGFycy5jb3B0aWM9aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU1ODpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGEoaS5wcm90b3R5cGUse25hbWU6IkRpc2N3b3JsZCIsamRFcG9jaDoxNzIxNDI1LjUsZGF5c1Blck1vbnRoOlsxNiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMl0saGFzWWVhclplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEscmVnaW9uYWxPcHRpb25zOnsiIjp7bmFtZToiRGlzY3dvcmxkIixlcG9jaHM6WyJCVUMiLCJVQyJdLG1vbnRoTmFtZXM6WyJJY2siLCJPZmZsZSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJHcnVuZSIsIkF1Z3VzdCIsIlNwdW5lIiwiU2VrdG9iZXIiLCJFbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSWNrIiwiT2ZmIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiR3J1IiwiQXVnIiwiU3B1IiwiU2VrIiwiRW1iIiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJPY3RlZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiT2N0IiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk9jIiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoieXl5eS9tbS9kZCIsZmlyc3REYXk6Mixpc1JUTDohMX19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhciksITF9LG1vbnRoc0luWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpLDEzfSxkYXlzSW5ZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhciksNDAwfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUodCxlLHIpO3JldHVybiBuLmFkZCgtbi5kYXlPZldlZWsoKSwiZCIpLE1hdGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkvOCkrMX0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1vbnRoKCktMV19LGRheXNJbldlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gOH0sZGF5T2ZXZWVrOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSkuZGF5KCkrMSklOH0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5kYXlPZldlZWsodCxlLHIpO3JldHVybiBuPj0yJiZuPD02fSxleHRyYUluZm86ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUpO3JldHVybntjZW50dXJ5Om9bTWF0aC5mbG9vcigoYS55ZWFyKCktMSkvMTAwKSsxXXx8IiJ9fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTtyZXR1cm4gdD1hLnllYXIoKSsoYS55ZWFyKCk8MD8xOjApLGU9YS5tb250aCgpLChyPWEuZGF5KCkpKyhlPjE/MTY6MCkrKGU+Mj8zMiooZS0yKTowKSs0MDAqKHQtMSkrdGhpcy5qZEVwb2NoLTF9LGZyb21KRDpmdW5jdGlvbih0KXt0PU1hdGguZmxvb3IodCsuNSktTWF0aC5mbG9vcih0aGlzLmpkRXBvY2gpLTE7dmFyIGU9TWF0aC5mbG9vcih0LzQwMCkrMTt0LT00MDAqKGUtMSksdCs9dD4xNT8xNjowO3ZhciByPU1hdGguZmxvb3IodC8zMikrMSxuPXQtMzIqKHItMSkrMTtyZXR1cm4gdGhpcy5uZXdEYXRlKGU8PTA/ZS0xOmUscixuKX19KTt2YXIgbz17MjA6IkZydWl0YmF0IiwyMToiQW5jaG92eSJ9O24uY2FsZW5kYXJzLmRpc2N3b3JsZD1pfSx7Ii4uL21haW4iOjU3MCwib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTU5OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGE9dCgib2JqZWN0LWFzc2lnbiIpO2Z1bmN0aW9uIGkodCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1pLnByb3RvdHlwZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShpLnByb3RvdHlwZSx7bmFtZToiRXRoaW9waWFuIixqZEVwb2NoOjE3MjQyMjAuNSxkYXlzUGVyTW9udGg6WzMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDMwLDVdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IkV0aGlvcGlhbiIsZXBvY2hzOlsiQkVFIiwiRUUiXSxtb250aE5hbWVzOlsiTWVza2VyZW0iLCJUaWtlbWV0IiwiSGlkYXIiLCJUYWhlc2FzIiwiVGlyIiwiWWVrYXRpdCIsIk1lZ2FiaXQiLCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJOZWhhc2UiLCJQYWd1bWUiXSxtb250aE5hbWVzU2hvcnQ6WyJNZXMiLCJUaWsiLCJIaWQiLCJUYWgiLCJUaXIiLCJZZWsiLCJNZWciLCJNaWEiLCJHZW4iLCJTZW4iLCJIYW0iLCJOZWgiLCJQYWciXSxkYXlOYW1lczpbIkVodWQiLCJTZWdubyIsIk1ha3NlZ25vIiwiSXJvYiIsIkhhbXVzIiwiQXJiIiwiS2lkYW1lIl0sZGF5TmFtZXNTaG9ydDpbIkVodSIsIlNlZyIsIk1hayIsIklybyIsIkhhbSIsIkFyYiIsIktpZCJdLGRheU5hbWVzTWluOlsiRWgiLCJTZSIsIk1hIiwiSXIiLCJIYSIsIkFyIiwiS2kiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJkZC9tbS95eXl5IixmaXJzdERheTowLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpO3JldHVybih0PWUueWVhcigpKyhlLnllYXIoKTwwPzE6MCkpJTQ9PTN8fHQlND09LTF9LG1vbnRoc0luWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXJ8fG4ucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkWWVhciksMTN9LHdlZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUscik7cmV0dXJuIG4uYWRkKC1uLmRheU9mV2VlaygpLCJkIiksTWF0aC5mbG9vcigobi5kYXlPZlllYXIoKS0xKS83KSsxfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1vbnRoW3IubW9udGgoKS0xXSsoMTM9PT1yLm1vbnRoKCkmJnRoaXMubGVhcFllYXIoci55ZWFyKCkpPzE6MCl9LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybih0aGlzLmRheU9mV2Vlayh0LGUscil8fDcpPDZ9LHRvSkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUpO3JldHVybih0PWEueWVhcigpKTwwJiZ0KyssYS5kYXkoKSszMCooYS5tb250aCgpLTEpKzM2NSoodC0xKStNYXRoLmZsb29yKHQvNCkrdGhpcy5qZEVwb2NoLTF9LGZyb21KRDpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmZsb29yKHQpKy41LXRoaXMuamRFcG9jaCxyPU1hdGguZmxvb3IoKGUtTWF0aC5mbG9vcigoZSszNjYpLzE0NjEpKS8zNjUpKzE7cjw9MCYmci0tLGU9TWF0aC5mbG9vcih0KSsuNS10aGlzLm5ld0RhdGUociwxLDEpLnRvSkQoKTt2YXIgbj1NYXRoLmZsb29yKGUvMzApKzEsYT1lLTMwKihuLTEpKzE7cmV0dXJuIHRoaXMubmV3RGF0ZShyLG4sYSl9fSksbi5jYWxlbmRhcnMuZXRoaW9waWFuPWl9LHsiLi4vbWFpbiI6NTcwLCJvYmplY3QtYXNzaWduIjo0NTZ9XSw1NjA6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rpb24gaSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gdC1lKk1hdGguZmxvb3IodC9lKX1pLnByb3RvdHlwZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShpLnByb3RvdHlwZSx7bmFtZToiSGVicmV3IixqZEVwb2NoOjM0Nzk5NS41LGRheXNQZXJNb250aDpbMzAsMjksMzAsMjksMzAsMjksMzAsMjksMzAsMjksMzAsMjksMjldLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDo3LG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IkhlYnJldyIsZXBvY2hzOlsiQkFNIiwiQU0iXSxtb250aE5hbWVzOlsiTmlzYW4iLCJJeWFyIiwiU2l2YW4iLCJUYW1tdXoiLCJBdiIsIkVsdWwiLCJUaXNocmVpIiwiQ2hlc2h2YW4iLCJLaXNsZXYiLCJUZXZldCIsIlNoZXZhdCIsIkFkYXIiLCJBZGFyIElJIl0sbW9udGhOYW1lc1Nob3J0OlsiTmlzIiwiSXlhIiwiU2l2IiwiVGFtIiwiQXYiLCJFbHUiLCJUaXMiLCJDaGUiLCJLaXMiLCJUZXYiLCJTaGUiLCJBZGEiLCJBZDIiXSxkYXlOYW1lczpbIllvbSBSaXNob24iLCJZb20gU2hlbmkiLCJZb20gU2hsaXNoaSIsIllvbSBSZXZpJ2kiLCJZb20gQ2hhbWlzaGkiLCJZb20gU2hpc2hpIiwiWW9tIFNoYWJiYXQiXSxkYXlOYW1lc1Nob3J0OlsiUmlzIiwiU2hlIiwiU2hsIiwiUmV2IiwiQ2hhIiwiU2hpIiwiU2hhIl0sZGF5TmFtZXNNaW46WyJSaSIsIlNoZSIsIlNobCIsIlJlIiwiQ2giLCJTaGkiLCJTaGEiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJkZC9tbS95eXl5IixmaXJzdERheTowLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpO3JldHVybiB0aGlzLl9sZWFwWWVhcihlLnllYXIoKSl9LF9sZWFwWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gbyg3Kih0PXQ8MD90KzE6dCkrMSwxOSk8N30sbW9udGhzSW5ZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhciksdGhpcy5fbGVhcFllYXIodC55ZWFyP3QueWVhcigpOnQpPzEzOjEyfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUodCxlLHIpO3JldHVybiBuLmFkZCgtbi5kYXlPZldlZWsoKSwiZCIpLE1hdGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkvNykrMX0sZGF5c0luWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdD10aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcikueWVhcigpLHRoaXMudG9KRCgtMT09PXQ/MTp0KzEsNywxKS10aGlzLnRvSkQodCw3LDEpfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0LGUpe3JldHVybiB0LnllYXImJihlPXQubW9udGgoKSx0PXQueWVhcigpKSx0aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpLDEyPT09ZSYmdGhpcy5sZWFwWWVhcih0KT8zMDo4PT09ZSYmNT09PW8odGhpcy5kYXlzSW5ZZWFyKHQpLDEwKT8zMDo5PT09ZSYmMz09PW8odGhpcy5kYXlzSW5ZZWFyKHQpLDEwKT8yOTp0aGlzLmRheXNQZXJNb250aFtlLTFdfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gNiE9PXRoaXMuZGF5T2ZXZWVrKHQsZSxyKX0sZXh0cmFJbmZvOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTtyZXR1cm57eWVhclR5cGU6KHRoaXMubGVhcFllYXIoYSk/ImVtYm9saXNtaWMiOiJjb21tb24iKSsiICIrWyJkZWZpY2llbnQiLCJyZWd1bGFyIiwiY29tcGxldGUiXVt0aGlzLmRheXNJblllYXIoYSklMTAtM119fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTt0PWEueWVhcigpLGU9YS5tb250aCgpLHI9YS5kYXkoKTt2YXIgaT10PD0wP3QrMTp0LG89dGhpcy5qZEVwb2NoK3RoaXMuX2RlbGF5MShpKSt0aGlzLl9kZWxheTIoaSkrcisxO2lmKGU8Nyl7Zm9yKHZhciBzPTc7czw9dGhpcy5tb250aHNJblllYXIodCk7cysrKW8rPXRoaXMuZGF5c0luTW9udGgodCxzKTtmb3Iocz0xO3M8ZTtzKyspbys9dGhpcy5kYXlzSW5Nb250aCh0LHMpfWVsc2UgZm9yKHM9NztzPGU7cysrKW8rPXRoaXMuZGF5c0luTW9udGgodCxzKTtyZXR1cm4gb30sX2RlbGF5MTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmZsb29yKCgyMzUqdC0yMzQpLzE5KSxyPTEyMDg0KzEzNzUzKmUsbj0yOSplK01hdGguZmxvb3Ioci8yNTkyMCk7cmV0dXJuIG8oMyoobisxKSw3KTwzJiZuKyssbn0sX2RlbGF5MjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kZWxheTEodC0xKSxyPXRoaXMuX2RlbGF5MSh0KTtyZXR1cm4gdGhpcy5fZGVsYXkxKHQrMSktcj09MzU2PzI6ci1lPT0zODI/MTowfSxmcm9tSkQ6ZnVuY3Rpb24odCl7dD1NYXRoLmZsb29yKHQpKy41O2Zvcih2YXIgZT1NYXRoLmZsb29yKDk4NDk2Kih0LXRoaXMuamRFcG9jaCkvMzU5NzUzNTEpLTE7dD49dGhpcy50b0pEKC0xPT09ZT8xOmUrMSw3LDEpOyllKys7Zm9yKHZhciByPXQ8dGhpcy50b0pEKGUsMSwxKT83OjE7dD50aGlzLnRvSkQoZSxyLHRoaXMuZGF5c0luTW9udGgoZSxyKSk7KXIrKzt2YXIgbj10LXRoaXMudG9KRChlLHIsMSkrMTtyZXR1cm4gdGhpcy5uZXdEYXRlKGUscixuKX19KSxuLmNhbGVuZGFycy5oZWJyZXc9aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU2MTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGEoaS5wcm90b3R5cGUse25hbWU6IklzbGFtaWMiLGpkRXBvY2g6MTk0ODQzOS41LGRheXNQZXJNb250aDpbMzAsMjksMzAsMjksMzAsMjksMzAsMjksMzAsMjksMzAsMjldLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IklzbGFtaWMiLGVwb2NoczpbIkJIIiwiQUgiXSxtb250aE5hbWVzOlsiTXVoYXJyYW0iLCJTYWZhciIsIlJhYmknIGFsLWF3d2FsIiwiUmFiaScgYWwtdGhhbmkiLCJKdW1hZGEgYWwtYXd3YWwiLCJKdW1hZGEgYWwtdGhhbmkiLCJSYWphYiIsIlNoYSdhYmFuIiwiUmFtYWRhbiIsIlNoYXd3YWwiLCJEaHUgYWwtUWknZGFoIiwiRGh1IGFsLUhpamphaCJdLG1vbnRoTmFtZXNTaG9ydDpbIk11aCIsIlNhZiIsIlJhYjEiLCJSYWIyIiwiSnVtMSIsIkp1bTIiLCJSYWoiLCJTaGEnIiwiUmFtIiwiU2hhdyIsIkRodVEiLCJEaHVIIl0sZGF5TmFtZXM6WyJZYXdtIGFsLWFoYWQiLCJZYXdtIGFsLWl0aG5heW4iLCJZYXdtIGF0aC10aHVsYWF0aGFhJyIsIllhd20gYWwtYXJiaSdhYSciLCJZYXdtIGFsLWtoYW1cdTAxMmJzIiwiWWF3bSBhbC1qdW0nYSIsIllhd20gYXMtc2FidCJdLGRheU5hbWVzU2hvcnQ6WyJBaGEiLCJJdGgiLCJUaHUiLCJBcmIiLCJLaGEiLCJKdW0iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkFoIiwiSXQiLCJUaCIsIkFyIiwiS2giLCJKdSIsIlNhIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoieXl5eS9tbS9kZCIsZmlyc3REYXk6Nixpc1JUTDohMX19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3JldHVybigxMSp0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcikueWVhcigpKzE0KSUzMDwxMX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoLW4uZGF5T2ZXZWVrKCksImQiKSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJblllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVhcFllYXIodCk/MzU1OjM1NH0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1vbnRoKCktMV0rKDEyPT09ci5tb250aCgpJiZ0aGlzLmxlYXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gNSE9PXRoaXMuZGF5T2ZXZWVrKHQsZSxyKX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7cmV0dXJuIHQ9YS55ZWFyKCksZT1hLm1vbnRoKCksdD10PD0wP3QrMTp0LChyPWEuZGF5KCkpK01hdGguY2VpbCgyOS41KihlLTEpKSszNTQqKHQtMSkrTWF0aC5mbG9vcigoMysxMSp0KS8zMCkrdGhpcy5qZEVwb2NoLTF9LGZyb21KRDpmdW5jdGlvbih0KXt0PU1hdGguZmxvb3IodCkrLjU7dmFyIGU9TWF0aC5mbG9vcigoMzAqKHQtdGhpcy5qZEVwb2NoKSsxMDY0NikvMTA2MzEpO2U9ZTw9MD9lLTE6ZTt2YXIgcj1NYXRoLm1pbigxMixNYXRoLmNlaWwoKHQtMjktdGhpcy50b0pEKGUsMSwxKSkvMjkuNSkrMSksbj10LXRoaXMudG9KRChlLHIsMSkrMTtyZXR1cm4gdGhpcy5uZXdEYXRlKGUscixuKX19KSxuLmNhbGVuZGFycy5pc2xhbWljPWl9LHsiLi4vbWFpbiI6NTcwLCJvYmplY3QtYXNzaWduIjo0NTZ9XSw1NjI6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rpb24gaSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfWkucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixhKGkucHJvdG90eXBlLHtuYW1lOiJKdWxpYW4iLGpkRXBvY2g6MTcyMTQyMy41LGRheXNQZXJNb250aDpbMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6Ikp1bGlhbiIsZXBvY2hzOlsiQkMiLCJBRCJdLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6Im1tL2RkL3l5eXkiLGZpcnN0RGF5OjAsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7cmV0dXJuKHQ9ZS55ZWFyKCk8MD9lLnllYXIoKSsxOmUueWVhcigpKSU0PT0wfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUodCxlLHIpO3JldHVybiBuLmFkZCg0LShuLmRheU9mV2VlaygpfHw3KSwiZCIpLE1hdGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkvNykrMX0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1vbnRoKCktMV0rKDI9PT1yLm1vbnRoKCkmJnRoaXMubGVhcFllYXIoci55ZWFyKCkpPzE6MCl9LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybih0aGlzLmRheU9mV2Vlayh0LGUscil8fDcpPDZ9LHRvSkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUpO3JldHVybiB0PWEueWVhcigpLGU9YS5tb250aCgpLHI9YS5kYXkoKSx0PDAmJnQrKyxlPD0yJiYodC0tLGUrPTEyKSxNYXRoLmZsb29yKDM2NS4yNSoodCs0NzE2KSkrTWF0aC5mbG9vcigzMC42MDAxKihlKzEpKStyLTE1MjQuNX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguZmxvb3IodCsuNSkrMTUyNCxyPU1hdGguZmxvb3IoKGUtMTIyLjEpLzM2NS4yNSksbj1NYXRoLmZsb29yKDM2NS4yNSpyKSxhPU1hdGguZmxvb3IoKGUtbikvMzAuNjAwMSksaT1hLU1hdGguZmxvb3IoYTwxND8xOjEzKSxvPXItTWF0aC5mbG9vcihpPjI/NDcxNjo0NzE1KSxzPWUtbi1NYXRoLmZsb29yKDMwLjYwMDEqYSk7cmV0dXJuIG88PTAmJm8tLSx0aGlzLm5ld0RhdGUobyxpLHMpfX0pLG4uY2FsZW5kYXJzLmp1bGlhbj1pfSx7Ii4uL21haW4iOjU3MCwib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTYzOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGE9dCgib2JqZWN0LWFzc2lnbiIpO2Z1bmN0aW9uIGkodCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHQtZSpNYXRoLmZsb29yKHQvZSl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBvKHQtMSxlKSsxfWkucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixhKGkucHJvdG90eXBlLHtuYW1lOiJNYXlhbiIsamRFcG9jaDo1ODQyODIuNSxoYXNZZWFyWmVybzohMCxtaW5Nb250aDowLGZpcnN0TW9udGg6MCxtaW5EYXk6MCxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJNYXlhbiIsZXBvY2hzOlsiIiwiIl0sbW9udGhOYW1lczpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiIsIjE3Il0sbW9udGhOYW1lc1Nob3J0OlsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIiwiMTQiLCIxNSIsIjE2IiwiMTciXSxkYXlOYW1lczpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiIsIjE3IiwiMTgiLCIxOSJdLGRheU5hbWVzU2hvcnQ6WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiLCIxNCIsIjE1IiwiMTYiLCIxNyIsIjE4IiwiMTkiXSxkYXlOYW1lc01pbjpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiIsIjE3IiwiMTgiLCIxOSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6IllZWVkubS5kIixmaXJzdERheTowLGlzUlRMOiExLGhhYWJNb250aHM6WyJQb3AiLCJVbyIsIlppcCIsIlpvdHoiLCJUemVjIiwiWHVsIiwiWWF4a2luIiwiTW9sIiwiQ2hlbiIsIllheCIsIlphYyIsIkNlaCIsIk1hYyIsIkthbmtpbiIsIk11YW4iLCJQYXgiLCJLYXlhYiIsIkN1bWt1IiwiVWF5ZWIiXSx0em9sa2luTW9udGhzOlsiSW1peCIsIklrIiwiQWtiYWwiLCJLYW4iLCJDaGljY2hhbiIsIkNpbWkiLCJNYW5payIsIkxhbWF0IiwiTXVsdWMiLCJPYyIsIkNodWVuIiwiRWIiLCJCZW4iLCJJeCIsIk1lbiIsIkNpYiIsIkNhYmFuIiwiRXR6bmFiIiwiQ2F1YWMiLCJBaGF1Il19fSxsZWFwWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpLCExfSxmb3JtYXRZZWFyOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpLnllYXIoKTt2YXIgZT1NYXRoLmZsb29yKHQvNDAwKTtyZXR1cm4gdCU9NDAwLHQrPXQ8MD80MDA6MCxlKyIuIitNYXRoLmZsb29yKHQvMjApKyIuIit0JTIwfSxmb3JZZWFyOmZ1bmN0aW9uKHQpe2lmKCh0PXQuc3BsaXQoIi4iKSkubGVuZ3RoPDMpdGhyb3ciSW52YWxpZCBNYXlhbiB5ZWFyIjtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXBhcnNlSW50KHRbcl0sMTApO2lmKE1hdGguYWJzKG4pPjE5fHxyPjAmJm48MCl0aHJvdyJJbnZhbGlkIE1heWFuIHllYXIiO2U9MjAqZStufXJldHVybiBlfSxtb250aHNJblllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKSwxOH0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUpLDB9LGRheXNJblllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKSwzNjB9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRNb250aCksMjB9LGRheXNJbldlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gNX0sZGF5T2ZXZWVrOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSkuZGF5KCl9LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKSwhMH0sZXh0cmFJbmZvOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKS50b0pEKCksaT10aGlzLl90b0hhYWIoYSksbz10aGlzLl90b1R6b2xraW4oYSk7cmV0dXJue2hhYWJNb250aE5hbWU6dGhpcy5sb2NhbC5oYWFiTW9udGhzW2lbMF0tMV0saGFhYk1vbnRoOmlbMF0saGFhYkRheTppWzFdLHR6b2xraW5EYXlOYW1lOnRoaXMubG9jYWwudHpvbGtpbk1vbnRoc1tvWzBdLTFdLHR6b2xraW5EYXk6b1swXSx0em9sa2luVHJlY2VuYTpvWzFdfX0sX3RvSGFhYjpmdW5jdGlvbih0KXt2YXIgZT1vKCh0LT10aGlzLmpkRXBvY2gpKzgrMzQwLDM2NSk7cmV0dXJuW01hdGguZmxvb3IoZS8yMCkrMSxvKGUsMjApXX0sX3RvVHpvbGtpbjpmdW5jdGlvbih0KXtyZXR1cm5bcygodC09dGhpcy5qZEVwb2NoKSsyMCwyMCkscyh0KzQsMTMpXX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7cmV0dXJuIGEuZGF5KCkrMjAqYS5tb250aCgpKzM2MCphLnllYXIoKSt0aGlzLmpkRXBvY2h9LGZyb21KRDpmdW5jdGlvbih0KXt0PU1hdGguZmxvb3IodCkrLjUtdGhpcy5qZEVwb2NoO3ZhciBlPU1hdGguZmxvb3IodC8zNjApO3QlPTM2MCx0Kz10PDA/MzYwOjA7dmFyIHI9TWF0aC5mbG9vcih0LzIwKSxuPXQlMjA7cmV0dXJuIHRoaXMubmV3RGF0ZShlLHIsbil9fSksbi5jYWxlbmRhcnMubWF5YW49aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU2NDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyO3ZhciBvPW4uaW5zdGFuY2UoImdyZWdvcmlhbiIpO2EoaS5wcm90b3R5cGUse25hbWU6Ik5hbmFrc2hhaGkiLGpkRXBvY2g6MjI1NzY3My41LGRheXNQZXJNb250aDpbMzEsMzEsMzEsMzEsMzEsMzAsMzAsMzAsMzAsMzAsMzAsMzBdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6Ik5hbmFrc2hhaGkiLGVwb2NoczpbIkJOIiwiQU4iXSxtb250aE5hbWVzOlsiQ2hldCIsIlZhaXNha2giLCJKZXRoIiwiSGFyaCIsIlNhd2FuIiwiQmhhZG9uIiwiQXNzdSIsIkthdGFrIiwiTWFnaGFyIiwiUG9oIiwiTWFnaCIsIlBoYWd1biJdLG1vbnRoTmFtZXNTaG9ydDpbIkNoZSIsIlZhaSIsIkpldCIsIkhhciIsIlNhdyIsIkJoYSIsIkFzcyIsIkthdCIsIk1nciIsIlBvaCIsIk1naCIsIlBoYSJdLGRheU5hbWVzOlsiU29tdmFhciIsIk1hbmdhbHZhciIsIkJ1ZGh2YWFyIiwiVmVlcnZhYXIiLCJTaHVrYXJ2YWFyIiwiU2FuaWNoYXJ2YWFyIiwiRXR2YWFyIl0sZGF5TmFtZXNTaG9ydDpbIlNvbSIsIk1hbmdhbCIsIkJ1ZGgiLCJWZWVyIiwiU2h1a2FyIiwiU2FuaWNoYXIiLCJFdCJdLGRheU5hbWVzTWluOlsiU28iLCJNYSIsIkJ1IiwiVmUiLCJTaCIsIlNhIiwiRXQiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJkZC1tbS15eXl5IixmaXJzdERheTowLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXJ8fG4ucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkWWVhcik7cmV0dXJuIG8ubGVhcFllYXIoZS55ZWFyKCkrKGUueWVhcigpPDE/MTowKSsxNDY5KX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoMS0obi5kYXlPZldlZWsoKXx8NyksImQiKSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdKygxMj09PXIubW9udGgoKSYmdGhpcy5sZWFwWWVhcihyLnllYXIoKSk/MTowKX0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJuKHRoaXMuZGF5T2ZXZWVrKHQsZSxyKXx8Nyk8Nn0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkTW9udGgpOyh0PWEueWVhcigpKTwwJiZ0Kys7Zm9yKHZhciBpPWEuZGF5KCkscz0xO3M8YS5tb250aCgpO3MrKylpKz10aGlzLmRheXNQZXJNb250aFtzLTFdO3JldHVybiBpK28udG9KRCh0KzE0NjgsMywxMyl9LGZyb21KRDpmdW5jdGlvbih0KXt0PU1hdGguZmxvb3IodCsuNSk7Zm9yKHZhciBlPU1hdGguZmxvb3IoKHQtKHRoaXMuamRFcG9jaC0xKSkvMzY2KTt0Pj10aGlzLnRvSkQoZSsxLDEsMSk7KWUrKztmb3IodmFyIHI9dC1NYXRoLmZsb29yKHRoaXMudG9KRChlLDEsMSkrLjUpKzEsbj0xO3I+dGhpcy5kYXlzSW5Nb250aChlLG4pOylyLT10aGlzLmRheXNJbk1vbnRoKGUsbiksbisrO3JldHVybiB0aGlzLm5ld0RhdGUoZSxuLHIpfX0pLG4uY2FsZW5kYXJzLm5hbmFrc2hhaGk9aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU2NTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGEoaS5wcm90b3R5cGUse25hbWU6Ik5lcGFsaSIsamRFcG9jaDoxNzAwNzA5LjUsZGF5c1Blck1vbnRoOlszMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0saGFzWWVhclplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEsZGF5c1BlclllYXI6MzY1LHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6Ik5lcGFsaSIsZXBvY2hzOlsiQkJTIiwiQUJTIl0sbW9udGhOYW1lczpbIkJhaXNha2giLCJKZXN0aGEiLCJBc2hhZGgiLCJTaHJhd2FuIiwiQmhhZHJhIiwiQXNod2luIiwiS2FydGlrIiwiTWFuZ3NpciIsIlBhdXNoIiwiTWFuZ2giLCJGYWxndW4iLCJDaGFpdHJhIl0sbW9udGhOYW1lc1Nob3J0OlsiQmFpIiwiSmUiLCJBcyIsIlNocmEiLCJCaGEiLCJBc2giLCJLYXIiLCJNYW5nIiwiUGF1IiwiTWEiLCJGYWwiLCJDaGFpIl0sZGF5TmFtZXM6WyJBYWl0YWJhYXIiLCJTb21iYWFyIiwiTWFuZ2xiYWFyIiwiQnVkaGFiYWFyIiwiQmloaWJhYXIiLCJTaHVrcmFiYWFyIiwiU2hhbmliYWFyIl0sZGF5TmFtZXNTaG9ydDpbIkFhaXRhIiwiU29tIiwiTWFuZ2wiLCJCdWRoYSIsIkJpaGkiLCJTaHVrcmEiLCJTaGFuaSJdLGRheU5hbWVzTWluOlsiQWFpIiwiU28iLCJNYW4iLCJCdSIsIkJpIiwiU2h1IiwiU2hhIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoiZGQvbW0veXl5eSIsZmlyc3REYXk6MSxpc1JUTDohMX19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRheXNJblllYXIodCkhPT10aGlzLmRheXNQZXJZZWFyfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUodCxlLHIpO3JldHVybiBuLmFkZCgtbi5kYXlPZldlZWsoKSwiZCIpLE1hdGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkvNykrMX0sZGF5c0luWWVhcjpmdW5jdGlvbih0KXtpZih0PXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKS55ZWFyKCksInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW3RdKXJldHVybiB0aGlzLmRheXNQZXJZZWFyO2Zvcih2YXIgZT0wLHI9dGhpcy5taW5Nb250aDtyPD0xMjtyKyspZSs9dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVt0XVtyXTtyZXR1cm4gZX0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC55ZWFyJiYoZT10Lm1vbnRoKCksdD10LnllYXIoKSksdGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKSwidW5kZWZpbmVkIj09dHlwZW9mIHRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbdF0/dGhpcy5kYXlzUGVyTW9udGhbZS0xXTp0aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW3RdW2VdfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gNiE9PXRoaXMuZGF5T2ZXZWVrKHQsZSxyKX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7dD1hLnllYXIoKSxlPWEubW9udGgoKSxyPWEuZGF5KCk7dmFyIGk9bi5pbnN0YW5jZSgpLG89MCxzPWUsbD10O3RoaXMuX2NyZWF0ZU1pc3NpbmdDYWxlbmRhckRhdGEodCk7dmFyIGM9dC0ocz45fHw5PT09cyYmcj49dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVtsXVswXT81Njo1Nyk7Zm9yKDkhPT1lJiYobz1yLHMtLSk7OSE9PXM7KXM8PTAmJihzPTEyLGwtLSksbys9dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVtsXVtzXSxzLS07cmV0dXJuIDk9PT1lPyhvKz1yLXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbbF1bMF0pPDAmJihvKz1pLmRheXNJblllYXIoYykpOm8rPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbbF1bOV0tdGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVtsXVswXSxpLm5ld0RhdGUoYywxLDEpLmFkZChvLCJkIikudG9KRCgpfSxmcm9tSkQ6ZnVuY3Rpb24odCl7dmFyIGU9bi5pbnN0YW5jZSgpLmZyb21KRCh0KSxyPWUueWVhcigpLGE9ZS5kYXlPZlllYXIoKSxpPXIrNTY7dGhpcy5fY3JlYXRlTWlzc2luZ0NhbGVuZGFyRGF0YShpKTtmb3IodmFyIG89OSxzPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbaV1bMF0sbD10aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW2ldW29dLXMrMTthPmw7KSsrbz4xMiYmKG89MSxpKyspLGwrPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbaV1bb107dmFyIGM9dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVtpXVtvXS0obC1hKTtyZXR1cm4gdGhpcy5uZXdEYXRlKGksbyxjKX0sX2NyZWF0ZU1pc3NpbmdDYWxlbmRhckRhdGE6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kYXlzUGVyTW9udGguc2xpY2UoMCk7ZS51bnNoaWZ0KDE3KTtmb3IodmFyIHI9dC0xO3I8dCsyO3IrKykidW5kZWZpbmVkIj09dHlwZW9mIHRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbcl0mJih0aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW3JdPWUpfSxORVBBTElfQ0FMRU5EQVJfREFUQTp7MTk3MDpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5NzE6WzE4LDMxLDMxLDMyLDMxLDMyLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTcyOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMF0sMTk3MzpbMTksMzAsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDE5NzQ6WzE5LDMxLDMxLDMyLDMwLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTc1OlsxOCwzMSwzMSwzMiwzMiwzMCwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk3NjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDE5Nzc6WzE4LDMxLDMyLDMxLDMyLDMxLDMxLDI5LDMwLDI5LDMwLDI5LDMxXSwxOTc4OlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk3OTpbMTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDE5ODA6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwxOTgxOlsxOCwzMSwzMSwzMSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwzMCwzMF0sMTk4MjpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5ODM6WzE4LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTg0OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMTk4NTpbMTgsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAsMzAsMjksMzAsMzBdLDE5ODY6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTg3OlsxOCwzMSwzMiwzMSwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMTk4ODpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDE5ODk6WzE4LDMxLDMxLDMxLDMyLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTkwOlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk5MTpbMTgsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDE5OTI6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDI5LDMxXSwxOTkzOlsxOCwzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk5NDpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5OTU6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMwXSwxOTk2OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMTk5NzpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5OTg6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTk5OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMjAwMDpbMTcsMzAsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDIwMDE6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDAyOlsxOCwzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjAwMzpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwMDQ6WzE3LDMwLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDI5LDMxXSwyMDA1OlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjAwNjpbMTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwMDc6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwyMDA4OlsxNywzMSwzMSwzMSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwyOSwzMV0sMjAwOTpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMTA6WzE4LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDExOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMjAxMjpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAsMzAsMjksMzAsMzBdLDIwMTM6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDE0OlsxOCwzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjAxNTpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwMTY6WzE3LDMxLDMxLDMxLDMyLDMxLDMxLDI5LDMwLDMwLDI5LDMwLDMwXSwyMDE3OlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjAxODpbMTgsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwMTk6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDI5LDMxXSwyMDIwOlsxNywzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjAyMTpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMjI6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMwXSwyMDIzOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMjAyNDpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMjU6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDI2OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMjAyNzpbMTcsMzAsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDIwMjg6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDI5OlsxOCwzMSwzMSwzMiwzMSwzMiwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjAzMDpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMzAsMzAsMzAsMzFdLDIwMzE6WzE3LDMxLDMyLDMxLDMyLDMxLDMxLDMxLDMxLDMxLDMxLDMxLDMxXSwyMDMyOlsxNywzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMl0sMjAzMzpbMTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwMzQ6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwyMDM1OlsxNywzMCwzMiwzMSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwyOSwzMV0sMjAzNjpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMzc6WzE4LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDM4OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMjAzOTpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAsMzAsMjksMzAsMzBdLDIwNDA6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDQxOlsxOCwzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA0MjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwNDM6WzE3LDMxLDMxLDMxLDMyLDMxLDMxLDI5LDMwLDMwLDI5LDMwLDMwXSwyMDQ0OlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA0NTpbMTgsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwNDY6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwyMDQ3OlsxNywzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA0ODpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNDk6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMwXSwyMDUwOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMjA1MTpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNTI6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDUzOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMF0sMjA1NDpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDIwNTU6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDMwLDI5LDMwXSwyMDU2OlsxNywzMSwzMSwzMiwzMSwzMiwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA1NzpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwNTg6WzE3LDMwLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDI5LDMxXSwyMDU5OlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA2MDpbMTcsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwNjE6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwyMDYyOlsxNywzMCwzMiwzMSwzMiwzMSwzMSwyOSwzMCwyOSwzMCwyOSwzMV0sMjA2MzpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNjQ6WzE3LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDY1OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMjA2NjpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAsMzAsMjksMjksMzFdLDIwNjc6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDY4OlsxNywzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA2OTpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwNzA6WzE3LDMxLDMxLDMxLDMyLDMxLDMxLDI5LDMwLDMwLDI5LDMwLDMwXSwyMDcxOlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA3MjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwNzM6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwyMDc0OlsxNywzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA3NTpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNzY6WzE2LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMwXSwyMDc3OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMjA3ODpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNzk6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDgwOlsxNiwzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMF0sMjA4MTpbMTcsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMzAsMjksMzAsMzAsMzBdLDIwODI6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDgzOlsxNywzMSwzMSwzMiwzMSwzMSwzMCwzMCwzMCwyOSwzMCwzMCwzMF0sMjA4NDpbMTcsMzEsMzEsMzIsMzEsMzEsMzAsMzAsMzAsMjksMzAsMzAsMzBdLDIwODU6WzE3LDMxLDMyLDMxLDMyLDMxLDMxLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDg2OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwzMCwzMF0sMjA4NzpbMTYsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMzAsMjksMzAsMzAsMzBdLDIwODg6WzE2LDMwLDMxLDMyLDMyLDMwLDMxLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDg5OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwzMCwzMF0sMjA5MDpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMzAsMzBdLDIwOTE6WzE2LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDkyOlsxNiwzMSwzMSwzMiwzMiwzMSwzMCwzMCwzMCwyOSwzMCwzMCwzMF0sMjA5MzpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMzAsMzBdLDIwOTQ6WzE3LDMxLDMxLDMyLDMxLDMxLDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDk1OlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwzMCwzMCwzMF0sMjA5NjpbMTcsMzAsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwOTc6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDk4OlsxNywzMSwzMSwzMiwzMSwzMSwzMSwyOSwzMCwyOSwzMCwzMCwzMV0sMjA5OTpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMjksMzAsMzAsMzBdLDIxMDA6WzE3LDMxLDMyLDMxLDMyLDMwLDMxLDMwLDI5LDMwLDI5LDMwLDMwXX19KSxuLmNhbGVuZGFycy5uZXBhbGk9aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU2NjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0LWUqTWF0aC5mbG9vcih0L2UpfWkucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixhKGkucHJvdG90eXBlLHtuYW1lOiJQZXJzaWFuIixqZEVwb2NoOjE5NDgzMjAuNSxkYXlzUGVyTW9udGg6WzMxLDMxLDMxLDMxLDMxLDMxLDMwLDMwLDMwLDMwLDMwLDI5XSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJQZXJzaWFuIixlcG9jaHM6WyJCUCIsIkFQIl0sbW9udGhOYW1lczpbIkZhcnZhcmRpbiIsIk9yZGliZWhlc2h0IiwiS2hvcmRhZCIsIlRpciIsIk1vcmRhZCIsIlNoYWhyaXZhciIsIk1laHIiLCJBYmFuIiwiQXphciIsIkRheSIsIkJhaG1hbiIsIkVzZmFuZCJdLG1vbnRoTmFtZXNTaG9ydDpbIkZhciIsIk9yZCIsIktobyIsIlRpciIsIk1vciIsIlNoYSIsIk1laCIsIkFiYSIsIkF6YSIsIkRheSIsIkJhaCIsIkVzZiJdLGRheU5hbWVzOlsiWWVrc2hhbWJlIiwiRG9zaGFtYmUiLCJTZXNoYW1iZSIsIkNoXHhlNmhhcnNoYW1iZSIsIlBhbmpzaGFtYmUiLCJKb20nZSIsIlNoYW1iZSJdLGRheU5hbWVzU2hvcnQ6WyJZZWsiLCJEbyIsIlNlIiwiQ2hceGU2IiwiUGFuaiIsIkpvbSIsIlNoYSJdLGRheU5hbWVzTWluOlsiWWUiLCJEbyIsIlNlIiwiQ2giLCJQYSIsIkpvIiwiU2giXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJ5eXl5L21tL2RkIixmaXJzdERheTo2LGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpO3JldHVybiA2ODIqKChlLnllYXIoKS0oZS55ZWFyKCk+MD80NzQ6NDczKSklMjgyMCs0NzQrMzgpJTI4MTY8NjgyfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUodCxlLHIpO3JldHVybiBuLmFkZCgtKG4uZGF5T2ZXZWVrKCkrMSklNywiZCIpLE1hdGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkvNykrMX0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1vbnRoKCktMV0rKDEyPT09ci5tb250aCgpJiZ0aGlzLmxlYXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gNSE9PXRoaXMuZGF5T2ZXZWVrKHQsZSxyKX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7dD1hLnllYXIoKSxlPWEubW9udGgoKSxyPWEuZGF5KCk7dmFyIGk9dC0odD49MD80NzQ6NDczKSxzPTQ3NCtvKGksMjgyMCk7cmV0dXJuIHIrKGU8PTc/MzEqKGUtMSk6MzAqKGUtMSkrNikrTWF0aC5mbG9vcigoNjgyKnMtMTEwKS8yODE2KSszNjUqKHMtMSkrMTAyOTk4MypNYXRoLmZsb29yKGkvMjgyMCkrdGhpcy5qZEVwb2NoLTF9LGZyb21KRDpmdW5jdGlvbih0KXt2YXIgZT0odD1NYXRoLmZsb29yKHQpKy41KS10aGlzLnRvSkQoNDc1LDEsMSkscj1NYXRoLmZsb29yKGUvMTAyOTk4Myksbj1vKGUsMTAyOTk4MyksYT0yODIwO2lmKDEwMjk5ODIhPT1uKXt2YXIgaT1NYXRoLmZsb29yKG4vMzY2KSxzPW8obiwzNjYpO2E9TWF0aC5mbG9vcigoMjEzNCppKzI4MTYqcysyODE1KS8xMDI4NTIyKStpKzF9dmFyIGw9YSsyODIwKnIrNDc0O2w9bDw9MD9sLTE6bDt2YXIgYz10LXRoaXMudG9KRChsLDEsMSkrMSx1PWM8PTE4Nj9NYXRoLmNlaWwoYy8zMSk6TWF0aC5jZWlsKChjLTYpLzMwKSxoPXQtdGhpcy50b0pEKGwsdSwxKSsxO3JldHVybiB0aGlzLm5ld0RhdGUobCx1LGgpfX0pLG4uY2FsZW5kYXJzLnBlcnNpYW49aSxuLmNhbGVuZGFycy5qYWxhbGk9aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU2NzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKSxpPW4uaW5zdGFuY2UoKTtmdW5jdGlvbiBvKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19by5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGEoby5wcm90b3R5cGUse25hbWU6IlRhaXdhbiIsamRFcG9jaDoyNDE5NDAyLjUseWVhcnNPZmZzZXQ6MTkxMSxkYXlzUGVyTW9udGg6WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJUYWl3YW4iLGVwb2NoczpbIkJST0MiLCJST0MiXSxtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJ5eXl5L21tL2RkIixmaXJzdERheToxLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpO3Q9dGhpcy5fdDJnWWVhcihlLnllYXIoKSk7cmV0dXJuIGkubGVhcFllYXIodCl9LHdlZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKTt0PXRoaXMuX3QyZ1llYXIoYS55ZWFyKCkpO3JldHVybiBpLndlZWtPZlllYXIodCxhLm1vbnRoKCksYS5kYXkoKSl9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdKygyPT09ci5tb250aCgpJiZ0aGlzLmxlYXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odGhpcy5kYXlPZldlZWsodCxlLHIpfHw3KTw2fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTt0PXRoaXMuX3QyZ1llYXIoYS55ZWFyKCkpO3JldHVybiBpLnRvSkQodCxhLm1vbnRoKCksYS5kYXkoKSl9LGZyb21KRDpmdW5jdGlvbih0KXt2YXIgZT1pLmZyb21KRCh0KSxyPXRoaXMuX2cydFllYXIoZS55ZWFyKCkpO3JldHVybiB0aGlzLm5ld0RhdGUocixlLm1vbnRoKCksZS5kYXkoKSl9LF90MmdZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0K3RoaXMueWVhcnNPZmZzZXQrKHQ+PS10aGlzLnllYXJzT2Zmc2V0JiZ0PD0tMT8xOjApfSxfZzJ0WWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdC10aGlzLnllYXJzT2Zmc2V0LSh0Pj0xJiZ0PD10aGlzLnllYXJzT2Zmc2V0PzE6MCl9fSksbi5jYWxlbmRhcnMudGFpd2FuPW99LHsiLi4vbWFpbiI6NTcwLCJvYmplY3QtYXNzaWduIjo0NTZ9XSw1Njg6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIiksaT1uLmluc3RhbmNlKCk7ZnVuY3Rpb24gbyh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfW8ucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixhKG8ucHJvdG90eXBlLHtuYW1lOiJUaGFpIixqZEVwb2NoOjE1MjMwOTguNSx5ZWFyc09mZnNldDo1NDMsZGF5c1Blck1vbnRoOlszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0saGFzWWVhclplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEscmVnaW9uYWxPcHRpb25zOnsiIjp7bmFtZToiVGhhaSIsZXBvY2hzOlsiQkJFIiwiQkUiXSxtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJkZC9tbS95eXl5IixmaXJzdERheTowLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpO3Q9dGhpcy5fdDJnWWVhcihlLnllYXIoKSk7cmV0dXJuIGkubGVhcFllYXIodCl9LHdlZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKTt0PXRoaXMuX3QyZ1llYXIoYS55ZWFyKCkpO3JldHVybiBpLndlZWtPZlllYXIodCxhLm1vbnRoKCksYS5kYXkoKSl9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdKygyPT09ci5tb250aCgpJiZ0aGlzLmxlYXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odGhpcy5kYXlPZldlZWsodCxlLHIpfHw3KTw2fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTt0PXRoaXMuX3QyZ1llYXIoYS55ZWFyKCkpO3JldHVybiBpLnRvSkQodCxhLm1vbnRoKCksYS5kYXkoKSl9LGZyb21KRDpmdW5jdGlvbih0KXt2YXIgZT1pLmZyb21KRCh0KSxyPXRoaXMuX2cydFllYXIoZS55ZWFyKCkpO3JldHVybiB0aGlzLm5ld0RhdGUocixlLm1vbnRoKCksZS5kYXkoKSl9LF90MmdZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0LXRoaXMueWVhcnNPZmZzZXQtKHQ+PTEmJnQ8PXRoaXMueWVhcnNPZmZzZXQ/MTowKX0sX2cydFllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQrdGhpcy55ZWFyc09mZnNldCsodD49LXRoaXMueWVhcnNPZmZzZXQmJnQ8PS0xPzE6MCl9fSksbi5jYWxlbmRhcnMudGhhaT1vfSx7Ii4uL21haW4iOjU3MCwib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTY5OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGE9dCgib2JqZWN0LWFzc2lnbiIpO2Z1bmN0aW9uIGkodCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1pLnByb3RvdHlwZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShpLnByb3RvdHlwZSx7bmFtZToiVW1tQWxRdXJhIixoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJVbW0gYWwtUXVyYSIsZXBvY2hzOlsiQkgiLCJBSCJdLG1vbnRoTmFtZXM6WyJBbC1NdWhhcnJhbSIsIlNhZmFyIiwiUmFiaScgYWwtYXd3YWwiLCJSYWJpJyBBbC1UaGFuaSIsIkp1bWFkYSBBbC1Bd3dhbCIsIkp1bWFkYSBBbC1UaGFuaSIsIlJhamFiIiwiU2hhJ2FiYW4iLCJSYW1hZGFuIiwiU2hhd3dhbCIsIkRodSBhbC1RaSdkYWgiLCJEaHUgYWwtSGlqamFoIl0sbW9udGhOYW1lc1Nob3J0OlsiTXVoIiwiU2FmIiwiUmFiMSIsIlJhYjIiLCJKdW0xIiwiSnVtMiIsIlJhaiIsIlNoYSciLCJSYW0iLCJTaGF3IiwiRGh1USIsIkRodUgiXSxkYXlOYW1lczpbIllhd20gYWwtQWhhZCIsIllhd20gYWwtSXRobmFpbiIsIllhd20gYWwtVGhhbFx1MDEwMXRoXHUwMTAxXHUyMDE5IiwiWWF3bSBhbC1BcmJhXHUyMDE4XHUwMTAxXHUyMDE5IiwiWWF3bSBhbC1LaGFtXHUwMTJicyIsIllhd20gYWwtSnVtXHUyMDE4YSIsIllhd20gYWwtU2FidCJdLGRheU5hbWVzTWluOlsiQWgiLCJJdGgiLCJUaCIsIkFyIiwiS2giLCJKdSIsIlNhIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoieXl5eS9tbS9kZCIsZmlyc3REYXk6Nixpc1JUTDohMH19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKTtyZXR1cm4gMzU1PT09dGhpcy5kYXlzSW5ZZWFyKGUueWVhcigpKX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoLW4uZGF5T2ZXZWVrKCksImQiKSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJblllYXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj0xO3I8PTEyO3IrKyllKz10aGlzLmRheXNJbk1vbnRoKHQscik7cmV0dXJuIGV9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRNb250aCkudG9KRCgpLTI0ZTUrLjUsYT0wLGk9MDtpPG8ubGVuZ3RoO2krKyl7aWYob1tpXT5yKXJldHVybiBvW2FdLW9bYS0xXTthKyt9cmV0dXJuIDMwfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gNSE9PXRoaXMuZGF5T2ZXZWVrKHQsZSxyKX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSksaT0xMiooYS55ZWFyKCktMSkrYS5tb250aCgpLTE1MjkyO3JldHVybiBhLmRheSgpK29baS0xXS0xKzI0ZTUtLjV9LGZyb21KRDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC0yNGU1Ky41LHI9MCxuPTA7bjxvLmxlbmd0aCYmIShvW25dPmUpO24rKylyKys7dmFyIGE9cisxNTI5MixpPU1hdGguZmxvb3IoKGEtMSkvMTIpLHM9aSsxLGw9YS0xMippLGM9ZS1vW3ItMV0rMTtyZXR1cm4gdGhpcy5uZXdEYXRlKHMsbCxjKX0saXNWYWxpZDpmdW5jdGlvbih0LGUscil7dmFyIGE9bi5iYXNlQ2FsZW5kYXIucHJvdG90eXBlLmlzVmFsaWQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhJiYoYT0odD1udWxsIT10LnllYXI/dC55ZWFyOnQpPj0xMjc2JiZ0PD0xNTAwKSxhfSxfdmFsaWRhdGU6ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGk9bi5iYXNlQ2FsZW5kYXIucHJvdG90eXBlLl92YWxpZGF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoaS55ZWFyPDEyNzZ8fGkueWVhcj4xNTAwKXRocm93IGEucmVwbGFjZSgvXHswXH0vLHRoaXMubG9jYWwubmFtZSk7cmV0dXJuIGl9fSksbi5jYWxlbmRhcnMudW1tYWxxdXJhPWk7dmFyIG89WzIwLDUwLDc5LDEwOSwxMzgsMTY4LDE5NywyMjcsMjU2LDI4NiwzMTUsMzQ1LDM3NCw0MDQsNDMzLDQ2Myw0OTIsNTIyLDU1MSw1ODEsNjExLDY0MSw2NzAsNzAwLDcyOSw3NTksNzg4LDgxOCw4NDcsODc3LDkwNiw5MzYsOTY1LDk5NSwxMDI0LDEwNTQsMTA4MywxMTEzLDExNDIsMTE3MiwxMjAxLDEyMzEsMTI2MCwxMjkwLDEzMjAsMTM1MCwxMzc5LDE0MDksMTQzOCwxNDY4LDE0OTcsMTUyNywxNTU2LDE1ODYsMTYxNSwxNjQ1LDE2NzQsMTcwNCwxNzMzLDE3NjMsMTc5MiwxODIyLDE4NTEsMTg4MSwxOTEwLDE5NDAsMTk2OSwxOTk5LDIwMjgsMjA1OCwyMDg3LDIxMTcsMjE0NiwyMTc2LDIyMDUsMjIzNSwyMjY0LDIyOTQsMjMyMywyMzUzLDIzODMsMjQxMywyNDQyLDI0NzIsMjUwMSwyNTMxLDI1NjAsMjU5MCwyNjE5LDI2NDksMjY3OCwyNzA4LDI3MzcsMjc2NywyNzk2LDI4MjYsMjg1NSwyODg1LDI5MTQsMjk0NCwyOTczLDMwMDMsMzAzMiwzMDYyLDMwOTEsMzEyMSwzMTUwLDMxODAsMzIwOSwzMjM5LDMyNjgsMzI5OCwzMzI3LDMzNTcsMzM4NiwzNDE2LDM0NDYsMzQ3NiwzNTA1LDM1MzUsMzU2NCwzNTk0LDM2MjMsMzY1MywzNjgyLDM3MTIsMzc0MSwzNzcxLDM4MDAsMzgzMCwzODU5LDM4ODksMzkxOCwzOTQ4LDM5NzcsNDAwNyw0MDM2LDQwNjYsNDA5NSw0MTI1LDQxNTUsNDE4NSw0MjE0LDQyNDQsNDI3Myw0MzAzLDQzMzIsNDM2Miw0MzkxLDQ0MjEsNDQ1MCw0NDgwLDQ1MDksNDUzOSw0NTY4LDQ1OTgsNDYyNyw0NjU3LDQ2ODYsNDcxNiw0NzQ1LDQ3NzUsNDgwNCw0ODM0LDQ4NjMsNDg5Myw0OTIyLDQ5NTIsNDk4MSw1MDExLDUwNDAsNTA3MCw1MDk5LDUxMjksNTE1OCw1MTg4LDUyMTgsNTI0OCw1Mjc3LDUzMDcsNTMzNiw1MzY2LDUzOTUsNTQyNSw1NDU0LDU0ODQsNTUxMyw1NTQzLDU1NzIsNTYwMiw1NjMxLDU2NjEsNTY5MCw1NzIwLDU3NDksNTc3OSw1ODA4LDU4MzgsNTg2Nyw1ODk3LDU5MjYsNTk1Niw1OTg1LDYwMTUsNjA0NCw2MDc0LDYxMDMsNjEzMyw2MTYyLDYxOTIsNjIyMSw2MjUxLDYyODEsNjMxMSw2MzQwLDYzNzAsNjM5OSw2NDI5LDY0NTgsNjQ4OCw2NTE3LDY1NDcsNjU3Niw2NjA2LDY2MzUsNjY2NSw2Njk0LDY3MjQsNjc1Myw2NzgzLDY4MTIsNjg0Miw2ODcxLDY5MDEsNjkzMCw2OTYwLDY5ODksNzAxOSw3MDQ4LDcwNzgsNzEwNyw3MTM3LDcxNjYsNzE5Niw3MjI1LDcyNTUsNzI4NCw3MzE0LDczNDQsNzM3NCw3NDAzLDc0MzMsNzQ2Miw3NDkyLDc1MjEsNzU1MSw3NTgwLDc2MTAsNzYzOSw3NjY5LDc2OTgsNzcyOCw3NzU3LDc3ODcsNzgxNiw3ODQ2LDc4NzUsNzkwNSw3OTM0LDc5NjQsNzk5Myw4MDIzLDgwNTMsODA4Myw4MTEyLDgxNDIsODE3MSw4MjAxLDgyMzAsODI2MCw4Mjg5LDgzMTksODM0OCw4Mzc4LDg0MDcsODQzNyw4NDY2LDg0OTYsODUyNSw4NTU1LDg1ODQsODYxNCw4NjQzLDg2NzMsODcwMiw4NzMyLDg3NjEsODc5MSw4ODIxLDg4NTAsODg4MCw4OTA5LDg5MzgsODk2OCw4OTk3LDkwMjcsOTA1Niw5MDg2LDkxMTUsOTE0NSw5MTc1LDkyMDUsOTIzNCw5MjY0LDkyOTMsOTMyMiw5MzUyLDkzODEsOTQxMCw5NDQwLDk0NzAsOTQ5OSw5NTI5LDk1NTksOTU4OSw5NjE4LDk2NDgsOTY3Nyw5NzA2LDk3MzYsOTc2NSw5Nzk0LDk4MjQsOTg1Myw5ODgzLDk5MTMsOTk0Myw5OTcyLDEwMDAyLDEwMDMyLDEwMDYxLDEwMDkwLDEwMTIwLDEwMTQ5LDEwMTc4LDEwMjA4LDEwMjM3LDEwMjY3LDEwMjk3LDEwMzI2LDEwMzU2LDEwMzg2LDEwNDE1LDEwNDQ1LDEwNDc0LDEwNTA0LDEwNTMzLDEwNTYyLDEwNTkyLDEwNjIxLDEwNjUxLDEwNjgwLDEwNzEwLDEwNzQwLDEwNzcwLDEwNzk5LDEwODI5LDEwODU4LDEwODg4LDEwOTE3LDEwOTQ3LDEwOTc2LDExMDA1LDExMDM1LDExMDY0LDExMDk0LDExMTI0LDExMTUzLDExMTgzLDExMjEzLDExMjQyLDExMjcyLDExMzAxLDExMzMxLDExMzYwLDExMzg5LDExNDE5LDExNDQ4LDExNDc4LDExNTA3LDExNTM3LDExNTY3LDExNTk2LDExNjI2LDExNjU1LDExNjg1LDExNzE1LDExNzQ0LDExNzc0LDExODAzLDExODMyLDExODYyLDExODkxLDExOTIxLDExOTUwLDExOTgwLDEyMDEwLDEyMDM5LDEyMDY5LDEyMDk5LDEyMTI4LDEyMTU4LDEyMTg3LDEyMjE2LDEyMjQ2LDEyMjc1LDEyMzA0LDEyMzM0LDEyMzY0LDEyMzkzLDEyNDIzLDEyNDUzLDEyNDgzLDEyNTEyLDEyNTQyLDEyNTcxLDEyNjAwLDEyNjMwLDEyNjU5LDEyNjg4LDEyNzE4LDEyNzQ3LDEyNzc3LDEyODA3LDEyODM3LDEyODY2LDEyODk2LDEyOTI2LDEyOTU1LDEyOTg0LDEzMDE0LDEzMDQzLDEzMDcyLDEzMTAyLDEzMTMxLDEzMTYxLDEzMTkxLDEzMjIwLDEzMjUwLDEzMjgwLDEzMzEwLDEzMzM5LDEzMzY4LDEzMzk4LDEzNDI3LDEzNDU2LDEzNDg2LDEzNTE1LDEzNTQ1LDEzNTc0LDEzNjA0LDEzNjM0LDEzNjY0LDEzNjkzLDEzNzIzLDEzNzUyLDEzNzgyLDEzODExLDEzODQwLDEzODcwLDEzODk5LDEzOTI5LDEzOTU4LDEzOTg4LDE0MDE4LDE0MDQ3LDE0MDc3LDE0MTA3LDE0MTM2LDE0MTY2LDE0MTk1LDE0MjI0LDE0MjU0LDE0MjgzLDE0MzEzLDE0MzQyLDE0MzcyLDE0NDAxLDE0NDMxLDE0NDYxLDE0NDkwLDE0NTIwLDE0NTUwLDE0NTc5LDE0NjA5LDE0NjM4LDE0NjY3LDE0Njk3LDE0NzI2LDE0NzU2LDE0Nzg1LDE0ODE1LDE0ODQ0LDE0ODc0LDE0OTA0LDE0OTMzLDE0OTYzLDE0OTkzLDE1MDIxLDE1MDUxLDE1MDgxLDE1MTEwLDE1MTQwLDE1MTY5LDE1MTk5LDE1MjI4LDE1MjU4LDE1Mjg3LDE1MzE3LDE1MzQ3LDE1Mzc3LDE1NDA2LDE1NDM2LDE1NDY1LDE1NDk0LDE1NTI0LDE1NTUzLDE1NTgyLDE1NjEyLDE1NjQxLDE1NjcxLDE1NzAxLDE1NzMxLDE1NzYwLDE1NzkwLDE1ODIwLDE1ODQ5LDE1ODc4LDE1OTA4LDE1OTM3LDE1OTY2LDE1OTk2LDE2MDI1LDE2MDU1LDE2MDg1LDE2MTE0LDE2MTQ0LDE2MTc0LDE2MjA0LDE2MjMzLDE2MjYyLDE2MjkyLDE2MzIxLDE2MzUwLDE2MzgwLDE2NDA5LDE2NDM5LDE2NDY4LDE2NDk4LDE2NTI4LDE2NTU4LDE2NTg3LDE2NjE3LDE2NjQ2LDE2Njc2LDE2NzA1LDE2NzM0LDE2NzY0LDE2NzkzLDE2ODIzLDE2ODUyLDE2ODgyLDE2OTEyLDE2OTQxLDE2OTcxLDE3MDAxLDE3MDMwLDE3MDYwLDE3MDg5LDE3MTE4LDE3MTQ4LDE3MTc3LDE3MjA3LDE3MjM2LDE3MjY2LDE3Mjk1LDE3MzI1LDE3MzU1LDE3Mzg0LDE3NDE0LDE3NDQ0LDE3NDczLDE3NTAyLDE3NTMyLDE3NTYxLDE3NTkxLDE3NjIwLDE3NjUwLDE3Njc5LDE3NzA5LDE3NzM4LDE3NzY4LDE3Nzk4LDE3ODI3LDE3ODU3LDE3ODg2LDE3OTE2LDE3OTQ1LDE3OTc1LDE4MDA0LDE4MDM0LDE4MDYzLDE4MDkzLDE4MTIyLDE4MTUyLDE4MTgxLDE4MjExLDE4MjQxLDE4MjcwLDE4MzAwLDE4MzMwLDE4MzU5LDE4Mzg4LDE4NDE4LDE4NDQ3LDE4NDc2LDE4NTA2LDE4NTM1LDE4NTY1LDE4NTk1LDE4NjI1LDE4NjU0LDE4Njg0LDE4NzE0LDE4NzQzLDE4NzcyLDE4ODAyLDE4ODMxLDE4ODYwLDE4ODkwLDE4OTE5LDE4OTQ5LDE4OTc5LDE5MDA4LDE5MDM4LDE5MDY4LDE5MDk4LDE5MTI3LDE5MTU2LDE5MTg2LDE5MjE1LDE5MjQ0LDE5Mjc0LDE5MzAzLDE5MzMzLDE5MzYyLDE5MzkyLDE5NDIyLDE5NDUyLDE5NDgxLDE5NTExLDE5NTQwLDE5NTcwLDE5NTk5LDE5NjI4LDE5NjU4LDE5Njg3LDE5NzE3LDE5NzQ2LDE5Nzc2LDE5ODA2LDE5ODM2LDE5ODY1LDE5ODk1LDE5OTI0LDE5OTU0LDE5OTgzLDIwMDEyLDIwMDQyLDIwMDcxLDIwMTAxLDIwMTMwLDIwMTYwLDIwMTkwLDIwMjE5LDIwMjQ5LDIwMjc5LDIwMzA4LDIwMzM4LDIwMzY3LDIwMzk2LDIwNDI2LDIwNDU1LDIwNDg1LDIwNTE0LDIwNTQ0LDIwNTczLDIwNjAzLDIwNjMzLDIwNjYyLDIwNjkyLDIwNzIxLDIwNzUxLDIwNzgwLDIwODEwLDIwODM5LDIwODY5LDIwODk4LDIwOTI4LDIwOTU3LDIwOTg3LDIxMDE2LDIxMDQ2LDIxMDc2LDIxMTA1LDIxMTM1LDIxMTY0LDIxMTk0LDIxMjIzLDIxMjUzLDIxMjgyLDIxMzEyLDIxMzQxLDIxMzcxLDIxNDAwLDIxNDMwLDIxNDU5LDIxNDg5LDIxNTE5LDIxNTQ4LDIxNTc4LDIxNjA3LDIxNjM3LDIxNjY2LDIxNjk2LDIxNzI1LDIxNzU0LDIxNzg0LDIxODEzLDIxODQzLDIxODczLDIxOTAyLDIxOTMyLDIxOTYyLDIxOTkxLDIyMDIxLDIyMDUwLDIyMDgwLDIyMTA5LDIyMTM4LDIyMTY4LDIyMTk3LDIyMjI3LDIyMjU2LDIyMjg2LDIyMzE2LDIyMzQ2LDIyMzc1LDIyNDA1LDIyNDM0LDIyNDY0LDIyNDkzLDIyNTIyLDIyNTUyLDIyNTgxLDIyNjExLDIyNjQwLDIyNjcwLDIyNzAwLDIyNzMwLDIyNzU5LDIyNzg5LDIyODE4LDIyODQ4LDIyODc3LDIyOTA2LDIyOTM2LDIyOTY1LDIyOTk0LDIzMDI0LDIzMDU0LDIzMDgzLDIzMTEzLDIzMTQzLDIzMTczLDIzMjAyLDIzMjMyLDIzMjYxLDIzMjkwLDIzMzIwLDIzMzQ5LDIzMzc5LDIzNDA4LDIzNDM4LDIzNDY3LDIzNDk3LDIzNTI3LDIzNTU2LDIzNTg2LDIzNjE2LDIzNjQ1LDIzNjc0LDIzNzA0LDIzNzMzLDIzNzYzLDIzNzkyLDIzODIyLDIzODUxLDIzODgxLDIzOTEwLDIzOTQwLDIzOTcwLDIzOTk5LDI0MDI5LDI0MDU4LDI0MDg4LDI0MTE3LDI0MTQ3LDI0MTc2LDI0MjA2LDI0MjM1LDI0MjY1LDI0Mjk0LDI0MzI0LDI0MzUzLDI0MzgzLDI0NDEzLDI0NDQyLDI0NDcyLDI0NTAxLDI0NTMxLDI0NTYwLDI0NTkwLDI0NjE5LDI0NjQ4LDI0Njc4LDI0NzA3LDI0NzM3LDI0NzY3LDI0Nzk2LDI0ODI2LDI0ODU2LDI0ODg1LDI0OTE1LDI0OTQ0LDI0OTc0LDI1MDAzLDI1MDMyLDI1MDYyLDI1MDkxLDI1MTIxLDI1MTUwLDI1MTgwLDI1MjEwLDI1MjQwLDI1MjY5LDI1Mjk5LDI1MzI4LDI1MzU4LDI1Mzg3LDI1NDE2LDI1NDQ2LDI1NDc1LDI1NTA1LDI1NTM0LDI1NTY0LDI1NTk0LDI1NjI0LDI1NjUzLDI1NjgzLDI1NzEyLDI1NzQyLDI1NzcxLDI1ODAwLDI1ODMwLDI1ODU5LDI1ODg4LDI1OTE4LDI1OTQ4LDI1OTc3LDI2MDA3LDI2MDM3LDI2MDY3LDI2MDk2LDI2MTI2LDI2MTU1LDI2MTg0LDI2MjE0LDI2MjQzLDI2MjcyLDI2MzAyLDI2MzMyLDI2MzYxLDI2MzkxLDI2NDIxLDI2NDUxLDI2NDgwLDI2NTEwLDI2NTM5LDI2NTY4LDI2NTk4LDI2NjI3LDI2NjU2LDI2Njg2LDI2NzE1LDI2NzQ1LDI2Nzc1LDI2ODA1LDI2ODM0LDI2ODY0LDI2ODkzLDI2OTIzLDI2OTUyLDI2OTgyLDI3MDExLDI3MDQxLDI3MDcwLDI3MDk5LDI3MTI5LDI3MTU5LDI3MTg4LDI3MjE4LDI3MjQ4LDI3Mjc3LDI3MzA3LDI3MzM2LDI3MzY2LDI3Mzk1LDI3NDI1LDI3NDU0LDI3NDg0LDI3NTEzLDI3NTQyLDI3NTcyLDI3NjAyLDI3NjMxLDI3NjYxLDI3NjkxLDI3NzIwLDI3NzUwLDI3Nzc5LDI3ODA5LDI3ODM4LDI3ODY4LDI3ODk3LDI3OTI2LDI3OTU2LDI3OTg1LDI4MDE1LDI4MDQ1LDI4MDc0LDI4MTA0LDI4MTM0LDI4MTYzLDI4MTkzLDI4MjIyLDI4MjUyLDI4MjgxLDI4MzEwLDI4MzQwLDI4MzY5LDI4Mzk5LDI4NDI4LDI4NDU4LDI4NDg4LDI4NTE3LDI4NTQ3LDI4NTc3LDI4NjA3LDI4NjM2LDI4NjY1LDI4Njk1LDI4NzI0LDI4NzU0LDI4NzgzLDI4ODEzLDI4ODQzLDI4ODcyLDI4OTAxLDI4OTMxLDI4OTYwLDI4OTkwLDI5MDE5LDI5MDQ5LDI5MDc4LDI5MTA4LDI5MTM3LDI5MTY3LDI5MTk2LDI5MjI2LDI5MjU1LDI5Mjg1LDI5MzE1LDI5MzQ1LDI5Mzc1LDI5NDA0LDI5NDM0LDI5NDYzLDI5NDkyLDI5NTIyLDI5NTUxLDI5NTgwLDI5NjEwLDI5NjQwLDI5NjY5LDI5Njk5LDI5NzI5LDI5NzU5LDI5Nzg4LDI5ODE4LDI5ODQ3LDI5ODc2LDI5OTA2LDI5OTM1LDI5OTY0LDI5OTk0LDMwMDIzLDMwMDUzLDMwMDgyLDMwMTEyLDMwMTQxLDMwMTcxLDMwMjAwLDMwMjMwLDMwMjU5LDMwMjg5LDMwMzE4LDMwMzQ4LDMwMzc4LDMwNDA4LDMwNDM3LDMwNDY3LDMwNDk2LDMwNTI2LDMwNTU1LDMwNTg1LDMwNjE0LDMwNjQ0LDMwNjczLDMwNzAzLDMwNzMyLDMwNzYyLDMwNzkxLDMwODIxLDMwODUwLDMwODgwLDMwOTA5LDMwOTM5LDMwOTY4LDMwOTk4LDMxMDI3LDMxMDU3LDMxMDg2LDMxMTE2LDMxMTQ1LDMxMTc1LDMxMjA0LDMxMjM0LDMxMjYzLDMxMjkzLDMxMzIyLDMxMzUyLDMxMzgxLDMxNDExLDMxNDQxLDMxNDcxLDMxNTAwLDMxNTMwLDMxNTU5LDMxNTg5LDMxNjE4LDMxNjQ4LDMxNjc2LDMxNzA2LDMxNzM2LDMxNzY2LDMxNzk1LDMxODI1LDMxODU0LDMxODg0LDMxOTEzLDMxOTQzLDMxOTcyLDMyMDAyLDMyMDMxLDMyMDYxLDMyMDkwLDMyMTIwLDMyMTUwLDMyMTgwLDMyMjA5LDMyMjM5LDMyMjY4LDMyMjk4LDMyMzI3LDMyMzU3LDMyMzg2LDMyNDE2LDMyNDQ1LDMyNDc1LDMyNTA0LDMyNTM0LDMyNTYzLDMyNTkzLDMyNjIyLDMyNjUyLDMyNjgxLDMyNzExLDMyNzQwLDMyNzcwLDMyNzk5LDMyODI5LDMyODU4LDMyODg4LDMyOTE3LDMyOTQ3LDMyOTc2LDMzMDA2LDMzMDM1LDMzMDY1LDMzMDk0LDMzMTI0LDMzMTUzLDMzMTgzLDMzMjEzLDMzMjQzLDMzMjcyLDMzMzAyLDMzMzMxLDMzMzYxLDMzMzkwLDMzNDIwLDMzNDUwLDMzNDc5LDMzNTA5LDMzNTM5LDMzNTY4LDMzNTk4LDMzNjI3LDMzNjU3LDMzNjg2LDMzNzE2LDMzNzQ1LDMzNzc1LDMzODA0LDMzODM0LDMzODYzLDMzODkzLDMzOTIyLDMzOTUyLDMzOTgxLDM0MDExLDM0MDQwLDM0MDY5LDM0MDk5LDM0MTI4LDM0MTU4LDM0MTg3LDM0MjE3LDM0MjQ3LDM0Mjc3LDM0MzA2LDM0MzM2LDM0MzY1LDM0Mzk1LDM0NDI0LDM0NDU0LDM0NDgzLDM0NTEyLDM0NTQyLDM0NTcxLDM0NjAxLDM0NjMxLDM0NjYwLDM0NjkwLDM0NzE5LDM0NzQ5LDM0Nzc4LDM0ODA4LDM0ODM3LDM0ODY3LDM0ODk2LDM0OTI2LDM0OTU1LDM0OTg1LDM1MDE1LDM1MDQ0LDM1MDc0LDM1MTAzLDM1MTMzLDM1MTYyLDM1MTkyLDM1MjIyLDM1MjUxLDM1MjgwLDM1MzEwLDM1MzQwLDM1MzcwLDM1Mzk5LDM1NDI5LDM1NDU4LDM1NDg4LDM1NTE3LDM1NTQ3LDM1NTc2LDM1NjA1LDM1NjM1LDM1NjY1LDM1Njk0LDM1NzIzLDM1NzUzLDM1NzgyLDM1ODExLDM1ODQxLDM1ODcxLDM1OTAxLDM1OTMwLDM1OTYwLDM1OTg5LDM2MDE5LDM2MDQ4LDM2MDc4LDM2MTA3LDM2MTM2LDM2MTY2LDM2MTk1LDM2MjI1LDM2MjU0LDM2Mjg0LDM2MzE0LDM2MzQzLDM2MzczLDM2NDAzLDM2NDMzLDM2NDYyLDM2NDkyLDM2NTIxLDM2NTUxLDM2NTgwLDM2NjEwLDM2NjM5LDM2NjY5LDM2Njk4LDM2NzI4LDM2NzU3LDM2Nzg2LDM2ODE2LDM2ODQ1LDM2ODc1LDM2OTA0LDM2OTM0LDM2OTYzLDM2OTkzLDM3MDIyLDM3MDUyLDM3MDgxLDM3MTExLDM3MTQxLDM3MTcwLDM3MjAwLDM3MjI5LDM3MjU5LDM3Mjg4LDM3MzE4LDM3MzQ3LDM3Mzc3LDM3NDA2LDM3NDM2LDM3NDY1LDM3NDk1LDM3NTI0LDM3NTU0LDM3NTg0LDM3NjEzLDM3NjQzLDM3NjcyLDM3NzAxLDM3NzMxLDM3NzYwLDM3NzkwLDM3ODE5LDM3ODQ5LDM3ODc4LDM3OTA4LDM3OTM4LDM3OTY3LDM3OTk3LDM4MDI3LDM4MDU2LDM4MDg1LDM4MTE1LDM4MTQ0LDM4MTc0LDM4MjAzLDM4MjMzLDM4MjYyLDM4MjkyLDM4MzIyLDM4MzUxLDM4MzgxLDM4NDEwLDM4NDQwLDM4NDY5LDM4NDk5LDM4NTI4LDM4NTU4LDM4NTg3LDM4NjE3LDM4NjQ2LDM4Njc2LDM4NzA1LDM4NzM1LDM4NzY0LDM4Nzk0LDM4ODIzLDM4ODUzLDM4ODgyLDM4OTEyLDM4OTQxLDM4OTcxLDM5MDAxLDM5MDMwLDM5MDU5LDM5MDg5LDM5MTE4LDM5MTQ4LDM5MTc4LDM5MjA4LDM5MjM3LDM5MjY3LDM5Mjk3LDM5MzI2LDM5MzU1LDM5Mzg1LDM5NDE0LDM5NDQ0LDM5NDczLDM5NTAzLDM5NTMyLDM5NTYyLDM5NTkyLDM5NjIxLDM5NjUwLDM5NjgwLDM5NzA5LDM5NzM5LDM5NzY4LDM5Nzk4LDM5ODI3LDM5ODU3LDM5ODg2LDM5OTE2LDM5OTQ2LDM5OTc1LDQwMDA1LDQwMDM1LDQwMDY0LDQwMDk0LDQwMTIzLDQwMTUzLDQwMTgyLDQwMjEyLDQwMjQxLDQwMjcxLDQwMzAwLDQwMzMwLDQwMzU5LDQwMzg5LDQwNDE4LDQwNDQ4LDQwNDc3LDQwNTA3LDQwNTM2LDQwNTY2LDQwNTk1LDQwNjI1LDQwNjU1LDQwNjg1LDQwNzE0LDQwNzQ0LDQwNzczLDQwODAzLDQwODMyLDQwODYyLDQwODkyLDQwOTIxLDQwOTUxLDQwOTgwLDQxMDA5LDQxMDM5LDQxMDY4LDQxMDk4LDQxMTI3LDQxMTU3LDQxMTg2LDQxMjE2LDQxMjQ1LDQxMjc1LDQxMzA0LDQxMzM0LDQxMzY0LDQxMzkzLDQxNDIyLDQxNDUyLDQxNDgxLDQxNTExLDQxNTQwLDQxNTcwLDQxNTk5LDQxNjI5LDQxNjU4LDQxNjg4LDQxNzE4LDQxNzQ4LDQxNzc3LDQxODA3LDQxODM2LDQxODY1LDQxODk0LDQxOTI0LDQxOTUzLDQxOTgzLDQyMDEyLDQyMDQyLDQyMDcyLDQyMTAyLDQyMTMxLDQyMTYxLDQyMTkwLDQyMjIwLDQyMjQ5LDQyMjc5LDQyMzA4LDQyMzM3LDQyMzY3LDQyMzk3LDQyNDI2LDQyNDU2LDQyNDg1LDQyNTE1LDQyNTQ1LDQyNTc0LDQyNjA0LDQyNjMzLDQyNjYyLDQyNjkyLDQyNzIxLDQyNzUxLDQyNzgwLDQyODEwLDQyODM5LDQyODY5LDQyODk5LDQyOTI5LDQyOTU4LDQyOTg4LDQzMDE3LDQzMDQ2LDQzMDc2LDQzMTA1LDQzMTM1LDQzMTY0LDQzMTk0LDQzMjIzLDQzMjUzLDQzMjgzLDQzMzEyLDQzMzQyLDQzMzcxLDQzNDAxLDQzNDMwLDQzNDYwLDQzNDg5LDQzNTE5LDQzNTQ4LDQzNTc4LDQzNjA3LDQzNjM3LDQzNjY2LDQzNjk2LDQzNzI2LDQzNzU1LDQzNzg1LDQzODE0LDQzODQ0LDQzODczLDQzOTAzLDQzOTMyLDQzOTYyLDQzOTkxLDQ0MDIxLDQ0MDUwLDQ0MDgwLDQ0MTA5LDQ0MTM5LDQ0MTY5LDQ0MTk4LDQ0MjI4LDQ0MjU4LDQ0Mjg3LDQ0MzE3LDQ0MzQ2LDQ0Mzc1LDQ0NDA1LDQ0NDM0LDQ0NDY0LDQ0NDkzLDQ0NTIzLDQ0NTUzLDQ0NTgyLDQ0NjEyLDQ0NjQxLDQ0NjcxLDQ0NzAwLDQ0NzMwLDQ0NzU5LDQ0Nzg4LDQ0ODE4LDQ0ODQ3LDQ0ODc3LDQ0OTA2LDQ0OTM2LDQ0OTY2LDQ0OTk2LDQ1MDI1LDQ1MDU1LDQ1MDg0LDQ1MTE0LDQ1MTQzLDQ1MTcyLDQ1MjAyLDQ1MjMxLDQ1MjYxLDQ1MjkwLDQ1MzIwLDQ1MzUwLDQ1MzgwLDQ1NDA5LDQ1NDM5LDQ1NDY4LDQ1NDk4LDQ1NTI3LDQ1NTU2LDQ1NTg2LDQ1NjE1LDQ1NjQ0LDQ1Njc0LDQ1NzA0LDQ1NzMzLDQ1NzYzLDQ1NzkzLDQ1ODIzLDQ1ODUyLDQ1ODgyLDQ1OTExLDQ1OTQwLDQ1OTcwLDQ1OTk5LDQ2MDI4LDQ2MDU4LDQ2MDg4LDQ2MTE3LDQ2MTQ3LDQ2MTc3LDQ2MjA2LDQ2MjM2LDQ2MjY1LDQ2Mjk1LDQ2MzI0LDQ2MzU0LDQ2MzgzLDQ2NDEzLDQ2NDQyLDQ2NDcyLDQ2NTAxLDQ2NTMxLDQ2NTYwLDQ2NTkwLDQ2NjIwLDQ2NjQ5LDQ2Njc5LDQ2NzA4LDQ2NzM4LDQ2NzY3LDQ2Nzk3LDQ2ODI2LDQ2ODU2LDQ2ODg1LDQ2OTE1LDQ2OTQ0LDQ2OTc0LDQ3MDAzLDQ3MDMzLDQ3MDYzLDQ3MDkyLDQ3MTIyLDQ3MTUxLDQ3MTgxLDQ3MjEwLDQ3MjQwLDQ3MjY5LDQ3Mjk4LDQ3MzI4LDQ3MzU3LDQ3Mzg3LDQ3NDE3LDQ3NDQ2LDQ3NDc2LDQ3NTA2LDQ3NTM1LDQ3NTY1LDQ3NTk0LDQ3NjI0LDQ3NjUzLDQ3NjgyLDQ3NzEyLDQ3NzQxLDQ3NzcxLDQ3ODAwLDQ3ODMwLDQ3ODYwLDQ3ODkwLDQ3OTE5LDQ3OTQ5LDQ3OTc4LDQ4MDA4LDQ4MDM3LDQ4MDY2LDQ4MDk2LDQ4MTI1LDQ4MTU1LDQ4MTg0LDQ4MjE0LDQ4MjQ0LDQ4MjczLDQ4MzAzLDQ4MzMzLDQ4MzYyLDQ4MzkyLDQ4NDIxLDQ4NDUwLDQ4NDgwLDQ4NTA5LDQ4NTM4LDQ4NTY4LDQ4NTk4LDQ4NjI3LDQ4NjU3LDQ4Njg3LDQ4NzE3LDQ4NzQ2LDQ4Nzc2LDQ4ODA1LDQ4ODM0LDQ4ODY0LDQ4ODkzLDQ4OTIyLDQ4OTUyLDQ4OTgyLDQ5MDExLDQ5MDQxLDQ5MDcxLDQ5MTAwLDQ5MTMwLDQ5MTYwLDQ5MTg5LDQ5MjE4LDQ5MjQ4LDQ5Mjc3LDQ5MzA2LDQ5MzM2LDQ5MzY1LDQ5Mzk1LDQ5NDI1LDQ5NDU1LDQ5NDg0LDQ5NTE0LDQ5NTQzLDQ5NTczLDQ5NjAyLDQ5NjMyLDQ5NjYxLDQ5NjkwLDQ5NzIwLDQ5NzQ5LDQ5Nzc5LDQ5ODA5LDQ5ODM4LDQ5ODY4LDQ5ODk4LDQ5OTI3LDQ5OTU3LDQ5OTg2LDUwMDE2LDUwMDQ1LDUwMDc1LDUwMTA0LDUwMTMzLDUwMTYzLDUwMTkyLDUwMjIyLDUwMjUyLDUwMjgxLDUwMzExLDUwMzQwLDUwMzcwLDUwNDAwLDUwNDI5LDUwNDU5LDUwNDg4LDUwNTE4LDUwNTQ3LDUwNTc2LDUwNjA2LDUwNjM1LDUwNjY1LDUwNjk0LDUwNzI0LDUwNzU0LDUwNzg0LDUwODEzLDUwODQzLDUwODcyLDUwOTAyLDUwOTMxLDUwOTYwLDUwOTkwLDUxMDE5LDUxMDQ5LDUxMDc4LDUxMTA4LDUxMTM4LDUxMTY3LDUxMTk3LDUxMjI3LDUxMjU2LDUxMjg2LDUxMzE1LDUxMzQ1LDUxMzc0LDUxNDAzLDUxNDMzLDUxNDYyLDUxNDkyLDUxNTIyLDUxNTUyLDUxNTgyLDUxNjExLDUxNjQxLDUxNjcwLDUxNjk5LDUxNzI5LDUxNzU4LDUxNzg3LDUxODE2LDUxODQ2LDUxODc2LDUxOTA2LDUxOTM2LDUxOTY1LDUxOTk1LDUyMDI1LDUyMDU0LDUyMDgzLDUyMTEzLDUyMTQyLDUyMTcxLDUyMjAwLDUyMjMwLDUyMjYwLDUyMjkwLDUyMzE5LDUyMzQ5LDUyMzc5LDUyNDA4LDUyNDM4LDUyNDY3LDUyNDk3LDUyNTI2LDUyNTU1LDUyNTg1LDUyNjE0LDUyNjQ0LDUyNjczLDUyNzAzLDUyNzMzLDUyNzYyLDUyNzkyLDUyODIyLDUyODUxLDUyODgxLDUyOTEwLDUyOTM5LDUyOTY5LDUyOTk4LDUzMDI4LDUzMDU3LDUzMDg3LDUzMTE2LDUzMTQ2LDUzMTc2LDUzMjA1LDUzMjM1LDUzMjY0LDUzMjk0LDUzMzI0LDUzMzUzLDUzMzgzLDUzNDEyLDUzNDQxLDUzNDcxLDUzNTAwLDUzNTMwLDUzNTU5LDUzNTg5LDUzNjE5LDUzNjQ4LDUzNjc4LDUzNzA4LDUzNzM3LDUzNzY3LDUzNzk2LDUzODI1LDUzODU1LDUzODg0LDUzOTEzLDUzOTQzLDUzOTczLDU0MDAzLDU0MDMyLDU0MDYyLDU0MDkyLDU0MTIxLDU0MTUxLDU0MTgwLDU0MjA5LDU0MjM5LDU0MjY4LDU0Mjk3LDU0MzI3LDU0MzU3LDU0Mzg3LDU0NDE2LDU0NDQ2LDU0NDc2LDU0NTA1LDU0NTM1LDU0NTY0LDU0NTkzLDU0NjIzLDU0NjUyLDU0NjgxLDU0NzExLDU0NzQxLDU0NzcwLDU0ODAwLDU0ODMwLDU0ODU5LDU0ODg5LDU0OTE5LDU0OTQ4LDU0OTc3LDU1MDA3LDU1MDM2LDU1MDY2LDU1MDk1LDU1MTI1LDU1MTU0LDU1MTg0LDU1MjEzLDU1MjQzLDU1MjczLDU1MzAyLDU1MzMyLDU1MzYxLDU1MzkxLDU1NDIwLDU1NDUwLDU1NDc5LDU1NTA4LDU1NTM4LDU1NTY3LDU1NTk3LDU1NjI3LDU1NjU3LDU1Njg2LDU1NzE2LDU1NzQ1LDU1Nzc1LDU1ODA0LDU1ODM0LDU1ODYzLDU1ODkyLDU1OTIyLDU1OTUxLDU1OTgxLDU2MDExLDU2MDQwLDU2MDcwLDU2MTAwLDU2MTI5LDU2MTU5LDU2MTg4LDU2MjE4LDU2MjQ3LDU2Mjc2LDU2MzA2LDU2MzM1LDU2MzY1LDU2Mzk0LDU2NDI0LDU2NDU0LDU2NDgzLDU2NTEzLDU2NTQzLDU2NTcyLDU2NjAxLDU2NjMxLDU2NjYwLDU2NjkwLDU2NzE5LDU2NzQ5LDU2Nzc4LDU2ODA4LDU2ODM3LDU2ODY3LDU2ODk3LDU2OTI2LDU2OTU2LDU2OTg1LDU3MDE1LDU3MDQ0LDU3MDc0LDU3MTAzLDU3MTMzLDU3MTYyLDU3MTkyLDU3MjIxLDU3MjUxLDU3MjgwLDU3MzEwLDU3MzQwLDU3MzY5LDU3Mzk5LDU3NDI5LDU3NDU4LDU3NDg3LDU3NTE3LDU3NTQ2LDU3NTc2LDU3NjA1LDU3NjM0LDU3NjY0LDU3Njk0LDU3NzIzLDU3NzUzLDU3NzgzLDU3ODEzLDU3ODQyLDU3ODcxLDU3OTAxLDU3OTMwLDU3OTU5LDU3OTg5LDU4MDE4LDU4MDQ4LDU4MDc3LDU4MTA3LDU4MTM3LDU4MTY3LDU4MTk2LDU4MjI2LDU4MjU1LDU4Mjg1LDU4MzE0LDU4MzQzLDU4MzczLDU4NDAyLDU4NDMyLDU4NDYxLDU4NDkxLDU4NTIxLDU4NTUxLDU4NTgwLDU4NjEwLDU4NjM5LDU4NjY5LDU4Njk4LDU4NzI3LDU4NzU3LDU4Nzg2LDU4ODE2LDU4ODQ1LDU4ODc1LDU4OTA1LDU4OTM0LDU4OTY0LDU4OTk0LDU5MDIzLDU5MDUzLDU5MDgyLDU5MTExLDU5MTQxLDU5MTcwLDU5MjAwLDU5MjI5LDU5MjU5LDU5Mjg4LDU5MzE4LDU5MzQ4LDU5Mzc3LDU5NDA3LDU5NDM2LDU5NDY2LDU5NDk1LDU5NTI1LDU5NTU0LDU5NTg0LDU5NjEzLDU5NjQzLDU5NjcyLDU5NzAyLDU5NzMxLDU5NzYxLDU5NzkxLDU5ODIwLDU5ODUwLDU5ODc5LDU5OTA5LDU5OTM5LDU5OTY4LDU5OTk3LDYwMDI3LDYwMDU2LDYwMDg2LDYwMTE1LDYwMTQ1LDYwMTc0LDYwMjA0LDYwMjM0LDYwMjY0LDYwMjkzLDYwMzIzLDYwMzUyLDYwMzgxLDYwNDExLDYwNDQwLDYwNDY5LDYwNDk5LDYwNTI4LDYwNTU4LDYwNTg4LDYwNjE4LDYwNjQ4LDYwNjc3LDYwNzA3LDYwNzM2LDYwNzY1LDYwNzk1LDYwODI0LDYwODUzLDYwODgzLDYwOTEyLDYwOTQyLDYwOTcyLDYxMDAyLDYxMDMxLDYxMDYxLDYxMDkwLDYxMTIwLDYxMTQ5LDYxMTc5LDYxMjA4LDYxMjM3LDYxMjY3LDYxMjk2LDYxMzI2LDYxMzU2LDYxMzg1LDYxNDE1LDYxNDQ1LDYxNDc0LDYxNTA0LDYxNTMzLDYxNTYzLDYxNTkyLDYxNjIxLDYxNjUxLDYxNjgwLDYxNzEwLDYxNzM5LDYxNzY5LDYxNzk5LDYxODI4LDYxODU4LDYxODg4LDYxOTE3LDYxOTQ3LDYxOTc2LDYyMDA2LDYyMDM1LDYyMDY0LDYyMDk0LDYyMTIzLDYyMTUzLDYyMTgyLDYyMjEyLDYyMjQyLDYyMjcxLDYyMzAxLDYyMzMxLDYyMzYwLDYyMzkwLDYyNDE5LDYyNDQ4LDYyNDc4LDYyNTA3LDYyNTM3LDYyNTY2LDYyNTk2LDYyNjI1LDYyNjU1LDYyNjg1LDYyNzE1LDYyNzQ0LDYyNzc0LDYyODAzLDYyODMyLDYyODYyLDYyODkxLDYyOTIxLDYyOTUwLDYyOTgwLDYzMDA5LDYzMDM5LDYzMDY5LDYzMDk5LDYzMTI4LDYzMTU3LDYzMTg3LDYzMjE2LDYzMjQ2LDYzMjc1LDYzMzA1LDYzMzM0LDYzMzYzLDYzMzkzLDYzNDIzLDYzNDUzLDYzNDgyLDYzNTEyLDYzNTQxLDYzNTcxLDYzNjAwLDYzNjMwLDYzNjU5LDYzNjg5LDYzNzE4LDYzNzQ3LDYzNzc3LDYzODA3LDYzODM2LDYzODY2LDYzODk1LDYzOTI1LDYzOTU1LDYzOTg0LDY0MDE0LDY0MDQzLDY0MDczLDY0MTAyLDY0MTMxLDY0MTYxLDY0MTkwLDY0MjIwLDY0MjQ5LDY0Mjc5LDY0MzA5LDY0MzM5LDY0MzY4LDY0Mzk4LDY0NDI3LDY0NDU3LDY0NDg2LDY0NTE1LDY0NTQ1LDY0NTc0LDY0NjAzLDY0NjMzLDY0NjYzLDY0NjkyLDY0NzIyLDY0NzUyLDY0NzgyLDY0ODExLDY0ODQxLDY0ODcwLDY0ODk5LDY0OTI5LDY0OTU4LDY0OTg3LDY1MDE3LDY1MDQ3LDY1MDc2LDY1MTA2LDY1MTM2LDY1MTY2LDY1MTk1LDY1MjI1LDY1MjU0LDY1MjgzLDY1MzEzLDY1MzQyLDY1MzcxLDY1NDAxLDY1NDMxLDY1NDYwLDY1NDkwLDY1NTIwLDY1NTQ5LDY1NTc5LDY1NjA4LDY1NjM4LDY1NjY3LDY1Njk3LDY1NzI2LDY1NzU1LDY1Nzg1LDY1ODE1LDY1ODQ0LDY1ODc0LDY1OTAzLDY1OTMzLDY1OTYzLDY1OTkyLDY2MDIyLDY2MDUxLDY2MDgxLDY2MTEwLDY2MTQwLDY2MTY5LDY2MTk5LDY2MjI4LDY2MjU4LDY2Mjg3LDY2MzE3LDY2MzQ2LDY2Mzc2LDY2NDA1LDY2NDM1LDY2NDY1LDY2NDk0LDY2NTI0LDY2NTUzLDY2NTgzLDY2NjEyLDY2NjQxLDY2NjcxLDY2NzAwLDY2NzMwLDY2NzYwLDY2Nzg5LDY2ODE5LDY2ODQ5LDY2ODc4LDY2OTA4LDY2OTM3LDY2OTY3LDY2OTk2LDY3MDI1LDY3MDU1LDY3MDg0LDY3MTE0LDY3MTQzLDY3MTczLDY3MjAzLDY3MjMzLDY3MjYyLDY3MjkyLDY3MzIxLDY3MzUxLDY3MzgwLDY3NDA5LDY3NDM5LDY3NDY4LDY3NDk3LDY3NTI3LDY3NTU3LDY3NTg3LDY3NjE3LDY3NjQ2LDY3Njc2LDY3NzA1LDY3NzM1LDY3NzY0LDY3NzkzLDY3ODIzLDY3ODUyLDY3ODgyLDY3OTExLDY3OTQxLDY3OTcxLDY4ZTMsNjgwMzAsNjgwNjAsNjgwODksNjgxMTksNjgxNDgsNjgxNzcsNjgyMDcsNjgyMzYsNjgyNjYsNjgyOTUsNjgzMjUsNjgzNTQsNjgzODQsNjg0MTQsNjg0NDMsNjg0NzMsNjg1MDIsNjg1MzIsNjg1NjEsNjg1OTEsNjg2MjAsNjg2NTAsNjg2NzksNjg3MDgsNjg3MzgsNjg3NjgsNjg3OTcsNjg4MjcsNjg4NTcsNjg4ODYsNjg5MTYsNjg5NDYsNjg5NzUsNjkwMDQsNjkwMzQsNjkwNjMsNjkwOTIsNjkxMjIsNjkxNTIsNjkxODEsNjkyMTEsNjkyNDAsNjkyNzAsNjkzMDAsNjkzMzAsNjkzNTksNjkzODgsNjk0MTgsNjk0NDcsNjk0NzYsNjk1MDYsNjk1MzUsNjk1NjUsNjk1OTUsNjk2MjQsNjk2NTQsNjk2ODQsNjk3MTMsNjk3NDMsNjk3NzIsNjk4MDIsNjk4MzEsNjk4NjEsNjk4OTAsNjk5MTksNjk5NDksNjk5NzgsNzAwMDgsNzAwMzgsNzAwNjcsNzAwOTcsNzAxMjYsNzAxNTYsNzAxODYsNzAyMTUsNzAyNDUsNzAyNzQsNzAzMDMsNzAzMzMsNzAzNjIsNzAzOTIsNzA0MjEsNzA0NTEsNzA0ODEsNzA1MTAsNzA1NDAsNzA1NzAsNzA1OTksNzA2MjksNzA2NTgsNzA2ODcsNzA3MTcsNzA3NDYsNzA3NzYsNzA4MDUsNzA4MzUsNzA4NjQsNzA4OTQsNzA5MjQsNzA5NTQsNzA5ODMsNzEwMTMsNzEwNDIsNzEwNzEsNzExMDEsNzExMzAsNzExNTksNzExODksNzEyMTgsNzEyNDgsNzEyNzgsNzEzMDgsNzEzMzcsNzEzNjcsNzEzOTcsNzE0MjYsNzE0NTUsNzE0ODUsNzE1MTQsNzE1NDMsNzE1NzMsNzE2MDIsNzE2MzIsNzE2NjIsNzE2OTEsNzE3MjEsNzE3NTEsNzE3ODEsNzE4MTAsNzE4MzksNzE4NjksNzE4OTgsNzE5MjcsNzE5NTcsNzE5ODYsNzIwMTYsNzIwNDYsNzIwNzUsNzIxMDUsNzIxMzUsNzIxNjQsNzIxOTQsNzIyMjMsNzIyNTMsNzIyODIsNzIzMTEsNzIzNDEsNzIzNzAsNzI0MDAsNzI0MjksNzI0NTksNzI0ODksNzI1MTgsNzI1NDgsNzI1NzcsNzI2MDcsNzI2MzcsNzI2NjYsNzI2OTUsNzI3MjUsNzI3NTQsNzI3ODQsNzI4MTMsNzI4NDMsNzI4NzIsNzI5MDIsNzI5MzEsNzI5NjEsNzI5OTEsNzMwMjAsNzMwNTAsNzMwODAsNzMxMDksNzMxMzksNzMxNjgsNzMxOTcsNzMyMjcsNzMyNTYsNzMyODYsNzMzMTUsNzMzNDUsNzMzNzUsNzM0MDQsNzM0MzQsNzM0NjQsNzM0OTMsNzM1MjMsNzM1NTIsNzM1ODEsNzM2MTEsNzM2NDAsNzM2NjksNzM2OTksNzM3MjksNzM3NTgsNzM3ODgsNzM4MTgsNzM4NDgsNzM4NzcsNzM5MDcsNzM5MzYsNzM5NjUsNzM5OTUsNzQwMjQsNzQwNTMsNzQwODMsNzQxMTMsNzQxNDIsNzQxNzIsNzQyMDIsNzQyMzEsNzQyNjEsNzQyOTEsNzQzMjAsNzQzNDksNzQzNzksNzQ0MDgsNzQ0MzcsNzQ0NjcsNzQ0OTcsNzQ1MjYsNzQ1NTYsNzQ1ODYsNzQ2MTUsNzQ2NDUsNzQ2NzUsNzQ3MDQsNzQ3MzMsNzQ3NjMsNzQ3OTIsNzQ4MjIsNzQ4NTEsNzQ4ODEsNzQ5MTAsNzQ5NDAsNzQ5NjksNzQ5OTksNzUwMjksNzUwNTgsNzUwODgsNzUxMTcsNzUxNDcsNzUxNzYsNzUyMDYsNzUyMzUsNzUyNjQsNzUyOTQsNzUzMjMsNzUzNTMsNzUzODMsNzU0MTIsNzU0NDIsNzU0NzIsNzU1MDEsNzU1MzEsNzU1NjAsNzU1OTAsNzU2MTksNzU2NDgsNzU2NzgsNzU3MDcsNzU3MzcsNzU3NjYsNzU3OTYsNzU4MjYsNzU4NTYsNzU4ODUsNzU5MTUsNzU5NDQsNzU5NzQsNzYwMDMsNzYwMzIsNzYwNjIsNzYwOTEsNzYxMjEsNzYxNTAsNzYxODAsNzYyMTAsNzYyMzksNzYyNjksNzYyOTksNzYzMjgsNzYzNTgsNzYzODcsNzY0MTYsNzY0NDYsNzY0NzUsNzY1MDUsNzY1MzQsNzY1NjQsNzY1OTMsNzY2MjMsNzY2NTMsNzY2ODIsNzY3MTIsNzY3NDEsNzY3NzEsNzY4MDEsNzY4MzAsNzY4NTksNzY4ODksNzY5MTgsNzY5NDgsNzY5NzcsNzcwMDcsNzcwMzYsNzcwNjYsNzcwOTYsNzcxMjUsNzcxNTUsNzcxODUsNzcyMTQsNzcyNDMsNzcyNzMsNzczMDIsNzczMzIsNzczNjEsNzczOTAsNzc0MjAsNzc0NTAsNzc0NzksNzc1MDksNzc1MzksNzc1NjksNzc1OTgsNzc2MjcsNzc2NTcsNzc2ODYsNzc3MTUsNzc3NDUsNzc3NzQsNzc4MDQsNzc4MzMsNzc4NjMsNzc4OTMsNzc5MjMsNzc5NTIsNzc5ODIsNzgwMTEsNzgwNDEsNzgwNzAsNzgwOTksNzgxMjksNzgxNTgsNzgxODgsNzgyMTcsNzgyNDcsNzgyNzcsNzgzMDcsNzgzMzYsNzgzNjYsNzgzOTUsNzg0MjUsNzg0NTQsNzg0ODMsNzg1MTMsNzg1NDIsNzg1NzIsNzg2MDEsNzg2MzEsNzg2NjEsNzg2OTAsNzg3MjAsNzg3NTAsNzg3NzksNzg4MDgsNzg4MzgsNzg4NjcsNzg4OTcsNzg5MjYsNzg5NTYsNzg5ODUsNzkwMTUsNzkwNDQsNzkwNzQsNzkxMDQsNzkxMzMsNzkxNjMsNzkxOTIsNzkyMjIsNzkyNTEsNzkyODEsNzkzMTAsNzkzNDAsNzkzNjksNzkzOTksNzk0MjgsNzk0NTgsNzk0ODcsNzk1MTcsNzk1NDYsNzk1NzYsNzk2MDYsNzk2MzUsNzk2NjUsNzk2OTUsNzk3MjQsNzk3NTMsNzk3ODMsNzk4MTIsNzk4NDEsNzk4NzEsNzk5MDAsNzk5MzAsNzk5NjAsNzk5OTBdfSx7Ii4uL21haW4iOjU3MCwib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTcwOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgib2JqZWN0LWFzc2lnbiIpO2Z1bmN0aW9uIGEoKXt0aGlzLnJlZ2lvbmFsT3B0aW9ucz1bXSx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl09e2ludmFsaWRDYWxlbmRhcjoiQ2FsZW5kYXIgezB9IG5vdCBmb3VuZCIsaW52YWxpZERhdGU6IkludmFsaWQgezB9IGRhdGUiLGludmFsaWRNb250aDoiSW52YWxpZCB7MH0gbW9udGgiLGludmFsaWRZZWFyOiJJbnZhbGlkIHswfSB5ZWFyIixkaWZmZXJlbnRDYWxlbmRhcnM6IkNhbm5vdCBtaXggezB9IGFuZCB7MX0gZGF0ZXMifSx0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zWyIiXSx0aGlzLmNhbGVuZGFycz17fSx0aGlzLl9sb2NhbENhbHM9e319ZnVuY3Rpb24gaSh0LGUscixuKXtpZih0aGlzLl9jYWxlbmRhcj10LHRoaXMuX3llYXI9ZSx0aGlzLl9tb250aD1yLHRoaXMuX2RheT1uLDA9PT10aGlzLl9jYWxlbmRhci5fdmFsaWRhdGVMZXZlbCYmIXRoaXMuX2NhbGVuZGFyLmlzVmFsaWQodGhpcy5feWVhcix0aGlzLl9tb250aCx0aGlzLl9kYXkpKXRocm93KGMubG9jYWwuaW52YWxpZERhdGV8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkRGF0ZSkucmVwbGFjZSgvXHswXH0vLHRoaXMuX2NhbGVuZGFyLmxvY2FsLm5hbWUpfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4iMDAwMDAwIi5zdWJzdHJpbmcoMCxlLSh0PSIiK3QpLmxlbmd0aCkrdH1mdW5jdGlvbiBzKCl7dGhpcy5zaG9ydFllYXJDdXRvZmY9IisxMCJ9ZnVuY3Rpb24gbCh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3RdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19bihhLnByb3RvdHlwZSx7aW5zdGFuY2U6ZnVuY3Rpb24odCxlKXt0PSh0fHwiZ3JlZ29yaWFuIikudG9Mb3dlckNhc2UoKSxlPWV8fCIiO3ZhciByPXRoaXMuX2xvY2FsQ2Fsc1t0KyItIitlXTtpZighciYmdGhpcy5jYWxlbmRhcnNbdF0mJihyPW5ldyB0aGlzLmNhbGVuZGFyc1t0XShlKSx0aGlzLl9sb2NhbENhbHNbdCsiLSIrZV09ciksIXIpdGhyb3codGhpcy5sb2NhbC5pbnZhbGlkQ2FsZW5kYXJ8fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkQ2FsZW5kYXIpLnJlcGxhY2UoL1x7MFx9Lyx0KTtyZXR1cm4gcn0sbmV3RGF0ZTpmdW5jdGlvbih0LGUscixuLGEpe3JldHVybihuPShudWxsIT10JiZ0LnllYXI/dC5jYWxlbmRhcigpOiJzdHJpbmciPT10eXBlb2Ygbj90aGlzLmluc3RhbmNlKG4sYSk6bil8fHRoaXMuaW5zdGFuY2UoKSkubmV3RGF0ZSh0LGUscil9LHN1YnN0aXR1dGVEaWdpdHM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihlKyIiKS5yZXBsYWNlKC9bMC05XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9fSxzdWJzdGl0dXRlQ2hpbmVzZURpZ2l0czpmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtmb3IodmFyIG49IiIsYT0wO3I+MDspe3ZhciBpPXIlMTA7bj0oMD09PWk/IiI6dFtpXStlW2FdKStuLGErKyxyPU1hdGguZmxvb3Ioci8xMCl9cmV0dXJuIDA9PT1uLmluZGV4T2YodFsxXStlWzFdKSYmKG49bi5zdWJzdHIoMSkpLG58fHRbMF19fX0pLG4oaS5wcm90b3R5cGUse25ld0RhdGU6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLl9jYWxlbmRhci5uZXdEYXRlKG51bGw9PXQ/dGhpczp0LGUscil9LHllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX3llYXI6dGhpcy5zZXQodCwieSIpfSxtb250aDpmdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbW9udGg6dGhpcy5zZXQodCwibSIpfSxkYXk6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX2RheTp0aGlzLnNldCh0LCJkIil9LGRhdGU6ZnVuY3Rpb24odCxlLHIpe2lmKCF0aGlzLl9jYWxlbmRhci5pc1ZhbGlkKHQsZSxyKSl0aHJvdyhjLmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUpLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLl9jYWxlbmRhci5sb2NhbC5uYW1lKTtyZXR1cm4gdGhpcy5feWVhcj10LHRoaXMuX21vbnRoPWUsdGhpcy5fZGF5PXIsdGhpc30sbGVhcFllYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXIubGVhcFllYXIodGhpcyl9LGVwb2NoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmVwb2NoKHRoaXMpfSxmb3JtYXRZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmZvcm1hdFllYXIodGhpcyl9LG1vbnRoT2ZZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMpfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLndlZWtPZlllYXIodGhpcyl9LGRheXNJblllYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5c0luWWVhcih0aGlzKX0sZGF5T2ZZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mWWVhcih0aGlzKX0sZGF5c0luTW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5c0luTW9udGgodGhpcyl9LGRheU9mV2VlazpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZldlZWsodGhpcyl9LHdlZWtEYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXIud2Vla0RheSh0aGlzKX0sZXh0cmFJbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmV4dHJhSW5mbyh0aGlzKX0sYWRkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmFkZCh0aGlzLHQsZSl9LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jYWxlbmRhci5zZXQodGhpcyx0LGUpfSxjb21wYXJlVG86ZnVuY3Rpb24odCl7aWYodGhpcy5fY2FsZW5kYXIubmFtZSE9PXQuX2NhbGVuZGFyLm5hbWUpdGhyb3coYy5sb2NhbC5kaWZmZXJlbnRDYWxlbmRhcnN8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5kaWZmZXJlbnRDYWxlbmRhcnMpLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLl9jYWxlbmRhci5sb2NhbC5uYW1lKS5yZXBsYWNlKC9cezFcfS8sdC5fY2FsZW5kYXIubG9jYWwubmFtZSk7dmFyIGU9dGhpcy5feWVhciE9PXQuX3llYXI/dGhpcy5feWVhci10Ll95ZWFyOnRoaXMuX21vbnRoIT09dC5fbW9udGg/dGhpcy5tb250aE9mWWVhcigpLXQubW9udGhPZlllYXIoKTp0aGlzLl9kYXktdC5fZGF5O3JldHVybiAwPT09ZT8wOmU8MD8tMToxfSxjYWxlbmRhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhcn0sdG9KRDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci50b0pEKHRoaXMpfSxmcm9tSkQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmZyb21KRCh0KX0sdG9KU0RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXIudG9KU0RhdGUodGhpcyl9LGZyb21KU0RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmZyb21KU0RhdGUodCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMueWVhcigpPDA/Ii0iOiIiKStvKE1hdGguYWJzKHRoaXMueWVhcigpKSw0KSsiLSIrbyh0aGlzLm1vbnRoKCksMikrIi0iK28odGhpcy5kYXkoKSwyKX19KSxuKHMucHJvdG90eXBlLHtfdmFsaWRhdGVMZXZlbDowLG5ld0RhdGU6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBudWxsPT10P3RoaXMudG9kYXkoKToodC55ZWFyJiYodGhpcy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKSxyPXQuZGF5KCksZT10Lm1vbnRoKCksdD10LnllYXIoKSksbmV3IGkodGhpcyx0LGUscikpfSx0b2RheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZyb21KU0RhdGUobmV3IERhdGUpfSxlcG9jaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZFllYXJ8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkWWVhcikueWVhcigpPDA/dGhpcy5sb2NhbC5lcG9jaHNbMF06dGhpcy5sb2NhbC5lcG9jaHNbMV19LGZvcm1hdFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZFllYXJ8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkWWVhcik7cmV0dXJuKGUueWVhcigpPDA/Ii0iOiIiKStvKE1hdGguYWJzKGUueWVhcigpKSw0KX0sbW9udGhzSW5ZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksYy5sb2NhbC5pbnZhbGlkWWVhcnx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWRZZWFyKSwxMn0sbW9udGhPZlllYXI6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksYy5sb2NhbC5pbnZhbGlkTW9udGh8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkTW9udGgpO3JldHVybihyLm1vbnRoKCkrdGhpcy5tb250aHNJblllYXIociktdGhpcy5maXJzdE1vbnRoKSV0aGlzLm1vbnRoc0luWWVhcihyKSt0aGlzLm1pbk1vbnRofSxmcm9tTW9udGhPZlllYXI6ZnVuY3Rpb24odCxlKXt2YXIgcj0oZSt0aGlzLmZpcnN0TW9udGgtMip0aGlzLm1pbk1vbnRoKSV0aGlzLm1vbnRoc0luWWVhcih0KSt0aGlzLm1pbk1vbnRoO3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHIsdGhpcy5taW5EYXksYy5sb2NhbC5pbnZhbGlkTW9udGh8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkTW9udGgpLHJ9LGRheXNJblllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZFllYXJ8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkWWVhcik7cmV0dXJuIHRoaXMubGVhcFllYXIoZSk/MzY2OjM2NX0sZGF5T2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl92YWxpZGF0ZSh0LGUscixjLmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUpO3JldHVybiBuLnRvSkQoKS10aGlzLm5ld0RhdGUobi55ZWFyKCksdGhpcy5mcm9tTW9udGhPZlllYXIobi55ZWFyKCksdGhpcy5taW5Nb250aCksdGhpcy5taW5EYXkpLnRvSkQoKSsxfSxkYXlzSW5XZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDd9LGRheU9mV2VlazpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKTtyZXR1cm4oTWF0aC5mbG9vcih0aGlzLnRvSkQobikpKzIpJXRoaXMuZGF5c0luV2VlaygpfSxleHRyYUluZm86ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LGUscixjLmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUpLHt9fSxhZGQ6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKSx0aGlzLl9jb3JyZWN0QWRkKHQsdGhpcy5fYWRkKHQsZSxyKSxlLHIpfSxfYWRkOmZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLl92YWxpZGF0ZUxldmVsKyssImQiPT09cnx8InciPT09cil7dmFyIG49dC50b0pEKCkrZSooInciPT09cj90aGlzLmRheXNJbldlZWsoKToxKSxhPXQuY2FsZW5kYXIoKS5mcm9tSkQobik7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlTGV2ZWwtLSxbYS55ZWFyKCksYS5tb250aCgpLGEuZGF5KCldfXRyeXt2YXIgaT10LnllYXIoKSsoInkiPT09cj9lOjApLG89dC5tb250aE9mWWVhcigpKygibSI9PT1yP2U6MCk7YT10LmRheSgpOyJ5Ij09PXI/KHQubW9udGgoKSE9PXRoaXMuZnJvbU1vbnRoT2ZZZWFyKGksbykmJihvPXRoaXMubmV3RGF0ZShpLHQubW9udGgoKSx0aGlzLm1pbkRheSkubW9udGhPZlllYXIoKSksbz1NYXRoLm1pbihvLHRoaXMubW9udGhzSW5ZZWFyKGkpKSxhPU1hdGgubWluKGEsdGhpcy5kYXlzSW5Nb250aChpLHRoaXMuZnJvbU1vbnRoT2ZZZWFyKGksbykpKSk6Im0iPT09ciYmKCFmdW5jdGlvbih0KXtmb3IoO288dC5taW5Nb250aDspaS0tLG8rPXQubW9udGhzSW5ZZWFyKGkpO2Zvcih2YXIgZT10Lm1vbnRoc0luWWVhcihpKTtvPmUtMSt0Lm1pbk1vbnRoOylpKyssby09ZSxlPXQubW9udGhzSW5ZZWFyKGkpfSh0aGlzKSxhPU1hdGgubWluKGEsdGhpcy5kYXlzSW5Nb250aChpLHRoaXMuZnJvbU1vbnRoT2ZZZWFyKGksbykpKSk7dmFyIHM9W2ksdGhpcy5mcm9tTW9udGhPZlllYXIoaSxvKSxhXTtyZXR1cm4gdGhpcy5fdmFsaWRhdGVMZXZlbC0tLHN9Y2F0Y2godCl7dGhyb3cgdGhpcy5fdmFsaWRhdGVMZXZlbC0tLHR9fSxfY29ycmVjdEFkZDpmdW5jdGlvbih0LGUscixuKXtpZighKHRoaXMuaGFzWWVhclplcm98fCJ5IiE9PW4mJiJtIiE9PW58fDAhPT1lWzBdJiZ0LnllYXIoKT4wPT1lWzBdPjApKXt2YXIgYT17eTpbMSwxLCJ5Il0sbTpbMSx0aGlzLm1vbnRoc0luWWVhcigtMSksIm0iXSx3Olt0aGlzLmRheXNJbldlZWsoKSx0aGlzLmRheXNJblllYXIoLTEpLCJkIl0sZDpbMSx0aGlzLmRheXNJblllYXIoLTEpLCJkIl19W25dLGk9cjwwPy0xOjE7ZT10aGlzLl9hZGQodCxyKmFbMF0raSphWzFdLGFbMl0pfXJldHVybiB0LmRhdGUoZVswXSxlWzFdLGVbMl0pfSxzZXQ6ZnVuY3Rpb24odCxlLHIpe3RoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxjLmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUpO3ZhciBuPSJ5Ij09PXI/ZTp0LnllYXIoKSxhPSJtIj09PXI/ZTp0Lm1vbnRoKCksaT0iZCI9PT1yP2U6dC5kYXkoKTtyZXR1cm4ieSIhPT1yJiYibSIhPT1yfHwoaT1NYXRoLm1pbihpLHRoaXMuZGF5c0luTW9udGgobixhKSkpLHQuZGF0ZShuLGEsaSl9LGlzVmFsaWQ6ZnVuY3Rpb24odCxlLHIpe3RoaXMuX3ZhbGlkYXRlTGV2ZWwrKzt2YXIgbj10aGlzLmhhc1llYXJaZXJvfHwwIT09dDtpZihuKXt2YXIgYT10aGlzLm5ld0RhdGUodCxlLHRoaXMubWluRGF5KTtuPWU+PXRoaXMubWluTW9udGgmJmUtdGhpcy5taW5Nb250aDx0aGlzLm1vbnRoc0luWWVhcihhKSYmcj49dGhpcy5taW5EYXkmJnItdGhpcy5taW5EYXk8dGhpcy5kYXlzSW5Nb250aChhKX1yZXR1cm4gdGhpcy5fdmFsaWRhdGVMZXZlbC0tLG59LHRvSlNEYXRlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl92YWxpZGF0ZSh0LGUscixjLmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUpO3JldHVybiBjLmluc3RhbmNlKCkuZnJvbUpEKHRoaXMudG9KRChuKSkudG9KU0RhdGUoKX0sZnJvbUpTRGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mcm9tSkQoYy5pbnN0YW5jZSgpLmZyb21KU0RhdGUodCkudG9KRCgpKX0sX3ZhbGlkYXRlOmZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQueWVhcil7aWYoMD09PXRoaXMuX3ZhbGlkYXRlTGV2ZWwmJnRoaXMubmFtZSE9PXQuY2FsZW5kYXIoKS5uYW1lKXRocm93KGMubG9jYWwuZGlmZmVyZW50Q2FsZW5kYXJzfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uZGlmZmVyZW50Q2FsZW5kYXJzKS5yZXBsYWNlKC9cezBcfS8sdGhpcy5sb2NhbC5uYW1lKS5yZXBsYWNlKC9cezFcfS8sdC5jYWxlbmRhcigpLmxvY2FsLm5hbWUpO3JldHVybiB0fXRyeXtpZih0aGlzLl92YWxpZGF0ZUxldmVsKyssMT09PXRoaXMuX3ZhbGlkYXRlTGV2ZWwmJiF0aGlzLmlzVmFsaWQodCxlLHIpKXRocm93IG4ucmVwbGFjZSgvXHswXH0vLHRoaXMubG9jYWwubmFtZSk7dmFyIGE9dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gdGhpcy5fdmFsaWRhdGVMZXZlbC0tLGF9Y2F0Y2godCl7dGhyb3cgdGhpcy5fdmFsaWRhdGVMZXZlbC0tLHR9fX0pLGwucHJvdG90eXBlPW5ldyBzLG4obC5wcm90b3R5cGUse25hbWU6IkdyZWdvcmlhbiIsamRFcG9jaDoxNzIxNDI1LjUsZGF5c1Blck1vbnRoOlszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0saGFzWWVhclplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEscmVnaW9uYWxPcHRpb25zOnsiIjp7bmFtZToiR3JlZ29yaWFuIixlcG9jaHM6WyJCQ0UiLCJDRSJdLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6Im1tL2RkL3l5eXkiLGZpcnN0RGF5OjAsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksYy5sb2NhbC5pbnZhbGlkWWVhcnx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWRZZWFyKTtyZXR1cm4odD1lLnllYXIoKSsoZS55ZWFyKCk8MD8xOjApKSU0PT0wJiYodCUxMDAhPTB8fHQlNDAwPT0wKX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoNC0obi5kYXlPZldlZWsoKXx8NyksImQiKSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZE1vbnRofHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdKygyPT09ci5tb250aCgpJiZ0aGlzLmxlYXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odGhpcy5kYXlPZldlZWsodCxlLHIpfHw3KTw2fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl92YWxpZGF0ZSh0LGUscixjLmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUpO3Q9bi55ZWFyKCksZT1uLm1vbnRoKCkscj1uLmRheSgpLHQ8MCYmdCsrLGU8MyYmKGUrPTEyLHQtLSk7dmFyIGE9TWF0aC5mbG9vcih0LzEwMCksaT0yLWErTWF0aC5mbG9vcihhLzQpO3JldHVybiBNYXRoLmZsb29yKDM2NS4yNSoodCs0NzE2KSkrTWF0aC5mbG9vcigzMC42MDAxKihlKzEpKStyK2ktMTUyNC41fSxmcm9tSkQ6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5mbG9vcih0Ky41KSxyPU1hdGguZmxvb3IoKGUtMTg2NzIxNi4yNSkvMzY1MjQuMjUpLG49KHI9ZSsxK3ItTWF0aC5mbG9vcihyLzQpKSsxNTI0LGE9TWF0aC5mbG9vcigobi0xMjIuMSkvMzY1LjI1KSxpPU1hdGguZmxvb3IoMzY1LjI1KmEpLG89TWF0aC5mbG9vcigobi1pKS8zMC42MDAxKSxzPW4taS1NYXRoLmZsb29yKDMwLjYwMDEqbyksbD1vLShvPjEzLjU/MTM6MSksYz1hLShsPjIuNT80NzE2OjQ3MTUpO3JldHVybiBjPD0wJiZjLS0sdGhpcy5uZXdEYXRlKGMsbCxzKX0sdG9KU0RhdGU6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLGMubG9jYWwuaW52YWxpZERhdGV8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkRGF0ZSksYT1uZXcgRGF0ZShuLnllYXIoKSxuLm1vbnRoKCktMSxuLmRheSgpKTtyZXR1cm4gYS5zZXRIb3VycygwKSxhLnNldE1pbnV0ZXMoMCksYS5zZXRTZWNvbmRzKDApLGEuc2V0TWlsbGlzZWNvbmRzKDApLGEuc2V0SG91cnMoYS5nZXRIb3VycygpPjEyP2EuZ2V0SG91cnMoKSsyOjApLGF9LGZyb21KU0RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubmV3RGF0ZSh0LmdldEZ1bGxZZWFyKCksdC5nZXRNb250aCgpKzEsdC5nZXREYXRlKCkpfX0pO3ZhciBjPWUuZXhwb3J0cz1uZXcgYTtjLmNkYXRlPWksYy5iYXNlQ2FsZW5kYXI9cyxjLmNhbGVuZGFycy5ncmVnb3JpYW49bH0seyJvYmplY3QtYXNzaWduIjo0NTZ9XSw1NzE6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJvYmplY3QtYXNzaWduIiksYT10KCIuL21haW4iKTtuKGEucmVnaW9uYWxPcHRpb25zWyIiXSx7aW52YWxpZEFyZ3VtZW50czoiSW52YWxpZCBhcmd1bWVudHMiLGludmFsaWRGb3JtYXQ6IkNhbm5vdCBmb3JtYXQgYSBkYXRlIGZyb20gYW5vdGhlciBjYWxlbmRhciIsbWlzc2luZ051bWJlckF0OiJNaXNzaW5nIG51bWJlciBhdCBwb3NpdGlvbiB7MH0iLHVua25vd25OYW1lQXQ6IlVua25vd24gbmFtZSBhdCBwb3NpdGlvbiB7MH0iLHVuZXhwZWN0ZWRMaXRlcmFsQXQ6IlVuZXhwZWN0ZWQgbGl0ZXJhbCBhdCBwb3NpdGlvbiB7MH0iLHVuZXhwZWN0ZWRUZXh0OiJBZGRpdGlvbmFsIHRleHQgZm91bmQgYXQgZW5kIn0pLGEubG9jYWw9YS5yZWdpb25hbE9wdGlvbnNbIiJdLG4oYS5jZGF0ZS5wcm90b3R5cGUse2Zvcm1hdERhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihlPXQsdD0iIiksdGhpcy5fY2FsZW5kYXIuZm9ybWF0RGF0ZSh0fHwiIix0aGlzLGUpfX0pLG4oYS5iYXNlQ2FsZW5kYXIucHJvdG90eXBlLHtVTklYX0VQT0NIOmEuaW5zdGFuY2UoKS5uZXdEYXRlKDE5NzAsMSwxKS50b0pEKCksU0VDU19QRVJfREFZOjg2NDAwLFRJQ0tTX0VQT0NIOmEuaW5zdGFuY2UoKS5qZEVwb2NoLFRJQ0tTX1BFUl9EQVk6ODY0ZTksQVRPTToieXl5eS1tbS1kZCIsQ09PS0lFOiJELCBkZCBNIHl5eXkiLEZVTEw6IkRELCBNTSBkLCB5eXl5IixJU09fODYwMToieXl5eS1tbS1kZCIsSlVMSUFOOiJKIixSRkNfODIyOiJELCBkIE0geXkiLFJGQ184NTA6IkRELCBkZC1NLXl5IixSRkNfMTAzNjoiRCwgZCBNIHl5IixSRkNfMTEyMzoiRCwgZCBNIHl5eXkiLFJGQ18yODIyOiJELCBkIE0geXl5eSIsUlNTOiJELCBkIE0geXkiLFRJQ0tTOiIhIixUSU1FU1RBTVA6IkAiLFczQzoieXl5eS1tbS1kZCIsZm9ybWF0RGF0ZTpmdW5jdGlvbih0LGUscil7aWYoInN0cmluZyIhPXR5cGVvZiB0JiYocj1lLGU9dCx0PSIiKSwhZSlyZXR1cm4iIjtpZihlLmNhbGVuZGFyKCkhPT10aGlzKXRocm93IGEubG9jYWwuaW52YWxpZEZvcm1hdHx8YS5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWRGb3JtYXQ7dD10fHx0aGlzLmxvY2FsLmRhdGVGb3JtYXQ7Zm9yKHZhciBuLGksbyxzLGw9KHI9cnx8e30pLmRheU5hbWVzU2hvcnR8fHRoaXMubG9jYWwuZGF5TmFtZXNTaG9ydCxjPXIuZGF5TmFtZXN8fHRoaXMubG9jYWwuZGF5TmFtZXMsdT1yLm1vbnRoTnVtYmVyc3x8dGhpcy5sb2NhbC5tb250aE51bWJlcnMsaD1yLm1vbnRoTmFtZXNTaG9ydHx8dGhpcy5sb2NhbC5tb250aE5hbWVzU2hvcnQsZj1yLm1vbnRoTmFtZXN8fHRoaXMubG9jYWwubW9udGhOYW1lcyxwPShyLmNhbGN1bGF0ZVdlZWt8fHRoaXMubG9jYWwuY2FsY3VsYXRlV2VlayxmdW5jdGlvbihlLHIpe2Zvcih2YXIgbj0xO3crbjx0Lmxlbmd0aCYmdC5jaGFyQXQodytuKT09PWU7KW4rKztyZXR1cm4gdys9bi0xLE1hdGguZmxvb3Iobi8ocnx8MSkpPjF9KSxkPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPSIiK2U7aWYocCh0LG4pKWZvcig7YS5sZW5ndGg8cjspYT0iMCIrYTtyZXR1cm4gYX0sZz10aGlzLHY9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5jYWxsKGcsdCxwKCJtIikpOngoZCgibSIsdC5tb250aCgpLDIpKX0sbT1mdW5jdGlvbih0LGUpe3JldHVybiBlPyJmdW5jdGlvbiI9PXR5cGVvZiBmP2YuY2FsbChnLHQpOmZbdC5tb250aCgpLWcubWluTW9udGhdOiJmdW5jdGlvbiI9PXR5cGVvZiBoP2guY2FsbChnLHQpOmhbdC5tb250aCgpLWcubWluTW9udGhdfSx5PXRoaXMubG9jYWwuZGlnaXRzLHg9ZnVuY3Rpb24odCl7cmV0dXJuIHIubG9jYWxOdW1iZXJzJiZ5P3kodCk6dH0sYj0iIixfPSExLHc9MDt3PHQubGVuZ3RoO3crKylpZihfKSInIiE9PXQuY2hhckF0KHcpfHxwKCInIik/Yis9dC5jaGFyQXQodyk6Xz0hMTtlbHNlIHN3aXRjaCh0LmNoYXJBdCh3KSl7Y2FzZSJkIjpiKz14KGQoImQiLGUuZGF5KCksMikpO2JyZWFrO2Nhc2UiRCI6Yis9KG49IkQiLGk9ZS5kYXlPZldlZWsoKSxvPWwscz1jLHAobik/c1tpXTpvW2ldKTticmVhaztjYXNlIm8iOmIrPWQoIm8iLGUuZGF5T2ZZZWFyKCksMyk7YnJlYWs7Y2FzZSJ3IjpiKz1kKCJ3IixlLndlZWtPZlllYXIoKSwyKTticmVhaztjYXNlIm0iOmIrPXYoZSk7YnJlYWs7Y2FzZSJNIjpiKz1tKGUscCgiTSIpKTticmVhaztjYXNlInkiOmIrPXAoInkiLDIpP2UueWVhcigpOihlLnllYXIoKSUxMDA8MTA/IjAiOiIiKStlLnllYXIoKSUxMDA7YnJlYWs7Y2FzZSJZIjpwKCJZIiwyKSxiKz1lLmZvcm1hdFllYXIoKTticmVhaztjYXNlIkoiOmIrPWUudG9KRCgpO2JyZWFrO2Nhc2UiQCI6Yis9KGUudG9KRCgpLXRoaXMuVU5JWF9FUE9DSCkqdGhpcy5TRUNTX1BFUl9EQVk7YnJlYWs7Y2FzZSIhIjpiKz0oZS50b0pEKCktdGhpcy5USUNLU19FUE9DSCkqdGhpcy5USUNLU19QRVJfREFZO2JyZWFrO2Nhc2UiJyI6cCgiJyIpP2IrPSInIjpfPSEwO2JyZWFrO2RlZmF1bHQ6Yis9dC5jaGFyQXQodyl9cmV0dXJuIGJ9LHBhcnNlRGF0ZTpmdW5jdGlvbih0LGUscil7aWYobnVsbD09ZSl0aHJvdyBhLmxvY2FsLmludmFsaWRBcmd1bWVudHN8fGEucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkQXJndW1lbnRzO2lmKCIiPT09KGU9Im9iamVjdCI9PXR5cGVvZiBlP2UudG9TdHJpbmcoKTplKyIiKSlyZXR1cm4gbnVsbDt0PXR8fHRoaXMubG9jYWwuZGF0ZUZvcm1hdDt2YXIgbj0ocj1yfHx7fSkuc2hvcnRZZWFyQ3V0b2ZmfHx0aGlzLnNob3J0WWVhckN1dG9mZjtuPSJzdHJpbmciIT10eXBlb2Ygbj9uOnRoaXMudG9kYXkoKS55ZWFyKCklMTAwK3BhcnNlSW50KG4sMTApO2Zvcih2YXIgaT1yLmRheU5hbWVzU2hvcnR8fHRoaXMubG9jYWwuZGF5TmFtZXNTaG9ydCxvPXIuZGF5TmFtZXN8fHRoaXMubG9jYWwuZGF5TmFtZXMscz1yLnBhcnNlTW9udGh8fHRoaXMubG9jYWwucGFyc2VNb250aCxsPXIubW9udGhOdW1iZXJzfHx0aGlzLmxvY2FsLm1vbnRoTnVtYmVycyxjPXIubW9udGhOYW1lc1Nob3J0fHx0aGlzLmxvY2FsLm1vbnRoTmFtZXNTaG9ydCx1PXIubW9udGhOYW1lc3x8dGhpcy5sb2NhbC5tb250aE5hbWVzLGg9LTEsZj0tMSxwPS0xLGQ9LTEsZz0tMSx2PSExLG09ITEseT1mdW5jdGlvbihlLHIpe2Zvcih2YXIgbj0xO0Erbjx0Lmxlbmd0aCYmdC5jaGFyQXQoQStuKT09PWU7KW4rKztyZXR1cm4gQSs9bi0xLE1hdGguZmxvb3Iobi8ocnx8MSkpPjF9LHg9ZnVuY3Rpb24odCxyKXt2YXIgbj15KHQsciksaT1bMiwzLG4/NDoyLG4/NDoyLDEwLDExLDIwXVsib3lZSkAhIi5pbmRleE9mKHQpKzFdLG89bmV3IFJlZ0V4cCgiXi0/XFxkezEsIitpKyJ9Iikscz1lLnN1YnN0cmluZyhNKS5tYXRjaChvKTtpZighcyl0aHJvdyhhLmxvY2FsLm1pc3NpbmdOdW1iZXJBdHx8YS5yZWdpb25hbE9wdGlvbnNbIiJdLm1pc3NpbmdOdW1iZXJBdCkucmVwbGFjZSgvXHswXH0vLE0pO3JldHVybiBNKz1zWzBdLmxlbmd0aCxwYXJzZUludChzWzBdLDEwKX0sYj10aGlzLF89ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbCl7eSgibSIpO3ZhciB0PWwuY2FsbChiLGUuc3Vic3RyaW5nKE0pKTtyZXR1cm4gTSs9dC5sZW5ndGgsdH1yZXR1cm4geCgibSIpfSx3PWZ1bmN0aW9uKHQscixuLGkpe2Zvcih2YXIgbz15KHQsaSk/bjpyLHM9MDtzPG8ubGVuZ3RoO3MrKylpZihlLnN1YnN0cihNLG9bc10ubGVuZ3RoKS50b0xvd2VyQ2FzZSgpPT09b1tzXS50b0xvd2VyQ2FzZSgpKXJldHVybiBNKz1vW3NdLmxlbmd0aCxzK2IubWluTW9udGg7dGhyb3coYS5sb2NhbC51bmtub3duTmFtZUF0fHxhLnJlZ2lvbmFsT3B0aW9uc1siIl0udW5rbm93bk5hbWVBdCkucmVwbGFjZSgvXHswXH0vLE0pfSxrPWZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHUpe3ZhciB0PXkoIk0iKT91LmNhbGwoYixlLnN1YnN0cmluZyhNKSk6Yy5jYWxsKGIsZS5zdWJzdHJpbmcoTSkpO3JldHVybiBNKz10Lmxlbmd0aCx0fXJldHVybiB3KCJNIixjLHUpfSxUPWZ1bmN0aW9uKCl7aWYoZS5jaGFyQXQoTSkhPT10LmNoYXJBdChBKSl0aHJvdyhhLmxvY2FsLnVuZXhwZWN0ZWRMaXRlcmFsQXR8fGEucmVnaW9uYWxPcHRpb25zWyIiXS51bmV4cGVjdGVkTGl0ZXJhbEF0KS5yZXBsYWNlKC9cezBcfS8sTSk7TSsrfSxNPTAsQT0wO0E8dC5sZW5ndGg7QSsrKWlmKG0pIiciIT09dC5jaGFyQXQoQSl8fHkoIiciKT9UKCk6bT0hMTtlbHNlIHN3aXRjaCh0LmNoYXJBdChBKSl7Y2FzZSJkIjpkPXgoImQiKTticmVhaztjYXNlIkQiOncoIkQiLGksbyk7YnJlYWs7Y2FzZSJvIjpnPXgoIm8iKTticmVhaztjYXNlInciOngoInciKTticmVhaztjYXNlIm0iOnA9XygpO2JyZWFrO2Nhc2UiTSI6cD1rKCk7YnJlYWs7Y2FzZSJ5Ijp2YXIgUz1BO3Y9IXkoInkiLDIpLEE9UyxmPXgoInkiLDIpO2JyZWFrO2Nhc2UiWSI6Zj14KCJZIiwyKTticmVhaztjYXNlIkoiOmg9eCgiSiIpKy41LCIuIj09PWUuY2hhckF0KE0pJiYoTSsrLHgoIkoiKSk7YnJlYWs7Y2FzZSJAIjpoPXgoIkAiKS90aGlzLlNFQ1NfUEVSX0RBWSt0aGlzLlVOSVhfRVBPQ0g7YnJlYWs7Y2FzZSIhIjpoPXgoIiEiKS90aGlzLlRJQ0tTX1BFUl9EQVkrdGhpcy5USUNLU19FUE9DSDticmVhaztjYXNlIioiOk09ZS5sZW5ndGg7YnJlYWs7Y2FzZSInIjp5KCInIik/VCgpOm09ITA7YnJlYWs7ZGVmYXVsdDpUKCl9aWYoTTxlLmxlbmd0aCl0aHJvdyBhLmxvY2FsLnVuZXhwZWN0ZWRUZXh0fHxhLnJlZ2lvbmFsT3B0aW9uc1siIl0udW5leHBlY3RlZFRleHQ7aWYoLTE9PT1mP2Y9dGhpcy50b2RheSgpLnllYXIoKTpmPDEwMCYmdiYmKGYrPS0xPT09bj8xOTAwOnRoaXMudG9kYXkoKS55ZWFyKCktdGhpcy50b2RheSgpLnllYXIoKSUxMDAtKGY8PW4/MDoxMDApKSwic3RyaW5nIj09dHlwZW9mIHAmJihwPXMuY2FsbCh0aGlzLGYscCkpLGc+LTEpe3A9MSxkPWc7Zm9yKHZhciBFPXRoaXMuZGF5c0luTW9udGgoZixwKTtkPkU7RT10aGlzLmRheXNJbk1vbnRoKGYscCkpcCsrLGQtPUV9cmV0dXJuIGg+LTE/dGhpcy5mcm9tSkQoaCk6dGhpcy5uZXdEYXRlKGYscCxkKX0sZGV0ZXJtaW5lRGF0ZTpmdW5jdGlvbih0LGUscixuLGEpe3ImJiJvYmplY3QiIT10eXBlb2YgciYmKGE9bixuPXIscj1udWxsKSwic3RyaW5nIiE9dHlwZW9mIG4mJihhPW4sbj0iIik7dmFyIGk9dGhpcztyZXR1cm4gZT1lP2UubmV3RGF0ZSgpOm51bGwsdD1udWxsPT10P2U6InN0cmluZyI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3RyeXtyZXR1cm4gaS5wYXJzZURhdGUobix0LGEpfWNhdGNoKHQpe31mb3IodmFyIGU9KCh0PXQudG9Mb3dlckNhc2UoKSkubWF0Y2goL15jLykmJnI/ci5uZXdEYXRlKCk6bnVsbCl8fGkudG9kYXkoKSxvPS8oWystXT9bMC05XSspXHMqKGR8d3xtfHkpPy9nLHM9by5leGVjKHQpO3M7KWUuYWRkKHBhcnNlSW50KHNbMV0sMTApLHNbMl18fCJkIikscz1vLmV4ZWModCk7cmV0dXJuIGV9KHQpOiJudW1iZXIiPT10eXBlb2YgdD9pc05hTih0KXx8dD09PTEvMHx8dD09PS0xLzA/ZTppLnRvZGF5KCkuYWRkKHQsImQiKTppLm5ld0RhdGUodCl9fSl9LHsiLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU3MjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCJjd2lzZS1jb21waWxlciIpKHthcmdzOlsiYXJyYXkiLHtvZmZzZXQ6WzFdLGFycmF5OjB9LCJzY2FsYXIiLCJzY2FsYXIiLCJpbmRleCJdLHByZTp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntcbiAgICAgICAgdmFyIF9pbmxpbmVfMV9kYSA9IF9pbmxpbmVfMV9hcmcwXyAtIF9pbmxpbmVfMV9hcmczX1xuICAgICAgICB2YXIgX2lubGluZV8xX2RiID0gX2lubGluZV8xX2FyZzFfIC0gX2lubGluZV8xX2FyZzNfXG4gICAgICAgIGlmKChfaW5saW5lXzFfZGEgPj0gMCkgIT09IChfaW5saW5lXzFfZGIgPj0gMCkpIHtcbiAgICAgICAgICBfaW5saW5lXzFfYXJnMl8ucHVzaChfaW5saW5lXzFfYXJnNF9bMF0gKyAwLjUgKyAwLjUgKiAoX2lubGluZV8xX2RhICsgX2lubGluZV8xX2RiKSAvIChfaW5saW5lXzFfZGEgLSBfaW5saW5lXzFfZGIpKVxuICAgICAgICB9XG4gICAgICB9IixhcmdzOlt7bmFtZToiX2lubGluZV8xX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzFfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMV9hcmcyXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzNfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9LHtuYW1lOiJfaW5saW5lXzFfYXJnNF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbIl9pbmxpbmVfMV9kYSIsIl9pbmxpbmVfMV9kYiJdfSxmdW5jTmFtZToiemVyb0Nyb3NzaW5ncyJ9KX0seyJjd2lzZS1jb21waWxlciI6MTQ4fV0sNTczOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPVtdO3JldHVybiBlPStlfHwwLG4odC5oaSh0LnNoYXBlWzBdLTEpLHIsZSkscn07dmFyIG49dCgiLi9saWIvemMtY29yZSIpfSx7Ii4vbGliL3pjLWNvcmUiOjU3Mn1dLDU3NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9W3twYXRoOiIiLGJhY2tvZmY6MH0se3BhdGg6Ik0tMi40LC0zVjNMMC42LDBaIixiYWNrb2ZmOi42fSx7cGF0aDoiTS0zLjcsLTIuNVYyLjVMMS4zLDBaIixiYWNrb2ZmOjEuM30se3BhdGg6Ik0tNC40NSwtM0wtMS42NSwtMC4yVjAuMkwtNC40NSwzTDEuNTUsMFoiLGJhY2tvZmY6MS41NX0se3BhdGg6Ik0tMi4yLC0yLjJMLTAuMiwtMC4yVjAuMkwtMi4yLDIuMkwtMS40LDNMMS42LDBMLTEuNCwtM1oiLGJhY2tvZmY6MS42fSx7cGF0aDoiTS00LjQsLTIuMUwtMC42LC0wLjJWMC4yTC00LjQsMi4xTC00LDNMMiwwTC00LC0zWiIsYmFja29mZjoyfSx7cGF0aDoiTTIsMEEyLDIgMCAxLDEgMCwtMkEyLDIgMCAwLDEgMiwwWiIsYmFja29mZjowLG5vUm90YXRlOiEwfSx7cGF0aDoiTTIsMlYtMkgtMlYyWiIsYmFja29mZjowLG5vUm90YXRlOiEwfV19LHt9XSw1NzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9hcnJvd19wYXRocyIpLGE9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIiksbz10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXk7ZS5leHBvcnRzPW8oImFubm90YXRpb24iLHt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sdGV4dGFuZ2xlOnt2YWxUeXBlOiJhbmdsZSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGZvbnQ6YSh7ZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3Iixjb2xvckVkaXRUeXBlOiJhcnJheWRyYXcifSksd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjEsZGZsdDpudWxsLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGhlaWdodDp7dmFsVHlwZToibnVtYmVyIixtaW46MSxkZmx0Om51bGwsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjEsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGFsaWduOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJjZW50ZXIiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx2YWxpZ246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCIsIm1pZGRsZSIsImJvdHRvbSJdLGRmbHQ6Im1pZGRsZSIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2JhKDAsMCwwLDApIixlZGl0VHlwZToiYXJyYXlkcmF3In0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2JhKDAsMCwwLDApIixlZGl0VHlwZToiYXJyYXlkcmF3In0sYm9yZGVycGFkOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxib3JkZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sc2hvd2Fycm93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGFycm93Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiYXJyYXlkcmF3In0sYXJyb3doZWFkOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxtYXg6bi5sZW5ndGgsZGZsdDoxLGVkaXRUeXBlOiJhcnJheWRyYXcifSxzdGFydGFycm93aGVhZDp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsbWF4Om4ubGVuZ3RoLGRmbHQ6MSxlZGl0VHlwZToiYXJyYXlkcmF3In0sYXJyb3dzaWRlOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJlbmQiLCJzdGFydCJdLGV4dHJhczpbIm5vbmUiXSxkZmx0OiJlbmQiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxhcnJvd3NpemU6e3ZhbFR5cGU6Im51bWJlciIsbWluOi4zLGRmbHQ6MSxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxzdGFydGFycm93c2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46LjMsZGZsdDoxLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGFycm93d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi4xLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHN0YW5kb2ZmOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxzdGFydHN0YW5kb2ZmOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxheDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxheTp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxheHJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsZGZsdDoicGl4ZWwiLHZhbHVlczpbInBpeGVsIixpLmlkUmVnZXgueC50b1N0cmluZygpXSxlZGl0VHlwZToiY2FsYyJ9LGF5cmVmOnt2YWxUeXBlOiJlbnVtZXJhdGVkIixkZmx0OiJwaXhlbCIsdmFsdWVzOlsicGl4ZWwiLGkuaWRSZWdleC55LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJjYWxjIn0seHJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicGFwZXIiLGkuaWRSZWdleC54LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJjYWxjIn0seDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoiYXV0byIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seHNoaWZ0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx5cmVmOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwYXBlciIsaS5pZFJlZ2V4LnkudG9TdHJpbmcoKV0sZWRpdFR5cGU6ImNhbGMifSx5Ont2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJhdXRvIixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx5c2hpZnQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGNsaWNrdG9zaG93Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyExLCJvbm9mZiIsIm9ub3V0Il0sZGZsdDohMSxlZGl0VHlwZToiYXJyYXlkcmF3In0seGNsaWNrOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx5Y2xpY2s6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGhvdmVydGV4dDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiYXJyYXlkcmF3In0saG92ZXJsYWJlbDp7Ymdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxib3JkZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxmb250OmEoe2VkaXRUeXBlOiJhcnJheWRyYXcifSksZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGNhcHR1cmVldmVudHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJhcnJheWRyYXcifSxlZGl0VHlwZToiY2FsYyIsX2RlcHJlY2F0ZWQ6e3JlZjp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9fX0pfSx7Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyI6NzcxLCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi9hcnJvd19wYXRocyI6NTc0fV0sNTc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4vZHJhdyIpLmRyYXc7ZnVuY3Rpb24gbyh0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O24uZmlsdGVyVmlzaWJsZShlLmFubm90YXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPWEuZ2V0RnJvbUlkKHQsZS54cmVmKSxuPWEuZ2V0RnJvbUlkKHQsZS55cmVmKTtlLl9leHRyZW1lcz17fSxyJiZzKGUsciksbiYmcyhlLG4pfSl9ZnVuY3Rpb24gcyh0LGUpe3ZhciByLG49ZS5faWQsaT1uLmNoYXJBdCgwKSxvPXRbaV0scz10WyJhIitpXSxsPXRbaSsicmVmIl0sYz10WyJhIitpKyJyZWYiXSx1PXRbIl8iK2krInBhZHBsdXMiXSxoPXRbIl8iK2krInBhZG1pbnVzIl0sZj17eDoxLHk6LTF9W2ldKnRbaSsic2hpZnQiXSxwPTMqdC5hcnJvd3NpemUqdC5hcnJvd3dpZHRofHwwLGQ9cCtmLGc9cC1mLHY9Myp0LnN0YXJ0YXJyb3dzaXplKnQuYXJyb3d3aWR0aHx8MCxtPXYrZix5PXYtZjtpZihjPT09bCl7dmFyIHg9YS5maW5kRXh0cmVtZXMoZSxbZS5yMmMobyldLHtwcGFkcGx1czpkLHBwYWRtaW51czpnfSksYj1hLmZpbmRFeHRyZW1lcyhlLFtlLnIyYyhzKV0se3BwYWRwbHVzOk1hdGgubWF4KHUsbSkscHBhZG1pbnVzOk1hdGgubWF4KGgseSl9KTtyPXttaW46W3gubWluWzBdLGIubWluWzBdXSxtYXg6W3gubWF4WzBdLGIubWF4WzBdXX19ZWxzZSBtPXM/bStzOm0seT1zP3ktczp5LHI9YS5maW5kRXh0cmVtZXMoZSxbZS5yMmMobyldLHtwcGFkcGx1czpNYXRoLm1heCh1LGQsbSkscHBhZG1pbnVzOk1hdGgubWF4KGgsZyx5KX0pO3QuX2V4dHJlbWVzW25dPXJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7aWYobi5maWx0ZXJWaXNpYmxlKGUuYW5ub3RhdGlvbnMpLmxlbmd0aCYmdC5fZnVsbERhdGEubGVuZ3RoKXJldHVybiBuLnN5bmNPckFzeW5jKFtpLG9dLHQpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi9kcmF3Ijo1ODF9XSw1Nzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLmFycmF5RWRpdG9yO2Z1bmN0aW9uIG8odCxlKXt2YXIgcixuLGEsaSxvLGwsYyx1PXQuX2Z1bGxMYXlvdXQuYW5ub3RhdGlvbnMsaD1bXSxmPVtdLHA9W10sZD0oZXx8W10pLmxlbmd0aDtmb3Iocj0wO3I8dS5sZW5ndGg7cisrKWlmKGk9KGE9dVtyXSkuY2xpY2t0b3Nob3cpe2ZvcihuPTA7bjxkO24rKylpZihsPShvPWVbbl0pLnhheGlzLGM9by55YXhpcyxsLl9pZD09PWEueHJlZiYmYy5faWQ9PT1hLnlyZWYmJmwuZDJyKG8ueCk9PT1zKGEuX3hjbGljayxsKSYmYy5kMnIoby55KT09PXMoYS5feWNsaWNrLGMpKXsoYS52aXNpYmxlPyJvbm91dCI9PT1pP2Y6cDpoKS5wdXNoKHIpO2JyZWFrfW49PT1kJiZhLnZpc2libGUmJiJvbm91dCI9PT1pJiZmLnB1c2gocil9cmV0dXJue29uOmgsb2ZmOmYsZXhwbGljaXRPZmY6cH19ZnVuY3Rpb24gcyh0LGUpe3JldHVybiJsb2ciPT09ZS50eXBlP2UubDJyKHQpOmUuZDJyKHQpfWUuZXhwb3J0cz17aGFzQ2xpY2tUb1Nob3c6ZnVuY3Rpb24odCxlKXt2YXIgcj1vKHQsZSk7cmV0dXJuIHIub24ubGVuZ3RoPjB8fHIuZXhwbGljaXRPZmYubGVuZ3RoPjB9LG9uQ2xpY2s6ZnVuY3Rpb24odCxlKXt2YXIgcixzLGw9byh0LGUpLGM9bC5vbix1PWwub2ZmLmNvbmNhdChsLmV4cGxpY2l0T2ZmKSxoPXt9LGY9dC5fZnVsbExheW91dC5hbm5vdGF0aW9ucztpZighYy5sZW5ndGgmJiF1Lmxlbmd0aClyZXR1cm47Zm9yKHI9MDtyPGMubGVuZ3RoO3IrKykocz1pKHQubGF5b3V0LCJhbm5vdGF0aW9ucyIsZltjW3JdXSkpLm1vZGlmeUl0ZW0oInZpc2libGUiLCEwKSxuLmV4dGVuZEZsYXQoaCxzLmdldFVwZGF0ZU9iaigpKTtmb3Iocj0wO3I8dS5sZW5ndGg7cisrKShzPWkodC5sYXlvdXQsImFubm90YXRpb25zIixmW3Vbcl1dKSkubW9kaWZ5SXRlbSgidmlzaWJsZSIsITEpLG4uZXh0ZW5kRmxhdChoLHMuZ2V0VXBkYXRlT2JqKCkpO3JldHVybiBhLmNhbGwoInVwZGF0ZSIsdCx7fSxoKX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDZ9XSw1Nzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXtpKCJvcGFjaXR5Iik7dmFyIG89aSgiYmdjb2xvciIpLHM9aSgiYm9yZGVyY29sb3IiKSxsPWEub3BhY2l0eShzKTtpKCJib3JkZXJwYWQiKTt2YXIgYz1pKCJib3JkZXJ3aWR0aCIpLHU9aSgic2hvd2Fycm93Iik7aWYoaSgidGV4dCIsdT8iICI6ci5fZGZsdFRpdGxlLmFubm90YXRpb24pLGkoInRleHRhbmdsZSIpLG4uY29lcmNlRm9udChpLCJmb250IixyLmZvbnQpLGkoIndpZHRoIiksaSgiYWxpZ24iKSxpKCJoZWlnaHQiKSYmaSgidmFsaWduIiksdSl7dmFyIGgsZixwPWkoImFycm93c2lkZSIpOy0xIT09cC5pbmRleE9mKCJlbmQiKSYmKGg9aSgiYXJyb3doZWFkIiksZj1pKCJhcnJvd3NpemUiKSksLTEhPT1wLmluZGV4T2YoInN0YXJ0IikmJihpKCJzdGFydGFycm93aGVhZCIsaCksaSgic3RhcnRhcnJvd3NpemUiLGYpKSxpKCJhcnJvd2NvbG9yIixsP2UuYm9yZGVyY29sb3I6YS5kZWZhdWx0TGluZSksaSgiYXJyb3d3aWR0aCIsMioobCYmY3x8MSkpLGkoInN0YW5kb2ZmIiksaSgic3RhcnRzdGFuZG9mZiIpfXZhciBkPWkoImhvdmVydGV4dCIpLGc9ci5ob3ZlcmxhYmVsfHx7fTtpZihkKXt2YXIgdj1pKCJob3ZlcmxhYmVsLmJnY29sb3IiLGcuYmdjb2xvcnx8KGEub3BhY2l0eShvKT9hLnJnYihvKTphLmRlZmF1bHRMaW5lKSksbT1pKCJob3ZlcmxhYmVsLmJvcmRlcmNvbG9yIixnLmJvcmRlcmNvbG9yfHxhLmNvbnRyYXN0KHYpKTtuLmNvZXJjZUZvbnQoaSwiaG92ZXJsYWJlbC5mb250Iix7ZmFtaWx5OmcuZm9udC5mYW1pbHksc2l6ZTpnLmZvbnQuc2l6ZSxjb2xvcjpnLmZvbnQuY29sb3J8fG19KX1pKCJjYXB0dXJlZXZlbnRzIiwhIWQpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vY29sb3IiOjU5Mn1dLDU3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliL3RvX2xvZ19yYW5nZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXtlPWV8fHt9O3ZhciBvPSJsb2ciPT09ciYmImxpbmVhciI9PT1lLnR5cGUscz0ibGluZWFyIj09PXImJiJsb2ciPT09ZS50eXBlO2lmKG98fHMpZm9yKHZhciBsLGMsdT10Ll9mdWxsTGF5b3V0LmFubm90YXRpb25zLGg9ZS5faWQuY2hhckF0KDApLGY9MDtmPHUubGVuZ3RoO2YrKylsPXVbZl0sYz0iYW5ub3RhdGlvbnNbIitmKyJdLiIsbFtoKyJyZWYiXT09PWUuX2lkJiZwKGgpLGxbImEiK2grInJlZiJdPT09ZS5faWQmJnAoImEiK2gpO2Z1bmN0aW9uIHAodCl7dmFyIHI9bFt0XSxzPW51bGw7cz1vP2EocixlLnJhbmdlKTpNYXRoLnBvdygxMCxyKSxuKHMpfHwocz1udWxsKSxpKGMrdCxzKX19fSx7Ii4uLy4uL2xpYi90b19sb2dfcmFuZ2UiOjc0MywiZmFzdC1pc251bWVyaWMiOjIyOH1dLDU4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxvPXQoIi4vY29tbW9uX2RlZmF1bHRzIikscz10KCIuL2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBsKHQsZSxyKXtmdW5jdGlvbiBpKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsYSl9dmFyIGw9aSgidmlzaWJsZSIpLGM9aSgiY2xpY2t0b3Nob3ciKTtpZihsfHxjKXtvKHQsZSxyLGkpO2Zvcih2YXIgdT1lLnNob3dhcnJvdyxoPVsieCIsInkiXSxmPVstMTAsLTMwXSxwPXtfZnVsbExheW91dDpyfSxkPTA7ZDwyO2QrKyl7dmFyIGc9aFtkXSx2PWEuY29lcmNlUmVmKHQsZSxwLGcsIiIsInBhcGVyIik7aWYoInBhcGVyIiE9PXYpYS5nZXRGcm9tSWQocCx2KS5fYW5uSW5kaWNlcy5wdXNoKGUuX2luZGV4KTtpZihhLmNvZXJjZVBvc2l0aW9uKGUscCxpLHYsZywuNSksdSl7dmFyIG09ImEiK2cseT1hLmNvZXJjZVJlZih0LGUscCxtLCJwaXhlbCIpOyJwaXhlbCIhPT15JiZ5IT09diYmKHk9ZVttXT0icGl4ZWwiKTt2YXIgeD0icGl4ZWwiPT09eT9mW2RdOi40O2EuY29lcmNlUG9zaXRpb24oZSxwLGkseSxtLHgpfWkoZysiYW5jaG9yIiksaShnKyJzaGlmdCIpfWlmKG4ubm9uZU9yQWxsKHQsZSxbIngiLCJ5Il0pLHUmJm4ubm9uZU9yQWxsKHQsZSxbImF4IiwiYXkiXSksYyl7dmFyIGI9aSgieGNsaWNrIiksXz1pKCJ5Y2xpY2siKTtlLl94Y2xpY2s9dm9pZCAwPT09Yj9lLng6YS5jbGVhblBvc2l0aW9uKGIscCxlLnhyZWYpLGUuX3ljbGljaz12b2lkIDA9PT1fP2UueTphLmNsZWFuUG9zaXRpb24oXyxwLGUueXJlZil9fX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpKHQsZSx7bmFtZToiYW5ub3RhdGlvbnMiLGhhbmRsZUl0ZW1EZWZhdWx0czpsfSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi9hdHRyaWJ1dGVzIjo1NzUsIi4vY29tbW9uX2RlZmF1bHRzIjo1Nzh9XSw1ODE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9wbG90cy9wbG90cyIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGw9dCgiLi4vY29sb3IiKSxjPXQoIi4uL2RyYXdpbmciKSx1PXQoIi4uL2Z4IiksaD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxmPXQoIi4uLy4uL2xpYi9zZXRjdXJzb3IiKSxwPXQoIi4uL2RyYWdlbGVtZW50IiksZD10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikuYXJyYXlFZGl0b3IsZz10KCIuL2RyYXdfYXJyb3dfaGVhZCIpO2Z1bmN0aW9uIHYodCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LmFubm90YXRpb25zW2VdfHx7fSxuPXMuZ2V0RnJvbUlkKHQsci54cmVmKSxhPXMuZ2V0RnJvbUlkKHQsci55cmVmKTtuJiZuLnNldFNjYWxlKCksYSYmYS5zZXRTY2FsZSgpLG0odCxyLGUsITEsbixhKX1mdW5jdGlvbiBtKHQsZSxyLGkscyx2KXt2YXIgbSx5LHg9dC5fZnVsbExheW91dCxiPXQuX2Z1bGxMYXlvdXQuX3NpemUsXz10Ll9jb250ZXh0LmVkaXRzO2k/KG09ImFubm90YXRpb24tIitpLHk9aSsiLmFubm90YXRpb25zIik6KG09ImFubm90YXRpb24iLHk9ImFubm90YXRpb25zIik7dmFyIHc9ZCh0LmxheW91dCx5LGUpLGs9dy5tb2RpZnlCYXNlLFQ9dy5tb2RpZnlJdGVtLE09dy5nZXRVcGRhdGVPYmo7eC5faW5mb2xheWVyLnNlbGVjdEFsbCgiLiIrbSsnW2RhdGEtaW5kZXg9IicrcisnIl0nKS5yZW1vdmUoKTt2YXIgQT0iY2xpcCIreC5fdWlkKyJfYW5uIityO2lmKGUuX2lucHV0JiYhMSE9PWUudmlzaWJsZSl7dmFyIFM9e3g6e30seTp7fX0sRT0rZS50ZXh0YW5nbGV8fDAsTD14Ll9pbmZvbGF5ZXIuYXBwZW5kKCJnIikuY2xhc3NlZChtLCEwKS5hdHRyKCJkYXRhLWluZGV4IixTdHJpbmcocikpLnN0eWxlKCJvcGFjaXR5IixlLm9wYWNpdHkpLEM9TC5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLXRleHQtZyIsITApLFA9X1tlLnNob3dhcnJvdz8iYW5ub3RhdGlvblRhaWwiOiJhbm5vdGF0aW9uUG9zaXRpb24iXSxPPWUuY2FwdHVyZWV2ZW50c3x8Xy5hbm5vdGF0aW9uVGV4dHx8UCx6PUMuYXBwZW5kKCJnIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIixPPyJhbGwiOm51bGwpLmNhbGwoZiwicG9pbnRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt0Ll9kcmFnZ2luZz0hMSx0LmVtaXQoInBsb3RseV9jbGlja2Fubm90YXRpb24iLHEobi5ldmVudCkpfSk7ZS5ob3ZlcnRleHQmJnoub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXt2YXIgcj1lLmhvdmVybGFiZWwsbj1yLmZvbnQsYT10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt1LmxvbmVIb3Zlcih7eDA6YS5sZWZ0LWkubGVmdCx4MTphLnJpZ2h0LWkubGVmdCx5OihhLnRvcCthLmJvdHRvbSkvMi1pLnRvcCx0ZXh0OmUuaG92ZXJ0ZXh0LGNvbG9yOnIuYmdjb2xvcixib3JkZXJDb2xvcjpyLmJvcmRlcmNvbG9yLGZvbnRGYW1pbHk6bi5mYW1pbHksZm9udFNpemU6bi5zaXplLGZvbnRDb2xvcjpuLmNvbG9yfSx7Y29udGFpbmVyOnguX2hvdmVybGF5ZXIubm9kZSgpLG91dGVyQ29udGFpbmVyOnguX3BhcGVyLm5vZGUoKSxnZDp0fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7dS5sb25lVW5ob3Zlcih4Ll9ob3ZlcmxheWVyLm5vZGUoKSl9KTt2YXIgST1lLmJvcmRlcndpZHRoLEQ9ZS5ib3JkZXJwYWQsUj1JK0QsRj16LmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiYmciKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixJKyJweCIpLmNhbGwobC5zdHJva2UsZS5ib3JkZXJjb2xvcikuY2FsbChsLmZpbGwsZS5iZ2NvbG9yKSxCPWUud2lkdGh8fGUuaGVpZ2h0LE49eC5fdG9wY2xpcHMuc2VsZWN0QWxsKCIjIitBKS5kYXRhKEI/WzBdOltdKTtOLmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0aCIpLmNsYXNzZWQoImFubmNsaXAiLCEwKS5hdHRyKCJpZCIsQSkuYXBwZW5kKCJyZWN0IiksTi5leGl0KCkucmVtb3ZlKCk7dmFyIGo9ZS5mb250LFY9eC5fbWV0YT9vLnRlbXBsYXRlU3RyaW5nKGUudGV4dCx4Ll9tZXRhKTplLnRleHQsVT16LmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImFubm90YXRpb24tdGV4dCIsITApLnRleHQoVik7Xy5hbm5vdGF0aW9uVGV4dD9VLmNhbGwoaC5tYWtlRWRpdGFibGUse2RlbGVnYXRlOnosZ2Q6dH0pLmNhbGwoSCkub24oImVkaXQiLGZ1bmN0aW9uKHIpe2UudGV4dD1yLHRoaXMuY2FsbChIKSxUKCJ0ZXh0IixyKSxzJiZzLmF1dG9yYW5nZSYmayhzLl9uYW1lKyIuYXV0b3JhbmdlIiwhMCksdiYmdi5hdXRvcmFuZ2UmJmsodi5fbmFtZSsiLmF1dG9yYW5nZSIsITApLGEuY2FsbCgiX2d1aVJlbGF5b3V0Iix0LE0oKSl9KTpVLmNhbGwoSCl9ZWxzZSBuLnNlbGVjdEFsbCgiIyIrQSkucmVtb3ZlKCk7ZnVuY3Rpb24gcSh0KXt2YXIgbj17aW5kZXg6cixhbm5vdGF0aW9uOmUuX2lucHV0LGZ1bGxBbm5vdGF0aW9uOmUsZXZlbnQ6dH07cmV0dXJuIGkmJihuLnN1YnBsb3RJZD1pKSxufWZ1bmN0aW9uIEgocil7cmV0dXJuIHIuY2FsbChjLmZvbnQsaikuYXR0cih7InRleHQtYW5jaG9yIjp7bGVmdDoic3RhcnQiLHJpZ2h0OiJlbmQifVtlLmFsaWduXXx8Im1pZGRsZSJ9KSxoLmNvbnZlcnRUb1RzcGFucyhyLHQsRykscn1mdW5jdGlvbiBHKCl7dmFyIHI9VS5zZWxlY3RBbGwoImEiKTsxPT09ci5zaXplKCkmJnIudGV4dCgpPT09VS50ZXh0KCkmJnouaW5zZXJ0KCJhIiwiOmZpcnN0LWNoaWxkIikuYXR0cih7InhsaW5rOnhsaW5rOmhyZWYiOnIuYXR0cigieGxpbms6aHJlZiIpLCJ4bGluazp4bGluazpzaG93IjpyLmF0dHIoInhsaW5rOnNob3ciKX0pLnN0eWxlKHtjdXJzb3I6InBvaW50ZXIifSkubm9kZSgpLmFwcGVuZENoaWxkKEYubm9kZSgpKTt2YXIgbj16LnNlbGVjdCgiLmFubm90YXRpb24tdGV4dC1tYXRoLWdyb3VwIiksdT0hbi5lbXB0eSgpLGQ9Yy5iQm94KCh1P246VSkubm9kZSgpKSxtPWQud2lkdGgseT1kLmhlaWdodCx3PWUud2lkdGh8fG0sTz1lLmhlaWdodHx8eSxEPU1hdGgucm91bmQodysyKlIpLGo9TWF0aC5yb3VuZChPKzIqUik7ZnVuY3Rpb24gVih0LGUpe3JldHVybiJhdXRvIj09PWUmJihlPXQ8MS8zPyJsZWZ0Ijp0PjIvMz8icmlnaHQiOiJjZW50ZXIiKSx7Y2VudGVyOjAsbWlkZGxlOjAsbGVmdDouNSxib3R0b206LS41LHJpZ2h0Oi0uNSx0b3A6LjV9W2VdfWZvcih2YXIgSD0hMSxHPVsieCIsInkiXSxZPTA7WTxHLmxlbmd0aDtZKyspe3ZhciBXLFgsWixKLEssUT1HW1ldLCQ9ZVtRKyJyZWYiXXx8USx0dD1lWyJhIitRKyJyZWYiXSxldD17eDpzLHk6dn1bUV0scnQ9KEUrKCJ4Ij09PVE/MDotOTApKSpNYXRoLlBJLzE4MCxudD1EKk1hdGguY29zKHJ0KSxhdD1qKk1hdGguc2luKHJ0KSxpdD1NYXRoLmFicyhudCkrTWF0aC5hYnMoYXQpLG90PWVbUSsiYW5jaG9yIl0sc3Q9ZVtRKyJzaGlmdCJdKigieCI9PT1RPzE6LTEpLGx0PVNbUV07aWYoZXQpe3ZhciBjdD1ldC5yMmZyYWN0aW9uKGVbUV0pOyhjdDwwfHxjdD4xKSYmKHR0PT09JD8oKGN0PWV0LnIyZnJhY3Rpb24oZVsiYSIrUV0pKTwwfHxjdD4xKSYmKEg9ITApOkg9ITApLFc9ZXQuX29mZnNldCtldC5yMnAoZVtRXSksSj0uNX1lbHNlIngiPT09UT8oWj1lW1FdLFc9Yi5sK2IudypaKTooWj0xLWVbUV0sVz1iLnQrYi5oKlopLEo9ZS5zaG93YXJyb3c/LjU6WjtpZihlLnNob3dhcnJvdyl7bHQuaGVhZD1XO3ZhciB1dD1lWyJhIitRXTtLPW50KlYoLjUsZS54YW5jaG9yKS1hdCpWKC41LGUueWFuY2hvciksdHQ9PT0kPyhsdC50YWlsPWV0Ll9vZmZzZXQrZXQucjJwKHV0KSxYPUspOihsdC50YWlsPVcrdXQsWD1LK3V0KSxsdC50ZXh0PWx0LnRhaWwrSzt2YXIgaHQ9eFsieCI9PT1RPyJ3aWR0aCI6ImhlaWdodCJdO2lmKCJwYXBlciI9PT0kJiYobHQuaGVhZD1vLmNvbnN0cmFpbihsdC5oZWFkLDEsaHQtMSkpLCJwaXhlbCI9PT10dCl7dmFyIGZ0PS1NYXRoLm1heChsdC50YWlsLTMsbHQudGV4dCkscHQ9TWF0aC5taW4obHQudGFpbCszLGx0LnRleHQpLWh0O2Z0PjA/KGx0LnRhaWwrPWZ0LGx0LnRleHQrPWZ0KTpwdD4wJiYobHQudGFpbC09cHQsbHQudGV4dC09cHQpfWx0LnRhaWwrPXN0LGx0LmhlYWQrPXN0fWVsc2UgWD1LPWl0KlYoSixvdCksbHQudGV4dD1XK0s7bHQudGV4dCs9c3QsSys9c3QsWCs9c3QsZVsiXyIrUSsicGFkcGx1cyJdPWl0LzIrWCxlWyJfIitRKyJwYWRtaW51cyJdPWl0LzItWCxlWyJfIitRKyJzaXplIl09aXQsZVsiXyIrUSsic2hpZnQiXT1LfWlmKEgpei5yZW1vdmUoKTtlbHNle3ZhciBkdD0wLGd0PTA7aWYoImxlZnQiIT09ZS5hbGlnbiYmKGR0PSh3LW0pKigiY2VudGVyIj09PWUuYWxpZ24/LjU6MSkpLCJ0b3AiIT09ZS52YWxpZ24mJihndD0oTy15KSooIm1pZGRsZSI9PT1lLnZhbGlnbj8uNToxKSksdSluLnNlbGVjdCgic3ZnIikuYXR0cih7eDpSK2R0LTEseTpSK2d0fSkuY2FsbChjLnNldENsaXBVcmwsQj9BOm51bGwsdCk7ZWxzZXt2YXIgdnQ9UitndC1kLnRvcCxtdD1SK2R0LWQubGVmdDtVLmNhbGwoaC5wb3NpdGlvblRleHQsbXQsdnQpLmNhbGwoYy5zZXRDbGlwVXJsLEI/QTpudWxsLHQpfU4uc2VsZWN0KCJyZWN0IikuY2FsbChjLnNldFJlY3QsUixSLHcsTyksRi5jYWxsKGMuc2V0UmVjdCxJLzIsSS8yLEQtSSxqLUkpLHouY2FsbChjLnNldFRyYW5zbGF0ZSxNYXRoLnJvdW5kKFMueC50ZXh0LUQvMiksTWF0aC5yb3VuZChTLnkudGV4dC1qLzIpKSxDLmF0dHIoe3RyYW5zZm9ybToicm90YXRlKCIrRSsiLCIrUy54LnRleHQrIiwiK1MueS50ZXh0KyIpIn0pO3ZhciB5dCx4dD1mdW5jdGlvbihyLG4pe0wuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1hcnJvdy1nIikucmVtb3ZlKCk7dmFyIHU9Uy54LmhlYWQsaD1TLnkuaGVhZCxmPVMueC50YWlsK3IsZD1TLnkudGFpbCtuLG09Uy54LnRleHQrcix5PVMueS50ZXh0K24seD1vLnJvdGF0aW9uWFlNYXRyaXgoRSxtLHkpLHc9by5hcHBseTJEVHJhbnNmb3JtKHgpLEE9by5hcHBseTJEVHJhbnNmb3JtMih4KSxQPStGLmF0dHIoIndpZHRoIiksTz0rRi5hdHRyKCJoZWlnaHQiKSxJPW0tLjUqUCxEPUkrUCxSPXktLjUqTyxCPVIrTyxOPVtbSSxSLEksQl0sW0ksQixELEJdLFtELEIsRCxSXSxbRCxSLEksUl1dLm1hcChBKTtpZighTi5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdF4hIW8uc2VnbWVudHNJbnRlcnNlY3QodSxoLHUrMWU2LGgrMWU2LGVbMF0sZVsxXSxlWzJdLGVbM10pfSwhMSkpe04uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1vLnNlZ21lbnRzSW50ZXJzZWN0KGYsZCx1LGgsdFswXSx0WzFdLHRbMl0sdFszXSk7ZSYmKGY9ZS54LGQ9ZS55KX0pO3ZhciBqPWUuYXJyb3d3aWR0aCxWPWUuYXJyb3djb2xvcixVPWUuYXJyb3dzaWRlLHE9TC5hcHBlbmQoImciKS5zdHlsZSh7b3BhY2l0eTpsLm9wYWNpdHkoVil9KS5jbGFzc2VkKCJhbm5vdGF0aW9uLWFycm93LWciLCEwKSxIPXEuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0iK2YrIiwiK2QrIkwiK3UrIiwiK2gpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGorInB4IikuY2FsbChsLnN0cm9rZSxsLnJnYihWKSk7aWYoZyhILFUsZSksXy5hbm5vdGF0aW9uUG9zaXRpb24mJkgubm9kZSgpLnBhcmVudE5vZGUmJiFpKXt2YXIgRz11LFk9aDtpZihlLnN0YW5kb2ZmKXt2YXIgVz1NYXRoLnNxcnQoTWF0aC5wb3codS1mLDIpK01hdGgucG93KGgtZCwyKSk7Rys9ZS5zdGFuZG9mZiooZi11KS9XLFkrPWUuc3RhbmRvZmYqKGQtaCkvV312YXIgWCxaLEo9cS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJhbm5vdGF0aW9uLWFycm93IiwhMCkuY2xhc3NlZCgiYW5uZHJhZyIsITApLmNsYXNzZWQoImN1cnNvci1tb3ZlIiwhMCkuYXR0cih7ZDoiTTMsM0gtM1YtM0gzWk0wLDBMIisoZi1HKSsiLCIrKGQtWSksdHJhbnNmb3JtOiJ0cmFuc2xhdGUoIitHKyIsIitZKyIpIn0pLnN0eWxlKCJzdHJva2Utd2lkdGgiLGorNisicHgiKS5jYWxsKGwuc3Ryb2tlLCJyZ2JhKDAsMCwwLDApIikuY2FsbChsLmZpbGwsInJnYmEoMCwwLDAsMCkiKTtwLmluaXQoe2VsZW1lbnQ6Si5ub2RlKCksZ2Q6dCxwcmVwRm46ZnVuY3Rpb24oKXt2YXIgdD1jLmdldFRyYW5zbGF0ZSh6KTtYPXQueCxaPXQueSxzJiZzLmF1dG9yYW5nZSYmayhzLl9uYW1lKyIuYXV0b3JhbmdlIiwhMCksdiYmdi5hdXRvcmFuZ2UmJmsodi5fbmFtZSsiLmF1dG9yYW5nZSIsITApfSxtb3ZlRm46ZnVuY3Rpb24odCxyKXt2YXIgbj13KFgsWiksYT1uWzBdK3QsaT1uWzFdK3I7ei5jYWxsKGMuc2V0VHJhbnNsYXRlLGEsaSksVCgieCIscz9zLnAycihzLnIycChlLngpK3QpOmUueCt0L2IudyksVCgieSIsdj92LnAycih2LnIycChlLnkpK3IpOmUueS1yL2IuaCksZS5heHJlZj09PWUueHJlZiYmVCgiYXgiLHMucDJyKHMucjJwKGUuYXgpK3QpKSxlLmF5cmVmPT09ZS55cmVmJiZUKCJheSIsdi5wMnIodi5yMnAoZS5heSkrcikpLHEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdCsiLCIrcisiKSIpLEMuYXR0cih7dHJhbnNmb3JtOiJyb3RhdGUoIitFKyIsIithKyIsIitpKyIpIn0pfSxkb25lRm46ZnVuY3Rpb24oKXthLmNhbGwoIl9ndWlSZWxheW91dCIsdCxNKCkpO3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5qcy1ub3Rlcy1ib3gtcGFuZWwiKTtlJiZlLnJlZHJhdyhlLnNlbGVjdGVkT2JqKX19KX19fTtpZihlLnNob3dhcnJvdyYmeHQoMCwwKSxQKXAuaW5pdCh7ZWxlbWVudDp6Lm5vZGUoKSxnZDp0LHByZXBGbjpmdW5jdGlvbigpe3l0PUMuYXR0cigidHJhbnNmb3JtIil9LG1vdmVGbjpmdW5jdGlvbih0LHIpe3ZhciBuPSJwb2ludGVyIjtpZihlLnNob3dhcnJvdyllLmF4cmVmPT09ZS54cmVmP1QoImF4IixzLnAycihzLnIycChlLmF4KSt0KSk6VCgiYXgiLGUuYXgrdCksZS5heXJlZj09PWUueXJlZj9UKCJheSIsdi5wMnIodi5yMnAoZS5heSkrcikpOlQoImF5IixlLmF5K3IpLHh0KHQscik7ZWxzZXtpZihpKXJldHVybjt2YXIgYSxvO2lmKHMpYT1zLnAycihzLnIycChlLngpK3QpO2Vsc2V7dmFyIGw9ZS5feHNpemUvYi53LGM9ZS54KyhlLl94c2hpZnQtZS54c2hpZnQpL2Iudy1sLzI7YT1wLmFsaWduKGMrdC9iLncsbCwwLDEsZS54YW5jaG9yKX1pZih2KW89di5wMnIodi5yMnAoZS55KStyKTtlbHNle3ZhciB1PWUuX3lzaXplL2IuaCxoPWUueS0oZS5feXNoaWZ0K2UueXNoaWZ0KS9iLmgtdS8yO289cC5hbGlnbihoLXIvYi5oLHUsMCwxLGUueWFuY2hvcil9VCgieCIsYSksVCgieSIsbykscyYmdnx8KG49cC5nZXRDdXJzb3Iocz8uNTphLHY/LjU6byxlLnhhbmNob3IsZS55YW5jaG9yKSl9Qy5hdHRyKHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK3QrIiwiK3IrIikiK3l0fSksZih6LG4pfSxjbGlja0ZuOmZ1bmN0aW9uKHIsbil7ZS5jYXB0dXJlZXZlbnRzJiZ0LmVtaXQoInBsb3RseV9jbGlja2Fubm90YXRpb24iLHEobikpfSxkb25lRm46ZnVuY3Rpb24oKXtmKHopLGEuY2FsbCgiX2d1aVJlbGF5b3V0Iix0LE0oKSk7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmpzLW5vdGVzLWJveC1wYW5lbCIpO2UmJmUucmVkcmF3KGUuc2VsZWN0ZWRPYmopfX0pfX19ZS5leHBvcnRzPXtkcmF3OmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7ZS5faW5mb2xheWVyLnNlbGVjdEFsbCgiLmFubm90YXRpb24iKS5yZW1vdmUoKTtmb3IodmFyIHI9MDtyPGUuYW5ub3RhdGlvbnMubGVuZ3RoO3IrKyllLmFubm90YXRpb25zW3JdLnZpc2libGUmJnYodCxyKTtyZXR1cm4gaS5wcmV2aW91c1Byb21pc2VzKHQpfSxkcmF3T25lOnYsZHJhd1JhdzptfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3NldGN1cnNvciI6NzM3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9wbG90cy9wbG90cyI6ODI2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9jb2xvciI6NTkyLCIuLi9kcmFnZWxlbWVudCI6NjEwLCIuLi9kcmF3aW5nIjo2MTMsIi4uL2Z4Ijo2MzAsIi4vZHJhd19hcnJvd19oZWFkIjo1ODIsZDM6MTY1fV0sNTgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi9jb2xvciIpLGk9dCgiLi9hcnJvd19wYXRocyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG8scyxsLGMsdT10Lm5vZGUoKSxoPWlbci5hcnJvd2hlYWR8fDBdLGY9aVtyLnN0YXJ0YXJyb3doZWFkfHwwXSxwPShyLmFycm93d2lkdGh8fDEpKihyLmFycm93c2l6ZXx8MSksZD0oci5hcnJvd3dpZHRofHwxKSooci5zdGFydGFycm93c2l6ZXx8MSksZz1lLmluZGV4T2YoInN0YXJ0Iik+PTAsdj1lLmluZGV4T2YoImVuZCIpPj0wLG09aC5iYWNrb2ZmKnArci5zdGFuZG9mZix5PWYuYmFja29mZipkK3Iuc3RhcnRzdGFuZG9mZjtpZigibGluZSI9PT11Lm5vZGVOYW1lKXtvPXt4Oit0LmF0dHIoIngxIikseTordC5hdHRyKCJ5MSIpfSxzPXt4Oit0LmF0dHIoIngyIikseTordC5hdHRyKCJ5MiIpfTt2YXIgeD1vLngtcy54LGI9by55LXMueTtpZihjPShsPU1hdGguYXRhbjIoYix4KSkrTWF0aC5QSSxtJiZ5JiZtK3k+TWF0aC5zcXJ0KHgqeCtiKmIpKXJldHVybiB2b2lkIFAoKTtpZihtKXtpZihtKm0+eCp4K2IqYilyZXR1cm4gdm9pZCBQKCk7dmFyIF89bSpNYXRoLmNvcyhsKSx3PW0qTWF0aC5zaW4obCk7cy54Kz1fLHMueSs9dyx0LmF0dHIoe3gyOnMueCx5MjpzLnl9KX1pZih5KXtpZih5Knk+eCp4K2IqYilyZXR1cm4gdm9pZCBQKCk7dmFyIGs9eSpNYXRoLmNvcyhsKSxUPXkqTWF0aC5zaW4obCk7by54LT1rLG8ueS09VCx0LmF0dHIoe3gxOm8ueCx5MTpvLnl9KX19ZWxzZSBpZigicGF0aCI9PT11Lm5vZGVOYW1lKXt2YXIgTT11LmdldFRvdGFsTGVuZ3RoKCksQT0iIjtpZihNPG0reSlyZXR1cm4gdm9pZCBQKCk7dmFyIFM9dS5nZXRQb2ludEF0TGVuZ3RoKDApLEU9dS5nZXRQb2ludEF0TGVuZ3RoKC4xKTtsPU1hdGguYXRhbjIoUy55LUUueSxTLngtRS54KSxvPXUuZ2V0UG9pbnRBdExlbmd0aChNYXRoLm1pbih5LE0pKSxBPSIwcHgsIit5KyJweCwiO3ZhciBMPXUuZ2V0UG9pbnRBdExlbmd0aChNKSxDPXUuZ2V0UG9pbnRBdExlbmd0aChNLS4xKTtjPU1hdGguYXRhbjIoTC55LUMueSxMLngtQy54KSxzPXUuZ2V0UG9pbnRBdExlbmd0aChNYXRoLm1heCgwLE0tbSkpLEErPU0tKEE/eSttOm0pKyJweCwiK00rInB4Iix0LnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IixBKX1mdW5jdGlvbiBQKCl7dC5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjBweCwxMDBweCIpfWZ1bmN0aW9uIE8oZSxpLG8scyl7ZS5wYXRoJiYoZS5ub1JvdGF0ZSYmKG89MCksbi5zZWxlY3QodS5wYXJlbnROb2RlKS5hcHBlbmQoInBhdGgiKS5hdHRyKHtjbGFzczp0LmF0dHIoImNsYXNzIiksZDplLnBhdGgsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoIitpLngrIiwiK2kueSsiKSIrKG8/InJvdGF0ZSgiKzE4MCpvL01hdGguUEkrIikiOiIiKSsic2NhbGUoIitzKyIpIn0pLnN0eWxlKHtmaWxsOmEucmdiKHIuYXJyb3djb2xvciksInN0cm9rZS13aWR0aCI6MH0pKX1nJiZPKGYsbyxsLGQpLHYmJk8oaCxzLGMscCl9fSx7Ii4uL2NvbG9yIjo1OTIsIi4vYXJyb3dfcGF0aHMiOjU3NCxkMzoxNjV9XSw1ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9kcmF3IiksYT10KCIuL2NsaWNrIik7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImFubm90YXRpb25zIixsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxpbmNsdWRlQmFzZVBsb3Q6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2luY2x1ZGVfY29tcG9uZW50cyIpKCJhbm5vdGF0aW9ucyIpLGNhbGNBdXRvcmFuZ2U6dCgiLi9jYWxjX2F1dG9yYW5nZSIpLGRyYXc6bi5kcmF3LGRyYXdPbmU6bi5kcmF3T25lLGRyYXdSYXc6bi5kcmF3UmF3LGhhc0NsaWNrVG9TaG93OmEuaGFzQ2xpY2tUb1Nob3csb25DbGljazphLm9uQ2xpY2ssY29udmVydENvb3Jkczp0KCIuL2NvbnZlcnRfY29vcmRzIil9fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9pbmNsdWRlX2NvbXBvbmVudHMiOjc3NSwiLi9hdHRyaWJ1dGVzIjo1NzUsIi4vY2FsY19hdXRvcmFuZ2UiOjU3NiwiLi9jbGljayI6NTc3LCIuL2NvbnZlcnRfY29vcmRzIjo1NzksIi4vZGVmYXVsdHMiOjU4MCwiLi9kcmF3Ijo1ODF9XSw1ODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYW5ub3RhdGlvbnMvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGk9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5O2UuZXhwb3J0cz1hKGkoImFubm90YXRpb24iLHt2aXNpYmxlOm4udmlzaWJsZSx4Ont2YWxUeXBlOiJhbnkifSx5Ont2YWxUeXBlOiJhbnkifSx6Ont2YWxUeXBlOiJhbnkifSxheDp7dmFsVHlwZToibnVtYmVyIn0sYXk6e3ZhbFR5cGU6Im51bWJlciJ9LHhhbmNob3I6bi54YW5jaG9yLHhzaGlmdDpuLnhzaGlmdCx5YW5jaG9yOm4ueWFuY2hvcix5c2hpZnQ6bi55c2hpZnQsdGV4dDpuLnRleHQsdGV4dGFuZ2xlOm4udGV4dGFuZ2xlLGZvbnQ6bi5mb250LHdpZHRoOm4ud2lkdGgsaGVpZ2h0Om4uaGVpZ2h0LG9wYWNpdHk6bi5vcGFjaXR5LGFsaWduOm4uYWxpZ24sdmFsaWduOm4udmFsaWduLGJnY29sb3I6bi5iZ2NvbG9yLGJvcmRlcmNvbG9yOm4uYm9yZGVyY29sb3IsYm9yZGVycGFkOm4uYm9yZGVycGFkLGJvcmRlcndpZHRoOm4uYm9yZGVyd2lkdGgsc2hvd2Fycm93Om4uc2hvd2Fycm93LGFycm93Y29sb3I6bi5hcnJvd2NvbG9yLGFycm93aGVhZDpuLmFycm93aGVhZCxzdGFydGFycm93aGVhZDpuLnN0YXJ0YXJyb3doZWFkLGFycm93c2lkZTpuLmFycm93c2lkZSxhcnJvd3NpemU6bi5hcnJvd3NpemUsc3RhcnRhcnJvd3NpemU6bi5zdGFydGFycm93c2l6ZSxhcnJvd3dpZHRoOm4uYXJyb3d3aWR0aCxzdGFuZG9mZjpuLnN0YW5kb2ZmLHN0YXJ0c3RhbmRvZmY6bi5zdGFydHN0YW5kb2ZmLGhvdmVydGV4dDpuLmhvdmVydGV4dCxob3ZlcmxhYmVsOm4uaG92ZXJsYWJlbCxjYXB0dXJlZXZlbnRzOm4uY2FwdHVyZWV2ZW50c30pLCJjYWxjIiwiZnJvbS1yb290Iil9LHsiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uL2Fubm90YXRpb25zL2F0dHJpYnV0ZXMiOjU3NX1dLDU4NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIik7ZnVuY3Rpb24gaSh0LGUpe3ZhciByPWUuZnVsbFNjZW5lTGF5b3V0LmRvbWFpbixpPWUuZnVsbExheW91dC5fc2l6ZSxvPXtwZGF0YTpudWxsLHR5cGU6ImxpbmVhciIsYXV0b3JhbmdlOiExLHJhbmdlOlstMS8wLDEvMF19O3QuX3hhPXt9LG4uZXh0ZW5kRmxhdCh0Ll94YSxvKSxhLnNldENvbnZlcnQodC5feGEpLHQuX3hhLl9vZmZzZXQ9aS5sK3IueFswXSppLncsdC5feGEubDJwPWZ1bmN0aW9uKCl7cmV0dXJuLjUqKDErdC5fcGRhdGFbMF0vdC5fcGRhdGFbM10pKmkudyooci54WzFdLXIueFswXSl9LHQuX3lhPXt9LG4uZXh0ZW5kRmxhdCh0Ll95YSxvKSxhLnNldENvbnZlcnQodC5feWEpLHQuX3lhLl9vZmZzZXQ9aS50KygxLXIueVsxXSkqaS5oLHQuX3lhLmwycD1mdW5jdGlvbigpe3JldHVybi41KigxLXQuX3BkYXRhWzFdL3QuX3BkYXRhWzNdKSppLmgqKHIueVsxXS1yLnlbMF0pfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuZnVsbFNjZW5lTGF5b3V0LmFubm90YXRpb25zLHI9MDtyPGUubGVuZ3RoO3IrKylpKGVbcl0sdCk7dC5mdWxsTGF5b3V0Ll9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi0iK3QuaWQpLnJlbW92ZSgpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDU4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxvPXQoIi4uL2Fubm90YXRpb25zL2NvbW1vbl9kZWZhdWx0cyIpLHM9dCgiLi9hdHRyaWJ1dGVzIik7ZnVuY3Rpb24gbCh0LGUscixpKXtmdW5jdGlvbiBsKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsYSl9ZnVuY3Rpb24gYyh0KXt2YXIgbj10KyJheGlzIixpPXtfZnVsbExheW91dDp7fX07cmV0dXJuIGkuX2Z1bGxMYXlvdXRbbl09cltuXSxhLmNvZXJjZVBvc2l0aW9uKGUsaSxsLHQsdCwuNSl9bCgidmlzaWJsZSIpJiYobyh0LGUsaS5mdWxsTGF5b3V0LGwpLGMoIngiKSxjKCJ5IiksYygieiIpLG4ubm9uZU9yQWxsKHQsZSxbIngiLCJ5IiwieiJdKSxlLnhyZWY9IngiLGUueXJlZj0ieSIsZS56cmVmPSJ6IixsKCJ4YW5jaG9yIiksbCgieWFuY2hvciIpLGwoInhzaGlmdCIpLGwoInlzaGlmdCIpLGUuc2hvd2Fycm93JiYoZS5heHJlZj0icGl4ZWwiLGUuYXlyZWY9InBpeGVsIixsKCJheCIsLTEwKSxsKCJheSIsLTMwKSxuLm5vbmVPckFsbCh0LGUsWyJheCIsImF5Il0pKSl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpKHQsZSx7bmFtZToiYW5ub3RhdGlvbnMiLGhhbmRsZUl0ZW1EZWZhdWx0czpsLGZ1bGxMYXlvdXQ6ci5mdWxsTGF5b3V0fSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vYW5ub3RhdGlvbnMvY29tbW9uX2RlZmF1bHRzIjo1NzgsIi4vYXR0cmlidXRlcyI6NTg0fV0sNTg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Fubm90YXRpb25zL2RyYXciKS5kcmF3UmF3LGE9dCgiLi4vLi4vcGxvdHMvZ2wzZC9wcm9qZWN0IiksaT1bIngiLCJ5IiwieiJdO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5mdWxsU2NlbmVMYXlvdXQscj10LmRhdGFTY2FsZSxvPWUuYW5ub3RhdGlvbnMscz0wO3M8by5sZW5ndGg7cysrKXtmb3IodmFyIGw9b1tzXSxjPSExLHU9MDt1PDM7dSsrKXt2YXIgaD1pW3VdLGY9bFtoXSxwPWVbaCsiYXhpcyJdLnIyZnJhY3Rpb24oZik7aWYocDwwfHxwPjEpe2M9ITA7YnJlYWt9fWM/dC5mdWxsTGF5b3V0Ll9pbmZvbGF5ZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi0iK3QuaWQrJ1tkYXRhLWluZGV4PSInK3MrJyJdJykucmVtb3ZlKCk6KGwuX3BkYXRhPWEodC5nbHBsb3QuY2FtZXJhUGFyYW1zLFtlLnhheGlzLnIybChsLngpKnJbMF0sZS55YXhpcy5yMmwobC55KSpyWzFdLGUuemF4aXMucjJsKGwueikqclsyXV0pLG4odC5ncmFwaERpdixsLHMsdC5pZCxsLl94YSxsLl95YSkpfX19LHsiLi4vLi4vcGxvdHMvZ2wzZC9wcm9qZWN0Ijo4MTQsIi4uL2Fubm90YXRpb25zL2RyYXciOjU4MX1dLDU4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImFubm90YXRpb25zM2QiLHNjaGVtYTp7c3VicGxvdHM6e3NjZW5lOnthbm5vdGF0aW9uczp0KCIuL2F0dHJpYnV0ZXMiKX19fSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGhhbmRsZURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxpbmNsdWRlQmFzZVBsb3Q6ZnVuY3Rpb24odCxlKXt2YXIgcj1uLnN1YnBsb3RzUmVnaXN0cnkuZ2wzZDtpZighcilyZXR1cm47Zm9yKHZhciBpPXIuYXR0clJlZ2V4LG89T2JqZWN0LmtleXModCkscz0wO3M8by5sZW5ndGg7cysrKXt2YXIgbD1vW3NdO2kudGVzdChsKSYmKHRbbF0uYW5ub3RhdGlvbnN8fFtdKS5sZW5ndGgmJihhLnB1c2hVbmlxdWUoZS5fYmFzZVBsb3RNb2R1bGVzLHIpLGEucHVzaFVuaXF1ZShlLl9zdWJwbG90cy5nbDNkLGwpKX19LGNvbnZlcnQ6dCgiLi9jb252ZXJ0IiksZHJhdzp0KCIuL2RyYXciKX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vYXR0cmlidXRlcyI6NTg0LCIuL2NvbnZlcnQiOjU4NSwiLi9kZWZhdWx0cyI6NTg2LCIuL2RyYXciOjU4N31dLDU4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvbWFpbiIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L3BsdXMiKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvY2hpbmVzZSIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9jb3B0aWMiKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvZGlzY3dvcmxkIiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2V0aGlvcGlhbiIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9oZWJyZXciKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvaXNsYW1pYyIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9qdWxpYW4iKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvbWF5YW4iKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvbmFuYWtzaGFoaSIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9uZXBhbGkiKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvcGVyc2lhbiIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy90YWl3YW4iKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvdGhhaSIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy91bW1hbHF1cmEiKX0seyJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvY2hpbmVzZSI6NTU2LCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvY29wdGljIjo1NTcsIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9kaXNjd29ybGQiOjU1OCwid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2V0aGlvcGlhbiI6NTU5LCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvaGVicmV3Ijo1NjAsIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9pc2xhbWljIjo1NjEsIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9qdWxpYW4iOjU2Miwid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL21heWFuIjo1NjMsIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9uYW5ha3NoYWhpIjo1NjQsIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9uZXBhbGkiOjU2NSwid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3BlcnNpYW4iOjU2Niwid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3RhaXdhbiI6NTY3LCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvdGhhaSI6NTY4LCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvdW1tYWxxdXJhIjo1NjksIndvcmxkLWNhbGVuZGFycy9kaXN0L21haW4iOjU3MCwid29ybGQtY2FsZW5kYXJzL2Rpc3QvcGx1cyI6NTcxfV0sNTkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY2FsZW5kYXJzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKSxvPWkuRVBPQ0hKRCxzPWkuT05FREFZLGw9e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5cyhuLmNhbGVuZGFycyksZWRpdFR5cGU6ImNhbGMiLGRmbHQ6ImdyZWdvcmlhbiJ9LGM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9e307cmV0dXJuIGlbcl09bCxhLmNvZXJjZSh0LGUsaSxyLG4pfSx1PSIjIyIsaD17ZDp7MDoiZGQiLCItIjoiZCJ9LGU6ezA6ImQiLCItIjoiZCJ9LGE6ezA6IkQiLCItIjoiRCJ9LEE6ezA6IkREIiwiLSI6IkREIn0sajp7MDoib28iLCItIjoibyJ9LFc6ezA6Ind3IiwiLSI6IncifSxtOnswOiJtbSIsIi0iOiJtIn0sYjp7MDoiTSIsIi0iOiJNIn0sQjp7MDoiTU0iLCItIjoiTU0ifSx5OnswOiJ5eSIsIi0iOiJ5eSJ9LFk6ezA6Inl5eXkiLCItIjoieXl5eSJ9LFU6dSx3OnUsYzp7MDoiRCBNIGQgJVggeXl5eSIsIi0iOiJEIE0gZCAlWCB5eXl5In0seDp7MDoibW0vZGQveXl5eSIsIi0iOiJtbS9kZC95eXl5In19O3ZhciBmPXt9O2Z1bmN0aW9uIHAodCl7dmFyIGU9Zlt0XTtyZXR1cm4gZXx8KGU9Zlt0XT1uLmluc3RhbmNlKHQpKX1mdW5jdGlvbiBkKHQpe3JldHVybiBhLmV4dGVuZEZsYXQoe30sbCx7ZGVzY3JpcHRpb246dH0pfWZ1bmN0aW9uIGcodCl7cmV0dXJuIlNldHMgdGhlIGNhbGVuZGFyIHN5c3RlbSB0byB1c2Ugd2l0aCBgIit0KyJgIGRhdGUgZGF0YS4ifXZhciB2PXt4Y2FsZW5kYXI6ZChnKCJ4IikpfSxtPWEuZXh0ZW5kRmxhdCh7fSx2LHt5Y2FsZW5kYXI6ZChnKCJ5IikpfSkseT1hLmV4dGVuZEZsYXQoe30sbSx7emNhbGVuZGFyOmQoZygieiIpKX0pLHg9ZChbIlNldHMgdGhlIGNhbGVuZGFyIHN5c3RlbSB0byB1c2UgZm9yIGByYW5nZWAgYW5kIGB0aWNrMGAiLCJpZiB0aGlzIGlzIGEgZGF0ZSBheGlzLiBUaGlzIGRvZXMgbm90IHNldCB0aGUgY2FsZW5kYXIgZm9yIiwiaW50ZXJwcmV0aW5nIGRhdGEgb24gdGhpcyBheGlzLCB0aGF0J3Mgc3BlY2lmaWVkIGluIHRoZSB0cmFjZSIsIm9yIHZpYSB0aGUgZ2xvYmFsIGBsYXlvdXQuY2FsZW5kYXJgIl0uam9pbigiICIpKTtlLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToiY2FsZW5kYXJzIixzY2hlbWE6e3RyYWNlczp7c2NhdHRlcjptLGJhcjptLGJveDptLGhlYXRtYXA6bSxjb250b3VyOm0saGlzdG9ncmFtOm0saGlzdG9ncmFtMmQ6bSxoaXN0b2dyYW0yZGNvbnRvdXI6bSxzY2F0dGVyM2Q6eSxzdXJmYWNlOnksbWVzaDNkOnksc2NhdHRlcmdsOm0sb2hsYzp2LGNhbmRsZXN0aWNrOnZ9LGxheW91dDp7Y2FsZW5kYXI6ZChbIlNldHMgdGhlIGRlZmF1bHQgY2FsZW5kYXIgc3lzdGVtIHRvIHVzZSBmb3IgaW50ZXJwcmV0aW5nIGFuZCIsImRpc3BsYXlpbmcgZGF0ZXMgdGhyb3VnaG91dCB0aGUgcGxvdC4iXS5qb2luKCIgIikpfSxzdWJwbG90czp7eGF4aXM6e2NhbGVuZGFyOnh9LHlheGlzOntjYWxlbmRhcjp4fSxzY2VuZTp7eGF4aXM6e2NhbGVuZGFyOnh9LHlheGlzOntjYWxlbmRhcjp4fSx6YXhpczp7Y2FsZW5kYXI6eH19LHBvbGFyOntyYWRpYWxheGlzOntjYWxlbmRhcjp4fX19LHRyYW5zZm9ybXM6e2ZpbHRlcjp7dmFsdWVjYWxlbmRhcjpkKFsiU2V0cyB0aGUgY2FsZW5kYXIgc3lzdGVtIHRvIHVzZSBmb3IgYHZhbHVlYCwgaWYgaXQgaXMgYSBkYXRlLiJdLmpvaW4oIiAiKSksdGFyZ2V0Y2FsZW5kYXI6ZChbIlNldHMgdGhlIGNhbGVuZGFyIHN5c3RlbSB0byB1c2UgZm9yIGB0YXJnZXRgLCBpZiBpdCBpcyBhbiIsImFycmF5IG9mIGRhdGVzLiBJZiBgdGFyZ2V0YCBpcyBhIHN0cmluZyAoZWcgKngqKSB3ZSB1c2UgdGhlIiwiY29ycmVzcG9uZGluZyB0cmFjZSBhdHRyaWJ1dGUgKGVnIGB4Y2FsZW5kYXJgKSBpZiBpdCBleGlzdHMsIiwiZXZlbiBpZiBgdGFyZ2V0Y2FsZW5kYXJgIGlzIHByb3ZpZGVkLiJdLmpvaW4oIiAiKSl9fX0sbGF5b3V0QXR0cmlidXRlczpsLGhhbmRsZURlZmF1bHRzOmMsaGFuZGxlVHJhY2VEZWZhdWx0czpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9MDthPHIubGVuZ3RoO2ErKyljKHQsZSxyW2FdKyJjYWxlbmRhciIsbi5jYWxlbmRhcil9LENBTk9OSUNBTF9TVU5EQVk6e2NoaW5lc2U6IjIwMDAtMDEtMDIiLGNvcHRpYzoiMjAwMC0wMS0wMyIsZGlzY3dvcmxkOiIyMDAwLTAxLTAzIixldGhpb3BpYW46IjIwMDAtMDEtMDUiLGhlYnJldzoiNTAwMC0wMS0wMSIsaXNsYW1pYzoiMTAwMC0wMS0wMiIsanVsaWFuOiIyMDAwLTAxLTAzIixtYXlhbjoiNTAwMC0wMS0wMSIsbmFuYWtzaGFoaToiMTAwMC0wMS0wNSIsbmVwYWxpOiIyMDAwLTAxLTA1IixwZXJzaWFuOiIxMDAwLTAxLTAxIixqYWxhbGk6IjEwMDAtMDEtMDEiLHRhaXdhbjoiMTAwMC0wMS0wNCIsdGhhaToiMjAwMC0wMS0wNCIsdW1tYWxxdXJhOiIxNDAwLTAxLTA2In0sQ0FOT05JQ0FMX1RJQ0s6e2NoaW5lc2U6IjIwMDAtMDEtMDEiLGNvcHRpYzoiMjAwMC0wMS0wMSIsZGlzY3dvcmxkOiIyMDAwLTAxLTAxIixldGhpb3BpYW46IjIwMDAtMDEtMDEiLGhlYnJldzoiNTAwMC0wMS0wMSIsaXNsYW1pYzoiMTAwMC0wMS0wMSIsanVsaWFuOiIyMDAwLTAxLTAxIixtYXlhbjoiNTAwMC0wMS0wMSIsbmFuYWtzaGFoaToiMTAwMC0wMS0wMSIsbmVwYWxpOiIyMDAwLTAxLTAxIixwZXJzaWFuOiIxMDAwLTAxLTAxIixqYWxhbGk6IjEwMDAtMDEtMDEiLHRhaXdhbjoiMTAwMC0wMS0wMSIsdGhhaToiMjAwMC0wMS0wMSIsdW1tYWxxdXJhOiIxNDAwLTAxLTAxIn0sREZMVFJBTkdFOntjaGluZXNlOlsiMjAwMC0wMS0wMSIsIjIwMDEtMDEtMDEiXSxjb3B0aWM6WyIxNzAwLTAxLTAxIiwiMTcwMS0wMS0wMSJdLGRpc2N3b3JsZDpbIjE4MDAtMDEtMDEiLCIxODAxLTAxLTAxIl0sZXRoaW9waWFuOlsiMjAwMC0wMS0wMSIsIjIwMDEtMDEtMDEiXSxoZWJyZXc6WyI1NzAwLTAxLTAxIiwiNTcwMS0wMS0wMSJdLGlzbGFtaWM6WyIxNDAwLTAxLTAxIiwiMTQwMS0wMS0wMSJdLGp1bGlhbjpbIjIwMDAtMDEtMDEiLCIyMDAxLTAxLTAxIl0sbWF5YW46WyI1MjAwLTAxLTAxIiwiNTIwMS0wMS0wMSJdLG5hbmFrc2hhaGk6WyIwNTAwLTAxLTAxIiwiMDUwMS0wMS0wMSJdLG5lcGFsaTpbIjIwMDAtMDEtMDEiLCIyMDAxLTAxLTAxIl0scGVyc2lhbjpbIjE0MDAtMDEtMDEiLCIxNDAxLTAxLTAxIl0samFsYWxpOlsiMTQwMC0wMS0wMSIsIjE0MDEtMDEtMDEiXSx0YWl3YW46WyIwMTAwLTAxLTAxIiwiMDEwMS0wMS0wMSJdLHRoYWk6WyIyNTAwLTAxLTAxIiwiMjUwMS0wMS0wMSJdLHVtbWFscXVyYTpbIjE0MDAtMDEtMDEiLCIxNDAxLTAxLTAxIl19LGdldENhbDpwLHdvcmxkQ2FsRm10OmZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4sYSxpLGwsYyxmPU1hdGguZmxvb3IoKGUrLjA1KS9zKStvLGQ9cChyKS5mcm9tSkQoZiksZz0wOy0xIT09KGc9dC5pbmRleE9mKCIlIixnKSk7KSIwIj09PShuPXQuY2hhckF0KGcrMSkpfHwiLSI9PT1ufHwiXyI9PT1uPyhpPTMsYT10LmNoYXJBdChnKzIpLCJfIj09PW4mJihuPSItIikpOihhPW4sbj0iMCIsaT0yKSwobD1oW2FdKT8oYz1sPT09dT91OmQuZm9ybWF0RGF0ZShsW25dKSx0PXQuc3Vic3RyKDAsZykrYyt0LnN1YnN0cihnK2kpLGcrPWMubGVuZ3RoKTpnKz1pO3JldHVybiB0fX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi9jYWxlbmRhcnMiOjU4OX1dLDU5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLmRlZmF1bHRzPVsiIzFmNzdiNCIsIiNmZjdmMGUiLCIjMmNhMDJjIiwiI2Q2MjcyOCIsIiM5NDY3YmQiLCIjOGM1NjRiIiwiI2UzNzdjMiIsIiM3ZjdmN2YiLCIjYmNiZDIyIiwiIzE3YmVjZiJdLHIuZGVmYXVsdExpbmU9IiM0NDQiLHIubGlnaHRMaW5lPSIjZWVlIixyLmJhY2tncm91bmQ9IiNmZmYiLHIuYm9yZGVyTGluZT0iI0JFQzhEOSIsci5saWdodEZyYWN0aW9uPTFlMy8xMX0se31dLDU5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0aW55Y29sb3IyIiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLGk9ZS5leHBvcnRzPXt9LG89dCgiLi9hdHRyaWJ1dGVzIik7aS5kZWZhdWx0cz1vLmRlZmF1bHRzO3ZhciBzPWkuZGVmYXVsdExpbmU9by5kZWZhdWx0TGluZTtpLmxpZ2h0TGluZT1vLmxpZ2h0TGluZTt2YXIgbD1pLmJhY2tncm91bmQ9by5iYWNrZ3JvdW5kO2Z1bmN0aW9uIGModCl7aWYoYSh0KXx8InN0cmluZyIhPXR5cGVvZiB0KXJldHVybiB0O3ZhciBlPXQudHJpbSgpO2lmKCJyZ2IiIT09ZS5zdWJzdHIoMCwzKSlyZXR1cm4gdDt2YXIgcj1lLm1hdGNoKC9ecmdiYT9ccypcKChbXigpXSopXCkkLyk7aWYoIXIpcmV0dXJuIHQ7dmFyIG49clsxXS50cmltKCkuc3BsaXQoL1xzKltccyxdXHMqLyksaT0iYSI9PT1lLmNoYXJBdCgzKSYmND09PW4ubGVuZ3RoO2lmKCFpJiYzIT09bi5sZW5ndGgpcmV0dXJuIHQ7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspe2lmKCFuW29dLmxlbmd0aClyZXR1cm4gdDtpZihuW29dPU51bWJlcihuW29dKSwhKG5bb10+PTApKXJldHVybiB0O2lmKDM9PT1vKW5bb10+MSYmKG5bb109MSk7ZWxzZSBpZihuW29dPj0xKXJldHVybiB0fXZhciBzPU1hdGgucm91bmQoMjU1Km5bMF0pKyIsICIrTWF0aC5yb3VuZCgyNTUqblsxXSkrIiwgIitNYXRoLnJvdW5kKDI1NSpuWzJdKTtyZXR1cm4gaT8icmdiYSgiK3MrIiwgIituWzNdKyIpIjoicmdiKCIrcysiKSJ9aS50aW55UkdCPWZ1bmN0aW9uKHQpe3ZhciBlPXQudG9SZ2IoKTtyZXR1cm4icmdiKCIrTWF0aC5yb3VuZChlLnIpKyIsICIrTWF0aC5yb3VuZChlLmcpKyIsICIrTWF0aC5yb3VuZChlLmIpKyIpIn0saS5yZ2I9ZnVuY3Rpb24odCl7cmV0dXJuIGkudGlueVJHQihuKHQpKX0saS5vcGFjaXR5PWZ1bmN0aW9uKHQpe3JldHVybiB0P24odCkuZ2V0QWxwaGEoKTowfSxpLmFkZE9wYWNpdHk9ZnVuY3Rpb24odCxlKXt2YXIgcj1uKHQpLnRvUmdiKCk7cmV0dXJuInJnYmEoIitNYXRoLnJvdW5kKHIucikrIiwgIitNYXRoLnJvdW5kKHIuZykrIiwgIitNYXRoLnJvdW5kKHIuYikrIiwgIitlKyIpIn0saS5jb21iaW5lPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0KS50b1JnYigpO2lmKDE9PT1yLmEpcmV0dXJuIG4odCkudG9SZ2JTdHJpbmcoKTt2YXIgYT1uKGV8fGwpLnRvUmdiKCksaT0xPT09YS5hP2E6e3I6MjU1KigxLWEuYSkrYS5yKmEuYSxnOjI1NSooMS1hLmEpK2EuZyphLmEsYjoyNTUqKDEtYS5hKSthLmIqYS5hfSxvPXtyOmkuciooMS1yLmEpK3IucipyLmEsZzppLmcqKDEtci5hKStyLmcqci5hLGI6aS5iKigxLXIuYSkrci5iKnIuYX07cmV0dXJuIG4obykudG9SZ2JTdHJpbmcoKX0saS5jb250cmFzdD1mdW5jdGlvbih0LGUscil7dmFyIGE9bih0KTtyZXR1cm4gMSE9PWEuZ2V0QWxwaGEoKSYmKGE9bihpLmNvbWJpbmUodCxsKSkpLChhLmlzRGFyaygpP2U/YS5saWdodGVuKGUpOmw6cj9hLmRhcmtlbihyKTpzKS50b1N0cmluZygpfSxpLnN0cm9rZT1mdW5jdGlvbih0LGUpe3ZhciByPW4oZSk7dC5zdHlsZSh7c3Ryb2tlOmkudGlueVJHQihyKSwic3Ryb2tlLW9wYWNpdHkiOnIuZ2V0QWxwaGEoKX0pfSxpLmZpbGw9ZnVuY3Rpb24odCxlKXt2YXIgcj1uKGUpO3Quc3R5bGUoe2ZpbGw6aS50aW55UkdCKHIpLCJmaWxsLW9wYWNpdHkiOnIuZ2V0QWxwaGEoKX0pfSxpLmNsZWFuPWZ1bmN0aW9uKHQpe2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCl7dmFyIGUscixuLGEsbz1PYmplY3Qua2V5cyh0KTtmb3IoZT0wO2U8by5sZW5ndGg7ZSsrKWlmKGE9dFtuPW9bZV1dLCJjb2xvciI9PT1uLnN1YnN0cihuLmxlbmd0aC01KSlpZihBcnJheS5pc0FycmF5KGEpKWZvcihyPTA7cjxhLmxlbmd0aDtyKyspYVtyXT1jKGFbcl0pO2Vsc2UgdFtuXT1jKGEpO2Vsc2UgaWYoImNvbG9yc2NhbGUiPT09bi5zdWJzdHIobi5sZW5ndGgtMTApJiZBcnJheS5pc0FycmF5KGEpKWZvcihyPTA7cjxhLmxlbmd0aDtyKyspQXJyYXkuaXNBcnJheShhW3JdKSYmKGFbcl1bMV09YyhhW3JdWzFdKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKXt2YXIgcz1hWzBdO2lmKCFBcnJheS5pc0FycmF5KHMpJiZzJiYib2JqZWN0Ij09dHlwZW9mIHMpZm9yKHI9MDtyPGEubGVuZ3RoO3IrKylpLmNsZWFuKGFbcl0pfWVsc2UgYSYmIm9iamVjdCI9PXR5cGVvZiBhJiZpLmNsZWFuKGEpfX19LHsiLi9hdHRyaWJ1dGVzIjo1OTEsImZhc3QtaXNudW1lcmljIjoyMjgsdGlueWNvbG9yMjo1MzZ9XSw1OTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LG89dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsO2UuZXhwb3J0cz1vKHt0aGlja25lc3Ntb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmcmFjdGlvbiIsInBpeGVscyJdLGRmbHQ6InBpeGVscyJ9LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjMwfSxsZW5tb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmcmFjdGlvbiIsInBpeGVscyJdLGRmbHQ6ImZyYWN0aW9uIn0sbGVuOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0seDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEuMDIsbWluOi0yLG1heDozfSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJsZWZ0In0seHBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwfSx5Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6LjUsbWluOi0yLG1heDozfSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJtaWRkbGUifSx5cGFkOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MTB9LG91dGxpbmVjb2xvcjpuLmxpbmVjb2xvcixvdXRsaW5ld2lkdGg6bi5saW5ld2lkdGgsYm9yZGVyY29sb3I6bi5saW5lY29sb3IsYm9yZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowfSxiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSJ9LHRpY2ttb2RlOm4udGlja21vZGUsbnRpY2tzOm4ubnRpY2tzLHRpY2swOm4udGljazAsZHRpY2s6bi5kdGljayx0aWNrdmFsczpuLnRpY2t2YWxzLHRpY2t0ZXh0Om4udGlja3RleHQsdGlja3M6aSh7fSxuLnRpY2tzLHtkZmx0OiIifSksdGlja2xlbjpuLnRpY2tsZW4sdGlja3dpZHRoOm4udGlja3dpZHRoLHRpY2tjb2xvcjpuLnRpY2tjb2xvcixzaG93dGlja2xhYmVsczpuLnNob3d0aWNrbGFiZWxzLHRpY2tmb250OmEoe30pLHRpY2thbmdsZTpuLnRpY2thbmdsZSx0aWNrZm9ybWF0Om4udGlja2Zvcm1hdCx0aWNrZm9ybWF0c3RvcHM6bi50aWNrZm9ybWF0c3RvcHMsdGlja3ByZWZpeDpuLnRpY2twcmVmaXgsc2hvd3RpY2twcmVmaXg6bi5zaG93dGlja3ByZWZpeCx0aWNrc3VmZml4Om4udGlja3N1ZmZpeCxzaG93dGlja3N1ZmZpeDpuLnNob3d0aWNrc3VmZml4LHNlcGFyYXRldGhvdXNhbmRzOm4uc2VwYXJhdGV0aG91c2FuZHMsZXhwb25lbnRmb3JtYXQ6bi5leHBvbmVudGZvcm1hdCxzaG93ZXhwb25lbnQ6bi5zaG93ZXhwb25lbnQsdGl0bGU6e3RleHQ6e3ZhbFR5cGU6InN0cmluZyJ9LGZvbnQ6YSh7fSksc2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicmlnaHQiLCJ0b3AiLCJib3R0b20iXSxkZmx0OiJ0b3AifX0sX2RlcHJlY2F0ZWQ6e3RpdGxlOnt2YWxUeXBlOiJzdHJpbmcifSx0aXRsZWZvbnQ6YSh7fSksdGl0bGVzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyaWdodCIsInRvcCIsImJvdHRvbSJdLGRmbHQ6InRvcCJ9fX0sImNvbG9yYmFycyIsImZyb20tcm9vdCIpfSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTF9XSw1OTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjbjp7Y29sb3JiYXI6ImNvbG9yYmFyIixjYmJnOiJjYmJnIixjYmZpbGw6ImNiZmlsbCIsY2JmaWxsczoiY2JmaWxscyIsY2JsaW5lOiJjYmxpbmUiLGNibGluZXM6ImNibGluZXMiLGNiYXhpczoiY2JheGlzIixjYnRpdGxldW5zaGlmdDoiY2J0aXRsZXVuc2hpZnQiLGNidGl0bGU6ImNidGl0bGUiLGNib3V0bGluZToiY2JvdXRsaW5lIixjcmlzcDoiY3Jpc3AiLGpzUGxhY2Vob2xkZXI6ImpzLXBsYWNlaG9sZGVyIn19fSx7fV0sNTk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiKSxvPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVsdHMiKSxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIiksbD10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBjPWEubmV3Q29udGFpbmVyKGUsImNvbG9yYmFyIiksdT10LmNvbG9yYmFyfHx7fTtmdW5jdGlvbiBoKHQsZSl7cmV0dXJuIG4uY29lcmNlKHUsYyxsLHQsZSl9dmFyIGY9aCgidGhpY2tuZXNzbW9kZSIpO2goInRoaWNrbmVzcyIsImZyYWN0aW9uIj09PWY/MzAvKHIud2lkdGgtci5tYXJnaW4ubC1yLm1hcmdpbi5yKTozMCk7dmFyIHA9aCgibGVubW9kZSIpO2goImxlbiIsImZyYWN0aW9uIj09PXA/MTpyLmhlaWdodC1yLm1hcmdpbi50LXIubWFyZ2luLmIpLGgoIngiKSxoKCJ4YW5jaG9yIiksaCgieHBhZCIpLGgoInkiKSxoKCJ5YW5jaG9yIiksaCgieXBhZCIpLG4ubm9uZU9yQWxsKHUsYyxbIngiLCJ5Il0pLGgoIm91dGxpbmVjb2xvciIpLGgoIm91dGxpbmV3aWR0aCIpLGgoImJvcmRlcmNvbG9yIiksaCgiYm9yZGVyd2lkdGgiKSxoKCJiZ2NvbG9yIiksaSh1LGMsaCwibGluZWFyIik7dmFyIGQ9e291dGVyVGlja3M6ITEsZm9udDpyLmZvbnR9O3ModSxjLGgsImxpbmVhciIsZCksbyh1LGMsaCwibGluZWFyIixkKSxoKCJ0aXRsZS50ZXh0IixyLl9kZmx0VGl0bGUuY29sb3JiYXIpLG4uY29lcmNlRm9udChoLCJ0aXRsZS5mb250IixyLmZvbnQpLGgoInRpdGxlLnNpZGUiKX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfbGFiZWxfZGVmYXVsdHMiOjc4NCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfbWFya19kZWZhdWx0cyI6Nzg1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja192YWx1ZV9kZWZhdWx0cyI6Nzg2LCIuL2F0dHJpYnV0ZXMiOjU5M31dLDU5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgidGlueWNvbG9yMiIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iikscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGw9dCgiLi4vZHJhZ2VsZW1lbnQiKSxjPXQoIi4uLy4uL2xpYiIpLHU9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsaD10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIiksZj10KCIuLi9kcmF3aW5nIikscD10KCIuLi9jb2xvciIpLGQ9dCgiLi4vdGl0bGVzIiksZz10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSx2PXQoIi4uL2NvbG9yc2NhbGUvaGVscGVycyIpLmZsaXBTY2FsZSxtPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2RlZmF1bHRzIikseT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vcG9zaXRpb25fZGVmYXVsdHMiKSx4PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyIpLGI9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLF89Yi5MSU5FX1NQQUNJTkcsdz1iLkZST01fVEwsaz1iLkZST01fQlIsVD10KCIuL2NvbnN0YW50cyIpLmNuO2UuZXhwb3J0cz17ZHJhdzpmdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0Ll9pbmZvbGF5ZXIuc2VsZWN0QWxsKCJnLiIrVC5jb2xvcmJhcikuZGF0YShmdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpPXQuX2Z1bGxMYXlvdXQsbz10LmNhbGNkYXRhLHM9W107ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdSh0LHtfZmlsbGNvbG9yOm51bGwsX2xpbmU6e2NvbG9yOm51bGwsd2lkdGg6bnVsbCxkYXNoOm51bGx9LF9sZXZlbHM6e3N0YXJ0Om51bGwsZW5kOm51bGwsc2l6ZTpudWxsfSxfZmlsbGxldmVsczpudWxsLF9maWxsZ3JhZGllbnQ6bnVsbCxfenJhbmdlOm51bGx9KX1mdW5jdGlvbiBjKCl7ImZ1bmN0aW9uIj09dHlwZW9mIGEuY2FsYz9hLmNhbGModCxuLGUpOihlLl9maWxsZ3JhZGllbnQ9ci5yZXZlcnNlc2NhbGU/dihyLmNvbG9yc2NhbGUpOnIuY29sb3JzY2FsZSxlLl96cmFuZ2U9W3JbYS5taW5dLHJbYS5tYXhdXSl9Zm9yKHZhciBoPTA7aDxvLmxlbmd0aDtoKyspe3ZhciBmPW9baF0scD0obj1mWzBdLnRyYWNlKS5fbW9kdWxlLmNvbG9yYmFyO2lmKCEwPT09bi52aXNpYmxlJiZwKWZvcih2YXIgZD1BcnJheS5pc0FycmF5KHApLGc9ZD9wOltwXSxtPTA7bTxnLmxlbmd0aDttKyspe3ZhciB5PShhPWdbbV0pLmNvbnRhaW5lcjsocj15P25beV06bikmJnIuc2hvd3NjYWxlJiYoKGU9bChyLmNvbG9yYmFyKSkuX2lkPSJjYiIrbi51aWQrKGQmJnk/Ii0iK3k6IiIpLGUuX3RyYWNlSW5kZXg9bi5pbmRleCxlLl9wcm9wUHJlZml4PSh5P3krIi4iOiIiKSsiY29sb3JiYXIuIixlLl9tZXRhPW4uX21ldGEsYygpLHMucHVzaChlKSl9fWZvcih2YXIgeCBpbiBpLl9jb2xvckF4ZXMpaWYoKHI9aVt4XSkuc2hvd3NjYWxlKXt2YXIgYj1pLl9jb2xvckF4ZXNbeF07KGU9bChyLmNvbG9yYmFyKSkuX2lkPSJjYiIreCxlLl9wcm9wUHJlZml4PXgrIi5jb2xvcmJhci4iLGUuX21ldGE9aS5fbWV0YSxhPXttaW46ImNtaW4iLG1heDoiY21heCJ9LCJoZWF0bWFwIiE9PWJbMF0mJihuPWJbMV0sYS5jYWxjPW4uX21vZHVsZS5jb2xvcmJhci5jYWxjKSxjKCkscy5wdXNoKGUpfXJldHVybiBzfSh0KSxmdW5jdGlvbih0KXtyZXR1cm4gdC5faWR9KTtlLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiB0Ll9pZH0pLmNsYXNzZWQoVC5jb2xvcmJhciwhMCksZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0KHRoaXMpO2MuZW5zdXJlU2luZ2xlKHIsInJlY3QiLFQuY2JiZyksYy5lbnN1cmVTaW5nbGUociwiZyIsVC5jYmZpbGxzKSxjLmVuc3VyZVNpbmdsZShyLCJnIixULmNibGluZXMpLGMuZW5zdXJlU2luZ2xlKHIsImciLFQuY2JheGlzLGZ1bmN0aW9uKHQpe3QuY2xhc3NlZChULmNyaXNwLCEwKX0pLGMuZW5zdXJlU2luZ2xlKHIsImciLFQuY2J0aXRsZXVuc2hpZnQsZnVuY3Rpb24odCl7dC5hcHBlbmQoImciKS5jbGFzc2VkKFQuY2J0aXRsZSwhMCl9KSxjLmVuc3VyZVNpbmdsZShyLCJyZWN0IixULmNib3V0bGluZSk7dmFyIHY9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPXIuX2Z1bGxMYXlvdXQsbD1vLl9zaXplLGg9ZS5fZmlsbGNvbG9yLHY9ZS5fbGluZSxiPWUudGl0bGUsTT1iLnNpZGUsQT1lLl96cmFuZ2V8fG4uZXh0ZW50KCgiZnVuY3Rpb24iPT10eXBlb2YgaD9oOnYuY29sb3IpLmRvbWFpbigpKSxTPSJmdW5jdGlvbiI9PXR5cGVvZiB2LmNvbG9yP3YuY29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdi5jb2xvcn0sRT0iZnVuY3Rpb24iPT10eXBlb2YgaD9oOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LEw9ZS5fbGV2ZWxzLEM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaT1lLl9sZXZlbHMsbz1bXSxzPVtdLGw9aS5lbmQraS5zaXplLzEwMCxjPWkuc2l6ZSx1PTEuMDAxKnJbMF0tLjAwMSpyWzFdLGg9MS4wMDEqclsxXS0uMDAxKnJbMF07Zm9yKGE9MDthPDFlNSYmKG49aS5zdGFydCthKmMsIShjPjA/bj49bDpuPD1sKSk7YSsrKW4+dSYmbjxoJiZvLnB1c2gobik7aWYoZS5fZmlsbGdyYWRpZW50KXM9WzBdO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGUuX2ZpbGxjb2xvcil7dmFyIGY9ZS5fZmlsbGxldmVscztpZihmKWZvcihsPWYuZW5kK2Yuc2l6ZS8xMDAsYz1mLnNpemUsYT0wO2E8MWU1JiYobj1mLnN0YXJ0K2EqYywhKGM+MD9uPj1sOm48PWwpKTthKyspbj5yWzBdJiZuPHJbMV0mJnMucHVzaChuKTtlbHNlKHM9by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQtaS5zaXplLzJ9KSkucHVzaChzW3MubGVuZ3RoLTFdK2kuc2l6ZSl9ZWxzZSBlLl9maWxsY29sb3ImJiJzdHJpbmciPT10eXBlb2YgZS5fZmlsbGNvbG9yJiYocz1bMF0pO3JldHVybiBpLnNpemU8MCYmKG8ucmV2ZXJzZSgpLHMucmV2ZXJzZSgpKSx7bGluZTpvLGZpbGw6c319KDAsZSxBKSxQPUMuZmlsbCxPPUMubGluZSx6PU1hdGgucm91bmQoZS50aGlja25lc3MqKCJmcmFjdGlvbiI9PT1lLnRoaWNrbmVzc21vZGU/bC53OjEpKSxJPXovbC53LEQ9TWF0aC5yb3VuZChlLmxlbiooImZyYWN0aW9uIj09PWUubGVubW9kZT9sLmg6MSkpLFI9RC9sLmgsRj1lLnhwYWQvbC53LEI9KGUuYm9yZGVyd2lkdGgrZS5vdXRsaW5ld2lkdGgpLzIsTj1lLnlwYWQvbC5oLGo9TWF0aC5yb3VuZChlLngqbC53K2UueHBhZCksVj1lLngtSSooe21pZGRsZTouNSxyaWdodDoxfVtlLnhhbmNob3JdfHwwKSxVPWUueStSKigoe3RvcDotLjUsYm90dG9tOi41fVtlLnlhbmNob3JdfHwwKS0uNSkscT1NYXRoLnJvdW5kKGwuaCooMS1VKSksSD1xLUQ7ZS5fbGVuRnJhYz1SLGUuX3RoaWNrRnJhYz1JLGUuX3hMZWZ0RnJhYz1WLGUuX3lCb3R0b21GcmFjPVU7dmFyIEc9ZS5fYXhpcz1mdW5jdGlvbih0LGUscil7dmFyIG49dC5fZnVsbExheW91dCxhPXt0eXBlOiJsaW5lYXIiLHJhbmdlOnIsdGlja21vZGU6ZS50aWNrbW9kZSxudGlja3M6ZS5udGlja3MsdGljazA6ZS50aWNrMCxkdGljazplLmR0aWNrLHRpY2t2YWxzOmUudGlja3ZhbHMsdGlja3RleHQ6ZS50aWNrdGV4dCx0aWNrczplLnRpY2tzLHRpY2tsZW46ZS50aWNrbGVuLHRpY2t3aWR0aDplLnRpY2t3aWR0aCx0aWNrY29sb3I6ZS50aWNrY29sb3Isc2hvd3RpY2tsYWJlbHM6ZS5zaG93dGlja2xhYmVscyx0aWNrZm9udDplLnRpY2tmb250LHRpY2thbmdsZTplLnRpY2thbmdsZSx0aWNrZm9ybWF0OmUudGlja2Zvcm1hdCxleHBvbmVudGZvcm1hdDplLmV4cG9uZW50Zm9ybWF0LHNlcGFyYXRldGhvdXNhbmRzOmUuc2VwYXJhdGV0aG91c2FuZHMsc2hvd2V4cG9uZW50OmUuc2hvd2V4cG9uZW50LHNob3d0aWNrcHJlZml4OmUuc2hvd3RpY2twcmVmaXgsdGlja3ByZWZpeDplLnRpY2twcmVmaXgsc2hvd3RpY2tzdWZmaXg6ZS5zaG93dGlja3N1ZmZpeCx0aWNrc3VmZml4OmUudGlja3N1ZmZpeCx0aXRsZTplLnRpdGxlLHNob3dsaW5lOiEwLGFuY2hvcjoiZnJlZSIsc2lkZToicmlnaHQiLHBvc2l0aW9uOjF9LGk9e3R5cGU6ImxpbmVhciIsX2lkOiJ5IitlLl9pZH0sbz17bGV0dGVyOiJ5Iixmb250Om4uZm9udCxub0hvdmVyOiEwLG5vVGlja3NvbjohMCxjYWxlbmRhcjpuLmNhbGVuZGFyfTtmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGMuY29lcmNlKGEsaSx4LHQsZSl9cmV0dXJuIG0oYSxpLHMsbyxuKSx5KGEsaSxzLG8pLGl9KHIsZSxBKTtpZihHLnBvc2l0aW9uPWUueCtGK0ksLTEhPT1bInRvcCIsImJvdHRvbSJdLmluZGV4T2YoTSkmJihHLnRpdGxlLnNpZGU9TSxHLnRpdGxleD1lLngrRixHLnRpdGxleT1VKygidG9wIj09PWIuc2lkZT9SLU46TikpLHYuY29sb3ImJiJhdXRvIj09PWUudGlja21vZGUpe0cudGlja21vZGU9ImxpbmVhciIsRy50aWNrMD1MLnN0YXJ0O3ZhciBZPUwuc2l6ZSxXPWMuY29uc3RyYWluKChxLUgpLzUwLDQsMTUpKzEsWD0oQVsxXS1BWzBdKS8oKGUubnRpY2tzfHxXKSpZKTtpZihYPjEpe3ZhciBaPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coWCkvTWF0aC5MTjEwKSk7WSo9WipjLnJvdW5kVXAoWC9aLFsyLDUsMTBdKSwoTWF0aC5hYnMoTC5zdGFydCkvTC5zaXplKzFlLTYpJTE8MmUtNiYmKEcudGljazA9MCl9Ry5kdGljaz1ZfUcuZG9tYWluPVtVK04sVStSLU5dLEcuc2V0U2NhbGUoKSx0LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK01hdGgucm91bmQobC5sKSsiLCIrTWF0aC5yb3VuZChsLnQpKyIpIik7dmFyIEosSz10LnNlbGVjdCgiLiIrVC5jYnRpdGxldW5zaGlmdCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0iK01hdGgucm91bmQobC5sKSsiLC0iK01hdGgucm91bmQobC50KSsiKSIpLFE9dC5zZWxlY3QoIi4iK1QuY2JheGlzKSwkPTA7ZnVuY3Rpb24gdHQobixhKXt2YXIgaT17cHJvcENvbnRhaW5lcjpHLHByb3BOYW1lOmUuX3Byb3BQcmVmaXgrInRpdGxlIix0cmFjZUluZGV4OmUuX3RyYWNlSW5kZXgsX21ldGE6ZS5fbWV0YSxwbGFjZWhvbGRlcjpvLl9kZmx0VGl0bGUuY29sb3JiYXIsY29udGFpbmVyR3JvdXA6dC5zZWxlY3QoIi4iK1QuY2J0aXRsZSl9LHM9ImgiPT09bi5jaGFyQXQoMCk/bi5zdWJzdHIoMSk6ImgiK247dC5zZWxlY3RBbGwoIi4iK3MrIiwuIitzKyItbWF0aC1ncm91cCIpLnJlbW92ZSgpLGQuZHJhdyhyLG4sdShpLGF8fHt9KSl9cmV0dXJuIGMuc3luY09yQXN5bmMoW2kucHJldmlvdXNQcm9taXNlcyxmdW5jdGlvbigpe2lmKC0xIT09WyJ0b3AiLCJib3R0b20iXS5pbmRleE9mKE0pKXt2YXIgdCxyPWwubCsoZS54K0YpKmwudyxuPUcudGl0bGUuZm9udC5zaXplO3Q9InRvcCI9PT1NPygxLShVK1ItTikpKmwuaCtsLnQrMysuNzUqbjooMS0oVStOKSkqbC5oK2wudC0zLS4yNSpuLHR0KEcuX2lkKyJ0aXRsZSIse2F0dHJpYnV0ZXM6e3g6cix5OnQsInRleHQtYW5jaG9yIjoic3RhcnQifX0pfX0sZnVuY3Rpb24oKXtpZigtMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihNKSl7dmFyIGk9dC5zZWxlY3QoIi4iK1QuY2J0aXRsZSksbz1pLnNlbGVjdCgidGV4dCIpLHU9Wy1lLm91dGxpbmV3aWR0aC8yLGUub3V0bGluZXdpZHRoLzJdLGg9aS5zZWxlY3QoIi5oIitHLl9pZCsidGl0bGUtbWF0aC1ncm91cCIpLm5vZGUoKSxwPTE1LjY7aWYoby5ub2RlKCkmJihwPXBhcnNlSW50KG8ubm9kZSgpLnN0eWxlLmZvbnRTaXplLDEwKSpfKSxoPygkPWYuYkJveChoKS5oZWlnaHQpPnAmJih1WzFdLT0oJC1wKS8yKTpvLm5vZGUoKSYmIW8uY2xhc3NlZChULmpzUGxhY2Vob2xkZXIpJiYoJD1mLmJCb3goby5ub2RlKCkpLmhlaWdodCksJCl7aWYoJCs9NSwidG9wIj09PU0pRy5kb21haW5bMV0tPSQvbC5oLHVbMV0qPS0xO2Vsc2V7Ry5kb21haW5bMF0rPSQvbC5oO3ZhciBkPWcubGluZUNvdW50KG8pO3VbMV0rPSgxLWQpKnB9aS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit1KyIpIiksRy5zZXRTY2FsZSgpfX10LnNlbGVjdEFsbCgiLiIrVC5jYmZpbGxzKyIsLiIrVC5jYmxpbmVzKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK01hdGgucm91bmQobC5oKigxLUcuZG9tYWluWzFdKSkrIikiKSxRLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrTWF0aC5yb3VuZCgtbC50KSsiKSIpO3ZhciBtPXQuc2VsZWN0KCIuIitULmNiZmlsbHMpLnNlbGVjdEFsbCgicmVjdC4iK1QuY2JmaWxsKS5kYXRhKFApO20uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKFQuY2JmaWxsLCEwKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpLG0uZXhpdCgpLnJlbW92ZSgpO3ZhciB5PUEubWFwKEcuYzJwKS5tYXAoTWF0aC5yb3VuZCkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KTttLmVhY2goZnVuY3Rpb24odCxpKXt2YXIgbz1bMD09PWk/QVswXTooUFtpXStQW2ktMV0pLzIsaT09PVAubGVuZ3RoLTE/QVsxXTooUFtpXStQW2krMV0pLzJdLm1hcChHLmMycCkubWFwKE1hdGgucm91bmQpO29bMV09Yy5jb25zdHJhaW4ob1sxXSsob1sxXT5vWzBdKT8xOi0xLHlbMF0seVsxXSk7dmFyIHM9bi5zZWxlY3QodGhpcykuYXR0cih7eDpqLHdpZHRoOk1hdGgubWF4KHosMikseTpuLm1pbihvKSxoZWlnaHQ6TWF0aC5tYXgobi5tYXgobyktbi5taW4obyksMil9KTtpZihlLl9maWxsZ3JhZGllbnQpZi5ncmFkaWVudChzLHIsZS5faWQsInZlcnRpY2FsIixlLl9maWxsZ3JhZGllbnQsImZpbGwiKTtlbHNle3ZhciBsPUUodCkucmVwbGFjZSgiZS0iLCIiKTtzLmF0dHIoImZpbGwiLGEobCkudG9IZXhTdHJpbmcoKSl9fSk7dmFyIHg9dC5zZWxlY3QoIi4iK1QuY2JsaW5lcykuc2VsZWN0QWxsKCJwYXRoLiIrVC5jYmxpbmUpLmRhdGEodi5jb2xvciYmdi53aWR0aD9POltdKTt4LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZChULmNibGluZSwhMCkseC5leGl0KCkucmVtb3ZlKCkseC5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLmF0dHIoImQiLCJNIitqKyIsIisoTWF0aC5yb3VuZChHLmMycCh0KSkrdi53aWR0aC8yJTEpKyJoIit6KS5jYWxsKGYubGluZUdyb3VwU3R5bGUsdi53aWR0aCxTKHQpLHYuZGFzaCl9KSxRLnNlbGVjdEFsbCgiZy4iK0cuX2lkKyJ0aWNrLHBhdGgiKS5yZW1vdmUoKTt2YXIgYj1qK3orKGUub3V0bGluZXdpZHRofHwwKS8yLSgib3V0c2lkZSI9PT1lLnRpY2tzPzE6MCksdz1zLmNhbGNUaWNrcyhHKSxrPXMubWFrZVRyYW5zRm4oRyksTD1zLmdldFRpY2tTaWducyhHKVsyXTtyZXR1cm4gcy5kcmF3VGlja3MocixHLHt2YWxzOiJpbnNpZGUiPT09Ry50aWNrcz9zLmNsaXBFbmRzKEcsdyk6dyxsYXllcjpRLHBhdGg6cy5tYWtlVGlja1BhdGgoRyxiLEwpLHRyYW5zRm46a30pLHMuZHJhd0xhYmVscyhyLEcse3ZhbHM6dyxsYXllcjpRLHRyYW5zRm46ayxsYWJlbEZuczpzLm1ha2VMYWJlbEZucyhHLGIpfSl9LGZ1bmN0aW9uKCl7aWYoLTE9PT1bInRvcCIsImJvdHRvbSJdLmluZGV4T2YoTSkpe3ZhciB0PUcudGl0bGUuZm9udC5zaXplLGU9Ry5fb2Zmc2V0K0cuX2xlbmd0aC8yLGE9bC5sKyhHLnBvc2l0aW9ufHwwKSpsLncrKCJyaWdodCI9PT1HLnNpZGU/MTArdCooRy5zaG93dGlja2xhYmVscz8xOi41KTotMTAtdCooRy5zaG93dGlja2xhYmVscz8uNTowKSk7dHQoImgiK0cuX2lkKyJ0aXRsZSIse2F2b2lkOntzZWxlY3Rpb246bi5zZWxlY3Qocikuc2VsZWN0QWxsKCJnLiIrRy5faWQrInRpY2siKSxzaWRlOk0sb2Zmc2V0TGVmdDpsLmwsb2Zmc2V0VG9wOjAsbWF4U2hpZnQ6by53aWR0aH0sYXR0cmlidXRlczp7eDphLHk6ZSwidGV4dC1hbmNob3IiOiJtaWRkbGUifSx0cmFuc2Zvcm06e3JvdGF0ZToiLTkwIixvZmZzZXQ6MH19KX19LGkucHJldmlvdXNQcm9taXNlcyxmdW5jdGlvbigpe3ZhciBuPXorZS5vdXRsaW5ld2lkdGgvMitmLmJCb3goUS5ub2RlKCkpLndpZHRoO2lmKChKPUsuc2VsZWN0KCJ0ZXh0IikpLm5vZGUoKSYmIUouY2xhc3NlZChULmpzUGxhY2Vob2xkZXIpKXt2YXIgYSxvPUsuc2VsZWN0KCIuaCIrRy5faWQrInRpdGxlLW1hdGgtZ3JvdXAiKS5ub2RlKCk7YT1vJiYtMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihNKT9mLmJCb3gobykud2lkdGg6Zi5iQm94KEsubm9kZSgpKS5yaWdodC1qLWwubCxuPU1hdGgubWF4KG4sYSl9dmFyIHM9MiplLnhwYWQrbitlLmJvcmRlcndpZHRoK2Uub3V0bGluZXdpZHRoLzIsYz1xLUg7dC5zZWxlY3QoIi4iK1QuY2JiZykuYXR0cih7eDpqLWUueHBhZC0oZS5ib3JkZXJ3aWR0aCtlLm91dGxpbmV3aWR0aCkvMix5OkgtQix3aWR0aDpNYXRoLm1heChzLDIpLGhlaWdodDpNYXRoLm1heChjKzIqQiwyKX0pLmNhbGwocC5maWxsLGUuYmdjb2xvcikuY2FsbChwLnN0cm9rZSxlLmJvcmRlcmNvbG9yKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixlLmJvcmRlcndpZHRoKSx0LnNlbGVjdEFsbCgiLiIrVC5jYm91dGxpbmUpLmF0dHIoe3g6aix5OkgrZS55cGFkKygidG9wIj09PU0/JDowKSx3aWR0aDpNYXRoLm1heCh6LDIpLGhlaWdodDpNYXRoLm1heChjLTIqZS55cGFkLSQsMil9KS5jYWxsKHAuc3Ryb2tlLGUub3V0bGluZWNvbG9yKS5zdHlsZSh7ZmlsbDoibm9uZSIsInN0cm9rZS13aWR0aCI6ZS5vdXRsaW5ld2lkdGh9KTt2YXIgdT0oe2NlbnRlcjouNSxyaWdodDoxfVtlLnhhbmNob3JdfHwwKSpzO3QuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKGwubC11KSsiLCIrbC50KyIpIik7dmFyIGg9e30sZD13W2UueWFuY2hvcl0sZz1rW2UueWFuY2hvcl07InBpeGVscyI9PT1lLmxlbm1vZGU/KGgueT1lLnksaC50PWMqZCxoLmI9YypnKTooaC50PWguYj0wLGgueXQ9ZS55K2UubGVuKmQsaC55Yj1lLnktZS5sZW4qZyk7dmFyIHY9d1tlLnhhbmNob3JdLG09a1tlLnhhbmNob3JdO2lmKCJwaXhlbHMiPT09ZS50aGlja25lc3Ntb2RlKWgueD1lLngsaC5sPXMqdixoLnI9cyptO2Vsc2V7dmFyIHk9cy16O2gubD15KnYsaC5yPXkqbSxoLnhsPWUueC1lLnRoaWNrbmVzcyp2LGgueHI9ZS54K2UudGhpY2tuZXNzKm19aS5hdXRvTWFyZ2luKHIsZS5faWQsaCl9XSxyKX0ocixlLHQpO3YmJnYudGhlbiYmKHQuX3Byb21pc2VzfHxbXSkucHVzaCh2KSx0Ll9jb250ZXh0LmVkaXRzLmNvbG9yYmFyUG9zaXRpb24mJmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGkscz1yLl9mdWxsTGF5b3V0Ll9zaXplO2wuaW5pdCh7ZWxlbWVudDp0Lm5vZGUoKSxnZDpyLHByZXBGbjpmdW5jdGlvbigpe249dC5hdHRyKCJ0cmFuc2Zvcm0iKSxoKHQpfSxtb3ZlRm46ZnVuY3Rpb24ocixvKXt0LmF0dHIoInRyYW5zZm9ybSIsbisiIHRyYW5zbGF0ZSgiK3IrIiwiK28rIikiKSxhPWwuYWxpZ24oZS5feExlZnRGcmFjK3Ivcy53LGUuX3RoaWNrRnJhYywwLDEsZS54YW5jaG9yKSxpPWwuYWxpZ24oZS5feUJvdHRvbUZyYWMtby9zLmgsZS5fbGVuRnJhYywwLDEsZS55YW5jaG9yKTt2YXIgYz1sLmdldEN1cnNvcihhLGksZS54YW5jaG9yLGUueWFuY2hvcik7aCh0LGMpfSxkb25lRm46ZnVuY3Rpb24oKXtpZihoKHQpLHZvaWQgMCE9PWEmJnZvaWQgMCE9PWkpe3ZhciBuPXt9O25bZS5fcHJvcFByZWZpeCsieCJdPWEsbltlLl9wcm9wUHJlZml4KyJ5Il09aSx2b2lkIDAhPT1lLl90cmFjZUluZGV4P28uY2FsbCgiX2d1aVJlc3R5bGUiLHIsbixlLl90cmFjZUluZGV4KTpvLmNhbGwoIl9ndWlSZWxheW91dCIscixuKX19fSl9KHIsZSx0KX0pLGUuZXhpdCgpLmVhY2goZnVuY3Rpb24oZSl7aS5hdXRvTWFyZ2luKHQsZS5faWQpfSkucmVtb3ZlKCksZS5vcmRlcigpfX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9saWIvc2V0Y3Vyc29yIjo3MzcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19kZWZhdWx0cyI6NzY3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Bvc2l0aW9uX2RlZmF1bHRzIjo3ODAsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo4MjYsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2NvbG9yIjo1OTIsIi4uL2NvbG9yc2NhbGUvaGVscGVycyI6NjAzLCIuLi9kcmFnZWxlbWVudCI6NjEwLCIuLi9kcmF3aW5nIjo2MTMsIi4uL3RpdGxlcyI6Njc5LCIuL2NvbnN0YW50cyI6NTk0LGQzOjE2NSx0aW55Y29sb3IyOjUzNn1dLDU5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdCh0LmNvbG9yYmFyKX19LHsiLi4vLi4vbGliIjo3MTd9XSw1OTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImNvbG9yYmFyIixhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxkcmF3OnQoIi4vZHJhdyIpLmRyYXcsaGFzQ29sb3JiYXI6dCgiLi9oYXNfY29sb3JiYXIiKX19LHsiLi9hdHRyaWJ1dGVzIjo1OTMsIi4vZGVmYXVsdHMiOjU5NSwiLi9kcmF3Ijo1OTYsIi4vaGFzX2NvbG9yYmFyIjo1OTd9XSw1OTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vY29sb3JiYXIvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vbGliL3JlZ2V4IikuY291bnRlcixpPXQoIi4vc2NhbGVzLmpzIikuc2NhbGVzO09iamVjdC5rZXlzKGkpO2Z1bmN0aW9uIG8odCl7cmV0dXJuImAiK3QrImAifWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Q9dHx8IiI7dmFyIHIscz0oZT1lfHx7fSkuY0xldHRlcnx8ImMiLGw9KCJvbmx5SWZOdW1lcmljYWwiaW4gZT9lLm9ubHlJZk51bWVyaWNhbDpCb29sZWFuKHQpLCJub1NjYWxlImluIGU/ZS5ub1NjYWxlOiJtYXJrZXIubGluZSI9PT10KSxjPSJzaG93U2NhbGVEZmx0ImluIGU/ZS5zaG93U2NhbGVEZmx0OiJ6Ij09PXMsdT0ic3RyaW5nIj09dHlwZW9mIGUuY29sb3JzY2FsZURmbHQ/aVtlLmNvbG9yc2NhbGVEZmx0XTpudWxsLGg9ZS5lZGl0VHlwZU92ZXJyaWRlfHwiIixmPXQ/dCsiLiI6IiI7ImNvbG9yQXR0ciJpbiBlPyhyPWUuY29sb3JBdHRyLGUuY29sb3JBdHRyKTpvKGYrKHI9e3o6InoiLGM6ImNvbG9yIn1bc10pKTt2YXIgcD1zKyJhdXRvIixkPXMrIm1pbiIsZz1zKyJtYXgiLHY9cysibWlkIixtPShvKGYrcCksbyhmK2QpLG8oZitnKSx7fSk7bVtkXT1tW2ddPXZvaWQgMDt2YXIgeT17fTt5W3BdPSExO3ZhciB4PXt9O3JldHVybiJjb2xvciI9PT1yJiYoeC5jb2xvcj17dmFsVHlwZToiY29sb3IiLGFycmF5T2s6ITAsZWRpdFR5cGU6aHx8InN0eWxlIn0sZS5hbmltJiYoeC5jb2xvci5hbmltPSEwKSkseFtwXT17dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOm19LHhbZF09e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGVkaXRUeXBlOmh8fCJwbG90IixpbXBsaWVkRWRpdHM6eX0seFtnXT17dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsZWRpdFR5cGU6aHx8InBsb3QiLGltcGxpZWRFZGl0czp5fSx4W3ZdPXt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOm19LHguY29sb3JzY2FsZT17dmFsVHlwZToiY29sb3JzY2FsZSIsZWRpdFR5cGU6ImNhbGMiLGRmbHQ6dSxpbXBsaWVkRWRpdHM6e2F1dG9jb2xvcnNjYWxlOiExfX0seC5hdXRvY29sb3JzY2FsZT17dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSE9PWUuYXV0b0NvbG9yRGZsdCxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOntjb2xvcnNjYWxlOnZvaWQgMH19LHgucmV2ZXJzZXNjYWxlPXt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJwbG90In0sbHx8KHguc2hvd3NjYWxlPXt2YWxUeXBlOiJib29sZWFuIixkZmx0OmMsZWRpdFR5cGU6ImNhbGMifSx4LmNvbG9yYmFyPW4pLGUubm9Db2xvckF4aXN8fCh4LmNvbG9yYXhpcz17dmFsVHlwZToic3VicGxvdGlkIixyZWdleDphKCJjb2xvcmF4aXMiKSxkZmx0Om51bGwsZWRpdFR5cGU6ImNhbGMifSkseH19LHsiLi4vLi4vbGliL3JlZ2V4Ijo3MzMsIi4uL2NvbG9yYmFyL2F0dHJpYnV0ZXMiOjU5MywiLi9zY2FsZXMuanMiOjYwN31dLDYwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuL2hlbHBlcnMiKS5leHRyYWN0T3B0cztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvLHM9dC5fZnVsbExheW91dCxsPXIudmFscyxjPXIuY29udGFpbmVyU3RyLHU9Yz9hLm5lc3RlZFByb3BlcnR5KGUsYykuZ2V0KCk6ZSxoPWkodSksZj0hMSE9PWguYXV0byxwPWgubWluLGQ9aC5tYXgsZz1oLm1pZCx2PWZ1bmN0aW9uKCl7cmV0dXJuIGEuYWdnTnVtcyhNYXRoLm1pbixudWxsLGwpfSxtPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYWdnTnVtcyhNYXRoLm1heCxudWxsLGwpfTsodm9pZCAwPT09cD9wPXYoKTpmJiYocD11Ll9jb2xvckF4JiZuKHApP01hdGgubWluKHAsdigpKTp2KCkpLHZvaWQgMD09PWQ/ZD1tKCk6ZiYmKGQ9dS5fY29sb3JBeCYmbihkKT9NYXRoLm1heChkLG0oKSk6bSgpKSxmJiZ2b2lkIDAhPT1nJiYoZC1nPmctcD9wPWctKGQtZyk6ZC1nPGctcCYmKGQ9ZysoZy1wKSkpLHA9PT1kJiYocC09LjUsZCs9LjUpLGguX3N5bmMoIm1pbiIscCksaC5fc3luYygibWF4IixkKSxoLmF1dG9jb2xvcnNjYWxlKSYmKG89cCpkPDA/cy5jb2xvcnNjYWxlLmRpdmVyZ2luZzpwPj0wP3MuY29sb3JzY2FsZS5zZXF1ZW50aWFsOnMuY29sb3JzY2FsZS5zZXF1ZW50aWFsbWludXMsaC5fc3luYygiY29sb3JzY2FsZSIsbykpfX0seyIuLi8uLi9saWIiOjcxNywiLi9oZWxwZXJzIjo2MDMsImZhc3QtaXNudW1lcmljIjoyMjh9XSw2MDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2hlbHBlcnMiKS5oYXNDb2xvcnNjYWxlLGk9dCgiLi9oZWxwZXJzIikuZXh0cmFjdE9wdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcih0LGUpe3ZhciByPXRbIl8iK2VdO3ZvaWQgMCE9PXImJih0W2VdPXIpfWZ1bmN0aW9uIG8odCxhKXt2YXIgbz1hLmNvbnRhaW5lcj9uLm5lc3RlZFByb3BlcnR5KHQsYS5jb250YWluZXIpLmdldCgpOnQ7aWYobylpZihvLmNvbG9yYXhpcylvLl9jb2xvckF4PWVbby5jb2xvcmF4aXNdO2Vsc2V7dmFyIHM9aShvKSxsPXMuYXV0bzsobHx8dm9pZCAwPT09cy5taW4pJiZyKG8sYS5taW4pLChsfHx2b2lkIDA9PT1zLm1heCkmJnIobyxhLm1heCkscy5hdXRvY29sb3JzY2FsZSYmcihvLCJjb2xvcnNjYWxlIil9fWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgbD10W3NdLGM9bC5fbW9kdWxlLmNvbG9yYmFyO2lmKGMpaWYoQXJyYXkuaXNBcnJheShjKSlmb3IodmFyIHU9MDt1PGMubGVuZ3RoO3UrKylvKGwsY1t1XSk7ZWxzZSBvKGwsYyk7YShsLCJtYXJrZXIubGluZSIpJiZvKGwse2NvbnRhaW5lcjoibWFya2VyLmxpbmUiLG1pbjoiY21pbiIsbWF4OiJjbWF4In0pfWZvcih2YXIgaCBpbiBlLl9jb2xvckF4ZXMpbyhlW2hdLHttaW46ImNtaW4iLG1heDoiY21heCJ9KX19LHsiLi4vLi4vbGliIjo3MTcsIi4vaGVscGVycyI6NjAzfV0sNjAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uL2NvbG9yYmFyL2hhc19jb2xvcmJhciIpLG89dCgiLi4vY29sb3JiYXIvZGVmYXVsdHMiKSxzPXQoIi4vc2NhbGVzIikuaXNWYWxpZCxsPXQoIi4uLy4uL3JlZ2lzdHJ5IikudHJhY2VJcztmdW5jdGlvbiBjKHQsZSl7dmFyIHI9ZS5zbGljZSgwLGUubGVuZ3RoLTEpO3JldHVybiBlP2EubmVzdGVkUHJvcGVydHkodCxyKS5nZXQoKXx8e306dH1lLmV4cG9ydHM9ZnVuY3Rpb24gdChlLHIsdSxoLGYpe3ZhciBwPWYucHJlZml4LGQ9Zi5jTGV0dGVyLGc9Il9tb2R1bGUiaW4gcix2PWMoZSxwKSxtPWMocixwKSx5PWMoci5fdGVtcGxhdGV8fHt9LHApfHx7fSx4PWZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSBlLmNvbG9yYXhpcyxkZWxldGUgci5jb2xvcmF4aXMsdChlLHIsdSxoLGYpfTtpZihnKXt2YXIgYj11Ll9jb2xvckF4ZXN8fHt9LF89aChwKyJjb2xvcmF4aXMiKTtpZihfKXt2YXIgdz1sKHIsImNvbnRvdXIiKSYmYS5uZXN0ZWRQcm9wZXJ0eShyLCJjb250b3Vycy5jb2xvcmluZyIpLmdldCgpfHwiaGVhdG1hcCIsaz1iW19dO3JldHVybiB2b2lkKGs/KGtbMl0ucHVzaCh4KSxrWzBdIT09dyYmKGtbMF09ITEsYS53YXJuKFsiSWdub3JpbmcgY29sb3JheGlzOiIsXywic2V0dGluZyIsImFzIGl0IGlzIGxpbmtlZCB0byBpbmNvbXBhdGlibGUgY29sb3JzY2FsZXMuIl0uam9pbigiICIpKSkpOmJbX109W3cscixbeF1dKX19dmFyIFQ9dltkKyJtaW4iXSxNPXZbZCsibWF4Il0sQT1uKFQpJiZuKE0pJiZUPE07aChwK2QrImF1dG8iLCFBKT9oKHArZCsibWlkIik6KGgocCtkKyJtaW4iKSxoKHArZCsibWF4IikpO3ZhciBTLEUsTD12LmNvbG9yc2NhbGUsQz15LmNvbG9yc2NhbGU7KHZvaWQgMCE9PUwmJihTPSFzKEwpKSx2b2lkIDAhPT1DJiYoUz0hcyhDKSksaChwKyJhdXRvY29sb3JzY2FsZSIsUyksaChwKyJjb2xvcnNjYWxlIiksaChwKyJyZXZlcnNlc2NhbGUiKSwibWFya2VyLmxpbmUuIiE9PXApJiYocCYmZyYmKEU9aSh2KSksaChwKyJzaG93c2NhbGUiLEUpJiYocCYmeSYmKG0uX3RlbXBsYXRlPXkpLG8odixtLHUpKSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9jb2xvcmJhci9kZWZhdWx0cyI6NTk1LCIuLi9jb2xvcmJhci9oYXNfY29sb3JiYXIiOjU5NywiLi9zY2FsZXMiOjYwNywiZmFzdC1pc251bWVyaWMiOjIyOH1dLDYwMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgidGlueWNvbG9yMiIpLGk9dCgiZmFzdC1pc251bWVyaWMiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vY29sb3IiKSxsPXQoIi4vc2NhbGVzIikuaXNWYWxpZDt2YXIgYz1bInNob3dzY2FsZSIsImF1dG9jb2xvcnNjYWxlIiwiY29sb3JzY2FsZSIsInJldmVyc2VzY2FsZSIsImNvbG9yYmFyIl0sdT1bIm1pbiIsIm1heCIsIm1pZCIsImF1dG8iXTtmdW5jdGlvbiBoKHQpe3ZhciBlLHIsbixhPXQuX2NvbG9yQXgsaT1hfHx0LG89e307Zm9yKHI9MDtyPGMubGVuZ3RoO3IrKylvW249Y1tyXV09aVtuXTtpZihhKWZvcihlPSJjIixyPTA7cjx1Lmxlbmd0aDtyKyspb1tuPXVbcl1dPWlbImMiK25dO2Vsc2V7dmFyIHM7Zm9yKHI9MDtyPHUubGVuZ3RoO3IrKykocz0iYyIrKG49dVtyXSkpaW4gaT9vW25dPWlbc106KHM9InoiK24paW4gaSYmKG9bbl09aVtzXSk7ZT1zLmNoYXJBdCgwKX1yZXR1cm4gby5fc3luYz1mdW5jdGlvbih0LHIpe3ZhciBuPS0xIT09dS5pbmRleE9mKHQpP2UrdDp0O2lbbl09aVsiXyIrbl09cn0sb31mdW5jdGlvbiBmKHQpe2Zvcih2YXIgZT1oKHQpLHI9ZS5taW4sbj1lLm1heCxhPWUucmV2ZXJzZXNjYWxlP3AoZS5jb2xvcnNjYWxlKTplLmNvbG9yc2NhbGUsaT1hLmxlbmd0aCxvPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKSxsPTA7bDxpO2wrKyl7dmFyIGM9YVtsXTtvW2xdPXIrY1swXSoobi1yKSxzW2xdPWNbMV19cmV0dXJue2RvbWFpbjpvLHJhbmdlOnN9fWZ1bmN0aW9uIHAodCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49ZS0xLGE9MDtuPj0wO24tLSxhKyspe3ZhciBpPXRbbl07clthXT1bMS1pWzBdLGlbMV1dfXJldHVybiByfWZ1bmN0aW9uIGQodCxlKXtlPWV8fHt9O2Zvcih2YXIgcj10LmRvbWFpbixvPXQucmFuZ2UsbD1vLmxlbmd0aCxjPW5ldyBBcnJheShsKSx1PTA7dTxsO3UrKyl7dmFyIGg9YShvW3VdKS50b1JnYigpO2NbdV09W2gucixoLmcsaC5iLGguYV19dmFyIGYscD1uLnNjYWxlLmxpbmVhcigpLmRvbWFpbihyKS5yYW5nZShjKS5jbGFtcCghMCksZD1lLm5vTnVtZXJpY0NoZWNrLHY9ZS5yZXR1cm5BcnJheTtyZXR1cm4oZj1kJiZ2P3A6ZD9mdW5jdGlvbih0KXtyZXR1cm4gZyhwKHQpKX06dj9mdW5jdGlvbih0KXtyZXR1cm4gaSh0KT9wKHQpOmEodCkuaXNWYWxpZCgpP3Q6cy5kZWZhdWx0TGluZX06ZnVuY3Rpb24odCl7cmV0dXJuIGkodCk/ZyhwKHQpKTphKHQpLmlzVmFsaWQoKT90OnMuZGVmYXVsdExpbmV9KS5kb21haW49cC5kb21haW4sZi5yYW5nZT1mdW5jdGlvbigpe3JldHVybiBvfSxmfWZ1bmN0aW9uIGcodCl7dmFyIGU9e3I6dFswXSxnOnRbMV0sYjp0WzJdLGE6dFszXX07cmV0dXJuIGEoZSkudG9SZ2JTdHJpbmcoKX1lLmV4cG9ydHM9e2hhc0NvbG9yc2NhbGU6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWU/by5uZXN0ZWRQcm9wZXJ0eSh0LGUpLmdldCgpfHx7fTp0LGE9bltyfHwiY29sb3IiXSxzPSExO2lmKG8uaXNBcnJheU9yVHlwZWRBcnJheShhKSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihpKGFbY10pKXtzPSEwO2JyZWFrfXJldHVybiBvLmlzUGxhaW5PYmplY3QobikmJihzfHwhMD09PW4uc2hvd3NjYWxlfHxpKG4uY21pbikmJmkobi5jbWF4KXx8bChuLmNvbG9yc2NhbGUpfHxvLmlzUGxhaW5PYmplY3Qobi5jb2xvcmJhcikpfSxleHRyYWN0T3B0czpoLGV4dHJhY3RTY2FsZTpmLGZsaXBTY2FsZTpwLG1ha2VDb2xvclNjYWxlRnVuYzpkLG1ha2VDb2xvclNjYWxlRnVuY0Zyb21UcmFjZTpmdW5jdGlvbih0LGUpe3JldHVybiBkKGYodCksZSl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vY29sb3IiOjU5MiwiLi9zY2FsZXMiOjYwNyxkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjgsdGlueWNvbG9yMjo1MzZ9XSw2MDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9zY2FsZXMiKSxhPXQoIi4vaGVscGVycyIpO2UuZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJjb2xvcnNjYWxlIixhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksaGFuZGxlRGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNyb3NzVHJhY2VEZWZhdWx0czp0KCIuL2Nyb3NzX3RyYWNlX2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxzY2FsZXM6bi5zY2FsZXMsZGVmYXVsdFNjYWxlOm4uZGVmYXVsdFNjYWxlLGdldFNjYWxlOm4uZ2V0LGlzVmFsaWRTY2FsZTpuLmlzVmFsaWQsaGFzQ29sb3JzY2FsZTphLmhhc0NvbG9yc2NhbGUsZXh0cmFjdE9wdHM6YS5leHRyYWN0T3B0cyxleHRyYWN0U2NhbGU6YS5leHRyYWN0U2NhbGUsZmxpcFNjYWxlOmEuZmxpcFNjYWxlLG1ha2VDb2xvclNjYWxlRnVuYzphLm1ha2VDb2xvclNjYWxlRnVuYyxtYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2U6YS5tYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2V9fSx7Ii4vYXR0cmlidXRlcyI6NTk5LCIuL2NhbGMiOjYwMCwiLi9jcm9zc190cmFjZV9kZWZhdWx0cyI6NjAxLCIuL2RlZmF1bHRzIjo2MDIsIi4vaGVscGVycyI6NjAzLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo2MDUsIi4vbGF5b3V0X2RlZmF1bHRzIjo2MDYsIi4vc2NhbGVzIjo2MDd9XSw2MDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsYT10KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4vc2NhbGVzIikuc2NhbGVzO2UuZXhwb3J0cz17ZWRpdFR5cGU6ImNhbGMiLGNvbG9yc2NhbGU6e2VkaXRUeXBlOiJjYWxjIixzZXF1ZW50aWFsOnt2YWxUeXBlOiJjb2xvcnNjYWxlIixkZmx0OmkuUmVkcyxlZGl0VHlwZToiY2FsYyJ9LHNlcXVlbnRpYWxtaW51czp7dmFsVHlwZToiY29sb3JzY2FsZSIsZGZsdDppLkJsdWVzLGVkaXRUeXBlOiJjYWxjIn0sZGl2ZXJnaW5nOnt2YWxUeXBlOiJjb2xvcnNjYWxlIixkZmx0OmkuUmRCdSxlZGl0VHlwZToiY2FsYyJ9fSxjb2xvcmF4aXM6bih7X2lzU3VicGxvdE9iajohMCxlZGl0VHlwZToiY2FsYyJ9LGEoIiIse2NvbG9yQXR0cjoiY29ycmVzcG9uZGluZyB0cmFjZSBjb2xvciBhcnJheShzKSIsbm9Db2xvckF4aXM6ITAsc2hvd1NjYWxlRGZsdDohMH0pKX19LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuL2F0dHJpYnV0ZXMiOjU5OSwiLi9zY2FsZXMiOjYwN31dLDYwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxpPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxvPXQoIi4vZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9cigiY29sb3JzY2FsZS5zZXF1ZW50aWFsIikscigiY29sb3JzY2FsZS5zZXF1ZW50aWFsbWludXMiKSxyKCJjb2xvcnNjYWxlLmRpdmVyZ2luZyIpO3ZhciBzLGwsYz1lLl9jb2xvckF4ZXM7ZnVuY3Rpb24gdSh0LGUpe3JldHVybiBuLmNvZXJjZShzLGwsaS5jb2xvcmF4aXMsdCxlKX1mb3IodmFyIGggaW4gYyl7dmFyIGY9Y1toXTtpZihmWzBdKXM9dFtoXXx8e30sKGw9YS5uZXdDb250YWluZXIoZSxoLCJjb2xvcmF4aXMiKSkuX25hbWU9aCxvKHMsbCxlLHUse3ByZWZpeDoiIixjTGV0dGVyOiJjIn0pO2Vsc2V7Zm9yKHZhciBwPTA7cDxmWzJdLmxlbmd0aDtwKyspZlsyXVtwXSgpO2RlbGV0ZSBlLl9jb2xvckF4ZXNbaF19fX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi9kZWZhdWx0cyI6NjAyLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo2MDV9XSw2MDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidGlueWNvbG9yMiIpLGE9e0dyZXlzOltbMCwicmdiKDAsMCwwKSJdLFsxLCJyZ2IoMjU1LDI1NSwyNTUpIl1dLFlsR25CdTpbWzAsInJnYig4LDI5LDg4KSJdLFsuMTI1LCJyZ2IoMzcsNTIsMTQ4KSJdLFsuMjUsInJnYigzNCw5NCwxNjgpIl0sWy4zNzUsInJnYigyOSwxNDUsMTkyKSJdLFsuNSwicmdiKDY1LDE4MiwxOTYpIl0sWy42MjUsInJnYigxMjcsMjA1LDE4NykiXSxbLjc1LCJyZ2IoMTk5LDIzMywxODApIl0sWy44NzUsInJnYigyMzcsMjQ4LDIxNykiXSxbMSwicmdiKDI1NSwyNTUsMjE3KSJdXSxHcmVlbnM6W1swLCJyZ2IoMCw2OCwyNykiXSxbLjEyNSwicmdiKDAsMTA5LDQ0KSJdLFsuMjUsInJnYigzNSwxMzksNjkpIl0sWy4zNzUsInJnYig2NSwxNzEsOTMpIl0sWy41LCJyZ2IoMTE2LDE5NiwxMTgpIl0sWy42MjUsInJnYigxNjEsMjE3LDE1NSkiXSxbLjc1LCJyZ2IoMTk5LDIzMywxOTIpIl0sWy44NzUsInJnYigyMjksMjQ1LDIyNCkiXSxbMSwicmdiKDI0NywyNTIsMjQ1KSJdXSxZbE9yUmQ6W1swLCJyZ2IoMTI4LDAsMzgpIl0sWy4xMjUsInJnYigxODksMCwzOCkiXSxbLjI1LCJyZ2IoMjI3LDI2LDI4KSJdLFsuMzc1LCJyZ2IoMjUyLDc4LDQyKSJdLFsuNSwicmdiKDI1MywxNDEsNjApIl0sWy42MjUsInJnYigyNTQsMTc4LDc2KSJdLFsuNzUsInJnYigyNTQsMjE3LDExOCkiXSxbLjg3NSwicmdiKDI1NSwyMzcsMTYwKSJdLFsxLCJyZ2IoMjU1LDI1NSwyMDQpIl1dLEJsdWVyZWQ6W1swLCJyZ2IoMCwwLDI1NSkiXSxbMSwicmdiKDI1NSwwLDApIl1dLFJkQnU6W1swLCJyZ2IoNSwxMCwxNzIpIl0sWy4zNSwicmdiKDEwNiwxMzcsMjQ3KSJdLFsuNSwicmdiKDE5MCwxOTAsMTkwKSJdLFsuNiwicmdiKDIyMCwxNzAsMTMyKSJdLFsuNywicmdiKDIzMCwxNDUsOTApIl0sWzEsInJnYigxNzgsMTAsMjgpIl1dLFJlZHM6W1swLCJyZ2IoMjIwLDIyMCwyMjApIl0sWy4yLCJyZ2IoMjQ1LDE5NSwxNTcpIl0sWy40LCJyZ2IoMjQ1LDE2MCwxMDUpIl0sWzEsInJnYigxNzgsMTAsMjgpIl1dLEJsdWVzOltbMCwicmdiKDUsMTAsMTcyKSJdLFsuMzUsInJnYig0MCw2MCwxOTApIl0sWy41LCJyZ2IoNzAsMTAwLDI0NSkiXSxbLjYsInJnYig5MCwxMjAsMjQ1KSJdLFsuNywicmdiKDEwNiwxMzcsMjQ3KSJdLFsxLCJyZ2IoMjIwLDIyMCwyMjApIl1dLFBpY25pYzpbWzAsInJnYigwLDAsMjU1KSJdLFsuMSwicmdiKDUxLDE1MywyNTUpIl0sWy4yLCJyZ2IoMTAyLDIwNCwyNTUpIl0sWy4zLCJyZ2IoMTUzLDIwNCwyNTUpIl0sWy40LCJyZ2IoMjA0LDIwNCwyNTUpIl0sWy41LCJyZ2IoMjU1LDI1NSwyNTUpIl0sWy42LCJyZ2IoMjU1LDIwNCwyNTUpIl0sWy43LCJyZ2IoMjU1LDE1MywyNTUpIl0sWy44LCJyZ2IoMjU1LDEwMiwyMDQpIl0sWy45LCJyZ2IoMjU1LDEwMiwxMDIpIl0sWzEsInJnYigyNTUsMCwwKSJdXSxSYWluYm93OltbMCwicmdiKDE1MCwwLDkwKSJdLFsuMTI1LCJyZ2IoMCwwLDIwMCkiXSxbLjI1LCJyZ2IoMCwyNSwyNTUpIl0sWy4zNzUsInJnYigwLDE1MiwyNTUpIl0sWy41LCJyZ2IoNDQsMjU1LDE1MCkiXSxbLjYyNSwicmdiKDE1MSwyNTUsMCkiXSxbLjc1LCJyZ2IoMjU1LDIzNCwwKSJdLFsuODc1LCJyZ2IoMjU1LDExMSwwKSJdLFsxLCJyZ2IoMjU1LDAsMCkiXV0sUG9ydGxhbmQ6W1swLCJyZ2IoMTIsNTEsMTMxKSJdLFsuMjUsInJnYigxMCwxMzYsMTg2KSJdLFsuNSwicmdiKDI0MiwyMTEsNTYpIl0sWy43NSwicmdiKDI0MiwxNDMsNTYpIl0sWzEsInJnYigyMTcsMzAsMzApIl1dLEpldDpbWzAsInJnYigwLDAsMTMxKSJdLFsuMTI1LCJyZ2IoMCw2MCwxNzApIl0sWy4zNzUsInJnYig1LDI1NSwyNTUpIl0sWy42MjUsInJnYigyNTUsMjU1LDApIl0sWy44NzUsInJnYigyNTAsMCwwKSJdLFsxLCJyZ2IoMTI4LDAsMCkiXV0sSG90OltbMCwicmdiKDAsMCwwKSJdLFsuMywicmdiKDIzMCwwLDApIl0sWy42LCJyZ2IoMjU1LDIxMCwwKSJdLFsxLCJyZ2IoMjU1LDI1NSwyNTUpIl1dLEJsYWNrYm9keTpbWzAsInJnYigwLDAsMCkiXSxbLjIsInJnYigyMzAsMCwwKSJdLFsuNCwicmdiKDIzMCwyMTAsMCkiXSxbLjcsInJnYigyNTUsMjU1LDI1NSkiXSxbMSwicmdiKDE2MCwyMDAsMjU1KSJdXSxFYXJ0aDpbWzAsInJnYigwLDAsMTMwKSJdLFsuMSwicmdiKDAsMTgwLDE4MCkiXSxbLjIsInJnYig0MCwyMTAsNDApIl0sWy40LCJyZ2IoMjMwLDIzMCw1MCkiXSxbLjYsInJnYigxMjAsNzAsMjApIl0sWzEsInJnYigyNTUsMjU1LDI1NSkiXV0sRWxlY3RyaWM6W1swLCJyZ2IoMCwwLDApIl0sWy4xNSwicmdiKDMwLDAsMTAwKSJdLFsuNCwicmdiKDEyMCwwLDEwMCkiXSxbLjYsInJnYigxNjAsOTAsMCkiXSxbLjgsInJnYigyMzAsMjAwLDApIl0sWzEsInJnYigyNTUsMjUwLDIyMCkiXV0sVmlyaWRpczpbWzAsIiM0NDAxNTQiXSxbLjA2Mjc0NTA5ODAzOTIxNTY5LCIjNDgxODZhIl0sWy4xMjU0OTAxOTYwNzg0MzEzNywiIzQ3MmQ3YiJdLFsuMTg4MjM1Mjk0MTE3NjQ3MDYsIiM0MjQwODYiXSxbLjI1MDk4MDM5MjE1Njg2Mjc0LCIjM2I1MjhiIl0sWy4zMTM3MjU0OTAxOTYwNzg0LCIjMzM2MzhkIl0sWy4zNzY0NzA1ODgyMzUyOTQxLCIjMmM3MjhlIl0sWy40MzkyMTU2ODYyNzQ1MDk4LCIjMjY4MjhlIl0sWy41MDE5NjA3ODQzMTM3MjU1LCIjMjE5MThjIl0sWy41NjQ3MDU4ODIzNTI5NDEyLCIjMWZhMDg4Il0sWy42Mjc0NTA5ODAzOTIxNTY5LCIjMjhhZTgwIl0sWy42OTAxOTYwNzg0MzEzNzI1LCIjM2ZiYzczIl0sWy43NTI5NDExNzY0NzA1ODgyLCIjNWVjOTYyIl0sWy44MTU2ODYyNzQ1MDk4MDM5LCIjODRkNDRiIl0sWy44Nzg0MzEzNzI1NDkwMTk2LCIjYWRkYzMwIl0sWy45NDExNzY0NzA1ODgyMzUzLCIjZDhlMjE5Il0sWzEsIiNmZGU3MjUiXV0sQ2l2aWRpczpbWzAsInJnYigwLDMyLDc2KSJdLFsuMDU4ODI0LCJyZ2IoMCw0MiwxMDIpIl0sWy4xMTc2NDcsInJnYigwLDUyLDExMCkiXSxbLjE3NjQ3MSwicmdiKDM5LDYzLDEwOCkiXSxbLjIzNTI5NCwicmdiKDYwLDc0LDEwNykiXSxbLjI5NDExOCwicmdiKDc2LDg1LDEwNykiXSxbLjM1Mjk0MSwicmdiKDkxLDk1LDEwOSkiXSxbLjQxMTc2NSwicmdiKDEwNCwxMDYsMTEyKSJdLFsuNDcwNTg4LCJyZ2IoMTE3LDExNywxMTcpIl0sWy41Mjk0MTIsInJnYigxMzEsMTI5LDEyMCkiXSxbLjU4ODIzNSwicmdiKDE0NiwxNDAsMTIwKSJdLFsuNjQ3MDU5LCJyZ2IoMTYxLDE1MiwxMTgpIl0sWy43MDU4ODIsInJnYigxNzYsMTY1LDExNCkiXSxbLjc2NDcwNiwicmdiKDE5MiwxNzcsMTA5KSJdLFsuODIzNTI5LCJyZ2IoMjA5LDE5MSwxMDIpIl0sWy44ODIzNTMsInJnYigyMjUsMjA0LDkyKSJdLFsuOTQxMTc2LCJyZ2IoMjQzLDIxOSw3OSkiXSxbMSwicmdiKDI1NSwyMzMsNjkpIl1dfSxpPWEuUmRCdTtmdW5jdGlvbiBvKHQpe3ZhciBlPTA7aWYoIUFycmF5LmlzQXJyYXkodCl8fHQubGVuZ3RoPDIpcmV0dXJuITE7aWYoIXRbMF18fCF0W3QubGVuZ3RoLTFdKXJldHVybiExO2lmKDAhPSt0WzBdWzBdfHwxIT0rdFt0Lmxlbmd0aC0xXVswXSlyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTtpZigyIT09YS5sZW5ndGh8fCthWzBdPGV8fCFuKGFbMV0pLmlzVmFsaWQoKSlyZXR1cm4hMTtlPSthWzBdfXJldHVybiEwfWUuZXhwb3J0cz17c2NhbGVzOmEsZGVmYXVsdFNjYWxlOmksZ2V0OmZ1bmN0aW9uKHQsZSl7aWYoZXx8KGU9aSksIXQpcmV0dXJuIGU7ZnVuY3Rpb24gcigpe3RyeXt0PWFbdF18fEpTT04ucGFyc2UodCl9Y2F0Y2gocil7dD1lfX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJihyKCksInN0cmluZyI9PXR5cGVvZiB0JiZyKCkpLG8odCk/dDplfSxpc1ZhbGlkOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT1hW3RdfHxvKHQpfX19LHt0aW55Y29sb3IyOjUzNn1dLDYwODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT0odC1yKS8obi1yKSxvPWkrZS8obi1yKSxzPShpK28pLzI7cmV0dXJuImxlZnQiPT09YXx8ImJvdHRvbSI9PT1hP2k6ImNlbnRlciI9PT1hfHwibWlkZGxlIj09PWE/czoicmlnaHQiPT09YXx8InRvcCI9PT1hP286aTwyLzMtcz9pOm8+NC8zLXM/bzpzfX0se31dLDYwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPVtbInN3LXJlc2l6ZSIsInMtcmVzaXplIiwic2UtcmVzaXplIl0sWyJ3LXJlc2l6ZSIsIm1vdmUiLCJlLXJlc2l6ZSJdLFsibnctcmVzaXplIiwibi1yZXNpemUiLCJuZS1yZXNpemUiXV07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3JldHVybiB0PSJsZWZ0Ij09PXI/MDoiY2VudGVyIj09PXI/MToicmlnaHQiPT09cj8yOm4uY29uc3RyYWluKE1hdGguZmxvb3IoMyp0KSwwLDIpLGU9ImJvdHRvbSI9PT1pPzA6Im1pZGRsZSI9PT1pPzE6InRvcCI9PT1pPzI6bi5jb25zdHJhaW4oTWF0aC5mbG9vcigzKmUpLDAsMiksYVtlXVt0XX19LHsiLi4vLi4vbGliIjo3MTd9XSw2MTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgibW91c2UtZXZlbnQtb2Zmc2V0IiksYT10KCJoYXMtaG92ZXIiKSxpPXQoImhhcy1wYXNzaXZlLWV2ZW50cyIpLG89dCgiLi4vLi4vbGliIikucmVtb3ZlRWxlbWVudCxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiKSxsPWUuZXhwb3J0cz17fTtsLmFsaWduPXQoIi4vYWxpZ24iKSxsLmdldEN1cnNvcj10KCIuL2N1cnNvciIpO3ZhciBjPXQoIi4vdW5ob3ZlciIpO2Z1bmN0aW9uIHUoKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0iZHJhZ2NvdmVyIjt2YXIgZT10LnN0eWxlO3JldHVybiBlLnBvc2l0aW9uPSJmaXhlZCIsZS5sZWZ0PTAsZS5yaWdodD0wLGUudG9wPTAsZS5ib3R0b209MCxlLnpJbmRleD05OTk5OTk5OTksZS5iYWNrZ3JvdW5kPSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLHR9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gbih0LmNoYW5nZWRUb3VjaGVzP3QuY2hhbmdlZFRvdWNoZXNbMF06dCxkb2N1bWVudC5ib2R5KX1sLnVuaG92ZXI9Yy53cmFwcGVkLGwudW5ob3ZlclJhdz1jLnJhdyxsLmluaXQ9ZnVuY3Rpb24odCl7dmFyIGUscixuLGMsZixwLGQsZyx2PXQuZ2QsbT0xLHk9di5fY29udGV4dC5kb3VibGVDbGlja0RlbGF5LHg9dC5lbGVtZW50O3YuX21vdXNlRG93blRpbWV8fCh2Ll9tb3VzZURvd25UaW1lPTApLHguc3R5bGUucG9pbnRlckV2ZW50cz0iYWxsIix4Lm9ubW91c2Vkb3duPV8saT8oeC5fb250b3VjaHN0YXJ0JiZ4LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHguX29udG91Y2hzdGFydCkseC5fb250b3VjaHN0YXJ0PV8seC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixfLHtwYXNzaXZlOiExfSkpOngub250b3VjaHN0YXJ0PV87dmFyIGI9dC5jbGFtcEZufHxmdW5jdGlvbih0LGUscil7cmV0dXJuIE1hdGguYWJzKHQpPHImJih0PTApLE1hdGguYWJzKGUpPHImJihlPTApLFt0LGVdfTtmdW5jdGlvbiBfKGkpe3YuX2RyYWdnZWQ9ITEsdi5fZHJhZ2dpbmc9ITA7dmFyIG89aChpKTtlPW9bMF0scj1vWzFdLGQ9aS50YXJnZXQscD1pLGc9Mj09PWkuYnV0dG9uc3x8aS5jdHJsS2V5LCJ1bmRlZmluZWQiPT10eXBlb2YgaS5jbGllbnRYJiYidW5kZWZpbmVkIj09dHlwZW9mIGkuY2xpZW50WSYmKGkuY2xpZW50WD1lLGkuY2xpZW50WT1yKSwobj0obmV3IERhdGUpLmdldFRpbWUoKSktdi5fbW91c2VEb3duVGltZTx5P20rPTE6KG09MSx2Ll9tb3VzZURvd25UaW1lPW4pLHQucHJlcEZuJiZ0LnByZXBGbihpLGUsciksYSYmIWc/KGY9dSgpKS5zdHlsZS5jdXJzb3I9d2luZG93LmdldENvbXB1dGVkU3R5bGUoeCkuY3Vyc29yOmF8fChmPWRvY3VtZW50LGM9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5jdXJzb3IsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmN1cnNvcj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh4KS5jdXJzb3IpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGspLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixrKSwhMSE9PXQuZHJhZ21vZGUmJihpLnByZXZlbnREZWZhdWx0KCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix3KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHcse3Bhc3NpdmU6ITF9KSl9ZnVuY3Rpb24gdyhuKXtuLnByZXZlbnREZWZhdWx0KCk7dmFyIGE9aChuKSxpPXQubWluRHJhZ3x8cy5NSU5EUkFHLG89YihhWzBdLWUsYVsxXS1yLGkpLGM9b1swXSx1PW9bMV07KGN8fHUpJiYodi5fZHJhZ2dlZD0hMCxsLnVuaG92ZXIodikpLHYuX2RyYWdnZWQmJnQubW92ZUZuJiYhZyYmKHYuX2RyYWdkYXRhPXtlbGVtZW50OngsZHg6YyxkeTp1fSx0Lm1vdmVGbihjLHUpKX1mdW5jdGlvbiBrKGUpe2lmKGRlbGV0ZSB2Ll9kcmFnZGF0YSwhMSE9PXQuZHJhZ21vZGUmJihlLnByZXZlbnREZWZhdWx0KCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix3KSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHcpKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixrKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsayksYT9vKGYpOmMmJihmLmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3I9YyxjPW51bGwpLHYuX2RyYWdnaW5nKXtpZih2Ll9kcmFnZ2luZz0hMSwobmV3IERhdGUpLmdldFRpbWUoKS12Ll9tb3VzZURvd25UaW1lPnkmJihtPU1hdGgubWF4KG0tMSwxKSksdi5fZHJhZ2dlZCl0LmRvbmVGbiYmdC5kb25lRm4oKTtlbHNlIGlmKHQuY2xpY2tGbiYmdC5jbGlja0ZuKG0scCksIWcpe3ZhciByO3RyeXtyPW5ldyBNb3VzZUV2ZW50KCJjbGljayIsZSl9Y2F0Y2godCl7dmFyIG49aChlKTsocj1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKSkuaW5pdE1vdXNlRXZlbnQoImNsaWNrIixlLmJ1YmJsZXMsZS5jYW5jZWxhYmxlLGUudmlldyxlLmRldGFpbCxlLnNjcmVlblgsZS5zY3JlZW5ZLG5bMF0sblsxXSxlLmN0cmxLZXksZS5hbHRLZXksZS5zaGlmdEtleSxlLm1ldGFLZXksZS5idXR0b24sZS5yZWxhdGVkVGFyZ2V0KX1kLmRpc3BhdGNoRXZlbnQocil9di5fZHJhZ2dpbmc9ITEsdi5fZHJhZ2dlZD0hMX1lbHNlIHYuX2RyYWdnZWQ9ITF9fSxsLmNvdmVyU2xpcD11fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIjo3NzEsIi4vYWxpZ24iOjYwOCwiLi9jdXJzb3IiOjYwOSwiLi91bmhvdmVyIjo2MTEsImhhcy1ob3ZlciI6NDEyLCJoYXMtcGFzc2l2ZS1ldmVudHMiOjQxMywibW91c2UtZXZlbnQtb2Zmc2V0Ijo0Mzh9XSw2MTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL2V2ZW50cyIpLGE9dCgiLi4vLi4vbGliL3Rocm90dGxlIiksaT10KCIuLi8uLi9saWIvZG9tIikuZ2V0R3JhcGhEaXYsbz10KCIuLi9meC9jb25zdGFudHMiKSxzPWUuZXhwb3J0cz17fTtzLndyYXBwZWQ9ZnVuY3Rpb24odCxlLHIpeyh0PWkodCkpLl9mdWxsTGF5b3V0JiZhLmNsZWFyKHQuX2Z1bGxMYXlvdXQuX3VpZCtvLkhPVkVSSUQpLHMucmF3KHQsZSxyKX0scy5yYXc9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LGE9dC5faG92ZXJkYXRhO2V8fChlPXt9KSxlLnRhcmdldCYmITE9PT1uLnRyaWdnZXJIYW5kbGVyKHQsInBsb3RseV9iZWZvcmVob3ZlciIsZSl8fChyLl9ob3ZlcmxheWVyLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpLHIuX2hvdmVybGF5ZXIuc2VsZWN0QWxsKCJsaW5lIikucmVtb3ZlKCksci5faG92ZXJsYXllci5zZWxlY3RBbGwoImNpcmNsZSIpLnJlbW92ZSgpLHQuX2hvdmVyZGF0YT12b2lkIDAsZS50YXJnZXQmJmEmJnQuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtldmVudDplLHBvaW50czphfSkpfX0seyIuLi8uLi9saWIvZG9tIjo3MDYsIi4uLy4uL2xpYi9ldmVudHMiOjcwNywiLi4vLi4vbGliL3Rocm90dGxlIjo3NDIsIi4uL2Z4L2NvbnN0YW50cyI6NjI1fV0sNjEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuZGFzaD17dmFsVHlwZToic3RyaW5nIix2YWx1ZXM6WyJzb2xpZCIsImRvdCIsImRhc2giLCJsb25nZGFzaCIsImRhc2hkb3QiLCJsb25nZGFzaGRvdCJdLGRmbHQ6InNvbGlkIixlZGl0VHlwZToic3R5bGUifX0se31dLDYxMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoInRpbnljb2xvcjIiKSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iikscz10KCIuLi9jb2xvciIpLGw9dCgiLi4vY29sb3JzY2FsZSIpLGM9dCgiLi4vLi4vbGliIiksdT10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxoPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIiksZj10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50IikuTElORV9TUEFDSU5HLHA9dCgiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyIpLkRFU0VMRUNURElNLGQ9dCgiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvc3VidHlwZXMiKSxnPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyIpLHY9dCgiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIikuYXBwZW5kQXJyYXlQb2ludFZhbHVlLG09ZS5leHBvcnRzPXt9O20uZm9udD1mdW5jdGlvbih0LGUscixuKXtjLmlzUGxhaW5PYmplY3QoZSkmJihuPWUuY29sb3Iscj1lLnNpemUsZT1lLmZhbWlseSksZSYmdC5zdHlsZSgiZm9udC1mYW1pbHkiLGUpLHIrMSYmdC5zdHlsZSgiZm9udC1zaXplIixyKyJweCIpLG4mJnQuY2FsbChzLmZpbGwsbil9LG0uc2V0UG9zaXRpb249ZnVuY3Rpb24odCxlLHIpe3QuYXR0cigieCIsZSkuYXR0cigieSIscil9LG0uc2V0U2l6ZT1mdW5jdGlvbih0LGUscil7dC5hdHRyKCJ3aWR0aCIsZSkuYXR0cigiaGVpZ2h0IixyKX0sbS5zZXRSZWN0PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dC5jYWxsKG0uc2V0UG9zaXRpb24sZSxyKS5jYWxsKG0uc2V0U2l6ZSxuLGEpfSxtLnRyYW5zbGF0ZVBvaW50PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXIuYzJwKHQueCksbz1uLmMycCh0LnkpO3JldHVybiEhKGEoaSkmJmEobykmJmUubm9kZSgpKSYmKCJ0ZXh0Ij09PWUubm9kZSgpLm5vZGVOYW1lP2UuYXR0cigieCIsaSkuYXR0cigieSIsbyk6ZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpKyIsIitvKyIpIiksITApfSxtLnRyYW5zbGF0ZVBvaW50cz1mdW5jdGlvbih0LGUscil7dC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBhPW4uc2VsZWN0KHRoaXMpO20udHJhbnNsYXRlUG9pbnQodCxhLGUscil9KX0sbS5oaWRlT3V0c2lkZVJhbmdlUG9pbnQ9ZnVuY3Rpb24odCxlLHIsbixhLGkpe2UuYXR0cigiZGlzcGxheSIsci5pc1B0V2l0aGluUmFuZ2UodCxhKSYmbi5pc1B0V2l0aGluUmFuZ2UodCxpKT9udWxsOiJub25lIil9LG0uaGlkZU91dHNpZGVSYW5nZVBvaW50cz1mdW5jdGlvbih0LGUpe2lmKGUuX2hhc0NsaXBPbkF4aXNGYWxzZSl7dmFyIHI9ZS54YXhpcyxhPWUueWF4aXM7dC5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPWVbMF0udHJhY2Uscz1pLnhjYWxlbmRhcixsPWkueWNhbGVuZGFyLGM9by50cmFjZUlzKGksImJhci1saWtlIik/Ii5iYXJ0ZXh0IjoiLnBvaW50LC50ZXh0cG9pbnQiO3Quc2VsZWN0QWxsKGMpLmVhY2goZnVuY3Rpb24odCl7bS5oaWRlT3V0c2lkZVJhbmdlUG9pbnQodCxuLnNlbGVjdCh0aGlzKSxyLGEscyxsKX0pfSl9fSxtLmNyaXNwUm91bmQ9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlJiZhKGUpP3QuX2NvbnRleHQuc3RhdGljUGxvdD9lOmU8MT8xOk1hdGgucm91bmQoZSk6cnx8MH0sbS5zaW5nbGVMaW5lU3R5bGU9ZnVuY3Rpb24odCxlLHIsbixhKXtlLnN0eWxlKCJmaWxsIiwibm9uZSIpO3ZhciBpPSgoKHR8fFtdKVswXXx8e30pLnRyYWNlfHx7fSkubGluZXx8e30sbz1yfHxpLndpZHRofHwwLGw9YXx8aS5kYXNofHwiIjtzLnN0cm9rZShlLG58fGkuY29sb3IpLG0uZGFzaExpbmUoZSxsLG8pfSxtLmxpbmVHcm91cFN0eWxlPWZ1bmN0aW9uKHQsZSxyLGEpe3Quc3R5bGUoImZpbGwiLCJub25lIikuZWFjaChmdW5jdGlvbih0KXt2YXIgaT0oKCh0fHxbXSlbMF18fHt9KS50cmFjZXx8e30pLmxpbmV8fHt9LG89ZXx8aS53aWR0aHx8MCxsPWF8fGkuZGFzaHx8IiI7bi5zZWxlY3QodGhpcykuY2FsbChzLnN0cm9rZSxyfHxpLmNvbG9yKS5jYWxsKG0uZGFzaExpbmUsbCxvKX0pfSxtLmRhc2hMaW5lPWZ1bmN0aW9uKHQsZSxyKXtyPStyfHwwLGU9bS5kYXNoU3R5bGUoZSxyKSx0LnN0eWxlKHsic3Ryb2tlLWRhc2hhcnJheSI6ZSwic3Ryb2tlLXdpZHRoIjpyKyJweCJ9KX0sbS5kYXNoU3R5bGU9ZnVuY3Rpb24odCxlKXtlPStlfHwxO3ZhciByPU1hdGgubWF4KGUsMyk7cmV0dXJuInNvbGlkIj09PXQ/dD0iIjoiZG90Ij09PXQ/dD1yKyJweCwiK3IrInB4IjoiZGFzaCI9PT10P3Q9MypyKyJweCwiKzMqcisicHgiOiJsb25nZGFzaCI9PT10P3Q9NSpyKyJweCwiKzUqcisicHgiOiJkYXNoZG90Ij09PXQ/dD0zKnIrInB4LCIrcisicHgsIityKyJweCwiK3IrInB4IjoibG9uZ2Rhc2hkb3QiPT09dCYmKHQ9NSpyKyJweCwiKzIqcisicHgsIityKyJweCwiKzIqcisicHgiKSx0fSxtLnNpbmdsZUZpbGxTdHlsZT1mdW5jdGlvbih0KXt2YXIgZT0oKChuLnNlbGVjdCh0Lm5vZGUoKSkuZGF0YSgpWzBdfHxbXSlbMF18fHt9KS50cmFjZXx8e30pLmZpbGxjb2xvcjtlJiZ0LmNhbGwocy5maWxsLGUpfSxtLmZpbGxHcm91cFN0eWxlPWZ1bmN0aW9uKHQpe3Quc3R5bGUoInN0cm9rZS13aWR0aCIsMCkuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKTt0WzBdLnRyYWNlJiZlLmNhbGwocy5maWxsLHRbMF0udHJhY2UuZmlsbGNvbG9yKX0pfTt2YXIgeT10KCIuL3N5bWJvbF9kZWZzIik7bS5zeW1ib2xOYW1lcz1bXSxtLnN5bWJvbEZ1bmNzPVtdLG0uc3ltYm9sTmVlZExpbmVzPXt9LG0uc3ltYm9sTm9Eb3Q9e30sbS5zeW1ib2xOb0ZpbGw9e30sbS5zeW1ib2xMaXN0PVtdLE9iamVjdC5rZXlzKHkpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9eVt0XSxyPWUubjttLnN5bWJvbExpc3QucHVzaChyLHQscisxMDAsdCsiLW9wZW4iKSxtLnN5bWJvbE5hbWVzW3JdPXQsbS5zeW1ib2xGdW5jc1tyXT1lLmYsZS5uZWVkTGluZSYmKG0uc3ltYm9sTmVlZExpbmVzW3JdPSEwKSxlLm5vRG90P20uc3ltYm9sTm9Eb3Rbcl09ITA6bS5zeW1ib2xMaXN0LnB1c2gocisyMDAsdCsiLWRvdCIsciszMDAsdCsiLW9wZW4tZG90IiksZS5ub0ZpbGwmJihtLnN5bWJvbE5vRmlsbFtyXT0hMCl9KTt2YXIgeD1tLnN5bWJvbE5hbWVzLmxlbmd0aCxiPSJNMCwwLjVMMC41LDBMMCwtMC41TC0wLjUsMFoiO2Z1bmN0aW9uIF8odCxlKXt2YXIgcj10JTEwMDtyZXR1cm4gbS5zeW1ib2xGdW5jc1tyXShlKSsodD49MjAwP2I6IiIpfW0uc3ltYm9sTnVtYmVyPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGU9MDt0LmluZGV4T2YoIi1vcGVuIik+MCYmKGU9MTAwLHQ9dC5yZXBsYWNlKCItb3BlbiIsIiIpKSx0LmluZGV4T2YoIi1kb3QiKT4wJiYoZSs9MjAwLHQ9dC5yZXBsYWNlKCItZG90IiwiIikpLCh0PW0uc3ltYm9sTmFtZXMuaW5kZXhPZih0KSk+PTAmJih0Kz1lKX1yZXR1cm4gdCUxMDA+PXh8fHQ+PTQwMD8wOk1hdGguZmxvb3IoTWF0aC5tYXgodCwwKSl9O3ZhciB3PXt4MToxLHgyOjAseTE6MCx5MjowfSxrPXt4MTowLHgyOjAseTE6MSx5MjowfSxUPW4uZm9ybWF0KCJ+LjFmIiksTT17cmFkaWFsOntub2RlOiJyYWRpYWxHcmFkaWVudCJ9LHJhZGlhbHJldmVyc2VkOntub2RlOiJyYWRpYWxHcmFkaWVudCIscmV2ZXJzZWQ6ITB9LGhvcml6b250YWw6e25vZGU6ImxpbmVhckdyYWRpZW50IixhdHRyczp3fSxob3Jpem9udGFscmV2ZXJzZWQ6e25vZGU6ImxpbmVhckdyYWRpZW50IixhdHRyczp3LHJldmVyc2VkOiEwfSx2ZXJ0aWNhbDp7bm9kZToibGluZWFyR3JhZGllbnQiLGF0dHJzOmt9LHZlcnRpY2FscmV2ZXJzZWQ6e25vZGU6ImxpbmVhckdyYWRpZW50IixhdHRyczprLHJldmVyc2VkOiEwfX07bS5ncmFkaWVudD1mdW5jdGlvbih0LGUscixhLG8sbCl7Zm9yKHZhciB1PW8ubGVuZ3RoLGg9TVthXSxmPW5ldyBBcnJheSh1KSxwPTA7cDx1O3ArKyloLnJldmVyc2VkP2ZbdS0xLXBdPVtUKDEwMCooMS1vW3BdWzBdKSksb1twXVsxXV06ZltwXT1bVCgxMDAqb1twXVswXSksb1twXVsxXV07dmFyIGQ9ZS5fZnVsbExheW91dCxnPSJnIitkLl91aWQrIi0iK3Isdj1kLl9kZWZzLnNlbGVjdCgiLmdyYWRpZW50cyIpLnNlbGVjdEFsbCgiIyIrZykuZGF0YShbYStmLmpvaW4oIjsiKV0sYy5pZGVudGl0eSk7di5leGl0KCkucmVtb3ZlKCksdi5lbnRlcigpLmFwcGVuZChoLm5vZGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKTtoLmF0dHJzJiZ0LmF0dHIoaC5hdHRycyksdC5hdHRyKCJpZCIsZyk7dmFyIGU9dC5zZWxlY3RBbGwoInN0b3AiKS5kYXRhKGYpO2UuZXhpdCgpLnJlbW92ZSgpLGUuZW50ZXIoKS5hcHBlbmQoInN0b3AiKSxlLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9aSh0WzFdKTtuLnNlbGVjdCh0aGlzKS5hdHRyKHtvZmZzZXQ6dFswXSsiJSIsInN0b3AtY29sb3IiOnMudGlueVJHQihlKSwic3RvcC1vcGFjaXR5IjplLmdldEFscGhhKCl9KX0pfSksdC5zdHlsZShsLEQoZyxlKSkuc3R5bGUobCsiLW9wYWNpdHkiLG51bGwpO3ZhciBtPWZ1bmN0aW9uKHQpe3JldHVybiIuIit0LmF0dHIoImNsYXNzIikucmVwbGFjZSgvXHMvZywiLiIpfSx5PW0obi5zZWxlY3QodC5ub2RlKCkucGFyZW50Tm9kZSkpKyI+IittKHQpO2QuX2dyYWRpZW50VXJsUXVlcnlQYXJ0c1t5XT0xfSxtLmluaXRHcmFkaWVudHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtjLmVuc3VyZVNpbmdsZShlLl9kZWZzLCJnIiwiZ3JhZGllbnRzIikuc2VsZWN0QWxsKCJsaW5lYXJHcmFkaWVudCxyYWRpYWxHcmFkaWVudCIpLnJlbW92ZSgpLGUuX2dyYWRpZW50VXJsUXVlcnlQYXJ0cz17fX0sbS5wb2ludFN0eWxlPWZ1bmN0aW9uKHQsZSxyKXtpZih0LnNpemUoKSl7dmFyIGE9bS5tYWtlUG9pbnRTdHlsZUZucyhlKTt0LmVhY2goZnVuY3Rpb24odCl7bS5zaW5nbGVQb2ludFN0eWxlKHQsbi5zZWxlY3QodGhpcyksZSxhLHIpfSl9fSxtLnNpbmdsZVBvaW50U3R5bGU9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT1yLm1hcmtlcixvPWkubGluZTtpZihlLnN0eWxlKCJvcGFjaXR5IixuLnNlbGVjdGVkT3BhY2l0eUZuP24uc2VsZWN0ZWRPcGFjaXR5Rm4odCk6dm9pZCAwPT09dC5tbz9pLm9wYWNpdHk6dC5tbyksbi5tczJtcmMpe3ZhciBsO2w9InZhcmlvdXMiPT09dC5tc3x8InZhcmlvdXMiPT09aS5zaXplPzM6bi5tczJtcmModC5tcyksdC5tcmM9bCxuLnNlbGVjdGVkU2l6ZUZuJiYobD10Lm1yYz1uLnNlbGVjdGVkU2l6ZUZuKHQpKTt2YXIgdT1tLnN5bWJvbE51bWJlcih0Lm14fHxpLnN5bWJvbCl8fDA7dC5vbT11JTIwMD49MTAwLGUuYXR0cigiZCIsXyh1LGwpKX12YXIgaCxmLHAsZD0hMTtpZih0LnNvKXA9by5vdXRsaWVyd2lkdGgsZj1vLm91dGxpZXJjb2xvcixoPWkub3V0bGllcmNvbG9yO2Vsc2V7dmFyIGc9KG98fHt9KS53aWR0aDtwPSh0Lm1sdysxfHxnKzF8fCh0LnRyYWNlPyh0LnRyYWNlLm1hcmtlci5saW5lfHx7fSkud2lkdGg6MCkrMSktMXx8MCxmPSJtbGMiaW4gdD90Lm1sY2M9bi5saW5lU2NhbGUodC5tbGMpOmMuaXNBcnJheU9yVHlwZWRBcnJheShvLmNvbG9yKT9zLmRlZmF1bHRMaW5lOm8uY29sb3IsYy5pc0FycmF5T3JUeXBlZEFycmF5KGkuY29sb3IpJiYoaD1zLmRlZmF1bHRMaW5lLGQ9ITApLGg9Im1jImluIHQ/dC5tY2M9bi5tYXJrZXJTY2FsZSh0Lm1jKTppLmNvbG9yfHwicmdiYSgwLDAsMCwwKSIsbi5zZWxlY3RlZENvbG9yRm4mJihoPW4uc2VsZWN0ZWRDb2xvckZuKHQpKX1pZih0Lm9tKWUuY2FsbChzLnN0cm9rZSxoKS5zdHlsZSh7InN0cm9rZS13aWR0aCI6KHB8fDEpKyJweCIsZmlsbDoibm9uZSJ9KTtlbHNle2Uuc3R5bGUoInN0cm9rZS13aWR0aCIsKHQuaXNCbGFuaz8wOnApKyJweCIpO3ZhciB2PWkuZ3JhZGllbnQseT10Lm1ndDtpZih5P2Q9ITA6eT12JiZ2LnR5cGUsQXJyYXkuaXNBcnJheSh5KSYmKHk9eVswXSxNW3ldfHwoeT0wKSkseSYmIm5vbmUiIT09eSl7dmFyIHg9dC5tZ2M7eD9kPSEwOng9di5jb2xvcjt2YXIgYj1yLnVpZDtkJiYoYis9Ii0iK3QuaSksbS5ncmFkaWVudChlLGEsYix5LFtbMCx4XSxbMSxoXV0sImZpbGwiKX1lbHNlIHMuZmlsbChlLGgpO3AmJnMuc3Ryb2tlKGUsZil9fSxtLm1ha2VQb2ludFN0eWxlRm5zPWZ1bmN0aW9uKHQpe3ZhciBlPXt9LHI9dC5tYXJrZXI7cmV0dXJuIGUubWFya2VyU2NhbGU9bS50cnlDb2xvcnNjYWxlKHIsIiIpLGUubGluZVNjYWxlPW0udHJ5Q29sb3JzY2FsZShyLCJsaW5lIiksby50cmFjZUlzKHQsInN5bWJvbHMiKSYmKGUubXMybXJjPWQuaXNCdWJibGUodCk/Zyh0KTpmdW5jdGlvbigpe3JldHVybihyLnNpemV8fDYpLzJ9KSx0LnNlbGVjdGVkcG9pbnRzJiZjLmV4dGVuZEZsYXQoZSxtLm1ha2VTZWxlY3RlZFBvaW50U3R5bGVGbnModCkpLGV9LG0ubWFrZVNlbGVjdGVkUG9pbnRTdHlsZUZucz1mdW5jdGlvbih0KXt2YXIgZT17fSxyPXQuc2VsZWN0ZWR8fHt9LG49dC51bnNlbGVjdGVkfHx7fSxhPXQubWFya2VyfHx7fSxpPXIubWFya2VyfHx7fSxzPW4ubWFya2VyfHx7fSxsPWEub3BhY2l0eSx1PWkub3BhY2l0eSxoPXMub3BhY2l0eSxmPXZvaWQgMCE9PXUsZD12b2lkIDAhPT1oOyhjLmlzQXJyYXlPclR5cGVkQXJyYXkobCl8fGZ8fGQpJiYoZS5zZWxlY3RlZE9wYWNpdHlGbj1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10Lm1vP2Eub3BhY2l0eTp0Lm1vO3JldHVybiB0LnNlbGVjdGVkP2Y/dTplOmQ/aDpwKmV9KTt2YXIgZz1hLmNvbG9yLHY9aS5jb2xvcixtPXMuY29sb3I7KHZ8fG0pJiYoZS5zZWxlY3RlZENvbG9yRm49ZnVuY3Rpb24odCl7dmFyIGU9dC5tY2N8fGc7cmV0dXJuIHQuc2VsZWN0ZWQ/dnx8ZTptfHxlfSk7dmFyIHk9YS5zaXplLHg9aS5zaXplLGI9cy5zaXplLF89dm9pZCAwIT09eCx3PXZvaWQgMCE9PWI7cmV0dXJuIG8udHJhY2VJcyh0LCJzeW1ib2xzIikmJihffHx3KSYmKGUuc2VsZWN0ZWRTaXplRm49ZnVuY3Rpb24odCl7dmFyIGU9dC5tcmN8fHkvMjtyZXR1cm4gdC5zZWxlY3RlZD9fP3gvMjplOnc/Yi8yOmV9KSxlfSxtLm1ha2VTZWxlY3RlZFRleHRTdHlsZUZucz1mdW5jdGlvbih0KXt2YXIgZT17fSxyPXQuc2VsZWN0ZWR8fHt9LG49dC51bnNlbGVjdGVkfHx7fSxhPXQudGV4dGZvbnR8fHt9LGk9ci50ZXh0Zm9udHx8e30sbz1uLnRleHRmb250fHx7fSxsPWEuY29sb3IsYz1pLmNvbG9yLHU9by5jb2xvcjtyZXR1cm4gZS5zZWxlY3RlZFRleHRDb2xvckZuPWZ1bmN0aW9uKHQpe3ZhciBlPXQudGN8fGw7cmV0dXJuIHQuc2VsZWN0ZWQ/Y3x8ZTp1fHwoYz9lOnMuYWRkT3BhY2l0eShlLHApKX0sZX0sbS5zZWxlY3RlZFBvaW50U3R5bGU9ZnVuY3Rpb24odCxlKXtpZih0LnNpemUoKSYmZS5zZWxlY3RlZHBvaW50cyl7dmFyIHI9bS5tYWtlU2VsZWN0ZWRQb2ludFN0eWxlRm5zKGUpLGE9ZS5tYXJrZXJ8fHt9LGk9W107ci5zZWxlY3RlZE9wYWNpdHlGbiYmaS5wdXNoKGZ1bmN0aW9uKHQsZSl7dC5zdHlsZSgib3BhY2l0eSIsci5zZWxlY3RlZE9wYWNpdHlGbihlKSl9KSxyLnNlbGVjdGVkQ29sb3JGbiYmaS5wdXNoKGZ1bmN0aW9uKHQsZSl7cy5maWxsKHQsci5zZWxlY3RlZENvbG9yRm4oZSkpfSksci5zZWxlY3RlZFNpemVGbiYmaS5wdXNoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5teHx8YS5zeW1ib2x8fDAsaT1yLnNlbGVjdGVkU2l6ZUZuKGUpO3QuYXR0cigiZCIsXyhtLnN5bWJvbE51bWJlcihuKSxpKSksZS5tcmMyPWl9KSxpLmxlbmd0aCYmdC5lYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uLnNlbGVjdCh0aGlzKSxyPTA7cjxpLmxlbmd0aDtyKyspaVtyXShlLHQpfSl9fSxtLnRyeUNvbG9yc2NhbGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1lP2MubmVzdGVkUHJvcGVydHkodCxlKS5nZXQoKTp0O2lmKHIpe3ZhciBuPXIuY29sb3I7aWYoKHIuY29sb3JzY2FsZXx8ci5fY29sb3JBeCkmJmMuaXNBcnJheU9yVHlwZWRBcnJheShuKSlyZXR1cm4gbC5tYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2Uocil9cmV0dXJuIGMuaWRlbnRpdHl9O3ZhciBBPXtzdGFydDoxLGVuZDotMSxtaWRkbGU6MCxib3R0b206MSx0b3A6LTF9O2Z1bmN0aW9uIFModCxlLHIsYSl7dmFyIGk9bi5zZWxlY3QodC5ub2RlKCkucGFyZW50Tm9kZSksbz0tMSE9PWUuaW5kZXhPZigidG9wIik/InRvcCI6LTEhPT1lLmluZGV4T2YoImJvdHRvbSIpPyJib3R0b20iOiJtaWRkbGUiLHM9LTEhPT1lLmluZGV4T2YoImxlZnQiKT8iZW5kIjotMSE9PWUuaW5kZXhPZigicmlnaHQiKT8ic3RhcnQiOiJtaWRkbGUiLGw9YT9hLy44KzE6MCxjPSh1LmxpbmVDb3VudCh0KS0xKSpmKzEsaD1BW3NdKmwscD0uNzUqcitBW29dKmwrKEFbb10tMSkqYypyLzI7dC5hdHRyKCJ0ZXh0LWFuY2hvciIscyksaS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitoKyIsIitwKyIpIil9ZnVuY3Rpb24gRSh0LGUpe3ZhciByPXQudHN8fGUudGV4dGZvbnQuc2l6ZTtyZXR1cm4gYShyKSYmcj4wP3I6MH1tLnRleHRQb2ludFN0eWxlPWZ1bmN0aW9uKHQsZSxyKXtpZih0LnNpemUoKSl7dmFyIGE7aWYoZS5zZWxlY3RlZHBvaW50cyl7dmFyIGk9bS5tYWtlU2VsZWN0ZWRUZXh0U3R5bGVGbnMoZSk7YT1pLnNlbGVjdGVkVGV4dENvbG9yRm59dmFyIG89ZS50ZXh0dGVtcGxhdGUscz1yLl9mdWxsTGF5b3V0O3QuZWFjaChmdW5jdGlvbih0KXt2YXIgaT1uLnNlbGVjdCh0aGlzKSxsPW8/Yy5leHRyYWN0T3B0aW9uKHQsZSwidHh0IiwidGV4dHRlbXBsYXRlIik6Yy5leHRyYWN0T3B0aW9uKHQsZSwidHgiLCJ0ZXh0Iik7aWYobHx8MD09PWwpe2lmKG8pe3ZhciBoPWUuX21vZHVsZS5mb3JtYXRMYWJlbHM/ZS5fbW9kdWxlLmZvcm1hdExhYmVscyh0LGUscyk6e30sZj17fTt2KGYsZSx0LmkpO3ZhciBwPWUuX21ldGF8fHt9O2w9Yy50ZXh0dGVtcGxhdGVTdHJpbmcobCxoLHMuX2QzbG9jYWxlLGYsdCxwKX12YXIgZD10LnRwfHxlLnRleHRwb3NpdGlvbixnPUUodCxlKSx5PWE/YSh0KTp0LnRjfHxlLnRleHRmb250LmNvbG9yO2kuY2FsbChtLmZvbnQsdC50Znx8ZS50ZXh0Zm9udC5mYW1pbHksZyx5KS50ZXh0KGwpLmNhbGwodS5jb252ZXJ0VG9Uc3BhbnMscikuY2FsbChTLGQsZyx0Lm1yYyl9ZWxzZSBpLnJlbW92ZSgpfSl9fSxtLnNlbGVjdGVkVGV4dFN0eWxlPWZ1bmN0aW9uKHQsZSl7aWYodC5zaXplKCkmJmUuc2VsZWN0ZWRwb2ludHMpe3ZhciByPW0ubWFrZVNlbGVjdGVkVGV4dFN0eWxlRm5zKGUpO3QuZWFjaChmdW5jdGlvbih0KXt2YXIgYT1uLnNlbGVjdCh0aGlzKSxpPXIuc2VsZWN0ZWRUZXh0Q29sb3JGbih0KSxvPXQudHB8fGUudGV4dHBvc2l0aW9uLGw9RSh0LGUpO3MuZmlsbChhLGkpLFMoYSxvLGwsdC5tcmMyfHx0Lm1yYyl9KX19O3ZhciBMPS41O2Z1bmN0aW9uIEModCxlLHIsYSl7dmFyIGk9dFswXS1lWzBdLG89dFsxXS1lWzFdLHM9clswXS1lWzBdLGw9clsxXS1lWzFdLGM9TWF0aC5wb3coaSppK28qbyxMLzIpLHU9TWF0aC5wb3cocypzK2wqbCxMLzIpLGg9KHUqdSppLWMqYypzKSphLGY9KHUqdSpvLWMqYypsKSphLHA9Myp1KihjK3UpLGQ9MypjKihjK3UpO3JldHVybltbbi5yb3VuZChlWzBdKyhwJiZoL3ApLDIpLG4ucm91bmQoZVsxXSsocCYmZi9wKSwyKV0sW24ucm91bmQoZVswXS0oZCYmaC9kKSwyKSxuLnJvdW5kKGVbMV0tKGQmJmYvZCksMildXX1tLnNtb290aG9wZW49ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aDwzKXJldHVybiJNIit0LmpvaW4oIkwiKTt2YXIgcixuPSJNIit0WzBdLGE9W107Zm9yKHI9MTtyPHQubGVuZ3RoLTE7cisrKWEucHVzaChDKHRbci0xXSx0W3JdLHRbcisxXSxlKSk7Zm9yKG4rPSJRIithWzBdWzBdKyIgIit0WzFdLHI9MjtyPHQubGVuZ3RoLTE7cisrKW4rPSJDIithW3ItMl1bMV0rIiAiK2Fbci0xXVswXSsiICIrdFtyXTtyZXR1cm4gbis9IlEiK2FbdC5sZW5ndGgtM11bMV0rIiAiK3RbdC5sZW5ndGgtMV19LG0uc21vb3RoY2xvc2VkPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8MylyZXR1cm4iTSIrdC5qb2luKCJMIikrIloiO3ZhciByLG49Ik0iK3RbMF0sYT10Lmxlbmd0aC0xLGk9W0ModFthXSx0WzBdLHRbMV0sZSldO2ZvcihyPTE7cjxhO3IrKylpLnB1c2goQyh0W3ItMV0sdFtyXSx0W3IrMV0sZSkpO2ZvcihpLnB1c2goQyh0W2EtMV0sdFthXSx0WzBdLGUpKSxyPTE7cjw9YTtyKyspbis9IkMiK2lbci0xXVsxXSsiICIraVtyXVswXSsiICIrdFtyXTtyZXR1cm4gbis9IkMiK2lbYV1bMV0rIiAiK2lbMF1bMF0rIiAiK3RbMF0rIloifTt2YXIgUD17aHY6ZnVuY3Rpb24odCxlKXtyZXR1cm4iSCIrbi5yb3VuZChlWzBdLDIpKyJWIituLnJvdW5kKGVbMV0sMil9LHZoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIlYiK24ucm91bmQoZVsxXSwyKSsiSCIrbi5yb3VuZChlWzBdLDIpfSxodmg6ZnVuY3Rpb24odCxlKXtyZXR1cm4iSCIrbi5yb3VuZCgodFswXStlWzBdKS8yLDIpKyJWIituLnJvdW5kKGVbMV0sMikrIkgiK24ucm91bmQoZVswXSwyKX0sdmh2OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIlYiK24ucm91bmQoKHRbMV0rZVsxXSkvMiwyKSsiSCIrbi5yb3VuZChlWzBdLDIpKyJWIituLnJvdW5kKGVbMV0sMil9fSxPPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIkwiK24ucm91bmQoZVswXSwyKSsiLCIrbi5yb3VuZChlWzFdLDIpfTttLnN0ZXBzPWZ1bmN0aW9uKHQpe3ZhciBlPVBbdF18fE87cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0iTSIrbi5yb3VuZCh0WzBdWzBdLDIpKyIsIituLnJvdW5kKHRbMF1bMV0sMiksYT0xO2E8dC5sZW5ndGg7YSsrKXIrPWUodFthLTFdLHRbYV0pO3JldHVybiByfX0sbS5tYWtlVGVzdGVyPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5lbnN1cmVTaW5nbGVCeUlkKG4uc2VsZWN0KCJib2R5IiksInN2ZyIsImpzLXBsb3RseS10ZXN0ZXIiLGZ1bmN0aW9uKHQpe3QuYXR0cihoLnN2Z0F0dHJzKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OiItMTAwMDBweCIsdG9wOiItMTAwMDBweCIsd2lkdGg6IjkwMDBweCIsaGVpZ2h0OiI5MDAwcHgiLCJ6LWluZGV4IjoiMSJ9KX0pLGU9Yy5lbnN1cmVTaW5nbGUodCwicGF0aCIsImpzLXJlZmVyZW5jZS1wb2ludCIsZnVuY3Rpb24odCl7dC5hdHRyKCJkIiwiTTAsMEgxVjFIMFoiKS5zdHlsZSh7InN0cm9rZS13aWR0aCI6MCxmaWxsOiJibGFjayJ9KX0pO20udGVzdGVyPXQsbS50ZXN0cmVmPWV9LG0uc2F2ZWRCQm94ZXM9e307dmFyIHo9MDtmdW5jdGlvbiBJKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXVuZm9ybWF0dGVkIik7aWYobnVsbCE9PWUpcmV0dXJuIGUrdC5nZXRBdHRyaWJ1dGUoImRhdGEtbWF0aCIpK3QuZ2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIpK3QuZ2V0QXR0cmlidXRlKCJzdHlsZSIpfWZ1bmN0aW9uIEQodCxlKXtpZighdClyZXR1cm4gbnVsbDt2YXIgcj1lLl9jb250ZXh0O3JldHVybiJ1cmwoJyIrKHIuX2V4cG9ydGVkUGxvdD8iIjpyLl9iYXNlVXJsfHwiIikrIiMiK3QrIicpIn1tLmJCb3g9ZnVuY3Rpb24odCxlLHIpe3ZhciBhLGksbztpZihyfHwocj1JKHQpKSxyKXtpZihhPW0uc2F2ZWRCQm94ZXNbcl0pcmV0dXJuIGMuZXh0ZW5kRmxhdCh7fSxhKX1lbHNlIGlmKDE9PT10LmNoaWxkTm9kZXMubGVuZ3RoKXt2YXIgcz10LmNoaWxkTm9kZXNbMF07aWYocj1JKHMpKXt2YXIgbD0rcy5nZXRBdHRyaWJ1dGUoIngiKXx8MCxoPStzLmdldEF0dHJpYnV0ZSgieSIpfHwwLGY9cy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpO2lmKCFmKXt2YXIgcD1tLmJCb3gocywhMSxyKTtyZXR1cm4gbCYmKHAubGVmdCs9bCxwLnJpZ2h0Kz1sKSxoJiYocC50b3ArPWgscC5ib3R0b20rPWgpLHB9aWYocis9In4iK2wrIn4iK2grIn4iK2YsYT1tLnNhdmVkQkJveGVzW3JdKXJldHVybiBjLmV4dGVuZEZsYXQoe30sYSl9fWU/aT10OihvPW0udGVzdGVyLm5vZGUoKSxpPXQuY2xvbmVOb2RlKCEwKSxvLmFwcGVuZENoaWxkKGkpKSxuLnNlbGVjdChpKS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpLmNhbGwodS5wb3NpdGlvblRleHQsMCwwKTt2YXIgZD1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGc9bS50ZXN0cmVmLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlfHxvLnJlbW92ZUNoaWxkKGkpO3ZhciB2PXtoZWlnaHQ6ZC5oZWlnaHQsd2lkdGg6ZC53aWR0aCxsZWZ0OmQubGVmdC1nLmxlZnQsdG9wOmQudG9wLWcudG9wLHJpZ2h0OmQucmlnaHQtZy5sZWZ0LGJvdHRvbTpkLmJvdHRvbS1nLnRvcH07cmV0dXJuIHo+PTFlNCYmKG0uc2F2ZWRCQm94ZXM9e30sej0wKSxyJiYobS5zYXZlZEJCb3hlc1tyXT12KSx6KyssYy5leHRlbmRGbGF0KHt9LHYpfSxtLnNldENsaXBVcmw9ZnVuY3Rpb24odCxlLHIpe3QuYXR0cigiY2xpcC1wYXRoIixEKGUscikpfSxtLmdldFRyYW5zbGF0ZT1mdW5jdGlvbih0KXt2YXIgZT0odFt0LmF0dHI/ImF0dHIiOiJnZXRBdHRyaWJ1dGUiXSgidHJhbnNmb3JtIil8fCIiKS5yZXBsYWNlKC8uKlxidHJhbnNsYXRlXCgoLT9cZCpcLj9cZCopW14tXGRdKigtP1xkKlwuP1xkKilbXlxkXS4qLyxmdW5jdGlvbih0LGUscil7cmV0dXJuW2Uscl0uam9pbigiICIpfSkuc3BsaXQoIiAiKTtyZXR1cm57eDorZVswXXx8MCx5OitlWzFdfHwwfX0sbS5zZXRUcmFuc2xhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuYXR0cj8iYXR0ciI6ImdldEF0dHJpYnV0ZSIsYT10LmF0dHI/ImF0dHIiOiJzZXRBdHRyaWJ1dGUiLGk9dFtuXSgidHJhbnNmb3JtIil8fCIiO3JldHVybiBlPWV8fDAscj1yfHwwLGk9aS5yZXBsYWNlKC8oXGJ0cmFuc2xhdGVcKC4qP1wpOz8pLywiIikudHJpbSgpLGk9KGkrPSIgdHJhbnNsYXRlKCIrZSsiLCAiK3IrIikiKS50cmltKCksdFthXSgidHJhbnNmb3JtIixpKSxpfSxtLmdldFNjYWxlPWZ1bmN0aW9uKHQpe3ZhciBlPSh0W3QuYXR0cj8iYXR0ciI6ImdldEF0dHJpYnV0ZSJdKCJ0cmFuc2Zvcm0iKXx8IiIpLnJlcGxhY2UoLy4qXGJzY2FsZVwoKFxkKlwuP1xkKilbXlxkXSooXGQqXC4/XGQqKVteXGRdLiovLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm5bZSxyXS5qb2luKCIgIil9KS5zcGxpdCgiICIpO3JldHVybnt4OitlWzBdfHwxLHk6K2VbMV18fDF9fSxtLnNldFNjYWxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10LmF0dHI/ImF0dHIiOiJnZXRBdHRyaWJ1dGUiLGE9dC5hdHRyPyJhdHRyIjoic2V0QXR0cmlidXRlIixpPXRbbl0oInRyYW5zZm9ybSIpfHwiIjtyZXR1cm4gZT1lfHwxLHI9cnx8MSxpPWkucmVwbGFjZSgvKFxic2NhbGVcKC4qP1wpOz8pLywiIikudHJpbSgpLGk9KGkrPSIgc2NhbGUoIitlKyIsICIrcisiKSIpLnRyaW0oKSx0W2FdKCJ0cmFuc2Zvcm0iLGkpLGl9O3ZhciBSPS9ccypzYy4qLzttLnNldFBvaW50R3JvdXBTY2FsZT1mdW5jdGlvbih0LGUscil7aWYoZT1lfHwxLHI9cnx8MSx0KXt2YXIgbj0xPT09ZSYmMT09PXI/IiI6IiBzY2FsZSgiK2UrIiwiK3IrIikiO3QuZWFjaChmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil8fCIiKS5yZXBsYWNlKFIsIiIpO3Q9KHQrPW4pLnRyaW0oKSx0aGlzLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KX0pfX07dmFyIEY9L3RyYW5zbGF0ZVwoW14pXSpcKVxzKiQvO20uc2V0VGV4dFBvaW50c1NjYWxlPWZ1bmN0aW9uKHQsZSxyKXt0JiZ0LmVhY2goZnVuY3Rpb24oKXt2YXIgdCxhPW4uc2VsZWN0KHRoaXMpLGk9YS5zZWxlY3QoInRleHQiKTtpZihpLm5vZGUoKSl7dmFyIG89cGFyc2VGbG9hdChpLmF0dHIoIngiKXx8MCkscz1wYXJzZUZsb2F0KGkuYXR0cigieSIpfHwwKSxsPShhLmF0dHIoInRyYW5zZm9ybSIpfHwiIikubWF0Y2goRik7dD0xPT09ZSYmMT09PXI/W106WyJ0cmFuc2xhdGUoIitvKyIsIitzKyIpIiwic2NhbGUoIitlKyIsIityKyIpIiwidHJhbnNsYXRlKCIrLW8rIiwiKy1zKyIpIl0sbCYmdC5wdXNoKGwpLGEuYXR0cigidHJhbnNmb3JtIix0LmpvaW4oIiAiKSl9fSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyI6NjI3LCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiOjY5MiwiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjY5NCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi8uLi90cmFjZXMvc2NhdHRlci9tYWtlX2J1YmJsZV9zaXplX2Z1bmMiOjExMzcsIi4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuLi9jb2xvciI6NTkyLCIuLi9jb2xvcnNjYWxlIjo2MDQsIi4vc3ltYm9sX2RlZnMiOjYxNCxkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjgsdGlueWNvbG9yMjo1MzZ9XSw2MTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKTtlLmV4cG9ydHM9e2NpcmNsZTp7bjowLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsMEEiK2UrIiwiK2UrIiAwIDEsMSAwLC0iK2UrIkEiK2UrIiwiK2UrIiAwIDAsMSAiK2UrIiwwWiJ9fSxzcXVhcmU6e246MSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrZSsiSC0iK2UrIlYtIitlKyJIIitlKyJaIn19LGRpYW1vbmQ6e246MixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4zKnQsMik7cmV0dXJuIk0iK2UrIiwwTDAsIitlKyJMLSIrZSsiLDBMMCwtIitlKyJaIn19LGNyb3NzOntuOjMsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC40KnQsMikscj1uLnJvdW5kKDEuMip0LDIpO3JldHVybiJNIityKyIsIitlKyJIIitlKyJWIityKyJILSIrZSsiViIrZSsiSC0iK3IrIlYtIitlKyJILSIrZSsiVi0iK3IrIkgiK2UrIlYtIitlKyJIIityKyJaIn19LHg6e246NCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjgqdC9NYXRoLnNxcnQoMiksMikscj0ibCIrZSsiLCIrZSxhPSJsIitlKyIsLSIrZSxpPSJsLSIrZSsiLC0iK2Usbz0ibC0iK2UrIiwiK2U7cmV0dXJuIk0wLCIrZStyK2EraSthK2krbytpK28rcitvK3IrIloifX0sInRyaWFuZ2xlLXVwIjp7bjo1LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQvTWF0aC5zcXJ0KDMpLDIpO3JldHVybiJNLSIrZSsiLCIrbi5yb3VuZCh0LzIsMikrIkgiK2UrIkwwLC0iK24ucm91bmQodCwyKSsiWiJ9fSwidHJpYW5nbGUtZG93biI6e246NixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMip0L01hdGguc3FydCgzKSwyKTtyZXR1cm4iTS0iK2UrIiwtIituLnJvdW5kKHQvMiwyKSsiSCIrZSsiTDAsIituLnJvdW5kKHQsMikrIloifX0sInRyaWFuZ2xlLWxlZnQiOntuOjcsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDIqdC9NYXRoLnNxcnQoMyksMik7cmV0dXJuIk0iK24ucm91bmQodC8yLDIpKyIsLSIrZSsiViIrZSsiTC0iK24ucm91bmQodCwyKSsiLDBaIn19LCJ0cmlhbmdsZS1yaWdodCI6e246OCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMip0L01hdGguc3FydCgzKSwyKTtyZXR1cm4iTS0iK24ucm91bmQodC8yLDIpKyIsLSIrZSsiViIrZSsiTCIrbi5yb3VuZCh0LDIpKyIsMFoifX0sInRyaWFuZ2xlLW5lIjp7bjo5LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCguNip0LDIpLHI9bi5yb3VuZCgxLjIqdCwyKTtyZXR1cm4iTS0iK3IrIiwtIitlKyJIIitlKyJWIityKyJaIn19LCJ0cmlhbmdsZS1zZSI6e246MTAsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC42KnQsMikscj1uLnJvdW5kKDEuMip0LDIpO3JldHVybiJNIitlKyIsLSIrcisiViIrZSsiSC0iK3IrIloifX0sInRyaWFuZ2xlLXN3Ijp7bjoxMSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjYqdCwyKSxyPW4ucm91bmQoMS4yKnQsMik7cmV0dXJuIk0iK3IrIiwiK2UrIkgtIitlKyJWLSIrcisiWiJ9fSwidHJpYW5nbGUtbnciOntuOjEyLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCguNip0LDIpLHI9bi5yb3VuZCgxLjIqdCwyKTtyZXR1cm4iTS0iK2UrIiwiK3IrIlYtIitlKyJIIityKyJaIn19LHBlbnRhZ29uOntuOjEzLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCguOTUxKnQsMikscj1uLnJvdW5kKC41ODgqdCwyKSxhPW4ucm91bmQoLXQsMiksaT1uLnJvdW5kKC0uMzA5KnQsMik7cmV0dXJuIk0iK2UrIiwiK2krIkwiK3IrIiwiK24ucm91bmQoLjgwOSp0LDIpKyJILSIrcisiTC0iK2UrIiwiK2krIkwwLCIrYSsiWiJ9fSxoZXhhZ29uOntuOjE0LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpLHI9bi5yb3VuZCh0LzIsMiksYT1uLnJvdW5kKHQqTWF0aC5zcXJ0KDMpLzIsMik7cmV0dXJuIk0iK2ErIiwtIityKyJWIityKyJMMCwiK2UrIkwtIithKyIsIityKyJWLSIrcisiTDAsLSIrZSsiWiJ9fSxoZXhhZ29uMjp7bjoxNSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKSxyPW4ucm91bmQodC8yLDIpLGE9bi5yb3VuZCh0Kk1hdGguc3FydCgzKS8yLDIpO3JldHVybiJNLSIrcisiLCIrYSsiSCIrcisiTCIrZSsiLDBMIityKyIsLSIrYSsiSC0iK3IrIkwtIitlKyIsMFoifX0sb2N0YWdvbjp7bjoxNixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjkyNCp0LDIpLHI9bi5yb3VuZCguMzgzKnQsMik7cmV0dXJuIk0tIityKyIsLSIrZSsiSCIrcisiTCIrZSsiLC0iK3IrIlYiK3IrIkwiK3IrIiwiK2UrIkgtIityKyJMLSIrZSsiLCIrcisiVi0iK3IrIloifX0sc3Rhcjp7bjoxNyxmOmZ1bmN0aW9uKHQpe3ZhciBlPTEuNCp0LHI9bi5yb3VuZCguMjI1KmUsMiksYT1uLnJvdW5kKC45NTEqZSwyKSxpPW4ucm91bmQoLjM2MyplLDIpLG89bi5yb3VuZCguNTg4KmUsMikscz1uLnJvdW5kKC1lLDIpLGw9bi5yb3VuZCgtLjMwOSplLDIpLGM9bi5yb3VuZCguMTE4KmUsMiksdT1uLnJvdW5kKC44MDkqZSwyKTtyZXR1cm4iTSIrcisiLCIrbCsiSCIrYSsiTCIraSsiLCIrYysiTCIrbysiLCIrdSsiTDAsIituLnJvdW5kKC4zODIqZSwyKSsiTC0iK28rIiwiK3UrIkwtIitpKyIsIitjKyJMLSIrYSsiLCIrbCsiSC0iK3IrIkwwLCIrcysiWiJ9fSxoZXhhZ3JhbTp7bjoxOCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjY2KnQsMikscj1uLnJvdW5kKC4zOCp0LDIpLGE9bi5yb3VuZCguNzYqdCwyKTtyZXR1cm4iTS0iK2ErIiwwbC0iK3IrIiwtIitlKyJoIithKyJsIityKyIsLSIrZSsibCIrcisiLCIrZSsiaCIrYSsibC0iK3IrIiwiK2UrImwiK3IrIiwiK2UrImgtIithKyJsLSIrcisiLCIrZSsibC0iK3IrIiwtIitlKyJoLSIrYSsiWiJ9fSwic3Rhci10cmlhbmdsZS11cCI6e246MTksZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQqTWF0aC5zcXJ0KDMpKi44LDIpLHI9bi5yb3VuZCguOCp0LDIpLGE9bi5yb3VuZCgxLjYqdCwyKSxpPW4ucm91bmQoNCp0LDIpLG89IkEgIitpKyIsIitpKyIgMCAwIDEgIjtyZXR1cm4iTS0iK2UrIiwiK3IrbytlKyIsIityK28rIjAsLSIrYStvKyItIitlKyIsIityKyJaIn19LCJzdGFyLXRyaWFuZ2xlLWRvd24iOntuOjIwLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0Kk1hdGguc3FydCgzKSouOCwyKSxyPW4ucm91bmQoLjgqdCwyKSxhPW4ucm91bmQoMS42KnQsMiksaT1uLnJvdW5kKDQqdCwyKSxvPSJBICIraSsiLCIraSsiIDAgMCAxICI7cmV0dXJuIk0iK2UrIiwtIityK28rIi0iK2UrIiwtIityK28rIjAsIithK28rZSsiLC0iK3IrIloifX0sInN0YXItc3F1YXJlIjp7bjoyMSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4xKnQsMikscj1uLnJvdW5kKDIqdCwyKSxhPSJBICIrcisiLCIrcisiIDAgMCAxICI7cmV0dXJuIk0tIitlKyIsLSIrZSthKyItIitlKyIsIitlK2ErZSsiLCIrZSthK2UrIiwtIitlK2ErIi0iK2UrIiwtIitlKyJaIn19LCJzdGFyLWRpYW1vbmQiOntuOjIyLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjQqdCwyKSxyPW4ucm91bmQoMS45KnQsMiksYT0iQSAiK3IrIiwiK3IrIiAwIDAgMSAiO3JldHVybiJNLSIrZSsiLDAiK2ErIjAsIitlK2ErZSsiLDAiK2ErIjAsLSIrZSthKyItIitlKyIsMFoifX0sImRpYW1vbmQtdGFsbCI6e246MjMsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC43KnQsMikscj1uLnJvdW5kKDEuNCp0LDIpO3JldHVybiJNMCwiK3IrIkwiK2UrIiwwTDAsLSIrcisiTC0iK2UrIiwwWiJ9fSwiZGlhbW9uZC13aWRlIjp7bjoyNCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS40KnQsMikscj1uLnJvdW5kKC43KnQsMik7cmV0dXJuIk0wLCIrcisiTCIrZSsiLDBMMCwtIityKyJMLSIrZSsiLDBaIn19LGhvdXJnbGFzczp7bjoyNSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrZSsiSC0iK2UrIkwiK2UrIiwtIitlKyJILSIrZSsiWiJ9LG5vRG90OiEwfSxib3d0aWU6e246MjYsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK2UrIiwiK2UrIlYtIitlKyJMLSIrZSsiLCIrZSsiVi0iK2UrIloifSxub0RvdDohMH0sImNpcmNsZS1jcm9zcyI6e246MjcsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0wLCIrZSsiVi0iK2UrIk0iK2UrIiwwSC0iK2UrIk0iK2UrIiwwQSIrZSsiLCIrZSsiIDAgMSwxIDAsLSIrZSsiQSIrZSsiLCIrZSsiIDAgMCwxICIrZSsiLDBaIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJjaXJjbGUteCI6e246MjgsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMikscj1uLnJvdW5kKHQvTWF0aC5zcXJ0KDIpLDIpO3JldHVybiJNIityKyIsIityKyJMLSIrcisiLC0iK3IrIk0iK3IrIiwtIityKyJMLSIrcisiLCIrcisiTSIrZSsiLDBBIitlKyIsIitlKyIgMCAxLDEgMCwtIitlKyJBIitlKyIsIitlKyIgMCAwLDEgIitlKyIsMFoifSxuZWVkTGluZTohMCxub0RvdDohMH0sInNxdWFyZS1jcm9zcyI6e246MjksZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0wLCIrZSsiVi0iK2UrIk0iK2UrIiwwSC0iK2UrIk0iK2UrIiwiK2UrIkgtIitlKyJWLSIrZSsiSCIrZSsiWiJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwic3F1YXJlLXgiOntuOjMwLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIitlKyJMLSIrZSsiLC0iK2UrIk0iK2UrIiwtIitlKyJMLSIrZSsiLCIrZSsiTSIrZSsiLCIrZSsiSC0iK2UrIlYtIitlKyJIIitlKyJaIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJkaWFtb25kLWNyb3NzIjp7bjozMSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4zKnQsMik7cmV0dXJuIk0iK2UrIiwwTDAsIitlKyJMLSIrZSsiLDBMMCwtIitlKyJaTTAsLSIrZSsiViIrZSsiTS0iK2UrIiwwSCIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJkaWFtb25kLXgiOntuOjMyLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjMqdCwyKSxyPW4ucm91bmQoLjY1KnQsMik7cmV0dXJuIk0iK2UrIiwwTDAsIitlKyJMLSIrZSsiLDBMMCwtIitlKyJaTS0iK3IrIiwtIityKyJMIityKyIsIityKyJNLSIrcisiLCIrcisiTCIrcisiLC0iK3J9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwiY3Jvc3MtdGhpbiI6e246MzMsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuNCp0LDIpO3JldHVybiJNMCwiK2UrIlYtIitlKyJNIitlKyIsMEgtIitlfSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9LCJ4LXRoaW4iOntuOjM0LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIitlKyJMLSIrZSsiLC0iK2UrIk0iK2UrIiwtIitlKyJMLSIrZSsiLCIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITAsbm9GaWxsOiEwfSxhc3Rlcmlzazp7bjozNSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4yKnQsMikscj1uLnJvdW5kKC44NSp0LDIpO3JldHVybiJNMCwiK2UrIlYtIitlKyJNIitlKyIsMEgtIitlKyJNIityKyIsIityKyJMLSIrcisiLC0iK3IrIk0iK3IrIiwtIityKyJMLSIrcisiLCIrcn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITAsbm9GaWxsOiEwfSxoYXNoOntuOjM2LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LzIsMikscj1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK2UrIiwiK3IrIlYtIityKyJtLSIrcisiLDBWIityKyJNIityKyIsIitlKyJILSIrcisibTAsLSIrcisiSCIrcn0sbmVlZExpbmU6ITAsbm9GaWxsOiEwfSwieS11cCI6e246MzcsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuMip0LDIpLHI9bi5yb3VuZCgxLjYqdCwyKSxhPW4ucm91bmQoLjgqdCwyKTtyZXR1cm4iTS0iK2UrIiwiK2ErIkwwLDBNIitlKyIsIithKyJMMCwwTTAsLSIrcisiTDAsMCJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwLG5vRmlsbDohMH0sInktZG93biI6e246MzgsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuMip0LDIpLHI9bi5yb3VuZCgxLjYqdCwyKSxhPW4ucm91bmQoLjgqdCwyKTtyZXR1cm4iTS0iK2UrIiwtIithKyJMMCwwTSIrZSsiLC0iK2ErIkwwLDBNMCwiK3IrIkwwLDAifSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9LCJ5LWxlZnQiOntuOjM5LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjIqdCwyKSxyPW4ucm91bmQoMS42KnQsMiksYT1uLnJvdW5kKC44KnQsMik7cmV0dXJuIk0iK2ErIiwiK2UrIkwwLDBNIithKyIsLSIrZSsiTDAsME0tIityKyIsMEwwLDAifSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9LCJ5LXJpZ2h0Ijp7bjo0MCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4yKnQsMikscj1uLnJvdW5kKDEuNip0LDIpLGE9bi5yb3VuZCguOCp0LDIpO3JldHVybiJNLSIrYSsiLCIrZSsiTDAsME0tIithKyIsLSIrZSsiTDAsME0iK3IrIiwwTDAsMCJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwLG5vRmlsbDohMH0sImxpbmUtZXciOntuOjQxLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjQqdCwyKTtyZXR1cm4iTSIrZSsiLDBILSIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITAsbm9GaWxsOiEwfSwibGluZS1ucyI6e246NDIsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuNCp0LDIpO3JldHVybiJNMCwiK2UrIlYtIitlfSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9LCJsaW5lLW5lIjp7bjo0MyxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLC0iK2UrIkwtIitlKyIsIitlfSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9LCJsaW5lLW53Ijp7bjo0NCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrZSsiTC0iK2UrIiwtIitlfSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9fX0se2QzOjE2NX1dLDYxNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0sdHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicGVyY2VudCIsImNvbnN0YW50Iiwic3FydCIsImRhdGEiXSxlZGl0VHlwZToiY2FsYyJ9LHN5bW1ldHJpYzp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6ImNhbGMifSxhcnJheTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxhcnJheW1pbnVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHZhbHVlOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MTAsZWRpdFR5cGU6ImNhbGMifSx2YWx1ZW1pbnVzOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MTAsZWRpdFR5cGU6ImNhbGMifSx0cmFjZXJlZjp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJzdHlsZSJ9LHRyYWNlcmVmbWludXM6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToic3R5bGUifSxjb3B5X3lzdHlsZTp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6InBsb3QifSxjb3B5X3pzdHlsZTp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6InN0eWxlIn0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToic3R5bGUifSx0aGlja25lc3M6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoyLGVkaXRUeXBlOiJzdHlsZSJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6ImNhbGMiLF9kZXByZWNhdGVkOntvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJzdHlsZSJ9fX19LHt9XSw2MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vLi4vbGliIikscz10KCIuL2NvbXB1dGVfZXJyb3IiKTtmdW5jdGlvbiBsKHQsZSxyLGEpe3ZhciBsPWVbImVycm9yXyIrYV18fHt9LGM9W107aWYobC52aXNpYmxlJiYtMSE9PVsibGluZWFyIiwibG9nIl0uaW5kZXhPZihyLnR5cGUpKXtmb3IodmFyIHU9cyhsKSxoPTA7aDx0Lmxlbmd0aDtoKyspe3ZhciBmPXRbaF0scD1mLmk7aWYodm9pZCAwPT09cClwPWg7ZWxzZSBpZihudWxsPT09cCljb250aW51ZTt2YXIgZD1mW2FdO2lmKG4oci5jMmwoZCkpKXt2YXIgZz11KGQscCk7aWYobihnWzBdKSYmbihnWzFdKSl7dmFyIHY9ZlthKyJzIl09ZC1nWzBdLG09ZlthKyJoIl09ZCtnWzFdO2MucHVzaCh2LG0pfX19dmFyIHk9ci5faWQseD1lLl9leHRyZW1lc1t5XSxiPWkuZmluZEV4dHJlbWVzKHIsYyxvLmV4dGVuZEZsYXQoe3RvemVybzp4Lm9wdHMudG96ZXJvfSx7cGFkZGVkOiEwfSkpO3gubWluPXgubWluLmNvbmNhdChiLm1pbikseC5tYXg9eC5tYXguY29uY2F0KGIubWF4KX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNhbGNkYXRhLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXSxvPW5bMF0udHJhY2U7aWYoITA9PT1vLnZpc2libGUmJmEudHJhY2VJcyhvLCJlcnJvckJhcnNPSyIpKXt2YXIgcz1pLmdldEZyb21JZCh0LG8ueGF4aXMpLGM9aS5nZXRGcm9tSWQodCxvLnlheGlzKTtsKG4sbyxzLCJ4IiksbChuLG8sYywieSIpfX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2NvbXB1dGVfZXJyb3IiOjYxNywiZmFzdC1pc251bWVyaWMiOjIyOH1dLDYxNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuInBlcmNlbnQiPT09dD9mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModCplLzEwMCl9OiJjb25zdGFudCI9PT10P2Z1bmN0aW9uKCl7cmV0dXJuIE1hdGguYWJzKGUpfToic3FydCI9PT10P2Z1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5hYnModCkpfTp2b2lkIDB9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxyPXQuc3ltbWV0cmljO2lmKCJkYXRhIj09PWUpe3ZhciBhPXQuYXJyYXl8fFtdO2lmKHIpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9K2FbZV07cmV0dXJuW3Iscl19O3ZhciBpPXQuYXJyYXltaW51c3x8W107cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9K2FbZV0sbj0raVtlXTtyZXR1cm4gaXNOYU4ocikmJmlzTmFOKG4pP1tOYU4sTmFOXTpbbnx8MCxyfHwwXX19dmFyIG89bihlLHQudmFsdWUpLHM9bihlLHQudmFsdWVtaW51cyk7cmV0dXJuIHJ8fHZvaWQgMD09PXQudmFsdWVtaW51cz9mdW5jdGlvbih0KXt2YXIgZT1vKHQpO3JldHVybltlLGVdfTpmdW5jdGlvbih0KXtyZXR1cm5bcyh0KSxvKHQpXX19fSx7fV0sNjE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikscz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7dmFyIGM9ImVycm9yXyIrbC5heGlzLHU9by5uZXdDb250YWluZXIoZSxjKSxoPXRbY118fHt9O2Z1bmN0aW9uIGYodCxlKXtyZXR1cm4gaS5jb2VyY2UoaCx1LHMsdCxlKX1pZighMSE9PWYoInZpc2libGUiLHZvaWQgMCE9PWguYXJyYXl8fHZvaWQgMCE9PWgudmFsdWV8fCJzcXJ0Ij09PWgudHlwZSkpe3ZhciBwPWYoInR5cGUiLCJhcnJheSJpbiBoPyJkYXRhIjoicGVyY2VudCIpLGQ9ITA7InNxcnQiIT09cCYmKGQ9Zigic3ltbWV0cmljIiwhKCgiZGF0YSI9PT1wPyJhcnJheW1pbnVzIjoidmFsdWVtaW51cyIpaW4gaCkpKSwiZGF0YSI9PT1wPyhmKCJhcnJheSIpLGYoInRyYWNlcmVmIiksZHx8KGYoImFycmF5bWludXMiKSxmKCJ0cmFjZXJlZm1pbnVzIikpKToicGVyY2VudCIhPT1wJiYiY29uc3RhbnQiIT09cHx8KGYoInZhbHVlIiksZHx8ZigidmFsdWVtaW51cyIpKTt2YXIgZz0iY29weV8iK2wuaW5oZXJpdCsic3R5bGUiO2lmKGwuaW5oZXJpdCkoZVsiZXJyb3JfIitsLmluaGVyaXRdfHx7fSkudmlzaWJsZSYmZihnLCEoaC5jb2xvcnx8bihoLnRoaWNrbmVzcyl8fG4oaC53aWR0aCkpKTtsLmluaGVyaXQmJnVbZ118fChmKCJjb2xvciIsciksZigidGhpY2tuZXNzIiksZigid2lkdGgiLGEudHJhY2VJcyhlLCJnbDNkIik/MDo0KSl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2F0dHJpYnV0ZXMiOjYxNSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDYxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxpPXQoIi4vYXR0cmlidXRlcyIpLG89e2Vycm9yX3g6bi5leHRlbmRGbGF0KHt9LGkpLGVycm9yX3k6bi5leHRlbmRGbGF0KHt9LGkpfTtkZWxldGUgby5lcnJvcl94LmNvcHlfenN0eWxlLGRlbGV0ZSBvLmVycm9yX3kuY29weV96c3R5bGUsZGVsZXRlIG8uZXJyb3JfeS5jb3B5X3lzdHlsZTt2YXIgcz17ZXJyb3JfeDpuLmV4dGVuZEZsYXQoe30saSksZXJyb3JfeTpuLmV4dGVuZEZsYXQoe30saSksZXJyb3JfejpuLmV4dGVuZEZsYXQoe30saSl9O2RlbGV0ZSBzLmVycm9yX3guY29weV95c3R5bGUsZGVsZXRlIHMuZXJyb3JfeS5jb3B5X3lzdHlsZSxkZWxldGUgcy5lcnJvcl96LmNvcHlfeXN0eWxlLGRlbGV0ZSBzLmVycm9yX3ouY29weV96c3R5bGUsZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImVycm9yYmFycyIsc2NoZW1hOnt0cmFjZXM6e3NjYXR0ZXI6byxiYXI6byxoaXN0b2dyYW06byxzY2F0dGVyM2Q6YShzLCJjYWxjIiwibmVzdGVkIiksc2NhdHRlcmdsOmEobywiY2FsYyIsIm5lc3RlZCIpfX0sc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIiksbWFrZUNvbXB1dGVFcnJvcjp0KCIuL2NvbXB1dGVfZXJyb3IiKSxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKSxob3ZlckluZm86ZnVuY3Rpb24odCxlLHIpeyhlLmVycm9yX3l8fHt9KS52aXNpYmxlJiYoci55ZXJyPXQueWgtdC55LGUuZXJyb3JfeS5zeW1tZXRyaWN8fChyLnllcnJuZWc9dC55LXQueXMpKTsoZS5lcnJvcl94fHx7fSkudmlzaWJsZSYmKHIueGVycj10LnhoLXQueCxlLmVycm9yX3guc3ltbWV0cmljfHwoci54ZXJybmVnPXQueC10LnhzKSl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuL2F0dHJpYnV0ZXMiOjYxNSwiLi9jYWxjIjo2MTYsIi4vY29tcHV0ZV9lcnJvciI6NjE3LCIuL2RlZmF1bHRzIjo2MTgsIi4vcGxvdCI6NjIwLCIuL3N0eWxlIjo2MjF9XSw2MjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi9kcmF3aW5nIiksbz10KCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXt2YXIgbD1yLnhheGlzLGM9ci55YXhpcyx1PXMmJnMuZHVyYXRpb24+MDtlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGgsZj1lWzBdLnRyYWNlLHA9Zi5lcnJvcl94fHx7fSxkPWYuZXJyb3JfeXx8e307Zi5pZHMmJihoPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSk7dmFyIGc9by5oYXNNYXJrZXJzKGYpJiZmLm1hcmtlci5tYXhkaXNwbGF5ZWQ+MDtkLnZpc2libGV8fHAudmlzaWJsZXx8KGU9W10pO3ZhciB2PW4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5lcnJvcmJhciIpLmRhdGEoZSxoKTtpZih2LmV4aXQoKS5yZW1vdmUoKSxlLmxlbmd0aCl7cC52aXNpYmxlfHx2LnNlbGVjdEFsbCgicGF0aC54ZXJyb3IiKS5yZW1vdmUoKSxkLnZpc2libGV8fHYuc2VsZWN0QWxsKCJwYXRoLnllcnJvciIpLnJlbW92ZSgpLHYuc3R5bGUoIm9wYWNpdHkiLDEpO3ZhciBtPXYuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJlcnJvcmJhciIsITApO3UmJm0uc3R5bGUoIm9wYWNpdHkiLDApLnRyYW5zaXRpb24oKS5kdXJhdGlvbihzLmR1cmF0aW9uKS5zdHlsZSgib3BhY2l0eSIsMSksaS5zZXRDbGlwVXJsKHYsci5sYXllckNsaXBJZCx0KSx2LmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodGhpcykscj1mdW5jdGlvbih0LGUscil7dmFyIG49e3g6ZS5jMnAodC54KSx5OnIuYzJwKHQueSl9O3ZvaWQgMCE9PXQueWgmJihuLnloPXIuYzJwKHQueWgpLG4ueXM9ci5jMnAodC55cyksYShuLnlzKXx8KG4ubm9ZUz0hMCxuLnlzPXIuYzJwKHQueXMsITApKSk7dm9pZCAwIT09dC54aCYmKG4ueGg9ZS5jMnAodC54aCksbi54cz1lLmMycCh0LnhzKSxhKG4ueHMpfHwobi5ub1hTPSEwLG4ueHM9ZS5jMnAodC54cywhMCkpKTtyZXR1cm4gbn0odCxsLGMpO2lmKCFnfHx0LnZpcyl7dmFyIGksbz1lLnNlbGVjdCgicGF0aC55ZXJyb3IiKTtpZihkLnZpc2libGUmJmEoci54KSYmYShyLnloKSYmYShyLnlzKSl7dmFyIGg9ZC53aWR0aDtpPSJNIisoci54LWgpKyIsIityLnloKyJoIisyKmgrIm0tIitoKyIsMFYiK3IueXMsci5ub1lTfHwoaSs9Im0tIitoKyIsMGgiKzIqaCksIW8uc2l6ZSgpP289ZS5hcHBlbmQoInBhdGgiKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmNsYXNzZWQoInllcnJvciIsITApOnUmJihvPW8udHJhbnNpdGlvbigpLmR1cmF0aW9uKHMuZHVyYXRpb24pLmVhc2Uocy5lYXNpbmcpKSxvLmF0dHIoImQiLGkpfWVsc2Ugby5yZW1vdmUoKTt2YXIgZj1lLnNlbGVjdCgicGF0aC54ZXJyb3IiKTtpZihwLnZpc2libGUmJmEoci55KSYmYShyLnhoKSYmYShyLnhzKSl7dmFyIHY9KHAuY29weV95c3R5bGU/ZDpwKS53aWR0aDtpPSJNIityLnhoKyIsIisoci55LXYpKyJ2IisyKnYrIm0wLC0iK3YrIkgiK3IueHMsci5ub1hTfHwoaSs9Im0wLC0iK3YrInYiKzIqdiksIWYuc2l6ZSgpP2Y9ZS5hcHBlbmQoInBhdGgiKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmNsYXNzZWQoInhlcnJvciIsITApOnUmJihmPWYudHJhbnNpdGlvbigpLmR1cmF0aW9uKHMuZHVyYXRpb24pLmVhc2Uocy5lYXNpbmcpKSxmLmF0dHIoImQiLGkpfWVsc2UgZi5yZW1vdmUoKX19KX19KX19LHsiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4uL2RyYXdpbmciOjYxMyxkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjh9XSw2MjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uL2NvbG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3QuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9ZS5lcnJvcl95fHx7fSxpPWUuZXJyb3JfeHx8e30sbz1uLnNlbGVjdCh0aGlzKTtvLnNlbGVjdEFsbCgicGF0aC55ZXJyb3IiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixyLnRoaWNrbmVzcysicHgiKS5jYWxsKGEuc3Ryb2tlLHIuY29sb3IpLGkuY29weV95c3R5bGUmJihpPXIpLG8uc2VsZWN0QWxsKCJwYXRoLnhlcnJvciIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGkudGhpY2tuZXNzKyJweCIpLmNhbGwoYS5zdHJva2UsaS5jb2xvcil9KX19LHsiLi4vY29sb3IiOjU5MixkMzoxNjV9XSw2MjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIikuaG92ZXJsYWJlbCxpPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17aG92ZXJsYWJlbDp7Ymdjb2xvcjppKHt9LGEuYmdjb2xvcix7YXJyYXlPazohMH0pLGJvcmRlcmNvbG9yOmkoe30sYS5ib3JkZXJjb2xvcix7YXJyYXlPazohMH0pLGZvbnQ6bih7YXJyYXlPazohMCxlZGl0VHlwZToibm9uZSJ9KSxhbGlnbjppKHt9LGEuYWxpZ24se2FycmF5T2s6ITB9KSxuYW1lbGVuZ3RoOmkoe30sYS5uYW1lbGVuZ3RoLHthcnJheU9rOiEwfSksZWRpdFR5cGU6Im5vbmUifX19LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi9sYXlvdXRfYXR0cmlidXRlcyI6NjMxfV0sNjIzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKTtmdW5jdGlvbiBpKHQsZSxyLGEpe2E9YXx8bi5pZGVudGl0eSxBcnJheS5pc0FycmF5KHQpJiYoZVswXVtyXT1hKHQpKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5jYWxjZGF0YSxyPXQuX2Z1bGxMYXlvdXQ7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG4uY29lcmNlSG92ZXJpbmZvKHtob3ZlcmluZm86ZX0se19tb2R1bGU6dC5fbW9kdWxlfSxyKX19Zm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciBsPWVbc10sYz1sWzBdLnRyYWNlO2lmKCFhLnRyYWNlSXMoYywicGllLWxpa2UiKSl7dmFyIHU9YS50cmFjZUlzKGMsIjJkTWFwIik/aTpuLmZpbGxBcnJheTt1KGMuaG92ZXJpbmZvLGwsImhpIixvKGMpKSxjLmhvdmVydGVtcGxhdGUmJnUoYy5ob3ZlcnRlbXBsYXRlLGwsImh0IiksYy5ob3ZlcmxhYmVsJiYodShjLmhvdmVybGFiZWwuYmdjb2xvcixsLCJoYmciKSx1KGMuaG92ZXJsYWJlbC5ib3JkZXJjb2xvcixsLCJoYmMiKSx1KGMuaG92ZXJsYWJlbC5mb250LnNpemUsbCwiaHRzIiksdShjLmhvdmVybGFiZWwuZm9udC5jb2xvcixsLCJodGMiKSx1KGMuaG92ZXJsYWJlbC5mb250LmZhbWlseSxsLCJodGYiKSx1KGMuaG92ZXJsYWJlbC5uYW1lbGVuZ3RoLGwsImhubCIpLHUoYy5ob3ZlcmxhYmVsLmFsaWduLGwsImh0YSIpKX19fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0Nn1dLDYyNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi9ob3ZlciIpLmhvdmVyO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9bi5nZXRDb21wb25lbnRNZXRob2QoImFubm90YXRpb25zIiwib25DbGljayIpKHQsdC5faG92ZXJkYXRhKTtmdW5jdGlvbiBvKCl7dC5lbWl0KCJwbG90bHlfY2xpY2siLHtwb2ludHM6dC5faG92ZXJkYXRhLGV2ZW50OmV9KX12b2lkIDAhPT1yJiZhKHQsZSxyLCEwKSx0Ll9ob3ZlcmRhdGEmJmUmJmUudGFyZ2V0JiYoaSYmaS50aGVuP2kudGhlbihvKTpvKCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0seyIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2hvdmVyIjo2Mjh9XSw2MjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtZQU5HTEU6NjAsSE9WRVJBUlJPV1NJWkU6NixIT1ZFUlRFWFRQQUQ6MyxIT1ZFUkZPTlRTSVpFOjEzLEhPVkVSRk9OVDoiQXJpYWwsIHNhbnMtc2VyaWYiLEhPVkVSTUlOVElNRTo1MCxIT1ZFUklEOiItaG92ZXIifX0se31dLDYyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vYXR0cmlidXRlcyIpLGk9dCgiLi9ob3ZlcmxhYmVsX2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzPW4uZXh0ZW5kRmxhdCh7fSxvLmhvdmVybGFiZWwpO2UuaG92ZXJ0ZW1wbGF0ZSYmKHMubmFtZWxlbmd0aD0tMSksaSh0LGUsZnVuY3Rpb24ocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX0scyl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2F0dHJpYnV0ZXMiOjYyMiwiLi9ob3ZlcmxhYmVsX2RlZmF1bHRzIjo2Mjl9XSw2Mjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ci5nZXRTdWJwbG90PWZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnBsb3R8fHQueGF4aXMrdC55YXhpc3x8dC5nZW99LHIuaXNUcmFjZUluU3VicGxvdHM9ZnVuY3Rpb24odCxlKXtpZigic3Bsb20iPT09dC50eXBlKXtmb3IodmFyIG49dC54YXhlc3x8W10sYT10LnlheGVzfHxbXSxpPTA7aTxuLmxlbmd0aDtpKyspZm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspaWYoLTEhPT1lLmluZGV4T2YobltpXSthW29dKSlyZXR1cm4hMDtyZXR1cm4hMX1yZXR1cm4tMSE9PWUuaW5kZXhPZihyLmdldFN1YnBsb3QodCkpfSxyLmZsYXQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT1lO3JldHVybiByfSxyLnAyYz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodC5sZW5ndGgpLG49MDtuPHQubGVuZ3RoO24rKylyW25dPXRbbl0ucDJjKGUpO3JldHVybiByfSxyLmdldERpc3RhbmNlRnVuY3Rpb249ZnVuY3Rpb24odCxlLG4sYSl7cmV0dXJuImNsb3Nlc3QiPT09dD9hfHxyLnF1YWRyYXR1cmUoZSxuKToieCI9PT10P2U6bn0sci5nZXRDbG9zZXN0PWZ1bmN0aW9uKHQsZSxyKXtpZighMSE9PXIuaW5kZXgpci5pbmRleD49MCYmci5pbmRleDx0Lmxlbmd0aD9yLmRpc3RhbmNlPTA6ci5pbmRleD0hMTtlbHNlIGZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgYT1lKHRbbl0pO2E8PXIuZGlzdGFuY2UmJihyLmluZGV4PW4sci5kaXN0YW5jZT1hKX1yZXR1cm4gcn0sci5pbmJveD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQqZTwwfHwwPT09dD9yOjEvMH0sci5xdWFkcmF0dXJlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXQociksYT1lKHIpO3JldHVybiBNYXRoLnNxcnQobipuK2EqYSl9fSxyLm1ha2VFdmVudERhdGE9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPSJpbmRleCJpbiB0P3QuaW5kZXg6dC5wb2ludE51bWJlcixpPXtkYXRhOmUuX2lucHV0LGZ1bGxEYXRhOmUsY3VydmVOdW1iZXI6ZS5pbmRleCxwb2ludE51bWJlcjphfTtpZihlLl9pbmRleFRvUG9pbnRzKXt2YXIgbz1lLl9pbmRleFRvUG9pbnRzW2FdOzE9PT1vLmxlbmd0aD9pLnBvaW50SW5kZXg9b1swXTppLnBvaW50SW5kaWNlcz1vfWVsc2UgaS5wb2ludEluZGV4PWE7cmV0dXJuIGUuX21vZHVsZS5ldmVudERhdGE/aT1lLl9tb2R1bGUuZXZlbnREYXRhKGksdCxlLG4sYSk6KCJ4VmFsImluIHQ/aS54PXQueFZhbDoieCJpbiB0JiYoaS54PXQueCksInlWYWwiaW4gdD9pLnk9dC55VmFsOiJ5ImluIHQmJihpLnk9dC55KSx0LnhhJiYoaS54YXhpcz10LnhhKSx0LnlhJiYoaS55YXhpcz10LnlhKSx2b2lkIDAhPT10LnpMYWJlbFZhbCYmKGkuej10LnpMYWJlbFZhbCkpLHIuYXBwZW5kQXJyYXlQb2ludFZhbHVlKGksZSxhKSxpfSxyLmFwcGVuZEFycmF5UG9pbnRWYWx1ZT1mdW5jdGlvbih0LGUscil7dmFyIGE9ZS5fYXJyYXlBdHRycztpZihhKWZvcih2YXIgcz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgbD1hW3NdLGM9aShsKTtpZih2b2lkIDA9PT10W2NdKXt2YXIgdT1vKG4ubmVzdGVkUHJvcGVydHkoZSxsKS5nZXQoKSxyKTt2b2lkIDAhPT11JiYodFtjXT11KX19fSxyLmFwcGVuZEFycmF5TXVsdGlQb2ludFZhbHVlcz1mdW5jdGlvbih0LGUscil7dmFyIGE9ZS5fYXJyYXlBdHRycztpZihhKWZvcih2YXIgcz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgbD1hW3NdLGM9aShsKTtpZih2b2lkIDA9PT10W2NdKXtmb3IodmFyIHU9bi5uZXN0ZWRQcm9wZXJ0eShlLGwpLmdldCgpLGg9bmV3IEFycmF5KHIubGVuZ3RoKSxmPTA7ZjxyLmxlbmd0aDtmKyspaFtmXT1vKHUscltmXSk7dFtjXT1ofX19O3ZhciBhPXtpZHM6ImlkIixsb2NhdGlvbnM6ImxvY2F0aW9uIixsYWJlbHM6ImxhYmVsIix2YWx1ZXM6InZhbHVlIiwibWFya2VyLmNvbG9ycyI6ImNvbG9yIixwYXJlbnRzOiJwYXJlbnQifTtmdW5jdGlvbiBpKHQpe3JldHVybiBhW3RdfHx0fWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpJiZBcnJheS5pc0FycmF5KHRbZVswXV0pP3RbZVswXV1bZVsxXV06dm9pZCAwOnRbZV19fSx7Ii4uLy4uL2xpYiI6NzE3fV0sNjI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgidGlueWNvbG9yMiIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi8uLi9saWIvZXZlbnRzIiksbD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxjPXQoIi4uLy4uL2xpYi9vdmVycmlkZV9jdXJzb3IiKSx1PXQoIi4uL2RyYXdpbmciKSxoPXQoIi4uL2NvbG9yIiksZj10KCIuLi9kcmFnZWxlbWVudCIpLHA9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxkPXQoIi4uLy4uL3JlZ2lzdHJ5IiksZz10KCIuL2hlbHBlcnMiKSx2PXQoIi4vY29uc3RhbnRzIiksbT12LllBTkdMRSx5PU1hdGguUEkqbS8xODAseD0xL01hdGguc2luKHkpLGI9TWF0aC5jb3MoeSksXz1NYXRoLnNpbih5KSx3PXYuSE9WRVJBUlJPV1NJWkUsaz12LkhPVkVSVEVYVFBBRDtyLmhvdmVyPWZ1bmN0aW9uKHQsZSxyLGkpe3Q9by5nZXRHcmFwaERpdih0KSxvLnRocm90dGxlKHQuX2Z1bGxMYXlvdXQuX3VpZCt2LkhPVkVSSUQsdi5IT1ZFUk1JTlRJTUUsZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlLHIsaSl7cnx8KHI9Inh5Iik7dmFyIGw9QXJyYXkuaXNBcnJheShyKT9yOltyXSx1PXQuX2Z1bGxMYXlvdXQscD11Ll9wbG90c3x8W10sdj1wW3JdLG09dS5faGFzKCJjYXJ0ZXNpYW4iKTtpZih2KXt2YXIgeT12Lm92ZXJsYXlzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pO2w9bC5jb25jYXQoeSl9Zm9yKHZhciBiPWwubGVuZ3RoLF89bmV3IEFycmF5KGIpLHc9bmV3IEFycmF5KGIpLGs9ITEsVD0wO1Q8YjtUKyspe3ZhciBDPWxbVF07aWYocFtDXSlrPSEwLF9bVF09cFtDXS54YXhpcyx3W1RdPXBbQ10ueWF4aXM7ZWxzZXtpZighdVtDXXx8IXVbQ10uX3N1YnBsb3QpcmV0dXJuIHZvaWQgby53YXJuKCJVbnJlY29nbml6ZWQgc3VicGxvdDogIitDKTt2YXIgUD11W0NdLl9zdWJwbG90O19bVF09UC54YXhpcyx3W1RdPVAueWF4aXN9fXZhciBPPWUuaG92ZXJtb2RlfHx1LmhvdmVybW9kZTtPJiYhayYmKE89ImNsb3Nlc3QiKTtpZigtMT09PVsieCIsInkiLCJjbG9zZXN0Il0uaW5kZXhPZihPKXx8IXQuY2FsY2RhdGF8fHQucXVlcnlTZWxlY3RvcigiLnpvb21ib3giKXx8dC5fZHJhZ2dpbmcpcmV0dXJuIGYudW5ob3ZlclJhdyh0LGUpO3ZhciB6LEksRCxSLEYsQixOLGosVixVLHEsSCxHLFk9LTE9PT11LmhvdmVyZGlzdGFuY2U/MS8wOnUuaG92ZXJkaXN0YW5jZSxXPS0xPT09dS5zcGlrZWRpc3RhbmNlPzEvMDp1LnNwaWtlZGlzdGFuY2UsWD1bXSxaPVtdLEo9e2hMaW5lUG9pbnQ6bnVsbCx2TGluZVBvaW50Om51bGx9LEs9ITE7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoTz0iYXJyYXkiLEQ9MDtEPGUubGVuZ3RoO0QrKykoRj10LmNhbGNkYXRhW2VbRF0uY3VydmVOdW1iZXJ8fDBdKSYmKEI9RlswXS50cmFjZSwic2tpcCIhPT1GWzBdLnRyYWNlLmhvdmVyaW5mbyYmKFoucHVzaChGKSwiaCI9PT1CLm9yaWVudGF0aW9uJiYoSz0hMCkpKTtlbHNle2ZvcihSPTA7Ujx0LmNhbGNkYXRhLmxlbmd0aDtSKyspRj10LmNhbGNkYXRhW1JdLCJza2lwIiE9PShCPUZbMF0udHJhY2UpLmhvdmVyaW5mbyYmZy5pc1RyYWNlSW5TdWJwbG90cyhCLGwpJiYoWi5wdXNoKEYpLCJoIj09PUIub3JpZW50YXRpb24mJihLPSEwKSk7dmFyIFEsJCx0dD0hZS50YXJnZXQ7aWYodHQpUT0ieHB4ImluIGU/ZS54cHg6X1swXS5fbGVuZ3RoLzIsJD0ieXB4ImluIGU/ZS55cHg6d1swXS5fbGVuZ3RoLzI7ZWxzZXtpZighMT09PXMudHJpZ2dlckhhbmRsZXIodCwicGxvdGx5X2JlZm9yZWhvdmVyIixlKSlyZXR1cm47dmFyIGV0PWUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKFE9ZS5jbGllbnRYLWV0LmxlZnQsJD1lLmNsaWVudFktZXQudG9wLFE8MHx8UT5fWzBdLl9sZW5ndGh8fCQ8MHx8JD53WzBdLl9sZW5ndGgpcmV0dXJuIGYudW5ob3ZlclJhdyh0LGUpfWlmKGUucG9pbnRlclg9UStfWzBdLl9vZmZzZXQsZS5wb2ludGVyWT0kK3dbMF0uX29mZnNldCx6PSJ4dmFsImluIGU/Zy5mbGF0KGwsZS54dmFsKTpnLnAyYyhfLFEpLEk9Inl2YWwiaW4gZT9nLmZsYXQobCxlLnl2YWwpOmcucDJjKHcsJCksIWEoelswXSl8fCFhKElbMF0pKXJldHVybiBvLndhcm4oIkZ4LmhvdmVyIGZhaWxlZCIsZSx0KSxmLnVuaG92ZXJSYXcodCxlKX12YXIgcnQ9MS8wO2ZvcihSPTA7UjxaLmxlbmd0aDtSKyspaWYoKEY9WltSXSkmJkZbMF0mJkZbMF0udHJhY2UmJiEwPT09KEI9RlswXS50cmFjZSkudmlzaWJsZSYmMCE9PUIuX2xlbmd0aCYmLTE9PT1bImNhcnBldCIsImNvbnRvdXJjYXJwZXQiXS5pbmRleE9mKEIuX21vZHVsZS5uYW1lKSl7aWYoInNwbG9tIj09PUIudHlwZT9OPWxbaj0wXTooTj1nLmdldFN1YnBsb3QoQiksaj1sLmluZGV4T2YoTikpLFY9TyxIPXtjZDpGLHRyYWNlOkIseGE6X1tqXSx5YTp3W2pdLG1heEhvdmVyRGlzdGFuY2U6WSxtYXhTcGlrZURpc3RhbmNlOlcsaW5kZXg6ITEsZGlzdGFuY2U6TWF0aC5taW4ocnQsWSksc3Bpa2VEaXN0YW5jZToxLzAseFNwaWtlOnZvaWQgMCx5U3Bpa2U6dm9pZCAwLGNvbG9yOmguZGVmYXVsdExpbmUsbmFtZTpCLm5hbWUseDA6dm9pZCAwLHgxOnZvaWQgMCx5MDp2b2lkIDAseTE6dm9pZCAwLHhMYWJlbFZhbDp2b2lkIDAseUxhYmVsVmFsOnZvaWQgMCx6TGFiZWxWYWw6dm9pZCAwLHRleHQ6dm9pZCAwfSx1W05dJiYoSC5zdWJwbG90PXVbTl0uX3N1YnBsb3QpLHUuX3NwbG9tU2NlbmVzJiZ1Ll9zcGxvbVNjZW5lc1tCLnVpZF0mJihILnNjZW5lPXUuX3NwbG9tU2NlbmVzW0IudWlkXSksRz1YLmxlbmd0aCwiYXJyYXkiPT09Vil7dmFyIG50PWVbUl07InBvaW50TnVtYmVyImluIG50PyhILmluZGV4PW50LnBvaW50TnVtYmVyLFY9ImNsb3Nlc3QiKTooVj0iIiwieHZhbCJpbiBudCYmKFU9bnQueHZhbCxWPSJ4IiksInl2YWwiaW4gbnQmJihxPW50Lnl2YWwsVj1WPyJjbG9zZXN0IjoieSIpKX1lbHNlIFU9eltqXSxxPUlbal07aWYoMCE9PVkpaWYoQi5fbW9kdWxlJiZCLl9tb2R1bGUuaG92ZXJQb2ludHMpe3ZhciBhdD1CLl9tb2R1bGUuaG92ZXJQb2ludHMoSCxVLHEsVix1Ll9ob3ZlcmxheWVyKTtpZihhdClmb3IodmFyIGl0LG90PTA7b3Q8YXQubGVuZ3RoO290KyspaXQ9YXRbb3RdLGEoaXQueDApJiZhKGl0LnkwKSYmWC5wdXNoKFMoaXQsTykpfWVsc2Ugby5sb2coIlVucmVjb2duaXplZCB0cmFjZSB0eXBlIGluIGhvdmVyOiIsQik7aWYoImNsb3Nlc3QiPT09TyYmWC5sZW5ndGg+RyYmKFguc3BsaWNlKDAsRykscnQ9WFswXS5kaXN0YW5jZSksbSYmMCE9PVcmJjA9PT1YLmxlbmd0aCl7SC5kaXN0YW5jZT1XLEguaW5kZXg9ITE7dmFyIHN0PUIuX21vZHVsZS5ob3ZlclBvaW50cyhILFUscSwiY2xvc2VzdCIsdS5faG92ZXJsYXllcik7aWYoc3QmJihzdD1zdC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3Bpa2VEaXN0YW5jZTw9V30pKSxzdCYmc3QubGVuZ3RoKXt2YXIgbHQsY3Q9c3QuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnhhLnNob3dzcGlrZXN9KTtpZihjdC5sZW5ndGgpe3ZhciB1dD1jdFswXTthKHV0LngwKSYmYSh1dC55MCkmJihsdD1kdCh1dCksKCFKLnZMaW5lUG9pbnR8fEoudkxpbmVQb2ludC5zcGlrZURpc3RhbmNlPmx0LnNwaWtlRGlzdGFuY2UpJiYoSi52TGluZVBvaW50PWx0KSl9dmFyIGh0PXN0LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC55YS5zaG93c3Bpa2VzfSk7aWYoaHQubGVuZ3RoKXt2YXIgZnQ9aHRbMF07YShmdC54MCkmJmEoZnQueTApJiYobHQ9ZHQoZnQpLCghSi5oTGluZVBvaW50fHxKLmhMaW5lUG9pbnQuc3Bpa2VEaXN0YW5jZT5sdC5zcGlrZURpc3RhbmNlKSYmKEouaExpbmVQb2ludD1sdCkpfX19fWZ1bmN0aW9uIHB0KHQsZSl7Zm9yKHZhciByLG49bnVsbCxhPTEvMCxpPTA7aTx0Lmxlbmd0aDtpKyspKHI9dFtpXS5zcGlrZURpc3RhbmNlKTxhJiZyPD1lJiYobj10W2ldLGE9cik7cmV0dXJuIG59ZnVuY3Rpb24gZHQodCl7cmV0dXJuIHQ/e3hhOnQueGEseWE6dC55YSx4OnZvaWQgMCE9PXQueFNwaWtlP3QueFNwaWtlOih0LngwK3QueDEpLzIseTp2b2lkIDAhPT10LnlTcGlrZT90LnlTcGlrZToodC55MCt0LnkxKS8yLGRpc3RhbmNlOnQuZGlzdGFuY2Usc3Bpa2VEaXN0YW5jZTp0LnNwaWtlRGlzdGFuY2UsY3VydmVOdW1iZXI6dC50cmFjZS5pbmRleCxjb2xvcjp0LmNvbG9yLHBvaW50TnVtYmVyOnQuaW5kZXh9Om51bGx9dmFyIGd0PXtmdWxsTGF5b3V0OnUsY29udGFpbmVyOnUuX2hvdmVybGF5ZXIsb3V0ZXJDb250YWluZXI6dS5fcGFwZXJkaXYsZXZlbnQ6ZX0sdnQ9dC5fc3Bpa2Vwb2ludHMsbXQ9e3ZMaW5lUG9pbnQ6Si52TGluZVBvaW50LGhMaW5lUG9pbnQ6Si5oTGluZVBvaW50fTtpZih0Ll9zcGlrZXBvaW50cz1tdCxtJiYwIT09VyYmMCE9PVgubGVuZ3RoKXt2YXIgeXQ9WC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQueWEuc2hvd3NwaWtlc30pLHh0PXB0KHl0LFcpO0ouaExpbmVQb2ludD1kdCh4dCk7dmFyIGJ0PVguZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnhhLnNob3dzcGlrZXN9KSxfdD1wdChidCxXKTtKLnZMaW5lUG9pbnQ9ZHQoX3QpfWlmKDA9PT1YLmxlbmd0aCl7dmFyIHd0PWYudW5ob3ZlclJhdyh0LGUpO3JldHVybiFtfHxudWxsPT09Si5oTGluZVBvaW50JiZudWxsPT09Si52TGluZVBvaW50fHxMKHZ0KSYmRSh0LEosZ3QpLHd0fW0mJkwodnQpJiZFKHQsSixndCk7WC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGlzdGFuY2UtZS5kaXN0YW5jZX0pO3ZhciBrdD10Ll9ob3ZlcmRhdGEsVHQ9W107Zm9yKEQ9MDtEPFgubGVuZ3RoO0QrKyl7dmFyIE10PVhbRF0sQXQ9Zy5tYWtlRXZlbnREYXRhKE10LE10LnRyYWNlLE10LmNkKTtpZighMSE9PU10LmhvdmVydGVtcGxhdGUpe3ZhciBTdD0hMTtNdC5jZFtNdC5pbmRleF0mJk10LmNkW010LmluZGV4XS5odCYmKFN0PU10LmNkW010LmluZGV4XS5odCksTXQuaG92ZXJ0ZW1wbGF0ZT1TdHx8TXQudHJhY2UuaG92ZXJ0ZW1wbGF0ZXx8ITF9TXQuZXZlbnREYXRhPVtBdF0sVHQucHVzaChBdCl9dC5faG92ZXJkYXRhPVR0O3ZhciBFdD0ieSI9PT1PJiYoWi5sZW5ndGg+MXx8WC5sZW5ndGg+MSl8fCJjbG9zZXN0Ij09PU8mJksmJlgubGVuZ3RoPjEsTHQ9aC5jb21iaW5lKHUucGxvdF9iZ2NvbG9yfHxoLmJhY2tncm91bmQsdS5wYXBlcl9iZ2NvbG9yKSxDdD17aG92ZXJtb2RlOk8scm90YXRlTGFiZWxzOkV0LGJnQ29sb3I6THQsY29udGFpbmVyOnUuX2hvdmVybGF5ZXIsb3V0ZXJDb250YWluZXI6dS5fcGFwZXJkaXYsY29tbW9uTGFiZWxPcHRzOnUuaG92ZXJsYWJlbCxob3ZlcmRpc3RhbmNlOnUuaG92ZXJkaXN0YW5jZX0sUHQ9TShYLEN0LHQpO2lmKGZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGksbyxzLGwsYyx1PTAsaD0xLGY9dC5zaXplKCkscD1uZXcgQXJyYXkoZiksZD0wO2Z1bmN0aW9uIGcodCl7dmFyIGU9dFswXSxyPXRbdC5sZW5ndGgtMV07aWYoYT1lLnBtaW4tZS5wb3MtZS5kcCtlLnNpemUsaT1yLnBvcytyLmRwK3Iuc2l6ZS1lLnBtYXgsYT4uMDEpe2ZvcihzPXQubGVuZ3RoLTE7cz49MDtzLS0pdFtzXS5kcCs9YTtuPSExfWlmKCEoaTwuMDEpKXtpZihhPC0uMDEpe2ZvcihzPXQubGVuZ3RoLTE7cz49MDtzLS0pdFtzXS5kcC09aTtuPSExfWlmKG4pe3ZhciBjPTA7Zm9yKG89MDtvPHQubGVuZ3RoO28rKykobD10W29dKS5wb3MrbC5kcCtsLnNpemU+ZS5wbWF4JiZjKys7Zm9yKG89dC5sZW5ndGgtMTtvPj0wJiYhKGM8PTApO28tLSkobD10W29dKS5wb3M+ZS5wbWF4LTEmJihsLmRlbD0hMCxjLS0pO2ZvcihvPTA7bzx0Lmxlbmd0aCYmIShjPD0wKTtvKyspaWYoKGw9dFtvXSkucG9zPGUucG1pbisxKWZvcihsLmRlbD0hMCxjLS0saT0yKmwuc2l6ZSxzPXQubGVuZ3RoLTE7cz49MDtzLS0pdFtzXS5kcC09aTtmb3Iobz10Lmxlbmd0aC0xO28+PTAmJiEoYzw9MCk7by0tKShsPXRbb10pLnBvcytsLmRwK2wuc2l6ZT5lLnBtYXgmJihsLmRlbD0hMCxjLS0pfX19Zm9yKHQuZWFjaChmdW5jdGlvbih0KXt2YXIgbj10W2VdLGE9IngiPT09bi5faWQuY2hhckF0KDApLGk9bi5yYW5nZTswPT09ZCYmaSYmaVswXT5pWzFdIT09YSYmKGg9LTEpLHBbZCsrXT1be2RhdHVtOnQsdHJhY2VJbmRleDp0LnRyYWNlLmluZGV4LGRwOjAscG9zOnQucG9zLHBvc3JlZjp0LnBvc3JlZixzaXplOnQuYnkqKGE/eDoxKS8yLHBtaW46MCxwbWF4OmE/ci53aWR0aDpyLmhlaWdodH1dfSkscC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0ucG9zcmVmLWVbMF0ucG9zcmVmfHxoKihlWzBdLnRyYWNlSW5kZXgtdFswXS50cmFjZUluZGV4KX0pOyFuJiZ1PD1mOyl7Zm9yKHUrKyxuPSEwLG89MDtvPHAubGVuZ3RoLTE7KXt2YXIgdj1wW29dLG09cFtvKzFdLHk9dlt2Lmxlbmd0aC0xXSxiPW1bMF07aWYoKGE9eS5wb3MreS5kcCt5LnNpemUtYi5wb3MtYi5kcCtiLnNpemUpPi4wMSYmeS5wbWluPT09Yi5wbWluJiZ5LnBtYXg9PT1iLnBtYXgpe2ZvcihzPW0ubGVuZ3RoLTE7cz49MDtzLS0pbVtzXS5kcCs9YTtmb3Iodi5wdXNoLmFwcGx5KHYsbSkscC5zcGxpY2UobysxLDEpLGM9MCxzPXYubGVuZ3RoLTE7cz49MDtzLS0pYys9dltzXS5kcDtmb3IoaT1jL3YubGVuZ3RoLHM9di5sZW5ndGgtMTtzPj0wO3MtLSl2W3NdLmRwLT1pO249ITF9ZWxzZSBvKyt9cC5mb3JFYWNoKGcpfWZvcihvPXAubGVuZ3RoLTE7bz49MDtvLS0pe3ZhciBfPXBbb107Zm9yKHM9Xy5sZW5ndGgtMTtzPj0wO3MtLSl7dmFyIHc9X1tzXSxrPXcuZGF0dW07ay5vZmZzZXQ9dy5kcCxrLmRlbD13LmRlbH19fShQdCxFdD8ieGEiOiJ5YSIsdSksQShQdCxFdCksZS50YXJnZXQmJmUudGFyZ2V0LnRhZ05hbWUpe3ZhciBPdD1kLmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMiLCJoYXNDbGlja1RvU2hvdyIpKHQsVHQpO2Mobi5zZWxlY3QoZS50YXJnZXQpLE90PyJwb2ludGVyIjoiIil9aWYoIWUudGFyZ2V0fHxpfHwhZnVuY3Rpb24odCxlLHIpe2lmKCFyfHxyLmxlbmd0aCE9PXQuX2hvdmVyZGF0YS5sZW5ndGgpcmV0dXJuITA7Zm9yKHZhciBuPXIubGVuZ3RoLTE7bj49MDtuLS0pe3ZhciBhPXJbbl0saT10Ll9ob3ZlcmRhdGFbbl07aWYoYS5jdXJ2ZU51bWJlciE9PWkuY3VydmVOdW1iZXJ8fFN0cmluZyhhLnBvaW50TnVtYmVyKSE9PVN0cmluZyhpLnBvaW50TnVtYmVyKXx8U3RyaW5nKGEucG9pbnROdW1iZXJzKSE9PVN0cmluZyhpLnBvaW50TnVtYmVycykpcmV0dXJuITB9cmV0dXJuITF9KHQsMCxrdCkpcmV0dXJuO2t0JiZ0LmVtaXQoInBsb3RseV91bmhvdmVyIix7ZXZlbnQ6ZSxwb2ludHM6a3R9KTt0LmVtaXQoInBsb3RseV9ob3ZlciIse2V2ZW50OmUscG9pbnRzOnQuX2hvdmVyZGF0YSx4YXhlczpfLHlheGVzOncseHZhbHM6eix5dmFsczpJfSl9KHQsZSxyLGkpfSl9LHIubG9uZUhvdmVyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ITA7QXJyYXkuaXNBcnJheSh0KXx8KHI9ITEsdD1bdF0pO3ZhciBhPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybntjb2xvcjp0LmNvbG9yfHxoLmRlZmF1bHRMaW5lLHgwOnQueDB8fHQueHx8MCx4MTp0LngxfHx0Lnh8fDAseTA6dC55MHx8dC55fHwwLHkxOnQueTF8fHQueXx8MCx4TGFiZWw6dC54TGFiZWwseUxhYmVsOnQueUxhYmVsLHpMYWJlbDp0LnpMYWJlbCx0ZXh0OnQudGV4dCxuYW1lOnQubmFtZSxpZGVhbEFsaWduOnQuaWRlYWxBbGlnbixib3JkZXJDb2xvcjp0LmJvcmRlckNvbG9yLGZvbnRGYW1pbHk6dC5mb250RmFtaWx5LGZvbnRTaXplOnQuZm9udFNpemUsZm9udENvbG9yOnQuZm9udENvbG9yLG5hbWVMZW5ndGg6dC5uYW1lTGVuZ3RoLHRleHRBbGlnbjp0LnRleHRBbGlnbix0cmFjZTp0LnRyYWNlfHx7aW5kZXg6MCxob3ZlcmluZm86IiJ9LHhhOntfb2Zmc2V0OjB9LHlhOntfb2Zmc2V0OjB9LGluZGV4OjAsaG92ZXJ0ZW1wbGF0ZTp0LmhvdmVydGVtcGxhdGV8fCExLGV2ZW50RGF0YTp0LmV2ZW50RGF0YXx8ITEsaG92ZXJ0ZW1wbGF0ZUxhYmVsczp0LmhvdmVydGVtcGxhdGVMYWJlbHN8fCExfX0pLGk9bi5zZWxlY3QoZS5jb250YWluZXIpLG89ZS5vdXRlckNvbnRhaW5lcj9uLnNlbGVjdChlLm91dGVyQ29udGFpbmVyKTppLHM9e2hvdmVybW9kZToiY2xvc2VzdCIscm90YXRlTGFiZWxzOiExLGJnQ29sb3I6ZS5iZ0NvbG9yfHxoLmJhY2tncm91bmQsY29udGFpbmVyOmksb3V0ZXJDb250YWluZXI6b30sbD1NKGEscyxlLmdkKSxjPTAsdT0wO3JldHVybiBsLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC55MC1lLnkwfSkuZWFjaChmdW5jdGlvbih0LHIpe3ZhciBuPXQueTAtdC5ieS8yO3Qub2Zmc2V0PW4tNTxjP2Mtbis1OjAsYz1uK3QuYnkrdC5vZmZzZXQscj09PWUuYW5jaG9ySW5kZXgmJih1PXQub2Zmc2V0KX0pLmVhY2goZnVuY3Rpb24odCl7dC5vZmZzZXQtPXV9KSxBKGwscy5yb3RhdGVMYWJlbHMpLHI/bDpsLm5vZGUoKX07dmFyIFQ9LzxleHRyYT4oW1xzXFNdKik8XC9leHRyYT4vO2Z1bmN0aW9uIE0odCxlLHIpe3ZhciBhPXIuX2Z1bGxMYXlvdXQsaT1lLmhvdmVybW9kZSxzPWUucm90YXRlTGFiZWxzLGM9ZS5iZ0NvbG9yLGY9ZS5jb250YWluZXIscD1lLm91dGVyQ29udGFpbmVyLGQ9ZS5jb21tb25MYWJlbE9wdHN8fHt9LGc9ZS5mb250RmFtaWx5fHx2LkhPVkVSRk9OVCx5PWUuZm9udFNpemV8fHYuSE9WRVJGT05UU0laRSx4PXRbMF0sYj14LnhhLF89eC55YSxNPSJ5Ij09PWk/InlMYWJlbCI6InhMYWJlbCIsQT14W01dLFM9KFN0cmluZyhBKXx8IiIpLnNwbGl0KCIgIilbMF0sRT1wLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxMPUUudG9wLFA9RS53aWR0aCxPPUUuaGVpZ2h0LHo9dm9pZCAwIT09QSYmeC5kaXN0YW5jZTw9ZS5ob3ZlcmRpc3RhbmNlJiYoIngiPT09aXx8InkiPT09aSk7aWYoeil7dmFyIEksRCxSPSEwO2ZvcihJPTA7STx0Lmxlbmd0aDtJKyspaWYoUiYmdm9pZCAwPT09dFtJXS56TGFiZWwmJihSPSExKSxEPXRbSV0uaG92ZXJpbmZvfHx0W0ldLnRyYWNlLmhvdmVyaW5mbyl7dmFyIEY9QXJyYXkuaXNBcnJheShEKT9EOkQuc3BsaXQoIisiKTtpZigtMT09PUYuaW5kZXhPZigiYWxsIikmJi0xPT09Ri5pbmRleE9mKGkpKXt6PSExO2JyZWFrfX1SJiYoej0hMSl9dmFyIEI9Zi5zZWxlY3RBbGwoImcuYXhpc3RleHQiKS5kYXRhKHo/WzBdOltdKTtCLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYXhpc3RleHQiLCEwKSxCLmV4aXQoKS5yZW1vdmUoKSxCLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxzPW8uZW5zdXJlU2luZ2xlKGUsInBhdGgiLCIiLGZ1bmN0aW9uKHQpe3Quc3R5bGUoeyJzdHJva2Utd2lkdGgiOiIxcHgifSl9KSxjPW8uZW5zdXJlU2luZ2xlKGUsInRleHQiLCIiLGZ1bmN0aW9uKHQpe3QuYXR0cigiZGF0YS1ub3RleCIsMSl9KSxmPWQuYmdjb2xvcnx8aC5kZWZhdWx0TGluZSxwPWQuYm9yZGVyY29sb3J8fGguY29udHJhc3QoZiksdj1oLmNvbnRyYXN0KGYpLG09e2ZhbWlseTpkLmZvbnQuZmFtaWx5fHxnLHNpemU6ZC5mb250LnNpemV8fHksY29sb3I6ZC5mb250LmNvbG9yfHx2fTtzLnN0eWxlKHtmaWxsOmYsc3Ryb2tlOnB9KSxjLnRleHQoQSkuY2FsbCh1LmZvbnQsbSkuY2FsbChsLnBvc2l0aW9uVGV4dCwwLDApLmNhbGwobC5jb252ZXJ0VG9Uc3BhbnMsciksZS5hdHRyKCJ0cmFuc2Zvcm0iLCIiKTt2YXIgVCxFLEM9Yy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIngiPT09aSl7dmFyIFA9InRvcCI9PT1iLnNpZGU/Ii0iOiIiO2MuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5jYWxsKGwucG9zaXRpb25UZXh0LDAsInRvcCI9PT1iLnNpZGU/TC1DLmJvdHRvbS13LWs6TC1DLnRvcCt3K2spLFQ9Yi5fb2Zmc2V0Kyh4LngwK3gueDEpLzIsRT1fLl9vZmZzZXQrKCJ0b3AiPT09Yi5zaWRlPzA6Xy5fbGVuZ3RoKTt2YXIgTz1DLndpZHRoLzIraztUPE8/KFQ9TyxzLmF0dHIoImQiLCJNLSIrKE8tdykrIiwwTC0iKyhPLTIqdykrIiwiK1ArdysiSCIrKGsrQy53aWR0aC8yKSsidiIrUCsoMiprK0MuaGVpZ2h0KSsiSC0iK08rIlYiK1ArdysiWiIpKTpUPmEud2lkdGgtTz8oVD1hLndpZHRoLU8scy5hdHRyKCJkIiwiTSIrKE8tdykrIiwwTCIrTysiLCIrUCt3KyJ2IitQKygyKmsrQy5oZWlnaHQpKyJILSIrTysiViIrUCt3KyJIIisoTy0yKncpKyJaIikpOnMuYXR0cigiZCIsIk0wLDBMIit3KyIsIitQK3crIkgiKyhrK0Mud2lkdGgvMikrInYiK1ArKDIqaytDLmhlaWdodCkrIkgtIisoaytDLndpZHRoLzIpKyJWIitQK3crIkgtIit3KyJaIil9ZWxzZXt2YXIgeixJLEQ7InJpZ2h0Ij09PV8uc2lkZT8oej0ic3RhcnQiLEk9MSxEPSIiLFQ9Yi5fb2Zmc2V0K2IuX2xlbmd0aCk6KHo9ImVuZCIsST0tMSxEPSItIixUPWIuX29mZnNldCksRT1fLl9vZmZzZXQrKHgueTAreC55MSkvMixjLmF0dHIoInRleHQtYW5jaG9yIix6KSxzLmF0dHIoImQiLCJNMCwwTCIrRCt3KyIsIit3KyJWIisoaytDLmhlaWdodC8yKSsiaCIrRCsoMiprK0Mud2lkdGgpKyJWLSIrKGsrQy5oZWlnaHQvMikrIkgiK0QrdysiVi0iK3crIloiKTt2YXIgUixGPUMuaGVpZ2h0LzIsQj1MLUMudG9wLUYsTj0iY2xpcCIrYS5fdWlkKyJjb21tb25sYWJlbCIrXy5faWQ7aWYoVDxDLndpZHRoKzIqayt3KXtSPSJNLSIrKHcraykrIi0iK0YrImgtIisoQy53aWR0aC1rKSsiViIrRisiaCIrKEMud2lkdGgtaykrIloiO3ZhciBqPUMud2lkdGgtVCtrO2wucG9zaXRpb25UZXh0KGMsaixCKSwiZW5kIj09PXomJmMuc2VsZWN0QWxsKCJ0c3BhbiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxlPXUudGVzdGVyLmFwcGVuZCgidGV4dCIpLnRleHQodC50ZXh0KCkpLmNhbGwodS5mb250LG0pLHI9ZS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7TWF0aC5yb3VuZChyLndpZHRoKTxNYXRoLnJvdW5kKEMud2lkdGgpJiZ0LmF0dHIoIngiLGotci53aWR0aCksZS5yZW1vdmUoKX0pfWVsc2UgbC5wb3NpdGlvblRleHQoYyxJKihrK3cpLEIpLFI9bnVsbDt2YXIgVj1hLl90b3BjbGlwcy5zZWxlY3RBbGwoIiMiK04pLmRhdGEoUj9bMF06W10pO1YuZW50ZXIoKS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLE4pLmFwcGVuZCgicGF0aCIpLFYuZXhpdCgpLnJlbW92ZSgpLFYuc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsUiksdS5zZXRDbGlwVXJsKGMsUj9OOm51bGwscil9ZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitUKyIsIitFKyIpIiksdD10LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dC56TGFiZWxWYWx8fCh0W01dfHwiIikuc3BsaXQoIiAiKVswXT09PVN9KX0pO3ZhciBOPWYuc2VsZWN0QWxsKCJnLmhvdmVydGV4dCIpLmRhdGEodCxmdW5jdGlvbih0KXtyZXR1cm5bdC50cmFjZS5pbmRleCx0LmluZGV4LHQueDAsdC55MCx0Lm5hbWUsdC5hdHRyLHQueGEsdC55YXx8IiJdLmpvaW4oIiwiKX0pO3JldHVybiBOLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiaG92ZXJ0ZXh0IiwhMCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpO3QuYXBwZW5kKCJyZWN0IikuY2FsbChoLmZpbGwsaC5hZGRPcGFjaXR5KGMsLjgpKSx0LmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoIm5hbWUiLCEwKSx0LmFwcGVuZCgicGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLCIxcHgiKSx0LmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoIm51bXMiLCEwKS5jYWxsKHUuZm9udCxnLHkpfSksTi5leGl0KCkucmVtb3ZlKCksTi5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLmF0dHIoInRyYW5zZm9ybSIsIiIpLGY9IiIscD0iIixkPXQuYmdjb2xvcnx8dC5jb2xvcix2PWguY29tYmluZShoLm9wYWNpdHkoZCk/ZDpoLmRlZmF1bHRMaW5lLGMpLHg9aC5jb21iaW5lKGgub3BhY2l0eSh0LmNvbG9yKT90LmNvbG9yOmguZGVmYXVsdExpbmUsYyksYj10LmJvcmRlckNvbG9yfHxoLmNvbnRyYXN0KHYpO3ZvaWQgMCE9PXQubmFtZU92ZXJyaWRlJiYodC5uYW1lPXQubmFtZU92ZXJyaWRlKSx0Lm5hbWUmJih0LnRyYWNlLl9tZXRhJiYodC5uYW1lPW8udGVtcGxhdGVTdHJpbmcodC5uYW1lLHQudHJhY2UuX21ldGEpKSxmPUModC5uYW1lLHQubmFtZUxlbmd0aCkpLHZvaWQgMCE9PXQuekxhYmVsPyh2b2lkIDAhPT10LnhMYWJlbCYmKHArPSJ4OiAiK3QueExhYmVsKyI8YnI+Iiksdm9pZCAwIT09dC55TGFiZWwmJihwKz0ieTogIit0LnlMYWJlbCsiPGJyPiIpLCJjaG9yb3BsZXRoIiE9PXQudHJhY2UudHlwZSYmImNob3JvcGxldGhtYXBib3giIT09dC50cmFjZS50eXBlJiYocCs9KHA/Ino6ICI6IiIpK3QuekxhYmVsKSk6eiYmdFtpKyJMYWJlbCJdPT09QT9wPXRbKCJ4Ij09PWk/InkiOiJ4IikrIkxhYmVsIl18fCIiOnZvaWQgMD09PXQueExhYmVsP3ZvaWQgMCE9PXQueUxhYmVsJiYic2NhdHRlcmNhcnBldCIhPT10LnRyYWNlLnR5cGUmJihwPXQueUxhYmVsKTpwPXZvaWQgMD09PXQueUxhYmVsP3QueExhYmVsOiIoIit0LnhMYWJlbCsiLCAiK3QueUxhYmVsKyIpIiwhdC50ZXh0JiYwIT09dC50ZXh0fHxBcnJheS5pc0FycmF5KHQudGV4dCl8fChwKz0ocD8iPGJyPiI6IiIpK3QudGV4dCksdm9pZCAwIT09dC5leHRyYVRleHQmJihwKz0ocD8iPGJyPiI6IiIpK3QuZXh0cmFUZXh0KSwiIiE9PXB8fHQuaG92ZXJ0ZW1wbGF0ZXx8KCIiPT09ZiYmZS5yZW1vdmUoKSxwPWYpO3ZhciBfPWEuX2QzbG9jYWxlLE09dC5ob3ZlcnRlbXBsYXRlfHwhMSxTPXQuaG92ZXJ0ZW1wbGF0ZUxhYmVsc3x8dCxFPXQuZXZlbnREYXRhWzBdfHx7fTtNJiYocD0ocD1vLmhvdmVydGVtcGxhdGVTdHJpbmcoTSxTLF8sRSx0LnRyYWNlLl9tZXRhKSkucmVwbGFjZShULGZ1bmN0aW9uKGUscil7cmV0dXJuIGY9QyhyLHQubmFtZUxlbmd0aCksIiJ9KSk7dmFyIEk9ZS5zZWxlY3QoInRleHQubnVtcyIpLmNhbGwodS5mb250LHQuZm9udEZhbWlseXx8Zyx0LmZvbnRTaXplfHx5LHQuZm9udENvbG9yfHxiKS50ZXh0KHApLmF0dHIoImRhdGEtbm90ZXgiLDEpLmNhbGwobC5wb3NpdGlvblRleHQsMCwwKS5jYWxsKGwuY29udmVydFRvVHNwYW5zLHIpLEQ9ZS5zZWxlY3QoInRleHQubmFtZSIpLFI9MCxGPTA7aWYoZiYmZiE9PXApe0QuY2FsbCh1LmZvbnQsdC5mb250RmFtaWx5fHxnLHQuZm9udFNpemV8fHkseCkudGV4dChmKS5hdHRyKCJkYXRhLW5vdGV4IiwxKS5jYWxsKGwucG9zaXRpb25UZXh0LDAsMCkuY2FsbChsLmNvbnZlcnRUb1RzcGFucyxyKTt2YXIgQj1ELm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtSPUIud2lkdGgrMiprLEY9Qi5oZWlnaHQrMiprfWVsc2UgRC5yZW1vdmUoKSxlLnNlbGVjdCgicmVjdCIpLnJlbW92ZSgpO2Uuc2VsZWN0KCJwYXRoIikuc3R5bGUoe2ZpbGw6dixzdHJva2U6Yn0pO3ZhciBOLGosVj1JLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxVPXQueGEuX29mZnNldCsodC54MCt0LngxKS8yLHE9dC55YS5fb2Zmc2V0Kyh0LnkwK3QueTEpLzIsSD1NYXRoLmFicyh0LngxLXQueDApLEc9TWF0aC5hYnModC55MS10LnkwKSxZPVYud2lkdGgrdytrK1I7aWYodC50eTA9TC1WLnRvcCx0LmJ4PVYud2lkdGgrMiprLHQuYnk9TWF0aC5tYXgoVi5oZWlnaHQrMiprLEYpLHQuYW5jaG9yPSJzdGFydCIsdC50eHdpZHRoPVYud2lkdGgsdC50eDJ3aWR0aD1SLHQub2Zmc2V0PTAscyl0LnBvcz1VLE49cStHLzIrWTw9TyxqPXEtRy8yLVk+PTAsInRvcCIhPT10LmlkZWFsQWxpZ24mJk58fCFqP04/KHErPUcvMix0LmFuY2hvcj0ic3RhcnQiKTp0LmFuY2hvcj0ibWlkZGxlIjoocS09Ry8yLHQuYW5jaG9yPSJlbmQiKTtlbHNlIGlmKHQucG9zPXEsTj1VK0gvMitZPD1QLGo9VS1ILzItWT49MCwibGVmdCIhPT10LmlkZWFsQWxpZ24mJk58fCFqKWlmKE4pVSs9SC8yLHQuYW5jaG9yPSJzdGFydCI7ZWxzZXt0LmFuY2hvcj0ibWlkZGxlIjt2YXIgVz1ZLzIsWD1VK1ctUCxaPVUtVztYPjAmJihVLT1YKSxaPDAmJihVKz0tWil9ZWxzZSBVLT1ILzIsdC5hbmNob3I9ImVuZCI7SS5hdHRyKCJ0ZXh0LWFuY2hvciIsdC5hbmNob3IpLFImJkQuYXR0cigidGV4dC1hbmNob3IiLHQuYW5jaG9yKSxlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK1UrIiwiK3ErIikiKyhzPyJyb3RhdGUoIittKyIpIjoiIikpfSksTn1mdW5jdGlvbiBBKHQsZSl7dC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByPW4uc2VsZWN0KHRoaXMpO2lmKHQuZGVsKXJldHVybiByLnJlbW92ZSgpO3ZhciBhPXIuc2VsZWN0KCJ0ZXh0Lm51bXMiKSxpPXQuYW5jaG9yLG89ImVuZCI9PT1pPy0xOjEscz17c3RhcnQ6MSxlbmQ6LTEsbWlkZGxlOjB9W2ldLGM9cyoodytrKSxoPWMrcyoodC50eHdpZHRoK2spLGY9MCxwPXQub2Zmc2V0OyJtaWRkbGUiPT09aSYmKGMtPXQudHgyd2lkdGgvMixoKz10LnR4d2lkdGgvMitrKSxlJiYocCo9LV8sZj10Lm9mZnNldCpiKSxyLnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLCJtaWRkbGUiPT09aT8iTS0iKyh0LmJ4LzIrdC50eDJ3aWR0aC8yKSsiLCIrKHAtdC5ieS8yKSsiaCIrdC5ieCsidiIrdC5ieSsiaC0iK3QuYngrIloiOiJNMCwwTCIrKG8qdytmKSsiLCIrKHcrcCkrInYiKyh0LmJ5LzItdykrImgiK28qdC5ieCsidi0iK3QuYnkrIkgiKyhvKncrZikrIlYiKyhwLXcpKyJaIik7dmFyIGQ9YytmLGc9cCt0LnR5MC10LmJ5LzIrayx2PXQudGV4dEFsaWdufHwiYXV0byI7ImF1dG8iIT09diYmKCJsZWZ0Ij09PXYmJiJzdGFydCIhPT1pPyhhLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKSxkPSJtaWRkbGUiPT09aT8tdC5ieC8yLXQudHgyd2lkdGgvMitrOi10LmJ4LWspOiJyaWdodCI9PT12JiYiZW5kIiE9PWkmJihhLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIiksZD0ibWlkZGxlIj09PWk/dC5ieC8yLXQudHgyd2lkdGgvMi1rOnQuYngraykpLGEuY2FsbChsLnBvc2l0aW9uVGV4dCxkLGcpLHQudHgyd2lkdGgmJihyLnNlbGVjdCgidGV4dC5uYW1lIikuY2FsbChsLnBvc2l0aW9uVGV4dCxoK3MqaytmLHArdC50eTAtdC5ieS8yK2spLHIuc2VsZWN0KCJyZWN0IikuY2FsbCh1LnNldFJlY3QsaCsocy0xKSp0LnR4MndpZHRoLzIrZixwLXQuYnkvMi0xLHQudHgyd2lkdGgsdC5ieSsyKSl9KX1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9dC5pbmRleCxuPXQudHJhY2V8fHt9LGk9dC5jZFswXSxzPXQuY2Rbcl18fHt9O2Z1bmN0aW9uIGwodCl7cmV0dXJuIHR8fGEodCkmJjA9PT10fXZhciBjPUFycmF5LmlzQXJyYXkocik/ZnVuY3Rpb24odCxlKXt2YXIgYT1vLmNhc3RPcHRpb24oaSxyLHQpO3JldHVybiBsKGEpP2E6by5leHRyYWN0T3B0aW9uKHt9LG4sIiIsZSl9OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8uZXh0cmFjdE9wdGlvbihzLG4sdCxlKX07ZnVuY3Rpb24gdShlLHIsbil7dmFyIGE9YyhyLG4pO2woYSkmJih0W2VdPWEpfWlmKHUoImhvdmVyaW5mbyIsImhpIiwiaG92ZXJpbmZvIiksdSgiYmdjb2xvciIsImhiZyIsImhvdmVybGFiZWwuYmdjb2xvciIpLHUoImJvcmRlckNvbG9yIiwiaGJjIiwiaG92ZXJsYWJlbC5ib3JkZXJjb2xvciIpLHUoImZvbnRGYW1pbHkiLCJodGYiLCJob3ZlcmxhYmVsLmZvbnQuZmFtaWx5IiksdSgiZm9udFNpemUiLCJodHMiLCJob3ZlcmxhYmVsLmZvbnQuc2l6ZSIpLHUoImZvbnRDb2xvciIsImh0YyIsImhvdmVybGFiZWwuZm9udC5jb2xvciIpLHUoIm5hbWVMZW5ndGgiLCJobmwiLCJob3ZlcmxhYmVsLm5hbWVsZW5ndGgiKSx1KCJ0ZXh0QWxpZ24iLCJodGEiLCJob3ZlcmxhYmVsLmFsaWduIiksdC5wb3NyZWY9InkiPT09ZXx8ImNsb3Nlc3QiPT09ZSYmImgiPT09bi5vcmllbnRhdGlvbj90LnhhLl9vZmZzZXQrKHQueDArdC54MSkvMjp0LnlhLl9vZmZzZXQrKHQueTArdC55MSkvMix0LngwPW8uY29uc3RyYWluKHQueDAsMCx0LnhhLl9sZW5ndGgpLHQueDE9by5jb25zdHJhaW4odC54MSwwLHQueGEuX2xlbmd0aCksdC55MD1vLmNvbnN0cmFpbih0LnkwLDAsdC55YS5fbGVuZ3RoKSx0LnkxPW8uY29uc3RyYWluKHQueTEsMCx0LnlhLl9sZW5ndGgpLHZvaWQgMCE9PXQueExhYmVsVmFsJiYodC54TGFiZWw9InhMYWJlbCJpbiB0P3QueExhYmVsOnAuaG92ZXJMYWJlbFRleHQodC54YSx0LnhMYWJlbFZhbCksdC54VmFsPXQueGEuYzJkKHQueExhYmVsVmFsKSksdm9pZCAwIT09dC55TGFiZWxWYWwmJih0LnlMYWJlbD0ieUxhYmVsImluIHQ/dC55TGFiZWw6cC5ob3ZlckxhYmVsVGV4dCh0LnlhLHQueUxhYmVsVmFsKSx0LnlWYWw9dC55YS5jMmQodC55TGFiZWxWYWwpKSx2b2lkIDAhPT10LnpMYWJlbFZhbCYmdm9pZCAwPT09dC56TGFiZWwmJih0LnpMYWJlbD1TdHJpbmcodC56TGFiZWxWYWwpKSwhKGlzTmFOKHQueGVycil8fCJsb2ciPT09dC54YS50eXBlJiZ0LnhlcnI8PTApKXt2YXIgaD1wLnRpY2tUZXh0KHQueGEsdC54YS5jMmwodC54ZXJyKSwiaG92ZXIiKS50ZXh0O3ZvaWQgMCE9PXQueGVycm5lZz90LnhMYWJlbCs9IiArIitoKyIgLyAtIitwLnRpY2tUZXh0KHQueGEsdC54YS5jMmwodC54ZXJybmVnKSwiaG92ZXIiKS50ZXh0OnQueExhYmVsKz0iIFx4YjEgIitoLCJ4Ij09PWUmJih0LmRpc3RhbmNlKz0xKX1pZighKGlzTmFOKHQueWVycil8fCJsb2ciPT09dC55YS50eXBlJiZ0LnllcnI8PTApKXt2YXIgZj1wLnRpY2tUZXh0KHQueWEsdC55YS5jMmwodC55ZXJyKSwiaG92ZXIiKS50ZXh0O3ZvaWQgMCE9PXQueWVycm5lZz90LnlMYWJlbCs9IiArIitmKyIgLyAtIitwLnRpY2tUZXh0KHQueWEsdC55YS5jMmwodC55ZXJybmVnKSwiaG92ZXIiKS50ZXh0OnQueUxhYmVsKz0iIFx4YjEgIitmLCJ5Ij09PWUmJih0LmRpc3RhbmNlKz0xKX12YXIgZD10LmhvdmVyaW5mb3x8dC50cmFjZS5ob3ZlcmluZm87cmV0dXJuIGQmJiJhbGwiIT09ZCYmKC0xPT09KGQ9QXJyYXkuaXNBcnJheShkKT9kOmQuc3BsaXQoIisiKSkuaW5kZXhPZigieCIpJiYodC54TGFiZWw9dm9pZCAwKSwtMT09PWQuaW5kZXhPZigieSIpJiYodC55TGFiZWw9dm9pZCAwKSwtMT09PWQuaW5kZXhPZigieiIpJiYodC56TGFiZWw9dm9pZCAwKSwtMT09PWQuaW5kZXhPZigidGV4dCIpJiYodC50ZXh0PXZvaWQgMCksLTE9PT1kLmluZGV4T2YoIm5hbWUiKSYmKHQubmFtZT12b2lkIDApKSx0fWZ1bmN0aW9uIEUodCxlLHIpe3ZhciBuLGEsbz1yLmNvbnRhaW5lcixzPXIuZnVsbExheW91dCxsPXMuX3NpemUsYz1yLmV2ZW50LGY9ISFlLmhMaW5lUG9pbnQsZD0hIWUudkxpbmVQb2ludDtpZihvLnNlbGVjdEFsbCgiLnNwaWtlbGluZSIpLnJlbW92ZSgpLGR8fGYpe3ZhciBnPWguY29tYmluZShzLnBsb3RfYmdjb2xvcixzLnBhcGVyX2JnY29sb3IpO2lmKGYpe3ZhciB2LG0seT1lLmhMaW5lUG9pbnQ7bj15JiZ5LnhhLCJjdXJzb3IiPT09KGE9eSYmeS55YSkuc3Bpa2VzbmFwPyh2PWMucG9pbnRlclgsbT1jLnBvaW50ZXJZKToodj1uLl9vZmZzZXQreS54LG09YS5fb2Zmc2V0K3kueSk7dmFyIHgsYixfPWkucmVhZGFiaWxpdHkoeS5jb2xvcixnKTwxLjU/aC5jb250cmFzdChnKTp5LmNvbG9yLHc9YS5zcGlrZW1vZGUsaz1hLnNwaWtldGhpY2tuZXNzLFQ9YS5zcGlrZWNvbG9yfHxfLE09cC5nZXRQeFBvc2l0aW9uKHQsYSk7aWYoLTEhPT13LmluZGV4T2YoInRvYXhpcyIpfHwtMSE9PXcuaW5kZXhPZigiYWNyb3NzIikpe2lmKC0xIT09dy5pbmRleE9mKCJ0b2F4aXMiKSYmKHg9TSxiPXYpLC0xIT09dy5pbmRleE9mKCJhY3Jvc3MiKSl7dmFyIEE9YS5fY291bnRlckRvbWFpbk1pbixTPWEuX2NvdW50ZXJEb21haW5NYXg7ImZyZWUiPT09YS5hbmNob3ImJihBPU1hdGgubWluKEEsYS5wb3NpdGlvbiksUz1NYXRoLm1heChTLGEucG9zaXRpb24pKSx4PWwubCtBKmwudyxiPWwubCtTKmwud31vLmluc2VydCgibGluZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoe3gxOngseDI6Yix5MTptLHkyOm0sInN0cm9rZS13aWR0aCI6ayxzdHJva2U6VCwic3Ryb2tlLWRhc2hhcnJheSI6dS5kYXNoU3R5bGUoYS5zcGlrZWRhc2gsayl9KS5jbGFzc2VkKCJzcGlrZWxpbmUiLCEwKS5jbGFzc2VkKCJjcmlzcCIsITApLG8uaW5zZXJ0KCJsaW5lIiwiOmZpcnN0LWNoaWxkIikuYXR0cih7eDE6eCx4MjpiLHkxOm0seTI6bSwic3Ryb2tlLXdpZHRoIjprKzIsc3Ryb2tlOmd9KS5jbGFzc2VkKCJzcGlrZWxpbmUiLCEwKS5jbGFzc2VkKCJjcmlzcCIsITApfS0xIT09dy5pbmRleE9mKCJtYXJrZXIiKSYmby5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoe2N4Ok0rKCJyaWdodCIhPT1hLnNpZGU/azotayksY3k6bSxyOmssZmlsbDpUfSkuY2xhc3NlZCgic3Bpa2VsaW5lIiwhMCl9aWYoZCl7dmFyIEUsTCxDPWUudkxpbmVQb2ludDtuPUMmJkMueGEsYT1DJiZDLnlhLCJjdXJzb3IiPT09bi5zcGlrZXNuYXA/KEU9Yy5wb2ludGVyWCxMPWMucG9pbnRlclkpOihFPW4uX29mZnNldCtDLngsTD1hLl9vZmZzZXQrQy55KTt2YXIgUCxPLHo9aS5yZWFkYWJpbGl0eShDLmNvbG9yLGcpPDEuNT9oLmNvbnRyYXN0KGcpOkMuY29sb3IsST1uLnNwaWtlbW9kZSxEPW4uc3Bpa2V0aGlja25lc3MsUj1uLnNwaWtlY29sb3J8fHosRj1wLmdldFB4UG9zaXRpb24odCxuKTtpZigtMSE9PUkuaW5kZXhPZigidG9heGlzIil8fC0xIT09SS5pbmRleE9mKCJhY3Jvc3MiKSl7aWYoLTEhPT1JLmluZGV4T2YoInRvYXhpcyIpJiYoUD1GLE89TCksLTEhPT1JLmluZGV4T2YoImFjcm9zcyIpKXt2YXIgQj1uLl9jb3VudGVyRG9tYWluTWluLE49bi5fY291bnRlckRvbWFpbk1heDsiZnJlZSI9PT1uLmFuY2hvciYmKEI9TWF0aC5taW4oQixuLnBvc2l0aW9uKSxOPU1hdGgubWF4KE4sbi5wb3NpdGlvbikpLFA9bC50KygxLU4pKmwuaCxPPWwudCsoMS1CKSpsLmh9by5pbnNlcnQoImxpbmUiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKHt4MTpFLHgyOkUseTE6UCx5MjpPLCJzdHJva2Utd2lkdGgiOkQsc3Ryb2tlOlIsInN0cm9rZS1kYXNoYXJyYXkiOnUuZGFzaFN0eWxlKG4uc3Bpa2VkYXNoLEQpfSkuY2xhc3NlZCgic3Bpa2VsaW5lIiwhMCkuY2xhc3NlZCgiY3Jpc3AiLCEwKSxvLmluc2VydCgibGluZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoe3gxOkUseDI6RSx5MTpQLHkyOk8sInN0cm9rZS13aWR0aCI6RCsyLHN0cm9rZTpnfSkuY2xhc3NlZCgic3Bpa2VsaW5lIiwhMCkuY2xhc3NlZCgiY3Jpc3AiLCEwKX0tMSE9PUkuaW5kZXhPZigibWFya2VyIikmJm8uaW5zZXJ0KCJjaXJjbGUiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKHtjeDpFLGN5OkYtKCJ0b3AiIT09bi5zaWRlP0Q6LUQpLHI6RCxmaWxsOlJ9KS5jbGFzc2VkKCJzcGlrZWxpbmUiLCEwKX19fWZ1bmN0aW9uIEwodCxlKXtyZXR1cm4hZXx8KGUudkxpbmVQb2ludCE9PXQuX3NwaWtlcG9pbnRzLnZMaW5lUG9pbnR8fGUuaExpbmVQb2ludCE9PXQuX3NwaWtlcG9pbnRzLmhMaW5lUG9pbnQpfWZ1bmN0aW9uIEModCxlKXtyZXR1cm4gbC5wbGFpblRleHQodHx8IiIse2xlbjplLGFsbG93ZWRUYWdzOlsiYnIiLCJzdWIiLCJzdXAiLCJiIiwiaSIsImVtIl19KX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9ldmVudHMiOjcwNywiLi4vLi4vbGliL292ZXJyaWRlX2N1cnNvciI6NzI4LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY29sb3IiOjU5MiwiLi4vZHJhZ2VsZW1lbnQiOjYxMCwiLi4vZHJhd2luZyI6NjEzLCIuL2NvbnN0YW50cyI6NjI1LCIuL2hlbHBlcnMiOjYyNyxkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjgsdGlueWNvbG9yMjo1MzZ9XSw2Mjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3IoImhvdmVybGFiZWwuYmdjb2xvciIsKGE9YXx8e30pLmJnY29sb3IpLHIoImhvdmVybGFiZWwuYm9yZGVyY29sb3IiLGEuYm9yZGVyY29sb3IpLHIoImhvdmVybGFiZWwubmFtZWxlbmd0aCIsYS5uYW1lbGVuZ3RoKSxuLmNvZXJjZUZvbnQociwiaG92ZXJsYWJlbC5mb250IixhLmZvbnQpLHIoImhvdmVybGFiZWwuYWxpZ24iLGEuYWxpZ24pfX0seyIuLi8uLi9saWIiOjcxN31dLDYzMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi9kcmFnZWxlbWVudCIpLG89dCgiLi9oZWxwZXJzIikscz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksbD10KCIuL2hvdmVyIik7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImZ4Iixjb25zdGFudHM6dCgiLi9jb25zdGFudHMiKSxzY2hlbWE6e2xheW91dDpzfSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0ZXM6cyxzdXBwbHlMYXlvdXRHbG9iYWxEZWZhdWx0czp0KCIuL2xheW91dF9nbG9iYWxfZGVmYXVsdHMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLGdldERpc3RhbmNlRnVuY3Rpb246by5nZXREaXN0YW5jZUZ1bmN0aW9uLGdldENsb3Nlc3Q6by5nZXRDbG9zZXN0LGluYm94Om8uaW5ib3gscXVhZHJhdHVyZTpvLnF1YWRyYXR1cmUsYXBwZW5kQXJyYXlQb2ludFZhbHVlOm8uYXBwZW5kQXJyYXlQb2ludFZhbHVlLGNhc3RIb3Zlck9wdGlvbjpmdW5jdGlvbih0LGUscil7cmV0dXJuIGEuY2FzdE9wdGlvbih0LGUsImhvdmVybGFiZWwuIityKX0sY2FzdEhvdmVyaW5mbzpmdW5jdGlvbih0LGUscil7cmV0dXJuIGEuY2FzdE9wdGlvbih0LHIsImhvdmVyaW5mbyIsZnVuY3Rpb24ocil7cmV0dXJuIGEuY29lcmNlSG92ZXJpbmZvKHtob3ZlcmluZm86cn0se19tb2R1bGU6dC5fbW9kdWxlfSxlKX0pfSxob3ZlcjpsLmhvdmVyLHVuaG92ZXI6aS51bmhvdmVyLGxvbmVIb3ZlcjpsLmxvbmVIb3Zlcixsb25lVW5ob3ZlcjpmdW5jdGlvbih0KXt2YXIgZT1hLmlzRDNTZWxlY3Rpb24odCk/dDpuLnNlbGVjdCh0KTtlLnNlbGVjdEFsbCgiZy5ob3ZlcnRleHQiKS5yZW1vdmUoKSxlLnNlbGVjdEFsbCgiLnNwaWtlbGluZSIpLnJlbW92ZSgpfSxjbGljazp0KCIuL2NsaWNrIil9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9kcmFnZWxlbWVudCI6NjEwLCIuL2F0dHJpYnV0ZXMiOjYyMiwiLi9jYWxjIjo2MjMsIi4vY2xpY2siOjYyNCwiLi9jb25zdGFudHMiOjYyNSwiLi9kZWZhdWx0cyI6NjI2LCIuL2hlbHBlcnMiOjYyNywiLi9ob3ZlciI6NjI4LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo2MzEsIi4vbGF5b3V0X2RlZmF1bHRzIjo2MzIsIi4vbGF5b3V0X2dsb2JhbF9kZWZhdWx0cyI6NjMzLGQzOjE2NX1dLDYzMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpLGE9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIikoe2VkaXRUeXBlOiJub25lIn0pO2EuZmFtaWx5LmRmbHQ9bi5IT1ZFUkZPTlQsYS5zaXplLmRmbHQ9bi5IT1ZFUkZPTlRTSVpFLGUuZXhwb3J0cz17Y2xpY2ttb2RlOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJldmVudCIsInNlbGVjdCJdLGRmbHQ6ImV2ZW50IixlZGl0VHlwZToicGxvdCIsZXh0cmFzOlsibm9uZSJdfSxkcmFnbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiem9vbSIsInBhbiIsInNlbGVjdCIsImxhc3NvIiwib3JiaXQiLCJ0dXJudGFibGUiLCExXSxkZmx0OiJ6b29tIixlZGl0VHlwZToibW9kZWJhciJ9LGhvdmVybW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsieCIsInkiLCJjbG9zZXN0IiwhMV0sZWRpdFR5cGU6Im1vZGViYXIifSxob3ZlcmRpc3RhbmNlOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46LTEsZGZsdDoyMCxlZGl0VHlwZToibm9uZSJ9LHNwaWtlZGlzdGFuY2U6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjotMSxkZmx0OjIwLGVkaXRUeXBlOiJub25lIn0saG92ZXJsYWJlbDp7Ymdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJub25lIn0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToibm9uZSJ9LGZvbnQ6YSxhbGlnbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGVmdCIsInJpZ2h0IiwiYXV0byJdLGRmbHQ6ImF1dG8iLGVkaXRUeXBlOiJub25lIn0sbmFtZWxlbmd0aDp7dmFsVHlwZToiaW50ZWdlciIsbWluOi0xLGRmbHQ6MTUsZWRpdFR5cGU6Im5vbmUifSxlZGl0VHlwZToibm9uZSJ9LHNlbGVjdGRpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaCIsInYiLCJkIiwiYW55Il0sZGZsdDoiYW55IixlZGl0VHlwZToibm9uZSJ9fX0seyIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi9jb25zdGFudHMiOjYyNX1dLDYzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIGkocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgbyxzPWkoImNsaWNrbW9kZSIpOyJzZWxlY3QiPT09aSgiZHJhZ21vZGUiKSYmaSgic2VsZWN0ZGlyZWN0aW9uIiksZS5faGFzKCJjYXJ0ZXNpYW4iKT9zLmluZGV4T2YoInNlbGVjdCIpPi0xP289ImNsb3Nlc3QiOihlLl9pc0hvcml6PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUuX3NjYXR0ZXJTdGFja09wdHN8fHt9LG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGE9dFtuXSxpPWEueGF4aXMrYS55YXhpcyxvPXJbaV18fHt9LHM9b1thLnN0YWNrZ3JvdXBdfHx7fTtpZigiaCIhPT1hLm9yaWVudGF0aW9uJiYiaCIhPT1zLm9yaWVudGF0aW9uKXJldHVybiExfXJldHVybiEwfShyLGUpLG89ZS5faXNIb3Jpej8ieSI6IngiKTpvPSJjbG9zZXN0IixpKCJob3Zlcm1vZGUiLG8pJiYoaSgiaG92ZXJkaXN0YW5jZSIpLGkoInNwaWtlZGlzdGFuY2UiKSk7dmFyIGw9ZS5faGFzKCJtYXBib3giKSxjPWUuX2hhcygiZ2VvIiksdT1lLl9iYXNlUGxvdE1vZHVsZXMubGVuZ3RoOyJ6b29tIj09PWUuZHJhZ21vZGUmJigobHx8YykmJjE9PT11fHxsJiZjJiYyPT09dSkmJihlLmRyYWdtb2RlPSJwYW4iKX19LHsiLi4vLi4vbGliIjo3MTcsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjYzMX1dLDYzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vaG92ZXJsYWJlbF9kZWZhdWx0cyIpLGk9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2EodCxlLGZ1bmN0aW9uKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9KX19LHsiLi4vLi4vbGliIjo3MTcsIi4vaG92ZXJsYWJlbF9kZWZhdWx0cyI6NjI5LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo2MzF9XSw2MzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9saWIvcmVnZXgiKS5jb3VudGVyLGk9dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmlidXRlcyxvPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiKS5pZFJlZ2V4LHM9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLGw9e3Jvd3M6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjoxLGVkaXRUeXBlOiJwbG90In0scm93b3JkZXI6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCB0byBib3R0b20iLCJib3R0b20gdG8gdG9wIl0sZGZsdDoidG9wIHRvIGJvdHRvbSIsZWRpdFR5cGU6InBsb3QifSxjb2x1bW5zOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MSxlZGl0VHlwZToicGxvdCJ9LHN1YnBsb3RzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGRpbWVuc2lvbnM6MixpdGVtczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlthKCJ4eSIpLnRvU3RyaW5nKCksIiJdLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSx4YXhlczp7dmFsVHlwZToiaW5mb19hcnJheSIsZnJlZUxlbmd0aDohMCxpdGVtczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOltvLngudG9TdHJpbmcoKSwiIl0sZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LHlheGVzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGl0ZW1zOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6W28ueS50b1N0cmluZygpLCIiXSxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0scGF0dGVybjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5kZXBlbmRlbnQiLCJjb3VwbGVkIl0sZGZsdDoiY291cGxlZCIsZWRpdFR5cGU6InBsb3QifSx4Z2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGVkaXRUeXBlOiJwbG90In0seWdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToicGxvdCJ9LGRvbWFpbjppKHtuYW1lOiJncmlkIixlZGl0VHlwZToicGxvdCIsbm9HcmlkQ2VsbDohMH0se30pLHhzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJib3R0b20iLCJib3R0b20gcGxvdCIsInRvcCBwbG90IiwidG9wIl0sZGZsdDoiYm90dG9tIHBsb3QiLGVkaXRUeXBlOiJwbG90In0seXNpZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxlZnQiLCJsZWZ0IHBsb3QiLCJyaWdodCBwbG90IiwicmlnaHQiXSxkZmx0OiJsZWZ0IHBsb3QiLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifTtmdW5jdGlvbiBjKHQsZSxyKXt2YXIgbj1lW3IrImF4ZXMiXSxhPU9iamVjdC5rZXlzKCh0Ll9zcGxvbUF4ZXN8fHt9KVtyXXx8e30pO3JldHVybiBBcnJheS5pc0FycmF5KG4pP246YS5sZW5ndGg/YTp2b2lkIDB9ZnVuY3Rpb24gdSh0LGUscixuLGEsaSl7dmFyIG89ZSh0KyJnYXAiLHIpLHM9ZSgiZG9tYWluLiIrdCk7ZSh0KyJzaWRlIixuKTtmb3IodmFyIGw9bmV3IEFycmF5KGEpLGM9c1swXSx1PShzWzFdLWMpLyhhLW8pLGg9dSooMS1vKSxmPTA7ZjxhO2YrKyl7dmFyIHA9Yyt1KmY7bFtpP2EtMS1mOmZdPVtwLHAraF19cmV0dXJuIGx9ZnVuY3Rpb24gaCh0LGUscixuLGEpe3ZhciBpLG89bmV3IEFycmF5KHIpO2Z1bmN0aW9uIHModCxyKXstMSE9PWUuaW5kZXhPZihyKSYmdm9pZCAwPT09bltyXT8ob1t0XT1yLG5bcl09dCk6b1t0XT0iIn1pZihBcnJheS5pc0FycmF5KHQpKWZvcihpPTA7aTxyO2krKylzKGksdFtpXSk7ZWxzZSBmb3IocygwLGEpLGk9MTtpPHI7aSsrKXMoaSxhKyhpKzEpKTtyZXR1cm4gb31lLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToiZ3JpZCIsc2NoZW1hOntsYXlvdXQ6e2dyaWQ6bH19LGxheW91dEF0dHJpYnV0ZXM6bCxzaXplRGVmYXVsdHM6ZnVuY3Rpb24odCxlKXt2YXIgcj10LmdyaWR8fHt9LGE9YyhlLHIsIngiKSxpPWMoZSxyLCJ5Iik7aWYodC5ncmlkfHxhfHxpKXt2YXIgbyxoLGY9QXJyYXkuaXNBcnJheShyLnN1YnBsb3RzKSYmQXJyYXkuaXNBcnJheShyLnN1YnBsb3RzWzBdKSxwPUFycmF5LmlzQXJyYXkoYSksZD1BcnJheS5pc0FycmF5KGkpLGc9cCYmYSE9PXIueGF4ZXMmJmQmJmkhPT1yLnlheGVzO2Y/KG89ci5zdWJwbG90cy5sZW5ndGgsaD1yLnN1YnBsb3RzWzBdLmxlbmd0aCk6KGQmJihvPWkubGVuZ3RoKSxwJiYoaD1hLmxlbmd0aCkpO3ZhciB2PXMubmV3Q29udGFpbmVyKGUsImdyaWQiKSxtPVQoInJvd3MiLG8pLHk9VCgiY29sdW1ucyIsaCk7aWYobSp5PjEpe2Z8fHB8fGR8fCJpbmRlcGVuZGVudCI9PT1UKCJwYXR0ZXJuIikmJihmPSEwKSx2Ll9oYXNTdWJwbG90R3JpZD1mO3ZhciB4LGIsXz0idG9wIHRvIGJvdHRvbSI9PT1UKCJyb3dvcmRlciIpLHc9Zj8uMjouMSxrPWY/LjM6LjE7ZyYmZS5fc3Bsb21HcmlkRGZsdCYmKHg9ZS5fc3Bsb21HcmlkRGZsdC54c2lkZSxiPWUuX3NwbG9tR3JpZERmbHQueXNpZGUpLHYuX2RvbWFpbnM9e3g6dSgieCIsVCx3LHgseSkseTp1KCJ5IixULGssYixtLF8pfX1lbHNlIGRlbGV0ZSBlLmdyaWR9ZnVuY3Rpb24gVCh0LGUpe3JldHVybiBuLmNvZXJjZShyLHYsbCx0LGUpfX0sY29udGVudERlZmF1bHRzOmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5ncmlkO2lmKHImJnIuX2RvbWFpbnMpe3ZhciBuLGEsaSxvLHMsbCx1LGY9dC5ncmlkfHx7fSxwPWUuX3N1YnBsb3RzLGQ9ci5faGFzU3VicGxvdEdyaWQsZz1yLnJvd3Msdj1yLmNvbHVtbnMsbT0iaW5kZXBlbmRlbnQiPT09ci5wYXR0ZXJuLHk9ci5fYXhpc01hcD17fTtpZihkKXt2YXIgeD1mLnN1YnBsb3RzfHxbXTtsPXIuc3VicGxvdHM9bmV3IEFycmF5KGcpO3ZhciBiPTE7Zm9yKG49MDtuPGc7bisrKXt2YXIgXz1sW25dPW5ldyBBcnJheSh2KSx3PXhbbl18fFtdO2ZvcihhPTA7YTx2O2ErKylpZihtPyhzPTE9PT1iPyJ4eSI6IngiK2IrInkiK2IsYisrKTpzPXdbYV0sX1thXT0iIiwtMSE9PXAuY2FydGVzaWFuLmluZGV4T2Yocykpe2lmKHU9cy5pbmRleE9mKCJ5IiksaT1zLnNsaWNlKDAsdSksbz1zLnNsaWNlKHUpLHZvaWQgMCE9PXlbaV0mJnlbaV0hPT1hfHx2b2lkIDAhPT15W29dJiZ5W29dIT09biljb250aW51ZTtfW2FdPXMseVtpXT1hLHlbb109bn19fWVsc2V7dmFyIGs9YyhlLGYsIngiKSxUPWMoZSxmLCJ5Iik7ci54YXhlcz1oKGsscC54YXhpcyx2LHksIngiKSxyLnlheGVzPWgoVCxwLnlheGlzLGcseSwieSIpfXZhciBNPXIuX2FuY2hvcnM9e30sQT0idG9wIHRvIGJvdHRvbSI9PT1yLnJvd29yZGVyO2Zvcih2YXIgUyBpbiB5KXt2YXIgRSxMLEMsUD1TLmNoYXJBdCgwKSxPPXJbUCsic2lkZSJdO2lmKE8ubGVuZ3RoPDgpTVtTXT0iZnJlZSI7ZWxzZSBpZigieCI9PT1QKXtpZigidCI9PT1PLmNoYXJBdCgwKT09PUE/KEU9MCxMPTEsQz1nKTooRT1nLTEsTD0tMSxDPS0xKSxkKXt2YXIgej15W1NdO2ZvcihuPUU7biE9PUM7bis9TClpZigocz1sW25dW3pdKSYmKHU9cy5pbmRleE9mKCJ5Iikscy5zbGljZSgwLHUpPT09Uykpe01bU109cy5zbGljZSh1KTticmVha319ZWxzZSBmb3Iobj1FO24hPT1DO24rPUwpaWYobz1yLnlheGVzW25dLC0xIT09cC5jYXJ0ZXNpYW4uaW5kZXhPZihTK28pKXtNW1NdPW87YnJlYWt9fWVsc2UgaWYoImwiPT09Ty5jaGFyQXQoMCk/KEU9MCxMPTEsQz12KTooRT12LTEsTD0tMSxDPS0xKSxkKXt2YXIgST15W1NdO2ZvcihuPUU7biE9PUM7bis9TClpZigocz1sW0ldW25dKSYmKHU9cy5pbmRleE9mKCJ5Iikscy5zbGljZSh1KT09PVMpKXtNW1NdPXMuc2xpY2UoMCx1KTticmVha319ZWxzZSBmb3Iobj1FO24hPT1DO24rPUwpaWYoaT1yLnhheGVzW25dLC0xIT09cC5jYXJ0ZXNpYW4uaW5kZXhPZihpK1MpKXtNW1NdPWk7YnJlYWt9fX19fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3JlZ2V4Ijo3MzMsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyI6NzcxLCIuLi8uLi9wbG90cy9kb21haW4iOjc5MH1dLDYzNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIiksYT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXk7ZS5leHBvcnRzPWEoImltYWdlIix7dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiYXJyYXlkcmF3In0sc291cmNlOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJhcnJheWRyYXcifSxsYXllcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYmVsb3ciLCJhYm92ZSJdLGRmbHQ6ImFib3ZlIixlZGl0VHlwZToiYXJyYXlkcmF3In0sc2l6ZXg6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOiJhcnJheWRyYXcifSxzaXpleTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHNpemluZzp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZmlsbCIsImNvbnRhaW4iLCJzdHJldGNoIl0sZGZsdDoiY29udGFpbiIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxLGVkaXRUeXBlOiJhcnJheWRyYXcifSx4Ont2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiYXJyYXlkcmF3In0seTp7dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHhhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6ImxlZnQiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJ0b3AiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx4cmVmOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwYXBlciIsbi5pZFJlZ2V4LngudG9TdHJpbmcoKV0sZGZsdDoicGFwZXIiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx5cmVmOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwYXBlciIsbi5pZFJlZ2V4LnkudG9TdHJpbmcoKV0sZGZsdDoicGFwZXIiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxlZGl0VHlwZToiYXJyYXlkcmF3In0pfSx7Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyI6NzcxfV0sNjM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9saWIvdG9fbG9nX3JhbmdlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe2U9ZXx8e307dmFyIG89ImxvZyI9PT1yJiYibGluZWFyIj09PWUudHlwZSxzPSJsaW5lYXIiPT09ciYmImxvZyI9PT1lLnR5cGU7aWYob3x8cylmb3IodmFyIGwsYyx1PXQuX2Z1bGxMYXlvdXQuaW1hZ2VzLGg9ZS5faWQuY2hhckF0KDApLGY9MDtmPHUubGVuZ3RoO2YrKylpZihjPSJpbWFnZXNbIitmKyJdLiIsKGw9dVtmXSlbaCsicmVmIl09PT1lLl9pZCl7dmFyIHA9bFtoXSxkPWxbInNpemUiK2hdLGc9bnVsbCx2PW51bGw7aWYobyl7Zz1hKHAsZS5yYW5nZSk7dmFyIG09ZC9NYXRoLnBvdygxMCxnKS8yO3Y9MipNYXRoLmxvZyhtK01hdGguc3FydCgxK20qbSkpL01hdGguTE4xMH1lbHNlIHY9KGc9TWF0aC5wb3coMTAscCkpKihNYXRoLnBvdygxMCxkLzIpLU1hdGgucG93KDEwLC1kLzIpKTtuKGcpP24odil8fCh2PW51bGwpOihnPW51bGwsdj1udWxsKSxpKGMraCxnKSxpKGMrInNpemUiK2gsdil9fX0seyIuLi8uLi9saWIvdG9fbG9nX3JhbmdlIjo3NDMsImZhc3QtaXNudW1lcmljIjoyMjh9XSw2Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbz10KCIuL2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBzKHQsZSxyKXtmdW5jdGlvbiBpKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsYSl9dmFyIHM9aSgic291cmNlIik7aWYoIWkoInZpc2libGUiLCEhcykpcmV0dXJuIGU7aSgibGF5ZXIiKSxpKCJ4YW5jaG9yIiksaSgieWFuY2hvciIpLGkoInNpemV4IiksaSgic2l6ZXkiKSxpKCJzaXppbmciKSxpKCJvcGFjaXR5Iik7Zm9yKHZhciBsPXtfZnVsbExheW91dDpyfSxjPVsieCIsInkiXSx1PTA7dTwyO3UrKyl7dmFyIGg9Y1t1XSxmPWEuY29lcmNlUmVmKHQsZSxsLGgsInBhcGVyIik7aWYoInBhcGVyIiE9PWYpYS5nZXRGcm9tSWQobCxmKS5faW1nSW5kaWNlcy5wdXNoKGUuX2luZGV4KTthLmNvZXJjZVBvc2l0aW9uKGUsbCxpLGYsaCwwKX1yZXR1cm4gZX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpKHQsZSx7bmFtZToiaW1hZ2VzIixoYW5kbGVJdGVtRGVmYXVsdHM6c30pfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vYXR0cmlidXRlcyI6NjM1fV0sNjM4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi9kcmF3aW5nIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixzPXQuX2Z1bGxMYXlvdXQsbD1bXSxjPXt9LHU9W107Zm9yKHI9MDtyPHMuaW1hZ2VzLmxlbmd0aDtyKyspe3ZhciBoPXMuaW1hZ2VzW3JdO2lmKGgudmlzaWJsZSlpZigiYmVsb3ciPT09aC5sYXllciYmInBhcGVyIiE9PWgueHJlZiYmInBhcGVyIiE9PWgueXJlZil7ZT1oLnhyZWYraC55cmVmO3ZhciBmPXMuX3Bsb3RzW2VdO2lmKCFmKXt1LnB1c2goaCk7Y29udGludWV9Zi5tYWlucGxvdCYmKGU9Zi5tYWlucGxvdC5pZCksY1tlXXx8KGNbZV09W10pLGNbZV0ucHVzaChoKX1lbHNlImFib3ZlIj09PWgubGF5ZXI/bC5wdXNoKGgpOnUucHVzaChoKX12YXIgcD17eDp7bGVmdDp7c2l6aW5nOiJ4TWluIixvZmZzZXQ6MH0sY2VudGVyOntzaXppbmc6InhNaWQiLG9mZnNldDotLjV9LHJpZ2h0OntzaXppbmc6InhNYXgiLG9mZnNldDotMX19LHk6e3RvcDp7c2l6aW5nOiJZTWluIixvZmZzZXQ6MH0sbWlkZGxlOntzaXppbmc6IllNaWQiLG9mZnNldDotLjV9LGJvdHRvbTp7c2l6aW5nOiJZTWF4IixvZmZzZXQ6LTF9fX07ZnVuY3Rpb24gZChlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKTtpZih0aGlzLl9pbWdTcmMhPT1lLnNvdXJjZSlpZihyLmF0dHIoInhtbG5zIixvLnN2ZyksZS5zb3VyY2UmJiJkYXRhOiI9PT1lLnNvdXJjZS5zbGljZSgwLDUpKXIuYXR0cigieGxpbms6aHJlZiIsZS5zb3VyY2UpLHRoaXMuX2ltZ1NyYz1lLnNvdXJjZTtlbHNle3ZhciBhPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBJbWFnZTtmdW5jdGlvbiBhKCl7ci5yZW1vdmUoKSx0KCl9dGhpcy5pbWc9bixuLnNldEF0dHJpYnV0ZSgiY3Jvc3NPcmlnaW4iLCJhbm9ueW1vdXMiKSxuLm9uZXJyb3I9YSxuLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Uud2lkdGg9dGhpcy53aWR0aCxlLmhlaWdodD10aGlzLmhlaWdodCxlLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKHRoaXMsMCwwKTt2YXIgbj1lLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7ci5hdHRyKCJ4bGluazpocmVmIixuKSx0KCl9LHIub24oImVycm9yIixhKSxuLnNyYz1lLnNvdXJjZSx0aGlzLl9pbWdTcmM9ZS5zb3VyY2V9LmJpbmQodGhpcykpO3QuX3Byb21pc2VzLnB1c2goYSl9fWZ1bmN0aW9uIGcoZSl7dmFyIHI9bi5zZWxlY3QodGhpcyksbz1pLmdldEZyb21JZCh0LGUueHJlZiksbD1pLmdldEZyb21JZCh0LGUueXJlZiksYz1zLl9zaXplLHU9bz9NYXRoLmFicyhvLmwycChlLnNpemV4KS1vLmwycCgwKSk6ZS5zaXpleCpjLncsaD1sP01hdGguYWJzKGwubDJwKGUuc2l6ZXkpLWwubDJwKDApKTplLnNpemV5KmMuaCxmPXUqcC54W2UueGFuY2hvcl0ub2Zmc2V0LGQ9aCpwLnlbZS55YW5jaG9yXS5vZmZzZXQsZz1wLnhbZS54YW5jaG9yXS5zaXppbmcrcC55W2UueWFuY2hvcl0uc2l6aW5nLHY9KG8/by5yMnAoZS54KStvLl9vZmZzZXQ6ZS54KmMudytjLmwpK2YsbT0obD9sLnIycChlLnkpK2wuX29mZnNldDpjLmgtZS55KmMuaCtjLnQpK2Q7c3dpdGNoKGUuc2l6aW5nKXtjYXNlImZpbGwiOmcrPSIgc2xpY2UiO2JyZWFrO2Nhc2Uic3RyZXRjaCI6Zz0ibm9uZSJ9ci5hdHRyKHt4OnYseTptLHdpZHRoOnUsaGVpZ2h0OmgscHJlc2VydmVBc3BlY3RSYXRpbzpnLG9wYWNpdHk6ZS5vcGFjaXR5fSk7dmFyIHk9KG8/by5faWQ6IiIpKyhsP2wuX2lkOiIiKTthLnNldENsaXBVcmwocix5PyJjbGlwIitzLl91aWQreTpudWxsLHQpfXZhciB2PXMuX2ltYWdlTG93ZXJMYXllci5zZWxlY3RBbGwoImltYWdlIikuZGF0YSh1KSxtPXMuX2ltYWdlVXBwZXJMYXllci5zZWxlY3RBbGwoImltYWdlIikuZGF0YShsKTt2LmVudGVyKCkuYXBwZW5kKCJpbWFnZSIpLG0uZW50ZXIoKS5hcHBlbmQoImltYWdlIiksdi5leGl0KCkucmVtb3ZlKCksbS5leGl0KCkucmVtb3ZlKCksdi5lYWNoKGZ1bmN0aW9uKHQpe2QuYmluZCh0aGlzKSh0KSxnLmJpbmQodGhpcykodCl9KSxtLmVhY2goZnVuY3Rpb24odCl7ZC5iaW5kKHRoaXMpKHQpLGcuYmluZCh0aGlzKSh0KX0pO3ZhciB5PU9iamVjdC5rZXlzKHMuX3Bsb3RzKTtmb3Iocj0wO3I8eS5sZW5ndGg7cisrKXtlPXlbcl07dmFyIHg9cy5fcGxvdHNbZV07aWYoeC5pbWFnZWxheWVyKXt2YXIgYj14LmltYWdlbGF5ZXIuc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEoY1tlXXx8W10pO2IuZW50ZXIoKS5hcHBlbmQoImltYWdlIiksYi5leGl0KCkucmVtb3ZlKCksYi5lYWNoKGZ1bmN0aW9uKHQpe2QuYmluZCh0aGlzKSh0KSxnLmJpbmQodGhpcykodCl9KX19fX0seyIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6Njk0LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9kcmF3aW5nIjo2MTMsZDM6MTY1fV0sNjM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJpbWFnZXMiLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGluY2x1ZGVCYXNlUGxvdDp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaW5jbHVkZV9jb21wb25lbnRzIikoImltYWdlcyIpLGRyYXc6dCgiLi9kcmF3IiksY29udmVydENvb3Jkczp0KCIuL2NvbnZlcnRfY29vcmRzIil9fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9pbmNsdWRlX2NvbXBvbmVudHMiOjc3NSwiLi9hdHRyaWJ1dGVzIjo2MzUsIi4vY29udmVydF9jb29yZHMiOjYzNiwiLi9kZWZhdWx0cyI6NjM3LCIuL2RyYXciOjYzOH1dLDY0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxhPXQoIi4uL2NvbG9yL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToibGVnZW5kIn0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRpdFR5cGU6ImxlZ2VuZCJ9LGJvcmRlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToibGVnZW5kIn0sZm9udDpuKHtlZGl0VHlwZToibGVnZW5kIn0pLG9yaWVudGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ2IiwiaCJdLGRmbHQ6InYiLGVkaXRUeXBlOiJsZWdlbmQifSx0cmFjZW9yZGVyOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJyZXZlcnNlZCIsImdyb3VwZWQiXSxleHRyYXM6WyJub3JtYWwiXSxlZGl0VHlwZToibGVnZW5kIn0sdHJhY2Vncm91cGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwLGVkaXRUeXBlOiJsZWdlbmQifSxpdGVtc2l6aW5nOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0cmFjZSIsImNvbnN0YW50Il0sZGZsdDoidHJhY2UiLGVkaXRUeXBlOiJsZWdlbmQifSxpdGVtY2xpY2s6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvZ2dsZSIsInRvZ2dsZW90aGVycyIsITFdLGRmbHQ6InRvZ2dsZSIsZWRpdFR5cGU6ImxlZ2VuZCJ9LGl0ZW1kb3VibGVjbGljazp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9nZ2xlIiwidG9nZ2xlb3RoZXJzIiwhMV0sZGZsdDoidG9nZ2xlb3RoZXJzIixlZGl0VHlwZToibGVnZW5kIn0seDp7dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjMsZWRpdFR5cGU6ImxlZ2VuZCJ9LHhhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJsZWZ0IixlZGl0VHlwZToibGVnZW5kIn0seTp7dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjMsZWRpdFR5cGU6ImxlZ2VuZCJ9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxlZGl0VHlwZToibGVnZW5kIn0sdWlyZXZpc2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LHZhbGlnbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9wIiwibWlkZGxlIiwiYm90dG9tIl0sZGZsdDoibWlkZGxlIixlZGl0VHlwZToibGVnZW5kIn0sdGl0bGU6e3RleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToibGVnZW5kIn0sZm9udDpuKHtlZGl0VHlwZToibGVnZW5kIn0pLHNpZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCIsImxlZnQiLCJ0b3AgbGVmdCJdLGVkaXRUeXBlOiJsZWdlbmQifSxlZGl0VHlwZToibGVnZW5kIn0sZWRpdFR5cGU6ImxlZ2VuZCJ9fSx7Ii4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuLi9jb2xvci9hdHRyaWJ1dGVzIjo1OTF9XSw2NDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtzY3JvbGxCYXJXaWR0aDo2LHNjcm9sbEJhck1pbkhlaWdodDoyMCxzY3JvbGxCYXJDb2xvcjoiIzgwOEJBNCIsc2Nyb2xsQmFyTWFyZ2luOjQsc2Nyb2xsQmFyRW50ZXJBdHRyczp7cng6MjAscnk6Myx3aWR0aDowLGhlaWdodDowfSx0aXRsZVBhZDoyLHRleHRHYXA6NDAsaXRlbUdhcDo1fX0se31dLDY0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksbz10KCIuL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL2xheW91dF9hdHRyaWJ1dGVzIiksbD10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgYz10LmxlZ2VuZHx8e30sdT0wLGg9ITEsZj0ibm9ybWFsIixwPTA7cDxyLmxlbmd0aDtwKyspe3ZhciBkPXJbcF07ZC52aXNpYmxlJiYoKGQuc2hvd2xlZ2VuZHx8ZC5fZGZsdFNob3dMZWdlbmQmJiEoZC5fbW9kdWxlJiZkLl9tb2R1bGUuYXR0cmlidXRlcyYmZC5fbW9kdWxlLmF0dHJpYnV0ZXMuc2hvd2xlZ2VuZCYmITE9PT1kLl9tb2R1bGUuYXR0cmlidXRlcy5zaG93bGVnZW5kLmRmbHQpKSYmKHUrKyxkLnNob3dsZWdlbmQmJihoPSEwLChuLnRyYWNlSXMoZCwicGllLWxpa2UiKXx8ITA9PT1kLl9pbnB1dC5zaG93bGVnZW5kKSYmdSsrKSksKG4udHJhY2VJcyhkLCJiYXIiKSYmInN0YWNrIj09PWUuYmFybW9kZXx8LTEhPT1bInRvbmV4dHgiLCJ0b25leHR5Il0uaW5kZXhPZihkLmZpbGwpKSYmKGY9bC5pc0dyb3VwZWQoe3RyYWNlb3JkZXI6Zn0pPyJncm91cGVkK3JldmVyc2VkIjoicmV2ZXJzZWQiKSx2b2lkIDAhPT1kLmxlZ2VuZGdyb3VwJiYiIiE9PWQubGVnZW5kZ3JvdXAmJihmPWwuaXNSZXZlcnNlZCh7dHJhY2VvcmRlcjpmfSk/InJldmVyc2VkK2dyb3VwZWQiOiJncm91cGVkIikpfXZhciBnPWEuY29lcmNlKHQsZSxzLCJzaG93bGVnZW5kIixoJiZ1PjEpO2lmKCExIT09Z3x8Yy51aXJldmlzaW9uKXt2YXIgdj1pLm5ld0NvbnRhaW5lcihlLCJsZWdlbmQiKTtpZihfKCJ1aXJldmlzaW9uIixlLnVpcmV2aXNpb24pLCExIT09Zyl7XygiYmdjb2xvciIsZS5wYXBlcl9iZ2NvbG9yKSxfKCJib3JkZXJjb2xvciIpLF8oImJvcmRlcndpZHRoIiksYS5jb2VyY2VGb250KF8sImZvbnQiLGUuZm9udCk7dmFyIG0seSx4LGI9Xygib3JpZW50YXRpb24iKTsiaCI9PT1iPyhtPTAsbi5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwiaXNWaXNpYmxlIikodC54YXhpcyk/KHk9MS4xLHg9ImJvdHRvbSIpOih5PS0uMSx4PSJ0b3AiKSk6KG09MS4wMix5PTEseD0iYXV0byIpLF8oInRyYWNlb3JkZXIiLGYpLGwuaXNHcm91cGVkKGUubGVnZW5kKSYmXygidHJhY2Vncm91cGdhcCIpLF8oIml0ZW1zaXppbmciKSxfKCJpdGVtY2xpY2siKSxfKCJpdGVtZG91YmxlY2xpY2siKSxfKCJ4IixtKSxfKCJ4YW5jaG9yIiksXygieSIseSksXygieWFuY2hvciIseCksXygidmFsaWduIiksYS5ub25lT3JBbGwoYyx2LFsieCIsInkiXSksXygidGl0bGUudGV4dCIpJiYoXygidGl0bGUuc2lkZSIsImgiPT09Yj8ibGVmdCI6InRvcCIpLGEuY29lcmNlRm9udChfLCJ0aXRsZS5mb250IixlLmZvbnQpKX19ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBhLmNvZXJjZShjLHYsbyx0LGUpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvbGF5b3V0X2F0dHJpYnV0ZXMiOjgxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVzIjo2NDAsIi4vaGVscGVycyI6NjQ2fV0sNjQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksbz10KCIuLi8uLi9yZWdpc3RyeSIpLHM9dCgiLi4vLi4vbGliL2V2ZW50cyIpLGw9dCgiLi4vZHJhZ2VsZW1lbnQiKSxjPXQoIi4uL2RyYXdpbmciKSx1PXQoIi4uL2NvbG9yIiksaD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxmPXQoIi4vaGFuZGxlX2NsaWNrIikscD10KCIuL2NvbnN0YW50cyIpLGQ9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLGc9ZC5MSU5FX1NQQUNJTkcsdj1kLkZST01fVEwsbT1kLkZST01fQlIseT10KCIuL2dldF9sZWdlbmRfZGF0YSIpLHg9dCgiLi9zdHlsZSIpLGI9dCgiLi9oZWxwZXJzIik7ZnVuY3Rpb24gXyh0LGUscixuLGEpe3ZhciBpPXIuZGF0YSgpWzBdWzBdLnRyYWNlLGw9e2V2ZW50OmEsbm9kZTpyLm5vZGUoKSxjdXJ2ZU51bWJlcjppLmluZGV4LGV4cGFuZGVkSW5kZXg6aS5fZXhwYW5kZWRJbmRleCxkYXRhOnQuZGF0YSxsYXlvdXQ6dC5sYXlvdXQsZnJhbWVzOnQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZXMsY29uZmlnOnQuX2NvbnRleHQsZnVsbERhdGE6dC5fZnVsbERhdGEsZnVsbExheW91dDp0Ll9mdWxsTGF5b3V0fTtpZihpLl9ncm91cCYmKGwuZ3JvdXA9aS5fZ3JvdXApLG8udHJhY2VJcyhpLCJwaWUtbGlrZSIpJiYobC5sYWJlbD1yLmRhdHVtKClbMF0ubGFiZWwpLCExIT09cy50cmlnZ2VySGFuZGxlcih0LCJwbG90bHlfbGVnZW5kY2xpY2siLGwpKWlmKDE9PT1uKWUuX2NsaWNrVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZihyLHQsbil9LHQuX2NvbnRleHQuZG91YmxlQ2xpY2tEZWxheSk7ZWxzZSBpZigyPT09bil7ZS5fY2xpY2tUaW1lb3V0JiZjbGVhclRpbWVvdXQoZS5fY2xpY2tUaW1lb3V0KSx0Ll9sZWdlbmRNb3VzZURvd25UaW1lPTAsITEhPT1zLnRyaWdnZXJIYW5kbGVyKHQsInBsb3RseV9sZWdlbmRkb3VibGVjbGljayIsbCkmJmYocix0LG4pfX1mdW5jdGlvbiB3KHQsZSl7dmFyIHI9dC5kYXRhKClbMF1bMF0sbj1lLl9mdWxsTGF5b3V0LmxlZ2VuZCxpPXIudHJhY2Uscz1vLnRyYWNlSXMoaSwicGllLWxpa2UiKSxsPWkuaW5kZXgsdT1lLl9jb250ZXh0LmVkaXRzLmxlZ2VuZFRleHQmJiFzLGY9bi5fbWF4TmFtZUxlbmd0aCxkPXM/ci5sYWJlbDppLm5hbWU7aS5fbWV0YSYmKGQ9YS50ZW1wbGF0ZVN0cmluZyhkLGkuX21ldGEpKTt2YXIgZz1hLmVuc3VyZVNpbmdsZSh0LCJ0ZXh0IiwibGVnZW5kdGV4dCIpO2cuYXR0cigidGV4dC1hbmNob3IiLCJzdGFydCIpLmNsYXNzZWQoInVzZXItc2VsZWN0LW5vbmUiLCEwKS5jYWxsKGMuZm9udCxuLmZvbnQpLnRleHQodT9rKGQsZik6ZCksaC5wb3NpdGlvblRleHQoZyxwLnRleHRHYXAsMCksdT9nLmNhbGwoaC5tYWtlRWRpdGFibGUse2dkOmUsdGV4dDpkfSkuY2FsbChNLHQsZSkub24oImVkaXQiLGZ1bmN0aW9uKG4pe3RoaXMudGV4dChrKG4sZikpLmNhbGwoTSx0LGUpO3ZhciBpPXIudHJhY2UuX2Z1bGxJbnB1dHx8e30scz17fTtpZihvLmhhc1RyYW5zZm9ybShpLCJncm91cGJ5Iikpe3ZhciBjPW8uZ2V0VHJhbnNmb3JtSW5kaWNlcyhpLCJncm91cGJ5IiksdT1jW2MubGVuZ3RoLTFdLGg9YS5rZXllZENvbnRhaW5lcihpLCJ0cmFuc2Zvcm1zWyIrdSsiXS5zdHlsZXMiLCJ0YXJnZXQiLCJ2YWx1ZS5uYW1lIik7aC5zZXQoci50cmFjZS5fZ3JvdXAsbikscz1oLmNvbnN0cnVjdFVwZGF0ZSgpfWVsc2Ugcy5uYW1lPW47cmV0dXJuIG8uY2FsbCgiX2d1aVJlc3R5bGUiLGUscyxsKX0pOk0oZyx0LGUpfWZ1bmN0aW9uIGsodCxlKXt2YXIgcj1NYXRoLm1heCg0LGUpO2lmKHQmJnQudHJpbSgpLmxlbmd0aD49ci8yKXJldHVybiB0O2Zvcih2YXIgbj1yLSh0PXR8fCIiKS5sZW5ndGg7bj4wO24tLSl0Kz0iICI7cmV0dXJuIHR9ZnVuY3Rpb24gVCh0LGUpe3ZhciByLGk9ZS5fY29udGV4dC5kb3VibGVDbGlja0RlbGF5LG89MSxzPWEuZW5zdXJlU2luZ2xlKHQsInJlY3QiLCJsZWdlbmR0b2dnbGUiLGZ1bmN0aW9uKHQpe3Quc3R5bGUoImN1cnNvciIsInBvaW50ZXIiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmNhbGwodS5maWxsLCJyZ2JhKDAsMCwwLDApIil9KTtzLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7KHI9KG5ldyBEYXRlKS5nZXRUaW1lKCkpLWUuX2xlZ2VuZE1vdXNlRG93blRpbWU8aT9vKz0xOihvPTEsZS5fbGVnZW5kTW91c2VEb3duVGltZT1yKX0pLHMub24oIm1vdXNldXAiLGZ1bmN0aW9uKCl7aWYoIWUuX2RyYWdnZWQmJiFlLl9lZGl0aW5nKXt2YXIgcj1lLl9mdWxsTGF5b3V0LmxlZ2VuZDsobmV3IERhdGUpLmdldFRpbWUoKS1lLl9sZWdlbmRNb3VzZURvd25UaW1lPmkmJihvPU1hdGgubWF4KG8tMSwxKSksXyhlLHIsdCxvLG4uZXZlbnQpfX0pfWZ1bmN0aW9uIE0odCxlLHIpe2guY29udmVydFRvVHNwYW5zKHQscixmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe3ZhciByPXQuZGF0YSgpWzBdWzBdO2lmKHImJiFyLnRyYWNlLnNob3dsZWdlbmQpcmV0dXJuIHZvaWQgdC5yZW1vdmUoKTt2YXIgbixhLGk9dC5zZWxlY3QoImdbY2xhc3MqPW1hdGgtZ3JvdXBdIiksbz1pLm5vZGUoKSxzPWUuX2Z1bGxMYXlvdXQubGVnZW5kLmJvcmRlcndpZHRoLGw9ZS5fZnVsbExheW91dC5sZWdlbmQsdT0ocj9sOmwudGl0bGUpLmZvbnQuc2l6ZSpnO2lmKG8pe3ZhciBmPWMuYkJveChvKTtuPWYuaGVpZ2h0LGE9Zi53aWR0aCxyP2Muc2V0VHJhbnNsYXRlKGksMCwuMjUqbik6Yy5zZXRUcmFuc2xhdGUoaSxzLC43NSpuK3MpfWVsc2V7dmFyIGQ9dC5zZWxlY3Qocj8iLmxlZ2VuZHRleHQiOiIubGVnZW5kdGl0bGV0ZXh0Iiksdj1oLmxpbmVDb3VudChkKSxtPWQubm9kZSgpO249dSp2LGE9bT9jLmJCb3gobSkud2lkdGg6MDt2YXIgeT11Kigodi0xKS8yLS4zKTtyP2gucG9zaXRpb25UZXh0KGQscC50ZXh0R2FwLC15KTpoLnBvc2l0aW9uVGV4dChkLHAudGl0bGVQYWQrcyx1K3MpfXI/KHIubGluZUhlaWdodD11LHIuaGVpZ2h0PU1hdGgubWF4KG4sMTYpKzMsci53aWR0aD1hKToobC5fdGl0bGVXaWR0aD1hLGwuX3RpdGxlSGVpZ2h0PW4pfShlLHIpfSl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gYS5pc1JpZ2h0QW5jaG9yKHQpPyJyaWdodCI6YS5pc0NlbnRlckFuY2hvcih0KT8iY2VudGVyIjoibGVmdCJ9ZnVuY3Rpb24gUyh0KXtyZXR1cm4gYS5pc0JvdHRvbUFuY2hvcih0KT8iYm90dG9tIjphLmlzTWlkZGxlQW5jaG9yKHQpPyJtaWRkbGUiOiJ0b3AifWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ImxlZ2VuZCIrZS5fdWlkO2lmKGUuX2luZm9sYXllciYmdC5jYWxjZGF0YSl7dC5fbGVnZW5kTW91c2VEb3duVGltZXx8KHQuX2xlZ2VuZE1vdXNlRG93blRpbWU9MCk7dmFyIHM9ZS5sZWdlbmQsaD1lLnNob3dsZWdlbmQmJnkodC5jYWxjZGF0YSxzKSxmPWUuaGlkZGVubGFiZWxzfHxbXTtpZighZS5zaG93bGVnZW5kfHwhaC5sZW5ndGgpcmV0dXJuIGUuX2luZm9sYXllci5zZWxlY3RBbGwoIi5sZWdlbmQiKS5yZW1vdmUoKSxlLl90b3BkZWZzLnNlbGVjdCgiIyIrcikucmVtb3ZlKCksaS5hdXRvTWFyZ2luKHQsImxlZ2VuZCIpO3ZhciBkPWEuZW5zdXJlU2luZ2xlKGUuX2luZm9sYXllciwiZyIsImxlZ2VuZCIsZnVuY3Rpb24odCl7dC5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSksZz1hLmVuc3VyZVNpbmdsZUJ5SWQoZS5fdG9wZGVmcywiY2xpcFBhdGgiLHIsZnVuY3Rpb24odCl7dC5hcHBlbmQoInJlY3QiKX0pLGs9YS5lbnN1cmVTaW5nbGUoZCwicmVjdCIsImJnIixmdW5jdGlvbih0KXt0LmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKX0pO2suY2FsbCh1LnN0cm9rZSxzLmJvcmRlcmNvbG9yKS5jYWxsKHUuZmlsbCxzLmJnY29sb3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLHMuYm9yZGVyd2lkdGgrInB4Iik7dmFyIEU9YS5lbnN1cmVTaW5nbGUoZCwiZyIsInNjcm9sbGJveCIpLEw9cy50aXRsZTtpZihzLl90aXRsZVdpZHRoPTAscy5fdGl0bGVIZWlnaHQ9MCxMLnRleHQpe3ZhciBDPWEuZW5zdXJlU2luZ2xlKEUsInRleHQiLCJsZWdlbmR0aXRsZXRleHQiKTtDLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKS5jbGFzc2VkKCJ1c2VyLXNlbGVjdC1ub25lIiwhMCkuY2FsbChjLmZvbnQsTC5mb250KS50ZXh0KEwudGV4dCksTShDLEUsdCl9dmFyIFA9YS5lbnN1cmVTaW5nbGUoZCwicmVjdCIsInNjcm9sbGJhciIsZnVuY3Rpb24odCl7dC5hdHRyKHAuc2Nyb2xsQmFyRW50ZXJBdHRycykuY2FsbCh1LmZpbGwscC5zY3JvbGxCYXJDb2xvcil9KSxPPUUuc2VsZWN0QWxsKCJnLmdyb3VwcyIpLmRhdGEoaCk7Ty5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZ3JvdXBzIiksTy5leGl0KCkucmVtb3ZlKCk7dmFyIHo9Ty5zZWxlY3RBbGwoImcudHJhY2VzIikuZGF0YShhLmlkZW50aXR5KTt6LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0cmFjZXMiKSx6LmV4aXQoKS5yZW1vdmUoKSx6LnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlO3JldHVybiBvLnRyYWNlSXMoZSwicGllLWxpa2UiKT8tMSE9PWYuaW5kZXhPZih0WzBdLmxhYmVsKT8uNToxOiJsZWdlbmRvbmx5Ij09PWUudmlzaWJsZT8uNToxfSkuZWFjaChmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLmNhbGwodyx0KX0pLmNhbGwoeCx0KS5lYWNoKGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuY2FsbChULHQpfSksYS5zeW5jT3JBc3luYyhbaS5wcmV2aW91c1Byb21pc2VzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10Ll9mdWxsTGF5b3V0LGk9YS5sZWdlbmQsbz1hLl9zaXplLHM9Yi5pc1ZlcnRpY2FsKGkpLGw9Yi5pc0dyb3VwZWQoaSksdT1pLmJvcmRlcndpZHRoLGg9Mip1LGY9cC50ZXh0R2FwLGQ9cC5pdGVtR2FwLGc9MioodStkKSx2PVMoaSksbT1pLnk8MHx8MD09PWkueSYmInRvcCI9PT12LHk9aS55PjF8fDE9PT1pLnkmJiJib3R0b20iPT09djtpLl9tYXhIZWlnaHQ9TWF0aC5tYXgobXx8eT9hLmhlaWdodC8yOm8uaCwzMCk7dmFyIHg9MDtpLl93aWR0aD0wLGkuX2hlaWdodD0wO3ZhciBfPWZ1bmN0aW9uKHQpe3ZhciBlPTAscj0wLG49dC50aXRsZS5zaWRlO24mJigtMSE9PW4uaW5kZXhPZigibGVmdCIpJiYoZT10Ll90aXRsZVdpZHRoKSwtMSE9PW4uaW5kZXhPZigidG9wIikmJihyPXQuX3RpdGxlSGVpZ2h0KSk7cmV0dXJuW2Uscl19KGkpO2lmKHMpci5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0uaGVpZ2h0O2Muc2V0VHJhbnNsYXRlKHRoaXMsdStfWzBdLHUrX1sxXStpLl9oZWlnaHQrZS8yK2QpLGkuX2hlaWdodCs9ZSxpLl93aWR0aD1NYXRoLm1heChpLl93aWR0aCx0WzBdLndpZHRoKX0pLHg9ZitpLl93aWR0aCxpLl93aWR0aCs9ZCtmK2gsaS5faGVpZ2h0Kz1nLGwmJihlLmVhY2goZnVuY3Rpb24odCxlKXtjLnNldFRyYW5zbGF0ZSh0aGlzLDAsZSppLnRyYWNlZ3JvdXBnYXApfSksaS5faGVpZ2h0Kz0oaS5fbGdyb3Vwc0xlbmd0aC0xKSppLnRyYWNlZ3JvdXBnYXApO2Vsc2V7dmFyIHc9QShpKSxrPWkueDwwfHwwPT09aS54JiYicmlnaHQiPT09dyxUPWkueD4xfHwxPT09aS54JiYibGVmdCI9PT13LE09eXx8bSxFPWEud2lkdGgvMjtpLl9tYXhXaWR0aD1NYXRoLm1heChrP00mJiJsZWZ0Ij09PXc/by5sK28udzpFOlQ/TSYmInJpZ2h0Ij09PXc/by5yK28udzpFOm8udywyKmYpO3ZhciBMPTAsQz0wO3IuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLndpZHRoK2Y7TD1NYXRoLm1heChMLGUpLEMrPWV9KSx4PW51bGw7dmFyIFA9MDtpZihsKXt2YXIgTz0wLHo9MCxJPTA7ZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9MCxlPTA7bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLnRyYWNlcyIpLmVhY2goZnVuY3Rpb24ocil7dmFyIG49clswXS5oZWlnaHQ7Yy5zZXRUcmFuc2xhdGUodGhpcyxfWzBdLF9bMV0rdStkK24vMitlKSxlKz1uLHQ9TWF0aC5tYXgodCxmK3JbMF0ud2lkdGgpfSksTz1NYXRoLm1heChPLGUpO3ZhciByPXQrZDtyK3Urej5pLl9tYXhXaWR0aCYmKFA9TWF0aC5tYXgoUCx6KSx6PTAsSSs9TytpLnRyYWNlZ3JvdXBnYXAsTz1lKSxjLnNldFRyYW5zbGF0ZSh0aGlzLHosSSkseis9cn0pLGkuX3dpZHRoPU1hdGgubWF4KFAseikrdSxpLl9oZWlnaHQ9SStPK2d9ZWxzZXt2YXIgRD1yLnNpemUoKSxSPUMraCsoRC0xKSpkPGkuX21heFdpZHRoLEY9MCxCPTAsTj0wLGo9MDtyLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS5oZWlnaHQscj1mK3RbMF0ud2lkdGgsbj0oUj9yOkwpK2Q7bit1K0I+aS5fbWF4V2lkdGgmJihQPU1hdGgubWF4KFAsaiksQj0wLE4rPUYsaS5faGVpZ2h0Kz1GLEY9MCksYy5zZXRUcmFuc2xhdGUodGhpcyxfWzBdK3UrQixfWzFdK3UrTitlLzIrZCksaj1CK3IrZCxCKz1uLEY9TWF0aC5tYXgoRixlKX0pLFI/KGkuX3dpZHRoPUIraCxpLl9oZWlnaHQ9RitnKTooaS5fd2lkdGg9TWF0aC5tYXgoUCxqKStoLGkuX2hlaWdodCs9RitnKX19aS5fd2lkdGg9TWF0aC5jZWlsKE1hdGgubWF4KGkuX3dpZHRoK19bMF0saS5fdGl0bGVXaWR0aCsyKih1K3AudGl0bGVQYWQpKSksaS5faGVpZ2h0PU1hdGguY2VpbChNYXRoLm1heChpLl9oZWlnaHQrX1sxXSxpLl90aXRsZUhlaWdodCsyKih1K3AuaXRlbUdhcCkpKSxpLl9lZmZIZWlnaHQ9TWF0aC5taW4oaS5faGVpZ2h0LGkuX21heEhlaWdodCk7dmFyIFY9dC5fY29udGV4dC5lZGl0cyxVPVYubGVnZW5kVGV4dHx8Vi5sZWdlbmRQb3NpdGlvbjtyLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodGhpcykuc2VsZWN0KCIubGVnZW5kdG9nZ2xlIikscj10WzBdLmhlaWdodCxhPVU/Zjp4fHxmK3RbMF0ud2lkdGg7c3x8KGErPWQvMiksYy5zZXRSZWN0KGUsMCwtci8yLGEscil9KX0odCxPLHopfSxmdW5jdGlvbigpe2lmKCFmdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LmxlZ2VuZCxyPUEoZSksbj1TKGUpO3JldHVybiBpLmF1dG9NYXJnaW4odCwibGVnZW5kIix7eDplLngseTplLnksbDplLl93aWR0aCp2W3JdLHI6ZS5fd2lkdGgqbVtyXSxiOmUuX2VmZkhlaWdodCptW25dLHQ6ZS5fZWZmSGVpZ2h0KnZbbl19KX0odCkpe3ZhciB1LGgsZix5LHg9ZS5fc2l6ZSxiPXMuYm9yZGVyd2lkdGgsdz14LmwreC53KnMueC12W0EocyldKnMuX3dpZHRoLFQ9eC50K3guaCooMS1zLnkpLXZbUyhzKV0qcy5fZWZmSGVpZ2h0O2lmKGUubWFyZ2luLmF1dG9leHBhbmQpe3ZhciBNPXcsTD1UO3c9YS5jb25zdHJhaW4odywwLGUud2lkdGgtcy5fd2lkdGgpLFQ9YS5jb25zdHJhaW4oVCwwLGUuaGVpZ2h0LXMuX2VmZkhlaWdodCksdyE9PU0mJmEubG9nKCJDb25zdHJhaW4gbGVnZW5kLnggdG8gbWFrZSBsZWdlbmQgZml0IGluc2lkZSBncmFwaCIpLFQhPT1MJiZhLmxvZygiQ29uc3RyYWluIGxlZ2VuZC55IHRvIG1ha2UgbGVnZW5kIGZpdCBpbnNpZGUgZ3JhcGgiKX1pZihjLnNldFRyYW5zbGF0ZShkLHcsVCksUC5vbigiLmRyYWciLG51bGwpLGQub24oIndoZWVsIixudWxsKSxzLl9oZWlnaHQ8PXMuX21heEhlaWdodHx8dC5fY29udGV4dC5zdGF0aWNQbG90KWsuYXR0cih7d2lkdGg6cy5fd2lkdGgtYixoZWlnaHQ6cy5fZWZmSGVpZ2h0LWIseDpiLzIseTpiLzJ9KSxjLnNldFRyYW5zbGF0ZShFLDAsMCksZy5zZWxlY3QoInJlY3QiKS5hdHRyKHt3aWR0aDpzLl93aWR0aC0yKmIsaGVpZ2h0OnMuX2VmZkhlaWdodC0yKmIseDpiLHk6Yn0pLGMuc2V0Q2xpcFVybChFLHIsdCksYy5zZXRSZWN0KFAsMCwwLDAsMCksZGVsZXRlIHMuX3Njcm9sbFk7ZWxzZXt2YXIgQyxPLHosST1NYXRoLm1heChwLnNjcm9sbEJhck1pbkhlaWdodCxzLl9lZmZIZWlnaHQqcy5fZWZmSGVpZ2h0L3MuX2hlaWdodCksRD1zLl9lZmZIZWlnaHQtSS0yKnAuc2Nyb2xsQmFyTWFyZ2luLFI9cy5faGVpZ2h0LXMuX2VmZkhlaWdodCxGPUQvUixCPU1hdGgubWluKHMuX3Njcm9sbFl8fDAsUik7ay5hdHRyKHt3aWR0aDpzLl93aWR0aC0yKmIrcC5zY3JvbGxCYXJXaWR0aCtwLnNjcm9sbEJhck1hcmdpbixoZWlnaHQ6cy5fZWZmSGVpZ2h0LWIseDpiLzIseTpiLzJ9KSxnLnNlbGVjdCgicmVjdCIpLmF0dHIoe3dpZHRoOnMuX3dpZHRoLTIqYitwLnNjcm9sbEJhcldpZHRoK3Auc2Nyb2xsQmFyTWFyZ2luLGhlaWdodDpzLl9lZmZIZWlnaHQtMipiLHg6Yix5OmIrQn0pLGMuc2V0Q2xpcFVybChFLHIsdCksVihCLEksRiksZC5vbigid2hlZWwiLGZ1bmN0aW9uKCl7VihCPWEuY29uc3RyYWluKHMuX3Njcm9sbFkrbi5ldmVudC5kZWx0YVkvRCpSLDAsUiksSSxGKSwwIT09QiYmQiE9PVImJm4uZXZlbnQucHJldmVudERlZmF1bHQoKX0pO3ZhciBOPW4uYmVoYXZpb3IuZHJhZygpLm9uKCJkcmFnc3RhcnQiLGZ1bmN0aW9uKCl7dmFyIHQ9bi5ldmVudC5zb3VyY2VFdmVudDtDPSJ0b3VjaHN0YXJ0Ij09PXQudHlwZT90LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk6dC5jbGllbnRZLHo9Qn0pLm9uKCJkcmFnIixmdW5jdGlvbigpe3ZhciB0PW4uZXZlbnQuc291cmNlRXZlbnQ7Mj09PXQuYnV0dG9uc3x8dC5jdHJsS2V5fHwoTz0idG91Y2htb3ZlIj09PXQudHlwZT90LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk6dC5jbGllbnRZLFYoQj1mdW5jdGlvbih0LGUscil7dmFyIG49KHItZSkvRit0O3JldHVybiBhLmNvbnN0cmFpbihuLDAsUil9KHosQyxPKSxJLEYpKX0pO1AuY2FsbChOKTt2YXIgaj1uLmJlaGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixmdW5jdGlvbigpe3ZhciB0PW4uZXZlbnQuc291cmNlRXZlbnQ7InRvdWNoc3RhcnQiPT09dC50eXBlJiYoQz10LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFksej1CKX0pLm9uKCJkcmFnIixmdW5jdGlvbigpe3ZhciB0PW4uZXZlbnQuc291cmNlRXZlbnQ7InRvdWNobW92ZSI9PT10LnR5cGUmJihPPXQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSxWKEI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPShlLXIpL0YrdDtyZXR1cm4gYS5jb25zdHJhaW4obiwwLFIpfSh6LEMsTyksSSxGKSl9KTtFLmNhbGwoail9aWYodC5fY29udGV4dC5lZGl0cy5sZWdlbmRQb3NpdGlvbilkLmNsYXNzZWQoImN1cnNvci1tb3ZlIiwhMCksbC5pbml0KHtlbGVtZW50OmQubm9kZSgpLGdkOnQscHJlcEZuOmZ1bmN0aW9uKCl7dmFyIHQ9Yy5nZXRUcmFuc2xhdGUoZCk7Zj10LngseT10Lnl9LG1vdmVGbjpmdW5jdGlvbih0LGUpe3ZhciByPWYrdCxuPXkrZTtjLnNldFRyYW5zbGF0ZShkLHIsbiksdT1sLmFsaWduKHIsMCx4LmwseC5sK3gudyxzLnhhbmNob3IpLGg9bC5hbGlnbihuLDAseC50K3guaCx4LnQscy55YW5jaG9yKX0sZG9uZUZuOmZ1bmN0aW9uKCl7dm9pZCAwIT09dSYmdm9pZCAwIT09aCYmby5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQseyJsZWdlbmQueCI6dSwibGVnZW5kLnkiOmh9KX0sY2xpY2tGbjpmdW5jdGlvbihyLG4pe3ZhciBhPWUuX2luZm9sYXllci5zZWxlY3RBbGwoImcudHJhY2VzIikuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gbi5jbGllbnRYPj10LmxlZnQmJm4uY2xpZW50WDw9dC5yaWdodCYmbi5jbGllbnRZPj10LnRvcCYmbi5jbGllbnRZPD10LmJvdHRvbX0pO2Euc2l6ZSgpPjAmJl8odCxkLGEscixuKX19KX1mdW5jdGlvbiBWKGUscixuKXtzLl9zY3JvbGxZPXQuX2Z1bGxMYXlvdXQubGVnZW5kLl9zY3JvbGxZPWUsYy5zZXRUcmFuc2xhdGUoRSwwLC1lKSxjLnNldFJlY3QoUCxzLl93aWR0aCxwLnNjcm9sbEJhck1hcmdpbitlKm4scC5zY3JvbGxCYXJXaWR0aCxyKSxnLnNlbGVjdCgicmVjdCIpLmF0dHIoInkiLGIrZSl9fV0sdCl9fX0seyIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZXZlbnRzIjo3MDcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90cy9wbG90cyI6ODI2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9jb2xvciI6NTkyLCIuLi9kcmFnZWxlbWVudCI6NjEwLCIuLi9kcmF3aW5nIjo2MTMsIi4vY29uc3RhbnRzIjo2NDEsIi4vZ2V0X2xlZ2VuZF9kYXRhIjo2NDQsIi4vaGFuZGxlX2NsaWNrIjo2NDUsIi4vaGVscGVycyI6NjQ2LCIuL3N0eWxlIjo2NDgsZDM6MTY1fV0sNjQ0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixpLG89e30scz1bXSxsPSExLGM9e30sdT0wLGg9MDtmdW5jdGlvbiBmKHQscil7aWYoIiIhPT10JiZhLmlzR3JvdXBlZChlKSktMT09PXMuaW5kZXhPZih0KT8ocy5wdXNoKHQpLGw9ITAsb1t0XT1bW3JdXSk6b1t0XS5wdXNoKFtyXSk7ZWxzZXt2YXIgbj0ifn5pIit1O3MucHVzaChuKSxvW25dPVtbcl1dLHUrK319Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIHA9dFtyXSxkPXBbMF0sZz1kLnRyYWNlLHY9Zy5sZWdlbmRncm91cDtpZihnLnZpc2libGUmJmcuc2hvd2xlZ2VuZClpZihuLnRyYWNlSXMoZywicGllLWxpa2UiKSlmb3IoY1t2XXx8KGNbdl09e30pLGk9MDtpPHAubGVuZ3RoO2krKyl7dmFyIG09cFtpXS5sYWJlbDtjW3ZdW21dfHwoZih2LHtsYWJlbDptLGNvbG9yOnBbaV0uY29sb3IsaTpwW2ldLmksdHJhY2U6ZyxwdHM6cFtpXS5wdHN9KSxjW3ZdW21dPSEwLGg9TWF0aC5tYXgoaCwobXx8IiIpLmxlbmd0aCkpfWVsc2UgZih2LGQpLGg9TWF0aC5tYXgoaCwoZy5uYW1lfHwiIikubGVuZ3RoKX1pZighcy5sZW5ndGgpcmV0dXJuW107dmFyIHkseCxiPXMubGVuZ3RoO2lmKGwmJmEuaXNHcm91cGVkKGUpKWZvcih4PW5ldyBBcnJheShiKSxyPTA7cjxiO3IrKyl5PW9bc1tyXV0seFtyXT1hLmlzUmV2ZXJzZWQoZSk/eS5yZXZlcnNlKCk6eTtlbHNle2Zvcih4PVtuZXcgQXJyYXkoYildLHI9MDtyPGI7cisrKXk9b1tzW3JdXVswXSx4WzBdW2EuaXNSZXZlcnNlZChlKT9iLXItMTpyXT15O2I9MX1yZXR1cm4gZS5fbGdyb3Vwc0xlbmd0aD1iLGUuX21heE5hbWVMZW5ndGg9aCx4fX0seyIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2hlbHBlcnMiOjY0Nn1dLDY0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT0hMDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPWUuX2Z1bGxMYXlvdXQ7aWYoIWUuX2RyYWdnZWQmJiFlLl9lZGl0aW5nKXt2YXIgcyxsPW8ubGVnZW5kLml0ZW1jbGljayxjPW8ubGVnZW5kLml0ZW1kb3VibGVjbGljaztpZigxPT09ciYmInRvZ2dsZSI9PT1sJiYidG9nZ2xlb3RoZXJzIj09PWMmJmkmJmUuZGF0YSYmZS5fY29udGV4dC5zaG93VGlwcz8obi5ub3RpZmllcihuLl8oZSwiRG91YmxlLWNsaWNrIG9uIGxlZ2VuZCB0byBpc29sYXRlIG9uZSB0cmFjZSIpLCJsb25nIiksaT0hMSk6aT0hMSwxPT09cj9zPWw6Mj09PXImJihzPWMpLHMpe3ZhciB1LGgsZixwLGQsZz1vLmhpZGRlbmxhYmVscz9vLmhpZGRlbmxhYmVscy5zbGljZSgpOltdLHY9dC5kYXRhKClbMF1bMF0sbT1lLl9mdWxsRGF0YSx5PXYudHJhY2UseD15LmxlZ2VuZGdyb3VwLGI9e30sXz1bXSx3PVtdLGs9W107aWYoYS50cmFjZUlzKHksInBpZS1saWtlIikpe3ZhciBUPXYubGFiZWwsTT1nLmluZGV4T2YoVCk7InRvZ2dsZSI9PT1zPy0xPT09TT9nLnB1c2goVCk6Zy5zcGxpY2UoTSwxKToidG9nZ2xlb3RoZXJzIj09PXMmJihnPVtdLGUuY2FsY2RhdGFbMF0uZm9yRWFjaChmdW5jdGlvbih0KXtUIT09dC5sYWJlbCYmZy5wdXNoKHQubGFiZWwpfSksZS5fZnVsbExheW91dC5oaWRkZW5sYWJlbHMmJmUuX2Z1bGxMYXlvdXQuaGlkZGVubGFiZWxzLmxlbmd0aD09PWcubGVuZ3RoJiYtMT09PU0mJihnPVtdKSksYS5jYWxsKCJfZ3VpUmVsYXlvdXQiLGUsImhpZGRlbmxhYmVscyIsZyl9ZWxzZXt2YXIgQSxTPXgmJngubGVuZ3RoLEU9W107aWYoUylmb3IodT0wO3U8bS5sZW5ndGg7dSsrKShBPW1bdV0pLnZpc2libGUmJkEubGVnZW5kZ3JvdXA9PT14JiZFLnB1c2godSk7aWYoInRvZ2dsZSI9PT1zKXt2YXIgTDtzd2l0Y2goeS52aXNpYmxlKXtjYXNlITA6TD0ibGVnZW5kb25seSI7YnJlYWs7Y2FzZSExOkw9ITE7YnJlYWs7Y2FzZSJsZWdlbmRvbmx5IjpMPSEwfWlmKFMpZm9yKHU9MDt1PG0ubGVuZ3RoO3UrKykhMSE9PW1bdV0udmlzaWJsZSYmbVt1XS5sZWdlbmRncm91cD09PXgmJkIobVt1XSxMKTtlbHNlIEIoeSxMKX1lbHNlIGlmKCJ0b2dnbGVvdGhlcnMiPT09cyl7dmFyIEMsUCxPLHosST0hMDtmb3IodT0wO3U8bS5sZW5ndGg7dSsrKWlmKEM9bVt1XT09PXksTz0hMCE9PW1bdV0uc2hvd2xlZ2VuZCwhKEN8fE98fChQPVMmJm1bdV0ubGVnZW5kZ3JvdXA9PT14KXx8ITAhPT1tW3VdLnZpc2libGV8fGEudHJhY2VJcyhtW3VdLCJub3RMZWdlbmRJc29sYXRhYmxlIikpKXtJPSExO2JyZWFrfWZvcih1PTA7dTxtLmxlbmd0aDt1KyspaWYoITEhPT1tW3VdLnZpc2libGUmJiFhLnRyYWNlSXMobVt1XSwibm90TGVnZW5kSXNvbGF0YWJsZSIpKXN3aXRjaCh5LnZpc2libGUpe2Nhc2UibGVnZW5kb25seSI6QihtW3VdLCEwKTticmVhaztjYXNlITA6ej0hIUl8fCJsZWdlbmRvbmx5IixDPW1bdV09PT15LE89ITAhPT1tW3VdLnNob3dsZWdlbmQmJiFtW3VdLmxlZ2VuZGdyb3VwLFA9Q3x8UyYmbVt1XS5sZWdlbmRncm91cD09PXgsQihtW3VdLCEoIVAmJiFPKXx8eil9fWZvcih1PTA7dTx3Lmxlbmd0aDt1KyspaWYoZj13W3VdKXt2YXIgRD1mLmNvbnN0cnVjdFVwZGF0ZSgpLFI9T2JqZWN0LmtleXMoRCk7Zm9yKGg9MDtoPFIubGVuZ3RoO2grKylwPVJbaF0sKGJbcF09YltwXXx8W10pW2tbdV1dPURbcF19Zm9yKGQ9T2JqZWN0LmtleXMoYiksdT0wO3U8ZC5sZW5ndGg7dSsrKWZvcihwPWRbdV0saD0wO2g8Xy5sZW5ndGg7aCsrKWJbcF0uaGFzT3duUHJvcGVydHkoaCl8fChiW3BdW2hdPXZvaWQgMCk7YS5jYWxsKCJfZ3VpUmVzdHlsZSIsZSxiLF8pfX19ZnVuY3Rpb24gRih0LGUscil7dmFyIG49Xy5pbmRleE9mKHQpLGE9YltlXTtyZXR1cm4gYXx8KGE9YltlXT1bXSksLTE9PT1fLmluZGV4T2YodCkmJihfLnB1c2godCksbj1fLmxlbmd0aC0xKSxhW25dPXIsbn1mdW5jdGlvbiBCKHQsZSl7dmFyIHI9dC5fZnVsbElucHV0O2lmKGEuaGFzVHJhbnNmb3JtKHIsImdyb3VwYnkiKSl7dmFyIGk9d1tyLmluZGV4XTtpZighaSl7dmFyIG89YS5nZXRUcmFuc2Zvcm1JbmRpY2VzKHIsImdyb3VwYnkiKSxzPW9bby5sZW5ndGgtMV07aT1uLmtleWVkQ29udGFpbmVyKHIsInRyYW5zZm9ybXNbIitzKyJdLnN0eWxlcyIsInRhcmdldCIsInZhbHVlLnZpc2libGUiKSx3W3IuaW5kZXhdPWl9dmFyIGw9aS5nZXQodC5fZ3JvdXApO3ZvaWQgMD09PWwmJihsPSEwKSwhMSE9PWwmJmkuc2V0KHQuX2dyb3VwLGUpLGtbci5pbmRleF09RihyLmluZGV4LCJ2aXNpYmxlIiwhMSE9PXIudmlzaWJsZSl9ZWxzZXt2YXIgYz0hMSE9PXIudmlzaWJsZSYmZTtGKHIuaW5kZXgsInZpc2libGUiLGMpfX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0sNjQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuaXNHcm91cGVkPWZ1bmN0aW9uKHQpe3JldHVybi0xIT09KHQudHJhY2VvcmRlcnx8IiIpLmluZGV4T2YoImdyb3VwZWQiKX0sci5pc1ZlcnRpY2FsPWZ1bmN0aW9uKHQpe3JldHVybiJoIiE9PXQub3JpZW50YXRpb259LHIuaXNSZXZlcnNlZD1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PSh0LnRyYWNlb3JkZXJ8fCIiKS5pbmRleE9mKCJyZXZlcnNlZCIpfX0se31dLDY0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToibGVnZW5kIixsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxkcmF3OnQoIi4vZHJhdyIpLHN0eWxlOnQoIi4vc3R5bGUiKX19LHsiLi9hdHRyaWJ1dGVzIjo2NDAsIi4vZGVmYXVsdHMiOjY0MiwiLi9kcmF3Ijo2NDMsIi4vc3R5bGUiOjY0OH1dLDY0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vZHJhd2luZyIpLHM9dCgiLi4vY29sb3IiKSxsPXQoIi4uL2NvbG9yc2NhbGUvaGVscGVycyIpLmV4dHJhY3RPcHRzLGM9dCgiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvc3VidHlwZXMiKSx1PXQoIi4uLy4uL3RyYWNlcy9waWUvc3R5bGVfb25lIiksaD10KCIuLi8uLi90cmFjZXMvcGllL2hlbHBlcnMiKS5jYXN0T3B0aW9uLGY9MTIscD01LGQ9MixnPTEwLHY9NTtmdW5jdGlvbiBtKHQsZSl7cmV0dXJuKGU/InJhZGlhbCI6Imhvcml6b250YWwiKSsodD8iIjoicmV2ZXJzZWQiKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLl9mdWxsTGF5b3V0LmxlZ2VuZCx5PSJjb25zdGFudCI9PT1yLml0ZW1zaXppbmcseD1mdW5jdGlvbih0LGUscixuKXt2YXIgYTtpZih0KzEpYT10O2Vsc2V7aWYoIShlJiZlLndpZHRoPjApKXJldHVybiAwO2E9ZS53aWR0aH1yZXR1cm4geT9uOk1hdGgubWluKGEscil9O2Z1bmN0aW9uIGIodCxlLHIpe3ZhciBpPXRbMF0udHJhY2Usbz1pLm1hcmtlcnx8e30sbD1vLmxpbmV8fHt9LGM9cj9pLnZpc2libGUmJmkudHlwZT09PXI6YS50cmFjZUlzKGksImJhciIpLHU9bi5zZWxlY3QoZSkuc2VsZWN0KCJnLmxlZ2VuZHBvaW50cyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmQiK3IpLmRhdGEoYz9bdF06W10pO3UuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJsZWdlbmQiK3IsITApLmF0dHIoImQiLCJNNiw2SC02Vi02SDZaIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDIwLDApIiksdS5leGl0KCkucmVtb3ZlKCksdS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLHI9dFswXSxhPXgoci5tbHcsby5saW5lLHYsZCk7ZS5zdHlsZSgic3Ryb2tlLXdpZHRoIixhKyJweCIpLmNhbGwocy5maWxsLHIubWN8fG8uY29sb3IpLGEmJnMuc3Ryb2tlKGUsci5tbGN8fGwuY29sb3IpfSl9ZnVuY3Rpb24gXyh0LGUscil7dmFyIG89dFswXSxzPW8udHJhY2UsbD1yP3MudmlzaWJsZSYmcy50eXBlPT09cjphLnRyYWNlSXMocyxyKSxjPW4uc2VsZWN0KGUpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxlY3RBbGwoInBhdGgubGVnZW5kIityKS5kYXRhKGw/W3RdOltdKTtpZihjLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgibGVnZW5kIityLCEwKS5hdHRyKCJkIiwiTTYsNkgtNlYtNkg2WiIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyMCwwKSIpLGMuZXhpdCgpLnJlbW92ZSgpLGMuc2l6ZSgpKXt2YXIgZj0ocy5tYXJrZXJ8fHt9KS5saW5lLHA9eChoKGYud2lkdGgsby5wdHMpLGYsdixkKSxnPWkubWluRXh0ZW5kKHMse21hcmtlcjp7bGluZTp7d2lkdGg6cH19fSk7Zy5tYXJrZXIubGluZS5jb2xvcj1mLmNvbG9yO3ZhciBtPWkubWluRXh0ZW5kKG8se3RyYWNlOmd9KTt1KGMsbSxnKX19dC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLGE9aS5lbnN1cmVTaW5nbGUoZSwiZyIsImxheWVycyIpO2Euc3R5bGUoIm9wYWNpdHkiLHRbMF0udHJhY2Uub3BhY2l0eSk7dmFyIG89ci52YWxpZ24scz10WzBdLmxpbmVIZWlnaHQsbD10WzBdLmhlaWdodDtpZigibWlkZGxlIiE9PW8mJnMmJmwpe3ZhciBjPXt0b3A6MSxib3R0b206LTF9W29dKiguNSoocy1sKzMpKTthLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrYysiKSIpfWVsc2UgYS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpO2Euc2VsZWN0QWxsKCJnLmxlZ2VuZGZpbGwiKS5kYXRhKFt0XSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmRmaWxsIiwhMCksYS5zZWxlY3RBbGwoImcubGVnZW5kbGluZXMiKS5kYXRhKFt0XSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmRsaW5lcyIsITApO3ZhciB1PWEuc2VsZWN0QWxsKCJnLmxlZ2VuZHN5bWJvbHMiKS5kYXRhKFt0XSk7dS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxlZ2VuZHN5bWJvbHMiLCEwKSx1LnNlbGVjdEFsbCgiZy5sZWdlbmRwb2ludHMiKS5kYXRhKFt0XSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmRwb2ludHMiLCEwKX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIHIsYT10WzBdLnRyYWNlLGM9W107aWYoYS52aXNpYmxlKXN3aXRjaChhLnR5cGUpe2Nhc2UiaGlzdG9ncmFtMmQiOmNhc2UiaGVhdG1hcCI6Yz1bWyJNLTE1LC0yVjRIMTVWLTJaIl1dLHI9ITA7YnJlYWs7Y2FzZSJjaG9yb3BsZXRoIjpjYXNlImNob3JvcGxldGhtYXBib3giOmM9W1siTS02LC02VjZINlYtNloiXV0scj0hMDticmVhaztjYXNlImRlbnNpdHltYXBib3giOmM9W1siTS02LDAgYTYsNiAwIDEsMCAxMiwwIGEgNiw2IDAgMSwwIC0xMiwwIl1dLHI9InJhZGlhbCI7YnJlYWs7Y2FzZSJjb25lIjpjPVtbIk0tNiwyIEEyLDIgMCAwLDAgLTYsNiBWNkw2LDRaIl0sWyJNLTYsLTYgQTIsMiAwIDAsMCAtNiwtMiBMNiwtNFoiXSxbIk0tNiwtMiBBMiwyIDAgMCwwIC02LDIgTDYsMFoiXV0scj0hMTticmVhaztjYXNlInN0cmVhbXR1YmUiOmM9W1siTS02LDIgQTIsMiAwIDAsMCAtNiw2IEg2IEEyLDIgMCAwLDEgNiwyIFoiXSxbIk0tNiwtNiBBMiwyIDAgMCwwIC02LC0yIEg2IEEyLDIgMCAwLDEgNiwtNiBaIl0sWyJNLTYsLTIgQTIsMiAwIDAsMCAtNiwyIEg2IEEyLDIgMCAwLDEgNiwtMiBaIl1dLHI9ITE7YnJlYWs7Y2FzZSJzdXJmYWNlIjpjPVtbIk0tNiwtNiBBMiwzIDAgMCwwIC02LDAgSDYgQTIsMyAwIDAsMSA2LC02IFoiXSxbIk0tNiwxIEEyLDMgMCAwLDEgLTYsNiBINiBBMiwzIDAgMCwwIDYsMCBaIl1dLHI9ITA7YnJlYWs7Y2FzZSJtZXNoM2QiOmM9W1siTS02LDZIMEwtNiwtNloiXSxbIk02LDZIMEw2LC02WiJdLFsiTS02LC02SDZMMCw2WiJdXSxyPSExO2JyZWFrO2Nhc2Uidm9sdW1lIjpjPVtbIk0tNiw2SDBMLTYsLTZaIl0sWyJNNiw2SDBMNiwtNloiXSxbIk0tNiwtNkg2TDAsNloiXV0scj0hMDticmVhaztjYXNlImlzb3N1cmZhY2UiOmM9W1siTS02LDZIMEwtNiwtNloiXSxbIk02LDZIMEw2LC02WiJdLFsiTS02LC02IEExMiwyNCAwIDAsMCA2LC02IEwwLDZaIl1dLHI9ITF9dmFyIHU9bi5zZWxlY3QodGhpcykuc2VsZWN0KCJnLmxlZ2VuZHBvaW50cyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmQzZGFuZGZyaWVuZHMiKS5kYXRhKGMpO3UuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJsZWdlbmQzZGFuZGZyaWVuZHMiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMjAsMCkiKS5zdHlsZSgic3Ryb2tlLW1pdGVybGltaXQiLDEpLHUuZXhpdCgpLnJlbW92ZSgpLHUuZWFjaChmdW5jdGlvbih0LGMpe3ZhciB1LGg9bi5zZWxlY3QodGhpcyksZj1sKGEpLHA9Zi5jb2xvcnNjYWxlLGQ9Zi5yZXZlcnNlc2NhbGU7aWYocCl7aWYoIXIpe3ZhciBnPXAubGVuZ3RoO3U9MD09PWM/cFtkP2ctMTowXVsxXToxPT09Yz9wW2Q/MDpnLTFdWzFdOnBbTWF0aC5mbG9vcigoZy0xKS8yKV1bMV19fWVsc2V7dmFyIHY9YS52ZXJ0ZXhjb2xvcnx8YS5mYWNlY29sb3J8fGEuY29sb3I7dT1pLmlzQXJyYXlPclR5cGVkQXJyYXkodik/dltjXXx8dlswXTp2fWguYXR0cigiZCIsdFswXSksdT9oLmNhbGwocy5maWxsLHUpOmguY2FsbChmdW5jdGlvbih0KXtpZih0LnNpemUoKSl7dmFyIG49ImxlZ2VuZGZpbGwtIithLnVpZDtvLmdyYWRpZW50KHQsZSxuLG0oZCwicmFkaWFsIj09PXIpLHAsImZpbGwiKX19KX0pfSkuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9W107ZS52aXNpYmxlJiYid2F0ZXJmYWxsIj09PWUudHlwZSYmKHI9dFswXS5oYXNUb3RhbHM/W1siaW5jcmVhc2luZyIsIk0tNiwtNlY2SDBaIl0sWyJ0b3RhbHMiLCJNNiw2SDBMLTYsLTZILTBaIl0sWyJkZWNyZWFzaW5nIiwiTTYsNlYtNkgwWiJdXTpbWyJpbmNyZWFzaW5nIiwiTS02LC02VjZINloiXSxbImRlY3JlYXNpbmciLCJNNiw2Vi02SC02WiJdXSk7dmFyIGE9bi5zZWxlY3QodGhpcykuc2VsZWN0KCJnLmxlZ2VuZHBvaW50cyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmR3YXRlcmZhbGwiKS5kYXRhKHIpO2EuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJsZWdlbmR3YXRlcmZhbGwiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMjAsMCkiKS5zdHlsZSgic3Ryb2tlLW1pdGVybGltaXQiLDEpLGEuZXhpdCgpLnJlbW92ZSgpLGEuZWFjaChmdW5jdGlvbih0KXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxhPWVbdFswXV0ubWFya2VyLGk9eCh2b2lkIDAsYS5saW5lLHYsZCk7ci5hdHRyKCJkIix0WzFdKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixpKyJweCIpLmNhbGwocy5maWxsLGEuY29sb3IpLGkmJnIuY2FsbChzLnN0cm9rZSxhLmxpbmUuY29sb3IpfSl9KS5lYWNoKGZ1bmN0aW9uKHQpe2IodCx0aGlzLCJmdW5uZWwiKX0pLmVhY2goZnVuY3Rpb24odCl7Yih0LHRoaXMpfSkuZWFjaChmdW5jdGlvbih0KXt2YXIgcj10WzBdLnRyYWNlLGw9bi5zZWxlY3QodGhpcykuc2VsZWN0KCJnLmxlZ2VuZHBvaW50cyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmRib3giKS5kYXRhKHIudmlzaWJsZSYmYS50cmFjZUlzKHIsImJveC12aW9saW4iKT9bdF06W10pO2wuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJsZWdlbmRib3giLCEwKS5hdHRyKCJkIiwiTTYsNkgtNlYtNkg2WiIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyMCwwKSIpLGwuZXhpdCgpLnJlbW92ZSgpLGwuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpO2lmKCJhbGwiIT09ci5ib3hwb2ludHMmJiJhbGwiIT09ci5wb2ludHN8fDAhPT1zLm9wYWNpdHkoci5maWxsY29sb3IpfHwwIT09cy5vcGFjaXR5KChyLmxpbmV8fHt9KS5jb2xvcikpe3ZhciBhPXgodm9pZCAwLHIubGluZSx2LGQpO3Quc3R5bGUoInN0cm9rZS13aWR0aCIsYSsicHgiKS5jYWxsKHMuZmlsbCxyLmZpbGxjb2xvciksYSYmcy5zdHJva2UodCxyLmxpbmUuY29sb3IpfWVsc2V7dmFyIGM9aS5taW5FeHRlbmQocix7bWFya2VyOntzaXplOnk/ZjppLmNvbnN0cmFpbihyLm1hcmtlci5zaXplLDIsMTYpLHNpemVyZWY6MSxzaXplbWluOjEsc2l6ZW1vZGU6ImRpYW1ldGVyIn19KTtsLmNhbGwoby5wb2ludFN0eWxlLGMsZSl9fSl9KS5lYWNoKGZ1bmN0aW9uKHQpe18odCx0aGlzLCJmdW5uZWxhcmVhIil9KS5lYWNoKGZ1bmN0aW9uKHQpe18odCx0aGlzLCJwaWUiKX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIHIsYSxzPXRbMF0sdT1zLnRyYWNlLGg9dS52aXNpYmxlJiZ1LmZpbGwmJiJub25lIiE9PXUuZmlsbCxmPWMuaGFzTGluZXModSksZD11LmNvbnRvdXJzLHY9ITEseT0hMSxiPWwodSksXz1iLmNvbG9yc2NhbGUsdz1iLnJldmVyc2VzY2FsZTtpZihkKXt2YXIgaz1kLmNvbG9yaW5nOyJsaW5lcyI9PT1rP3Y9ITA6Zj0ibm9uZSI9PT1rfHwiaGVhdG1hcCI9PT1rfHxkLnNob3dsaW5lcywiY29uc3RyYWludCI9PT1kLnR5cGU/aD0iPSIhPT1kLl9vcGVyYXRpb246ImZpbGwiIT09ayYmImhlYXRtYXAiIT09a3x8KHk9ITApfXZhciBUPWMuaGFzTWFya2Vycyh1KXx8Yy5oYXNUZXh0KHUpLE09aHx8eSxBPWZ8fHYsUz1UfHwhTT8iTTUsMCI6QT8iTTUsLTIiOiJNNSwtMyIsRT1uLnNlbGVjdCh0aGlzKSxMPUUuc2VsZWN0KCIubGVnZW5kZmlsbCIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEoaHx8eT9bdF06W10pO2lmKEwuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJqcy1maWxsIiwhMCksTC5leGl0KCkucmVtb3ZlKCksTC5hdHRyKCJkIixTKyJoMzB2NmgtMzB6IikuY2FsbChoP28uZmlsbEdyb3VwU3R5bGU6ZnVuY3Rpb24odCl7aWYodC5zaXplKCkpe3ZhciByPSJsZWdlbmRmaWxsLSIrdS51aWQ7by5ncmFkaWVudCh0LGUscixtKHcpLF8sImZpbGwiKX19KSxmfHx2KXt2YXIgQz14KHZvaWQgMCx1LmxpbmUsZyxwKTthPWkubWluRXh0ZW5kKHUse2xpbmU6e3dpZHRoOkN9fSkscj1baS5taW5FeHRlbmQocyx7dHJhY2U6YX0pXX12YXIgUD1FLnNlbGVjdCgiLmxlZ2VuZGxpbmVzIikuc2VsZWN0QWxsKCJwYXRoIikuZGF0YShmfHx2P1tyXTpbXSk7UC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImpzLWxpbmUiLCEwKSxQLmV4aXQoKS5yZW1vdmUoKSxQLmF0dHIoImQiLFMrKHY/ImwzMCwwLjAwMDEiOiJoMzAiKSkuY2FsbChmP28ubGluZUdyb3VwU3R5bGU6ZnVuY3Rpb24odCl7aWYodC5zaXplKCkpe3ZhciByPSJsZWdlbmRsaW5lLSIrdS51aWQ7by5saW5lR3JvdXBTdHlsZSh0KSxvLmdyYWRpZW50KHQsZSxyLG0odyksXywic3Ryb2tlIil9fSl9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByLGEscz10WzBdLGw9cy50cmFjZSx1PWMuaGFzTWFya2VycyhsKSxoPWMuaGFzVGV4dChsKSxnPWMuaGFzTGluZXMobCk7ZnVuY3Rpb24gdih0LGUscixuKXt2YXIgYT1pLm5lc3RlZFByb3BlcnR5KGwsdCkuZ2V0KCksbz1pLmlzQXJyYXlPclR5cGVkQXJyYXkoYSkmJmU/ZShhKTphO2lmKHkmJm8mJnZvaWQgMCE9PW4mJihvPW4pLHIpe2lmKG88clswXSlyZXR1cm4gclswXTtpZihvPnJbMV0pcmV0dXJuIHJbMV19cmV0dXJuIG99ZnVuY3Rpb24gbSh0KXtyZXR1cm4gdFswXX1pZih1fHxofHxnKXt2YXIgeD17fSxiPXt9O2lmKHUpe3gubWM9digibWFya2VyLmNvbG9yIixtKSx4Lm14PXYoIm1hcmtlci5zeW1ib2wiLG0pLHgubW89digibWFya2VyLm9wYWNpdHkiLGkubWVhbixbLjIsMV0pLHgubWxjPXYoIm1hcmtlci5saW5lLmNvbG9yIixtKSx4Lm1sdz12KCJtYXJrZXIubGluZS53aWR0aCIsaS5tZWFuLFswLDVdLGQpLGIubWFya2VyPXtzaXplcmVmOjEsc2l6ZW1pbjoxLHNpemVtb2RlOiJkaWFtZXRlciJ9O3ZhciBfPXYoIm1hcmtlci5zaXplIixpLm1lYW4sWzIsMTZdLGYpO3gubXM9XyxiLm1hcmtlci5zaXplPV99ZyYmKGIubGluZT17d2lkdGg6digibGluZS53aWR0aCIsbSxbMCwxMF0scCl9KSxoJiYoeC50eD0iQWEiLHgudHA9digidGV4dHBvc2l0aW9uIixtKSx4LnRzPTEwLHgudGM9digidGV4dGZvbnQuY29sb3IiLG0pLHgudGY9digidGV4dGZvbnQuZmFtaWx5IixtKSkscj1baS5taW5FeHRlbmQocyx4KV0sKGE9aS5taW5FeHRlbmQobCxiKSkuc2VsZWN0ZWRwb2ludHM9bnVsbCxhLnRleHR0ZW1wbGF0ZT1udWxsfXZhciB3PW4uc2VsZWN0KHRoaXMpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKSxrPXcuc2VsZWN0QWxsKCJwYXRoLnNjYXR0ZXJwdHMiKS5kYXRhKHU/cjpbXSk7ay5lbnRlcigpLmluc2VydCgicGF0aCIsIjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQoInNjYXR0ZXJwdHMiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMjAsMCkiKSxrLmV4aXQoKS5yZW1vdmUoKSxrLmNhbGwoby5wb2ludFN0eWxlLGEsZSksdSYmKHJbMF0ubXJjPTMpO3ZhciBUPXcuc2VsZWN0QWxsKCJnLnBvaW50dGV4dCIpLmRhdGEoaD9yOltdKTtULmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicG9pbnR0ZXh0IiwhMCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDIwLDApIiksVC5leGl0KCkucmVtb3ZlKCksVC5zZWxlY3RBbGwoInRleHQiKS5jYWxsKG8udGV4dFBvaW50U3R5bGUsYSxlKX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPW4uc2VsZWN0KHRoaXMpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxlY3RBbGwoInBhdGgubGVnZW5kY2FuZGxlIikuZGF0YShlLnZpc2libGUmJiJjYW5kbGVzdGljayI9PT1lLnR5cGU/W3QsdF06W10pO3IuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJsZWdlbmRjYW5kbGUiLCEwKS5hdHRyKCJkIixmdW5jdGlvbih0LGUpe3JldHVybiBlPyJNLTE1LDBILThNLTgsNlYtNkg4WiI6Ik0xNSwwSDhNOCwtNlY2SC04WiJ9KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMjAsMCkiKS5zdHlsZSgic3Ryb2tlLW1pdGVybGltaXQiLDEpLHIuZXhpdCgpLnJlbW92ZSgpLHIuZWFjaChmdW5jdGlvbih0LHIpe3ZhciBhPW4uc2VsZWN0KHRoaXMpLGk9ZVtyPyJpbmNyZWFzaW5nIjoiZGVjcmVhc2luZyJdLG89eCh2b2lkIDAsaS5saW5lLHYsZCk7YS5zdHlsZSgic3Ryb2tlLXdpZHRoIixvKyJweCIpLmNhbGwocy5maWxsLGkuZmlsbGNvbG9yKSxvJiZzLnN0cm9rZShhLGkubGluZS5jb2xvcil9KX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPW4uc2VsZWN0KHRoaXMpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxlY3RBbGwoInBhdGgubGVnZW5kb2hsYyIpLmRhdGEoZS52aXNpYmxlJiYib2hsYyI9PT1lLnR5cGU/W3QsdF06W10pO3IuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJsZWdlbmRvaGxjIiwhMCkuYXR0cigiZCIsZnVuY3Rpb24odCxlKXtyZXR1cm4gZT8iTS0xNSwwSDBNLTgsLTZWMCI6Ik0xNSwwSDBNOCw2VjAifSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDIwLDApIikuc3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwxKSxyLmV4aXQoKS5yZW1vdmUoKSxyLmVhY2goZnVuY3Rpb24odCxyKXt2YXIgYT1uLnNlbGVjdCh0aGlzKSxpPWVbcj8iaW5jcmVhc2luZyI6ImRlY3JlYXNpbmciXSxsPXgodm9pZCAwLGkubGluZSx2LGQpO2Euc3R5bGUoImZpbGwiLCJub25lIikuY2FsbChvLmRhc2hMaW5lLGkubGluZS5kYXNoLGwpLGwmJnMuc3Ryb2tlKGEsaS5saW5lLmNvbG9yKX0pfSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi8uLi90cmFjZXMvcGllL2hlbHBlcnMiOjEwOTksIi4uLy4uL3RyYWNlcy9waWUvc3R5bGVfb25lIjoxMTA1LCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiLi4vY29sb3IiOjU5MiwiLi4vY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4uL2RyYXdpbmciOjYxMyxkMzoxNjV9XSw2NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4vZm9udHMvcGxvdGljb24iKSxsPW8uXyxjPWUuZXhwb3J0cz17fTtmdW5jdGlvbiB1KHQsZSl7dmFyIHIsYSxvPWUuY3VycmVudFRhcmdldCxzPW8uZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKSxsPW8uZ2V0QXR0cmlidXRlKCJkYXRhLXZhbCIpfHwhMCxjPXQuX2Z1bGxMYXlvdXQsdT17fSxoPWkubGlzdCh0LG51bGwsITApLGY9Yy5fY2FydGVzaWFuU3Bpa2VzRW5hYmxlZDtpZigiem9vbSI9PT1zKXt2YXIgcCxkPSJpbiI9PT1sPy41OjIsZz0oMStkKS8yLHY9KDEtZCkvMjtmb3IoYT0wO2E8aC5sZW5ndGg7YSsrKWlmKCEocj1oW2FdKS5maXhlZHJhbmdlKWlmKHA9ci5fbmFtZSwiYXV0byI9PT1sKXVbcCsiLmF1dG9yYW5nZSJdPSEwO2Vsc2UgaWYoInJlc2V0Ij09PWwpe2lmKHZvaWQgMD09PXIuX3JhbmdlSW5pdGlhbCl1W3ArIi5hdXRvcmFuZ2UiXT0hMDtlbHNle3ZhciBtPXIuX3JhbmdlSW5pdGlhbC5zbGljZSgpO3VbcCsiLnJhbmdlWzBdIl09bVswXSx1W3ArIi5yYW5nZVsxXSJdPW1bMV19dm9pZCAwIT09ci5fc2hvd1NwaWtlSW5pdGlhbCYmKHVbcCsiLnNob3dzcGlrZXMiXT1yLl9zaG93U3Bpa2VJbml0aWFsLCJvbiIhPT1mfHxyLl9zaG93U3Bpa2VJbml0aWFsfHwoZj0ib2ZmIikpfWVsc2V7dmFyIHk9W3IucjJsKHIucmFuZ2VbMF0pLHIucjJsKHIucmFuZ2VbMV0pXSx4PVtnKnlbMF0rdip5WzFdLGcqeVsxXSt2KnlbMF1dO3VbcCsiLnJhbmdlWzBdIl09ci5sMnIoeFswXSksdVtwKyIucmFuZ2VbMV0iXT1yLmwycih4WzFdKX19ZWxzZSJob3Zlcm1vZGUiIT09c3x8IngiIT09bCYmInkiIT09bHx8KGw9Yy5faXNIb3Jpej8ieSI6IngiLG8uc2V0QXR0cmlidXRlKCJkYXRhLXZhbCIsbCkpLHVbc109bDtjLl9jYXJ0ZXNpYW5TcGlrZXNFbmFibGVkPWYsbi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsdSl9ZnVuY3Rpb24gaCh0LGUpe2Zvcih2YXIgcj1lLmN1cnJlbnRUYXJnZXQsYT1yLmdldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIiksaT1yLmdldEF0dHJpYnV0ZSgiZGF0YS12YWwiKXx8ITAsbz10Ll9mdWxsTGF5b3V0Ll9zdWJwbG90cy5nbDNkfHxbXSxzPXt9LGw9YS5zcGxpdCgiLiIpLGM9MDtjPG8ubGVuZ3RoO2MrKylzW29bY10rIi4iK2xbMV1dPWk7dmFyIHU9InBhbiI9PT1pP2k6Inpvb20iO3MuZHJhZ21vZGU9dSxuLmNhbGwoIl9ndWlSZWxheW91dCIsdCxzKX1mdW5jdGlvbiBmKHQsZSl7Zm9yKHZhciByPWUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIpLGE9dC5fZnVsbExheW91dCxpPWEuX3N1YnBsb3RzLmdsM2R8fFtdLG89e30scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgbCxjPWlbc10sdT1jKyIuY2FtZXJhIixoPWMrIi5hc3BlY3RyYXRpbyIsZj1hW2NdLl9zY2VuZTsicmVzZXRMYXN0U2F2ZSI9PT1yPyhvW3UrIi51cCJdPWYudmlld0luaXRpYWwudXAsb1t1KyIuZXllIl09Zi52aWV3SW5pdGlhbC5leWUsb1t1KyIuY2VudGVyIl09Zi52aWV3SW5pdGlhbC5jZW50ZXIsbD0hMCk6InJlc2V0RGVmYXVsdCI9PT1yJiYob1t1KyIudXAiXT1udWxsLG9bdSsiLmV5ZSJdPW51bGwsb1t1KyIuY2VudGVyIl09bnVsbCxsPSEwKSxsJiYob1toKyIueCJdPWYudmlld0luaXRpYWwuYXNwZWN0cmF0aW8ueCxvW2grIi55Il09Zi52aWV3SW5pdGlhbC5hc3BlY3RyYXRpby55LG9baCsiLnoiXT1mLnZpZXdJbml0aWFsLmFzcGVjdHJhdGlvLnopfW4uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LG8pfWZ1bmN0aW9uIHAodCxlKXt2YXIgcj1lLmN1cnJlbnRUYXJnZXQsbj1yLl9wcmV2aW91c1ZhbCxhPXQuX2Z1bGxMYXlvdXQsaT1hLl9zdWJwbG90cy5nbDNkfHxbXSxvPVsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl0scz17fSxsPXt9O2lmKG4pbD1uLHIuX3ByZXZpb3VzVmFsPW51bGw7ZWxzZXtmb3IodmFyIGM9MDtjPGkubGVuZ3RoO2MrKyl7dmFyIHU9aVtjXSxoPWFbdV0sZj11KyIuaG92ZXJtb2RlIjtzW2ZdPWguaG92ZXJtb2RlLGxbZl09ITE7Zm9yKHZhciBwPTA7cDwzO3ArKyl7dmFyIGQ9b1twXSxnPXUrIi4iK2QrIi5zaG93c3Bpa2VzIjtsW2ddPSExLHNbZ109aFtkXS5zaG93c3Bpa2VzfX1yLl9wcmV2aW91c1ZhbD1zfXJldHVybiBsfWZ1bmN0aW9uIGQodCxlKXtmb3IodmFyIHI9ZS5jdXJyZW50VGFyZ2V0LGE9ci5nZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIpLGk9ci5nZXRBdHRyaWJ1dGUoImRhdGEtdmFsIil8fCEwLG89dC5fZnVsbExheW91dCxzPW8uX3N1YnBsb3RzLmdlb3x8W10sbD0wO2w8cy5sZW5ndGg7bCsrKXt2YXIgYz1zW2xdLHU9b1tjXTtpZigiem9vbSI9PT1hKXt2YXIgaD11LnByb2plY3Rpb24uc2NhbGUsZj0iaW4iPT09aT8yKmg6LjUqaDtuLmNhbGwoIl9ndWlSZWxheW91dCIsdCxjKyIucHJvamVjdGlvbi5zY2FsZSIsZil9fSJyZXNldCI9PT1hJiZ5KHQsImdlbyIpfWZ1bmN0aW9uIGcodCl7dmFyIGU9dC5fZnVsbExheW91dDtyZXR1cm4hZS5ob3Zlcm1vZGUmJihlLl9oYXMoImNhcnRlc2lhbiIpP2UuX2lzSG9yaXo/InkiOiJ4IjoiY2xvc2VzdCIpfWZ1bmN0aW9uIHYodCl7dmFyIGU9Zyh0KTtuLmNhbGwoIl9ndWlSZWxheW91dCIsdCwiaG92ZXJtb2RlIixlKX1mdW5jdGlvbiBtKHQsZSl7Zm9yKHZhciByPWUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtdmFsIiksYT10Ll9mdWxsTGF5b3V0LGk9YS5fc3VicGxvdHMubWFwYm94fHxbXSxvPXt9LHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGw9aVtzXSxjPWFbbF0uem9vbSx1PSJpbiI9PT1yPzEuMDUqYzpjLzEuMDU7b1tsKyIuem9vbSJdPXV9bi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsbyl9ZnVuY3Rpb24geSh0LGUpe2Zvcih2YXIgcj10Ll9mdWxsTGF5b3V0LGE9ci5fc3VicGxvdHNbZV18fFtdLGk9e30sbz0wO288YS5sZW5ndGg7bysrKWZvcih2YXIgcz1hW29dLGw9cltzXS5fc3VicGxvdC52aWV3SW5pdGlhbCxjPU9iamVjdC5rZXlzKGwpLHU9MDt1PGMubGVuZ3RoO3UrKyl7dmFyIGg9Y1t1XTtpW3MrIi4iK2hdPWxbaF19bi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsaSl9Yy50b0ltYWdlPXtuYW1lOiJ0b0ltYWdlIix0aXRsZTpmdW5jdGlvbih0KXt2YXIgZT0odC5fY29udGV4dC50b0ltYWdlQnV0dG9uT3B0aW9uc3x8e30pLmZvcm1hdHx8InBuZyI7cmV0dXJuIGwodCwicG5nIj09PWU/IkRvd25sb2FkIHBsb3QgYXMgYSBwbmciOiJEb3dubG9hZCBwbG90Iil9LGljb246cy5jYW1lcmEsY2xpY2s6ZnVuY3Rpb24odCl7dmFyIGU9dC5fY29udGV4dC50b0ltYWdlQnV0dG9uT3B0aW9ucyxyPXtmb3JtYXQ6ZS5mb3JtYXR8fCJwbmcifTtvLm5vdGlmaWVyKGwodCwiVGFraW5nIHNuYXBzaG90IC0gdGhpcyBtYXkgdGFrZSBhIGZldyBzZWNvbmRzIiksImxvbmciKSwic3ZnIiE9PXIuZm9ybWF0JiZvLmlzSUUoKSYmKG8ubm90aWZpZXIobCh0LCJJRSBvbmx5IHN1cHBvcnRzIHN2Zy4gIENoYW5naW5nIGZvcm1hdCB0byBzdmcuIiksImxvbmciKSxyLmZvcm1hdD0ic3ZnIiksWyJmaWxlbmFtZSIsIndpZHRoIiwiaGVpZ2h0Iiwic2NhbGUiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QgaW4gZSYmKHJbdF09ZVt0XSl9KSxuLmNhbGwoImRvd25sb2FkSW1hZ2UiLHQscikudGhlbihmdW5jdGlvbihlKXtvLm5vdGlmaWVyKGwodCwiU25hcHNob3Qgc3VjY2VlZGVkIikrIiAtICIrZSwibG9uZyIpfSkuY2F0Y2goZnVuY3Rpb24oKXtvLm5vdGlmaWVyKGwodCwiU29ycnksIHRoZXJlIHdhcyBhIHByb2JsZW0gZG93bmxvYWRpbmcgeW91ciBzbmFwc2hvdCEiKSwibG9uZyIpfSl9fSxjLnNlbmREYXRhVG9DbG91ZD17bmFtZToic2VuZERhdGFUb0Nsb3VkIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJFZGl0IGluIENoYXJ0IFN0dWRpbyIpfSxpY29uOnMuZGlzayxjbGljazpmdW5jdGlvbih0KXthLnNlbmREYXRhVG9DbG91ZCh0KX19LGMuZWRpdEluQ2hhcnRTdHVkaW89e25hbWU6ImVkaXRJbkNoYXJ0U3R1ZGlvIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJFZGl0IGluIENoYXJ0IFN0dWRpbyIpfSxpY29uOnMucGVuY2lsLGNsaWNrOmZ1bmN0aW9uKHQpe2Euc2VuZERhdGFUb0Nsb3VkKHQpfX0sYy56b29tMmQ9e25hbWU6Inpvb20yZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiWm9vbSIpfSxhdHRyOiJkcmFnbW9kZSIsdmFsOiJ6b29tIixpY29uOnMuem9vbWJveCxjbGljazp1fSxjLnBhbjJkPXtuYW1lOiJwYW4yZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiUGFuIil9LGF0dHI6ImRyYWdtb2RlIix2YWw6InBhbiIsaWNvbjpzLnBhbixjbGljazp1fSxjLnNlbGVjdDJkPXtuYW1lOiJzZWxlY3QyZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiQm94IFNlbGVjdCIpfSxhdHRyOiJkcmFnbW9kZSIsdmFsOiJzZWxlY3QiLGljb246cy5zZWxlY3Rib3gsY2xpY2s6dX0sYy5sYXNzbzJkPXtuYW1lOiJsYXNzbzJkIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJMYXNzbyBTZWxlY3QiKX0sYXR0cjoiZHJhZ21vZGUiLHZhbDoibGFzc28iLGljb246cy5sYXNzbyxjbGljazp1fSxjLnpvb21JbjJkPXtuYW1lOiJ6b29tSW4yZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiWm9vbSBpbiIpfSxhdHRyOiJ6b29tIix2YWw6ImluIixpY29uOnMuem9vbV9wbHVzLGNsaWNrOnV9LGMuem9vbU91dDJkPXtuYW1lOiJ6b29tT3V0MmQiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlpvb20gb3V0Iil9LGF0dHI6Inpvb20iLHZhbDoib3V0IixpY29uOnMuem9vbV9taW51cyxjbGljazp1fSxjLmF1dG9TY2FsZTJkPXtuYW1lOiJhdXRvU2NhbGUyZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiQXV0b3NjYWxlIil9LGF0dHI6Inpvb20iLHZhbDoiYXV0byIsaWNvbjpzLmF1dG9zY2FsZSxjbGljazp1fSxjLnJlc2V0U2NhbGUyZD17bmFtZToicmVzZXRTY2FsZTJkIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJSZXNldCBheGVzIil9LGF0dHI6Inpvb20iLHZhbDoicmVzZXQiLGljb246cy5ob21lLGNsaWNrOnV9LGMuaG92ZXJDbG9zZXN0Q2FydGVzaWFuPXtuYW1lOiJob3ZlckNsb3Nlc3RDYXJ0ZXNpYW4iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFsOiJjbG9zZXN0IixpY29uOnMudG9vbHRpcF9iYXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6dX0sYy5ob3ZlckNvbXBhcmVDYXJ0ZXNpYW49e25hbWU6ImhvdmVyQ29tcGFyZUNhcnRlc2lhbiIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiQ29tcGFyZSBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFsOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9mdWxsTGF5b3V0Ll9pc0hvcml6PyJ5IjoieCJ9LGljb246cy50b29sdGlwX2NvbXBhcmUsZ3Jhdml0eToibmUiLGNsaWNrOnV9LGMuem9vbTNkPXtuYW1lOiJ6b29tM2QiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlpvb20iKX0sYXR0cjoic2NlbmUuZHJhZ21vZGUiLHZhbDoiem9vbSIsaWNvbjpzLnpvb21ib3gsY2xpY2s6aH0sYy5wYW4zZD17bmFtZToicGFuM2QiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlBhbiIpfSxhdHRyOiJzY2VuZS5kcmFnbW9kZSIsdmFsOiJwYW4iLGljb246cy5wYW4sY2xpY2s6aH0sYy5vcmJpdFJvdGF0aW9uPXtuYW1lOiJvcmJpdFJvdGF0aW9uIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJPcmJpdGFsIHJvdGF0aW9uIil9LGF0dHI6InNjZW5lLmRyYWdtb2RlIix2YWw6Im9yYml0IixpY29uOnNbIjNkX3JvdGF0ZSJdLGNsaWNrOmh9LGMudGFibGVSb3RhdGlvbj17bmFtZToidGFibGVSb3RhdGlvbiIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiVHVybnRhYmxlIHJvdGF0aW9uIil9LGF0dHI6InNjZW5lLmRyYWdtb2RlIix2YWw6InR1cm50YWJsZSIsaWNvbjpzWyJ6LWF4aXMiXSxjbGljazpofSxjLnJlc2V0Q2FtZXJhRGVmYXVsdDNkPXtuYW1lOiJyZXNldENhbWVyYURlZmF1bHQzZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiUmVzZXQgY2FtZXJhIHRvIGRlZmF1bHQiKX0sYXR0cjoicmVzZXREZWZhdWx0IixpY29uOnMuaG9tZSxjbGljazpmfSxjLnJlc2V0Q2FtZXJhTGFzdFNhdmUzZD17bmFtZToicmVzZXRDYW1lcmFMYXN0U2F2ZTNkIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJSZXNldCBjYW1lcmEgdG8gbGFzdCBzYXZlIil9LGF0dHI6InJlc2V0TGFzdFNhdmUiLGljb246cy5tb3ZpZSxjbGljazpmfSxjLmhvdmVyQ2xvc2VzdDNkPXtuYW1lOiJob3ZlckNsb3Nlc3QzZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiVG9nZ2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFsOm51bGwsdG9nZ2xlOiEwLGljb246cy50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixjbGljazpmdW5jdGlvbih0LGUpe3ZhciByPXAodCxlKTtuLmNhbGwoIl9ndWlSZWxheW91dCIsdCxyKX19LGMuem9vbUluR2VvPXtuYW1lOiJ6b29tSW5HZW8iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlpvb20gaW4iKX0sYXR0cjoiem9vbSIsdmFsOiJpbiIsaWNvbjpzLnpvb21fcGx1cyxjbGljazpkfSxjLnpvb21PdXRHZW89e25hbWU6Inpvb21PdXRHZW8iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlpvb20gb3V0Iil9LGF0dHI6Inpvb20iLHZhbDoib3V0IixpY29uOnMuem9vbV9taW51cyxjbGljazpkfSxjLnJlc2V0R2VvPXtuYW1lOiJyZXNldEdlbyIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiUmVzZXQiKX0sYXR0cjoicmVzZXQiLHZhbDpudWxsLGljb246cy5hdXRvc2NhbGUsY2xpY2s6ZH0sYy5ob3ZlckNsb3Nlc3RHZW89e25hbWU6ImhvdmVyQ2xvc2VzdEdlbyIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiVG9nZ2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFsOm51bGwsdG9nZ2xlOiEwLGljb246cy50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixjbGljazp2fSxjLmhvdmVyQ2xvc2VzdEdsMmQ9e25hbWU6ImhvdmVyQ2xvc2VzdEdsMmQiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlRvZ2dsZSBzaG93IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIpfSxhdHRyOiJob3Zlcm1vZGUiLHZhbDpudWxsLHRvZ2dsZTohMCxpY29uOnMudG9vbHRpcF9iYXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6dn0sYy5ob3ZlckNsb3Nlc3RQaWU9e25hbWU6ImhvdmVyQ2xvc2VzdFBpZSIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiVG9nZ2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFsOiJjbG9zZXN0IixpY29uOnMudG9vbHRpcF9iYXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6dn0sYy5yZXNldFZpZXdTYW5rZXk9e25hbWU6InJlc2V0U2Fua2V5R3JvdXAiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlJlc2V0IHZpZXciKX0saWNvbjpzLmhvbWUsY2xpY2s6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXsibm9kZS5ncm91cHMiOltdLCJub2RlLngiOltdLCJub2RlLnkiOltdfSxyPTA7cjx0Ll9mdWxsRGF0YS5sZW5ndGg7cisrKXt2YXIgYT10Ll9mdWxsRGF0YVtyXS5fdmlld0luaXRpYWw7ZVsibm9kZS5ncm91cHMiXS5wdXNoKGEubm9kZS5ncm91cHMuc2xpY2UoKSksZVsibm9kZS54Il0ucHVzaChhLm5vZGUueC5zbGljZSgpKSxlWyJub2RlLnkiXS5wdXNoKGEubm9kZS55LnNsaWNlKCkpfW4uY2FsbCgicmVzdHlsZSIsdCxlKX19LGMudG9nZ2xlSG92ZXI9e25hbWU6InRvZ2dsZUhvdmVyIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJUb2dnbGUgc2hvdyBjbG9zZXN0IGRhdGEgb24gaG92ZXIiKX0sYXR0cjoiaG92ZXJtb2RlIix2YWw6bnVsbCx0b2dnbGU6ITAsaWNvbjpzLnRvb2x0aXBfYmFzaWMsZ3Jhdml0eToibmUiLGNsaWNrOmZ1bmN0aW9uKHQsZSl7dmFyIHI9cCh0LGUpO3IuaG92ZXJtb2RlPWcodCksbi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQscil9fSxjLnJlc2V0Vmlld3M9e25hbWU6InJlc2V0Vmlld3MiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlJlc2V0IHZpZXdzIil9LGljb246cy5ob21lLGNsaWNrOmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5jdXJyZW50VGFyZ2V0O3Iuc2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiLCJ6b29tIiksci5zZXRBdHRyaWJ1dGUoImRhdGEtdmFsIiwicmVzZXQiKSx1KHQsZSksci5zZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIsInJlc2V0TGFzdFNhdmUiKSxmKHQsZSkseSh0LCJnZW8iKSx5KHQsIm1hcGJveCIpfX0sYy50b2dnbGVTcGlrZWxpbmVzPXtuYW1lOiJ0b2dnbGVTcGlrZWxpbmVzIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJUb2dnbGUgU3Bpa2UgTGluZXMiKX0saWNvbjpzLnNwaWtlbGluZSxhdHRyOiJfY2FydGVzaWFuU3Bpa2VzRW5hYmxlZCIsdmFsOiJvbiIsY2xpY2s6ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPWUuX2NhcnRlc2lhblNwaWtlc0VuYWJsZWQ7ZS5fY2FydGVzaWFuU3Bpa2VzRW5hYmxlZD0ib24iPT09cj8ib2ZmIjoib24iLG4uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0ib24iPT09dC5fZnVsbExheW91dC5fY2FydGVzaWFuU3Bpa2VzRW5hYmxlZCxyPWkubGlzdCh0LG51bGwsITApLG49e30sYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgbz1yW2FdO25bby5fbmFtZSsiLnNob3dzcGlrZXMiXT0hIWV8fG8uX3Nob3dTcGlrZUluaXRpYWx9cmV0dXJuIG59KHQpKX19LGMucmVzZXRWaWV3TWFwYm94PXtuYW1lOiJyZXNldFZpZXdNYXBib3giLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlJlc2V0IHZpZXciKX0sYXR0cjoicmVzZXQiLGljb246cy5ob21lLGNsaWNrOmZ1bmN0aW9uKHQpe3kodCwibWFwYm94Iil9fSxjLnpvb21Jbk1hcGJveD17bmFtZToiem9vbUluTWFwYm94Iix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJab29tIGluIil9LGF0dHI6Inpvb20iLHZhbDoiaW4iLGljb246cy56b29tX3BsdXMsY2xpY2s6bX0sYy56b29tT3V0TWFwYm94PXtuYW1lOiJ6b29tT3V0TWFwYm94Iix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJab29tIG91dCIpfSxhdHRyOiJ6b29tIix2YWw6Im91dCIsaWNvbjpzLnpvb21fbWludXMsY2xpY2s6bX19LHsiLi4vLi4vZm9udHMvcGxvdGljb24iOjY5NywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuLi8uLi9wbG90cy9wbG90cyI6ODI2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0sNjUwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IubWFuYWdlPXQoIi4vbWFuYWdlIil9LHsiLi9tYW5hZ2UiOjY1MX1dLDY1MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxhPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgiLi9tb2RlYmFyIikscz10KCIuL2J1dHRvbnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPXQuX2NvbnRleHQsbD1lLl9tb2RlQmFyO2lmKHIuZGlzcGxheU1vZGVCYXJ8fHIud2F0ZXJtYXJrKXtpZighQXJyYXkuaXNBcnJheShyLm1vZGVCYXJCdXR0b25zVG9SZW1vdmUpKXRocm93IG5ldyBFcnJvcihbIiptb2RlQmFyQnV0dG9uc1RvUmVtb3ZlKiBjb25maWd1cmF0aW9uIG9wdGlvbnMiLCJtdXN0IGJlIGFuIGFycmF5LiJdLmpvaW4oIiAiKSk7aWYoIUFycmF5LmlzQXJyYXkoci5tb2RlQmFyQnV0dG9uc1RvQWRkKSl0aHJvdyBuZXcgRXJyb3IoWyIqbW9kZUJhckJ1dHRvbnNUb0FkZCogY29uZmlndXJhdGlvbiBvcHRpb25zIiwibXVzdCBiZSBhbiBhcnJheS4iXS5qb2luKCIgIikpO3ZhciBjLHU9ci5tb2RlQmFyQnV0dG9ucztjPUFycmF5LmlzQXJyYXkodSkmJnUubGVuZ3RoP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWZvcih2YXIgcj10W2VdLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGE9cltuXTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKHZvaWQgMD09PXNbYV0pdGhyb3cgbmV3IEVycm9yKFsiKm1vZGVCYXJCdXR0b25zKiBjb25maWd1cmF0aW9uIG9wdGlvbnMiLCJpbnZhbGlkIGJ1dHRvbiBuYW1lIl0uam9pbigiICIpKTt0W2VdW25dPXNbYV19fXJldHVybiB0fSh1KTohci5kaXNwbGF5TW9kZUJhciYmci53YXRlcm1hcms/W106ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPXQuX2Z1bGxEYXRhLG89dC5fY29udGV4dCxsPW8ubW9kZUJhckJ1dHRvbnNUb1JlbW92ZSxjPW8ubW9kZUJhckJ1dHRvbnNUb0FkZCx1PWUuX2hhcygiY2FydGVzaWFuIiksaD1lLl9oYXMoImdsM2QiKSxmPWUuX2hhcygiZ2VvIikscD1lLl9oYXMoInBpZSIpLGQ9ZS5faGFzKCJmdW5uZWxhcmVhIiksZz1lLl9oYXMoImdsMmQiKSx2PWUuX2hhcygidGVybmFyeSIpLG09ZS5faGFzKCJtYXBib3giKSx5PWUuX2hhcygicG9sYXIiKSx4PWUuX2hhcygic2Fua2V5IiksYj1mdW5jdGlvbih0KXtmb3IodmFyIGU9bi5saXN0KHtfZnVsbExheW91dDp0fSxudWxsLCEwKSxyPTA7cjxlLmxlbmd0aDtyKyspaWYoIWVbcl0uZml4ZWRyYW5nZSlyZXR1cm4hMTtyZXR1cm4hMH0oZSksXz1bXTtmdW5jdGlvbiB3KHQpe2lmKHQubGVuZ3RoKXtmb3IodmFyIGU9W10scj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdOy0xPT09bC5pbmRleE9mKG4pJiZlLnB1c2goc1tuXSl9Xy5wdXNoKGUpfX12YXIgaz1bInRvSW1hZ2UiXTtvLnNob3dFZGl0SW5DaGFydFN0dWRpbz9rLnB1c2goImVkaXRJbkNoYXJ0U3R1ZGlvIik6by5zaG93U2VuZFRvQ2xvdWQmJmsucHVzaCgic2VuZERhdGFUb0Nsb3VkIik7dyhrKTt2YXIgVD1bXSxNPVtdLEE9W10sUz1bXTsodXx8Z3x8cHx8ZHx8dikrZitoK20reT4xPyhNPVsidG9nZ2xlSG92ZXIiXSxBPVsicmVzZXRWaWV3cyJdKTpmPyhUPVsiem9vbUluR2VvIiwiem9vbU91dEdlbyJdLE09WyJob3ZlckNsb3Nlc3RHZW8iXSxBPVsicmVzZXRHZW8iXSk6aD8oTT1bImhvdmVyQ2xvc2VzdDNkIl0sQT1bInJlc2V0Q2FtZXJhRGVmYXVsdDNkIiwicmVzZXRDYW1lcmFMYXN0U2F2ZTNkIl0pOm0/KFQ9WyJ6b29tSW5NYXBib3giLCJ6b29tT3V0TWFwYm94Il0sTT1bInRvZ2dsZUhvdmVyIl0sQT1bInJlc2V0Vmlld01hcGJveCJdKTpnP009WyJob3ZlckNsb3Nlc3RHbDJkIl06cD9NPVsiaG92ZXJDbG9zZXN0UGllIl06eD8oTT1bImhvdmVyQ2xvc2VzdENhcnRlc2lhbiIsImhvdmVyQ29tcGFyZUNhcnRlc2lhbiJdLEE9WyJyZXNldFZpZXdTYW5rZXkiXSk6TT1bInRvZ2dsZUhvdmVyIl07dSYmKE09WyJ0b2dnbGVTcGlrZWxpbmVzIiwiaG92ZXJDbG9zZXN0Q2FydGVzaWFuIiwiaG92ZXJDb21wYXJlQ2FydGVzaWFuIl0pOyhmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZighaS50cmFjZUlzKHRbZV0sIm5vSG92ZXIiKSlyZXR1cm4hMTtyZXR1cm4hMH0pKHIpJiYoTT1bXSk7IXUmJiFnfHxifHwoVD1bInpvb21JbjJkIiwiem9vbU91dDJkIiwiYXV0b1NjYWxlMmQiXSwicmVzZXRWaWV3cyIhPT1BWzBdJiYoQT1bInJlc2V0U2NhbGUyZCJdKSk7aD9TPVsiem9vbTNkIiwicGFuM2QiLCJvcmJpdFJvdGF0aW9uIiwidGFibGVSb3RhdGlvbiJdOih1fHxnKSYmIWJ8fHY/Uz1bInpvb20yZCIsInBhbjJkIl06bXx8Zj9TPVsicGFuMmQiXTp5JiYoUz1bInpvb20yZCJdKTsoZnVuY3Rpb24odCl7Zm9yKHZhciBlPSExLHI9MDtyPHQubGVuZ3RoJiYhZTtyKyspe3ZhciBuPXRbcl07bi5fbW9kdWxlJiZuLl9tb2R1bGUuc2VsZWN0UG9pbnRzJiYoaS50cmFjZUlzKG4sInNjYXR0ZXItbGlrZSIpPyhhLmhhc01hcmtlcnMobil8fGEuaGFzVGV4dChuKSkmJihlPSEwKTppLnRyYWNlSXMobiwiYm94LXZpb2xpbiIpJiYiYWxsIiE9PW4uYm94cG9pbnRzJiYiYWxsIiE9PW4ucG9pbnRzfHwoZT0hMCkpfXJldHVybiBlfSkocikmJlMucHVzaCgic2VsZWN0MmQiLCJsYXNzbzJkIik7cmV0dXJuIHcoUyksdyhULmNvbmNhdChBKSksdyhNKSxmdW5jdGlvbih0LGUpe2lmKGUubGVuZ3RoKWlmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdC5wdXNoKGVbcl0pO2Vsc2UgdC5wdXNoKGUpO3JldHVybiB0fShfLGMpfSh0KSxsP2wudXBkYXRlKHQsYyk6ZS5fbW9kZUJhcj1vKHQsYyl9ZWxzZSBsJiYobC5kZXN0cm95KCksZGVsZXRlIGUuX21vZGVCYXIpfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4vYnV0dG9ucyI6NjQ5LCIuL21vZGViYXIiOjY1Mn1dLDY1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vZm9udHMvcGxvdGljb24iKSxzPW5ldyBET01QYXJzZXI7ZnVuY3Rpb24gbCh0KXt0aGlzLmNvbnRhaW5lcj10LmNvbnRhaW5lcix0aGlzLmVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy51cGRhdGUodC5ncmFwaEluZm8sdC5idXR0b25zKSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpfXZhciBjPWwucHJvdG90eXBlO2MudXBkYXRlPWZ1bmN0aW9uKHQsZSl7dGhpcy5ncmFwaEluZm89dDt2YXIgcj10aGlzLmdyYXBoSW5mby5fY29udGV4dCxuPXRoaXMuZ3JhcGhJbmZvLl9mdWxsTGF5b3V0LGE9Im1vZGViYXItIituLl91aWQ7dGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQiLGEpLHRoaXMuX3VpZD1hLHRoaXMuZWxlbWVudC5jbGFzc05hbWU9Im1vZGViYXIiLCJob3ZlciI9PT1yLmRpc3BsYXlNb2RlQmFyJiYodGhpcy5lbGVtZW50LmNsYXNzTmFtZSs9IiBtb2RlYmFyLS1ob3ZlciBlYXNlLWJnIiksInYiPT09bi5tb2RlYmFyLm9yaWVudGF0aW9uJiYodGhpcy5lbGVtZW50LmNsYXNzTmFtZSs9IiB2ZXJ0aWNhbCIsZT1lLnJldmVyc2UoKSk7dmFyIG89bi5tb2RlYmFyLHM9ImhvdmVyIj09PXIuZGlzcGxheU1vZGVCYXI/Ii5qcy1wbG90bHktcGxvdCAucGxvdGx5OmhvdmVyICI6IiI7aS5kZWxldGVSZWxhdGVkU3R5bGVSdWxlKGEpLGkuYWRkUmVsYXRlZFN0eWxlUnVsZShhLHMrIiMiK2ErIiAubW9kZWJhci1ncm91cCIsImJhY2tncm91bmQtY29sb3I6ICIrby5iZ2NvbG9yKSxpLmFkZFJlbGF0ZWRTdHlsZVJ1bGUoYSwiIyIrYSsiIC5tb2RlYmFyLWJ0biAuaWNvbiBwYXRoIiwiZmlsbDogIitvLmNvbG9yKSxpLmFkZFJlbGF0ZWRTdHlsZVJ1bGUoYSwiIyIrYSsiIC5tb2RlYmFyLWJ0bjpob3ZlciAuaWNvbiBwYXRoIiwiZmlsbDogIitvLmFjdGl2ZWNvbG9yKSxpLmFkZFJlbGF0ZWRTdHlsZVJ1bGUoYSwiIyIrYSsiIC5tb2RlYmFyLWJ0bi5hY3RpdmUgLmljb24gcGF0aCIsImZpbGw6ICIrby5hY3RpdmVjb2xvcik7dmFyIGw9IXRoaXMuaGFzQnV0dG9ucyhlKSxjPXRoaXMuaGFzTG9nbyE9PXIuZGlzcGxheWxvZ28sdT10aGlzLmxvY2FsZSE9PXIubG9jYWxlO2lmKHRoaXMubG9jYWxlPXIubG9jYWxlLChsfHxjfHx1KSYmKHRoaXMucmVtb3ZlQWxsQnV0dG9ucygpLHRoaXMudXBkYXRlQnV0dG9ucyhlKSxyLndhdGVybWFya3x8ci5kaXNwbGF5bG9nbykpe3ZhciBoPXRoaXMuZ2V0TG9nbygpO3Iud2F0ZXJtYXJrJiYoaC5jbGFzc05hbWU9aC5jbGFzc05hbWUrIiB3YXRlcm1hcmsiKSwidiI9PT1uLm1vZGViYXIub3JpZW50YXRpb24/dGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZShoLHRoaXMuZWxlbWVudC5jaGlsZE5vZGVzWzBdKTp0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoaCksdGhpcy5oYXNMb2dvPSEwfXRoaXMudXBkYXRlQWN0aXZlQnV0dG9uKCl9LGMudXBkYXRlQnV0dG9ucz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuYnV0dG9ucz10LHRoaXMuYnV0dG9uRWxlbWVudHM9W10sdGhpcy5idXR0b25zTmFtZXM9W10sdGhpcy5idXR0b25zLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9ZS5jcmVhdGVHcm91cCgpO3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10Lm5hbWU7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtdXN0IHByb3ZpZGUgYnV0dG9uICduYW1lJyBpbiBidXR0b24gY29uZmlnIik7aWYoLTEhPT1lLmJ1dHRvbnNOYW1lcy5pbmRleE9mKG4pKXRocm93IG5ldyBFcnJvcigiYnV0dG9uIG5hbWUgJyIrbisiJyBpcyB0YWtlbiIpO2UuYnV0dG9uc05hbWVzLnB1c2gobik7dmFyIGE9ZS5jcmVhdGVCdXR0b24odCk7ZS5idXR0b25FbGVtZW50cy5wdXNoKGEpLHIuYXBwZW5kQ2hpbGQoYSl9KSxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocil9KX0sYy5jcmVhdGVHcm91cD1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0ibW9kZWJhci1ncm91cCIsdH0sYy5jcmVhdGVCdXR0b249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyLnNldEF0dHJpYnV0ZSgicmVsIiwidG9vbHRpcCIpLHIuY2xhc3NOYW1lPSJtb2RlYmFyLWJ0biI7dmFyIGE9dC50aXRsZTt2b2lkIDA9PT1hP2E9dC5uYW1lOiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYoYT1hKHRoaXMuZ3JhcGhJbmZvKSksKGF8fDA9PT1hKSYmci5zZXRBdHRyaWJ1dGUoImRhdGEtdGl0bGUiLGEpLHZvaWQgMCE9PXQuYXR0ciYmci5zZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIsdC5hdHRyKTt2YXIgaT10LnZhbDtpZih2b2lkIDAhPT1pJiYoImZ1bmN0aW9uIj09dHlwZW9mIGkmJihpPWkodGhpcy5ncmFwaEluZm8pKSxyLnNldEF0dHJpYnV0ZSgiZGF0YS12YWwiLGkpKSwiZnVuY3Rpb24iIT10eXBlb2YgdC5jbGljayl0aHJvdyBuZXcgRXJyb3IoIm11c3QgcHJvdmlkZSBidXR0b24gJ2NsaWNrJyBmdW5jdGlvbiBpbiBidXR0b24gY29uZmlnIik7ci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24ocil7dC5jbGljayhlLmdyYXBoSW5mbyxyKSxlLnVwZGF0ZUFjdGl2ZUJ1dHRvbihyLmN1cnJlbnRUYXJnZXQpfSksci5zZXRBdHRyaWJ1dGUoImRhdGEtdG9nZ2xlIix0LnRvZ2dsZXx8ITEpLHQudG9nZ2xlJiZuLnNlbGVjdChyKS5jbGFzc2VkKCJhY3RpdmUiLCEwKTt2YXIgcz10Lmljb247cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHM/ci5hcHBlbmRDaGlsZChzKCkpOnIuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVJY29uKHN8fG8ucXVlc3Rpb24pKSxyLnNldEF0dHJpYnV0ZSgiZGF0YS1ncmF2aXR5Iix0LmdyYXZpdHl8fCJuIikscn0sYy5jcmVhdGVJY29uPWZ1bmN0aW9uKHQpe3ZhciBlLHI9YSh0LmhlaWdodCk/TnVtYmVyKHQuaGVpZ2h0KTp0LmFzY2VudC10LmRlc2NlbnQsbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciO2lmKHQucGF0aCl7KGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sInN2ZyIpKS5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLFswLDAsdC53aWR0aCxyXS5qb2luKCIgIikpLGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsImljb24iKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobiwicGF0aCIpO2kuc2V0QXR0cmlidXRlKCJkIix0LnBhdGgpLHQudHJhbnNmb3JtP2kuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQudHJhbnNmb3JtKTp2b2lkIDAhPT10LmFzY2VudCYmaS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIm1hdHJpeCgxIDAgMCAtMSAwICIrdC5hc2NlbnQrIikiKSxlLmFwcGVuZENoaWxkKGkpfXQuc3ZnJiYoZT1zLnBhcnNlRnJvbVN0cmluZyh0LnN2ZywiYXBwbGljYXRpb24veG1sIikuY2hpbGROb2Rlc1swXSk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCIxZW0iKSxlLnNldEF0dHJpYnV0ZSgid2lkdGgiLCIxZW0iKSxlfSxjLnVwZGF0ZUFjdGl2ZUJ1dHRvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdyYXBoSW5mby5fZnVsbExheW91dCxyPXZvaWQgMCE9PXQ/dC5nZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIpOm51bGw7dGhpcy5idXR0b25FbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBhPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbCIpfHwhMCxvPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKSxzPSJ0cnVlIj09PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXRvZ2dsZSIpLGw9bi5zZWxlY3QodCk7aWYocylvPT09ciYmbC5jbGFzc2VkKCJhY3RpdmUiLCFsLmNsYXNzZWQoImFjdGl2ZSIpKTtlbHNle3ZhciBjPW51bGw9PT1vP286aS5uZXN0ZWRQcm9wZXJ0eShlLG8pLmdldCgpO2wuY2xhc3NlZCgiYWN0aXZlIixjPT09YSl9fSl9LGMuaGFzQnV0dG9ucz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmJ1dHRvbnM7aWYoIWUpcmV0dXJuITE7aWYodC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil7aWYodFtyXS5sZW5ndGghPT1lW3JdLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHRbcl0ubGVuZ3RoO24rKylpZih0W3JdW25dLm5hbWUhPT1lW3JdW25dLm5hbWUpcmV0dXJuITF9cmV0dXJuITB9LGMuZ2V0TG9nbz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY3JlYXRlR3JvdXAoKSxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyZXR1cm4gZS5ocmVmPSJodHRwczovL3Bsb3QubHkvIixlLnRhcmdldD0iX2JsYW5rIixlLnNldEF0dHJpYnV0ZSgiZGF0YS10aXRsZSIsaS5fKHRoaXMuZ3JhcGhJbmZvLCJQcm9kdWNlZCB3aXRoIFBsb3RseSIpKSxlLmNsYXNzTmFtZT0ibW9kZWJhci1idG4gcGxvdGx5anNpY29uIG1vZGViYXItYnRuLS1sb2dvIixlLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlSWNvbihvLm5ld3Bsb3RseWxvZ28pKSx0LmFwcGVuZENoaWxkKGUpLHR9LGMucmVtb3ZlQWxsQnV0dG9ucz1mdW5jdGlvbigpe2Zvcig7dGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQ7KXRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7dGhpcy5oYXNMb2dvPSExfSxjLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpLnJlbW92ZUVsZW1lbnQodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcigiLm1vZGViYXIiKSksaS5kZWxldGVSZWxhdGVkU3R5bGVSdWxlKHRoaXMuX3VpZCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQsYT1uZXcgbCh7Z3JhcGhJbmZvOnQsY29udGFpbmVyOnIuX21vZGViYXJkaXYubm9kZSgpLGJ1dHRvbnM6ZX0pO3JldHVybiByLl9wcml2YXRlcGxvdCYmbi5zZWxlY3QoYS5lbGVtZW50KS5hcHBlbmQoInNwYW4iKS5jbGFzc2VkKCJiYWRnZS1wcml2YXRlIGZsb2F0LS1sZWZ0IiwhMCkudGV4dCgiUFJJVkFURSIpLGF9fSx7Ii4uLy4uL2ZvbnRzL3Bsb3RpY29uIjo2OTcsIi4uLy4uL2xpYiI6NzE3LGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDY1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxhPXQoIi4uL2NvbG9yL2F0dHJpYnV0ZXMiKSxpPSgwLHQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSkoImJ1dHRvbiIse3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSxzdGVwOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJtb250aCIsInllYXIiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwiYWxsIl0sZGZsdDoibW9udGgiLGVkaXRUeXBlOiJwbG90In0sc3RlcG1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImJhY2t3YXJkIiwidG9kYXRlIl0sZGZsdDoiYmFja3dhcmQiLGVkaXRUeXBlOiJwbG90In0sY291bnQ6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJwbG90In0sbGFiZWw6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9KTtlLmV4cG9ydHM9e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJwbG90In0sYnV0dG9uczppLHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGVkaXRUeXBlOiJwbG90In0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6ImxlZnQiLGVkaXRUeXBlOiJwbG90In0seTp7dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjMsZWRpdFR5cGU6InBsb3QifSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxlIiwiYm90dG9tIl0sZGZsdDoiYm90dG9tIixlZGl0VHlwZToicGxvdCJ9LGZvbnQ6bih7ZWRpdFR5cGU6InBsb3QifSksYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6YS5saWdodExpbmUsZWRpdFR5cGU6InBsb3QifSxhY3RpdmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJwbG90In0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRpdFR5cGU6InBsb3QifSxib3JkZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9fSx7Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4uL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MX1dLDY1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3lQYWQ6LjAyLG1pbkJ1dHRvbldpZHRoOjMwLHJ4OjMscnk6MyxsaWdodEFtb3VudDoyNSxkYXJrQW1vdW50OjEwfX0se31dLDY1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uL2NvbG9yIiksaT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksbz10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIpLGw9dCgiLi9jb25zdGFudHMiKTtmdW5jdGlvbiBjKHQsZSxyLGEpe3ZhciBpPWEuY2FsZW5kYXI7ZnVuY3Rpb24gbyhyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUscy5idXR0b25zLHIsYSl9aWYobygidmlzaWJsZSIpKXt2YXIgbD1vKCJzdGVwIik7ImFsbCIhPT1sJiYoIWl8fCJncmVnb3JpYW4iPT09aXx8Im1vbnRoIiE9PWwmJiJ5ZWFyIiE9PWw/bygic3RlcG1vZGUiKTplLnN0ZXBtb2RlPSJiYWNrd2FyZCIsbygiY291bnQiKSksbygibGFiZWwiKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHUsaCl7dmFyIGY9dC5yYW5nZXNlbGVjdG9yfHx7fSxwPWkubmV3Q29udGFpbmVyKGUsInJhbmdlc2VsZWN0b3IiKTtmdW5jdGlvbiBkKHQsZSl7cmV0dXJuIG4uY29lcmNlKGYscCxzLHQsZSl9aWYoZCgidmlzaWJsZSIsbyhmLHAse25hbWU6ImJ1dHRvbnMiLGhhbmRsZUl0ZW1EZWZhdWx0czpjLGNhbGVuZGFyOmh9KS5sZW5ndGg+MCkpe3ZhciBnPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIGVbcl0uYW5jaG9yPT09dC5faWR9KSxhPTAsaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1lW25baV1dLmRvbWFpbjtvJiYoYT1NYXRoLm1heChvWzFdLGEpKX1yZXR1cm5bdC5kb21haW5bMF0sYStsLnlQYWRdfShlLHIsdSk7ZCgieCIsZ1swXSksZCgieSIsZ1sxXSksbi5ub25lT3JBbGwodCxlLFsieCIsInkiXSksZCgieGFuY2hvciIpLGQoInlhbmNob3IiKSxuLmNvZXJjZUZvbnQoZCwiZm9udCIsci5mb250KTt2YXIgdj1kKCJiZ2NvbG9yIik7ZCgiYWN0aXZlY29sb3IiLGEuY29udHJhc3QodixsLmxpZ2h0QW1vdW50LGwuZGFya0Ftb3VudCkpLGQoImJvcmRlcmNvbG9yIiksZCgiYm9yZGVyd2lkdGgiKX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NzYxLCIuLi9jb2xvciI6NTkyLCIuL2F0dHJpYnV0ZXMiOjY1MywiLi9jb25zdGFudHMiOjY1NH1dLDY1NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksbz10KCIuLi9jb2xvciIpLHM9dCgiLi4vZHJhd2luZyIpLGw9dCgiLi4vLi4vbGliIiksYz10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSx1PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLGg9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLGY9aC5MSU5FX1NQQUNJTkcscD1oLkZST01fVEwsZD1oLkZST01fQlIsZz10KCIuL2NvbnN0YW50cyIpLHY9dCgiLi9nZXRfdXBkYXRlX29iamVjdCIpO2Z1bmN0aW9uIG0odCl7cmV0dXJuIHQuX2lkfWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPWwuZW5zdXJlU2luZ2xlKHQsInJlY3QiLCJzZWxlY3Rvci1yZWN0IixmdW5jdGlvbih0KXt0LmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKX0pO24uYXR0cih7cng6Zy5yeCxyeTpnLnJ5fSksbi5jYWxsKG8uc3Ryb2tlLGUuYm9yZGVyY29sb3IpLmNhbGwoby5maWxsLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuX2lzQWN0aXZlfHxlLl9pc0hvdmVyZWQ/dC5hY3RpdmVjb2xvcjp0LmJnY29sb3J9KGUscikpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGUuYm9yZGVyd2lkdGgrInB4Iil9ZnVuY3Rpb24geCh0LGUscixuKXtsLmVuc3VyZVNpbmdsZSh0LCJ0ZXh0Iiwic2VsZWN0b3ItdGV4dCIsZnVuY3Rpb24odCl7dC5jbGFzc2VkKCJ1c2VyLXNlbGVjdC1ub25lIiwhMCkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKX0pLmNhbGwocy5mb250LGUuZm9udCkudGV4dChmdW5jdGlvbih0LGUpe2lmKHQubGFiZWwpcmV0dXJuIGU/bC50ZW1wbGF0ZVN0cmluZyh0LmxhYmVsLGUpOnQubGFiZWw7cmV0dXJuImFsbCI9PT10LnN0ZXA/ImFsbCI6dC5jb3VudCt0LnN0ZXAuY2hhckF0KDApfShyLG4uX2Z1bGxMYXlvdXQuX21ldGEpKS5jYWxsKGZ1bmN0aW9uKHQpe2MuY29udmVydFRvVHNwYW5zKHQsbil9KX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5faW5mb2xheWVyLnNlbGVjdEFsbCgiLnJhbmdlc2VsZWN0b3IiKS5kYXRhKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT11Lmxpc3QodCwieCIsITApLHI9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgYT1lW25dO2EucmFuZ2VzZWxlY3RvciYmYS5yYW5nZXNlbGVjdG9yLnZpc2libGUmJnIucHVzaChhKX1yZXR1cm4gcn0odCksbSk7ZS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInJhbmdlc2VsZWN0b3IiLCEwKSxlLmV4aXQoKS5yZW1vdmUoKSxlLnN0eWxlKHtjdXJzb3I6InBvaW50ZXIiLCJwb2ludGVyLWV2ZW50cyI6ImFsbCJ9KSxlLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9bi5zZWxlY3QodGhpcyksbz1lLHU9by5yYW5nZXNlbGVjdG9yLGg9ci5zZWxlY3RBbGwoImcuYnV0dG9uIikuZGF0YShsLmZpbHRlclZpc2libGUodS5idXR0b25zKSk7aC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJ1dHRvbiIsITApLGguZXhpdCgpLnJlbW92ZSgpLGguZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxpPXYobyxlKTtlLl9pc0FjdGl2ZT1mdW5jdGlvbih0LGUscil7aWYoImFsbCI9PT1lLnN0ZXApcmV0dXJuITA9PT10LmF1dG9yYW5nZTt2YXIgbj1PYmplY3Qua2V5cyhyKTtyZXR1cm4gdC5yYW5nZVswXT09PXJbblswXV0mJnQucmFuZ2VbMV09PT1yW25bMV1dfShvLGUsaSksci5jYWxsKHksdSxlKSxyLmNhbGwoeCx1LGUsdCksci5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dC5fZHJhZ2dlZHx8YS5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsaSl9KSxyLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZS5faXNIb3ZlcmVkPSEwLHIuY2FsbCh5LHUsZSl9KSxyLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtlLl9pc0hvdmVyZWQ9ITEsci5jYWxsKHksdSxlKX0pfSksZnVuY3Rpb24odCxlLHIsYSxvKXt2YXIgdT0wLGg9MCx2PXIuYm9yZGVyd2lkdGg7ZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyksZT10LnNlbGVjdCgiLnNlbGVjdG9yLXRleHQiKSxhPXIuZm9udC5zaXplKmYsaT1NYXRoLm1heChhKmMubGluZUNvdW50KGUpLDE2KSszO2g9TWF0aC5tYXgoaCxpKX0pLGUuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpLGU9dC5zZWxlY3QoIi5zZWxlY3Rvci1yZWN0IiksYT10LnNlbGVjdCgiLnNlbGVjdG9yLXRleHQiKSxpPWEubm9kZSgpJiZzLmJCb3goYS5ub2RlKCkpLndpZHRoLG89ci5mb250LnNpemUqZixsPWMubGluZUNvdW50KGEpLHA9TWF0aC5tYXgoaSsxMCxnLm1pbkJ1dHRvbldpZHRoKTt0LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyh2K3UpKyIsIit2KyIpIiksZS5hdHRyKHt4OjAseTowLHdpZHRoOnAsaGVpZ2h0Omh9KSxjLnBvc2l0aW9uVGV4dChhLHAvMixoLzItKGwtMSkqby8yKzMpLHUrPXArNX0pO3ZhciBtPXQuX2Z1bGxMYXlvdXQuX3NpemUseT1tLmwrbS53KnIueCx4PW0udCttLmgqKDEtci55KSxiPSJsZWZ0IjtsLmlzUmlnaHRBbmNob3IocikmJih5LT11LGI9InJpZ2h0Iik7bC5pc0NlbnRlckFuY2hvcihyKSYmKHktPXUvMixiPSJjZW50ZXIiKTt2YXIgXz0idG9wIjtsLmlzQm90dG9tQW5jaG9yKHIpJiYoeC09aCxfPSJib3R0b20iKTtsLmlzTWlkZGxlQW5jaG9yKHIpJiYoeC09aC8yLF89Im1pZGRsZSIpO3U9TWF0aC5jZWlsKHUpLGg9TWF0aC5jZWlsKGgpLHk9TWF0aC5yb3VuZCh5KSx4PU1hdGgucm91bmQoeCksaS5hdXRvTWFyZ2luKHQsYSsiLXJhbmdlLXNlbGVjdG9yIix7eDpyLngseTpyLnksbDp1KnBbYl0scjp1KmRbYl0sYjpoKmRbX10sdDpoKnBbX119KSxvLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3krIiwiK3grIikiKX0odCxoLHUsby5fbmFtZSxyKX0pfX0seyIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo4MjYsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2NvbG9yIjo1OTIsIi4uL2RyYXdpbmciOjYxMywiLi9jb25zdGFudHMiOjY1NCwiLi9nZXRfdXBkYXRlX29iamVjdCI6NjU3LGQzOjE2NX1dLDY1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX25hbWUsYT17fTtpZigiYWxsIj09PWUuc3RlcClhW3IrIi5hdXRvcmFuZ2UiXT0hMDtlbHNle3ZhciBpPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYT10LnJhbmdlLGk9bmV3IERhdGUodC5yMmwoYVsxXSkpLG89ZS5zdGVwLHM9ZS5jb3VudDtzd2l0Y2goZS5zdGVwbW9kZSl7Y2FzZSJiYWNrd2FyZCI6cj10Lmwycigrbi50aW1lW29dLnV0Yy5vZmZzZXQoaSwtcykpO2JyZWFrO2Nhc2UidG9kYXRlIjp2YXIgbD1uLnRpbWVbb10udXRjLm9mZnNldChpLC1zKTtyPXQubDJyKCtuLnRpbWVbb10udXRjLmNlaWwobCkpfXZhciBjPWFbMV07cmV0dXJuW3IsY119KHQsZSk7YVtyKyIucmFuZ2VbMF0iXT1pWzBdLGFbcisiLnJhbmdlWzFdIl09aVsxXX1yZXR1cm4gYX19LHtkMzoxNjV9XSw2NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6InJhbmdlc2VsZWN0b3IiLHNjaGVtYTp7c3VicGxvdHM6e3hheGlzOntyYW5nZXNlbGVjdG9yOnQoIi4vYXR0cmlidXRlcyIpfX19LGxheW91dEF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksaGFuZGxlRGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGRyYXc6dCgiLi9kcmF3Iil9fSx7Ii4vYXR0cmlidXRlcyI6NjUzLCIuL2RlZmF1bHRzIjo2NTUsIi4vZHJhdyI6NjU2fV0sNjU5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2NvbG9yL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om4uYmFja2dyb3VuZCxlZGl0VHlwZToicGxvdCJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJwbG90In0sYm9yZGVyd2lkdGg6e3ZhbFR5cGU6ImludGVnZXIiLGRmbHQ6MCxtaW46MCxlZGl0VHlwZToicGxvdCJ9LGF1dG9yYW5nZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOnsicmFuZ2VbMF0iOnZvaWQgMCwicmFuZ2VbMV0iOnZvaWQgMH19LHJhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMiLGltcGxpZWRFZGl0czp7Il5hdXRvcmFuZ2UiOiExfX0se3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMiLGltcGxpZWRFZGl0czp7Il5hdXRvcmFuZ2UiOiExfX1dLGVkaXRUeXBlOiJjYWxjIixpbXBsaWVkRWRpdHM6e2F1dG9yYW5nZTohMX19LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixkZmx0Oi4xNSxtaW46MCxtYXg6MSxlZGl0VHlwZToicGxvdCJ9LHZpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9fSx7Ii4uL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MX1dLDY2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKS5saXN0LGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSIpLmdldEF1dG9SYW5nZSxpPXQoIi4vY29uc3RhbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uKHQsIngiLCEwKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPWVbcl0scz1vW2kubmFtZV07cyYmcy52aXNpYmxlJiZzLmF1dG9yYW5nZSYmKHMuX2lucHV0LmF1dG9yYW5nZT0hMCxzLl9pbnB1dC5yYW5nZT1zLnJhbmdlPWEodCxvKSl9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3JhbmdlIjo3NjQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuL2NvbnN0YW50cyI6NjYxfV0sNjYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bmFtZToicmFuZ2VzbGlkZXIiLGNvbnRhaW5lckNsYXNzTmFtZToicmFuZ2VzbGlkZXItY29udGFpbmVyIixiZ0NsYXNzTmFtZToicmFuZ2VzbGlkZXItYmciLHJhbmdlUGxvdENsYXNzTmFtZToicmFuZ2VzbGlkZXItcmFuZ2VwbG90IixtYXNrTWluQ2xhc3NOYW1lOiJyYW5nZXNsaWRlci1tYXNrLW1pbiIsbWFza01heENsYXNzTmFtZToicmFuZ2VzbGlkZXItbWFzay1tYXgiLHNsaWRlQm94Q2xhc3NOYW1lOiJyYW5nZXNsaWRlci1zbGlkZWJveCIsZ3JhYmJlck1pbkNsYXNzTmFtZToicmFuZ2VzbGlkZXItZ3JhYmJlci1taW4iLGdyYWJBcmVhTWluQ2xhc3NOYW1lOiJyYW5nZXNsaWRlci1ncmFiYXJlYS1taW4iLGhhbmRsZU1pbkNsYXNzTmFtZToicmFuZ2VzbGlkZXItaGFuZGxlLW1pbiIsZ3JhYmJlck1heENsYXNzTmFtZToicmFuZ2VzbGlkZXItZ3JhYmJlci1tYXgiLGdyYWJBcmVhTWF4Q2xhc3NOYW1lOiJyYW5nZXNsaWRlci1ncmFiYXJlYS1tYXgiLGhhbmRsZU1heENsYXNzTmFtZToicmFuZ2VzbGlkZXItaGFuZGxlLW1heCIsbWFza01pbk9wcEF4aXNDbGFzc05hbWU6InJhbmdlc2xpZGVyLW1hc2stbWluLW9wcC1heGlzIixtYXNrTWF4T3BwQXhpc0NsYXNzTmFtZToicmFuZ2VzbGlkZXItbWFzay1tYXgtb3BwLWF4aXMiLG1hc2tDb2xvcjoicmdiYSgwLDAsMCwwLjQpIixtYXNrT3BwQXhpc0NvbG9yOiJyZ2JhKDAsMCwwLDAuMikiLHNsaWRlQm94RmlsbDoidHJhbnNwYXJlbnQiLHNsaWRlQm94Q3Vyc29yOiJldy1yZXNpemUiLGdyYWJBcmVhRmlsbDoidHJhbnNwYXJlbnQiLGdyYWJBcmVhQ3Vyc29yOiJjb2wtcmVzaXplIixncmFiQXJlYVdpZHRoOjEwLGhhbmRsZVdpZHRoOjQsaGFuZGxlUmFkaXVzOjEsaGFuZGxlU3Ryb2tlV2lkdGg6MSxleHRyYVBhZDoxNX19LHt9XSw2NjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpLHM9dCgiLi9vcHBheGlzX2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBsPXRbcl0sYz1lW3JdO2lmKGwucmFuZ2VzbGlkZXJ8fGUuX3JlcXVlc3RSYW5nZXNsaWRlcltjLl9pZF0pe24uaXNQbGFpbk9iamVjdChsLnJhbmdlc2xpZGVyKXx8KGwucmFuZ2VzbGlkZXI9e30pO3ZhciB1LGgsZj1sLnJhbmdlc2xpZGVyLHA9YS5uZXdDb250YWluZXIoYywicmFuZ2VzbGlkZXIiKTtpZihfKCJ2aXNpYmxlIikpe18oImJnY29sb3IiLGUucGxvdF9iZ2NvbG9yKSxfKCJib3JkZXJjb2xvciIpLF8oImJvcmRlcndpZHRoIiksXygidGhpY2tuZXNzIiksXygiYXV0b3JhbmdlIiwhYy5pc1ZhbGlkUmFuZ2UoZi5yYW5nZSkpLF8oInJhbmdlIik7dmFyIGQ9ZS5fc3VicGxvdHM7aWYoZClmb3IodmFyIGc9ZC5jYXJ0ZXNpYW4uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnN0cigwLHQuaW5kZXhPZigieSIpKT09PWkubmFtZTJpZChyKX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdWJzdHIodC5pbmRleE9mKCJ5IiksdC5sZW5ndGgpfSksdj1uLnNpbXBsZU1hcChnLGkuaWQybmFtZSksbT0wO208di5sZW5ndGg7bSsrKXt2YXIgeT12W21dO3U9Zlt5XXx8e30saD1hLm5ld0NvbnRhaW5lcihwLHksInlheGlzIik7dmFyIHgsYj1lW3ldO3UucmFuZ2UmJmIuaXNWYWxpZFJhbmdlKHUucmFuZ2UpJiYoeD0iZml4ZWQiKSwibWF0Y2giIT09dygicmFuZ2Vtb2RlIix4KSYmdygicmFuZ2UiLGIucmFuZ2Uuc2xpY2UoKSl9cC5faW5wdXQ9Zn19ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBuLmNvZXJjZShmLHAsbyx0LGUpfWZ1bmN0aW9uIHcodCxlKXtyZXR1cm4gbi5jb2VyY2UodSxoLHMsdCxlKX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuL2F0dHJpYnV0ZXMiOjY1OSwiLi9vcHBheGlzX2F0dHJpYnV0ZXMiOjY2Nn1dLDY2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksbz10KCIuLi8uLi9saWIiKSxzPXQoIi4uL2RyYXdpbmciKSxsPXQoIi4uL2NvbG9yIiksYz10KCIuLi90aXRsZXMiKSx1PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGg9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIiksZj10KCIuLi9kcmFnZWxlbWVudCIpLHA9dCgiLi4vLi4vbGliL3NldGN1cnNvciIpLGQ9dCgiLi9jb25zdGFudHMiKTtmdW5jdGlvbiBnKHQsZSxyLG4pe3ZhciBhPW8uZW5zdXJlU2luZ2xlKHQsInJlY3QiLGQuYmdDbGFzc05hbWUsZnVuY3Rpb24odCl7dC5hdHRyKHt4OjAseTowLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pfSksaT1uLmJvcmRlcndpZHRoJTI9PTA/bi5ib3JkZXJ3aWR0aDpuLmJvcmRlcndpZHRoLTEsbD0tbi5fb2Zmc2V0U2hpZnQsYz1zLmNyaXNwUm91bmQoZSxuLmJvcmRlcndpZHRoKTthLmF0dHIoe3dpZHRoOm4uX3dpZHRoK2ksaGVpZ2h0Om4uX2hlaWdodCtpLHRyYW5zZm9ybToidHJhbnNsYXRlKCIrbCsiLCIrbCsiKSIsZmlsbDpuLmJnY29sb3Isc3Ryb2tlOm4uYm9yZGVyY29sb3IsInN0cm9rZS13aWR0aCI6Y30pfWZ1bmN0aW9uIHYodCxlLHIsbil7dmFyIGE9ZS5fZnVsbExheW91dDtvLmVuc3VyZVNpbmdsZUJ5SWQoYS5fdG9wZGVmcywiY2xpcFBhdGgiLG4uX2NsaXBJZCxmdW5jdGlvbih0KXt0LmFwcGVuZCgicmVjdCIpLmF0dHIoe3g6MCx5OjB9KX0pLnNlbGVjdCgicmVjdCIpLmF0dHIoe3dpZHRoOm4uX3dpZHRoLGhlaWdodDpuLl9oZWlnaHR9KX1mdW5jdGlvbiBtKHQsZSxyLGEpe3ZhciBsLGM9ZS5jYWxjZGF0YSxmPXQuc2VsZWN0QWxsKCJnLiIrZC5yYW5nZVBsb3RDbGFzc05hbWUpLmRhdGEoci5fc3VicGxvdHNXaXRoLG8uaWRlbnRpdHkpO2YuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuIGQucmFuZ2VQbG90Q2xhc3NOYW1lKyIgIit0fSkuY2FsbChzLnNldENsaXBVcmwsYS5fY2xpcElkLGUpLGYub3JkZXIoKSxmLmV4aXQoKS5yZW1vdmUoKSxmLmVhY2goZnVuY3Rpb24odCxvKXt2YXIgcz1uLnNlbGVjdCh0aGlzKSxmPTA9PT1vLHA9aC5nZXRGcm9tSWQoZSx0LCJ5IiksZD1wLl9uYW1lLGc9YVtkXSx2PXtkYXRhOltdLGxheW91dDp7eGF4aXM6e3R5cGU6ci50eXBlLGRvbWFpbjpbMCwxXSxyYW5nZTphLnJhbmdlLnNsaWNlKCksY2FsZW5kYXI6ci5jYWxlbmRhcn0sd2lkdGg6YS5fd2lkdGgsaGVpZ2h0OmEuX2hlaWdodCxtYXJnaW46e3Q6MCxiOjAsbDowLHI6MH19LF9jb250ZXh0OmUuX2NvbnRleHR9O3YubGF5b3V0W2RdPXt0eXBlOnAudHlwZSxkb21haW46WzAsMV0scmFuZ2U6Im1hdGNoIiE9PWcucmFuZ2Vtb2RlP2cucmFuZ2Uuc2xpY2UoKTpwLnJhbmdlLnNsaWNlKCksY2FsZW5kYXI6cC5jYWxlbmRhcn0saS5zdXBwbHlEZWZhdWx0cyh2KTt2YXIgbT12Ll9mdWxsTGF5b3V0LnhheGlzLHk9di5fZnVsbExheW91dFtkXTttLmNsZWFyQ2FsYygpLG0uc2V0U2NhbGUoKSx5LmNsZWFyQ2FsYygpLHkuc2V0U2NhbGUoKTt2YXIgeD17aWQ6dCxwbG90Z3JvdXA6cyx4YXhpczptLHlheGlzOnksaXNSYW5nZVBsb3Q6ITB9O2Y/bD14Oih4Lm1haW5wbG90PSJ4eSIseC5tYWlucGxvdGluZm89bCksdS5yYW5nZVBsb3QoZSx4LGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGE9dFtuXSxpPWFbMF0udHJhY2U7aS54YXhpcytpLnlheGlzPT09ZSYmci5wdXNoKGEpfXJldHVybiByfShjLHQpKX0pfWZ1bmN0aW9uIHkodCxlLHIsbixhKXsoby5lbnN1cmVTaW5nbGUodCwicmVjdCIsZC5tYXNrTWluQ2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3QuYXR0cih7eDowLHk6MCwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KX0pLmF0dHIoImhlaWdodCIsbi5faGVpZ2h0KS5jYWxsKGwuZmlsbCxkLm1hc2tDb2xvciksby5lbnN1cmVTaW5nbGUodCwicmVjdCIsZC5tYXNrTWF4Q2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3QuYXR0cih7eTowLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pfSkuYXR0cigiaGVpZ2h0IixuLl9oZWlnaHQpLmNhbGwobC5maWxsLGQubWFza0NvbG9yKSwibWF0Y2giIT09YS5yYW5nZW1vZGUpJiYoby5lbnN1cmVTaW5nbGUodCwicmVjdCIsZC5tYXNrTWluT3BwQXhpc0NsYXNzTmFtZSxmdW5jdGlvbih0KXt0LmF0dHIoe3k6MCwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KX0pLmF0dHIoIndpZHRoIixuLl93aWR0aCkuY2FsbChsLmZpbGwsZC5tYXNrT3BwQXhpc0NvbG9yKSxvLmVuc3VyZVNpbmdsZSh0LCJyZWN0IixkLm1hc2tNYXhPcHBBeGlzQ2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3QuYXR0cih7eTowLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pfSkuYXR0cigid2lkdGgiLG4uX3dpZHRoKS5zdHlsZSgiYm9yZGVyLXRvcCIsZC5tYXNrT3BwQm9yZGVyKS5jYWxsKGwuZmlsbCxkLm1hc2tPcHBBeGlzQ29sb3IpKX1mdW5jdGlvbiB4KHQsZSxyLG4pe2UuX2NvbnRleHQuc3RhdGljUGxvdHx8by5lbnN1cmVTaW5nbGUodCwicmVjdCIsZC5zbGlkZUJveENsYXNzTmFtZSxmdW5jdGlvbih0KXt0LmF0dHIoe3k6MCxjdXJzb3I6ZC5zbGlkZUJveEN1cnNvciwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KX0pLmF0dHIoe2hlaWdodDpuLl9oZWlnaHQsZmlsbDpkLnNsaWRlQm94RmlsbH0pfWZ1bmN0aW9uIGIodCxlLHIsbil7dmFyIGE9by5lbnN1cmVTaW5nbGUodCwiZyIsZC5ncmFiYmVyTWluQ2xhc3NOYW1lKSxpPW8uZW5zdXJlU2luZ2xlKHQsImciLGQuZ3JhYmJlck1heENsYXNzTmFtZSkscz17eDowLHdpZHRoOmQuaGFuZGxlV2lkdGgscng6ZC5oYW5kbGVSYWRpdXMsZmlsbDpsLmJhY2tncm91bmQsc3Ryb2tlOmwuZGVmYXVsdExpbmUsInN0cm9rZS13aWR0aCI6ZC5oYW5kbGVTdHJva2VXaWR0aCwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9LGM9e3k6TWF0aC5yb3VuZChuLl9oZWlnaHQvNCksaGVpZ2h0Ok1hdGgucm91bmQobi5faGVpZ2h0LzIpfTtpZihvLmVuc3VyZVNpbmdsZShhLCJyZWN0IixkLmhhbmRsZU1pbkNsYXNzTmFtZSxmdW5jdGlvbih0KXt0LmF0dHIocyl9KS5hdHRyKGMpLG8uZW5zdXJlU2luZ2xlKGksInJlY3QiLGQuaGFuZGxlTWF4Q2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3QuYXR0cihzKX0pLmF0dHIoYyksIWUuX2NvbnRleHQuc3RhdGljUGxvdCl7dmFyIHU9e3dpZHRoOmQuZ3JhYkFyZWFXaWR0aCx4OjAseTowLGZpbGw6ZC5ncmFiQXJlYUZpbGwsY3Vyc29yOmQuZ3JhYkFyZWFDdXJzb3J9O28uZW5zdXJlU2luZ2xlKGEsInJlY3QiLGQuZ3JhYkFyZWFNaW5DbGFzc05hbWUsZnVuY3Rpb24odCl7dC5hdHRyKHUpfSkuYXR0cigiaGVpZ2h0IixuLl9oZWlnaHQpLG8uZW5zdXJlU2luZ2xlKGksInJlY3QiLGQuZ3JhYkFyZWFNYXhDbGFzc05hbWUsZnVuY3Rpb24odCl7dC5hdHRyKHUpfSkuYXR0cigiaGVpZ2h0IixuLl9oZWlnaHQpfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9yYW5nZVNsaWRlckRhdGEsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgcz1yW2ldW2QubmFtZV07cy5fY2xpcElkPXMuX2lkKyItIitlLl91aWR9dmFyIGw9ZS5faW5mb2xheWVyLnNlbGVjdEFsbCgiZy4iK2QuY29udGFpbmVyQ2xhc3NOYW1lKS5kYXRhKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQuX25hbWV9KTtsLmV4aXQoKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByPXRbZC5uYW1lXTtlLl90b3BkZWZzLnNlbGVjdCgiIyIrci5fY2xpcElkKS5yZW1vdmUoKX0pLnJlbW92ZSgpLDAhPT1yLmxlbmd0aCYmKGwuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKGQuY29udGFpbmVyQ2xhc3NOYW1lLCEwKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLGwuZWFjaChmdW5jdGlvbihyKXt2YXIgaT1uLnNlbGVjdCh0aGlzKSxzPXJbZC5uYW1lXSxsPWVbaC5pZDJuYW1lKHIuYW5jaG9yKV0sdT1zW2guaWQybmFtZShyLmFuY2hvcildO2lmKHMucmFuZ2Upe3ZhciBfLHc9by5zaW1wbGVNYXAocy5yYW5nZSxyLnIybCksaz1vLnNpbXBsZU1hcChyLnJhbmdlLHIucjJsKTtfPWtbMF08a1sxXT9bTWF0aC5taW4od1swXSxrWzBdKSxNYXRoLm1heCh3WzFdLGtbMV0pXTpbTWF0aC5tYXgod1swXSxrWzBdKSxNYXRoLm1pbih3WzFdLGtbMV0pXSxzLnJhbmdlPXMuX2lucHV0LnJhbmdlPW8uc2ltcGxlTWFwKF8sci5sMnIpfXIuY2xlYW5SYW5nZSgicmFuZ2VzbGlkZXIucmFuZ2UiKTt2YXIgVD1lLl9zaXplLE09ci5kb21haW47cy5fd2lkdGg9VC53KihNWzFdLU1bMF0pO3ZhciBBPU1hdGgucm91bmQoVC5sK1QudypNWzBdKSxTPU1hdGgucm91bmQoVC50K1QuaCooMS1yLl9jb3VudGVyRG9tYWluTWluKSsoImJvdHRvbSI9PT1yLnNpZGU/ci5fZGVwdGg6MCkrcy5fb2Zmc2V0U2hpZnQrZC5leHRyYVBhZCk7aS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitBKyIsIitTKyIpIik7dmFyIEU9ci5yMmwocy5yYW5nZVswXSksTD1yLnIybChzLnJhbmdlWzFdKSxDPUwtRTtpZihzLnAyZD1mdW5jdGlvbih0KXtyZXR1cm4gdC9zLl93aWR0aCpDK0V9LHMuZDJwPWZ1bmN0aW9uKHQpe3JldHVybih0LUUpL0Mqcy5fd2lkdGh9LHMuX3JsPVtFLExdLCJtYXRjaCIhPT11LnJhbmdlbW9kZSl7dmFyIFA9bC5yMmwodS5yYW5nZVswXSksTz1sLnIybCh1LnJhbmdlWzFdKS1QO3MuZDJwT3BwQXhpcz1mdW5jdGlvbih0KXtyZXR1cm4odC1QKS9PKnMuX2hlaWdodH19aS5jYWxsKGcsdCxyLHMpLmNhbGwodix0LHIscykuY2FsbChtLHQscixzKS5jYWxsKHksdCxyLHMsdSkuY2FsbCh4LHQscixzKS5jYWxsKGIsdCxyLHMpLGZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBzPXQuc2VsZWN0KCJyZWN0LiIrZC5zbGlkZUJveENsYXNzTmFtZSkubm9kZSgpLGw9dC5zZWxlY3QoInJlY3QuIitkLmdyYWJBcmVhTWluQ2xhc3NOYW1lKS5ub2RlKCksYz10LnNlbGVjdCgicmVjdC4iK2QuZ3JhYkFyZWFNYXhDbGFzc05hbWUpLm5vZGUoKTt0Lm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7dmFyIHU9bi5ldmVudCxoPXUudGFyZ2V0LGQ9dS5jbGllbnRYLGc9ZC10Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LHY9aS5kMnAoci5fcmxbMF0pLG09aS5kMnAoci5fcmxbMV0pLHk9Zi5jb3ZlclNsaXAoKTtmdW5jdGlvbiB4KHQpe3ZhciB1LGYseCxiPSt0LmNsaWVudFgtZDtzd2l0Y2goaCl7Y2FzZSBzOng9ImV3LXJlc2l6ZSIsdT12K2IsZj1tK2I7YnJlYWs7Y2FzZSBsOng9ImNvbC1yZXNpemUiLHU9ditiLGY9bTticmVhaztjYXNlIGM6eD0iY29sLXJlc2l6ZSIsdT12LGY9bStiO2JyZWFrO2RlZmF1bHQ6eD0iZXctcmVzaXplIix1PWcsZj1nK2J9aWYoZjx1KXt2YXIgXz1mO2Y9dSx1PV99aS5fcGl4ZWxNaW49dSxpLl9waXhlbE1heD1mLHAobi5zZWxlY3QoeSkseCksZnVuY3Rpb24odCxlLHIsbil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gci5sMnIoby5jb25zdHJhaW4odCxuLl9ybFswXSxuLl9ybFsxXSkpfXZhciBzPWkobi5wMmQobi5fcGl4ZWxNaW4pKSxsPWkobi5wMmQobi5fcGl4ZWxNYXgpKTt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7YS5jYWxsKCJfZ3VpUmVsYXlvdXQiLGUsci5fbmFtZSsiLnJhbmdlIixbcyxsXSl9KX0oMCxlLHIsaSl9eS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHgpLHkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsZnVuY3Rpb24gdCgpe3kucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix4KTt5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHQpO28ucmVtb3ZlRWxlbWVudCh5KX0pfSl9KGksdCxyLHMpLGZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgcz1kLmhhbmRsZVdpZHRoLzI7ZnVuY3Rpb24gbCh0KXtyZXR1cm4gby5jb25zdHJhaW4odCwwLG4uX3dpZHRoKX1mdW5jdGlvbiBjKHQpe3JldHVybiBvLmNvbnN0cmFpbih0LDAsbi5faGVpZ2h0KX1mdW5jdGlvbiB1KHQpe3JldHVybiBvLmNvbnN0cmFpbih0LC1zLG4uX3dpZHRoK3MpfXZhciBoPWwobi5kMnAoci5fcmxbMF0pKSxmPWwobi5kMnAoci5fcmxbMV0pKTtpZih0LnNlbGVjdCgicmVjdC4iK2Quc2xpZGVCb3hDbGFzc05hbWUpLmF0dHIoIngiLGgpLmF0dHIoIndpZHRoIixmLWgpLHQuc2VsZWN0KCJyZWN0LiIrZC5tYXNrTWluQ2xhc3NOYW1lKS5hdHRyKCJ3aWR0aCIsaCksdC5zZWxlY3QoInJlY3QuIitkLm1hc2tNYXhDbGFzc05hbWUpLmF0dHIoIngiLGYpLmF0dHIoIndpZHRoIixuLl93aWR0aC1mKSwibWF0Y2giIT09aS5yYW5nZW1vZGUpe3ZhciBwPW4uX2hlaWdodC1jKG4uZDJwT3BwQXhpcyhhLl9ybFsxXSkpLGc9bi5faGVpZ2h0LWMobi5kMnBPcHBBeGlzKGEuX3JsWzBdKSk7dC5zZWxlY3QoInJlY3QuIitkLm1hc2tNaW5PcHBBeGlzQ2xhc3NOYW1lKS5hdHRyKCJ4IixoKS5hdHRyKCJoZWlnaHQiLHApLmF0dHIoIndpZHRoIixmLWgpLHQuc2VsZWN0KCJyZWN0LiIrZC5tYXNrTWF4T3BwQXhpc0NsYXNzTmFtZSkuYXR0cigieCIsaCkuYXR0cigieSIsZykuYXR0cigiaGVpZ2h0IixuLl9oZWlnaHQtZykuYXR0cigid2lkdGgiLGYtaCksdC5zZWxlY3QoInJlY3QuIitkLnNsaWRlQm94Q2xhc3NOYW1lKS5hdHRyKCJ5IixwKS5hdHRyKCJoZWlnaHQiLGctcCl9dmFyIHY9TWF0aC5yb3VuZCh1KGgtcykpLS41LG09TWF0aC5yb3VuZCh1KGYtcykpKy41O3Quc2VsZWN0KCJnLiIrZC5ncmFiYmVyTWluQ2xhc3NOYW1lKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit2KyIsMC41KSIpLHQuc2VsZWN0KCJnLiIrZC5ncmFiYmVyTWF4Q2xhc3NOYW1lKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIittKyIsMC41KSIpfShpLDAscixzLGwsdSksImJvdHRvbSI9PT1yLnNpZGUmJmMuZHJhdyh0LHIuX2lkKyJ0aXRsZSIse3Byb3BDb250YWluZXI6cixwcm9wTmFtZTpyLl9uYW1lKyIudGl0bGUiLHBsYWNlaG9sZGVyOmUuX2RmbHRUaXRsZS54LGF0dHJpYnV0ZXM6e3g6ci5fb2Zmc2V0K3IuX2xlbmd0aC8yLHk6UytzLl9oZWlnaHQrcy5fb2Zmc2V0U2hpZnQrMTArMS41KnIudGl0bGUuZm9udC5zaXplLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9fSl9KSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc2V0Y3Vyc29yIjo3MzcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Nzc2LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNiwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY29sb3IiOjU5MiwiLi4vZHJhZ2VsZW1lbnQiOjYxMCwiLi4vZHJhd2luZyI6NjEzLCIuLi90aXRsZXMiOjY3OSwiLi9jb25zdGFudHMiOjY2MSxkMzoxNjV9XSw2NjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIiksYT10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxpPXQoIi4vY29uc3RhbnRzIiksbz10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50IikuTElORV9TUEFDSU5HLHM9aS5uYW1lO2Z1bmN0aW9uIGwodCl7dmFyIGU9dCYmdFtzXTtyZXR1cm4gZSYmZS52aXNpYmxlfXIuaXNWaXNpYmxlPWwsci5tYWtlRGF0YT1mdW5jdGlvbih0KXt2YXIgZT1uLmxpc3Qoe19mdWxsTGF5b3V0OnR9LCJ4IiwhMCkscj10Lm1hcmdpbixhPVtdO2lmKCF0Ll9oYXMoImdsMmQiKSlmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtpZihsKG8pKXthLnB1c2gobyk7dmFyIGM9b1tzXTtjLl9pZD1zK28uX2lkLGMuX2hlaWdodD0odC5oZWlnaHQtci5iLXIudCkqYy50aGlja25lc3MsYy5fb2Zmc2V0U2hpZnQ9TWF0aC5mbG9vcihjLmJvcmRlcndpZHRoLzIpfX10Ll9yYW5nZVNsaWRlckRhdGE9YX0sci5hdXRvTWFyZ2luT3B0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQsbj1lW3NdLGw9ZS5faWQuY2hhckF0KDApLGM9MCx1PTA7ImJvdHRvbSI9PT1lLnNpZGUmJihjPWUuX2RlcHRoLGUudGl0bGUudGV4dCE9PXIuX2RmbHRUaXRsZVtsXSYmKHU9MS41KmUudGl0bGUuZm9udC5zaXplKzEwK24uX29mZnNldFNoaWZ0LHUrPShlLnRpdGxlLnRleHQubWF0Y2goYS5CUl9UQUdfQUxMKXx8W10pLmxlbmd0aCplLnRpdGxlLmZvbnQuc2l6ZSpvKSk7cmV0dXJue3g6MCx5OmUuX2NvdW50ZXJEb21haW5NaW4sbDowLHI6MCx0OjAsYjpuLl9oZWlnaHQrYytNYXRoLm1heChyLm1hcmdpbi5iLHUpLHBhZDppLmV4dHJhUGFkKzIqbi5fb2Zmc2V0U2hpZnR9fX0seyIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi9jb25zdGFudHMiOjY2MX1dLDY2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vYXR0cmlidXRlcyIpLGk9dCgiLi9vcHBheGlzX2F0dHJpYnV0ZXMiKSxvPXQoIi4vaGVscGVycyIpO2UuZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJyYW5nZXNsaWRlciIsc2NoZW1hOntzdWJwbG90czp7eGF4aXM6e3Jhbmdlc2xpZGVyOm4uZXh0ZW5kRmxhdCh7fSxhLHt5YXhpczppfSl9fX0sbGF5b3V0QXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxoYW5kbGVEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsY0F1dG9yYW5nZTp0KCIuL2NhbGNfYXV0b3JhbmdlIiksZHJhdzp0KCIuL2RyYXciKSxpc1Zpc2libGU6by5pc1Zpc2libGUsbWFrZURhdGE6by5tYWtlRGF0YSxhdXRvTWFyZ2luT3B0czpvLmF1dG9NYXJnaW5PcHRzfX0seyIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1dGVzIjo2NTksIi4vY2FsY19hdXRvcmFuZ2UiOjY2MCwiLi9kZWZhdWx0cyI6NjYyLCIuL2RyYXciOjY2MywiLi9oZWxwZXJzIjo2NjQsIi4vb3BwYXhpc19hdHRyaWJ1dGVzIjo2NjZ9XSw2NjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtfaXNTdWJwbG90T2JqOiEwLHJhbmdlbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsImZpeGVkIiwibWF0Y2giXSxkZmx0OiJtYXRjaCIsZWRpdFR5cGU6ImNhbGMifSxyYW5nZTp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90In0se3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6InBsb3QifV0sZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToiY2FsYyJ9fSx7fV0sNjY3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Fubm90YXRpb25zL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL2F0dHJpYnV0ZXMiKS5saW5lLGk9dCgiLi4vZHJhd2luZy9hdHRyaWJ1dGVzIikuZGFzaCxvPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHM9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5O2UuZXhwb3J0cz1zKCJzaGFwZSIse3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sdHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY2lyY2xlIiwicmVjdCIsInBhdGgiLCJsaW5lIl0sZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sbGF5ZXI6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImJlbG93IiwiYWJvdmUiXSxkZmx0OiJhYm92ZSIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHhyZWY6byh7fSxuLnhyZWYse30pLHhzaXplbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsic2NhbGVkIiwicGl4ZWwiXSxkZmx0OiJzY2FsZWQiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHhhbmNob3I6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seDA6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seDE6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seXJlZjpvKHt9LG4ueXJlZix7fSkseXNpemVtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzY2FsZWQiLCJwaXhlbCJdLGRmbHQ6InNjYWxlZCIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seWFuY2hvcjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx5MDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx5MTp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxwYXRoOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxLGVkaXRUeXBlOiJhcnJheWRyYXcifSxsaW5lOntjb2xvcjpvKHt9LGEuY29sb3Ise2VkaXRUeXBlOiJhcnJheWRyYXcifSksd2lkdGg6byh7fSxhLndpZHRoLHtlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSksZGFzaDpvKHt9LGkse2VkaXRUeXBlOiJhcnJheWRyYXcifSksZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sZmlsbGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGVkaXRUeXBlOiJhcnJheWRyYXcifSl9LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3RyYWNlcy9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjAsIi4uL2Fubm90YXRpb25zL2F0dHJpYnV0ZXMiOjU3NSwiLi4vZHJhd2luZy9hdHRyaWJ1dGVzIjo2MTJ9XSw2Njg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi9jb25zdGFudHMiKSxvPXQoIi4vaGVscGVycyIpO2Z1bmN0aW9uIHModCl7cmV0dXJuIGModC5saW5lLndpZHRoLHQueHNpemVtb2RlLHQueDAsdC54MSx0LnBhdGgsITEpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGModC5saW5lLndpZHRoLHQueXNpemVtb2RlLHQueTAsdC55MSx0LnBhdGgsITApfWZ1bmN0aW9uIGModCxlLHIsYSxzLGwpe3ZhciBjPXQvMix1PWw7aWYoInBpeGVsIj09PWUpe3ZhciBoPXM/by5leHRyYWN0UGF0aENvb3JkcyhzLGw/aS5wYXJhbUlzWTppLnBhcmFtSXNYKTpbcixhXSxmPW4uYWdnTnVtcyhNYXRoLm1heCxudWxsLGgpLHA9bi5hZ2dOdW1zKE1hdGgubWluLG51bGwsaCksZD1wPDA/TWF0aC5hYnMocCkrYzpjLGc9Zj4wP2YrYzpjO3JldHVybntwcGFkOmMscHBhZHBsdXM6dT9kOmcscHBhZG1pbnVzOnU/ZzpkfX1yZXR1cm57cHBhZDpjfX1mdW5jdGlvbiB1KHQsZSxyLG4sYSl7dmFyIHM9ImNhdGVnb3J5Ij09PXQudHlwZXx8Im11bHRpY2F0ZWdvcnkiPT09dC50eXBlP3QucjJjOnQuZDJjO2lmKHZvaWQgMCE9PWUpcmV0dXJuW3MoZSkscyhyKV07aWYobil7dmFyIGwsYyx1LGgsZj0xLzAscD0tMS8wLGQ9bi5tYXRjaChpLnNlZ21lbnRSRSk7Zm9yKCJkYXRlIj09PXQudHlwZSYmKHM9by5kZWNvZGVEYXRlKHMpKSxsPTA7bDxkLmxlbmd0aDtsKyspdm9pZCAwIT09KGM9YVtkW2xdLmNoYXJBdCgwKV0uZHJhd24pJiYoISh1PWRbbF0uc3Vic3RyKDEpLm1hdGNoKGkucGFyYW1SRSkpfHx1Lmxlbmd0aDxjfHwoKGg9cyh1W2NdKSk8ZiYmKGY9aCksaD5wJiYocD1oKSkpO3JldHVybiBwPj1mP1tmLHBdOnZvaWQgMH19ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj1uLmZpbHRlclZpc2libGUoZS5zaGFwZXMpO2lmKHIubGVuZ3RoJiZ0Ll9mdWxsRGF0YS5sZW5ndGgpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBjLGgsZj1yW29dO2lmKGYuX2V4dHJlbWVzPXt9LCJwYXBlciIhPT1mLnhyZWYpe3ZhciBwPSJwaXhlbCI9PT1mLnhzaXplbW9kZT9mLnhhbmNob3I6Zi54MCxkPSJwaXhlbCI9PT1mLnhzaXplbW9kZT9mLnhhbmNob3I6Zi54MTsoaD11KGM9YS5nZXRGcm9tSWQodCxmLnhyZWYpLHAsZCxmLnBhdGgsaS5wYXJhbUlzWCkpJiYoZi5fZXh0cmVtZXNbYy5faWRdPWEuZmluZEV4dHJlbWVzKGMsaCxzKGYpKSl9aWYoInBhcGVyIiE9PWYueXJlZil7dmFyIGc9InBpeGVsIj09PWYueXNpemVtb2RlP2YueWFuY2hvcjpmLnkwLHY9InBpeGVsIj09PWYueXNpemVtb2RlP2YueWFuY2hvcjpmLnkxOyhoPXUoYz1hLmdldEZyb21JZCh0LGYueXJlZiksZyx2LGYucGF0aCxpLnBhcmFtSXNZKSkmJihmLl9leHRyZW1lc1tjLl9pZF09YS5maW5kRXh0cmVtZXMoYyxoLGwoZikpKX19fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi9jb25zdGFudHMiOjY2OSwiLi9oZWxwZXJzIjo2NzJ9XSw2Njk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtzZWdtZW50UkU6L1tNTEhWUUNUU1pdW15NTEhWUUNUU1pdKi9nLHBhcmFtUkU6L1teXHMsXSsvZyxwYXJhbUlzWDp7TTp7MDohMCxkcmF3bjowfSxMOnswOiEwLGRyYXduOjB9LEg6ezA6ITAsZHJhd246MH0sVjp7fSxROnswOiEwLDI6ITAsZHJhd246Mn0sQzp7MDohMCwyOiEwLDQ6ITAsZHJhd246NH0sVDp7MDohMCxkcmF3bjowfSxTOnswOiEwLDI6ITAsZHJhd246Mn0sWjp7fX0scGFyYW1Jc1k6e006ezE6ITAsZHJhd246MX0sTDp7MTohMCxkcmF3bjoxfSxIOnt9LFY6ezA6ITAsZHJhd246MH0sUTp7MTohMCwzOiEwLGRyYXduOjN9LEM6ezE6ITAsMzohMCw1OiEwLGRyYXduOjV9LFQ6ezE6ITAsZHJhd246MX0sUzp7MTohMCwzOiEwLGRyYXduOjV9LFo6e319LG51bVBhcmFtczp7TToyLEw6MixIOjEsVjoxLFE6NCxDOjYsVDoyLFM6NCxaOjB9fX0se31dLDY3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpLHM9dCgiLi9oZWxwZXJzIik7ZnVuY3Rpb24gbCh0LGUscil7ZnVuY3Rpb24gaShyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsbyxyLGEpfWlmKGkoInZpc2libGUiKSl7aSgibGF5ZXIiKSxpKCJvcGFjaXR5IiksaSgiZmlsbGNvbG9yIiksaSgibGluZS5jb2xvciIpLGkoImxpbmUud2lkdGgiKSxpKCJsaW5lLmRhc2giKTtmb3IodmFyIGw9aSgidHlwZSIsdC5wYXRoPyJwYXRoIjoicmVjdCIpLGM9aSgieHNpemVtb2RlIiksdT1pKCJ5c2l6ZW1vZGUiKSxoPVsieCIsInkiXSxmPTA7ZjwyO2YrKyl7dmFyIHAsZCxnLHY9aFtmXSxtPXYrImFuY2hvciIseT0ieCI9PT12P2M6dSx4PXtfZnVsbExheW91dDpyfSxiPWEuY29lcmNlUmVmKHQsZSx4LHYsIiIsInBhcGVyIik7aWYoInBhcGVyIiE9PWI/KChwPWEuZ2V0RnJvbUlkKHgsYikpLl9zaGFwZUluZGljZXMucHVzaChlLl9pbmRleCksZz1zLnJhbmdlVG9TaGFwZVBvc2l0aW9uKHApLGQ9cy5zaGFwZVBvc2l0aW9uVG9SYW5nZShwKSk6ZD1nPW4uaWRlbnRpdHksInBhdGgiIT09bCl7dmFyIF89disiMCIsdz12KyIxIixrPXRbX10sVD10W3ddO3RbX109ZCh0W19dLCEwKSx0W3ddPWQodFt3XSwhMCksInBpeGVsIj09PXk/KGkoXywwKSxpKHcsMTApKTooYS5jb2VyY2VQb3NpdGlvbihlLHgsaSxiLF8sLjI1KSxhLmNvZXJjZVBvc2l0aW9uKGUseCxpLGIsdywuNzUpKSxlW19dPWcoZVtfXSksZVt3XT1nKGVbd10pLHRbX109ayx0W3ddPVR9aWYoInBpeGVsIj09PXkpe3ZhciBNPXRbbV07dFttXT1kKHRbbV0sITApLGEuY29lcmNlUG9zaXRpb24oZSx4LGksYixtLC4yNSksZVttXT1nKGVbbV0pLHRbbV09TX19InBhdGgiPT09bD9pKCJwYXRoIik6bi5ub25lT3JBbGwodCxlLFsieDAiLCJ4MSIsInkwIiwieTEiXSl9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2kodCxlLHtuYW1lOiJzaGFwZXMiLGhhbmRsZUl0ZW1EZWZhdWx0czpsfSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi9hdHRyaWJ1dGVzIjo2NjcsIi4vaGVscGVycyI6NjcyfV0sNjcxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi9jb2xvciIpLHM9dCgiLi4vZHJhd2luZyIpLGw9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLmFycmF5RWRpdG9yLGM9dCgiLi4vZHJhZ2VsZW1lbnQiKSx1PXQoIi4uLy4uL2xpYi9zZXRjdXJzb3IiKSxoPXQoIi4vY29uc3RhbnRzIiksZj10KCIuL2hlbHBlcnMiKTtmdW5jdGlvbiBwKHQsZSl7dC5fZnVsbExheW91dC5fcGFwZXJkaXYuc2VsZWN0QWxsKCcuc2hhcGVsYXllciBbZGF0YS1pbmRleD0iJytlKyciXScpLnJlbW92ZSgpO3ZhciByPXQuX2Z1bGxMYXlvdXQuc2hhcGVzW2VdfHx7fTtpZihyLl9pbnB1dCYmITEhPT1yLnZpc2libGUpaWYoImJlbG93IiE9PXIubGF5ZXIpbSh0Ll9mdWxsTGF5b3V0Ll9zaGFwZVVwcGVyTGF5ZXIpO2Vsc2UgaWYoInBhcGVyIj09PXIueHJlZnx8InBhcGVyIj09PXIueXJlZiltKHQuX2Z1bGxMYXlvdXQuX3NoYXBlTG93ZXJMYXllcik7ZWxzZXt2YXIgcD10Ll9mdWxsTGF5b3V0Ll9wbG90c1tyLnhyZWYrci55cmVmXTtpZihwKW0oKHAubWFpbnBsb3RpbmZvfHxwKS5zaGFwZWxheWVyKTtlbHNlIG0odC5fZnVsbExheW91dC5fc2hhcGVMb3dlckxheWVyKX1mdW5jdGlvbiBtKHApe3ZhciBtPXsiZGF0YS1pbmRleCI6ZSwiZmlsbC1ydWxlIjoiZXZlbm9kZCIsZDpnKHQscil9LHk9ci5saW5lLndpZHRoP3IubGluZS5jb2xvcjoicmdiYSgwLDAsMCwwKSIseD1wLmFwcGVuZCgicGF0aCIpLmF0dHIobSkuc3R5bGUoIm9wYWNpdHkiLHIub3BhY2l0eSkuY2FsbChvLnN0cm9rZSx5KS5jYWxsKG8uZmlsbCxyLmZpbGxjb2xvcikuY2FsbChzLmRhc2hMaW5lLHIubGluZS5kYXNoLHIubGluZS53aWR0aCk7ZCh4LHQsciksdC5fY29udGV4dC5lZGl0cy5zaGFwZVBvc2l0aW9uJiZmdW5jdGlvbih0LGUscixvLHApe3ZhciBtLHkseCxiLF8sdyxrLFQsTSxBLFMsRSxMLEMsUCxPLHo9MTAsST0xMCxEPSJwaXhlbCI9PT1yLnhzaXplbW9kZSxSPSJwaXhlbCI9PT1yLnlzaXplbW9kZSxGPSJsaW5lIj09PXIudHlwZSxCPSJwYXRoIj09PXIudHlwZSxOPWwodC5sYXlvdXQsInNoYXBlcyIsciksaj1OLm1vZGlmeUl0ZW0sVj1pLmdldEZyb21JZCh0LHIueHJlZiksVT1pLmdldEZyb21JZCh0LHIueXJlZikscT1mLmdldERhdGFUb1BpeGVsKHQsViksSD1mLmdldERhdGFUb1BpeGVsKHQsVSwhMCksRz1mLmdldFBpeGVsVG9EYXRhKHQsViksWT1mLmdldFBpeGVsVG9EYXRhKHQsVSwhMCksVz1GP2Z1bmN0aW9uKCl7dmFyIHQ9TWF0aC5tYXgoci5saW5lLndpZHRoLDEwKSxuPXAuYXBwZW5kKCJnIikuYXR0cigiZGF0YS1pbmRleCIsbyk7bi5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixlLmF0dHIoImQiKSkuc3R5bGUoe2N1cnNvcjoibW92ZSIsInN0cm9rZS13aWR0aCI6dCwic3Ryb2tlLW9wYWNpdHkiOiIwIn0pO3ZhciBhPXsiZmlsbC1vcGFjaXR5IjoiMCJ9LGk9dC8yPjEwP3QvMjoxMDtyZXR1cm4gbi5hcHBlbmQoImNpcmNsZSIpLmF0dHIoeyJkYXRhLWxpbmUtcG9pbnQiOiJzdGFydC1wb2ludCIsY3g6RD9xKHIueGFuY2hvcikrci54MDpxKHIueDApLGN5OlI/SChyLnlhbmNob3IpLXIueTA6SChyLnkwKSxyOml9KS5zdHlsZShhKS5jbGFzc2VkKCJjdXJzb3ItZ3JhYiIsITApLG4uYXBwZW5kKCJjaXJjbGUiKS5hdHRyKHsiZGF0YS1saW5lLXBvaW50IjoiZW5kLXBvaW50IixjeDpEP3Eoci54YW5jaG9yKStyLngxOnEoci54MSksY3k6Uj9IKHIueWFuY2hvciktci55MTpIKHIueTEpLHI6aX0pLnN0eWxlKGEpLmNsYXNzZWQoImN1cnNvci1ncmFiIiwhMCksbn0oKTplLFg9e2VsZW1lbnQ6Vy5ub2RlKCksZ2Q6dCxwcmVwRm46ZnVuY3Rpb24obil7RCYmKF89cShyLnhhbmNob3IpKTtSJiYodz1IKHIueWFuY2hvcikpOyJwYXRoIj09PXIudHlwZT9QPXIucGF0aDoobT1EP3IueDA6cShyLngwKSx5PVI/ci55MDpIKHIueTApLHg9RD9yLngxOnEoci54MSksYj1SP3IueTE6SChyLnkxKSk7bTx4PyhNPW0sTD0ieDAiLEE9eCxDPSJ4MSIpOihNPXgsTD0ieDEiLEE9bSxDPSJ4MCIpOyFSJiZ5PGJ8fFImJnk+Yj8oaz15LFM9InkwIixUPWIsRT0ieTEiKTooaz1iLFM9InkxIixUPXksRT0ieTAiKTtaKG4pLFEocCxyKSxmdW5jdGlvbih0LGUscil7dmFyIG49ZS54cmVmLGE9ZS55cmVmLG89aS5nZXRGcm9tSWQocixuKSxsPWkuZ2V0RnJvbUlkKHIsYSksYz0iIjsicGFwZXIiPT09bnx8by5hdXRvcmFuZ2V8fChjKz1uKTsicGFwZXIiPT09YXx8bC5hdXRvcmFuZ2V8fChjKz1hKTtzLnNldENsaXBVcmwodCxjPyJjbGlwIityLl9mdWxsTGF5b3V0Ll91aWQrYzpudWxsLHIpfShlLHIsdCksWC5tb3ZlRm49Im1vdmUiPT09Tz9KOkt9LGRvbmVGbjpmdW5jdGlvbigpe3UoZSksJChwKSxkKGUsdCxyKSxuLmNhbGwoIl9ndWlSZWxheW91dCIsdCxOLmdldFVwZGF0ZU9iaigpKX0sY2xpY2tGbjpmdW5jdGlvbigpeyQocCl9fTtmdW5jdGlvbiBaKHQpe2lmKEYpTz0icGF0aCI9PT10LnRhcmdldC50YWdOYW1lPyJtb3ZlIjoic3RhcnQtcG9pbnQiPT09dC50YXJnZXQuYXR0cmlidXRlc1siZGF0YS1saW5lLXBvaW50Il0udmFsdWU/InJlc2l6ZS1vdmVyLXN0YXJ0LXBvaW50IjoicmVzaXplLW92ZXItZW5kLXBvaW50IjtlbHNle3ZhciByPVguZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIucmlnaHQtci5sZWZ0LGE9ci5ib3R0b20tci50b3AsaT10LmNsaWVudFgtci5sZWZ0LG89dC5jbGllbnRZLXIudG9wLHM9IUImJm4+eiYmYT5JJiYhdC5zaGlmdEtleT9jLmdldEN1cnNvcihpL24sMS1vL2EpOiJtb3ZlIjt1KGUscyksTz1zLnNwbGl0KCItIilbMF19fWZ1bmN0aW9uIEoobixhKXtpZigicGF0aCI9PT1yLnR5cGUpe3ZhciBpPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxvPWkscz1pO0Q/aigieGFuY2hvciIsci54YW5jaG9yPUcoXytuKSk6KG89ZnVuY3Rpb24odCl7cmV0dXJuIEcocSh0KStuKX0sViYmImRhdGUiPT09Vi50eXBlJiYobz1mLmVuY29kZURhdGUobykpKSxSP2ooInlhbmNob3IiLHIueWFuY2hvcj1ZKHcrYSkpOihzPWZ1bmN0aW9uKHQpe3JldHVybiBZKEgodCkrYSl9LFUmJiJkYXRlIj09PVUudHlwZSYmKHM9Zi5lbmNvZGVEYXRlKHMpKSksaigicGF0aCIsci5wYXRoPXYoUCxvLHMpKX1lbHNlIEQ/aigieGFuY2hvciIsci54YW5jaG9yPUcoXytuKSk6KGooIngwIixyLngwPUcobStuKSksaigieDEiLHIueDE9Ryh4K24pKSksUj9qKCJ5YW5jaG9yIixyLnlhbmNob3I9WSh3K2EpKTooaigieTAiLHIueTA9WSh5K2EpKSxqKCJ5MSIsci55MT1ZKGIrYSkpKTtlLmF0dHIoImQiLGcodCxyKSksUShwLHIpfWZ1bmN0aW9uIEsobixhKXtpZihCKXt2YXIgaT1mdW5jdGlvbih0KXtyZXR1cm4gdH0sbz1pLHM9aTtEP2ooInhhbmNob3IiLHIueGFuY2hvcj1HKF8rbikpOihvPWZ1bmN0aW9uKHQpe3JldHVybiBHKHEodCkrbil9LFYmJiJkYXRlIj09PVYudHlwZSYmKG89Zi5lbmNvZGVEYXRlKG8pKSksUj9qKCJ5YW5jaG9yIixyLnlhbmNob3I9WSh3K2EpKToocz1mdW5jdGlvbih0KXtyZXR1cm4gWShIKHQpK2EpfSxVJiYiZGF0ZSI9PT1VLnR5cGUmJihzPWYuZW5jb2RlRGF0ZShzKSkpLGooInBhdGgiLHIucGF0aD12KFAsbyxzKSl9ZWxzZSBpZihGKXtpZigicmVzaXplLW92ZXItc3RhcnQtcG9pbnQiPT09Tyl7dmFyIGw9bStuLGM9Uj95LWE6eSthO2ooIngwIixyLngwPUQ/bDpHKGwpKSxqKCJ5MCIsci55MD1SP2M6WShjKSl9ZWxzZSBpZigicmVzaXplLW92ZXItZW5kLXBvaW50Ij09PU8pe3ZhciB1PXgrbixoPVI/Yi1hOmIrYTtqKCJ4MSIsci54MT1EP3U6Ryh1KSksaigieTEiLHIueTE9Uj9oOlkoaCkpfX1lbHNle3ZhciBkPX5PLmluZGV4T2YoIm4iKT9rK2E6ayxOPX5PLmluZGV4T2YoInMiKT9UK2E6VCxXPX5PLmluZGV4T2YoInciKT9NK246TSxYPX5PLmluZGV4T2YoImUiKT9BK246QTt+Ty5pbmRleE9mKCJuIikmJlImJihkPWstYSksfk8uaW5kZXhPZigicyIpJiZSJiYoTj1ULWEpLCghUiYmTi1kPkl8fFImJmQtTj5JKSYmKGooUyxyW1NdPVI/ZDpZKGQpKSxqKEUscltFXT1SP046WShOKSkpLFgtVz56JiYoaihMLHJbTF09RD9XOkcoVykpLGooQyxyW0NdPUQ/WDpHKFgpKSl9ZS5hdHRyKCJkIixnKHQscikpLFEocCxyKX1mdW5jdGlvbiBRKHQsZSl7KER8fFIpJiZmdW5jdGlvbigpe3ZhciByPSJwYXRoIiE9PWUudHlwZSxuPXQuc2VsZWN0QWxsKCIudmlzdWFsLWN1ZSIpLmRhdGEoWzBdKTtuLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cih7ZmlsbDoiI2ZmZiIsImZpbGwtcnVsZSI6ImV2ZW5vZGQiLHN0cm9rZToiIzAwMCIsInN0cm9rZS13aWR0aCI6MX0pLmNsYXNzZWQoInZpc3VhbC1jdWUiLCEwKTt2YXIgaT1xKEQ/ZS54YW5jaG9yOmEubWlkUmFuZ2Uocj9bZS54MCxlLngxXTpmLmV4dHJhY3RQYXRoQ29vcmRzKGUucGF0aCxoLnBhcmFtSXNYKSkpLG89SChSP2UueWFuY2hvcjphLm1pZFJhbmdlKHI/W2UueTAsZS55MV06Zi5leHRyYWN0UGF0aENvb3JkcyhlLnBhdGgsaC5wYXJhbUlzWSkpKTtpZihpPWYucm91bmRQb3NpdGlvbkZvclNoYXJwU3Ryb2tlUmVuZGVyaW5nKGksMSksbz1mLnJvdW5kUG9zaXRpb25Gb3JTaGFycFN0cm9rZVJlbmRlcmluZyhvLDEpLEQmJlIpe3ZhciBzPSJNIisoaS0xLTEpKyIsIisoby0xLTEpKyJoLTh2Mmg4IHY4aDJ2LTggaDh2LTJoLTggdi04aC0yIFoiO24uYXR0cigiZCIscyl9ZWxzZSBpZihEKXt2YXIgbD0iTSIrKGktMS0xKSsiLCIrKG8tOS0xKSsidjE4IGgyIHYtMTggWiI7bi5hdHRyKCJkIixsKX1lbHNle3ZhciBjPSJNIisoaS05LTEpKyIsIisoby0xLTEpKyJoMTggdjIgaC0xOCBaIjtuLmF0dHIoImQiLGMpfX0oKX1mdW5jdGlvbiAkKHQpe3Quc2VsZWN0QWxsKCIudmlzdWFsLWN1ZSIpLnJlbW92ZSgpfWMuaW5pdChYKSxXLm5vZGUoKS5vbm1vdXNlbW92ZT1afSh0LHgscixlLHApfX1mdW5jdGlvbiBkKHQsZSxyKXt2YXIgbj0oci54cmVmK3IueXJlZikucmVwbGFjZSgvcGFwZXIvZywiIik7cy5zZXRDbGlwVXJsKHQsbj8iY2xpcCIrZS5fZnVsbExheW91dC5fdWlkK246bnVsbCxlKX1mdW5jdGlvbiBnKHQsZSl7dmFyIHIsbixvLHMsbCxjLHUscCxkPWUudHlwZSxnPWkuZ2V0RnJvbUlkKHQsZS54cmVmKSx2PWkuZ2V0RnJvbUlkKHQsZS55cmVmKSxtPXQuX2Z1bGxMYXlvdXQuX3NpemU7aWYoZz8ocj1mLnNoYXBlUG9zaXRpb25Ub1JhbmdlKGcpLG49ZnVuY3Rpb24odCl7cmV0dXJuIGcuX29mZnNldCtnLnIycChyKHQsITApKX0pOm49ZnVuY3Rpb24odCl7cmV0dXJuIG0ubCttLncqdH0sdj8obz1mLnNoYXBlUG9zaXRpb25Ub1JhbmdlKHYpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIHYuX29mZnNldCt2LnIycChvKHQsITApKX0pOnM9ZnVuY3Rpb24odCl7cmV0dXJuIG0udCttLmgqKDEtdCl9LCJwYXRoIj09PWQpcmV0dXJuIGcmJiJkYXRlIj09PWcudHlwZSYmKG49Zi5kZWNvZGVEYXRlKG4pKSx2JiYiZGF0ZSI9PT12LnR5cGUmJihzPWYuZGVjb2RlRGF0ZShzKSksZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQucGF0aCxpPXQueHNpemVtb2RlLG89dC55c2l6ZW1vZGUscz10LnhhbmNob3IsbD10LnlhbmNob3I7cmV0dXJuIG4ucmVwbGFjZShoLnNlZ21lbnRSRSxmdW5jdGlvbih0KXt2YXIgbj0wLGM9dC5jaGFyQXQoMCksdT1oLnBhcmFtSXNYW2NdLGY9aC5wYXJhbUlzWVtjXSxwPWgubnVtUGFyYW1zW2NdLGQ9dC5zdWJzdHIoMSkucmVwbGFjZShoLnBhcmFtUkUsZnVuY3Rpb24odCl7cmV0dXJuIHVbbl0/dD0icGl4ZWwiPT09aT9lKHMpK051bWJlcih0KTplKHQpOmZbbl0mJih0PSJwaXhlbCI9PT1vP3IobCktTnVtYmVyKHQpOnIodCkpLCsrbj5wJiYodD0iWCIpLHR9KTtyZXR1cm4gbj5wJiYoZD1kLnJlcGxhY2UoL1tccyxdKlguKi8sIiIpLGEubG9nKCJJZ25vcmluZyBleHRyYSBwYXJhbXMgaW4gc2VnbWVudCAiK3QpKSxjK2R9KX0oZSxuLHMpO2lmKCJwaXhlbCI9PT1lLnhzaXplbW9kZSl7dmFyIHk9bihlLnhhbmNob3IpO2w9eStlLngwLGM9eStlLngxfWVsc2UgbD1uKGUueDApLGM9bihlLngxKTtpZigicGl4ZWwiPT09ZS55c2l6ZW1vZGUpe3ZhciB4PXMoZS55YW5jaG9yKTt1PXgtZS55MCxwPXgtZS55MX1lbHNlIHU9cyhlLnkwKSxwPXMoZS55MSk7aWYoImxpbmUiPT09ZClyZXR1cm4iTSIrbCsiLCIrdSsiTCIrYysiLCIrcDtpZigicmVjdCI9PT1kKXJldHVybiJNIitsKyIsIit1KyJIIitjKyJWIitwKyJIIitsKyJaIjt2YXIgYj0obCtjKS8yLF89KHUrcCkvMix3PU1hdGguYWJzKGItbCksaz1NYXRoLmFicyhfLXUpLFQ9IkEiK3crIiwiK2ssTT1iK3crIiwiK187cmV0dXJuIk0iK00rVCsiIDAgMSwxICIrKGIrIiwiKyhfLWspKStUKyIgMCAwLDEgIitNKyJaIn1mdW5jdGlvbiB2KHQsZSxyKXtyZXR1cm4gdC5yZXBsYWNlKGguc2VnbWVudFJFLGZ1bmN0aW9uKHQpe3ZhciBuPTAsYT10LmNoYXJBdCgwKSxpPWgucGFyYW1Jc1hbYV0sbz1oLnBhcmFtSXNZW2FdLHM9aC5udW1QYXJhbXNbYV07cmV0dXJuIGErdC5zdWJzdHIoMSkucmVwbGFjZShoLnBhcmFtUkUsZnVuY3Rpb24odCl7cmV0dXJuIG4+PXM/dDooaVtuXT90PWUodCk6b1tuXSYmKHQ9cih0KSksbisrLHQpfSl9KX1lLmV4cG9ydHM9e2RyYXc6ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtmb3IodmFyIHIgaW4gZS5fc2hhcGVVcHBlckxheWVyLnNlbGVjdEFsbCgicGF0aCIpLnJlbW92ZSgpLGUuX3NoYXBlTG93ZXJMYXllci5zZWxlY3RBbGwoInBhdGgiKS5yZW1vdmUoKSxlLl9wbG90cyl7dmFyIG49ZS5fcGxvdHNbcl0uc2hhcGVsYXllcjtuJiZuLnNlbGVjdEFsbCgicGF0aCIpLnJlbW92ZSgpfWZvcih2YXIgYT0wO2E8ZS5zaGFwZXMubGVuZ3RoO2ErKyllLnNoYXBlc1thXS52aXNpYmxlJiZwKHQsYSl9LGRyYXdPbmU6cH19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zZXRjdXJzb3IiOjczNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9jb2xvciI6NTkyLCIuLi9kcmFnZWxlbWVudCI6NjEwLCIuLi9kcmF3aW5nIjo2MTMsIi4vY29uc3RhbnRzIjo2NjksIi4vaGVscGVycyI6NjcyfV0sNjcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIiksYT10KCIuLi8uLi9saWIiKTtyLnJhbmdlVG9TaGFwZVBvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiJsb2ciPT09dC50eXBlP3QucjJkOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sci5zaGFwZVBvc2l0aW9uVG9SYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4ibG9nIj09PXQudHlwZT90LmQycjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHIuZGVjb2RlRGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSYmKGU9ZS5yZXBsYWNlKCJfIiwiICIpKSx0KGUpfX0sci5lbmNvZGVEYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKS5yZXBsYWNlKCIgIiwiXyIpfX0sci5leHRyYWN0UGF0aENvb3Jkcz1mdW5jdGlvbih0LGUpe3ZhciByPVtdO3JldHVybiB0Lm1hdGNoKG4uc2VnbWVudFJFKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBpPWVbdC5jaGFyQXQoMCldLmRyYXduO2lmKHZvaWQgMCE9PWkpe3ZhciBvPXQuc3Vic3RyKDEpLm1hdGNoKG4ucGFyYW1SRSk7IW98fG8ubGVuZ3RoPGl8fHIucHVzaChhLmNsZWFuTnVtYmVyKG9baV0pKX19KSxyfSxyLmdldERhdGFUb1BpeGVsPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYSxpPXQuX2Z1bGxMYXlvdXQuX3NpemU7aWYoZSl7dmFyIG89ci5zaGFwZVBvc2l0aW9uVG9SYW5nZShlKTthPWZ1bmN0aW9uKHQpe3JldHVybiBlLl9vZmZzZXQrZS5yMnAobyh0LCEwKSl9LCJkYXRlIj09PWUudHlwZSYmKGE9ci5kZWNvZGVEYXRlKGEpKX1lbHNlIGE9bj9mdW5jdGlvbih0KXtyZXR1cm4gaS50K2kuaCooMS10KX06ZnVuY3Rpb24odCl7cmV0dXJuIGkubCtpLncqdH07cmV0dXJuIGF9LHIuZ2V0UGl4ZWxUb0RhdGE9ZnVuY3Rpb24odCxlLG4pe3ZhciBhLGk9dC5fZnVsbExheW91dC5fc2l6ZTtpZihlKXt2YXIgbz1yLnJhbmdlVG9TaGFwZVBvc2l0aW9uKGUpO2E9ZnVuY3Rpb24odCl7cmV0dXJuIG8oZS5wMnIodC1lLl9vZmZzZXQpKX19ZWxzZSBhPW4/ZnVuY3Rpb24odCl7cmV0dXJuIDEtKHQtaS50KS9pLmh9OmZ1bmN0aW9uKHQpe3JldHVybih0LWkubCkvaS53fTtyZXR1cm4gYX0sci5yb3VuZFBvc2l0aW9uRm9yU2hhcnBTdHJva2VSZW5kZXJpbmc9ZnVuY3Rpb24odCxlKXt2YXIgcj0xPT09TWF0aC5yb3VuZChlJTIpLG49TWF0aC5yb3VuZCh0KTtyZXR1cm4gcj9uKy41Om59fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2NvbnN0YW50cyI6NjY5fV0sNjczOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vZHJhdyIpO2UuZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJzaGFwZXMiLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGluY2x1ZGVCYXNlUGxvdDp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaW5jbHVkZV9jb21wb25lbnRzIikoInNoYXBlcyIpLGNhbGNBdXRvcmFuZ2U6dCgiLi9jYWxjX2F1dG9yYW5nZSIpLGRyYXc6bi5kcmF3LGRyYXdPbmU6bi5kcmF3T25lfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaW5jbHVkZV9jb21wb25lbnRzIjo3NzUsIi4vYXR0cmlidXRlcyI6NjY3LCIuL2NhbGNfYXV0b3JhbmdlIjo2NjgsIi4vZGVmYXVsdHMiOjY3MCwiLi9kcmF3Ijo2NzF9XSw2NzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy9wYWRfYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZERlZXBBbGwsbz10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwscz10KCIuLi8uLi9wbG90cy9hbmltYXRpb25fYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5LGM9dCgiLi9jb25zdGFudHMiKSx1PWwoInN0ZXAiLHt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxtZXRob2Q6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInJlc3R5bGUiLCJyZWxheW91dCIsImFuaW1hdGUiLCJ1cGRhdGUiLCJza2lwIl0sZGZsdDoicmVzdHlsZSJ9LGFyZ3M6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGZyZWVMZW5ndGg6ITAsaXRlbXM6W3t2YWxUeXBlOiJhbnkifSx7dmFsVHlwZToiYW55In0se3ZhbFR5cGU6ImFueSJ9XX0sbGFiZWw6e3ZhbFR5cGU6InN0cmluZyJ9LHZhbHVlOnt2YWxUeXBlOiJzdHJpbmcifSxleGVjdXRlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfX0pO2UuZXhwb3J0cz1vKGwoInNsaWRlciIse3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LGFjdGl2ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjB9LHN0ZXBzOnUsbGVubW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJhY3Rpb24iLCJwaXhlbHMiXSxkZmx0OiJmcmFjdGlvbiJ9LGxlbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGRmbHQ6MH0scGFkOmkoYSh7ZWRpdFR5cGU6ImFycmF5ZHJhdyJ9KSx7fSx7dDp7ZGZsdDoyMH19KSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoibGVmdCJ9LHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGRmbHQ6MH0seWFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsInRvcCIsIm1pZGRsZSIsImJvdHRvbSJdLGRmbHQ6InRvcCJ9LHRyYW5zaXRpb246e2R1cmF0aW9uOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MTUwfSxlYXNpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpzLnRyYW5zaXRpb24uZWFzaW5nLnZhbHVlcyxkZmx0OiJjdWJpYy1pbi1vdXQifX0sY3VycmVudHZhbHVlOnt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJsZWZ0In0sb2Zmc2V0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MTB9LHByZWZpeDp7dmFsVHlwZToic3RyaW5nIn0sc3VmZml4Ont2YWxUeXBlOiJzdHJpbmcifSxmb250Om4oe30pfSxmb250Om4oe30pLGFjdGl2ZWJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmMuZ3JpcEJnQWN0aXZlQ29sb3J9LGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmMucmFpbEJnQ29sb3J9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpjLnJhaWxCb3JkZXJDb2xvcn0sYm9yZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDpjLnJhaWxCb3JkZXJXaWR0aH0sdGlja2xlbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OmMudGlja0xlbmd0aH0sdGlja2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpjLnRpY2tDb2xvcn0sdGlja3dpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sbWlub3J0aWNrbGVuOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6Yy5taW5vclRpY2tMZW5ndGh9fSksImFycmF5ZHJhdyIsImZyb20tcm9vdCIpfSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2FuaW1hdGlvbl9hdHRyaWJ1dGVzIjo3NjAsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuLi8uLi9wbG90cy9wYWRfYXR0cmlidXRlcyI6ODI1LCIuL2NvbnN0YW50cyI6Njc1fV0sNjc1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bmFtZToic2xpZGVycyIsY29udGFpbmVyQ2xhc3NOYW1lOiJzbGlkZXItY29udGFpbmVyIixncm91cENsYXNzTmFtZToic2xpZGVyLWdyb3VwIixpbnB1dEFyZWFDbGFzczoic2xpZGVyLWlucHV0LWFyZWEiLHJhaWxSZWN0Q2xhc3M6InNsaWRlci1yYWlsLXJlY3QiLHJhaWxUb3VjaFJlY3RDbGFzczoic2xpZGVyLXJhaWwtdG91Y2gtcmVjdCIsZ3JpcFJlY3RDbGFzczoic2xpZGVyLWdyaXAtcmVjdCIsdGlja1JlY3RDbGFzczoic2xpZGVyLXRpY2stcmVjdCIsaW5wdXRQcm94eUNsYXNzOiJzbGlkZXItaW5wdXQtcHJveHkiLGxhYmVsc0NsYXNzOiJzbGlkZXItbGFiZWxzIixsYWJlbEdyb3VwQ2xhc3M6InNsaWRlci1sYWJlbC1ncm91cCIsbGFiZWxDbGFzczoic2xpZGVyLWxhYmVsIixjdXJyZW50VmFsdWVDbGFzczoic2xpZGVyLWN1cnJlbnQtdmFsdWUiLHJhaWxIZWlnaHQ6NSxtZW51SW5kZXhBdHRyTmFtZToic2xpZGVyLWFjdGl2ZS1pbmRleCIsYXV0b01hcmdpbklkUm9vdDoic2xpZGVyLSIsbWluV2lkdGg6MzAsbWluSGVpZ2h0OjMwLHRleHRQYWRYOjQwLGFycm93T2Zmc2V0WDo0LHJhaWxSYWRpdXM6MixyYWlsV2lkdGg6NSxyYWlsQm9yZGVyOjQscmFpbEJvcmRlcldpZHRoOjEscmFpbEJvcmRlckNvbG9yOiIjYmVjOGQ5IixyYWlsQmdDb2xvcjoiI2Y4ZmFmYyIscmFpbEluc2V0Ojgsc3RlcEluc2V0OjEwLGdyaXBSYWRpdXM6MTAsZ3JpcFdpZHRoOjIwLGdyaXBIZWlnaHQ6MjAsZ3JpcEJvcmRlcjoyMCxncmlwQm9yZGVyV2lkdGg6MSxncmlwQm9yZGVyQ29sb3I6IiNiZWM4ZDkiLGdyaXBCZ0NvbG9yOiIjZjZmOGZhIixncmlwQmdBY3RpdmVDb2xvcjoiI2RiZGRlMCIsbGFiZWxQYWRkaW5nOjgsbGFiZWxPZmZzZXQ6MCx0aWNrV2lkdGg6MSx0aWNrQ29sb3I6IiMzMzMiLHRpY2tPZmZzZXQ6MjUsdGlja0xlbmd0aDo3LG1pbm9yVGlja09mZnNldDoyNSxtaW5vclRpY2tDb2xvcjoiIzMzMyIsbWlub3JUaWNrTGVuZ3RoOjQsY3VycmVudFZhbHVlUGFkZGluZzo4LGN1cnJlbnRWYWx1ZUluc2V0OjB9fSx7fV0sNjc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQoIi4vY29uc3RhbnRzIikubmFtZSxzPWkuc3RlcHM7ZnVuY3Rpb24gbCh0LGUscil7ZnVuY3Rpb24gbyhyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaSxyLGEpfWZvcih2YXIgcz1hKHQsZSx7bmFtZToic3RlcHMiLGhhbmRsZUl0ZW1EZWZhdWx0czpjfSksbD0wLHU9MDt1PHMubGVuZ3RoO3UrKylzW3VdLnZpc2libGUmJmwrKztpZihsPDI/ZS52aXNpYmxlPSExOm8oInZpc2libGUiKSl7ZS5fc3RlcENvdW50PWw7dmFyIGg9ZS5fdmlzaWJsZVN0ZXBzPW4uZmlsdGVyVmlzaWJsZShzKTsoc1tvKCJhY3RpdmUiKV18fHt9KS52aXNpYmxlfHwoZS5hY3RpdmU9aFswXS5faW5kZXgpLG8oIngiKSxvKCJ5Iiksbi5ub25lT3JBbGwodCxlLFsieCIsInkiXSksbygieGFuY2hvciIpLG8oInlhbmNob3IiKSxvKCJsZW4iKSxvKCJsZW5tb2RlIiksbygicGFkLnQiKSxvKCJwYWQuciIpLG8oInBhZC5iIiksbygicGFkLmwiKSxuLmNvZXJjZUZvbnQobywiZm9udCIsci5mb250KSxvKCJjdXJyZW50dmFsdWUudmlzaWJsZSIpJiYobygiY3VycmVudHZhbHVlLnhhbmNob3IiKSxvKCJjdXJyZW50dmFsdWUucHJlZml4IiksbygiY3VycmVudHZhbHVlLnN1ZmZpeCIpLG8oImN1cnJlbnR2YWx1ZS5vZmZzZXQiKSxuLmNvZXJjZUZvbnQobywiY3VycmVudHZhbHVlLmZvbnQiLGUuZm9udCkpLG8oInRyYW5zaXRpb24uZHVyYXRpb24iKSxvKCJ0cmFuc2l0aW9uLmVhc2luZyIpLG8oImJnY29sb3IiKSxvKCJhY3RpdmViZ2NvbG9yIiksbygiYm9yZGVyY29sb3IiKSxvKCJib3JkZXJ3aWR0aCIpLG8oInRpY2tsZW4iKSxvKCJ0aWNrd2lkdGgiKSxvKCJ0aWNrY29sb3IiKSxvKCJtaW5vcnRpY2tsZW4iKX19ZnVuY3Rpb24gYyh0LGUpe2Z1bmN0aW9uIHIocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLHMscixhKX1pZigic2tpcCI9PT10Lm1ldGhvZHx8QXJyYXkuaXNBcnJheSh0LmFyZ3MpP3IoInZpc2libGUiKTplLnZpc2libGU9ITEpe3IoIm1ldGhvZCIpLHIoImFyZ3MiKTt2YXIgYT1yKCJsYWJlbCIsInN0ZXAtIitlLl9pbmRleCk7cigidmFsdWUiLGEpLHIoImV4ZWN1dGUiKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7YSh0LGUse25hbWU6byxoYW5kbGVJdGVtRGVmYXVsdHM6bH0pfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4vYXR0cmlidXRlcyI6Njc0LCIuL2NvbnN0YW50cyI6Njc1fV0sNjc3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9wbG90cy9wbG90cyIpLGk9dCgiLi4vY29sb3IiKSxvPXQoIi4uL2RyYXdpbmciKSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksYz10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikuYXJyYXlFZGl0b3IsdT10KCIuL2NvbnN0YW50cyIpLGg9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLGY9aC5MSU5FX1NQQUNJTkcscD1oLkZST01fVEwsZD1oLkZST01fQlI7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdS5hdXRvTWFyZ2luSWRSb290K3QuX2luZGV4fWZ1bmN0aW9uIHYodCl7cmV0dXJuIHQuX2luZGV4fWZ1bmN0aW9uIG0odCxlKXt2YXIgcj1vLnRlc3Rlci5zZWxlY3RBbGwoImcuIit1LmxhYmVsR3JvdXBDbGFzcykuZGF0YShlLl92aXNpYmxlU3RlcHMpO3IuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHUubGFiZWxHcm91cENsYXNzLCEwKTt2YXIgaT0wLGM9MDtyLmVhY2goZnVuY3Rpb24odCl7dmFyIHI9YihuLnNlbGVjdCh0aGlzKSx7c3RlcDp0fSxlKS5ub2RlKCk7aWYocil7dmFyIGE9by5iQm94KHIpO2M9TWF0aC5tYXgoYyxhLmhlaWdodCksaT1NYXRoLm1heChpLGEud2lkdGgpfX0pLHIucmVtb3ZlKCk7dmFyIGg9ZS5fZGltcz17fTtoLmlucHV0QXJlYVdpZHRoPU1hdGgubWF4KHUucmFpbFdpZHRoLHUuZ3JpcEhlaWdodCk7dmFyIGY9dC5fZnVsbExheW91dC5fc2l6ZTtoLmx4PWYubCtmLncqZS54LGgubHk9Zi50K2YuaCooMS1lLnkpLCJmcmFjdGlvbiI9PT1lLmxlbm1vZGU/aC5vdXRlckxlbmd0aD1NYXRoLnJvdW5kKGYudyplLmxlbik6aC5vdXRlckxlbmd0aD1lLmxlbixoLmlucHV0QXJlYVN0YXJ0PTAsaC5pbnB1dEFyZWFMZW5ndGg9TWF0aC5yb3VuZChoLm91dGVyTGVuZ3RoLWUucGFkLmwtZS5wYWQucik7dmFyIHY9KGguaW5wdXRBcmVhTGVuZ3RoLTIqdS5zdGVwSW5zZXQpLyhlLl9zdGVwQ291bnQtMSksbT1pK3UubGFiZWxQYWRkaW5nO2lmKGgubGFiZWxTdHJpZGU9TWF0aC5tYXgoMSxNYXRoLmNlaWwobS92KSksaC5sYWJlbEhlaWdodD1jLGguY3VycmVudFZhbHVlTWF4V2lkdGg9MCxoLmN1cnJlbnRWYWx1ZUhlaWdodD0wLGguY3VycmVudFZhbHVlVG90YWxIZWlnaHQ9MCxoLmN1cnJlbnRWYWx1ZU1heExpbmVzPTEsZS5jdXJyZW50dmFsdWUudmlzaWJsZSl7dmFyIHg9by50ZXN0ZXIuYXBwZW5kKCJnIik7ci5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByPXkoeCxlLHQubGFiZWwpLG49ci5ub2RlKCkmJm8uYkJveChyLm5vZGUoKSl8fHt3aWR0aDowLGhlaWdodDowfSxhPWwubGluZUNvdW50KHIpO2guY3VycmVudFZhbHVlTWF4V2lkdGg9TWF0aC5tYXgoaC5jdXJyZW50VmFsdWVNYXhXaWR0aCxNYXRoLmNlaWwobi53aWR0aCkpLGguY3VycmVudFZhbHVlSGVpZ2h0PU1hdGgubWF4KGguY3VycmVudFZhbHVlSGVpZ2h0LE1hdGguY2VpbChuLmhlaWdodCkpLGguY3VycmVudFZhbHVlTWF4TGluZXM9TWF0aC5tYXgoaC5jdXJyZW50VmFsdWVNYXhMaW5lcyxhKX0pLGguY3VycmVudFZhbHVlVG90YWxIZWlnaHQ9aC5jdXJyZW50VmFsdWVIZWlnaHQrZS5jdXJyZW50dmFsdWUub2Zmc2V0LHgucmVtb3ZlKCl9aC5oZWlnaHQ9aC5jdXJyZW50VmFsdWVUb3RhbEhlaWdodCt1LnRpY2tPZmZzZXQrZS50aWNrbGVuK3UubGFiZWxPZmZzZXQraC5sYWJlbEhlaWdodCtlLnBhZC50K2UucGFkLmI7dmFyIF89ImxlZnQiO3MuaXNSaWdodEFuY2hvcihlKSYmKGgubHgtPWgub3V0ZXJMZW5ndGgsXz0icmlnaHQiKSxzLmlzQ2VudGVyQW5jaG9yKGUpJiYoaC5seC09aC5vdXRlckxlbmd0aC8yLF89ImNlbnRlciIpO3ZhciB3PSJ0b3AiO3MuaXNCb3R0b21BbmNob3IoZSkmJihoLmx5LT1oLmhlaWdodCx3PSJib3R0b20iKSxzLmlzTWlkZGxlQW5jaG9yKGUpJiYoaC5seS09aC5oZWlnaHQvMix3PSJtaWRkbGUiKSxoLm91dGVyTGVuZ3RoPU1hdGguY2VpbChoLm91dGVyTGVuZ3RoKSxoLmhlaWdodD1NYXRoLmNlaWwoaC5oZWlnaHQpLGgubHg9TWF0aC5yb3VuZChoLmx4KSxoLmx5PU1hdGgucm91bmQoaC5seSk7dmFyIGs9e3k6ZS55LGI6aC5oZWlnaHQqZFt3XSx0OmguaGVpZ2h0KnBbd119OyJmcmFjdGlvbiI9PT1lLmxlbm1vZGU/KGsubD0wLGsueGw9ZS54LWUubGVuKnBbX10say5yPTAsay54cj1lLngrZS5sZW4qZFtfXSk6KGsueD1lLngsay5sPWgub3V0ZXJMZW5ndGgqcFtfXSxrLnI9aC5vdXRlckxlbmd0aCpkW19dKSxhLmF1dG9NYXJnaW4odCxnKGUpLGspfWZ1bmN0aW9uIHkodCxlLHIpe2lmKGUuY3VycmVudHZhbHVlLnZpc2libGUpe3ZhciBuLGEsaT1lLl9kaW1zO3N3aXRjaChlLmN1cnJlbnR2YWx1ZS54YW5jaG9yKXtjYXNlInJpZ2h0IjpuPWkuaW5wdXRBcmVhTGVuZ3RoLXUuY3VycmVudFZhbHVlSW5zZXQtaS5jdXJyZW50VmFsdWVNYXhXaWR0aCxhPSJsZWZ0IjticmVhaztjYXNlImNlbnRlciI6bj0uNSppLmlucHV0QXJlYUxlbmd0aCxhPSJtaWRkbGUiO2JyZWFrO2RlZmF1bHQ6bj11LmN1cnJlbnRWYWx1ZUluc2V0LGE9ImxlZnQifXZhciBjPXMuZW5zdXJlU2luZ2xlKHQsInRleHQiLHUubGFiZWxDbGFzcyxmdW5jdGlvbih0KXt0LmNsYXNzZWQoInVzZXItc2VsZWN0LW5vbmUiLCEwKS5hdHRyKHsidGV4dC1hbmNob3IiOmEsImRhdGEtbm90ZXgiOjF9KX0pLGg9ZS5jdXJyZW50dmFsdWUucHJlZml4P2UuY3VycmVudHZhbHVlLnByZWZpeDoiIjtpZigic3RyaW5nIj09dHlwZW9mIHIpaCs9cjtlbHNle3ZhciBwPWUuc3RlcHNbZS5hY3RpdmVdLmxhYmVsLGQ9ZS5fZ2QuX2Z1bGxMYXlvdXQuX21ldGE7ZCYmKHA9cy50ZW1wbGF0ZVN0cmluZyhwLGQpKSxoKz1wfWUuY3VycmVudHZhbHVlLnN1ZmZpeCYmKGgrPWUuY3VycmVudHZhbHVlLnN1ZmZpeCksYy5jYWxsKG8uZm9udCxlLmN1cnJlbnR2YWx1ZS5mb250KS50ZXh0KGgpLmNhbGwobC5jb252ZXJ0VG9Uc3BhbnMsZS5fZ2QpO3ZhciBnPWwubGluZUNvdW50KGMpLHY9KGkuY3VycmVudFZhbHVlTWF4TGluZXMrMS1nKSplLmN1cnJlbnR2YWx1ZS5mb250LnNpemUqZjtyZXR1cm4gbC5wb3NpdGlvblRleHQoYyxuLHYpLGN9fWZ1bmN0aW9uIHgodCxlLHIpe3MuZW5zdXJlU2luZ2xlKHQsInJlY3QiLHUuZ3JpcFJlY3RDbGFzcyxmdW5jdGlvbihuKXtuLmNhbGwoVCxlLHQscikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIil9KS5hdHRyKHt3aWR0aDp1LmdyaXBXaWR0aCxoZWlnaHQ6dS5ncmlwSGVpZ2h0LHJ4OnUuZ3JpcFJhZGl1cyxyeTp1LmdyaXBSYWRpdXN9KS5jYWxsKGkuc3Ryb2tlLHIuYm9yZGVyY29sb3IpLmNhbGwoaS5maWxsLHIuYmdjb2xvcikuc3R5bGUoInN0cm9rZS13aWR0aCIsci5ib3JkZXJ3aWR0aCsicHgiKX1mdW5jdGlvbiBiKHQsZSxyKXt2YXIgbj1zLmVuc3VyZVNpbmdsZSh0LCJ0ZXh0Iix1LmxhYmVsQ2xhc3MsZnVuY3Rpb24odCl7dC5jbGFzc2VkKCJ1c2VyLXNlbGVjdC1ub25lIiwhMCkuYXR0cih7InRleHQtYW5jaG9yIjoibWlkZGxlIiwiZGF0YS1ub3RleCI6MX0pfSksYT1lLnN0ZXAubGFiZWwsaT1yLl9nZC5fZnVsbExheW91dC5fbWV0YTtyZXR1cm4gaSYmKGE9cy50ZW1wbGF0ZVN0cmluZyhhLGkpKSxuLmNhbGwoby5mb250LHIuZm9udCkudGV4dChhKS5jYWxsKGwuY29udmVydFRvVHNwYW5zLHIuX2dkKSxufWZ1bmN0aW9uIF8odCxlKXt2YXIgcj1zLmVuc3VyZVNpbmdsZSh0LCJnIix1LmxhYmVsc0NsYXNzKSxhPWUuX2RpbXMsaT1yLnNlbGVjdEFsbCgiZy4iK3UubGFiZWxHcm91cENsYXNzKS5kYXRhKGEubGFiZWxTdGVwcyk7aS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQodS5sYWJlbEdyb3VwQ2xhc3MsITApLGkuZXhpdCgpLnJlbW92ZSgpLGkuZWFjaChmdW5jdGlvbih0KXt2YXIgcj1uLnNlbGVjdCh0aGlzKTtyLmNhbGwoYix0LGUpLG8uc2V0VHJhbnNsYXRlKHIsUyhlLHQuZnJhY3Rpb24pLHUudGlja09mZnNldCtlLnRpY2tsZW4rZS5mb250LnNpemUqZit1LmxhYmVsT2Zmc2V0K2EuY3VycmVudFZhbHVlVG90YWxIZWlnaHQpfSl9ZnVuY3Rpb24gdyh0LGUscixuLGEpe3ZhciBpPU1hdGgucm91bmQobiooci5fc3RlcENvdW50LTEpKSxvPXIuX3Zpc2libGVTdGVwc1tpXS5faW5kZXg7byE9PXIuYWN0aXZlJiZrKHQsZSxyLG8sITAsYSl9ZnVuY3Rpb24gayh0LGUscixuLGksbyl7dmFyIHM9ci5hY3RpdmU7ci5hY3RpdmU9bixjKHQubGF5b3V0LHUubmFtZSxyKS5hcHBseVVwZGF0ZSgiYWN0aXZlIixuKTt2YXIgbD1yLnN0ZXBzW3IuYWN0aXZlXTtlLmNhbGwoQSxyLG8pLGUuY2FsbCh5LHIpLHQuZW1pdCgicGxvdGx5X3NsaWRlcmNoYW5nZSIse3NsaWRlcjpyLHN0ZXA6ci5zdGVwc1tyLmFjdGl2ZV0saW50ZXJhY3Rpb246aSxwcmV2aW91c0FjdGl2ZTpzfSksbCYmbC5tZXRob2QmJmkmJihlLl9uZXh0TWV0aG9kPyhlLl9uZXh0TWV0aG9kLnN0ZXA9bCxlLl9uZXh0TWV0aG9kLmRvQ2FsbGJhY2s9aSxlLl9uZXh0TWV0aG9kLmRvVHJhbnNpdGlvbj1vKTooZS5fbmV4dE1ldGhvZD17c3RlcDpsLGRvQ2FsbGJhY2s6aSxkb1RyYW5zaXRpb246b30sZS5fbmV4dE1ldGhvZFJhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dmFyIHI9ZS5fbmV4dE1ldGhvZC5zdGVwO3IubWV0aG9kJiYoci5leGVjdXRlJiZhLmV4ZWN1dGVBUElDb21tYW5kKHQsci5tZXRob2Qsci5hcmdzKSxlLl9uZXh0TWV0aG9kPW51bGwsZS5fbmV4dE1ldGhvZFJhZj1udWxsKX0pKSl9ZnVuY3Rpb24gVCh0LGUscil7dmFyIGE9ci5ub2RlKCksbz1uLnNlbGVjdChlKTtmdW5jdGlvbiBzKCl7cmV0dXJuIHIuZGF0YSgpWzBdfXQub24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXt2YXIgdD1zKCk7ZS5lbWl0KCJwbG90bHlfc2xpZGVyc3RhcnQiLHtzbGlkZXI6dH0pO3ZhciBsPXIuc2VsZWN0KCIuIit1LmdyaXBSZWN0Q2xhc3MpO24uZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCksbi5ldmVudC5wcmV2ZW50RGVmYXVsdCgpLGwuY2FsbChpLmZpbGwsdC5hY3RpdmViZ2NvbG9yKTt2YXIgYz1FKHQsbi5tb3VzZShhKVswXSk7dyhlLHIsdCxjLCEwKSx0Ll9kcmFnZ2luZz0hMCxvLm9uKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKCl7dmFyIHQ9cygpLGk9RSh0LG4ubW91c2UoYSlbMF0pO3coZSxyLHQsaSwhMSl9KSxvLm9uKCJtb3VzZXVwIixmdW5jdGlvbigpe3ZhciB0PXMoKTt0Ll9kcmFnZ2luZz0hMSxsLmNhbGwoaS5maWxsLHQuYmdjb2xvciksby5vbigibW91c2V1cCIsbnVsbCksby5vbigibW91c2Vtb3ZlIixudWxsKSxlLmVtaXQoInBsb3RseV9zbGlkZXJlbmQiLHtzbGlkZXI6dCxzdGVwOnQuc3RlcHNbdC5hY3RpdmVdfSl9KX0pfWZ1bmN0aW9uIE0odCxlKXt2YXIgcj10LnNlbGVjdEFsbCgicmVjdC4iK3UudGlja1JlY3RDbGFzcykuZGF0YShlLl92aXNpYmxlU3RlcHMpLGE9ZS5fZGltcztyLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCh1LnRpY2tSZWN0Q2xhc3MsITApLHIuZXhpdCgpLnJlbW92ZSgpLHIuYXR0cih7d2lkdGg6ZS50aWNrd2lkdGgrInB4Iiwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KSxyLmVhY2goZnVuY3Rpb24odCxyKXt2YXIgcz1yJWEubGFiZWxTdHJpZGU9PTAsbD1uLnNlbGVjdCh0aGlzKTtsLmF0dHIoe2hlaWdodDpzP2UudGlja2xlbjplLm1pbm9ydGlja2xlbn0pLmNhbGwoaS5maWxsLGUudGlja2NvbG9yKSxvLnNldFRyYW5zbGF0ZShsLFMoZSxyLyhlLl9zdGVwQ291bnQtMSkpLS41KmUudGlja3dpZHRoLChzP3UudGlja09mZnNldDp1Lm1pbm9yVGlja09mZnNldCkrYS5jdXJyZW50VmFsdWVUb3RhbEhlaWdodCl9KX1mdW5jdGlvbiBBKHQsZSxyKXtmb3IodmFyIG49dC5zZWxlY3QoInJlY3QuIit1LmdyaXBSZWN0Q2xhc3MpLGE9MCxpPTA7aTxlLl9zdGVwQ291bnQ7aSsrKWlmKGUuX3Zpc2libGVTdGVwc1tpXS5faW5kZXg9PT1lLmFjdGl2ZSl7YT1pO2JyZWFrfXZhciBvPVMoZSxhLyhlLl9zdGVwQ291bnQtMSkpO2lmKCFlLl9pbnZva2luZ0NvbW1hbmQpe3ZhciBzPW47ciYmZS50cmFuc2l0aW9uLmR1cmF0aW9uPjAmJihzPXMudHJhbnNpdGlvbigpLmR1cmF0aW9uKGUudHJhbnNpdGlvbi5kdXJhdGlvbikuZWFzZShlLnRyYW5zaXRpb24uZWFzaW5nKSkscy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoby0uNSp1LmdyaXBXaWR0aCkrIiwiK2UuX2RpbXMuY3VycmVudFZhbHVlVG90YWxIZWlnaHQrIikiKX19ZnVuY3Rpb24gUyh0LGUpe3ZhciByPXQuX2RpbXM7cmV0dXJuIHIuaW5wdXRBcmVhU3RhcnQrdS5zdGVwSW5zZXQrKHIuaW5wdXRBcmVhTGVuZ3RoLTIqdS5zdGVwSW5zZXQpKk1hdGgubWluKDEsTWF0aC5tYXgoMCxlKSl9ZnVuY3Rpb24gRSh0LGUpe3ZhciByPXQuX2RpbXM7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCwoZS11LnN0ZXBJbnNldC1yLmlucHV0QXJlYVN0YXJ0KS8oci5pbnB1dEFyZWFMZW5ndGgtMip1LnN0ZXBJbnNldC0yKnIuaW5wdXRBcmVhU3RhcnQpKSl9ZnVuY3Rpb24gTCh0LGUscil7dmFyIG49ci5fZGltcyxhPXMuZW5zdXJlU2luZ2xlKHQsInJlY3QiLHUucmFpbFRvdWNoUmVjdENsYXNzLGZ1bmN0aW9uKG4pe24uY2FsbChULGUsdCxyKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKX0pO2EuYXR0cih7d2lkdGg6bi5pbnB1dEFyZWFMZW5ndGgsaGVpZ2h0Ok1hdGgubWF4KG4uaW5wdXRBcmVhV2lkdGgsdS50aWNrT2Zmc2V0K3IudGlja2xlbituLmxhYmVsSGVpZ2h0KX0pLmNhbGwoaS5maWxsLHIuYmdjb2xvcikuYXR0cigib3BhY2l0eSIsMCksby5zZXRUcmFuc2xhdGUoYSwwLG4uY3VycmVudFZhbHVlVG90YWxIZWlnaHQpfWZ1bmN0aW9uIEModCxlKXt2YXIgcj1lLl9kaW1zLG49ci5pbnB1dEFyZWFMZW5ndGgtMip1LnJhaWxJbnNldCxhPXMuZW5zdXJlU2luZ2xlKHQsInJlY3QiLHUucmFpbFJlY3RDbGFzcyk7YS5hdHRyKHt3aWR0aDpuLGhlaWdodDp1LnJhaWxXaWR0aCxyeDp1LnJhaWxSYWRpdXMscnk6dS5yYWlsUmFkaXVzLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pLmNhbGwoaS5zdHJva2UsZS5ib3JkZXJjb2xvcikuY2FsbChpLmZpbGwsZS5iZ2NvbG9yKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixlLmJvcmRlcndpZHRoKyJweCIpLG8uc2V0VHJhbnNsYXRlKGEsdS5yYWlsSW5zZXQsLjUqKHIuaW5wdXRBcmVhV2lkdGgtdS5yYWlsV2lkdGgpK3IuY3VycmVudFZhbHVlVG90YWxIZWlnaHQpfWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dFt1Lm5hbWVdLG49W10sYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgaT1yW2FdO2kudmlzaWJsZSYmKGkuX2dkPWUsbi5wdXNoKGkpKX1yZXR1cm4gbn0oZSx0KSxpPWUuX2luZm9sYXllci5zZWxlY3RBbGwoImcuIit1LmNvbnRhaW5lckNsYXNzTmFtZSkuZGF0YShyLmxlbmd0aD4wP1swXTpbXSk7ZnVuY3Rpb24gcyhlKXtlLl9jb21tYW5kT2JzZXJ2ZXImJihlLl9jb21tYW5kT2JzZXJ2ZXIucmVtb3ZlKCksZGVsZXRlIGUuX2NvbW1hbmRPYnNlcnZlciksYS5hdXRvTWFyZ2luKHQsZyhlKSl9aWYoaS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQodS5jb250YWluZXJDbGFzc05hbWUsITApLnN0eWxlKCJjdXJzb3IiLCJldy1yZXNpemUiKSxpLmV4aXQoKS5lYWNoKGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLiIrdS5ncm91cENsYXNzTmFtZSkuZWFjaChzKX0pLnJlbW92ZSgpLDAhPT1yLmxlbmd0aCl7dmFyIGw9aS5zZWxlY3RBbGwoImcuIit1Lmdyb3VwQ2xhc3NOYW1lKS5kYXRhKHIsdik7bC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQodS5ncm91cENsYXNzTmFtZSwhMCksbC5leGl0KCkuZWFjaChzKS5yZW1vdmUoKTtmb3IodmFyIGM9MDtjPHIubGVuZ3RoO2MrKyl7dmFyIGg9cltjXTttKHQsaCl9bC5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0KHRoaXMpOyFmdW5jdGlvbih0KXt2YXIgZT10Ll9kaW1zO2UubGFiZWxTdGVwcz1bXTtmb3IodmFyIHI9dC5fc3RlcENvdW50LG49MDtuPHI7bis9ZS5sYWJlbFN0cmlkZSllLmxhYmVsU3RlcHMucHVzaCh7ZnJhY3Rpb246bi8oci0xKSxzdGVwOnQuX3Zpc2libGVTdGVwc1tuXX0pfShlKSxhLm1hbmFnZUNvbW1hbmRPYnNlcnZlcih0LGUsZS5fdmlzaWJsZVN0ZXBzLGZ1bmN0aW9uKGUpe3ZhciBuPXIuZGF0YSgpWzBdO24uYWN0aXZlIT09ZS5pbmRleCYmKG4uX2RyYWdnaW5nfHxrKHQscixuLGUuaW5kZXgsITEsITApKX0pLGZ1bmN0aW9uKHQsZSxyKXsoci5zdGVwc1tyLmFjdGl2ZV18fHt9KS52aXNpYmxlfHwoci5hY3RpdmU9ci5fdmlzaWJsZVN0ZXBzWzBdLl9pbmRleCk7ZS5jYWxsKHkscikuY2FsbChDLHIpLmNhbGwoXyxyKS5jYWxsKE0scikuY2FsbChMLHQscikuY2FsbCh4LHQscik7dmFyIG49ci5fZGltcztvLnNldFRyYW5zbGF0ZShlLG4ubHgrci5wYWQubCxuLmx5K3IucGFkLnQpLGUuY2FsbChBLHIsITEpLGUuY2FsbCh5LHIpfSh0LG4uc2VsZWN0KHRoaXMpLGUpfSl9fX0seyIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9wbG90cy9wbG90cyI6ODI2LCIuLi9jb2xvciI6NTkyLCIuLi9kcmF3aW5nIjo2MTMsIi4vY29uc3RhbnRzIjo2NzUsZDM6MTY1fV0sNjc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIik7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6bi5uYW1lLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGRyYXc6dCgiLi9kcmF3Iil9fSx7Ii4vYXR0cmlidXRlcyI6Njc0LCIuL2NvbnN0YW50cyI6Njc1LCIuL2RlZmF1bHRzIjo2NzYsIi4vZHJhdyI6Njc3fV0sNjc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4uL2RyYXdpbmciKSxjPXQoIi4uL2NvbG9yIiksdT10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxoPXQoIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiKSxmPXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5PUFBPU0lURV9TSURFLHA9LyBbWFldWzAtOV0qIC87ZS5leHBvcnRzPXtkcmF3OmZ1bmN0aW9uKHQsZSxyKXt2YXIgZCxnPXIucHJvcENvbnRhaW5lcix2PXIucHJvcE5hbWUsbT1yLnBsYWNlaG9sZGVyLHk9ci50cmFjZUluZGV4LHg9ci5hdm9pZHx8e30sYj1yLmF0dHJpYnV0ZXMsXz1yLnRyYW5zZm9ybSx3PXIuY29udGFpbmVyR3JvdXAsaz10Ll9mdWxsTGF5b3V0LFQ9MSxNPSExLEE9Zy50aXRsZSxTPShBJiZBLnRleHQ/QS50ZXh0OiIiKS50cmltKCksRT1BJiZBLmZvbnQ/QS5mb250Ont9LEw9RS5mYW1pbHksQz1FLnNpemUsUD1FLmNvbG9yOyJ0aXRsZS50ZXh0Ij09PXY/ZD0idGl0bGVUZXh0IjotMSE9PXYuaW5kZXhPZigiYXhpcyIpP2Q9ImF4aXNUaXRsZVRleHQiOnYuaW5kZXhPZighMCkmJihkPSJjb2xvcmJhclRpdGxlVGV4dCIpO3ZhciBPPXQuX2NvbnRleHQuZWRpdHNbZF07IiI9PT1TP1Q9MDpTLnJlcGxhY2UocCwiICUgIik9PT1tLnJlcGxhY2UocCwiICUgIikmJihUPS4yLE09ITAsT3x8KFM9IiIpKSxyLl9tZXRhP1M9cy50ZW1wbGF0ZVN0cmluZyhTLHIuX21ldGEpOmsuX21ldGEmJihTPXMudGVtcGxhdGVTdHJpbmcoUyxrLl9tZXRhKSk7dmFyIHo9U3x8Tzt3fHwodz1zLmVuc3VyZVNpbmdsZShrLl9pbmZvbGF5ZXIsImciLCJnLSIrZSkpO3ZhciBJPXcuc2VsZWN0QWxsKCJ0ZXh0IikuZGF0YSh6P1swXTpbXSk7aWYoSS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLEkudGV4dChTKS5hdHRyKCJjbGFzcyIsZSksSS5leGl0KCkucmVtb3ZlKCksIXopcmV0dXJuIHc7ZnVuY3Rpb24gRCh0KXtzLnN5bmNPckFzeW5jKFtSLEZdLHQpfWZ1bmN0aW9uIFIoZSl7dmFyIHI7cmV0dXJuIF8/KHI9IiIsXy5yb3RhdGUmJihyKz0icm90YXRlKCIrW18ucm90YXRlLGIueCxiLnldKyIpIiksXy5vZmZzZXQmJihyKz0idHJhbnNsYXRlKDAsICIrXy5vZmZzZXQrIikiKSk6cj1udWxsLGUuYXR0cigidHJhbnNmb3JtIixyKSxlLnN0eWxlKHsiZm9udC1mYW1pbHkiOkwsImZvbnQtc2l6ZSI6bi5yb3VuZChDLDIpKyJweCIsZmlsbDpjLnJnYihQKSxvcGFjaXR5OlQqYy5vcGFjaXR5KFApLCJmb250LXdlaWdodCI6aS5mb250V2VpZ2h0fSkuYXR0cihiKS5jYWxsKHUuY29udmVydFRvVHNwYW5zLHQpLGkucHJldmlvdXNQcm9taXNlcyh0KX1mdW5jdGlvbiBGKHQpe3ZhciBlPW4uc2VsZWN0KHQubm9kZSgpLnBhcmVudE5vZGUpO2lmKHgmJnguc2VsZWN0aW9uJiZ4LnNpZGUmJlMpe2UuYXR0cigidHJhbnNmb3JtIixudWxsKTt2YXIgcj1mW3guc2lkZV0saT0ibGVmdCI9PT14LnNpZGV8fCJ0b3AiPT09eC5zaWRlPy0xOjEsbz1hKHgucGFkKT94LnBhZDoyLGM9bC5iQm94KGUubm9kZSgpKSx1PXtsZWZ0OjAsdG9wOjAscmlnaHQ6ay53aWR0aCxib3R0b206ay5oZWlnaHR9LGg9eC5tYXhTaGlmdHx8aSoodVt4LnNpZGVdLWNbeC5zaWRlXSkscD0wO2lmKGg8MClwPWg7ZWxzZXt2YXIgZD14Lm9mZnNldExlZnR8fDAsZz14Lm9mZnNldFRvcHx8MDtjLmxlZnQtPWQsYy5yaWdodC09ZCxjLnRvcC09ZyxjLmJvdHRvbS09Zyx4LnNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bC5iQm94KHRoaXMpO3MuYkJveEludGVyc2VjdChjLHQsbykmJihwPU1hdGgubWF4KHAsaSoodFt4LnNpZGVdLWNbcl0pK28pKX0pLHA9TWF0aC5taW4oaCxwKX1pZihwPjB8fGg8MCl7dmFyIHY9e2xlZnQ6Wy1wLDBdLHJpZ2h0OltwLDBdLHRvcDpbMCwtcF0sYm90dG9tOlswLHBdfVt4LnNpZGVdO2UuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdisiKSIpfX19cmV0dXJuIEkuY2FsbChEKSxPJiYoUz9JLm9uKCIub3BhY2l0eSIsbnVsbCk6KFQ9MCxNPSEwLEkudGV4dChtKS5vbigibW91c2VvdmVyLm9wYWNpdHkiLGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGguU0hPV19QTEFDRUhPTERFUikuc3R5bGUoIm9wYWNpdHkiLDEpfSkub24oIm1vdXNlb3V0Lm9wYWNpdHkiLGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGguSElERV9QTEFDRUhPTERFUikuc3R5bGUoIm9wYWNpdHkiLDApfSkpLEkuY2FsbCh1Lm1ha2VFZGl0YWJsZSx7Z2Q6dH0pLm9uKCJlZGl0IixmdW5jdGlvbihlKXt2b2lkIDAhPT15P28uY2FsbCgiX2d1aVJlc3R5bGUiLHQsdixlLHkpOm8uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LHYsZSl9KS5vbigiY2FuY2VsIixmdW5jdGlvbigpe3RoaXMudGV4dCh0aGlzLmF0dHIoImRhdGEtdW5mb3JtYXR0ZWQiKSkuY2FsbChEKX0pLm9uKCJpbnB1dCIsZnVuY3Rpb24odCl7dGhpcy50ZXh0KHR8fCIgIikuY2FsbCh1LnBvc2l0aW9uVGV4dCxiLngsYi55KX0pKSxJLmNsYXNzZWQoImpzLXBsYWNlaG9sZGVyIixNKSx3fX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9jb25zdGFudHMvaW50ZXJhY3Rpb25zIjo2OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNiwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY29sb3IiOjU5MiwiLi4vZHJhd2luZyI6NjEzLGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDY4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxhPXQoIi4uL2NvbG9yL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LG89dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLHM9dCgiLi4vLi4vcGxvdHMvcGFkX2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSxjPWwoImJ1dHRvbiIse3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4ifSxtZXRob2Q6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInJlc3R5bGUiLCJyZWxheW91dCIsImFuaW1hdGUiLCJ1cGRhdGUiLCJza2lwIl0sZGZsdDoicmVzdHlsZSJ9LGFyZ3M6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGZyZWVMZW5ndGg6ITAsaXRlbXM6W3t2YWxUeXBlOiJhbnkifSx7dmFsVHlwZToiYW55In0se3ZhbFR5cGU6ImFueSJ9XX0sYXJnczI6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGZyZWVMZW5ndGg6ITAsaXRlbXM6W3t2YWxUeXBlOiJhbnkifSx7dmFsVHlwZToiYW55In0se3ZhbFR5cGU6ImFueSJ9XX0sbGFiZWw6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIn0sZXhlY3V0ZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH19KTtlLmV4cG9ydHM9byhsKCJ1cGRhdGVtZW51Iix7X2FycmF5QXR0clJlZ2V4cHM6Wy9edXBkYXRlbWVudXNcWygwfFsxLTldWzAtOV0rKVxdXC5idXR0b25zL10sdmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiJ9LHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImRyb3Bkb3duIiwiYnV0dG9ucyJdLGRmbHQ6ImRyb3Bkb3duIn0sZGlyZWN0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwicmlnaHQiLCJ1cCIsImRvd24iXSxkZmx0OiJkb3duIn0sYWN0aXZlOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46LTEsZGZsdDowfSxzaG93YWN0aXZlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxidXR0b25zOmMseDp7dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjMsZGZsdDotLjA1fSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoicmlnaHQifSx5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMixtYXg6MyxkZmx0OjF9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJ0b3AifSxwYWQ6aShzKHtlZGl0VHlwZToiYXJyYXlkcmF3In0pLHt9KSxmb250Om4oe30pLGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIn0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuYm9yZGVyTGluZX0sYm9yZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJhcnJheWRyYXcifX0pLCJhcnJheWRyYXciLCJmcm9tLXJvb3QiKX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi4vLi4vcGxvdHMvcGFkX2F0dHJpYnV0ZXMiOjgyNSwiLi4vY29sb3IvYXR0cmlidXRlcyI6NTkxfV0sNjgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bmFtZToidXBkYXRlbWVudXMiLGNvbnRhaW5lckNsYXNzTmFtZToidXBkYXRlbWVudS1jb250YWluZXIiLGhlYWRlckdyb3VwQ2xhc3NOYW1lOiJ1cGRhdGVtZW51LWhlYWRlci1ncm91cCIsaGVhZGVyQ2xhc3NOYW1lOiJ1cGRhdGVtZW51LWhlYWRlciIsaGVhZGVyQXJyb3dDbGFzc05hbWU6InVwZGF0ZW1lbnUtaGVhZGVyLWFycm93Iixkcm9wZG93bkJ1dHRvbkdyb3VwQ2xhc3NOYW1lOiJ1cGRhdGVtZW51LWRyb3Bkb3duLWJ1dHRvbi1ncm91cCIsZHJvcGRvd25CdXR0b25DbGFzc05hbWU6InVwZGF0ZW1lbnUtZHJvcGRvd24tYnV0dG9uIixidXR0b25DbGFzc05hbWU6InVwZGF0ZW1lbnUtYnV0dG9uIixpdGVtUmVjdENsYXNzTmFtZToidXBkYXRlbWVudS1pdGVtLXJlY3QiLGl0ZW1UZXh0Q2xhc3NOYW1lOiJ1cGRhdGVtZW51LWl0ZW0tdGV4dCIsbWVudUluZGV4QXR0ck5hbWU6InVwZGF0ZW1lbnUtYWN0aXZlLWluZGV4IixhdXRvTWFyZ2luSWRSb290OiJ1cGRhdGVtZW51LSIsYmxhbmtIZWFkZXJPcHRzOntsYWJlbDoiICAifSxtaW5XaWR0aDozMCxtaW5IZWlnaHQ6MzAsdGV4dFBhZFg6MjQsYXJyb3dQYWRYOjE2LHJ4OjIscnk6Mix0ZXh0T2Zmc2V0WDoxMix0ZXh0T2Zmc2V0WTozLGFycm93T2Zmc2V0WDo0LGdhcEJ1dHRvbkhlYWRlcjo1LGdhcEJ1dHRvbjoyLGFjdGl2ZUNvbG9yOiIjRjRGQUZGIixob3ZlckNvbG9yOiIjRjRGQUZGIixhcnJvd1N5bWJvbDp7bGVmdDoiXHUyNWM0IixyaWdodDoiXHUyNWJhIix1cDoiXHUyNWIyIixkb3duOiJcdTI1YmMifX19LHt9XSw2ODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxpPXQoIi4vYXR0cmlidXRlcyIpLG89dCgiLi9jb25zdGFudHMiKS5uYW1lLHM9aS5idXR0b25zO2Z1bmN0aW9uIGwodCxlLHIpe2Z1bmN0aW9uIG8ocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX1vKCJ2aXNpYmxlIixhKHQsZSx7bmFtZToiYnV0dG9ucyIsaGFuZGxlSXRlbURlZmF1bHRzOmN9KS5sZW5ndGg+MCkmJihvKCJhY3RpdmUiKSxvKCJkaXJlY3Rpb24iKSxvKCJ0eXBlIiksbygic2hvd2FjdGl2ZSIpLG8oIngiKSxvKCJ5Iiksbi5ub25lT3JBbGwodCxlLFsieCIsInkiXSksbygieGFuY2hvciIpLG8oInlhbmNob3IiKSxvKCJwYWQudCIpLG8oInBhZC5yIiksbygicGFkLmIiKSxvKCJwYWQubCIpLG4uY29lcmNlRm9udChvLCJmb250IixyLmZvbnQpLG8oImJnY29sb3IiLHIucGFwZXJfYmdjb2xvciksbygiYm9yZGVyY29sb3IiKSxvKCJib3JkZXJ3aWR0aCIpKX1mdW5jdGlvbiBjKHQsZSl7ZnVuY3Rpb24gcihyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUscyxyLGEpfXIoInZpc2libGUiLCJza2lwIj09PXQubWV0aG9kfHxBcnJheS5pc0FycmF5KHQuYXJncykpJiYocigibWV0aG9kIikscigiYXJncyIpLHIoImFyZ3MyIikscigibGFiZWwiKSxyKCJleGVjdXRlIikpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2EodCxlLHtuYW1lOm8saGFuZGxlSXRlbURlZmF1bHRzOmx9KX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NzYxLCIuL2F0dHJpYnV0ZXMiOjY4MCwiLi9jb25zdGFudHMiOjY4MX1dLDY4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxpPXQoIi4uL2NvbG9yIiksbz10KCIuLi9kcmF3aW5nIikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGM9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLmFycmF5RWRpdG9yLHU9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLkxJTkVfU1BBQ0lORyxoPXQoIi4vY29uc3RhbnRzIiksZj10KCIuL3Njcm9sbGJveCIpO2Z1bmN0aW9uIHAodCl7cmV0dXJuIHQuX2luZGV4fWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4rdC5hdHRyKGgubWVudUluZGV4QXR0ck5hbWUpPT09ZS5faW5kZXh9ZnVuY3Rpb24gZyh0LGUscixuLGEsaSxvLHMpe2UuYWN0aXZlPW8sYyh0LmxheW91dCxoLm5hbWUsZSkuYXBwbHlVcGRhdGUoImFjdGl2ZSIsbyksImJ1dHRvbnMiPT09ZS50eXBlP20odCxuLG51bGwsbnVsbCxlKToiZHJvcGRvd24iPT09ZS50eXBlJiYoYS5hdHRyKGgubWVudUluZGV4QXR0ck5hbWUsIi0xIiksdih0LG4sYSxpLGUpLHN8fG0odCxuLGEsaSxlKSl9ZnVuY3Rpb24gdih0LGUscixuLGEpe3ZhciBpPXMuZW5zdXJlU2luZ2xlKGUsImciLGguaGVhZGVyQ2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3Quc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIil9KSxsPWEuX2RpbXMsYz1hLmFjdGl2ZSx1PWEuYnV0dG9uc1tjXXx8aC5ibGFua0hlYWRlck9wdHMsZj17eTphLnBhZC50LHlQYWQ6MCx4OmEucGFkLmwseFBhZDowLGluZGV4OjB9LHA9e3dpZHRoOmwuaGVhZGVyV2lkdGgsaGVpZ2h0OmwuaGVhZGVySGVpZ2h0fTtpLmNhbGwoeSxhLHUsdCkuY2FsbChBLGEsZixwKSxzLmVuc3VyZVNpbmdsZShlLCJ0ZXh0IixoLmhlYWRlckFycm93Q2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3QuY2xhc3NlZCgidXNlci1zZWxlY3Qtbm9uZSIsITApLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIikuY2FsbChvLmZvbnQsYS5mb250KS50ZXh0KGguYXJyb3dTeW1ib2xbYS5kaXJlY3Rpb25dKX0pLmF0dHIoe3g6bC5oZWFkZXJXaWR0aC1oLmFycm93T2Zmc2V0WCthLnBhZC5sLHk6bC5oZWFkZXJIZWlnaHQvMitoLnRleHRPZmZzZXRZK2EucGFkLnR9KSxpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtyLmNhbGwoUyxTdHJpbmcoZChyLGEpPy0xOmEuX2luZGV4KSksbSh0LGUscixuLGEpfSksaS5vbigibW91c2VvdmVyIixmdW5jdGlvbigpe2kuY2FsbCh3KX0pLGkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe2kuY2FsbChrLGEpfSksby5zZXRUcmFuc2xhdGUoZSxsLmx4LGwubHkpfWZ1bmN0aW9uIG0odCxlLHIsaSxvKXtyfHwocj1lKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpO3ZhciBsPWZ1bmN0aW9uKHQpe3JldHVybi0xPT0rdC5hdHRyKGgubWVudUluZGV4QXR0ck5hbWUpfShyKSYmImJ1dHRvbnMiIT09by50eXBlP1tdOm8uYnV0dG9ucyxjPSJkcm9wZG93biI9PT1vLnR5cGU/aC5kcm9wZG93bkJ1dHRvbkNsYXNzTmFtZTpoLmJ1dHRvbkNsYXNzTmFtZSx1PXIuc2VsZWN0QWxsKCJnLiIrYykuZGF0YShzLmZpbHRlclZpc2libGUobCkpLGY9dS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoYywhMCkscD11LmV4aXQoKTsiZHJvcGRvd24iPT09by50eXBlPyhmLmF0dHIoIm9wYWNpdHkiLCIwIikudHJhbnNpdGlvbigpLmF0dHIoIm9wYWNpdHkiLCIxIikscC50cmFuc2l0aW9uKCkuYXR0cigib3BhY2l0eSIsIjAiKS5yZW1vdmUoKSk6cC5yZW1vdmUoKTt2YXIgZD0wLHY9MCxtPW8uX2RpbXMseD0tMSE9PVsidXAiLCJkb3duIl0uaW5kZXhPZihvLmRpcmVjdGlvbik7ImRyb3Bkb3duIj09PW8udHlwZSYmKHg/dj1tLmhlYWRlckhlaWdodCtoLmdhcEJ1dHRvbkhlYWRlcjpkPW0uaGVhZGVyV2lkdGgraC5nYXBCdXR0b25IZWFkZXIpLCJkcm9wZG93biI9PT1vLnR5cGUmJiJ1cCI9PT1vLmRpcmVjdGlvbiYmKHY9LWguZ2FwQnV0dG9uSGVhZGVyK2guZ2FwQnV0dG9uLW0ub3BlbkhlaWdodCksImRyb3Bkb3duIj09PW8udHlwZSYmImxlZnQiPT09by5kaXJlY3Rpb24mJihkPS1oLmdhcEJ1dHRvbkhlYWRlcitoLmdhcEJ1dHRvbi1tLm9wZW5XaWR0aCk7dmFyIGI9e3g6bS5seCtkK28ucGFkLmwseTptLmx5K3Yrby5wYWQudCx5UGFkOmguZ2FwQnV0dG9uLHhQYWQ6aC5nYXBCdXR0b24saW5kZXg6MH0sVD17bDpiLngrby5ib3JkZXJ3aWR0aCx0OmIueStvLmJvcmRlcndpZHRofTt1LmVhY2goZnVuY3Rpb24ocyxsKXt2YXIgYz1uLnNlbGVjdCh0aGlzKTtjLmNhbGwoeSxvLHMsdCkuY2FsbChBLG8sYiksYy5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bi5ldmVudC5kZWZhdWx0UHJldmVudGVkfHwocy5leGVjdXRlJiYocy5hcmdzMiYmby5hY3RpdmU9PT1sPyhnKHQsbywwLGUscixpLC0xKSxhLmV4ZWN1dGVBUElDb21tYW5kKHQscy5tZXRob2Qscy5hcmdzMikpOihnKHQsbywwLGUscixpLGwpLGEuZXhlY3V0ZUFQSUNvbW1hbmQodCxzLm1ldGhvZCxzLmFyZ3MpKSksdC5lbWl0KCJwbG90bHlfYnV0dG9uY2xpY2tlZCIse21lbnU6byxidXR0b246cyxhY3RpdmU6by5hY3RpdmV9KSl9KSxjLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7Yy5jYWxsKHcpfSksYy5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7Yy5jYWxsKGssbyksdS5jYWxsKF8sbyl9KX0pLHUuY2FsbChfLG8pLHg/KFQudz1NYXRoLm1heChtLm9wZW5XaWR0aCxtLmhlYWRlcldpZHRoKSxULmg9Yi55LVQudCk6KFQudz1iLngtVC5sLFQuaD1NYXRoLm1heChtLm9wZW5IZWlnaHQsbS5oZWFkZXJIZWlnaHQpKSxULmRpcmVjdGlvbj1vLmRpcmVjdGlvbixpJiYodS5zaXplKCk/ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvLHMsbCxjPWEuZGlyZWN0aW9uLHU9InVwIj09PWN8fCJkb3duIj09PWMsZj1hLl9kaW1zLHA9YS5hY3RpdmU7aWYodSlmb3Iocz0wLGw9MDtsPHA7bCsrKXMrPWYuaGVpZ2h0c1tsXStoLmdhcEJ1dHRvbjtlbHNlIGZvcihvPTAsbD0wO2w8cDtsKyspbys9Zi53aWR0aHNbbF0raC5nYXBCdXR0b247bi5lbmFibGUoaSxvLHMpLG4uaGJhciYmbi5oYmFyLmF0dHIoIm9wYWNpdHkiLCIwIikudHJhbnNpdGlvbigpLmF0dHIoIm9wYWNpdHkiLCIxIik7bi52YmFyJiZuLnZiYXIuYXR0cigib3BhY2l0eSIsIjAiKS50cmFuc2l0aW9uKCkuYXR0cigib3BhY2l0eSIsIjEiKX0oMCwwLDAsaSxvLFQpOmZ1bmN0aW9uKHQpe3ZhciBlPSEhdC5oYmFyLHI9ISF0LnZiYXI7ZSYmdC5oYmFyLnRyYW5zaXRpb24oKS5hdHRyKCJvcGFjaXR5IiwiMCIpLmVhY2goImVuZCIsZnVuY3Rpb24oKXtlPSExLHJ8fHQuZGlzYWJsZSgpfSk7ciYmdC52YmFyLnRyYW5zaXRpb24oKS5hdHRyKCJvcGFjaXR5IiwiMCIpLmVhY2goImVuZCIsZnVuY3Rpb24oKXtyPSExLGV8fHQuZGlzYWJsZSgpfSl9KGkpKX1mdW5jdGlvbiB5KHQsZSxyLG4pe3QuY2FsbCh4LGUpLmNhbGwoYixlLHIsbil9ZnVuY3Rpb24geCh0LGUpe3MuZW5zdXJlU2luZ2xlKHQsInJlY3QiLGguaXRlbVJlY3RDbGFzc05hbWUsZnVuY3Rpb24odCl7dC5hdHRyKHtyeDpoLnJ4LHJ5OmgucnksInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMifSl9KS5jYWxsKGkuc3Ryb2tlLGUuYm9yZGVyY29sb3IpLmNhbGwoaS5maWxsLGUuYmdjb2xvcikuc3R5bGUoInN0cm9rZS13aWR0aCIsZS5ib3JkZXJ3aWR0aCsicHgiKX1mdW5jdGlvbiBiKHQsZSxyLG4pe3ZhciBhPXMuZW5zdXJlU2luZ2xlKHQsInRleHQiLGguaXRlbVRleHRDbGFzc05hbWUsZnVuY3Rpb24odCl7dC5jbGFzc2VkKCJ1c2VyLXNlbGVjdC1ub25lIiwhMCkuYXR0cih7InRleHQtYW5jaG9yIjoic3RhcnQiLCJkYXRhLW5vdGV4IjoxfSl9KSxpPXIubGFiZWwsYz1uLl9mdWxsTGF5b3V0Ll9tZXRhO2MmJihpPXMudGVtcGxhdGVTdHJpbmcoaSxjKSksYS5jYWxsKG8uZm9udCxlLmZvbnQpLnRleHQoaSkuY2FsbChsLmNvbnZlcnRUb1RzcGFucyxuKX1mdW5jdGlvbiBfKHQsZSl7dmFyIHI9ZS5hY3RpdmU7dC5lYWNoKGZ1bmN0aW9uKHQsYSl7dmFyIG89bi5zZWxlY3QodGhpcyk7YT09PXImJmUuc2hvd2FjdGl2ZSYmby5zZWxlY3QoInJlY3QuIitoLml0ZW1SZWN0Q2xhc3NOYW1lKS5jYWxsKGkuZmlsbCxoLmFjdGl2ZUNvbG9yKX0pfWZ1bmN0aW9uIHcodCl7dC5zZWxlY3QoInJlY3QuIitoLml0ZW1SZWN0Q2xhc3NOYW1lKS5jYWxsKGkuZmlsbCxoLmhvdmVyQ29sb3IpfWZ1bmN0aW9uIGsodCxlKXt0LnNlbGVjdCgicmVjdC4iK2guaXRlbVJlY3RDbGFzc05hbWUpLmNhbGwoaS5maWxsLGUuYmdjb2xvcil9ZnVuY3Rpb24gVCh0LGUpe3ZhciByPWUuX2RpbXM9e3dpZHRoMTowLGhlaWdodDE6MCxoZWlnaHRzOltdLHdpZHRoczpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCxvcGVuV2lkdGg6MCxvcGVuSGVpZ2h0OjAsbHg6MCxseTowfSxpPW8udGVzdGVyLnNlbGVjdEFsbCgiZy4iK2guZHJvcGRvd25CdXR0b25DbGFzc05hbWUpLmRhdGEocy5maWx0ZXJWaXNpYmxlKGUuYnV0dG9ucykpO2kuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKGguZHJvcGRvd25CdXR0b25DbGFzc05hbWUsITApO3ZhciBjPS0xIT09WyJ1cCIsImRvd24iXS5pbmRleE9mKGUuZGlyZWN0aW9uKTtpLmVhY2goZnVuY3Rpb24oYSxpKXt2YXIgcz1uLnNlbGVjdCh0aGlzKTtzLmNhbGwoeSxlLGEsdCk7dmFyIGY9cy5zZWxlY3QoIi4iK2guaXRlbVRleHRDbGFzc05hbWUpLHA9Zi5ub2RlKCkmJm8uYkJveChmLm5vZGUoKSkud2lkdGgsZD1NYXRoLm1heChwK2gudGV4dFBhZFgsaC5taW5XaWR0aCksZz1lLmZvbnQuc2l6ZSp1LHY9bC5saW5lQ291bnQoZiksbT1NYXRoLm1heChnKnYsaC5taW5IZWlnaHQpK2gudGV4dE9mZnNldFk7bT1NYXRoLmNlaWwobSksZD1NYXRoLmNlaWwoZCksci53aWR0aHNbaV09ZCxyLmhlaWdodHNbaV09bSxyLmhlaWdodDE9TWF0aC5tYXgoci5oZWlnaHQxLG0pLHIud2lkdGgxPU1hdGgubWF4KHIud2lkdGgxLGQpLGM/KHIudG90YWxXaWR0aD1NYXRoLm1heChyLnRvdGFsV2lkdGgsZCksci5vcGVuV2lkdGg9ci50b3RhbFdpZHRoLHIudG90YWxIZWlnaHQrPW0raC5nYXBCdXR0b24sci5vcGVuSGVpZ2h0Kz1tK2guZ2FwQnV0dG9uKTooci50b3RhbFdpZHRoKz1kK2guZ2FwQnV0dG9uLHIub3BlbldpZHRoKz1kK2guZ2FwQnV0dG9uLHIudG90YWxIZWlnaHQ9TWF0aC5tYXgoci50b3RhbEhlaWdodCxtKSxyLm9wZW5IZWlnaHQ9ci50b3RhbEhlaWdodCl9KSxjP3IudG90YWxIZWlnaHQtPWguZ2FwQnV0dG9uOnIudG90YWxXaWR0aC09aC5nYXBCdXR0b24sci5oZWFkZXJXaWR0aD1yLndpZHRoMStoLmFycm93UGFkWCxyLmhlYWRlckhlaWdodD1yLmhlaWdodDEsImRyb3Bkb3duIj09PWUudHlwZSYmKGM/KHIud2lkdGgxKz1oLmFycm93UGFkWCxyLnRvdGFsSGVpZ2h0PXIuaGVpZ2h0MSk6ci50b3RhbFdpZHRoPXIud2lkdGgxLHIudG90YWxXaWR0aCs9aC5hcnJvd1BhZFgpLGkucmVtb3ZlKCk7dmFyIGY9ci50b3RhbFdpZHRoK2UucGFkLmwrZS5wYWQucixwPXIudG90YWxIZWlnaHQrZS5wYWQudCtlLnBhZC5iLGQ9dC5fZnVsbExheW91dC5fc2l6ZTtyLmx4PWQubCtkLncqZS54LHIubHk9ZC50K2QuaCooMS1lLnkpO3ZhciBnPSJsZWZ0IjtzLmlzUmlnaHRBbmNob3IoZSkmJihyLmx4LT1mLGc9InJpZ2h0Iikscy5pc0NlbnRlckFuY2hvcihlKSYmKHIubHgtPWYvMixnPSJjZW50ZXIiKTt2YXIgdj0idG9wIjtzLmlzQm90dG9tQW5jaG9yKGUpJiYoci5seS09cCx2PSJib3R0b20iKSxzLmlzTWlkZGxlQW5jaG9yKGUpJiYoci5seS09cC8yLHY9Im1pZGRsZSIpLHIudG90YWxXaWR0aD1NYXRoLmNlaWwoci50b3RhbFdpZHRoKSxyLnRvdGFsSGVpZ2h0PU1hdGguY2VpbChyLnRvdGFsSGVpZ2h0KSxyLmx4PU1hdGgucm91bmQoci5seCksci5seT1NYXRoLnJvdW5kKHIubHkpLGEuYXV0b01hcmdpbih0LE0oZSkse3g6ZS54LHk6ZS55LGw6Ziooe3JpZ2h0OjEsY2VudGVyOi41fVtnXXx8MCkscjpmKih7bGVmdDoxLGNlbnRlcjouNX1bZ118fDApLGI6cCooe3RvcDoxLG1pZGRsZTouNX1bdl18fDApLHQ6cCooe2JvdHRvbToxLG1pZGRsZTouNX1bdl18fDApfSl9ZnVuY3Rpb24gTSh0KXtyZXR1cm4gaC5hdXRvTWFyZ2luSWRSb290K3QuX2luZGV4fWZ1bmN0aW9uIEEodCxlLHIsbil7bj1ufHx7fTt2YXIgYT10LnNlbGVjdCgiLiIraC5pdGVtUmVjdENsYXNzTmFtZSksaT10LnNlbGVjdCgiLiIraC5pdGVtVGV4dENsYXNzTmFtZSkscz1lLmJvcmRlcndpZHRoLGM9ci5pbmRleCxmPWUuX2RpbXM7by5zZXRUcmFuc2xhdGUodCxzK3IueCxzK3IueSk7dmFyIHA9LTEhPT1bInVwIiwiZG93biJdLmluZGV4T2YoZS5kaXJlY3Rpb24pLGQ9bi5oZWlnaHR8fChwP2YuaGVpZ2h0c1tjXTpmLmhlaWdodDEpO2EuYXR0cih7eDowLHk6MCx3aWR0aDpuLndpZHRofHwocD9mLndpZHRoMTpmLndpZHRoc1tjXSksaGVpZ2h0OmR9KTt2YXIgZz1lLmZvbnQuc2l6ZSp1LHY9KGwubGluZUNvdW50KGkpLTEpKmcvMjtsLnBvc2l0aW9uVGV4dChpLGgudGV4dE9mZnNldFgsZC8yLXYraC50ZXh0T2Zmc2V0WSkscD9yLnkrPWYuaGVpZ2h0c1tjXStyLnlQYWQ6ci54Kz1mLndpZHRoc1tjXStyLnhQYWQsci5pbmRleCsrfWZ1bmN0aW9uIFModCxlKXt0LmF0dHIoaC5tZW51SW5kZXhBdHRyTmFtZSxlfHwiLTEiKS5zZWxlY3RBbGwoImcuIitoLmRyb3Bkb3duQnV0dG9uQ2xhc3NOYW1lKS5yZW1vdmUoKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPXMuZmlsdGVyVmlzaWJsZShlW2gubmFtZV0pO2Z1bmN0aW9uIGkoZSl7YS5hdXRvTWFyZ2luKHQsTShlKSl9dmFyIG89ZS5fbWVudWxheWVyLnNlbGVjdEFsbCgiZy4iK2guY29udGFpbmVyQ2xhc3NOYW1lKS5kYXRhKHIubGVuZ3RoPjA/WzBdOltdKTtpZihvLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChoLmNvbnRhaW5lckNsYXNzTmFtZSwhMCkuc3R5bGUoImN1cnNvciIsInBvaW50ZXIiKSxvLmV4aXQoKS5lYWNoKGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLiIraC5oZWFkZXJHcm91cENsYXNzTmFtZSkuZWFjaChpKX0pLnJlbW92ZSgpLDAhPT1yLmxlbmd0aCl7dmFyIGw9by5zZWxlY3RBbGwoImcuIitoLmhlYWRlckdyb3VwQ2xhc3NOYW1lKS5kYXRhKHIscCk7bC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoaC5oZWFkZXJHcm91cENsYXNzTmFtZSwhMCk7Zm9yKHZhciBjPXMuZW5zdXJlU2luZ2xlKG8sImciLGguZHJvcGRvd25CdXR0b25Hcm91cENsYXNzTmFtZSxmdW5jdGlvbih0KXt0LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSksdT0wO3U8ci5sZW5ndGg7dSsrKXt2YXIgeT1yW3VdO1QodCx5KX12YXIgeD0idXBkYXRlbWVudXMiK2UuX3VpZCxiPW5ldyBmKHQsYyx4KTtsLmVudGVyKCkuc2l6ZSgpJiYoYy5ub2RlKCkucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChjLm5vZGUoKSksYy5jYWxsKFMpKSxsLmV4aXQoKS5lYWNoKGZ1bmN0aW9uKHQpe2MuY2FsbChTKSxpKHQpfSkucmVtb3ZlKCksbC5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0KHRoaXMpLGk9ImRyb3Bkb3duIj09PWUudHlwZT9jOm51bGw7YS5tYW5hZ2VDb21tYW5kT2JzZXJ2ZXIodCxlLGUuYnV0dG9ucyxmdW5jdGlvbihuKXtnKHQsZSxlLmJ1dHRvbnNbbi5pbmRleF0scixpLGIsbi5pbmRleCwhMCl9KSwiZHJvcGRvd24iPT09ZS50eXBlPyh2KHQscixjLGIsZSksZChjLGUpJiZtKHQscixjLGIsZSkpOm0odCxyLG51bGwsbnVsbCxlKX0pfX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNiwiLi4vY29sb3IiOjU5MiwiLi4vZHJhd2luZyI6NjEzLCIuL2NvbnN0YW50cyI6NjgxLCIuL3Njcm9sbGJveCI6Njg1LGQzOjE2NX1dLDY4NDpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVs2NzhdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0seyIuL2F0dHJpYnV0ZXMiOjY4MCwiLi9jb25zdGFudHMiOjY4MSwiLi9kZWZhdWx0cyI6NjgyLCIuL2RyYXciOjY4MyxkdXA6Njc4fV0sNjg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1zO3ZhciBuPXQoImQzIiksYT10KCIuLi9jb2xvciIpLGk9dCgiLi4vZHJhd2luZyIpLG89dCgiLi4vLi4vbGliIik7ZnVuY3Rpb24gcyh0LGUscil7dGhpcy5nZD10LHRoaXMuY29udGFpbmVyPWUsdGhpcy5pZD1yLHRoaXMucG9zaXRpb249bnVsbCx0aGlzLnRyYW5zbGF0ZVg9bnVsbCx0aGlzLnRyYW5zbGF0ZVk9bnVsbCx0aGlzLmhiYXI9bnVsbCx0aGlzLnZiYXI9bnVsbCx0aGlzLmJnPXRoaXMuY29udGFpbmVyLnNlbGVjdEFsbCgicmVjdC5zY3JvbGxib3gtYmciKS5kYXRhKFswXSksdGhpcy5iZy5leGl0KCkub24oIi5kcmFnIixudWxsKS5vbigid2hlZWwiLG51bGwpLnJlbW92ZSgpLHRoaXMuYmcuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzY3JvbGxib3gtYmciLCEwKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hdHRyKHtvcGFjaXR5OjAseDowLHk6MCx3aWR0aDowLGhlaWdodDowfSl9cy5iYXJXaWR0aD0yLHMuYmFyTGVuZ3RoPTIwLHMuYmFyUmFkaXVzPTIscy5iYXJQYWQ9MSxzLmJhckNvbG9yPSIjODA4QkE0IixzLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPXRoaXMuZ2QuX2Z1bGxMYXlvdXQsbD1vLndpZHRoLGM9by5oZWlnaHQ7dGhpcy5wb3NpdGlvbj10O3ZhciB1LGgsZixwLGQ9dGhpcy5wb3NpdGlvbi5sLGc9dGhpcy5wb3NpdGlvbi53LHY9dGhpcy5wb3NpdGlvbi50LG09dGhpcy5wb3NpdGlvbi5oLHk9dGhpcy5wb3NpdGlvbi5kaXJlY3Rpb24seD0iZG93biI9PT15LGI9ImxlZnQiPT09eSxfPSJ1cCI9PT15LHc9ZyxrPW07eHx8Ynx8InJpZ2h0Ij09PXl8fF98fCh0aGlzLnBvc2l0aW9uLmRpcmVjdGlvbj0iZG93biIseD0hMCkseHx8Xz8oaD0odT1kKSt3LHg/KGY9dixrPShwPU1hdGgubWluKGYrayxjKSktZik6az0ocD12K2spLShmPU1hdGgubWF4KHAtaywwKSkpOihwPShmPXYpK2ssYj93PShoPWQrdyktKHU9TWF0aC5tYXgoaC13LDApKToodT1kLHc9KGg9TWF0aC5taW4odSt3LGwpKS11KSksdGhpcy5fYm94PXtsOnUsdDpmLHc6dyxoOmt9O3ZhciBUPWc+dyxNPXMuYmFyTGVuZ3RoKzIqcy5iYXJQYWQsQT1zLmJhcldpZHRoKzIqcy5iYXJQYWQsUz1kLEU9dittO0UrQT5jJiYoRT1jLUEpO3ZhciBMPXRoaXMuY29udGFpbmVyLnNlbGVjdEFsbCgicmVjdC5zY3JvbGxiYXItaG9yaXpvbnRhbCIpLmRhdGEoVD9bMF06W10pO0wuZXhpdCgpLm9uKCIuZHJhZyIsbnVsbCkucmVtb3ZlKCksTC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInNjcm9sbGJhci1ob3Jpem9udGFsIiwhMCkuY2FsbChhLmZpbGwscy5iYXJDb2xvciksVD8odGhpcy5oYmFyPUwuYXR0cih7cng6cy5iYXJSYWRpdXMscnk6cy5iYXJSYWRpdXMseDpTLHk6RSx3aWR0aDpNLGhlaWdodDpBfSksdGhpcy5faGJhclhNaW49UytNLzIsdGhpcy5faGJhclRyYW5zbGF0ZU1heD13LU0pOihkZWxldGUgdGhpcy5oYmFyLGRlbGV0ZSB0aGlzLl9oYmFyWE1pbixkZWxldGUgdGhpcy5faGJhclRyYW5zbGF0ZU1heCk7dmFyIEM9bT5rLFA9cy5iYXJXaWR0aCsyKnMuYmFyUGFkLE89cy5iYXJMZW5ndGgrMipzLmJhclBhZCx6PWQrZyxJPXY7eitQPmwmJih6PWwtUCk7dmFyIEQ9dGhpcy5jb250YWluZXIuc2VsZWN0QWxsKCJyZWN0LnNjcm9sbGJhci12ZXJ0aWNhbCIpLmRhdGEoQz9bMF06W10pO0QuZXhpdCgpLm9uKCIuZHJhZyIsbnVsbCkucmVtb3ZlKCksRC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInNjcm9sbGJhci12ZXJ0aWNhbCIsITApLmNhbGwoYS5maWxsLHMuYmFyQ29sb3IpLEM/KHRoaXMudmJhcj1ELmF0dHIoe3J4OnMuYmFyUmFkaXVzLHJ5OnMuYmFyUmFkaXVzLHg6eix5Okksd2lkdGg6UCxoZWlnaHQ6T30pLHRoaXMuX3ZiYXJZTWluPUkrTy8yLHRoaXMuX3ZiYXJUcmFuc2xhdGVNYXg9ay1PKTooZGVsZXRlIHRoaXMudmJhcixkZWxldGUgdGhpcy5fdmJhcllNaW4sZGVsZXRlIHRoaXMuX3ZiYXJUcmFuc2xhdGVNYXgpO3ZhciBSPXRoaXMuaWQsRj11LS41LEI9Qz9oK1ArLjU6aCsuNSxOPWYtLjUsaj1UP3ArQSsuNTpwKy41LFY9by5fdG9wZGVmcy5zZWxlY3RBbGwoIiMiK1IpLmRhdGEoVHx8Qz9bMF06W10pO2lmKFYuZXhpdCgpLnJlbW92ZSgpLFYuZW50ZXIoKS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLFIpLmFwcGVuZCgicmVjdCIpLFR8fEM/KHRoaXMuX2NsaXBSZWN0PVYuc2VsZWN0KCJyZWN0IikuYXR0cih7eDpNYXRoLmZsb29yKEYpLHk6TWF0aC5mbG9vcihOKSx3aWR0aDpNYXRoLmNlaWwoQiktTWF0aC5mbG9vcihGKSxoZWlnaHQ6TWF0aC5jZWlsKGopLU1hdGguZmxvb3IoTil9KSx0aGlzLmNvbnRhaW5lci5jYWxsKGkuc2V0Q2xpcFVybCxSLHRoaXMuZ2QpLHRoaXMuYmcuYXR0cih7eDpkLHk6dix3aWR0aDpnLGhlaWdodDptfSkpOih0aGlzLmJnLmF0dHIoe3dpZHRoOjAsaGVpZ2h0OjB9KSx0aGlzLmNvbnRhaW5lci5vbigid2hlZWwiLG51bGwpLm9uKCIuZHJhZyIsbnVsbCkuY2FsbChpLnNldENsaXBVcmwsbnVsbCksZGVsZXRlIHRoaXMuX2NsaXBSZWN0KSxUfHxDKXt2YXIgVT1uLmJlaGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixmdW5jdGlvbigpe24uZXZlbnQuc291cmNlRXZlbnQucHJldmVudERlZmF1bHQoKX0pLm9uKCJkcmFnIix0aGlzLl9vbkJveERyYWcuYmluZCh0aGlzKSk7dGhpcy5jb250YWluZXIub24oIndoZWVsIixudWxsKS5vbigid2hlZWwiLHRoaXMuX29uQm94V2hlZWwuYmluZCh0aGlzKSkub24oIi5kcmFnIixudWxsKS5jYWxsKFUpO3ZhciBxPW4uYmVoYXZpb3IuZHJhZygpLm9uKCJkcmFnc3RhcnQiLGZ1bmN0aW9uKCl7bi5ldmVudC5zb3VyY2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpLG4uZXZlbnQuc291cmNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZHJhZyIsdGhpcy5fb25CYXJEcmFnLmJpbmQodGhpcykpO1QmJnRoaXMuaGJhci5vbigiLmRyYWciLG51bGwpLmNhbGwocSksQyYmdGhpcy52YmFyLm9uKCIuZHJhZyIsbnVsbCkuY2FsbChxKX10aGlzLnNldFRyYW5zbGF0ZShlLHIpfSxzLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7KHRoaXMuaGJhcnx8dGhpcy52YmFyKSYmKHRoaXMuYmcuYXR0cih7d2lkdGg6MCxoZWlnaHQ6MH0pLHRoaXMuY29udGFpbmVyLm9uKCJ3aGVlbCIsbnVsbCkub24oIi5kcmFnIixudWxsKS5jYWxsKGkuc2V0Q2xpcFVybCxudWxsKSxkZWxldGUgdGhpcy5fY2xpcFJlY3QpLHRoaXMuaGJhciYmKHRoaXMuaGJhci5vbigiLmRyYWciLG51bGwpLHRoaXMuaGJhci5yZW1vdmUoKSxkZWxldGUgdGhpcy5oYmFyLGRlbGV0ZSB0aGlzLl9oYmFyWE1pbixkZWxldGUgdGhpcy5faGJhclRyYW5zbGF0ZU1heCksdGhpcy52YmFyJiYodGhpcy52YmFyLm9uKCIuZHJhZyIsbnVsbCksdGhpcy52YmFyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLnZiYXIsZGVsZXRlIHRoaXMuX3ZiYXJZTWluLGRlbGV0ZSB0aGlzLl92YmFyVHJhbnNsYXRlTWF4KX0scy5wcm90b3R5cGUuX29uQm94RHJhZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMudHJhbnNsYXRlWCxlPXRoaXMudHJhbnNsYXRlWTt0aGlzLmhiYXImJih0LT1uLmV2ZW50LmR4KSx0aGlzLnZiYXImJihlLT1uLmV2ZW50LmR5KSx0aGlzLnNldFRyYW5zbGF0ZSh0LGUpfSxzLnByb3RvdHlwZS5fb25Cb3hXaGVlbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMudHJhbnNsYXRlWCxlPXRoaXMudHJhbnNsYXRlWTt0aGlzLmhiYXImJih0Kz1uLmV2ZW50LmRlbHRhWSksdGhpcy52YmFyJiYoZSs9bi5ldmVudC5kZWx0YVkpLHRoaXMuc2V0VHJhbnNsYXRlKHQsZSl9LHMucHJvdG90eXBlLl9vbkJhckRyYWc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRyYW5zbGF0ZVgsZT10aGlzLnRyYW5zbGF0ZVk7aWYodGhpcy5oYmFyKXt2YXIgcj10K3RoaXMuX2hiYXJYTWluLGE9cit0aGlzLl9oYmFyVHJhbnNsYXRlTWF4O3Q9KG8uY29uc3RyYWluKG4uZXZlbnQueCxyLGEpLXIpLyhhLXIpKih0aGlzLnBvc2l0aW9uLnctdGhpcy5fYm94LncpfWlmKHRoaXMudmJhcil7dmFyIGk9ZSt0aGlzLl92YmFyWU1pbixzPWkrdGhpcy5fdmJhclRyYW5zbGF0ZU1heDtlPShvLmNvbnN0cmFpbihuLmV2ZW50LnksaSxzKS1pKS8ocy1pKSoodGhpcy5wb3NpdGlvbi5oLXRoaXMuX2JveC5oKX10aGlzLnNldFRyYW5zbGF0ZSh0LGUpfSxzLnByb3RvdHlwZS5zZXRUcmFuc2xhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnBvc2l0aW9uLnctdGhpcy5fYm94Lncsbj10aGlzLnBvc2l0aW9uLmgtdGhpcy5fYm94Lmg7aWYodD1vLmNvbnN0cmFpbih0fHwwLDAsciksZT1vLmNvbnN0cmFpbihlfHwwLDAsbiksdGhpcy50cmFuc2xhdGVYPXQsdGhpcy50cmFuc2xhdGVZPWUsdGhpcy5jb250YWluZXIuY2FsbChpLnNldFRyYW5zbGF0ZSx0aGlzLl9ib3gubC10aGlzLnBvc2l0aW9uLmwtdCx0aGlzLl9ib3gudC10aGlzLnBvc2l0aW9uLnQtZSksdGhpcy5fY2xpcFJlY3QmJnRoaXMuX2NsaXBSZWN0LmF0dHIoe3g6TWF0aC5mbG9vcih0aGlzLnBvc2l0aW9uLmwrdC0uNSkseTpNYXRoLmZsb29yKHRoaXMucG9zaXRpb24udCtlLS41KX0pLHRoaXMuaGJhcil7dmFyIGE9dC9yO3RoaXMuaGJhci5jYWxsKGkuc2V0VHJhbnNsYXRlLHQrYSp0aGlzLl9oYmFyVHJhbnNsYXRlTWF4LGUpfWlmKHRoaXMudmJhcil7dmFyIHM9ZS9uO3RoaXMudmJhci5jYWxsKGkuc2V0VHJhbnNsYXRlLHQsZStzKnRoaXMuX3ZiYXJUcmFuc2xhdGVNYXgpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL2NvbG9yIjo1OTIsIi4uL2RyYXdpbmciOjYxMyxkMzoxNjV9XSw2ODY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtGUk9NX0JMOntsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjEsYm90dG9tOjAsbWlkZGxlOi41LHRvcDoxfSxGUk9NX1RMOntsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjEsYm90dG9tOjEsbWlkZGxlOi41LHRvcDowfSxGUk9NX0JSOntsZWZ0OjEsY2VudGVyOi41LHJpZ2h0OjAsYm90dG9tOjAsbWlkZGxlOi41LHRvcDoxfSxMSU5FX1NQQUNJTkc6MS4zLENBUF9TSElGVDouNyxNSURfU0hJRlQ6LjM1LE9QUE9TSVRFX1NJREU6e2xlZnQ6InJpZ2h0IixyaWdodDoibGVmdCIsdG9wOiJib3R0b20iLGJvdHRvbToidG9wIn19fSx7fV0sNjg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17SU5DUkVBU0lORzp7Q09MT1I6IiMzRDk5NzAiLFNZTUJPTDoiXHUyNWIyIn0sREVDUkVBU0lORzp7Q09MT1I6IiNGRjQxMzYiLFNZTUJPTDoiXHUyNWJjIn19fSx7fV0sNjg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Rk9STUFUX0xJTks6Imh0dHBzOi8vZ2l0aHViLmNvbS9kMy9kMy0zLngtYXBpLXJlZmVyZW5jZS9ibG9iL21hc3Rlci9Gb3JtYXR0aW5nLm1kI2QzX2Zvcm1hdCIsREFURV9GT1JNQVRfTElOSzoiaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLTMueC1hcGktcmVmZXJlbmNlL2Jsb2IvbWFzdGVyL1RpbWUtRm9ybWF0dGluZy5tZCNmb3JtYXQifX0se31dLDY4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e0NPTVBBUklTT05fT1BTOlsiPSIsIiE9IiwiPCIsIj49IiwiPiIsIjw9Il0sQ09NUEFSSVNPTl9PUFMyOlsiPSIsIjwiLCI+PSIsIj4iLCI8PSJdLElOVEVSVkFMX09QUzpbIltdIiwiKCkiLCJbKSIsIihdIiwiXVsiLCIpKCIsIl0oIiwiKVsiXSxTRVRfT1BTOlsie30iLCJ9eyJdLENPTlNUUkFJTlRfUkVEVUNUSU9OOnsiPSI6Ij0iLCI8IjoiPCIsIjw9IjoiPCIsIj4iOiI+IiwiPj0iOiI+IiwiW10iOiJbXSIsIigpIjoiW10iLCJbKSI6IltdIiwiKF0iOiJbXSIsIl1bIjoiXVsiLCIpKCI6Il1bIiwiXSgiOiJdWyIsIilbIjoiXVsifX19LHt9XSw2OTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtzb2xpZDpbW10sMF0sZG90OltbLjUsMV0sMjAwXSxkYXNoOltbLjUsMV0sNTBdLGxvbmdkYXNoOltbLjUsMV0sMTBdLGRhc2hkb3Q6W1suNSwuNjI1LC44NzUsMV0sNTBdLGxvbmdkYXNoZG90OltbLjUsLjcsLjgsMV0sMTBdfX0se31dLDY5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2NpcmNsZToiXHUyNWNmIiwiY2lyY2xlLW9wZW4iOiJcdTI1Y2IiLHNxdWFyZToiXHUyNWEwIiwic3F1YXJlLW9wZW4iOiJcdTI1YTEiLGRpYW1vbmQ6Ilx1MjVjNiIsImRpYW1vbmQtb3BlbiI6Ilx1MjVjNyIsY3Jvc3M6IisiLHg6Ilx1Mjc0YyJ9fSx7fV0sNjkyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17U0hPV19QTEFDRUhPTERFUjoxMDAsSElERV9QTEFDRUhPTERFUjoxZTMsREVTRUxFQ1RESU06LjJ9fSx7fV0sNjkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17QkFETlVNOnZvaWQgMCxGUF9TQUZFOk51bWJlci5NQVhfVkFMVUUvMWU0LE9ORUFWR1lFQVI6MzE1NTc2ZTUsT05FQVZHTU9OVEg6MjYyOThlNSxPTkVEQVk6ODY0ZTUsT05FSE9VUjozNmU1LE9ORU1JTjo2ZTQsT05FU0VDOjFlMyxFUE9DSEpEOjI0NDA1ODcuNSxBTE1PU1RfRVFVQUw6MS0xZS02LExPR19DTElQOjEwLE1JTlVTX1NJR046Ilx1MjIxMiJ9fSx7fV0sNjk0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IueG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIixyLnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHIueGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHIuc3ZnQXR0cnM9e3htbG5zOnIuc3ZnLCJ4bWxuczp4bGluayI6ci54bGlua319LHt9XSw2OTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci52ZXJzaW9uPSIxLjUyLjIiLHQoImVzNi1wcm9taXNlIikucG9seWZpbGwoKSx0KCIuLi9idWlsZC9wbG90Y3NzIiksdCgiLi9mb250cy9tYXRoamF4X2NvbmZpZyIpKCk7Zm9yKHZhciBuPXQoIi4vcmVnaXN0cnkiKSxhPXIucmVnaXN0ZXI9bi5yZWdpc3RlcixpPXQoIi4vcGxvdF9hcGkiKSxvPU9iamVjdC5rZXlzKGkpLHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIGw9b1tzXTsiXyIhPT1sLmNoYXJBdCgwKSYmKHJbbF09aVtsXSksYSh7bW9kdWxlVHlwZToiYXBpTWV0aG9kIixuYW1lOmwsZm46aVtsXX0pfWEodCgiLi90cmFjZXMvc2NhdHRlciIpKSxhKFt0KCIuL2NvbXBvbmVudHMvZngiKSx0KCIuL2NvbXBvbmVudHMvbGVnZW5kIiksdCgiLi9jb21wb25lbnRzL2Fubm90YXRpb25zIiksdCgiLi9jb21wb25lbnRzL2Fubm90YXRpb25zM2QiKSx0KCIuL2NvbXBvbmVudHMvc2hhcGVzIiksdCgiLi9jb21wb25lbnRzL2ltYWdlcyIpLHQoIi4vY29tcG9uZW50cy91cGRhdGVtZW51cyIpLHQoIi4vY29tcG9uZW50cy9zbGlkZXJzIiksdCgiLi9jb21wb25lbnRzL3Jhbmdlc2xpZGVyIiksdCgiLi9jb21wb25lbnRzL3Jhbmdlc2VsZWN0b3IiKSx0KCIuL2NvbXBvbmVudHMvZ3JpZCIpLHQoIi4vY29tcG9uZW50cy9lcnJvcmJhcnMiKSx0KCIuL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLHQoIi4vY29tcG9uZW50cy9jb2xvcmJhciIpXSksYShbdCgiLi9sb2NhbGUtZW4iKSx0KCIuL2xvY2FsZS1lbi11cyIpXSksd2luZG93LlBsb3RseUxvY2FsZXMmJkFycmF5LmlzQXJyYXkod2luZG93LlBsb3RseUxvY2FsZXMpJiYoYSh3aW5kb3cuUGxvdGx5TG9jYWxlcyksZGVsZXRlIHdpbmRvdy5QbG90bHlMb2NhbGVzKSxyLkljb25zPXQoIi4vZm9udHMvcGxvdGljb24iKSxyLlBsb3RzPXQoIi4vcGxvdHMvcGxvdHMiKSxyLkZ4PXQoIi4vY29tcG9uZW50cy9meCIpLHIuU25hcHNob3Q9dCgiLi9zbmFwc2hvdCIpLHIuUGxvdFNjaGVtYT10KCIuL3Bsb3RfYXBpL3Bsb3Rfc2NoZW1hIiksci5RdWV1ZT10KCIuL2xpYi9xdWV1ZSIpLHIuZDM9dCgiZDMiKX0seyIuLi9idWlsZC9wbG90Y3NzIjoxLCIuL2NvbXBvbmVudHMvYW5ub3RhdGlvbnMiOjU4MywiLi9jb21wb25lbnRzL2Fubm90YXRpb25zM2QiOjU4OCwiLi9jb21wb25lbnRzL2NvbG9yYmFyIjo1OTgsIi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4vY29tcG9uZW50cy9lcnJvcmJhcnMiOjYxOSwiLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4vY29tcG9uZW50cy9ncmlkIjo2MzQsIi4vY29tcG9uZW50cy9pbWFnZXMiOjYzOSwiLi9jb21wb25lbnRzL2xlZ2VuZCI6NjQ3LCIuL2NvbXBvbmVudHMvcmFuZ2VzZWxlY3RvciI6NjU4LCIuL2NvbXBvbmVudHMvcmFuZ2VzbGlkZXIiOjY2NSwiLi9jb21wb25lbnRzL3NoYXBlcyI6NjczLCIuL2NvbXBvbmVudHMvc2xpZGVycyI6Njc4LCIuL2NvbXBvbmVudHMvdXBkYXRlbWVudXMiOjY4NCwiLi9mb250cy9tYXRoamF4X2NvbmZpZyI6Njk2LCIuL2ZvbnRzL3Bsb3RpY29uIjo2OTcsIi4vbGliL3F1ZXVlIjo3MzIsIi4vbG9jYWxlLWVuIjo3NDYsIi4vbG9jYWxlLWVuLXVzIjo3NDUsIi4vcGxvdF9hcGkiOjc1MCwiLi9wbG90X2FwaS9wbG90X3NjaGVtYSI6NzU0LCIuL3Bsb3RzL3Bsb3RzIjo4MjYsIi4vcmVnaXN0cnkiOjg0NiwiLi9zbmFwc2hvdCI6ODUxLCIuL3RyYWNlcy9zY2F0dGVyIjoxMTMyLGQzOjE2NSwiZXM2LXByb21pc2UiOjIyMX1dLDY5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9dHlwZW9mIE1hdGhKYXgmJigibG9jYWwiIT09KHdpbmRvdy5QbG90bHlDb25maWd8fHt9KS5NYXRoSmF4Q29uZmlnJiYoTWF0aEpheC5IdWIuQ29uZmlnKHttZXNzYWdlU3R5bGU6Im5vbmUiLHNraXBTdGFydHVwVHlwZXNldDohMCxkaXNwbGF5QWxpZ246ImxlZnQiLHRleDJqYXg6e2lubGluZU1hdGg6W1siJCIsIiQiXSxbIlxcKCIsIlxcKSJdXX19KSxNYXRoSmF4Lkh1Yi5Db25maWd1cmVkKCkpKX19LHt9XSw2OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXt1bmRvOnt3aWR0aDo4NTcuMSxoZWlnaHQ6MWUzLHBhdGg6Im04NTcgMzUwcTAtODctMzQtMTY2dC05MS0xMzctMTM3LTkyLTE2Ni0zNHEtOTYgMC0xODMgNDF0LTE0NyAxMTRxLTQgNi00IDEzdDUgMTFsNzYgNzdxNiA1IDE0IDUgOS0xIDEzLTcgNDEtNTMgMTAwLTgydDEyNi0yOXE1OCAwIDExMCAyM3Q5MiA2MSA2MSA5MSAyMiAxMTEtMjIgMTExLTYxIDkxLTkyIDYxLTExMCAyM3EtNTUgMC0xMDUtMjB0LTkwLTU3bDc3LTc3cTE3LTE2IDgtMzgtMTAtMjMtMzMtMjNoLTI1MHEtMTUgMC0yNSAxMXQtMTEgMjV2MjUwcTAgMjQgMjIgMzMgMjIgMTAgMzktOGw3Mi03MnE2MCA1NyAxMzcgODh0MTU5IDMxcTg3IDAgMTY2LTM0dDEzNy05MiA5MS0xMzcgMzQtMTY2eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0saG9tZTp7d2lkdGg6OTI4LjYsaGVpZ2h0OjFlMyxwYXRoOiJtNzg2IDI5NnYtMjY3cTAtMTUtMTEtMjZ0LTI1LTEwaC0yMTR2MjE0aC0xNDN2LTIxNGgtMjE0cS0xNSAwLTI1IDEwdC0xMSAyNnYyNjdxMCAxIDAgMnQwIDJsMzIxIDI2NCAzMjEtMjY0cTEtMSAxLTR6IG0xMjQgMzlsLTM0LTQxcS01LTUtMTItNmgtMnEtNyAwLTEyIDNsLTM4NiAzMjItMzg2LTMyMnEtNy00LTEzLTQtNyAyLTEyIDdsLTM1IDQxcS00IDUtMyAxM3Q2IDEybDQwMSAzMzRxMTggMTUgNDIgMTV0NDMtMTVsMTM2LTExNHYxMDlxMCA4IDUgMTN0MTMgNWgxMDdxOCAwIDEzLTV0NS0xM3YtMjI3bDEyMi0xMDJxNS01IDYtMTJ0LTQtMTN6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSwiY2FtZXJhLXJldHJvIjp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoibTUxOCAzODZxMCA4LTUgMTN0LTEzIDVxLTM3IDAtNjMtMjd0LTI2LTYzcTAtOCA1LTEzdDEzLTUgMTIgNSA1IDEzcTAgMjMgMTYgMzh0MzggMTZxOCAwIDEzIDV0NSAxM3ogbTEyNS03M3EwLTU5LTQyLTEwMXQtMTAxLTQyLTEwMSA0Mi00MiAxMDEgNDIgMTAxIDEwMSA0MiAxMDEtNDIgNDItMTAxeiBtLTU3Mi0zMjBoODU4djcxaC04NTh2LTcxeiBtNjQzIDMyMHEwIDg5LTYyIDE1MnQtMTUyIDYyLTE1MS02Mi02My0xNTIgNjMtMTUxIDE1MS02MyAxNTIgNjMgNjIgMTUxeiBtLTU3MSAzNThoMjE0djcyaC0yMTR2LTcyeiBtLTcyLTEwN2g4NTh2MTQzaC00NjJsLTM2LTcxaC0zNjB2LTcyeiBtOTI5IDE0M3YtNzE0cTAtMzAtMjEtNTF0LTUwLTIxaC04NThxLTI5IDAtNTAgMjF0LTIxIDUxdjcxNHEwIDMwIDIxIDUxdDUwIDIxaDg1OHEyOSAwIDUwLTIxdDIxLTUxeiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sem9vbWJveDp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoibTEwMDAtMjVsLTI1MCAyNTFjNDAgNjMgNjMgMTM4IDYzIDIxOCAwIDIyNC0xODIgNDA2LTQwNyA0MDYtMjI0IDAtNDA2LTE4Mi00MDYtNDA2czE4My00MDYgNDA3LTQwNmM4MCAwIDE1NSAyMiAyMTggNjJsMjUwLTI1MCAxMjUgMTI1eiBtLTgxMiAyNTBsMCA0MzggNDM3IDAgMC00MzgtNDM3IDB6IG02MiAzNzVsMzEzIDAgMC0zMTItMzEzIDAgMCAzMTJ6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSxwYW46e3dpZHRoOjFlMyxoZWlnaHQ6MWUzLHBhdGg6Im0xMDAwIDM1MGwtMTg3IDE4OCAwLTEyNS0yNTAgMCAwIDI1MCAxMjUgMC0xODggMTg3LTE4Ny0xODcgMTI1IDAgMC0yNTAtMjUwIDAgMCAxMjUtMTg4LTE4OCAxODYtMTg3IDAgMTI1IDI1MiAwIDAtMjUwLTEyNSAwIDE4Ny0xODggMTg4IDE4OC0xMjUgMCAwIDI1MCAyNTAgMCAwLTEyNiAxODcgMTg4eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sem9vbV9wbHVzOnt3aWR0aDo4NzUsaGVpZ2h0OjFlMyxwYXRoOiJtMSA3ODdsMC04NzUgODc1IDAgMCA4NzUtODc1IDB6IG02ODctNTAwbC0xODcgMCAwLTE4Ny0xMjUgMCAwIDE4Ny0xODggMCAwIDEyNSAxODggMCAwIDE4NyAxMjUgMCAwLTE4NyAxODcgMCAwLTEyNXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHpvb21fbWludXM6e3dpZHRoOjg3NSxoZWlnaHQ6MWUzLHBhdGg6Im0wIDc4OGwwLTg3NiA4NzUgMCAwIDg3Ni04NzUgMHogbTY4OC01MDBsLTUwMCAwIDAgMTI1IDUwMCAwIDAtMTI1eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sYXV0b3NjYWxlOnt3aWR0aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtMjUwIDg1MGwtMTg3IDAtNjMgMCAwLTYyIDAtMTg4IDYzIDAgMCAxODggMTg3IDAgMCA2MnogbTY4OCAwbC0xODggMCAwLTYyIDE4OCAwIDAtMTg4IDYyIDAgMCAxODggMCA2Mi02MiAweiBtLTg3NS05MzhsMCAxODgtNjMgMCAwLTE4OCAwLTYyIDYzIDAgMTg3IDAgMCA2Mi0xODcgMHogbTg3NSAxODhsMC0xODgtMTg4IDAgMC02MiAxODggMCA2MiAwIDAgNjIgMCAxODgtNjIgMHogbS0xMjUgMTg4bC0xIDAtOTMtOTQtMTU2IDE1NiAxNTYgMTU2IDkyLTkzIDIgMCAwIDI1MC0yNTAgMCAwLTIgOTMtOTItMTU2LTE1Ni0xNTYgMTU2IDk0IDkyIDAgMi0yNTAgMCAwLTI1MCAwIDAgOTMgOTMgMTU3LTE1Ni0xNTctMTU2LTkzIDk0IDAgMCAwLTI1MCAyNTAgMCAwIDAtOTQgOTMgMTU2IDE1NyAxNTYtMTU3LTkzLTkzIDAgMCAyNTAgMCAwIDI1MHoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHRvb2x0aXBfYmFzaWM6e3dpZHRoOjE1MDAsaGVpZ2h0OjFlMyxwYXRoOiJtMzc1IDcyNWwwIDAtMzc1LTM3NSAzNzUtMzc0IDAtMSAxMTI1IDAgMCA3NTAtMTEyNSAweiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sdG9vbHRpcF9jb21wYXJlOnt3aWR0aDoxMTI1LGhlaWdodDoxZTMscGF0aDoibTE4NyA3ODZsMCAyLTE4Ny0xODggMTg4LTE4NyAwIDAgOTM3IDAgMCAzNzMtOTM4IDB6IG0wLTQ5OWwwIDEtMTg3LTE4OCAxODgtMTg4IDAgMCA5MzcgMCAwIDM3Ni05MzgtMXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHBsb3RseWxvZ286e3dpZHRoOjE1NDIsaGVpZ2h0OjFlMyxwYXRoOiJtMC0xMGgxODJ2LTE0MGgtMTgydjE0MHogbTIyOCAxNDZoMTgzdi0yODZoLTE4M3YyODZ6IG0yMjUgNzE0aDE4MnYtMTAwMGgtMTgydjEwMDB6IG0yMjUtMjg1aDE4MnYtNzE1aC0xODJ2NzE1eiBtMjI1IDE0MmgxODN2LTg1N2gtMTgzdjg1N3ogbTIzMS00MjhoMTgydi00MjloLTE4MnY0Mjl6IG0yMjUtMjkxaDE4M3YtMTM4aC0xODN2MTM4eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sInotYXhpcyI6e3dpZHRoOjFlMyxoZWlnaHQ6MWUzLHBhdGg6Im04MzMgNWwtMTcgMTA4djQxbC0xMzAtNjUgMTMwLTY2YzAgMCAwIDM4IDAgMzkgMC0xIDM2LTE0IDM5LTI1IDQtMTUtNi0yMi0xNi0zMC0xNS0xMi0zOS0xNi01Ni0yMC05MC0yMi0xODctMjMtMjc5LTIzLTI2MSAwLTM0MSAzNC0zNTMgNTkgMyA2MCAyMjggMTEwIDIyOCAxMTAtMTQwLTgtMzUxLTM1LTM1MS0xMTYgMC0xMjAgMjkzLTE0MiA0NzQtMTQyIDE1NSAwIDQ3NyAyMiA0NzcgMTQyIDAgNTAtNzQgNzktMTYzIDk2eiBtLTM3NCA5NGMtNTgtNS05OS0yMS05OS00MCAwLTI0IDY1LTQzIDE0NC00MyA3OSAwIDE0MyAxOSAxNDMgNDMgMCAxOS00MiAzNC05OCA0MHYyMTZoODdsLTEzMiAxMzUtMTMzLTEzNWg4OHYtMjE2eiBtMTY3IDUxNWgtMTM2djFjMTYgMTYgMzEgMzQgNDYgNTJsODQgMTA5djU0aC0yMzB2LTcxaDEyNHYtMWMtMTYtMTctMjgtMzItNDQtNTFsLTg5LTExNHYtNTFoMjQ1djcyeiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sIjNkX3JvdGF0ZSI6e3dpZHRoOjFlMyxoZWlnaHQ6MWUzLHBhdGg6Im05MjIgNjYwYy01IDQtOSA3LTE0IDExLTM1OSAyNjMtNTgwLTMxLTU4MC0zMWwtMTAyIDI4IDU4LTQwMGMwIDEgMSAxIDIgMiAxMTggMTA4IDM1MSAyNDkgMzUxIDI0OXMtNjIgMjctMTAwIDQyYzg4IDgzIDIyMiAxODMgMzQ3IDEyMiAxNi04IDMwLTE3IDQ0LTI3LTIgMS00IDItNiA0eiBtMzYtMzI5YzAgMCA2NCAyMjktODggMjk2LTYyIDI3LTEyNCAxNC0xNzUtMTEgMTU3LTc4IDIyNS0yMDggMjQ5LTI2NiA4LTE5IDExLTMxIDExLTMxIDIgNSA2IDE1IDExIDMyLTUtMTMtOC0yMC04LTIweiBtLTc3NS0yMzljNzAtMzEgMTE3LTUwIDE5OC0zMi0xMjEgODAtMTk5IDM0Ni0xOTkgMzQ2bC05Ni0xNS01OC0xMmMwIDAgNTUtMjI2IDE1NS0yODd6IG02MDMgMTMzbC0zMTctMTM5YzAgMCA0LTQgMTktMTQgNy01IDI0LTE1IDI0LTE1cy0xNzctMTQ3LTM4OSA0YzIzNS0yODcgNTM2LTExMiA1MzYtMTEybDMxLTIyIDEwMCAyOTktNC0xeiBtLTI5OC0xNTNjNi00IDE0LTkgMjQtMTUgMCAwLTE3IDEwLTI0IDE1eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sY2FtZXJhOnt3aWR0aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtNTAwIDQ1MGMtODMgMC0xNTAtNjctMTUwLTE1MCAwLTgzIDY3LTE1MCAxNTAtMTUwIDgzIDAgMTUwIDY3IDE1MCAxNTAgMCA4My02NyAxNTAtMTUwIDE1MHogbTQwMCAxNTBoLTEyMGMtMTYgMC0zNCAxMy0zOSAyOWwtMzEgOTNjLTYgMTUtMjMgMjgtNDAgMjhoLTM0MGMtMTYgMC0zNC0xMy0zOS0yOGwtMzEtOTRjLTYtMTUtMjMtMjgtNDAtMjhoLTEyMGMtNTUgMC0xMDAtNDUtMTAwLTEwMHYtNDUwYzAtNTUgNDUtMTAwIDEwMC0xMDBoODAwYzU1IDAgMTAwIDQ1IDEwMCAxMDB2NDUwYzAgNTUtNDUgMTAwLTEwMCAxMDB6IG0tNDAwLTU1MGMtMTM4IDAtMjUwIDExMi0yNTAgMjUwIDAgMTM4IDExMiAyNTAgMjUwIDI1MCAxMzggMCAyNTAtMTEyIDI1MC0yNTAgMC0xMzgtMTEyLTI1MC0yNTAtMjUweiBtMzY1IDM4MGMtMTkgMC0zNSAxNi0zNSAzNSAwIDE5IDE2IDM1IDM1IDM1IDE5IDAgMzUtMTYgMzUtMzUgMC0xOS0xNi0zNS0zNS0zNXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LG1vdmllOnt3aWR0aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtOTM4IDQxM2wtMTg4LTEyNWMwIDM3LTE3IDcxLTQ0IDk0IDY0IDM4IDEwNyAxMDcgMTA3IDE4NyAwIDEyMS05OCAyMTktMjE5IDIxOS0xMjEgMC0yMTktOTgtMjE5LTIxOSAwLTYxIDI1LTExNyA2Ni0xNTZoLTExNWMzMCAzMyA0OSA3NiA0OSAxMjUgMCAxMDMtODQgMTg3LTE4NyAxODdzLTE4OC04NC0xODgtMTg3YzAtNTcgMjYtMTA3IDY1LTE0MS0zOC0yMi02NS02Mi02NS0xMDl2LTI1MGMwLTcwIDU2LTEyNiAxMjUtMTI2aDUwMGM2OSAwIDEyNSA1NiAxMjUgMTI2bDE4OC0xMjZjMzQgMCA2MiAyOCA2MiA2M3YzNzVjMCAzNS0yOCA2My02MiA2M3ogbS03NTAgMGMtNjkgMC0xMjUgNTYtMTI1IDEyNXM1NiAxMjUgMTI1IDEyNSAxMjUtNTYgMTI1LTEyNS01Ni0xMjUtMTI1LTEyNXogbTQwNi0xYy04NyAwLTE1NyA3MC0xNTcgMTU3IDAgODYgNzAgMTU2IDE1NyAxNTZzMTU2LTcwIDE1Ni0xNTYtNzAtMTU3LTE1Ni0xNTd6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSxxdWVzdGlvbjp7d2lkdGg6ODU3LjEsaGVpZ2h0OjFlMyxwYXRoOiJtNTAwIDgydjEwN3EwIDgtNSAxM3QtMTMgNWgtMTA3cS04IDAtMTMtNXQtNS0xM3YtMTA3cTAtOCA1LTEzdDEzLTVoMTA3cTggMCAxMyA1dDUgMTN6IG0xNDMgMzc1cTAgNDktMzEgOTF0LTc3IDY1LTk1IDIzcS0xMzYgMC0yMDctMTE5LTktMTQgNC0yNGw3NC01NXE0LTQgMTAtNCA5IDAgMTQgNyAzMCAzOCA0OCA1MSAxOSAxNCA0OCAxNCAyNyAwIDQ4LTE1dDIxLTMzcTAtMjEtMTEtMzR0LTM4LTI1cS0zNS0xNi02NS00OHQtMjktNzB2LTIwcTAtOCA1LTEzdDEzLTVoMTA3cTggMCAxMyA1dDUgMTNxMCAxMCAxMiAyN3QzMCAyOHExOCAxMCAyOCAxNnQyNSAxOSAyNSAyNyAxNiAzNCA3IDQ1eiBtMjE0LTEwN3EwLTExNy01Ny0yMTV0LTE1Ni0xNTYtMjE1LTU4LTIxNiA1OC0xNTUgMTU2LTU4IDIxNSA1OCAyMTUgMTU1IDE1NiAyMTYgNTggMjE1LTU4IDE1Ni0xNTYgNTctMjE1eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sZGlzazp7d2lkdGg6ODU3LjEsaGVpZ2h0OjFlMyxwYXRoOiJtMjE0LTdoNDI5djIxNGgtNDI5di0yMTR6IG01MDAgMGg3MnY1MDBxMCA4LTYgMjF0LTExIDIwbC0xNTcgMTU2cS01IDYtMTkgMTJ0LTIyIDV2LTIzMnEwLTIyLTE1LTM4dC0zOC0xNmgtMzIycS0yMiAwLTM3IDE2dC0xNiAzOHYyMzJoLTcydi03MTRoNzJ2MjMycTAgMjIgMTYgMzh0MzcgMTZoNDY1cTIyIDAgMzgtMTZ0MTUtMzh2LTIzMnogbS0yMTQgNTE4djE3OHEwIDgtNSAxM3QtMTMgNWgtMTA3cS03IDAtMTMtNXQtNS0xM3YtMTc4cTAtOCA1LTEzdDEzLTVoMTA3cTcgMCAxMyA1dDUgMTN6IG0zNTctMTh2LTUxOHEwLTIyLTE1LTM4dC0zOC0xNmgtNzUwcS0yMyAwLTM4IDE2dC0xNiAzOHY3NTBxMCAyMiAxNiAzOHQzOCAxNmg1MTdxMjMgMCA1MC0xMnQ0Mi0yNmwxNTYtMTU3cTE2LTE1IDI3LTQydDExLTQ5eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sbGFzc286e3dpZHRoOjEwMzEsaGVpZ2h0OjFlMyxwYXRoOiJtMTAxOCA1MzhjLTM2IDIwNy0yOTAgMzM2LTU2OCAyODYtMjc3LTQ4LTQ3My0yNTYtNDM2LTQ2MyAxMC01NyAzNi0xMDggNzYtMTUxLTEzLTY2IDExLTEzNyA2OC0xODMgMzQtMjggNzUtNDEgMTE0LTQybC01NS03MCAwIDBjLTItMS0zLTItNC0zLTEwLTE0LTgtMzQgNS00NSAxNC0xMSAzNC04IDQ1IDQgMSAxIDIgMyAyIDVsMCAwIDExMyAxNDBjMTYgMTEgMzEgMjQgNDUgNDAgNCAzIDYgNyA4IDExIDQ4LTMgMTAwIDAgMTUxIDkgMjc4IDQ4IDQ3MyAyNTUgNDM2IDQ2MnogbS02MjQtMzc5Yy04MCAxNC0xNDkgNDgtMTk3IDk2IDQyIDQyIDEwOSA0NyAxNTYgOSAzMy0yNiA0Ny02NiA0MS0xMDV6IG0tMTg3LTc0Yy0xOSAxNi0zMyAzNy0zOSA2MCA1MC0zMiAxMDktNTUgMTc0LTY4LTQyLTI1LTk1LTI0LTEzNSA4eiBtMzYwIDc1Yy0zNC03LTY5LTktMTAyLTggOCA2Mi0xNiAxMjgtNjggMTcwLTczIDU5LTE3NSA1NC0yNDQtNS05IDIwLTE2IDQwLTIwIDYxLTI4IDE1OSAxMjEgMzE3IDMzMyAzNTRzNDA3LTYwIDQzNC0yMTdjMjgtMTU5LTEyMS0zMTgtMzMzLTM1NXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHNlbGVjdGJveDp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoibTAgODUwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtMjg2IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0yODUgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTI4NiAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtLTg1Ny0yODZsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG04NTcgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbS04NTctMjg1bDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtODU3IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0tODU3LTI4NmwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTI4NiAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtMjg1IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0yODYgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHNwaWtlbGluZTp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoiTTUxMiA0MDljMC01Ny00Ni0xMDQtMTAzLTEwNC01NyAwLTEwNCA0Ny0xMDQgMTA0IDAgNTcgNDcgMTAzIDEwNCAxMDMgNTcgMCAxMDMtNDYgMTAzLTEwM3ogbS0zMjctMzlsOTIgMCAwIDkyLTkyIDB6IG0tMTg1IDBsOTIgMCAwIDkyLTkyIDB6IG0zNzAtMTg2bDkyIDAgMCA5My05MiAweiBtMC0xODRsOTIgMCAwIDkyLTkyIDB6Iix0cmFuc2Zvcm06Im1hdHJpeCgxLjUgMCAwIC0xLjUgMCA4NTApIn0scGVuY2lsOnt3aWR0aDoxNzkyLGhlaWdodDoxNzkyLHBhdGg6Ik00OTEgMTUzNmw5MS05MS0yMzUtMjM1LTkxIDkxdjEwN2gxMjh2MTI4aDEwN3ptNTIzLTkyOHEwLTIyLTIyLTIyLTEwIDAtMTcgN2wtNTQyIDU0MnEtNyA3LTcgMTcgMCAyMiAyMiAyMiAxMCAwIDE3LTdsNTQyLTU0MnE3LTcgNy0xN3ptLTU0LTE5Mmw0MTYgNDE2LTgzMiA4MzJoLTQxNnYtNDE2em02ODMgOTZxMCA1My0zNyA5MGwtMTY2IDE2Ni00MTYtNDE2IDE2Ni0xNjVxMzYtMzggOTAtMzggNTMgMCA5MSAzOGwyMzUgMjM0cTM3IDM5IDM3IDkxeiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgMSAwIDEpIn0sbmV3cGxvdGx5bG9nbzp7bmFtZToibmV3cGxvdGx5bG9nbyIsc3ZnOiI8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEzMiAxMzInPjxkZWZzPjxzdHlsZT4uY2xzLTEge2ZpbGw6ICMxMTlkZmY7fSAuY2xzLTIge2ZpbGw6ICMyNWZlZmQ7fSAuY2xzLTMge2ZpbGw6ICNmZmY7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5wbG90bHktbG9nb21hcms8L3RpdGxlPjxnIGlkPSdzeW1ib2wnPjxyZWN0IGNsYXNzPSdjbHMtMScgd2lkdGg9JzEzMicgaGVpZ2h0PScxMzInIHJ4PSc2JyByeT0nNicvPjxjaXJjbGUgY2xhc3M9J2Nscy0yJyBjeD0nNzgnIGN5PSc1NCcgcj0nNicvPjxjaXJjbGUgY2xhc3M9J2Nscy0yJyBjeD0nMTAyJyBjeT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9Jzc4JyBjeT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9JzU0JyBjeT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9JzMwJyBjeT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9JzMwJyBjeT0nNTQnIHI9JzYnLz48cGF0aCBjbGFzcz0nY2xzLTMnIGQ9J00zMCw3MmE2LDYsMCwwLDAtNiw2djI0YTYsNiwwLDAsMCwxMiwwVjc4QTYsNiwwLDAsMCwzMCw3MlonLz48cGF0aCBjbGFzcz0nY2xzLTMnIGQ9J003OCw3MmE2LDYsMCwwLDAtNiw2djI0YTYsNiwwLDAsMCwxMiwwVjc4QTYsNiwwLDAsMCw3OCw3MlonLz48cGF0aCBjbGFzcz0nY2xzLTMnIGQ9J001NCw0OGE2LDYsMCwwLDAtNiw2djQ4YTYsNiwwLDAsMCwxMiwwVjU0QTYsNiwwLDAsMCw1NCw0OFonLz48cGF0aCBjbGFzcz0nY2xzLTMnIGQ9J00xMDIsNDhhNiw2LDAsMCwwLTYsNnY0OGE2LDYsMCwwLDAsMTIsMFY1NEE2LDYsMCwwLDAsMTAyLDQ4WicvPjwvZz48L3N2Zz4ifX19LHt9XSw2OTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5pc0xlZnRBbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuImxlZnQiPT09dC54YW5jaG9yfHwiYXV0byI9PT10LnhhbmNob3ImJnQueDw9MS8zfSxyLmlzQ2VudGVyQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJjZW50ZXIiPT09dC54YW5jaG9yfHwiYXV0byI9PT10LnhhbmNob3ImJnQueD4xLzMmJnQueDwyLzN9LHIuaXNSaWdodEFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4icmlnaHQiPT09dC54YW5jaG9yfHwiYXV0byI9PT10LnhhbmNob3ImJnQueD49Mi8zfSxyLmlzVG9wQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJ0b3AiPT09dC55YW5jaG9yfHwiYXV0byI9PT10LnlhbmNob3ImJnQueT49Mi8zfSxyLmlzTWlkZGxlQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJtaWRkbGUiPT09dC55YW5jaG9yfHwiYXV0byI9PT10LnlhbmNob3ImJnQueT4xLzMmJnQueTwyLzN9LHIuaXNCb3R0b21BbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuImJvdHRvbSI9PT10LnlhbmNob3J8fCJhdXRvIj09PXQueWFuY2hvciYmdC55PD0xLzN9fSx7fV0sNjk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbW9kIiksYT1uLm1vZCxpPW4ubW9kSGFsZixvPU1hdGguUEkscz0yKm87ZnVuY3Rpb24gbCh0KXtyZXR1cm4gTWF0aC5hYnModFsxXS10WzBdKT5zLTFlLTE0fWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gaShlLXQscyl9ZnVuY3Rpb24gdSh0LGUpe2lmKGwoZSkpcmV0dXJuITA7dmFyIHIsbjtlWzBdPGVbMV0/KHI9ZVswXSxuPWVbMV0pOihyPWVbMV0sbj1lWzBdKSwocj1hKHIscykpPihuPWEobixzKSkmJihuKz1zKTt2YXIgaT1hKHQscyksbz1pK3M7cmV0dXJuIGk+PXImJmk8PW58fG8+PXImJm88PW59ZnVuY3Rpb24gaCh0LGUscixuLGEsaSxjKXthPWF8fDAsaT1pfHwwO3ZhciB1LGgsZixwLGQsZz1sKFtyLG5dKTtmdW5jdGlvbiB2KHQsZSl7cmV0dXJuW3QqTWF0aC5jb3MoZSkrYSxpLXQqTWF0aC5zaW4oZSldfWc/KHU9MCxoPW8sZj1zKTpyPG4/KHU9cixmPW4pOih1PW4sZj1yKSx0PGU/KHA9dCxkPWUpOihwPWUsZD10KTt2YXIgbSx5PU1hdGguYWJzKGYtdSk8PW8/MDoxO2Z1bmN0aW9uIHgodCxlLHIpe3JldHVybiJBIitbdCx0XSsiICIrWzAseSxyXSsiICIrdih0LGUpfXJldHVybiBnP209bnVsbD09PXA/Ik0iK3YoZCx1KSt4KGQsaCwwKSt4KGQsZiwwKSsiWiI6Ik0iK3YocCx1KSt4KHAsaCwwKSt4KHAsZiwwKSsiWk0iK3YoZCx1KSt4KGQsaCwxKSt4KGQsZiwxKSsiWiI6bnVsbD09PXA/KG09Ik0iK3YoZCx1KSt4KGQsZiwwKSxjJiYobSs9IkwwLDBaIikpOm09Ik0iK3YocCx1KSsiTCIrdihkLHUpK3goZCxmLDApKyJMIit2KHAsZikreChwLHUsMSkrIloiLG19ZS5leHBvcnRzPXtkZWcycmFkOmZ1bmN0aW9uKHQpe3JldHVybiB0LzE4MCpvfSxyYWQyZGVnOmZ1bmN0aW9uKHQpe3JldHVybiB0L28qMTgwfSxhbmdsZURlbHRhOmMsYW5nbGVEaXN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguYWJzKGModCxlKSl9LGlzRnVsbENpcmNsZTpsLGlzQW5nbGVJbnNpZGVTZWN0b3I6dSxpc1B0SW5zaWRlU2VjdG9yOmZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiEhdShlLG4pJiYoclswXTxyWzFdPyhhPXJbMF0saT1yWzFdKTooYT1yWzFdLGk9clswXSksdD49YSYmdDw9aSk7dmFyIGEsaX0scGF0aEFyYzpmdW5jdGlvbih0LGUscixuLGEpe3JldHVybiBoKG51bGwsdCxlLHIsbixhLDApfSxwYXRoU2VjdG9yOmZ1bmN0aW9uKHQsZSxyLG4sYSl7cmV0dXJuIGgobnVsbCx0LGUscixuLGEsMSl9LHBhdGhBbm51bHVzOmZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtyZXR1cm4gaCh0LGUscixuLGEsaSwxKX19fSx7Ii4vbW9kIjo3MjR9XSw3MDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49QXJyYXkuaXNBcnJheSxhPSJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlcjp7aXNWaWV3OmZ1bmN0aW9uKCl7cmV0dXJuITF9fSxpPSJ1bmRlZmluZWQiPT10eXBlb2YgRGF0YVZpZXc/ZnVuY3Rpb24oKXt9OkRhdGFWaWV3O2Z1bmN0aW9uIG8odCl7cmV0dXJuIGEuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBpKX1mdW5jdGlvbiBzKHQpe3JldHVybiBuKHQpfHxvKHQpfWZ1bmN0aW9uIGwodCxlLHIpe2lmKHModCkpe2lmKHModFswXSkpe2Zvcih2YXIgbj1yLGE9MDthPHQubGVuZ3RoO2ErKyluPWUobix0W2FdLmxlbmd0aCk7cmV0dXJuIG59cmV0dXJuIHQubGVuZ3RofXJldHVybiAwfXIuaXNUeXBlZEFycmF5PW8sci5pc0FycmF5T3JUeXBlZEFycmF5PXMsci5pc0FycmF5MUQ9ZnVuY3Rpb24odCl7cmV0dXJuIXModFswXSl9LHIuZW5zdXJlQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0KXx8KHQ9W10pLHQubGVuZ3RoPWUsdH0sci5jb25jYXQ9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsYSxpLG8scyxsLGM9W10sdT0hMCxoPTA7Zm9yKHI9MDtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKShvPShhPWFyZ3VtZW50c1tyXSkubGVuZ3RoKSYmKGU/Yy5wdXNoKGEpOihlPWEsaT1vKSxuKGEpP3Q9ITE6KHU9ITEsaD90IT09YS5jb25zdHJ1Y3RvciYmKHQ9ITEpOnQ9YS5jb25zdHJ1Y3RvciksaCs9byk7aWYoIWgpcmV0dXJuW107aWYoIWMubGVuZ3RoKXJldHVybiBlO2lmKHUpcmV0dXJuIGUuY29uY2F0LmFwcGx5KGUsYyk7aWYodCl7Zm9yKChzPW5ldyB0KGgpKS5zZXQoZSkscj0wO3I8Yy5sZW5ndGg7cisrKWE9Y1tyXSxzLnNldChhLGkpLGkrPWEubGVuZ3RoO3JldHVybiBzfWZvcihzPW5ldyBBcnJheShoKSxsPTA7bDxlLmxlbmd0aDtsKyspc1tsXT1lW2xdO2ZvcihyPTA7cjxjLmxlbmd0aDtyKyspe2ZvcihhPWNbcl0sbD0wO2w8YS5sZW5ndGg7bCsrKXNbaStsXT1hW2xdO2krPWx9cmV0dXJuIHN9LHIubWF4Um93TGVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBsKHQsTWF0aC5tYXgsMCl9LHIubWluUm93TGVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBsKHQsTWF0aC5taW4sMS8wKX19LHt9XSw3MDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0saT0vXlsnIiUsJCNccyddK3xbLCBdfFsnIiUsJCNccyddKyQvZztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYodD10LnJlcGxhY2UoaSwiIikpLG4odCk/TnVtYmVyKHQpOmF9fSx7Ii4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiZmFzdC1pc251bWVyaWMiOjIyOH1dLDcwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtlLl9nbGNhbnZhcyYmZS5fZ2xjYW52YXMuc2l6ZSgpJiZlLl9nbGNhbnZhcy5lYWNoKGZ1bmN0aW9uKHQpe3QucmVnbCYmdC5yZWdsLmNsZWFyKHtjb2xvcjohMCxkZXB0aDohMH0pfSl9fSx7fV0sNzAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt0Ll9yZXNwb25zaXZlQ2hhcnRIYW5kbGVyJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdC5fcmVzcG9uc2l2ZUNoYXJ0SGFuZGxlciksZGVsZXRlIHQuX3Jlc3BvbnNpdmVDaGFydEhhbmRsZXIpfX0se31dLDcwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgidGlueWNvbG9yMiIpLGk9dCgiLi4vcGxvdHMvYXR0cmlidXRlcyIpLG89dCgiLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL3NjYWxlcyIpLHM9dCgiLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyIpLkRFU0VMRUNURElNLGw9dCgiLi9uZXN0ZWRfcHJvcGVydHkiKSxjPXQoIi4vcmVnZXgiKS5jb3VudGVyLHU9dCgiLi9tb2QiKS5tb2RIYWxmLGg9dCgiLi9hcnJheSIpLmlzQXJyYXlPclR5cGVkQXJyYXk7ZnVuY3Rpb24gZih0LGUpe3ZhciBuPXIudmFsT2JqZWN0TWV0YVtlLnZhbFR5cGVdO2lmKGUuYXJyYXlPayYmaCh0KSlyZXR1cm4hMDtpZihuLnZhbGlkYXRlRnVuY3Rpb24pcmV0dXJuIG4udmFsaWRhdGVGdW5jdGlvbih0LGUpO3ZhciBhPXt9LGk9YSxvPXtzZXQ6ZnVuY3Rpb24odCl7aT10fX07cmV0dXJuIG4uY29lcmNlRnVuY3Rpb24odCxvLGEsZSksaSE9PWF9ci52YWxPYmplY3RNZXRhPXtkYXRhX2FycmF5Ontjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscil7aCh0KT9lLnNldCh0KTp2b2lkIDAhPT1yJiZlLnNldChyKX19LGVudW1lcmF0ZWQ6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyLG4pe24uY29lcmNlTnVtYmVyJiYodD0rdCksLTE9PT1uLnZhbHVlcy5pbmRleE9mKHQpP2Uuc2V0KHIpOmUuc2V0KHQpfSx2YWxpZGF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSl7ZS5jb2VyY2VOdW1iZXImJih0PSt0KTtmb3IodmFyIHI9ZS52YWx1ZXMsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgYT1TdHJpbmcocltuXSk7aWYoIi8iPT09YS5jaGFyQXQoMCkmJiIvIj09PWEuY2hhckF0KGEubGVuZ3RoLTEpKXtpZihuZXcgUmVnRXhwKGEuc3Vic3RyKDEsYS5sZW5ndGgtMikpLnRlc3QodCkpcmV0dXJuITB9ZWxzZSBpZih0PT09cltuXSlyZXR1cm4hMH1yZXR1cm4hMX19LGJvb2xlYW46e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXshMD09PXR8fCExPT09dD9lLnNldCh0KTplLnNldChyKX19LG51bWJlcjp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIsYSl7IW4odCl8fHZvaWQgMCE9PWEubWluJiZ0PGEubWlufHx2b2lkIDAhPT1hLm1heCYmdD5hLm1heD9lLnNldChyKTplLnNldCgrdCl9fSxpbnRlZ2VyOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscixhKXt0JTF8fCFuKHQpfHx2b2lkIDAhPT1hLm1pbiYmdDxhLm1pbnx8dm9pZCAwIT09YS5tYXgmJnQ+YS5tYXg/ZS5zZXQocik6ZS5zZXQoK3QpfX0sc3RyaW5nOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscixuKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpe3ZhciBhPSJudW1iZXIiPT10eXBlb2YgdDshMCE9PW4uc3RyaWN0JiZhP2Uuc2V0KFN0cmluZyh0KSk6ZS5zZXQocil9ZWxzZSBuLm5vQmxhbmsmJiF0P2Uuc2V0KHIpOmUuc2V0KHQpfX0sY29sb3I6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXthKHQpLmlzVmFsaWQoKT9lLnNldCh0KTplLnNldChyKX19LGNvbG9ybGlzdDp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe0FycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoJiZ0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiBhKHQpLmlzVmFsaWQoKX0pP2Uuc2V0KHQpOmUuc2V0KHIpfX0sY29sb3JzY2FsZTp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe2Uuc2V0KG8uZ2V0KHQscikpfX0sYW5nbGU6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXsiYXV0byI9PT10P2Uuc2V0KCJhdXRvIik6bih0KT9lLnNldCh1KCt0LDM2MCkpOmUuc2V0KHIpfX0sc3VicGxvdGlkOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscixuKXt2YXIgYT1uLnJlZ2V4fHxjKHIpOyJzdHJpbmciPT10eXBlb2YgdCYmYS50ZXN0KHQpP2Uuc2V0KHQpOmUuc2V0KHIpfSx2YWxpZGF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5kZmx0O3JldHVybiB0PT09cnx8InN0cmluZyI9PXR5cGVvZiB0JiYhIWMocikudGVzdCh0KX19LGZsYWdsaXN0Ontjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscixuKXtpZigic3RyaW5nIj09dHlwZW9mIHQpaWYoLTE9PT0obi5leHRyYXN8fFtdKS5pbmRleE9mKHQpKXtmb3IodmFyIGE9dC5zcGxpdCgiKyIpLGk9MDtpPGEubGVuZ3RoOyl7dmFyIG89YVtpXTstMT09PW4uZmxhZ3MuaW5kZXhPZihvKXx8YS5pbmRleE9mKG8pPGk/YS5zcGxpY2UoaSwxKTppKyt9YS5sZW5ndGg/ZS5zZXQoYS5qb2luKCIrIikpOmUuc2V0KHIpfWVsc2UgZS5zZXQodCk7ZWxzZSBlLnNldChyKX19LGFueTp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PXQ/ZS5zZXQocik6ZS5zZXQodCl9fSxpbmZvX2FycmF5Ontjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUsbixhKXtmdW5jdGlvbiBpKHQsZSxuKXt2YXIgYSxpPXtzZXQ6ZnVuY3Rpb24odCl7YT10fX07cmV0dXJuIHZvaWQgMD09PW4mJihuPWUuZGZsdCksci52YWxPYmplY3RNZXRhW2UudmFsVHlwZV0uY29lcmNlRnVuY3Rpb24odCxpLG4sZSksYX12YXIgbz0yPT09YS5kaW1lbnNpb25zfHwiMS0yIj09PWEuZGltZW5zaW9ucyYmQXJyYXkuaXNBcnJheSh0KSYmQXJyYXkuaXNBcnJheSh0WzBdKTtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcyxsLGMsdSxoLGYscD1hLml0ZW1zLGQ9W10sZz1BcnJheS5pc0FycmF5KHApLHY9ZyYmbyYmQXJyYXkuaXNBcnJheShwWzBdKSxtPW8mJmcmJiF2LHk9ZyYmIW0/cC5sZW5ndGg6dC5sZW5ndGg7aWYobj1BcnJheS5pc0FycmF5KG4pP246W10sbylmb3Iocz0wO3M8eTtzKyspZm9yKGRbc109W10sYz1BcnJheS5pc0FycmF5KHRbc10pP3Rbc106W10saD1tP3AubGVuZ3RoOmc/cFtzXS5sZW5ndGg6Yy5sZW5ndGgsbD0wO2w8aDtsKyspdT1tP3BbbF06Zz9wW3NdW2xdOnAsdm9pZCAwIT09KGY9aShjW2xdLHUsKG5bc118fFtdKVtsXSkpJiYoZFtzXVtsXT1mKTtlbHNlIGZvcihzPTA7czx5O3MrKyl2b2lkIDAhPT0oZj1pKHRbc10sZz9wW3NdOnAsbltzXSkpJiYoZFtzXT1mKTtlLnNldChkKX1lbHNlIGUuc2V0KG4pfSx2YWxpZGF0ZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuITE7dmFyIHI9ZS5pdGVtcyxuPUFycmF5LmlzQXJyYXkociksYT0yPT09ZS5kaW1lbnNpb25zO2lmKCFlLmZyZWVMZW5ndGgmJnQubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYoYSl7aWYoIUFycmF5LmlzQXJyYXkodFtpXSl8fCFlLmZyZWVMZW5ndGgmJnRbaV0ubGVuZ3RoIT09cltpXS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBvPTA7bzx0W2ldLmxlbmd0aDtvKyspaWYoIWYodFtpXVtvXSxuP3JbaV1bb106cikpcmV0dXJuITF9ZWxzZSBpZighZih0W2ldLG4/cltpXTpyKSlyZXR1cm4hMTtyZXR1cm4hMH19fSxyLmNvZXJjZT1mdW5jdGlvbih0LGUsbixhLGkpe3ZhciBvPWwobixhKS5nZXQoKSxzPWwodCxhKSxjPWwoZSxhKSx1PXMuZ2V0KCkscD1lLl90ZW1wbGF0ZTtpZih2b2lkIDA9PT11JiZwJiYodT1sKHAsYSkuZ2V0KCkscD0wKSx2b2lkIDA9PT1pJiYoaT1vLmRmbHQpLG8uYXJyYXlPayYmaCh1KSlyZXR1cm4gYy5zZXQodSksdTt2YXIgZD1yLnZhbE9iamVjdE1ldGFbby52YWxUeXBlXS5jb2VyY2VGdW5jdGlvbjtkKHUsYyxpLG8pO3ZhciBnPWMuZ2V0KCk7cmV0dXJuIHAmJmc9PT1pJiYhZih1LG8pJiYoZCh1PWwocCxhKS5nZXQoKSxjLGksbyksZz1jLmdldCgpKSxnfSxyLmNvZXJjZTI9ZnVuY3Rpb24odCxlLG4sYSxpKXt2YXIgbz1sKHQsYSkscz1yLmNvZXJjZSh0LGUsbixhLGkpLGM9by5nZXQoKTtyZXR1cm4gbnVsbCE9YyYmc30sci5jb2VyY2VGb250PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj17fTtyZXR1cm4gcj1yfHx7fSxuLmZhbWlseT10KGUrIi5mYW1pbHkiLHIuZmFtaWx5KSxuLnNpemU9dChlKyIuc2l6ZSIsci5zaXplKSxuLmNvbG9yPXQoZSsiLmNvbG9yIixyLmNvbG9yKSxufSxyLmNvZXJjZUhvdmVyaW5mbz1mdW5jdGlvbih0LGUsbil7dmFyIGEsbz1lLl9tb2R1bGUuYXR0cmlidXRlcyxzPW8uaG92ZXJpbmZvP286aSxsPXMuaG92ZXJpbmZvO2lmKDE9PT1uLl9kYXRhTGVuZ3RoKXt2YXIgYz0iYWxsIj09PWwuZGZsdD9sLmZsYWdzLnNsaWNlKCk6bC5kZmx0LnNwbGl0KCIrIik7Yy5zcGxpY2UoYy5pbmRleE9mKCJuYW1lIiksMSksYT1jLmpvaW4oIisiKX1yZXR1cm4gci5jb2VyY2UodCxlLHMsImhvdmVyaW5mbyIsYSl9LHIuY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eT1mdW5jdGlvbih0LGUpe2lmKHQubWFya2VyKXt2YXIgcixuLGE9dC5tYXJrZXIub3BhY2l0eTtpZih2b2lkIDAhPT1hKWgoYSl8fHQuc2VsZWN0ZWR8fHQudW5zZWxlY3RlZHx8KHI9YSxuPXMqYSksZSgic2VsZWN0ZWQubWFya2VyLm9wYWNpdHkiLHIpLGUoInVuc2VsZWN0ZWQubWFya2VyLm9wYWNpdHkiLG4pfX0sci52YWxpZGF0ZT1mfSx7Ii4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9zY2FsZXMiOjYwNywiLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyI6NjkyLCIuLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4vYXJyYXkiOjcwMCwiLi9tb2QiOjcyNCwiLi9uZXN0ZWRfcHJvcGVydHkiOjcyNSwiLi9yZWdleCI6NzMzLCJmYXN0LWlzbnVtZXJpYyI6MjI4LHRpbnljb2xvcjI6NTM2fV0sNzA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGEsaT10KCJkMyIpLG89dCgiZmFzdC1pc251bWVyaWMiKSxzPXQoIi4vbG9nZ2VycyIpLGw9dCgiLi9tb2QiKS5tb2QsYz10KCIuLi9jb25zdGFudHMvbnVtZXJpY2FsIiksdT1jLkJBRE5VTSxoPWMuT05FREFZLGY9Yy5PTkVIT1VSLHA9Yy5PTkVNSU4sZD1jLk9ORVNFQyxnPWMuRVBPQ0hKRCx2PXQoIi4uL3JlZ2lzdHJ5IiksbT1pLnRpbWUuZm9ybWF0LnV0Yyx5PS9eXHMqKC0/XGRcZFxkXGR8XGRcZCkoLShcZD9cZCkoLShcZD9cZCkoWyBUdF0oWzAxXT9cZHwyWzAtM10pKDooWzAtNV1cZCkoOihbMC01XVxkKFwuXGQrKT8pKT8oWnx6fFsrXC1dXGRcZDo/XGRcZCk/KT8pPyk/KT9ccyokL20seD0vXlxzKigtP1xkXGRcZFxkfFxkXGQpKC0oXGQ/XGRpPykoLShcZD9cZCkoWyBUdF0oWzAxXT9cZHwyWzAtM10pKDooWzAtNV1cZCkoOihbMC01XVxkKFwuXGQrKT8pKT8oWnx6fFsrXC1dXGRcZDo/XGRcZCk/KT8pPyk/KT9ccyokL20sYj0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCktNzA7ZnVuY3Rpb24gXyh0KXtyZXR1cm4gdCYmdi5jb21wb25lbnRzUmVnaXN0cnkuY2FsZW5kYXJzJiYic3RyaW5nIj09dHlwZW9mIHQmJiJncmVnb3JpYW4iIT09dH1mdW5jdGlvbiB3KHQsZSl7cmV0dXJuIFN0cmluZyh0K01hdGgucG93KDEwLGUpKS5zdWJzdHIoMSl9ci5kYXRlVGljazA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gXyh0KT9lP3YuZ2V0Q29tcG9uZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJDQU5PTklDQUxfU1VOREFZIilbdF06di5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsIkNBTk9OSUNBTF9USUNLIilbdF06ZT8iMjAwMC0wMS0wMiI6IjIwMDAtMDEtMDEifSxyLmRmbHRSYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gXyh0KT92LmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiREZMVFJBTkdFIilbdF06WyIyMDAwLTAxLTAxIiwiMjAwMS0wMS0wMSJdfSxyLmlzSlNEYXRlPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldFRpbWV9LHIuZGF0ZVRpbWUybXM9ZnVuY3Rpb24odCxlKXtpZihyLmlzSlNEYXRlKHQpKXt2YXIgaT10LmdldFRpbWV6b25lT2Zmc2V0KCkqcCxvPSh0LmdldFVUQ01pbnV0ZXMoKS10LmdldE1pbnV0ZXMoKSkqcCsodC5nZXRVVENTZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkpKmQrKHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCktdC5nZXRNaWxsaXNlY29uZHMoKSk7aWYobyl7dmFyIHM9MypwO2k9aS1zLzIrbChvLWkrcy8yLHMpfXJldHVybih0PU51bWJlcih0KS1pKT49biYmdDw9YT90OnV9aWYoInN0cmluZyIhPXR5cGVvZiB0JiYibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIHU7dD1TdHJpbmcodCk7dmFyIGM9XyhlKSxtPXQuY2hhckF0KDApOyFjfHwiRyIhPT1tJiYiZyIhPT1tfHwodD10LnN1YnN0cigxKSxlPSIiKTt2YXIgdz1jJiYiY2hpbmVzZSI9PT1lLnN1YnN0cigwLDcpLGs9dC5tYXRjaCh3P3g6eSk7aWYoIWspcmV0dXJuIHU7dmFyIFQ9a1sxXSxNPWtbM118fCIxIixBPU51bWJlcihrWzVdfHwxKSxTPU51bWJlcihrWzddfHwwKSxFPU51bWJlcihrWzldfHwwKSxMPU51bWJlcihrWzExXXx8MCk7aWYoYyl7aWYoMj09PVQubGVuZ3RoKXJldHVybiB1O3ZhciBDO1Q9TnVtYmVyKFQpO3RyeXt2YXIgUD12LmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiZ2V0Q2FsIikoZSk7aWYodyl7dmFyIE89ImkiPT09TS5jaGFyQXQoTS5sZW5ndGgtMSk7TT1wYXJzZUludChNLDEwKSxDPVAubmV3RGF0ZShULFAudG9Nb250aEluZGV4KFQsTSxPKSxBKX1lbHNlIEM9UC5uZXdEYXRlKFQsTnVtYmVyKE0pLEEpfWNhdGNoKHQpe3JldHVybiB1fXJldHVybiBDPyhDLnRvSkQoKS1nKSpoK1MqZitFKnArTCpkOnV9VD0yPT09VC5sZW5ndGg/KE51bWJlcihUKSsyZTMtYiklMTAwK2I6TnVtYmVyKFQpLE0tPTE7dmFyIHo9bmV3IERhdGUoRGF0ZS5VVEMoMmUzLE0sQSxTLEUpKTtyZXR1cm4gei5zZXRVVENGdWxsWWVhcihUKSx6LmdldFVUQ01vbnRoKCkhPT1NP3U6ei5nZXRVVENEYXRlKCkhPT1BP3U6ei5nZXRUaW1lKCkrTCpkfSxuPXIuTUlOX01TPXIuZGF0ZVRpbWUybXMoIi05OTk5IiksYT1yLk1BWF9NUz1yLmRhdGVUaW1lMm1zKCI5OTk5LTEyLTMxIDIzOjU5OjU5Ljk5OTkiKSxyLmlzRGF0ZVRpbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5kYXRlVGltZTJtcyh0LGUpIT09dX07dmFyIGs9OTAqaCxUPTMqZixNPTUqcDtmdW5jdGlvbiBBKHQsZSxyLG4sYSl7aWYoKGV8fHJ8fG58fGEpJiYodCs9IiAiK3coZSwyKSsiOiIrdyhyLDIpLChufHxhKSYmKHQrPSI6Iit3KG4sMiksYSkpKXtmb3IodmFyIGk9NDthJTEwPT0wOylpLT0xLGEvPTEwO3QrPSIuIit3KGEsaSl9cmV0dXJuIHR9ci5tczJEYXRlVGltZT1mdW5jdGlvbih0LGUscil7aWYoIm51bWJlciIhPXR5cGVvZiB0fHwhKHQ+PW4mJnQ8PWEpKXJldHVybiB1O2V8fChlPTApO3ZhciBpLG8scyxjLHkseCxiPU1hdGguZmxvb3IoMTAqbCh0Ky4wNSwxKSksdz1NYXRoLnJvdW5kKHQtYi8xMCk7aWYoXyhyKSl7dmFyIFM9TWF0aC5mbG9vcih3L2gpK2csRT1NYXRoLmZsb29yKGwodCxoKSk7dHJ5e2k9di5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImdldENhbCIpKHIpLmZyb21KRChTKS5mb3JtYXREYXRlKCJ5eXl5LW1tLWRkIil9Y2F0Y2godCl7aT1tKCJHJVktJW0tJWQiKShuZXcgRGF0ZSh3KSl9aWYoIi0iPT09aS5jaGFyQXQoMCkpZm9yKDtpLmxlbmd0aDwxMTspaT0iLTAiK2kuc3Vic3RyKDEpO2Vsc2UgZm9yKDtpLmxlbmd0aDwxMDspaT0iMCIraTtvPWU8az9NYXRoLmZsb29yKEUvZik6MCxzPWU8az9NYXRoLmZsb29yKEUlZi9wKTowLGM9ZTxUP01hdGguZmxvb3IoRSVwL2QpOjAseT1lPE0/RSVkKjEwK2I6MH1lbHNlIHg9bmV3IERhdGUodyksaT1tKCIlWS0lbS0lZCIpKHgpLG89ZTxrP3guZ2V0VVRDSG91cnMoKTowLHM9ZTxrP3guZ2V0VVRDTWludXRlcygpOjAsYz1lPFQ/eC5nZXRVVENTZWNvbmRzKCk6MCx5PWU8TT8xMCp4LmdldFVUQ01pbGxpc2Vjb25kcygpK2I6MDtyZXR1cm4gQShpLG8scyxjLHkpfSxyLm1zMkRhdGVUaW1lTG9jYWw9ZnVuY3Rpb24odCl7aWYoISh0Pj1uK2gmJnQ8PWEtaCkpcmV0dXJuIHU7dmFyIGU9TWF0aC5mbG9vcigxMCpsKHQrLjA1LDEpKSxyPW5ldyBEYXRlKE1hdGgucm91bmQodC1lLzEwKSk7cmV0dXJuIEEoaS50aW1lLmZvcm1hdCgiJVktJW0tJWQiKShyKSxyLmdldEhvdXJzKCksci5nZXRNaW51dGVzKCksci5nZXRTZWNvbmRzKCksMTAqci5nZXRVVENNaWxsaXNlY29uZHMoKStlKX0sci5jbGVhbkRhdGU9ZnVuY3Rpb24odCxlLG4pe2lmKHQ9PT11KXJldHVybiBlO2lmKHIuaXNKU0RhdGUodCl8fCJudW1iZXIiPT10eXBlb2YgdCYmaXNGaW5pdGUodCkpe2lmKF8obikpcmV0dXJuIHMuZXJyb3IoIkpTIERhdGVzIGFuZCBtaWxsaXNlY29uZHMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHdvcmxkIGNhbGVuZGFycyIsdCksZTtpZighKHQ9ci5tczJEYXRlVGltZUxvY2FsKCt0KSkmJnZvaWQgMCE9PWUpcmV0dXJuIGV9ZWxzZSBpZighci5pc0RhdGVUaW1lKHQsbikpcmV0dXJuIHMuZXJyb3IoInVucmVjb2duaXplZCBkYXRlIix0KSxlO3JldHVybiB0fTt2YXIgUz0vJVxkP2YvZztmdW5jdGlvbiBFKHQsZSxyLG4pe3Q9dC5yZXBsYWNlKFMsZnVuY3Rpb24odCl7dmFyIHI9TWF0aC5taW4oK3QuY2hhckF0KDEpfHw2LDYpO3JldHVybihlLzFlMyUxKzIpLnRvRml4ZWQocikuc3Vic3RyKDIpLnJlcGxhY2UoLzArJC8sIiIpfHwiMCJ9KTt2YXIgYT1uZXcgRGF0ZShNYXRoLmZsb29yKGUrLjA1KSk7aWYoXyhuKSl0cnl7dD12LmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwid29ybGRDYWxGbXQiKSh0LGUsbil9Y2F0Y2godCl7cmV0dXJuIkludmFsaWQifXJldHVybiByKHQpKGEpfXZhciBMPVs1OSw1OS45LDU5Ljk5LDU5Ljk5OSw1OS45OTk5XTtyLmZvcm1hdERhdGU9ZnVuY3Rpb24odCxlLHIsbixhLGkpe2lmKGE9XyhhKSYmYSwhZSlpZigieSI9PT1yKWU9aS55ZWFyO2Vsc2UgaWYoIm0iPT09cillPWkubW9udGg7ZWxzZXtpZigiZCIhPT1yKXJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPWwodCsuMDUsaCksbj13KE1hdGguZmxvb3Ioci9mKSwyKSsiOiIrdyhsKE1hdGguZmxvb3Ioci9wKSw2MCksMik7aWYoIk0iIT09ZSl7byhlKXx8KGU9MCk7dmFyIGE9KDEwMCtNYXRoLm1pbihsKHQvZCw2MCksTFtlXSkpLnRvRml4ZWQoZSkuc3Vic3RyKDEpO2U+MCYmKGE9YS5yZXBsYWNlKC8wKyQvLCIiKS5yZXBsYWNlKC9bXC5dJC8sIiIpKSxuKz0iOiIrYX1yZXR1cm4gbn0odCxyKSsiXG4iK0UoaS5kYXlNb250aFllYXIsdCxuLGEpO2U9aS5kYXlNb250aCsiXG4iK2kueWVhcn1yZXR1cm4gRShlLHQsbixhKX07dmFyIEM9MypoO3IuaW5jcmVtZW50TW9udGg9ZnVuY3Rpb24odCxlLHIpe3I9XyhyKSYmcjt2YXIgbj1sKHQsaCk7aWYodD1NYXRoLnJvdW5kKHQtbikscil0cnl7dmFyIGE9TWF0aC5yb3VuZCh0L2gpK2csaT12LmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiZ2V0Q2FsIikociksbz1pLmZyb21KRChhKTtyZXR1cm4gZSUxMj9pLmFkZChvLGUsIm0iKTppLmFkZChvLGUvMTIsInkiKSwoby50b0pEKCktZykqaCtufWNhdGNoKGUpe3MuZXJyb3IoImludmFsaWQgbXMgIit0KyIgaW4gY2FsZW5kYXIgIityKX12YXIgYz1uZXcgRGF0ZSh0K0MpO3JldHVybiBjLnNldFVUQ01vbnRoKGMuZ2V0VVRDTW9udGgoKStlKStuLUN9LHIuZmluZEV4YWN0RGF0ZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbixhPTAsaT0wLHM9MCxsPTAsYz1fKGUpJiZ2LmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiZ2V0Q2FsIikoZSksdT0wO3U8dC5sZW5ndGg7dSsrKWlmKG49dFt1XSxvKG4pKXtpZighKG4laCkpaWYoYyl0cnl7MT09PShyPWMuZnJvbUpEKG4vaCtnKSkuZGF5KCk/MT09PXIubW9udGgoKT9hKys6aSsrOnMrK31jYXRjaCh0KXt9ZWxzZSAxPT09KHI9bmV3IERhdGUobikpLmdldFVUQ0RhdGUoKT8wPT09ci5nZXRVVENNb250aCgpP2ErKzppKys6cysrfWVsc2UgbCsrO3MrPWkrPWE7dmFyIGY9dC5sZW5ndGgtbDtyZXR1cm57ZXhhY3RZZWFyczphL2YsZXhhY3RNb250aHM6aS9mLGV4YWN0RGF5czpzL2Z9fX0seyIuLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uL3JlZ2lzdHJ5Ijo4NDYsIi4vbG9nZ2VycyI6NzIxLCIuL21vZCI6NzI0LGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDcwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi9sb2dnZXJzIik7ZnVuY3Rpb24gaSh0KXt2YXIgZT10JiZ0LnBhcmVudE5vZGU7ZSYmZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBvKHQsZSxyKXt2YXIgbj0icGxvdGx5LmpzLXN0eWxlLSIrdCxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pO2l8fCgoaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpKS5zZXRBdHRyaWJ1dGUoImlkIixuKSxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChpKSk7dmFyIG89aS5zaGVldDtvLmluc2VydFJ1bGU/by5pbnNlcnRSdWxlKGUrInsiK3IrIn0iLDApOm8uYWRkUnVsZT9vLmFkZFJ1bGUoZSxyLDApOmEud2FybigiYWRkU3R5bGVSdWxlIGZhaWxlZCIpfWUuZXhwb3J0cz17Z2V0R3JhcGhEaXY6ZnVuY3Rpb24odCl7dmFyIGU7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZihudWxsPT09KGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCkpKXRocm93IG5ldyBFcnJvcigiTm8gRE9NIGVsZW1lbnQgd2l0aCBpZCAnIit0KyInIGV4aXN0cyBvbiB0aGUgcGFnZS4iKTtyZXR1cm4gZX1pZihudWxsPT10KXRocm93IG5ldyBFcnJvcigiRE9NIGVsZW1lbnQgcHJvdmlkZWQgaXMgbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdH0saXNQbG90RGl2OmZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHQpO3JldHVybiBlLm5vZGUoKWluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJmUuc2l6ZSgpJiZlLmNsYXNzZWQoImpzLXBsb3RseS1wbG90Iil9LHJlbW92ZUVsZW1lbnQ6aSxhZGRTdHlsZVJ1bGU6ZnVuY3Rpb24odCxlKXtvKCJnbG9iYWwiLHQsZSl9LGFkZFJlbGF0ZWRTdHlsZVJ1bGU6byxkZWxldGVSZWxhdGVkU3R5bGVSdWxlOmZ1bmN0aW9uKHQpe3ZhciBlPSJwbG90bHkuanMtc3R5bGUtIit0LHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7ciYmaShyKX19fSx7Ii4vbG9nZ2VycyI6NzIxLGQzOjE2NX1dLDcwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJldmVudHMiKS5FdmVudEVtaXR0ZXIsYT17aW5pdDpmdW5jdGlvbih0KXtpZih0Ll9ldiBpbnN0YW5jZW9mIG4pcmV0dXJuIHQ7dmFyIGU9bmV3IG4scj1uZXcgbjtyZXR1cm4gdC5fZXY9ZSx0Ll9pbnRlcm5hbEV2PXIsdC5vbj1lLm9uLmJpbmQoZSksdC5vbmNlPWUub25jZS5iaW5kKGUpLHQucmVtb3ZlTGlzdGVuZXI9ZS5yZW1vdmVMaXN0ZW5lci5iaW5kKGUpLHQucmVtb3ZlQWxsTGlzdGVuZXJzPWUucmVtb3ZlQWxsTGlzdGVuZXJzLmJpbmQoZSksdC5faW50ZXJuYWxPbj1yLm9uLmJpbmQociksdC5faW50ZXJuYWxPbmNlPXIub25jZS5iaW5kKHIpLHQuX3JlbW92ZUludGVybmFsTGlzdGVuZXI9ci5yZW1vdmVMaXN0ZW5lci5iaW5kKHIpLHQuX3JlbW92ZUFsbEludGVybmFsTGlzdGVuZXJzPXIucmVtb3ZlQWxsTGlzdGVuZXJzLmJpbmQociksdC5lbWl0PWZ1bmN0aW9uKG4sYSl7InVuZGVmaW5lZCIhPXR5cGVvZiBqUXVlcnkmJmpRdWVyeSh0KS50cmlnZ2VyKG4sYSksZS5lbWl0KG4sYSksci5lbWl0KG4sYSl9LHR9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhOyJ1bmRlZmluZWQiIT10eXBlb2YgalF1ZXJ5JiYobj1qUXVlcnkodCkudHJpZ2dlckhhbmRsZXIoZSxyKSk7dmFyIGk9dC5fZXY7aWYoIWkpcmV0dXJuIG47dmFyIG8scz1pLl9ldmVudHNbZV07aWYoIXMpcmV0dXJuIG47ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdC5saXN0ZW5lcj8oaS5yZW1vdmVMaXN0ZW5lcihlLHQubGlzdGVuZXIpLHQuZmlyZWQ/dm9pZCAwOih0LmZpcmVkPSEwLHQubGlzdGVuZXIuYXBwbHkoaSxbcl0pKSk6dC5hcHBseShpLFtyXSl9Zm9yKHM9QXJyYXkuaXNBcnJheShzKT9zOltzXSxvPTA7bzxzLmxlbmd0aC0xO28rKylsKHNbb10pO3JldHVybiBhPWwoc1tvXSksdm9pZCAwIT09bj9uOmF9LHB1cmdlOmZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdC5fZXYsZGVsZXRlIHQub24sZGVsZXRlIHQub25jZSxkZWxldGUgdC5yZW1vdmVMaXN0ZW5lcixkZWxldGUgdC5yZW1vdmVBbGxMaXN0ZW5lcnMsZGVsZXRlIHQuZW1pdCxkZWxldGUgdC5fZXYsZGVsZXRlIHQuX2ludGVybmFsRXYsZGVsZXRlIHQuX2ludGVybmFsT24sZGVsZXRlIHQuX2ludGVybmFsT25jZSxkZWxldGUgdC5fcmVtb3ZlSW50ZXJuYWxMaXN0ZW5lcixkZWxldGUgdC5fcmVtb3ZlQWxsSW50ZXJuYWxMaXN0ZW5lcnMsdH19O2UuZXhwb3J0cz1hfSx7ZXZlbnRzOjEwNn1dLDcwODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzX3BsYWluX29iamVjdC5qcyIpLGE9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBpKHQsZSxyLG8pe3ZhciBzLGwsYyx1LGgsZixwPXRbMF0sZD10Lmxlbmd0aDtpZigyPT09ZCYmYShwKSYmYSh0WzFdKSYmMD09PXAubGVuZ3RoKXtpZihmdW5jdGlvbih0LGUpe3ZhciByLG47Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7aWYobnVsbCE9PShuPXRbcl0pJiYib2JqZWN0Ij09dHlwZW9mIG4pcmV0dXJuITE7dm9pZCAwIT09biYmKGVbcl09bil9cmV0dXJuITB9KHRbMV0scCkpcmV0dXJuIHA7cC5zcGxpY2UoMCxwLmxlbmd0aCl9Zm9yKHZhciBnPTE7ZzxkO2crKylmb3IobCBpbiBzPXRbZ10pYz1wW2xdLHU9c1tsXSxvJiZhKHUpP3BbbF09dTplJiZ1JiYobih1KXx8KGg9YSh1KSkpPyhoPyhoPSExLGY9YyYmYShjKT9jOltdKTpmPWMmJm4oYyk/Yzp7fSxwW2xdPWkoW2YsdV0sZSxyLG8pKTooInVuZGVmaW5lZCIhPXR5cGVvZiB1fHxyKSYmKHBbbF09dSk7cmV0dXJuIHB9ci5leHRlbmRGbGF0PWZ1bmN0aW9uKCl7cmV0dXJuIGkoYXJndW1lbnRzLCExLCExLCExKX0sci5leHRlbmREZWVwPWZ1bmN0aW9uKCl7cmV0dXJuIGkoYXJndW1lbnRzLCEwLCExLCExKX0sci5leHRlbmREZWVwQWxsPWZ1bmN0aW9uKCl7cmV0dXJuIGkoYXJndW1lbnRzLCEwLCEwLCExKX0sci5leHRlbmREZWVwTm9BcnJheXM9ZnVuY3Rpb24oKXtyZXR1cm4gaShhcmd1bWVudHMsITAsITEsITApfX0seyIuL2lzX3BsYWluX29iamVjdC5qcyI6NzE4fV0sNzA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9e30scj1bXSxuPTAsYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgaT10W2FdOzEhPT1lW2ldJiYoZVtpXT0xLHJbbisrXT1pKX1yZXR1cm4gcn19LHt9XSw3MTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4hMD09PXQudmlzaWJsZX1mdW5jdGlvbiBhKHQpe3ZhciBlPXRbMF0udHJhY2U7cmV0dXJuITA9PT1lLnZpc2libGUmJjAhPT1lLl9sZW5ndGh9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPShlPXQsQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheShlWzBdKSYmZVswXVswXSYmZVswXVswXS50cmFjZT9hOm4pLGk9W10sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz10W29dO3IocykmJmkucHVzaChzKX1yZXR1cm4gaX19LHt9XSw3MTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImNvdW50cnktcmVnZXgiKSxpPXQoIkB0dXJmL2FyZWEiKSxvPXQoIkB0dXJmL2NlbnRyb2lkIikscz10KCJAdHVyZi9iYm94IiksbD10KCIuL2lkZW50aXR5IiksYz10KCIuL2xvZ2dlcnMiKSx1PXQoIi4vaXNfcGxhaW5fb2JqZWN0IiksaD10KCIuL25lc3RlZF9wcm9wZXJ0eSIpLGY9dCgiLi9wb2x5Z29uIikscD1PYmplY3Qua2V5cyhhKSxkPXsiSVNPLTMiOmwsIlVTQS1zdGF0ZXMiOmwsImNvdW50cnkgbmFtZXMiOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8cC5sZW5ndGg7ZSsrKXt2YXIgcj1wW2VdLG49bmV3IFJlZ0V4cChhW3JdKTtpZihuLnRlc3QodC50cmltKCkudG9Mb3dlckNhc2UoKSkpcmV0dXJuIHJ9cmV0dXJuIGMubG9nKCJVbnJlY29nbml6ZWQgY291bnRyeSBuYW1lOiAiK3QrIi4iKSwhMX19O2Z1bmN0aW9uIGcodCl7dmFyIGU9dC5nZW9qc29uLHI9d2luZG93LlBsb3RseUdlb0Fzc2V0c3x8e30sbj0ic3RyaW5nIj09dHlwZW9mIGU/cltlXTplO3JldHVybiB1KG4pP246KGMuZXJyb3IoIk9vcHMgLi4uIHNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4gZmV0Y2hpbmcgIitlKSwhMSl9ZS5leHBvcnRzPXtsb2NhdGlvblRvRmVhdHVyZTpmdW5jdGlvbih0LGUscil7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4hMTt2YXIgbixhLGksbz1kW3RdKGUpO2lmKG8pe2lmKCJVU0Etc3RhdGVzIj09PXQpZm9yKG49W10saT0wO2k8ci5sZW5ndGg7aSsrKShhPXJbaV0pLnByb3BlcnRpZXMmJmEucHJvcGVydGllcy5ndSYmIlVTQSI9PT1hLnByb3BlcnRpZXMuZ3UmJm4ucHVzaChhKTtlbHNlIG49cjtmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKWlmKChhPW5baV0pLmlkPT09bylyZXR1cm4gYTtjLmxvZyhbIkxvY2F0aW9uIHdpdGggaWQiLG8sImRvZXMgbm90IGhhdmUgYSBtYXRjaGluZyB0b3BvanNvbiBmZWF0dXJlIGF0IHRoaXMgcmVzb2x1dGlvbi4iXS5qb2luKCIgIikpfXJldHVybiExfSxmZWF0dXJlMnBvbHlnb25zOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhLGk9dC5nZW9tZXRyeSxvPWkuY29vcmRpbmF0ZXMscz10LmlkLGw9W107ZnVuY3Rpb24gYyh0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoLTE7ZSsrKWlmKHRbZV1bMF0+MCYmdFtlKzFdWzBdPDApcmV0dXJuIGU7cmV0dXJuIG51bGx9c3dpdGNoKGU9IlJVUyI9PT1zfHwiRkpJIj09PXM/ZnVuY3Rpb24odCl7dmFyIGU7aWYobnVsbD09PWModCkpZT10O2Vsc2UgZm9yKGU9bmV3IEFycmF5KHQubGVuZ3RoKSxhPTA7YTx0Lmxlbmd0aDthKyspZVthXT1bdFthXVswXTwwP3RbYV1bMF0rMzYwOnRbYV1bMF0sdFthXVsxXV07bC5wdXNoKGYudGVzdGVyKGUpKX06IkFUQSI9PT1zP2Z1bmN0aW9uKHQpe3ZhciBlPWModCk7aWYobnVsbD09PWUpcmV0dXJuIGwucHVzaChmLnRlc3Rlcih0KSk7dmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoKzEpLG49MDtmb3IoYT0wO2E8dC5sZW5ndGg7YSsrKWE+ZT9yW24rK109W3RbYV1bMF0rMzYwLHRbYV1bMV1dOmE9PT1lPyhyW24rK109dFthXSxyW24rK109W3RbYV1bMF0sLTkwXSk6cltuKytdPXRbYV07dmFyIGk9Zi50ZXN0ZXIocik7aS5wdHMucG9wKCksbC5wdXNoKGkpfTpmdW5jdGlvbih0KXtsLnB1c2goZi50ZXN0ZXIodCkpfSxpLnR5cGUpe2Nhc2UiTXVsdGlQb2x5Z29uIjpmb3Iocj0wO3I8by5sZW5ndGg7cisrKWZvcihuPTA7bjxvW3JdLmxlbmd0aDtuKyspZShvW3JdW25dKTticmVhaztjYXNlIlBvbHlnb24iOmZvcihyPTA7cjxvLmxlbmd0aDtyKyspZShvW3JdKX1yZXR1cm4gbH0sZ2V0VHJhY2VHZW9qc29uOmcsZXh0cmFjdFRyYWNlRmVhdHVyZTpmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9ZyhlKTtpZighcilyZXR1cm4hMTt2YXIgbixhPXt9LHM9W107Zm9yKG49MDtuPGUuX2xlbmd0aDtuKyspe3ZhciBsPXRbbl07KGwubG9jfHwwPT09bC5sb2MpJiYoYVtsLmxvY109bCl9ZnVuY3Rpb24gdSh0KXt2YXIgcj1oKHQsZS5mZWF0dXJlaWRrZXl8fCJpZCIpLmdldCgpLG49YVtyXTtpZihuKXt2YXIgbD10Lmdlb21ldHJ5O2lmKCJQb2x5Z29uIj09PWwudHlwZXx8Ik11bHRpUG9seWdvbiI9PT1sLnR5cGUpe3ZhciB1PXt0eXBlOiJGZWF0dXJlIixpZDpyLGdlb21ldHJ5OmwscHJvcGVydGllczp7fX07dS5wcm9wZXJ0aWVzLmN0PWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5nZW9tZXRyeTtpZigiTXVsdGlQb2x5Z29uIj09PXIudHlwZSlmb3IodmFyIG49ci5jb29yZGluYXRlcyxhPTAscz0wO3M8bi5sZW5ndGg7cysrKXt2YXIgbD17dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6bltzXX0sYz1pLmRlZmF1bHQobCk7Yz5hJiYoYT1jLGU9bCl9ZWxzZSBlPXI7cmV0dXJuIG8uZGVmYXVsdChlKS5nZW9tZXRyeS5jb29yZGluYXRlc30odSksbi5mSW49dCxuLmZPdXQ9dSxzLnB1c2godSl9ZWxzZSBjLmxvZyhbIkxvY2F0aW9uIixuLmxvYywiZG9lcyBub3QgaGF2ZSBhIHZhbGlkIEdlb0pTT04gZ2VvbWV0cnkuIiwiVHJhY2VzIHdpdGggbG9jYXRpb25tb2RlICpnZW9qc29uLWlkKiBvbmx5IHN1cHBvcnQiLCIqUG9seWdvbiogYW5kICpNdWx0aVBvbHlnb24qIGdlb21ldHJpZXMuIl0uam9pbigiICIpKX1kZWxldGUgYVtyXX1zd2l0Y2goci50eXBlKXtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjp2YXIgZj1yLmZlYXR1cmVzO2ZvcihuPTA7bjxmLmxlbmd0aDtuKyspdShmW25dKTticmVhaztjYXNlIkZlYXR1cmUiOnUocik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gYy53YXJuKFsiSW52YWxpZCBHZW9KU09OIHR5cGUiLChyLnR5cGV8fCJub25lIikrIi4iLCJUcmFjZXMgd2l0aCBsb2NhdGlvbm1vZGUgKmdlb2pzb24taWQqIG9ubHkgc3VwcG9ydCIsIipGZWF0dXJlQ29sbGVjdGlvbiogYW5kICpGZWF0dXJlKiB0eXBlcy4iXS5qb2luKCIgIikpLCExfWZvcih2YXIgcCBpbiBhKWMubG9nKFsiTG9jYXRpb24gKiIrcCsiKiIsImRvZXMgbm90IGhhdmUgYSBtYXRjaGluZyBmZWF0dXJlIHdpdGggaWQta2V5IiwiKiIrZS5mZWF0dXJlaWRrZXkrIiouIl0uam9pbigiICIpKTtyZXR1cm4gc30sZmV0Y2hUcmFjZUdlb0RhdGE6ZnVuY3Rpb24odCl7dmFyIGU9d2luZG93LlBsb3RseUdlb0Fzc2V0c3x8e30scj1bXTtmdW5jdGlvbiBhKHQpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLGEpe24uanNvbih0LGZ1bmN0aW9uKG4saSl7aWYobil7ZGVsZXRlIGVbdF07dmFyIG89NDA0PT09bi5zdGF0dXM/J0dlb0pTT04gYXQgVVJMICInK3QrJyIgZG9lcyBub3QgZXhpc3QuJzoiVW5leHBlY3RlZCBlcnJvciB3aGlsZSBmZXRjaGluZyBmcm9tICIrdDtyZXR1cm4gYShuZXcgRXJyb3IobykpfXJldHVybiBlW3RdPWkscihpKX0pfSl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixuKXt2YXIgYT0wLGk9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtyZXR1cm4gZVt0XSYmInBlbmRpbmciIT09ZVt0XT8oY2xlYXJJbnRlcnZhbChpKSxyKGVbdF0pKTphPjEwMD8oY2xlYXJJbnRlcnZhbChpKSxuKCJVbmV4cGVjdGVkIGVycm9yIHdoaWxlIGZldGNoaW5nIGZyb20gIit0KSk6dm9pZCBhKyt9LDUwKX0pfWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz10W29dWzBdLnRyYWNlLmdlb2pzb247InN0cmluZyI9PXR5cGVvZiBzJiYoZVtzXT8icGVuZGluZyI9PT1lW3NdJiZyLnB1c2goaShzKSk6KGVbc109InBlbmRpbmciLHIucHVzaChhKHMpKSkpfXJldHVybiByfSxjb21wdXRlQmJveDpmdW5jdGlvbih0KXtyZXR1cm4gcy5kZWZhdWx0KHQpfX19LHsiLi9pZGVudGl0eSI6NzE2LCIuL2lzX3BsYWluX29iamVjdCI6NzE4LCIuL2xvZ2dlcnMiOjcyMSwiLi9uZXN0ZWRfcHJvcGVydHkiOjcyNSwiLi9wb2x5Z29uIjo3MjksIkB0dXJmL2FyZWEiOjU3LCJAdHVyZi9iYm94Ijo1OCwiQHR1cmYvY2VudHJvaWQiOjU5LCJjb3VudHJ5LXJlZ2V4IjoxMzYsZDM6MTY1fV0sNzEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU07ci5jYWxjVHJhY2VUb0xpbmVDb29yZHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRbMF0udHJhY2UuY29ubmVjdGdhcHMscj1bXSxhPVtdLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXS5sb25sYXQ7b1swXSE9PW4/YS5wdXNoKG8pOiFlJiZhLmxlbmd0aD4wJiYoci5wdXNoKGEpLGE9W10pfXJldHVybiBhLmxlbmd0aD4wJiZyLnB1c2goYSkscn0sci5tYWtlTGluZT1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXQubGVuZ3RoP3t0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0WzBdfTp7dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fX0sci5tYWtlUG9seWdvbj1mdW5jdGlvbih0KXtpZigxPT09dC5sZW5ndGgpcmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOnR9O2Zvcih2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9MDtyPHQubGVuZ3RoO3IrKyllW3JdPVt0W3JdXTtyZXR1cm57dHlwZToiTXVsdGlQb2x5Z29uIixjb29yZGluYXRlczplfX0sci5tYWtlQmxhbms9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVzOltdfX19LHsiLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzfV0sNzEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGEsaSxvPXQoIi4vbW9kIikubW9kO2Z1bmN0aW9uIHModCxlLHIsbixhLGksbyxzKXt2YXIgbD1yLXQsYz1hLXQsdT1vLWEsaD1uLWUsZj1pLWUscD1zLWksZD1sKnAtdSpoO2lmKDA9PT1kKXJldHVybiBudWxsO3ZhciBnPShjKnAtdSpmKS9kLHY9KGMqaC1sKmYpL2Q7cmV0dXJuIHY8MHx8dj4xfHxnPDB8fGc+MT9udWxsOnt4OnQrbCpnLHk6ZStoKmd9fWZ1bmN0aW9uIGwodCxlLHIsbixhKXt2YXIgaT1uKnQrYSplO2lmKGk8MClyZXR1cm4gbipuK2EqYTtpZihpPnIpe3ZhciBvPW4tdCxzPWEtZTtyZXR1cm4gbypvK3Mqc312YXIgbD1uKmUtYSp0O3JldHVybiBsKmwvcn1yLnNlZ21lbnRzSW50ZXJzZWN0PXMsci5zZWdtZW50RGlzdGFuY2U9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxjKXtpZihzKHQsZSxyLG4sYSxpLG8sYykpcmV0dXJuIDA7dmFyIHU9ci10LGg9bi1lLGY9by1hLHA9Yy1pLGQ9dSp1K2gqaCxnPWYqZitwKnAsdj1NYXRoLm1pbihsKHUsaCxkLGEtdCxpLWUpLGwodSxoLGQsby10LGMtZSksbChmLHAsZyx0LWEsZS1pKSxsKGYscCxnLHItYSxuLWkpKTtyZXR1cm4gTWF0aC5zcXJ0KHYpfSxyLmdldFRleHRMb2NhdGlvbj1mdW5jdGlvbih0LGUscixzKXtpZih0PT09YSYmcz09PWl8fChuPXt9LGE9dCxpPXMpLG5bcl0pcmV0dXJuIG5bcl07dmFyIGw9dC5nZXRQb2ludEF0TGVuZ3RoKG8oci1zLzIsZSkpLGM9dC5nZXRQb2ludEF0TGVuZ3RoKG8ocitzLzIsZSkpLHU9TWF0aC5hdGFuKChjLnktbC55KS8oYy54LWwueCkpLGg9dC5nZXRQb2ludEF0TGVuZ3RoKG8ocixlKSksZj17eDooNCpoLngrbC54K2MueCkvNix5Oig0KmgueStsLnkrYy55KS82LHRoZXRhOnV9O3JldHVybiBuW3JdPWYsZn0sci5jbGVhckxvY2F0aW9uQ2FjaGU9ZnVuY3Rpb24oKXthPW51bGx9LHIuZ2V0VmlzaWJsZVNlZ21lbnQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaT1lLmxlZnQsbz1lLnJpZ2h0LHM9ZS50b3AsbD1lLmJvdHRvbSxjPTAsdT10LmdldFRvdGFsTGVuZ3RoKCksaD11O2Z1bmN0aW9uIGYoZSl7dmFyIHI9dC5nZXRQb2ludEF0TGVuZ3RoKGUpOzA9PT1lP249cjplPT09dSYmKGE9cik7dmFyIGM9ci54PGk/aS1yLng6ci54Pm8/ci54LW86MCxoPXIueTxzP3Mtci55OnIueT5sP3IueS1sOjA7cmV0dXJuIE1hdGguc3FydChjKmMraCpoKX1mb3IodmFyIHA9ZihjKTtwOyl7aWYoKGMrPXArcik+aClyZXR1cm47cD1mKGMpfWZvcihwPWYoaCk7cDspe2lmKGM+KGgtPXArcikpcmV0dXJuO3A9ZihoKX1yZXR1cm57bWluOmMsbWF4OmgsbGVuOmgtYyx0b3RhbDp1LGlzQ2xvc2VkOjA9PT1jJiZoPT09dSYmTWF0aC5hYnMobi54LWEueCk8LjEmJk1hdGguYWJzKG4ueS1hLnkpPC4xfX0sci5maW5kUG9pbnRPblBhdGg9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhLGksbyxzPShuPW58fHt9KS5wYXRoTGVuZ3RofHx0LmdldFRvdGFsTGVuZ3RoKCksbD1uLnRvbGVyYW5jZXx8LjAwMSxjPW4uaXRlcmF0aW9uTGltaXR8fDMwLHU9dC5nZXRQb2ludEF0TGVuZ3RoKDApW3JdPnQuZ2V0UG9pbnRBdExlbmd0aChzKVtyXT8tMToxLGg9MCxmPTAscD1zO2g8Yzspe2lmKGE9KGYrcCkvMixvPShpPXQuZ2V0UG9pbnRBdExlbmd0aChhKSlbcl0tZSxNYXRoLmFicyhvKTxsKXJldHVybiBpO3Uqbz4wP3A9YTpmPWEsaCsrfXJldHVybiBpfX0seyIuL21vZCI6NzI0fV0sNzE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCJ0aW55Y29sb3IyIiksaT10KCJjb2xvci1ub3JtYWxpemUiKSxvPXQoIi4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLHM9dCgiLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIikuZGVmYXVsdExpbmUsbD10KCIuL2FycmF5IikuaXNBcnJheU9yVHlwZWRBcnJheSxjPWkocyksdT0xO2Z1bmN0aW9uIGgodCxlKXt2YXIgcj10O3JldHVybiByWzNdKj1lLHJ9ZnVuY3Rpb24gZih0KXtpZihuKHQpKXJldHVybiBjO3ZhciBlPWkodCk7cmV0dXJuIGUubGVuZ3RoP2U6Y31mdW5jdGlvbiBwKHQpe3JldHVybiBuKHQpP3Q6dX1lLmV4cG9ydHM9e2Zvcm1hdENvbG9yOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLHMsZCxnLHY9dC5jb2xvcixtPWwodikseT1sKGUpLHg9by5leHRyYWN0T3B0cyh0KSxiPVtdO2lmKG49dm9pZCAwIT09eC5jb2xvcnNjYWxlP28ubWFrZUNvbG9yU2NhbGVGdW5jRnJvbVRyYWNlKHQpOmYsYT1tP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXRbZV0/YzppKG4odFtlXSkpfTpmLHM9eT9mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10W2VdP3U6cCh0W2VdKX06cCxtfHx5KWZvcih2YXIgXz0wO188cjtfKyspZD1hKHYsXyksZz1zKGUsXyksYltfXT1oKGQsZyk7ZWxzZSBiPWgoaSh2KSxlKTtyZXR1cm4gYn0scGFyc2VDb2xvclNjYWxlOmZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9MSk7dmFyIHI9by5leHRyYWN0T3B0cyh0KTtyZXR1cm4oci5yZXZlcnNlc2NhbGU/by5mbGlwU2NhbGUoci5jb2xvcnNjYWxlKTpyLmNvbG9yc2NhbGUpLm1hcChmdW5jdGlvbih0KXt2YXIgcj10WzBdLG49YSh0WzFdKS50b1JnYigpO3JldHVybntpbmRleDpyLHJnYjpbbi5yLG4uZyxuLmIsZV19fSl9fX0seyIuLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4vYXJyYXkiOjcwMCwiY29sb3Itbm9ybWFsaXplIjoxMjIsImZhc3QtaXNudW1lcmljIjoyMjgsdGlueWNvbG9yMjo1MzZ9XSw3MTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pZGVudGl0eSIpO2Z1bmN0aW9uIGEodCl7cmV0dXJuW3RdfWUuZXhwb3J0cz17a2V5RnVuOmZ1bmN0aW9uKHQpe3JldHVybiB0LmtleX0scmVwZWF0OmEsZGVzY2VuZDpuLHdyYXA6YSx1bndyYXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRbMF19fX0seyIuL2lkZW50aXR5Ijo3MTZ9XSw3MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0fX0se31dLDcxNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwiKSxvPWkuRlBfU0FGRSxzPWkuQkFETlVNLGw9ZS5leHBvcnRzPXt9O2wubmVzdGVkUHJvcGVydHk9dCgiLi9uZXN0ZWRfcHJvcGVydHkiKSxsLmtleWVkQ29udGFpbmVyPXQoIi4va2V5ZWRfY29udGFpbmVyIiksbC5yZWxhdGl2ZUF0dHI9dCgiLi9yZWxhdGl2ZV9hdHRyIiksbC5pc1BsYWluT2JqZWN0PXQoIi4vaXNfcGxhaW5fb2JqZWN0IiksbC50b0xvZ1JhbmdlPXQoIi4vdG9fbG9nX3JhbmdlIiksbC5yZWxpbmtQcml2YXRlS2V5cz10KCIuL3JlbGlua19wcml2YXRlIik7dmFyIGM9dCgiLi9hcnJheSIpO2wuaXNUeXBlZEFycmF5PWMuaXNUeXBlZEFycmF5LGwuaXNBcnJheU9yVHlwZWRBcnJheT1jLmlzQXJyYXlPclR5cGVkQXJyYXksbC5pc0FycmF5MUQ9Yy5pc0FycmF5MUQsbC5lbnN1cmVBcnJheT1jLmVuc3VyZUFycmF5LGwuY29uY2F0PWMuY29uY2F0LGwubWF4Um93TGVuZ3RoPWMubWF4Um93TGVuZ3RoLGwubWluUm93TGVuZ3RoPWMubWluUm93TGVuZ3RoO3ZhciB1PXQoIi4vbW9kIik7bC5tb2Q9dS5tb2QsbC5tb2RIYWxmPXUubW9kSGFsZjt2YXIgaD10KCIuL2NvZXJjZSIpO2wudmFsT2JqZWN0TWV0YT1oLnZhbE9iamVjdE1ldGEsbC5jb2VyY2U9aC5jb2VyY2UsbC5jb2VyY2UyPWguY29lcmNlMixsLmNvZXJjZUZvbnQ9aC5jb2VyY2VGb250LGwuY29lcmNlSG92ZXJpbmZvPWguY29lcmNlSG92ZXJpbmZvLGwuY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eT1oLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHksbC52YWxpZGF0ZT1oLnZhbGlkYXRlO3ZhciBmPXQoIi4vZGF0ZXMiKTtsLmRhdGVUaW1lMm1zPWYuZGF0ZVRpbWUybXMsbC5pc0RhdGVUaW1lPWYuaXNEYXRlVGltZSxsLm1zMkRhdGVUaW1lPWYubXMyRGF0ZVRpbWUsbC5tczJEYXRlVGltZUxvY2FsPWYubXMyRGF0ZVRpbWVMb2NhbCxsLmNsZWFuRGF0ZT1mLmNsZWFuRGF0ZSxsLmlzSlNEYXRlPWYuaXNKU0RhdGUsbC5mb3JtYXREYXRlPWYuZm9ybWF0RGF0ZSxsLmluY3JlbWVudE1vbnRoPWYuaW5jcmVtZW50TW9udGgsbC5kYXRlVGljazA9Zi5kYXRlVGljazAsbC5kZmx0UmFuZ2U9Zi5kZmx0UmFuZ2UsbC5maW5kRXhhY3REYXRlcz1mLmZpbmRFeGFjdERhdGVzLGwuTUlOX01TPWYuTUlOX01TLGwuTUFYX01TPWYuTUFYX01TO3ZhciBwPXQoIi4vc2VhcmNoIik7bC5maW5kQmluPXAuZmluZEJpbixsLnNvcnRlckFzYz1wLnNvcnRlckFzYyxsLnNvcnRlckRlcz1wLnNvcnRlckRlcyxsLmRpc3RpbmN0VmFscz1wLmRpc3RpbmN0VmFscyxsLnJvdW5kVXA9cC5yb3VuZFVwLGwuc29ydD1wLnNvcnQsbC5maW5kSW5kZXhPZk1pbj1wLmZpbmRJbmRleE9mTWluO3ZhciBkPXQoIi4vc3RhdHMiKTtsLmFnZ051bXM9ZC5hZ2dOdW1zLGwubGVuPWQubGVuLGwubWVhbj1kLm1lYW4sbC5tZWRpYW49ZC5tZWRpYW4sbC5taWRSYW5nZT1kLm1pZFJhbmdlLGwudmFyaWFuY2U9ZC52YXJpYW5jZSxsLnN0ZGV2PWQuc3RkZXYsbC5pbnRlcnA9ZC5pbnRlcnA7dmFyIGc9dCgiLi9tYXRyaXgiKTtsLmluaXQyZEFycmF5PWcuaW5pdDJkQXJyYXksbC50cmFuc3Bvc2VSYWdnZWQ9Zy50cmFuc3Bvc2VSYWdnZWQsbC5kb3Q9Zy5kb3QsbC50cmFuc2xhdGlvbk1hdHJpeD1nLnRyYW5zbGF0aW9uTWF0cml4LGwucm90YXRpb25NYXRyaXg9Zy5yb3RhdGlvbk1hdHJpeCxsLnJvdGF0aW9uWFlNYXRyaXg9Zy5yb3RhdGlvblhZTWF0cml4LGwuYXBwbHkyRFRyYW5zZm9ybT1nLmFwcGx5MkRUcmFuc2Zvcm0sbC5hcHBseTJEVHJhbnNmb3JtMj1nLmFwcGx5MkRUcmFuc2Zvcm0yO3ZhciB2PXQoIi4vYW5nbGVzIik7bC5kZWcycmFkPXYuZGVnMnJhZCxsLnJhZDJkZWc9di5yYWQyZGVnLGwuYW5nbGVEZWx0YT12LmFuZ2xlRGVsdGEsbC5hbmdsZURpc3Q9di5hbmdsZURpc3QsbC5pc0Z1bGxDaXJjbGU9di5pc0Z1bGxDaXJjbGUsbC5pc0FuZ2xlSW5zaWRlU2VjdG9yPXYuaXNBbmdsZUluc2lkZVNlY3RvcixsLmlzUHRJbnNpZGVTZWN0b3I9di5pc1B0SW5zaWRlU2VjdG9yLGwucGF0aEFyYz12LnBhdGhBcmMsbC5wYXRoU2VjdG9yPXYucGF0aFNlY3RvcixsLnBhdGhBbm51bHVzPXYucGF0aEFubnVsdXM7dmFyIG09dCgiLi9hbmNob3JfdXRpbHMiKTtsLmlzTGVmdEFuY2hvcj1tLmlzTGVmdEFuY2hvcixsLmlzQ2VudGVyQW5jaG9yPW0uaXNDZW50ZXJBbmNob3IsbC5pc1JpZ2h0QW5jaG9yPW0uaXNSaWdodEFuY2hvcixsLmlzVG9wQW5jaG9yPW0uaXNUb3BBbmNob3IsbC5pc01pZGRsZUFuY2hvcj1tLmlzTWlkZGxlQW5jaG9yLGwuaXNCb3R0b21BbmNob3I9bS5pc0JvdHRvbUFuY2hvcjt2YXIgeT10KCIuL2dlb21ldHJ5MmQiKTtsLnNlZ21lbnRzSW50ZXJzZWN0PXkuc2VnbWVudHNJbnRlcnNlY3QsbC5zZWdtZW50RGlzdGFuY2U9eS5zZWdtZW50RGlzdGFuY2UsbC5nZXRUZXh0TG9jYXRpb249eS5nZXRUZXh0TG9jYXRpb24sbC5jbGVhckxvY2F0aW9uQ2FjaGU9eS5jbGVhckxvY2F0aW9uQ2FjaGUsbC5nZXRWaXNpYmxlU2VnbWVudD15LmdldFZpc2libGVTZWdtZW50LGwuZmluZFBvaW50T25QYXRoPXkuZmluZFBvaW50T25QYXRoO3ZhciB4PXQoIi4vZXh0ZW5kIik7bC5leHRlbmRGbGF0PXguZXh0ZW5kRmxhdCxsLmV4dGVuZERlZXA9eC5leHRlbmREZWVwLGwuZXh0ZW5kRGVlcEFsbD14LmV4dGVuZERlZXBBbGwsbC5leHRlbmREZWVwTm9BcnJheXM9eC5leHRlbmREZWVwTm9BcnJheXM7dmFyIGI9dCgiLi9sb2dnZXJzIik7bC5sb2c9Yi5sb2csbC53YXJuPWIud2FybixsLmVycm9yPWIuZXJyb3I7dmFyIF89dCgiLi9yZWdleCIpO2wuY291bnRlclJlZ2V4PV8uY291bnRlcjt2YXIgdz10KCIuL3Rocm90dGxlIik7bC50aHJvdHRsZT13LnRocm90dGxlLGwudGhyb3R0bGVEb25lPXcuZG9uZSxsLmNsZWFyVGhyb3R0bGU9dy5jbGVhcjt2YXIgaz10KCIuL2RvbSIpO2Z1bmN0aW9uIFQodCl7dmFyIGU9e307Zm9yKHZhciByIGluIHQpZm9yKHZhciBuPXRbcl0sYT0wO2E8bi5sZW5ndGg7YSsrKWVbblthXV09K3I7cmV0dXJuIGV9bC5nZXRHcmFwaERpdj1rLmdldEdyYXBoRGl2LGwuaXNQbG90RGl2PWsuaXNQbG90RGl2LGwucmVtb3ZlRWxlbWVudD1rLnJlbW92ZUVsZW1lbnQsbC5hZGRTdHlsZVJ1bGU9ay5hZGRTdHlsZVJ1bGUsbC5hZGRSZWxhdGVkU3R5bGVSdWxlPWsuYWRkUmVsYXRlZFN0eWxlUnVsZSxsLmRlbGV0ZVJlbGF0ZWRTdHlsZVJ1bGU9ay5kZWxldGVSZWxhdGVkU3R5bGVSdWxlLGwuY2xlYXJSZXNwb25zaXZlPXQoIi4vY2xlYXJfcmVzcG9uc2l2ZSIpLGwubWFrZVRyYWNlR3JvdXBzPXQoIi4vbWFrZV90cmFjZV9ncm91cHMiKSxsLl89dCgiLi9sb2NhbGl6ZSIpLGwubm90aWZpZXI9dCgiLi9ub3RpZmllciIpLGwuZmlsdGVyVW5pcXVlPXQoIi4vZmlsdGVyX3VuaXF1ZSIpLGwuZmlsdGVyVmlzaWJsZT10KCIuL2ZpbHRlcl92aXNpYmxlIiksbC5wdXNoVW5pcXVlPXQoIi4vcHVzaF91bmlxdWUiKSxsLmNsZWFuTnVtYmVyPXQoIi4vY2xlYW5fbnVtYmVyIiksbC5lbnN1cmVOdW1iZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCk/KHQ9TnVtYmVyKHQpKTwtb3x8dD5vP3M6YSh0KT9OdW1iZXIodCk6czpzfSxsLmlzSW5kZXg9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKHZvaWQgMCE9PWUmJnQ+PWUpJiYoYSh0KSYmdD49MCYmdCUxPT0wKX0sbC5ub29wPXQoIi4vbm9vcCIpLGwuaWRlbnRpdHk9dCgiLi9pZGVudGl0eSIpLGwucmVwZWF0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPXQ7cmV0dXJuIHJ9LGwuc3dhcEF0dHJzPWZ1bmN0aW9uKHQsZSxyLG4pe3J8fChyPSJ4Iiksbnx8KG49InkiKTtmb3IodmFyIGE9MDthPGUubGVuZ3RoO2ErKyl7dmFyIGk9ZVthXSxvPWwubmVzdGVkUHJvcGVydHkodCxpLnJlcGxhY2UoIj8iLHIpKSxzPWwubmVzdGVkUHJvcGVydHkodCxpLnJlcGxhY2UoIj8iLG4pKSxjPW8uZ2V0KCk7by5zZXQocy5nZXQoKSkscy5zZXQoYyl9fSxsLnJhaXNlVG9Ub3A9ZnVuY3Rpb24odCl7dC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHQpfSxsLmNhbmNlbFRyYW5zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDApfSxsLmNvbnN0cmFpbj1mdW5jdGlvbih0LGUscil7cmV0dXJuIGU+cj9NYXRoLm1heChyLE1hdGgubWluKGUsdCkpOk1hdGgubWF4KGUsTWF0aC5taW4ocix0KSl9LGwuYkJveEludGVyc2VjdD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHI9cnx8MCx0LmxlZnQ8PWUucmlnaHQrciYmZS5sZWZ0PD10LnJpZ2h0K3ImJnQudG9wPD1lLmJvdHRvbStyJiZlLnRvcDw9dC5ib3R0b20rcn0sbC5zaW1wbGVNYXA9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhPXQubGVuZ3RoLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7bysrKWlbb109ZSh0W29dLHIsbik7cmV0dXJuIGl9LGwucmFuZHN0cj1mdW5jdGlvbiB0KGUscixuLGEpe2lmKG58fChuPTE2KSx2b2lkIDA9PT1yJiYocj0yNCkscjw9MClyZXR1cm4iMCI7dmFyIGksbyxzPU1hdGgubG9nKE1hdGgucG93KDIscikpL01hdGgubG9nKG4pLGM9IiI7Zm9yKGk9MjtzPT09MS8wO2kqPTIpcz1NYXRoLmxvZyhNYXRoLnBvdygyLHIvaSkpL01hdGgubG9nKG4pKmk7dmFyIHU9cy1NYXRoLmZsb29yKHMpO2ZvcihpPTA7aTxNYXRoLmZsb29yKHMpO2krKyljPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpuKS50b1N0cmluZyhuKStjO3UmJihvPU1hdGgucG93KG4sdSksYz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbykudG9TdHJpbmcobikrYyk7dmFyIGg9cGFyc2VJbnQoYyxuKTtyZXR1cm4gZSYmZVtjXXx8aCE9PTEvMCYmaD49TWF0aC5wb3coMixyKT9hPjEwPyhsLndhcm4oInJhbmRzdHIgZmFpbGVkIHVuaXF1ZW5lc3MiKSxjKTp0KGUscixuLChhfHwwKSsxKTpjfSxsLk9wdGlvbkNvbnRyb2w9ZnVuY3Rpb24odCxlKXt0fHwodD17fSksZXx8KGU9Im9wdCIpO3ZhciByPXtvcHRpb25MaXN0OltdLF9uZXdvcHRpb246ZnVuY3Rpb24obil7bltlXT10LHJbbi5uYW1lXT1uLHIub3B0aW9uTGlzdC5wdXNoKG4pfX07cmV0dXJuIHJbIl8iK2VdPXQscn0sbC5zbW9vdGg9ZnVuY3Rpb24odCxlKXtpZigoZT1NYXRoLnJvdW5kKGUpfHwwKTwyKXJldHVybiB0O3ZhciByLG4sYSxpLG89dC5sZW5ndGgscz0yKm8sbD0yKmUtMSxjPW5ldyBBcnJheShsKSx1PW5ldyBBcnJheShvKTtmb3Iocj0wO3I8bDtyKyspY1tyXT0oMS1NYXRoLmNvcyhNYXRoLlBJKihyKzEpL2UpKS8oMiplKTtmb3Iocj0wO3I8bztyKyspe2ZvcihpPTAsbj0wO248bDtuKyspKGE9cituKzEtZSk8LW8/YS09cypNYXRoLnJvdW5kKGEvcyk6YT49cyYmKGEtPXMqTWF0aC5mbG9vcihhL3MpKSxhPDA/YT0tMS1hOmE+PW8mJihhPXMtMS1hKSxpKz10W2FdKmNbbl07dVtyXT1pfXJldHVybiB1fSxsLnN5bmNPckFzeW5jPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbjtmdW5jdGlvbiBhKCl7cmV0dXJuIGwuc3luY09yQXN5bmModCxlLHIpfWZvcig7dC5sZW5ndGg7KWlmKChuPSgwLHQuc3BsaWNlKDAsMSlbMF0pKGUpKSYmbi50aGVuKXJldHVybiBuLnRoZW4oYSkudGhlbih2b2lkIDAsbC5wcm9taXNlRXJyb3IpO3JldHVybiByJiZyKGUpfSxsLnN0cmlwVHJhaWxpbmdTbGFzaD1mdW5jdGlvbih0KXtyZXR1cm4iLyI9PT10LnN1YnN0cigtMSk/dC5zdWJzdHIoMCx0Lmxlbmd0aC0xKTp0fSxsLm5vbmVPckFsbD1mdW5jdGlvbih0LGUscil7aWYodCl7dmFyIG4sYT0hMSxpPSEwO2ZvcihuPTA7bjxyLmxlbmd0aDtuKyspbnVsbCE9dFtyW25dXT9hPSEwOmk9ITE7aWYoYSYmIWkpZm9yKG49MDtuPHIubGVuZ3RoO24rKyl0W3Jbbl1dPWVbcltuXV19fSxsLm1lcmdlQXJyYXk9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ImZ1bmN0aW9uIj09dHlwZW9mIG47aWYobC5pc0FycmF5T3JUeXBlZEFycmF5KHQpKWZvcih2YXIgaT1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCksbz0wO288aTtvKyspe3ZhciBzPXRbb107ZVtvXVtyXT1hP24ocyk6c319LGwubWVyZ2VBcnJheUNhc3RQb3NpdGl2ZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIGwubWVyZ2VBcnJheSh0LGUscixmdW5jdGlvbih0KXt2YXIgZT0rdDtyZXR1cm4gaXNGaW5pdGUoZSkmJmU+MD9lOjB9KX0sbC5maWxsQXJyYXk9ZnVuY3Rpb24odCxlLHIsbil7aWYobj1ufHxsLmlkZW50aXR5LGwuaXNBcnJheU9yVHlwZWRBcnJheSh0KSlmb3IodmFyIGE9MDthPGUubGVuZ3RoO2ErKyllW2FdW3JdPW4odFthXSl9LGwuY2FzdE9wdGlvbj1mdW5jdGlvbih0LGUscixuKXtuPW58fGwuaWRlbnRpdHk7dmFyIGE9bC5uZXN0ZWRQcm9wZXJ0eSh0LHIpLmdldCgpO3JldHVybiBsLmlzQXJyYXlPclR5cGVkQXJyYXkoYSk/QXJyYXkuaXNBcnJheShlKSYmbC5pc0FycmF5T3JUeXBlZEFycmF5KGFbZVswXV0pP24oYVtlWzBdXVtlWzFdXSk6bihhW2VdKTphfSxsLmV4dHJhY3RPcHRpb249ZnVuY3Rpb24odCxlLHIsbil7aWYociBpbiB0KXJldHVybiB0W3JdO3ZhciBhPWwubmVzdGVkUHJvcGVydHkoZSxuKS5nZXQoKTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT92b2lkIDA6YX0sbC50YWdTZWxlY3RlZD1mdW5jdGlvbih0LGUscil7dmFyIG4sYSxpPWUuc2VsZWN0ZWRwb2ludHMsbz1lLl9pbmRleFRvUG9pbnRzO28mJihuPVQobykpO2Zvcih2YXIgcz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYz1pW3NdO2lmKGwuaXNJbmRleChjKXx8bC5pc0FycmF5T3JUeXBlZEFycmF5KGMpJiZsLmlzSW5kZXgoY1swXSkmJmwuaXNJbmRleChjWzFdKSl7dmFyIHU9bj9uW2NdOmMsaD1yP3JbdV06dTt2b2lkIDAhPT0oYT1oKSYmYTx0Lmxlbmd0aCYmKHRbaF0uc2VsZWN0ZWQ9MSl9fX0sbC5zZWxJbmRpY2VzMnNlbFBvaW50cz1mdW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdGVkcG9pbnRzLHI9dC5faW5kZXhUb1BvaW50cztpZihyKXtmb3IodmFyIG49VChyKSxhPVtdLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtpZihsLmlzSW5kZXgobykpe3ZhciBzPW5bb107bC5pc0luZGV4KHMpJiZhLnB1c2gocyl9fXJldHVybiBhfXJldHVybiBlfSxsLmdldFRhcmdldEFycmF5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS50YXJnZXQ7aWYoInN0cmluZyI9PXR5cGVvZiByJiZyKXt2YXIgbj1sLm5lc3RlZFByb3BlcnR5KHQscikuZ2V0KCk7cmV0dXJuISFBcnJheS5pc0FycmF5KG4pJiZufXJldHVybiEhQXJyYXkuaXNBcnJheShyKSYmcn0sbC5taW5FeHRlbmQ9ZnVuY3Rpb24odCxlKXt2YXIgcj17fTsib2JqZWN0IiE9dHlwZW9mIGUmJihlPXt9KTt2YXIgbixhLGksbz1PYmplY3Qua2V5cyh0KTtmb3Iobj0wO248by5sZW5ndGg7bisrKWk9dFthPW9bbl1dLCJfIiE9PWEuY2hhckF0KDApJiYiZnVuY3Rpb24iIT10eXBlb2YgaSYmKCJtb2R1bGUiPT09YT9yW2FdPWk6QXJyYXkuaXNBcnJheShpKT9yW2FdPSJjb2xvcnNjYWxlIj09PWE/aS5zbGljZSgpOmkuc2xpY2UoMCwzKTpsLmlzVHlwZWRBcnJheShpKT9yW2FdPWkuc3ViYXJyYXkoMCwzKTpyW2FdPWkmJiJvYmplY3QiPT10eXBlb2YgaT9sLm1pbkV4dGVuZCh0W2FdLGVbYV0pOmkpO2ZvcihvPU9iamVjdC5rZXlzKGUpLG49MDtuPG8ubGVuZ3RoO24rKykib2JqZWN0Ij09dHlwZW9mKGk9ZVthPW9bbl1dKSYmYSBpbiByJiYib2JqZWN0Ij09dHlwZW9mIHJbYV18fChyW2FdPWkpO3JldHVybiByfSxsLnRpdGxlQ2FzZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKX0sbC5jb250YWluc0FueT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKC0xIT09dC5pbmRleE9mKGVbcl0pKXJldHVybiEwO3JldHVybiExfSxsLmlzSUU9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYn07dmFyIE09L01TSUUgWzEtOV1cLi87bC5pc0lFOW9yQmVsb3c9ZnVuY3Rpb24oKXtyZXR1cm4gbC5pc0lFKCkmJk0udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCl9O3ZhciBBPS9WZXJzaW9uXC9bXGRcLl0rLipTYWZhcmkvO2wuaXNTYWZhcmk9ZnVuY3Rpb24oKXtyZXR1cm4gQS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KX0sbC5pc0QzU2VsZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5jbGFzc2VkfSxsLmVuc3VyZVNpbmdsZT1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10LnNlbGVjdChlKyhyPyIuIityOiIiKSk7aWYoYS5zaXplKCkpcmV0dXJuIGE7dmFyIGk9dC5hcHBlbmQoZSk7cmV0dXJuIHImJmkuY2xhc3NlZChyLCEwKSxuJiZpLmNhbGwobiksaX0sbC5lbnN1cmVTaW5nbGVCeUlkPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXQuc2VsZWN0KGUrIiMiK3IpO2lmKGEuc2l6ZSgpKXJldHVybiBhO3ZhciBpPXQuYXBwZW5kKGUpLmF0dHIoImlkIixyKTtyZXR1cm4gbiYmaS5jYWxsKG4pLGl9LGwub2JqZWN0RnJvbVBhdGg9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbj10LnNwbGl0KCIuIiksYT1yPXt9LGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXSxzPW51bGwsbD1uW2ldLm1hdGNoKC8oLiopXFsoWzAtOV0rKVxdLyk7bD8obz1sWzFdLHM9bFsyXSxyPXJbb109W10saT09PW4ubGVuZ3RoLTE/cltzXT1lOnJbc109e30scj1yW3NdKTooaT09PW4ubGVuZ3RoLTE/cltvXT1lOnJbb109e30scj1yW29dKX1yZXR1cm4gYX07dmFyIFM9L14oW15cW1wuXSspXC4oLispPy8sRT0vXihbXlwuXSspXFsoWzAtOV0rKVxdKFwuKT8oLispPy87bC5leHBhbmRPYmplY3RQYXRocz1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpLG8scztpZigib2JqZWN0Ij09dHlwZW9mIHQmJiFBcnJheS5pc0FycmF5KHQpKWZvcihyIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKChlPXIubWF0Y2goUykpPyhhPXRbcl0sbj1lWzFdLGRlbGV0ZSB0W3JdLHRbbl09bC5leHRlbmREZWVwTm9BcnJheXModFtuXXx8e30sbC5vYmplY3RGcm9tUGF0aChyLGwuZXhwYW5kT2JqZWN0UGF0aHMoYSkpW25dKSk6KGU9ci5tYXRjaChFKSk/KGE9dFtyXSxuPWVbMV0saT1wYXJzZUludChlWzJdKSxkZWxldGUgdFtyXSx0W25dPXRbbl18fFtdLCIuIj09PWVbM10/KHM9ZVs0XSxvPXRbbl1baV09dFtuXVtpXXx8e30sbC5leHRlbmREZWVwTm9BcnJheXMobyxsLm9iamVjdEZyb21QYXRoKHMsbC5leHBhbmRPYmplY3RQYXRocyhhKSkpKTp0W25dW2ldPWwuZXhwYW5kT2JqZWN0UGF0aHMoYSkpOnRbcl09bC5leHBhbmRPYmplY3RQYXRocyh0W3JdKSk7cmV0dXJuIHR9LGwubnVtU2VwYXJhdGU9ZnVuY3Rpb24odCxlLHIpe2lmKHJ8fChyPSExKSwic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlcGFyYXRvciBzdHJpbmcgcmVxdWlyZWQgZm9yIGZvcm1hdHRpbmchIik7Im51bWJlciI9PXR5cGVvZiB0JiYodD1TdHJpbmcodCkpO3ZhciBuPS8oXGQrKShcZHszfSkvLGE9ZS5jaGFyQXQoMCksaT1lLmNoYXJBdCgxKSxvPXQuc3BsaXQoIi4iKSxzPW9bMF0sbD1vLmxlbmd0aD4xP2Erb1sxXToiIjtpZihpJiYoby5sZW5ndGg+MXx8cy5sZW5ndGg+NHx8cikpZm9yKDtuLnRlc3Qocyk7KXM9cy5yZXBsYWNlKG4sIiQxIitpKyIkMiIpO3JldHVybiBzK2x9LGwuVEVNUExBVEVfU1RSSU5HX1JFR0VYPS8leyhbXlxzJXt9Ol0qKShbOnxcfF1bXn1dKik/fS9nO3ZhciBMPS9eXHcqJC87bC50ZW1wbGF0ZVN0cmluZz1mdW5jdGlvbih0LGUpe3ZhciByPXt9O3JldHVybiB0LnJlcGxhY2UobC5URU1QTEFURV9TVFJJTkdfUkVHRVgsZnVuY3Rpb24odCxuKXt2YXIgYTtyZXR1cm4gTC50ZXN0KG4pP2E9ZVtuXToocltuXT1yW25dfHxsLm5lc3RlZFByb3BlcnR5KGUsbikuZ2V0LGE9cltuXSgpKSxsLmlzVmFsaWRUZXh0VmFsdWUoYSk/YToiIn0pfTt2YXIgQz17bWF4OjEwLGNvdW50OjAsbmFtZToiaG92ZXJ0ZW1wbGF0ZSJ9O2wuaG92ZXJ0ZW1wbGF0ZVN0cmluZz1mdW5jdGlvbigpe3JldHVybiB6LmFwcGx5KEMsYXJndW1lbnRzKX07dmFyIFA9e21heDoxMCxjb3VudDowLG5hbWU6InRleHR0ZW1wbGF0ZSJ9O2wudGV4dHRlbXBsYXRlU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHouYXBwbHkoUCxhcmd1bWVudHMpfTt2YXIgTz0vXls6fFx8XS87ZnVuY3Rpb24geih0LGUscil7dmFyIGE9dGhpcyxpPWFyZ3VtZW50cztlfHwoZT17fSk7dmFyIG89e307cmV0dXJuIHQucmVwbGFjZShsLlRFTVBMQVRFX1NUUklOR19SRUdFWCxmdW5jdGlvbih0LHMsYyl7dmFyIHUsaCxmLHA7Zm9yKGY9MztmPGkubGVuZ3RoO2YrKylpZih1PWlbZl0pe2lmKHUuaGFzT3duUHJvcGVydHkocykpe2g9dVtzXTticmVha31pZihMLnRlc3Qocyl8fChoPW9bc118fGwubmVzdGVkUHJvcGVydHkodSxzKS5nZXQoKSkmJihvW3NdPWgpLHZvaWQgMCE9PWgpYnJlYWt9aWYodm9pZCAwPT09aCYmYSlyZXR1cm4gYS5jb3VudDxhLm1heCYmKGwud2FybigiVmFyaWFibGUgJyIrcysiJyBpbiAiK2EubmFtZSsiIGNvdWxkIG5vdCBiZSBmb3VuZCEiKSxoPXQpLGEuY291bnQ9PT1hLm1heCYmbC53YXJuKCJUb28gbWFueSAiK2EubmFtZSsiIHdhcm5pbmdzIC0gYWRkaXRpb25hbCB3YXJuaW5ncyB3aWxsIGJlIHN1cHByZXNzZWQiKSxhLmNvdW50KyssdDtpZihjKXtpZigiOiI9PT1jWzBdJiYoaD0ocD1yP3IubnVtYmVyRm9ybWF0Om4uZm9ybWF0KShjLnJlcGxhY2UoTywiIikpKGgpKSwifCI9PT1jWzBdKXtwPXI/ci50aW1lRm9ybWF0LnV0YzpuLnRpbWUuZm9ybWF0LnV0Yzt2YXIgZD1sLmRhdGVUaW1lMm1zKGgpO2g9bC5mb3JtYXREYXRlKGQsYy5yZXBsYWNlKE8sIiIpLCExLHApfX1lbHNlIGUuaGFzT3duUHJvcGVydHkocysiTGFiZWwiKSYmKGg9ZVtzKyJMYWJlbCJdKTtyZXR1cm4gaH0pfWwuc3VicGxvdFNvcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpKzEsbj0wLGE9MCxpPTA7aTxyO2krKyl7dmFyIG89dC5jaGFyQ29kZUF0KGkpfHwwLHM9ZS5jaGFyQ29kZUF0KGkpfHwwLGw9bz49NDgmJm88PTU3LGM9cz49NDgmJnM8PTU3O2lmKGwmJihuPTEwKm4rby00OCksYyYmKGE9MTAqYStzLTQ4KSwhbHx8IWMpe2lmKG4hPT1hKXJldHVybiBuLWE7aWYobyE9PXMpcmV0dXJuIG8tc319cmV0dXJuIGEtbn07dmFyIEk9MmU5O2wuc2VlZFBzZXVkb1JhbmRvbT1mdW5jdGlvbigpe0k9MmU5fSxsLnBzZXVkb1JhbmRvbT1mdW5jdGlvbigpe3ZhciB0PUk7cmV0dXJuIEk9KDY5MDY5KkkrMSklNDI5NDk2NzI5NixNYXRoLmFicyhJLXQpPDQyOTQ5NjcyOT9sLnBzZXVkb1JhbmRvbSgpOkkvNDI5NDk2NzI5Nn0sbC5maWxsVGV4dD1mdW5jdGlvbih0LGUscil7dmFyIG49QXJyYXkuaXNBcnJheShyKT9mdW5jdGlvbih0KXtyLnB1c2godCl9OmZ1bmN0aW9uKHQpe3IudGV4dD10fSxhPWwuZXh0cmFjdE9wdGlvbih0LGUsImh0eCIsImhvdmVydGV4dCIpO2lmKGwuaXNWYWxpZFRleHRWYWx1ZShhKSlyZXR1cm4gbihhKTt2YXIgaT1sLmV4dHJhY3RPcHRpb24odCxlLCJ0eCIsInRleHQiKTtyZXR1cm4gbC5pc1ZhbGlkVGV4dFZhbHVlKGkpP24oaSk6dm9pZCAwfSxsLmlzVmFsaWRUZXh0VmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHR8fDA9PT10fSxsLmZvcm1hdFBlcmNlbnQ9ZnVuY3Rpb24odCxlKXtlPWV8fDA7Zm9yKHZhciByPShNYXRoLnJvdW5kKDEwMCp0Kk1hdGgucG93KDEwLGUpKSpNYXRoLnBvdyguMSxlKSkudG9GaXhlZChlKSsiJSIsbj0wO248ZTtuKyspLTEhPT1yLmluZGV4T2YoIi4iKSYmKHI9KHI9ci5yZXBsYWNlKCIwJSIsIiUiKSkucmVwbGFjZSgiLiUiLCIlIikpO3JldHVybiByfSxsLmlzSGlkZGVuPWZ1bmN0aW9uKHQpe3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmRpc3BsYXk7cmV0dXJuIWV8fCJub25lIj09PWV9LGwuZ2V0VGV4dFRyYW5zZm9ybT1mdW5jdGlvbih0KXt2YXIgZT10Lm5vQ2VudGVyLHI9dC50ZXh0WCxuPXQudGV4dFksYT10LnRhcmdldFgsaT10LnRhcmdldFksbz10LmFuY2hvclh8fDAscz10LmFuY2hvcll8fDAsbD10LnJvdGF0ZSxjPXQuc2NhbGU7cmV0dXJuIGM/Yz4xJiYoYz0xKTpjPTAsInRyYW5zbGF0ZSgiKyhhLWMqKHIrbykpKyIsIisoaS1jKihuK3MpKSsiKSIrKGM8MT8ic2NhbGUoIitjKyIpIjoiIikrKGw/InJvdGF0ZSgiK2wrKGU/IiI6IiAiK3IrIiAiK24pKyIpIjoiIil9LGwuZW5zdXJlVW5pZm9ybUZvbnRTaXplPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bC5leHRlbmRGbGF0KHt9LGUpO3JldHVybiByLnNpemU9TWF0aC5tYXgoZS5zaXplLHQuX2Z1bGxMYXlvdXQudW5pZm9ybXRleHQubWluc2l6ZXx8MCkscn19LHsiLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuL2FuY2hvcl91dGlscyI6Njk4LCIuL2FuZ2xlcyI6Njk5LCIuL2FycmF5Ijo3MDAsIi4vY2xlYW5fbnVtYmVyIjo3MDEsIi4vY2xlYXJfcmVzcG9uc2l2ZSI6NzAzLCIuL2NvZXJjZSI6NzA0LCIuL2RhdGVzIjo3MDUsIi4vZG9tIjo3MDYsIi4vZXh0ZW5kIjo3MDgsIi4vZmlsdGVyX3VuaXF1ZSI6NzA5LCIuL2ZpbHRlcl92aXNpYmxlIjo3MTAsIi4vZ2VvbWV0cnkyZCI6NzEzLCIuL2lkZW50aXR5Ijo3MTYsIi4vaXNfcGxhaW5fb2JqZWN0Ijo3MTgsIi4va2V5ZWRfY29udGFpbmVyIjo3MTksIi4vbG9jYWxpemUiOjcyMCwiLi9sb2dnZXJzIjo3MjEsIi4vbWFrZV90cmFjZV9ncm91cHMiOjcyMiwiLi9tYXRyaXgiOjcyMywiLi9tb2QiOjcyNCwiLi9uZXN0ZWRfcHJvcGVydHkiOjcyNSwiLi9ub29wIjo3MjYsIi4vbm90aWZpZXIiOjcyNywiLi9wdXNoX3VuaXF1ZSI6NzMxLCIuL3JlZ2V4Ijo3MzMsIi4vcmVsYXRpdmVfYXR0ciI6NzM0LCIuL3JlbGlua19wcml2YXRlIjo3MzUsIi4vc2VhcmNoIjo3MzYsIi4vc3RhdHMiOjczOSwiLi90aHJvdHRsZSI6NzQyLCIuL3RvX2xvZ19yYW5nZSI6NzQzLGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDcxODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHdpbmRvdyYmd2luZG93LnByb2Nlc3MmJndpbmRvdy5wcm9jZXNzLnZlcnNpb25zPyJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpOiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1PYmplY3QucHJvdG90eXBlfX0se31dLDcxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL25lc3RlZF9wcm9wZXJ0eSIpLGE9L15cdyokLztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG8scyxsO3I9cnx8Im5hbWUiLGk9aXx8InZhbHVlIjt2YXIgYz17fTtlJiZlLmxlbmd0aD8obD1uKHQsZSkscz1sLmdldCgpKTpzPXQsZT1lfHwiIjt2YXIgdT17fTtpZihzKWZvcihvPTA7bzxzLmxlbmd0aDtvKyspdVtzW29dW3JdXT1vO3ZhciBoPWEudGVzdChpKSxmPXtzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgYT1udWxsPT09ZT80OjA7aWYoIXMpe2lmKCFsfHw0PT09YSlyZXR1cm47cz1bXSxsLnNldChzKX12YXIgbz11W3RdO2lmKHZvaWQgMD09PW8pe2lmKDQ9PT1hKXJldHVybjthfD0zLG89cy5sZW5ndGgsdVt0XT1vfWVsc2UgZSE9PShoP3Nbb11baV06bihzW29dLGkpLmdldCgpKSYmKGF8PTIpO3ZhciBwPXNbb109c1tvXXx8e307cmV0dXJuIHBbcl09dCxoP3BbaV09ZTpuKHAsaSkuc2V0KGUpLG51bGwhPT1lJiYoYSY9LTUpLGNbb109Y1tvXXxhLGZ9LGdldDpmdW5jdGlvbih0KXtpZihzKXt2YXIgZT11W3RdO3JldHVybiB2b2lkIDA9PT1lP3ZvaWQgMDpoP3NbZV1baV06bihzW2VdLGkpLmdldCgpfX0scmVuYW1lOmZ1bmN0aW9uKHQsZSl7dmFyIG49dVt0XTtyZXR1cm4gdm9pZCAwPT09bj9mOihjW25dPTF8Y1tuXSx1W2VdPW4sZGVsZXRlIHVbdF0sc1tuXVtyXT1lLGYpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dVt0XTtpZih2b2lkIDA9PT1lKXJldHVybiBmO3ZhciBhPXNbZV07aWYoT2JqZWN0LmtleXMoYSkubGVuZ3RoPjIpcmV0dXJuIGNbZV09MnxjW2VdLGYuc2V0KHQsbnVsbCk7aWYoaCl7Zm9yKG89ZTtvPHMubGVuZ3RoO28rKyljW29dPTN8Y1tvXTtmb3Iobz1lO288cy5sZW5ndGg7bysrKXVbc1tvXVtyXV0tLTtzLnNwbGljZShlLDEpLGRlbGV0ZSB1W3RdfWVsc2UgbihhLGkpLnNldChudWxsKSxjW2VdPTZ8Y1tlXTtyZXR1cm4gZn0sY29uc3RydWN0VXBkYXRlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGEsbz17fSxsPU9iamVjdC5rZXlzKGMpLHU9MDt1PGwubGVuZ3RoO3UrKylhPWxbdV0sdD1lKyJbIithKyJdIixzW2FdPygxJmNbYV0mJihvW3QrIi4iK3JdPXNbYV1bcl0pLDImY1thXSYmKG9bdCsiLiIraV09aD80JmNbYV0/bnVsbDpzW2FdW2ldOjQmY1thXT9udWxsOm4oc1thXSxpKS5nZXQoKSkpOm9bdF09bnVsbDtyZXR1cm4gb319O3JldHVybiBmfX0seyIuL25lc3RlZF9wcm9wZXJ0eSI6NzI1fV0sNzIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3JlZ2lzdHJ5Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuX2NvbnRleHQubG9jYWxlLGE9MDthPDI7YSsrKXtmb3IodmFyIGk9dC5fY29udGV4dC5sb2NhbGVzLG89MDtvPDI7bysrKXt2YXIgcz0oaVtyXXx8e30pLmRpY3Rpb25hcnk7aWYocyl7dmFyIGw9c1tlXTtpZihsKXJldHVybiBsfWk9bi5sb2NhbGVSZWdpc3RyeX12YXIgYz1yLnNwbGl0KCItIilbMF07aWYoYz09PXIpYnJlYWs7cj1jfXJldHVybiBlfX0seyIuLi9yZWdpc3RyeSI6ODQ2fV0sNzIxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3Bsb3RfYXBpL3Bsb3RfY29uZmlnIikuZGZsdENvbmZpZyxhPXQoIi4vbm90aWZpZXIiKSxpPWUuZXhwb3J0cz17fTtmdW5jdGlvbiBvKHQsZSl7aWYodCYmdC5hcHBseSl0cnl7cmV0dXJuIHZvaWQgdC5hcHBseShjb25zb2xlLGUpfWNhdGNoKHQpe31mb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0cnl7dChlW3JdKX1jYXRjaCh0KXtjb25zb2xlLmxvZyhlW3JdKX19aS5sb2c9ZnVuY3Rpb24oKXt2YXIgdDtpZihuLmxvZ2dpbmc+MSl7dmFyIGU9WyJMT0c6Il07Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO28oY29uc29sZS50cmFjZXx8Y29uc29sZS5sb2csZSl9aWYobi5ub3RpZnlPbkxvZ2dpbmc+MSl7dmFyIHI9W107Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXIucHVzaChhcmd1bWVudHNbdF0pO2Eoci5qb2luKCI8YnI+IiksImxvbmciKX19LGkud2Fybj1mdW5jdGlvbigpe3ZhciB0O2lmKG4ubG9nZ2luZz4wKXt2YXIgZT1bIldBUk46Il07Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO28oY29uc29sZS50cmFjZXx8Y29uc29sZS5sb2csZSl9aWYobi5ub3RpZnlPbkxvZ2dpbmc+MCl7dmFyIHI9W107Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXIucHVzaChhcmd1bWVudHNbdF0pO2Eoci5qb2luKCI8YnI+IiksInN0aWNrIil9fSxpLmVycm9yPWZ1bmN0aW9uKCl7dmFyIHQ7aWYobi5sb2dnaW5nPjApe3ZhciBlPVsiRVJST1I6Il07Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO28oY29uc29sZS5lcnJvcixlKX1pZihuLm5vdGlmeU9uTG9nZ2luZz4wKXt2YXIgcj1bXTtmb3IodD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspci5wdXNoKGFyZ3VtZW50c1t0XSk7YShyLmpvaW4oIjxicj4iKSwic3RpY2siKX19fSx7Ii4uL3Bsb3RfYXBpL3Bsb3RfY29uZmlnIjo3NTMsIi4vbm90aWZpZXIiOjcyN31dLDcyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGE9dC5zZWxlY3RBbGwoImcuIityLnJlcGxhY2UoL1xzL2csIi4iKSkuZGF0YShlLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNlLnVpZH0pO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsciksYS5vcmRlcigpO3ZhciBpPXQuY2xhc3NlZCgicmFuZ2VwbG90Iik/Im5vZGVSYW5nZVBsb3QzIjoibm9kZTMiO3JldHVybiBhLmVhY2goZnVuY3Rpb24odCl7dFswXVtpXT1uLnNlbGVjdCh0aGlzKX0pLGF9fSx7ZDM6MTY1fV0sNzIzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuaW5pdDJkQXJyYXk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7bisrKXJbbl09bmV3IEFycmF5KGUpO3JldHVybiByfSxyLnRyYW5zcG9zZVJhZ2dlZD1mdW5jdGlvbih0KXt2YXIgZSxyLG49MCxhPXQubGVuZ3RoO2ZvcihlPTA7ZTxhO2UrKyluPU1hdGgubWF4KG4sdFtlXS5sZW5ndGgpO3ZhciBpPW5ldyBBcnJheShuKTtmb3IoZT0wO2U8bjtlKyspZm9yKGlbZV09bmV3IEFycmF5KGEpLHI9MDtyPGE7cisrKWlbZV1bcl09dFtyXVtlXTtyZXR1cm4gaX0sci5kb3Q9ZnVuY3Rpb24odCxlKXtpZighdC5sZW5ndGh8fCFlLmxlbmd0aHx8dC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbixhLGk9dC5sZW5ndGg7aWYodFswXS5sZW5ndGgpZm9yKG49bmV3IEFycmF5KGkpLGE9MDthPGk7YSsrKW5bYV09ci5kb3QodFthXSxlKTtlbHNlIGlmKGVbMF0ubGVuZ3RoKXt2YXIgbz1yLnRyYW5zcG9zZVJhZ2dlZChlKTtmb3Iobj1uZXcgQXJyYXkoby5sZW5ndGgpLGE9MDthPG8ubGVuZ3RoO2ErKyluW2FdPXIuZG90KHQsb1thXSl9ZWxzZSBmb3Iobj0wLGE9MDthPGk7YSsrKW4rPXRbYV0qZVthXTtyZXR1cm4gbn0sci50cmFuc2xhdGlvbk1hdHJpeD1mdW5jdGlvbih0LGUpe3JldHVybltbMSwwLHRdLFswLDEsZV0sWzAsMCwxXV19LHIucm90YXRpb25NYXRyaXg9ZnVuY3Rpb24odCl7dmFyIGU9dCpNYXRoLlBJLzE4MDtyZXR1cm5bW01hdGguY29zKGUpLC1NYXRoLnNpbihlKSwwXSxbTWF0aC5zaW4oZSksTWF0aC5jb3MoZSksMF0sWzAsMCwxXV19LHIucm90YXRpb25YWU1hdHJpeD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIuZG90KHIuZG90KHIudHJhbnNsYXRpb25NYXRyaXgoZSxuKSxyLnJvdGF0aW9uTWF0cml4KHQpKSxyLnRyYW5zbGF0aW9uTWF0cml4KC1lLC1uKSl9LHIuYXBwbHkyRFRyYW5zZm9ybT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7Mz09PWUubGVuZ3RoJiYoZT1lWzBdKTt2YXIgbj0xPT09YXJndW1lbnRzLmxlbmd0aD9lWzBdOltlWzBdLGVbMV1dO3JldHVybiByLmRvdCh0LFtuWzBdLG5bMV0sMV0pLnNsaWNlKDAsMil9fSxyLmFwcGx5MkRUcmFuc2Zvcm0yPWZ1bmN0aW9uKHQpe3ZhciBlPXIuYXBwbHkyRFRyYW5zZm9ybSh0KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodC5zbGljZSgwLDIpKS5jb25jYXQoZSh0LnNsaWNlKDIsNCkpKX19fSx7fV0sNzI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCVlO3JldHVybiByPDA/citlOnJ9LG1vZEhhbGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5hYnModCk+ZS8yP3QtTWF0aC5yb3VuZCh0L2UpKmU6dH19fSx7fV0sNzI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuL2FycmF5IikuaXNBcnJheU9yVHlwZWRBcnJheTtmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbixvLHMsbCxjPXQ7Zm9yKHM9MDtzPGUubGVuZ3RoLTE7cysrKXtpZigtMT09PShyPWVbc10pKXtmb3Iobj0hMCxvPVtdLGw9MDtsPGMubGVuZ3RoO2wrKylvW2xdPWkoY1tsXSxlLnNsaWNlKHMrMSkpKCksb1tsXSE9PW9bMF0mJihuPSExKTtyZXR1cm4gbj9vWzBdOm99aWYoIm51bWJlciI9PXR5cGVvZiByJiYhYShjKSlyZXR1cm47aWYoIm9iamVjdCIhPXR5cGVvZihjPWNbcl0pfHxudWxsPT09YylyZXR1cm59aWYoIm9iamVjdCI9PXR5cGVvZiBjJiZudWxsIT09YyYmbnVsbCE9PShvPWNbZVtzXV0pKXJldHVybiBvfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihuKGUpKWU9U3RyaW5nKGUpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBlfHwiWy0xXSI9PT1lLnN1YnN0cihlLmxlbmd0aC00KSl0aHJvdyJiYWQgcHJvcGVydHkgc3RyaW5nIjtmb3IodmFyIHIsYSxvLHM9MCxjPWUuc3BsaXQoIi4iKTtzPGMubGVuZ3RoOyl7aWYocj1TdHJpbmcoY1tzXSkubWF0Y2goL14oW15cW1xdXSopKChcW1wtP1swLTldKlxdKSspJC8pKXtpZihyWzFdKWNbc109clsxXTtlbHNle2lmKDAhPT1zKXRocm93ImJhZCBwcm9wZXJ0eSBzdHJpbmciO2Muc3BsaWNlKDAsMSl9Zm9yKGE9clsyXS5zdWJzdHIoMSxyWzJdLmxlbmd0aC0yKS5zcGxpdCgiXVsiKSxvPTA7bzxhLmxlbmd0aDtvKyspcysrLGMuc3BsaWNlKHMsMCxOdW1iZXIoYVtvXSkpfXMrK31yZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHQ/ZnVuY3Rpb24odCxlLHIpe3JldHVybntzZXQ6ZnVuY3Rpb24oKXt0aHJvdyJiYWQgY29udGFpbmVyIn0sZ2V0OmZ1bmN0aW9uKCl7fSxhc3RyOmUscGFydHM6cixvYmo6dH19KHQsZSxjKTp7c2V0OmwodCxjLGUpLGdldDppKHQsYyksYXN0cjplLHBhcnRzOmMsb2JqOnR9fTt2YXIgbz0vKF58XC4pYXJnc1xbLztmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIHZvaWQgMD09PXR8fG51bGw9PT10JiYhZS5tYXRjaChvKX1mdW5jdGlvbiBsKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGksbyxsPXQsZj0iIixwPVtbdCxmXV0sZD1zKG4scik7Zm9yKG89MDtvPGUubGVuZ3RoLTE7bysrKXtpZigibnVtYmVyIj09dHlwZW9mKGk9ZVtvXSkmJiFhKGwpKXRocm93ImFycmF5IGluZGV4IGJ1dCBjb250YWluZXIgaXMgbm90IGFuIGFycmF5IjtpZigtMT09PWkpe2lmKGQ9IXUobCxlLnNsaWNlKG8rMSksbixyKSlicmVhaztyZXR1cm59aWYoIWgobCxpLGVbbysxXSxkKSlicmVhaztpZigib2JqZWN0IiE9dHlwZW9mKGw9bFtpXSl8fG51bGw9PT1sKXRocm93ImNvbnRhaW5lciBpcyBub3QgYW4gb2JqZWN0IjtmPWMoZixpKSxwLnB1c2goW2wsZl0pfWlmKGQpe2lmKG89PT1lLmxlbmd0aC0xJiYoZGVsZXRlIGxbZVtvXV0sQXJyYXkuaXNBcnJheShsKSYmK2Vbb109PWwubGVuZ3RoLTEpKWZvcig7bC5sZW5ndGgmJnZvaWQgMD09PWxbbC5sZW5ndGgtMV07KWwucG9wKCl9ZWxzZSBsW2Vbb11dPW59fWZ1bmN0aW9uIGModCxlKXt2YXIgcj1lO3JldHVybiBuKGUpP3I9IlsiK2UrIl0iOnQmJihyPSIuIitlKSx0K3J9ZnVuY3Rpb24gdSh0LGUscixuKXt2YXIgaSxvPWEociksYz0hMCx1PXIsZj1uLnJlcGxhY2UoIi0xIiwwKSxwPSFvJiZzKHIsZiksZD1lWzBdO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspZj1uLnJlcGxhY2UoIi0xIixpKSxvJiYocD1zKHU9cltpJXIubGVuZ3RoXSxmKSkscCYmKGM9ITEpLGgodCxpLGQscCkmJmwodFtpXSxlLG4ucmVwbGFjZSgiLTEiLGkpKSh1KTtyZXR1cm4gY31mdW5jdGlvbiBoKHQsZSxyLG4pe2lmKHZvaWQgMD09PXRbZV0pe2lmKG4pcmV0dXJuITE7dFtlXT0ibnVtYmVyIj09dHlwZW9mIHI/W106e319cmV0dXJuITB9fSx7Ii4vYXJyYXkiOjcwMCwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDcyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSx7fV0sNzI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLGk9W107ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoLTE9PT1pLmluZGV4T2YodCkpe2kucHVzaCh0KTt2YXIgcj0xZTM7YShlKT9yPWU6ImxvbmciPT09ZSYmKHI9M2UzKTt2YXIgbz1uLnNlbGVjdCgiYm9keSIpLnNlbGVjdEFsbCgiLnBsb3RseS1ub3RpZmllciIpLmRhdGEoWzBdKTtvLmVudGVyKCkuYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJwbG90bHktbm90aWZpZXIiLCEwKSxvLnNlbGVjdEFsbCgiLm5vdGlmaWVyLW5vdGUiKS5kYXRhKGkpLmVudGVyKCkuYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJub3RpZmllci1ub3RlIiwhMCkuc3R5bGUoIm9wYWNpdHkiLDApLmVhY2goZnVuY3Rpb24odCl7dmFyIGE9bi5zZWxlY3QodGhpcyk7YS5hcHBlbmQoImJ1dHRvbiIpLmNsYXNzZWQoIm5vdGlmaWVyLWNsb3NlIiwhMCkuaHRtbCgiJnRpbWVzOyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnRyYW5zaXRpb24oKS5jYWxsKHMpfSk7Zm9yKHZhciBpPWEuYXBwZW5kKCJwIiksbz10LnNwbGl0KC88YnJccypcLz8+L2cpLGw9MDtsPG8ubGVuZ3RoO2wrKylsJiZpLmFwcGVuZCgiYnIiKSxpLmFwcGVuZCgic3BhbiIpLnRleHQob1tsXSk7InN0aWNrIj09PWU/YS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMzUwKS5zdHlsZSgib3BhY2l0eSIsMSk6YS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNzAwKS5zdHlsZSgib3BhY2l0eSIsMSkudHJhbnNpdGlvbigpLmRlbGF5KHIpLmNhbGwocyl9KX1mdW5jdGlvbiBzKHQpe3QuZHVyYXRpb24oNzAwKS5zdHlsZSgib3BhY2l0eSIsMCkuZWFjaCgiZW5kIixmdW5jdGlvbih0KXt2YXIgZT1pLmluZGV4T2YodCk7LTEhPT1lJiZpLnNwbGljZShlLDEpLG4uc2VsZWN0KHRoaXMpLnJlbW92ZSgpfSl9fX0se2QzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDcyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3NldGN1cnNvciIpLGE9ImRhdGEtc2F2ZWRjdXJzb3IiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuYXR0cihhKTtpZihlKXtpZighcil7Zm9yKHZhciBpPSh0LmF0dHIoImNsYXNzIil8fCIiKS5zcGxpdCgiICIpLG89MDtvPGkubGVuZ3RoO28rKyl7dmFyIHM9aVtvXTswPT09cy5pbmRleE9mKCJjdXJzb3ItIikmJnQuYXR0cihhLHMuc3Vic3RyKDcpKS5jbGFzc2VkKHMsITEpfXQuYXR0cihhKXx8dC5hdHRyKGEsIiEhIil9bih0LGUpfWVsc2UgciYmKHQuYXR0cihhLG51bGwpLCIhISI9PT1yP24odCk6bih0LHIpKX19LHsiLi9zZXRjdXJzb3IiOjczN31dLDcyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL21hdHJpeCIpLmRvdCxhPXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0saT1lLmV4cG9ydHM9e307aS50ZXN0ZXI9ZnVuY3Rpb24odCl7dmFyIGUscj10LnNsaWNlKCksbj1yWzBdWzBdLGk9bixvPXJbMF1bMV0scz1vO2ZvcihyLnB1c2goclswXSksZT0xO2U8ci5sZW5ndGg7ZSsrKW49TWF0aC5taW4obixyW2VdWzBdKSxpPU1hdGgubWF4KGkscltlXVswXSksbz1NYXRoLm1pbihvLHJbZV1bMV0pLHM9TWF0aC5tYXgocyxyW2VdWzFdKTt2YXIgbCxjPSExOzU9PT1yLmxlbmd0aCYmKHJbMF1bMF09PT1yWzFdWzBdP3JbMl1bMF09PT1yWzNdWzBdJiZyWzBdWzFdPT09clszXVsxXSYmclsxXVsxXT09PXJbMl1bMV0mJihjPSEwLGw9ZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT1yWzBdWzBdfSk6clswXVsxXT09PXJbMV1bMV0mJnJbMl1bMV09PT1yWzNdWzFdJiZyWzBdWzBdPT09clszXVswXSYmclsxXVswXT09PXJbMl1bMF0mJihjPSEwLGw9ZnVuY3Rpb24odCl7cmV0dXJuIHRbMV09PT1yWzBdWzFdfSkpO3ZhciB1PSEwLGg9clswXTtmb3IoZT0xO2U8ci5sZW5ndGg7ZSsrKWlmKGhbMF0hPT1yW2VdWzBdfHxoWzFdIT09cltlXVsxXSl7dT0hMTticmVha31yZXR1cm57eG1pbjpuLHhtYXg6aSx5bWluOm8seW1heDpzLHB0czpyLGNvbnRhaW5zOmM/ZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLGM9dFsxXTtyZXR1cm4hKHI9PT1hfHxyPG58fHI+aXx8Yz09PWF8fGM8b3x8Yz5zfHxlJiZsKHQpKX06ZnVuY3Rpb24odCxlKXt2YXIgbD10WzBdLGM9dFsxXTtpZihsPT09YXx8bDxufHxsPml8fGM9PT1hfHxjPG98fGM+cylyZXR1cm4hMTt2YXIgdSxoLGYscCxkLGc9ci5sZW5ndGgsdj1yWzBdWzBdLG09clswXVsxXSx5PTA7Zm9yKHU9MTt1PGc7dSsrKWlmKGg9dixmPW0sdj1yW3VdWzBdLG09clt1XVsxXSwhKGw8KHA9TWF0aC5taW4oaCx2KSl8fGw+TWF0aC5tYXgoaCx2KXx8Yz5NYXRoLm1heChmLG0pKSlpZihjPE1hdGgubWluKGYsbSkpbCE9PXAmJnkrKztlbHNle2lmKGM9PT0oZD12PT09aD9jOmYrKGwtaCkqKG0tZikvKHYtaCkpKXJldHVybiAxIT09dXx8IWU7Yzw9ZCYmbCE9PXAmJnkrK31yZXR1cm4geSUyPT0xfSxpc1JlY3Q6YyxkZWdlbmVyYXRlOnV9fSxpLmlzU2VnbWVudEJlbnQ9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGksbyxzLGw9dFtlXSxjPVt0W3JdWzBdLWxbMF0sdFtyXVsxXS1sWzFdXSx1PW4oYyxjKSxoPU1hdGguc3FydCh1KSxmPVstY1sxXS9oLGNbMF0vaF07Zm9yKGk9ZSsxO2k8cjtpKyspaWYobz1bdFtpXVswXS1sWzBdLHRbaV1bMV0tbFsxXV0sKHM9bihvLGMpKTwwfHxzPnV8fE1hdGguYWJzKG4obyxmKSk+YSlyZXR1cm4hMDtyZXR1cm4hMX0saS5maWx0ZXI9ZnVuY3Rpb24odCxlKXt2YXIgcj1bdFswXV0sbj0wLGE9MDtmdW5jdGlvbiBvKG8pe3QucHVzaChvKTt2YXIgcz1yLmxlbmd0aCxsPW47ci5zcGxpY2UoYSsxKTtmb3IodmFyIGM9bCsxO2M8dC5sZW5ndGg7YysrKShjPT09dC5sZW5ndGgtMXx8aS5pc1NlZ21lbnRCZW50KHQsbCxjKzEsZSkpJiYoci5wdXNoKHRbY10pLHIubGVuZ3RoPHMtMiYmKG49YyxhPXIubGVuZ3RoLTEpLGw9Yyl9dC5sZW5ndGg+MSYmbyh0LnBvcCgpKTtyZXR1cm57YWRkUHQ6byxyYXc6dCxmaWx0ZXJlZDpyfX19LHsiLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuL21hdHJpeCI6NzIzfV0sNzMwOltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3Nob3dfbm9fd2ViZ2xfbXNnIiksYT10KCJyZWdsIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5fZnVsbExheW91dCxvPSEwO3JldHVybiBpLl9nbGNhbnZhcy5lYWNoKGZ1bmN0aW9uKG4pe2lmKCFuLnJlZ2wmJighbi5waWNrfHxpLl9oYXMoInBhcmNvb3JkcyIpKSl7dHJ5e24ucmVnbD1hKHtjYW52YXM6dGhpcyxhdHRyaWJ1dGVzOnthbnRpYWxpYXM6IW4ucGljayxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITB9LHBpeGVsUmF0aW86dC5fY29udGV4dC5wbG90R2xQaXhlbFJhdGlvfHxyLmRldmljZVBpeGVsUmF0aW8sZXh0ZW5zaW9uczplfHxbXX0pfWNhdGNoKHQpe289ITF9byYmdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixmdW5jdGlvbihlKXt0JiZ0LmVtaXQmJnQuZW1pdCgicGxvdGx5X3dlYmdsY29udGV4dGxvc3QiLHtldmVudDplLGxheWVyOm4ua2V5fSl9LCExKX19KSxvfHxuKHtjb250YWluZXI6aS5fZ2xjb250YWluZXIubm9kZSgpfSksb319KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9zaG93X25vX3dlYmdsX21zZyI6NzM4LHJlZ2w6NTAxfV0sNzMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApe2Zvcih2YXIgcj1lLnRvU3RyaW5nKCksbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl1pbnN0YW5jZW9mIFJlZ0V4cCYmdFtuXS50b1N0cmluZygpPT09cilyZXR1cm4gdDt0LnB1c2goZSl9ZWxzZSFlJiYwIT09ZXx8LTEhPT10LmluZGV4T2YoZSl8fHQucHVzaChlKTtyZXR1cm4gdH19LHt9XSw3MzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliIiksYT10KCIuLi9wbG90X2FwaS9wbG90X2NvbmZpZyIpLmRmbHRDb25maWc7dmFyIGk9e2FkZDpmdW5jdGlvbih0LGUscixuLGkpe3ZhciBvLHM7dC51bmRvUXVldWU9dC51bmRvUXVldWV8fHtpbmRleDowLHF1ZXVlOltdLHNlcXVlbmNlOiExfSxzPXQudW5kb1F1ZXVlLmluZGV4LHQuYXV0b3BsYXk/dC51bmRvUXVldWUuaW5TZXF1ZW5jZXx8KHQuYXV0b3BsYXk9ITEpOighdC51bmRvUXVldWUuc2VxdWVuY2V8fHQudW5kb1F1ZXVlLmJlZ2luU2VxdWVuY2U/KG89e3VuZG86e2NhbGxzOltdLGFyZ3M6W119LHJlZG86e2NhbGxzOltdLGFyZ3M6W119fSx0LnVuZG9RdWV1ZS5xdWV1ZS5zcGxpY2Uocyx0LnVuZG9RdWV1ZS5xdWV1ZS5sZW5ndGgtcyxvKSx0LnVuZG9RdWV1ZS5pbmRleCs9MSk6bz10LnVuZG9RdWV1ZS5xdWV1ZVtzLTFdLHQudW5kb1F1ZXVlLmJlZ2luU2VxdWVuY2U9ITEsbyYmKG8udW5kby5jYWxscy51bnNoaWZ0KGUpLG8udW5kby5hcmdzLnVuc2hpZnQociksby5yZWRvLmNhbGxzLnB1c2gobiksby5yZWRvLmFyZ3MucHVzaChpKSksdC51bmRvUXVldWUucXVldWUubGVuZ3RoPmEucXVldWVMZW5ndGgmJih0LnVuZG9RdWV1ZS5xdWV1ZS5zaGlmdCgpLHQudW5kb1F1ZXVlLmluZGV4LS0pKX0sc3RhcnRTZXF1ZW5jZTpmdW5jdGlvbih0KXt0LnVuZG9RdWV1ZT10LnVuZG9RdWV1ZXx8e2luZGV4OjAscXVldWU6W10sc2VxdWVuY2U6ITF9LHQudW5kb1F1ZXVlLnNlcXVlbmNlPSEwLHQudW5kb1F1ZXVlLmJlZ2luU2VxdWVuY2U9ITB9LHN0b3BTZXF1ZW5jZTpmdW5jdGlvbih0KXt0LnVuZG9RdWV1ZT10LnVuZG9RdWV1ZXx8e2luZGV4OjAscXVldWU6W10sc2VxdWVuY2U6ITF9LHQudW5kb1F1ZXVlLnNlcXVlbmNlPSExLHQudW5kb1F1ZXVlLmJlZ2luU2VxdWVuY2U9ITF9LHVuZG86ZnVuY3Rpb24odCl7dmFyIGUscjtpZih0LmZyYW1ld29yayYmdC5mcmFtZXdvcmsuaXNQb2xhcil0LmZyYW1ld29yay51bmRvKCk7ZWxzZSBpZighKHZvaWQgMD09PXQudW5kb1F1ZXVlfHxpc05hTih0LnVuZG9RdWV1ZS5pbmRleCl8fHQudW5kb1F1ZXVlLmluZGV4PD0wKSl7Zm9yKHQudW5kb1F1ZXVlLmluZGV4LS0sZT10LnVuZG9RdWV1ZS5xdWV1ZVt0LnVuZG9RdWV1ZS5pbmRleF0sdC51bmRvUXVldWUuaW5TZXF1ZW5jZT0hMCxyPTA7cjxlLnVuZG8uY2FsbHMubGVuZ3RoO3IrKylpLnBsb3REbyh0LGUudW5kby5jYWxsc1tyXSxlLnVuZG8uYXJnc1tyXSk7dC51bmRvUXVldWUuaW5TZXF1ZW5jZT0hMSx0LmF1dG9wbGF5PSExfX0scmVkbzpmdW5jdGlvbih0KXt2YXIgZSxyO2lmKHQuZnJhbWV3b3JrJiZ0LmZyYW1ld29yay5pc1BvbGFyKXQuZnJhbWV3b3JrLnJlZG8oKTtlbHNlIGlmKCEodm9pZCAwPT09dC51bmRvUXVldWV8fGlzTmFOKHQudW5kb1F1ZXVlLmluZGV4KXx8dC51bmRvUXVldWUuaW5kZXg+PXQudW5kb1F1ZXVlLnF1ZXVlLmxlbmd0aCkpe2ZvcihlPXQudW5kb1F1ZXVlLnF1ZXVlW3QudW5kb1F1ZXVlLmluZGV4XSx0LnVuZG9RdWV1ZS5pblNlcXVlbmNlPSEwLHI9MDtyPGUucmVkby5jYWxscy5sZW5ndGg7cisrKWkucGxvdERvKHQsZS5yZWRvLmNhbGxzW3JdLGUucmVkby5hcmdzW3JdKTt0LnVuZG9RdWV1ZS5pblNlcXVlbmNlPSExLHQuYXV0b3BsYXk9ITEsdC51bmRvUXVldWUuaW5kZXgrK319fTtpLnBsb3REbz1mdW5jdGlvbih0LGUscil7dC5hdXRvcGxheT0hMCxyPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLGE9W10saT0wO2k8ZS5sZW5ndGg7aSsrKXI9ZVtpXSxhW2ldPXI9PT10P3I6Im9iamVjdCI9PXR5cGVvZiByP0FycmF5LmlzQXJyYXkocik/bi5leHRlbmREZWVwKFtdLHIpOm4uZXh0ZW5kRGVlcEFsbCh7fSxyKTpyO3JldHVybiBhfSh0LHIpLGUuYXBwbHkobnVsbCxyKX0sZS5leHBvcnRzPWl9LHsiLi4vbGliIjo3MTcsIi4uL3Bsb3RfYXBpL3Bsb3RfY29uZmlnIjo3NTN9XSw3MzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5jb3VudGVyPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPShlfHwiIikrKHI/IiI6IiQiKSxpPSExPT09bj8iIjoiXiI7cmV0dXJuInh5Ij09PXQ/bmV3IFJlZ0V4cChpKyJ4KFsyLTldfFsxLTldWzAtOV0rKT95KFsyLTldfFsxLTldWzAtOV0rKT8iK2EpOm5ldyBSZWdFeHAoaSt0KyIoWzItOV18WzEtOV1bMC05XSspPyIrYSl9fSx7fV0sNzM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPS9eKC4qKShcLlteXC5cW1xdXSt8XFtcZFxdKSQvLGE9L15bXlwuXFtcXV0rJC87ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKDtlOyl7dmFyIHI9dC5tYXRjaChuKTtpZihyKXQ9clsxXTtlbHNle2lmKCF0Lm1hdGNoKGEpKXRocm93IG5ldyBFcnJvcigiYmFkIHJlbGF0aXZlQXR0ciBjYWxsOiIrW3QsZV0pO3Q9IiJ9aWYoIl4iIT09ZS5jaGFyQXQoMCkpYnJlYWs7ZT1lLnNsaWNlKDEpfXJldHVybiB0JiYiWyIhPT1lLmNoYXJBdCgwKT90KyIuIitlOnQrZX19LHt9XSw3MzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9hcnJheSIpLmlzQXJyYXlPclR5cGVkQXJyYXksYT10KCIuL2lzX3BsYWluX29iamVjdCIpO2UuZXhwb3J0cz1mdW5jdGlvbiB0KGUscil7Zm9yKHZhciBpIGluIHIpe3ZhciBvPXJbaV0scz1lW2ldO2lmKHMhPT1vKWlmKCJfIj09PWkuY2hhckF0KDApfHwiZnVuY3Rpb24iPT10eXBlb2Ygbyl7aWYoaSBpbiBlKWNvbnRpbnVlO2VbaV09b31lbHNlIGlmKG4obykmJm4ocykmJmEob1swXSkpe2lmKCJjdXN0b21kYXRhIj09PWl8fCJpZHMiPT09aSljb250aW51ZTtmb3IodmFyIGw9TWF0aC5taW4oby5sZW5ndGgscy5sZW5ndGgpLGM9MDtjPGw7YysrKXNbY10hPT1vW2NdJiZhKG9bY10pJiZhKHNbY10pJiZ0KHNbY10sb1tjXSl9ZWxzZSBhKG8pJiZhKHMpJiYodChzLG8pLE9iamVjdC5rZXlzKHMpLmxlbmd0aHx8ZGVsZXRlIGVbaV0pfX19LHsiLi9hcnJheSI6NzAwLCIuL2lzX3BsYWluX29iamVjdCI6NzE4fV0sNzM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuL2xvZ2dlcnMiKSxpPXQoIi4vaWRlbnRpdHkiKTtmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHQ8ZX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIHQ8PWV9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0PmV9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0Pj1lfXIuZmluZEJpbj1mdW5jdGlvbih0LGUscil7aWYobihlLnN0YXJ0KSlyZXR1cm4gcj9NYXRoLmNlaWwoKHQtZS5zdGFydCkvZS5zaXplLTFlLTkpLTE6TWF0aC5mbG9vcigodC1lLnN0YXJ0KS9lLnNpemUrMWUtOSk7dmFyIGksdSxoPTAsZj1lLmxlbmd0aCxwPTAsZD1mPjE/KGVbZi0xXS1lWzBdKS8oZi0xKToxO2Zvcih1PWQ+PTA/cj9vOnM6cj9jOmwsdCs9MWUtOSpkKihyPy0xOjEpKihkPj0wPzE6LTEpO2g8ZiYmcCsrPDEwMDspdShlW2k9TWF0aC5mbG9vcigoaCtmKS8yKV0sdCk/aD1pKzE6Zj1pO3JldHVybiBwPjkwJiZhLmxvZygiTG9uZyBiaW5hcnkgc2VhcmNoLi4uIiksaC0xfSxyLnNvcnRlckFzYz1mdW5jdGlvbih0LGUpe3JldHVybiB0LWV9LHIuc29ydGVyRGVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0sci5kaXN0aW5jdFZhbHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgpO2Uuc29ydChyLnNvcnRlckFzYyk7Zm9yKHZhciBuPWUubGVuZ3RoLTEsYT1lW25dLWVbMF18fDEsaT1hLyhufHwxKS8xZTQsbz1bZVswXV0scz0wO3M8bjtzKyspZVtzKzFdPmVbc10raSYmKGE9TWF0aC5taW4oYSxlW3MrMV0tZVtzXSksby5wdXNoKGVbcysxXSkpO3JldHVybnt2YWxzOm8sbWluRGlmZjphfX0sci5yb3VuZFVwPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4sYT0wLGk9ZS5sZW5ndGgtMSxvPTAscz1yPzA6MSxsPXI/MTowLGM9cj9NYXRoLmNlaWw6TWF0aC5mbG9vcjthPGkmJm8rKzwxMDA7KWVbbj1jKChhK2kpLzIpXTw9dD9hPW4rczppPW4tbDtyZXR1cm4gZVthXX0sci5zb3J0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0wLGE9MTthPHQubGVuZ3RoO2ErKyl7dmFyIGk9ZSh0W2FdLHRbYS0xXSk7aWYoaTwwP3I9MTppPjAmJihuPTEpLHImJm4pcmV0dXJuIHQuc29ydChlKX1yZXR1cm4gbj90OnQucmV2ZXJzZSgpfSxyLmZpbmRJbmRleE9mTWluPWZ1bmN0aW9uKHQsZSl7ZT1lfHxpO2Zvcih2YXIgcixuPTEvMCxhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBvPWUodFthXSk7bzxuJiYobj1vLHI9YSl9cmV0dXJuIHJ9fSx7Ii4vaWRlbnRpdHkiOjcxNiwiLi9sb2dnZXJzIjo3MjEsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7KHQuYXR0cigiY2xhc3MiKXx8IiIpLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXswPT09ZS5pbmRleE9mKCJjdXJzb3ItIikmJnQuY2xhc3NlZChlLCExKX0pLGUmJnQuY2xhc3NlZCgiY3Vyc29yLSIrZSwhMCl9fSx7fV0sNzM4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2NvbXBvbmVudHMvY29sb3IiKSxhPWZ1bmN0aW9uKCl7fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHQpImZ1bmN0aW9uIj09dHlwZW9mIHRbZV0mJih0W2VdPWEpO3QuZGVzdHJveT1mdW5jdGlvbigpe3QuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5jb250YWluZXIpfTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyLmNsYXNzTmFtZT0ibm8td2ViZ2wiLHIuc3R5bGUuY3Vyc29yPSJwb2ludGVyIixyLnN0eWxlLmZvbnRTaXplPSIyNHB4IixyLnN0eWxlLmNvbG9yPW4uZGVmYXVsdHNbMF0sci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHIuc3R5bGUubGVmdD1yLnN0eWxlLnRvcD0iMHB4IixyLnN0eWxlLndpZHRoPXIuc3R5bGUuaGVpZ2h0PSIxMDAlIixyLnN0eWxlWyJiYWNrZ3JvdW5kLWNvbG9yIl09bi5saWdodExpbmUsci5zdHlsZVsiei1pbmRleCJdPTMwO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTtyZXR1cm4gaS50ZXh0Q29udGVudD0iV2ViR0wgaXMgbm90IHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIgLSB2aXNpdCBodHRwczovL2dldC53ZWJnbC5vcmcgZm9yIG1vcmUgaW5mbyIsaS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGkuc3R5bGUudG9wPSI1MCUiLGkuc3R5bGUubGVmdD0iNTAlIixpLnN0eWxlLmhlaWdodD0iMzAlIixpLnN0eWxlLndpZHRoPSI1MCUiLGkuc3R5bGUubWFyZ2luPSItMTUlIDAgMCAtMjUlIixyLmFwcGVuZENoaWxkKGkpLHQuY29udGFpbmVyLmFwcGVuZENoaWxkKHIpLHQuY29udGFpbmVyLnN0eWxlLmJhY2tncm91bmQ9IiNGRkZGRkYiLHQuY29udGFpbmVyLm9uY2xpY2s9ZnVuY3Rpb24oKXt3aW5kb3cub3BlbigiaHR0cHM6Ly9nZXQud2ViZ2wub3JnIil9LCExfX0seyIuLi9jb21wb25lbnRzL2NvbG9yIjo1OTJ9XSw3Mzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4vYXJyYXkiKS5pc0FycmF5T3JUeXBlZEFycmF5O3IuYWdnTnVtcz1mdW5jdGlvbih0LGUsaSxvKXt2YXIgcyxsO2lmKCghb3x8bz5pLmxlbmd0aCkmJihvPWkubGVuZ3RoKSxuKGUpfHwoZT0hMSksYShpWzBdKSl7Zm9yKGw9bmV3IEFycmF5KG8pLHM9MDtzPG87cysrKWxbc109ci5hZ2dOdW1zKHQsZSxpW3NdKTtpPWx9Zm9yKHM9MDtzPG87cysrKW4oZSk/bihpW3NdKSYmKGU9dCgrZSwraVtzXSkpOmU9aVtzXTtyZXR1cm4gZX0sci5sZW49ZnVuY3Rpb24odCl7cmV0dXJuIHIuYWdnTnVtcyhmdW5jdGlvbih0KXtyZXR1cm4gdCsxfSwwLHQpfSxyLm1lYW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8KGU9ci5sZW4odCkpLHIuYWdnTnVtcyhmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9LDAsdCkvZX0sci5taWRSYW5nZT1mdW5jdGlvbih0KXtpZih2b2lkIDAhPT10JiYwIT09dC5sZW5ndGgpcmV0dXJuKHIuYWdnTnVtcyhNYXRoLm1heCxudWxsLHQpK3IuYWdnTnVtcyhNYXRoLm1pbixudWxsLHQpKS8yfSxyLnZhcmlhbmNlPWZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4gZXx8KGU9ci5sZW4odCkpLG4oYSl8fChhPXIubWVhbih0LGUpKSxyLmFnZ051bXMoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtNYXRoLnBvdyhlLWEsMil9LDAsdCkvZX0sci5zdGRldj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGguc3FydChyLnZhcmlhbmNlKHQsZSxuKSl9LHIubWVkaWFuPWZ1bmN0aW9uKHQpe3ZhciBlPXQuc2xpY2UoKS5zb3J0KCk7cmV0dXJuIHIuaW50ZXJwKGUsLjUpfSxyLmludGVycD1mdW5jdGlvbih0LGUpe2lmKCFuKGUpKXRocm93Im4gc2hvdWxkIGJlIGEgZmluaXRlIG51bWJlciI7aWYoKGU9ZSp0Lmxlbmd0aC0uNSk8MClyZXR1cm4gdFswXTtpZihlPnQubGVuZ3RoLTEpcmV0dXJuIHRbdC5sZW5ndGgtMV07dmFyIHI9ZSUxO3JldHVybiByKnRbTWF0aC5jZWlsKGUpXSsoMS1yKSp0W01hdGguZmxvb3IoZSldfX0seyIuL2FycmF5Ijo3MDAsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY29sb3Itbm9ybWFsaXplIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0P24odCk6WzAsMCwwLDFdfX0seyJjb2xvci1ub3JtYWxpemUiOjEyMn1dLDc0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vbGliIiksaT10KCIuLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpLG89dCgiLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLkxJTkVfU1BBQ0lORztmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIHQubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2VdfXZhciBsPS8oW14kXSopKFskXStbXiRdKlskXSspKFteJF0qKS87ci5jb252ZXJ0VG9Uc3BhbnM9ZnVuY3Rpb24odCxlLEEpe3ZhciBTPXQudGV4dCgpLEw9IXQuYXR0cigiZGF0YS1ub3RleCIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIE1hdGhKYXgmJlMubWF0Y2gobCksQz1uLnNlbGVjdCh0Lm5vZGUoKS5wYXJlbnROb2RlKTtpZighQy5lbXB0eSgpKXt2YXIgUD10LmF0dHIoImNsYXNzIik/dC5hdHRyKCJjbGFzcyIpLnNwbGl0KCIgIilbMF06InRleHQiO3JldHVybiBQKz0iLW1hdGgiLEMuc2VsZWN0QWxsKCJzdmcuIitQKS5yZW1vdmUoKSxDLnNlbGVjdEFsbCgiZy4iK1ArIi1ncm91cCIpLnJlbW92ZSgpLHQuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoeyJkYXRhLXVuZm9ybWF0dGVkIjpTLCJkYXRhLW1hdGgiOiJOIn0pLEw/KGUmJmUuX3Byb21pc2VzfHxbXSkucHVzaChuZXcgUHJvbWlzZShmdW5jdGlvbihlKXt0LnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpO3ZhciByPXBhcnNlSW50KHQubm9kZSgpLnN0eWxlLmZvbnRTaXplLDEwKSxpPXtmb250U2l6ZTpyfTshZnVuY3Rpb24odCxlLHIpe3ZhciBpLG8scyxsO01hdGhKYXguSHViLlF1ZXVlKGZ1bmN0aW9uKCl7cmV0dXJuIG89YS5leHRlbmREZWVwQWxsKHt9LE1hdGhKYXguSHViLmNvbmZpZykscz1NYXRoSmF4Lkh1Yi5wcm9jZXNzU2VjdGlvbkRlbGF5LHZvaWQgMCE9PU1hdGhKYXguSHViLnByb2Nlc3NTZWN0aW9uRGVsYXkmJihNYXRoSmF4Lkh1Yi5wcm9jZXNzU2VjdGlvbkRlbGF5PTApLE1hdGhKYXguSHViLkNvbmZpZyh7bWVzc2FnZVN0eWxlOiJub25lIix0ZXgyamF4OntpbmxpbmVNYXRoOltbIiQiLCIkIl0sWyJcXCgiLCJcXCkiXV19LGRpc3BsYXlBbGlnbjoibGVmdCJ9KX0sZnVuY3Rpb24oKXtpZigiU1ZHIiE9PShpPU1hdGhKYXguSHViLmNvbmZpZy5tZW51U2V0dGluZ3MucmVuZGVyZXIpKXJldHVybiBNYXRoSmF4Lkh1Yi5zZXRSZW5kZXJlcigiU1ZHIil9LGZ1bmN0aW9uKCl7dmFyIHI9Im1hdGgtb3V0cHV0LSIrYS5yYW5kc3RyKHt9LDY0KTtyZXR1cm4gbD1uLnNlbGVjdCgiYm9keSIpLmFwcGVuZCgiZGl2IikuYXR0cih7aWQ6cn0pLnN0eWxlKHt2aXNpYmlsaXR5OiJoaWRkZW4iLHBvc2l0aW9uOiJhYnNvbHV0ZSJ9KS5zdHlsZSh7ImZvbnQtc2l6ZSI6ZS5mb250U2l6ZSsicHgifSkudGV4dCh0LnJlcGxhY2UoYywiXFxsdCAiKS5yZXBsYWNlKHUsIlxcZ3QgIikpLE1hdGhKYXguSHViLlR5cGVzZXQobC5ub2RlKCkpfSxmdW5jdGlvbigpe3ZhciBlPW4uc2VsZWN0KCJib2R5Iikuc2VsZWN0KCIjTWF0aEpheF9TVkdfZ2x5cGhzIik7aWYobC5zZWxlY3QoIi5NYXRoSmF4X1NWRyIpLmVtcHR5KCl8fCFsLnNlbGVjdCgic3ZnIikubm9kZSgpKWEubG9nKCJUaGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHRleCBzeW50YXguIix0KSxyKCk7ZWxzZXt2YXIgbz1sLnNlbGVjdCgic3ZnIikubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3IobC5zZWxlY3QoIi5NYXRoSmF4X1NWRyIpLGUsbyl9aWYobC5yZW1vdmUoKSwiU1ZHIiE9PWkpcmV0dXJuIE1hdGhKYXguSHViLnNldFJlbmRlcmVyKGkpfSxmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT1zJiYoTWF0aEpheC5IdWIucHJvY2Vzc1NlY3Rpb25EZWxheT1zKSxNYXRoSmF4Lkh1Yi5Db25maWcobyl9KX0oTFsyXSxpLGZ1bmN0aW9uKG4sYSxpKXtDLnNlbGVjdEFsbCgic3ZnLiIrUCkucmVtb3ZlKCksQy5zZWxlY3RBbGwoImcuIitQKyItZ3JvdXAiKS5yZW1vdmUoKTt2YXIgbz1uJiZuLnNlbGVjdCgic3ZnIik7aWYoIW98fCFvLm5vZGUoKSlyZXR1cm4gTygpLHZvaWQgZSgpO3ZhciBsPUMuYXBwZW5kKCJnIikuY2xhc3NlZChQKyItZ3JvdXAiLCEwKS5hdHRyKHsicG9pbnRlci1ldmVudHMiOiJub25lIiwiZGF0YS11bmZvcm1hdHRlZCI6UywiZGF0YS1tYXRoIjoiWSJ9KTtsLm5vZGUoKS5hcHBlbmRDaGlsZChvLm5vZGUoKSksYSYmYS5ub2RlKCkmJm8ubm9kZSgpLmluc2VydEJlZm9yZShhLm5vZGUoKS5jbG9uZU5vZGUoITApLG8ubm9kZSgpLmZpcnN0Q2hpbGQpLG8uYXR0cih7Y2xhc3M6UCxoZWlnaHQ6aS5oZWlnaHQscHJlc2VydmVBc3BlY3RSYXRpbzoieE1pbllNaW4gbWVldCJ9KS5zdHlsZSh7b3ZlcmZsb3c6InZpc2libGUiLCJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSk7dmFyIGM9dC5ub2RlKCkuc3R5bGUuZmlsbHx8ImJsYWNrIix1PW8uc2VsZWN0KCJnIik7dS5hdHRyKHtmaWxsOmMsc3Ryb2tlOmN9KTt2YXIgaD1zKHUsIndpZHRoIiksZj1zKHUsImhlaWdodCIpLHA9K3QuYXR0cigieCIpLWgqe3N0YXJ0OjAsbWlkZGxlOi41LGVuZDoxfVt0LmF0dHIoInRleHQtYW5jaG9yIil8fCJzdGFydCJdLGQ9LShyfHxzKHQsImhlaWdodCIpKS80OyJ5Ij09PVBbMF0/KGwuYXR0cih7dHJhbnNmb3JtOiJyb3RhdGUoIitbLTkwLCt0LmF0dHIoIngiKSwrdC5hdHRyKCJ5IildKyIpIHRyYW5zbGF0ZSgiK1staC8yLGQtZi8yXSsiKSJ9KSxvLmF0dHIoe3g6K3QuYXR0cigieCIpLHk6K3QuYXR0cigieSIpfSkpOiJsIj09PVBbMF0/by5hdHRyKHt4OnQuYXR0cigieCIpLHk6ZC1mLzJ9KToiYSI9PT1QWzBdJiYwIT09UC5pbmRleE9mKCJhdGl0bGUiKT9vLmF0dHIoe3g6MCx5OmR9KTpvLmF0dHIoe3g6cCx5Oit0LmF0dHIoInkiKStkLWYvMn0pLEEmJkEuY2FsbCh0LGwpLGUobCl9KX0pKTpPKCksdH1mdW5jdGlvbiBPKCl7Qy5lbXB0eSgpfHwoUD10LmF0dHIoImNsYXNzIikrIi1tYXRoIixDLnNlbGVjdCgic3ZnLiIrUCkucmVtb3ZlKCkpLHQudGV4dCgiIikuc3R5bGUoIndoaXRlLXNwYWNlIiwicHJlIiksZnVuY3Rpb24odCxlKXtlPWUucmVwbGFjZSh2LCIgIik7dmFyIHIscz0hMSxsPVtdLGM9LTE7ZnVuY3Rpb24gdSgpe2MrKzt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoaS5zdmcsInRzcGFuIik7bi5zZWxlY3QoZSkuYXR0cih7Y2xhc3M6ImxpbmUiLGR5OmMqbysiZW0ifSksdC5hcHBlbmRDaGlsZChlKSxyPWU7dmFyIGE9bDtpZihsPVt7bm9kZTplfV0sYS5sZW5ndGg+MSlmb3IodmFyIHM9MTtzPGEubGVuZ3RoO3MrKylBKGFbc10pfWZ1bmN0aW9uIEEodCl7dmFyIGUsYT10LnR5cGUsbz17fTtpZigiYSI9PT1hKXtlPSJhIjt2YXIgcz10LnRhcmdldCxjPXQuaHJlZix1PXQucG9wdXA7YyYmKG89eyJ4bGluazp4bGluazpzaG93IjoiX2JsYW5rIj09PXN8fCJfIiE9PXMuY2hhckF0KDApPyJuZXciOiJyZXBsYWNlIix0YXJnZXQ6cywieGxpbms6eGxpbms6aHJlZiI6Y30sdSYmKG8ub25jbGljaz0nd2luZG93Lm9wZW4odGhpcy5ocmVmLmJhc2VWYWwsdGhpcy50YXJnZXQuYmFzZVZhbCwiJyt1KyciKTtyZXR1cm4gZmFsc2U7JykpfWVsc2UgZT0idHNwYW4iO3Quc3R5bGUmJihvLnN0eWxlPXQuc3R5bGUpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhpLnN2ZyxlKTtpZigic3VwIj09PWF8fCJzdWIiPT09YSl7UyhyLGQpLHIuYXBwZW5kQ2hpbGQoaCk7dmFyIGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGkuc3ZnLCJ0c3BhbiIpO1MoZyxkKSxuLnNlbGVjdChnKS5hdHRyKCJkeSIscFthXSksby5keT1mW2FdLHIuYXBwZW5kQ2hpbGQoaCksci5hcHBlbmRDaGlsZChnKX1lbHNlIHIuYXBwZW5kQ2hpbGQoaCk7bi5zZWxlY3QoaCkuYXR0cihvKSxyPXQubm9kZT1oLGwucHVzaCh0KX1mdW5jdGlvbiBTKHQsZSl7dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSl9ZnVuY3Rpb24gTCh0KXtpZigxIT09bC5sZW5ndGgpe3ZhciBuPWwucG9wKCk7dCE9PW4udHlwZSYmYS5sb2coIlN0YXJ0IHRhZyA8IituLnR5cGUrIj4gZG9lc250IG1hdGNoIGVuZCB0YWcgPCIrdCsiPi4gUHJldGVuZGluZyBpdCBkaWQgbWF0Y2guIixlKSxyPWxbbC5sZW5ndGgtMV0ubm9kZX1lbHNlIGEubG9nKCJJZ25vcmluZyB1bmV4cGVjdGVkIGVuZCB0YWcgPC8iK3QrIj4uIixlKX14LnRlc3QoZSk/dSgpOihyPXQsbD1be25vZGU6dH1dKTtmb3IodmFyIEM9ZS5zcGxpdChtKSxQPTA7UDxDLmxlbmd0aDtQKyspe3ZhciBPPUNbUF0sej1PLm1hdGNoKHkpLEk9eiYmelsyXS50b0xvd2VyQ2FzZSgpLEQ9aFtJXTtpZigiYnIiPT09SSl1KCk7ZWxzZSBpZih2b2lkIDA9PT1EKVMocixFKE8pKTtlbHNlIGlmKHpbMV0pTChJKTtlbHNle3ZhciBSPXpbNF0sRj17dHlwZTpJfSxCPVQoUixiKTtpZihCPyhCPUIucmVwbGFjZShNLCIkMSBmaWxsOiIpLEQmJihCKz0iOyIrRCkpOkQmJihCPUQpLEImJihGLnN0eWxlPUIpLCJhIj09PUkpe3M9ITA7dmFyIE49VChSLF8pO2lmKE4pe3ZhciBqPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtqLmhyZWY9TiwtMSE9PWcuaW5kZXhPZihqLnByb3RvY29sKSYmKEYuaHJlZj1lbmNvZGVVUkkoZGVjb2RlVVJJKE4pKSxGLnRhcmdldD1UKFIsdyl8fCJfYmxhbmsiLEYucG9wdXA9VChSLGspKX19QShGKX19cmV0dXJuIHN9KHQubm9kZSgpLFMpJiZ0LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLHIucG9zaXRpb25UZXh0KHQpLEEmJkEuY2FsbCh0KX19O3ZhciBjPS8oPHwmbHQ7fCYjNjA7KS9nLHU9Lyg+fCZndDt8JiM2MjspL2c7dmFyIGg9e3N1cDoiZm9udC1zaXplOjcwJSIsc3ViOiJmb250LXNpemU6NzAlIixiOiJmb250LXdlaWdodDpib2xkIixpOiJmb250LXN0eWxlOml0YWxpYyIsYToiY3Vyc29yOnBvaW50ZXIiLHNwYW46IiIsZW06ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQifSxmPXtzdWI6IjAuM2VtIixzdXA6Ii0wLjZlbSJ9LHA9e3N1YjoiLTAuMjFlbSIsc3VwOiIwLjQyZW0ifSxkPSJcdTIwMGIiLGc9WyJodHRwOiIsImh0dHBzOiIsIm1haWx0bzoiLCIiLHZvaWQgMCwiOiJdLHY9ci5ORVdMSU5FUz0vKFxyXG4/fFxuKS9nLG09Lyg8W148Pl0qPikvLHk9LzwoXC8/KShbXiA+XSopKFxzKyguKikpPz4vaSx4PS88YnIoXHMrLiopPz4vaTtyLkJSX1RBR19BTEw9LzxicihccysuKik/Pi9naTt2YXIgYj0vKF58W1xzIiddKXN0eWxlXHMqPVxzKigiKFteIl0qKTs/InwnKFteJ10qKTs/JykvaSxfPS8oXnxbXHMiJ10paHJlZlxzKj1ccyooIihbXiJdKikifCcoW14nXSopJykvaSx3PS8oXnxbXHMiJ10pdGFyZ2V0XHMqPVxzKigiKFteIlxzXSopInwnKFteJ1xzXSopJykvaSxrPS8oXnxbXHMiJ10pcG9wdXBccyo9XHMqKCIoW1x3PSxdKikifCcoW1x3PSxdKiknKS9pO2Z1bmN0aW9uIFQodCxlKXtpZighdClyZXR1cm4gbnVsbDt2YXIgcj10Lm1hdGNoKGUpLG49ciYmKHJbM118fHJbNF0pO3JldHVybiBuJiZFKG4pfXZhciBNPS8oXnw7KVxzKmNvbG9yOi87ci5wbGFpblRleHQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dm9pZCAwIT09KGU9ZXx8e30pLmxlbiYmLTEhPT1lLmxlbj9lLmxlbjoxLzAsbj12b2lkIDAhPT1lLmFsbG93ZWRUYWdzP2UuYWxsb3dlZFRhZ3M6WyJiciJdLGE9Ii4uLiIubGVuZ3RoLGk9dC5zcGxpdChtKSxvPVtdLHM9IiIsbD0wLGM9MDtjPGkubGVuZ3RoO2MrKyl7dmFyIHU9aVtjXSxoPXUubWF0Y2goeSksZj1oJiZoWzJdLnRvTG93ZXJDYXNlKCk7aWYoZiktMSE9PW4uaW5kZXhPZihmKSYmKG8ucHVzaCh1KSxzPWYpO2Vsc2V7dmFyIHA9dS5sZW5ndGg7aWYobCtwPHIpby5wdXNoKHUpLGwrPXA7ZWxzZSBpZihsPHIpe3ZhciBkPXItbDtzJiYoImJyIiE9PXN8fGQ8PWF8fHA8PWEpJiZvLnBvcCgpLHI+YT9vLnB1c2godS5zdWJzdHIoMCxkLWEpKyIuLi4iKTpvLnB1c2godS5zdWJzdHIoMCxkKSk7YnJlYWt9cz0iIn19cmV0dXJuIG8uam9pbigiIil9O3ZhciBBPXttdToiXHUwM2JjIixhbXA6IiYiLGx0OiI8IixndDoiPiIsbmJzcDoiXHhhMCIsdGltZXM6Ilx4ZDciLHBsdXNtbjoiXHhiMSIsZGVnOiJceGIwIn0sUz0vJigjXGQrfCN4W1xkYS1mQS1GXSt8W2Etel0rKTsvZztmdW5jdGlvbiBFKHQpe3JldHVybiB0LnJlcGxhY2UoUyxmdW5jdGlvbih0LGUpe3JldHVybigiIyI9PT1lLmNoYXJBdCgwKT9mdW5jdGlvbih0KXtpZih0PjExMTQxMTEpcmV0dXJuO3ZhciBlPVN0cmluZy5mcm9tQ29kZVBvaW50O2lmKGUpcmV0dXJuIGUodCk7dmFyIHI9U3RyaW5nLmZyb21DaGFyQ29kZTtyZXR1cm4gdDw9NjU1MzU/cih0KTpyKDU1MjMyKyh0Pj4xMCksdCUxMDI0KzU2MzIwKX0oIngiPT09ZS5jaGFyQXQoMSk/cGFyc2VJbnQoZS5zdWJzdHIoMiksMTYpOnBhcnNlSW50KGUuc3Vic3RyKDEpLDEwKSk6QVtlXSl8fHR9KX1mdW5jdGlvbiBMKHQsZSxyKXt2YXIgbixhLGksbz1yLmhvcml6b250YWxBbGlnbixzPXIudmVydGljYWxBbGlnbnx8InRvcCIsbD10Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxjPWUubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBhPSJib3R0b20iPT09cz9mdW5jdGlvbigpe3JldHVybiBsLmJvdHRvbS1uLmhlaWdodH06Im1pZGRsZSI9PT1zP2Z1bmN0aW9uKCl7cmV0dXJuIGwudG9wKyhsLmhlaWdodC1uLmhlaWdodCkvMn06ZnVuY3Rpb24oKXtyZXR1cm4gbC50b3B9LGk9InJpZ2h0Ij09PW8/ZnVuY3Rpb24oKXtyZXR1cm4gbC5yaWdodC1uLndpZHRofToiY2VudGVyIj09PW8/ZnVuY3Rpb24oKXtyZXR1cm4gbC5sZWZ0KyhsLndpZHRoLW4ud2lkdGgpLzJ9OmZ1bmN0aW9uKCl7cmV0dXJuIGwubGVmdH0sZnVuY3Rpb24oKXtyZXR1cm4gbj10aGlzLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLnN0eWxlKHt0b3A6YSgpLWMudG9wKyJweCIsbGVmdDppKCktYy5sZWZ0KyJweCIsInotaW5kZXgiOjFlM30pLHRoaXN9fXIuY29udmVydEVudGl0aWVzPUUsci5saW5lQ291bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuc2l6ZSgpfHwxfSxyLnBvc2l0aW9uVGV4dD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpO2Z1bmN0aW9uIGEoZSxyKXtyZXR1cm4gdm9pZCAwPT09cj9udWxsPT09KHI9dC5hdHRyKGUpKSYmKHQuYXR0cihlLDApLHI9MCk6dC5hdHRyKGUscikscn12YXIgaT1hKCJ4IixlKSxvPWEoInkiLHIpOyJ0ZXh0Ij09PXRoaXMubm9kZU5hbWUmJnQuc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuYXR0cih7eDppLHk6b30pfSl9LHIubWFrZUVkaXRhYmxlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5nZCxhPWUuZGVsZWdhdGUsaT1uLmRpc3BhdGNoKCJlZGl0IiwiaW5wdXQiLCJjYW5jZWwiKSxvPWF8fHQ7aWYodC5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjphPyJub25lIjoiYWxsIn0pLDEhPT10LnNpemUoKSl0aHJvdyBuZXcgRXJyb3IoImJvbyIpO2Z1bmN0aW9uIHMoKXshZnVuY3Rpb24oKXt2YXIgYT1uLnNlbGVjdChyKS5zZWxlY3QoIi5zdmctY29udGFpbmVyIiksbz1hLmFwcGVuZCgiZGl2Iikscz10Lm5vZGUoKS5zdHlsZSxjPXBhcnNlRmxvYXQocy5mb250U2l6ZXx8MTIpLHU9ZS50ZXh0O3ZvaWQgMD09PXUmJih1PXQuYXR0cigiZGF0YS11bmZvcm1hdHRlZCIpKTtvLmNsYXNzZWQoInBsdWdpbi1lZGl0YWJsZSBlZGl0YWJsZSIsITApLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLCJmb250LWZhbWlseSI6cy5mb250RmFtaWx5fHwiQXJpYWwiLCJmb250LXNpemUiOmMsY29sb3I6ZS5maWxsfHxzLmZpbGx8fCJibGFjayIsb3BhY2l0eToxLCJiYWNrZ3JvdW5kLWNvbG9yIjplLmJhY2tncm91bmR8fCJ0cmFuc3BhcmVudCIsb3V0bGluZToiI2ZmZmZmZjMzIDFweCBzb2xpZCIsbWFyZ2luOlstYy84KzEsMCwwLC0xXS5qb2luKCJweCAiKSsicHgiLHBhZGRpbmc6IjAiLCJib3gtc2l6aW5nIjoiYm9yZGVyLWJveCJ9KS5hdHRyKHtjb250ZW50ZWRpdGFibGU6ITB9KS50ZXh0KHUpLmNhbGwoTCh0LGEsZSkpLm9uKCJibHVyIixmdW5jdGlvbigpe3IuX2VkaXRpbmc9ITEsdC50ZXh0KHRoaXMudGV4dENvbnRlbnQpLnN0eWxlKHtvcGFjaXR5OjF9KTt2YXIgZSxhPW4uc2VsZWN0KHRoaXMpLmF0dHIoImNsYXNzIik7KGU9YT8iLiIrYS5zcGxpdCgiICIpWzBdKyItbWF0aC1ncm91cCI6IltjbGFzcyo9LW1hdGgtZ3JvdXBdIikmJm4uc2VsZWN0KHQubm9kZSgpLnBhcmVudE5vZGUpLnNlbGVjdChlKS5zdHlsZSh7b3BhY2l0eTowfSk7dmFyIG89dGhpcy50ZXh0Q29udGVudDtuLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMCkucmVtb3ZlKCksbi5zZWxlY3QoZG9jdW1lbnQpLm9uKCJtb3VzZXVwIixudWxsKSxpLmVkaXQuY2FsbCh0LG8pfSkub24oImZvY3VzIixmdW5jdGlvbigpe3ZhciB0PXRoaXM7ci5fZWRpdGluZz0hMCxuLnNlbGVjdChkb2N1bWVudCkub24oIm1vdXNldXAiLGZ1bmN0aW9uKCl7aWYobi5ldmVudC50YXJnZXQ9PT10KXJldHVybiExO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1vLm5vZGUoKSYmby5ub2RlKCkuYmx1cigpfSl9KS5vbigia2V5dXAiLGZ1bmN0aW9uKCl7Mjc9PT1uLmV2ZW50LndoaWNoPyhyLl9lZGl0aW5nPSExLHQuc3R5bGUoe29wYWNpdHk6MX0pLG4uc2VsZWN0KHRoaXMpLnN0eWxlKHtvcGFjaXR5OjB9KS5vbigiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLnRyYW5zaXRpb24oKS5yZW1vdmUoKSxpLmNhbmNlbC5jYWxsKHQsdGhpcy50ZXh0Q29udGVudCkpOihpLmlucHV0LmNhbGwodCx0aGlzLnRleHRDb250ZW50KSxuLnNlbGVjdCh0aGlzKS5jYWxsKEwodCxhLGUpKSl9KS5vbigia2V5ZG93biIsZnVuY3Rpb24oKXsxMz09PW4uZXZlbnQud2hpY2gmJnRoaXMuYmx1cigpfSkuY2FsbChsKX0oKSx0LnN0eWxlKHtvcGFjaXR5OjB9KTt2YXIgYSxzPW8uYXR0cigiY2xhc3MiKTsoYT1zPyIuIitzLnNwbGl0KCIgIilbMF0rIi1tYXRoLWdyb3VwIjoiW2NsYXNzKj0tbWF0aC1ncm91cF0iKSYmbi5zZWxlY3QodC5ub2RlKCkucGFyZW50Tm9kZSkuc2VsZWN0KGEpLnN0eWxlKHtvcGFjaXR5OjB9KX1mdW5jdGlvbiBsKHQpe3ZhciBlPXQubm9kZSgpLHI9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtyLnNlbGVjdE5vZGVDb250ZW50cyhlKTt2YXIgbj13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7bi5yZW1vdmVBbGxSYW5nZXMoKSxuLmFkZFJhbmdlKHIpLGUuZm9jdXMoKX1yZXR1cm4gZS5pbW1lZGlhdGU/cygpOm8ub24oImNsaWNrIixzKSxuLnJlYmluZCh0LGksIm9uIil9fSx7Ii4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjY4NiwiLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjY5NCwiLi4vbGliIjo3MTcsZDM6MTY1fV0sNzQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9O2Z1bmN0aW9uIGEodCl7dCYmbnVsbCE9PXQudGltZXImJihjbGVhclRpbWVvdXQodC50aW1lciksdC50aW1lcj1udWxsKX1yLnRocm90dGxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1uW3RdLG89RGF0ZS5ub3coKTtpZighaSl7Zm9yKHZhciBzIGluIG4pbltzXS50czxvLTZlNCYmZGVsZXRlIG5bc107aT1uW3RdPXt0czowLHRpbWVyOm51bGx9fWZ1bmN0aW9uIGwoKXtyKCksaS50cz1EYXRlLm5vdygpLGkub25Eb25lJiYoaS5vbkRvbmUoKSxpLm9uRG9uZT1udWxsKX1hKGkpLG8+aS50cytlP2woKTppLnRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtsKCksaS50aW1lcj1udWxsfSxlKX0sci5kb25lPWZ1bmN0aW9uKHQpe3ZhciBlPW5bdF07cmV0dXJuIGUmJmUudGltZXI/bmV3IFByb21pc2UoZnVuY3Rpb24odCl7dmFyIHI9ZS5vbkRvbmU7ZS5vbkRvbmU9ZnVuY3Rpb24oKXtyJiZyKCksdCgpLGUub25Eb25lPW51bGx9fSk6UHJvbWlzZS5yZXNvbHZlKCl9LHIuY2xlYXI9ZnVuY3Rpb24odCl7aWYodClhKG5bdF0pLGRlbGV0ZSBuW3RdO2Vsc2UgZm9yKHZhciBlIGluIG4pci5jbGVhcihlKX19LHt9XSw3NDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZih0PjApcmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMDt2YXIgcj1NYXRoLmxvZyhNYXRoLm1pbihlWzBdLGVbMV0pKS9NYXRoLkxOMTA7cmV0dXJuIG4ocil8fChyPU1hdGgubG9nKE1hdGgubWF4KGVbMF0sZVsxXSkpL01hdGguTE4xMC02KSxyfX0seyJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sNzQ0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPWUuZXhwb3J0cz17fSxhPXQoIi4uL3Bsb3RzL2dlby9jb25zdGFudHMiKS5sb2NhdGlvbm1vZGVUb0xheWVyLGk9dCgidG9wb2pzb24tY2xpZW50IikuZmVhdHVyZTtuLmdldFRvcG9qc29uTmFtZT1mdW5jdGlvbih0KXtyZXR1cm5bdC5zY29wZS5yZXBsYWNlKC8gL2csIi0iKSwiXyIsdC5yZXNvbHV0aW9uLnRvU3RyaW5nKCksIm0iXS5qb2luKCIiKX0sbi5nZXRUb3BvanNvblBhdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlKyIuanNvbiJ9LG4uZ2V0VG9wb2pzb25GZWF0dXJlcz1mdW5jdGlvbih0LGUpe3ZhciByPWFbdC5sb2NhdGlvbm1vZGVdLG49ZS5vYmplY3RzW3JdO3JldHVybiBpKGUsbikuZmVhdHVyZXN9fSx7Ii4uL3Bsb3RzL2dlby9jb25zdGFudHMiOjc5MywidG9wb2pzb24tY2xpZW50Ijo1Mzl9XSw3NDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJsb2NhbGUiLG5hbWU6ImVuLVVTIixkaWN0aW9uYXJ5OnsiQ2xpY2sgdG8gZW50ZXIgQ29sb3JzY2FsZSB0aXRsZSI6IkNsaWNrIHRvIGVudGVyIENvbG9yc2NhbGUgdGl0bGUifSxmb3JtYXQ6e2RhdGU6IiVtLyVkLyVZIn19fSx7fV0sNzQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToibG9jYWxlIixuYW1lOiJlbiIsZGljdGlvbmFyeTp7IkNsaWNrIHRvIGVudGVyIENvbG9yc2NhbGUgdGl0bGUiOiJDbGljayB0byBlbnRlciBDb2xvdXJzY2FsZSB0aXRsZSJ9LGZvcm1hdDp7ZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF0ZVRpbWU6IiVhICViICVlICVYICVZIixkYXRlOiIlZC8lbS8lWSIsdGltZToiJUg6JU06JVMiLGRlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLHllYXI6IiVZIixtb250aDoiJWIgJVkiLGRheU1vbnRoOiIlYiAlLWQiLGRheU1vbnRoWWVhcjoiJWIgJS1kLCAlWSJ9fX0se31dLDc0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9yZWdpc3RyeSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGUscixhPW4ubGF5b3V0QXJyYXlDb250YWluZXJzLGk9bi5sYXlvdXRBcnJheVJlZ2V4ZXMsbz10LnNwbGl0KCJbIilbMF0scz0wO3M8aS5sZW5ndGg7cysrKWlmKChyPXQubWF0Y2goaVtzXSkpJiYwPT09ci5pbmRleCl7ZT1yWzBdO2JyZWFrfWlmKGV8fChlPWFbYS5pbmRleE9mKG8pXSksIWUpcmV0dXJuITE7dmFyIGw9dC5zdWJzdHIoZS5sZW5ndGgpO3JldHVybiBsPyEhKHI9bC5tYXRjaCgvXlxbKDB8WzEtOV1bMC05XSopXF0oXC4oLispKT8kLykpJiZ7YXJyYXk6ZSxpbmRleDpOdW1iZXIoclsxXSkscHJvcGVydHk6clszXXx8IiJ9OnthcnJheTplLGluZGV4OiIiLHByb3BlcnR5OiIifX19LHsiLi4vcmVnaXN0cnkiOjg0Nn1dLDc0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPW4uZXh0ZW5kRmxhdCxpPW4uaXNQbGFpbk9iamVjdCxvPXt2YWxUeXBlOiJmbGFnbGlzdCIsZXh0cmFzOlsibm9uZSJdLGZsYWdzOlsiY2FsYyIsImNsZWFyQXhpc1R5cGVzIiwicGxvdCIsInN0eWxlIiwibWFya2VyU2l6ZSIsImNvbG9yYmFycyJdfSxzPXt2YWxUeXBlOiJmbGFnbGlzdCIsZXh0cmFzOlsibm9uZSJdLGZsYWdzOlsiY2FsYyIsInBsb3QiLCJsZWdlbmQiLCJ0aWNrcyIsImF4cmFuZ2UiLCJsYXlvdXRzdHlsZSIsIm1vZGViYXIiLCJjYW1lcmEiLCJhcnJheWRyYXciLCJjb2xvcmJhcnMiXX0sbD1vLmZsYWdzLnNsaWNlKCkuY29uY2F0KFsiZnVsbFJlcGxvdCJdKSxjPXMuZmxhZ3Muc2xpY2UoKS5jb25jYXQoImxheW91dFJlcGxvdCIpO2Z1bmN0aW9uIHUodCl7Zm9yKHZhciBlPXt9LHI9MDtyPHQubGVuZ3RoO3IrKyllW3Rbcl1dPSExO3JldHVybiBlfWZ1bmN0aW9uIGgodCxlLHIpe3ZhciBuPWEoe30sdCk7Zm9yKHZhciBvIGluIG4pe3ZhciBzPW5bb107aShzKSYmKG5bb109ZihzLGUscixvKSl9cmV0dXJuImZyb20tcm9vdCI9PT1yJiYobi5lZGl0VHlwZT1lKSxufWZ1bmN0aW9uIGYodCxlLHIsbil7aWYodC52YWxUeXBlKXt2YXIgaT1hKHt9LHQpO2lmKGkuZWRpdFR5cGU9ZSxBcnJheS5pc0FycmF5KHQuaXRlbXMpKXtpLml0ZW1zPW5ldyBBcnJheSh0Lml0ZW1zLmxlbmd0aCk7Zm9yKHZhciBvPTA7bzx0Lml0ZW1zLmxlbmd0aDtvKyspaS5pdGVtc1tvXT1mKHQuaXRlbXNbb10sZSwiZnJvbS1yb290Iil9cmV0dXJuIGl9cmV0dXJuIGgodCxlLCJfIj09PW4uY2hhckF0KDApPyJuZXN0ZWQiOiJmcm9tLXJvb3QiKX1lLmV4cG9ydHM9e3RyYWNlczpvLGxheW91dDpzLHRyYWNlRmxhZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdShsKX0sbGF5b3V0RmxhZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdShjKX0sdXBkYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5lZGl0VHlwZTtpZihyJiYibm9uZSIhPT1yKWZvcih2YXIgbj1yLnNwbGl0KCIrIiksYT0wO2E8bi5sZW5ndGg7YSsrKXRbblthXV09ITB9LG92ZXJyaWRlQWxsOmh9fSx7Ii4uL2xpYiI6NzE3fV0sNzQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCJnbC1tYXQ0L2Zyb21RdWF0IiksaT10KCIuLi9yZWdpc3RyeSIpLG89dCgiLi4vbGliIikscz10KCIuLi9wbG90cy9wbG90cyIpLGw9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIiksYz10KCIuLi9jb21wb25lbnRzL2NvbG9yIiksdT1sLmNsZWFuSWQsaD1sLmdldEZyb21UcmFjZSxmPWkudHJhY2VJcztmdW5jdGlvbiBwKHQsZSl7dmFyIHI9dFtlXSxuPWUuY2hhckF0KDApO3ImJiJwYXBlciIhPT1yJiYodFtlXT11KHIsbikpfWZ1bmN0aW9uIGQodCl7ZnVuY3Rpb24gZShlLHIpe3ZhciBuPXRbZV0sYT10LnRpdGxlJiZ0LnRpdGxlW3JdO24mJiFhJiYodC50aXRsZXx8KHQudGl0bGU9e30pLHQudGl0bGVbcl09dFtlXSxkZWxldGUgdFtlXSl9dCYmKCJzdHJpbmciIT10eXBlb2YgdC50aXRsZSYmIm51bWJlciIhPXR5cGVvZiB0LnRpdGxlfHwodC50aXRsZT17dGV4dDp0LnRpdGxlfSksZSgidGl0bGVmb250IiwiZm9udCIpLGUoInRpdGxlcG9zaXRpb24iLCJwb3NpdGlvbiIpLGUoInRpdGxlc2lkZSIsInNpZGUiKSxlKCJ0aXRsZW9mZnNldCIsIm9mZnNldCIpKX1mdW5jdGlvbiBnKHQpe2lmKCFvLmlzUGxhaW5PYmplY3QodCkpcmV0dXJuITE7dmFyIGU9dC5uYW1lO3JldHVybiBkZWxldGUgdC5uYW1lLGRlbGV0ZSB0LnNob3dsZWdlbmQsKCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlKSYmU3RyaW5nKGUpfWZ1bmN0aW9uIHYodCxlLHIsbil7aWYociYmIW4pcmV0dXJuIHQ7aWYobiYmIXIpcmV0dXJuIGU7aWYoIXQudHJpbSgpKXJldHVybiBlO2lmKCFlLnRyaW0oKSlyZXR1cm4gdDt2YXIgYSxpPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKTtmb3IoYT0wO2E8aSYmdC5jaGFyQXQoYSk9PT1lLmNoYXJBdChhKTthKyspO3JldHVybiB0LnN1YnN0cigwLGEpLnRyaW0oKX1mdW5jdGlvbiBtKHQpe3ZhciBlPSJtaWRkbGUiLHI9ImNlbnRlciI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYoLTEhPT10LmluZGV4T2YoInRvcCIpP2U9InRvcCI6LTEhPT10LmluZGV4T2YoImJvdHRvbSIpJiYoZT0iYm90dG9tIiksLTEhPT10LmluZGV4T2YoImxlZnQiKT9yPSJsZWZ0IjotMSE9PXQuaW5kZXhPZigicmlnaHQiKSYmKHI9InJpZ2h0IikpLGUrIiAiK3J9ZnVuY3Rpb24geSh0LGUpe3JldHVybiBlIGluIHQmJiJvYmplY3QiPT10eXBlb2YgdFtlXSYmMD09PU9iamVjdC5rZXlzKHRbZV0pLmxlbmd0aH1yLmNsZWFyUHJvbWlzZVF1ZXVlPWZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkodC5fcHJvbWlzZXMpJiZ0Ll9wcm9taXNlcy5sZW5ndGg+MCYmby5sb2coIkNsZWFyaW5nIHByZXZpb3VzIHJlamVjdGVkIHByb21pc2VzIGZyb20gcXVldWUuIiksdC5fcHJvbWlzZXM9W119LHIuY2xlYW5MYXlvdXQ9ZnVuY3Rpb24odCl7dmFyIGUsbjt0fHwodD17fSksdC54YXhpczEmJih0LnhheGlzfHwodC54YXhpcz10LnhheGlzMSksZGVsZXRlIHQueGF4aXMxKSx0LnlheGlzMSYmKHQueWF4aXN8fCh0LnlheGlzPXQueWF4aXMxKSxkZWxldGUgdC55YXhpczEpLHQuc2NlbmUxJiYodC5zY2VuZXx8KHQuc2NlbmU9dC5zY2VuZTEpLGRlbGV0ZSB0LnNjZW5lMSk7dmFyIGk9KHMuc3VicGxvdHNSZWdpc3RyeS5jYXJ0ZXNpYW58fHt9KS5hdHRyUmVnZXgsbD0ocy5zdWJwbG90c1JlZ2lzdHJ5LnBvbGFyfHx7fSkuYXR0clJlZ2V4LGg9KHMuc3VicGxvdHNSZWdpc3RyeS50ZXJuYXJ5fHx7fSkuYXR0clJlZ2V4LGY9KHMuc3VicGxvdHNSZWdpc3RyeS5nbDNkfHx7fSkuYXR0clJlZ2V4LGc9T2JqZWN0LmtleXModCk7Zm9yKGU9MDtlPGcubGVuZ3RoO2UrKyl7dmFyIHY9Z1tlXTtpZihpJiZpLnRlc3Qodikpe3ZhciBtPXRbdl07bS5hbmNob3ImJiJmcmVlIiE9PW0uYW5jaG9yJiYobS5hbmNob3I9dShtLmFuY2hvcikpLG0ub3ZlcmxheWluZyYmKG0ub3ZlcmxheWluZz11KG0ub3ZlcmxheWluZykpLG0udHlwZXx8KG0uaXNkYXRlP20udHlwZT0iZGF0ZSI6bS5pc2xvZz9tLnR5cGU9ImxvZyI6ITE9PT1tLmlzZGF0ZSYmITE9PT1tLmlzbG9nJiYobS50eXBlPSJsaW5lYXIiKSksIndpdGh6ZXJvIiE9PW0uYXV0b3JhbmdlJiYidG96ZXJvIiE9PW0uYXV0b3JhbmdlfHwobS5hdXRvcmFuZ2U9ITAsbS5yYW5nZW1vZGU9InRvemVybyIpLGRlbGV0ZSBtLmlzbG9nLGRlbGV0ZSBtLmlzZGF0ZSxkZWxldGUgbS5jYXRlZ29yaWVzLHkobSwiZG9tYWluIikmJmRlbGV0ZSBtLmRvbWFpbix2b2lkIDAhPT1tLmF1dG90aWNrJiYodm9pZCAwPT09bS50aWNrbW9kZSYmKG0udGlja21vZGU9bS5hdXRvdGljaz8iYXV0byI6ImxpbmVhciIpLGRlbGV0ZSBtLmF1dG90aWNrKSxkKG0pfWVsc2UgaWYobCYmbC50ZXN0KHYpKXtkKHRbdl0ucmFkaWFsYXhpcyl9ZWxzZSBpZihoJiZoLnRlc3Qodikpe3ZhciB4PXRbdl07ZCh4LmFheGlzKSxkKHguYmF4aXMpLGQoeC5jYXhpcyl9ZWxzZSBpZihmJiZmLnRlc3Qodikpe3ZhciBiPXRbdl0sXz1iLmNhbWVyYXBvc2l0aW9uO2lmKEFycmF5LmlzQXJyYXkoXykmJjQ9PT1fWzBdLmxlbmd0aCl7dmFyIHc9X1swXSxrPV9bMV0sVD1fWzJdLE09YShbXSx3KSxBPVtdO2ZvcihuPTA7bjwzOysrbilBW25dPWtbbl0rVCpNWzIrNCpuXTtiLmNhbWVyYT17ZXllOnt4OkFbMF0seTpBWzFdLHo6QVsyXX0sY2VudGVyOnt4OmtbMF0seTprWzFdLHo6a1syXX0sdXA6e3g6MCx5OjAsejoxfX0sZGVsZXRlIGIuY2FtZXJhcG9zaXRpb259ZChiLnhheGlzKSxkKGIueWF4aXMpLGQoYi56YXhpcyl9fXZhciBTPUFycmF5LmlzQXJyYXkodC5hbm5vdGF0aW9ucyk/dC5hbm5vdGF0aW9ucy5sZW5ndGg6MDtmb3IoZT0wO2U8UztlKyspe3ZhciBFPXQuYW5ub3RhdGlvbnNbZV07by5pc1BsYWluT2JqZWN0KEUpJiYoRS5yZWYmJigicGFwZXIiPT09RS5yZWY/KEUueHJlZj0icGFwZXIiLEUueXJlZj0icGFwZXIiKToiZGF0YSI9PT1FLnJlZiYmKEUueHJlZj0ieCIsRS55cmVmPSJ5IiksZGVsZXRlIEUucmVmKSxwKEUsInhyZWYiKSxwKEUsInlyZWYiKSl9dmFyIEw9QXJyYXkuaXNBcnJheSh0LnNoYXBlcyk/dC5zaGFwZXMubGVuZ3RoOjA7Zm9yKGU9MDtlPEw7ZSsrKXt2YXIgQz10LnNoYXBlc1tlXTtvLmlzUGxhaW5PYmplY3QoQykmJihwKEMsInhyZWYiKSxwKEMsInlyZWYiKSl9dmFyIFA9dC5sZWdlbmQ7cmV0dXJuIFAmJihQLng+Mz8oUC54PTEuMDIsUC54YW5jaG9yPSJsZWZ0Iik6UC54PC0yJiYoUC54PS0uMDIsUC54YW5jaG9yPSJyaWdodCIpLFAueT4zPyhQLnk9MS4wMixQLnlhbmNob3I9ImJvdHRvbSIpOlAueTwtMiYmKFAueT0tLjAyLFAueWFuY2hvcj0idG9wIikpLGQodCksInJvdGF0ZSI9PT10LmRyYWdtb2RlJiYodC5kcmFnbW9kZT0ib3JiaXQiKSxjLmNsZWFuKHQpLHQudGVtcGxhdGUmJnQudGVtcGxhdGUubGF5b3V0JiZyLmNsZWFuTGF5b3V0KHQudGVtcGxhdGUubGF5b3V0KSx0fSxyLmNsZWFuRGF0YT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG4sYT10W2VdO2lmKCJoaXN0b2dyYW15Ij09PWEudHlwZSYmInhiaW5zImluIGEmJiEoInliaW5zImluIGEpJiYoYS55Ymlucz1hLnhiaW5zLGRlbGV0ZSBhLnhiaW5zKSxhLmVycm9yX3kmJiJvcGFjaXR5ImluIGEuZXJyb3JfeSl7dmFyIGw9Yy5kZWZhdWx0cyxoPWEuZXJyb3JfeS5jb2xvcnx8KGYoYSwiYmFyIik/Yy5kZWZhdWx0TGluZTpsW2UlbC5sZW5ndGhdKTthLmVycm9yX3kuY29sb3I9Yy5hZGRPcGFjaXR5KGMucmdiKGgpLGMub3BhY2l0eShoKSphLmVycm9yX3kub3BhY2l0eSksZGVsZXRlIGEuZXJyb3JfeS5vcGFjaXR5fWlmKCJiYXJkaXIiaW4gYSYmKCJoIiE9PWEuYmFyZGlyfHwhZihhLCJiYXIiKSYmImhpc3RvZ3JhbSIhPT1hLnR5cGUuc3Vic3RyKDAsOSl8fChhLm9yaWVudGF0aW9uPSJoIixyLnN3YXBYWURhdGEoYSkpLGRlbGV0ZSBhLmJhcmRpciksImhpc3RvZ3JhbXkiPT09YS50eXBlJiZyLnN3YXBYWURhdGEoYSksImhpc3RvZ3JhbXgiIT09YS50eXBlJiYiaGlzdG9ncmFteSIhPT1hLnR5cGV8fChhLnR5cGU9Imhpc3RvZ3JhbSIpLCJzY2wiaW4gYSYmISgiY29sb3JzY2FsZSJpbiBhKSYmKGEuY29sb3JzY2FsZT1hLnNjbCxkZWxldGUgYS5zY2wpLCJyZXZlcnNlc2NsImluIGEmJiEoInJldmVyc2VzY2FsZSJpbiBhKSYmKGEucmV2ZXJzZXNjYWxlPWEucmV2ZXJzZXNjbCxkZWxldGUgYS5yZXZlcnNlc2NsKSxhLnhheGlzJiYoYS54YXhpcz11KGEueGF4aXMsIngiKSksYS55YXhpcyYmKGEueWF4aXM9dShhLnlheGlzLCJ5IikpLGYoYSwiZ2wzZCIpJiZhLnNjZW5lJiYoYS5zY2VuZT1zLnN1YnBsb3RzUmVnaXN0cnkuZ2wzZC5jbGVhbklkKGEuc2NlbmUpKSwhZihhLCJwaWUtbGlrZSIpJiYhZihhLCJiYXItbGlrZSIpKWlmKEFycmF5LmlzQXJyYXkoYS50ZXh0cG9zaXRpb24pKWZvcihuPTA7bjxhLnRleHRwb3NpdGlvbi5sZW5ndGg7bisrKWEudGV4dHBvc2l0aW9uW25dPW0oYS50ZXh0cG9zaXRpb25bbl0pO2Vsc2UgYS50ZXh0cG9zaXRpb24mJihhLnRleHRwb3NpdGlvbj1tKGEudGV4dHBvc2l0aW9uKSk7dmFyIHA9aS5nZXRNb2R1bGUoYSk7aWYocCYmcC5jb2xvcmJhcil7dmFyIHg9cC5jb2xvcmJhci5jb250YWluZXIsYj14P2FbeF06YTtiJiZiLmNvbG9yc2NhbGUmJigiWUlHbkJ1Ij09PWIuY29sb3JzY2FsZSYmKGIuY29sb3JzY2FsZT0iWWxHbkJ1IiksIllJT3JSZCI9PT1iLmNvbG9yc2NhbGUmJihiLmNvbG9yc2NhbGU9IllsT3JSZCIpKX1pZigic3VyZmFjZSI9PT1hLnR5cGUmJm8uaXNQbGFpbk9iamVjdChhLmNvbnRvdXJzKSl7dmFyIF89WyJ4IiwieSIsInoiXTtmb3Iobj0wO248Xy5sZW5ndGg7bisrKXt2YXIgdz1hLmNvbnRvdXJzW19bbl1dO28uaXNQbGFpbk9iamVjdCh3KSYmKHcuaGlnaGxpZ2h0Q29sb3ImJih3LmhpZ2hsaWdodGNvbG9yPXcuaGlnaGxpZ2h0Q29sb3IsZGVsZXRlIHcuaGlnaGxpZ2h0Q29sb3IpLHcuaGlnaGxpZ2h0V2lkdGgmJih3LmhpZ2hsaWdodHdpZHRoPXcuaGlnaGxpZ2h0V2lkdGgsZGVsZXRlIHcuaGlnaGxpZ2h0V2lkdGgpKX19aWYoImNhbmRsZXN0aWNrIj09PWEudHlwZXx8Im9obGMiPT09YS50eXBlKXt2YXIgaz0hMSE9PShhLmluY3JlYXNpbmd8fHt9KS5zaG93bGVnZW5kLFQ9ITEhPT0oYS5kZWNyZWFzaW5nfHx7fSkuc2hvd2xlZ2VuZCxNPWcoYS5pbmNyZWFzaW5nKSxBPWcoYS5kZWNyZWFzaW5nKTtpZighMSE9PU0mJiExIT09QSl7dmFyIFM9dihNLEEsayxUKTtTJiYoYS5uYW1lPVMpfWVsc2UhTSYmIUF8fGEubmFtZXx8KGEubmFtZT1NfHxBKX1pZihBcnJheS5pc0FycmF5KGEudHJhbnNmb3Jtcykpe3ZhciBFPWEudHJhbnNmb3Jtcztmb3Iobj0wO248RS5sZW5ndGg7bisrKXt2YXIgTD1FW25dO2lmKG8uaXNQbGFpbk9iamVjdChMKSlzd2l0Y2goTC50eXBlKXtjYXNlImZpbHRlciI6TC5maWx0ZXJzcmMmJihMLnRhcmdldD1MLmZpbHRlcnNyYyxkZWxldGUgTC5maWx0ZXJzcmMpLEwuY2FsZW5kYXImJihMLnZhbHVlY2FsZW5kYXJ8fChMLnZhbHVlY2FsZW5kYXI9TC5jYWxlbmRhciksZGVsZXRlIEwuY2FsZW5kYXIpO2JyZWFrO2Nhc2UiZ3JvdXBieSI6aWYoTC5zdHlsZXM9TC5zdHlsZXN8fEwuc3R5bGUsTC5zdHlsZXMmJiFBcnJheS5pc0FycmF5KEwuc3R5bGVzKSl7dmFyIEM9TC5zdHlsZXMsUD1PYmplY3Qua2V5cyhDKTtMLnN0eWxlcz1bXTtmb3IodmFyIE89MDtPPFAubGVuZ3RoO08rKylMLnN0eWxlcy5wdXNoKHt0YXJnZXQ6UFtPXSx2YWx1ZTpDW1BbT11dfSl9fX19eShhLCJsaW5lIikmJmRlbGV0ZSBhLmxpbmUsIm1hcmtlciJpbiBhJiYoeShhLm1hcmtlciwibGluZSIpJiZkZWxldGUgYS5tYXJrZXIubGluZSx5KGEsIm1hcmtlciIpJiZkZWxldGUgYS5tYXJrZXIpLGMuY2xlYW4oYSksYS5hdXRvYmlueCYmKGRlbGV0ZSBhLmF1dG9iaW54LGRlbGV0ZSBhLnhiaW5zKSxhLmF1dG9iaW55JiYoZGVsZXRlIGEuYXV0b2JpbnksZGVsZXRlIGEueWJpbnMpLGQoYSksYS5jb2xvcmJhciYmZChhLmNvbG9yYmFyKSxhLm1hcmtlciYmYS5tYXJrZXIuY29sb3JiYXImJmQoYS5tYXJrZXIuY29sb3JiYXIpLGEubGluZSYmYS5saW5lLmNvbG9yYmFyJiZkKGEubGluZS5jb2xvcmJhciksYS5hYXhpcyYmZChhLmFheGlzKSxhLmJheGlzJiZkKGEuYmF4aXMpfX0sci5zd2FwWFlEYXRhPWZ1bmN0aW9uKHQpe3ZhciBlO2lmKG8uc3dhcEF0dHJzKHQsWyI/IiwiPzAiLCJkPyIsIj9iaW5zIiwibmJpbnM/IiwiYXV0b2Jpbj8iLCI/c3JjIiwiZXJyb3JfPyJdKSxBcnJheS5pc0FycmF5KHQueikmJkFycmF5LmlzQXJyYXkodC56WzBdKSYmKHQudHJhbnNwb3NlP2RlbGV0ZSB0LnRyYW5zcG9zZTp0LnRyYW5zcG9zZT0hMCksdC5lcnJvcl94JiZ0LmVycm9yX3kpe3ZhciByPXQuZXJyb3JfeSxuPSJjb3B5X3lzdHlsZSJpbiByP3IuY29weV95c3R5bGU6IShyLmNvbG9yfHxyLnRoaWNrbmVzc3x8ci53aWR0aCk7by5zd2FwQXR0cnModCxbImVycm9yXz8uY29weV95c3R5bGUiXSksbiYmby5zd2FwQXR0cnModCxbImVycm9yXz8uY29sb3IiLCJlcnJvcl8/LnRoaWNrbmVzcyIsImVycm9yXz8ud2lkdGgiXSl9aWYoInN0cmluZyI9PXR5cGVvZiB0LmhvdmVyaW5mbyl7dmFyIGE9dC5ob3ZlcmluZm8uc3BsaXQoIisiKTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKSJ4Ij09PWFbZV0/YVtlXT0ieSI6InkiPT09YVtlXSYmKGFbZV09IngiKTt0LmhvdmVyaW5mbz1hLmpvaW4oIisiKX19LHIuY29lcmNlVHJhY2VJbmRpY2VzPWZ1bmN0aW9uKHQsZSl7aWYobihlKSlyZXR1cm5bZV07aWYoIUFycmF5LmlzQXJyYXkoZSl8fCFlLmxlbmd0aClyZXR1cm4gdC5kYXRhLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBlfSk7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByPVtdLGE9MDthPGUubGVuZ3RoO2ErKylvLmlzSW5kZXgoZVthXSx0LmRhdGEubGVuZ3RoKT9yLnB1c2goZVthXSk6by53YXJuKCJ0cmFjZSBpbmRleCAoIixlW2FdLCIpIGlzIG5vdCBhIG51bWJlciBvciBpcyBvdXQgb2YgYm91bmRzIik7cmV0dXJuIHJ9cmV0dXJuIGV9LHIubWFuYWdlQXJyYXlDb250YWluZXJzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10Lm9iaixpPXQucGFydHMscz1pLmxlbmd0aCxsPWlbcy0xXSxjPW4obCk7aWYoYyYmbnVsbD09PWUpe3ZhciB1PWkuc2xpY2UoMCxzLTEpLmpvaW4oIi4iKTtvLm5lc3RlZFByb3BlcnR5KGEsdSkuZ2V0KCkuc3BsaWNlKGwsMSl9ZWxzZSBjJiZ2b2lkIDA9PT10LmdldCgpPyh2b2lkIDA9PT10LmdldCgpJiYoclt0LmFzdHJdPW51bGwpLHQuc2V0KGUpKTp0LnNldChlKX07dmFyIHg9LyhcLlteXFtcXVwuXSt8XFtbXlxbXF1cLl0rXF0pJC87ZnVuY3Rpb24gYih0KXt2YXIgZT10LnNlYXJjaCh4KTtpZihlPjApcmV0dXJuIHQuc3Vic3RyKDAsZSl9ci5oYXNQYXJlbnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9YihlKTtyOyl7aWYociBpbiB0KXJldHVybiEwO3I9YihyKX1yZXR1cm4hMX07dmFyIF89WyJ4IiwieSIsInoiXTtyLmNsZWFyQXhpc1R5cGVzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylmb3IodmFyIGE9dC5fZnVsbERhdGFbbl0saT0wO2k8MztpKyspe3ZhciBzPWgodCxhLF9baV0pO2lmKHMmJiJsb2ciIT09cy50eXBlKXt2YXIgbD1zLl9uYW1lLGM9cy5faWQuc3Vic3RyKDEpO2lmKCJzY2VuZSI9PT1jLnN1YnN0cigwLDUpKXtpZih2b2lkIDAhPT1yW2NdKWNvbnRpbnVlO2w9YysiLiIrbH12YXIgdT1sKyIudHlwZSI7dm9pZCAwPT09cltsXSYmdm9pZCAwPT09clt1XSYmby5uZXN0ZWRQcm9wZXJ0eSh0LmxheW91dCx1KS5zZXQobnVsbCl9fX19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi9saWIiOjcxNywiLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uL3Bsb3RzL3Bsb3RzIjo4MjYsIi4uL3JlZ2lzdHJ5Ijo4NDYsImZhc3QtaXNudW1lcmljIjoyMjgsImdsLW1hdDQvZnJvbVF1YXQiOjI2NX1dLDc1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3Bsb3RfYXBpIik7ci5wbG90PW4ucGxvdCxyLm5ld1Bsb3Q9bi5uZXdQbG90LHIucmVzdHlsZT1uLnJlc3R5bGUsci5yZWxheW91dD1uLnJlbGF5b3V0LHIucmVkcmF3PW4ucmVkcmF3LHIudXBkYXRlPW4udXBkYXRlLHIuX2d1aVJlc3R5bGU9bi5fZ3VpUmVzdHlsZSxyLl9ndWlSZWxheW91dD1uLl9ndWlSZWxheW91dCxyLl9ndWlVcGRhdGU9bi5fZ3VpVXBkYXRlLHIuX3N0b3JlRGlyZWN0R1VJRWRpdD1uLl9zdG9yZURpcmVjdEdVSUVkaXQsci5yZWFjdD1uLnJlYWN0LHIuZXh0ZW5kVHJhY2VzPW4uZXh0ZW5kVHJhY2VzLHIucHJlcGVuZFRyYWNlcz1uLnByZXBlbmRUcmFjZXMsci5hZGRUcmFjZXM9bi5hZGRUcmFjZXMsci5kZWxldGVUcmFjZXM9bi5kZWxldGVUcmFjZXMsci5tb3ZlVHJhY2VzPW4ubW92ZVRyYWNlcyxyLnB1cmdlPW4ucHVyZ2Usci5hZGRGcmFtZXM9bi5hZGRGcmFtZXMsci5kZWxldGVGcmFtZXM9bi5kZWxldGVGcmFtZXMsci5hbmltYXRlPW4uYW5pbWF0ZSxyLnNldFBsb3RDb25maWc9bi5zZXRQbG90Q29uZmlnLHIudG9JbWFnZT10KCIuL3RvX2ltYWdlIiksci52YWxpZGF0ZT10KCIuL3ZhbGlkYXRlIiksci5kb3dubG9hZEltYWdlPXQoIi4uL3NuYXBzaG90L2Rvd25sb2FkIik7dmFyIGE9dCgiLi90ZW1wbGF0ZV9hcGkiKTtyLm1ha2VUZW1wbGF0ZT1hLm1ha2VUZW1wbGF0ZSxyLnZhbGlkYXRlVGVtcGxhdGU9YS52YWxpZGF0ZVRlbXBsYXRlfSx7Ii4uL3NuYXBzaG90L2Rvd25sb2FkIjo4NDgsIi4vcGxvdF9hcGkiOjc1MiwiLi90ZW1wbGF0ZV9hcGkiOjc1NywiLi90b19pbWFnZSI6NzU4LCIuL3ZhbGlkYXRlIjo3NTl9XSw3NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliL2lzX3BsYWluX29iamVjdCIpLGE9dCgiLi4vbGliL25vb3AiKSxpPXQoIi4uL2xpYi9sb2dnZXJzIiksbz10KCIuLi9saWIvc2VhcmNoIikuc29ydGVyQXNjLHM9dCgiLi4vcmVnaXN0cnkiKTtyLmNvbnRhaW5lckFycmF5TWF0Y2g9dCgiLi9jb250YWluZXJfYXJyYXlfbWF0Y2giKTt2YXIgbD1yLmlzQWRkVmFsPWZ1bmN0aW9uKHQpe3JldHVybiJhZGQiPT09dHx8bih0KX0sYz1yLmlzUmVtb3ZlVmFsPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dHx8InJlbW92ZSI9PT10fTtyLmFwcGx5Q29udGFpbmVyQXJyYXlDaGFuZ2VzPWZ1bmN0aW9uKHQsZSxyLG4sdSl7dmFyIGg9ZS5hc3RyLGY9cy5nZXRDb21wb25lbnRNZXRob2QoaCwic3VwcGx5TGF5b3V0RGVmYXVsdHMiKSxwPXMuZ2V0Q29tcG9uZW50TWV0aG9kKGgsImRyYXciKSxkPXMuZ2V0Q29tcG9uZW50TWV0aG9kKGgsImRyYXdPbmUiKSxnPW4ucmVwbG90fHxuLnJlY2FsY3x8Zj09PWF8fHA9PT1hLHY9dC5sYXlvdXQsbT10Ll9mdWxsTGF5b3V0O2lmKHJbIiJdKXtPYmplY3Qua2V5cyhyKS5sZW5ndGg+MSYmaS53YXJuKCJGdWxsIGFycmF5IGVkaXRzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBvdGhlciBlZGl0cyIsaCk7dmFyIHk9clsiIl1bIiJdO2lmKGMoeSkpZS5zZXQobnVsbCk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh5KSlyZXR1cm4gaS53YXJuKCJVbnJlY29nbml6ZWQgZnVsbCBhcnJheSBlZGl0IHZhbHVlIixoLHkpLCEwO2Uuc2V0KHkpfXJldHVybiFnJiYoZih2LG0pLHAodCksITApfXZhciB4LGIsXyx3LGssVCxNLEEsUz1PYmplY3Qua2V5cyhyKS5tYXAoTnVtYmVyKS5zb3J0KG8pLEU9ZS5nZXQoKSxMPUV8fFtdLEM9dShtLGgpLmdldCgpLFA9W10sTz0tMSx6PUwubGVuZ3RoO2Zvcih4PTA7eDxTLmxlbmd0aDt4KyspaWYodz1yW189U1t4XV0saz1PYmplY3Qua2V5cyh3KSxUPXdbIiJdLE09bChUKSxfPDB8fF8+TC5sZW5ndGgtKE0/MDoxKSlpLndhcm4oImluZGV4IG91dCBvZiByYW5nZSIsaCxfKTtlbHNlIGlmKHZvaWQgMCE9PVQpay5sZW5ndGg+MSYmaS53YXJuKCJJbnNlcnRpb24gJiByZW1vdmFsIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBlZGl0cyB0byB0aGUgc2FtZSBpbmRleC4iLGgsXyksYyhUKT9QLnB1c2goXyk6TT8oImFkZCI9PT1UJiYoVD17fSksTC5zcGxpY2UoXywwLFQpLEMmJkMuc3BsaWNlKF8sMCx7fSkpOmkud2FybigiVW5yZWNvZ25pemVkIGZ1bGwgb2JqZWN0IGVkaXQgdmFsdWUiLGgsXyxUKSwtMT09PU8mJihPPV8pO2Vsc2UgZm9yKGI9MDtiPGsubGVuZ3RoO2IrKylBPWgrIlsiK18rIl0uIix1KExbX10sa1tiXSxBKS5zZXQod1trW2JdXSk7Zm9yKHg9UC5sZW5ndGgtMTt4Pj0wO3gtLSlMLnNwbGljZShQW3hdLDEpLEMmJkMuc3BsaWNlKFBbeF0sMSk7aWYoTC5sZW5ndGg/RXx8ZS5zZXQoTCk6ZS5zZXQobnVsbCksZylyZXR1cm4hMTtpZihmKHYsbSksZCE9PWEpe3ZhciBJO2lmKC0xPT09TylJPVM7ZWxzZXtmb3Ioej1NYXRoLm1heChMLmxlbmd0aCx6KSxJPVtdLHg9MDt4PFMubGVuZ3RoJiYhKChfPVNbeF0pPj1PKTt4KyspSS5wdXNoKF8pO2Zvcih4PU87eDx6O3grKylJLnB1c2goeCl9Zm9yKHg9MDt4PEkubGVuZ3RoO3grKylkKHQsSVt4XSl9ZWxzZSBwKHQpO3JldHVybiEwfX0seyIuLi9saWIvaXNfcGxhaW5fb2JqZWN0Ijo3MTgsIi4uL2xpYi9sb2dnZXJzIjo3MjEsIi4uL2xpYi9ub29wIjo3MjYsIi4uL2xpYi9zZWFyY2giOjczNiwiLi4vcmVnaXN0cnkiOjg0NiwiLi9jb250YWluZXJfYXJyYXlfbWF0Y2giOjc0N31dLDc1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoImhhcy1ob3ZlciIpLG89dCgiLi4vbGliIikscz1vLm5lc3RlZFByb3BlcnR5LGw9dCgiLi4vbGliL2V2ZW50cyIpLGM9dCgiLi4vbGliL3F1ZXVlIiksdT10KCIuLi9yZWdpc3RyeSIpLGg9dCgiLi9wbG90X3NjaGVtYSIpLGY9dCgiLi4vcGxvdHMvcGxvdHMiKSxwPXQoIi4uL3Bsb3RzL3BvbGFyL2xlZ2FjeSIpLGQ9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxnPXQoIi4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHY9dCgiLi4vY29tcG9uZW50cy9jb2xvciIpLG09dCgiLi4vcGxvdHMvY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IikuaW5pdEludGVyYWN0aW9ucyx5PXQoIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIikseD10KCIuLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxiPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9zZWxlY3QiKS5jbGVhclNlbGVjdCxfPXQoIi4vcGxvdF9jb25maWciKS5kZmx0Q29uZmlnLHc9dCgiLi9tYW5hZ2VfYXJyYXlzIiksaz10KCIuL2hlbHBlcnMiKSxUPXQoIi4vc3Vicm91dGluZXMiKSxNPXQoIi4vZWRpdF90eXBlcyIpLEE9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyIpLkFYX05BTUVfUEFUVEVSTixTPTAsRT01O2Z1bmN0aW9uIEwodCl7dmFyIGU9dC5fZnVsbExheW91dDtlLl9yZWRyYXdGcm9tQXV0b01hcmdpbkNvdW50P2UuX3JlZHJhd0Zyb21BdXRvTWFyZ2luQ291bnQtLTp0LmVtaXQoInBsb3RseV9hZnRlcnBsb3QiKX1mdW5jdGlvbiBDKHQsZSl7dHJ5e3QuX2Z1bGxMYXlvdXQuX3BhcGVyLnN0eWxlKCJiYWNrZ3JvdW5kIixlKX1jYXRjaCh0KXtvLmVycm9yKHQpfX1mdW5jdGlvbiBQKHQsZSl7Qyh0LHYuY29tYmluZShlLCJ3aGl0ZSIpKX1mdW5jdGlvbiBPKHQsZSl7aWYoIXQuX2NvbnRleHQpe3QuX2NvbnRleHQ9by5leHRlbmREZWVwKHt9LF8pO3ZhciByPW4uc2VsZWN0KCJiYXNlIik7dC5fY29udGV4dC5fYmFzZVVybD1yLnNpemUoKSYmci5hdHRyKCJocmVmIik/d2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoIiMiKVswXToiIn12YXIgYSxzLGwsYz10Ll9jb250ZXh0O2lmKGUpe2ZvcihzPU9iamVjdC5rZXlzKGUpLGE9MDthPHMubGVuZ3RoO2ErKykiZWRpdGFibGUiIT09KGw9c1thXSkmJiJlZGl0cyIhPT1sJiZsIGluIGMmJigic2V0QmFja2dyb3VuZCI9PT1sJiYib3BhcXVlIj09PWVbbF0/Y1tsXT1QOmNbbF09ZVtsXSk7ZS5wbG90M2RQaXhlbFJhdGlvJiYhYy5wbG90R2xQaXhlbFJhdGlvJiYoYy5wbG90R2xQaXhlbFJhdGlvPWMucGxvdDNkUGl4ZWxSYXRpbyk7dmFyIHU9ZS5lZGl0YWJsZTtpZih2b2lkIDAhPT11KWZvcihjLmVkaXRhYmxlPXUscz1PYmplY3Qua2V5cyhjLmVkaXRzKSxhPTA7YTxzLmxlbmd0aDthKyspYy5lZGl0c1tzW2FdXT11O2lmKGUuZWRpdHMpZm9yKHM9T2JqZWN0LmtleXMoZS5lZGl0cyksYT0wO2E8cy5sZW5ndGg7YSsrKShsPXNbYV0paW4gYy5lZGl0cyYmKGMuZWRpdHNbbF09ZS5lZGl0c1tsXSk7Yy5fZXhwb3J0ZWRQbG90PWUuX2V4cG9ydGVkUGxvdH1jLnN0YXRpY1Bsb3QmJihjLmVkaXRhYmxlPSExLGMuZWRpdHM9e30sYy5hdXRvc2l6YWJsZT0hMSxjLnNjcm9sbFpvb209ITEsYy5kb3VibGVDbGljaz0hMSxjLnNob3dUaXBzPSExLGMuc2hvd0xpbms9ITEsYy5kaXNwbGF5TW9kZUJhcj0hMSksImhvdmVyIiE9PWMuZGlzcGxheU1vZGVCYXJ8fGl8fChjLmRpc3BsYXlNb2RlQmFyPSEwKSwidHJhbnNwYXJlbnQiIT09Yy5zZXRCYWNrZ3JvdW5kJiYiZnVuY3Rpb24iPT10eXBlb2YgYy5zZXRCYWNrZ3JvdW5kfHwoYy5zZXRCYWNrZ3JvdW5kPUMpLGMuX2hhc1plcm9IZWlnaHQ9Yy5faGFzWmVyb0hlaWdodHx8MD09PXQuY2xpZW50SGVpZ2h0LGMuX2hhc1plcm9XaWR0aD1jLl9oYXNaZXJvV2lkdGh8fDA9PT10LmNsaWVudFdpZHRoO3ZhciBoPWMuc2Nyb2xsWm9vbSxmPWMuX3Njcm9sbFpvb209e307aWYoITA9PT1oKWYuY2FydGVzaWFuPTEsZi5nbDNkPTEsZi5nZW89MSxmLm1hcGJveD0xO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBoKXt2YXIgcD1oLnNwbGl0KCIrIik7Zm9yKGE9MDthPHAubGVuZ3RoO2ErKylmW3BbYV1dPTF9ZWxzZSExIT09aCYmKGYuZ2wzZD0xLGYuZ2VvPTEsZi5tYXBib3g9MSl9ZnVuY3Rpb24geih0LGUpe3ZhciByLG4sYT1lKzEsaT1bXTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKShuPXRbcl0pPDA/aS5wdXNoKGErbik6aS5wdXNoKG4pO3JldHVybiBpfWZ1bmN0aW9uIEkodCxlLHIpe3ZhciBuLGE7Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl7aWYoKGE9ZVtuXSkhPT1wYXJzZUludChhLDEwKSl0aHJvdyBuZXcgRXJyb3IoImFsbCB2YWx1ZXMgaW4gIityKyIgbXVzdCBiZSBpbnRlZ2VycyIpO2lmKGE+PXQuZGF0YS5sZW5ndGh8fGE8LXQuZGF0YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKHIrIiBtdXN0IGJlIHZhbGlkIGluZGljZXMgZm9yIGdkLmRhdGEuIik7aWYoZS5pbmRleE9mKGEsbisxKT4tMXx8YT49MCYmZS5pbmRleE9mKC10LmRhdGEubGVuZ3RoK2EpPi0xfHxhPDAmJmUuaW5kZXhPZih0LmRhdGEubGVuZ3RoK2EpPi0xKXRocm93IG5ldyBFcnJvcigiZWFjaCBpbmRleCBpbiAiK3IrIiBtdXN0IGJlIHVuaXF1ZS4iKX19ZnVuY3Rpb24gRCh0LGUscil7aWYoIUFycmF5LmlzQXJyYXkodC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdkLmRhdGEgbXVzdCBiZSBhbiBhcnJheS4iKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJjdXJyZW50SW5kaWNlcyBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LiIpO2lmKEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksSSh0LGUsImN1cnJlbnRJbmRpY2VzIiksInVuZGVmaW5lZCI9PXR5cGVvZiByfHxBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pLCJ1bmRlZmluZWQiIT10eXBlb2YgciYmSSh0LHIsIm5ld0luZGljZXMiKSwidW5kZWZpbmVkIiE9dHlwZW9mIHImJmUubGVuZ3RoIT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJjdXJyZW50IGFuZCBuZXcgaW5kaWNlcyBtdXN0IGJlIG9mIGVxdWFsIGxlbmd0aC4iKX1mdW5jdGlvbiBSKHQsZSxyLG4saSl7IWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW8uaXNQbGFpbk9iamVjdChuKTtpZighQXJyYXkuaXNBcnJheSh0LmRhdGEpKXRocm93IG5ldyBFcnJvcigiZ2QuZGF0YSBtdXN0IGJlIGFuIGFycmF5Iik7aWYoIW8uaXNQbGFpbk9iamVjdChlKSl0aHJvdyBuZXcgRXJyb3IoInVwZGF0ZSBtdXN0IGJlIGEga2V5OnZhbHVlIG9iamVjdCIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoImluZGljZXMgbXVzdCBiZSBhbiBpbnRlZ2VyIG9yIGFycmF5IG9mIGludGVnZXJzIik7Zm9yKHZhciBpIGluIEkodCxyLCJpbmRpY2VzIiksZSl7aWYoIUFycmF5LmlzQXJyYXkoZVtpXSl8fGVbaV0ubGVuZ3RoIT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhdHRyaWJ1dGUgIitpKyIgbXVzdCBiZSBhbiBhcnJheSBvZiBsZW5ndGggZXF1YWwgdG8gaW5kaWNlcyBhcnJheSBsZW5ndGgiKTtpZihhJiYoIShpIGluIG4pfHwhQXJyYXkuaXNBcnJheShuW2ldKXx8bltpXS5sZW5ndGghPT1lW2ldLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKCJ3aGVuIG1heFBvaW50cyBpcyBzZXQgYXMgYSBrZXk6dmFsdWUgb2JqZWN0IGl0IG11c3QgY29udGFpbiBhIDE6MSBjb3JyaXNwb25kZW5jZSB3aXRoIHRoZSBrZXlzIGFuZCBudW1iZXIgb2YgdHJhY2VzIGluIHRoZSB1cGRhdGUgb2JqZWN0Iil9fSh0LGUscixuKTtmb3IodmFyIGw9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGksbCxjLHUsaCxmPW8uaXNQbGFpbk9iamVjdChuKSxwPVtdO2Zvcih2YXIgZCBpbiBBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pLHI9eihyLHQuZGF0YS5sZW5ndGgtMSksZSlmb3IodmFyIGc9MDtnPHIubGVuZ3RoO2crKyl7aWYoaT10LmRhdGFbcltnXV0sbD0oYz1zKGksZCkpLmdldCgpLHU9ZVtkXVtnXSwhby5pc0FycmF5T3JUeXBlZEFycmF5KHUpKXRocm93IG5ldyBFcnJvcigiYXR0cmlidXRlOiAiK2QrIiBpbmRleDogIitnKyIgbXVzdCBiZSBhbiBhcnJheSIpO2lmKCFvLmlzQXJyYXlPclR5cGVkQXJyYXkobCkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZXh0ZW5kIG1pc3Npbmcgb3Igbm9uLWFycmF5IGF0dHJpYnV0ZTogIitkKTtpZihsLmNvbnN0cnVjdG9yIT09dS5jb25zdHJ1Y3Rvcil0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBleHRlbmQgYXJyYXkgd2l0aCBhbiBhcnJheSBvZiBhIGRpZmZlcmVudCB0eXBlOiAiK2QpO2g9Zj9uW2RdW2ddOm4sYShoKXx8KGg9LTEpLHAucHVzaCh7cHJvcDpjLHRhcmdldDpsLGluc2VydDp1LG1heHA6TWF0aC5mbG9vcihoKX0pfXJldHVybiBwfSh0LGUscixuKSxjPXt9LHU9e30saD0wO2g8bC5sZW5ndGg7aCsrKXt2YXIgZj1sW2hdLnByb3AscD1sW2hdLm1heHAsZD1pKGxbaF0udGFyZ2V0LGxbaF0uaW5zZXJ0LHApO2Yuc2V0KGRbMF0pLEFycmF5LmlzQXJyYXkoY1tmLmFzdHJdKXx8KGNbZi5hc3RyXT1bXSksY1tmLmFzdHJdLnB1c2goZFsxXSksQXJyYXkuaXNBcnJheSh1W2YuYXN0cl0pfHwodVtmLmFzdHJdPVtdKSx1W2YuYXN0cl0ucHVzaChsW2hdLnRhcmdldC5sZW5ndGgpfXJldHVybnt1cGRhdGU6YyxtYXhQb2ludHM6dX19ZnVuY3Rpb24gRih0LGUpe3ZhciByPW5ldyB0LmNvbnN0cnVjdG9yKHQubGVuZ3RoK2UubGVuZ3RoKTtyZXR1cm4gci5zZXQodCksci5zZXQoZSx0Lmxlbmd0aCkscn1mdW5jdGlvbiBCKHQsZSxuLGEpe3Q9by5nZXRHcmFwaERpdih0KSxrLmNsZWFyUHJvbWlzZVF1ZXVlKHQpO3ZhciBpPXt9O2lmKCJzdHJpbmciPT10eXBlb2YgZSlpW2VdPW47ZWxzZXtpZighby5pc1BsYWluT2JqZWN0KGUpKXJldHVybiBvLndhcm4oIlJlc3R5bGUgZmFpbC4iLGUsbixhKSxQcm9taXNlLnJlamVjdCgpO2k9by5leHRlbmRGbGF0KHt9LGUpLHZvaWQgMD09PWEmJihhPW4pfU9iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHQuY2hhbmdlZD0hMCk7dmFyIHM9ay5jb2VyY2VUcmFjZUluZGljZXModCxhKSxsPVUodCxpLHMpLHU9bC5mbGFnczt1LmNhbGMmJih0LmNhbGNkYXRhPXZvaWQgMCksdS5jbGVhckF4aXNUeXBlcyYmay5jbGVhckF4aXNUeXBlcyh0LHMse30pO3ZhciBoPVtdO3UuZnVsbFJlcGxvdD9oLnB1c2goci5wbG90KTooaC5wdXNoKGYucHJldmlvdXNQcm9taXNlcyksZi5zdXBwbHlEZWZhdWx0cyh0KSx1Lm1hcmtlclNpemUmJihmLmRvQ2FsY2RhdGEodCksWShoKSksdS5zdHlsZSYmaC5wdXNoKFQuZG9UcmFjZVN0eWxlKSx1LmNvbG9yYmFycyYmaC5wdXNoKFQuZG9Db2xvckJhcnMpLGgucHVzaChMKSksaC5wdXNoKGYucmVob3ZlcixmLnJlZHJhZyksYy5hZGQodCxCLFt0LGwudW5kb2l0LGwudHJhY2VzXSxCLFt0LGwucmVkb2l0LGwudHJhY2VzXSk7dmFyIHA9by5zeW5jT3JBc3luYyhoLHQpO3JldHVybiBwJiZwLnRoZW58fChwPVByb21pc2UucmVzb2x2ZSgpKSxwLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfcmVzdHlsZSIsbC5ldmVudERhdGEpLHR9KX1mdW5jdGlvbiBOKHQpe3JldHVybiB2b2lkIDA9PT10P251bGw6dH1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIGU/ZnVuY3Rpb24oZSxyLG4pe3ZhciBhPXMoZSxyKSxpPWEuc2V0O3JldHVybiBhLnNldD1mdW5jdGlvbihlKXtWKChufHwiIikrcixhLmdldCgpLGUsdCksaShlKX0sYX06c31mdW5jdGlvbiBWKHQsZSxyLG4pe2lmKEFycmF5LmlzQXJyYXkoZSl8fEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBhPUFycmF5LmlzQXJyYXkoZSk/ZTpbXSxpPUFycmF5LmlzQXJyYXkocik/cjpbXSxzPU1hdGgubWF4KGEubGVuZ3RoLGkubGVuZ3RoKSxsPTA7bDxzO2wrKylWKHQrIlsiK2wrIl0iLGFbbF0saVtsXSxuKTtlbHNlIGlmKG8uaXNQbGFpbk9iamVjdChlKXx8by5pc1BsYWluT2JqZWN0KHIpKXt2YXIgYz1vLmlzUGxhaW5PYmplY3QoZSk/ZTp7fSx1PW8uaXNQbGFpbk9iamVjdChyKT9yOnt9LGg9by5leHRlbmRGbGF0KHt9LGMsdSk7Zm9yKHZhciBmIGluIGgpVih0KyIuIitmLGNbZl0sdVtmXSxuKX1lbHNlIHZvaWQgMD09PW5bdF0mJihuW3RdPU4oZSkpfWZ1bmN0aW9uIFUodCxlLHIpe3ZhciBuLGE9dC5fZnVsbExheW91dCxpPXQuX2Z1bGxEYXRhLGw9dC5kYXRhLGM9YS5fZ3VpRWRpdGluZyxwPWooYS5fcHJlR1VJLGMpLGc9by5leHRlbmREZWVwQWxsKHt9LGUpO3EoZSk7dmFyIHYsbT1NLnRyYWNlRmxhZ3MoKSx5PXt9LHg9e307ZnVuY3Rpb24gYigpe3JldHVybiByLm1hcChmdW5jdGlvbigpe30pfWZ1bmN0aW9uIF8odCl7dmFyIGU9ZC5pZDJuYW1lKHQpOy0xPT09di5pbmRleE9mKGUpJiZ2LnB1c2goZSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4iTEFZT1VUIit0KyIuYXV0b3JhbmdlIn1mdW5jdGlvbiBUKHQpe3JldHVybiJMQVlPVVQiK3QrIi5yYW5nZSJ9ZnVuY3Rpb24gQSh0KXtmb3IodmFyIGU9dDtlPGkubGVuZ3RoO2UrKylpZihpW2VdLl9pbnB1dD09PWxbdF0pcmV0dXJuIGlbZV19ZnVuY3Rpb24gUyhuLGksbyl7aWYoQXJyYXkuaXNBcnJheShuKSluLmZvckVhY2goZnVuY3Rpb24odCl7Uyh0LGksbyl9KTtlbHNlIGlmKCEobiBpbiBlfHxrLmhhc1BhcmVudChlLG4pKSl7dmFyIHM7aWYoIkxBWU9VVCI9PT1uLnN1YnN0cigwLDYpKXM9cCh0LmxheW91dCxuLnJlcGxhY2UoIkxBWU9VVCIsIiIpKTtlbHNle3ZhciB1PXJbb107cz1qKGEuX3RyYWNlUHJlR1VJW0EodSkuX2Z1bGxJbnB1dC51aWRdLGMpKGxbdV0sbil9biBpbiB4fHwoeFtuXT1iKCkpLHZvaWQgMD09PXhbbl1bb10mJih4W25dW29dPU4ocy5nZXQoKSkpLHZvaWQgMCE9PWkmJnMuc2V0KGkpfX1mdW5jdGlvbiBFKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gaVtlXVt0XX19ZnVuY3Rpb24gTCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4hMT09PWU/aVtyW25dXVt0XTpudWxsfX1mb3IodmFyIEMgaW4gZSl7aWYoay5oYXNQYXJlbnQoZSxDKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBzZXQgIitDKyIgYW5kIGEgcGFyZW50IGF0dHJpYnV0ZSBzaW11bHRhbmVvdXNseSIpO3ZhciBQLE8seixJLEQsUixGPWVbQ107aWYoImF1dG9iaW54IiE9PUMmJiJhdXRvYmlueSIhPT1DfHwoQz1DLmNoYXJBdChDLmxlbmd0aC0xKSsiYmlucyIsRj1BcnJheS5pc0FycmF5KEYpP0YubWFwKEwoQykpOiExPT09Rj9yLm1hcChFKEMpKTpudWxsKSx5W0NdPUYsIkxBWU9VVCIhPT1DLnN1YnN0cigwLDYpKXtmb3IoeFtDXT1iKCksbj0wO248ci5sZW5ndGg7bisrKXtpZihQPWxbcltuXV0sTz1BKHJbbl0pLEk9KHo9aihhLl90cmFjZVByZUdVSVtPLl9mdWxsSW5wdXQudWlkXSxjKShQLEMpKS5nZXQoKSx2b2lkIDAhPT0oRD1BcnJheS5pc0FycmF5KEYpP0ZbbiVGLmxlbmd0aF06Rikpe3ZhciBCPXoucGFydHNbei5wYXJ0cy5sZW5ndGgtMV0sVj1DLnN1YnN0cigwLEMubGVuZ3RoLUIubGVuZ3RoLTEpLFU9Vj9WKyIuIjoiIixIPVY/cyhPLFYpLmdldCgpOk87aWYoKFI9aC5nZXRUcmFjZVZhbE9iamVjdChPLHoucGFydHMpKSYmUi5pbXBsaWVkRWRpdHMmJm51bGwhPT1EKWZvcih2YXIgRyBpbiBSLmltcGxpZWRFZGl0cylTKG8ucmVsYXRpdmVBdHRyKEMsRyksUi5pbXBsaWVkRWRpdHNbR10sbik7ZWxzZSBpZigidGhpY2tuZXNzbW9kZSIhPT1CJiYibGVubW9kZSIhPT1CfHxJPT09RHx8ImZyYWN0aW9uIiE9PUQmJiJwaXhlbHMiIT09RHx8IUgpe2lmKCJ0eXBlIj09PUMmJigicGllIj09PUQhPSgicGllIj09PUkpfHwiZnVubmVsYXJlYSI9PT1EIT0oImZ1bm5lbGFyZWEiPT09SSkpKXt2YXIgWT0ieCIsVz0ieSI7ImJhciIhPT1EJiYiYmFyIiE9PUl8fCJoIiE9PVAub3JpZW50YXRpb258fChZPSJ5IixXPSJ4Iiksby5zd2FwQXR0cnMoUCxbIj8iLCI/c3JjIl0sImxhYmVscyIsWSksby5zd2FwQXR0cnMoUCxbImQ/IiwiPzAiXSwibGFiZWwiLFkpLG8uc3dhcEF0dHJzKFAsWyI/IiwiP3NyYyJdLCJ2YWx1ZXMiLFcpLCJwaWUiPT09SXx8ImZ1bm5lbGFyZWEiPT09ST8ocyhQLCJtYXJrZXIuY29sb3IiKS5zZXQocyhQLCJtYXJrZXIuY29sb3JzIikuZ2V0KCkpLGEuX3BpZWxheWVyLnNlbGVjdEFsbCgiZy50cmFjZSIpLnJlbW92ZSgpKTp1LnRyYWNlSXMoUCwiY2FydGVzaWFuIikmJnMoUCwibWFya2VyLmNvbG9ycyIpLnNldChzKFAsIm1hcmtlci5jb2xvciIpLmdldCgpKX19ZWxzZXt2YXIgWD1hLl9zaXplLFo9SC5vcmllbnQsSj0idG9wIj09PVp8fCJib3R0b20iPT09WjtpZigidGhpY2tuZXNzbW9kZSI9PT1CKXt2YXIgSz1KP1guaDpYLnc7UyhVKyJ0aGlja25lc3MiLEgudGhpY2tuZXNzKigiZnJhY3Rpb24iPT09RD8xL0s6Syksbil9ZWxzZXt2YXIgUT1KP1gudzpYLmg7UyhVKyJsZW4iLEgubGVuKigiZnJhY3Rpb24iPT09RD8xL1E6USksbil9fXhbQ11bbl09TihJKTtpZigtMSE9PVsic3dhcHh5Iiwic3dhcHh5YXhlcyIsIm9yaWVudGF0aW9uIiwib3JpZW50YXRpb25heGVzIl0uaW5kZXhPZihDKSl7aWYoIm9yaWVudGF0aW9uIj09PUMpe3ouc2V0KEQpO3ZhciAkPVAueCYmIVAueT8iaCI6InYiO2lmKCh6LmdldCgpfHwkKT09PU8ub3JpZW50YXRpb24pY29udGludWV9ZWxzZSJvcmllbnRhdGlvbmF4ZXMiPT09QyYmKFAub3JpZW50YXRpb249e3Y6ImgiLGg6InYifVtPLm9yaWVudGF0aW9uXSk7ay5zd2FwWFlEYXRhKFApLG0uY2FsYz1tLmNsZWFyQXhpc1R5cGVzPSEwfWVsc2UtMSE9PWYuZGF0YUFycmF5Q29udGFpbmVycy5pbmRleE9mKHoucGFydHNbMF0pPyhrLm1hbmFnZUFycmF5Q29udGFpbmVycyh6LEQseCksbS5jYWxjPSEwKTooUj9SLmFycmF5T2smJiF1LnRyYWNlSXMoTywicmVnbCIpJiYoby5pc0FycmF5T3JUeXBlZEFycmF5KEQpfHxvLmlzQXJyYXlPclR5cGVkQXJyYXkoSSkpP20uY2FsYz0hMDpNLnVwZGF0ZShtLFIpOm0uY2FsYz0hMCx6LnNldChEKSl9fWlmKC0xIT09WyJzd2FweHlheGVzIiwib3JpZW50YXRpb25heGVzIl0uaW5kZXhPZihDKSYmZC5zd2FwKHQsciksIm9yaWVudGF0aW9uYXhlcyI9PT1DKXt2YXIgdHQ9cyh0LmxheW91dCwiaG92ZXJtb2RlIik7IngiPT09dHQuZ2V0KCk/dHQuc2V0KCJ5Iik6InkiPT09dHQuZ2V0KCkmJnR0LnNldCgieCIpfWlmKC0xIT09WyJvcmllbnRhdGlvbiIsInR5cGUiXS5pbmRleE9mKEMpKXtmb3Iodj1bXSxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBldD1sW3Jbbl1dO3UudHJhY2VJcyhldCwiY2FydGVzaWFuIikmJihfKGV0LnhheGlzfHwieCIpLF8oZXQueWF4aXN8fCJ5IikpfVModi5tYXAodyksITAsMCksUyh2Lm1hcChUKSxbMCwxXSwwKX19ZWxzZSB6PXAodC5sYXlvdXQsQy5yZXBsYWNlKCJMQVlPVVQiLCIiKSkseFtDXT1bTih6LmdldCgpKV0sei5zZXQoQXJyYXkuaXNBcnJheShGKT9GWzBdOkYpLG0uY2FsYz0hMH1yZXR1cm4obS5jYWxjfHxtLnBsb3QpJiYobS5mdWxsUmVwbG90PSEwKSx7ZmxhZ3M6bSx1bmRvaXQ6eCxyZWRvaXQ6eSx0cmFjZXM6cixldmVudERhdGE6by5leHRlbmREZWVwTm9BcnJheXMoW10sW2cscl0pfX1mdW5jdGlvbiBxKHQpe3ZhciBlLHIsbixhPW8uY291bnRlclJlZ2V4KCJheGlzIiwiLnRpdGxlIiwhMSwhMSksaT0vY29sb3JiYXJcLnRpdGxlJC8scz1PYmplY3Qua2V5cyh0KTtmb3IoZT0wO2U8cy5sZW5ndGg7ZSsrKXI9c1tlXSxuPXRbcl0sInRpdGxlIiE9PXImJiFhLnRlc3QocikmJiFpLnRlc3Qocil8fCJzdHJpbmciIT10eXBlb2YgbiYmIm51bWJlciIhPXR5cGVvZiBuP3IuaW5kZXhPZigidGl0bGVmb250Iik+LTE/bChyLHIucmVwbGFjZSgidGl0bGVmb250IiwidGl0bGUuZm9udCIpKTpyLmluZGV4T2YoInRpdGxlcG9zaXRpb24iKT4tMT9sKHIsci5yZXBsYWNlKCJ0aXRsZXBvc2l0aW9uIiwidGl0bGUucG9zaXRpb24iKSk6ci5pbmRleE9mKCJ0aXRsZXNpZGUiKT4tMT9sKHIsci5yZXBsYWNlKCJ0aXRsZXNpZGUiLCJ0aXRsZS5zaWRlIikpOnIuaW5kZXhPZigidGl0bGVvZmZzZXQiKT4tMSYmbChyLHIucmVwbGFjZSgidGl0bGVvZmZzZXQiLCJ0aXRsZS5vZmZzZXQiKSk6bChyLHIucmVwbGFjZSgidGl0bGUiLCJ0aXRsZS50ZXh0IikpO2Z1bmN0aW9uIGwoZSxyKXt0W3JdPXRbZV0sZGVsZXRlIHRbZV19fWZ1bmN0aW9uIEgodCxlLHIpe2lmKHQ9by5nZXRHcmFwaERpdih0KSxrLmNsZWFyUHJvbWlzZVF1ZXVlKHQpLHQuZnJhbWV3b3JrJiZ0LmZyYW1ld29yay5pc1BvbGFyKXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7dmFyIG49e307aWYoInN0cmluZyI9PXR5cGVvZiBlKW5bZV09cjtlbHNle2lmKCFvLmlzUGxhaW5PYmplY3QoZSkpcmV0dXJuIG8ud2FybigiUmVsYXlvdXQgZmFpbC4iLGUsciksUHJvbWlzZS5yZWplY3QoKTtuPW8uZXh0ZW5kRmxhdCh7fSxlKX1PYmplY3Qua2V5cyhuKS5sZW5ndGgmJih0LmNoYW5nZWQ9ITApO3ZhciBhPUoodCxuKSxpPWEuZmxhZ3M7aS5jYWxjJiYodC5jYWxjZGF0YT12b2lkIDApO3ZhciBzPVtmLnByZXZpb3VzUHJvbWlzZXNdO2kubGF5b3V0UmVwbG90P3MucHVzaChULmxheW91dFJlcGxvdCk6T2JqZWN0LmtleXMobikubGVuZ3RoJiYoRyh0LGksYSl8fGYuc3VwcGx5RGVmYXVsdHModCksaS5sZWdlbmQmJnMucHVzaChULmRvTGVnZW5kKSxpLmxheW91dHN0eWxlJiZzLnB1c2goVC5sYXlvdXRTdHlsZXMpLGkuYXhyYW5nZSYmWShzLGEucmFuZ2VzQWx0ZXJlZCksaS50aWNrcyYmcy5wdXNoKFQuZG9UaWNrc1JlbGF5b3V0KSxpLm1vZGViYXImJnMucHVzaChULmRvTW9kZUJhciksaS5jYW1lcmEmJnMucHVzaChULmRvQ2FtZXJhKSxpLmNvbG9yYmFycyYmcy5wdXNoKFQuZG9Db2xvckJhcnMpLHMucHVzaChMKSkscy5wdXNoKGYucmVob3ZlcixmLnJlZHJhZyksYy5hZGQodCxILFt0LGEudW5kb2l0XSxILFt0LGEucmVkb2l0XSk7dmFyIGw9by5zeW5jT3JBc3luYyhzLHQpO3JldHVybiBsJiZsLnRoZW58fChsPVByb21pc2UucmVzb2x2ZSh0KSksbC50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZW1pdCgicGxvdGx5X3JlbGF5b3V0IixhLmV2ZW50RGF0YSksdH0pfWZ1bmN0aW9uIEcodCxlLHIpe3ZhciBuPXQuX2Z1bGxMYXlvdXQ7aWYoIWUuYXhyYW5nZSlyZXR1cm4hMTtmb3IodmFyIGEgaW4gZSlpZigiYXhyYW5nZSIhPT1hJiZlW2FdKXJldHVybiExO2Zvcih2YXIgaSBpbiByLnJhbmdlc0FsdGVyZWQpe3ZhciBvPWQuaWQybmFtZShpKSxzPXQubGF5b3V0W29dLGw9bltvXTtpZihsLmF1dG9yYW5nZT1zLmF1dG9yYW5nZSxsLnJhbmdlPXMucmFuZ2Uuc2xpY2UoKSxsLmNsZWFuUmFuZ2UoKSxsLl9tYXRjaEdyb3VwKWZvcih2YXIgYyBpbiBsLl9tYXRjaEdyb3VwKWlmKGMhPT1pKXt2YXIgdT1uW2QuaWQybmFtZShjKV07dS5hdXRvcmFuZ2U9bC5hdXRvcmFuZ2UsdS5yYW5nZT1sLnJhbmdlLnNsaWNlKCksdS5faW5wdXQucmFuZ2U9bC5yYW5nZS5zbGljZSgpfX1yZXR1cm4hMH1mdW5jdGlvbiBZKHQsZSl7dmFyIHI9ZT9mdW5jdGlvbih0KXt2YXIgcj1bXSxuPSEwO2Zvcih2YXIgYSBpbiBlKXt2YXIgaT1kLmdldEZyb21JZCh0LGEpO2lmKHIucHVzaChhKSxpLl9tYXRjaEdyb3VwKWZvcih2YXIgbyBpbiBpLl9tYXRjaEdyb3VwKWVbb118fHIucHVzaChvKTtpLmF1dG9tYXJnaW4mJihuPSExKX1yZXR1cm4gZC5kcmF3KHQscix7c2tpcFRpdGxlOm59KX06ZnVuY3Rpb24odCl7cmV0dXJuIGQuZHJhdyh0LCJyZWRyYXciKX07dC5wdXNoKGIsVC5kb0F1dG9SYW5nZUFuZENvbnN0cmFpbnRzLHIsVC5kcmF3RGF0YSxULmZpbmFsRHJhdyl9dmFyIFc9L15beHl6XWF4aXNbMC05XSpcLnJhbmdlKFxbWzB8MV1cXSk/JC8sWD0vXlt4eXpdYXhpc1swLTldKlwuYXV0b3JhbmdlJC8sWj0vXlt4eXpdYXhpc1swLTldKlwuZG9tYWluKFxbWzB8MV1cXSk/JC87ZnVuY3Rpb24gSih0LGUpe3ZhciByLG4sYSxpPXQubGF5b3V0LGw9dC5fZnVsbExheW91dCxjPWwuX2d1aUVkaXRpbmcsZj1qKGwuX3ByZUdVSSxjKSxwPU9iamVjdC5rZXlzKGUpLGc9ZC5saXN0KHQpLHY9by5leHRlbmREZWVwQWxsKHt9LGUpLG09e307Zm9yKHEoZSkscD1PYmplY3Qua2V5cyhlKSxuPTA7bjxwLmxlbmd0aDtuKyspaWYoMD09PXBbbl0uaW5kZXhPZigiYWxsYXhlcyIpKXtmb3IoYT0wO2E8Zy5sZW5ndGg7YSsrKXt2YXIgeT1nW2FdLl9pZC5zdWJzdHIoMSkseD0tMSE9PXkuaW5kZXhPZigic2NlbmUiKT95KyIuIjoiIixiPXBbbl0ucmVwbGFjZSgiYWxsYXhlcyIseCtnW2FdLl9uYW1lKTtlW2JdfHwoZVtiXT1lW3Bbbl1dKX1kZWxldGUgZVtwW25dXX12YXIgXz1NLmxheW91dEZsYWdzKCksVD17fSxTPXt9O2Z1bmN0aW9uIEUodCxyKXtpZihBcnJheS5pc0FycmF5KHQpKXQuZm9yRWFjaChmdW5jdGlvbih0KXtFKHQscil9KTtlbHNlIGlmKCEodCBpbiBlfHxrLmhhc1BhcmVudChlLHQpKSl7dmFyIG49ZihpLHQpO3QgaW4gU3x8KFNbdF09TihuLmdldCgpKSksdm9pZCAwIT09ciYmbi5zZXQocil9fXZhciBMLEM9e307ZnVuY3Rpb24gUCh0KXt2YXIgZT1kLm5hbWUyaWQodC5zcGxpdCgiLiIpWzBdKTtyZXR1cm4gQ1tlXT0xLGV9Zm9yKHZhciBPIGluIGUpe2lmKGsuaGFzUGFyZW50KGUsTykpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3Qgc2V0ICIrTysiIGFuZCBhIHBhcmVudCBhdHRyaWJ1dGUgc2ltdWx0YW5lb3VzbHkiKTtmb3IodmFyIHo9ZihpLE8pLEk9ZVtPXSxEPXoucGFydHMubGVuZ3RoLTE7RD4wJiYic3RyaW5nIiE9dHlwZW9mIHoucGFydHNbRF07KUQtLTt2YXIgUj16LnBhcnRzW0RdLEY9ei5wYXJ0c1tELTFdKyIuIitSLEI9ei5wYXJ0cy5zbGljZSgwLEQpLmpvaW4oIi4iKSxWPXModC5sYXlvdXQsQikuZ2V0KCksVT1zKGwsQikuZ2V0KCksSD16LmdldCgpO2lmKHZvaWQgMCE9PUkpe1RbT109SSxTW09dPSJyZXZlcnNlIj09PVI/STpOKEgpO3ZhciBHPWguZ2V0TGF5b3V0VmFsT2JqZWN0KGwsei5wYXJ0cyk7aWYoRyYmRy5pbXBsaWVkRWRpdHMmJm51bGwhPT1JKWZvcih2YXIgWSBpbiBHLmltcGxpZWRFZGl0cylFKG8ucmVsYXRpdmVBdHRyKE8sWSksRy5pbXBsaWVkRWRpdHNbWV0pO2lmKC0xIT09WyJ3aWR0aCIsImhlaWdodCJdLmluZGV4T2YoTykpaWYoSSl7RSgiYXV0b3NpemUiLG51bGwpO3ZhciBKPSJoZWlnaHQiPT09Tz8id2lkdGgiOiJoZWlnaHQiO0UoSixsW0pdKX1lbHNlIGxbT109dC5faW5pdGlhbEF1dG9TaXplW09dO2Vsc2UgaWYoImF1dG9zaXplIj09PU8pRSgid2lkdGgiLEk/bnVsbDpsLndpZHRoKSxFKCJoZWlnaHQiLEk/bnVsbDpsLmhlaWdodCk7ZWxzZSBpZihGLm1hdGNoKFcpKVAoRikscyhsLEIrIi5faW5wdXRSYW5nZSIpLnNldChudWxsKTtlbHNlIGlmKEYubWF0Y2goWCkpe1AoRikscyhsLEIrIi5faW5wdXRSYW5nZSIpLnNldChudWxsKTt2YXIgUT1zKGwsQikuZ2V0KCk7US5faW5wdXREb21haW4mJihRLl9pbnB1dC5kb21haW49US5faW5wdXREb21haW4uc2xpY2UoKSl9ZWxzZSBGLm1hdGNoKFopJiZzKGwsQisiLl9pbnB1dERvbWFpbiIpLnNldChudWxsKTtpZigidHlwZSI9PT1SKXt2YXIgJD1WLHR0PSJsaW5lYXIiPT09VS50eXBlJiYibG9nIj09PUksZXQ9ImxvZyI9PT1VLnR5cGUmJiJsaW5lYXIiPT09STtpZih0dHx8ZXQpe2lmKCQmJiQucmFuZ2UpaWYoVS5hdXRvcmFuZ2UpdHQmJigkLnJhbmdlPSQucmFuZ2VbMV0+JC5yYW5nZVswXT9bMSwyXTpbMiwxXSk7ZWxzZXt2YXIgcnQ9JC5yYW5nZVswXSxudD0kLnJhbmdlWzFdO3R0PyhydDw9MCYmbnQ8PTAmJkUoQisiLmF1dG9yYW5nZSIsITApLHJ0PD0wP3J0PW50LzFlNjpudDw9MCYmKG50PXJ0LzFlNiksRShCKyIucmFuZ2VbMF0iLE1hdGgubG9nKHJ0KS9NYXRoLkxOMTApLEUoQisiLnJhbmdlWzFdIixNYXRoLmxvZyhudCkvTWF0aC5MTjEwKSk6KEUoQisiLnJhbmdlWzBdIixNYXRoLnBvdygxMCxydCkpLEUoQisiLnJhbmdlWzFdIixNYXRoLnBvdygxMCxudCkpKX1lbHNlIEUoQisiLmF1dG9yYW5nZSIsITApO0FycmF5LmlzQXJyYXkobC5fc3VicGxvdHMucG9sYXIpJiZsLl9zdWJwbG90cy5wb2xhci5sZW5ndGgmJmxbei5wYXJ0c1swXV0mJiJyYWRpYWxheGlzIj09PXoucGFydHNbMV0mJmRlbGV0ZSBsW3oucGFydHNbMF1dLl9zdWJwbG90LnZpZXdJbml0aWFsWyJyYWRpYWxheGlzLnJhbmdlIl0sdS5nZXRDb21wb25lbnRNZXRob2QoImFubm90YXRpb25zIiwiY29udmVydENvb3JkcyIpKHQsVSxJLEUpLHUuZ2V0Q29tcG9uZW50TWV0aG9kKCJpbWFnZXMiLCJjb252ZXJ0Q29vcmRzIikodCxVLEksRSl9ZWxzZSBFKEIrIi5hdXRvcmFuZ2UiLCEwKSxFKEIrIi5yYW5nZSIsbnVsbCk7cyhsLEIrIi5faW5wdXRSYW5nZSIpLnNldChudWxsKX1lbHNlIGlmKFIubWF0Y2goQSkpe3ZhciBhdD1zKGwsTykuZ2V0KCksaXQ9KEl8fHt9KS50eXBlO2l0JiYiLSIhPT1pdHx8KGl0PSJsaW5lYXIiKSx1LmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMiLCJjb252ZXJ0Q29vcmRzIikodCxhdCxpdCxFKSx1LmdldENvbXBvbmVudE1ldGhvZCgiaW1hZ2VzIiwiY29udmVydENvb3JkcyIpKHQsYXQsaXQsRSl9dmFyIG90PXcuY29udGFpbmVyQXJyYXlNYXRjaChPKTtpZihvdCl7cj1vdC5hcnJheSxuPW90LmluZGV4O3ZhciBzdD1vdC5wcm9wZXJ0eSxsdD1HfHx7ZWRpdFR5cGU6ImNhbGMifTsiIiE9PW4mJiIiPT09c3QmJih3LmlzQWRkVmFsKEkpP1NbT109bnVsbDp3LmlzUmVtb3ZlVmFsKEkpP1NbT109KHMoaSxyKS5nZXQoKXx8W10pW25dOm8ud2FybigidW5yZWNvZ25pemVkIGZ1bGwgb2JqZWN0IHZhbHVlIixlKSksTS51cGRhdGUoXyxsdCksbVtyXXx8KG1bcl09e30pO3ZhciBjdD1tW3JdW25dO2N0fHwoY3Q9bVtyXVtuXT17fSksY3Rbc3RdPUksZGVsZXRlIGVbT119ZWxzZSJyZXZlcnNlIj09PVI/KFYucmFuZ2U/Vi5yYW5nZS5yZXZlcnNlKCk6KEUoQisiLmF1dG9yYW5nZSIsITApLFYucmFuZ2U9WzEsMF0pLFUuYXV0b3JhbmdlP18uY2FsYz0hMDpfLnBsb3Q9ITApOihsLl9oYXMoInNjYXR0ZXItbGlrZSIpJiZsLl9oYXMoInJlZ2wiKSYmImRyYWdtb2RlIj09PU8mJigibGFzc28iPT09SXx8InNlbGVjdCI9PT1JKSYmImxhc3NvIiE9PUgmJiJzZWxlY3QiIT09SD9fLnBsb3Q9ITA6bC5faGFzKCJnbDJkIik/Xy5wbG90PSEwOkc/TS51cGRhdGUoXyxHKTpfLmNhbGM9ITAsei5zZXQoSSkpfX1mb3IociBpbiBtKXt3LmFwcGx5Q29udGFpbmVyQXJyYXlDaGFuZ2VzKHQsZihpLHIpLG1bcl0sXyxmKXx8KF8ucGxvdD0hMCl9dmFyIHV0PWwuX2F4aXNDb25zdHJhaW50R3JvdXBzfHxbXTtmb3IoTCBpbiBDKWZvcihuPTA7bjx1dC5sZW5ndGg7bisrKXt2YXIgaHQ9dXRbbl07aWYoaHRbTF0pZm9yKHZhciBmdCBpbiBfLmNhbGM9ITAsaHQpQ1tmdF18fChkLmdldEZyb21JZCh0LGZ0KS5fY29uc3RyYWludFNocmlua2FibGU9ITApfXJldHVybihLKHQpfHxlLmhlaWdodHx8ZS53aWR0aCkmJihfLnBsb3Q9ITApLChfLnBsb3R8fF8uY2FsYykmJihfLmxheW91dFJlcGxvdD0hMCkse2ZsYWdzOl8scmFuZ2VzQWx0ZXJlZDpDLHVuZG9pdDpTLHJlZG9pdDpULGV2ZW50RGF0YTp2fX1mdW5jdGlvbiBLKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLndpZHRoLG49ZS5oZWlnaHQ7cmV0dXJuIHQubGF5b3V0LmF1dG9zaXplJiZmLnBsb3RBdXRvU2l6ZSh0LHQubGF5b3V0LGUpLGUud2lkdGghPT1yfHxlLmhlaWdodCE9PW59ZnVuY3Rpb24gUSh0LGUsbixhKXtpZih0PW8uZ2V0R3JhcGhEaXYodCksay5jbGVhclByb21pc2VRdWV1ZSh0KSx0LmZyYW1ld29yayYmdC5mcmFtZXdvcmsuaXNQb2xhcilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO28uaXNQbGFpbk9iamVjdChlKXx8KGU9e30pLG8uaXNQbGFpbk9iamVjdChuKXx8KG49e30pLE9iamVjdC5rZXlzKGUpLmxlbmd0aCYmKHQuY2hhbmdlZD0hMCksT2JqZWN0LmtleXMobikubGVuZ3RoJiYodC5jaGFuZ2VkPSEwKTt2YXIgaT1rLmNvZXJjZVRyYWNlSW5kaWNlcyh0LGEpLHM9VSh0LG8uZXh0ZW5kRmxhdCh7fSxlKSxpKSxsPXMuZmxhZ3MsdT1KKHQsby5leHRlbmRGbGF0KHt9LG4pKSxoPXUuZmxhZ3M7KGwuY2FsY3x8aC5jYWxjKSYmKHQuY2FsY2RhdGE9dm9pZCAwKSxsLmNsZWFyQXhpc1R5cGVzJiZrLmNsZWFyQXhpc1R5cGVzKHQsaSxuKTt2YXIgcD1bXTtoLmxheW91dFJlcGxvdD9wLnB1c2goVC5sYXlvdXRSZXBsb3QpOmwuZnVsbFJlcGxvdD9wLnB1c2goci5wbG90KToocC5wdXNoKGYucHJldmlvdXNQcm9taXNlcyksRyh0LGgsdSl8fGYuc3VwcGx5RGVmYXVsdHModCksbC5zdHlsZSYmcC5wdXNoKFQuZG9UcmFjZVN0eWxlKSwobC5jb2xvcmJhcnN8fGguY29sb3JiYXJzKSYmcC5wdXNoKFQuZG9Db2xvckJhcnMpLGgubGVnZW5kJiZwLnB1c2goVC5kb0xlZ2VuZCksaC5sYXlvdXRzdHlsZSYmcC5wdXNoKFQubGF5b3V0U3R5bGVzKSxoLmF4cmFuZ2UmJlkocCx1LnJhbmdlc0FsdGVyZWQpLGgudGlja3MmJnAucHVzaChULmRvVGlja3NSZWxheW91dCksaC5tb2RlYmFyJiZwLnB1c2goVC5kb01vZGVCYXIpLGguY2FtZXJhJiZwLnB1c2goVC5kb0NhbWVyYSkscC5wdXNoKEwpKSxwLnB1c2goZi5yZWhvdmVyLGYucmVkcmFnKSxjLmFkZCh0LFEsW3Qscy51bmRvaXQsdS51bmRvaXQscy50cmFjZXNdLFEsW3Qscy5yZWRvaXQsdS5yZWRvaXQscy50cmFjZXNdKTt2YXIgZD1vLnN5bmNPckFzeW5jKHAsdCk7cmV0dXJuIGQmJmQudGhlbnx8KGQ9UHJvbWlzZS5yZXNvbHZlKHQpKSxkLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfdXBkYXRlIix7ZGF0YTpzLmV2ZW50RGF0YSxsYXlvdXQ6dS5ldmVudERhdGF9KSx0fSl9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5fZnVsbExheW91dC5fZ3VpRWRpdGluZz0hMDt2YXIgcj10LmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gZS5fZnVsbExheW91dC5fZ3VpRWRpdGluZz0hMSxyfX12YXIgdHQ9W3twYXR0ZXJuOi9eaGlkZGVubGFiZWxzLyxhdHRyOiJsZWdlbmQudWlyZXZpc2lvbiJ9LHtwYXR0ZXJuOi9eKCh4fHkpYXhpc1xkKilcLigoYXV0byk/cmFuZ2V8dGl0bGVcLnRleHQpL30se3BhdHRlcm46L2F4aXNcZCpcLnNob3dzcGlrZXMkLyxhdHRyOiJtb2RlYmFyLnVpcmV2aXNpb24ifSx7cGF0dGVybjovKGhvdmVyfGRyYWcpbW9kZSQvLGF0dHI6Im1vZGViYXIudWlyZXZpc2lvbiJ9LHtwYXR0ZXJuOi9eKHNjZW5lXGQqKVwuY2FtZXJhL30se3BhdHRlcm46L14oZ2VvXGQqKVwuKHByb2plY3Rpb258Y2VudGVyfGZpdGJvdW5kcykvfSx7cGF0dGVybjovXih0ZXJuYXJ5XGQqXC5bYWJjXWF4aXMpXC4obWlufHRpdGxlXC50ZXh0KSQvfSx7cGF0dGVybjovXihwb2xhclxkKlwucmFkaWFsYXhpcylcLigoYXV0byk/cmFuZ2V8YW5nbGV8dGl0bGVcLnRleHQpL30se3BhdHRlcm46L14ocG9sYXJcZCpcLmFuZ3VsYXJheGlzKVwucm90YXRpb24vfSx7cGF0dGVybjovXihtYXBib3hcZCopXC4oY2VudGVyfHpvb218YmVhcmluZ3xwaXRjaCkvfSx7cGF0dGVybjovXmxlZ2VuZFwuKHh8eSkkLyxhdHRyOiJlZGl0cmV2aXNpb24ifSx7cGF0dGVybjovXihzaGFwZXN8YW5ub3RhdGlvbnMpLyxhdHRyOiJlZGl0cmV2aXNpb24ifSx7cGF0dGVybjovXnRpdGxlXC50ZXh0JC8sYXR0cjoiZWRpdHJldmlzaW9uIn1dLGV0PVt7cGF0dGVybjovXnNlbGVjdGVkcG9pbnRzJC8sYXR0cjoic2VsZWN0aW9ucmV2aXNpb24ifSx7cGF0dGVybjovKF58dmFsdWVcLil2aXNpYmxlJC8sYXR0cjoibGVnZW5kLnVpcmV2aXNpb24ifSx7cGF0dGVybjovXmRpbWVuc2lvbnNcW1xkK1xdXC5jb25zdHJhaW50cmFuZ2UvfSx7cGF0dGVybjovXm5vZGVcLih4fHl8Z3JvdXBzKS99LHtwYXR0ZXJuOi9ebGV2ZWwkL30se3BhdHRlcm46LyhefHZhbHVlXC4pbmFtZSQvfSx7cGF0dGVybjovY29sb3JiYXJcLnRpdGxlXC50ZXh0JC99LHtwYXR0ZXJuOi9jb2xvcmJhclwuKHh8eSkkLyxhdHRyOiJlZGl0cmV2aXNpb24ifV07ZnVuY3Rpb24gcnQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXSxhPXQubWF0Y2gobi5wYXR0ZXJuKTtpZihhKXJldHVybntoZWFkOmFbMV0sYXR0cjpuLmF0dHJ9fX1mdW5jdGlvbiBudCh0LGUpe3ZhciByPXMoZSx0KS5nZXQoKTtpZih2b2lkIDAhPT1yKXJldHVybiByO3ZhciBuPXQuc3BsaXQoIi4iKTtmb3Iobi5wb3AoKTtuLmxlbmd0aD4xOylpZihuLnBvcCgpLHZvaWQgMCE9PShyPXMoZSxuLmpvaW4oIi4iKSsiLnVpcmV2aXNpb24iKS5nZXQoKSkpcmV0dXJuIHI7cmV0dXJuIGUudWlyZXZpc2lvbn1mdW5jdGlvbiBhdCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKGVbcl0uX2Z1bGxJbnB1dC51aWQ9PT10KXJldHVybiByO3JldHVybi0xfWZ1bmN0aW9uIGl0KHQsZSxyKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dLnVpZD09PXQpcmV0dXJuIG47cmV0dXJuIWVbcl18fGVbcl0udWlkPy0xOnJ9ZnVuY3Rpb24gb3QodCxlKXt2YXIgcj1vLmlzUGxhaW5PYmplY3QodCksbj1BcnJheS5pc0FycmF5KHQpO3JldHVybiByfHxuPyhyJiZvLmlzUGxhaW5PYmplY3QoZSl8fG4mJkFycmF5LmlzQXJyYXkoZSkpJiZKU09OLnN0cmluZ2lmeSh0KT09PUpTT04uc3RyaW5naWZ5KGUpOnQ9PT1lfWZ1bmN0aW9uIHN0KHQsZSxyLG4pe3ZhciBhLGksbCxjPW4uZ2V0VmFsT2JqZWN0LHU9bi5mbGFncyxoPW4uaW1tdXRhYmxlLGY9bi5pbkFycmF5LHA9bi5hcnJheUluZGV4O2Z1bmN0aW9uIGQoKXt2YXIgdD1hLmVkaXRUeXBlO2YmJi0xIT09dC5pbmRleE9mKCJhcnJheWRyYXciKT9vLnB1c2hVbmlxdWUodS5hcnJheXNbZl0scCk6KE0udXBkYXRlKHUsYSksIm5vbmUiIT09dCYmdS5uQ2hhbmdlcysrLG4udHJhbnNpdGlvbiYmYS5hbmltJiZ1Lm5DaGFuZ2VzQW5pbSsrLChXLnRlc3QobCl8fFgudGVzdChsKSkmJih1LnJhbmdlc0FsdGVyZWRbclswXV09MSksWi50ZXN0KGwpJiZzKGUsIl9pbnB1dERvbWFpbiIpLnNldChudWxsKSwiZGF0YXJldmlzaW9uIj09PWkmJih1Lm5ld0RhdGFSZXZpc2lvbj0xKSl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4iZGF0YV9hcnJheSI9PT10LnZhbFR5cGV8fHQuYXJyYXlPa31mb3IoaSBpbiB0KXtpZih1LmNhbGMmJiFuLnRyYW5zaXRpb24pcmV0dXJuO3ZhciB2PXRbaV0sbT1lW2ldLHk9ci5jb25jYXQoaSk7aWYobD15LmpvaW4oIi4iKSwiXyIhPT1pLmNoYXJBdCgwKSYmImZ1bmN0aW9uIiE9dHlwZW9mIHYmJnYhPT1tKXtpZigoInRpY2swIj09PWl8fCJkdGljayI9PT1pKSYmImdlbyIhPT1yWzBdKXt2YXIgeD1lLnRpY2ttb2RlO2lmKCJhdXRvIj09PXh8fCJhcnJheSI9PT14fHwheCljb250aW51ZX1pZigoInJhbmdlIiE9PWl8fCFlLmF1dG9yYW5nZSkmJigiem1pbiIhPT1pJiYiem1heCIhPT1pfHwiY29udG91cmNhcnBldCIhPT1lLnR5cGUpJiYoYT1jKHkpKSYmKCFhLl9jb21wYXJlQXNKU09OfHxKU09OLnN0cmluZ2lmeSh2KSE9PUpTT04uc3RyaW5naWZ5KG0pKSl7dmFyIGIsXz1hLnZhbFR5cGUsdz1nKGEpLGs9QXJyYXkuaXNBcnJheSh2KSxUPUFycmF5LmlzQXJyYXkobSk7aWYoayYmVCl7dmFyIEE9Il9pbnB1dF8iK2ksUz10W0FdLEU9ZVtBXTtpZihBcnJheS5pc0FycmF5KFMpJiZTPT09RSljb250aW51ZX1pZih2b2lkIDA9PT1tKXcmJms/dS5jYWxjPSEwOmQoKTtlbHNlIGlmKGEuX2lzTGlua2VkVG9BcnJheSl7dmFyIEw9W10sQz0hMTtmfHwodS5hcnJheXNbaV09TCk7dmFyIFA9TWF0aC5taW4odi5sZW5ndGgsbS5sZW5ndGgpLE89TWF0aC5tYXgodi5sZW5ndGgsbS5sZW5ndGgpO2lmKFAhPT1PKXtpZigiYXJyYXlkcmF3IiE9PWEuZWRpdFR5cGUpe2QoKTtjb250aW51ZX1DPSEwfWZvcihiPTA7YjxQO2IrKylzdCh2W2JdLG1bYl0seS5jb25jYXQoYiksby5leHRlbmRGbGF0KHtpbkFycmF5OmksYXJyYXlJbmRleDpifSxuKSk7aWYoQylmb3IoYj1QO2I8TztiKyspTC5wdXNoKGIpfWVsc2UhXyYmby5pc1BsYWluT2JqZWN0KHYpP3N0KHYsbSx5LG4pOnc/ayYmVD8oaCYmKHUuY2FsYz0hMCksKGh8fG4ubmV3RGF0YVJldmlzaW9uKSYmZCgpKTprIT09VD91LmNhbGM9ITA6ZCgpOmsmJlQmJnYubGVuZ3RoPT09bS5sZW5ndGgmJlN0cmluZyh2KT09PVN0cmluZyhtKXx8ZCgpfX19Zm9yKGkgaW4gZSlpZighKGkgaW4gdHx8Il8iPT09aS5jaGFyQXQoMCl8fCJmdW5jdGlvbiI9PXR5cGVvZiBlW2ldKSl7aWYoZyhhPWMoci5jb25jYXQoaSkpKSYmQXJyYXkuaXNBcnJheShlW2ldKSlyZXR1cm4gdm9pZCh1LmNhbGM9ITApO2QoKX19ZnVuY3Rpb24gbHQodCl7dmFyIGU9bi5zZWxlY3QodCkscj10Ll9mdWxsTGF5b3V0O2lmKHIuX2NvbnRhaW5lcj1lLnNlbGVjdEFsbCgiLnBsb3QtY29udGFpbmVyIikuZGF0YShbMF0pLHIuX2NvbnRhaW5lci5lbnRlcigpLmluc2VydCgiZGl2IiwiOmZpcnN0LWNoaWxkIikuY2xhc3NlZCgicGxvdC1jb250YWluZXIiLCEwKS5jbGFzc2VkKCJwbG90bHkiLCEwKSxyLl9wYXBlcmRpdj1yLl9jb250YWluZXIuc2VsZWN0QWxsKCIuc3ZnLWNvbnRhaW5lciIpLmRhdGEoWzBdKSxyLl9wYXBlcmRpdi5lbnRlcigpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgic3ZnLWNvbnRhaW5lciIsITApLnN0eWxlKCJwb3NpdGlvbiIsInJlbGF0aXZlIiksci5fZ2xjb250YWluZXI9ci5fcGFwZXJkaXYuc2VsZWN0QWxsKCIuZ2wtY29udGFpbmVyIikuZGF0YShbe31dKSxyLl9nbGNvbnRhaW5lci5lbnRlcigpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgiZ2wtY29udGFpbmVyIiwhMCksci5fcGFwZXJkaXYuc2VsZWN0QWxsKCIubWFpbi1zdmciKS5yZW1vdmUoKSxyLl9wYXBlcmRpdi5zZWxlY3QoIi5tb2RlYmFyLWNvbnRhaW5lciIpLnJlbW92ZSgpLHIuX3BhcGVyPXIuX3BhcGVyZGl2Lmluc2VydCgic3ZnIiwiOmZpcnN0LWNoaWxkIikuY2xhc3NlZCgibWFpbi1zdmciLCEwKSxyLl90b3BwYXBlcj1yLl9wYXBlcmRpdi5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoIm1haW4tc3ZnIiwhMCksci5fbW9kZWJhcmRpdj1yLl9wYXBlcmRpdi5hcHBlbmQoImRpdiIpLHIuX2hvdmVycGFwZXI9ci5fcGFwZXJkaXYuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJtYWluLXN2ZyIsITApLCFyLl91aWQpe3ZhciBhPXt9O24uc2VsZWN0QWxsKCJkZWZzIikuZWFjaChmdW5jdGlvbigpe3RoaXMuaWQmJihhW3RoaXMuaWQuc3BsaXQoIi0iKVsxXV09MSl9KSxyLl91aWQ9by5yYW5kc3RyKGEpfXIuX3BhcGVyZGl2LnNlbGVjdEFsbCgiLm1haW4tc3ZnIikuYXR0cih5LnN2Z0F0dHJzKSxyLl9kZWZzPXIuX3BhcGVyLmFwcGVuZCgiZGVmcyIpLmF0dHIoImlkIiwiZGVmcy0iK3IuX3VpZCksci5fY2xpcHM9ci5fZGVmcy5hcHBlbmQoImciKS5jbGFzc2VkKCJjbGlwcyIsITApLHIuX3RvcGRlZnM9ci5fdG9wcGFwZXIuYXBwZW5kKCJkZWZzIikuYXR0cigiaWQiLCJ0b3BkZWZzLSIrci5fdWlkKSxyLl90b3BjbGlwcz1yLl90b3BkZWZzLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNsaXBzIiwhMCksci5fYmdMYXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJiZ2xheWVyIiwhMCksci5fZHJhZ2dlcnM9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiZHJhZ2xheWVyIiwhMCk7dmFyIGk9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgibGF5ZXItYmVsb3ciLCEwKTtyLl9pbWFnZUxvd2VyTGF5ZXI9aS5hcHBlbmQoImciKS5jbGFzc2VkKCJpbWFnZWxheWVyIiwhMCksci5fc2hhcGVMb3dlckxheWVyPWkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2hhcGVsYXllciIsITApLHIuX2NhcnRlc2lhbmxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNhcnRlc2lhbmxheWVyIiwhMCksci5fcG9sYXJsYXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJwb2xhcmxheWVyIiwhMCksci5fdGVybmFyeWxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoInRlcm5hcnlsYXllciIsITApLHIuX2dlb2xheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImdlb2xheWVyIiwhMCksci5fZnVubmVsYXJlYWxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZ1bm5lbGFyZWFsYXllciIsITApLHIuX3BpZWxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoInBpZWxheWVyIiwhMCksci5fdHJlZW1hcGxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoInRyZWVtYXBsYXllciIsITApLHIuX3N1bmJ1cnN0bGF5ZXI9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgic3VuYnVyc3RsYXllciIsITApLHIuX2luZGljYXRvcmxheWVyPXIuX3RvcHBhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImluZGljYXRvcmxheWVyIiwhMCksci5fZ2xpbWFnZXM9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiZ2xpbWFnZXMiLCEwKTt2YXIgcz1yLl90b3BwYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJsYXllci1hYm92ZSIsITApO3IuX2ltYWdlVXBwZXJMYXllcj1zLmFwcGVuZCgiZyIpLmNsYXNzZWQoImltYWdlbGF5ZXIiLCEwKSxyLl9zaGFwZVVwcGVyTGF5ZXI9cy5hcHBlbmQoImciKS5jbGFzc2VkKCJzaGFwZWxheWVyIiwhMCksci5faW5mb2xheWVyPXIuX3RvcHBhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImluZm9sYXllciIsITApLHIuX21lbnVsYXllcj1yLl90b3BwYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJtZW51bGF5ZXIiLCEwKSxyLl96b29tbGF5ZXI9ci5fdG9wcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiem9vbWxheWVyIiwhMCksci5faG92ZXJsYXllcj1yLl9ob3ZlcnBhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImhvdmVybGF5ZXIiLCEwKSxyLl9tb2RlYmFyZGl2LmNsYXNzZWQoIm1vZGViYXItY29udGFpbmVyIiwhMCkuc3R5bGUoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5zdHlsZSgidG9wIiwiMHB4Iikuc3R5bGUoInJpZ2h0IiwiMHB4IiksdC5lbWl0KCJwbG90bHlfZnJhbWV3b3JrIil9ci5hbmltYXRlPWZ1bmN0aW9uKHQsZSxyKXtpZih0PW8uZ2V0R3JhcGhEaXYodCksIW8uaXNQbG90RGl2KHQpKXRocm93IG5ldyBFcnJvcigiVGhpcyBlbGVtZW50IGlzIG5vdCBhIFBsb3RseSBwbG90OiAiK3QrIi4gSXQncyBsaWtlbHkgdGhhdCB5b3UndmUgZmFpbGVkIHRvIGNyZWF0ZSBhIHBsb3QgYmVmb3JlIGFuaW1hdGluZyBpdC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIGh0dHBzOi8vcGxvdC5seS9qYXZhc2NyaXB0L2FuaW1hdGlvbnMvIik7dmFyIG49dC5fdHJhbnNpdGlvbkRhdGE7bi5fZnJhbWVRdWV1ZXx8KG4uX2ZyYW1lUXVldWU9W10pO3ZhciBhPShyPWYuc3VwcGx5QW5pbWF0aW9uRGVmYXVsdHMocikpLnRyYW5zaXRpb24saT1yLmZyYW1lO2Z1bmN0aW9uIHModCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/dD49YS5sZW5ndGg/YVswXTphW3RdOmF9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShpKT90Pj1pLmxlbmd0aD9pWzBdOmlbdF06aX1mdW5jdGlvbiBjKHQsZSl7dmFyIHI9MDtyZXR1cm4gZnVuY3Rpb24oKXtpZih0JiYrK3I9PT1lKXJldHVybiB0KCl9fXJldHVybiB2b2lkIDA9PT1uLl9mcmFtZVdhaXRpbmdDbnQmJihuLl9mcmFtZVdhaXRpbmdDbnQ9MCksbmV3IFByb21pc2UoZnVuY3Rpb24oaSx1KXtmdW5jdGlvbiBoKCl7bi5fY3VycmVudEZyYW1lJiZuLl9jdXJyZW50RnJhbWUub25Db21wbGV0ZSYmbi5fY3VycmVudEZyYW1lLm9uQ29tcGxldGUoKTt2YXIgZT1uLl9jdXJyZW50RnJhbWU9bi5fZnJhbWVRdWV1ZS5zaGlmdCgpO2lmKGUpe3ZhciByPWUubmFtZT9lLm5hbWUudG9TdHJpbmcoKTpudWxsO3QuX2Z1bGxMYXlvdXQuX2N1cnJlbnRGcmFtZT1yLG4uX2xhc3RGcmFtZUF0PURhdGUubm93KCksbi5fdGltZVRvTmV4dD1lLmZyYW1lT3B0cy5kdXJhdGlvbixmLnRyYW5zaXRpb24odCxlLmZyYW1lLmRhdGEsZS5mcmFtZS5sYXlvdXQsay5jb2VyY2VUcmFjZUluZGljZXModCxlLmZyYW1lLnRyYWNlcyksZS5mcmFtZU9wdHMsZS50cmFuc2l0aW9uT3B0cykudGhlbihmdW5jdGlvbigpe2Uub25Db21wbGV0ZSYmZS5vbkNvbXBsZXRlKCl9KSx0LmVtaXQoInBsb3RseV9hbmltYXRpbmdmcmFtZSIse25hbWU6cixmcmFtZTplLmZyYW1lLGFuaW1hdGlvbjp7ZnJhbWU6ZS5mcmFtZU9wdHMsdHJhbnNpdGlvbjplLnRyYW5zaXRpb25PcHRzfX0pfWVsc2UgdC5lbWl0KCJwbG90bHlfYW5pbWF0ZWQiKSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUobi5fYW5pbWF0aW9uUmFmKSxuLl9hbmltYXRpb25SYWY9bnVsbH1mdW5jdGlvbiBwKCl7dC5lbWl0KCJwbG90bHlfYW5pbWF0aW5nIiksbi5fbGFzdEZyYW1lQXQ9LTEvMCxuLl90aW1lVG9OZXh0PTAsbi5fcnVubmluZ1RyYW5zaXRpb25zPTAsbi5fY3VycmVudEZyYW1lPW51bGw7dmFyIGU9ZnVuY3Rpb24oKXtuLl9hbmltYXRpb25SYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShlKSxEYXRlLm5vdygpLW4uX2xhc3RGcmFtZUF0Pm4uX3RpbWVUb05leHQmJmgoKX07ZSgpfXZhciBkLGcsdj0wO2Z1bmN0aW9uIG0odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/dj49YS5sZW5ndGg/dC50cmFuc2l0aW9uT3B0cz1hW3ZdOnQudHJhbnNpdGlvbk9wdHM9YVswXTp0LnRyYW5zaXRpb25PcHRzPWEsdisrLHR9dmFyIHk9W10seD1udWxsPT1lLGI9QXJyYXkuaXNBcnJheShlKTtpZih4fHxifHwhby5pc1BsYWluT2JqZWN0KGUpKXtpZih4fHwtMSE9PVsic3RyaW5nIiwibnVtYmVyIl0uaW5kZXhPZih0eXBlb2YgZSkpZm9yKGQ9MDtkPG4uX2ZyYW1lcy5sZW5ndGg7ZCsrKShnPW4uX2ZyYW1lc1tkXSkmJih4fHxTdHJpbmcoZy5ncm91cCk9PT1TdHJpbmcoZSkpJiZ5LnB1c2goe3R5cGU6ImJ5bmFtZSIsbmFtZTpTdHJpbmcoZy5uYW1lKSxkYXRhOm0oe25hbWU6Zy5uYW1lfSl9KTtlbHNlIGlmKGIpZm9yKGQ9MDtkPGUubGVuZ3RoO2QrKyl7dmFyIF89ZVtkXTstMSE9PVsibnVtYmVyIiwic3RyaW5nIl0uaW5kZXhPZih0eXBlb2YgXyk/KF89U3RyaW5nKF8pLHkucHVzaCh7dHlwZToiYnluYW1lIixuYW1lOl8sZGF0YTptKHtuYW1lOl99KX0pKTpvLmlzUGxhaW5PYmplY3QoXykmJnkucHVzaCh7dHlwZToib2JqZWN0IixkYXRhOm0oby5leHRlbmRGbGF0KHt9LF8pKX0pfX1lbHNlIHkucHVzaCh7dHlwZToib2JqZWN0IixkYXRhOm0oby5leHRlbmRGbGF0KHt9LGUpKX0pO2ZvcihkPTA7ZDx5Lmxlbmd0aDtkKyspaWYoImJ5bmFtZSI9PT0oZz15W2RdKS50eXBlJiYhbi5fZnJhbWVIYXNoW2cuZGF0YS5uYW1lXSlyZXR1cm4gby53YXJuKCdhbmltYXRlIGZhaWx1cmU6IGZyYW1lIG5vdCBmb3VuZDogIicrZy5kYXRhLm5hbWUrJyInKSx2b2lkIHUoKTstMSE9PVsibmV4dCIsImltbWVkaWF0ZSJdLmluZGV4T2Yoci5tb2RlKSYmZnVuY3Rpb24oKXtpZigwIT09bi5fZnJhbWVRdWV1ZS5sZW5ndGgpe2Zvcig7bi5fZnJhbWVRdWV1ZS5sZW5ndGg7KXt2YXIgZT1uLl9mcmFtZVF1ZXVlLnBvcCgpO2Uub25JbnRlcnJ1cHQmJmUub25JbnRlcnJ1cHQoKX10LmVtaXQoInBsb3RseV9hbmltYXRpb25pbnRlcnJ1cHRlZCIsW10pfX0oKSwicmV2ZXJzZSI9PT1yLmRpcmVjdGlvbiYmeS5yZXZlcnNlKCk7dmFyIHc9dC5fZnVsbExheW91dC5fY3VycmVudEZyYW1lO2lmKHcmJnIuZnJvbWN1cnJlbnQpe3ZhciBUPS0xO2ZvcihkPTA7ZDx5Lmxlbmd0aDtkKyspaWYoImJ5bmFtZSI9PT0oZz15W2RdKS50eXBlJiZnLm5hbWU9PT13KXtUPWQ7YnJlYWt9aWYoVD4wJiZUPHkubGVuZ3RoLTEpe3ZhciBNPVtdO2ZvcihkPTA7ZDx5Lmxlbmd0aDtkKyspZz15W2RdLCgiYnluYW1lIiE9PXlbZF0udHlwZXx8ZD5UKSYmTS5wdXNoKGcpO3k9TX19eS5sZW5ndGg+MD9mdW5jdGlvbihlKXtpZigwIT09ZS5sZW5ndGgpe2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbztvPSJieW5hbWUiPT09ZVthXS50eXBlP2YuY29tcHV0ZUZyYW1lKHQsZVthXS5uYW1lKTplW2FdLmRhdGE7dmFyIGg9bChhKSxkPXMoYSk7ZC5kdXJhdGlvbj1NYXRoLm1pbihkLmR1cmF0aW9uLGguZHVyYXRpb24pO3ZhciBnPXtmcmFtZTpvLG5hbWU6ZVthXS5uYW1lLGZyYW1lT3B0czpoLHRyYW5zaXRpb25PcHRzOmR9O2E9PT1lLmxlbmd0aC0xJiYoZy5vbkNvbXBsZXRlPWMoaSwyKSxnLm9uSW50ZXJydXB0PXUpLG4uX2ZyYW1lUXVldWUucHVzaChnKX0iaW1tZWRpYXRlIj09PXIubW9kZSYmKG4uX2xhc3RGcmFtZUF0PS0xLzApLG4uX2FuaW1hdGlvblJhZnx8cCgpfX0oeSk6KHQuZW1pdCgicGxvdGx5X2FuaW1hdGVkIiksaSgpKX0pfSxyLmFkZEZyYW1lcz1mdW5jdGlvbih0LGUscil7aWYodD1vLmdldEdyYXBoRGl2KHQpLG51bGw9PWUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKCFvLmlzUGxvdERpdih0KSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgZWxlbWVudCBpcyBub3QgYSBQbG90bHkgcGxvdDogIit0KyIuIEl0J3MgbGlrZWx5IHRoYXQgeW91J3ZlIGZhaWxlZCB0byBjcmVhdGUgYSBwbG90IGJlZm9yZSBhZGRpbmcgZnJhbWVzLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9wbG90Lmx5L2phdmFzY3JpcHQvYW5pbWF0aW9ucy8iKTt2YXIgbixhLGkscyxsPXQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZXMsdT10Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVIYXNoO2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBFcnJvcigiYWRkRnJhbWVzIGZhaWx1cmU6IGZyYW1lTGlzdCBtdXN0IGJlIGFuIEFycmF5IG9mIGZyYW1lIGRlZmluaXRpb25zIitlKTt2YXIgaD1sLmxlbmd0aCsyKmUubGVuZ3RoLHA9W10sZD17fTtmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0tKWlmKG8uaXNQbGFpbk9iamVjdChlW25dKSl7dmFyIGc9ZVtuXS5uYW1lLHY9KHVbZ118fGRbZ118fHt9KS5uYW1lLG09ZVtuXS5uYW1lLHk9dVt2XXx8ZFt2XTt2JiZtJiYibnVtYmVyIj09dHlwZW9mIG0mJnkmJlM8RSYmKFMrKyxvLndhcm4oJ2FkZEZyYW1lczogb3ZlcndyaXRpbmcgZnJhbWUgIicrKHVbdl18fGRbdl0pLm5hbWUrJyIgd2l0aCBhIGZyYW1lIHdob3NlIG5hbWUgb2YgdHlwZSAibnVtYmVyIiBhbHNvIGVxdWF0ZXMgdG8gIicrdisnIi4gVGhpcyBpcyB2YWxpZCBidXQgbWF5IHBvdGVudGlhbGx5IGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBzaW5jZSBhbGwgcGxvdGx5LmpzIGZyYW1lIG5hbWVzIGFyZSBzdG9yZWQgaW50ZXJuYWxseSBhcyBzdHJpbmdzLicpLFM9PT1FJiZvLndhcm4oImFkZEZyYW1lczogVGhpcyBBUEkgY2FsbCBoYXMgeWllbGRlZCB0b28gbWFueSBvZiB0aGVzZSB3YXJuaW5ncy4gRm9yIHRoZSByZXN0IG9mIHRoaXMgY2FsbCwgZnVydGhlciB3YXJuaW5ncyBhYm91dCBudW1lcmljIGZyYW1lIG5hbWVzIHdpbGwgYmUgc3VwcHJlc3NlZC4iKSksZFtnXT17bmFtZTpnfSxwLnB1c2goe2ZyYW1lOmYuc3VwcGx5RnJhbWVEZWZhdWx0cyhlW25dKSxpbmRleDpyJiZ2b2lkIDAhPT1yW25dJiZudWxsIT09cltuXT9yW25dOmgrbn0pfXAuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LmluZGV4PmUuaW5kZXg/LTE6dC5pbmRleDxlLmluZGV4PzE6MH0pO3ZhciB4PVtdLGI9W10sXz1sLmxlbmd0aDtmb3Iobj1wLmxlbmd0aC0xO24+PTA7bi0tKXtpZigibnVtYmVyIj09dHlwZW9mKGE9cFtuXS5mcmFtZSkubmFtZSYmby53YXJuKCJXYXJuaW5nOiBhZGRGcmFtZXMgYWNjZXB0cyBmcmFtZXMgd2l0aCBudW1lcmljIG5hbWVzLCBidXQgdGhlIG51bWJlcnMgYXJlaW1wbGljaXRseSBjYXN0IHRvIHN0cmluZ3MiKSwhYS5uYW1lKWZvcig7dVthLm5hbWU9ImZyYW1lICIrdC5fdHJhbnNpdGlvbkRhdGEuX2NvdW50ZXIrK107KTtpZih1W2EubmFtZV0pe2ZvcihpPTA7aTxsLmxlbmd0aCYmKGxbaV18fHt9KS5uYW1lIT09YS5uYW1lO2krKyk7eC5wdXNoKHt0eXBlOiJyZXBsYWNlIixpbmRleDppLHZhbHVlOmF9KSxiLnVuc2hpZnQoe3R5cGU6InJlcGxhY2UiLGluZGV4OmksdmFsdWU6bFtpXX0pfWVsc2Ugcz1NYXRoLm1heCgwLE1hdGgubWluKHBbbl0uaW5kZXgsXykpLHgucHVzaCh7dHlwZToiaW5zZXJ0IixpbmRleDpzLHZhbHVlOmF9KSxiLnVuc2hpZnQoe3R5cGU6ImRlbGV0ZSIsaW5kZXg6c30pLF8rK312YXIgdz1mLm1vZGlmeUZyYW1lcyxrPWYubW9kaWZ5RnJhbWVzLFQ9W3QsYl0sTT1bdCx4XTtyZXR1cm4gYyYmYy5hZGQodCx3LFQsayxNKSxmLm1vZGlmeUZyYW1lcyh0LHgpfSxyLmRlbGV0ZUZyYW1lcz1mdW5jdGlvbih0LGUpe2lmKHQ9by5nZXRHcmFwaERpdih0KSwhby5pc1Bsb3REaXYodCkpdGhyb3cgbmV3IEVycm9yKCJUaGlzIGVsZW1lbnQgaXMgbm90IGEgUGxvdGx5IHBsb3Q6ICIrdCk7dmFyIHIsbixhPXQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZXMsaT1bXSxzPVtdO2lmKCFlKWZvcihlPVtdLHI9MDtyPGEubGVuZ3RoO3IrKyllLnB1c2gocik7Zm9yKChlPWUuc2xpY2UoKSkuc29ydCgpLHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSluPWVbcl0saS5wdXNoKHt0eXBlOiJkZWxldGUiLGluZGV4Om59KSxzLnVuc2hpZnQoe3R5cGU6Imluc2VydCIsaW5kZXg6bix2YWx1ZTphW25dfSk7dmFyIGw9Zi5tb2RpZnlGcmFtZXMsdT1mLm1vZGlmeUZyYW1lcyxoPVt0LHNdLHA9W3QsaV07cmV0dXJuIGMmJmMuYWRkKHQsbCxoLHUscCksZi5tb2RpZnlGcmFtZXModCxpKX0sci5hZGRUcmFjZXM9ZnVuY3Rpb24gdChlLG4sYSl7ZT1vLmdldEdyYXBoRGl2KGUpO3ZhciBpLHMsbD1bXSx1PXIuZGVsZXRlVHJhY2VzLGg9dCxmPVtlLGxdLHA9W2Usbl07Zm9yKGZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhO2lmKCFBcnJheS5pc0FycmF5KHQuZGF0YSkpdGhyb3cgbmV3IEVycm9yKCJnZC5kYXRhIG11c3QgYmUgYW4gYXJyYXkuIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigidHJhY2VzIG11c3QgYmUgZGVmaW5lZC4iKTtmb3IoQXJyYXkuaXNBcnJheShlKXx8KGU9W2VdKSxuPTA7bjxlLmxlbmd0aDtuKyspaWYoIm9iamVjdCIhPXR5cGVvZihhPWVbbl0pfHxBcnJheS5pc0FycmF5KGEpfHxudWxsPT09YSl0aHJvdyBuZXcgRXJyb3IoImFsbCB2YWx1ZXMgaW4gdHJhY2VzIGFycmF5IG11c3QgYmUgbm9uLWFycmF5IG9iamVjdHMiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHJ8fEFycmF5LmlzQXJyYXkocil8fChyPVtyXSksInVuZGVmaW5lZCIhPXR5cGVvZiByJiZyLmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiaWYgaW5kaWNlcyBpcyBzcGVjaWZpZWQsIHRyYWNlcy5sZW5ndGggbXVzdCBlcXVhbCBpbmRpY2VzLmxlbmd0aCIpfShlLG4sYSksQXJyYXkuaXNBcnJheShuKXx8KG49W25dKSxuPW4ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBvLmV4dGVuZEZsYXQoe30sdCl9KSxrLmNsZWFuRGF0YShuKSxpPTA7aTxuLmxlbmd0aDtpKyspZS5kYXRhLnB1c2gobltpXSk7Zm9yKGk9MDtpPG4ubGVuZ3RoO2krKylsLnB1c2goLW4ubGVuZ3RoK2kpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYSlyZXR1cm4gcz1yLnJlZHJhdyhlKSxjLmFkZChlLHUsZixoLHApLHM7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTt0cnl7RChlLGwsYSl9Y2F0Y2godCl7dGhyb3cgZS5kYXRhLnNwbGljZShlLmRhdGEubGVuZ3RoLW4ubGVuZ3RoLG4ubGVuZ3RoKSx0fXJldHVybiBjLnN0YXJ0U2VxdWVuY2UoZSksYy5hZGQoZSx1LGYsaCxwKSxzPXIubW92ZVRyYWNlcyhlLGwsYSksYy5zdG9wU2VxdWVuY2UoZSksc30sci5kZWxldGVUcmFjZXM9ZnVuY3Rpb24gdChlLG4pe2U9by5nZXRHcmFwaERpdihlKTt2YXIgYSxpLHM9W10sbD1yLmFkZFRyYWNlcyx1PXQsaD1bZSxzLG5dLGY9W2Usbl07aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigiaW5kaWNlcyBtdXN0IGJlIGFuIGludGVnZXIgb3IgYXJyYXkgb2YgaW50ZWdlcnMuIik7Zm9yKEFycmF5LmlzQXJyYXkobil8fChuPVtuXSksSShlLG4sImluZGljZXMiKSwobj16KG4sZS5kYXRhLmxlbmd0aC0xKSkuc29ydChvLnNvcnRlckRlcyksYT0wO2E8bi5sZW5ndGg7YSs9MSlpPWUuZGF0YS5zcGxpY2UoblthXSwxKVswXSxzLnB1c2goaSk7dmFyIHA9ci5yZWRyYXcoZSk7cmV0dXJuIGMuYWRkKGUsbCxoLHUsZikscH0sci5leHRlbmRUcmFjZXM9ZnVuY3Rpb24gdChlLG4sYSxpKXt2YXIgcz1SKGU9by5nZXRHcmFwaERpdihlKSxuLGEsaSxmdW5jdGlvbih0LGUscil7dmFyIG4sYTtpZihvLmlzVHlwZWRBcnJheSh0KSlpZihyPDApe3ZhciBpPW5ldyB0LmNvbnN0cnVjdG9yKDApLHM9Rih0LGUpO3I8MD8obj1zLGE9aSk6KG49aSxhPXMpfWVsc2UgaWYobj1uZXcgdC5jb25zdHJ1Y3RvcihyKSxhPW5ldyB0LmNvbnN0cnVjdG9yKHQubGVuZ3RoK2UubGVuZ3RoLXIpLHI9PT1lLmxlbmd0aCluLnNldChlKSxhLnNldCh0KTtlbHNlIGlmKHI8ZS5sZW5ndGgpe3ZhciBsPWUubGVuZ3RoLXI7bi5zZXQoZS5zdWJhcnJheShsKSksYS5zZXQodCksYS5zZXQoZS5zdWJhcnJheSgwLGwpLHQubGVuZ3RoKX1lbHNle3ZhciBjPXItZS5sZW5ndGgsdT10Lmxlbmd0aC1jO24uc2V0KHQuc3ViYXJyYXkodSkpLG4uc2V0KGUsYyksYS5zZXQodC5zdWJhcnJheSgwLHUpKX1lbHNlIG49dC5jb25jYXQoZSksYT1yPj0wJiZyPG4ubGVuZ3RoP24uc3BsaWNlKDAsbi5sZW5ndGgtcik6W107cmV0dXJuW24sYV19KSxsPXIucmVkcmF3KGUpLHU9W2Uscy51cGRhdGUsYSxzLm1heFBvaW50c107cmV0dXJuIGMuYWRkKGUsci5wcmVwZW5kVHJhY2VzLHUsdCxhcmd1bWVudHMpLGx9LHIubW92ZVRyYWNlcz1mdW5jdGlvbiB0KGUsbixhKXt2YXIgaSxzPVtdLGw9W10sdT10LGg9dCxmPVtlPW8uZ2V0R3JhcGhEaXYoZSksYSxuXSxwPVtlLG4sYV07aWYoRChlLG4sYSksbj1BcnJheS5pc0FycmF5KG4pP246W25dLCJ1bmRlZmluZWQiPT10eXBlb2YgYSlmb3IoYT1bXSxpPTA7aTxuLmxlbmd0aDtpKyspYS5wdXNoKC1uLmxlbmd0aCtpKTtmb3IoYT1BcnJheS5pc0FycmF5KGEpP2E6W2FdLG49eihuLGUuZGF0YS5sZW5ndGgtMSksYT16KGEsZS5kYXRhLmxlbmd0aC0xKSxpPTA7aTxlLmRhdGEubGVuZ3RoO2krKyktMT09PW4uaW5kZXhPZihpKSYmcy5wdXNoKGUuZGF0YVtpXSk7Zm9yKGk9MDtpPG4ubGVuZ3RoO2krKylsLnB1c2goe25ld0luZGV4OmFbaV0sdHJhY2U6ZS5kYXRhW25baV1dfSk7Zm9yKGwuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm5ld0luZGV4LWUubmV3SW5kZXh9KSxpPTA7aTxsLmxlbmd0aDtpKz0xKXMuc3BsaWNlKGxbaV0ubmV3SW5kZXgsMCxsW2ldLnRyYWNlKTtlLmRhdGE9czt2YXIgZD1yLnJlZHJhdyhlKTtyZXR1cm4gYy5hZGQoZSx1LGYsaCxwKSxkfSxyLnByZXBlbmRUcmFjZXM9ZnVuY3Rpb24gdChlLG4sYSxpKXt2YXIgcz1SKGU9by5nZXRHcmFwaERpdihlKSxuLGEsaSxmdW5jdGlvbih0LGUscil7dmFyIG4sYTtpZihvLmlzVHlwZWRBcnJheSh0KSlpZihyPD0wKXt2YXIgaT1uZXcgdC5jb25zdHJ1Y3RvcigwKSxzPUYoZSx0KTtyPDA/KG49cyxhPWkpOihuPWksYT1zKX1lbHNlIGlmKG49bmV3IHQuY29uc3RydWN0b3IociksYT1uZXcgdC5jb25zdHJ1Y3Rvcih0Lmxlbmd0aCtlLmxlbmd0aC1yKSxyPT09ZS5sZW5ndGgpbi5zZXQoZSksYS5zZXQodCk7ZWxzZSBpZihyPGUubGVuZ3RoKXt2YXIgbD1lLmxlbmd0aC1yO24uc2V0KGUuc3ViYXJyYXkoMCxsKSksYS5zZXQoZS5zdWJhcnJheShsKSksYS5zZXQodCxsKX1lbHNle3ZhciBjPXItZS5sZW5ndGg7bi5zZXQoZSksbi5zZXQodC5zdWJhcnJheSgwLGMpLGUubGVuZ3RoKSxhLnNldCh0LnN1YmFycmF5KGMpKX1lbHNlIG49ZS5jb25jYXQodCksYT1yPj0wJiZyPG4ubGVuZ3RoP24uc3BsaWNlKHIsbi5sZW5ndGgpOltdO3JldHVybltuLGFdfSksbD1yLnJlZHJhdyhlKSx1PVtlLHMudXBkYXRlLGEscy5tYXhQb2ludHNdO3JldHVybiBjLmFkZChlLHIuZXh0ZW5kVHJhY2VzLHUsdCxhcmd1bWVudHMpLGx9LHIubmV3UGxvdD1mdW5jdGlvbih0LGUsbixhKXtyZXR1cm4gdD1vLmdldEdyYXBoRGl2KHQpLGYuY2xlYW5QbG90KFtdLHt9LHQuX2Z1bGxEYXRhfHxbXSx0Ll9mdWxsTGF5b3V0fHx7fSksZi5wdXJnZSh0KSxyLnBsb3QodCxlLG4sYSl9LHIucGxvdD1mdW5jdGlvbih0LGUsYSxpKXt2YXIgcztpZih0PW8uZ2V0R3JhcGhEaXYodCksbC5pbml0KHQpLG8uaXNQbGFpbk9iamVjdChlKSl7dmFyIGM9ZTtlPWMuZGF0YSxhPWMubGF5b3V0LGk9Yy5jb25maWcscz1jLmZyYW1lc31pZighMT09PWwudHJpZ2dlckhhbmRsZXIodCwicGxvdGx5X2JlZm9yZXBsb3QiLFtlLGEsaV0pKXJldHVybiBQcm9taXNlLnJlamVjdCgpO2V8fGF8fG8uaXNQbG90RGl2KHQpfHxvLndhcm4oIkNhbGxpbmcgUGxvdGx5LnBsb3QgYXMgaWYgcmVkcmF3aW5nIGJ1dCB0aGlzIGNvbnRhaW5lciBkb2Vzbid0IHlldCBoYXZlIGEgcGxvdC4iLHQpLE8odCxpKSxhfHwoYT17fSksbi5zZWxlY3QodCkuY2xhc3NlZCgianMtcGxvdGx5LXBsb3QiLCEwKSxnLm1ha2VUZXN0ZXIoKSxBcnJheS5pc0FycmF5KHQuX3Byb21pc2VzKXx8KHQuX3Byb21pc2VzPVtdKTt2YXIgaD0wPT09KHQuZGF0YXx8W10pLmxlbmd0aCYmQXJyYXkuaXNBcnJheShlKTtBcnJheS5pc0FycmF5KGUpJiYoay5jbGVhbkRhdGEoZSksaD90LmRhdGE9ZTp0LmRhdGEucHVzaC5hcHBseSh0LmRhdGEsZSksdC5lbXB0eT0hMSksdC5sYXlvdXQmJiFofHwodC5sYXlvdXQ9ay5jbGVhbkxheW91dChhKSksZi5zdXBwbHlEZWZhdWx0cyh0KTt2YXIgdj10Ll9mdWxsTGF5b3V0LHk9di5faGFzKCJjYXJ0ZXNpYW4iKTtpZighdi5faGFzKCJwb2xhciIpJiZlJiZlWzBdJiZlWzBdLnIpcmV0dXJuIG8ubG9nKCJMZWdhY3kgcG9sYXIgY2hhcnRzIGFyZSBkZXByZWNhdGVkISIpLGZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1uLnNlbGVjdCh0KS5zZWxlY3RBbGwoIi5wbG90LWNvbnRhaW5lciIpLmRhdGEoWzBdKTthLmVudGVyKCkuaW5zZXJ0KCJkaXYiLCI6Zmlyc3QtY2hpbGQiKS5jbGFzc2VkKCJwbG90LWNvbnRhaW5lciBwbG90bHkiLCEwKTt2YXIgaT1hLnNlbGVjdEFsbCgiLnN2Zy1jb250YWluZXIiKS5kYXRhKFswXSk7aS5lbnRlcigpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgic3ZnLWNvbnRhaW5lciIsITApLnN0eWxlKCJwb3NpdGlvbiIsInJlbGF0aXZlIiksaS5odG1sKCIiKSxlJiYodC5kYXRhPWUpLHImJih0LmxheW91dD1yKSxwLm1hbmFnZXIuZmlsbExheW91dCh0KSxpLnN0eWxlKHt3aWR0aDp0Ll9mdWxsTGF5b3V0LndpZHRoKyJweCIsaGVpZ2h0OnQuX2Z1bGxMYXlvdXQuaGVpZ2h0KyJweCJ9KSx0LmZyYW1ld29yaz1wLm1hbmFnZXIuZnJhbWV3b3JrKHQpLHQuZnJhbWV3b3JrKHtkYXRhOnQuZGF0YSxsYXlvdXQ6dC5sYXlvdXR9LGkubm9kZSgpKSx0LmZyYW1ld29yay5zZXRVbmRvUG9pbnQoKTt2YXIgcz10LmZyYW1ld29yay5zdmcoKSxsPTEsYz10Ll9mdWxsTGF5b3V0LnRpdGxlP3QuX2Z1bGxMYXlvdXQudGl0bGUudGV4dDoiIjsiIiE9PWMmJmN8fChsPTApO3ZhciB1PWZ1bmN0aW9uKCl7dGhpcy5jYWxsKHguY29udmVydFRvVHNwYW5zLHQpfSxoPXMuc2VsZWN0KCIudGl0bGUtZ3JvdXAgdGV4dCIpLmNhbGwodSk7aWYodC5fY29udGV4dC5lZGl0cy50aXRsZVRleHQpe3ZhciBkPW8uXyh0LCJDbGljayB0byBlbnRlciBQbG90IHRpdGxlIik7YyYmYyE9PWR8fChsPS4yLGguYXR0cih7ImRhdGEtdW5mb3JtYXR0ZWQiOmR9KS50ZXh0KGQpLnN0eWxlKHtvcGFjaXR5Omx9KS5vbigibW91c2VvdmVyLm9wYWNpdHkiLGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKDEwMCkuc3R5bGUoIm9wYWNpdHkiLDEpfSkub24oIm1vdXNlb3V0Lm9wYWNpdHkiLGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKDFlMykuc3R5bGUoIm9wYWNpdHkiLDApfSkpO3ZhciBnPWZ1bmN0aW9uKCl7dGhpcy5jYWxsKHgubWFrZUVkaXRhYmxlLHtnZDp0fSkub24oImVkaXQiLGZ1bmN0aW9uKGUpe3QuZnJhbWV3b3JrKHtsYXlvdXQ6e3RpdGxlOnt0ZXh0OmV9fX0pLHRoaXMudGV4dChlKS5jYWxsKHUpLHRoaXMuY2FsbChnKX0pLm9uKCJjYW5jZWwiLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdHRyKCJkYXRhLXVuZm9ybWF0dGVkIik7dGhpcy50ZXh0KHQpLmNhbGwodSl9KX07aC5jYWxsKGcpfXJldHVybiB0Ll9jb250ZXh0LnNldEJhY2tncm91bmQodCx0Ll9mdWxsTGF5b3V0LnBhcGVyX2JnY29sb3IpLGYuYWRkTGlua3ModCksUHJvbWlzZS5yZXNvbHZlKCl9KHQsZSxhKTt2Ll9yZXBsb3R0aW5nPSEwLGgmJmx0KHQpLHQuZnJhbWV3b3JrIT09bHQmJih0LmZyYW1ld29yaz1sdCxsdCh0KSksZy5pbml0R3JhZGllbnRzKHQpLGgmJmQuc2F2ZVNob3dTcGlrZUluaXRpYWwodCk7dmFyIGI9IXQuY2FsY2RhdGF8fHQuY2FsY2RhdGEubGVuZ3RoIT09KHQuX2Z1bGxEYXRhfHxbXSkubGVuZ3RoO2ImJmYuZG9DYWxjZGF0YSh0KTtmb3IodmFyIF89MDtfPHQuY2FsY2RhdGEubGVuZ3RoO18rKyl0LmNhbGNkYXRhW19dWzBdLnRyYWNlPXQuX2Z1bGxEYXRhW19dO3QuX2NvbnRleHQucmVzcG9uc2l2ZT90Ll9yZXNwb25zaXZlQ2hhcnRIYW5kbGVyfHwodC5fcmVzcG9uc2l2ZUNoYXJ0SGFuZGxlcj1mdW5jdGlvbigpe28uaXNIaWRkZW4odCl8fGYucmVzaXplKHQpfSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0Ll9yZXNwb25zaXZlQ2hhcnRIYW5kbGVyKSk6by5jbGVhclJlc3BvbnNpdmUodCk7dmFyIHc9by5leHRlbmRGbGF0KHt9LHYuX3NpemUpLE09MDtmdW5jdGlvbiBBKCl7aWYoZi5jbGVhckF1dG9NYXJnaW5JZHModCksVC5kcmF3TWFyZ2luUHVzaGVycyh0KSxkLmFsbG93QXV0b01hcmdpbih0KSx2Ll9oYXMoInBpZSIpKWZvcih2YXIgZT10Ll9mdWxsRGF0YSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07InBpZSI9PT1uLnR5cGUmJm4uYXV0b21hcmdpbiYmZi5hbGxvd0F1dG9NYXJnaW4odCwicGllLiIrbi51aWQrIi5hdXRvbWFyZ2luIil9cmV0dXJuIGYuZG9BdXRvTWFyZ2luKHQpLGYucHJldmlvdXNQcm9taXNlcyh0KX1mdW5jdGlvbiBTKCl7dC5fdHJhbnNpdGlvbmluZ3x8KFQuZG9BdXRvUmFuZ2VBbmRDb25zdHJhaW50cyh0KSxoJiZkLnNhdmVSYW5nZUluaXRpYWwodCksdS5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwiY2FsY0F1dG9yYW5nZSIpKHQpKX12YXIgRT1bZi5wcmV2aW91c1Byb21pc2VzLGZ1bmN0aW9uKCl7aWYocylyZXR1cm4gci5hZGRGcmFtZXModCxzKX0sZnVuY3Rpb24gZSgpe2Zvcih2YXIgcj12Ll9iYXNlUGxvdE1vZHVsZXMsbj0wO248ci5sZW5ndGg7bisrKXJbbl0uZHJhd0ZyYW1ld29yayYmcltuXS5kcmF3RnJhbWV3b3JrKHQpO2lmKCF2Ll9nbGNhbnZhcyYmdi5faGFzKCJnbCIpJiYodi5fZ2xjYW52YXM9di5fZ2xjb250YWluZXIuc2VsZWN0QWxsKCIuZ2wtY2FudmFzIikuZGF0YShbe2tleToiY29udGV4dExheWVyIixjb250ZXh0OiEwLHBpY2s6ITF9LHtrZXk6ImZvY3VzTGF5ZXIiLGNvbnRleHQ6ITEscGljazohMX0se2tleToicGlja0xheWVyIixjb250ZXh0OiExLHBpY2s6ITB9XSxmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXl9KSx2Ll9nbGNhbnZhcy5lbnRlcigpLmFwcGVuZCgiY2FudmFzIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiJnbC1jYW52YXMgZ2wtY2FudmFzLSIrdC5rZXkucmVwbGFjZSgiTGF5ZXIiLCIiKX0pLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxvdmVyZmxvdzoidmlzaWJsZSIsInBvaW50ZXItZXZlbnRzIjoibm9uZSJ9KSksdi5fZ2xjYW52YXMpe3YuX2dsY2FudmFzLmF0dHIoIndpZHRoIix2LndpZHRoKS5hdHRyKCJoZWlnaHQiLHYuaGVpZ2h0KTt2YXIgYT12Ll9nbGNhbnZhcy5kYXRhKClbMF0ucmVnbDtpZihhJiYoTWF0aC5mbG9vcih2LndpZHRoKSE9PWEuX2dsLmRyYXdpbmdCdWZmZXJXaWR0aHx8TWF0aC5mbG9vcih2LmhlaWdodCkhPT1hLl9nbC5kcmF3aW5nQnVmZmVySGVpZ2h0KSl7dmFyIGk9IldlYkdMIGNvbnRleHQgYnVmZmVyIGFuZCBjYW52YXMgZGltZW5zaW9ucyBkbyBub3QgbWF0Y2ggZHVlIHRvIGJyb3dzZXIvV2ViR0wgYnVnLiI7aWYoIU0pcmV0dXJuIG8ubG9nKGkrIiBDbGVhcmluZyBncmFwaCBhbmQgcGxvdHRpbmcgYWdhaW4uIiksZi5jbGVhblBsb3QoW10se30sdC5fZnVsbERhdGEsdiksZi5zdXBwbHlEZWZhdWx0cyh0KSx2PXQuX2Z1bGxMYXlvdXQsZi5kb0NhbGNkYXRhKHQpLE0rKyxlKCk7by5lcnJvcihpKX19cmV0dXJuImgiPT09di5tb2RlYmFyLm9yaWVudGF0aW9uP3YuX21vZGViYXJkaXYuc3R5bGUoImhlaWdodCIsbnVsbCkuc3R5bGUoIndpZHRoIiwiMTAwJSIpOnYuX21vZGViYXJkaXYuc3R5bGUoIndpZHRoIixudWxsKS5zdHlsZSgiaGVpZ2h0Iix2LmhlaWdodCsicHgiKSxmLnByZXZpb3VzUHJvbWlzZXModCl9LEEsZnVuY3Rpb24oKXtpZihmLmRpZE1hcmdpbkNoYW5nZSh3LHYuX3NpemUpKXJldHVybiBvLnN5bmNPckFzeW5jKFtBLFQubGF5b3V0U3R5bGVzXSx0KX1dO3kmJkUucHVzaChmdW5jdGlvbigpe2lmKGIpcmV0dXJuIG8uc3luY09yQXN5bmMoW3UuZ2V0Q29tcG9uZW50TWV0aG9kKCJzaGFwZXMiLCJjYWxjQXV0b3JhbmdlIiksdS5nZXRDb21wb25lbnRNZXRob2QoImFubm90YXRpb25zIiwiY2FsY0F1dG9yYW5nZSIpLFNdLHQpO1MoKX0pLEUucHVzaChULmxheW91dFN0eWxlcykseSYmRS5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGQuZHJhdyh0LGg/IiI6InJlZHJhdyIpfSksRS5wdXNoKFQuZHJhd0RhdGEsVC5maW5hbERyYXcsbSxmLmFkZExpbmtzLGYucmVob3ZlcixmLnJlZHJhZyxmLmRvQXV0b01hcmdpbixmLnByZXZpb3VzUHJvbWlzZXMpO3ZhciBDPW8uc3luY09yQXN5bmMoRSx0KTtyZXR1cm4gQyYmQy50aGVufHwoQz1Qcm9taXNlLnJlc29sdmUoKSksQy50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIEwodCksdH0pfSxyLnB1cmdlPWZ1bmN0aW9uKHQpe3ZhciBlPSh0PW8uZ2V0R3JhcGhEaXYodCkpLl9mdWxsTGF5b3V0fHx7fSxyPXQuX2Z1bGxEYXRhfHxbXTtyZXR1cm4gZi5jbGVhblBsb3QoW10se30scixlKSxmLnB1cmdlKHQpLGwucHVyZ2UodCksZS5fY29udGFpbmVyJiZlLl9jb250YWluZXIucmVtb3ZlKCksZGVsZXRlIHQuX2NvbnRleHQsdH0sci5yZWFjdD1mdW5jdGlvbih0LGUsbixhKXt2YXIgaSxsO3Q9by5nZXRHcmFwaERpdih0KSxrLmNsZWFyUHJvbWlzZVF1ZXVlKHQpO3ZhciBjPXQuX2Z1bGxEYXRhLHA9dC5fZnVsbExheW91dDtpZihvLmlzUGxvdERpdih0KSYmYyYmcCl7aWYoby5pc1BsYWluT2JqZWN0KGUpKXt2YXIgZD1lO2U9ZC5kYXRhLG49ZC5sYXlvdXQsYT1kLmNvbmZpZyxpPWQuZnJhbWVzfXZhciBnPSExO2lmKGEpe3ZhciB2PW8uZXh0ZW5kRGVlcCh7fSx0Ll9jb250ZXh0KTt0Ll9jb250ZXh0PXZvaWQgMCxPKHQsYSksZz1mdW5jdGlvbiB0KGUscil7dmFyIG47Zm9yKG4gaW4gZSlpZigiXyIhPT1uLmNoYXJBdCgwKSl7dmFyIGE9ZVtuXSxpPXJbbl07aWYoYSE9PWkpaWYoby5pc1BsYWluT2JqZWN0KGEpJiZvLmlzUGxhaW5PYmplY3QoaSkpe2lmKHQoYSxpKSlyZXR1cm4hMH1lbHNle2lmKCFBcnJheS5pc0FycmF5KGEpfHwhQXJyYXkuaXNBcnJheShpKSlyZXR1cm4hMDtpZihhLmxlbmd0aCE9PWkubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgcz0wO3M8YS5sZW5ndGg7cysrKWlmKGFbc10hPT1pW3NdKXtpZighby5pc1BsYWluT2JqZWN0KGFbc10pfHwhby5pc1BsYWluT2JqZWN0KGlbc10pKXJldHVybiEwO2lmKHQoYVtzXSxpW3NdKSlyZXR1cm4hMH19fX0odix0Ll9jb250ZXh0KX10LmRhdGE9ZXx8W10say5jbGVhbkRhdGEodC5kYXRhKSx0LmxheW91dD1ufHx7fSxrLmNsZWFuTGF5b3V0KHQubGF5b3V0KSxmdW5jdGlvbih0LGUscixuKXt2YXIgYSxpLGwsYyx1LGgsZixwLGQ9bi5fcHJlR1VJLGc9W10sdj17fTtmb3IoYSBpbiBkKXtpZih1PXJ0KGEsdHQpKXtpZihpPXUuYXR0cnx8dS5oZWFkKyIudWlyZXZpc2lvbiIsKGM9KGw9cyhuLGkpLmdldCgpKSYmbnQoaSxlKSkmJmM9PT1sJiYobnVsbD09PShoPWRbYV0pJiYoaD12b2lkIDApLG90KHA9KGY9cyhlLGEpKS5nZXQoKSxoKSkpe3ZvaWQgMD09PXAmJiJhdXRvcmFuZ2UiPT09YS5zdWJzdHIoYS5sZW5ndGgtOSkmJmcucHVzaChhLnN1YnN0cigwLGEubGVuZ3RoLTEwKSksZi5zZXQoTihzKG4sYSkuZ2V0KCkpKTtjb250aW51ZX19ZWxzZSBvLndhcm4oInVucmVjb2duaXplZCBHVUkgZWRpdDogIithKTtkZWxldGUgZFthXSwicmFuZ2VbIj09PWEuc3Vic3RyKGEubGVuZ3RoLTgsNikmJih2W2Euc3Vic3RyKDAsYS5sZW5ndGgtOSldPTEpfWZvcih2YXIgbT0wO208Zy5sZW5ndGg7bSsrKXt2YXIgeT1nW21dO2lmKHZbeV0pe3ZhciB4PXMoZSx5KS5nZXQoKTt4JiZkZWxldGUgeC5hdXRvcmFuZ2V9fXZhciBiPW4uX3RyYWNlUHJlR1VJO2Zvcih2YXIgXyBpbiBiKXt2YXIgdyxrPWJbX10sVD1udWxsO2ZvcihhIGluIGspe2lmKCFUKXt2YXIgTT1hdChfLHIpO2lmKE08MCl7ZGVsZXRlIGJbX107YnJlYWt9dmFyIEE9aXQoXyx0LCh3PXJbTV0uX2Z1bGxJbnB1dCkuaW5kZXgpO2lmKEE8MCl7ZGVsZXRlIGJbX107YnJlYWt9VD10W0FdfWlmKHU9cnQoYSxldCkpe2lmKHUuYXR0cj9jPShsPXMobix1LmF0dHIpLmdldCgpKSYmbnQodS5hdHRyLGUpOihsPXcudWlyZXZpc2lvbix2b2lkIDA9PT0oYz1ULnVpcmV2aXNpb24pJiYoYz1lLnVpcmV2aXNpb24pKSxjJiZjPT09bCYmKG51bGw9PT0oaD1rW2FdKSYmKGg9dm9pZCAwKSxvdChwPShmPXMoVCxhKSkuZ2V0KCksaCkpKXtmLnNldChOKHModyxhKS5nZXQoKSkpO2NvbnRpbnVlfX1lbHNlIG8ud2FybigidW5yZWNvZ25pemVkIEdVSSBlZGl0OiAiK2ErIiBpbiB0cmFjZSB1aWQgIitfKTtkZWxldGUga1thXX19fSh0LmRhdGEsdC5sYXlvdXQsYyxwKSxmLnN1cHBseURlZmF1bHRzKHQse3NraXBVcGRhdGVDYWxjOiEwfSk7dmFyIG09dC5fZnVsbERhdGEseT10Ll9mdWxsTGF5b3V0LHg9dm9pZCAwPT09eS5kYXRhcmV2aXNpb24sYj15LnRyYW5zaXRpb24sXz1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPU0ubGF5b3V0RmxhZ3MoKTtyZXR1cm4gaS5hcnJheXM9e30saS5yYW5nZXNBbHRlcmVkPXt9LGkubkNoYW5nZXM9MCxpLm5DaGFuZ2VzQW5pbT0wLHN0KGUscixbXSx7Z2V0VmFsT2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBoLmdldExheW91dFZhbE9iamVjdChyLHQpfSxmbGFnczppLGltbXV0YWJsZTpuLHRyYW5zaXRpb246YSxnZDp0fSksKGkucGxvdHx8aS5jYWxjKSYmKGkubGF5b3V0UmVwbG90PSEwKSxhJiZpLm5DaGFuZ2VzJiZpLm5DaGFuZ2VzQW5pbSYmKGkuYW5pbT1pLm5DaGFuZ2VzPT09aS5uQ2hhbmdlc0FuaW0/ImFsbCI6InNvbWUiKSxpfSh0LHAseSx4LGIpLHc9Xy5uZXdEYXRhUmV2aXNpb24sQT1mdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG89ZS5sZW5ndGg9PT1yLmxlbmd0aDtpZighYSYmIW8pcmV0dXJue2Z1bGxSZXBsb3Q6ITAsY2FsYzohMH07dmFyIHMsbCxjPU0udHJhY2VGbGFncygpO2MuYXJyYXlzPXt9LGMubkNoYW5nZXM9MCxjLm5DaGFuZ2VzQW5pbT0wO3ZhciB1PXtnZXRWYWxPYmplY3Q6ZnVuY3Rpb24odCl7dmFyIGU9aC5nZXRUcmFjZVZhbE9iamVjdChsLHQpO3JldHVybiFsLl9tb2R1bGUuYW5pbWF0YWJsZSYmZS5hbmltJiYoZS5hbmltPSExKSxlfSxmbGFnczpjLGltbXV0YWJsZTpuLHRyYW5zaXRpb246YSxuZXdEYXRhUmV2aXNpb246aSxnZDp0fSxwPXt9O2ZvcihzPTA7czxlLmxlbmd0aDtzKyspaWYocltzXSl7aWYobD1yW3NdLl9mdWxsSW5wdXQsZi5oYXNNYWtlc0RhdGFUcmFuc2Zvcm0obCkmJihsPXJbc10pLHBbbC51aWRdKWNvbnRpbnVlO3BbbC51aWRdPTEsc3QoZVtzXS5fZnVsbElucHV0LGwsW10sdSl9cmV0dXJuKGMuY2FsY3x8Yy5wbG90KSYmKGMuZnVsbFJlcGxvdD0hMCksYSYmYy5uQ2hhbmdlcyYmYy5uQ2hhbmdlc0FuaW0mJihjLmFuaW09Yy5uQ2hhbmdlcz09PWMubkNoYW5nZXNBbmltJiZvPyJhbGwiOiJzb21lIiksY30odCxjLG0seCxiLHcpO0sodCkmJihfLmxheW91dFJlcGxvdD0hMCksQS5jYWxjfHxfLmNhbGM/dC5jYWxjZGF0YT12b2lkIDA6Zi5zdXBwbHlEZWZhdWx0c1VwZGF0ZUNhbGModC5jYWxjZGF0YSxtKTt2YXIgUz1bXTtpZihpJiYodC5fdHJhbnNpdGlvbkRhdGE9e30sZi5jcmVhdGVUcmFuc2l0aW9uRGF0YSh0KSxTLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gci5hZGRGcmFtZXModCxpKX0pKSx5LnRyYW5zaXRpb24mJiFnJiYoQS5hbmltfHxfLmFuaW0pKWYuZG9DYWxjZGF0YSh0KSxULmRvQXV0b1JhbmdlQW5kQ29uc3RyYWludHModCksUy5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGYudHJhbnNpdGlvbkZyb21SZWFjdCh0LEEsXyxwKX0pO2Vsc2UgaWYoQS5mdWxsUmVwbG90fHxfLmxheW91dFJlcGxvdHx8Zyl0Ll9mdWxsTGF5b3V0Ll9za2lwRGVmYXVsdHM9ITAsUy5wdXNoKHIucGxvdCk7ZWxzZXtmb3IodmFyIEUgaW4gXy5hcnJheXMpe3ZhciBDPV8uYXJyYXlzW0VdO2lmKEMubGVuZ3RoKXt2YXIgUD11LmdldENvbXBvbmVudE1ldGhvZChFLCJkcmF3T25lIik7aWYoUCE9PW8ubm9vcClmb3IodmFyIHo9MDt6PEMubGVuZ3RoO3orKylQKHQsQ1t6XSk7ZWxzZXt2YXIgST11LmdldENvbXBvbmVudE1ldGhvZChFLCJkcmF3Iik7aWYoST09PW8ubm9vcCl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBkcmF3IGNvbXBvbmVudHM6ICIrRSk7SSh0KX19fVMucHVzaChmLnByZXZpb3VzUHJvbWlzZXMpLEEuc3R5bGUmJlMucHVzaChULmRvVHJhY2VTdHlsZSksKEEuY29sb3JiYXJzfHxfLmNvbG9yYmFycykmJlMucHVzaChULmRvQ29sb3JCYXJzKSxfLmxlZ2VuZCYmUy5wdXNoKFQuZG9MZWdlbmQpLF8ubGF5b3V0c3R5bGUmJlMucHVzaChULmxheW91dFN0eWxlcyksXy5heHJhbmdlJiZZKFMpLF8udGlja3MmJlMucHVzaChULmRvVGlja3NSZWxheW91dCksXy5tb2RlYmFyJiZTLnB1c2goVC5kb01vZGVCYXIpLF8uY2FtZXJhJiZTLnB1c2goVC5kb0NhbWVyYSksUy5wdXNoKEwpfVMucHVzaChmLnJlaG92ZXIsZi5yZWRyYWcpLChsPW8uc3luY09yQXN5bmMoUyx0KSkmJmwudGhlbnx8KGw9UHJvbWlzZS5yZXNvbHZlKHQpKX1lbHNlIGw9ci5uZXdQbG90KHQsZSxuLGEpO3JldHVybiBsLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfcmVhY3QiLHtkYXRhOmUsbGF5b3V0Om59KSx0fSl9LHIucmVkcmF3PWZ1bmN0aW9uKHQpe2lmKHQ9by5nZXRHcmFwaERpdih0KSwhby5pc1Bsb3REaXYodCkpdGhyb3cgbmV3IEVycm9yKCJUaGlzIGVsZW1lbnQgaXMgbm90IGEgUGxvdGx5IHBsb3Q6ICIrdCk7cmV0dXJuIGsuY2xlYW5EYXRhKHQuZGF0YSksay5jbGVhbkxheW91dCh0LmxheW91dCksdC5jYWxjZGF0YT12b2lkIDAsci5wbG90KHQpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfcmVkcmF3IiksdH0pfSxyLnJlbGF5b3V0PUgsci5yZXN0eWxlPUIsci5zZXRQbG90Q29uZmlnPWZ1bmN0aW9uKHQpe3JldHVybiBvLmV4dGVuZEZsYXQoXyx0KX0sci51cGRhdGU9USxyLl9ndWlSZWxheW91dD0kKEgpLHIuX2d1aVJlc3R5bGU9JChCKSxyLl9ndWlVcGRhdGU9JChRKSxyLl9zdG9yZURpcmVjdEdVSUVkaXQ9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbiBpbiByKVYobixzKHQsbikuZ2V0KCkscltuXSxlKX19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjY5NCwiLi4vbGliIjo3MTcsIi4uL2xpYi9ldmVudHMiOjcwNywiLi4vbGliL3F1ZXVlIjo3MzIsIi4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIjo3NzEsIi4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCI6Nzc0LCIuLi9wbG90cy9jYXJ0ZXNpYW4vc2VsZWN0Ijo3ODIsIi4uL3Bsb3RzL3Bsb3RzIjo4MjYsIi4uL3Bsb3RzL3BvbGFyL2xlZ2FjeSI6ODM0LCIuLi9yZWdpc3RyeSI6ODQ2LCIuL2VkaXRfdHlwZXMiOjc0OCwiLi9oZWxwZXJzIjo3NDksIi4vbWFuYWdlX2FycmF5cyI6NzUxLCIuL3Bsb3RfY29uZmlnIjo3NTMsIi4vcGxvdF9zY2hlbWEiOjc1NCwiLi9zdWJyb3V0aW5lcyI6NzU2LGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOCwiaGFzLWhvdmVyIjo0MTJ9XSw3NTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e3N0YXRpY1Bsb3Q6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LHBsb3RseVNlcnZlclVSTDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiJodHRwczovL3Bsb3QubHkifSxlZGl0YWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sZWRpdHM6e2Fubm90YXRpb25Qb3NpdGlvbjp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sYW5ub3RhdGlvblRhaWw6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGFubm90YXRpb25UZXh0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxheGlzVGl0bGVUZXh0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxjb2xvcmJhclBvc2l0aW9uOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxjb2xvcmJhclRpdGxlVGV4dDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbGVnZW5kUG9zaXRpb246e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGxlZ2VuZFRleHQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LHNoYXBlUG9zaXRpb246e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LHRpdGxlVGV4dDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX19LGF1dG9zaXphYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxyZXNwb25zaXZlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxmaWxsRnJhbWU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGZyYW1lTWFyZ2luczp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsbWluOjAsbWF4Oi41fSxzY3JvbGxab29tOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJjYXJ0ZXNpYW4iLCJnbDNkIiwiZ2VvIiwibWFwYm94Il0sZXh0cmFzOlshMCwhMV0sZGZsdDoiZ2wzZCtnZW8rbWFwYm94In0sZG91YmxlQ2xpY2s6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITEsInJlc2V0IiwiYXV0b3NpemUiLCJyZXNldCthdXRvc2l6ZSJdLGRmbHQ6InJlc2V0K2F1dG9zaXplIn0sZG91YmxlQ2xpY2tEZWxheTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjMwMCxtaW46MH0sc2hvd0F4aXNEcmFnSGFuZGxlczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sc2hvd0F4aXNSYW5nZUVudHJ5Qm94ZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHNob3dUaXBzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxzaG93TGluazp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbGlua1RleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiRWRpdCBjaGFydCIsbm9CbGFuazohMH0sc2VuZERhdGE6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHNob3dTb3VyY2VzOnt2YWxUeXBlOiJhbnkiLGRmbHQ6ITF9LGRpc3BsYXlNb2RlQmFyOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJob3ZlciIsITAsITFdLGRmbHQ6ImhvdmVyIn0sc2hvd1NlbmRUb0Nsb3VkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxzaG93RWRpdEluQ2hhcnRTdHVkaW86e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG1vZGVCYXJCdXR0b25zVG9SZW1vdmU6e3ZhbFR5cGU6ImFueSIsZGZsdDpbXX0sbW9kZUJhckJ1dHRvbnNUb0FkZDp7dmFsVHlwZToiYW55IixkZmx0OltdfSxtb2RlQmFyQnV0dG9uczp7dmFsVHlwZToiYW55IixkZmx0OiExfSx0b0ltYWdlQnV0dG9uT3B0aW9uczp7dmFsVHlwZToiYW55IixkZmx0Ont9fSxkaXNwbGF5bG9nbzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sd2F0ZXJtYXJrOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxwbG90R2xQaXhlbFJhdGlvOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MixtaW46MSxtYXg6NH0sc2V0QmFja2dyb3VuZDp7dmFsVHlwZToiYW55IixkZmx0OiJ0cmFuc3BhcmVudCJ9LHRvcG9qc29uVVJMOnt2YWxUeXBlOiJzdHJpbmciLG5vQmxhbms6ITAsZGZsdDoiaHR0cHM6Ly9jZG4ucGxvdC5seS8ifSxtYXBib3hBY2Nlc3NUb2tlbjp7dmFsVHlwZToic3RyaW5nIixkZmx0Om51bGx9LGxvZ2dpbmc6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjowLG1heDoyLGRmbHQ6MX0sbm90aWZ5T25Mb2dnaW5nOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxtYXg6MixkZmx0OjB9LHF1ZXVlTGVuZ3RoOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjB9LGdsb2JhbFRyYW5zZm9ybXM6e3ZhbFR5cGU6ImFueSIsZGZsdDpbXX0sbG9jYWxlOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6ImVuLVVTIn0sbG9jYWxlczp7dmFsVHlwZToiYW55IixkZmx0Ont9fX0sYT17fTshZnVuY3Rpb24gdChlLHIpe2Zvcih2YXIgbiBpbiBlKXt2YXIgYT1lW25dO2EudmFsVHlwZT9yW25dPWEuZGZsdDoocltuXXx8KHJbbl09e30pLHQoYSxyW25dKSl9fShuLGEpLGUuZXhwb3J0cz17Y29uZmlnQXR0cmlidXRlczpuLGRmbHRDb25maWc6YX19LHt9XSw3NTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcmVnaXN0cnkiKSxhPXQoIi4uL2xpYiIpLGk9dCgiLi4vcGxvdHMvYXR0cmlidXRlcyIpLG89dCgiLi4vcGxvdHMvbGF5b3V0X2F0dHJpYnV0ZXMiKSxzPXQoIi4uL3Bsb3RzL2ZyYW1lX2F0dHJpYnV0ZXMiKSxsPXQoIi4uL3Bsb3RzL2FuaW1hdGlvbl9hdHRyaWJ1dGVzIiksYz10KCIuL3Bsb3RfY29uZmlnIikuY29uZmlnQXR0cmlidXRlcyx1PXQoIi4uL3Bsb3RzL3BvbGFyL2xlZ2FjeS9hcmVhX2F0dHJpYnV0ZXMiKSxoPXQoIi4uL3Bsb3RzL3BvbGFyL2xlZ2FjeS9heGlzX2F0dHJpYnV0ZXMiKSxmPXQoIi4vZWRpdF90eXBlcyIpLHA9YS5leHRlbmRGbGF0LGQ9YS5leHRlbmREZWVwQWxsLGc9YS5pc1BsYWluT2JqZWN0LHY9YS5pc0FycmF5T3JUeXBlZEFycmF5LG09YS5uZXN0ZWRQcm9wZXJ0eSx5PWEudmFsT2JqZWN0TWV0YSx4PSJfaXNTdWJwbG90T2JqIixiPSJfaXNMaW5rZWRUb0FycmF5IixfPVt4LGIsIl9hcnJheUF0dHJSZWdleHBzIiwiX2RlcHJlY2F0ZWQiXTtmdW5jdGlvbiB3KHQsZSxyKXtpZighdClyZXR1cm4hMTtpZih0Ll9pc0xpbmtlZFRvQXJyYXkpaWYoayhlW3JdKSlyKys7ZWxzZSBpZihyPGUubGVuZ3RoKXJldHVybiExO2Zvcig7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXRbZVtyXV07aWYoIWcobikpYnJlYWs7aWYodD1uLHI9PT1lLmxlbmd0aC0xKWJyZWFrO2lmKHQuX2lzTGlua2VkVG9BcnJheSl7aWYoIWsoZVsrK3JdKSlyZXR1cm4hMX1lbHNlIGlmKCJpbmZvX2FycmF5Ij09PXQudmFsVHlwZSl7dmFyIGE9ZVsrK3JdO2lmKCFrKGEpKXJldHVybiExO3ZhciBpPXQuaXRlbXM7aWYoQXJyYXkuaXNBcnJheShpKSl7aWYoYT49aS5sZW5ndGgpcmV0dXJuITE7aWYoMj09PXQuZGltZW5zaW9ucyl7aWYocisrLGUubGVuZ3RoPT09cilyZXR1cm4gdDt2YXIgbz1lW3JdO2lmKCFrKG8pKXJldHVybiExO3Q9aVthXVtvXX1lbHNlIHQ9aVthXX1lbHNlIHQ9aX19cmV0dXJuIHR9ZnVuY3Rpb24gayh0KXtyZXR1cm4gdD09PU1hdGgucm91bmQodCkmJnQ+PTB9ZnVuY3Rpb24gVCgpe3ZhciB0LGUscj17fTtmb3IodCBpbiBkKHIsbyksbi5zdWJwbG90c1JlZ2lzdHJ5KXtpZigoZT1uLnN1YnBsb3RzUmVnaXN0cnlbdF0pLmxheW91dEF0dHJpYnV0ZXMpaWYoQXJyYXkuaXNBcnJheShlLmF0dHIpKWZvcih2YXIgYT0wO2E8ZS5hdHRyLmxlbmd0aDthKyspUyhyLGUsZS5hdHRyW2FdKTtlbHNlIFMocixlLCJzdWJwbG90Ij09PWUuYXR0cj9lLm5hbWU6ZS5hdHRyKX1mb3IodCBpbiByPWZ1bmN0aW9uKHQpe3JldHVybiBwKHQse3JhZGlhbGF4aXM6aC5yYWRpYWxheGlzLGFuZ3VsYXJheGlzOmguYW5ndWxhcmF4aXN9KSxwKHQsaC5sYXlvdXQpLHR9KHIpLG4uY29tcG9uZW50c1JlZ2lzdHJ5KXt2YXIgaT0oZT1uLmNvbXBvbmVudHNSZWdpc3RyeVt0XSkuc2NoZW1hO2lmKGkmJihpLnN1YnBsb3RzfHxpLmxheW91dCkpe3ZhciBzPWkuc3VicGxvdHM7aWYocyYmcy54YXhpcyYmIXMueWF4aXMpZm9yKHZhciBsIGluIHMueGF4aXMpZGVsZXRlIHIueWF4aXNbbF19ZWxzZSJjb2xvcnNjYWxlIj09PWUubmFtZT9kKHIsZS5sYXlvdXRBdHRyaWJ1dGVzKTplLmxheW91dEF0dHJpYnV0ZXMmJkUocixlLmxheW91dEF0dHJpYnV0ZXMsZS5uYW1lKX1yZXR1cm57bGF5b3V0QXR0cmlidXRlczpBKHIpfX1mdW5jdGlvbiBNKCl7dmFyIHQ9e2ZyYW1lczpkKHt9LHMpfTtyZXR1cm4gQSh0KSx0LmZyYW1lc31mdW5jdGlvbiBBKHQpe3JldHVybiBmdW5jdGlvbih0KXtyLmNyYXdsKHQsZnVuY3Rpb24odCxlLG4pe3IuaXNWYWxPYmplY3QodCk/ImRhdGFfYXJyYXkiPT09dC52YWxUeXBlPyh0LnJvbGU9ImRhdGEiLG5bZSsic3JjIl09e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6Im5vbmUifSk6ITA9PT10LmFycmF5T2smJihuW2UrInNyYyJdPXt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJub25lIn0pOmcodCkmJih0LnJvbGU9Im9iamVjdCIpfSl9KHQpLGZ1bmN0aW9uKHQpe3IuY3Jhd2wodCxmdW5jdGlvbih0LGUscil7aWYoIXQpcmV0dXJuO3ZhciBuPXRbYl07aWYoIW4pcmV0dXJuO2RlbGV0ZSB0W2JdLHJbZV09e2l0ZW1zOnt9fSxyW2VdLml0ZW1zW25dPXQscltlXS5yb2xlPSJvYmplY3QifSl9KHQpLGZ1bmN0aW9uKHQpeyFmdW5jdGlvbiB0KGUpe2Zvcih2YXIgciBpbiBlKWlmKGcoZVtyXSkpdChlW3JdKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZVtyXSkpZm9yKHZhciBuPTA7bjxlW3JdLmxlbmd0aDtuKyspdChlW3JdW25dKTtlbHNlIGVbcl1pbnN0YW5jZW9mIFJlZ0V4cCYmKGVbcl09ZVtyXS50b1N0cmluZygpKX0odCl9KHQpLHR9ZnVuY3Rpb24gUyh0LGUscil7dmFyIG49bSh0LHIpLGE9ZCh7fSxlLmxheW91dEF0dHJpYnV0ZXMpO2FbeF09ITAsbi5zZXQoYSl9ZnVuY3Rpb24gRSh0LGUscil7dmFyIG49bSh0LHIpO24uc2V0KGQobi5nZXQoKXx8e30sZSkpfXIuSVNfU1VCUExPVF9PQko9eCxyLklTX0xJTktFRF9UT19BUlJBWT1iLHIuREVQUkVDQVRFRD0iX2RlcHJlY2F0ZWQiLHIuVU5ERVJTQ09SRV9BVFRSUz1fLHIuZ2V0PWZ1bmN0aW9uKCl7dmFyIHQ9e307bi5hbGxUeXBlcy5jb25jYXQoImFyZWEiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09ZnVuY3Rpb24odCl7dmFyIGUsYTsiYXJlYSI9PT10PyhlPXthdHRyaWJ1dGVzOnV9LGE9e30pOihlPW4ubW9kdWxlc1t0XS5fbW9kdWxlLGE9ZS5iYXNlUGxvdE1vZHVsZSk7dmFyIG89e3R5cGU6bnVsbH0scz1kKHt9LGkpLGw9ZCh7fSxlLmF0dHJpYnV0ZXMpO3IuY3Jhd2wobCxmdW5jdGlvbih0LGUscixuLGEpe20ocyxhKS5zZXQodm9pZCAwKSx2b2lkIDA9PT10JiZtKGwsYSkuc2V0KHZvaWQgMCl9KSxkKG8scyksbi50cmFjZUlzKHQsIm5vT3BhY2l0eSIpJiZkZWxldGUgby5vcGFjaXR5O24udHJhY2VJcyh0LCJzaG93TGVnZW5kIil8fChkZWxldGUgby5zaG93bGVnZW5kLGRlbGV0ZSBvLmxlZ2VuZGdyb3VwKTtuLnRyYWNlSXModCwibm9Ib3ZlciIpJiYoZGVsZXRlIG8uaG92ZXJpbmZvLGRlbGV0ZSBvLmhvdmVybGFiZWwpO2Uuc2VsZWN0UG9pbnRzfHxkZWxldGUgby5zZWxlY3RlZHBvaW50cztkKG8sbCksYS5hdHRyaWJ1dGVzJiZkKG8sYS5hdHRyaWJ1dGVzKTtvLnR5cGU9dDt2YXIgYz17bWV0YTplLm1ldGF8fHt9LGNhdGVnb3JpZXM6ZS5jYXRlZ29yaWVzfHx7fSxhbmltYXRhYmxlOkJvb2xlYW4oZS5hbmltYXRhYmxlKSx0eXBlOnQsYXR0cmlidXRlczpBKG8pfTtpZihlLmxheW91dEF0dHJpYnV0ZXMpe3ZhciBoPXt9O2QoaCxlLmxheW91dEF0dHJpYnV0ZXMpLGMubGF5b3V0QXR0cmlidXRlcz1BKGgpfWUuYW5pbWF0YWJsZXx8ci5jcmF3bChjLGZ1bmN0aW9uKHQpe3IuaXNWYWxPYmplY3QodCkmJiJhbmltImluIHQmJmRlbGV0ZSB0LmFuaW19KTtyZXR1cm4gY30oZSl9KTt2YXIgZT17fTtyZXR1cm4gT2JqZWN0LmtleXMobi50cmFuc2Zvcm1zUmVnaXN0cnkpLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbih0KXt2YXIgZT1uLnRyYW5zZm9ybXNSZWdpc3RyeVt0XSxyPWQoe30sZS5hdHRyaWJ1dGVzKTtyZXR1cm4gT2JqZWN0LmtleXMobi5jb21wb25lbnRzUmVnaXN0cnkpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIGE9bi5jb21wb25lbnRzUmVnaXN0cnlbZV07YS5zY2hlbWEmJmEuc2NoZW1hLnRyYW5zZm9ybXMmJmEuc2NoZW1hLnRyYW5zZm9ybXNbdF0mJk9iamVjdC5rZXlzKGEuc2NoZW1hLnRyYW5zZm9ybXNbdF0pLmZvckVhY2goZnVuY3Rpb24oZSl7RShyLGEuc2NoZW1hLnRyYW5zZm9ybXNbdF1bZV0sZSl9KX0pLHthdHRyaWJ1dGVzOkEocil9fSh0KX0pLHtkZWZzOnt2YWxPYmplY3RzOnksbWV0YUtleXM6Xy5jb25jYXQoWyJkZXNjcmlwdGlvbiIsInJvbGUiLCJlZGl0VHlwZSIsImltcGxpZWRFZGl0cyJdKSxlZGl0VHlwZTp7dHJhY2VzOmYudHJhY2VzLGxheW91dDpmLmxheW91dH0saW1wbGllZEVkaXRzOnt9fSx0cmFjZXM6dCxsYXlvdXQ6VCgpLHRyYW5zZm9ybXM6ZSxmcmFtZXM6TSgpLGFuaW1hdGlvbjpBKGwpLGNvbmZpZzpBKGMpfX0sci5jcmF3bD1mdW5jdGlvbih0LGUsbixhKXt2YXIgaT1ufHwwO2E9YXx8IiIsT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgbz10W25dO2lmKC0xPT09Xy5pbmRleE9mKG4pKXt2YXIgcz0oYT9hKyIuIjoiIikrbjtlKG8sbix0LGkscyksci5pc1ZhbE9iamVjdChvKXx8ZyhvKSYmImltcGxpZWRFZGl0cyIhPT1uJiZyLmNyYXdsKG8sZSxpKzEscyl9fSl9LHIuaXNWYWxPYmplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnZvaWQgMCE9PXQudmFsVHlwZX0sci5maW5kQXJyYXlBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe3ZhciBlLG4sYT1bXSxvPVtdLHM9W107ZnVuY3Rpb24gbCh0LHIsaSxsKXtvPW8uc2xpY2UoMCxsKS5jb25jYXQoW3JdKSxzPXMuc2xpY2UoMCxsKS5jb25jYXQoW3QmJnQuX2lzTGlua2VkVG9BcnJheV0pLHQmJigiZGF0YV9hcnJheSI9PT10LnZhbFR5cGV8fCEwPT09dC5hcnJheU9rKSYmISgiY29sb3JiYXIiPT09b1tsLTFdJiYoInRpY2t0ZXh0Ij09PXJ8fCJ0aWNrdmFscyI9PT1yKSkmJmZ1bmN0aW9uIHQoZSxyLGkpe3ZhciBsPWVbb1tyXV07dmFyIGM9aStvW3JdO2lmKHI9PT1vLmxlbmd0aC0xKXYobCkmJmEucHVzaChuK2MpO2Vsc2UgaWYoc1tyXSl7aWYoQXJyYXkuaXNBcnJheShsKSlmb3IodmFyIHU9MDt1PGwubGVuZ3RoO3UrKylnKGxbdV0pJiZ0KGxbdV0scisxLGMrIlsiK3UrIl0uIil9ZWxzZSBnKGwpJiZ0KGwscisxLGMrIi4iKX0oZSwwLCIiKX1lPXQsbj0iIixyLmNyYXdsKGksbCksdC5fbW9kdWxlJiZ0Ll9tb2R1bGUuYXR0cmlidXRlcyYmci5jcmF3bCh0Ll9tb2R1bGUuYXR0cmlidXRlcyxsKTt2YXIgYz10LnRyYW5zZm9ybXM7aWYoYylmb3IodmFyIHU9MDt1PGMubGVuZ3RoO3UrKyl7dmFyIGg9Y1t1XSxmPWguX21vZHVsZTtmJiYobj0idHJhbnNmb3Jtc1siK3UrIl0uIixlPWgsci5jcmF3bChmLmF0dHJpYnV0ZXMsbCkpfXJldHVybiBhfSxyLmdldFRyYWNlVmFsT2JqZWN0PWZ1bmN0aW9uKHQsZSl7dmFyIHIsYSxvPWVbMF0scz0xO2lmKCJ0cmFuc2Zvcm1zIj09PW8pe2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gaS50cmFuc2Zvcm1zO3ZhciBsPXQudHJhbnNmb3JtcztpZighQXJyYXkuaXNBcnJheShsKXx8IWwubGVuZ3RoKXJldHVybiExO3ZhciBjPWVbMV07aWYoIWsoYyl8fGM+PWwubGVuZ3RoKXJldHVybiExO2E9KHI9KG4udHJhbnNmb3Jtc1JlZ2lzdHJ5W2xbY10udHlwZV18fHt9KS5hdHRyaWJ1dGVzKSYmcltlWzJdXSxzPTN9ZWxzZSBpZigiYXJlYSI9PT10LnR5cGUpYT11W29dO2Vsc2V7dmFyIGg9dC5fbW9kdWxlO2lmKGh8fChoPShuLm1vZHVsZXNbdC50eXBlfHxpLnR5cGUuZGZsdF18fHt9KS5fbW9kdWxlKSwhaClyZXR1cm4hMTtpZighKGE9KHI9aC5hdHRyaWJ1dGVzKSYmcltvXSkpe3ZhciBmPWguYmFzZVBsb3RNb2R1bGU7ZiYmZi5hdHRyaWJ1dGVzJiYoYT1mLmF0dHJpYnV0ZXNbb10pfWF8fChhPWlbb10pfXJldHVybiB3KGEsZSxzKX0sci5nZXRMYXlvdXRWYWxPYmplY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdyhmdW5jdGlvbih0LGUpe3ZhciByLGEsaSxzLGw9dC5fYmFzZVBsb3RNb2R1bGVzO2lmKGwpe3ZhciBjO2ZvcihyPTA7cjxsLmxlbmd0aDtyKyspe2lmKChpPWxbcl0pLmF0dHJSZWdleCYmaS5hdHRyUmVnZXgudGVzdChlKSl7aWYoaS5sYXlvdXRBdHRyT3ZlcnJpZGVzKXJldHVybiBpLmxheW91dEF0dHJPdmVycmlkZXM7IWMmJmkubGF5b3V0QXR0cmlidXRlcyYmKGM9aS5sYXlvdXRBdHRyaWJ1dGVzKX12YXIgdT1pLmJhc2VMYXlvdXRBdHRyT3ZlcnJpZGVzO2lmKHUmJmUgaW4gdSlyZXR1cm4gdVtlXX1pZihjKXJldHVybiBjfXZhciBmPXQuX21vZHVsZXM7aWYoZilmb3Iocj0wO3I8Zi5sZW5ndGg7cisrKWlmKChzPWZbcl0ubGF5b3V0QXR0cmlidXRlcykmJmUgaW4gcylyZXR1cm4gc1tlXTtmb3IoYSBpbiBuLmNvbXBvbmVudHNSZWdpc3RyeSl7aWYoImNvbG9yc2NhbGUiPT09KGk9bi5jb21wb25lbnRzUmVnaXN0cnlbYV0pLm5hbWUmJjA9PT1lLmluZGV4T2YoImNvbG9yYXhpcyIpKXJldHVybiBpLmxheW91dEF0dHJpYnV0ZXNbZV07aWYoIWkuc2NoZW1hJiZlPT09aS5uYW1lKXJldHVybiBpLmxheW91dEF0dHJpYnV0ZXN9aWYoZSBpbiBvKXJldHVybiBvW2VdO2lmKCJyYWRpYWxheGlzIj09PWV8fCJhbmd1bGFyYXhpcyI9PT1lKXJldHVybiBoW2VdO3JldHVybiBoLmxheW91dFtlXXx8ITF9KHQsZVswXSksZSwxKX19LHsiLi4vbGliIjo3MTcsIi4uL3Bsb3RzL2FuaW1hdGlvbl9hdHRyaWJ1dGVzIjo3NjAsIi4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vcGxvdHMvZnJhbWVfYXR0cmlidXRlcyI6NzkyLCIuLi9wbG90cy9sYXlvdXRfYXR0cmlidXRlcyI6ODE3LCIuLi9wbG90cy9wb2xhci9sZWdhY3kvYXJlYV9hdHRyaWJ1dGVzIjo4MzIsIi4uL3Bsb3RzL3BvbGFyL2xlZ2FjeS9heGlzX2F0dHJpYnV0ZXMiOjgzMywiLi4vcmVnaXN0cnkiOjg0NiwiLi9lZGl0X3R5cGVzIjo3NDgsIi4vcGxvdF9jb25maWciOjc1M31dLDc1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPXQoIi4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxpPSJ0ZW1wbGF0ZWl0ZW1uYW1lIixvPXtuYW1lOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJub25lIn19O2Z1bmN0aW9uIHModCl7cmV0dXJuIHQmJiJzdHJpbmciPT10eXBlb2YgdH1mdW5jdGlvbiBsKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuInMiIT09dC5jaGFyQXQoZSkmJm4ud2FybigiYmFkIGFyZ3VtZW50IHRvIGFycmF5RGVmYXVsdEtleTogIit0KSx0LnN1YnN0cigwLHQubGVuZ3RoLTEpKyJkZWZhdWx0cyJ9b1tpXT17dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9LHIudGVtcGxhdGVkQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5faXNMaW5rZWRUb0FycmF5PXQsZS5uYW1lPW8ubmFtZSxlW2ldPW9baV0sZX0sci50cmFjZVRlbXBsYXRlcj1mdW5jdGlvbih0KXt2YXIgZSxyLGk9e307Zm9yKGUgaW4gdClyPXRbZV0sQXJyYXkuaXNBcnJheShyKSYmci5sZW5ndGgmJihpW2VdPTApO3JldHVybntuZXdUcmFjZTpmdW5jdGlvbihvKXt2YXIgcz17dHlwZTplPW4uY29lcmNlKG8se30sYSwidHlwZSIpLF90ZW1wbGF0ZTpudWxsfTtpZihlIGluIGkpe3I9dFtlXTt2YXIgbD1pW2VdJXIubGVuZ3RoO2lbZV0rKyxzLl90ZW1wbGF0ZT1yW2xdfXJldHVybiBzfX19LHIubmV3Q29udGFpbmVyPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10Ll90ZW1wbGF0ZSxpPWEmJihhW2VdfHxyJiZhW3JdKTtyZXR1cm4gbi5pc1BsYWluT2JqZWN0KGkpfHwoaT1udWxsKSx0W2VdPXtfdGVtcGxhdGU6aX19LHIuYXJyYXlUZW1wbGF0ZXI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuX3RlbXBsYXRlLGE9biYmbltsKGUpXSxvPW4mJm5bZV07QXJyYXkuaXNBcnJheShvKSYmby5sZW5ndGh8fChvPVtdKTt2YXIgYz17fTtyZXR1cm57bmV3SXRlbTpmdW5jdGlvbih0KXt2YXIgZT17bmFtZTp0Lm5hbWUsX2lucHV0OnR9LG49ZVtpXT10W2ldO2lmKCFzKG4pKXJldHVybiBlLl90ZW1wbGF0ZT1hLGU7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspe3ZhciB1PW9bbF07aWYodS5uYW1lPT09bilyZXR1cm4gY1tuXT0xLGUuX3RlbXBsYXRlPXUsZX1yZXR1cm4gZVtyXT10W3JdfHwhMSxlLl90ZW1wbGF0ZT0hMSxlfSxkZWZhdWx0SXRlbXM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8by5sZW5ndGg7ZSsrKXt2YXIgcj1vW2VdLG49ci5uYW1lO2lmKHMobikmJiFjW25dKXt2YXIgYT17X3RlbXBsYXRlOnIsbmFtZTpuLF9pbnB1dDp7X3RlbXBsYXRlaXRlbW5hbWU6bn19O2FbaV09cltpXSx0LnB1c2goYSksY1tuXT0xfX1yZXR1cm4gdH19fSxyLmFycmF5RGVmYXVsdEtleT1sLHIuYXJyYXlFZGl0b3I9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPShuLm5lc3RlZFByb3BlcnR5KHQsZSkuZ2V0KCl8fFtdKS5sZW5ndGgsbz1yLl9pbmRleCxzPW8+PWEmJihyLl9pbnB1dHx8e30pLl90ZW1wbGF0ZWl0ZW1uYW1lO3MmJihvPWEpO3ZhciBsLGM9ZSsiWyIrbysiXSI7ZnVuY3Rpb24gdSgpe2w9e30scyYmKGxbY109e30sbFtjXVtpXT1zKX1mdW5jdGlvbiBoKHQsZSl7cz9uLm5lc3RlZFByb3BlcnR5KGxbY10sdCkuc2V0KGUpOmxbYysiLiIrdF09ZX1mdW5jdGlvbiBmKCl7dmFyIHQ9bDtyZXR1cm4gdSgpLHR9cmV0dXJuIHUoKSx7bW9kaWZ5QmFzZTpmdW5jdGlvbih0LGUpe2xbdF09ZX0sbW9kaWZ5SXRlbTpoLGdldFVwZGF0ZU9iajpmLGFwcGx5VXBkYXRlOmZ1bmN0aW9uKGUscil7ZSYmaChlLHIpO3ZhciBhPWYoKTtmb3IodmFyIGkgaW4gYSluLm5lc3RlZFByb3BlcnR5KHQsaSkuc2V0KGFbaV0pfX19fSx7Ii4uL2xpYiI6NzE3LCIuLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjJ9XSw3NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uL3JlZ2lzdHJ5IiksaT10KCIuLi9wbG90cy9wbG90cyIpLG89dCgiLi4vbGliIikscz10KCIuLi9saWIvY2xlYXJfZ2xfY2FudmFzZXMiKSxsPXQoIi4uL2NvbXBvbmVudHMvY29sb3IiKSxjPXQoIi4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHU9dCgiLi4vY29tcG9uZW50cy90aXRsZXMiKSxoPXQoIi4uL2NvbXBvbmVudHMvbW9kZWJhciIpLGY9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxwPXQoIi4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKSxkPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdHJhaW50cyIpLGc9ZC5lbmZvcmNlLHY9ZC5jbGVhbixtPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFuZ2UiKS5kb0F1dG9SYW5nZSx5PSJzdGFydCIseD0ibWlkZGxlIixiPSJlbmQiO2Z1bmN0aW9uIF8odCxlLHIpe2Zvcih2YXIgbj0wO248ci5sZW5ndGg7bisrKXt2YXIgYT1yW25dWzBdLGk9cltuXVsxXTtpZighKGFbMF0+PXRbMV18fGFbMV08PXRbMF0pJiYoaVswXTxlWzFdJiZpWzFdPmVbMF0pKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHcodCl7dmFyIGUsYSxzLHUsZCxnLHY9dC5fZnVsbExheW91dCxtPXYuX3NpemUseT1tLnAseD1mLmxpc3QodCwiIiwhMCk7aWYodi5fcGFwZXJkaXYuc3R5bGUoe3dpZHRoOnQuX2NvbnRleHQucmVzcG9uc2l2ZSYmdi5hdXRvc2l6ZSYmIXQuX2NvbnRleHQuX2hhc1plcm9XaWR0aCYmIXQubGF5b3V0LndpZHRoPyIxMDAlIjp2LndpZHRoKyJweCIsaGVpZ2h0OnQuX2NvbnRleHQucmVzcG9uc2l2ZSYmdi5hdXRvc2l6ZSYmIXQuX2NvbnRleHQuX2hhc1plcm9IZWlnaHQmJiF0LmxheW91dC5oZWlnaHQ/IjEwMCUiOnYuaGVpZ2h0KyJweCJ9KS5zZWxlY3RBbGwoIi5tYWluLXN2ZyIpLmNhbGwoYy5zZXRTaXplLHYud2lkdGgsdi5oZWlnaHQpLHQuX2NvbnRleHQuc2V0QmFja2dyb3VuZCh0LHYucGFwZXJfYmdjb2xvciksci5kcmF3TWFpblRpdGxlKHQpLGgubWFuYWdlKHQpLCF2Ll9oYXMoImNhcnRlc2lhbiIpKXJldHVybiBpLnByZXZpb3VzUHJvbWlzZXModCk7ZnVuY3Rpb24gYih0LGUscil7dmFyIG49dC5fbHcvMjtyZXR1cm4ieCI9PT10Ll9pZC5jaGFyQXQoMCk/ZT8idG9wIj09PXI/ZS5fb2Zmc2V0LXktbjplLl9vZmZzZXQrZS5fbGVuZ3RoK3krbjptLnQrbS5oKigxLSh0LnBvc2l0aW9ufHwwKSkrbiUxOmU/InJpZ2h0Ij09PXI/ZS5fb2Zmc2V0K2UuX2xlbmd0aCt5K246ZS5fb2Zmc2V0LXktbjptLmwrbS53Kih0LnBvc2l0aW9ufHwwKStuJTF9Zm9yKGU9MDtlPHgubGVuZ3RoO2UrKyl7dmFyIHc9KHU9eFtlXSkuX2FuY2hvckF4aXM7dS5fbGluZXBvc2l0aW9ucz17fSx1Ll9sdz1jLmNyaXNwUm91bmQodCx1LmxpbmV3aWR0aCwxKSx1Ll9tYWluTGluZVBvc2l0aW9uPWIodSx3LHUuc2lkZSksdS5fbWFpbk1pcnJvclBvc2l0aW9uPXUubWlycm9yJiZ3P2IodSx3LHAuT1BQT1NJVEVfU0lERVt1LnNpZGVdKTpudWxsfXZhciBUPVtdLEE9W10sUz1bXSxFPTE9PT1sLm9wYWNpdHkodi5wYXBlcl9iZ2NvbG9yKSYmMT09PWwub3BhY2l0eSh2LnBsb3RfYmdjb2xvcikmJnYucGFwZXJfYmdjb2xvcj09PXYucGxvdF9iZ2NvbG9yO2ZvcihhIGluIHYuX3Bsb3RzKWlmKChzPXYuX3Bsb3RzW2FdKS5tYWlucGxvdClzLmJnJiZzLmJnLnJlbW92ZSgpLHMuYmc9dm9pZCAwO2Vsc2V7dmFyIEw9cy54YXhpcy5kb21haW4sQz1zLnlheGlzLmRvbWFpbixQPXMucGxvdGdyb3VwO2lmKF8oTCxDLFMpKXt2YXIgTz1QLm5vZGUoKSx6PXMuYmc9by5lbnN1cmVTaW5nbGUoUCwicmVjdCIsImJnIik7Ty5pbnNlcnRCZWZvcmUoei5ub2RlKCksTy5jaGlsZE5vZGVzWzBdKSxBLnB1c2goYSl9ZWxzZSBQLnNlbGVjdCgicmVjdC5iZyIpLnJlbW92ZSgpLFMucHVzaChbTCxDXSksRXx8KFQucHVzaChhKSxBLnB1c2goYSkpfXZhciBJLEQsUixGLEIsTixqLFYsVSxxLEgsRyxZLFc9di5fYmdMYXllci5zZWxlY3RBbGwoIi5iZyIpLmRhdGEoVCk7Zm9yKFcuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJiZyIsITApLFcuZXhpdCgpLnJlbW92ZSgpLFcuZWFjaChmdW5jdGlvbih0KXt2Ll9wbG90c1t0XS5iZz1uLnNlbGVjdCh0aGlzKX0pLGU9MDtlPEEubGVuZ3RoO2UrKylzPXYuX3Bsb3RzW0FbZV1dLGQ9cy54YXhpcyxnPXMueWF4aXMscy5iZyYmcy5iZy5jYWxsKGMuc2V0UmVjdCxkLl9vZmZzZXQteSxnLl9vZmZzZXQteSxkLl9sZW5ndGgrMip5LGcuX2xlbmd0aCsyKnkpLmNhbGwobC5maWxsLHYucGxvdF9iZ2NvbG9yKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwwKTtpZighdi5faGFzT25seUxhcmdlU3Bsb21zKWZvcihhIGluIHYuX3Bsb3RzKXtzPXYuX3Bsb3RzW2FdLGQ9cy54YXhpcyxnPXMueWF4aXM7dmFyIFgsWixKPXMuY2xpcElkPSJjbGlwIit2Ll91aWQrYSsicGxvdCIsSz1vLmVuc3VyZVNpbmdsZUJ5SWQodi5fY2xpcHMsImNsaXBQYXRoIixKLGZ1bmN0aW9uKHQpe3QuY2xhc3NlZCgicGxvdGNsaXAiLCEwKS5hcHBlbmQoInJlY3QiKX0pO3MuY2xpcFJlY3Q9Sy5zZWxlY3QoInJlY3QiKS5hdHRyKHt3aWR0aDpkLl9sZW5ndGgsaGVpZ2h0OmcuX2xlbmd0aH0pLGMuc2V0VHJhbnNsYXRlKHMucGxvdCxkLl9vZmZzZXQsZy5fb2Zmc2V0KSxzLl9oYXNDbGlwT25BeGlzRmFsc2U/KFg9bnVsbCxaPUopOihYPUosWj1udWxsKSxjLnNldENsaXBVcmwocy5wbG90LFgsdCkscy5sYXllckNsaXBJZD1afWZ1bmN0aW9uIFEodCl7cmV0dXJuIk0iK0krIiwiK3QrIkgiK0R9ZnVuY3Rpb24gJCh0KXtyZXR1cm4iTSIrZC5fb2Zmc2V0KyIsIit0KyJoIitkLl9sZW5ndGh9ZnVuY3Rpb24gdHQodCl7cmV0dXJuIk0iK3QrIiwiK1YrIlYiK2p9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIk0iK3QrIiwiK2cuX29mZnNldCsidiIrZy5fbGVuZ3RofWZ1bmN0aW9uIHJ0KHQsZSxyKXtpZighdC5zaG93bGluZXx8YSE9PXQuX21haW5TdWJwbG90KXJldHVybiIiO2lmKCF0Ll9hbmNob3JBeGlzKXJldHVybiByKHQuX21haW5MaW5lUG9zaXRpb24pO3ZhciBuPWUodC5fbWFpbkxpbmVQb3NpdGlvbik7cmV0dXJuIHQubWlycm9yJiYobis9ZSh0Ll9tYWluTWlycm9yUG9zaXRpb24pKSxufWZvcihhIGluIHYuX3Bsb3RzKXtzPXYuX3Bsb3RzW2FdLGQ9cy54YXhpcyxnPXMueWF4aXM7dmFyIG50PSJNMCwwIjtrKGQsYSkmJihCPU0oZCwibGVmdCIsZyx4KSxJPWQuX29mZnNldC0oQj95K0I6MCksTj1NKGQsInJpZ2h0IixnLHgpLEQ9ZC5fb2Zmc2V0K2QuX2xlbmd0aCsoTj95K046MCksUj1iKGQsZywiYm90dG9tIiksRj1iKGQsZywidG9wIiksIShZPSFkLl9hbmNob3JBeGlzfHxhIT09ZC5fbWFpblN1YnBsb3QpfHwiYWxsdGlja3MiIT09ZC5taXJyb3ImJiJhbGwiIT09ZC5taXJyb3J8fChkLl9saW5lcG9zaXRpb25zW2FdPVtSLEZdKSxudD1ydChkLFEsJCksWSYmZC5zaG93bGluZSYmKCJhbGwiPT09ZC5taXJyb3J8fCJhbGx0aWNrcyI9PT1kLm1pcnJvcikmJihudCs9UShSKStRKEYpKSxzLnhsaW5lcy5zdHlsZSgic3Ryb2tlLXdpZHRoIixkLl9sdysicHgiKS5jYWxsKGwuc3Ryb2tlLGQuc2hvd2xpbmU/ZC5saW5lY29sb3I6InJnYmEoMCwwLDAsMCkiKSkscy54bGluZXMuYXR0cigiZCIsbnQpO3ZhciBhdD0iTTAsMCI7ayhnLGEpJiYoSD1NKGcsImJvdHRvbSIsZCx4KSxqPWcuX29mZnNldCtnLl9sZW5ndGgrKEg/eTowKSxHPU0oZywidG9wIixkLHgpLFY9Zy5fb2Zmc2V0LShHP3k6MCksVT1iKGcsZCwibGVmdCIpLHE9YihnLGQsInJpZ2h0IiksIShZPSFnLl9hbmNob3JBeGlzfHxhIT09Zy5fbWFpblN1YnBsb3QpfHwiYWxsdGlja3MiIT09Zy5taXJyb3ImJiJhbGwiIT09Zy5taXJyb3J8fChnLl9saW5lcG9zaXRpb25zW2FdPVtVLHFdKSxhdD1ydChnLHR0LGV0KSxZJiZnLnNob3dsaW5lJiYoImFsbCI9PT1nLm1pcnJvcnx8ImFsbHRpY2tzIj09PWcubWlycm9yKSYmKGF0Kz10dChVKSt0dChxKSkscy55bGluZXMuc3R5bGUoInN0cm9rZS13aWR0aCIsZy5fbHcrInB4IikuY2FsbChsLnN0cm9rZSxnLnNob3dsaW5lP2cubGluZWNvbG9yOiJyZ2JhKDAsMCwwLDApIikpLHMueWxpbmVzLmF0dHIoImQiLGF0KX1yZXR1cm4gZi5tYWtlQ2xpcFBhdGhzKHQpLGkucHJldmlvdXNQcm9taXNlcyh0KX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuKHQudGlja3N8fHQuc2hvd2xpbmUpJiYoZT09PXQuX21haW5TdWJwbG90fHwiYWxsIj09PXQubWlycm9yfHwiYWxsdGlja3MiPT09dC5taXJyb3IpfWZ1bmN0aW9uIFQodCxlLHIpe2lmKCFyLnNob3dsaW5lfHwhci5fbHcpcmV0dXJuITE7aWYoImFsbCI9PT1yLm1pcnJvcnx8ImFsbHRpY2tzIj09PXIubWlycm9yKXJldHVybiEwO3ZhciBuPXIuX2FuY2hvckF4aXM7aWYoIW4pcmV0dXJuITE7dmFyIGE9cC5GUk9NX0JMW2VdO3JldHVybiByLnNpZGU9PT1lP24uZG9tYWluW2FdPT09dC5kb21haW5bYV06ci5taXJyb3ImJm4uZG9tYWluWzEtYV09PT10LmRvbWFpblsxLWFdfWZ1bmN0aW9uIE0odCxlLHIsbil7aWYoVCh0LGUscikpcmV0dXJuIHIuX2x3O2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgaT1uW2FdO2lmKGkuX21haW5BeGlzPT09ci5fbWFpbkF4aXMmJlQodCxlLGkpKXJldHVybiBpLl9sd31yZXR1cm4gMH1mdW5jdGlvbiBBKHQsZSl7dmFyIHI9dC50aXRsZSxuPXQuX3NpemUsYT0wO3N3aXRjaChlPT09eT9hPXIucGFkLmw6ZT09PWImJihhPS1yLnBhZC5yKSxyLnhyZWYpe2Nhc2UicGFwZXIiOnJldHVybiBuLmwrbi53KnIueCthO2Nhc2UiY29udGFpbmVyIjpkZWZhdWx0OnJldHVybiB0LndpZHRoKnIueCthfX1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9dC50aXRsZSxuPXQuX3NpemUsYT0wO2lmKCIwZW0iIT09ZSYmZT9lPT09cC5DQVBfU0hJRlQrImVtIiYmKGE9ci5wYWQudCk6YT0tci5wYWQuYiwiYXV0byI9PT1yLnkpcmV0dXJuIG4udC8yO3N3aXRjaChyLnlyZWYpe2Nhc2UicGFwZXIiOnJldHVybiBuLnQrbi5oLW4uaCpyLnkrYTtjYXNlImNvbnRhaW5lciI6ZGVmYXVsdDpyZXR1cm4gdC5oZWlnaHQtdC5oZWlnaHQqci55K2F9fXIubGF5b3V0U3R5bGVzPWZ1bmN0aW9uKHQpe3JldHVybiBvLnN5bmNPckFzeW5jKFtpLmRvQXV0b01hcmdpbix3XSx0KX0sci5kcmF3TWFpblRpdGxlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj1mdW5jdGlvbih0KXt2YXIgZT10LnRpdGxlLHI9eDtvLmlzUmlnaHRBbmNob3IoZSk/cj1iOm8uaXNMZWZ0QW5jaG9yKGUpJiYocj15KTtyZXR1cm4gcn0oZSksbj1mdW5jdGlvbih0KXt2YXIgZT10LnRpdGxlLHI9IjBlbSI7by5pc1RvcEFuY2hvcihlKT9yPXAuQ0FQX1NISUZUKyJlbSI6by5pc01pZGRsZUFuY2hvcihlKSYmKHI9cC5NSURfU0hJRlQrImVtIik7cmV0dXJuIHJ9KGUpO3UuZHJhdyh0LCJndGl0bGUiLHtwcm9wQ29udGFpbmVyOmUscHJvcE5hbWU6InRpdGxlLnRleHQiLHBsYWNlaG9sZGVyOmUuX2RmbHRUaXRsZS5wbG90LGF0dHJpYnV0ZXM6e3g6QShlLHIpLHk6UyhlLG4pLCJ0ZXh0LWFuY2hvciI6cixkeTpufX0pfSxyLmRvVHJhY2VTdHlsZT1mdW5jdGlvbih0KXt2YXIgZSxuPXQuY2FsY2RhdGEsbz1bXTtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKXt2YXIgbD1uW2VdLGM9bFswXXx8e30sdT1jLnRyYWNlfHx7fSxoPXUuX21vZHVsZXx8e30sZj1oLmFycmF5c1RvQ2FsY2RhdGE7ZiYmZihsLHUpO3ZhciBwPWguZWRpdFN0eWxlO3AmJm8ucHVzaCh7Zm46cCxjZDA6Y30pfWlmKG8ubGVuZ3RoKXtmb3IoZT0wO2U8by5sZW5ndGg7ZSsrKXt2YXIgZD1vW2VdO2QuZm4odCxkLmNkMCl9cyh0KSxyLnJlZHJhd1JlZ2xUcmFjZXModCl9cmV0dXJuIGkuc3R5bGUodCksYS5nZXRDb21wb25lbnRNZXRob2QoImxlZ2VuZCIsImRyYXciKSh0KSxpLnByZXZpb3VzUHJvbWlzZXModCl9LHIuZG9Db2xvckJhcnM9ZnVuY3Rpb24odCl7cmV0dXJuIGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJjb2xvcmJhciIsImRyYXciKSh0KSxpLnByZXZpb3VzUHJvbWlzZXModCl9LHIubGF5b3V0UmVwbG90PWZ1bmN0aW9uKHQpe3ZhciBlPXQubGF5b3V0O3JldHVybiB0LmxheW91dD12b2lkIDAsYS5jYWxsKCJwbG90Iix0LCIiLGUpfSxyLmRvTGVnZW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhLmdldENvbXBvbmVudE1ldGhvZCgibGVnZW5kIiwiZHJhdyIpKHQpLGkucHJldmlvdXNQcm9taXNlcyh0KX0sci5kb1RpY2tzUmVsYXlvdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGYuZHJhdyh0LCJyZWRyYXciKSx0Ll9mdWxsTGF5b3V0Ll9oYXNPbmx5TGFyZ2VTcGxvbXMmJihhLnN1YnBsb3RzUmVnaXN0cnkuc3Bsb20udXBkYXRlR3JpZCh0KSxzKHQpLHIucmVkcmF3UmVnbFRyYWNlcyh0KSksci5kcmF3TWFpblRpdGxlKHQpLGkucHJldmlvdXNQcm9taXNlcyh0KX0sci5kb01vZGVCYXI9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtoLm1hbmFnZSh0KTtmb3IodmFyIHI9MDtyPGUuX2Jhc2VQbG90TW9kdWxlcy5sZW5ndGg7cisrKXt2YXIgbj1lLl9iYXNlUGxvdE1vZHVsZXNbcl0udXBkYXRlRng7biYmbih0KX1yZXR1cm4gaS5wcmV2aW91c1Byb21pc2VzKHQpfSxyLmRvQ2FtZXJhPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fc3VicGxvdHMuZ2wzZCxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBhPWVbcltuXV07YS5fc2NlbmUuc2V0Vmlld3BvcnQoYSl9fSxyLmRyYXdEYXRhPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7cyh0KTtmb3IodmFyIG49ZS5fYmFzZVBsb3RNb2R1bGVzLG89MDtvPG4ubGVuZ3RoO28rKyluW29dLnBsb3QodCk7cmV0dXJuIHIucmVkcmF3UmVnbFRyYWNlcyh0KSxpLnN0eWxlKHQpLGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJzaGFwZXMiLCJkcmF3IikodCksYS5nZXRDb21wb25lbnRNZXRob2QoImFubm90YXRpb25zIiwiZHJhdyIpKHQpLGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJpbWFnZXMiLCJkcmF3IikodCksZS5fcmVwbG90dGluZz0hMSxpLnByZXZpb3VzUHJvbWlzZXModCl9LHIucmVkcmF3UmVnbFRyYWNlcz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2lmKGUuX2hhcygicmVnbCIpKXt2YXIgcixuLGE9dC5fZnVsbERhdGEsaT1bXSxzPVtdO2ZvcihlLl9oYXNPbmx5TGFyZ2VTcGxvbXMmJmUuX3NwbG9tR3JpZC5kcmF3KCkscj0wO3I8YS5sZW5ndGg7cisrKXt2YXIgbD1hW3JdOyEwPT09bC52aXNpYmxlJiYwIT09bC5fbGVuZ3RoJiYoInNwbG9tIj09PWwudHlwZT9lLl9zcGxvbVNjZW5lc1tsLnVpZF0uZHJhdygpOiJzY2F0dGVyZ2wiPT09bC50eXBlP28ucHVzaFVuaXF1ZShpLGwueGF4aXMrbC55YXhpcyk6InNjYXR0ZXJwb2xhcmdsIj09PWwudHlwZSYmby5wdXNoVW5pcXVlKHMsbC5zdWJwbG90KSl9Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKykobj1lLl9wbG90c1tpW3JdXSkuX3NjZW5lJiZuLl9zY2VuZS5kcmF3KCk7Zm9yKHI9MDtyPHMubGVuZ3RoO3IrKykobj1lW3Nbcl1dLl9zdWJwbG90KS5fc2NlbmUmJm4uX3NjZW5lLmRyYXcoKX19LHIuZG9BdXRvUmFuZ2VBbmRDb25zdHJhaW50cz1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuPXQuX2Z1bGxMYXlvdXQsYT1mLmxpc3QodCwiIiwhMCksaT1uLl9heGlzTWF0Y2hHcm91cHN8fFtdLHM9e30sbD0wO2w8YS5sZW5ndGg7bCsrKWU9YVtsXSx2KHQsZSksbSh0LGUpLHNbZS5faWRdPTE7Zyh0KTt0OmZvcih2YXIgYz0wO2M8aS5sZW5ndGg7YysrKXt2YXIgdSxoPWlbY10scD1udWxsO2Zvcih1IGluIGgpaWYoc1soZT1mLmdldEZyb21JZCh0LHUpKS5faWRdKXtpZighMT09PWUuYXV0b3JhbmdlKWNvbnRpbnVlIHQ7cj1vLnNpbXBsZU1hcChlLnJhbmdlLGUucjJsKSxwP3BbMF08cFsxXT8ocFswXT1NYXRoLm1pbihwWzBdLHJbMF0pLHBbMV09TWF0aC5tYXgocFsxXSxyWzFdKSk6KHBbMF09TWF0aC5tYXgocFswXSxyWzBdKSxwWzFdPU1hdGgubWluKHBbMV0sclsxXSkpOnA9cn1mb3IodSBpbiBoKShlPWYuZ2V0RnJvbUlkKHQsdSkpLnJhbmdlPW8uc2ltcGxlTWFwKHAsZS5sMnIpLGUuX2lucHV0LnJhbmdlPWUucmFuZ2Uuc2xpY2UoKSxlLnNldFNjYWxlKCl9fSxyLmZpbmFsRHJhdz1mdW5jdGlvbih0KXthLmdldENvbXBvbmVudE1ldGhvZCgicmFuZ2VzbGlkZXIiLCJkcmF3IikodCksYS5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2VsZWN0b3IiLCJkcmF3IikodCl9LHIuZHJhd01hcmdpblB1c2hlcnM9ZnVuY3Rpb24odCl7YS5nZXRDb21wb25lbnRNZXRob2QoImxlZ2VuZCIsImRyYXciKSh0KSxhLmdldENvbXBvbmVudE1ldGhvZCgicmFuZ2VzZWxlY3RvciIsImRyYXciKSh0KSxhLmdldENvbXBvbmVudE1ldGhvZCgic2xpZGVycyIsImRyYXciKSh0KSxhLmdldENvbXBvbmVudE1ldGhvZCgidXBkYXRlbWVudXMiLCJkcmF3IikodCksYS5nZXRDb21wb25lbnRNZXRob2QoImNvbG9yYmFyIiwiZHJhdyIpKHQpfX0seyIuLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi9jb21wb25lbnRzL21vZGViYXIiOjY1MCwiLi4vY29tcG9uZW50cy90aXRsZXMiOjY3OSwiLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi9saWIiOjcxNywiLi4vbGliL2NsZWFyX2dsX2NhbnZhc2VzIjo3MDIsIi4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFuZ2UiOjc2NCwiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0cmFpbnRzIjo3NzIsIi4uL3Bsb3RzL3Bsb3RzIjo4MjYsIi4uL3JlZ2lzdHJ5Ijo4NDYsZDM6MTY1fV0sNzU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGE9bi5pc1BsYWluT2JqZWN0LGk9dCgiLi9wbG90X3NjaGVtYSIpLG89dCgiLi4vcGxvdHMvcGxvdHMiKSxzPXQoIi4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxsPXQoIi4vcGxvdF90ZW1wbGF0ZSIpLGM9dCgiLi9wbG90X2NvbmZpZyIpLmRmbHRDb25maWc7ZnVuY3Rpb24gdSh0LGUpe3Q9bi5leHRlbmREZWVwKHt9LHQpO3ZhciByLGksbz1PYmplY3Qua2V5cyh0KS5zb3J0KCk7ZnVuY3Rpb24gcyhlLHIsbil7aWYoYShyKSYmYShlKSl1KGUscik7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpJiZBcnJheS5pc0FycmF5KGUpKXt2YXIgbz1sLmFycmF5VGVtcGxhdGVyKHtfdGVtcGxhdGU6dH0sbik7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIHM9cltpXSxjPW8ubmV3SXRlbShzKS5fdGVtcGxhdGU7YyYmdShjLHMpfXZhciBoPW8uZGVmYXVsdEl0ZW1zKCk7Zm9yKGk9MDtpPGgubGVuZ3RoO2krKylyLnB1c2goaFtpXS5fdGVtcGxhdGUpO2ZvcihpPTA7aTxyLmxlbmd0aDtpKyspZGVsZXRlIHJbaV0udGVtcGxhdGVpdGVtbmFtZX19Zm9yKHI9MDtyPG8ubGVuZ3RoO3IrKyl7dmFyIGM9b1tyXSxmPXRbY107aWYoYyBpbiBlP3MoZixlW2NdLGMpOmVbY109ZixoKGMpPT09Yylmb3IodmFyIHAgaW4gZSl7dmFyIGQ9aChwKTtwPT09ZHx8ZCE9PWN8fHAgaW4gdHx8cyhmLGVbcF0sYyl9fX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnJlcGxhY2UoL1swLTldKyQvLCIiKX1mdW5jdGlvbiBmKHQsZSxyLGksbyl7dmFyIHM9byYmcihvKTtmb3IodmFyIGMgaW4gdCl7dmFyIHU9dFtjXSxkPXAodCxjLGkpLGc9cCh0LGMsbyksdj1yKGcpO2lmKCF2KXt2YXIgbT1oKGMpO20hPT1jJiYodj1yKGc9cCh0LG0sbykpKX1pZigoIXN8fHMhPT12KSYmISghdnx8di5fbm9UZW1wbGF0aW5nfHwiZGF0YV9hcnJheSI9PT12LnZhbFR5cGV8fHYuYXJyYXlPayYmQXJyYXkuaXNBcnJheSh1KSkpaWYoIXYudmFsVHlwZSYmYSh1KSlmKHUsZSxyLGQsZyk7ZWxzZSBpZih2Ll9pc0xpbmtlZFRvQXJyYXkmJkFycmF5LmlzQXJyYXkodSkpZm9yKHZhciB5PSExLHg9MCxiPXt9LF89MDtfPHUubGVuZ3RoO18rKyl7dmFyIHc9dVtfXTtpZihhKHcpKXt2YXIgaz13Lm5hbWU7aWYoayliW2tdfHwoZih3LGUscixwKHUseCxkKSxwKHUseCxnKSkseCsrLGJba109MSk7ZWxzZSBpZigheSl7dmFyIFQ9cCh0LGwuYXJyYXlEZWZhdWx0S2V5KGMpLGkpLE09cCh1LHgsZCk7Zih3LGUscixNLHAodSx4LGcpKTt2YXIgQT1uLm5lc3RlZFByb3BlcnR5KGUsTSk7bi5uZXN0ZWRQcm9wZXJ0eShlLFQpLnNldChBLmdldCgpKSxBLnNldChudWxsKSx5PSEwfX19ZWxzZXtuLm5lc3RlZFByb3BlcnR5KGUsZCkuc2V0KHUpfX19ZnVuY3Rpb24gcCh0LGUscil7cmV0dXJuIHI/QXJyYXkuaXNBcnJheSh0KT9yKyJbIitlKyJdIjpyKyIuIitlOmV9ZnVuY3Rpb24gZCh0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZihhKHRbZV0pKXJldHVybiEwfWZ1bmN0aW9uIGcodCl7dmFyIGU7c3dpdGNoKHQuY29kZSl7Y2FzZSJkYXRhIjplPSJUaGUgdGVtcGxhdGUgaGFzIG5vIGtleSBkYXRhLiI7YnJlYWs7Y2FzZSJsYXlvdXQiOmU9IlRoZSB0ZW1wbGF0ZSBoYXMgbm8ga2V5IGxheW91dC4iO2JyZWFrO2Nhc2UibWlzc2luZyI6ZT10LnBhdGg/IlRoZXJlIGFyZSBubyB0ZW1wbGF0ZXMgZm9yIGl0ZW0gIit0LnBhdGgrIiB3aXRoIG5hbWUgIit0LnRlbXBsYXRlaXRlbW5hbWU6IlRoZXJlIGFyZSBubyB0ZW1wbGF0ZXMgZm9yIHRyYWNlICIrdC5pbmRleCsiLCBvZiB0eXBlICIrdC50cmFjZVR5cGUrIi4iO2JyZWFrO2Nhc2UidW51c2VkIjplPXQucGF0aD8iVGhlIHRlbXBsYXRlIGl0ZW0gYXQgIit0LnBhdGgrIiB3YXMgbm90IHVzZWQgaW4gY29uc3RydWN0aW5nIHRoZSBwbG90LiI6dC5kYXRhQ291bnQ/IlNvbWUgb2YgdGhlIHRlbXBsYXRlcyBvZiB0eXBlICIrdC50cmFjZVR5cGUrIiB3ZXJlIG5vdCB1c2VkLiBUaGUgdGVtcGxhdGUgaGFzICIrdC50ZW1wbGF0ZUNvdW50KyIgdHJhY2VzLCB0aGUgZGF0YSBvbmx5IGhhcyAiK3QuZGF0YUNvdW50KyIgb2YgdGhpcyB0eXBlLiI6IlRoZSB0ZW1wbGF0ZSBoYXMgIit0LnRlbXBsYXRlQ291bnQrIiB0cmFjZXMgb2YgdHlwZSAiK3QudHJhY2VUeXBlKyIgYnV0IHRoZXJlIGFyZSBub25lIGluIHRoZSBkYXRhLiI7YnJlYWs7Y2FzZSJyZXVzZWQiOmU9IlNvbWUgb2YgdGhlIHRlbXBsYXRlcyBvZiB0eXBlICIrdC50cmFjZVR5cGUrIiB3ZXJlIHVzZWQgbW9yZSB0aGFuIG9uY2UuIFRoZSB0ZW1wbGF0ZSBoYXMgIit0LnRlbXBsYXRlQ291bnQrIiB0cmFjZXMsIHRoZSBkYXRhIGhhcyAiK3QuZGF0YUNvdW50KyIgb2YgdGhpcyB0eXBlLiJ9cmV0dXJuIHQubXNnPWUsdH1yLm1ha2VUZW1wbGF0ZT1mdW5jdGlvbih0KXt0PW4uaXNQbGFpbk9iamVjdCh0KT90Om4uZ2V0R3JhcGhEaXYodCksdD1uLmV4dGVuZERlZXAoe19jb250ZXh0OmN9LHtkYXRhOnQuZGF0YSxsYXlvdXQ6dC5sYXlvdXR9KSxvLnN1cHBseURlZmF1bHRzKHQpO3ZhciBlPXQuZGF0YXx8W10scj10LmxheW91dHx8e307ci5fYmFzZVBsb3RNb2R1bGVzPXQuX2Z1bGxMYXlvdXQuX2Jhc2VQbG90TW9kdWxlcyxyLl9tb2R1bGVzPXQuX2Z1bGxMYXlvdXQuX21vZHVsZXM7dmFyIGw9e2RhdGE6e30sbGF5b3V0Ont9fTtlLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9e307Zih0LGUsZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5nZXRUcmFjZVZhbE9iamVjdCh0LG4ubmVzdGVkUHJvcGVydHkoe30sZSkucGFydHMpfS5iaW5kKG51bGwsdCkpO3ZhciByPW4uY29lcmNlKHQse30scywidHlwZSIpLGE9bC5kYXRhW3JdO2F8fChhPWwuZGF0YVtyXT1bXSksYS5wdXNoKGUpfSksZihyLGwubGF5b3V0LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuZ2V0TGF5b3V0VmFsT2JqZWN0KHQsbi5uZXN0ZWRQcm9wZXJ0eSh7fSxlKS5wYXJ0cyl9LmJpbmQobnVsbCxyKSksZGVsZXRlIGwubGF5b3V0LnRlbXBsYXRlO3ZhciBoPXIudGVtcGxhdGU7aWYoYShoKSl7dmFyIHAsZCxnLHYsbSx5LHg9aC5sYXlvdXQ7YSh4KSYmdSh4LGwubGF5b3V0KTt2YXIgYj1oLmRhdGE7aWYoYShiKSl7Zm9yKGQgaW4gbC5kYXRhKWlmKGc9YltkXSxBcnJheS5pc0FycmF5KGcpKXtmb3IoeT0obT1sLmRhdGFbZF0pLmxlbmd0aCx2PWcubGVuZ3RoLHA9MDtwPHk7cCsrKXUoZ1twJXZdLG1bcF0pO2ZvcihwPXk7cDx2O3ArKyltLnB1c2gobi5leHRlbmREZWVwKHt9LGdbcF0pKX1mb3IoZCBpbiBiKWQgaW4gbC5kYXRhfHwobC5kYXRhW2RdPW4uZXh0ZW5kRGVlcChbXSxiW2RdKSl9fXJldHVybiBsfSxyLnZhbGlkYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1uLmV4dGVuZERlZXAoe30se19jb250ZXh0OmMsZGF0YTp0LmRhdGEsbGF5b3V0OnQubGF5b3V0fSksaT1yLmxheW91dHx8e307YShlKXx8KGU9aS50ZW1wbGF0ZXx8e30pO3ZhciBzPWUubGF5b3V0LGw9ZS5kYXRhLHU9W107ci5sYXlvdXQ9aSxyLmxheW91dC50ZW1wbGF0ZT1lLG8uc3VwcGx5RGVmYXVsdHMocik7dmFyIGY9ci5fZnVsbExheW91dCx2PXIuX2Z1bGxEYXRhLG09e307aWYoYShzKT8oIWZ1bmN0aW9uIHQoZSxyKXtmb3IodmFyIG4gaW4gZSlpZigiXyIhPT1uLmNoYXJBdCgwKSYmYShlW25dKSl7dmFyIGksbz1oKG4pLHM9W107Zm9yKGk9MDtpPHIubGVuZ3RoO2krKylzLnB1c2gocChlLG4scltpXSkpLG8hPT1uJiZzLnB1c2gocChlLG8scltpXSkpO2ZvcihpPTA7aTxzLmxlbmd0aDtpKyspbVtzW2ldXT0xO3QoZVtuXSxzKX19KGYsWyJsYXlvdXQiXSksZnVuY3Rpb24gdChlLHIpe2Zvcih2YXIgbiBpbiBlKWlmKC0xPT09bi5pbmRleE9mKCJkZWZhdWx0cyIpJiZhKGVbbl0pKXt2YXIgaT1wKGUsbixyKTttW2ldP3QoZVtuXSxpKTp1LnB1c2goe2NvZGU6InVudXNlZCIscGF0aDppfSl9fShzLCJsYXlvdXQiKSk6dS5wdXNoKHtjb2RlOiJsYXlvdXQifSksYShsKSl7Zm9yKHZhciB5LHg9e30sYj0wO2I8di5sZW5ndGg7YisrKXt2YXIgXz12W2JdO3hbeT1fLnR5cGVdPSh4W3ldfHwwKSsxLF8uX2Z1bGxJbnB1dC5fdGVtcGxhdGV8fHUucHVzaCh7Y29kZToibWlzc2luZyIsaW5kZXg6Xy5fZnVsbElucHV0LmluZGV4LHRyYWNlVHlwZTp5fSl9Zm9yKHkgaW4gbCl7dmFyIHc9bFt5XS5sZW5ndGgsaz14W3ldfHwwO3c+az91LnB1c2goe2NvZGU6InVudXNlZCIsdHJhY2VUeXBlOnksdGVtcGxhdGVDb3VudDp3LGRhdGFDb3VudDprfSk6az53JiZ1LnB1c2goe2NvZGU6InJldXNlZCIsdHJhY2VUeXBlOnksdGVtcGxhdGVDb3VudDp3LGRhdGFDb3VudDprfSl9fWVsc2UgdS5wdXNoKHtjb2RlOiJkYXRhIn0pO2lmKGZ1bmN0aW9uIHQoZSxyKXtmb3IodmFyIG4gaW4gZSlpZigiXyIhPT1uLmNoYXJBdCgwKSl7dmFyIGk9ZVtuXSxvPXAoZSxuLHIpO2EoaSk/KEFycmF5LmlzQXJyYXkoZSkmJiExPT09aS5fdGVtcGxhdGUmJmkudGVtcGxhdGVpdGVtbmFtZSYmdS5wdXNoKHtjb2RlOiJtaXNzaW5nIixwYXRoOm8sdGVtcGxhdGVpdGVtbmFtZTppLnRlbXBsYXRlaXRlbW5hbWV9KSx0KGksbykpOkFycmF5LmlzQXJyYXkoaSkmJmQoaSkmJnQoaSxvKX19KHtkYXRhOnYsbGF5b3V0OmZ9LCIiKSx1Lmxlbmd0aClyZXR1cm4gdS5tYXAoZyl9fSx7Ii4uL2xpYiI6NzE3LCIuLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uL3Bsb3RzL3Bsb3RzIjo4MjYsIi4vcGxvdF9jb25maWciOjc1MywiLi9wbG90X3NjaGVtYSI6NzU0LCIuL3Bsb3RfdGVtcGxhdGUiOjc1NX1dLDc1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi9wbG90X2FwaSIpLGk9dCgiLi4vbGliIiksbz10KCIuLi9zbmFwc2hvdC9oZWxwZXJzIikscz10KCIuLi9zbmFwc2hvdC90b3N2ZyIpLGw9dCgiLi4vc25hcHNob3Qvc3ZndG9pbWciKSxjPXtmb3JtYXQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInBuZyIsImpwZWciLCJ3ZWJwIiwic3ZnIl0sZGZsdDoicG5nIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjF9LGhlaWdodDp7dmFsVHlwZToibnVtYmVyIixtaW46MX0sc2NhbGU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxfSxzZXRCYWNrZ3JvdW5kOnt2YWxUeXBlOiJhbnkiLGRmbHQ6ITF9LGltYWdlRGF0YU9ubHk6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcix1LGgsZjtmdW5jdGlvbiBwKHQpe3JldHVybiEodCBpbiBlKXx8aS52YWxpZGF0ZShlW3RdLGNbdF0pfWlmKGU9ZXx8e30saS5pc1BsYWluT2JqZWN0KHQpPyhyPXQuZGF0YXx8W10sdT10LmxheW91dHx8e30saD10LmNvbmZpZ3x8e30sZj17fSk6KHQ9aS5nZXRHcmFwaERpdih0KSxyPWkuZXh0ZW5kRGVlcChbXSx0LmRhdGEpLHU9aS5leHRlbmREZWVwKHt9LHQubGF5b3V0KSxoPXQuX2NvbnRleHQsZj10Ll9mdWxsTGF5b3V0fHx7fSksIXAoIndpZHRoIikmJm51bGwhPT1lLndpZHRofHwhcCgiaGVpZ2h0IikmJm51bGwhPT1lLmhlaWdodCl0aHJvdyBuZXcgRXJyb3IoIkhlaWdodCBhbmQgd2lkdGggc2hvdWxkIGJlIHBpeGVsIHZhbHVlcy4iKTtpZighcCgiZm9ybWF0IikpdGhyb3cgbmV3IEVycm9yKCJJbWFnZSBmb3JtYXQgaXMgbm90IGpwZWcsIHBuZywgc3ZnIG9yIHdlYnAuIik7dmFyIGQ9e307ZnVuY3Rpb24gZyh0LHIpe3JldHVybiBpLmNvZXJjZShlLGQsYyx0LHIpfXZhciB2PWcoImZvcm1hdCIpLG09Zygid2lkdGgiKSx5PWcoImhlaWdodCIpLHg9Zygic2NhbGUiKSxiPWcoInNldEJhY2tncm91bmQiKSxfPWcoImltYWdlRGF0YU9ubHkiKSx3PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3cuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix3LnN0eWxlLmxlZnQ9Ii01MDAwcHgiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodyk7dmFyIGs9aS5leHRlbmRGbGF0KHt9LHUpO20/ay53aWR0aD1tOm51bGw9PT1lLndpZHRoJiZuKGYud2lkdGgpJiYoay53aWR0aD1mLndpZHRoKSx5P2suaGVpZ2h0PXk6bnVsbD09PWUuaGVpZ2h0JiZuKGYuaGVpZ2h0KSYmKGsuaGVpZ2h0PWYuaGVpZ2h0KTt2YXIgVD1pLmV4dGVuZEZsYXQoe30saCx7X2V4cG9ydGVkUGxvdDohMCxzdGF0aWNQbG90OiEwLHNldEJhY2tncm91bmQ6Yn0pLE09by5nZXRSZWRyYXdGdW5jKHcpO2Z1bmN0aW9uIEEoKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LG8uZ2V0RGVsYXkody5fZnVsbExheW91dCkpfSl9ZnVuY3Rpb24gUygpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe3ZhciByPXModyx2LHgpLG49dy5fZnVsbExheW91dC53aWR0aCxjPXcuX2Z1bGxMYXlvdXQuaGVpZ2h0O2lmKGEucHVyZ2UodyksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh3KSwic3ZnIj09PXYpcmV0dXJuIHQoXz9yOm8uZW5jb2RlU1ZHKHIpKTt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt1LmlkPWkucmFuZHN0cigpLGwoe2Zvcm1hdDp2LHdpZHRoOm4saGVpZ2h0OmMsc2NhbGU6eCxjYW52YXM6dSxzdmc6cixwcm9taXNlOiEwfSkudGhlbih0KS5jYXRjaChlKX0pfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe2EucGxvdCh3LHIsayxUKS50aGVuKE0pLnRoZW4oQSkudGhlbihTKS50aGVuKGZ1bmN0aW9uKGUpe3QoZnVuY3Rpb24odCl7cmV0dXJuIF8/dC5yZXBsYWNlKG8uSU1BR0VfVVJMX1BSRUZJWCwiIik6dH0oZSkpfSkuY2F0Y2goZnVuY3Rpb24odCl7ZSh0KX0pfSl9fSx7Ii4uL2xpYiI6NzE3LCIuLi9zbmFwc2hvdC9oZWxwZXJzIjo4NTAsIi4uL3NuYXBzaG90L3N2Z3RvaW1nIjo4NTIsIi4uL3NuYXBzaG90L3Rvc3ZnIjo4NTQsIi4vcGxvdF9hcGkiOjc1MiwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDc1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPXQoIi4uL3Bsb3RzL3Bsb3RzIiksaT10KCIuL3Bsb3Rfc2NoZW1hIiksbz10KCIuL3Bsb3RfY29uZmlnIikuZGZsdENvbmZpZyxzPW4uaXNQbGFpbk9iamVjdCxsPUFycmF5LmlzQXJyYXksYz1uLmlzQXJyYXlPclR5cGVkQXJyYXk7ZnVuY3Rpb24gdSh0LGUscixhLGksbyl7bz1vfHxbXTtmb3IodmFyIGg9T2JqZWN0LmtleXModCksZj0wO2Y8aC5sZW5ndGg7ZisrKXt2YXIgdj1oW2ZdO2lmKCJ0cmFuc2Zvcm1zIiE9PXYpe3ZhciBtPW8uc2xpY2UoKTttLnB1c2godik7dmFyIHk9dFt2XSx4PWVbdl0sYj1nKHIsdiksXz0oYnx8e30pLnZhbFR5cGUsdz0iaW5mb19hcnJheSI9PT1fLGs9ImNvbG9yc2NhbGUiPT09XyxUPShifHx7fSkuaXRlbXM7aWYoZChyLHYpKWlmKHMoeSkmJnMoeCkmJiJhbnkiIT09Xyl1KHkseCxiLGEsaSxtKTtlbHNlIGlmKHcmJmwoeSkpe3kubGVuZ3RoPngubGVuZ3RoJiZhLnB1c2gocCgidW51c2VkIixpLG0uY29uY2F0KHgubGVuZ3RoKSkpO3ZhciBNLEEsUyxFLEwsQz14Lmxlbmd0aCxQPUFycmF5LmlzQXJyYXkoVCk7aWYoUCYmKEM9TWF0aC5taW4oQyxULmxlbmd0aCkpLDI9PT1iLmRpbWVuc2lvbnMpZm9yKEE9MDtBPEM7QSsrKWlmKGwoeVtBXSkpe3lbQV0ubGVuZ3RoPnhbQV0ubGVuZ3RoJiZhLnB1c2gocCgidW51c2VkIixpLG0uY29uY2F0KEEseFtBXS5sZW5ndGgpKSk7dmFyIE89eFtBXS5sZW5ndGg7Zm9yKE09MDtNPChQP01hdGgubWluKE8sVFtBXS5sZW5ndGgpOk8pO00rKylTPVA/VFtBXVtNXTpULEU9eVtBXVtNXSxMPXhbQV1bTV0sbi52YWxpZGF0ZShFLFMpP0whPT1FJiZMIT09K0UmJmEucHVzaChwKCJkeW5hbWljIixpLG0uY29uY2F0KEEsTSksRSxMKSk6YS5wdXNoKHAoInZhbHVlIixpLG0uY29uY2F0KEEsTSksRSkpfWVsc2UgYS5wdXNoKHAoImFycmF5IixpLG0uY29uY2F0KEEpLHlbQV0pKTtlbHNlIGZvcihBPTA7QTxDO0ErKylTPVA/VFtBXTpULEU9eVtBXSxMPXhbQV0sbi52YWxpZGF0ZShFLFMpP0whPT1FJiZMIT09K0UmJmEucHVzaChwKCJkeW5hbWljIixpLG0uY29uY2F0KEEpLEUsTCkpOmEucHVzaChwKCJ2YWx1ZSIsaSxtLmNvbmNhdChBKSxFKSl9ZWxzZSBpZihiLml0ZW1zJiYhdyYmbCh5KSl7dmFyIHosSSxEPVRbT2JqZWN0LmtleXMoVClbMF1dLFI9W107Zm9yKHo9MDt6PHgubGVuZ3RoO3orKyl7dmFyIEY9eFt6XS5faW5kZXh8fHo7aWYoKEk9bS5zbGljZSgpKS5wdXNoKEYpLHMoeVtGXSkmJnMoeFt6XSkpe1IucHVzaChGKTt2YXIgQj15W0ZdLE49eFt6XTtzKEIpJiYhMSE9PUIudmlzaWJsZSYmITE9PT1OLnZpc2libGU/YS5wdXNoKHAoImludmlzaWJsZSIsaSxJKSk6dShCLE4sRCxhLGksSSl9fWZvcih6PTA7ejx5Lmxlbmd0aDt6KyspKEk9bS5zbGljZSgpKS5wdXNoKHopLHMoeVt6XSk/LTE9PT1SLmluZGV4T2YoeikmJmEucHVzaChwKCJ1bnVzZWQiLGksSSkpOmEucHVzaChwKCJvYmplY3QiLGksSSx5W3pdKSl9ZWxzZSFzKHkpJiZzKHgpP2EucHVzaChwKCJvYmplY3QiLGksbSx5KSk6Yyh5KXx8IWMoeCl8fHd8fGs/diBpbiBlP24udmFsaWRhdGUoeSxiKT8iZW51bWVyYXRlZCI9PT1iLnZhbFR5cGUmJihiLmNvZXJjZU51bWJlciYmeSE9PSt4fHx5IT09eCkmJmEucHVzaChwKCJkeW5hbWljIixpLG0seSx4KSk6YS5wdXNoKHAoInZhbHVlIixpLG0seSkpOmEucHVzaChwKCJ1bnVzZWQiLGksbSx5KSk6YS5wdXNoKHAoImFycmF5IixpLG0seSkpO2Vsc2UgYS5wdXNoKHAoInNjaGVtYSIsaSxtKSl9fXJldHVybiBhfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGMsaD1pLmdldCgpLGY9W10sZD17X2NvbnRleHQ6bi5leHRlbmRGbGF0KHt9LG8pfTtsKHQpPyhkLmRhdGE9bi5leHRlbmREZWVwKFtdLHQpLHI9dCk6KGQuZGF0YT1bXSxyPVtdLGYucHVzaChwKCJhcnJheSIsImRhdGEiKSkpLHMoZSk/KGQubGF5b3V0PW4uZXh0ZW5kRGVlcCh7fSxlKSxjPWUpOihkLmxheW91dD17fSxjPXt9LGFyZ3VtZW50cy5sZW5ndGg+MSYmZi5wdXNoKHAoIm9iamVjdCIsImxheW91dCIpKSksYS5zdXBwbHlEZWZhdWx0cyhkKTtmb3IodmFyIGc9ZC5fZnVsbERhdGEsdj1yLmxlbmd0aCxtPTA7bTx2O20rKyl7dmFyIHk9clttXSx4PVsiZGF0YSIsbV07aWYocyh5KSl7dmFyIGI9Z1ttXSxfPWIudHlwZSx3PWgudHJhY2VzW19dLmF0dHJpYnV0ZXM7dy50eXBlPXt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6W19dfSwhMT09PWIudmlzaWJsZSYmITEhPT15LnZpc2libGUmJmYucHVzaChwKCJpbnZpc2libGUiLHgpKSx1KHksYix3LGYseCk7dmFyIGs9eS50cmFuc2Zvcm1zLFQ9Yi50cmFuc2Zvcm1zO2lmKGspe2woayl8fGYucHVzaChwKCJhcnJheSIseCxbInRyYW5zZm9ybXMiXSkpLHgucHVzaCgidHJhbnNmb3JtcyIpO2Zvcih2YXIgTT0wO008ay5sZW5ndGg7TSsrKXt2YXIgQT1bInRyYW5zZm9ybXMiLE1dLFM9a1tNXS50eXBlO2lmKHMoa1tNXSkpe3ZhciBFPWgudHJhbnNmb3Jtc1tTXT9oLnRyYW5zZm9ybXNbU10uYXR0cmlidXRlczp7fTtFLnR5cGU9e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5cyhoLnRyYW5zZm9ybXMpfSx1KGtbTV0sVFtNXSxFLGYseCxBKX1lbHNlIGYucHVzaChwKCJvYmplY3QiLHgsQSkpfX19ZWxzZSBmLnB1c2gocCgib2JqZWN0Iix4KSl9cmV0dXJuIHUoYyxkLl9mdWxsTGF5b3V0LGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGF5b3V0LmxheW91dEF0dHJpYnV0ZXMsYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgaT1lW2FdLG89dC50cmFjZXNbaS50eXBlXSxzPW8ubGF5b3V0QXR0cmlidXRlcztzJiYoaS5zdWJwbG90P24uZXh0ZW5kRmxhdChyW28uYXR0cmlidXRlcy5zdWJwbG90LmRmbHRdLHMpOm4uZXh0ZW5kRmxhdChyLHMpKX1yZXR1cm4gcn0oaCxnKSxmLCJsYXlvdXQiKSwwPT09Zi5sZW5ndGg/dm9pZCAwOmZ9O3ZhciBoPXtvYmplY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4oImxheW91dCI9PT10JiYiIj09PWU/IlRoZSBsYXlvdXQgYXJndW1lbnQiOiJkYXRhIj09PXRbMF0mJiIiPT09ZT8iVHJhY2UgIit0WzFdKyIgaW4gdGhlIGRhdGEgYXJndW1lbnQiOmYodCkrImtleSAiK2UpKyIgbXVzdCBiZSBsaW5rZWQgdG8gYW4gb2JqZWN0IGNvbnRhaW5lciJ9LGFycmF5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuKCJkYXRhIj09PXQ/IlRoZSBkYXRhIGFyZ3VtZW50IjpmKHQpKyJrZXkgIitlKSsiIG11c3QgYmUgbGlua2VkIHRvIGFuIGFycmF5IGNvbnRhaW5lciJ9LHNjaGVtYTpmdW5jdGlvbih0LGUpe3JldHVybiBmKHQpKyJrZXkgIitlKyIgaXMgbm90IHBhcnQgb2YgdGhlIHNjaGVtYSJ9LHVudXNlZDpmdW5jdGlvbih0LGUscil7dmFyIG49cyhyKT8iY29udGFpbmVyIjoia2V5IjtyZXR1cm4gZih0KStuKyIgIitlKyIgZGlkIG5vdCBnZXQgY29lcmNlZCJ9LGR5bmFtaWM6ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuW2YodCkrImtleSIsZSwiKHNldCB0byAnIityKyInKSIsImdvdCByZXNldCB0byIsIiciK24rIiciLCJkdXJpbmcgZGVmYXVsdHMuIl0uam9pbigiICIpfSxpbnZpc2libGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4oZT9mKHQpKyJpdGVtICIrZToiVHJhY2UgIit0WzFdKSsiIGdvdCBkZWZhdWx0ZWQgdG8gYmUgbm90IHZpc2libGUifSx2YWx1ZTpmdW5jdGlvbih0LGUscil7cmV0dXJuW2YodCkrImtleSAiK2UsImlzIHNldCB0byBhbiBpbnZhbGlkIHZhbHVlICgiK3IrIikiXS5qb2luKCIgIil9fTtmdW5jdGlvbiBmKHQpe3JldHVybiBsKHQpPyJJbiBkYXRhIHRyYWNlICIrdFsxXSsiLCAiOiJJbiAiK3QrIiwgIn1mdW5jdGlvbiBwKHQsZSxyLGEsaSl7dmFyIG8scztyPXJ8fCIiLGwoZSk/KG89ZVswXSxzPWVbMV0pOihvPWUscz1udWxsKTt2YXIgYz1mdW5jdGlvbih0KXtpZighbCh0KSlyZXR1cm4gU3RyaW5nKHQpO2Zvcih2YXIgZT0iIixyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07Im51bWJlciI9PXR5cGVvZiBuP2U9ZS5zdWJzdHIoMCxlLmxlbmd0aC0xKSsiWyIrbisiXSI6ZSs9bixyPHQubGVuZ3RoLTEmJihlKz0iLiIpfXJldHVybiBlfShyKSx1PWhbdF0oZSxjLGEsaSk7cmV0dXJuIG4ubG9nKHUpLHtjb2RlOnQsY29udGFpbmVyOm8sdHJhY2U6cyxwYXRoOnIsYXN0cjpjLG1zZzp1fX1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9bShlKSxuPXIua2V5TWludXNJZCxhPXIuaWQ7cmV0dXJuISEobiBpbiB0JiZ0W25dLl9pc1N1YnBsb3RPYmomJmEpfHxlIGluIHR9ZnVuY3Rpb24gZyh0LGUpe3JldHVybiBlIGluIHQ/dFtlXTp0W20oZSkua2V5TWludXNJZF19dmFyIHY9bi5jb3VudGVyUmVnZXgoIihbYS16XSspIik7ZnVuY3Rpb24gbSh0KXt2YXIgZT10Lm1hdGNoKHYpO3JldHVybntrZXlNaW51c0lkOmUmJmVbMV0saWQ6ZSYmZVsyXX19fSx7Ii4uL2xpYiI6NzE3LCIuLi9wbG90cy9wbG90cyI6ODI2LCIuL3Bsb3RfY29uZmlnIjo3NTMsIi4vcGxvdF9zY2hlbWEiOjc1NH1dLDc2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGRmbHQ6ImFmdGVyYWxsIix2YWx1ZXM6WyJpbW1lZGlhdGUiLCJuZXh0IiwiYWZ0ZXJhbGwiXX0sZGlyZWN0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmb3J3YXJkIiwicmV2ZXJzZSJdLGRmbHQ6ImZvcndhcmQifSxmcm9tY3VycmVudDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sZnJhbWU6e2R1cmF0aW9uOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6NTAwfSxyZWRyYXc6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9fSx0cmFuc2l0aW9uOntkdXJhdGlvbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjUwMCxlZGl0VHlwZToibm9uZSJ9LGVhc2luZzp7dmFsVHlwZToiZW51bWVyYXRlZCIsZGZsdDoiY3ViaWMtaW4tb3V0Iix2YWx1ZXM6WyJsaW5lYXIiLCJxdWFkIiwiY3ViaWMiLCJzaW4iLCJleHAiLCJjaXJjbGUiLCJlbGFzdGljIiwiYmFjayIsImJvdW5jZSIsImxpbmVhci1pbiIsInF1YWQtaW4iLCJjdWJpYy1pbiIsInNpbi1pbiIsImV4cC1pbiIsImNpcmNsZS1pbiIsImVsYXN0aWMtaW4iLCJiYWNrLWluIiwiYm91bmNlLWluIiwibGluZWFyLW91dCIsInF1YWQtb3V0IiwiY3ViaWMtb3V0Iiwic2luLW91dCIsImV4cC1vdXQiLCJjaXJjbGUtb3V0IiwiZWxhc3RpYy1vdXQiLCJiYWNrLW91dCIsImJvdW5jZS1vdXQiLCJsaW5lYXItaW4tb3V0IiwicXVhZC1pbi1vdXQiLCJjdWJpYy1pbi1vdXQiLCJzaW4taW4tb3V0IiwiZXhwLWluLW91dCIsImNpcmNsZS1pbi1vdXQiLCJlbGFzdGljLWluLW91dCIsImJhY2staW4tb3V0IiwiYm91bmNlLWluLW91dCJdLGVkaXRUeXBlOiJub25lIn0sb3JkZXJpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxheW91dCBmaXJzdCIsInRyYWNlcyBmaXJzdCJdLGRmbHQ6ImxheW91dCBmaXJzdCIsZWRpdFR5cGU6Im5vbmUifX19fSx7fV0sNzYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGE9dCgiLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGksbyxzPXIubmFtZSxsPXIuaW5jbHVzaW9uQXR0cnx8InZpc2libGUiLGM9ZVtzXSx1PW4uaXNBcnJheU9yVHlwZWRBcnJheSh0W3NdKT90W3NdOltdLGg9ZVtzXT1bXSxmPWEuYXJyYXlUZW1wbGF0ZXIoZSxzLGwpO2ZvcihpPTA7aTx1Lmxlbmd0aDtpKyspe3ZhciBwPXVbaV07bi5pc1BsYWluT2JqZWN0KHApP289Zi5uZXdJdGVtKHApOihvPWYubmV3SXRlbSh7fSkpW2xdPSExLG8uX2luZGV4PWksITEhPT1vW2xdJiZyLmhhbmRsZUl0ZW1EZWZhdWx0cyhwLG8sZSxyKSxoLnB1c2gobyl9dmFyIGQ9Zi5kZWZhdWx0SXRlbXMoKTtmb3IoaT0wO2k8ZC5sZW5ndGg7aSsrKShvPWRbaV0pLl9pbmRleD1oLmxlbmd0aCxyLmhhbmRsZUl0ZW1EZWZhdWx0cyh7fSxvLGUscix7fSksaC5wdXNoKG8pO2lmKG4uaXNBcnJheU9yVHlwZWRBcnJheShjKSl7dmFyIGc9TWF0aC5taW4oYy5sZW5ndGgsaC5sZW5ndGgpO2ZvcihpPTA7aTxnO2krKyluLnJlbGlua1ByaXZhdGVLZXlzKGhbaV0sY1tpXSl9cmV0dXJuIGh9fSx7Ii4uL2xpYiI6NzE3LCIuLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTV9XSw3NjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vY29tcG9uZW50cy9meC9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPXt0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6W10sZGZsdDoic2NhdHRlciIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMiLF9ub1RlbXBsYXRpbmc6ITB9LHZpc2libGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITAsITEsImxlZ2VuZG9ubHkiXSxkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sc2hvd2xlZ2VuZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToic3R5bGUifSxsZWdlbmRncm91cDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJzdHlsZSJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxLGVkaXRUeXBlOiJzdHlsZSJ9LG5hbWU6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6InN0eWxlIn0sdWlkOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJwbG90IixhbmltOiEwfSxpZHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIixhbmltOiEwfSxjdXN0b21kYXRhOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LG1ldGE6e3ZhbFR5cGU6ImFueSIsYXJyYXlPazohMCxlZGl0VHlwZToicGxvdCJ9LHNlbGVjdGVkcG9pbnRzOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJpbmZvOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJ4IiwieSIsInoiLCJ0ZXh0IiwibmFtZSJdLGV4dHJhczpbImFsbCIsIm5vbmUiLCJza2lwIl0sYXJyYXlPazohMCxkZmx0OiJhbGwiLGVkaXRUeXBlOiJub25lIn0saG92ZXJsYWJlbDpuLmhvdmVybGFiZWwsc3RyZWFtOnt0b2tlbjp7dmFsVHlwZToic3RyaW5nIixub0JsYW5rOiEwLHN0cmljdDohMCxlZGl0VHlwZToiY2FsYyJ9LG1heHBvaW50czp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MWU0LGRmbHQ6NTAwLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSx0cmFuc2Zvcm1zOntfaXNMaW5rZWRUb0FycmF5OiJ0cmFuc2Zvcm0iLGVkaXRUeXBlOiJjYWxjIn0sdWlyZXZpc2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9fX0seyIuLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiOjYyMn1dLDc2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3hheGlzOnt2YWxUeXBlOiJzdWJwbG90aWQiLGRmbHQ6IngiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0seWF4aXM6e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDoieSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifX19LHt9XSw3NjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkZQX1NBRkUsbz10KCIuLi8uLi9yZWdpc3RyeSIpO2Z1bmN0aW9uIHModCxlKXt2YXIgcixuLGk9W10sbz1sKGUpLHM9Yyh0LGUpLHU9cy5taW4saD1zLm1heDtpZigwPT09dS5sZW5ndGh8fDA9PT1oLmxlbmd0aClyZXR1cm4gYS5zaW1wbGVNYXAoZS5yYW5nZSxlLnIybCk7dmFyIGY9dVswXS52YWwscD1oWzBdLnZhbDtmb3Iocj0xO3I8dS5sZW5ndGgmJmY9PT1wO3IrKylmPU1hdGgubWluKGYsdVtyXS52YWwpO2ZvcihyPTE7cjxoLmxlbmd0aCYmZj09PXA7cisrKXA9TWF0aC5tYXgocCxoW3JdLnZhbCk7dmFyIGQ9ITE7aWYoZS5yYW5nZSl7dmFyIGc9YS5zaW1wbGVNYXAoZS5yYW5nZSxlLnIybCk7ZD1nWzFdPGdbMF19InJldmVyc2VkIj09PWUuYXV0b3JhbmdlJiYoZD0hMCxlLmF1dG9yYW5nZT0hMCk7dmFyIHYsbSx5LHgsYixfLHc9ZS5yYW5nZW1vZGUsaz0idG96ZXJvIj09PXcsVD0ibm9ubmVnYXRpdmUiPT09dyxNPWUuX2xlbmd0aCxBPU0vMTAsUz0wO2ZvcihyPTA7cjx1Lmxlbmd0aDtyKyspZm9yKHY9dVtyXSxuPTA7bjxoLmxlbmd0aDtuKyspKF89KG09aFtuXSkudmFsLXYudmFsKT4wJiYoKGI9TS1vKHYpLW8obSkpPkE/Xy9iPlMmJih5PXYseD1tLFM9Xy9iKTpfL00+UyYmKHk9e3ZhbDp2LnZhbCxwYWQ6MH0seD17dmFsOm0udmFsLHBhZDowfSxTPV8vTSkpO2lmKGY9PT1wKXt2YXIgRT1mLTEsTD1mKzE7aWYoaylpZigwPT09ZilpPVswLDFdO2Vsc2V7dmFyIEM9KGY+MD9oOnUpLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LG8oZSkpfSwwKSxQPWYvKDEtTWF0aC5taW4oLjUsQy9NKSk7aT1mPjA/WzAsUF06W1AsMF19ZWxzZSBpPVQ/W01hdGgubWF4KDAsRSksTWF0aC5tYXgoMSxMKV06W0UsTF19ZWxzZSBrPyh5LnZhbD49MCYmKHk9e3ZhbDowLHBhZDowfSkseC52YWw8PTAmJih4PXt2YWw6MCxwYWQ6MH0pKTpUJiYoeS52YWwtUypvKHkpPDAmJih5PXt2YWw6MCxwYWQ6MH0pLHgudmFsPD0wJiYoeD17dmFsOjEscGFkOjB9KSksUz0oeC52YWwteS52YWwpLyhNLW8oeSktbyh4KSksaT1beS52YWwtUypvKHkpLHgudmFsK1Mqbyh4KV07cmV0dXJuIGQmJmkucmV2ZXJzZSgpLGEuc2ltcGxlTWFwKGksZS5sMnJ8fE51bWJlcil9ZnVuY3Rpb24gbCh0KXt2YXIgZT10Ll9sZW5ndGgvMjA7cmV0dXJuImRvbWFpbiI9PT10LmNvbnN0cmFpbiYmdC5faW5wdXREb21haW4mJihlKj0odC5faW5wdXREb21haW5bMV0tdC5faW5wdXREb21haW5bMF0pLyh0LmRvbWFpblsxXS10LmRvbWFpblswXSkpLGZ1bmN0aW9uKHQpe3JldHVybiB0LnBhZCsodC5leHRyYXBhZD9lOjApfX1mdW5jdGlvbiBjKHQsZSl7dmFyIHIsbixhLGk9ZS5faWQsbz10Ll9mdWxsRGF0YSxzPXQuX2Z1bGxMYXlvdXQsbD1bXSxjPVtdO2Z1bmN0aW9uIGYodCxlKXtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz10W2Vbcl1dLHM9KG8uX2V4dHJlbWVzfHx7fSlbaV07aWYoITA9PT1vLnZpc2libGUmJnMpe2ZvcihuPTA7bjxzLm1pbi5sZW5ndGg7bisrKWE9cy5taW5bbl0sdShsLGEudmFsLGEucGFkLHtleHRyYXBhZDphLmV4dHJhcGFkfSk7Zm9yKG49MDtuPHMubWF4Lmxlbmd0aDtuKyspYT1zLm1heFtuXSxoKGMsYS52YWwsYS5wYWQse2V4dHJhcGFkOmEuZXh0cmFwYWR9KX19fXJldHVybiBmKG8sZS5fdHJhY2VJbmRpY2VzKSxmKHMuYW5ub3RhdGlvbnN8fFtdLGUuX2FubkluZGljZXN8fFtdKSxmKHMuc2hhcGVzfHxbXSxlLl9zaGFwZUluZGljZXN8fFtdKSx7bWluOmwsbWF4OmN9fWZ1bmN0aW9uIHUodCxlLHIsbil7Zih0LGUscixuLGQpfWZ1bmN0aW9uIGgodCxlLHIsbil7Zih0LGUscixuLGcpfWZ1bmN0aW9uIGYodCxlLHIsbixhKXtmb3IodmFyIGk9bi50b3plcm8sbz1uLmV4dHJhcGFkLHM9ITAsbD0wO2w8dC5sZW5ndGgmJnM7bCsrKXt2YXIgYz10W2xdO2lmKGEoYy52YWwsZSkmJmMucGFkPj1yJiYoYy5leHRyYXBhZHx8IW8pKXtzPSExO2JyZWFrfWEoZSxjLnZhbCkmJmMucGFkPD1yJiYob3x8IWMuZXh0cmFwYWQpJiYodC5zcGxpY2UobCwxKSxsLS0pfWlmKHMpe3ZhciB1PWkmJjA9PT1lO3QucHVzaCh7dmFsOmUscGFkOnU/MDpyLGV4dHJhcGFkOiF1JiZvfSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIG4odCkmJk1hdGguYWJzKHQpPGl9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiB0PD1lfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdD49ZX1lLmV4cG9ydHM9e2dldEF1dG9SYW5nZTpzLG1ha2VQYWRGbjpsLGRvQXV0b1JhbmdlOmZ1bmN0aW9uKHQsZSl7aWYoZS5zZXRTY2FsZSgpLGUuYXV0b3JhbmdlKXtlLnJhbmdlPXModCxlKSxlLl9yPWUucmFuZ2Uuc2xpY2UoKSxlLl9ybD1hLnNpbXBsZU1hcChlLl9yLGUucjJsKTt2YXIgcj1lLl9pbnB1dCxuPXt9O25bZS5fYXR0cisiLnJhbmdlIl09ZS5yYW5nZSxuW2UuX2F0dHIrIi5hdXRvcmFuZ2UiXT1lLmF1dG9yYW5nZSxvLmNhbGwoIl9zdG9yZURpcmVjdEdVSUVkaXQiLHQubGF5b3V0LHQuX2Z1bGxMYXlvdXQuX3ByZUdVSSxuKSxyLnJhbmdlPWUucmFuZ2Uuc2xpY2UoKSxyLmF1dG9yYW5nZT1lLmF1dG9yYW5nZX12YXIgaT1lLl9hbmNob3JBeGlzO2lmKGkmJmkucmFuZ2VzbGlkZXIpe3ZhciBsPWkucmFuZ2VzbGlkZXJbZS5fbmFtZV07bCYmImF1dG8iPT09bC5yYW5nZW1vZGUmJihsLnJhbmdlPXModCxlKSksaS5faW5wdXQucmFuZ2VzbGlkZXJbZS5fbmFtZV09YS5leHRlbmRGbGF0KHt9LGwpfX0sZmluZEV4dHJlbWVzOmZ1bmN0aW9uKHQsZSxyKXtyfHwocj17fSk7dC5fbXx8dC5zZXRTY2FsZSgpO3ZhciBhLG8scyxsLGMsZixkLGcsdixtPVtdLHk9W10seD1lLmxlbmd0aCxiPXIucGFkZGVkfHwhMSxfPXIudG96ZXJvJiYoImxpbmVhciI9PT10LnR5cGV8fCItIj09PXQudHlwZSksdz0ibG9nIj09PXQudHlwZSxrPSExLFQ9ci52cGFkTGluZWFyaXplZHx8ITE7ZnVuY3Rpb24gTSh0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBrPSEwLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heChOdW1iZXIodFtlXXx8MCksMCl9O3ZhciBlPU1hdGgubWF4KE51bWJlcih0fHwwKSwwKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIEE9TSgodC5fbT4wP3IucHBhZHBsdXM6ci5wcGFkbWludXMpfHxyLnBwYWR8fDApLFM9TSgodC5fbT4wP3IucHBhZG1pbnVzOnIucHBhZHBsdXMpfHxyLnBwYWR8fDApLEU9TShyLnZwYWRwbHVzfHxyLnZwYWQpLEw9TShyLnZwYWRtaW51c3x8ci52cGFkKTtpZighayl7aWYoZz0xLzAsdj0tMS8wLHcpZm9yKGE9MDthPHg7YSsrKShvPWVbYV0pPGcmJm8+MCYmKGc9byksbz52JiZvPGkmJih2PW8pO2Vsc2UgZm9yKGE9MDthPHg7YSsrKShvPWVbYV0pPGcmJm8+LWkmJihnPW8pLG8+diYmbzxpJiYodj1vKTtlPVtnLHZdLHg9Mn12YXIgQz17dG96ZXJvOl8sZXh0cmFwYWQ6Yn07ZnVuY3Rpb24gUChyKXtzPWVbcl0sbihzKSYmKGY9QShyKSxkPVMociksVD8obD10LmMybChzKS1MKHIpLGM9dC5jMmwocykrRShyKSk6KGc9cy1MKHIpLHY9cytFKHIpLHcmJmc8di8xMCYmKGc9di8xMCksbD10LmMybChnKSxjPXQuYzJsKHYpKSxfJiYobD1NYXRoLm1pbigwLGwpLGM9TWF0aC5tYXgoMCxjKSkscChsKSYmdShtLGwsZCxDKSxwKGMpJiZoKHksYyxmLEMpKX12YXIgTz1NYXRoLm1pbig2LHgpO2ZvcihhPTA7YTxPO2ErKylQKGEpO2ZvcihhPXgtMTthPj1PO2EtLSlQKGEpO3JldHVybnttaW46bSxtYXg6eSxvcHRzOnJ9fSxjb25jYXRFeHRyZW1lczpjfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sNzY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGM9dCgiLi4vLi4vY29tcG9uZW50cy90aXRsZXMiKSx1PXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxoPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGY9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHA9dCgiLi9jbGVhbl90aWNrcyIpLGQ9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLGc9ZC5PTkVBVkdZRUFSLHY9ZC5PTkVBVkdNT05USCxtPWQuT05FREFZLHk9ZC5PTkVIT1VSLHg9ZC5PTkVNSU4sYj1kLk9ORVNFQyxfPWQuTUlOVVNfU0lHTix3PWQuQkFETlVNLGs9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLFQ9ay5NSURfU0hJRlQsTT1rLkNBUF9TSElGVCxBPWsuTElORV9TUEFDSU5HLFM9ay5PUFBPU0lURV9TSURFLEU9ZS5leHBvcnRzPXt9O0Uuc2V0Q29udmVydD10KCIuL3NldF9jb252ZXJ0Iik7dmFyIEw9dCgiLi9heGlzX2F1dG90eXBlIiksQz10KCIuL2F4aXNfaWRzIik7RS5pZDJuYW1lPUMuaWQybmFtZSxFLm5hbWUyaWQ9Qy5uYW1lMmlkLEUuY2xlYW5JZD1DLmNsZWFuSWQsRS5saXN0PUMubGlzdCxFLmxpc3RJZHM9Qy5saXN0SWRzLEUuZ2V0RnJvbUlkPUMuZ2V0RnJvbUlkLEUuZ2V0RnJvbVRyYWNlPUMuZ2V0RnJvbVRyYWNlO3ZhciBQPXQoIi4vYXV0b3JhbmdlIik7RS5nZXRBdXRvUmFuZ2U9UC5nZXRBdXRvUmFuZ2UsRS5maW5kRXh0cmVtZXM9UC5maW5kRXh0cmVtZXMsRS5jb2VyY2VSZWY9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvPW4uY2hhckF0KG4ubGVuZ3RoLTEpLGw9ci5fZnVsbExheW91dC5fc3VicGxvdHNbbysiYXhpcyJdLGM9bisicmVmIix1PXt9O3JldHVybiBhfHwoYT1sWzBdfHxpKSxpfHwoaT1hKSx1W2NdPXt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6bC5jb25jYXQoaT9baV06W10pLGRmbHQ6YX0scy5jb2VyY2UodCxlLHUsYyl9LEUuY29lcmNlUG9zaXRpb249ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvLGw7aWYoInBhcGVyIj09PW58fCJwaXhlbCI9PT1uKW89cy5lbnN1cmVOdW1iZXIsbD1yKGEsaSk7ZWxzZXt2YXIgYz1FLmdldEZyb21JZChlLG4pO2w9cihhLGk9Yy5mcmFjdGlvbjJyKGkpKSxvPWMuY2xlYW5Qb3N9dFthXT1vKGwpfSxFLmNsZWFuUG9zaXRpb249ZnVuY3Rpb24odCxlLHIpe3JldHVybigicGFwZXIiPT09cnx8InBpeGVsIj09PXI/cy5lbnN1cmVOdW1iZXI6RS5nZXRGcm9tSWQoZSxyKS5jbGVhblBvcykodCl9LEUucmVkcmF3Q29tcG9uZW50cz1mdW5jdGlvbih0LGUpe2U9ZXx8RS5saXN0SWRzKHQpO3ZhciByPXQuX2Z1bGxMYXlvdXQ7ZnVuY3Rpb24gbihuLGEsaSxzKXtmb3IodmFyIGw9by5nZXRDb21wb25lbnRNZXRob2QobixhKSxjPXt9LHU9MDt1PGUubGVuZ3RoO3UrKylmb3IodmFyIGg9cltFLmlkMm5hbWUoZVt1XSldW2ldLGY9MDtmPGgubGVuZ3RoO2YrKyl7dmFyIHA9aFtmXTtpZighY1twXSYmKGwodCxwKSxjW3BdPTEscykpcmV0dXJufX1uKCJhbm5vdGF0aW9ucyIsImRyYXdPbmUiLCJfYW5uSW5kaWNlcyIpLG4oInNoYXBlcyIsImRyYXdPbmUiLCJfc2hhcGVJbmRpY2VzIiksbigiaW1hZ2VzIiwiZHJhdyIsIl9pbWdJbmRpY2VzIiwhMCl9O3ZhciBPPUUuZ2V0RGF0YUNvbnZlcnNpb25zPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGk9IngiPT09cnx8InkiPT09cnx8InoiPT09cj9yOm47aWYoQXJyYXkuaXNBcnJheShpKSl7aWYoYT17dHlwZTpMKG4pLF9jYXRlZ29yaWVzOltdfSxFLnNldENvbnZlcnQoYSksImNhdGVnb3J5Ij09PWEudHlwZSlmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylhLmQyYyhuW29dKX1lbHNlIGE9RS5nZXRGcm9tVHJhY2UodCxlLGkpO3JldHVybiBhP3tkMmM6YS5kMmMsYzJkOmEuYzJkfToiaWRzIj09PWk/e2QyYzpJLGMyZDpJfTp7ZDJjOnosYzJkOnp9fTtmdW5jdGlvbiB6KHQpe3JldHVybit0fWZ1bmN0aW9uIEkodCl7cmV0dXJuIFN0cmluZyh0KX1FLmdldERhdGFUb0Nvb3JkRnVuYz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gTyh0LGUscixuKS5kMmN9LEUuY291bnRlckxldHRlcj1mdW5jdGlvbih0KXt2YXIgZT10LmNoYXJBdCgwKTtyZXR1cm4ieCI9PT1lPyJ5IjoieSI9PT1lPyJ4Ijp2b2lkIDB9LEUubWluRHRpY2s9ZnVuY3Rpb24odCxlLHIsbil7LTE9PT1bImxvZyIsImNhdGVnb3J5IiwibXVsdGljYXRlZ29yeSJdLmluZGV4T2YodC50eXBlKSYmbj92b2lkIDA9PT10Ll9taW5EdGljaz8odC5fbWluRHRpY2s9ZSx0Ll9mb3JjZVRpY2swPXIpOnQuX21pbkR0aWNrJiYoKHQuX21pbkR0aWNrL2UrMWUtNiklMTwyZS02JiYoKHItdC5fZm9yY2VUaWNrMCkvZSUxKzEuMDAwMDAxKSUxPDJlLTY/KHQuX21pbkR0aWNrPWUsdC5fZm9yY2VUaWNrMD1yKTooKGUvdC5fbWluRHRpY2srMWUtNiklMT4yZS02fHwoKHItdC5fZm9yY2VUaWNrMCkvdC5fbWluRHRpY2slMSsxLjAwMDAwMSklMT4yZS02KSYmKHQuX21pbkR0aWNrPTApKTp0Ll9taW5EdGljaz0wfSxFLnNhdmVSYW5nZUluaXRpYWw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9RS5saXN0KHQsIiIsITApLG49ITEsYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgaT1yW2FdLG89dm9pZCAwPT09aS5fcmFuZ2VJbml0aWFsLHM9b3x8IShpLnJhbmdlWzBdPT09aS5fcmFuZ2VJbml0aWFsWzBdJiZpLnJhbmdlWzFdPT09aS5fcmFuZ2VJbml0aWFsWzFdKTsobyYmITE9PT1pLmF1dG9yYW5nZXx8ZSYmcykmJihpLl9yYW5nZUluaXRpYWw9aS5yYW5nZS5zbGljZSgpLG49ITApfXJldHVybiBufSxFLnNhdmVTaG93U3Bpa2VJbml0aWFsPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPUUubGlzdCh0LCIiLCEwKSxuPSExLGE9Im9uIixpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV0scz12b2lkIDA9PT1vLl9zaG93U3Bpa2VJbml0aWFsLGw9c3x8IShvLnNob3dzcGlrZXM9PT1vLl9zaG93c3Bpa2VzKTsoc3x8ZSYmbCkmJihvLl9zaG93U3Bpa2VJbml0aWFsPW8uc2hvd3NwaWtlcyxuPSEwKSwib24iIT09YXx8by5zaG93c3Bpa2VzfHwoYT0ib2ZmIil9cmV0dXJuIHQuX2Z1bGxMYXlvdXQuX2NhcnRlc2lhblNwaWtlc0VuYWJsZWQ9YSxufSxFLmF1dG9CaW49ZnVuY3Rpb24odCxlLHIsbixpLG8pe3ZhciBsLGM9cy5hZ2dOdW1zKE1hdGgubWluLG51bGwsdCksdT1zLmFnZ051bXMoTWF0aC5tYXgsbnVsbCx0KTtpZigiY2F0ZWdvcnkiPT09ZS50eXBlfHwibXVsdGljYXRlZ29yeSI9PT1lLnR5cGUpcmV0dXJue3N0YXJ0OmMtLjUsZW5kOnUrLjUsc2l6ZTpNYXRoLm1heCgxLE1hdGgucm91bmQobyl8fDEpLF9kYXRhU3Bhbjp1LWN9O2lmKGl8fChpPWUuY2FsZW5kYXIpLGw9ImxvZyI9PT1lLnR5cGU/e3R5cGU6ImxpbmVhciIscmFuZ2U6W2MsdV19Ont0eXBlOmUudHlwZSxyYW5nZTpzLnNpbXBsZU1hcChbYyx1XSxlLmMyciwwLGkpLGNhbGVuZGFyOml9LEUuc2V0Q29udmVydChsKSxvPW8mJnAuZHRpY2sobyxsLnR5cGUpKWwuZHRpY2s9byxsLnRpY2swPXAudGljazAodm9pZCAwLGwudHlwZSxpKTtlbHNle3ZhciBoO2lmKHIpaD0odS1jKS9yO2Vsc2V7dmFyIGY9cy5kaXN0aW5jdFZhbHModCksZD1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGYubWluRGlmZikvTWF0aC5MTjEwKSksZz1kKnMucm91bmRVcChmLm1pbkRpZmYvZCxbLjksMS45LDQuOSw5LjldLCEwKTtoPU1hdGgubWF4KGcsMipzLnN0ZGV2KHQpL01hdGgucG93KHQubGVuZ3RoLG4/LjI1Oi40KSksYShoKXx8KGg9MSl9RS5hdXRvVGlja3MobCxoKX12YXIgdix5PWwuZHRpY2sseD1FLnRpY2tJbmNyZW1lbnQoRS50aWNrRmlyc3QobCkseSwicmV2ZXJzZSIsaSk7aWYoIm51bWJlciI9PXR5cGVvZiB5KXY9KHg9ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgbz0wLHM9MCxsPTAsYz0wO2Z1bmN0aW9uIHUoZSl7cmV0dXJuKDErMTAwKihlLXQpL3IuZHRpY2spJTEwMDwyfWZvcih2YXIgaD0wO2g8ZS5sZW5ndGg7aCsrKWVbaF0lMT09MD9sKys6YShlW2hdKXx8YysrLHUoZVtoXSkmJm8rKyx1KGVbaF0rci5kdGljay8yKSYmcysrO3ZhciBmPWUubGVuZ3RoLWM7aWYobD09PWYmJiJkYXRlIiE9PXIudHlwZSlyLmR0aWNrPDE/dD1uLS41KnIuZHRpY2s6KHQtPS41KStyLmR0aWNrPG4mJih0Kz1yLmR0aWNrKTtlbHNlIGlmKHM8LjEqZiYmKG8+LjMqZnx8dShuKXx8dShpKSkpe3ZhciBwPXIuZHRpY2svMjt0Kz10K3A8bj9wOi1wfXJldHVybiB0fSh4LHQsbCxjLHUpKSsoMStNYXRoLmZsb29yKCh1LXgpL3kpKSp5O2Vsc2UgZm9yKCJNIj09PWwuZHRpY2suY2hhckF0KDApJiYoeD1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPXMuZmluZEV4YWN0RGF0ZXMoZSxhKTtpZihpLmV4YWN0RGF5cz4uOCl7dmFyIG89TnVtYmVyKHIuc3Vic3RyKDEpKTtpLmV4YWN0WWVhcnM+LjgmJm8lMTI9PTA/dD1FLnRpY2tJbmNyZW1lbnQodCwiTTYiLCJyZXZlcnNlIikrMS41Km06aS5leGFjdE1vbnRocz4uOD90PUUudGlja0luY3JlbWVudCh0LCJNMSIsInJldmVyc2UiKSsxNS41Km06dC09bS8yO3ZhciBsPUUudGlja0luY3JlbWVudCh0LHIpO2lmKGw8PW4pcmV0dXJuIGx9cmV0dXJuIHR9KHgsdCx5LGMsaSkpLHY9eCwwO3Y8PXU7KXY9RS50aWNrSW5jcmVtZW50KHYseSwhMSxpKSwwO3JldHVybntzdGFydDplLmMycih4LDAsaSksZW5kOmUuYzJyKHYsMCxpKSxzaXplOnksX2RhdGFTcGFuOnUtY319LEUucHJlcFRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBlPXMuc2ltcGxlTWFwKHQucmFuZ2UsdC5yMmwpO2lmKCJhdXRvIj09PXQudGlja21vZGV8fCF0LmR0aWNrKXt2YXIgcixuPXQubnRpY2tzO258fCgiY2F0ZWdvcnkiPT09dC50eXBlfHwibXVsdGljYXRlZ29yeSI9PT10LnR5cGU/KHI9dC50aWNrZm9udD8xLjIqKHQudGlja2ZvbnQuc2l6ZXx8MTIpOjE1LG49dC5fbGVuZ3RoL3IpOihyPSJ5Ij09PXQuX2lkLmNoYXJBdCgwKT80MDo4MCxuPXMuY29uc3RyYWluKHQuX2xlbmd0aC9yLDQsOSkrMSksInJhZGlhbGF4aXMiPT09dC5fbmFtZSYmKG4qPTIpKSwiYXJyYXkiPT09dC50aWNrbW9kZSYmKG4qPTEwMCksRS5hdXRvVGlja3ModCxNYXRoLmFicyhlWzFdLWVbMF0pL24pLHQuX21pbkR0aWNrPjAmJnQuZHRpY2s8Mip0Ll9taW5EdGljayYmKHQuZHRpY2s9dC5fbWluRHRpY2ssdC50aWNrMD10Lmwycih0Ll9mb3JjZVRpY2swKSl9dC50aWNrMHx8KHQudGljazA9ImRhdGUiPT09dC50eXBlPyIyMDAwLTAxLTAxIjowKSwiZGF0ZSI9PT10LnR5cGUmJnQuZHRpY2s8LjEmJih0LmR0aWNrPS4xKSxxKHQpfSxFLmNhbGNUaWNrcz1mdW5jdGlvbih0KXtFLnByZXBUaWNrcyh0KTt2YXIgZT1zLnNpbXBsZU1hcCh0LnJhbmdlLHQucjJsKTtpZigiYXJyYXkiPT09dC50aWNrbW9kZSlyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC50aWNrdmFscyxyPXQudGlja3RleHQsbj1uZXcgQXJyYXkoZS5sZW5ndGgpLGE9cy5zaW1wbGVNYXAodC5yYW5nZSx0LnIybCksaT0xLjAwMDEqYVswXS0xZS00KmFbMV0sbz0xLjAwMDEqYVsxXS0xZS00KmFbMF0sbD1NYXRoLm1pbihpLG8pLGM9TWF0aC5tYXgoaSxvKSx1PTA7QXJyYXkuaXNBcnJheShyKXx8KHI9W10pO3ZhciBoPSJjYXRlZ29yeSI9PT10LnR5cGU/dC5kMmxfbm9hZGQ6dC5kMmw7ImxvZyI9PT10LnR5cGUmJiJMIiE9PVN0cmluZyh0LmR0aWNrKS5jaGFyQXQoMCkmJih0LmR0aWNrPSJMIitNYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubWluKHQucmFuZ2VbMF0sdC5yYW5nZVsxXSkpLTEpKTtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIHA9aChlW2ZdKTtwPmwmJnA8YyYmKHZvaWQgMD09PXJbZl0/blt1XT1FLnRpY2tUZXh0KHQscCk6blt1XT1IKHQscCxTdHJpbmcocltmXSkpLHUrKyl9dTxlLmxlbmd0aCYmbi5zcGxpY2UodSxlLmxlbmd0aC11KTtyZXR1cm4gbn0odCk7dC5fdG1pbj1FLnRpY2tGaXJzdCh0KTt2YXIgcj0xLjAwMDEqZVswXS0xZS00KmVbMV0sbj0xLjAwMDEqZVsxXS0xZS00KmVbMF0saT1lWzFdPGVbMF07aWYodC5fdG1pbjxyIT09aSlyZXR1cm5bXTt2YXIgbz1bXTsiY2F0ZWdvcnkiIT09dC50eXBlJiYibXVsdGljYXRlZ29yeSIhPT10LnR5cGV8fChuPWk/TWF0aC5tYXgoLS41LG4pOk1hdGgubWluKHQuX2NhdGVnb3JpZXMubGVuZ3RoLS41LG4pKTtmb3IodmFyIGw9ImxvZyI9PT10LnR5cGUmJiEoYSh0LmR0aWNrKXx8IkwiPT09dC5kdGljay5jaGFyQXQoMCkpLGM9bnVsbCx1PU1hdGgubWF4KDFlMyx0Ll9sZW5ndGh8fDApLGg9dC5fdG1pbjsoaT9oPj1uOmg8PW4pJiYhKG8ubGVuZ3RoPnV8fGg9PT1jKTtoPUUudGlja0luY3JlbWVudChoLHQuZHRpY2ssaSx0LmNhbGVuZGFyKSl7Yz1oO3ZhciBmPSExO2wmJmghPT0oMHxoKSYmKGY9ITApLG8ucHVzaCh7bWlub3I6Zix2YWx1ZTpofSl9b3QodCkmJjM2MD09PU1hdGguYWJzKGVbMV0tZVswXSkmJm8ucG9wKCksdC5fdG1heD0ob1tvLmxlbmd0aC0xXXx8e30pLnZhbHVlLHQuX3ByZXZEYXRlSGVhZD0iIix0Ll9pbkNhbGNUaWNrcz0hMDtmb3IodmFyIHA9bmV3IEFycmF5KG8ubGVuZ3RoKSxkPTA7ZDxvLmxlbmd0aDtkKyspcFtkXT1FLnRpY2tUZXh0KHQsb1tkXS52YWx1ZSwhMSxvW2RdLm1pbm9yKTtyZXR1cm4gdC5faW5DYWxjVGlja3M9ITEscH07dmFyIEQ9WzIsNSwxMF0sUj1bMSwyLDMsNiwxMl0sRj1bMSwyLDUsMTAsMTUsMzBdLEI9WzEsMiwzLDcsMTRdLE49Wy0uMDQ2LDAsLjMwMSwuNDc3LC42MDIsLjY5OSwuNzc4LC44NDUsLjkwMywuOTU0LDFdLGo9Wy0uMzAxLDAsLjMwMSwuNjk5LDFdLFY9WzE1LDMwLDQ1LDkwLDE4MF07ZnVuY3Rpb24gVSh0LGUscil7cmV0dXJuIGUqcy5yb3VuZFVwKHQvZSxyKX1mdW5jdGlvbiBxKHQpe3ZhciBlPXQuZHRpY2s7aWYodC5fdGlja2V4cG9uZW50PTAsYShlKXx8InN0cmluZyI9PXR5cGVvZiBlfHwoZT0xKSwiY2F0ZWdvcnkiIT09dC50eXBlJiYibXVsdGljYXRlZ29yeSIhPT10LnR5cGV8fCh0Ll90aWNrcm91bmQ9bnVsbCksImRhdGUiPT09dC50eXBlKXt2YXIgcj10LnIybCh0LnRpY2swKSxuPXQubDJyKHIpLnJlcGxhY2UoLyheLXxpKS9nLCIiKSxpPW4ubGVuZ3RoO2lmKCJNIj09PVN0cmluZyhlKS5jaGFyQXQoMCkpaT4xMHx8IjAxLTAxIiE9PW4uc3Vic3RyKDUpP3QuX3RpY2tyb3VuZD0iZCI6dC5fdGlja3JvdW5kPStlLnN1YnN0cigxKSUxMj09MD8ieSI6Im0iO2Vsc2UgaWYoZT49bSYmaTw9MTB8fGU+PTE1Km0pdC5fdGlja3JvdW5kPSJkIjtlbHNlIGlmKGU+PXgmJmk8PTE2fHxlPj15KXQuX3RpY2tyb3VuZD0iTSI7ZWxzZSBpZihlPj1iJiZpPD0xOXx8ZT49eCl0Ll90aWNrcm91bmQ9IlMiO2Vsc2V7dmFyIG89dC5sMnIocitlKS5yZXBsYWNlKC9eLS8sIiIpLmxlbmd0aDt0Ll90aWNrcm91bmQ9TWF0aC5tYXgoaSxvKS0yMCx0Ll90aWNrcm91bmQ8MCYmKHQuX3RpY2tyb3VuZD00KX19ZWxzZSBpZihhKGUpfHwiTCI9PT1lLmNoYXJBdCgwKSl7dmFyIHM9dC5yYW5nZS5tYXAodC5yMmR8fE51bWJlcik7YShlKXx8KGU9TnVtYmVyKGUuc3Vic3RyKDEpKSksdC5fdGlja3JvdW5kPTItTWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMTArLjAxKTt2YXIgbD1NYXRoLm1heChNYXRoLmFicyhzWzBdKSxNYXRoLmFicyhzWzFdKSksYz1NYXRoLmZsb29yKE1hdGgubG9nKGwpL01hdGguTE4xMCsuMDEpO01hdGguYWJzKGMpPjMmJihZKHQuZXhwb25lbnRmb3JtYXQpJiYhVyhjKT90Ll90aWNrZXhwb25lbnQ9MypNYXRoLnJvdW5kKChjLTEpLzMpOnQuX3RpY2tleHBvbmVudD1jKX1lbHNlIHQuX3RpY2tyb3VuZD1udWxsfWZ1bmN0aW9uIEgodCxlLHIpe3ZhciBuPXQudGlja2ZvbnR8fHt9O3JldHVybnt4OmUsZHg6MCxkeTowLHRleHQ6cnx8IiIsZm9udFNpemU6bi5zaXplLGZvbnQ6bi5mYW1pbHksZm9udENvbG9yOm4uY29sb3J9fUUuYXV0b1RpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIHI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gTWF0aC5wb3codCxNYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGguTE4xMCkpfWlmKCJkYXRlIj09PXQudHlwZSl7dC50aWNrMD1zLmRhdGVUaWNrMCh0LmNhbGVuZGFyKTt2YXIgaT0yKmU7aT5nPyhlLz1nLHI9bigxMCksdC5kdGljaz0iTSIrMTIqVShlLHIsRCkpOmk+dj8oZS89dix0LmR0aWNrPSJNIitVKGUsMSxSKSk6aT5tPyh0LmR0aWNrPVUoZSxtLEIpLHQudGljazA9cy5kYXRlVGljazAodC5jYWxlbmRhciwhMCkpOmk+eT90LmR0aWNrPVUoZSx5LFIpOmk+eD90LmR0aWNrPVUoZSx4LEYpOmk+Yj90LmR0aWNrPVUoZSxiLEYpOihyPW4oMTApLHQuZHRpY2s9VShlLHIsRCkpfWVsc2UgaWYoImxvZyI9PT10LnR5cGUpe3QudGljazA9MDt2YXIgbz1zLnNpbXBsZU1hcCh0LnJhbmdlLHQucjJsKTtpZihlPi43KXQuZHRpY2s9TWF0aC5jZWlsKGUpO2Vsc2UgaWYoTWF0aC5hYnMob1sxXS1vWzBdKTwxKXt2YXIgbD0xLjUqTWF0aC5hYnMoKG9bMV0tb1swXSkvZSk7ZT1NYXRoLmFicyhNYXRoLnBvdygxMCxvWzFdKS1NYXRoLnBvdygxMCxvWzBdKSkvbCxyPW4oMTApLHQuZHRpY2s9IkwiK1UoZSxyLEQpfWVsc2UgdC5kdGljaz1lPi4zPyJEMiI6IkQxIn1lbHNlImNhdGVnb3J5Ij09PXQudHlwZXx8Im11bHRpY2F0ZWdvcnkiPT09dC50eXBlPyh0LnRpY2swPTAsdC5kdGljaz1NYXRoLmNlaWwoTWF0aC5tYXgoZSwxKSkpOm90KHQpPyh0LnRpY2swPTAscj0xLHQuZHRpY2s9VShlLHIsVikpOih0LnRpY2swPTAscj1uKDEwKSx0LmR0aWNrPVUoZSxyLEQpKTtpZigwPT09dC5kdGljayYmKHQuZHRpY2s9MSksIWEodC5kdGljaykmJiJzdHJpbmciIT10eXBlb2YgdC5kdGljayl7dmFyIGM9dC5kdGljazt0aHJvdyB0LmR0aWNrPTEsImF4LmR0aWNrIGVycm9yOiAiK1N0cmluZyhjKX19LEUudGlja0luY3JlbWVudD1mdW5jdGlvbih0LGUscixpKXt2YXIgbz1yPy0xOjE7aWYoYShlKSlyZXR1cm4gdCtvKmU7dmFyIGw9ZS5jaGFyQXQoMCksYz1vKk51bWJlcihlLnN1YnN0cigxKSk7aWYoIk0iPT09bClyZXR1cm4gcy5pbmNyZW1lbnRNb250aCh0LGMsaSk7aWYoIkwiPT09bClyZXR1cm4gTWF0aC5sb2coTWF0aC5wb3coMTAsdCkrYykvTWF0aC5MTjEwO2lmKCJEIj09PWwpe3ZhciB1PSJEMiI9PT1lP2o6TixoPXQrLjAxKm8sZj1zLnJvdW5kVXAocy5tb2QoaCwxKSx1LHIpO3JldHVybiBNYXRoLmZsb29yKGgpK01hdGgubG9nKG4ucm91bmQoTWF0aC5wb3coMTAsZiksMSkpL01hdGguTE4xMH10aHJvdyJ1bnJlY29nbml6ZWQgZHRpY2sgIitTdHJpbmcoZSl9LEUudGlja0ZpcnN0PWZ1bmN0aW9uKHQpe3ZhciBlPXQucjJsfHxOdW1iZXIscj1zLnNpbXBsZU1hcCh0LnJhbmdlLGUpLGk9clsxXTxyWzBdLG89aT9NYXRoLmZsb29yOk1hdGguY2VpbCxsPTEuMDAwMSpyWzBdLTFlLTQqclsxXSxjPXQuZHRpY2ssdT1lKHQudGljazApO2lmKGEoYykpe3ZhciBoPW8oKGwtdSkvYykqYyt1O3JldHVybiJjYXRlZ29yeSIhPT10LnR5cGUmJiJtdWx0aWNhdGVnb3J5IiE9PXQudHlwZXx8KGg9cy5jb25zdHJhaW4oaCwwLHQuX2NhdGVnb3JpZXMubGVuZ3RoLTEpKSxofXZhciBmPWMuY2hhckF0KDApLHA9TnVtYmVyKGMuc3Vic3RyKDEpKTtpZigiTSI9PT1mKXtmb3IodmFyIGQsZyx2LG09MCx5PXU7bTwxMDspe2lmKCgoZD1FLnRpY2tJbmNyZW1lbnQoeSxjLGksdC5jYWxlbmRhcikpLWwpKih5LWwpPD0wKXJldHVybiBpP01hdGgubWluKHksZCk6TWF0aC5tYXgoeSxkKTtnPShsLSh5K2QpLzIpLyhkLXkpLHY9ZisoTWF0aC5hYnMoTWF0aC5yb3VuZChnKSl8fDEpKnAseT1FLnRpY2tJbmNyZW1lbnQoeSx2LGc8MD8haTppLHQuY2FsZW5kYXIpLG0rK31yZXR1cm4gcy5lcnJvcigidGlja0ZpcnN0IGRpZCBub3QgY29udmVyZ2UiLHQpLHl9aWYoIkwiPT09ZilyZXR1cm4gTWF0aC5sb2cobygoTWF0aC5wb3coMTAsbCktdSkvcCkqcCt1KS9NYXRoLkxOMTA7aWYoIkQiPT09Zil7dmFyIHg9IkQyIj09PWM/ajpOLGI9cy5yb3VuZFVwKHMubW9kKGwsMSkseCxpKTtyZXR1cm4gTWF0aC5mbG9vcihsKStNYXRoLmxvZyhuLnJvdW5kKE1hdGgucG93KDEwLGIpLDEpKS9NYXRoLkxOMTB9dGhyb3cidW5yZWNvZ25pemVkIGR0aWNrICIrU3RyaW5nKGMpfSxFLnRpY2tUZXh0PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpLG89SCh0LGUpLGw9ImFycmF5Ij09PXQudGlja21vZGUsYz1yfHxsLHU9dC50eXBlLGg9ImNhdGVnb3J5Ij09PXU/dC5kMmxfbm9hZGQ6dC5kMmw7aWYobCYmQXJyYXkuaXNBcnJheSh0LnRpY2t0ZXh0KSl7dmFyIGY9cy5zaW1wbGVNYXAodC5yYW5nZSx0LnIybCkscD1NYXRoLmFicyhmWzFdLWZbMF0pLzFlNDtmb3IoaT0wO2k8dC50aWNrdGV4dC5sZW5ndGgmJiEoTWF0aC5hYnMoZS1oKHQudGlja3ZhbHNbaV0pKTxwKTtpKyspO2lmKGk8dC50aWNrdGV4dC5sZW5ndGgpcmV0dXJuIG8udGV4dD1TdHJpbmcodC50aWNrdGV4dFtpXSksb31mdW5jdGlvbiBkKG4pe2lmKHZvaWQgMD09PW4pcmV0dXJuITA7aWYocilyZXR1cm4ibm9uZSI9PT1uO3ZhciBhPXtmaXJzdDp0Ll90bWluLGxhc3Q6dC5fdG1heH1bbl07cmV0dXJuImFsbCIhPT1uJiZlIT09YX12YXIgZz1yPyJuZXZlciI6Im5vbmUiIT09dC5leHBvbmVudGZvcm1hdCYmZCh0LnNob3dleHBvbmVudCk/ImhpZGUiOiIiO2lmKCJkYXRlIj09PXU/ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dC5fdGlja3JvdW5kLG89ciYmdC5ob3ZlcmZvcm1hdHx8RS5nZXRUaWNrRm9ybWF0KHQpO24mJihpPWEoaSk/NDp7eToibSIsbToiZCIsZDoiTSIsTToiUyIsUzo0fVtpXSk7dmFyIGwsYz1zLmZvcm1hdERhdGUoZS54LG8saSx0Ll9kYXRlRm9ybWF0LHQuY2FsZW5kYXIsdC5fZXh0cmFGb3JtYXQpLHU9Yy5pbmRleE9mKCJcbiIpOy0xIT09dSYmKGw9Yy5zdWJzdHIodSsxKSxjPWMuc3Vic3RyKDAsdSkpO24mJigiMDA6MDA6MDAiPT09Y3x8IjAwOjAwIj09PWM/KGM9bCxsPSIiKTo4PT09Yy5sZW5ndGgmJihjPWMucmVwbGFjZSgvOjAwJC8sIiIpKSk7bCYmKHI/ImQiPT09aT9jKz0iLCAiK2w6Yz1sKyhjPyIsICIrYzoiIik6dC5faW5DYWxjVGlja3MmJmw9PT10Ll9wcmV2RGF0ZUhlYWR8fChjKz0iPGJyPiIrbCx0Ll9wcmV2RGF0ZUhlYWQ9bCkpO2UudGV4dD1jfSh0LG8scixjKToibG9nIj09PXU/ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgbz10LmR0aWNrLGw9ZS54LGM9dC50aWNrZm9ybWF0LHU9InN0cmluZyI9PXR5cGVvZiBvJiZvLmNoYXJBdCgwKTsibmV2ZXIiPT09aSYmKGk9IiIpO24mJiJMIiE9PXUmJihvPSJMMyIsdT0iTCIpO2lmKGN8fCJMIj09PXUpZS50ZXh0PVgoTWF0aC5wb3coMTAsbCksdCxpLG4pO2Vsc2UgaWYoYShvKXx8IkQiPT09dSYmcy5tb2QobCsuMDEsMSk8LjEpe3ZhciBoPU1hdGgucm91bmQobCksZj1NYXRoLmFicyhoKSxwPXQuZXhwb25lbnRmb3JtYXQ7InBvd2VyIj09PXB8fFkocCkmJlcoaCk/KGUudGV4dD0wPT09aD8xOjE9PT1oPyIxMCI6IjEwPHN1cD4iKyhoPjE/IiI6XykrZisiPC9zdXA+IixlLmZvbnRTaXplKj0xLjI1KTooImUiPT09cHx8IkUiPT09cCkmJmY+Mj9lLnRleHQ9IjEiK3ArKGg+MD8iKyI6XykrZjooZS50ZXh0PVgoTWF0aC5wb3coMTAsbCksdCwiIiwiZmFrZWhvdmVyIiksIkQxIj09PW8mJiJ5Ij09PXQuX2lkLmNoYXJBdCgwKSYmKGUuZHktPWUuZm9udFNpemUvNikpfWVsc2V7aWYoIkQiIT09dSl0aHJvdyJ1bnJlY29nbml6ZWQgZHRpY2sgIitTdHJpbmcobyk7ZS50ZXh0PVN0cmluZyhNYXRoLnJvdW5kKE1hdGgucG93KDEwLHMubW9kKGwsMSkpKSksZS5mb250U2l6ZSo9Ljc1fWlmKCJEMSI9PT10LmR0aWNrKXt2YXIgZD1TdHJpbmcoZS50ZXh0KS5jaGFyQXQoMCk7IjAiIT09ZCYmIjEiIT09ZHx8KCJ5Ij09PXQuX2lkLmNoYXJBdCgwKT9lLmR4LT1lLmZvbnRTaXplLzQ6KGUuZHkrPWUuZm9udFNpemUvMixlLmR4Kz0odC5yYW5nZVsxXT50LnJhbmdlWzBdPzE6LTEpKmUuZm9udFNpemUqKGw8MD8uNTouMjUpKSl9fSh0LG8sMCxjLGcpOiJjYXRlZ29yeSI9PT11P2Z1bmN0aW9uKHQsZSl7dmFyIHI9dC5fY2F0ZWdvcmllc1tNYXRoLnJvdW5kKGUueCldO3ZvaWQgMD09PXImJihyPSIiKTtlLnRleHQ9U3RyaW5nKHIpfSh0LG8pOiJtdWx0aWNhdGVnb3J5Ij09PXU/ZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGgucm91bmQoZS54KSxhPXQuX2NhdGVnb3JpZXNbbl18fFtdLGk9dm9pZCAwPT09YVsxXT8iIjpTdHJpbmcoYVsxXSksbz12b2lkIDA9PT1hWzBdPyIiOlN0cmluZyhhWzBdKTtyP2UudGV4dD1vKyIgLSAiK2k6KGUudGV4dD1pLGUudGV4dDI9byl9KHQsbyxyKTpvdCh0KT9mdW5jdGlvbih0LGUscixuLGEpe2lmKCJyYWRpYW5zIiE9PXQudGhldGF1bml0fHxyKWUudGV4dD1YKGUueCx0LGEsbik7ZWxzZXt2YXIgaT1lLngvMTgwO2lmKDA9PT1pKWUudGV4dD0iMCI7ZWxzZXt2YXIgbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIE1hdGguYWJzKHQtZSk8PTFlLTZ9dmFyIHI9ZnVuY3Rpb24odCl7dmFyIHI9MTtmb3IoOyFlKE1hdGgucm91bmQodCpyKS9yLHQpOylyKj0xMDtyZXR1cm4gcn0odCksbj10KnIsYT1NYXRoLmFicyhmdW5jdGlvbiB0KHIsbil7cmV0dXJuIGUobiwwKT9yOnQobixyJW4pfShuLHIpKTtyZXR1cm5bTWF0aC5yb3VuZChuL2EpLE1hdGgucm91bmQoci9hKV19KGkpO2lmKG9bMV0+PTEwMCllLnRleHQ9WChzLmRlZzJyYWQoZS54KSx0LGEsbik7ZWxzZXt2YXIgbD1lLng8MDsxPT09b1sxXT8xPT09b1swXT9lLnRleHQ9Ilx1MDNjMCI6ZS50ZXh0PW9bMF0rIlx1MDNjMCI6ZS50ZXh0PVsiPHN1cD4iLG9bMF0sIjwvc3VwPiIsIlx1MjA0NCIsIjxzdWI+IixvWzFdLCI8L3N1Yj4iLCJcdTAzYzAiXS5qb2luKCIiKSxsJiYoZS50ZXh0PV8rZS50ZXh0KX19fX0odCxvLHIsYyxnKTpmdW5jdGlvbih0LGUscixuLGEpeyJuZXZlciI9PT1hP2E9IiI6ImFsbCI9PT10LnNob3dleHBvbmVudCYmTWF0aC5hYnMoZS54L3QuZHRpY2spPDFlLTYmJihhPSJoaWRlIik7ZS50ZXh0PVgoZS54LHQsYSxuKX0odCxvLDAsYyxnKSxufHwodC50aWNrcHJlZml4JiYhZCh0LnNob3d0aWNrcHJlZml4KSYmKG8udGV4dD10LnRpY2twcmVmaXgrby50ZXh0KSx0LnRpY2tzdWZmaXgmJiFkKHQuc2hvd3RpY2tzdWZmaXgpJiYoby50ZXh0Kz10LnRpY2tzdWZmaXgpKSwiYm91bmRhcmllcyI9PT10LnRpY2tzb258fHQuc2hvd2RpdmlkZXJzKXt2YXIgdj1mdW5jdGlvbihlKXt2YXIgcj10LmwycChlKTtyZXR1cm4gcj49MCYmcjw9dC5fbGVuZ3RoP2U6bnVsbH07by54Ym5kPVt2KG8ueC0uNSksdihvLngrdC5kdGljay0uNSldfXJldHVybiBvfSxFLmhvdmVyTGFiZWxUZXh0PWZ1bmN0aW9uKHQsZSxyKXtpZihyIT09dyYmciE9PWUpcmV0dXJuIEUuaG92ZXJMYWJlbFRleHQodCxlKSsiIC0gIitFLmhvdmVyTGFiZWxUZXh0KHQscik7dmFyIG49ImxvZyI9PT10LnR5cGUmJmU8PTAsYT1FLnRpY2tUZXh0KHQsdC5jMmwobj8tZTplKSwiaG92ZXIiKS50ZXh0O3JldHVybiBuPzA9PT1lPyIwIjpfK2E6YX07dmFyIEc9WyJmIiwicCIsIm4iLCJcdTAzYmMiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCJdO2Z1bmN0aW9uIFkodCl7cmV0dXJuIlNJIj09PXR8fCJCIj09PXR9ZnVuY3Rpb24gVyh0KXtyZXR1cm4gdD4xNHx8dDwtMTV9ZnVuY3Rpb24gWCh0LGUscixuKXt2YXIgaT10PDAsbz1lLl90aWNrcm91bmQsbD1yfHxlLmV4cG9uZW50Zm9ybWF0fHwiQiIsYz1lLl90aWNrZXhwb25lbnQsdT1FLmdldFRpY2tGb3JtYXQoZSksaD1lLnNlcGFyYXRldGhvdXNhbmRzO2lmKG4pe3ZhciBmPXtleHBvbmVudGZvcm1hdDpsLGR0aWNrOiJub25lIj09PWUuc2hvd2V4cG9uZW50P2UuZHRpY2s6YSh0KSYmTWF0aC5hYnModCl8fDEscmFuZ2U6Im5vbmUiPT09ZS5zaG93ZXhwb25lbnQ/ZS5yYW5nZS5tYXAoZS5yMmQpOlswLHR8fDFdfTtxKGYpLG89KE51bWJlcihmLl90aWNrcm91bmQpfHwwKSs0LGM9Zi5fdGlja2V4cG9uZW50LGUuaG92ZXJmb3JtYXQmJih1PWUuaG92ZXJmb3JtYXQpfWlmKHUpcmV0dXJuIGUuX251bUZvcm1hdCh1KSh0KS5yZXBsYWNlKC8tL2csXyk7dmFyIHAsZD1NYXRoLnBvdygxMCwtbykvMjtpZigibm9uZSI9PT1sJiYoYz0wKSwodD1NYXRoLmFicyh0KSk8ZCl0PSIwIixpPSExO2Vsc2V7aWYodCs9ZCxjJiYodCo9TWF0aC5wb3coMTAsLWMpLG8rPWMpLDA9PT1vKXQ9U3RyaW5nKE1hdGguZmxvb3IodCkpO2Vsc2UgaWYobzwwKXt0PSh0PVN0cmluZyhNYXRoLnJvdW5kKHQpKSkuc3Vic3RyKDAsdC5sZW5ndGgrbyk7Zm9yKHZhciBnPW87ZzwwO2crKyl0Kz0iMCJ9ZWxzZXt2YXIgdj0odD1TdHJpbmcodCkpLmluZGV4T2YoIi4iKSsxO3YmJih0PXQuc3Vic3RyKDAsditvKS5yZXBsYWNlKC9cLj8wKyQvLCIiKSl9dD1zLm51bVNlcGFyYXRlKHQsZS5fc2VwYXJhdG9ycyxoKX1jJiYiaGlkZSIhPT1sJiYoWShsKSYmVyhjKSYmKGw9InBvd2VyIikscD1jPDA/XystYzoicG93ZXIiIT09bD8iKyIrYzpTdHJpbmcoYyksImUiPT09bHx8IkUiPT09bD90Kz1sK3A6InBvd2VyIj09PWw/dCs9Ilx4ZDcxMDxzdXA+IitwKyI8L3N1cD4iOiJCIj09PWwmJjk9PT1jP3QrPSJCIjpZKGwpJiYodCs9R1tjLzMrNV0pKTtyZXR1cm4gaT9fK3Q6dH1mdW5jdGlvbiBaKHQsZSl7Zm9yKHZhciByPVtdLG49e30sYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgaT1lW2FdO25baS50ZXh0Ml0/bltpLnRleHQyXS5wdXNoKGkueCk6bltpLnRleHQyXT1baS54XX1mb3IodmFyIG8gaW4gbilyLnB1c2goSCh0LHMuaW50ZXJwKG5bb10sLjUpLG8pKTtyZXR1cm4gcn1mdW5jdGlvbiBKKHQpe3JldHVyblt0LnRleHQsdC54LHQuYXhJbmZvLHQuZm9udCx0LmZvbnRTaXplLHQuZm9udENvbG9yXS5qb2luKCJfIil9ZnVuY3Rpb24gSyh0KXt2YXIgZT10LnRpdGxlLmZvbnQuc2l6ZSxyPSh0LnRpdGxlLnRleHQubWF0Y2gobC5CUl9UQUdfQUxMKXx8W10pLmxlbmd0aDtyZXR1cm4gdC50aXRsZS5oYXNPd25Qcm9wZXJ0eSgic3RhbmRvZmYiKT9yP2UqKE0rcipBKTplKk06cj9lKihyKzEpKkE6ZX1mdW5jdGlvbiBRKHQsZSl7dmFyIHI9dC5sMnAoZSk7cmV0dXJuIHI+MSYmcjx0Ll9sZW5ndGgtMX1mdW5jdGlvbiAkKHQpe3ZhciBlPW4uc2VsZWN0KHQpLHI9ZS5zZWxlY3QoIi50ZXh0LW1hdGgtZ3JvdXAiKTtyZXR1cm4gci5lbXB0eSgpP2Uuc2VsZWN0KCJ0ZXh0Iik6cn1mdW5jdGlvbiB0dCh0KXtyZXR1cm4gdC5faWQrIi5hdXRvbWFyZ2luIn1mdW5jdGlvbiBldCh0KXtyZXR1cm4gdHQodCkrIi5taXJyb3IifWZ1bmN0aW9uIHJ0KHQpe3JldHVybiB0Ll9pZCsiLnJhbmdlc2xpZGVyIn1mdW5jdGlvbiBudCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKS0xPT09dC5pbmRleE9mKGVbcl0pJiZ0LnB1c2goZVtyXSl9ZnVuY3Rpb24gYXQodCxlLHIpe3ZhciBuLGEsaT1bXSxvPVtdLGw9dC5sYXlvdXQ7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylpLnB1c2goRS5nZXRGcm9tSWQodCxlW25dKSk7Zm9yKG49MDtuPHIubGVuZ3RoO24rKylvLnB1c2goRS5nZXRGcm9tSWQodCxyW25dKSk7dmFyIGM9T2JqZWN0LmtleXMoZiksdT1bImFuY2hvciIsImRvbWFpbiIsIm92ZXJsYXlpbmciLCJwb3NpdGlvbiIsInNpZGUiLCJ0aWNrYW5nbGUiLCJlZGl0VHlwZSJdLGg9WyJsaW5lYXIiLCJsb2ciXTtmb3Iobj0wO248Yy5sZW5ndGg7bisrKXt2YXIgcD1jW25dLGQ9aVswXVtwXSxnPW9bMF1bcF0sdj0hMCxtPSExLHk9ITE7aWYoIl8iIT09cC5jaGFyQXQoMCkmJiJmdW5jdGlvbiIhPXR5cGVvZiBkJiYtMT09PXUuaW5kZXhPZihwKSl7Zm9yKGE9MTthPGkubGVuZ3RoJiZ2O2ErKyl7dmFyIHg9aVthXVtwXTsidHlwZSI9PT1wJiYtMSE9PWguaW5kZXhPZihkKSYmLTEhPT1oLmluZGV4T2YoeCkmJmQhPT14P209ITA6eCE9PWQmJih2PSExKX1mb3IoYT0xO2E8by5sZW5ndGgmJnY7YSsrKXt2YXIgYj1vW2FdW3BdOyJ0eXBlIj09PXAmJi0xIT09aC5pbmRleE9mKGcpJiYtMSE9PWguaW5kZXhPZihiKSYmZyE9PWI/eT0hMDpvW2FdW3BdIT09ZyYmKHY9ITEpfXYmJihtJiYobFtpWzBdLl9uYW1lXS50eXBlPSJsaW5lYXIiKSx5JiYobFtvWzBdLl9uYW1lXS50eXBlPSJsaW5lYXIiKSxpdChsLHAsaSxvLHQuX2Z1bGxMYXlvdXQuX2RmbHRUaXRsZSkpfX1mb3Iobj0wO248dC5fZnVsbExheW91dC5hbm5vdGF0aW9ucy5sZW5ndGg7bisrKXt2YXIgXz10Ll9mdWxsTGF5b3V0LmFubm90YXRpb25zW25dOy0xIT09ZS5pbmRleE9mKF8ueHJlZikmJi0xIT09ci5pbmRleE9mKF8ueXJlZikmJnMuc3dhcEF0dHJzKGwuYW5ub3RhdGlvbnNbbl0sWyI/Il0pfX1mdW5jdGlvbiBpdCh0LGUscixuLGEpe3ZhciBpLG89cy5uZXN0ZWRQcm9wZXJ0eSxsPW8odFtyWzBdLl9uYW1lXSxlKS5nZXQoKSxjPW8odFtuWzBdLl9uYW1lXSxlKS5nZXQoKTtmb3IoInRpdGxlIj09PWUmJihsJiZsLnRleHQ9PT1hLngmJihsLnRleHQ9YS55KSxjJiZjLnRleHQ9PT1hLnkmJihjLnRleHQ9YS54KSksaT0wO2k8ci5sZW5ndGg7aSsrKW8odCxyW2ldLl9uYW1lKyIuIitlKS5zZXQoYyk7Zm9yKGk9MDtpPG4ubGVuZ3RoO2krKylvKHQsbltpXS5fbmFtZSsiLiIrZSkuc2V0KGwpfWZ1bmN0aW9uIG90KHQpe3JldHVybiJhbmd1bGFyYXhpcyI9PT10Ll9pZH1FLmdldFRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaSxvLHMsbDtmdW5jdGlvbiBjKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdD90Ok51bWJlcih0LnJlcGxhY2UoIk0iLCIiKSkqdn1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9WyJMIiwiRCJdO2lmKHR5cGVvZiB0PT10eXBlb2YgZSl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0LWU7dmFyIG49ci5pbmRleE9mKHQuY2hhckF0KDApKSxhPXIuaW5kZXhPZihlLmNoYXJBdCgwKSk7cmV0dXJuIG49PT1hP051bWJlcih0LnJlcGxhY2UoLyhMfEQpL2csIiIpKS1OdW1iZXIoZS5yZXBsYWNlKC8oTHxEKS9nLCIiKSk6bi1hfXJldHVybiJudW1iZXIiPT10eXBlb2YgdD8xOi0xfWZ1bmN0aW9uIGgodCxlKXt2YXIgcj1udWxsPT09ZVswXSxuPW51bGw9PT1lWzFdLGE9dSh0LGVbMF0pPj0wLGk9dSh0LGVbMV0pPD0wO3JldHVybihyfHxhKSYmKG58fGkpfWlmKHQudGlja2Zvcm1hdHN0b3BzJiZ0LnRpY2tmb3JtYXRzdG9wcy5sZW5ndGg+MClzd2l0Y2godC50eXBlKXtjYXNlImRhdGUiOmNhc2UibGluZWFyIjpmb3IoZT0wO2U8dC50aWNrZm9ybWF0c3RvcHMubGVuZ3RoO2UrKylpZigobj10LnRpY2tmb3JtYXRzdG9wc1tlXSkuZW5hYmxlZCYmKGE9dC5kdGljayxpPW4uZHRpY2tyYW5nZSxvPXZvaWQgMCxzPXZvaWQgMCxsPXZvaWQgMCxvPWN8fGZ1bmN0aW9uKHQpe3JldHVybiB0fSxzPWlbMF0sbD1pWzFdLCghcyYmIm51bWJlciIhPXR5cGVvZiBzfHxvKHMpPD1vKGEpKSYmKCFsJiYibnVtYmVyIiE9dHlwZW9mIGx8fG8obCk+PW8oYSkpKSl7cj1uO2JyZWFrfWJyZWFrO2Nhc2UibG9nIjpmb3IoZT0wO2U8dC50aWNrZm9ybWF0c3RvcHMubGVuZ3RoO2UrKylpZigobj10LnRpY2tmb3JtYXRzdG9wc1tlXSkuZW5hYmxlZCYmaCh0LmR0aWNrLG4uZHRpY2tyYW5nZSkpe3I9bjticmVha319cmV0dXJuIHI/ci52YWx1ZTp0LnRpY2tmb3JtYXR9LEUuZ2V0U3VicGxvdHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0Ll9zdWJwbG90cyxuPXIuY2FydGVzaWFuLmNvbmNhdChyLmdsMmR8fFtdKSxhPWU/RS5maW5kU3VicGxvdHNXaXRoQXhpcyhuLGUpOm47cmV0dXJuIGEuc29ydChmdW5jdGlvbih0LGUpe3ZhciByPXQuc3Vic3RyKDEpLnNwbGl0KCJ5Iiksbj1lLnN1YnN0cigxKS5zcGxpdCgieSIpO3JldHVybiByWzBdPT09blswXT8rclsxXS0rblsxXTorclswXS0rblswXX0pLGF9LEUuZmluZFN1YnBsb3RzV2l0aEF4aXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IFJlZ0V4cCgieCI9PT1lLl9pZC5jaGFyQXQoMCk/Il4iK2UuX2lkKyJ5IjplLl9pZCsiJCIpLG49W10sYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgaT10W2FdO3IudGVzdChpKSYmbi5wdXNoKGkpfXJldHVybiBufSxFLm1ha2VDbGlwUGF0aHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtpZighZS5faGFzT25seUxhcmdlU3Bsb21zKXt2YXIgcixhLGk9e19vZmZzZXQ6MCxfbGVuZ3RoOmUud2lkdGgsX2lkOiIifSxvPXtfb2Zmc2V0OjAsX2xlbmd0aDplLmhlaWdodCxfaWQ6IiJ9LHM9RS5saXN0KHQsIngiLCEwKSxsPUUubGlzdCh0LCJ5IiwhMCksYz1bXTtmb3Iocj0wO3I8cy5sZW5ndGg7cisrKWZvcihjLnB1c2goe3g6c1tyXSx5Om99KSxhPTA7YTxsLmxlbmd0aDthKyspMD09PXImJmMucHVzaCh7eDppLHk6bFthXX0pLGMucHVzaCh7eDpzW3JdLHk6bFthXX0pO3ZhciB1PWUuX2NsaXBzLnNlbGVjdEFsbCgiLmF4ZXNjbGlwIikuZGF0YShjLGZ1bmN0aW9uKHQpe3JldHVybiB0LnguX2lkK3QueS5faWR9KTt1LmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0aCIpLmNsYXNzZWQoImF4ZXNjbGlwIiwhMCkuYXR0cigiaWQiLGZ1bmN0aW9uKHQpe3JldHVybiJjbGlwIitlLl91aWQrdC54Ll9pZCt0LnkuX2lkfSkuYXBwZW5kKCJyZWN0IiksdS5leGl0KCkucmVtb3ZlKCksdS5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLnNlbGVjdCgicmVjdCIpLmF0dHIoe3g6dC54Ll9vZmZzZXR8fDAseTp0LnkuX29mZnNldHx8MCx3aWR0aDp0LnguX2xlbmd0aHx8MSxoZWlnaHQ6dC55Ll9sZW5ndGh8fDF9KX0pfX0sRS5kcmF3PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Ll9mdWxsTGF5b3V0OyJyZWRyYXciPT09ZSYmbi5fcGFwZXIuc2VsZWN0QWxsKCJnLnN1YnBsb3QiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj1uLl9wbG90c1tlXSxhPXIueGF4aXMsaT1yLnlheGlzO3IueGF4aXNsYXllci5zZWxlY3RBbGwoIi4iK2EuX2lkKyJ0aWNrIikucmVtb3ZlKCksci55YXhpc2xheWVyLnNlbGVjdEFsbCgiLiIraS5faWQrInRpY2siKS5yZW1vdmUoKSxyLnhheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIithLl9pZCsidGljazIiKS5yZW1vdmUoKSxyLnlheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIitpLl9pZCsidGljazIiKS5yZW1vdmUoKSxyLnhheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIithLl9pZCsiZGl2aWRlciIpLnJlbW92ZSgpLHIueWF4aXNsYXllci5zZWxlY3RBbGwoIi4iK2kuX2lkKyJkaXZpZGVyIikucmVtb3ZlKCksci5ncmlkbGF5ZXImJnIuZ3JpZGxheWVyLnNlbGVjdEFsbCgicGF0aCIpLnJlbW92ZSgpLHIuemVyb2xpbmVsYXllciYmci56ZXJvbGluZWxheWVyLnNlbGVjdEFsbCgicGF0aCIpLnJlbW92ZSgpLG4uX2luZm9sYXllci5zZWxlY3QoIi5nLSIrYS5faWQrInRpdGxlIikucmVtb3ZlKCksbi5faW5mb2xheWVyLnNlbGVjdCgiLmctIitpLl9pZCsidGl0bGUiKS5yZW1vdmUoKX0pO3ZhciBhPWUmJiJyZWRyYXciIT09ZT9lOkUubGlzdElkcyh0KTtyZXR1cm4gcy5zeW5jT3JBc3luYyhhLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtpZihlKXt2YXIgbj1FLmdldEZyb21JZCh0LGUpLGE9RS5kcmF3T25lKHQsbixyKTtyZXR1cm4gbi5fcj1uLnJhbmdlLnNsaWNlKCksbi5fcmw9cy5zaW1wbGVNYXAobi5fcixuLnIybCksYX19fSkpfSxFLmRyYXdPbmU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsbDtyPXJ8fHt9LGUuc2V0U2NhbGUoKTt2YXIgZj10Ll9mdWxsTGF5b3V0LHA9ZS5faWQsZD1wLmNoYXJBdCgwKSxnPUUuY291bnRlckxldHRlcihwKSx2PWYuX3Bsb3RzW2UuX21haW5TdWJwbG90XTtpZih2KXt2YXIgbT12W2QrImF4aXNsYXllciJdLHk9ZS5fbWFpbkxpbmVQb3NpdGlvbix4PWUuX21haW5NaXJyb3JQb3NpdGlvbixiPWUuX3ZhbHM9RS5jYWxjVGlja3MoZSksXz1bZS5taXJyb3IseSx4XS5qb2luKCJfIik7Zm9yKG49MDtuPGIubGVuZ3RoO24rKyliW25dLmF4SW5mbz1fO2UuX3NlbGVjdGlvbnM9e30sZS5fdGlja0FuZ2xlcyYmKGUuX3ByZXZUaWNrQW5nbGVzPWUuX3RpY2tBbmdsZXMpLGUuX3RpY2tBbmdsZXM9e30sZS5fZGVwdGg9bnVsbDt2YXIgdz17fTtpZihlLnZpc2libGUpe3ZhciBrLFQsTT1FLm1ha2VUcmFuc0ZuKGUpO2lmKCJib3VuZGFyaWVzIj09PWUudGlja3Nvbil7dmFyIEw9ZnVuY3Rpb24odCxlKXt2YXIgcixuPVtdLGE9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnhibmRbZV07bnVsbCE9PXImJm4ucHVzaChzLmV4dGVuZEZsYXQoe30sdCx7eDpyfSkpfTtpZihlLmxlbmd0aCl7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylhKGVbcl0sMCk7YShlW3ItMV0sMSl9cmV0dXJuIG59KDAsYik7VD1FLmNsaXBFbmRzKGUsTCksaz0iaW5zaWRlIj09PWUudGlja3M/VDpMfWVsc2UgVD1FLmNsaXBFbmRzKGUsYiksaz0iaW5zaWRlIj09PWUudGlja3M/VDpiO3ZhciBDPWUuX2dyaWRWYWxzPVQsUD1mdW5jdGlvbih0LGUpe3ZhciByLG4sYT1bXSxpPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54Ym5kW2VdO251bGwhPT1yJiZhLnB1c2gocy5leHRlbmRGbGF0KHt9LHQse3g6cn0pKX07aWYodC5zaG93ZGl2aWRlcnMmJmUubGVuZ3RoKXtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdO28udGV4dDIhPT1uJiZpKG8sMCksbj1vLnRleHQyfWkoZVtyLTFdLDEpfXJldHVybiBhfShlLGIpO2lmKCFmLl9oYXNPbmx5TGFyZ2VTcGxvbXMpe3ZhciBPPWUuX3N1YnBsb3RzV2l0aCx6PXt9O2ZvcihuPTA7bjxPLmxlbmd0aDtuKyspe2E9T1tuXTt2YXIgST0obD1mLl9wbG90c1thXSlbZysiYXhpcyJdLEQ9SS5fbWFpbkF4aXMuX2lkO2lmKCF6W0RdKXt6W0RdPTE7dmFyIFI9IngiPT09ZD8iTTAsIitJLl9vZmZzZXQrInYiK0kuX2xlbmd0aDoiTSIrSS5fb2Zmc2V0KyIsMGgiK0kuX2xlbmd0aDtFLmRyYXdHcmlkKHQsZSx7dmFsczpDLGNvdW50ZXJBeGlzOkksbGF5ZXI6bC5ncmlkbGF5ZXIuc2VsZWN0KCIuIitwKSxwYXRoOlIsdHJhbnNGbjpNfSksRS5kcmF3WmVyb0xpbmUodCxlLHtjb3VudGVyQXhpczpJLGxheWVyOmwuemVyb2xpbmVsYXllcixwYXRoOlIsdHJhbnNGbjpNfSl9fX12YXIgRj1FLmdldFRpY2tTaWducyhlKSxCPVtdO2lmKGUudGlja3Mpe3ZhciBOLGosVixVPUUubWFrZVRpY2tQYXRoKGUseSxGWzJdKTtpZihlLl9hbmNob3JBeGlzJiZlLm1pcnJvciYmITAhPT1lLm1pcnJvcj8oTj1FLm1ha2VUaWNrUGF0aChlLHgsRlszXSksaj1VK04pOihOPSIiLGo9VSksZS5zaG93ZGl2aWRlcnMmJiJvdXRzaWRlIj09PWUudGlja3MmJiJib3VuZGFyaWVzIj09PWUudGlja3Nvbil7dmFyIHE9e307Zm9yKG49MDtuPFAubGVuZ3RoO24rKylxW1Bbbl0ueF09MTtWPWZ1bmN0aW9uKHQpe3JldHVybiBxW3QueF0/TjpqfX1lbHNlIFY9ajtFLmRyYXdUaWNrcyh0LGUse3ZhbHM6ayxsYXllcjptLHBhdGg6Vix0cmFuc0ZuOk19KSwiYWxsdGlja3MiPT09ZS5taXJyb3ImJihCPU9iamVjdC5rZXlzKGUuX2xpbmVwb3NpdGlvbnN8fHt9KSl9Zm9yKG49MDtuPEIubGVuZ3RoO24rKyl7YT1CW25dLGw9Zi5fcGxvdHNbYV07dmFyIEg9ZS5fbGluZXBvc2l0aW9uc1thXXx8W10sRz1FLm1ha2VUaWNrUGF0aChlLEhbMF0sRlswXSkrRS5tYWtlVGlja1BhdGgoZSxIWzFdLEZbMV0pO0UuZHJhd1RpY2tzKHQsZSx7dmFsczprLGxheWVyOmxbZCsiYXhpc2xheWVyIl0scGF0aDpHLHRyYW5zRm46TX0pfXZhciBZPVtdO2lmKFkucHVzaChmdW5jdGlvbigpe3JldHVybiBFLmRyYXdMYWJlbHModCxlLHt2YWxzOmIsbGF5ZXI6bSx0cmFuc0ZuOk0sbGFiZWxGbnM6RS5tYWtlTGFiZWxGbnMoZSx5KX0pfSksIm11bHRpY2F0ZWdvcnkiPT09ZS50eXBlKXt2YXIgVz17eDoyLHk6MTB9W2RdO1kucHVzaChmdW5jdGlvbigpe3ZhciByPXt4OiJoZWlnaHQiLHk6IndpZHRoIn1bZF0sbj1RKClbcl0rVysoZS5fdGlja0FuZ2xlc1twKyJ0aWNrIl0/ZS50aWNrZm9udC5zaXplKkE6MCk7cmV0dXJuIEUuZHJhd0xhYmVscyh0LGUse3ZhbHM6WihlLGIpLGxheWVyOm0sY2xzOnArInRpY2syIixyZXBvc2l0aW9uT25VcGRhdGU6ITAsc2Vjb25kYXJ5OiEwLHRyYW5zRm46TSxsYWJlbEZuczpFLm1ha2VMYWJlbEZucyhlLHkrbipGWzRdKX0pfSksWS5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RlcHRoPUZbNF0qKFEoInRpY2syIilbZS5zaWRlXS15KSxmdW5jdGlvbih0LGUscil7dmFyIG49ZS5faWQrImRpdmlkZXIiLGE9ci52YWxzLGk9ci5sYXllci5zZWxlY3RBbGwoInBhdGguIituKS5kYXRhKGEsSik7aS5leGl0KCkucmVtb3ZlKCksaS5lbnRlcigpLmluc2VydCgicGF0aCIsIjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQobiwxKS5jbGFzc2VkKCJjcmlzcCIsMSkuY2FsbCh1LnN0cm9rZSxlLmRpdmlkZXJjb2xvcikuc3R5bGUoInN0cm9rZS13aWR0aCIsaC5jcmlzcFJvdW5kKHQsZS5kaXZpZGVyd2lkdGgsMSkrInB4IiksaS5hdHRyKCJ0cmFuc2Zvcm0iLHIudHJhbnNGbikuYXR0cigiZCIsci5wYXRoKX0odCxlLHt2YWxzOlAsbGF5ZXI6bSxwYXRoOkUubWFrZVRpY2tQYXRoKGUseSxGWzRdLGUuX2RlcHRoKSx0cmFuc0ZuOk19KX0pfWVsc2UgZS50aXRsZS5oYXNPd25Qcm9wZXJ0eSgic3RhbmRvZmYiKSYmWS5wdXNoKGZ1bmN0aW9uKCl7ZS5fZGVwdGg9Rls0XSooUSgpW2Uuc2lkZV0teSl9KTt2YXIgWD1vLmdldENvbXBvbmVudE1ldGhvZCgicmFuZ2VzbGlkZXIiLCJpc1Zpc2libGUiKShlKTtyZXR1cm4gWS5wdXNoKGZ1bmN0aW9uKCl7dmFyIHIsbixhLHMsbD1lLnNpZGUuY2hhckF0KDApLGM9U1tlLnNpZGVdLmNoYXJBdCgwKSx1PUUuZ2V0UHhQb3NpdGlvbih0LGUpLGg9Im91dHNpZGUiPT09ZS50aWNrcz9lLnRpY2tsZW46MDtpZigoZS5hdXRvbWFyZ2lufHxYKSYmKCJtdWx0aWNhdGVnb3J5Ij09PWUudHlwZT9yPVEoInRpY2syIik6KHI9USgpLCJ4Ij09PWQmJiJiIj09PWwmJihlLl9kZXB0aD1NYXRoLm1heChyLndpZHRoPjA/ci5ib3R0b20tdTowLGgpKSkpLGUuYXV0b21hcmdpbil7bj17eDowLHk6MCxyOjAsbDowLHQ6MCxiOjB9O3ZhciBwPVswLDFdO2lmKCJ4Ij09PWQpe2lmKCJiIj09PWw/bltsXT1lLl9kZXB0aDoobltsXT1lLl9kZXB0aD1NYXRoLm1heChyLndpZHRoPjA/dS1yLnRvcDowLGgpLHAucmV2ZXJzZSgpKSxyLndpZHRoPjApe3ZhciB2PXIucmlnaHQtKGUuX29mZnNldCtlLl9sZW5ndGgpO3Y+MCYmKG4ueHI9MSxuLnI9dik7dmFyIG09ZS5fb2Zmc2V0LXIubGVmdDttPjAmJihuLnhsPTAsbi5sPW0pfX1lbHNlIGlmKCJsIj09PWw/bltsXT1lLl9kZXB0aD1NYXRoLm1heChyLmhlaWdodD4wP3Utci5sZWZ0OjAsaCk6KG5bbF09ZS5fZGVwdGg9TWF0aC5tYXgoci5oZWlnaHQ+MD9yLnJpZ2h0LXU6MCxoKSxwLnJldmVyc2UoKSksci5oZWlnaHQ+MCl7dmFyIHk9ci5ib3R0b20tKGUuX29mZnNldCtlLl9sZW5ndGgpO3k+MCYmKG4ueWI9MCxuLmI9eSk7dmFyIHg9ZS5fb2Zmc2V0LXIudG9wO3g+MCYmKG4ueXQ9MSxuLnQ9eCl9bltnXT0iZnJlZSI9PT1lLmFuY2hvcj9lLnBvc2l0aW9uOmUuX2FuY2hvckF4aXMuZG9tYWluW3BbMF1dLGUudGl0bGUudGV4dCE9PWYuX2RmbHRUaXRsZVtkXSYmKG5bbF0rPUsoZSkrKGUudGl0bGUuc3RhbmRvZmZ8fDApKSxlLm1pcnJvciYmImZyZWUiIT09ZS5hbmNob3ImJigoYT17eDowLHk6MCxyOjAsbDowLHQ6MCxiOjB9KVtjXT1lLmxpbmV3aWR0aCxlLm1pcnJvciYmITAhPT1lLm1pcnJvciYmKGFbY10rPWgpLCEwPT09ZS5taXJyb3J8fCJ0aWNrcyI9PT1lLm1pcnJvcj9hW2ddPWUuX2FuY2hvckF4aXMuZG9tYWluW3BbMV1dOiJhbGwiIT09ZS5taXJyb3ImJiJhbGx0aWNrcyIhPT1lLm1pcnJvcnx8KGFbZ109W2UuX2NvdW50ZXJEb21haW5NaW4sZS5fY291bnRlckRvbWFpbk1heF1bcFsxXV0pKX1YJiYocz1vLmdldENvbXBvbmVudE1ldGhvZCgicmFuZ2VzbGlkZXIiLCJhdXRvTWFyZ2luT3B0cyIpKHQsZSkpLGkuYXV0b01hcmdpbih0LHR0KGUpLG4pLGkuYXV0b01hcmdpbih0LGV0KGUpLGEpLGkuYXV0b01hcmdpbih0LHJ0KGUpLHMpfSksci5za2lwVGl0bGV8fFgmJiJib3R0b20iPT09ZS5zaWRlfHxZLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcixuPXQuX2Z1bGxMYXlvdXQsYT1lLl9pZCxpPWEuY2hhckF0KDApLG89ZS50aXRsZS5mb250LnNpemU7aWYoZS50aXRsZS5oYXNPd25Qcm9wZXJ0eSgic3RhbmRvZmYiKSlyPWUuX2RlcHRoK2UudGl0bGUuc3RhbmRvZmYrSyhlKTtlbHNle2lmKCJtdWx0aWNhdGVnb3J5Ij09PWUudHlwZSlyPWUuX2RlcHRoO2Vsc2V7cj0xMCsxLjUqbysoZS5saW5ld2lkdGg/ZS5saW5ld2lkdGgtMTowKX1yKz0ieCI9PT1pPyJ0b3AiPT09ZS5zaWRlP28qKGUuc2hvd3RpY2tsYWJlbHM/MTowKTpvKihlLnNob3d0aWNrbGFiZWxzPzEuNTouNSk6InJpZ2h0Ij09PWUuc2lkZT9vKihlLnNob3d0aWNrbGFiZWxzPzE6LjUpOm8qKGUuc2hvd3RpY2tsYWJlbHM/LjU6MCl9dmFyIHMsbCx1LGYscD1FLmdldFB4UG9zaXRpb24odCxlKTsieCI9PT1pPyhsPWUuX29mZnNldCtlLl9sZW5ndGgvMix1PSJ0b3AiPT09ZS5zaWRlP3AtcjpwK3IpOih1PWUuX29mZnNldCtlLl9sZW5ndGgvMixsPSJyaWdodCI9PT1lLnNpZGU/cCtyOnAtcixzPXtyb3RhdGU6Ii05MCIsb2Zmc2V0OjB9KTtpZigibXVsdGljYXRlZ29yeSIhPT1lLnR5cGUpe3ZhciBkPWUuX3NlbGVjdGlvbnNbZS5faWQrInRpY2siXTtpZihmPXtzZWxlY3Rpb246ZCxzaWRlOmUuc2lkZX0sZCYmZC5ub2RlKCkmJmQubm9kZSgpLnBhcmVudE5vZGUpe3ZhciBnPWguZ2V0VHJhbnNsYXRlKGQubm9kZSgpLnBhcmVudE5vZGUpO2Yub2Zmc2V0TGVmdD1nLngsZi5vZmZzZXRUb3A9Zy55fWUudGl0bGUuaGFzT3duUHJvcGVydHkoInN0YW5kb2ZmIikmJihmLnBhZD0wKX1yZXR1cm4gYy5kcmF3KHQsYSsidGl0bGUiLHtwcm9wQ29udGFpbmVyOmUscHJvcE5hbWU6ZS5fbmFtZSsiLnRpdGxlLnRleHQiLHBsYWNlaG9sZGVyOm4uX2RmbHRUaXRsZVtpXSxhdm9pZDpmLHRyYW5zZm9ybTpzLGF0dHJpYnV0ZXM6e3g6bCx5OnUsInRleHQtYW5jaG9yIjoibWlkZGxlIn19KX0odCxlKX0pLHMuc3luY09yQXN5bmMoWSl9fWZ1bmN0aW9uIFEodCl7dmFyIHI9cCsodHx8InRpY2siKTtyZXR1cm4gd1tyXXx8KHdbcl09ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsaTt0Ll9zZWxlY3Rpb25zW2VdLnNpemUoKT8ocj0xLzAsbj0tMS8wLGE9MS8wLGk9LTEvMCx0Ll9zZWxlY3Rpb25zW2VdLmVhY2goZnVuY3Rpb24oKXt2YXIgdD0kKHRoaXMpLGU9aC5iQm94KHQubm9kZSgpLnBhcmVudE5vZGUpO3I9TWF0aC5taW4ocixlLnRvcCksbj1NYXRoLm1heChuLGUuYm90dG9tKSxhPU1hdGgubWluKGEsZS5sZWZ0KSxpPU1hdGgubWF4KGksZS5yaWdodCl9KSk6KHI9MCxuPTAsYT0wLGk9MCk7cmV0dXJue3RvcDpyLGJvdHRvbTpuLGxlZnQ6YSxyaWdodDppLGhlaWdodDpuLXIsd2lkdGg6aS1hfX0oZSxyKSksd1tyXX19LEUuZ2V0VGlja1NpZ25zPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2lkLmNoYXJBdCgwKSxyPXt4OiJ0b3AiLHk6InJpZ2h0In1bZV0sbj10LnNpZGU9PT1yPzE6LTEsYT1bLTEsMSxuLC1uXTtyZXR1cm4iaW5zaWRlIiE9PXQudGlja3M9PSgieCI9PT1lKSYmKGE9YS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuLXR9KSksdC5zaWRlJiZhLnB1c2goe2w6LTEsdDotMSxyOjEsYjoxfVt0LnNpZGUuY2hhckF0KDApXSksYX0sRS5tYWtlVHJhbnNGbj1mdW5jdGlvbih0KXt2YXIgZT10Ll9pZC5jaGFyQXQoMCkscj10Ll9vZmZzZXQ7cmV0dXJuIngiPT09ZT9mdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrKHIrdC5sMnAoZS54KSkrIiwwKSJ9OmZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoMCwiKyhyK3QubDJwKGUueCkpKyIpIn19LEUubWFrZVRpY2tQYXRoPWZ1bmN0aW9uKHQsZSxyLG4pe249dm9pZCAwIT09bj9uOnQudGlja2xlbjt2YXIgYT10Ll9pZC5jaGFyQXQoMCksaT0odC5saW5ld2lkdGh8fDEpLzI7cmV0dXJuIngiPT09YT8iTTAsIisoZStpKnIpKyJ2IituKnI6Ik0iKyhlK2kqcikrIiwwaCIrbipyfSxFLm1ha2VMYWJlbEZucz1mdW5jdGlvbih0LGUscil7dmFyIG49dC5faWQuY2hhckF0KDApLGk9ImJvdW5kYXJpZXMiIT09dC50aWNrc29uJiYib3V0c2lkZSI9PT10LnRpY2tzLG89MCxsPTA7aWYoaSYmKG8rPXQudGlja2xlbiksciYmIm91dHNpZGUiPT09dC50aWNrcyl7dmFyIGM9cy5kZWcycmFkKHIpO289dC50aWNrbGVuKk1hdGguY29zKGMpKzEsbD10LnRpY2tsZW4qTWF0aC5zaW4oYyl9dC5zaG93dGlja2xhYmVscyYmKGl8fHQuc2hvd2xpbmUpJiYobys9LjIqdC50aWNrZm9udC5zaXplKTt2YXIgdSxoLGYscCxkPXtsYWJlbFN0YW5kb2ZmOm8rPSh0LmxpbmV3aWR0aHx8MSkvMixsYWJlbFNoaWZ0Omx9O3JldHVybiJ4Ij09PW4/KHA9ImJvdHRvbSI9PT10LnNpZGU/MTotMSx1PWwqcCxoPWUrbypwLGY9ImJvdHRvbSI9PT10LnNpZGU/MTotLjIsZC54Rm49ZnVuY3Rpb24odCl7cmV0dXJuIHQuZHgrdX0sZC55Rm49ZnVuY3Rpb24odCl7cmV0dXJuIHQuZHkraCt0LmZvbnRTaXplKmZ9LGQuYW5jaG9yRm49ZnVuY3Rpb24odCxlKXtyZXR1cm4gYShlKSYmMCE9PWUmJjE4MCE9PWU/ZSpwPDA/ImVuZCI6InN0YXJ0IjoibWlkZGxlIn0sZC5oZWlnaHRGbj1mdW5jdGlvbihlLHIsbil7cmV0dXJuIHI8LTYwfHxyPjYwPy0uNSpuOiJ0b3AiPT09dC5zaWRlPy1uOjB9KToieSI9PT1uJiYocD0icmlnaHQiPT09dC5zaWRlPzE6LTEsdT1vLGg9LWwqcCxmPTkwPT09TWF0aC5hYnModC50aWNrYW5nbGUpPy41OjAsZC54Rm49ZnVuY3Rpb24odCl7cmV0dXJuIHQuZHgrZSsodSt0LmZvbnRTaXplKmYpKnB9LGQueUZuPWZ1bmN0aW9uKHQpe3JldHVybiB0LmR5K2grdC5mb250U2l6ZSpUfSxkLmFuY2hvckZuPWZ1bmN0aW9uKGUscil7cmV0dXJuIGEocikmJjkwPT09TWF0aC5hYnMocik/Im1pZGRsZSI6InJpZ2h0Ij09PXQuc2lkZT8ic3RhcnQiOiJlbmQifSxkLmhlaWdodEZuPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4ocio9ImxlZnQiPT09dC5zaWRlPzE6LTEpPC0zMD8tbjpyPDMwPy0uNSpuOjB9KSxkfSxFLmRyYXdUaWNrcz1mdW5jdGlvbih0LGUscil7cj1yfHx7fTt2YXIgbj1lLl9pZCsidGljayIsYT1yLmxheWVyLnNlbGVjdEFsbCgicGF0aC4iK24pLmRhdGEoZS50aWNrcz9yLnZhbHM6W10sSik7YS5leGl0KCkucmVtb3ZlKCksYS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQobiwxKS5jbGFzc2VkKCJ0aWNrcyIsMSkuY2xhc3NlZCgiY3Jpc3AiLCExIT09ci5jcmlzcCkuY2FsbCh1LnN0cm9rZSxlLnRpY2tjb2xvcikuc3R5bGUoInN0cm9rZS13aWR0aCIsaC5jcmlzcFJvdW5kKHQsZS50aWNrd2lkdGgsMSkrInB4IikuYXR0cigiZCIsci5wYXRoKSxhLmF0dHIoInRyYW5zZm9ybSIsci50cmFuc0ZuKX0sRS5kcmF3R3JpZD1mdW5jdGlvbih0LGUscil7cj1yfHx7fTt2YXIgbj1lLl9pZCsiZ3JpZCIsYT1yLnZhbHMsaT1yLmNvdW50ZXJBeGlzO2lmKCExPT09ZS5zaG93Z3JpZClhPVtdO2Vsc2UgaWYoaSYmRS5zaG91bGRTaG93WmVyb0xpbmUodCxlLGkpKWZvcih2YXIgbz0iYXJyYXkiPT09ZS50aWNrbW9kZSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPWFbc10ueDtpZihvPyFsOk1hdGguYWJzKGwpPGUuZHRpY2svMTAwKXtpZihhPWEuc2xpY2UoMCxzKS5jb25jYXQoYS5zbGljZShzKzEpKSwhbylicmVhaztzLS19fXZhciBjPXIubGF5ZXIuc2VsZWN0QWxsKCJwYXRoLiIrbikuZGF0YShhLEopO2MuZXhpdCgpLnJlbW92ZSgpLGMuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKG4sMSkuY2xhc3NlZCgiY3Jpc3AiLCExIT09ci5jcmlzcCksZS5fZ3c9aC5jcmlzcFJvdW5kKHQsZS5ncmlkd2lkdGgsMSksYy5hdHRyKCJ0cmFuc2Zvcm0iLHIudHJhbnNGbikuYXR0cigiZCIsci5wYXRoKS5jYWxsKHUuc3Ryb2tlLGUuZ3JpZGNvbG9yfHwiI2RkZCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGUuX2d3KyJweCIpLCJmdW5jdGlvbiI9PXR5cGVvZiByLnBhdGgmJmMuYXR0cigiZCIsci5wYXRoKX0sRS5kcmF3WmVyb0xpbmU9ZnVuY3Rpb24odCxlLHIpe3I9cnx8cjt2YXIgbj1lLl9pZCsiemwiLGE9RS5zaG91bGRTaG93WmVyb0xpbmUodCxlLHIuY291bnRlckF4aXMpLGk9ci5sYXllci5zZWxlY3RBbGwoInBhdGguIituKS5kYXRhKGE/W3t4OjAsaWQ6ZS5faWR9XTpbXSk7aS5leGl0KCkucmVtb3ZlKCksaS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQobiwxKS5jbGFzc2VkKCJ6bCIsMSkuY2xhc3NlZCgiY3Jpc3AiLCExIT09ci5jcmlzcCkuZWFjaChmdW5jdGlvbigpe3IubGF5ZXIuc2VsZWN0QWxsKCJwYXRoIikuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBDLmlkU29ydCh0LmlkLGUuaWQpfSl9KSxpLmF0dHIoInRyYW5zZm9ybSIsci50cmFuc0ZuKS5hdHRyKCJkIixyLnBhdGgpLmNhbGwodS5zdHJva2UsZS56ZXJvbGluZWNvbG9yfHx1LmRlZmF1bHRMaW5lKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixoLmNyaXNwUm91bmQodCxlLnplcm9saW5ld2lkdGgsZS5fZ3d8fDEpKyJweCIpfSxFLmRyYXdMYWJlbHM9ZnVuY3Rpb24odCxlLHIpe3I9cnx8e307dmFyIGk9dC5fZnVsbExheW91dCxvPWUuX2lkLGM9by5jaGFyQXQoMCksdT1yLmNsc3x8bysidGljayIsZj1yLnZhbHMscD1yLmxhYmVsRm5zLGQ9ci5zZWNvbmRhcnk/MDplLnRpY2thbmdsZSxnPShlLl9wcmV2VGlja0FuZ2xlc3x8e30pW3VdLHY9ci5sYXllci5zZWxlY3RBbGwoImcuIit1KS5kYXRhKGUuc2hvd3RpY2tsYWJlbHM/ZjpbXSxKKSxtPVtdO2Z1bmN0aW9uIHkodCxlKXt0LmVhY2goZnVuY3Rpb24odCl7dmFyIGk9bi5zZWxlY3QodGhpcyksbz1pLnNlbGVjdCgiLnRleHQtbWF0aC1ncm91cCIpLHM9cC5hbmNob3JGbih0LGUpLGM9ci50cmFuc0ZuLmNhbGwoaS5ub2RlKCksdCkrKGEoZSkmJjAhPStlPyIgcm90YXRlKCIrZSsiLCIrcC54Rm4odCkrIiwiKyhwLnlGbih0KS10LmZvbnRTaXplLzIpKyIpIjoiIiksdT1sLmxpbmVDb3VudChpKSxmPUEqdC5mb250U2l6ZSxkPXAuaGVpZ2h0Rm4odCxhKGUpPytlOjAsKHUtMSkqZik7aWYoZCYmKGMrPSIgdHJhbnNsYXRlKDAsICIrZCsiKSIpLG8uZW1wdHkoKSlpLnNlbGVjdCgidGV4dCIpLmF0dHIoe3RyYW5zZm9ybTpjLCJ0ZXh0LWFuY2hvciI6c30pO2Vsc2V7dmFyIGc9aC5iQm94KG8ubm9kZSgpKS53aWR0aCp7ZW5kOi0uNSxzdGFydDouNX1bc107by5hdHRyKCJ0cmFuc2Zvcm0iLGMrKGc/InRyYW5zbGF0ZSgiK2crIiwwKSI6IiIpKX19KX12LmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCh1LDEpLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxhPXQuX3Byb21pc2VzLmxlbmd0aDtyLmNhbGwobC5wb3NpdGlvblRleHQscC54Rm4oZSkscC55Rm4oZSkpLmNhbGwoaC5mb250LGUuZm9udCxlLmZvbnRTaXplLGUuZm9udENvbG9yKS50ZXh0KGUudGV4dCkuY2FsbChsLmNvbnZlcnRUb1RzcGFucyx0KSx0Ll9wcm9taXNlc1thXT9tLnB1c2godC5fcHJvbWlzZXMucG9wKCkudGhlbihmdW5jdGlvbigpe3kocixkKX0pKTp5KHIsZCl9KSx2LmV4aXQoKS5yZW1vdmUoKSxyLnJlcG9zaXRpb25PblVwZGF0ZSYmdi5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLmNhbGwobC5wb3NpdGlvblRleHQscC54Rm4odCkscC55Rm4odCkpfSkseSh2LGcrMT9nOmQpO3ZhciB4PW51bGw7ZS5fc2VsZWN0aW9ucyYmKGUuX3NlbGVjdGlvbnNbdV09dik7dmFyIGI9W2Z1bmN0aW9uKCl7cmV0dXJuIG0ubGVuZ3RoJiZQcm9taXNlLmFsbChtKX1dO2UuYXV0b21hcmdpbiYmaS5fcmVkcmF3RnJvbUF1dG9NYXJnaW5Db3VudCYmOTA9PT1nPyh4PTkwLGIucHVzaChmdW5jdGlvbigpe3kodixnKX0pKTpiLnB1c2goZnVuY3Rpb24oKXtpZih5KHYsZCksZi5sZW5ndGgmJiJ4Ij09PWMmJiFhKGQpJiYoImxvZyIhPT1lLnR5cGV8fCJEIiE9PVN0cmluZyhlLmR0aWNrKS5jaGFyQXQoMCkpKXt4PTA7dmFyIHQsbj0wLGk9W107aWYodi5lYWNoKGZ1bmN0aW9uKHQpe249TWF0aC5tYXgobix0LmZvbnRTaXplKTt2YXIgcj1lLmwycCh0LngpLGE9JCh0aGlzKSxvPWguYkJveChhLm5vZGUoKSk7aS5wdXNoKHt0b3A6MCxib3R0b206MTAsaGVpZ2h0OjEwLGxlZnQ6ci1vLndpZHRoLzIscmlnaHQ6citvLndpZHRoLzIrMix3aWR0aDpvLndpZHRoKzJ9KX0pLCJib3VuZGFyaWVzIiE9PWUudGlja3NvbiYmIWUuc2hvd2RpdmlkZXJzfHxyLnNlY29uZGFyeSl7dmFyIG89Zi5sZW5ndGgsbD1NYXRoLmFicygoZltvLTFdLngtZlswXS54KSplLl9tKS8oby0xKTwyLjUqbnx8Im11bHRpY2F0ZWdvcnkiPT09ZS50eXBlO2Zvcih0PTA7dDxpLmxlbmd0aC0xO3QrKylpZihzLmJCb3hJbnRlcnNlY3QoaVt0XSxpW3QrMV0pKXt4PWw/OTA6MzA7YnJlYWt9fWVsc2V7dmFyIHU9Mjtmb3IoZS50aWNrcyYmKHUrPWUudGlja3dpZHRoLzIpLHQ9MDt0PGkubGVuZ3RoO3QrKyl7dmFyIHA9Zlt0XS54Ym5kLGc9aVt0XTtpZihudWxsIT09cFswXSYmZy5sZWZ0LWUubDJwKHBbMF0pPHV8fG51bGwhPT1wWzFdJiZlLmwycChwWzFdKS1nLnJpZ2h0PHUpe3g9OTA7YnJlYWt9fX14JiZ5KHYseCl9fSksZS5fdGlja0FuZ2xlcyYmYi5wdXNoKGZ1bmN0aW9uKCl7ZS5fdGlja0FuZ2xlc1t1XT1udWxsPT09eD9hKGQpP2Q6MDp4fSk7dmFyIF89cy5zeW5jT3JBc3luYyhiKTtyZXR1cm4gXyYmXy50aGVuJiZ0Ll9wcm9taXNlcy5wdXNoKF8pLF99LEUuZ2V0UHhQb3NpdGlvbj1mdW5jdGlvbih0LGUpe3ZhciByLG49dC5fZnVsbExheW91dC5fc2l6ZSxhPWUuX2lkLmNoYXJBdCgwKSxpPWUuc2lkZTtyZXR1cm4iZnJlZSIhPT1lLmFuY2hvcj9yPWUuX2FuY2hvckF4aXM6IngiPT09YT9yPXtfb2Zmc2V0Om4udCsoMS0oZS5wb3NpdGlvbnx8MCkpKm4uaCxfbGVuZ3RoOjB9OiJ5Ij09PWEmJihyPXtfb2Zmc2V0Om4ubCsoZS5wb3NpdGlvbnx8MCkqbi53LF9sZW5ndGg6MH0pLCJ0b3AiPT09aXx8ImxlZnQiPT09aT9yLl9vZmZzZXQ6ImJvdHRvbSI9PT1pfHwicmlnaHQiPT09aT9yLl9vZmZzZXQrci5fbGVuZ3RoOnZvaWQgMH0sRS5zaG91bGRTaG93WmVyb0xpbmU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXMuc2ltcGxlTWFwKGUucmFuZ2UsZS5yMmwpO3JldHVybiBuWzBdKm5bMV08PTAmJmUuemVyb2xpbmUmJigibGluZWFyIj09PWUudHlwZXx8Ii0iPT09ZS50eXBlKSYmKFEoZSwwKXx8IWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXIuX21haW5BeGlzO2lmKCFhKXJldHVybjt2YXIgaT10Ll9mdWxsTGF5b3V0LG89ZS5faWQuY2hhckF0KDApLHM9RS5jb3VudGVyTGV0dGVyKGUuX2lkKSxsPWUuX29mZnNldCsoTWF0aC5hYnMoblswXSk8TWF0aC5hYnMoblsxXSk9PSgieCI9PT1vKT8wOmUuX2xlbmd0aCk7ZnVuY3Rpb24gYyh0KXtpZighdC5zaG93bGluZXx8IXQubGluZXdpZHRoKXJldHVybiExO3ZhciByPU1hdGgubWF4KCh0LmxpbmV3aWR0aCtlLnplcm9saW5ld2lkdGgpLzIsMSk7ZnVuY3Rpb24gbih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJk1hdGguYWJzKHQtbCk8cn1pZihuKHQuX21haW5MaW5lUG9zaXRpb24pfHxuKHQuX21haW5NaXJyb3JQb3NpdGlvbikpcmV0dXJuITA7dmFyIGE9dC5fbGluZXBvc2l0aW9uc3x8e307Zm9yKHZhciBpIGluIGEpaWYobihhW2ldWzBdKXx8bihhW2ldWzFdKSlyZXR1cm4hMH12YXIgdT1pLl9wbG90c1tyLl9tYWluU3VicGxvdF07aWYoISh1Lm1haW5wbG90aW5mb3x8dSkub3ZlcmxheXMubGVuZ3RoKXJldHVybiBjKHIpO2Zvcih2YXIgaD1FLmxpc3QodCxzKSxmPTA7ZjxoLmxlbmd0aDtmKyspe3ZhciBwPWhbZl07aWYocC5fbWFpbkF4aXM9PT1hJiZjKHApKXJldHVybiEwfX0odCxlLHIsbil8fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuX2Z1bGxEYXRhLG49ZS5fbWFpblN1YnBsb3QsYT1lLl9pZC5jaGFyQXQoMCksaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgcz1yW2ldO2lmKCEwPT09cy52aXNpYmxlJiZzLnhheGlzK3MueWF4aXM9PT1uKXtpZihvLnRyYWNlSXMocywiYmFyLWxpa2UiKSYmcy5vcmllbnRhdGlvbj09PXt4OiJoIix5OiJ2In1bYV0pcmV0dXJuITA7aWYocy5maWxsJiZzLmZpbGwuY2hhckF0KHMuZmlsbC5sZW5ndGgtMSk9PT1hKXJldHVybiEwfX1yZXR1cm4hMX0odCxlKSl9LEUuY2xpcEVuZHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIFEodCxlLngpfSl9LEUuYWxsb3dBdXRvTWFyZ2luPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1FLmxpc3QodCwiIiwhMCkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uYXV0b21hcmdpbiYmKGkuYWxsb3dBdXRvTWFyZ2luKHQsdHQobikpLG4ubWlycm9yJiZpLmFsbG93QXV0b01hcmdpbih0LGV0KG4pKSksby5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwiaXNWaXNpYmxlIikobikmJmkuYWxsb3dBdXRvTWFyZ2luKHQscnQobikpfX0sRS5zd2FwPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPVtdO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPVtdLG89dC5fZnVsbERhdGFbZVtyXV0ueGF4aXMscz10Ll9mdWxsRGF0YVtlW3JdXS55YXhpcztpZihvJiZzKXtmb3Iobj0wO248YS5sZW5ndGg7bisrKS0xPT09YVtuXS54LmluZGV4T2YobykmJi0xPT09YVtuXS55LmluZGV4T2Yocyl8fGkucHVzaChuKTtpZihpLmxlbmd0aCl7dmFyIGwsYz1hW2lbMF1dO2lmKGkubGVuZ3RoPjEpZm9yKG49MTtuPGkubGVuZ3RoO24rKylsPWFbaVtuXV0sbnQoYy54LGwueCksbnQoYy55LGwueSk7bnQoYy54LFtvXSksbnQoYy55LFtzXSl9ZWxzZSBhLnB1c2goe3g6W29dLHk6W3NdfSl9fXJldHVybiBhfSh0LGUpLG49MDtuPHIubGVuZ3RoO24rKylhdCh0LHJbbl0ueCxyW25dLnkpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25lbnRzL3RpdGxlcyI6Njc5LCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90cy9wbG90cyI6ODI2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2F1dG9yYW5nZSI6NzY0LCIuL2F4aXNfYXV0b3R5cGUiOjc2NiwiLi9heGlzX2lkcyI6NzY4LCIuL2NsZWFuX3RpY2tzIjo3NzAsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi9zZXRfY29udmVydCI6NzgzLGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDc2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIShyPXJ8fHt9KS5ub011bHRpQ2F0ZWdvcnkmJihvPXQsYS5pc0FycmF5T3JUeXBlZEFycmF5KG9bMF0pJiZhLmlzQXJyYXlPclR5cGVkQXJyYXkob1sxXSkpPyJtdWx0aWNhdGVnb3J5IjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1NYXRoLm1heCgxLCh0Lmxlbmd0aC0xKS8xZTMpLGk9MCxvPTAscz17fSxsPTA7bDx0Lmxlbmd0aDtsKz1yKXt2YXIgYz10W01hdGgucm91bmQobCldLHU9U3RyaW5nKGMpO3NbdV18fChzW3VdPTEsYS5pc0RhdGVUaW1lKGMsZSkmJihpKz0xKSxuKGMpJiYobys9MSkpfXJldHVybiBpPjIqb30odCxlKT8iZGF0ZSI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU1hdGgubWF4KDEsKHQubGVuZ3RoLTEpLzFlMykscj0wLG49MCxvPXt9LHM9MDtzPHQubGVuZ3RoO3MrPWUpe3ZhciBsPXRbTWF0aC5yb3VuZChzKV0sYz1TdHJpbmcobCk7b1tjXXx8KG9bY109MSwiYm9vbGVhbiI9PXR5cGVvZiBsP24rKzphLmNsZWFuTnVtYmVyKGwpIT09aT9yKys6InN0cmluZyI9PXR5cGVvZiBsJiZuKyspfXJldHVybiBuPjIqcn0odCk/ImNhdGVnb3J5IjpmdW5jdGlvbih0KXtpZighdClyZXR1cm4hMTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZihuKHRbZV0pKXJldHVybiEwO3JldHVybiExfSh0KT8ibGluZWFyIjoiLSI7dmFyIG99fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3Njc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLG89dCgiLi90aWNrX3ZhbHVlX2RlZmF1bHRzIikscz10KCIuL3RpY2tfbWFya19kZWZhdWx0cyIpLGw9dCgiLi90aWNrX2xhYmVsX2RlZmF1bHRzIiksYz10KCIuL2NhdGVnb3J5X29yZGVyX2RlZmF1bHRzIiksdT10KCIuL2xpbmVfZ3JpZF9kZWZhdWx0cyIpLGg9dCgiLi9zZXRfY29udmVydCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixmLHApe3ZhciBkPWYubGV0dGVyLGc9Zi5mb250fHx7fSx2PWYuc3Bsb21TdGFzaHx8e30sbT1yKCJ2aXNpYmxlIiwhZi52aXNpYmxlRGZsdCkseT1lLnR5cGU7ImRhdGUiPT09eSYmbi5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZURlZmF1bHRzIikodCxlLCJjYWxlbmRhciIsZi5jYWxlbmRhcik7aChlLHApO3ZhciB4PSFlLmlzVmFsaWRSYW5nZSh0LnJhbmdlKTt4JiZmLnJldmVyc2VEZmx0JiYoeD0icmV2ZXJzZWQiKSwhcigiYXV0b3JhbmdlIix4KXx8ImxpbmVhciIhPT15JiYiLSIhPT15fHxyKCJyYW5nZW1vZGUiKSxyKCJyYW5nZSIpLGUuY2xlYW5SYW5nZSgpLGModCxlLHIsZiksImNhdGVnb3J5Ij09PXl8fGYubm9Ib3Zlcnx8cigiaG92ZXJmb3JtYXQiKTt2YXIgYj1yKCJjb2xvciIpLF89YiE9PWkuY29sb3IuZGZsdD9iOmcuY29sb3Isdz12LmxhYmVsfHxwLl9kZmx0VGl0bGVbZF07aWYobCh0LGUscix5LGYse3Bhc3M6MX0pLCFtKXJldHVybiBlO3IoInRpdGxlLnRleHQiLHcpLGEuY29lcmNlRm9udChyLCJ0aXRsZS5mb250Iix7ZmFtaWx5OmcuZmFtaWx5LHNpemU6TWF0aC5yb3VuZCgxLjIqZy5zaXplKSxjb2xvcjpffSksbyh0LGUscix5KSxsKHQsZSxyLHksZix7cGFzczoyfSkscyh0LGUscixmKSx1KHQsZSxyLHtkZmx0Q29sb3I6YixiZ0NvbG9yOmYuYmdDb2xvcixzaG93R3JpZDpmLnNob3dHcmlkLGF0dHJpYnV0ZXM6aX0pLChlLnNob3dsaW5lfHxlLnRpY2tzKSYmcigibWlycm9yIiksZi5hdXRvbWFyZ2luJiZyKCJhdXRvbWFyZ2luIik7dmFyIGssVD0ibXVsdGljYXRlZ29yeSI9PT1lLnR5cGU7Zi5ub1RpY2tzb258fCJjYXRlZ29yeSIhPT1lLnR5cGUmJiFUfHwhZS50aWNrcyYmIWUuc2hvd2dyaWR8fChUJiYoaz0iYm91bmRhcmllcyIpLHIoInRpY2tzb24iLGspKTtUJiYocigic2hvd2RpdmlkZXJzIikmJihyKCJkaXZpZGVyY29sb3IiKSxyKCJkaXZpZGVyd2lkdGgiKSkpO3JldHVybiBlfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9jYXRlZ29yeV9vcmRlcl9kZWZhdWx0cyI6NzY5LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo3NzcsIi4vbGluZV9ncmlkX2RlZmF1bHRzIjo3NzksIi4vc2V0X2NvbnZlcnQiOjc4MywiLi90aWNrX2xhYmVsX2RlZmF1bHRzIjo3ODQsIi4vdGlja19tYXJrX2RlZmF1bHRzIjo3ODUsIi4vdGlja192YWx1ZV9kZWZhdWx0cyI6Nzg2fV0sNzY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuL2NvbnN0YW50cyIpO3IuaWQybmFtZT1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubWF0Y2goYS5BWF9JRF9QQVRURVJOKSl7dmFyIGU9dC5zdWJzdHIoMSk7cmV0dXJuIjEiPT09ZSYmKGU9IiIpLHQuY2hhckF0KDApKyJheGlzIitlfX0sci5uYW1lMmlkPWZ1bmN0aW9uKHQpe2lmKHQubWF0Y2goYS5BWF9OQU1FX1BBVFRFUk4pKXt2YXIgZT10LnN1YnN0cig1KTtyZXR1cm4iMSI9PT1lJiYoZT0iIiksdC5jaGFyQXQoMCkrZX19LHIuY2xlYW5JZD1mdW5jdGlvbih0LGUpe2lmKHQubWF0Y2goYS5BWF9JRF9QQVRURVJOKSYmKCFlfHx0LmNoYXJBdCgwKT09PWUpKXt2YXIgcj10LnN1YnN0cigxKS5yZXBsYWNlKC9eMCsvLCIiKTtyZXR1cm4iMSI9PT1yJiYocj0iIiksdC5jaGFyQXQoMCkrcn19LHIubGlzdD1mdW5jdGlvbih0LGUsbil7dmFyIGE9dC5fZnVsbExheW91dDtpZighYSlyZXR1cm5bXTt2YXIgaSxvPXIubGlzdElkcyh0LGUpLHM9bmV3IEFycmF5KG8ubGVuZ3RoKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgbD1vW2ldO3NbaV09YVtsLmNoYXJBdCgwKSsiYXhpcyIrbC5zdWJzdHIoMSldfWlmKCFuKXt2YXIgYz1hLl9zdWJwbG90cy5nbDNkfHxbXTtmb3IoaT0wO2k8Yy5sZW5ndGg7aSsrKXt2YXIgdT1hW2NbaV1dO2U/cy5wdXNoKHVbZSsiYXhpcyJdKTpzLnB1c2godS54YXhpcyx1LnlheGlzLHUuemF4aXMpfX1yZXR1cm4gc30sci5saXN0SWRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dDtpZighcilyZXR1cm5bXTt2YXIgbj1yLl9zdWJwbG90cztyZXR1cm4gZT9uW2UrImF4aXMiXTpuLnhheGlzLmNvbmNhdChuLnlheGlzKX0sci5nZXRGcm9tSWQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPXQuX2Z1bGxMYXlvdXQ7cmV0dXJuIngiPT09bj9lPWUucmVwbGFjZSgveVswLTldKi8sIiIpOiJ5Ij09PW4mJihlPWUucmVwbGFjZSgveFswLTldKi8sIiIpKSxhW3IuaWQybmFtZShlKV19LHIuZ2V0RnJvbVRyYWNlPWZ1bmN0aW9uKHQsZSxhKXt2YXIgaT10Ll9mdWxsTGF5b3V0LG89bnVsbDtpZihuLnRyYWNlSXMoZSwiZ2wzZCIpKXt2YXIgcz1lLnNjZW5lOyJzY2VuZSI9PT1zLnN1YnN0cigwLDUpJiYobz1pW3NdW2ErImF4aXMiXSl9ZWxzZSBvPXIuZ2V0RnJvbUlkKHQsZVthKyJheGlzIl18fGEpO3JldHVybiBvfSxyLmlkU29ydD1mdW5jdGlvbih0LGUpe3ZhciByPXQuY2hhckF0KDApLG49ZS5jaGFyQXQoMCk7cmV0dXJuIHIhPT1uP3I+bj8xOi0xOisodC5zdWJzdHIoMSl8fDEpLSsoZS5zdWJzdHIoMSl8fDEpfSxyLmdldEF4aXNHcm91cD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Ll9heGlzTWF0Y2hHcm91cHMsbj0wO248ci5sZW5ndGg7bisrKXtpZihyW25dW2VdKXJldHVybiJnIitufXJldHVybiBlfX0seyIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2NvbnN0YW50cyI6NzcxfV0sNzY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXtpZigiY2F0ZWdvcnkiPT09ZS50eXBlKXt2YXIgYSxpPXQuY2F0ZWdvcnlhcnJheSxvPUFycmF5LmlzQXJyYXkoaSkmJmkubGVuZ3RoPjA7byYmKGE9ImFycmF5Iik7dmFyIHMsbD1yKCJjYXRlZ29yeW9yZGVyIixhKTsiYXJyYXkiPT09bCYmKHM9cigiY2F0ZWdvcnlhcnJheSIpKSxvfHwiYXJyYXkiIT09bHx8KGw9ZS5jYXRlZ29yeW9yZGVyPSJ0cmFjZSIpLCJ0cmFjZSI9PT1sP2UuX2luaXRpYWxDYXRlZ29yaWVzPVtdOiJhcnJheSI9PT1sP2UuX2luaXRpYWxDYXRlZ29yaWVzPXMuc2xpY2UoKToocz1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpPWUuZGF0YUF0dHJ8fHQuX2lkLmNoYXJBdCgwKSxvPXt9O2lmKGUuYXhEYXRhKXI9ZS5heERhdGE7ZWxzZSBmb3Iocj1bXSxuPTA7bjxlLmRhdGEubGVuZ3RoO24rKyl7dmFyIHM9ZS5kYXRhW25dO3NbaSsiYXhpcyJdPT09dC5faWQmJnIucHVzaChzKX1mb3Iobj0wO248ci5sZW5ndGg7bisrKXt2YXIgbD1yW25dW2ldO2ZvcihhPTA7YTxsLmxlbmd0aDthKyspe3ZhciBjPWxbYV07bnVsbCE9YyYmKG9bY109MSl9fXJldHVybiBPYmplY3Qua2V5cyhvKX0oZSxuKS5zb3J0KCksImNhdGVnb3J5IGFzY2VuZGluZyI9PT1sP2UuX2luaXRpYWxDYXRlZ29yaWVzPXM6ImNhdGVnb3J5IGRlc2NlbmRpbmciPT09bCYmKGUuX2luaXRpYWxDYXRlZ29yaWVzPXMucmV2ZXJzZSgpKSl9fX0se31dLDc3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuT05FREFZO3IuZHRpY2s9ZnVuY3Rpb24odCxlKXt2YXIgcj0ibG9nIj09PWUsYT0iZGF0ZSI9PT1lLG89ImNhdGVnb3J5Ij09PWUscz1hP2k6MTtpZighdClyZXR1cm4gcztpZihuKHQpKXJldHVybih0PU51bWJlcih0KSk8PTA/czpvP01hdGgubWF4KDEsTWF0aC5yb3VuZCh0KSk6YT9NYXRoLm1heCguMSx0KTp0O2lmKCJzdHJpbmciIT10eXBlb2YgdHx8IWEmJiFyKXJldHVybiBzO3ZhciBsPXQuY2hhckF0KDApLGM9dC5zdWJzdHIoMSk7cmV0dXJuKGM9bihjKT9OdW1iZXIoYyk6MCk8PTB8fCEoYSYmIk0iPT09bCYmYz09PU1hdGgucm91bmQoYyl8fHImJiJMIj09PWx8fHImJiJEIj09PWwmJigxPT09Y3x8Mj09PWMpKT9zOnR9LHIudGljazA9ZnVuY3Rpb24odCxlLHIsaSl7cmV0dXJuImRhdGUiPT09ZT9hLmNsZWFuRGF0ZSh0LGEuZGF0ZVRpY2swKHIpKToiRDEiIT09aSYmIkQyIiE9PWk/bih0KT9OdW1iZXIodCk6MDp2b2lkIDB9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3NzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL3JlZ2V4IikuY291bnRlcjtlLmV4cG9ydHM9e2lkUmVnZXg6e3g6bigieCIpLHk6bigieSIpfSxhdHRyUmVnZXg6bigiW3h5XWF4aXMiKSx4QXhpc01hdGNoOm4oInhheGlzIikseUF4aXNNYXRjaDpuKCJ5YXhpcyIpLEFYX0lEX1BBVFRFUk46L15beHl6XVswLTldKiQvLEFYX05BTUVfUEFUVEVSTjovXlt4eXpdYXhpc1swLTldKiQvLFNVQlBMT1RfUEFUVEVSTjovXngoWzAtOV0qKXkoWzAtOV0qKSQvLE1JTkRSQUc6OCxNSU5TRUxFQ1Q6MTIsTUlOWk9PTToyMCxEUkFHR0VSU0laRToyMCxCRU5EUFg6MS41LFJFRFJBV0RFTEFZOjUwLFNFTEVDVERFTEFZOjEwMCxTRUxFQ1RJRDoiLXNlbGVjdCIsREZMVFJBTkdFWDpbLTEsNl0sREZMVFJBTkdFWTpbLTEsNF0sdHJhY2VMYXllckNsYXNzZXM6WyJpbWFnZWxheWVyIiwiaGVhdG1hcGxheWVyIiwiY29udG91cmNhcnBldGxheWVyIiwiY29udG91cmxheWVyIiwiZnVubmVsbGF5ZXIiLCJ3YXRlcmZhbGxsYXllciIsImJhcmxheWVyIiwiY2FycGV0bGF5ZXIiLCJ2aW9saW5sYXllciIsImJveGxheWVyIiwib2hsY2xheWVyIiwic2NhdHRlcmNhcnBldGxheWVyIiwic2NhdHRlcmxheWVyIl0sY2xpcE9uQXhpc0ZhbHNlUXVlcnk6WyIuc2NhdHRlcmxheWVyIiwiLmJhcmxheWVyIiwiLmZ1bm5lbGxheWVyIiwiLndhdGVyZmFsbGxheWVyIl0sbGF5ZXJWYWx1ZTJsYXllckNsYXNzOnsiYWJvdmUgdHJhY2VzIjoiYWJvdmUiLCJiZWxvdyB0cmFjZXMiOiJiZWxvdyJ9fX0seyIuLi8uLi9saWIvcmVnZXgiOjczM31dLDc3MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vYXhpc19pZHMiKS5pZDJuYW1lLGk9dCgiLi9zY2FsZV96b29tIiksbz10KCIuL2F1dG9yYW5nZSIpLm1ha2VQYWRGbixzPXQoIi4vYXV0b3JhbmdlIikuY29uY2F0RXh0cmVtZXMsbD10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQUxNT1NUX0VRVUFMLGM9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLkZST01fQkw7ZnVuY3Rpb24gdSh0LGUscixuLGkpe3ZhciBvLHMsbCxjLHU9InJhbmdlIiE9PWksaD1uW2EoZSldLnR5cGUsZj1bXTtmb3Iocz0wO3M8ci5sZW5ndGg7cysrKWlmKChsPXJbc10pIT09ZSYmKGM9blthKGwpXSkudHlwZT09PWgpaWYoYy5maXhlZHJhbmdlKXtpZih1JiZjLmFuY2hvcil7blthKGMuYW5jaG9yKV0uZml4ZWRyYW5nZSYmZi5wdXNoKGwpfX1lbHNlIGYucHVzaChsKTtmb3Iobz0wO288dC5sZW5ndGg7bysrKWlmKHRbb11bZV0pe3ZhciBwPXRbb10sZD1bXTtmb3Iocz0wO3M8Zi5sZW5ndGg7cysrKXBbbD1mW3NdXXx8ZC5wdXNoKGwpO3JldHVybntsaW5rYWJsZUF4ZXM6ZCx0aGlzR3JvdXA6cH19cmV0dXJue2xpbmthYmxlQXhlczpmLHRoaXNHcm91cDpudWxsfX1mdW5jdGlvbiBoKHQsZSxyLG4sYSl7dmFyIGksbyxzLGwsYztudWxsPT09ZT8oKGU9e30pW3JdPTEsYz10Lmxlbmd0aCx0LnB1c2goZSkpOmM9dC5pbmRleE9mKGUpO3ZhciB1PU9iamVjdC5rZXlzKGUpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspaWYocz10W2ldLGkhPT1jJiZzW25dKXt2YXIgaD1zW25dO2ZvcihvPTA7bzx1Lmxlbmd0aDtvKyspc1tsPXVbb11dPWgqYSplW2xdO3JldHVybiB2b2lkIHQuc3BsaWNlKGMsMSl9aWYoMSE9PWEpZm9yKG89MDtvPHUubGVuZ3RoO28rKyllW3Vbb11dKj1hO2Vbbl09MX1mdW5jdGlvbiBmKHQsZSl7dmFyIHI9dC5faW5wdXREb21haW4sbj1jW3QuY29uc3RyYWludG93YXJkXSxhPXJbMF0rKHJbMV0tclswXSkqbjt0LmRvbWFpbj10Ll9pbnB1dC5kb21haW49W2ErKHJbMF0tYSkvZSxhKyhyWzFdLWEpL2VdLHQuc2V0U2NhbGUoKX1yLmhhbmRsZUNvbnN0cmFpbnREZWZhdWx0cz1mdW5jdGlvbih0LGUscixhKXt2YXIgaSxvLHMsbCxjPWEuYWxsQXhpc0lkcyxmPWEubGF5b3V0T3V0LHA9YS5zY2FsZWFuY2hvckRmbHQsZD1hLmNvbnN0cmFpbkRmbHQsZz1mLl9heGlzQ29uc3RyYWludEdyb3Vwcyx2PWYuX2F4aXNNYXRjaEdyb3VwcyxtPWUuX2lkLHk9bS5jaGFyQXQoMCkseD0oKGYuX3NwbG9tQXhlc3x8e30pW3ldfHx7fSlbbV18fHt9LGI9ZS5faWQsXz1iLmNoYXJBdCgwKSx3PXIoImNvbnN0cmFpbiIsZCk7aWYobi5jb2VyY2UodCxlLHtjb25zdHJhaW50b3dhcmQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczoieCI9PT1fP1sibGVmdCIsImNlbnRlciIsInJpZ2h0Il06WyJib3R0b20iLCJtaWRkbGUiLCJ0b3AiXSxkZmx0OiJ4Ij09PV8/ImNlbnRlciI6Im1pZGRsZSJ9fSwiY29uc3RyYWludG93YXJkIiksIXQubWF0Y2hlcyYmIXgubWF0Y2hlc3x8ZS5maXhlZHJhbmdlfHwobz11KHYsYixjLGYpLGk9bi5jb2VyY2UodCxlLHttYXRjaGVzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6by5saW5rYWJsZUF4ZXN8fFtdLGRmbHQ6eC5tYXRjaGVzfX0sIm1hdGNoZXMiKSksaXx8ZS5maXhlZHJhbmdlJiYiZG9tYWluIiE9PXd8fCF0LnNjYWxlYW5jaG9yJiYhcHx8KGw9dShnLGIsYyxmLHcpLHM9bi5jb2VyY2UodCxlLHtzY2FsZWFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOmwubGlua2FibGVBeGVzfHxbXX19LCJzY2FsZWFuY2hvciIscCkpLGk/KGRlbGV0ZSBlLmNvbnN0cmFpbixoKHYsby50aGlzR3JvdXAsYixpLDEpKTotMSE9PWMuaW5kZXhPZih0Lm1hdGNoZXMpJiZuLndhcm4oImlnbm9yZWQgIitlLl9uYW1lKycubWF0Y2hlczogIicrdC5tYXRjaGVzKyciIHRvIGF2b2lkIGVpdGhlciBhbiBpbmZpbml0ZSBsb29wIG9yIGJlY2F1c2UgdGhlIHRhcmdldCBheGlzIGhhcyBmaXhlZCByYW5nZS4nKSxzKXt2YXIgaz1yKCJzY2FsZXJhdGlvIik7a3x8KGs9ZS5zY2FsZXJhdGlvPTEpLGgoZyxsLnRoaXNHcm91cCxiLHMsayl9ZWxzZS0xIT09Yy5pbmRleE9mKHQuc2NhbGVhbmNob3IpJiZuLndhcm4oImlnbm9yZWQgIitlLl9uYW1lKycuc2NhbGVhbmNob3I6ICInK3Quc2NhbGVhbmNob3IrJyIgdG8gYXZvaWQgZWl0aGVyIGFuIGluZmluaXRlIGxvb3AgYW5kIHBvc3NpYmx5IGluY29uc2lzdGVudCBzY2FsZXJhdGlvcywgb3IgYmVjYXVzZSB0aGUgdGFyZ2V0IGF4aXMgaGFzIGZpeGVkIHJhbmdlIG9yIHRoaXMgYXhpcyBkZWNsYXJlcyBhICptYXRjaGVzKiBjb25zdHJhaW50LicpfSxyLmVuZm9yY2U9ZnVuY3Rpb24odCl7dmFyIGUscixuLGMsdSxoLHAsZD10Ll9mdWxsTGF5b3V0LGc9ZC5fYXhpc0NvbnN0cmFpbnRHcm91cHN8fFtdO2ZvcihlPTA7ZTxnLmxlbmd0aDtlKyspe3ZhciB2PWdbZV0sbT1PYmplY3Qua2V5cyh2KSx5PTEvMCx4PTAsYj0xLzAsXz17fSx3PXt9LGs9ITE7Zm9yKHI9MDtyPG0ubGVuZ3RoO3IrKyl3W249bVtyXV09Yz1kW2EobildLGMuX2lucHV0RG9tYWluP2MuZG9tYWluPWMuX2lucHV0RG9tYWluLnNsaWNlKCk6Yy5faW5wdXREb21haW49Yy5kb21haW4uc2xpY2UoKSxjLl9pbnB1dFJhbmdlfHwoYy5faW5wdXRSYW5nZT1jLnJhbmdlLnNsaWNlKCkpLGMuc2V0U2NhbGUoKSxfW25dPXU9TWF0aC5hYnMoYy5fbSkvdltuXSx5PU1hdGgubWluKHksdSksImRvbWFpbiIhPT1jLmNvbnN0cmFpbiYmYy5fY29uc3RyYWludFNocmlua2FibGV8fChiPU1hdGgubWluKGIsdSkpLGRlbGV0ZSBjLl9jb25zdHJhaW50U2hyaW5rYWJsZSx4PU1hdGgubWF4KHgsdSksImRvbWFpbiI9PT1jLmNvbnN0cmFpbiYmKGs9ITApO2lmKCEoeT5sKngpfHxrKWZvcihyPTA7cjxtLmxlbmd0aDtyKyspaWYodT1fW249bVtyXV0saD0oYz13W25dKS5jb25zdHJhaW4sdSE9PWJ8fCJkb21haW4iPT09aClpZihwPXUvYiwicmFuZ2UiPT09aClpKGMscCk7ZWxzZXt2YXIgVD1jLl9pbnB1dERvbWFpbixNPShjLmRvbWFpblsxXS1jLmRvbWFpblswXSkvKFRbMV0tVFswXSksQT0oYy5yMmwoYy5yYW5nZVsxXSktYy5yMmwoYy5yYW5nZVswXSkpLyhjLnIybChjLl9pbnB1dFJhbmdlWzFdKS1jLnIybChjLl9pbnB1dFJhbmdlWzBdKSk7aWYoKHAvPU0pKkE8MSl7Yy5kb21haW49Yy5faW5wdXQuZG9tYWluPVQuc2xpY2UoKSxpKGMscCk7Y29udGludWV9aWYoQTwxJiYoYy5yYW5nZT1jLl9pbnB1dC5yYW5nZT1jLl9pbnB1dFJhbmdlLnNsaWNlKCkscCo9QSksYy5hdXRvcmFuZ2Upe3ZhciBTPWMucjJsKGMucmFuZ2VbMF0pLEU9Yy5yMmwoYy5yYW5nZVsxXSksTD0oUytFKS8yLEM9TCxQPUwsTz1NYXRoLmFicyhFLUwpLHo9TC1PKnAqMS4wMDAxLEk9TCtPKnAqMS4wMDAxLEQ9byhjKTtmKGMscCk7dmFyIFIsRixCPU1hdGguYWJzKGMuX20pLE49cyh0LGMpLGo9Ti5taW4sVj1OLm1heDtmb3IoRj0wO0Y8ai5sZW5ndGg7RisrKShSPWpbRl0udmFsLUQoaltGXSkvQik+eiYmUjxDJiYoQz1SKTtmb3IoRj0wO0Y8Vi5sZW5ndGg7RisrKShSPVZbRl0udmFsK0QoVltGXSkvQik8SSYmUj5QJiYoUD1SKTtwLz0oUC1DKS8oMipPKSxDPWMubDJyKEMpLFA9Yy5sMnIoUCksYy5yYW5nZT1jLl9pbnB1dC5yYW5nZT1TPEU/W0MsUF06W1AsQ119ZihjLHApfX19LHIuY2xlYW49ZnVuY3Rpb24odCxlKXtpZihlLl9pbnB1dERvbWFpbil7Zm9yKHZhciByPSExLG49ZS5faWQsYT10Ll9mdWxsTGF5b3V0Ll9heGlzQ29uc3RyYWludEdyb3VwcyxpPTA7aTxhLmxlbmd0aDtpKyspaWYoYVtpXVtuXSl7cj0hMDticmVha31yJiYiZG9tYWluIj09PWUuY29uc3RyYWlufHwoZS5faW5wdXQuZG9tYWluPWUuZG9tYWluPWUuX2lucHV0RG9tYWluLGRlbGV0ZSBlLl9pbnB1dERvbWFpbil9fX0seyIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4vYXV0b3JhbmdlIjo3NjQsIi4vYXhpc19pZHMiOjc2OCwiLi9zY2FsZV96b29tIjo3ODF9XSw3NzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoInRpbnljb2xvcjIiKSxpPXQoImhhcy1wYXNzaXZlLWV2ZW50cyIpLG89dCgiLi4vLi4vcmVnaXN0cnkiKSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksYz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksdT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxoPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxmPXQoIi4vYXhlcyIpLHA9dCgiLi4vLi4vbGliL3NldGN1cnNvciIpLGQ9dCgiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCIpLGc9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLkZST01fVEwsdj10KCIuLi8uLi9saWIvY2xlYXJfZ2xfY2FudmFzZXMiKSxtPXQoIi4uLy4uL3Bsb3RfYXBpL3N1YnJvdXRpbmVzIikucmVkcmF3UmVnbFRyYWNlcyx5PXQoIi4uL3Bsb3RzIikseD10KCIuL2F4aXNfaWRzIikuZ2V0RnJvbUlkLGI9dCgiLi9zZWxlY3QiKS5wcmVwU2VsZWN0LF89dCgiLi9zZWxlY3QiKS5jbGVhclNlbGVjdCx3PXQoIi4vc2VsZWN0Iikuc2VsZWN0T25DbGljayxrPXQoIi4vc2NhbGVfem9vbSIpLFQ9dCgiLi9jb25zdGFudHMiKSxNPVQuTUlORFJBRyxBPVQuTUlOWk9PTSxTPSEwO2Z1bmN0aW9uIEUodCxlLHIsbil7dmFyIGE9cy5lbnN1cmVTaW5nbGUodC5kcmFnbGF5ZXIsZSxyLGZ1bmN0aW9uKGUpe2UuY2xhc3NlZCgiZHJhZyIsITApLnN0eWxlKHtmaWxsOiJ0cmFuc3BhcmVudCIsInN0cm9rZS13aWR0aCI6MH0pLmF0dHIoImRhdGEtc3VicGxvdCIsdC5pZCl9KTtyZXR1cm4gYS5jYWxsKHAsbiksYS5ub2RlKCl9ZnVuY3Rpb24gTCh0LGUscixhLGksbyxzKXt2YXIgbD1FKHQsInJlY3QiLGUscik7cmV0dXJuIG4uc2VsZWN0KGwpLmNhbGwodS5zZXRSZWN0LGEsaSxvLHMpLGx9ZnVuY3Rpb24gQyh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKCF0W3JdLmZpeGVkcmFuZ2UpcmV0dXJuIGU7cmV0dXJuIiJ9ZnVuY3Rpb24gUCh0LGUscixuLGEpe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz10W2ldO2lmKCFvLmZpeGVkcmFuZ2Upe3ZhciBzPW8uX3JsWzBdLGw9by5fcmxbMV0tcztuW28uX25hbWUrIi5yYW5nZVswXSJdPW8ubDJyKHMrbCplKSxuW28uX25hbWUrIi5yYW5nZVsxXSJdPW8ubDJyKHMrbCpyKX19aWYoYSYmYS5sZW5ndGgpe3ZhciBjPShlKygxLXIpKS8yO1AoYSxjLDEtYyxuLFtdKX19ZnVuY3Rpb24gTyh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZml4ZWRyYW5nZXx8KG4ucmFuZ2U9W24ubDJyKG4uX3JsWzBdLWUvbi5fbSksbi5sMnIobi5fcmxbMV0tZS9uLl9tKV0pfX1mdW5jdGlvbiB6KHQpe3JldHVybiAxLSh0Pj0wP01hdGgubWluKHQsLjkpOjEvKDEvTWF0aC5tYXgodCwtLjMpKzMuMjIyKSl9ZnVuY3Rpb24gSSh0LGUscixuLGEpe3JldHVybiB0LmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiem9vbWJveCIpLnN0eWxlKHtmaWxsOmU+LjI/InJnYmEoMCwwLDAsMCkiOiJyZ2JhKDI1NSwyNTUsMjU1LDApIiwic3Ryb2tlLXdpZHRoIjowfSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrcisiLCAiK24rIikiKS5hdHRyKCJkIixhKyJaIil9ZnVuY3Rpb24gRCh0LGUscil7cmV0dXJuIHQuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJ6b29tYm94LWNvcm5lcnMiKS5zdHlsZSh7ZmlsbDpjLmJhY2tncm91bmQsc3Ryb2tlOmMuZGVmYXVsdExpbmUsInN0cm9rZS13aWR0aCI6MSxvcGFjaXR5OjB9KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlKyIsICIrcisiKSIpLmF0dHIoImQiLCJNMCwwWiIpfWZ1bmN0aW9uIFIodCxlLHIsbixhLGkpe3QuYXR0cigiZCIsbisiTSIrci5sKyIsIityLnQrInYiK3IuaCsiaCIrci53KyJ2LSIrci5oKyJoLSIrci53KyJaIiksRih0LGUsYSxpKX1mdW5jdGlvbiBGKHQsZSxyLG4pe3J8fCh0LnRyYW5zaXRpb24oKS5zdHlsZSgiZmlsbCIsbj4uMj8icmdiYSgwLDAsMCwwLjQpIjoicmdiYSgyNTUsMjU1LDI1NSwwLjMpIikuZHVyYXRpb24oMjAwKSxlLnRyYW5zaXRpb24oKS5zdHlsZSgib3BhY2l0eSIsMSkuZHVyYXRpb24oMjAwKSl9ZnVuY3Rpb24gQih0KXtuLnNlbGVjdCh0KS5zZWxlY3RBbGwoIi56b29tYm94LC5qcy16b29tYm94LWJhY2tkcm9wLC5qcy16b29tYm94LW1lbnUsLnpvb21ib3gtY29ybmVycyIpLnJlbW92ZSgpfWZ1bmN0aW9uIE4odCl7UyYmdC5kYXRhJiZ0Ll9jb250ZXh0LnNob3dUaXBzJiYocy5ub3RpZmllcihzLl8odCwiRG91YmxlLWNsaWNrIHRvIHpvb20gYmFjayBvdXQiKSwibG9uZyIpLFM9ITEpfWZ1bmN0aW9uIGoodCl7cmV0dXJuImxhc3NvIj09PXR8fCJzZWxlY3QiPT09dH1mdW5jdGlvbiBWKHQpe3ZhciBlPU1hdGguZmxvb3IoTWF0aC5taW4odC5iLXQudCx0LnItdC5sLEEpLzIpO3JldHVybiJNIisodC5sLTMuNSkrIiwiKyh0LnQtLjUrZSkrImgzdiIrLWUrImgiK2UrInYtM2gtIisoZSszKSsiWk0iKyh0LnIrMy41KSsiLCIrKHQudC0uNStlKSsiaC0zdiIrLWUrImgiKy1lKyJ2LTNoIisoZSszKSsiWk0iKyh0LnIrMy41KSsiLCIrKHQuYisuNS1lKSsiaC0zdiIrZSsiaCIrLWUrInYzaCIrKGUrMykrIlpNIisodC5sLTMuNSkrIiwiKyh0LmIrLjUtZSkrImgzdiIrZSsiaCIrZSsidjNoLSIrKGUrMykrIloifWZ1bmN0aW9uIFUodCxlLHIsbil7Zm9yKHZhciBhLGksbyxsLGM9ITEsdT17fSxoPXt9LGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIHA9ZVtmXTtmb3IoYSBpbiByKWlmKHBbYV0pe2ZvcihvIGluIHApKCJ4Ij09PW8uY2hhckF0KDApP3I6bilbb118fCh1W29dPWEpO2ZvcihpIGluIG4pcFtpXSYmKGM9ITApfWZvcihpIGluIG4paWYocFtpXSlmb3IobCBpbiBwKSgieCI9PT1sLmNoYXJBdCgwKT9yOm4pW2xdfHwoaFtsXT1pKX1jJiYocy5leHRlbmRGbGF0KHUsaCksaD17fSk7dmFyIGQ9e30sZz1bXTtmb3IobyBpbiB1KXt2YXIgdj14KHQsbyk7Zy5wdXNoKHYpLGRbdi5faWRdPXZ9dmFyIG09e30seT1bXTtmb3IobCBpbiBoKXt2YXIgYj14KHQsbCk7eS5wdXNoKGIpLG1bYi5faWRdPWJ9cmV0dXJue3hhSGFzaDpkLHlhSGFzaDptLHhheGVzOmcseWF4ZXM6eSx4TGlua3M6dSx5TGlua3M6aCxpc1N1YnBsb3RDb25zdHJhaW5lZDpjfX1mdW5jdGlvbiBxKHQsZSl7aWYoaSl7dmFyIHI9dm9pZCAwIT09dC5vbndoZWVsPyJ3aGVlbCI6Im1vdXNld2hlZWwiO3QuX29ud2hlZWwmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLHQuX29ud2hlZWwpLHQuX29ud2hlZWw9ZSx0LmFkZEV2ZW50TGlzdGVuZXIocixlLHtwYXNzaXZlOiExfSl9ZWxzZSB2b2lkIDAhPT10Lm9ud2hlZWw/dC5vbndoZWVsPWU6dm9pZCAwIT09dC5vbm1vdXNld2hlZWwmJih0Lm9ubW91c2V3aGVlbD1lKX1mdW5jdGlvbiBIKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaCh0W3JdKTtyZXR1cm4gZX1lLmV4cG9ydHM9e21ha2VEcmFnQm94OmZ1bmN0aW9uKHQsZSxyLGksYyxwLFMsRSl7dmFyIEYsRyxZLFcsWCxaLEosSyxRLCQsdHQsZXQscnQsbnQsYXQsaXQsb3Qsc3QsbHQsY3QsdXQsaHQ9dC5fZnVsbExheW91dC5fem9vbWxheWVyLGZ0PVMrRT09PSJuc2V3IixwdD0xPT09KFMrRSkubGVuZ3RoO2Z1bmN0aW9uIGR0KCl7aWYoRj1lLnhheGlzLEc9ZS55YXhpcyxRPUYuX2xlbmd0aCwkPUcuX2xlbmd0aCxKPUYuX29mZnNldCxLPUcuX29mZnNldCwoWT17fSlbRi5faWRdPUYsKFc9e30pW0cuX2lkXT1HLFMmJkUpZm9yKHZhciByPWUub3ZlcmxheXMsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgYT1yW25dLnhheGlzO1lbYS5faWRdPWE7dmFyIGk9cltuXS55YXhpcztXW2kuX2lkXT1pfVg9SChZKSxaPUgoVykscnQ9QyhYLEUpLG50PUMoWixTKSxhdD0hbnQmJiFydCx0dD1VKHQsdC5fZnVsbExheW91dC5fYXhpc0NvbnN0cmFpbnRHcm91cHMsWSxXKSxldD1VKHQsdC5fZnVsbExheW91dC5fYXhpc01hdGNoR3JvdXBzLFksVyksaXQ9RXx8dHQuaXNTdWJwbG90Q29uc3RyYWluZWR8fGV0LmlzU3VicGxvdENvbnN0cmFpbmVkLG90PVN8fHR0LmlzU3VicGxvdENvbnN0cmFpbmVkfHxldC5pc1N1YnBsb3RDb25zdHJhaW5lZDt2YXIgbz10Ll9mdWxsTGF5b3V0O3N0PW8uX2hhcygic2NhdHRlcmdsIiksbHQ9by5faGFzKCJzcGxvbSIpLGN0PW8uX2hhcygic3ZnIil9ZHQoKTt2YXIgZ3Q9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PyJuc2V3Ij09PXQ/cj8iIjoicGFuIj09PWU/Im1vdmUiOiJjcm9zc2hhaXIiOnQudG9Mb3dlckNhc2UoKSsiLXJlc2l6ZSI6InBvaW50ZXIifShudCtydCx0Ll9mdWxsTGF5b3V0LmRyYWdtb2RlLGZ0KSx2dD1MKGUsUytFKyJkcmFnIixndCxyLGksYyxwKTtpZihhdCYmIWZ0KXJldHVybiB2dC5vbm1vdXNlZG93bj1udWxsLHZ0LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLHZ0O3ZhciBtdCx5dCx4dCxidCxfdCx3dCxrdCxUdCxNdCxBdCxTdD17ZWxlbWVudDp2dCxnZDp0LHBsb3RpbmZvOmV9O2Z1bmN0aW9uIEV0KCl7U3QucGxvdGluZm8uc2VsZWN0aW9uPSExLF8odCl9ZnVuY3Rpb24gTHQocixhKXt2YXIgaT10Ll9mdWxsTGF5b3V0LmNsaWNrbW9kZTtpZihCKHQpLDIhPT1yfHxwdHx8ZnVuY3Rpb24oKXtpZighdC5fdHJhbnNpdGlvbmluZ1dpdGhEdXJhdGlvbil7dmFyIGU9dC5fY29udGV4dC5kb3VibGVDbGljayxyPVtdO3J0JiYocj1yLmNvbmNhdChYKSksbnQmJihyPXIuY29uY2F0KFopKSxldC54YXhlcyYmKHI9ci5jb25jYXQoZXQueGF4ZXMpKSxldC55YXhlcyYmKHI9ci5jb25jYXQoZXQueWF4ZXMpKTt2YXIgbixhLGkscz17fTtpZigicmVzZXQrYXV0b3NpemUiPT09ZSlmb3IoZT0iYXV0b3NpemUiLGE9MDthPHIubGVuZ3RoO2ErKylpZigobj1yW2FdKS5fcmFuZ2VJbml0aWFsJiYobi5yYW5nZVswXSE9PW4uX3JhbmdlSW5pdGlhbFswXXx8bi5yYW5nZVsxXSE9PW4uX3JhbmdlSW5pdGlhbFsxXSl8fCFuLl9yYW5nZUluaXRpYWwmJiFuLmF1dG9yYW5nZSl7ZT0icmVzZXQiO2JyZWFrfWlmKCJhdXRvc2l6ZSI9PT1lKWZvcihhPTA7YTxyLmxlbmd0aDthKyspKG49clthXSkuZml4ZWRyYW5nZXx8KHNbbi5fbmFtZSsiLmF1dG9yYW5nZSJdPSEwKTtlbHNlIGlmKCJyZXNldCI9PT1lKWZvcigocnR8fHR0LmlzU3VicGxvdENvbnN0cmFpbmVkKSYmKHI9ci5jb25jYXQodHQueGF4ZXMpKSxudCYmIXR0LmlzU3VicGxvdENvbnN0cmFpbmVkJiYocj1yLmNvbmNhdCh0dC55YXhlcykpLHR0LmlzU3VicGxvdENvbnN0cmFpbmVkJiYocnQ/bnR8fChyPXIuY29uY2F0KFopKTpyPXIuY29uY2F0KFgpKSxhPTA7YTxyLmxlbmd0aDthKyspKG49clthXSkuZml4ZWRyYW5nZXx8KG4uX3JhbmdlSW5pdGlhbD8oaT1uLl9yYW5nZUluaXRpYWwsc1tuLl9uYW1lKyIucmFuZ2VbMF0iXT1pWzBdLHNbbi5fbmFtZSsiLnJhbmdlWzFdIl09aVsxXSk6c1tuLl9uYW1lKyIuYXV0b3JhbmdlIl09ITApO3QuZW1pdCgicGxvdGx5X2RvdWJsZWNsaWNrIixudWxsKSxvLmNhbGwoIl9ndWlSZWxheW91dCIsdCxzKX19KCksZnQpaS5pbmRleE9mKCJzZWxlY3QiKT4tMSYmdyhhLHQsWCxaLGUuaWQsU3QpLGkuaW5kZXhPZigiZXZlbnQiKT4tMSYmaC5jbGljayh0LGEsZS5pZCk7ZWxzZSBpZigxPT09ciYmcHQpe3ZhciBzPVM/RzpGLGM9InMiPT09U3x8InciPT09RT8wOjEsdT1zLl9uYW1lKyIucmFuZ2VbIitjKyJdIixmPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYT10LnJhbmdlW2VdLGk9TWF0aC5hYnMoYS10LnJhbmdlWzEtZV0pO3JldHVybiJkYXRlIj09PXQudHlwZT9hOiJsb2ciPT09dC50eXBlPyhyPU1hdGguY2VpbChNYXRoLm1heCgwLC1NYXRoLmxvZyhpKS9NYXRoLkxOMTApKSszLG4uZm9ybWF0KCIuIityKyJnIikoTWF0aC5wb3coMTAsYSkpKToocj1NYXRoLmZsb29yKE1hdGgubG9nKE1hdGguYWJzKGEpKS9NYXRoLkxOMTApLU1hdGguZmxvb3IoTWF0aC5sb2coaSkvTWF0aC5MTjEwKSs0LG4uZm9ybWF0KCIuIitTdHJpbmcocikrImciKShhKSl9KHMsYykscD0ibGVmdCIsZD0ibWlkZGxlIjtpZihzLmZpeGVkcmFuZ2UpcmV0dXJuO1M/KGQ9Im4iPT09Uz8idG9wIjoiYm90dG9tIiwicmlnaHQiPT09cy5zaWRlJiYocD0icmlnaHQiKSk6ImUiPT09RSYmKHA9InJpZ2h0IiksdC5fY29udGV4dC5zaG93QXhpc1JhbmdlRW50cnlCb3hlcyYmbi5zZWxlY3QodnQpLmNhbGwobC5tYWtlRWRpdGFibGUse2dkOnQsaW1tZWRpYXRlOiEwLGJhY2tncm91bmQ6dC5fZnVsbExheW91dC5wYXBlcl9iZ2NvbG9yLHRleHQ6U3RyaW5nKGYpLGZpbGw6cy50aWNrZm9udD9zLnRpY2tmb250LmNvbG9yOiIjNDQ0Iixob3Jpem9udGFsQWxpZ246cCx2ZXJ0aWNhbEFsaWduOmR9KS5vbigiZWRpdCIsZnVuY3Rpb24oZSl7dmFyIHI9cy5kMnIoZSk7dm9pZCAwIT09ciYmby5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsdSxyKX0pfX1mdW5jdGlvbiBDdChlLHIpe2lmKHQuX3RyYW5zaXRpb25pbmdXaXRoRHVyYXRpb24pcmV0dXJuITE7dmFyIG49TWF0aC5tYXgoMCxNYXRoLm1pbihRLGUrbXQpKSxhPU1hdGgubWF4KDAsTWF0aC5taW4oJCxyK3l0KSksaT1NYXRoLmFicyhuLW10KSxvPU1hdGguYWJzKGEteXQpO2Z1bmN0aW9uIHMoKXtrdD0iIix4dC5yPXh0LmwseHQudD14dC5iLE10LmF0dHIoImQiLCJNMCwwWiIpfWlmKHh0Lmw9TWF0aC5taW4obXQsbikseHQucj1NYXRoLm1heChtdCxuKSx4dC50PU1hdGgubWluKHl0LGEpLHh0LmI9TWF0aC5tYXgoeXQsYSksdHQuaXNTdWJwbG90Q29uc3RyYWluZWQpaT5BfHxvPkE/KGt0PSJ4eSIsaS9RPm8vJD8obz1pKiQvUSx5dD5hP3h0LnQ9eXQtbzp4dC5iPXl0K28pOihpPW8qUS8kLG10Pm4/eHQubD1tdC1pOnh0LnI9bXQraSksTXQuYXR0cigiZCIsVih4dCkpKTpzKCk7ZWxzZSBpZihldC5pc1N1YnBsb3RDb25zdHJhaW5lZClpZihpPkF8fG8+QSl7a3Q9Inh5Ijt2YXIgbD1NYXRoLm1pbih4dC5sL1EsKCQteHQuYikvJCksYz1NYXRoLm1heCh4dC5yL1EsKCQteHQudCkvJCk7eHQubD1sKlEseHQucj1jKlEseHQuYj0oMS1sKSokLHh0LnQ9KDEtYykqJCxNdC5hdHRyKCJkIixWKHh0KSl9ZWxzZSBzKCk7ZWxzZSFudHx8bzxNYXRoLm1pbihNYXRoLm1heCguNippLE0pLEEpP2k8TXx8IXJ0P3MoKTooeHQudD0wLHh0LmI9JCxrdD0ieCIsTXQuYXR0cigiZCIsZnVuY3Rpb24odCxlKXtyZXR1cm4iTSIrKHQubC0uNSkrIiwiKyhlLUEtLjUpKyJoLTN2IisoMipBKzEpKyJoM1pNIisodC5yKy41KSsiLCIrKGUtQS0uNSkrImgzdiIrKDIqQSsxKSsiaC0zWiJ9KHh0LHl0KSkpOiFydHx8aTxNYXRoLm1pbiguNipvLEEpPyh4dC5sPTAseHQucj1RLGt0PSJ5IixNdC5hdHRyKCJkIixmdW5jdGlvbih0LGUpe3JldHVybiJNIisoZS1BLS41KSsiLCIrKHQudC0uNSkrInYtM2giKygyKkErMSkrInYzWk0iKyhlLUEtLjUpKyIsIisodC5iKy41KSsidjNoIisoMipBKzEpKyJ2LTNaIn0oeHQsbXQpKSk6KGt0PSJ4eSIsTXQuYXR0cigiZCIsVih4dCkpKTt4dC53PXh0LnIteHQubCx4dC5oPXh0LmIteHQudCxrdCYmKEF0PSEwKSx0Ll9kcmFnZ2VkPUF0LFIoVHQsTXQseHQsX3Qsd3QsYnQpLFB0KCksdC5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLHV0KSx3dD0hMH1mdW5jdGlvbiBQdCgpe3V0PXt9LCJ4eSIhPT1rdCYmIngiIT09a3R8fChQKFgseHQubC9RLHh0LnIvUSx1dCx0dC54YXhlcyksQnQoIngiLHV0KSksInh5IiE9PWt0JiYieSIhPT1rdHx8KFAoWiwoJC14dC5iKS8kLCgkLXh0LnQpLyQsdXQsdHQueWF4ZXMpLEJ0KCJ5Iix1dCkpfWZ1bmN0aW9uIE90KCl7UHQoKSxCKHQpLGp0KCksTih0KX1TdC5wcmVwRm49ZnVuY3Rpb24oZSxyLG4pe3ZhciBpPVN0LmRyYWdtb2RlLG89dC5fZnVsbExheW91dC5kcmFnbW9kZTtvIT09aSYmKFN0LmRyYWdtb2RlPW8pLGR0KCksYXR8fChmdD9lLnNoaWZ0S2V5PyJwYW4iPT09bz9vPSJ6b29tIjpqKG8pfHwobz0icGFuIik6ZS5jdHJsS2V5JiYobz0icGFuIik6bz0icGFuIiksU3QubWluRHJhZz0ibGFzc28iPT09bz8xOnZvaWQgMCxqKG8pPyhTdC54YXhlcz1YLFN0LnlheGVzPVosYihlLHIsbixTdCxvKSk6KFN0LmNsaWNrRm49THQsaihpKSYmRXQoKSxhdHx8KCJ6b29tIj09PW8/KFN0Lm1vdmVGbj1DdCxTdC5kb25lRm49T3QsU3QubWluRHJhZz0xLGZ1bmN0aW9uKGUscixuKXt2YXIgaT12dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTttdD1yLWkubGVmdCx5dD1uLWkudG9wLHh0PXtsOm10LHI6bXQsdzowLHQ6eXQsYjp5dCxoOjB9LGJ0PXQuX2htcGl4Y291bnQ/dC5faG1sdW1jb3VudC90Ll9obXBpeGNvdW50OmEodC5fZnVsbExheW91dC5wbG90X2JnY29sb3IpLmdldEx1bWluYW5jZSgpLHd0PSExLGt0PSJ4eSIsQXQ9ITEsVHQ9SShodCxidCxKLEssX3Q9Ik0wLDBIIitRKyJWIiskKyJIMFYwIiksTXQ9RChodCxKLEspfSgwLHIsbikpOiJwYW4iPT09byYmKFN0Lm1vdmVGbj1GdCxTdC5kb25lRm49anQpKSksdC5fZnVsbExheW91dC5fcmVkcmFnPWZ1bmN0aW9uKCl7dmFyIGU9dC5fZHJhZ2RhdGE7ZSYmZS5lbGVtZW50PT09dnQmJihqKHQuX2Z1bGxMYXlvdXQuZHJhZ21vZGUpfHwoZHQoKSxWdChbMCwwLFEsJF0pLFN0Lm1vdmVGbihlLmR4LGUuZHkpKSl9fSxkLmluaXQoU3QpO3ZhciB6dD1bMCwwLFEsJF0sSXQ9bnVsbCxEdD1ULlJFRFJBV0RFTEFZLFJ0PWUubWFpbnBsb3Q/dC5fZnVsbExheW91dC5fcGxvdHNbZS5tYWlucGxvdF06ZTtmdW5jdGlvbiBGdChlLHIpe2lmKCF0Ll90cmFuc2l0aW9uaW5nV2l0aER1cmF0aW9uKXtpZih0Ll9mdWxsTGF5b3V0Ll9yZXBsb3R0aW5nPSEwLCJldyI9PT1ydHx8Im5zIj09PW50KXJldHVybiBydCYmKE8oWCxlKSxCdCgieCIpKSxudCYmKE8oWixyKSxCdCgieSIpKSxWdChbcnQ/LWU6MCxudD8tcjowLFEsJF0pLE50KCksdm9pZCB0LmVtaXQoInBsb3RseV9yZWxheW91dGluZyIsdXQpO2lmKHR0LmlzU3VicGxvdENvbnN0cmFpbmVkJiZydCYmbnQpe3ZhciBuPSJ3Ij09PXJ0PT0oIm4iPT09bnQpPzE6LTEsYT0oZS9RK24qci8kKS8yO2U9YSpRLHI9biphKiR9InciPT09cnQ/ZT1sKFgsMCxlKToiZSI9PT1ydD9lPWwoWCwxLC1lKTpydHx8KGU9MCksIm4iPT09bnQ/cj1sKFosMSxyKToicyI9PT1udD9yPWwoWiwwLC1yKTpudHx8KHI9MCk7dmFyIGk9InciPT09cnQ/ZTowLG89Im4iPT09bnQ/cjowO2lmKHR0LmlzU3VicGxvdENvbnN0cmFpbmVkKXt2YXIgcztpZighcnQmJjE9PT1udC5sZW5ndGgpe2ZvcihzPTA7czxYLmxlbmd0aDtzKyspWFtzXS5yYW5nZT1YW3NdLl9yLnNsaWNlKCksayhYW3NdLDEtci8kKTtpPShlPXIqUS8kKS8yfWlmKCFudCYmMT09PXJ0Lmxlbmd0aCl7Zm9yKHM9MDtzPFoubGVuZ3RoO3MrKylaW3NdLnJhbmdlPVpbc10uX3Iuc2xpY2UoKSxrKFpbc10sMS1lL1EpO289KHI9ZSokL1EpLzJ9fUJ0KCJ4IiksQnQoInkiKSxWdChbaSxvLFEtZSwkLXJdKSxOdCgpLHQuZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIix1dCl9ZnVuY3Rpb24gbCh0LGUscil7Zm9yKHZhciBuLGEsaT0xLWUsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz10W29dO2lmKCFzLmZpeGVkcmFuZ2Upe249cyxhPXMuX3JsW2ldKyhzLl9ybFtlXS1zLl9ybFtpXSkveihyL3MuX2xlbmd0aCk7dmFyIGw9cy5sMnIoYSk7ITEhPT1sJiZ2b2lkIDAhPT1sJiYocy5yYW5nZVtlXT1sKX19cmV0dXJuIG4uX2xlbmd0aCoobi5fcmxbZV0tYSkvKG4uX3JsW2VdLW4uX3JsW2ldKX19ZnVuY3Rpb24gQnQodCxlKXtmb3IodmFyIHI9ZXQuaXNTdWJwbG90Q29uc3RyYWluZWQ/e3g6Wix5Olh9W3RdOmV0W3QrImF4ZXMiXSxuPWV0LmlzU3VicGxvdENvbnN0cmFpbmVkP3t4OlgseTpafVt0XTpbXSxhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBpPXJbYV0sbz1pLl9pZCxzPWV0LnhMaW5rc1tvXXx8ZXQueUxpbmtzW29dLGw9blswXXx8WVtzXXx8V1tzXTtsJiYoZT8oZVtpLl9uYW1lKyIucmFuZ2VbMF0iXT1lW2wuX25hbWUrIi5yYW5nZVswXSJdLGVbaS5fbmFtZSsiLnJhbmdlWzFdIl09ZVtsLl9uYW1lKyIucmFuZ2VbMV0iXSk6aS5yYW5nZT1sLnJhbmdlLnNsaWNlKCkpfX1mdW5jdGlvbiBOdCgpe3ZhciBlLHI9W107ZnVuY3Rpb24gbih0KXtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uZml4ZWRyYW5nZXx8ci5wdXNoKHRbZV0uX2lkKX1mb3IoaXQmJihuKFgpLG4odHQueGF4ZXMpLG4oZXQueGF4ZXMpKSxvdCYmKG4oWiksbih0dC55YXhlcyksbihldC55YXhlcykpLHV0PXt9LGU9MDtlPHIubGVuZ3RoO2UrKyl7dmFyIGE9cltlXSxpPXgodCxhKTtmLmRyYXdPbmUodCxpLHtza2lwVGl0bGU6ITB9KSx1dFtpLl9uYW1lKyIucmFuZ2VbMF0iXT1pLnJhbmdlWzBdLHV0W2kuX25hbWUrIi5yYW5nZVsxXSJdPWkucmFuZ2VbMV19Zi5yZWRyYXdDb21wb25lbnRzKHQscil9ZnVuY3Rpb24ganQoKXtWdChbMCwwLFEsJF0pLHMuc3luY09yQXN5bmMoW3kucHJldmlvdXNQcm9taXNlcyxmdW5jdGlvbigpe3QuX2Z1bGxMYXlvdXQuX3JlcGxvdHRpbmc9ITEsby5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsdXQpfV0sdCl9ZnVuY3Rpb24gVnQoZSl7dmFyIHIsbixhLGksbD10Ll9mdWxsTGF5b3V0LGM9bC5fcGxvdHMsaD1sLl9zdWJwbG90cy5jYXJ0ZXNpYW47aWYobHQmJm8uc3VicGxvdHNSZWdpc3RyeS5zcGxvbS5kcmFnKHQpLHN0KWZvcihyPTA7cjxoLmxlbmd0aDtyKyspaWYoYT0obj1jW2hbcl1dKS54YXhpcyxpPW4ueWF4aXMsbi5fc2NlbmUpe3ZhciBmPXMuc2ltcGxlTWFwKGEucmFuZ2UsYS5yMmwpLHA9cy5zaW1wbGVNYXAoaS5yYW5nZSxpLnIybCk7bi5fc2NlbmUudXBkYXRlKHtyYW5nZTpbZlswXSxwWzBdLGZbMV0scFsxXV19KX1pZigobHR8fHN0KSYmKHYodCksbSh0KSksY3Qpe3ZhciBkPWVbMl0vRi5fbGVuZ3RoLGc9ZVszXS9HLl9sZW5ndGg7Zm9yKHI9MDtyPGgubGVuZ3RoO3IrKyl7YT0obj1jW2hbcl1dKS54YXhpcyxpPW4ueWF4aXM7dmFyIHkseCxiLF8sdz1pdCYmIWEuZml4ZWRyYW5nZSYmWVthLl9pZF0saz1vdCYmIWkuZml4ZWRyYW5nZSYmV1tpLl9pZF07aWYodz8oeT1kLGI9RT9lWzBdOkh0KGEseSkpOmV0LnhhSGFzaFthLl9pZF0/KHk9ZCxiPWVbMF0qYS5fbGVuZ3RoL0YuX2xlbmd0aCk6ZXQueWFIYXNoW2EuX2lkXT8oeT1nLGI9Im5zIj09PW50Py1lWzFdKmEuX2xlbmd0aC9HLl9sZW5ndGg6SHQoYSx5LHtuOiJ0b3AiLHM6ImJvdHRvbSJ9W250XSkpOmI9cXQoYSx5PVV0KGEsZCxnKSksaz8oeD1nLF89Uz9lWzFdOkh0KGkseCkpOmV0LnlhSGFzaFtpLl9pZF0/KHg9ZyxfPWVbMV0qaS5fbGVuZ3RoL0cuX2xlbmd0aCk6ZXQueGFIYXNoW2kuX2lkXT8oeD1kLF89ImV3Ij09PXJ0Py1lWzBdKmkuX2xlbmd0aC9GLl9sZW5ndGg6SHQoaSx4LHtlOiJyaWdodCIsdzoibGVmdCJ9W3J0XSkpOl89cXQoaSx4PVV0KGksZCxnKSkseXx8eCl7eXx8KHk9MSkseHx8KHg9MSk7dmFyIFQ9YS5fb2Zmc2V0LWIveSxNPWkuX29mZnNldC1fL3g7bi5jbGlwUmVjdC5jYWxsKHUuc2V0VHJhbnNsYXRlLGIsXykuY2FsbCh1LnNldFNjYWxlLHkseCksbi5wbG90LmNhbGwodS5zZXRUcmFuc2xhdGUsVCxNKS5jYWxsKHUuc2V0U2NhbGUsMS95LDEveCkseT09PW4ueFNjYWxlRmFjdG9yJiZ4PT09bi55U2NhbGVGYWN0b3J8fCh1LnNldFBvaW50R3JvdXBTY2FsZShuLnpvb21TY2FsZVB0cyx5LHgpLHUuc2V0VGV4dFBvaW50c1NjYWxlKG4uem9vbVNjYWxlVHh0LHkseCkpLHUuaGlkZU91dHNpZGVSYW5nZVBvaW50cyhuLmNsaXBPbkF4aXNGYWxzZVRyYWNlcyxuKSxuLnhTY2FsZUZhY3Rvcj15LG4ueVNjYWxlRmFjdG9yPXh9fX19ZnVuY3Rpb24gVXQodCxlLHIpe3JldHVybiB0LmZpeGVkcmFuZ2U/MDppdCYmdHQueGFIYXNoW3QuX2lkXT9lOm90JiYodHQuaXNTdWJwbG90Q29uc3RyYWluZWQ/dHQueGFIYXNoOnR0LnlhSGFzaClbdC5faWRdP3I6MH1mdW5jdGlvbiBxdCh0LGUpe3JldHVybiBlPyh0LnJhbmdlPXQuX3Iuc2xpY2UoKSxrKHQsZSksSHQodCxlKSk6MH1mdW5jdGlvbiBIdCh0LGUscil7cmV0dXJuIHQuX2xlbmd0aCooMS1lKSpnW3J8fHQuY29uc3RyYWludG93YXJkfHwibWlkZGxlIl19cmV0dXJuIFMubGVuZ3RoKkUubGVuZ3RoIT0xJiZxKHZ0LGZ1bmN0aW9uKGUpe2lmKHQuX2NvbnRleHQuX3Njcm9sbFpvb20uY2FydGVzaWFufHx0Ll9mdWxsTGF5b3V0Ll9lbmFibGVzY3JvbGx6b29tKXtpZihFdCgpLHQuX3RyYW5zaXRpb25pbmdXaXRoRHVyYXRpb24pcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx2b2lkIGUuc3RvcFByb3BhZ2F0aW9uKCk7ZHQoKSxjbGVhclRpbWVvdXQoSXQpO3ZhciByPS1lLmRlbHRhWTtpZihpc0Zpbml0ZShyKXx8KHI9ZS53aGVlbERlbHRhLzEwKSxpc0Zpbml0ZShyKSl7dmFyIG4sYT1NYXRoLmV4cCgtTWF0aC5taW4oTWF0aC5tYXgociwtMjApLDIwKS8yMDApLGk9UnQuZHJhZ2xheWVyLnNlbGVjdCgiLm5zZXdkcmFnIikubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89KGUuY2xpZW50WC1pLmxlZnQpL2kud2lkdGgsbD0oaS5ib3R0b20tZS5jbGllbnRZKS9pLmhlaWdodDtpZihpdCl7Zm9yKEV8fChvPS41KSxuPTA7bjxYLmxlbmd0aDtuKyspYyhYW25dLG8sYSk7QnQoIngiKSx6dFsyXSo9YSx6dFswXSs9enRbMl0qbyooMS9hLTEpfWlmKG90KXtmb3IoU3x8KGw9LjUpLG49MDtuPFoubGVuZ3RoO24rKyljKFpbbl0sbCxhKTtCdCgieSIpLHp0WzNdKj1hLHp0WzFdKz16dFszXSooMS1sKSooMS9hLTEpfVZ0KHp0KSxOdCgpLHQuZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIix1dCksSXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3p0PVswLDAsUSwkXSxqdCgpfSxEdCksZS5wcmV2ZW50RGVmYXVsdCgpfWVsc2Ugcy5sb2coIkRpZCBub3QgZmluZCB3aGVlbCBtb3Rpb24gYXR0cmlidXRlczogIixlKX1mdW5jdGlvbiBjKHQsZSxyKXtpZighdC5maXhlZHJhbmdlKXt2YXIgbj1zLnNpbXBsZU1hcCh0LnJhbmdlLHQucjJsKSxhPW5bMF0rKG5bMV0tblswXSkqZTt0LnJhbmdlPW4ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0LmwycihhKyhlLWEpKnIpfSl9fX0pLHZ0fSxtYWtlRHJhZ2dlcjpFLG1ha2VSZWN0RHJhZ2dlcjpMLG1ha2Vab29tYm94OkksbWFrZUNvcm5lcnM6RCx1cGRhdGVab29tYm94OlIseHlDb3JuZXJzOlYsdHJhbnNpdGlvblpvb21ib3g6RixyZW1vdmVab29tYm94OkIsc2hvd0RvdWJsZUNsaWNrTm90aWZpZXI6TixhdHRhY2hXaGVlbEV2ZW50SGFuZGxlcjpxfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiOjYxMCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2NsZWFyX2dsX2NhbnZhc2VzIjo3MDIsIi4uLy4uL2xpYi9zZXRjdXJzb3IiOjczNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3RfYXBpL3N1YnJvdXRpbmVzIjo3NTYsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL3Bsb3RzIjo4MjYsIi4vYXhlcyI6NzY1LCIuL2F4aXNfaWRzIjo3NjgsIi4vY29uc3RhbnRzIjo3NzEsIi4vc2NhbGVfem9vbSI6NzgxLCIuL3NlbGVjdCI6NzgyLGQzOjE2NSwiaGFzLXBhc3NpdmUtZXZlbnRzIjo0MTMsdGlueWNvbG9yMjo1MzZ9XSw3NzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiKSxvPXQoIi4uLy4uL2xpYi9zZXRjdXJzb3IiKSxzPXQoIi4vZHJhZ2JveCIpLm1ha2VEcmFnQm94LGw9dCgiLi9jb25zdGFudHMiKS5EUkFHR0VSU0laRTtyLmluaXRJbnRlcmFjdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtpZih0Ll9jb250ZXh0LnN0YXRpY1Bsb3Qpbi5zZWxlY3QodCkuc2VsZWN0QWxsKCIuZHJhZyIpLnJlbW92ZSgpO2Vsc2UgaWYoZS5faGFzKCJjYXJ0ZXNpYW4iKXx8ZS5faGFzKCJzcGxvbSIpKXtPYmplY3Qua2V5cyhlLl9wbG90c3x8e30pLnNvcnQoZnVuY3Rpb24odCxyKXtpZigoZS5fcGxvdHNbdF0ubWFpbnBsb3QmJiEwKT09PShlLl9wbG90c1tyXS5tYWlucGxvdCYmITApKXt2YXIgbj10LnNwbGl0KCJ5IiksYT1yLnNwbGl0KCJ5Iik7cmV0dXJuIG5bMF09PT1hWzBdP051bWJlcihuWzFdfHwxKS1OdW1iZXIoYVsxXXx8MSk6TnVtYmVyKG5bMF18fDEpLU51bWJlcihhWzBdfHwxKX1yZXR1cm4gZS5fcGxvdHNbdF0ubWFpbnBsb3Q/MTotMX0pLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIG49ZS5fcGxvdHNbcl0sbz1uLnhheGlzLGM9bi55YXhpcztpZighbi5tYWlucGxvdCl7dmFyIHU9cyh0LG4sby5fb2Zmc2V0LGMuX29mZnNldCxvLl9sZW5ndGgsYy5fbGVuZ3RoLCJucyIsImV3Iik7dS5vbm1vdXNlbW92ZT1mdW5jdGlvbihlKXt0Ll9mdWxsTGF5b3V0Ll9yZWhvdmVyPWZ1bmN0aW9uKCl7dC5fZnVsbExheW91dC5faG92ZXJzdWJwbG90PT09ciYmdC5fZnVsbExheW91dC5fcGxvdHNbcl0mJmEuaG92ZXIodCxlLHIpfSxhLmhvdmVyKHQsZSxyKSx0Ll9mdWxsTGF5b3V0Ll9sYXN0aG92ZXI9dSx0Ll9mdWxsTGF5b3V0Ll9ob3ZlcnN1YnBsb3Q9cn0sdS5vbm1vdXNlb3V0PWZ1bmN0aW9uKGUpe3QuX2RyYWdnaW5nfHwodC5fZnVsbExheW91dC5faG92ZXJzdWJwbG90PW51bGwsaS51bmhvdmVyKHQsZSkpfSx0Ll9jb250ZXh0LnNob3dBeGlzRHJhZ0hhbmRsZXMmJihzKHQsbixvLl9vZmZzZXQtbCxjLl9vZmZzZXQtbCxsLGwsIm4iLCJ3Iikscyh0LG4sby5fb2Zmc2V0K28uX2xlbmd0aCxjLl9vZmZzZXQtbCxsLGwsIm4iLCJlIikscyh0LG4sby5fb2Zmc2V0LWwsYy5fb2Zmc2V0K2MuX2xlbmd0aCxsLGwsInMiLCJ3Iikscyh0LG4sby5fb2Zmc2V0K28uX2xlbmd0aCxjLl9vZmZzZXQrYy5fbGVuZ3RoLGwsbCwicyIsImUiKSl9aWYodC5fY29udGV4dC5zaG93QXhpc0RyYWdIYW5kbGVzKXtpZihyPT09by5fbWFpblN1YnBsb3Qpe3ZhciBoPW8uX21haW5MaW5lUG9zaXRpb247InRvcCI9PT1vLnNpZGUmJihoLT1sKSxzKHQsbixvLl9vZmZzZXQrLjEqby5fbGVuZ3RoLGgsLjgqby5fbGVuZ3RoLGwsIiIsImV3Iikscyh0LG4sby5fb2Zmc2V0LGgsLjEqby5fbGVuZ3RoLGwsIiIsInciKSxzKHQsbixvLl9vZmZzZXQrLjkqby5fbGVuZ3RoLGgsLjEqby5fbGVuZ3RoLGwsIiIsImUiKX1pZihyPT09Yy5fbWFpblN1YnBsb3Qpe3ZhciBmPWMuX21haW5MaW5lUG9zaXRpb247InJpZ2h0IiE9PWMuc2lkZSYmKGYtPWwpLHModCxuLGYsYy5fb2Zmc2V0Ky4xKmMuX2xlbmd0aCxsLC44KmMuX2xlbmd0aCwibnMiLCIiKSxzKHQsbixmLGMuX29mZnNldCsuOSpjLl9sZW5ndGgsbCwuMSpjLl9sZW5ndGgsInMiLCIiKSxzKHQsbixmLGMuX29mZnNldCxsLC4xKmMuX2xlbmd0aCwibiIsIiIpfX19KTt2YXIgbz1lLl9ob3ZlcmxheWVyLm5vZGUoKTtvLm9ubW91c2Vtb3ZlPWZ1bmN0aW9uKHIpe3IudGFyZ2V0PXQuX2Z1bGxMYXlvdXQuX2xhc3Rob3ZlcixhLmhvdmVyKHQscixlLl9ob3ZlcnN1YnBsb3QpfSxvLm9uY2xpY2s9ZnVuY3Rpb24oZSl7ZS50YXJnZXQ9dC5fZnVsbExheW91dC5fbGFzdGhvdmVyLGEuY2xpY2sodCxlKX0sby5vbm1vdXNlZG93bj1mdW5jdGlvbihlKXt0Ll9mdWxsTGF5b3V0Ll9sYXN0aG92ZXIub25tb3VzZWRvd24oZSl9LHIudXBkYXRlRngodCl9fSxyLnVwZGF0ZUZ4PWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj0icGFuIj09PWUuZHJhZ21vZGU/Im1vdmUiOiJjcm9zc2hhaXIiO28oZS5fZHJhZ2dlcnMscil9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiOjYxMCwiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9saWIvc2V0Y3Vyc29yIjo3MzcsIi4vY29uc3RhbnRzIjo3NzEsIi4vZHJhZ2JveCI6NzczLGQzOjE2NX1dLDc3NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciBpPWVbdF07aWYoQXJyYXkuaXNBcnJheShpKSlmb3IodmFyIG89bi5zdWJwbG90c1JlZ2lzdHJ5LmNhcnRlc2lhbixzPW8uaWRSZWdleCxsPXIuX3N1YnBsb3RzLGM9bC54YXhpcyx1PWwueWF4aXMsaD1sLmNhcnRlc2lhbixmPXIuX2hhcygiY2FydGVzaWFuIil8fHIuX2hhcygiZ2wyZCIpLHA9MDtwPGkubGVuZ3RoO3ArKyl7dmFyIGQ9aVtwXTtpZihhLmlzUGxhaW5PYmplY3QoZCkpe3ZhciBnPWQueHJlZix2PWQueXJlZixtPXMueC50ZXN0KGcpLHk9cy55LnRlc3Qodik7aWYobXx8eSl7Znx8YS5wdXNoVW5pcXVlKHIuX2Jhc2VQbG90TW9kdWxlcyxvKTt2YXIgeD0hMTttJiYtMT09PWMuaW5kZXhPZihnKSYmKGMucHVzaChnKSx4PSEwKSx5JiYtMT09PXUuaW5kZXhPZih2KSYmKHUucHVzaCh2KSx4PSEwKSx4JiZtJiZ5JiZoLnB1c2goZyt2KX19fX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0sNzc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi9wbG90cyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbD10KCIuLi9nZXRfZGF0YSIpLmdldE1vZHVsZUNhbGNEYXRhLGM9dCgiLi9heGlzX2lkcyIpLHU9dCgiLi9jb25zdGFudHMiKSxoPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIiksZj1pLmVuc3VyZVNpbmdsZTtmdW5jdGlvbiBwKHQsZSxyKXtyZXR1cm4gaS5lbnN1cmVTaW5nbGUodCxlLHIsZnVuY3Rpb24odCl7dC5kYXR1bShyKX0pfWZ1bmN0aW9uIGQodCxlLHIsaSxvKXtmb3IodmFyIGMsaCxmLHA9dS50cmFjZUxheWVyQ2xhc3NlcyxkPXQuX2Z1bGxMYXlvdXQsZz1kLl9tb2R1bGVzLHY9W10sbT1bXSx5PTA7eTxnLmxlbmd0aDt5Kyspe3ZhciB4PShjPWdbeV0pLm5hbWUsYj1hLm1vZHVsZXNbeF0uY2F0ZWdvcmllcztpZihiLnN2Zyl7dmFyIF89Yy5sYXllck5hbWV8fHgrImxheWVyIix3PWMucGxvdDtmPShoPWwocix3KSlbMF0scj1oWzFdLGYubGVuZ3RoJiZ2LnB1c2goe2k6cC5pbmRleE9mKF8pLGNsYXNzTmFtZTpfLHBsb3RNZXRob2Q6dyxjZE1vZHVsZTpmfSksYi56b29tU2NhbGUmJm0ucHVzaCgiLiIrXyl9fXYuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LmktZS5pfSk7dmFyIGs9ZS5wbG90LnNlbGVjdEFsbCgiZy5tbGF5ZXIiKS5kYXRhKHYsZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xhc3NOYW1lfSk7aWYoay5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbih0KXtyZXR1cm4gdC5jbGFzc05hbWV9KS5jbGFzc2VkKCJtbGF5ZXIiLCEwKS5jbGFzc2VkKCJyYW5nZXBsb3QiLGUuaXNSYW5nZVBsb3QpLGsuZXhpdCgpLnJlbW92ZSgpLGsub3JkZXIoKSxrLmVhY2goZnVuY3Rpb24ocil7dmFyIGE9bi5zZWxlY3QodGhpcyksbD1yLmNsYXNzTmFtZTtyLnBsb3RNZXRob2QodCxlLHIuY2RNb2R1bGUsYSxpLG8pLC0xPT09dS5jbGlwT25BeGlzRmFsc2VRdWVyeS5pbmRleE9mKCIuIitsKSYmcy5zZXRDbGlwVXJsKGEsZS5sYXllckNsaXBJZCx0KX0pLGQuX2hhcygic2NhdHRlcmdsIikmJihjPWEuZ2V0TW9kdWxlKCJzY2F0dGVyZ2wiKSxmPWwocixjKVswXSxjLnBsb3QodCxlLGYpKSwhdC5fY29udGV4dC5zdGF0aWNQbG90JiYoZS5faGFzQ2xpcE9uQXhpc0ZhbHNlJiYoZS5jbGlwT25BeGlzRmFsc2VUcmFjZXM9ZS5wbG90LnNlbGVjdEFsbCh1LmNsaXBPbkF4aXNGYWxzZVF1ZXJ5LmpvaW4oIiwiKSkuc2VsZWN0QWxsKCIudHJhY2UiKSksbS5sZW5ndGgpKXt2YXIgVD1lLnBsb3Quc2VsZWN0QWxsKG0uam9pbigiLCIpKS5zZWxlY3RBbGwoIi50cmFjZSIpO2Uuem9vbVNjYWxlUHRzPVQuc2VsZWN0QWxsKCJwYXRoLnBvaW50IiksZS56b29tU2NhbGVUeHQ9VC5zZWxlY3RBbGwoIi50ZXh0cG9pbnQiKX19ZnVuY3Rpb24gZyh0LGUpe3ZhciByPWUucGxvdGdyb3VwLG49ZS5pZCxhPXUubGF5ZXJWYWx1ZTJsYXllckNsYXNzW2UueGF4aXMubGF5ZXJdLGk9dS5sYXllclZhbHVlMmxheWVyQ2xhc3NbZS55YXhpcy5sYXllcl0sbz10Ll9mdWxsTGF5b3V0Ll9oYXNPbmx5TGFyZ2VTcGxvbXM7aWYoZS5tYWlucGxvdCl7dmFyIHM9ZS5tYWlucGxvdGluZm8sbD1zLnBsb3Rncm91cCxoPW4rIi14IixkPW4rIi15IjtlLmdyaWRsYXllcj1zLmdyaWRsYXllcixlLnplcm9saW5lbGF5ZXI9cy56ZXJvbGluZWxheWVyLGYocy5vdmVybGluZXNCZWxvdywicGF0aCIsaCksZihzLm92ZXJsaW5lc0JlbG93LCJwYXRoIixkKSxmKHMub3ZlcmF4ZXNCZWxvdywiZyIsaCksZihzLm92ZXJheGVzQmVsb3csImciLGQpLGUucGxvdD1mKHMub3ZlcnBsb3QsImciLG4pLGYocy5vdmVybGluZXNBYm92ZSwicGF0aCIsaCksZihzLm92ZXJsaW5lc0Fib3ZlLCJwYXRoIixkKSxmKHMub3ZlcmF4ZXNBYm92ZSwiZyIsaCksZihzLm92ZXJheGVzQWJvdmUsImciLGQpLGUueGxpbmVzPWwuc2VsZWN0KCIub3ZlcmxpbmVzLSIrYSkuc2VsZWN0KCIuIitoKSxlLnlsaW5lcz1sLnNlbGVjdCgiLm92ZXJsaW5lcy0iK2kpLnNlbGVjdCgiLiIrZCksZS54YXhpc2xheWVyPWwuc2VsZWN0KCIub3ZlcmF4ZXMtIithKS5zZWxlY3QoIi4iK2gpLGUueWF4aXNsYXllcj1sLnNlbGVjdCgiLm92ZXJheGVzLSIraSkuc2VsZWN0KCIuIitkKX1lbHNlIGlmKG8pZS54bGluZXM9ZihyLCJwYXRoIiwieGxpbmVzLWFib3ZlIiksZS55bGluZXM9ZihyLCJwYXRoIiwieWxpbmVzLWFib3ZlIiksZS54YXhpc2xheWVyPWYociwiZyIsInhheGlzbGF5ZXItYWJvdmUiKSxlLnlheGlzbGF5ZXI9ZihyLCJnIiwieWF4aXNsYXllci1hYm92ZSIpO2Vsc2V7dmFyIGc9ZihyLCJnIiwibGF5ZXItc3VicGxvdCIpO2Uuc2hhcGVsYXllcj1mKGcsImciLCJzaGFwZWxheWVyIiksZS5pbWFnZWxheWVyPWYoZywiZyIsImltYWdlbGF5ZXIiKSxlLmdyaWRsYXllcj1mKHIsImciLCJncmlkbGF5ZXIiKSxlLnplcm9saW5lbGF5ZXI9ZihyLCJnIiwiemVyb2xpbmVsYXllciIpLGYociwicGF0aCIsInhsaW5lcy1iZWxvdyIpLGYociwicGF0aCIsInlsaW5lcy1iZWxvdyIpLGUub3ZlcmxpbmVzQmVsb3c9ZihyLCJnIiwib3ZlcmxpbmVzLWJlbG93IiksZihyLCJnIiwieGF4aXNsYXllci1iZWxvdyIpLGYociwiZyIsInlheGlzbGF5ZXItYmVsb3ciKSxlLm92ZXJheGVzQmVsb3c9ZihyLCJnIiwib3ZlcmF4ZXMtYmVsb3ciKSxlLnBsb3Q9ZihyLCJnIiwicGxvdCIpLGUub3ZlcnBsb3Q9ZihyLCJnIiwib3ZlcnBsb3QiKSxlLnhsaW5lcz1mKHIsInBhdGgiLCJ4bGluZXMtYWJvdmUiKSxlLnlsaW5lcz1mKHIsInBhdGgiLCJ5bGluZXMtYWJvdmUiKSxlLm92ZXJsaW5lc0Fib3ZlPWYociwiZyIsIm92ZXJsaW5lcy1hYm92ZSIpLGYociwiZyIsInhheGlzbGF5ZXItYWJvdmUiKSxmKHIsImciLCJ5YXhpc2xheWVyLWFib3ZlIiksZS5vdmVyYXhlc0Fib3ZlPWYociwiZyIsIm92ZXJheGVzLWFib3ZlIiksZS54bGluZXM9ci5zZWxlY3QoIi54bGluZXMtIithKSxlLnlsaW5lcz1yLnNlbGVjdCgiLnlsaW5lcy0iK2kpLGUueGF4aXNsYXllcj1yLnNlbGVjdCgiLnhheGlzbGF5ZXItIithKSxlLnlheGlzbGF5ZXI9ci5zZWxlY3QoIi55YXhpc2xheWVyLSIraSl9b3x8KHAoZS5ncmlkbGF5ZXIsImciLGUueGF4aXMuX2lkKSxwKGUuZ3JpZGxheWVyLCJnIixlLnlheGlzLl9pZCksZS5ncmlkbGF5ZXIuc2VsZWN0QWxsKCJnIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdfSkuc29ydChjLmlkU29ydCkpLGUueGxpbmVzLnN0eWxlKCJmaWxsIiwibm9uZSIpLmNsYXNzZWQoImNyaXNwIiwhMCksZS55bGluZXMuc3R5bGUoImZpbGwiLCJub25lIikuY2xhc3NlZCgiY3Jpc3AiLCEwKX1mdW5jdGlvbiB2KHQsZSl7aWYodCl7dmFyIHI9e307Zm9yKHZhciBhIGluIHQuZWFjaChmdW5jdGlvbih0KXt2YXIgYT10WzBdO24uc2VsZWN0KHRoaXMpLnJlbW92ZSgpLG0oYSxlKSxyW2FdPSEwfSksZS5fcGxvdHMpZm9yKHZhciBpPWUuX3Bsb3RzW2FdLm92ZXJsYXlzfHxbXSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBzPWlbb107cltzLmlkXSYmcy5wbG90LnNlbGVjdEFsbCgiLnRyYWNlIikucmVtb3ZlKCl9fX1mdW5jdGlvbiBtKHQsZSl7ZS5fZHJhZ2dlcnMuc2VsZWN0QWxsKCJnLiIrdCkucmVtb3ZlKCksZS5fZGVmcy5zZWxlY3QoIiNjbGlwIitlLl91aWQrdCsicGxvdCIpLnJlbW92ZSgpfXIubmFtZT0iY2FydGVzaWFuIixyLmF0dHI9WyJ4YXhpcyIsInlheGlzIl0sci5pZFJvb3Q9WyJ4IiwieSJdLHIuaWRSZWdleD11LmlkUmVnZXgsci5hdHRyUmVnZXg9dS5hdHRyUmVnZXgsci5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLHIubGF5b3V0QXR0cmlidXRlcz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksci5zdXBwbHlMYXlvdXREZWZhdWx0cz10KCIuL2xheW91dF9kZWZhdWx0cyIpLHIudHJhbnNpdGlvbkF4ZXM9dCgiLi90cmFuc2l0aW9uX2F4ZXMiKSxyLmZpbmFsaXplU3VicGxvdHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsbz1lLl9zdWJwbG90cyxzPW8ueGF4aXMsbD1vLnlheGlzLGg9by5jYXJ0ZXNpYW4sZj1oLmNvbmNhdChvLmdsMmR8fFtdKSxwPXt9LGQ9e307Zm9yKHI9MDtyPGYubGVuZ3RoO3IrKyl7dmFyIGc9ZltyXS5zcGxpdCgieSIpO3BbZ1swXV09MSxkWyJ5IitnWzFdXT0xfWZvcihyPTA7cjxzLmxlbmd0aDtyKyspcFtuPXNbcl1dfHwoYT0odFtjLmlkMm5hbWUobildfHx7fSkuYW5jaG9yLHUuaWRSZWdleC55LnRlc3QoYSl8fChhPSJ5IiksaC5wdXNoKG4rYSksZi5wdXNoKG4rYSksZFthXXx8KGRbYV09MSxpLnB1c2hVbmlxdWUobCxhKSkpO2ZvcihyPTA7cjxsLmxlbmd0aDtyKyspZFthPWxbcl1dfHwobj0odFtjLmlkMm5hbWUoYSldfHx7fSkuYW5jaG9yLHUuaWRSZWdleC54LnRlc3Qobil8fChuPSJ4IiksaC5wdXNoKG4rYSksZi5wdXNoKG4rYSkscFtuXXx8KHBbbl09MSxpLnB1c2hVbmlxdWUocyxuKSkpO2lmKCFmLmxlbmd0aCl7Zm9yKHZhciB2IGluIG49IiIsYT0iIix0KXtpZih1LmF0dHJSZWdleC50ZXN0KHYpKSJ4Ij09PXYuY2hhckF0KDApPyghbnx8K3Yuc3Vic3RyKDUpPCtuLnN1YnN0cig1KSkmJihuPXYpOighYXx8K3Yuc3Vic3RyKDUpPCthLnN1YnN0cig1KSkmJihhPXYpfW49bj9jLm5hbWUyaWQobik6IngiLGE9YT9jLm5hbWUyaWQoYSk6InkiLHMucHVzaChuKSxsLnB1c2goYSksaC5wdXNoKG4rYSl9fSxyLnBsb3Q9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaT10Ll9mdWxsTGF5b3V0LG89aS5fc3VicGxvdHMuY2FydGVzaWFuLHM9dC5jYWxjZGF0YTtpZighQXJyYXkuaXNBcnJheShlKSlmb3IoZT1bXSxhPTA7YTxzLmxlbmd0aDthKyspZS5wdXNoKGEpO2ZvcihhPTA7YTxvLmxlbmd0aDthKyspe2Zvcih2YXIgbCxjPW9bYV0sdT1pLl9wbG90c1tjXSxoPVtdLGY9MDtmPHMubGVuZ3RoO2YrKyl7dmFyIHA9c1tmXSxnPXBbMF0udHJhY2U7Zy54YXhpcytnLnlheGlzPT09YyYmKCgtMSE9PWUuaW5kZXhPZihnLmluZGV4KXx8Zy5jYXJwZXQpJiYobCYmbFswXS50cmFjZS54YXhpcytsWzBdLnRyYWNlLnlheGlzPT09YyYmLTEhPT1bInRvbmV4dHgiLCJ0b25leHR5IiwidG9uZXh0Il0uaW5kZXhPZihnLmZpbGwpJiYtMT09PWguaW5kZXhPZihsKSYmaC5wdXNoKGwpLGgucHVzaChwKSksbD1wKX1kKHQsdSxoLHIsbil9fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGksbyxzPW4uX3Bsb3RzfHx7fSxsPWUuX3Bsb3RzfHx7fSx1PW4uX3N1YnBsb3RzfHx7fTtpZihuLl9oYXNPbmx5TGFyZ2VTcGxvbXMmJiFlLl9oYXNPbmx5TGFyZ2VTcGxvbXMpZm9yKG8gaW4gcykoYT1zW29dKS5wbG90Z3JvdXAmJmEucGxvdGdyb3VwLnJlbW92ZSgpO3ZhciBoPW4uX2hhcyYmbi5faGFzKCJnbCIpLGY9ZS5faGFzJiZlLl9oYXMoImdsIik7aWYoaCYmIWYpZm9yKG8gaW4gcykoYT1zW29dKS5fc2NlbmUmJmEuX3NjZW5lLmRlc3Ryb3koKTtpZih1LnhheGlzJiZ1LnlheGlzKXt2YXIgcD1jLmxpc3RJZHMoe19mdWxsTGF5b3V0Om59KTtmb3IoaT0wO2k8cC5sZW5ndGg7aSsrKXt2YXIgZD1wW2ldO2VbYy5pZDJuYW1lKGQpXXx8bi5faW5mb2xheWVyLnNlbGVjdEFsbCgiLmctIitkKyJ0aXRsZSIpLnJlbW92ZSgpfX12YXIgZz1uLl9oYXMmJm4uX2hhcygiY2FydGVzaWFuIikseT1lLl9oYXMmJmUuX2hhcygiY2FydGVzaWFuIik7aWYoZyYmIXkpdihuLl9jYXJ0ZXNpYW5sYXllci5zZWxlY3RBbGwoIi5zdWJwbG90Iiksbiksbi5fZGVmcy5zZWxlY3RBbGwoIi5heGVzY2xpcCIpLnJlbW92ZSgpLGRlbGV0ZSBuLl9heGlzQ29uc3RyYWludEdyb3VwcztlbHNlIGlmKHUuY2FydGVzaWFuKWZvcihpPTA7aTx1LmNhcnRlc2lhbi5sZW5ndGg7aSsrKXt2YXIgeD11LmNhcnRlc2lhbltpXTtpZighbFt4XSl7dmFyIGI9Ii4iK3grIiwuIit4KyIteCwuIit4KyIteSI7bi5fY2FydGVzaWFubGF5ZXIuc2VsZWN0QWxsKGIpLnJlbW92ZSgpLG0oeCxuKX19fSxyLmRyYXdGcmFtZXdvcms9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhLGksbyxzPXQuX2Z1bGxMYXlvdXQsbD1zLl9zdWJwbG90cy5jYXJ0ZXNpYW4sYz1sLmxlbmd0aCx1PVtdLGg9W107Zm9yKGU9MDtlPGM7ZSsrKXtuPWxbZV0sYT1zLl9wbG90c1tuXSxpPWEueGF4aXMsbz1hLnlheGlzO3ZhciBmPWkuX21haW5BeGlzLHA9by5fbWFpbkF4aXMsZD1mLl9pZCtwLl9pZCxnPXMuX3Bsb3RzW2RdO2Eub3ZlcmxheXM9W10sZCE9PW4mJmc/KGEubWFpbnBsb3Q9ZCxhLm1haW5wbG90aW5mbz1nLGgucHVzaChuKSk6KGEubWFpbnBsb3Q9dm9pZCAwLGEubWFpblBsb3RpbmZvPXZvaWQgMCx1LnB1c2gobikpfWZvcihlPTA7ZTxoLmxlbmd0aDtlKyspbj1oW2VdLChhPXMuX3Bsb3RzW25dKS5tYWlucGxvdGluZm8ub3ZlcmxheXMucHVzaChhKTt2YXIgdj11LmNvbmNhdChoKSxtPW5ldyBBcnJheShjKTtmb3IoZT0wO2U8YztlKyspe249dltlXSxhPXMuX3Bsb3RzW25dLGk9YS54YXhpcyxvPWEueWF4aXM7dmFyIHk9W24saS5sYXllcixvLmxheWVyLGkub3ZlcmxheWluZ3x8IiIsby5vdmVybGF5aW5nfHwiIl07Zm9yKHI9MDtyPGEub3ZlcmxheXMubGVuZ3RoO3IrKyl5LnB1c2goYS5vdmVybGF5c1tyXS5pZCk7bVtlXT15fXJldHVybiBtfSh0KSxhPWUuX2NhcnRlc2lhbmxheWVyLnNlbGVjdEFsbCgiLnN1YnBsb3QiKS5kYXRhKHIsU3RyaW5nKTthLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiJzdWJwbG90ICIrdFswXX0pLGEub3JkZXIoKSxhLmV4aXQoKS5jYWxsKHYsZSksYS5lYWNoKGZ1bmN0aW9uKHIpe3ZhciBhPXJbMF0saT1lLl9wbG90c1thXTtpLnBsb3Rncm91cD1uLnNlbGVjdCh0aGlzKSxnKHQsaSksaS5kcmFnbGF5ZXI9ZihlLl9kcmFnZ2VycywiZyIsYSl9KX0sci5yYW5nZVBsb3Q9ZnVuY3Rpb24odCxlLHIpe2codCxlKSxkKHQsZSxyKSxvLnN0eWxlKHQpfSxyLnRvU1ZHPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQuX2dsaW1hZ2VzLHI9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCIuc3ZnLWNvbnRhaW5lciIpO3IuZmlsdGVyKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9PT1yLnNpemUoKS0xfSkuc2VsZWN0QWxsKCIuZ2wtY2FudmFzLWNvbnRleHQsIC5nbC1jYW52YXMtZm9jdXMiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50b0RhdGFVUkwoImltYWdlL3BuZyIpO2UuYXBwZW5kKCJzdmc6aW1hZ2UiKS5hdHRyKHt4bWxuczpoLnN2ZywieGxpbms6aHJlZiI6dCxwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIix4OjAseTowLHdpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSl9KX0sci51cGRhdGVGeD10KCIuL2dyYXBoX2ludGVyYWN0IikudXBkYXRlRnh9LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9nZXRfZGF0YSI6ODAwLCIuLi9wbG90cyI6ODI2LCIuL2F0dHJpYnV0ZXMiOjc2MywiLi9heGlzX2lkcyI6NzY4LCIuL2NvbnN0YW50cyI6NzcxLCIuL2dyYXBoX2ludGVyYWN0Ijo3NzQsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi9sYXlvdXRfZGVmYXVsdHMiOjc3OCwiLi90cmFuc2l0aW9uX2F4ZXMiOjc4NyxkMzoxNjV9XSw3Nzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9hdHRyaWJ1dGVzIikuZGFzaCxvPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHM9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5LGw9KHQoIi4uLy4uL2NvbnN0YW50cy9kb2NzIikuRk9STUFUX0xJTkssdCgiLi4vLi4vY29uc3RhbnRzL2RvY3MiKS5EQVRFX0ZPUk1BVF9MSU5LLHQoIi4vY29uc3RhbnRzIikpO2UuZXhwb3J0cz17dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6InBsb3QifSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6YS5kZWZhdWx0TGluZSxlZGl0VHlwZToidGlja3MifSx0aXRsZTp7dGV4dDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToidGlja3MifSxmb250Om4oe2VkaXRUeXBlOiJ0aWNrcyJ9KSxzdGFuZG9mZjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToidGlja3MifSxlZGl0VHlwZToidGlja3MifSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyItIiwibGluZWFyIiwibG9nIiwiZGF0ZSIsImNhdGVnb3J5IiwibXVsdGljYXRlZ29yeSJdLGRmbHQ6Ii0iLGVkaXRUeXBlOiJjYWxjIixfbm9UZW1wbGF0aW5nOiEwfSxhdXRvcmFuZ2U6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITAsITEsInJldmVyc2VkIl0sZGZsdDohMCxlZGl0VHlwZToiYXhyYW5nZSIsaW1wbGllZEVkaXRzOnsicmFuZ2VbMF0iOnZvaWQgMCwicmFuZ2VbMV0iOnZvaWQgMH19LHJhbmdlbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9ybWFsIiwidG96ZXJvIiwibm9ubmVnYXRpdmUiXSxkZmx0OiJub3JtYWwiLGVkaXRUeXBlOiJwbG90In0scmFuZ2U6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToiYW55IixlZGl0VHlwZToiYXhyYW5nZSIsaW1wbGllZEVkaXRzOnsiXmF1dG9yYW5nZSI6ITF9LGFuaW06ITB9LHt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJheHJhbmdlIixpbXBsaWVkRWRpdHM6eyJeYXV0b3JhbmdlIjohMX0sYW5pbTohMH1dLGVkaXRUeXBlOiJheHJhbmdlIixpbXBsaWVkRWRpdHM6e2F1dG9yYW5nZTohMX0sYW5pbTohMH0sZml4ZWRyYW5nZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LHNjYWxlYW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6W2wuaWRSZWdleC54LnRvU3RyaW5nKCksbC5pZFJlZ2V4LnkudG9TdHJpbmcoKV0sZWRpdFR5cGU6InBsb3QifSxzY2FsZXJhdGlvOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToicGxvdCJ9LGNvbnN0cmFpbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicmFuZ2UiLCJkb21haW4iXSxkZmx0OiJyYW5nZSIsZWRpdFR5cGU6InBsb3QifSxjb25zdHJhaW50b3dhcmQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxlZnQiLCJjZW50ZXIiLCJyaWdodCIsInRvcCIsIm1pZGRsZSIsImJvdHRvbSJdLGVkaXRUeXBlOiJwbG90In0sbWF0Y2hlczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOltsLmlkUmVnZXgueC50b1N0cmluZygpLGwuaWRSZWdleC55LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJjYWxjIn0sdGlja21vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJsaW5lYXIiLCJhcnJheSJdLGVkaXRUeXBlOiJ0aWNrcyIsaW1wbGllZEVkaXRzOnt0aWNrMDp2b2lkIDAsZHRpY2s6dm9pZCAwfX0sbnRpY2tzOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6InRpY2tzIn0sdGljazA6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6InRpY2tzIixpbXBsaWVkRWRpdHM6e3RpY2ttb2RlOiJsaW5lYXIifX0sZHRpY2s6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6InRpY2tzIixpbXBsaWVkRWRpdHM6e3RpY2ttb2RlOiJsaW5lYXIifX0sdGlja3ZhbHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJ0aWNrcyJ9LHRpY2t0ZXh0Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToidGlja3MifSx0aWNrczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsib3V0c2lkZSIsImluc2lkZSIsIiJdLGVkaXRUeXBlOiJ0aWNrcyJ9LHRpY2tzb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxhYmVscyIsImJvdW5kYXJpZXMiXSxkZmx0OiJsYWJlbHMiLGVkaXRUeXBlOiJ0aWNrcyJ9LG1pcnJvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMCwidGlja3MiLCExLCJhbGwiLCJhbGx0aWNrcyJdLGRmbHQ6ITEsZWRpdFR5cGU6InRpY2tzK2xheW91dHN0eWxlIn0sdGlja2xlbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjUsZWRpdFR5cGU6InRpY2tzIn0sdGlja3dpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToidGlja3MifSx0aWNrY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRpdFR5cGU6InRpY2tzIn0sc2hvd3RpY2tsYWJlbHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InRpY2tzIn0sYXV0b21hcmdpbjp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToidGlja3MifSxzaG93c3Bpa2VzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJtb2RlYmFyIn0sc3Bpa2Vjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bnVsbCxlZGl0VHlwZToibm9uZSJ9LHNwaWtldGhpY2tuZXNzOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MyxlZGl0VHlwZToibm9uZSJ9LHNwaWtlZGFzaDpvKHt9LGkse2RmbHQ6ImRhc2giLGVkaXRUeXBlOiJub25lIn0pLHNwaWtlbW9kZTp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsidG9heGlzIiwiYWNyb3NzIiwibWFya2VyIl0sZGZsdDoidG9heGlzIixlZGl0VHlwZToibm9uZSJ9LHNwaWtlc25hcDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZGF0YSIsImN1cnNvciJdLGRmbHQ6ImRhdGEiLGVkaXRUeXBlOiJub25lIn0sdGlja2ZvbnQ6bih7ZWRpdFR5cGU6InRpY2tzIn0pLHRpY2thbmdsZTp7dmFsVHlwZToiYW5nbGUiLGRmbHQ6ImF1dG8iLGVkaXRUeXBlOiJ0aWNrcyJ9LHRpY2twcmVmaXg6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToidGlja3MifSxzaG93dGlja3ByZWZpeDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYWxsIiwiZmlyc3QiLCJsYXN0Iiwibm9uZSJdLGRmbHQ6ImFsbCIsZWRpdFR5cGU6InRpY2tzIn0sdGlja3N1ZmZpeDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJ0aWNrcyJ9LHNob3d0aWNrc3VmZml4Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwiLCJmaXJzdCIsImxhc3QiLCJub25lIl0sZGZsdDoiYWxsIixlZGl0VHlwZToidGlja3MifSxzaG93ZXhwb25lbnQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJhbGwiLGVkaXRUeXBlOiJ0aWNrcyJ9LGV4cG9uZW50Zm9ybWF0Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJub25lIiwiZSIsIkUiLCJwb3dlciIsIlNJIiwiQiJdLGRmbHQ6IkIiLGVkaXRUeXBlOiJ0aWNrcyJ9LHNlcGFyYXRldGhvdXNhbmRzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJ0aWNrcyJ9LHRpY2tmb3JtYXQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToidGlja3MifSx0aWNrZm9ybWF0c3RvcHM6cygidGlja2Zvcm1hdHN0b3AiLHtlbmFibGVkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJ0aWNrcyJ9LGR0aWNrcmFuZ2U6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToiYW55IixlZGl0VHlwZToidGlja3MifSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToidGlja3MifV0sZWRpdFR5cGU6InRpY2tzIn0sdmFsdWU6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToidGlja3MifSxlZGl0VHlwZToidGlja3MifSksaG92ZXJmb3JtYXQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToibm9uZSJ9LHNob3dsaW5lOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJ0aWNrcytsYXlvdXRzdHlsZSJ9LGxpbmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6YS5kZWZhdWx0TGluZSxlZGl0VHlwZToibGF5b3V0c3R5bGUifSxsaW5ld2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJ0aWNrcytsYXlvdXRzdHlsZSJ9LHNob3dncmlkOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToidGlja3MifSxncmlkY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEubGlnaHRMaW5lLGVkaXRUeXBlOiJ0aWNrcyJ9LGdyaWR3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6InRpY2tzIn0semVyb2xpbmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJ0aWNrcyJ9LHplcm9saW5lY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRpdFR5cGU6InRpY2tzIn0semVyb2xpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRpdFR5cGU6InRpY2tzIn0sc2hvd2RpdmlkZXJzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJ0aWNrcyJ9LGRpdmlkZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6YS5kZWZhdWx0TGluZSxlZGl0VHlwZToidGlja3MifSxkaXZpZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJ0aWNrcyJ9LGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJlZSIsbC5pZFJlZ2V4LngudG9TdHJpbmcoKSxsLmlkUmVnZXgueS50b1N0cmluZygpXSxlZGl0VHlwZToicGxvdCJ9LHNpZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdLGVkaXRUeXBlOiJwbG90In0sb3ZlcmxheWluZzp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJlZSIsbC5pZFJlZ2V4LngudG9TdHJpbmcoKSxsLmlkUmVnZXgueS50b1N0cmluZygpXSxlZGl0VHlwZToicGxvdCJ9LGxheWVyOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhYm92ZSB0cmFjZXMiLCJiZWxvdyB0cmFjZXMiXSxkZmx0OiJhYm92ZSB0cmFjZXMiLGVkaXRUeXBlOiJwbG90In0sZG9tYWluOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6InBsb3QifSx7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToicGxvdCJ9XSxkZmx0OlswLDFdLGVkaXRUeXBlOiJwbG90In0scG9zaXRpb246e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDowLGVkaXRUeXBlOiJwbG90In0sY2F0ZWdvcnlvcmRlcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidHJhY2UiLCJjYXRlZ29yeSBhc2NlbmRpbmciLCJjYXRlZ29yeSBkZXNjZW5kaW5nIiwiYXJyYXkiLCJ0b3RhbCBhc2NlbmRpbmciLCJ0b3RhbCBkZXNjZW5kaW5nIiwibWluIGFzY2VuZGluZyIsIm1pbiBkZXNjZW5kaW5nIiwibWF4IGFzY2VuZGluZyIsIm1heCBkZXNjZW5kaW5nIiwic3VtIGFzY2VuZGluZyIsInN1bSBkZXNjZW5kaW5nIiwibWVhbiBhc2NlbmRpbmciLCJtZWFuIGRlc2NlbmRpbmciLCJtZWRpYW4gYXNjZW5kaW5nIiwibWVkaWFuIGRlc2NlbmRpbmciXSxkZmx0OiJ0cmFjZSIsZWRpdFR5cGU6ImNhbGMifSxjYXRlZ29yeWFycmF5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHVpcmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUifSxlZGl0VHlwZToiY2FsYyIsX2RlcHJlY2F0ZWQ6e2F1dG90aWNrOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToidGlja3MifSx0aXRsZTp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToidGlja3MifSx0aXRsZWZvbnQ6bih7ZWRpdFR5cGU6InRpY2tzIn0pfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjo1OTEsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9hdHRyaWJ1dGVzIjo2MTIsIi4uLy4uL2NvbnN0YW50cy9kb2NzIjo2ODgsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi9jb25zdGFudHMiOjc3MX1dLDc3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxvPXQoIi4uL2xheW91dF9hdHRyaWJ1dGVzIikscz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksbD10KCIuL3R5cGVfZGVmYXVsdHMiKSxjPXQoIi4vYXhpc19kZWZhdWx0cyIpLHU9dCgiLi9jb25zdHJhaW50cyIpLmhhbmRsZUNvbnN0cmFpbnREZWZhdWx0cyxoPXQoIi4vcG9zaXRpb25fZGVmYXVsdHMiKSxmPXQoIi4vYXhpc19pZHMiKSxwPWYuaWQybmFtZSxkPWYubmFtZTJpZCxnPXQoIi4vY29uc3RhbnRzIikuQVhfSURfUEFUVEVSTix2PXQoIi4uLy4uL3JlZ2lzdHJ5IiksbT12LnRyYWNlSXMseT12LmdldENvbXBvbmVudE1ldGhvZDtmdW5jdGlvbiB4KHQsZSxyKXtBcnJheS5pc0FycmF5KHRbZV0pP3RbZV0ucHVzaChyKTp0W2VdPVtyXX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBmLHYsYj17fSxfPXt9LHc9e30saz17fSxUPXt9LE09e30sQT17fSxTPXt9LEU9e30sTD17fTtmb3IoZj0wO2Y8ci5sZW5ndGg7ZisrKXt2YXIgQz1yW2ZdO2lmKG0oQywiY2FydGVzaWFuIil8fG0oQywiZ2wyZCIpKXt2YXIgUCxPO2lmKEMueGF4aXMpUD1wKEMueGF4aXMpLHgoYixQLEMpO2Vsc2UgaWYoQy54YXhlcylmb3Iodj0wO3Y8Qy54YXhlcy5sZW5ndGg7disrKXgoYixwKEMueGF4ZXNbdl0pLEMpO2lmKEMueWF4aXMpTz1wKEMueWF4aXMpLHgoYixPLEMpO2Vsc2UgaWYoQy55YXhlcylmb3Iodj0wO3Y8Qy55YXhlcy5sZW5ndGg7disrKXgoYixwKEMueWF4ZXNbdl0pLEMpO2lmKCJmdW5uZWwiPT09Qy50eXBlPyJoIj09PUMub3JpZW50YXRpb24/KFAmJihfW1BdPSEwKSxPJiYoQVtPXT0hMCkpOk8mJih3W09dPSEwKToiaW1hZ2UiPT09Qy50eXBlPyhPJiYoU1tPXT0hMCksUCYmKFNbUF09ITApKTooTyYmKFRbT109ITAsTVtPXT0hMCksbShDLCJjYXJwZXQiKSYmKCJjYXJwZXQiIT09Qy50eXBlfHxDLl9jaGVhdGVyKXx8UCYmKGtbUF09ITApKSwiY2FycGV0Ij09PUMudHlwZSYmQy5fY2hlYXRlciYmUCYmKF9bUF09ITApLG0oQywiMmRNYXAiKSYmKEVbUF09ITAsRVtPXT0hMCksbShDLCJvcmllbnRlZCIpKUxbImgiPT09Qy5vcmllbnRhdGlvbj9POlBdPSEwfX12YXIgej1lLl9zdWJwbG90cyxJPXoueGF4aXMsRD16LnlheGlzLFI9bi5zaW1wbGVNYXAoSSxwKSxGPW4uc2ltcGxlTWFwKEQscCksQj1SLmNvbmNhdChGKSxOPWEuYmFja2dyb3VuZDtJLmxlbmd0aCYmRC5sZW5ndGgmJihOPW4uY29lcmNlKHQsZSxvLCJwbG90X2JnY29sb3IiKSk7dmFyIGosVixVLHEsSCxHPWEuY29tYmluZShOLGUucGFwZXJfYmdjb2xvcik7ZnVuY3Rpb24gWSgpe3ZhciB0PWJbal18fFtdO0guX3RyYWNlSW5kaWNlcz10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5fZXhwYW5kZWRJbmRleH0pLEguX2FubkluZGljZXM9W10sSC5fc2hhcGVJbmRpY2VzPVtdLEguX2ltZ0luZGljZXM9W10sSC5fc3VicGxvdHNXaXRoPVtdLEguX2NvdW50ZXJBeGVzPVtdLEguX25hbWU9SC5fYXR0cj1qLEguX2lkPVZ9ZnVuY3Rpb24gVyh0LGUpe3JldHVybiBuLmNvZXJjZShxLEgscyx0LGUpfWZ1bmN0aW9uIFgodCxlKXtyZXR1cm4gbi5jb2VyY2UyKHEsSCxzLHQsZSl9ZnVuY3Rpb24gWih0KXtyZXR1cm4ieCI9PT10P0Q6SX1mdW5jdGlvbiBKKGUscil7Zm9yKHZhciBuPSJ4Ij09PWU/UjpGLGE9W10saT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO289PT1yfHwodFtvXXx8e30pLm92ZXJsYXlpbmd8fGEucHVzaChkKG8pKX1yZXR1cm4gYX12YXIgSz17eDpaKCJ4IikseTpaKCJ5Iil9LFE9Sy54LmNvbmNhdChLLnkpLCQ9e30sdHQ9W107ZnVuY3Rpb24gZXQoKXt2YXIgdD1xLm1hdGNoZXM7Zy50ZXN0KHQpJiYtMT09PVEuaW5kZXhPZih0KSYmKCRbdF09cS50eXBlLHR0PU9iamVjdC5rZXlzKCQpKX1mb3IoZj0wO2Y8Qi5sZW5ndGg7ZisrKXtqPUJbZl0sVj1kKGopLFU9ai5jaGFyQXQoMCksbi5pc1BsYWluT2JqZWN0KHRbal0pfHwodFtqXT17fSkscT10W2pdLEg9aS5uZXdDb250YWluZXIoZSxqLFUrImF4aXMiKSxZKCk7dmFyIHJ0PSJ4Ij09PVUmJiFrW2pdJiZfW2pdfHwieSI9PT1VJiYhVFtqXSYmd1tqXSxudD0ieSI9PT1VJiYoIU1bal0mJkFbal18fFNbal0pLGF0PXtsZXR0ZXI6VSxmb250OmUuZm9udCxvdXRlclRpY2tzOkVbal0sc2hvd0dyaWQ6IUxbal0sZGF0YTpiW2pdfHxbXSxiZ0NvbG9yOkcsY2FsZW5kYXI6ZS5jYWxlbmRhcixhdXRvbWFyZ2luOiEwLHZpc2libGVEZmx0OnJ0LHJldmVyc2VEZmx0Om50LHNwbG9tU3Rhc2g6KChlLl9zcGxvbUF4ZXN8fHt9KVtVXXx8e30pW1ZdfTtXKCJ1aXJldmlzaW9uIixlLnVpcmV2aXNpb24pLGwocSxILFcsYXQpLGMocSxILFcsYXQsZSk7dmFyIGl0PVgoInNwaWtlY29sb3IiKSxvdD1YKCJzcGlrZXRoaWNrbmVzcyIpLHN0PVgoInNwaWtlZGFzaCIpLGx0PVgoInNwaWtlbW9kZSIpLGN0PVgoInNwaWtlc25hcCIpO1coInNob3dzcGlrZXMiLCEhKGl0fHxvdHx8c3R8fGx0fHxjdCkpfHwoZGVsZXRlIEguc3Bpa2Vjb2xvcixkZWxldGUgSC5zcGlrZXRoaWNrbmVzcyxkZWxldGUgSC5zcGlrZWRhc2gsZGVsZXRlIEguc3Bpa2Vtb2RlLGRlbGV0ZSBILnNwaWtlc25hcCksaChxLEgsVyx7bGV0dGVyOlUsY291bnRlckF4ZXM6S1tVXSxvdmVybGF5YWJsZUF4ZXM6SihVLGopLGdyaWQ6ZS5ncmlkfSksVygidGl0bGUuc3RhbmRvZmYiKSxldCgpLEguX2lucHV0PXF9Zm9yKGY9MDtmPHR0Lmxlbmd0aDspe1Y9dHRbZisrXSxVPShqPXAoVikpLmNoYXJBdCgwKSxuLmlzUGxhaW5PYmplY3QodFtqXSl8fCh0W2pdPXt9KSxxPXRbal0sSD1pLm5ld0NvbnRhaW5lcihlLGosVSsiYXhpcyIpLFkoKTt2YXIgdXQ9e2xldHRlcjpVLGZvbnQ6ZS5mb250LG91dGVyVGlja3M6RVtqXSxzaG93R3JpZDohTFtqXSxkYXRhOltdLGJnQ29sb3I6RyxjYWxlbmRhcjplLmNhbGVuZGFyLGF1dG9tYXJnaW46ITAsdmlzaWJsZURmbHQ6ITEscmV2ZXJzZURmbHQ6ITEsc3Bsb21TdGFzaDooKGUuX3NwbG9tQXhlc3x8e30pW1VdfHx7fSlbVl19O1coInVpcmV2aXNpb24iLGUudWlyZXZpc2lvbiksSC50eXBlPSRbVl18fCJsaW5lYXIiLGMocSxILFcsdXQsZSksaChxLEgsVyx7bGV0dGVyOlUsY291bnRlckF4ZXM6S1tVXSxvdmVybGF5YWJsZUF4ZXM6SihVLGopLGdyaWQ6ZS5ncmlkfSksVygiZml4ZWRyYW5nZSIpLGV0KCksSC5faW5wdXQ9cX12YXIgaHQ9eSgicmFuZ2VzbGlkZXIiLCJoYW5kbGVEZWZhdWx0cyIpLGZ0PXkoInJhbmdlc2VsZWN0b3IiLCJoYW5kbGVEZWZhdWx0cyIpO2ZvcihmPTA7ZjxSLmxlbmd0aDtmKyspaj1SW2ZdLHE9dFtqXSxIPWVbal0saHQodCxlLGopLCJkYXRlIj09PUgudHlwZSYmZnQocSxILGUsRixILmNhbGVuZGFyKSxXKCJmaXhlZHJhbmdlIik7Zm9yKGY9MDtmPEYubGVuZ3RoO2YrKyl7aj1GW2ZdLHE9dFtqXSxIPWVbal07dmFyIHB0PWVbcChILmFuY2hvcildO1coImZpeGVkcmFuZ2UiLHkoInJhbmdlc2xpZGVyIiwiaXNWaXNpYmxlIikocHQpKX12YXIgZHQ9ZS5fYXhpc0NvbnN0cmFpbnRHcm91cHM9W10sZ3Q9ZS5fYXhpc01hdGNoR3JvdXBzPVtdLHZ0PVEuY29uY2F0KHR0KSxtdD1CLmNvbmNhdChuLnNpbXBsZU1hcCh0dCxwKSk7Zm9yKGY9MDtmPG10Lmxlbmd0aDtmKyspe3ZhciB5dCx4dDtVPShqPW10W2ZdKS5jaGFyQXQoMCkscT10W2pdLEg9ZVtqXSx5dD0ieSI9PT1VJiYhcS5oYXNPd25Qcm9wZXJ0eSgic2NhbGVhbmNob3IiKSYmU1tqXT9ILmFuY2hvcjp2b2lkIDAseHQ9IXEuaGFzT3duUHJvcGVydHkoImNvbnN0cmFpbiIpJiZTW2pdPyJkb21haW4iOnZvaWQgMCx1KHEsSCxXLHthbGxBeGlzSWRzOnZ0LGxheW91dE91dDplLHNjYWxlYW5jaG9yRGZsdDp5dCxjb25zdHJhaW5EZmx0Onh0fSl9Zm9yKGY9MDtmPGd0Lmxlbmd0aDtmKyspe3ZhciBidD1ndFtmXSxfdD1udWxsLHd0PW51bGw7Zm9yKFYgaW4gYnQpKEg9ZVtwKFYpXSkubWF0Y2hlc3x8KF90PUgucmFuZ2Usd3Q9SC5hdXRvcmFuZ2UpO2lmKG51bGw9PT1fdHx8bnVsbD09PXd0KWZvcihWIGluIGJ0KXtfdD0oSD1lW3AoVildKS5yYW5nZSx3dD1ILmF1dG9yYW5nZTticmVha31mb3IoViBpbiBidCkoSD1lW3AoVildKS5tYXRjaGVzJiYoSC5yYW5nZT1fdC5zbGljZSgpLEguYXV0b3JhbmdlPXd0KSxILl9tYXRjaEdyb3VwPWJ0O2lmKGR0Lmxlbmd0aClmb3IoViBpbiBidClmb3Iodj0wO3Y8ZHQubGVuZ3RoO3YrKyl7dmFyIGt0PWR0W3ZdO2Zvcih2YXIgVHQgaW4ga3QpVj09PVR0JiYobi53YXJuKCJBeGlzICIrVHQrIiBpcyBzZXQgd2l0aCBib3RoIGEgKnNjYWxlYW5jaG9yKiBhbmQgKm1hdGNoZXMqIGNvbnN0cmFpbnQ7IGlnbm9yaW5nIHRoZSBzY2FsZSBjb25zdHJhaW50LiIpLGRlbGV0ZSBrdFtUdF0sT2JqZWN0LmtleXMoa3QpLmxlbmd0aDwyJiZkdC5zcGxpY2UodiwxKSl9fX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9sYXlvdXRfYXR0cmlidXRlcyI6ODE3LCIuL2F4aXNfZGVmYXVsdHMiOjc2NywiLi9heGlzX2lkcyI6NzY4LCIuL2NvbnN0YW50cyI6NzcxLCIuL2NvbnN0cmFpbnRzIjo3NzIsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi9wb3NpdGlvbl9kZWZhdWx0cyI6NzgwLCIuL3R5cGVfZGVmYXVsdHMiOjc4OH1dLDc3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0aW55Y29sb3IyIikubWl4LGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIikubGlnaHRGcmFjdGlvbixpPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXt2YXIgcz0obz1vfHx7fSkuZGZsdENvbG9yO2Z1bmN0aW9uIGwocixuKXtyZXR1cm4gaS5jb2VyY2UyKHQsZSxvLmF0dHJpYnV0ZXMscixuKX12YXIgYz1sKCJsaW5lY29sb3IiLHMpLHU9bCgibGluZXdpZHRoIik7cigic2hvd2xpbmUiLG8uc2hvd0xpbmV8fCEhY3x8ISF1KXx8KGRlbGV0ZSBlLmxpbmVjb2xvcixkZWxldGUgZS5saW5ld2lkdGgpO3ZhciBoPWwoImdyaWRjb2xvciIsbihzLG8uYmdDb2xvcixvLmJsZW5kfHxhKS50b1JnYlN0cmluZygpKSxmPWwoImdyaWR3aWR0aCIpO2lmKHIoInNob3dncmlkIixvLnNob3dHcmlkfHwhIWh8fCEhZil8fChkZWxldGUgZS5ncmlkY29sb3IsZGVsZXRlIGUuZ3JpZHdpZHRoKSwhby5ub1plcm9MaW5lKXt2YXIgcD1sKCJ6ZXJvbGluZWNvbG9yIixzKSxkPWwoInplcm9saW5ld2lkdGgiKTtyKCJ6ZXJvbGluZSIsby5zaG93R3JpZHx8ISFwfHwhIWQpfHwoZGVsZXRlIGUuemVyb2xpbmVjb2xvcixkZWxldGUgZS56ZXJvbGluZXdpZHRoKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6NTkxLCIuLi8uLi9saWIiOjcxNyx0aW55Y29sb3IyOjUzNn1dLDc4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvLHMsbCxjLHU9aS5jb3VudGVyQXhlc3x8W10saD1pLm92ZXJsYXlhYmxlQXhlc3x8W10sZj1pLmxldHRlcixwPWkuZ3JpZDtwJiYocz1wLl9kb21haW5zW2ZdW3AuX2F4aXNNYXBbZS5faWRdXSxvPXAuX2FuY2hvcnNbZS5faWRdLHMmJihsPXBbZisic2lkZSJdLnNwbGl0KCIgIilbMF0sYz1wLmRvbWFpbltmXVsicmlnaHQiPT09bHx8InRvcCI9PT1sPzE6MF0pKSxzPXN8fFswLDFdLG89b3x8KG4odC5wb3NpdGlvbik/ImZyZWUiOnVbMF18fCJmcmVlIiksbD1sfHwoIngiPT09Zj8iYm90dG9tIjoibGVmdCIpLGM9Y3x8MCwiZnJlZSI9PT1hLmNvZXJjZSh0LGUse2FuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJlZSJdLmNvbmNhdCh1KSxkZmx0Om99fSwiYW5jaG9yIikmJnIoInBvc2l0aW9uIixjKSxhLmNvZXJjZSh0LGUse3NpZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczoieCI9PT1mP1siYm90dG9tIiwidG9wIl06WyJsZWZ0IiwicmlnaHQiXSxkZmx0Omx9fSwic2lkZSIpO3ZhciBkPSExO2lmKGgubGVuZ3RoJiYoZD1hLmNvZXJjZSh0LGUse292ZXJsYXlpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITFdLmNvbmNhdChoKSxkZmx0OiExfX0sIm92ZXJsYXlpbmciKSksIWQpe3ZhciBnPXIoImRvbWFpbiIscyk7Z1swXT5nWzFdLTEvNDA5NiYmKGUuZG9tYWluPXMpLGEubm9uZU9yQWxsKHQuZG9tYWluLGUuZG9tYWluLHMpfXJldHVybiByKCJsYXllciIpLGV9fSx7Ii4uLy4uL2xpYiI6NzE3LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sNzgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5GUk9NX0JMO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ciYmKHI9blt0LmNvbnN0cmFpbnRvd2FyZHx8ImNlbnRlciJdKTt2YXIgYT1bdC5yMmwodC5yYW5nZVswXSksdC5yMmwodC5yYW5nZVsxXSldLGk9YVswXSsoYVsxXS1hWzBdKSpyO3QucmFuZ2U9dC5faW5wdXQucmFuZ2U9W3QubDJyKGkrKGFbMF0taSkqZSksdC5sMnIoaSsoYVsxXS1pKSplKV19fSx7Ii4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjY4Nn1dLDc4MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJwb2x5Ym9vbGpzIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi8uLi9saWIvcG9seWdvbiIpLGM9dCgiLi4vLi4vbGliL3Rocm90dGxlIiksdT10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiKS5tYWtlRXZlbnREYXRhLGg9dCgiLi9heGlzX2lkcyIpLmdldEZyb21JZCxmPXQoIi4uLy4uL2xpYi9jbGVhcl9nbF9jYW52YXNlcyIpLHA9dCgiLi4vLi4vcGxvdF9hcGkvc3Vicm91dGluZXMiKS5yZWRyYXdSZWdsVHJhY2VzLGQ9dCgiLi9jb25zdGFudHMiKSxnPWQuTUlOU0VMRUNULHY9bC5maWx0ZXIsbT1sLnRlc3RlcjtmdW5jdGlvbiB5KHQpe3JldHVybiB0Ll9pZH1mdW5jdGlvbiB4KHQsZSxyLG4sYSxpLG8pe3ZhciBzLGwsYyx1LGgsZixwLGQsZyx2PWUuX2hvdmVyZGF0YSxtPWUuX2Z1bGxMYXlvdXQuY2xpY2ttb2RlLmluZGV4T2YoImV2ZW50Iik+LTEseT1bXTtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCYmQXJyYXkuaXNBcnJheSh0KSYmITAhPT10WzBdLmhvdmVyT25Cb3h9KHYpKXtrKHQsZSxpKTt2YXIgeD1mdW5jdGlvbih0LGUpe3ZhciByLG4sYT10WzBdLGk9LTEsbz1bXTtmb3Iobj0wO248ZS5sZW5ndGg7bisrKWlmKHI9ZVtuXSxhLmZ1bGxEYXRhLl9leHBhbmRlZEluZGV4PT09ci5jZFswXS50cmFjZS5fZXhwYW5kZWRJbmRleCl7aWYoITA9PT1hLmhvdmVyT25Cb3gpYnJlYWs7dm9pZCAwIT09YS5wb2ludE51bWJlcj9pPWEucG9pbnROdW1iZXI6dm9pZCAwIT09YS5iaW5OdW1iZXImJihpPWEuYmluTnVtYmVyLG89YS5wb2ludE51bWJlcnMpO2JyZWFrfXJldHVybntwb2ludE51bWJlcjppLHBvaW50TnVtYmVyczpvLHNlYXJjaEluZm86cn19KHYscz1NKGUscixuLGEpKTtpZih4LnBvaW50TnVtYmVycy5sZW5ndGg+MD9mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpPVtdO2ZvcihhPTA7YTx0Lmxlbmd0aDthKyspKHI9dFthXSkuY2RbMF0udHJhY2Uuc2VsZWN0ZWRwb2ludHMmJnIuY2RbMF0udHJhY2Uuc2VsZWN0ZWRwb2ludHMubGVuZ3RoPjAmJmkucHVzaChyKTtpZigxPT09aS5sZW5ndGgmJmlbMF09PT1lLnNlYXJjaEluZm8mJihuPWUuc2VhcmNoSW5mby5jZFswXS50cmFjZSkuc2VsZWN0ZWRwb2ludHMubGVuZ3RoPT09ZS5wb2ludE51bWJlcnMubGVuZ3RoKXtmb3IoYT0wO2E8ZS5wb2ludE51bWJlcnMubGVuZ3RoO2ErKylpZihuLnNlbGVjdGVkcG9pbnRzLmluZGV4T2YoZS5wb2ludE51bWJlcnNbYV0pPDApcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9KHMseCk6ZnVuY3Rpb24odCl7dmFyIGUscixuLGE9MDtmb3Iobj0wO248dC5sZW5ndGg7bisrKWlmKGU9dFtuXSwocj1lLmNkWzBdLnRyYWNlKS5zZWxlY3RlZHBvaW50cyl7aWYoci5zZWxlY3RlZHBvaW50cy5sZW5ndGg+MSlyZXR1cm4hMTtpZigoYSs9ci5zZWxlY3RlZHBvaW50cy5sZW5ndGgpPjEpcmV0dXJuITF9cmV0dXJuIDE9PT1hfShzKSYmKGY9Uyh4KSkpe2ZvcihvJiZvLnJlbW92ZSgpLGc9MDtnPHMubGVuZ3RoO2crKykobD1zW2ddKS5fbW9kdWxlLnNlbGVjdFBvaW50cyhsLCExKTtFKGUscyksVChpKSxtJiZlLmVtaXQoInBsb3RseV9kZXNlbGVjdCIsbnVsbCl9ZWxzZXtmb3IocD10LnNoaWZ0S2V5JiYodm9pZCAwIT09Zj9mOlMoeCkpLGM9ZnVuY3Rpb24odCxlLHIpe3JldHVybntwb2ludE51bWJlcjp0LHNlYXJjaEluZm86ZSxzdWJ0cmFjdDpyfX0oeC5wb2ludE51bWJlcix4LnNlYXJjaEluZm8scCksdT13KGkuc2VsZWN0aW9uRGVmcy5jb25jYXQoW2NdKSksZz0wO2c8cy5sZW5ndGg7ZysrKWlmKGg9TChzW2ddLl9tb2R1bGUuc2VsZWN0UG9pbnRzKHNbZ10sdSksc1tnXSkseS5sZW5ndGgpZm9yKHZhciBiPTA7YjxoLmxlbmd0aDtiKyspeS5wdXNoKGhbYl0pO2Vsc2UgeT1oO0UoZSxzLGQ9e3BvaW50czp5fSksYyYmaSYmaS5zZWxlY3Rpb25EZWZzLnB1c2goYyksbyYmQShpLm1lcmdlZFBvbHlnb25zLG8pLG0mJmUuZW1pdCgicGxvdGx5X3NlbGVjdGVkIixkKX19fWZ1bmN0aW9uIGIodCl7cmV0dXJuInBvaW50TnVtYmVyImluIHQmJiJzZWFyY2hJbmZvImluIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm57eG1pbjowLHhtYXg6MCx5bWluOjAseW1heDowLHB0czpbXSxjb250YWluczpmdW5jdGlvbihlLHIsbixhKXt2YXIgaT10LnNlYXJjaEluZm8uY2RbMF0udHJhY2UuX2V4cGFuZGVkSW5kZXg7cmV0dXJuIGEuY2RbMF0udHJhY2UuX2V4cGFuZGVkSW5kZXg9PT1pJiZuPT09dC5wb2ludE51bWJlcn0saXNSZWN0OiExLGRlZ2VuZXJhdGU6ITEsc3VidHJhY3Q6dC5zdWJ0cmFjdH19ZnVuY3Rpb24gdyh0KXtmb3IodmFyIGU9W10scj1iKHRbMF0pPzA6dFswXVswXVswXSxuPXIsYT1iKHRbMF0pPzA6dFswXVswXVsxXSxpPWEsbz0wO288dC5sZW5ndGg7bysrKWlmKGIodFtvXSkpZS5wdXNoKF8odFtvXSkpO2Vsc2V7dmFyIHM9bC50ZXN0ZXIodFtvXSk7cy5zdWJ0cmFjdD10W29dLnN1YnRyYWN0LGUucHVzaChzKSxyPU1hdGgubWluKHIscy54bWluKSxuPU1hdGgubWF4KG4scy54bWF4KSxhPU1hdGgubWluKGEscy55bWluKSxpPU1hdGgubWF4KGkscy55bWF4KX1yZXR1cm57eG1pbjpyLHhtYXg6bix5bWluOmEseW1heDppLHB0czpbXSxjb250YWluczpmdW5jdGlvbih0LHIsbixhKXtmb3IodmFyIGk9ITEsbz0wO288ZS5sZW5ndGg7bysrKWVbb10uY29udGFpbnModCxyLG4sYSkmJihpPSExPT09ZVtvXS5zdWJ0cmFjdCk7cmV0dXJuIGl9LGlzUmVjdDohMSxkZWdlbmVyYXRlOiExfX1mdW5jdGlvbiBrKHQsZSxyKXt2YXIgbj1lLl9mdWxsTGF5b3V0LGE9ci5wbG90aW5mbyxpPW4uX2xhc3RTZWxlY3RlZFN1YnBsb3QmJm4uX2xhc3RTZWxlY3RlZFN1YnBsb3Q9PT1hLmlkLG89dC5zaGlmdEtleXx8dC5hbHRLZXk7aSYmbyYmYS5zZWxlY3Rpb24mJmEuc2VsZWN0aW9uLnNlbGVjdGlvbkRlZnMmJiFyLnNlbGVjdGlvbkRlZnM/KHIuc2VsZWN0aW9uRGVmcz1hLnNlbGVjdGlvbi5zZWxlY3Rpb25EZWZzLHIubWVyZ2VkUG9seWdvbnM9YS5zZWxlY3Rpb24ubWVyZ2VkUG9seWdvbnMpOm8mJmEuc2VsZWN0aW9ufHxUKHIpLGl8fChDKGUpLG4uX2xhc3RTZWxlY3RlZFN1YnBsb3Q9YS5pZCl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LnBsb3RpbmZvO2Uuc2VsZWN0aW9uPXt9LGUuc2VsZWN0aW9uLnNlbGVjdGlvbkRlZnM9dC5zZWxlY3Rpb25EZWZzPVtdLGUuc2VsZWN0aW9uLm1lcmdlZFBvbHlnb25zPXQubWVyZ2VkUG9seWdvbnM9W119ZnVuY3Rpb24gTSh0LGUscixuKXt2YXIgYSxpLG8scz1bXSxsPWUubWFwKHkpLGM9ci5tYXAoeSk7Zm9yKG89MDtvPHQuY2FsY2RhdGEubGVuZ3RoO28rKylpZighMD09PShpPShhPXQuY2FsY2RhdGFbb10pWzBdLnRyYWNlKS52aXNpYmxlJiZpLl9tb2R1bGUmJmkuX21vZHVsZS5zZWxlY3RQb2ludHMpaWYoIW58fGkuc3VicGxvdCE9PW4mJmkuZ2VvIT09bilpZigic3Bsb20iPT09aS50eXBlJiZpLl94YXhlc1tsWzBdXSYmaS5feWF4ZXNbY1swXV0pe3ZhciB1PXAoaS5fbW9kdWxlLGEsZVswXSxyWzBdKTt1LnNjZW5lPXQuX2Z1bGxMYXlvdXQuX3NwbG9tU2NlbmVzW2kudWlkXSxzLnB1c2godSl9ZWxzZSBpZigic2Fua2V5Ij09PWkudHlwZSl7dmFyIGY9cChpLl9tb2R1bGUsYSxlWzBdLHJbMF0pO3MucHVzaChmKX1lbHNle2lmKC0xPT09bC5pbmRleE9mKGkueGF4aXMpKWNvbnRpbnVlO2lmKC0xPT09Yy5pbmRleE9mKGkueWF4aXMpKWNvbnRpbnVlO3MucHVzaChwKGkuX21vZHVsZSxhLGgodCxpLnhheGlzKSxoKHQsaS55YXhpcykpKX1lbHNlIHMucHVzaChwKGkuX21vZHVsZSxhLGVbMF0sclswXSkpO3JldHVybiBzO2Z1bmN0aW9uIHAodCxlLHIsbil7cmV0dXJue19tb2R1bGU6dCxjZDplLHhheGlzOnIseWF4aXM6bn19fWZ1bmN0aW9uIEEodCxlKXt2YXIgcixuLGE9W107Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGk9dFtyXTthLnB1c2goaS5qb2luKCJMIikrIkwiK2lbMF0pfW49dC5sZW5ndGg+MD8iTSIrYS5qb2luKCJNIikrIloiOiJNMCwwWiIsZS5hdHRyKCJkIixuKX1mdW5jdGlvbiBTKHQpe3ZhciBlPXQuc2VhcmNoSW5mby5jZFswXS50cmFjZSxyPXQucG9pbnROdW1iZXIsbj10LnBvaW50TnVtYmVycyxhPW4ubGVuZ3RoPjA/blswXTpyO3JldHVybiEhZS5zZWxlY3RlZHBvaW50cyYmZS5zZWxlY3RlZHBvaW50cy5pbmRleE9mKGEpPi0xfWZ1bmN0aW9uIEUodCxlLHIpe3ZhciBuLGksbyxzO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBsPWVbbl0uY2RbMF0udHJhY2UuX2Z1bGxJbnB1dCxjPXQuX2Z1bGxMYXlvdXQuX3RyYWNlUHJlR1VJW2wudWlkXXx8e307dm9pZCAwPT09Yy5zZWxlY3RlZHBvaW50cyYmKGMuc2VsZWN0ZWRwb2ludHM9bC5faW5wdXQuc2VsZWN0ZWRwb2ludHN8fG51bGwpfWlmKHIpe3ZhciB1PXIucG9pbnRzfHxbXTtmb3Iobj0wO248ZS5sZW5ndGg7bisrKShzPWVbbl0uY2RbMF0udHJhY2UpLl9pbnB1dC5zZWxlY3RlZHBvaW50cz1zLl9mdWxsSW5wdXQuc2VsZWN0ZWRwb2ludHM9W10scy5fZnVsbElucHV0IT09cyYmKHMuc2VsZWN0ZWRwb2ludHM9W10pO2ZvcihuPTA7bjx1Lmxlbmd0aDtuKyspe3ZhciBoPXVbbl0sZD1oLmRhdGEsZz1oLmZ1bGxEYXRhO2gucG9pbnRJbmRpY2VzPyhbXS5wdXNoLmFwcGx5KGQuc2VsZWN0ZWRwb2ludHMsaC5wb2ludEluZGljZXMpLHMuX2Z1bGxJbnB1dCE9PXMmJltdLnB1c2guYXBwbHkoZy5zZWxlY3RlZHBvaW50cyxoLnBvaW50SW5kaWNlcykpOihkLnNlbGVjdGVkcG9pbnRzLnB1c2goaC5wb2ludEluZGV4KSxzLl9mdWxsSW5wdXQhPT1zJiZnLnNlbGVjdGVkcG9pbnRzLnB1c2goaC5wb2ludEluZGV4KSl9fWVsc2UgZm9yKG49MDtuPGUubGVuZ3RoO24rKylkZWxldGUocz1lW25dLmNkWzBdLnRyYWNlKS5zZWxlY3RlZHBvaW50cyxkZWxldGUgcy5faW5wdXQuc2VsZWN0ZWRwb2ludHMscy5fZnVsbElucHV0IT09cyYmZGVsZXRlIHMuX2Z1bGxJbnB1dC5zZWxlY3RlZHBvaW50czt2YXIgdj0hMTtmb3Iobj0wO248ZS5sZW5ndGg7bisrKXtzPShvPShpPWVbbl0pLmNkKVswXS50cmFjZSxhLnRyYWNlSXMocywicmVnbCIpJiYodj0hMCk7dmFyIG09aS5fbW9kdWxlLHk9bS5zdHlsZU9uU2VsZWN0fHxtLnN0eWxlO3kmJih5KHQsbyxvWzBdLm5vZGUzKSxvWzBdLm5vZGVSYW5nZVBsb3QzJiZ5KHQsbyxvWzBdLm5vZGVSYW5nZVBsb3QzKSl9diYmKGYodCkscCh0KSl9ZnVuY3Rpb24gTCh0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciByPWUuY2Qsbj1lLmNkWzBdLnRyYWNlLGE9MDthPHQubGVuZ3RoO2ErKyl0W2FdPXUodFthXSxuLHIpO3JldHVybiB0fWZ1bmN0aW9uIEModCl7dmFyIGU9KHQuX2Z1bGxMYXlvdXR8fHt9KS5fem9vbWxheWVyO2UmJmUuc2VsZWN0QWxsKCIuc2VsZWN0LW91dGxpbmUiKS5yZW1vdmUoKX1lLmV4cG9ydHM9e3ByZXBTZWxlY3Q6ZnVuY3Rpb24odCxlLHIsYSxsKXt2YXIgdSxoLGYscCx5LGIsXyxTPWEuZ2QsQz1TLl9mdWxsTGF5b3V0LFA9Qy5fem9vbWxheWVyLE89YS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHo9YS5wbG90aW5mbyxJPXoueGF4aXMuX29mZnNldCxEPXoueWF4aXMuX29mZnNldCxSPWUtTy5sZWZ0LEY9ci1PLnRvcCxCPVIsTj1GLGo9Ik0iK1IrIiwiK0YsVj1hLnhheGVzWzBdLl9sZW5ndGgsVT1hLnlheGVzWzBdLl9sZW5ndGgscT1hLnhheGVzLmNvbmNhdChhLnlheGVzKSxIPXQuYWx0S2V5O2sodCxTLGEpLCJsYXNzbyI9PT1sJiYodT12KFtbUixGXV0sZC5CRU5EUFgpKTt2YXIgRz1QLnNlbGVjdEFsbCgicGF0aC5zZWxlY3Qtb3V0bGluZS0iK3ouaWQpLmRhdGEoWzEsMl0pO0cuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuInNlbGVjdC1vdXRsaW5lIHNlbGVjdC1vdXRsaW5lLSIrdCsiIHNlbGVjdC1vdXRsaW5lLSIrei5pZH0pLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0krIiwgIitEKyIpIikuYXR0cigiZCIsaisiWiIpO3ZhciBZLFc9UC5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsInpvb21ib3gtY29ybmVycyIpLnN0eWxlKHtmaWxsOmkuYmFja2dyb3VuZCxzdHJva2U6aS5kZWZhdWx0TGluZSwic3Ryb2tlLXdpZHRoIjoxfSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrSSsiLCAiK0QrIikiKS5hdHRyKCJkIiwiTTAsMFoiKSxYPUMuX3VpZCtkLlNFTEVDVElELFo9W10sSj1NKFMsYS54YXhlcyxhLnlheGVzLGEuc3VicGxvdCk7ZnVuY3Rpb24gSyh0LGUpe3JldHVybiJsb2ciPT09dC50eXBlP3QucDJkKGUpOnQucDJyKGUpfWZ1bmN0aW9uIFEodCl7dmFyIGU9InkiPT09dC5faWQuY2hhckF0KDApPzE6MDtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIEsodCxyW2VdKX19ZnVuY3Rpb24gJCh0LGUpe3JldHVybiB0LWV9WT16LmZpbGxSYW5nZUl0ZW1zP3ouZmlsbFJhbmdlSXRlbXM6InNlbGVjdCI9PT1sP2Z1bmN0aW9uKHQsZSl7dmFyIHI9dC5yYW5nZT17fTtmb3IoeT0wO3k8cS5sZW5ndGg7eSsrKXt2YXIgbj1xW3ldLGE9bi5faWQuY2hhckF0KDApO3Jbbi5faWRdPVtLKG4sZVthKyJtaW4iXSksSyhuLGVbYSsibWF4Il0pXS5zb3J0KCQpfX06ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQubGFzc29Qb2ludHM9e307Zm9yKHk9MDt5PHEubGVuZ3RoO3krKyl7dmFyIGE9cVt5XTtuW2EuX2lkXT1yLmZpbHRlcmVkLm1hcChRKGEpKX19LGEubW92ZUZuPWZ1bmN0aW9uKHQsZSl7Qj1NYXRoLm1heCgwLE1hdGgubWluKFYsdCtSKSksTj1NYXRoLm1heCgwLE1hdGgubWluKFUsZStGKSk7dmFyIHI9TWF0aC5hYnMoQi1SKSxpPU1hdGguYWJzKE4tRik7aWYoInNlbGVjdCI9PT1sKXt2YXIgbz1DLnNlbGVjdGRpcmVjdGlvbjsiaCI9PT0obz0iYW55Ij09PUMuc2VsZWN0ZGlyZWN0aW9uP2k8TWF0aC5taW4oLjYqcixnKT8iaCI6cjxNYXRoLm1pbiguNippLGcpPyJ2IjoiZCI6Qy5zZWxlY3RkaXJlY3Rpb24pPygocD1bW1IsMF0sW1IsVV0sW0IsVV0sW0IsMF1dKS54bWluPU1hdGgubWluKFIsQikscC54bWF4PU1hdGgubWF4KFIsQikscC55bWluPU1hdGgubWluKDAsVSkscC55bWF4PU1hdGgubWF4KDAsVSksVy5hdHRyKCJkIiwiTSIrcC54bWluKyIsIisoRi1nKSsiaC00diIrMipnKyJoNFpNIisocC54bWF4LTEpKyIsIisoRi1nKSsiaDR2IisyKmcrImgtNFoiKSk6InYiPT09bz8oKHA9W1swLEZdLFswLE5dLFtWLE5dLFtWLEZdXSkueG1pbj1NYXRoLm1pbigwLFYpLHAueG1heD1NYXRoLm1heCgwLFYpLHAueW1pbj1NYXRoLm1pbihGLE4pLHAueW1heD1NYXRoLm1heChGLE4pLFcuYXR0cigiZCIsIk0iKyhSLWcpKyIsIitwLnltaW4rInYtNGgiKzIqZysidjRaTSIrKFItZykrIiwiKyhwLnltYXgtMSkrInY0aCIrMipnKyJ2LTRaIikpOiJkIj09PW8mJigocD1bW1IsRl0sW1IsTl0sW0IsTl0sW0IsRl1dKS54bWluPU1hdGgubWluKFIsQikscC54bWF4PU1hdGgubWF4KFIsQikscC55bWluPU1hdGgubWluKEYsTikscC55bWF4PU1hdGgubWF4KEYsTiksVy5hdHRyKCJkIiwiTTAsMFoiKSl9ZWxzZSJsYXNzbyI9PT1sJiYodS5hZGRQdChbQixOXSkscD11LmZpbHRlcmVkKTthLnNlbGVjdGlvbkRlZnMmJmEuc2VsZWN0aW9uRGVmcy5sZW5ndGg/KGY9ZnVuY3Rpb24odCxlLHIpe3JldHVybiByP24uZGlmZmVyZW5jZSh7cmVnaW9uczp0LGludmVydGVkOiExfSx7cmVnaW9uczpbZV0saW52ZXJ0ZWQ6ITF9KS5yZWdpb25zOm4udW5pb24oe3JlZ2lvbnM6dCxpbnZlcnRlZDohMX0se3JlZ2lvbnM6W2VdLGludmVydGVkOiExfSkucmVnaW9uc30oYS5tZXJnZWRQb2x5Z29ucyxwLEgpLHAuc3VidHJhY3Q9SCxoPXcoYS5zZWxlY3Rpb25EZWZzLmNvbmNhdChbcF0pKSk6KGY9W3BdLGg9bShwKSksQShmLEcpLGMudGhyb3R0bGUoWCxkLlNFTEVDVERFTEFZLGZ1bmN0aW9uKCl7dmFyIHQ7Wj1bXTt2YXIgZSxyPVtdO2Zvcih5PTA7eTxKLmxlbmd0aDt5KyspaWYoZT0oYj1KW3ldKS5fbW9kdWxlLnNlbGVjdFBvaW50cyhiLGgpLHIucHVzaChlKSx0PUwoZSxiKSxaLmxlbmd0aClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylaLnB1c2godFtuXSk7ZWxzZSBaPXQ7RShTLEosXz17cG9pbnRzOlp9KSxZKF8scCx1KSxhLmdkLmVtaXQoInBsb3RseV9zZWxlY3RpbmciLF8pfSl9LGEuY2xpY2tGbj1mdW5jdGlvbih0LGUpe3ZhciByPUMuY2xpY2ttb2RlO1cucmVtb3ZlKCksYy5kb25lKFgpLnRoZW4oZnVuY3Rpb24oKXtpZihjLmNsZWFyKFgpLDI9PT10KXtmb3IoRy5yZW1vdmUoKSx5PTA7eTxKLmxlbmd0aDt5KyspKGI9Slt5XSkuX21vZHVsZS5zZWxlY3RQb2ludHMoYiwhMSk7RShTLEopLFQoYSksUy5lbWl0KCJwbG90bHlfZGVzZWxlY3QiLG51bGwpfWVsc2Ugci5pbmRleE9mKCJzZWxlY3QiKT4tMSYmeChlLFMsYS54YXhlcyxhLnlheGVzLGEuc3VicGxvdCxhLEcpLCJldmVudCI9PT1yJiZTLmVtaXQoInBsb3RseV9zZWxlY3RlZCIsdm9pZCAwKTtvLmNsaWNrKFMsZSl9KS5jYXRjaChzLmVycm9yKX0sYS5kb25lRm49ZnVuY3Rpb24oKXtXLnJlbW92ZSgpLGMuZG9uZShYKS50aGVuKGZ1bmN0aW9uKCl7Yy5jbGVhcihYKSxhLmdkLmVtaXQoInBsb3RseV9zZWxlY3RlZCIsXykscCYmYS5zZWxlY3Rpb25EZWZzJiYocC5zdWJ0cmFjdD1ILGEuc2VsZWN0aW9uRGVmcy5wdXNoKHApLGEubWVyZ2VkUG9seWdvbnMubGVuZ3RoPTAsW10ucHVzaC5hcHBseShhLm1lcmdlZFBvbHlnb25zLGYpKSxhLmRvbmVGbkNvbXBsZXRlZCYmYS5kb25lRm5Db21wbGV0ZWQoWil9KS5jYXRjaChzLmVycm9yKX19LGNsZWFyU2VsZWN0OkMsc2VsZWN0T25DbGljazp4fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIjo2MjcsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvY2xlYXJfZ2xfY2FudmFzZXMiOjcwMiwiLi4vLi4vbGliL3BvbHlnb24iOjcyOSwiLi4vLi4vbGliL3Rocm90dGxlIjo3NDIsIi4uLy4uL3Bsb3RfYXBpL3N1YnJvdXRpbmVzIjo3NTYsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vYXhpc19pZHMiOjc2OCwiLi9jb25zdGFudHMiOjc3MSxwb2x5Ym9vbGpzOjQ3NX1dLDc4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2xpYiIpLG89aS5jbGVhbk51bWJlcixzPWkubXMyRGF0ZVRpbWUsbD1pLmRhdGVUaW1lMm1zLGM9aS5lbnN1cmVOdW1iZXIsdT1pLmlzQXJyYXlPclR5cGVkQXJyYXksaD10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIiksZj1oLkZQX1NBRkUscD1oLkJBRE5VTSxkPWguTE9HX0NMSVAsZz10KCIuL2NvbnN0YW50cyIpLHY9dCgiLi9heGlzX2lkcyIpO2Z1bmN0aW9uIG0odCl7cmV0dXJuIE1hdGgucG93KDEwLHQpfWZ1bmN0aW9uIHkodCl7cmV0dXJuIG51bGwhPXR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZT1lfHx7fTt2YXIgcj10Ll9pZHx8IngiLGg9ci5jaGFyQXQoMCk7ZnVuY3Rpb24geChlLHIpe2lmKGU+MClyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5MTjEwO2lmKGU8PTAmJnImJnQucmFuZ2UmJjI9PT10LnJhbmdlLmxlbmd0aCl7dmFyIG49dC5yYW5nZVswXSxhPXQucmFuZ2VbMV07cmV0dXJuLjUqKG4rYS0yKmQqTWF0aC5hYnMobi1hKSl9cmV0dXJuIHB9ZnVuY3Rpb24gYihlLHIsbil7dmFyIG89bChlLG58fHQuY2FsZW5kYXIpO2lmKG89PT1wKXtpZighYShlKSlyZXR1cm4gcDtlPStlO3ZhciBzPU1hdGguZmxvb3IoMTAqaS5tb2QoZSsuMDUsMSkpLGM9TWF0aC5yb3VuZChlLXMvMTApO289bChuZXcgRGF0ZShjKSkrcy8xMH1yZXR1cm4gb31mdW5jdGlvbiBfKGUscixuKXtyZXR1cm4gcyhlLHIsbnx8dC5jYWxlbmRhcil9ZnVuY3Rpb24gdyhlKXtyZXR1cm4gdC5fY2F0ZWdvcmllc1tNYXRoLnJvdW5kKGUpXX1mdW5jdGlvbiBrKGUpe2lmKHkoZSkpe2lmKHZvaWQgMD09PXQuX2NhdGVnb3JpZXNNYXAmJih0Ll9jYXRlZ29yaWVzTWFwPXt9KSx2b2lkIDAhPT10Ll9jYXRlZ29yaWVzTWFwW2VdKXJldHVybiB0Ll9jYXRlZ29yaWVzTWFwW2VdO3QuX2NhdGVnb3JpZXMucHVzaCgibnVtYmVyIj09dHlwZW9mIGU/U3RyaW5nKGUpOmUpO3ZhciByPXQuX2NhdGVnb3JpZXMubGVuZ3RoLTE7cmV0dXJuIHQuX2NhdGVnb3JpZXNNYXBbZV09cixyfXJldHVybiBwfWZ1bmN0aW9uIFQoZSl7aWYodC5fY2F0ZWdvcmllc01hcClyZXR1cm4gdC5fY2F0ZWdvcmllc01hcFtlXX1mdW5jdGlvbiBNKHQpe3ZhciBlPVQodCk7cmV0dXJuIHZvaWQgMCE9PWU/ZTphKHQpPyt0OnZvaWQgMH1mdW5jdGlvbiBBKGUpe3JldHVybiBhKGUpP24ucm91bmQodC5fYit0Ll9tKmUsMik6cH1mdW5jdGlvbiBTKGUpe3JldHVybihlLXQuX2IpL3QuX219dC5jMmw9ImxvZyI9PT10LnR5cGU/eDpjLHQubDJjPSJsb2ciPT09dC50eXBlP206Yyx0LmwycD1BLHQucDJsPVMsdC5jMnA9ImxvZyI9PT10LnR5cGU/ZnVuY3Rpb24odCxlKXtyZXR1cm4gQSh4KHQsZSkpfTpBLHQucDJjPSJsb2ciPT09dC50eXBlP2Z1bmN0aW9uKHQpe3JldHVybiBtKFModCkpfTpTLC0xIT09WyJsaW5lYXIiLCItIl0uaW5kZXhPZih0LnR5cGUpPyh0LmQycj10LnIyZD10LmQyYz10LnIyYz10LmQybD10LnIybD1vLHQuYzJkPXQuYzJyPXQubDJkPXQubDJyPWMsdC5kMnA9dC5yMnA9ZnVuY3Rpb24oZSl7cmV0dXJuIHQubDJwKG8oZSkpfSx0LnAyZD10LnAycj1TLHQuY2xlYW5Qb3M9Yyk6ImxvZyI9PT10LnR5cGU/KHQuZDJyPXQuZDJsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHgobyh0KSxlKX0sdC5yMmQ9dC5yMmM9ZnVuY3Rpb24odCl7cmV0dXJuIG0obyh0KSl9LHQuZDJjPXQucjJsPW8sdC5jMmQ9dC5sMnI9Yyx0LmMycj14LHQubDJkPW0sdC5kMnA9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5sMnAodC5kMnIoZSxyKSl9LHQucDJkPWZ1bmN0aW9uKHQpe3JldHVybiBtKFModCkpfSx0LnIycD1mdW5jdGlvbihlKXtyZXR1cm4gdC5sMnAobyhlKSl9LHQucDJyPVMsdC5jbGVhblBvcz1jKToiZGF0ZSI9PT10LnR5cGU/KHQuZDJyPXQucjJkPWkuaWRlbnRpdHksdC5kMmM9dC5yMmM9dC5kMmw9dC5yMmw9Yix0LmMyZD10LmMycj10LmwyZD10Lmwycj1fLHQuZDJwPXQucjJwPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdC5sMnAoYihlLDAsbikpfSx0LnAyZD10LnAycj1mdW5jdGlvbih0LGUscil7cmV0dXJuIF8oUyh0KSxlLHIpfSx0LmNsZWFuUG9zPWZ1bmN0aW9uKGUpe3JldHVybiBpLmNsZWFuRGF0ZShlLHAsdC5jYWxlbmRhcil9KToiY2F0ZWdvcnkiPT09dC50eXBlPyh0LmQyYz10LmQybD1rLHQucjJkPXQuYzJkPXQubDJkPXcsdC5kMnI9dC5kMmxfbm9hZGQ9TSx0LnIyYz1mdW5jdGlvbihlKXt2YXIgcj1NKGUpO3JldHVybiB2b2lkIDAhPT1yP3I6dC5mcmFjdGlvbjJyKC41KX0sdC5sMnI9dC5jMnI9Yyx0LnIybD1NLHQuZDJwPWZ1bmN0aW9uKGUpe3JldHVybiB0LmwycCh0LnIyYyhlKSl9LHQucDJkPWZ1bmN0aW9uKHQpe3JldHVybiB3KFModCkpfSx0LnIycD10LmQycCx0LnAycj1TLHQuY2xlYW5Qb3M9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYiIiE9PXQ/dDpjKHQpfSk6Im11bHRpY2F0ZWdvcnkiPT09dC50eXBlJiYodC5yMmQ9dC5jMmQ9dC5sMmQ9dyx0LmQycj10LmQybF9ub2FkZD1NLHQucjJjPWZ1bmN0aW9uKGUpe3ZhciByPU0oZSk7cmV0dXJuIHZvaWQgMCE9PXI/cjp0LmZyYWN0aW9uMnIoLjUpfSx0LnIyY19qdXN0X2luZGljZXM9VCx0Lmwycj10LmMycj1jLHQucjJsPU0sdC5kMnA9ZnVuY3Rpb24oZSl7cmV0dXJuIHQubDJwKHQucjJjKGUpKX0sdC5wMmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHcoUyh0KSl9LHQucjJwPXQuZDJwLHQucDJyPVMsdC5jbGVhblBvcz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KXx8InN0cmluZyI9PXR5cGVvZiB0JiYiIiE9PXQ/dDpjKHQpfSx0LnNldHVwTXVsdGlDYXRlZ29yeT1mdW5jdGlvbihuKXt2YXIgYSxvLHM9dC5fdHJhY2VJbmRpY2VzLGw9ZS5fYXhpc01hdGNoR3JvdXBzO2lmKGwmJmwubGVuZ3RoJiYwPT09dC5fY2F0ZWdvcmllcy5sZW5ndGgpZm9yKGE9MDthPGwubGVuZ3RoO2ErKyl7dmFyIGM9bFthXTtpZihjW3JdKWZvcih2YXIgZiBpbiBjKWlmKGYhPT1yKXt2YXIgcD1lW3YuaWQybmFtZShmKV07cz1zLmNvbmNhdChwLl90cmFjZUluZGljZXMpfX12YXIgZD1bWzAse31dLFswLHt9XV0sZz1bXTtmb3IoYT0wO2E8cy5sZW5ndGg7YSsrKXt2YXIgbT1uW3NbYV1dO2lmKGggaW4gbSl7dmFyIHg9bVtoXSxiPW0uX2xlbmd0aHx8aS5taW5Sb3dMZW5ndGgoeCk7aWYodSh4WzBdKSYmdSh4WzFdKSlmb3Iobz0wO288YjtvKyspe3ZhciBfPXhbMF1bb10sdz14WzFdW29dO3koXykmJnkodykmJihnLnB1c2goW18sd10pLF8gaW4gZFswXVsxXXx8KGRbMF1bMV1bX109ZFswXVswXSsrKSx3IGluIGRbMV1bMV18fChkWzFdWzFdW3ddPWRbMV1bMF0rKykpfX19Zm9yKGcuc29ydChmdW5jdGlvbih0LGUpe3ZhciByPWRbMF1bMV0sbj1yW3RbMF1dLXJbZVswXV07aWYobilyZXR1cm4gbjt2YXIgYT1kWzFdWzFdO3JldHVybiBhW3RbMV1dLWFbZVsxXV19KSxhPTA7YTxnLmxlbmd0aDthKyspayhnW2FdKX0pLHQuZnJhY3Rpb24ycj1mdW5jdGlvbihlKXt2YXIgcj10LnIybCh0LnJhbmdlWzBdKSxuPXQucjJsKHQucmFuZ2VbMV0pO3JldHVybiB0LmwycihyK2UqKG4tcikpfSx0LnIyZnJhY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHI9dC5yMmwodC5yYW5nZVswXSksbj10LnIybCh0LnJhbmdlWzFdKTtyZXR1cm4odC5yMmwoZSktcikvKG4tcil9LHQuY2xlYW5SYW5nZT1mdW5jdGlvbihlLHIpe3J8fChyPXt9KSxlfHwoZT0icmFuZ2UiKTt2YXIgbixvLHM9aS5uZXN0ZWRQcm9wZXJ0eSh0LGUpLmdldCgpO2lmKG89KG89ImRhdGUiPT09dC50eXBlP2kuZGZsdFJhbmdlKHQuY2FsZW5kYXIpOiJ5Ij09PWg/Zy5ERkxUUkFOR0VZOnIuZGZsdFJhbmdlfHxnLkRGTFRSQU5HRVgpLnNsaWNlKCksInRvemVybyIhPT10LnJhbmdlbW9kZSYmIm5vbm5lZ2F0aXZlIiE9PXQucmFuZ2Vtb2RlfHwob1swXT0wKSxzJiYyPT09cy5sZW5ndGgpZm9yKCJkYXRlIiE9PXQudHlwZXx8dC5hdXRvcmFuZ2V8fChzWzBdPWkuY2xlYW5EYXRlKHNbMF0scCx0LmNhbGVuZGFyKSxzWzFdPWkuY2xlYW5EYXRlKHNbMV0scCx0LmNhbGVuZGFyKSksbj0wO248MjtuKyspaWYoImRhdGUiPT09dC50eXBlKXtpZighaS5pc0RhdGVUaW1lKHNbbl0sdC5jYWxlbmRhcikpe3RbZV09bzticmVha31pZih0LnIybChzWzBdKT09PXQucjJsKHNbMV0pKXt2YXIgbD1pLmNvbnN0cmFpbih0LnIybChzWzBdKSxpLk1JTl9NUysxZTMsaS5NQVhfTVMtMWUzKTtzWzBdPXQubDJyKGwtMWUzKSxzWzFdPXQubDJyKGwrMWUzKTticmVha319ZWxzZXtpZighYShzW25dKSl7aWYoIWEoc1sxLW5dKSl7dFtlXT1vO2JyZWFrfXNbbl09c1sxLW5dKihuPzEwOi4xKX1pZihzW25dPC1mP3Nbbl09LWY6c1tuXT5mJiYoc1tuXT1mKSxzWzBdPT09c1sxXSl7dmFyIGM9TWF0aC5tYXgoMSxNYXRoLmFicygxZS02KnNbMF0pKTtzWzBdLT1jLHNbMV0rPWN9fWVsc2UgaS5uZXN0ZWRQcm9wZXJ0eSh0LGUpLnNldChvKX0sdC5zZXRTY2FsZT1mdW5jdGlvbihyKXt2YXIgbj1lLl9zaXplO2lmKHQub3ZlcmxheWluZyl7dmFyIGE9di5nZXRGcm9tSWQoe19mdWxsTGF5b3V0OmV9LHQub3ZlcmxheWluZyk7dC5kb21haW49YS5kb21haW59dmFyIGk9ciYmdC5fcj8iX3IiOiJyYW5nZSIsbz10LmNhbGVuZGFyO3QuY2xlYW5SYW5nZShpKTt2YXIgcz10LnIybCh0W2ldWzBdLG8pLGw9dC5yMmwodFtpXVsxXSxvKTtpZigieSI9PT1oPyh0Ll9vZmZzZXQ9bi50KygxLXQuZG9tYWluWzFdKSpuLmgsdC5fbGVuZ3RoPW4uaCoodC5kb21haW5bMV0tdC5kb21haW5bMF0pLHQuX209dC5fbGVuZ3RoLyhzLWwpLHQuX2I9LXQuX20qbCk6KHQuX29mZnNldD1uLmwrdC5kb21haW5bMF0qbi53LHQuX2xlbmd0aD1uLncqKHQuZG9tYWluWzFdLXQuZG9tYWluWzBdKSx0Ll9tPXQuX2xlbmd0aC8obC1zKSx0Ll9iPS10Ll9tKnMpLCFpc0Zpbml0ZSh0Ll9tKXx8IWlzRmluaXRlKHQuX2IpfHx0Ll9sZW5ndGg8MCl0aHJvdyBlLl9yZXBsb3R0aW5nPSExLG5ldyBFcnJvcigiU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBheGlzIHNjYWxpbmciKX0sdC5tYWtlQ2FsY2RhdGE9ZnVuY3Rpb24oZSxyKXt2YXIgbixhLG8scyxsPXQudHlwZSxjPSJkYXRlIj09PWwmJmVbcisiY2FsZW5kYXIiXTtpZihyIGluIGUpe2lmKG49ZVtyXSxzPWUuX2xlbmd0aHx8aS5taW5Sb3dMZW5ndGgobiksaS5pc1R5cGVkQXJyYXkobikmJigibGluZWFyIj09PWx8fCJsb2ciPT09bCkpe2lmKHM9PT1uLmxlbmd0aClyZXR1cm4gbjtpZihuLnN1YmFycmF5KXJldHVybiBuLnN1YmFycmF5KDAscyl9aWYoIm11bHRpY2F0ZWdvcnkiPT09bClyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXt2YXIgYT0odFswXXx8W10pW25dLGk9KHRbMV18fFtdKVtuXTtyW25dPVQoW2EsaV0pfXJldHVybiByfShuLHMpO2ZvcihhPW5ldyBBcnJheShzKSxvPTA7bzxzO28rKylhW29dPXQuZDJjKG5bb10sMCxjKX1lbHNle3ZhciB1PXIrIjAiaW4gZT90LmQyYyhlW3IrIjAiXSwwLGMpOjAsaD1lWyJkIityXT9OdW1iZXIoZVsiZCIrcl0pOjE7Zm9yKG49ZVt7eDoieSIseToieCJ9W3JdXSxzPWUuX2xlbmd0aHx8bi5sZW5ndGgsYT1uZXcgQXJyYXkocyksbz0wO288cztvKyspYVtvXT11K28qaH1yZXR1cm4gYX0sdC5pc1ZhbGlkUmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aCYmYSh0LnIybChlWzBdKSkmJmEodC5yMmwoZVsxXSkpfSx0LmlzUHRXaXRoaW5SYW5nZT1mdW5jdGlvbihlLHIpe3ZhciBuPXQuYzJsKGVbaF0sbnVsbCxyKSxhPXQucjJsKHQucmFuZ2VbMF0pLGk9dC5yMmwodC5yYW5nZVsxXSk7cmV0dXJuIGE8aT9hPD1uJiZuPD1pOmk8PW4mJm48PWF9LHQuY2xlYXJDYWxjPWZ1bmN0aW9uKCl7dmFyIG49ZnVuY3Rpb24oKXt0Ll9jYXRlZ29yaWVzPVtdLHQuX2NhdGVnb3JpZXNNYXA9e319LGE9ZS5fYXhpc01hdGNoR3JvdXBzO2lmKGEmJmEubGVuZ3RoKXtmb3IodmFyIGk9ITEsbz0wO288YS5sZW5ndGg7bysrKXt2YXIgcz1hW29dO2lmKHNbcl0pe2k9ITA7dmFyIGw9bnVsbCxjPW51bGw7Zm9yKHZhciB1IGluIHMpe3ZhciBoPWVbdi5pZDJuYW1lKHUpXTtpZihoLl9jYXRlZ29yaWVzKXtsPWguX2NhdGVnb3JpZXMsYz1oLl9jYXRlZ29yaWVzTWFwO2JyZWFrfX1sJiZjPyh0Ll9jYXRlZ29yaWVzPWwsdC5fY2F0ZWdvcmllc01hcD1jKTpuKCk7YnJlYWt9fWl8fG4oKX1lbHNlIG4oKTtpZih0Ll9pbml0aWFsQ2F0ZWdvcmllcylmb3IodmFyIGY9MDtmPHQuX2luaXRpYWxDYXRlZ29yaWVzLmxlbmd0aDtmKyspayh0Ll9pbml0aWFsQ2F0ZWdvcmllc1tmXSl9LHQuc29ydEJ5SW5pdGlhbENhdGVnb3JpZXM9ZnVuY3Rpb24oKXt2YXIgbj1bXTtpZih0Ll9jYXRlZ29yaWVzPVtdLHQuX2NhdGVnb3JpZXNNYXA9e30sdC5faW5pdGlhbENhdGVnb3JpZXMpZm9yKHZhciBhPTA7YTx0Ll9pbml0aWFsQ2F0ZWdvcmllcy5sZW5ndGg7YSsrKWsodC5faW5pdGlhbENhdGVnb3JpZXNbYV0pO249bi5jb25jYXQodC5fdHJhY2VJbmRpY2VzKTt2YXIgaT10Ll9tYXRjaEdyb3VwO2Zvcih2YXIgbyBpbiBpKWlmKHIhPT1vKXt2YXIgcz1lW3YuaWQybmFtZShvKV07cy5fY2F0ZWdvcmllcz10Ll9jYXRlZ29yaWVzLHMuX2NhdGVnb3JpZXNNYXA9dC5fY2F0ZWdvcmllc01hcCxuPW4uY29uY2F0KHMuX3RyYWNlSW5kaWNlcyl9cmV0dXJuIG59O3ZhciBFPWUuX2QzbG9jYWxlOyJkYXRlIj09PXQudHlwZSYmKHQuX2RhdGVGb3JtYXQ9RT9FLnRpbWVGb3JtYXQudXRjOm4udGltZS5mb3JtYXQudXRjLHQuX2V4dHJhRm9ybWF0PWUuX2V4dHJhRm9ybWF0KSx0Ll9zZXBhcmF0b3JzPWUuc2VwYXJhdG9ycyx0Ll9udW1Gb3JtYXQ9RT9FLm51bWJlckZvcm1hdDpuLmZvcm1hdCxkZWxldGUgdC5fbWluRHRpY2ssZGVsZXRlIHQuX2ZvcmNlVGljazB9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4vYXhpc19pZHMiOjc2OCwiLi9jb25zdGFudHMiOjc3MSxkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3ODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksaT10KCIuLi9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKTtmdW5jdGlvbiBvKHQpe3ZhciBlPVsic2hvd2V4cG9uZW50Iiwic2hvd3RpY2twcmVmaXgiLCJzaG93dGlja3N1ZmZpeCJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09dFtlXX0pO2lmKGUuZXZlcnkoZnVuY3Rpb24ocil7cmV0dXJuIHRbcl09PT10W2VbMF1dfSl8fDE9PT1lLmxlbmd0aClyZXR1cm4gdFtlWzBdXX1mdW5jdGlvbiBzKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYS50aWNrZm9ybWF0c3RvcHMscixpKX1yKCJlbmFibGVkIikmJihyKCJkdGlja3JhbmdlIikscigidmFsdWUiKSl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGwsYyx1KXt1JiYxIT09dS5wYXNzfHxmdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPW8odCk7cigidGlja3ByZWZpeCIpJiZyKCJzaG93dGlja3ByZWZpeCIsaSk7cigidGlja3N1ZmZpeCIsYS50aWNrU3VmZml4RGZsdCkmJnIoInNob3d0aWNrc3VmZml4IixpKX0odCwwLHIsMCxjKSx1JiYyIT09dS5wYXNzfHxmdW5jdGlvbih0LGUscixsLGMpe3ZhciB1PW8odCk7cigidGlja3ByZWZpeCIpJiZyKCJzaG93dGlja3ByZWZpeCIsdSk7cigidGlja3N1ZmZpeCIsYy50aWNrU3VmZml4RGZsdCkmJnIoInNob3d0aWNrc3VmZml4Iix1KTtpZihyKCJzaG93dGlja2xhYmVscyIpKXt2YXIgaD1jLmZvbnR8fHt9LGY9ZS5jb2xvcixwPWYmJmYhPT1hLmNvbG9yLmRmbHQ/ZjpoLmNvbG9yO2lmKG4uY29lcmNlRm9udChyLCJ0aWNrZm9udCIse2ZhbWlseTpoLmZhbWlseSxzaXplOmguc2l6ZSxjb2xvcjpwfSkscigidGlja2FuZ2xlIiksImNhdGVnb3J5IiE9PWwpe3ZhciBkPXIoInRpY2tmb3JtYXQiKSxnPXQudGlja2Zvcm1hdHN0b3BzO0FycmF5LmlzQXJyYXkoZykmJmcubGVuZ3RoJiZpKHQsZSx7bmFtZToidGlja2Zvcm1hdHN0b3BzIixpbmNsdXNpb25BdHRyOiJlbmFibGVkIixoYW5kbGVJdGVtRGVmYXVsdHM6c30pLGR8fCJkYXRlIj09PWx8fChyKCJzaG93ZXhwb25lbnQiLHUpLHIoImV4cG9uZW50Zm9ybWF0Iikscigic2VwYXJhdGV0aG91c2FuZHMiKSl9fX0odCxlLHIsbCxjKX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NzYxLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo3Nzd9XSw3ODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPW4uY29lcmNlMih0LGUsYSwidGlja2xlbiIpLHM9bi5jb2VyY2UyKHQsZSxhLCJ0aWNrd2lkdGgiKSxsPW4uY29lcmNlMih0LGUsYSwidGlja2NvbG9yIixlLmNvbG9yKTtyKCJ0aWNrcyIsaS5vdXRlclRpY2tzfHxvfHxzfHxsPyJvdXRzaWRlIjoiIil8fChkZWxldGUgZS50aWNrbGVuLGRlbGV0ZSBlLnRpY2t3aWR0aCxkZWxldGUgZS50aWNrY29sb3IpfX0seyIuLi8uLi9saWIiOjcxNywiLi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc3fV0sNzg2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY2xlYW5fdGlja3MiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGk7ImFycmF5IiE9PXQudGlja21vZGV8fCJsb2ciIT09YSYmImRhdGUiIT09YT9pPXIoInRpY2ttb2RlIixBcnJheS5pc0FycmF5KHQudGlja3ZhbHMpPyJhcnJheSI6dC5kdGljaz8ibGluZWFyIjoiYXV0byIpOmk9ZS50aWNrbW9kZT0iYXV0byI7aWYoImF1dG8iPT09aSlyKCJudGlja3MiKTtlbHNlIGlmKCJsaW5lYXIiPT09aSl7dmFyIG89ZS5kdGljaz1uLmR0aWNrKHQuZHRpY2ssYSk7ZS50aWNrMD1uLnRpY2swKHQudGljazAsYSxlLmNhbGVuZGFyLG8pfWVsc2UgaWYoIm11bHRpY2F0ZWdvcnkiIT09YSl7dm9pZCAwPT09cigidGlja3ZhbHMiKT9lLnRpY2ttb2RlPSJhdXRvIjpyKCJ0aWNrdGV4dCIpfX19LHsiLi9jbGVhbl90aWNrcyI6NzcwfV0sNzg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxzPXQoIi4vYXhlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXt2YXIgYz10Ll9mdWxsTGF5b3V0O2lmKDAhPT1lLmxlbmd0aCl7dmFyIHUsaCxmLHA7bCYmKHU9bCgpKTt2YXIgZD1uLmVhc2Uoci5lYXNpbmcpO3JldHVybiB0Ll90cmFuc2l0aW9uRGF0YS5faW50ZXJydXB0Q2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHApLHA9bnVsbCxmdW5jdGlvbigpe2Zvcih2YXIgcj17fSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl0sbz1pLnBsb3RpbmZvLnhheGlzLHM9aS5wbG90aW5mby55YXhpcztpLnhyMCYmKHJbby5fbmFtZSsiLnJhbmdlIl09aS54cjAuc2xpY2UoKSksaS55cjAmJihyW3MuX25hbWUrIi5yYW5nZSJdPWkueXIwLnNsaWNlKCkpfXJldHVybiBhLmNhbGwoInJlbGF5b3V0Iix0LHIpLnRoZW4oZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylnKGVbdF0ucGxvdGluZm8pfSl9KCl9KSxoPURhdGUubm93KCkscD13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uIG4oKXtmPURhdGUubm93KCk7Zm9yKHZhciBpPU1hdGgubWluKDEsKGYtaCkvci5kdXJhdGlvbiksbz1kKGkpLHM9MDtzPGUubGVuZ3RoO3MrKyl2KGVbc10sbyk7Zi1oPnIuZHVyYXRpb24/KGZ1bmN0aW9uKCl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXSxvPWkucGxvdGluZm8ueGF4aXMscz1pLnBsb3RpbmZvLnlheGlzO2kueHIxJiYocltvLl9uYW1lKyIucmFuZ2UiXT1pLnhyMS5zbGljZSgpKSxpLnlyMSYmKHJbcy5fbmFtZSsiLnJhbmdlIl09aS55cjEuc2xpY2UoKSl9dSYmdSgpLGEuY2FsbCgicmVsYXlvdXQiLHQscikudGhlbihmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWcoZVt0XS5wbG90aW5mbyl9KX0oKSxwPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShuKSk6cD13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG4pfSksUHJvbWlzZS5yZXNvbHZlKCl9ZnVuY3Rpb24gZyh0KXt2YXIgZT10LnhheGlzLHI9dC55YXhpcztjLl9kZWZzLnNlbGVjdCgiIyIrdC5jbGlwSWQrIj4gcmVjdCIpLmNhbGwoby5zZXRUcmFuc2xhdGUsMCwwKS5jYWxsKG8uc2V0U2NhbGUsMSwxKSx0LnBsb3QuY2FsbChvLnNldFRyYW5zbGF0ZSxlLl9vZmZzZXQsci5fb2Zmc2V0KS5jYWxsKG8uc2V0U2NhbGUsMSwxKTt2YXIgbj10LnBsb3Quc2VsZWN0QWxsKCIuc2NhdHRlcmxheWVyIC50cmFjZSIpO24uc2VsZWN0QWxsKCIucG9pbnQiKS5jYWxsKG8uc2V0UG9pbnRHcm91cFNjYWxlLDEsMSksbi5zZWxlY3RBbGwoIi50ZXh0cG9pbnQiKS5jYWxsKG8uc2V0VGV4dFBvaW50c1NjYWxlLDEsMSksbi5jYWxsKG8uaGlkZU91dHNpZGVSYW5nZVBvaW50cyx0KX1mdW5jdGlvbiB2KGUscil7dmFyIG49ZS5wbG90aW5mbyxhPW4ueGF4aXMsbD1uLnlheGlzLGM9YS5fbGVuZ3RoLHU9bC5fbGVuZ3RoLGg9ISFlLnhyMSxmPSEhZS55cjEscD1bXTtpZihoKXt2YXIgZD1pLnNpbXBsZU1hcChlLnhyMCxhLnIybCksZz1pLnNpbXBsZU1hcChlLnhyMSxhLnIybCksdj1kWzFdLWRbMF0sbT1nWzFdLWdbMF07cFswXT0oZFswXSooMS1yKStyKmdbMF0tZFswXSkvKGRbMV0tZFswXSkqYyxwWzJdPWMqKDEtcityKm0vdiksYS5yYW5nZVswXT1hLmwycihkWzBdKigxLXIpK3IqZ1swXSksYS5yYW5nZVsxXT1hLmwycihkWzFdKigxLXIpK3IqZ1sxXSl9ZWxzZSBwWzBdPTAscFsyXT1jO2lmKGYpe3ZhciB5PWkuc2ltcGxlTWFwKGUueXIwLGwucjJsKSx4PWkuc2ltcGxlTWFwKGUueXIxLGwucjJsKSxiPXlbMV0teVswXSxfPXhbMV0teFswXTtwWzFdPSh5WzFdKigxLXIpK3IqeFsxXS15WzFdKS8oeVswXS15WzFdKSp1LHBbM109dSooMS1yK3IqXy9iKSxsLnJhbmdlWzBdPWEubDJyKHlbMF0qKDEtcikrcip4WzBdKSxsLnJhbmdlWzFdPWwubDJyKHlbMV0qKDEtcikrcip4WzFdKX1lbHNlIHBbMV09MCxwWzNdPXU7cy5kcmF3T25lKHQsYSx7c2tpcFRpdGxlOiEwfSkscy5kcmF3T25lKHQsbCx7c2tpcFRpdGxlOiEwfSkscy5yZWRyYXdDb21wb25lbnRzKHQsW2EuX2lkLGwuX2lkXSk7dmFyIHc9aD9jL3BbMl06MSxrPWY/dS9wWzNdOjEsVD1oP3BbMF06MCxNPWY/cFsxXTowLEE9aD9wWzBdL3BbMl0qYzowLFM9Zj9wWzFdL3BbM10qdTowLEU9YS5fb2Zmc2V0LUEsTD1sLl9vZmZzZXQtUztuLmNsaXBSZWN0LmNhbGwoby5zZXRUcmFuc2xhdGUsVCxNKS5jYWxsKG8uc2V0U2NhbGUsMS93LDEvayksbi5wbG90LmNhbGwoby5zZXRUcmFuc2xhdGUsRSxMKS5jYWxsKG8uc2V0U2NhbGUsdyxrKSxvLnNldFBvaW50R3JvdXBTY2FsZShuLnpvb21TY2FsZVB0cywxL3csMS9rKSxvLnNldFRleHRQb2ludHNTY2FsZShuLnpvb21TY2FsZVR4dCwxL3csMS9rKX1zLnJlZHJhd0NvbXBvbmVudHModCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9heGVzIjo3NjUsZDM6MTY1fV0sNzg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IikudHJhY2VJcyxhPXQoIi4vYXhpc19hdXRvdHlwZSIpO2Z1bmN0aW9uIGkodCl7cmV0dXJue3Y6IngiLGg6InkifVt0Lm9yaWVudGF0aW9ufHwidiJdfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj1pKHQpLGE9bih0LCJib3gtdmlvbGluIiksbz1uKHQuX2Z1bGxJbnB1dHx8e30sImNhbmRsZXN0aWNrIik7cmV0dXJuIGEmJiFvJiZlPT09ciYmdm9pZCAwPT09dFtyXSYmdm9pZCAwPT09dFtyKyIwIl19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpeyItIj09PXIoInR5cGUiLChzLnNwbG9tU3Rhc2h8fHt9KS50eXBlKSYmKCFmdW5jdGlvbih0LGUpe2lmKCItIiE9PXQudHlwZSlyZXR1cm47dmFyIHIscz10Ll9pZCxsPXMuY2hhckF0KDApOy0xIT09cy5pbmRleE9mKCJzY2VuZSIpJiYocz1sKTt2YXIgYz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBhPXRbbl07aWYoInNwbG9tIj09PWEudHlwZSYmYS5fbGVuZ3RoPjAmJihhWyJfIityKyJheGVzIl18fHt9KVtlXSlyZXR1cm4gYTtpZigoYVtyKyJheGlzIl18fHIpPT09ZSl7aWYobyhhLHIpKXJldHVybiBhO2lmKChhW3JdfHxbXSkubGVuZ3RofHxhW3IrIjAiXSlyZXR1cm4gYX19fShlLHMsbCk7aWYoIWMpcmV0dXJuO2lmKCJoaXN0b2dyYW0iPT09Yy50eXBlJiZsPT09e3Y6InkiLGg6IngifVtjLm9yaWVudGF0aW9ufHwidiJdKXJldHVybiB2b2lkKHQudHlwZT0ibGluZWFyIik7dmFyIHU9bCsiY2FsZW5kYXIiLGg9Y1t1XSxmPXtub011bHRpQ2F0ZWdvcnk6IW4oYywiY2FydGVzaWFuIil8fG4oYywibm9NdWx0aUNhdGVnb3J5Iil9OyJib3giPT09Yy50eXBlJiZjLl9oYXNQcmVDb21wU3RhdHMmJmw9PT17aDoieCIsdjoieSJ9W2Mub3JpZW50YXRpb258fCJ2Il0mJihmLm5vTXVsdGlDYXRlZ29yeT0hMCk7aWYobyhjLGwpKXt2YXIgcD1pKGMpLGQ9W107Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGc9ZVtyXTtuKGcsImJveC12aW9saW4iKSYmKGdbbCsiYXhpcyJdfHxsKT09PXMmJih2b2lkIDAhPT1nW3BdP2QucHVzaChnW3BdWzBdKTp2b2lkIDAhPT1nLm5hbWU/ZC5wdXNoKGcubmFtZSk6ZC5wdXNoKCJ0ZXh0IiksZ1t1XSE9PWgmJihoPXZvaWQgMCkpfXQudHlwZT1hKGQsaCxmKX1lbHNlIGlmKCJzcGxvbSI9PT1jLnR5cGUpe3ZhciB2PWMuZGltZW5zaW9ucyxtPXZbYy5fYXhlc0RpbVtzXV07bS52aXNpYmxlJiYodC50eXBlPWEobS52YWx1ZXMsaCxmKSl9ZWxzZSB0LnR5cGU9YShjW2xdfHxbY1tsKyIwIl1dLGgsZil9KGUscy5kYXRhKSwiLSI9PT1lLnR5cGU/ZS50eXBlPSJsaW5lYXIiOnQudHlwZT1lLnR5cGUpfX0seyIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2F4aXNfYXV0b3R5cGUiOjc2Nn1dLDc4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9yZWdpc3RyeSIpLGE9dCgiLi4vbGliIik7ZnVuY3Rpb24gaSh0LGUscil7dmFyIG4saSxvLHM9ITE7aWYoImRhdGEiPT09ZS50eXBlKW49dC5fZnVsbERhdGFbbnVsbCE9PWUudHJhY2VzP2UudHJhY2VzWzBdOjBdO2Vsc2V7aWYoImxheW91dCIhPT1lLnR5cGUpcmV0dXJuITE7bj10Ll9mdWxsTGF5b3V0fXJldHVybiBpPWEubmVzdGVkUHJvcGVydHkobixlLnByb3ApLmdldCgpLChvPXJbZS50eXBlXT1yW2UudHlwZV18fHt9KS5oYXNPd25Qcm9wZXJ0eShlLnByb3ApJiZvW2UucHJvcF0hPT1pJiYocz0hMCksb1tlLnByb3BdPWkse2NoYW5nZWQ6cyx2YWx1ZTppfX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9W10sbj1lWzBdLGk9e307aWYoInN0cmluZyI9PXR5cGVvZiBuKWlbbl09ZVsxXTtlbHNle2lmKCFhLmlzUGxhaW5PYmplY3QobikpcmV0dXJuIHI7aT1ufXJldHVybiBsKGksZnVuY3Rpb24odCxlLG4pe3IucHVzaCh7dHlwZToibGF5b3V0Iixwcm9wOnQsdmFsdWU6bn0pfSwiIiwwKSxyfWZ1bmN0aW9uIHModCxlKXt2YXIgcixuLGksbyxzPVtdO2lmKG49ZVswXSxpPWVbMV0scj1lWzJdLG89e30sInN0cmluZyI9PXR5cGVvZiBuKW9bbl09aTtlbHNle2lmKCFhLmlzUGxhaW5PYmplY3QobikpcmV0dXJuIHM7bz1uLHZvaWQgMD09PXImJihyPWkpfXJldHVybiB2b2lkIDA9PT1yJiYocj1udWxsKSxsKG8sZnVuY3Rpb24oZSxuLGEpe3ZhciBpLG87aWYoQXJyYXkuaXNBcnJheShhKSl7bz1hLnNsaWNlKCk7dmFyIGw9TWF0aC5taW4oby5sZW5ndGgsdC5kYXRhLmxlbmd0aCk7ciYmKGw9TWF0aC5taW4obCxyLmxlbmd0aCkpLGk9W107Zm9yKHZhciBjPTA7YzxsO2MrKylpW2NdPXI/cltjXTpjfWVsc2Ugbz1hLGk9cj9yLnNsaWNlKCk6bnVsbDtpZihudWxsPT09aSlBcnJheS5pc0FycmF5KG8pJiYobz1vWzBdKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoaSkpe2lmKCFBcnJheS5pc0FycmF5KG8pKXt2YXIgdT1vO289W107Zm9yKHZhciBoPTA7aDxpLmxlbmd0aDtoKyspb1toXT11fW8ubGVuZ3RoPU1hdGgubWluKGkubGVuZ3RoLG8ubGVuZ3RoKX1zLnB1c2goe3R5cGU6ImRhdGEiLHByb3A6ZSx0cmFjZXM6aSx2YWx1ZTpvfSl9LCIiLDApLHN9ZnVuY3Rpb24gbCh0LGUscixuKXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPXRbaV07aWYoIl8iIT09aVswXSl7dmFyIHM9cisobj4wPyIuIjoiIikraTthLmlzUGxhaW5PYmplY3Qobyk/bChvLGUscyxuKzEpOmUocyxpLG8pfX0pfXIubWFuYWdlQ29tbWFuZE9ic2VydmVyPWZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBzPXt9LGw9ITA7ZSYmZS5fY29tbWFuZE9ic2VydmVyJiYocz1lLl9jb21tYW5kT2JzZXJ2ZXIpLHMuY2FjaGV8fChzLmNhY2hlPXt9KSxzLmxvb2t1cFRhYmxlPXt9O3ZhciBjPXIuaGFzU2ltcGxlQVBJQ29tbWFuZEJpbmRpbmdzKHQsbixzLmxvb2t1cFRhYmxlKTtpZihlJiZlLl9jb21tYW5kT2JzZXJ2ZXIpe2lmKGMpcmV0dXJuIHM7aWYoZS5fY29tbWFuZE9ic2VydmVyLnJlbW92ZSlyZXR1cm4gZS5fY29tbWFuZE9ic2VydmVyLnJlbW92ZSgpLGUuX2NvbW1hbmRPYnNlcnZlcj1udWxsLHN9aWYoYyl7aSh0LGMscy5jYWNoZSkscy5jaGVjaz1mdW5jdGlvbigpe2lmKGwpe3ZhciBlPWkodCxjLHMuY2FjaGUpO3JldHVybiBlLmNoYW5nZWQmJm8mJnZvaWQgMCE9PXMubG9va3VwVGFibGVbZS52YWx1ZV0mJihzLmRpc2FibGUoKSxQcm9taXNlLnJlc29sdmUobyh7dmFsdWU6ZS52YWx1ZSx0eXBlOmMudHlwZSxwcm9wOmMucHJvcCx0cmFjZXM6Yy50cmFjZXMsaW5kZXg6cy5sb29rdXBUYWJsZVtlLnZhbHVlXX0pKS50aGVuKHMuZW5hYmxlLHMuZW5hYmxlKSksZS5jaGFuZ2VkfX07Zm9yKHZhciB1PVsicGxvdGx5X3JlbGF5b3V0IiwicGxvdGx5X3JlZHJhdyIsInBsb3RseV9yZXN0eWxlIiwicGxvdGx5X3VwZGF0ZSIsInBsb3RseV9hbmltYXRpbmdmcmFtZSIsInBsb3RseV9hZnRlcnBsb3QiXSxoPTA7aDx1Lmxlbmd0aDtoKyspdC5faW50ZXJuYWxPbih1W2hdLHMuY2hlY2spO3MucmVtb3ZlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspdC5fcmVtb3ZlSW50ZXJuYWxMaXN0ZW5lcih1W2VdLHMuY2hlY2spfX1lbHNlIGEubG9nKCJVbmFibGUgdG8gYXV0b21hdGljYWxseSBiaW5kIHBsb3QgdXBkYXRlcyB0byBBUEkgY29tbWFuZCIpLHMubG9va3VwVGFibGU9e30scy5yZW1vdmU9ZnVuY3Rpb24oKXt9O3JldHVybiBzLmRpc2FibGU9ZnVuY3Rpb24oKXtsPSExfSxzLmVuYWJsZT1mdW5jdGlvbigpe2w9ITB9LGUmJihlLl9jb21tYW5kT2JzZXJ2ZXI9cyksc30sci5oYXNTaW1wbGVBUElDb21tYW5kQmluZGluZ3M9ZnVuY3Rpb24odCxlLG4pe3ZhciBhLGksbz1lLmxlbmd0aDtmb3IoYT0wO2E8bzthKyspe3ZhciBzLGw9ZVthXSxjPWwubWV0aG9kLHU9bC5hcmdzO2lmKEFycmF5LmlzQXJyYXkodSl8fCh1PVtdKSwhYylyZXR1cm4hMTt2YXIgaD1yLmNvbXB1dGVBUElDb21tYW5kQmluZGluZ3ModCxjLHUpO2lmKDEhPT1oLmxlbmd0aClyZXR1cm4hMTtpZihpKXtpZigocz1oWzBdKS50eXBlIT09aS50eXBlKXJldHVybiExO2lmKHMucHJvcCE9PWkucHJvcClyZXR1cm4hMTtpZihBcnJheS5pc0FycmF5KGkudHJhY2VzKSl7aWYoIUFycmF5LmlzQXJyYXkocy50cmFjZXMpKXJldHVybiExO3MudHJhY2VzLnNvcnQoKTtmb3IodmFyIGY9MDtmPGkudHJhY2VzLmxlbmd0aDtmKyspaWYoaS50cmFjZXNbZl0hPT1zLnRyYWNlc1tmXSlyZXR1cm4hMX1lbHNlIGlmKHMucHJvcCE9PWkucHJvcClyZXR1cm4hMX1lbHNlIGk9aFswXSxBcnJheS5pc0FycmF5KGkudHJhY2VzKSYmaS50cmFjZXMuc29ydCgpO3ZhciBwPShzPWhbMF0pLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkocCkpe2lmKDEhPT1wLmxlbmd0aClyZXR1cm4hMTtwPXBbMF19biYmKG5bcF09YSl9cmV0dXJuIGl9LHIuZXhlY3V0ZUFQSUNvbW1hbmQ9ZnVuY3Rpb24odCxlLHIpe2lmKCJza2lwIj09PWUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO3ZhciBpPW4uYXBpTWV0aG9kUmVnaXN0cnlbZV0sbz1bdF07QXJyYXkuaXNBcnJheShyKXx8KHI9W10pO2Zvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKW8ucHVzaChyW3NdKTtyZXR1cm4gaS5hcHBseShudWxsLG8pLmNhdGNoKGZ1bmN0aW9uKHQpe3JldHVybiBhLndhcm4oIkFQSSBjYWxsIHRvIFBsb3RseS4iK2UrIiByZWplY3RlZC4iLHQpLFByb21pc2UucmVqZWN0KHQpfSl9LHIuY29tcHV0ZUFQSUNvbW1hbmRCaW5kaW5ncz1mdW5jdGlvbih0LGUscil7dmFyIG47c3dpdGNoKEFycmF5LmlzQXJyYXkocil8fChyPVtdKSxlKXtjYXNlInJlc3R5bGUiOm49cyh0LHIpO2JyZWFrO2Nhc2UicmVsYXlvdXQiOm49byh0LHIpO2JyZWFrO2Nhc2UidXBkYXRlIjpuPXModCxbclswXSxyWzJdXSkuY29uY2F0KG8odCxbclsxXV0pKTticmVhaztjYXNlImFuaW1hdGUiOm49ZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlWzBdKSYmMT09PWVbMF0ubGVuZ3RoJiYtMSE9PVsic3RyaW5nIiwibnVtYmVyIl0uaW5kZXhPZih0eXBlb2YgZVswXVswXSk/W3t0eXBlOiJsYXlvdXQiLHByb3A6Il9jdXJyZW50RnJhbWUiLHZhbHVlOmVbMF1bMF0udG9TdHJpbmcoKX1dOltdfSgwLHIpO2JyZWFrO2RlZmF1bHQ6bj1bXX1yZXR1cm4gbn19LHsiLi4vbGliIjo3MTcsIi4uL3JlZ2lzdHJ5Ijo4NDZ9XSw3OTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ci5hdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSl7ZT1lfHx7fTt2YXIgcj17dmFsVHlwZToiaW5mb19hcnJheSIsZWRpdFR5cGU6KHQ9dHx8e30pLmVkaXRUeXBlLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZTp0LmVkaXRUeXBlfSx7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZTp0LmVkaXRUeXBlfV0sZGZsdDpbMCwxXX0sYT0odC5uYW1lJiZ0Lm5hbWUsdC50cmFjZSxlLmRlc2NyaXB0aW9uJiZlLmRlc2NyaXB0aW9uLHt4Om4oe30scix7fSkseTpuKHt9LHIse30pLGVkaXRUeXBlOnQuZWRpdFR5cGV9KTtyZXR1cm4gdC5ub0dyaWRDZWxsfHwoYS5yb3c9e3ZhbFR5cGU6ImludGVnZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZTp0LmVkaXRUeXBlfSxhLmNvbHVtbj17dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOnQuZWRpdFR5cGV9KSxhfSxyLmRlZmF1bHRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW4mJm4ueHx8WzAsMV0saT1uJiZuLnl8fFswLDFdLG89ZS5ncmlkO2lmKG8pe3ZhciBzPXIoImRvbWFpbi5jb2x1bW4iKTt2b2lkIDAhPT1zJiYoczxvLmNvbHVtbnM/YT1vLl9kb21haW5zLnhbc106ZGVsZXRlIHQuZG9tYWluLmNvbHVtbik7dmFyIGw9cigiZG9tYWluLnJvdyIpO3ZvaWQgMCE9PWwmJihsPG8ucm93cz9pPW8uX2RvbWFpbnMueVtsXTpkZWxldGUgdC5kb21haW4ucm93KX12YXIgYz1yKCJkb21haW4ueCIsYSksdT1yKCJkb21haW4ueSIsaSk7Y1swXTxjWzFdfHwodC5kb21haW4ueD1hLnNsaWNlKCkpLHVbMF08dVsxXXx8KHQuZG9tYWluLnk9aS5zbGljZSgpKX19LHsiLi4vbGliL2V4dGVuZCI6NzA4fV0sNzkxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmVkaXRUeXBlLHI9dC5jb2xvckVkaXRUeXBlO3ZvaWQgMD09PXImJihyPWUpO3ZhciBuPXtmYW1pbHk6e3ZhbFR5cGU6InN0cmluZyIsbm9CbGFuazohMCxzdHJpY3Q6ITAsZWRpdFR5cGU6ZX0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MSxlZGl0VHlwZTplfSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOnJ9LGVkaXRUeXBlOmV9O3JldHVybiB0LmFycmF5T2smJihuLmZhbWlseS5hcnJheU9rPSEwLG4uc2l6ZS5hcnJheU9rPSEwLG4uY29sb3IuYXJyYXlPaz0hMCksbn19LHt9XSw3OTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtfaXNMaW5rZWRUb0FycmF5OiJmcmFtZXNfZW50cnkiLGdyb3VwOnt2YWxUeXBlOiJzdHJpbmcifSxuYW1lOnt2YWxUeXBlOiJzdHJpbmcifSx0cmFjZXM6e3ZhbFR5cGU6ImFueSJ9LGJhc2VmcmFtZTp7dmFsVHlwZToic3RyaW5nIn0sZGF0YTp7dmFsVHlwZToiYW55In0sbGF5b3V0Ont2YWxUeXBlOiJhbnkifX19LHt9XSw3OTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5wcm9qTmFtZXM9e2VxdWlyZWN0YW5ndWxhcjoiZXF1aXJlY3Rhbmd1bGFyIixtZXJjYXRvcjoibWVyY2F0b3IiLG9ydGhvZ3JhcGhpYzoib3J0aG9ncmFwaGljIiwibmF0dXJhbCBlYXJ0aCI6Im5hdHVyYWxFYXJ0aCIsa2F2cmF5c2tpeTc6ImthdnJheXNraXk3IixtaWxsZXI6Im1pbGxlciIscm9iaW5zb246InJvYmluc29uIixlY2tlcnQ0OiJlY2tlcnQ0IiwiYXppbXV0aGFsIGVxdWFsIGFyZWEiOiJhemltdXRoYWxFcXVhbEFyZWEiLCJhemltdXRoYWwgZXF1aWRpc3RhbnQiOiJhemltdXRoYWxFcXVpZGlzdGFudCIsImNvbmljIGVxdWFsIGFyZWEiOiJjb25pY0VxdWFsQXJlYSIsImNvbmljIGNvbmZvcm1hbCI6ImNvbmljQ29uZm9ybWFsIiwiY29uaWMgZXF1aWRpc3RhbnQiOiJjb25pY0VxdWlkaXN0YW50Iixnbm9tb25pYzoiZ25vbW9uaWMiLHN0ZXJlb2dyYXBoaWM6InN0ZXJlb2dyYXBoaWMiLG1vbGx3ZWlkZToibW9sbHdlaWRlIixoYW1tZXI6ImhhbW1lciIsInRyYW5zdmVyc2UgbWVyY2F0b3IiOiJ0cmFuc3ZlcnNlTWVyY2F0b3IiLCJhbGJlcnMgdXNhIjoiYWxiZXJzVXNhIiwid2lua2VsIHRyaXBlbCI6IndpbmtlbDMiLGFpdG9mZjoiYWl0b2ZmIixzaW51c29pZGFsOiJzaW51c29pZGFsIn0sci5heGVzTmFtZXM9WyJsb25heGlzIiwibGF0YXhpcyJdLHIubG9uYXhpc1NwYW49e29ydGhvZ3JhcGhpYzoxODAsImF6aW11dGhhbCBlcXVhbCBhcmVhIjozNjAsImF6aW11dGhhbCBlcXVpZGlzdGFudCI6MzYwLCJjb25pYyBjb25mb3JtYWwiOjE4MCxnbm9tb25pYzoxNjAsc3RlcmVvZ3JhcGhpYzoxODAsInRyYW5zdmVyc2UgbWVyY2F0b3IiOjE4MCwiKiI6MzYwfSxyLmxhdGF4aXNTcGFuPXsiY29uaWMgY29uZm9ybWFsIjoxNTAsc3RlcmVvZ3JhcGhpYzoxNzkuNSwiKiI6MTgwfSxyLnNjb3BlRGVmYXVsdHM9e3dvcmxkOntsb25heGlzUmFuZ2U6Wy0xODAsMTgwXSxsYXRheGlzUmFuZ2U6Wy05MCw5MF0scHJvalR5cGU6ImVxdWlyZWN0YW5ndWxhciIscHJvalJvdGF0ZTpbMCwwLDBdfSx1c2E6e2xvbmF4aXNSYW5nZTpbLTE4MCwtNTBdLGxhdGF4aXNSYW5nZTpbMTUsODBdLHByb2pUeXBlOiJhbGJlcnMgdXNhIn0sZXVyb3BlOntsb25heGlzUmFuZ2U6Wy0zMCw2MF0sbGF0YXhpc1JhbmdlOlszMCw4NV0scHJvalR5cGU6ImNvbmljIGNvbmZvcm1hbCIscHJvalJvdGF0ZTpbMTUsMCwwXSxwcm9qUGFyYWxsZWxzOlswLDYwXX0sYXNpYTp7bG9uYXhpc1JhbmdlOlsyMiwxNjBdLGxhdGF4aXNSYW5nZTpbLTE1LDU1XSxwcm9qVHlwZToibWVyY2F0b3IiLHByb2pSb3RhdGU6WzAsMCwwXX0sYWZyaWNhOntsb25heGlzUmFuZ2U6Wy0zMCw2MF0sbGF0YXhpc1JhbmdlOlstNDAsNDBdLHByb2pUeXBlOiJtZXJjYXRvciIscHJvalJvdGF0ZTpbMCwwLDBdfSwibm9ydGggYW1lcmljYSI6e2xvbmF4aXNSYW5nZTpbLTE4MCwtNDVdLGxhdGF4aXNSYW5nZTpbNSw4NV0scHJvalR5cGU6ImNvbmljIGNvbmZvcm1hbCIscHJvalJvdGF0ZTpbLTEwMCwwLDBdLHByb2pQYXJhbGxlbHM6WzI5LjUsNDUuNV19LCJzb3V0aCBhbWVyaWNhIjp7bG9uYXhpc1JhbmdlOlstMTAwLC0zMF0sbGF0YXhpc1JhbmdlOlstNjAsMTVdLHByb2pUeXBlOiJtZXJjYXRvciIscHJvalJvdGF0ZTpbMCwwLDBdfX0sci5jbGlwUGFkPS4wMDEsci5wcmVjaXNpb249LjEsci5sYW5kQ29sb3I9IiNGMERDODIiLHIud2F0ZXJDb2xvcj0iIzMzOTlGRiIsci5sb2NhdGlvbm1vZGVUb0xheWVyPXsiSVNPLTMiOiJjb3VudHJpZXMiLCJVU0Etc3RhdGVzIjoic3VidW5pdHMiLCJjb3VudHJ5IG5hbWVzIjoiY291bnRyaWVzIn0sci5zcGhlcmVTVkc9e3R5cGU6IlNwaGVyZSJ9LHIuZmlsbExheWVycz17b2NlYW46MSxsYW5kOjEsbGFrZXM6MX0sci5saW5lTGF5ZXJzPXtzdWJ1bml0czoxLGNvdW50cmllczoxLGNvYXN0bGluZXM6MSxyaXZlcnM6MSxmcmFtZToxfSxyLmxheWVycz1bImJnIiwib2NlYW4iLCJsYW5kIiwibGFrZXMiLCJzdWJ1bml0cyIsImNvdW50cmllcyIsImNvYXN0bGluZXMiLCJyaXZlcnMiLCJsYXRheGlzIiwibG9uYXhpcyIsImZyYW1lIiwiYmFja3Bsb3QiLCJmcm9udHBsb3QiXSxyLmxheWVyc0ZvckNob3JvcGxldGg9WyJiZyIsIm9jZWFuIiwibGFuZCIsInN1YnVuaXRzIiwiY291bnRyaWVzIiwiY29hc3RsaW5lcyIsImxhdGF4aXMiLCJsb25heGlzIiwiZnJhbWUiLCJiYWNrcGxvdCIsInJpdmVycyIsImxha2VzIiwiZnJvbnRwbG90Il0sci5sYXllck5hbWVUb0FkamVjdGl2ZT17b2NlYW46Im9jZWFuIixsYW5kOiJsYW5kIixsYWtlczoibGFrZSIsc3VidW5pdHM6InN1YnVuaXQiLGNvdW50cmllczoiY291bnRyeSIsY29hc3RsaW5lczoiY29hc3RsaW5lIixyaXZlcnM6InJpdmVyIixmcmFtZToiZnJhbWUifX0se31dLDc5NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbD10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksYz10KCIuLi9wbG90cyIpLHU9dCgiLi4vY2FydGVzaWFuL2F4ZXMiKSxoPXQoIi4uL2NhcnRlc2lhbi9hdXRvcmFuZ2UiKS5nZXRBdXRvUmFuZ2UsZj10KCIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50IikscD10KCIuLi9jYXJ0ZXNpYW4vc2VsZWN0IikucHJlcFNlbGVjdCxkPXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5zZWxlY3RPbkNsaWNrLGc9dCgiLi96b29tIiksdj10KCIuL2NvbnN0YW50cyIpLG09dCgiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyIpLHk9dCgiLi4vLi4vbGliL3RvcG9qc29uX3V0aWxzIikseD10KCJ0b3BvanNvbi1jbGllbnQiKS5mZWF0dXJlO2Z1bmN0aW9uIGIodCl7dGhpcy5pZD10LmlkLHRoaXMuZ3JhcGhEaXY9dC5ncmFwaERpdix0aGlzLmNvbnRhaW5lcj10LmNvbnRhaW5lcix0aGlzLnRvcG9qc29uVVJMPXQudG9wb2pzb25VUkwsdGhpcy5pc1N0YXRpYz10LnN0YXRpY1Bsb3QsdGhpcy50b3BvanNvbk5hbWU9bnVsbCx0aGlzLnRvcG9qc29uPW51bGwsdGhpcy5wcm9qZWN0aW9uPW51bGwsdGhpcy5zY29wZT1udWxsLHRoaXMudmlld0luaXRpYWw9bnVsbCx0aGlzLmZpdFNjYWxlPW51bGwsdGhpcy5ib3VuZHM9bnVsbCx0aGlzLm1pZFB0PW51bGwsdGhpcy5oYXNDaG9yb3BsZXRoPSExLHRoaXMudHJhY2VIYXNoPXt9LHRoaXMubGF5ZXJzPXt9LHRoaXMuYmFzZVBhdGhzPXt9LHRoaXMuZGF0YVBhdGhzPXt9LHRoaXMuZGF0YVBvaW50cz17fSx0aGlzLmNsaXBEZWY9bnVsbCx0aGlzLmNsaXBSZWN0PW51bGwsdGhpcy5iZ1JlY3Q9bnVsbCx0aGlzLm1ha2VGcmFtZXdvcmsoKX10KCIuL3Byb2plY3Rpb25zIikobik7dmFyIF89Yi5wcm90b3R5cGU7ZnVuY3Rpb24gdyh0LGUpe3ZhciByPXYuY2xpcFBhZCxuPXRbMF0rcixhPXRbMV0tcixpPWVbMF0rcixvPWVbMV0tcjtuPjAmJmE8MCYmKGErPTM2MCk7dmFyIHM9KGEtbikvNDtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W1tbbixpXSxbbixvXSxbbitzLG9dLFtuKzIqcyxvXSxbbiszKnMsb10sW2Esb10sW2EsaV0sW2EtcyxpXSxbYS0yKnMsaV0sW2EtMypzLGldLFtuLGldXV19fWUuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGIodCl9LF8ucGxvdD1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcyxhPWVbdGhpcy5pZF0saT1bXSxvPSExO2Zvcih2YXIgcyBpbiB2LmxheWVyTmFtZVRvQWRqZWN0aXZlKWlmKCJmcmFtZSIhPT1zJiZhWyJzaG93IitzXSl7bz0hMDticmVha31mb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKylpZih0WzBdWzBdLnRyYWNlLmxvY2F0aW9ubW9kZSl7bz0hMDticmVha31pZihvKXt2YXIgYz15LmdldFRvcG9qc29uTmFtZShhKTtudWxsIT09bi50b3BvanNvbiYmYz09PW4udG9wb2pzb25OYW1lfHwobi50b3BvanNvbk5hbWU9Yyx2b2lkIDA9PT1QbG90bHlHZW9Bc3NldHMudG9wb2pzb25bbi50b3BvanNvbk5hbWVdJiZpLnB1c2gobi5mZXRjaFRvcG9qc29uKCkpKX1pPWkuY29uY2F0KG0uZmV0Y2hUcmFjZUdlb0RhdGEodCkpLHIucHVzaChuZXcgUHJvbWlzZShmdW5jdGlvbihyLGEpe1Byb21pc2UuYWxsKGkpLnRoZW4oZnVuY3Rpb24oKXtuLnRvcG9qc29uPVBsb3RseUdlb0Fzc2V0cy50b3BvanNvbltuLnRvcG9qc29uTmFtZV0sbi51cGRhdGUodCxlKSxyKCl9KS5jYXRjaChhKX0pKX0sXy5mZXRjaFRvcG9qc29uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXkuZ2V0VG9wb2pzb25QYXRoKHQudG9wb2pzb25VUkwsdC50b3BvanNvbk5hbWUpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLGEpe24uanNvbihlLGZ1bmN0aW9uKG4saSl7aWYobilyZXR1cm4gNDA0PT09bi5zdGF0dXM/YShuZXcgRXJyb3IoWyJwbG90bHkuanMgY291bGQgbm90IGZpbmQgdG9wb2pzb24gZmlsZSBhdCIsZSwiLiIsIk1ha2Ugc3VyZSB0aGUgKnRvcG9qc29uVVJMKiBwbG90IGNvbmZpZyBvcHRpb24iLCJpcyBzZXQgcHJvcGVybHkuIl0uam9pbigiICIpKSk6YShuZXcgRXJyb3IoWyJ1bmV4cGVjdGVkIGVycm9yIHdoaWxlIGZldGNoaW5nIHRvcG9qc29uIGZpbGUgYXQiLGVdLmpvaW4oIiAiKSkpO1Bsb3RseUdlb0Fzc2V0cy50b3BvanNvblt0LnRvcG9qc29uTmFtZV09aSxyKCl9KX0pfSxfLnVwZGF0ZT1mdW5jdGlvbih0LGUpe3ZhciByPWVbdGhpcy5pZF07dGhpcy5oYXNDaG9yb3BsZXRoPSExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgYT10W25dLGk9YVswXS50cmFjZTsiY2hvcm9wbGV0aCI9PT1pLnR5cGUmJih0aGlzLmhhc0Nob3JvcGxldGg9ITApLCEwPT09aS52aXNpYmxlJiZpLl9sZW5ndGg+MCYmaS5fbW9kdWxlLmNhbGNHZW9KU09OKGEsZSl9aWYoIXRoaXMudXBkYXRlUHJvamVjdGlvbih0LGUpKXt0aGlzLnZpZXdJbml0aWFsJiZ0aGlzLnNjb3BlPT09ci5zY29wZXx8dGhpcy5zYXZlVmlld0luaXRpYWwociksdGhpcy5zY29wZT1yLnNjb3BlLHRoaXMudXBkYXRlQmFzZUxheWVycyhlLHIpLHRoaXMudXBkYXRlRGltcyhlLHIpLHRoaXMudXBkYXRlRngoZSxyKSxjLmdlbmVyYWxVcGRhdGVQZXJUcmFjZU1vZHVsZSh0aGlzLmdyYXBoRGl2LHRoaXMsdCxyKTt2YXIgbz10aGlzLmxheWVycy5mcm9udHBsb3Quc2VsZWN0KCIuc2NhdHRlcmxheWVyIik7dGhpcy5kYXRhUG9pbnRzLnBvaW50PW8uc2VsZWN0QWxsKCIucG9pbnQiKSx0aGlzLmRhdGFQb2ludHMudGV4dD1vLnNlbGVjdEFsbCgidGV4dCIpLHRoaXMuZGF0YVBhdGhzLmxpbmU9by5zZWxlY3RBbGwoIi5qcy1saW5lIik7dmFyIHM9dGhpcy5sYXllcnMuYmFja3Bsb3Quc2VsZWN0KCIuY2hvcm9wbGV0aGxheWVyIik7dGhpcy5kYXRhUGF0aHMuY2hvcm9wbGV0aD1zLnNlbGVjdEFsbCgicGF0aCIpLHRoaXMucmVuZGVyKCl9fSxfLnVwZGF0ZVByb2plY3Rpb249ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmdyYXBoRGl2LG89ZVt0aGlzLmlkXSxzPWUuX3NpemUsbD1vLmRvbWFpbixjPW8ucHJvamVjdGlvbix1PW8ubG9uYXhpcyxmPW8ubGF0YXhpcyxwPXUuX2F4LGQ9Zi5fYXgsZz10aGlzLnByb2plY3Rpb249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQucHJvamVjdGlvbi50eXBlLHI9bi5nZW9bdi5wcm9qTmFtZXNbZV1dKCksYT10Ll9pc0NsaXBwZWQ/di5sb25heGlzU3BhbltlXS8yOm51bGwsaT1bImNlbnRlciIsInJvdGF0ZSIsInBhcmFsbGVscyIsImNsaXBFeHRlbnQiXSxvPWZ1bmN0aW9uKHQpe3JldHVybiB0P3I6W119LHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGw9aVtzXTsiZnVuY3Rpb24iIT10eXBlb2YgcltsXSYmKHJbbF09byl9ci5pc0xvbkxhdE92ZXJFZGdlcz1mdW5jdGlvbih0KXtpZihudWxsPT09cih0KSlyZXR1cm4hMDtpZihhKXt2YXIgZT1yLnJvdGF0ZSgpO3JldHVybiBuLmdlby5kaXN0YW5jZSh0LFstZVswXSwtZVsxXV0pPmEqTWF0aC5QSS8xODB9cmV0dXJuITF9LHIuZ2V0UGF0aD1mdW5jdGlvbigpe3JldHVybiBuLmdlby5wYXRoKCkucHJvamVjdGlvbihyKX0sci5nZXRCb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZ2V0UGF0aCgpLmJvdW5kcyh0KX0sci5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10WzFdWzBdLXRbMF1bMF0sYT10WzFdWzFdLXRbMF1bMV0saT1yLmNsaXBFeHRlbnQmJnIuY2xpcEV4dGVudCgpO3Iuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLGkmJnIuY2xpcEV4dGVudChudWxsKTt2YXIgbz1yLmdldEJvdW5kcyhlKSxzPU1hdGgubWluKG4vKG9bMV1bMF0tb1swXVswXSksYS8ob1sxXVsxXS1vWzBdWzFdKSksbD0rdFswXVswXSsobi1zKihvWzFdWzBdK29bMF1bMF0pKS8yLGM9K3RbMF1bMV0rKGEtcyoob1sxXVsxXStvWzBdWzFdKSkvMjtyZXR1cm4gaSYmci5jbGlwRXh0ZW50KGkpLHIuc2NhbGUoMTUwKnMpLnRyYW5zbGF0ZShbbCxjXSl9LHIucHJlY2lzaW9uKHYucHJlY2lzaW9uKSxhJiZyLmNsaXBBbmdsZShhLXYuY2xpcFBhZCk7cmV0dXJuIHJ9KG8pLG09W1tzLmwrcy53KmwueFswXSxzLnQrcy5oKigxLWwueVsxXSldLFtzLmwrcy53KmwueFsxXSxzLnQrcy5oKigxLWwueVswXSldXSx5PW8uY2VudGVyfHx7fSx4PWMucm90YXRpb258fHt9LGI9dS5yYW5nZXx8W10sXz1mLnJhbmdlfHxbXTtpZihvLmZpdGJvdW5kcyl7cC5fbGVuZ3RoPW1bMV1bMF0tbVswXVswXSxkLl9sZW5ndGg9bVsxXVsxXS1tWzBdWzFdLHAucmFuZ2U9aChyLHApLGQucmFuZ2U9aChyLGQpO3ZhciBrPShwLnJhbmdlWzBdK3AucmFuZ2VbMV0pLzIsVD0oZC5yYW5nZVswXStkLnJhbmdlWzFdKS8yO2lmKG8uX2lzU2NvcGVkKXk9e2xvbjprLGxhdDpUfTtlbHNlIGlmKG8uX2lzQ2xpcHBlZCl7eT17bG9uOmssbGF0OlR9LHg9e2xvbjprLGxhdDpULHJvbGw6eC5yb2xsfTt2YXIgTT1jLnR5cGUsQT12LmxvbmF4aXNTcGFuW01dLzJ8fDE4MCxTPXYubGF0YXhpc1NwYW5bTV0vMnx8MTgwO2I9W2stQSxrK0FdLF89W1QtUyxUK1NdfWVsc2UgeT17bG9uOmssbGF0OlR9LHg9e2xvbjprLGxhdDp4LmxhdCxyb2xsOngucm9sbH19Zy5jZW50ZXIoW3kubG9uLXgubG9uLHkubGF0LXgubGF0XSkucm90YXRlKFsteC5sb24sLXgubGF0LHgucm9sbF0pLnBhcmFsbGVscyhjLnBhcmFsbGVscyk7dmFyIEU9dyhiLF8pO2cuZml0RXh0ZW50KG0sRSk7dmFyIEw9dGhpcy5ib3VuZHM9Zy5nZXRCb3VuZHMoRSksQz10aGlzLmZpdFNjYWxlPWcuc2NhbGUoKSxQPWcudHJhbnNsYXRlKCk7aWYoIWlzRmluaXRlKExbMF1bMF0pfHwhaXNGaW5pdGUoTFswXVsxXSl8fCFpc0Zpbml0ZShMWzFdWzBdKXx8IWlzRmluaXRlKExbMV1bMV0pfHxpc05hTihQWzBdKXx8aXNOYU4oUFswXSkpe2Zvcih2YXIgTz1bImZpdGJvdW5kcyIsInByb2plY3Rpb24ucm90YXRpb24iLCJjZW50ZXIiLCJsb25heGlzLnJhbmdlIiwibGF0YXhpcy5yYW5nZSJdLHo9IkludmFsaWQgZ2VvIHNldHRpbmdzLCByZWxheW91dCdpbmcgdG8gZGVmYXVsdCB2aWV3LiIsST17fSxEPTA7RDxPLmxlbmd0aDtEKyspSVt0aGlzLmlkKyIuIitPW0RdXT1udWxsO3JldHVybiB0aGlzLnZpZXdJbml0aWFsPW51bGwsaS53YXJuKHopLHIuX3Byb21pc2VzLnB1c2goYS5jYWxsKCJyZWxheW91dCIscixJKSksen1pZihvLmZpdGJvdW5kcyl7dmFyIFI9Zy5nZXRCb3VuZHModyhwLnJhbmdlLGQucmFuZ2UpKSxGPU1hdGgubWluKChMWzFdWzBdLUxbMF1bMF0pLyhSWzFdWzBdLVJbMF1bMF0pLChMWzFdWzFdLUxbMF1bMV0pLyhSWzFdWzFdLVJbMF1bMV0pKTtpc0Zpbml0ZShGKT9nLnNjYWxlKEYqQyk6aS53YXJuKCJTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmciK3RoaXMuaWQrImZpdGJvdW5kcyBjb21wdXRhdGlvbnMuIil9ZWxzZSBnLnNjYWxlKGMuc2NhbGUqQyk7dmFyIEI9dGhpcy5taWRQdD1bKExbMF1bMF0rTFsxXVswXSkvMiwoTFswXVsxXStMWzFdWzFdKS8yXTtpZihnLnRyYW5zbGF0ZShbUFswXSsoQlswXS1QWzBdKSxQWzFdKyhCWzFdLVBbMV0pXSkuY2xpcEV4dGVudChMKSxvLl9pc0FsYmVyc1VzYSl7dmFyIE49ZyhbeS5sb24seS5sYXRdKSxqPWcudHJhbnNsYXRlKCk7Zy50cmFuc2xhdGUoW2pbMF0tKE5bMF0talswXSksalsxXS0oTlsxXS1qWzFdKV0pfX0sXy51cGRhdGVCYXNlTGF5ZXJzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxhPXIudG9wb2pzb24saT1yLmxheWVycyxsPXIuYmFzZVBhdGhzO2Z1bmN0aW9uIGModCl7cmV0dXJuImxvbmF4aXMiPT09dHx8ImxhdGF4aXMiPT09dH1mdW5jdGlvbiBoKHQpe3JldHVybiBCb29sZWFuKHYubGluZUxheWVyc1t0XSl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gQm9vbGVhbih2LmZpbGxMYXllcnNbdF0pfXZhciBwPSh0aGlzLmhhc0Nob3JvcGxldGg/di5sYXllcnNGb3JDaG9yb3BsZXRoOnYubGF5ZXJzKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGgodCl8fGYodCk/ZVsic2hvdyIrdF06IWModCl8fGVbdF0uc2hvd2dyaWR9KSxkPXIuZnJhbWV3b3JrLnNlbGVjdEFsbCgiLmxheWVyIikuZGF0YShwLFN0cmluZyk7ZC5leGl0KCkuZWFjaChmdW5jdGlvbih0KXtkZWxldGUgaVt0XSxkZWxldGUgbFt0XSxuLnNlbGVjdCh0aGlzKS5yZW1vdmUoKX0pLGQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuImxheWVyICIrdH0pLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9aVt0XT1uLnNlbGVjdCh0aGlzKTsiYmciPT09dD9yLmJnUmVjdD1lLmFwcGVuZCgicmVjdCIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpOmModCk/bFt0XT1lLmFwcGVuZCgicGF0aCIpLnN0eWxlKCJmaWxsIiwibm9uZSIpOiJiYWNrcGxvdCI9PT10P2UuYXBwZW5kKCJnIikuY2xhc3NlZCgiY2hvcm9wbGV0aGxheWVyIiwhMCk6ImZyb250cGxvdCI9PT10P2UuYXBwZW5kKCJnIikuY2xhc3NlZCgic2NhdHRlcmxheWVyIiwhMCk6aCh0KT9sW3RdPWUuYXBwZW5kKCJwYXRoIikuc3R5bGUoImZpbGwiLCJub25lIikuc3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwyKTpmKHQpJiYobFt0XT1lLmFwcGVuZCgicGF0aCIpLnN0eWxlKCJzdHJva2UiLCJub25lIikpfSksZC5vcmRlcigpLGQuZWFjaChmdW5jdGlvbihyKXt2YXIgbj1sW3JdLGk9di5sYXllck5hbWVUb0FkamVjdGl2ZVtyXTsiZnJhbWUiPT09cj9uLmRhdHVtKHYuc3BoZXJlU1ZHKTpoKHIpfHxmKHIpP24uZGF0dW0oeChhLGEub2JqZWN0c1tyXSkpOmMocikmJm4uZGF0dW0oZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaSxvPWVbdF0scz12LnNjb3BlRGVmYXVsdHNbZS5zY29wZV07ImxvbmF4aXMiPT09dD8obj1zLmxvbmF4aXNSYW5nZSxhPXMubGF0YXhpc1JhbmdlLGk9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCxlXX0pOiJsYXRheGlzIj09PXQmJihuPXMubGF0YXhpc1JhbmdlLGE9cy5sb25heGlzUmFuZ2UsaT1mdW5jdGlvbih0LGUpe3JldHVybltlLHRdfSk7dmFyIGw9e3R5cGU6ImxpbmVhciIscmFuZ2U6W25bMF0sblsxXS0xZS02XSx0aWNrMDpvLnRpY2swLGR0aWNrOm8uZHRpY2t9O3Uuc2V0Q29udmVydChsLHIpO3ZhciBjPXUuY2FsY1RpY2tzKGwpO2UuaXNTY29wZWR8fCJsb25heGlzIiE9PXR8fGMucG9wKCk7Zm9yKHZhciBoPWMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHA9MDtwPGg7cCsrKWZvcih2YXIgZD1jW3BdLngsZz1mW3BdPVtdLG09YVswXTttPGFbMV0rMi41O20rPTIuNSlnLnB1c2goaShkLG0pKTtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczpmfX0ocixlLHQpKS5jYWxsKG8uc3Ryb2tlLGVbcl0uZ3JpZGNvbG9yKS5jYWxsKHMuZGFzaExpbmUsIiIsZVtyXS5ncmlkd2lkdGgpLGgocik/bi5jYWxsKG8uc3Ryb2tlLGVbaSsiY29sb3IiXSkuY2FsbChzLmRhc2hMaW5lLCIiLGVbaSsid2lkdGgiXSk6ZihyKSYmbi5jYWxsKG8uZmlsbCxlW2krImNvbG9yIl0pfSl9LF8udXBkYXRlRGltcz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuYm91bmRzLG49KGUuZnJhbWV3aWR0aHx8MCkvMixhPXJbMF1bMF0tbixpPXJbMF1bMV0tbixsPXJbMV1bMF0tYStuLGM9clsxXVsxXS1pK247cy5zZXRSZWN0KHRoaXMuY2xpcFJlY3QsYSxpLGwsYyksdGhpcy5iZ1JlY3QuY2FsbChzLnNldFJlY3QsYSxpLGwsYykuY2FsbChvLmZpbGwsZS5iZ2NvbG9yKSx0aGlzLnhheGlzLl9vZmZzZXQ9YSx0aGlzLnhheGlzLl9sZW5ndGg9bCx0aGlzLnlheGlzLl9vZmZzZXQ9aSx0aGlzLnlheGlzLl9sZW5ndGg9Y30sXy51cGRhdGVGeD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsaT1yLmdyYXBoRGl2LG89ci5iZ1JlY3Qscz10LmRyYWdtb2RlLGM9dC5jbGlja21vZGU7aWYoIXIuaXNTdGF0aWMpe3ZhciB1OyJzZWxlY3QiPT09cz91PWZ1bmN0aW9uKHQsZSl7KHQucmFuZ2U9e30pW3IuaWRdPVt2KFtlLnhtaW4sZS55bWluXSksdihbZS54bWF4LGUueW1heF0pXX06Imxhc3NvIj09PXMmJih1PWZ1bmN0aW9uKHQsZSxuKXsodC5sYXNzb1BvaW50cz17fSlbci5pZF09bi5maWx0ZXJlZC5tYXAodil9KTt2YXIgaD17ZWxlbWVudDpyLmJnUmVjdC5ub2RlKCksZ2Q6aSxwbG90aW5mbzp7aWQ6ci5pZCx4YXhpczpyLnhheGlzLHlheGlzOnIueWF4aXMsZmlsbFJhbmdlSXRlbXM6dX0seGF4ZXM6W3IueGF4aXNdLHlheGVzOltyLnlheGlzXSxzdWJwbG90OnIuaWQsY2xpY2tGbjpmdW5jdGlvbihlKXsyPT09ZSYmdC5fem9vbWxheWVyLnNlbGVjdEFsbCgiLnNlbGVjdC1vdXRsaW5lIikucmVtb3ZlKCl9fTsicGFuIj09PXM/KG8ubm9kZSgpLm9ubW91c2Vkb3duPW51bGwsby5jYWxsKGcocixlKSksby5vbigiZGJsY2xpY2suem9vbSIsZnVuY3Rpb24oKXt2YXIgdD1yLnZpZXdJbml0aWFsLGU9e307Zm9yKHZhciBuIGluIHQpZVtyLmlkKyIuIituXT10W25dO2EuY2FsbCgiX2d1aVJlbGF5b3V0IixpLGUpLGkuZW1pdCgicGxvdGx5X2RvdWJsZWNsaWNrIixudWxsKX0pLGkuX2NvbnRleHQuX3Njcm9sbFpvb20uZ2VvfHxvLm9uKCJ3aGVlbC56b29tIixudWxsKSk6InNlbGVjdCIhPT1zJiYibGFzc28iIT09c3x8KG8ub24oIi56b29tIixudWxsKSxoLnByZXBGbj1mdW5jdGlvbih0LGUscil7cCh0LGUscixoLHMpfSxmLmluaXQoaCkpLG8ub24oIm1vdXNlbW92ZSIsZnVuY3Rpb24oKXt2YXIgdD1yLnByb2plY3Rpb24uaW52ZXJ0KG4ubW91c2UodGhpcykpO2lmKCF0fHxpc05hTih0WzBdKXx8aXNOYU4odFsxXSkpcmV0dXJuIGYudW5ob3ZlcihpLG4uZXZlbnQpO3IueGF4aXMucDJjPWZ1bmN0aW9uKCl7cmV0dXJuIHRbMF19LHIueWF4aXMucDJjPWZ1bmN0aW9uKCl7cmV0dXJuIHRbMV19LGwuaG92ZXIoaSxuLmV2ZW50LHIuaWQpfSksby5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7aS5fZHJhZ2dpbmd8fGYudW5ob3ZlcihpLG4uZXZlbnQpfSksby5vbigiY2xpY2siLGZ1bmN0aW9uKCl7InNlbGVjdCIhPT1zJiYibGFzc28iIT09cyYmKGMuaW5kZXhPZigic2VsZWN0Iik+LTEmJmQobi5ldmVudCxpLFtyLnhheGlzXSxbci55YXhpc10sci5pZCxoKSxjLmluZGV4T2YoImV2ZW50Iik+LTEmJmwuY2xpY2soaSxuLmV2ZW50KSl9KX1mdW5jdGlvbiB2KHQpe3JldHVybiByLnByb2plY3Rpb24uaW52ZXJ0KFt0WzBdK3IueGF4aXMuX29mZnNldCx0WzFdK3IueWF4aXMuX29mZnNldF0pfX0sXy5tYWtlRnJhbWV3b3JrPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuZ3JhcGhEaXYscj1lLl9mdWxsTGF5b3V0LGE9ImNsaXAiK3IuX3VpZCt0LmlkO3QuY2xpcERlZj1yLl9jbGlwcy5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGEpLHQuY2xpcFJlY3Q9dC5jbGlwRGVmLmFwcGVuZCgicmVjdCIpLHQuZnJhbWV3b3JrPW4uc2VsZWN0KHQuY29udGFpbmVyKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImdlbyAiK3QuaWQpLmNhbGwocy5zZXRDbGlwVXJsLGEsZSksdC5wcm9qZWN0PWZ1bmN0aW9uKGUpe3ZhciByPXQucHJvamVjdGlvbihlKTtyZXR1cm4gcj9bclswXS10LnhheGlzLl9vZmZzZXQsclsxXS10LnlheGlzLl9vZmZzZXRdOltudWxsLG51bGxdfSx0LnhheGlzPXtfaWQ6IngiLGMycDpmdW5jdGlvbihlKXtyZXR1cm4gdC5wcm9qZWN0KGUpWzBdfX0sdC55YXhpcz17X2lkOiJ5IixjMnA6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvamVjdChlKVsxXX19LHQubW9ja0F4aXM9e3R5cGU6ImxpbmVhciIsc2hvd2V4cG9uZW50OiJhbGwiLGV4cG9uZW50Zm9ybWF0OiJCIn0sdS5zZXRDb252ZXJ0KHQubW9ja0F4aXMscil9LF8uc2F2ZVZpZXdJbml0aWFsPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5jZW50ZXJ8fHt9LG49dC5wcm9qZWN0aW9uLGE9bi5yb3RhdGlvbnx8e307dGhpcy52aWV3SW5pdGlhbD17Zml0Ym91bmRzOnQuZml0Ym91bmRzLCJwcm9qZWN0aW9uLnNjYWxlIjpuLnNjYWxlfSxlPXQuX2lzU2NvcGVkP3siY2VudGVyLmxvbiI6ci5sb24sImNlbnRlci5sYXQiOnIubGF0fTp0Ll9pc0NsaXBwZWQ/eyJwcm9qZWN0aW9uLnJvdGF0aW9uLmxvbiI6YS5sb24sInByb2plY3Rpb24ucm90YXRpb24ubGF0IjphLmxhdH06eyJjZW50ZXIubG9uIjpyLmxvbiwiY2VudGVyLmxhdCI6ci5sYXQsInByb2plY3Rpb24ucm90YXRpb24ubG9uIjphLmxvbn0saS5leHRlbmRGbGF0KHRoaXMudmlld0luaXRpYWwsZSl9LF8ucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnByb2plY3Rpb24scj1lLmdldFBhdGgoKTtmdW5jdGlvbiBuKHQpe3ZhciByPWUodC5sb25sYXQpO3JldHVybiByPyJ0cmFuc2xhdGUoIityWzBdKyIsIityWzFdKyIpIjpudWxsfWZ1bmN0aW9uIGEodCl7cmV0dXJuIGUuaXNMb25MYXRPdmVyRWRnZXModC5sb25sYXQpPyJub25lIjpudWxsfWZvcih0IGluIHRoaXMuYmFzZVBhdGhzKXRoaXMuYmFzZVBhdGhzW3RdLmF0dHIoImQiLHIpO2Zvcih0IGluIHRoaXMuZGF0YVBhdGhzKXRoaXMuZGF0YVBhdGhzW3RdLmF0dHIoImQiLGZ1bmN0aW9uKHQpe3JldHVybiByKHQuZ2VvanNvbil9KTtmb3IodCBpbiB0aGlzLmRhdGFQb2ludHMpdGhpcy5kYXRhUG9pbnRzW3RdLmF0dHIoImRpc3BsYXkiLGEpLmF0dHIoInRyYW5zZm9ybSIsbil9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCI6NjEwLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyI6NzExLCIuLi8uLi9saWIvdG9wb2pzb25fdXRpbHMiOjc0NCwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY2FydGVzaWFuL2F1dG9yYW5nZSI6NzY0LCIuLi9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9jYXJ0ZXNpYW4vc2VsZWN0Ijo3ODIsIi4uL3Bsb3RzIjo4MjYsIi4vY29uc3RhbnRzIjo3OTMsIi4vcHJvamVjdGlvbnMiOjc5OCwiLi96b29tIjo3OTksZDM6MTY1LCJ0b3BvanNvbi1jbGllbnQiOjUzOX1dLDc5NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9nZXRfZGF0YSIpLmdldFN1YnBsb3RDYWxjRGF0YSxhPXQoIi4uLy4uL2xpYiIpLmNvdW50ZXJSZWdleCxpPXQoIi4vZ2VvIiksbz0iZ2VvIixzPWEobyksbD17fTtsW29dPXt2YWxUeXBlOiJzdWJwbG90aWQiLGRmbHQ6byxlZGl0VHlwZToiY2FsYyJ9LGUuZXhwb3J0cz17YXR0cjpvLG5hbWU6byxpZFJvb3Q6byxpZFJlZ2V4OnMsYXR0clJlZ2V4OnMsYXR0cmlidXRlczpsLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIikscGxvdDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fZnVsbExheW91dCxyPXQuY2FsY2RhdGEsYT1lLl9zdWJwbG90c1tvXSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPWFbc10sYz1uKHIsbyxsKSx1PWVbbF0uX3N1YnBsb3Q7dXx8KHU9aSh7aWQ6bCxncmFwaERpdjp0LGNvbnRhaW5lcjplLl9nZW9sYXllci5ub2RlKCksdG9wb2pzb25VUkw6dC5fY29udGV4dC50b3BvanNvblVSTCxzdGF0aWNQbG90OnQuX2NvbnRleHQuc3RhdGljUGxvdH0pLGVbbF0uX3N1YnBsb3Q9dSksdS5wbG90KGMsZSx0Ll9wcm9taXNlcyl9fSx1cGRhdGVGeDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fZnVsbExheW91dCxyPWUuX3N1YnBsb3RzW29dLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGE9ZVtyW25dXTthLl9zdWJwbG90LnVwZGF0ZUZ4KGUsYSl9fSxjbGVhbjpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9bi5fc3VicGxvdHNbb118fFtdLGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIHM9YVtpXSxsPW5bc10uX3N1YnBsb3Q7IWVbc10mJmwmJihsLmZyYW1ld29yay5yZW1vdmUoKSxsLmNsaXBEZWYucmVtb3ZlKCkpfX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9nZXRfZGF0YSI6ODAwLCIuL2dlbyI6Nzk0LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo3OTYsIi4vbGF5b3V0X2RlZmF1bHRzIjo3OTd9XSw3OTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksYT10KCIuLi9kb21haW4iKS5hdHRyaWJ1dGVzLGk9dCgiLi9jb25zdGFudHMiKSxvPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxzPXtyYW5nZTp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIifSx7dmFsVHlwZToibnVtYmVyIn1dfSxzaG93Z3JpZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sdGljazA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowfSxkdGljazp7dmFsVHlwZToibnVtYmVyIn0sZ3JpZGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmxpZ2h0TGluZX0sZ3JpZHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX19OyhlLmV4cG9ydHM9byh7ZG9tYWluOmEoe25hbWU6ImdlbyJ9LHt9KSxmaXRib3VuZHM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITEsImxvY2F0aW9ucyIsImdlb2pzb24iXSxkZmx0OiExLGVkaXRUeXBlOiJwbG90In0scmVzb2x1dGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsxMTAsNTBdLGRmbHQ6MTEwLGNvZXJjZU51bWJlcjohMH0sc2NvcGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5cyhpLnNjb3BlRGVmYXVsdHMpLGRmbHQ6IndvcmxkIn0scHJvamVjdGlvbjp7dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOk9iamVjdC5rZXlzKGkucHJvak5hbWVzKX0scm90YXRpb246e2xvbjp7dmFsVHlwZToibnVtYmVyIn0sbGF0Ont2YWxUeXBlOiJudW1iZXIifSxyb2xsOnt2YWxUeXBlOiJudW1iZXIifX0scGFyYWxsZWxzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciJ9LHt2YWxUeXBlOiJudW1iZXIifV19LHNjYWxlOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX19LGNlbnRlcjp7bG9uOnt2YWxUeXBlOiJudW1iZXIifSxsYXQ6e3ZhbFR5cGU6Im51bWJlciJ9fSx2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxzaG93Y29hc3RsaW5lczp7dmFsVHlwZToiYm9vbGVhbiJ9LGNvYXN0bGluZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxjb2FzdGxpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LHNob3dsYW5kOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsYW5kY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkubGFuZENvbG9yfSxzaG93b2NlYW46e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG9jZWFuY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Omkud2F0ZXJDb2xvcn0sc2hvd2xha2VzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsYWtlY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Omkud2F0ZXJDb2xvcn0sc2hvd3JpdmVyczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0scml2ZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aS53YXRlckNvbG9yfSxyaXZlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2hvd2NvdW50cmllczp7dmFsVHlwZToiYm9vbGVhbiJ9LGNvdW50cnljb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0sY291bnRyeXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2hvd3N1YnVuaXRzOnt2YWxUeXBlOiJib29sZWFuIn0sc3VidW5pdGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxzdWJ1bml0d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxfSxzaG93ZnJhbWU6e3ZhbFR5cGU6ImJvb2xlYW4ifSxmcmFtZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxmcmFtZXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5iYWNrZ3JvdW5kfSxsb25heGlzOnMsbGF0YXhpczpzfSwicGxvdCIsImZyb20tcm9vdCIpKS51aXJldmlzaW9uPXt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjo1OTEsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vZG9tYWluIjo3OTAsIi4vY29uc3RhbnRzIjo3OTN9XSw3OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zdWJwbG90X2RlZmF1bHRzIiksaT10KCIuLi9nZXRfZGF0YSIpLmdldFN1YnBsb3REYXRhLG89dCgiLi9jb25zdGFudHMiKSxzPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxsPW8uYXhlc05hbWVzO2Z1bmN0aW9uIGModCxlLHIsYSl7dmFyIHM9aShhLmZ1bGxEYXRhLCJnZW8iLGEuaWQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5fZXhwYW5kZWRJbmRleH0pLGM9cigicmVzb2x1dGlvbiIpLHU9cigic2NvcGUiKSxoPW8uc2NvcGVEZWZhdWx0c1t1XSxmPXIoInByb2plY3Rpb24udHlwZSIsaC5wcm9qVHlwZSkscD1lLl9pc0FsYmVyc1VzYT0iYWxiZXJzIHVzYSI9PT1mO3AmJih1PWUuc2NvcGU9InVzYSIpO3ZhciBkPWUuX2lzU2NvcGVkPSJ3b3JsZCIhPT11LGc9ZS5faXNDb25pYz0tMSE9PWYuaW5kZXhPZigiY29uaWMiKSx2PWUuX2lzQ2xpcHBlZD0hIW8ubG9uYXhpc1NwYW5bZl07aWYoITE9PT10LnZpc2libGUpe3ZhciBtPW4uZXh0ZW5kRGVlcCh7fSxlLl90ZW1wbGF0ZSk7bS5zaG93Y29hc3RsaW5lcz0hMSxtLnNob3djb3VudHJpZXM9ITEsbS5zaG93ZnJhbWU9ITEsbS5zaG93bGFrZXM9ITEsbS5zaG93bGFuZD0hMSxtLnNob3dvY2Vhbj0hMSxtLnNob3dyaXZlcnM9ITEsbS5zaG93c3VidW5pdHM9ITEsbS5sb25heGlzJiYobS5sb25heGlzLnNob3dncmlkPSExKSxtLmxhdGF4aXMmJihtLmxhdGF4aXMuc2hvd2dyaWQ9ITEpLGUuX3RlbXBsYXRlPW19Zm9yKHZhciB5PXIoInZpc2libGUiKSx4PTA7eDxsLmxlbmd0aDt4Kyspe3ZhciBiLF89bFt4XSx3PVszMCwxMF1beF07aWYoZCliPWhbXysiUmFuZ2UiXTtlbHNle3ZhciBrPW9bXysiU3BhbiJdLFQ9KGtbZl18fGtbIioiXSkvMixNPXIoInByb2plY3Rpb24ucm90YXRpb24uIitfLnN1YnN0cigwLDMpLGgucHJvalJvdGF0ZVt4XSk7Yj1bTS1ULE0rVF19dmFyIEE9cihfKyIucmFuZ2UiLGIpO3IoXysiLnRpY2swIikscihfKyIuZHRpY2siLHcpLHIoXysiLnNob3dncmlkIiwhIXkmJnZvaWQgMCkmJihyKF8rIi5ncmlkY29sb3IiKSxyKF8rIi5ncmlkd2lkdGgiKSksZVtfXS5fYXg9e3R5cGU6ImxpbmVhciIsX2lkOl8uc2xpY2UoMCwzKSxfdHJhY2VJbmRpY2VzOnMsc2V0U2NhbGU6bi5pZGVudGl0eSxjMmw6bi5pZGVudGl0eSxyMmw6bi5pZGVudGl0eSxhdXRvcmFuZ2U6ITAscmFuZ2U6QS5zbGljZSgpLF9tOjEsX2lucHV0Ont9fX12YXIgUz1lLmxvbmF4aXMucmFuZ2UsRT1lLmxhdGF4aXMucmFuZ2UsTD1TWzBdLEM9U1sxXTtMPjAmJkM8MCYmKEMrPTM2MCk7dmFyIFAsTyx6LEk9KEwrQykvMjtpZighcCl7dmFyIEQ9ZD9oLnByb2pSb3RhdGU6W0ksMCwwXTtQPXIoInByb2plY3Rpb24ucm90YXRpb24ubG9uIixEWzBdKSxyKCJwcm9qZWN0aW9uLnJvdGF0aW9uLmxhdCIsRFsxXSkscigicHJvamVjdGlvbi5yb3RhdGlvbi5yb2xsIixEWzJdKSxyKCJzaG93Y29hc3RsaW5lcyIsIWQmJnkpJiYocigiY29hc3RsaW5lY29sb3IiKSxyKCJjb2FzdGxpbmV3aWR0aCIpKSxyKCJzaG93b2NlYW4iLCEheSYmdm9pZCAwKSYmcigib2NlYW5jb2xvciIpfShwPyhPPS05Ni42LHo9MzguNyk6KE89ZD9JOlAsej0oRVswXStFWzFdKS8yKSxyKCJjZW50ZXIubG9uIixPKSxyKCJjZW50ZXIubGF0Iix6KSxnKSYmcigicHJvamVjdGlvbi5wYXJhbGxlbHMiLGgucHJvalBhcmFsbGVsc3x8WzAsNjBdKTtyKCJwcm9qZWN0aW9uLnNjYWxlIikscigic2hvd2xhbmQiLCEheSYmdm9pZCAwKSYmcigibGFuZGNvbG9yIikscigic2hvd2xha2VzIiwhIXkmJnZvaWQgMCkmJnIoImxha2Vjb2xvciIpLHIoInNob3dyaXZlcnMiLCEheSYmdm9pZCAwKSYmKHIoInJpdmVyY29sb3IiKSxyKCJyaXZlcndpZHRoIikpLHIoInNob3djb3VudHJpZXMiLGQmJiJ1c2EiIT09dSYmeSkmJihyKCJjb3VudHJ5Y29sb3IiKSxyKCJjb3VudHJ5d2lkdGgiKSksKCJ1c2EiPT09dXx8Im5vcnRoIGFtZXJpY2EiPT09dSYmNTA9PT1jKSYmKHIoInNob3dzdWJ1bml0cyIseSkscigic3VidW5pdGNvbG9yIikscigic3VidW5pdHdpZHRoIikpLGR8fHIoInNob3dmcmFtZSIseSkmJihyKCJmcmFtZWNvbG9yIikscigiZnJhbWV3aWR0aCIpKSxyKCJiZ2NvbG9yIikscigiZml0Ym91bmRzIikmJihkZWxldGUgZS5wcm9qZWN0aW9uLnNjYWxlLGQ/KGRlbGV0ZSBlLmNlbnRlci5sb24sZGVsZXRlIGUuY2VudGVyLmxhdCk6dj8oZGVsZXRlIGUuY2VudGVyLmxvbixkZWxldGUgZS5jZW50ZXIubGF0LGRlbGV0ZSBlLnByb2plY3Rpb24ucm90YXRpb24ubG9uLGRlbGV0ZSBlLnByb2plY3Rpb24ucm90YXRpb24ubGF0LGRlbGV0ZSBlLmxvbmF4aXMucmFuZ2UsZGVsZXRlIGUubGF0YXhpcy5yYW5nZSk6KGRlbGV0ZSBlLmNlbnRlci5sb24sZGVsZXRlIGUuY2VudGVyLmxhdCxkZWxldGUgZS5wcm9qZWN0aW9uLnJvdGF0aW9uLmxvbikpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7YSh0LGUscix7dHlwZToiZ2VvIixhdHRyaWJ1dGVzOnMsaGFuZGxlRGVmYXVsdHM6YyxmdWxsRGF0YTpyLHBhcnRpdGlvbjoieSJ9KX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL2dldF9kYXRhIjo4MDAsIi4uL3N1YnBsb3RfZGVmYXVsdHMiOjg0MCwiLi9jb25zdGFudHMiOjc5MywiLi9sYXlvdXRfYXR0cmlidXRlcyI6Nzk2fV0sNzk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSl7cmV0dXJue3R5cGU6IkZlYXR1cmUiLGlkOnQuaWQscHJvcGVydGllczp0LnByb3BlcnRpZXMsZ2VvbWV0cnk6cih0Lmdlb21ldHJ5LGUpfX1mdW5jdGlvbiByKGUsbil7aWYoIWUpcmV0dXJuIG51bGw7aWYoIkdlb21ldHJ5Q29sbGVjdGlvbiI9PT1lLnR5cGUpcmV0dXJue3R5cGU6Ikdlb21ldHJ5Q29sbGVjdGlvbiIsZ2VvbWV0cmllczpvYmplY3QuZ2VvbWV0cmllcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHIodCxuKX0pfTtpZighYy5oYXNPd25Qcm9wZXJ0eShlLnR5cGUpKXJldHVybiBudWxsO3ZhciBhPWNbZS50eXBlXTtyZXR1cm4gdC5nZW8uc3RyZWFtKGUsbihhKSksYS5yZXN1bHQoKX10Lmdlby5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9ZS5zdHJlYW07aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJub3QgeWV0IHN1cHBvcnRlZCIpO3JldHVybih0JiZuLmhhc093blByb3BlcnR5KHQudHlwZSk/blt0LnR5cGVdOnIpKHQsYSl9O3ZhciBuPXtGZWF0dXJlOmUsRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxyKXtyZXR1cm57dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOnQuZmVhdHVyZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQscil9KX19fSxhPVtdLGk9W10sbz17cG9pbnQ6ZnVuY3Rpb24odCxlKXthLnB1c2goW3QsZV0pfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1hLmxlbmd0aD9hLmxlbmd0aDwyP3t0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6YVswXX06e3R5cGU6Ik11bHRpUG9pbnQiLGNvb3JkaW5hdGVzOmF9Om51bGw7cmV0dXJuIGE9W10sdH19LHM9e2xpbmVTdGFydDp1LHBvaW50OmZ1bmN0aW9uKHQsZSl7YS5wdXNoKFt0LGVdKX0sbGluZUVuZDpmdW5jdGlvbigpe2EubGVuZ3RoJiYoaS5wdXNoKGEpLGE9W10pfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1pLmxlbmd0aD9pLmxlbmd0aDwyP3t0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczppWzBdfTp7dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczppfTpudWxsO3JldHVybiBpPVtdLHR9fSxsPXtwb2x5Z29uU3RhcnQ6dSxsaW5lU3RhcnQ6dSxwb2ludDpmdW5jdGlvbih0LGUpe2EucHVzaChbdCxlXSl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD1hLmxlbmd0aDtpZih0KXtkb3thLnB1c2goYVswXS5zbGljZSgpKX13aGlsZSgrK3Q8NCk7aS5wdXNoKGEpLGE9W119fSxwb2x5Z29uRW5kOnUscmVzdWx0OmZ1bmN0aW9uKCl7aWYoIWkubGVuZ3RoKXJldHVybiBudWxsO3ZhciB0PVtdLGU9W107cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihyKXshZnVuY3Rpb24odCl7aWYoKGU9dC5sZW5ndGgpPDQpcmV0dXJuITE7Zm9yKHZhciBlLHI9MCxuPXRbZS0xXVsxXSp0WzBdWzBdLXRbZS0xXVswXSp0WzBdWzFdOysrcjxlOyluKz10W3ItMV1bMV0qdFtyXVswXS10W3ItMV1bMF0qdFtyXVsxXTtyZXR1cm4gbjw9MH0ocik/ZS5wdXNoKHIpOnQucHVzaChbcl0pfSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPWVbMF07dC5zb21lKGZ1bmN0aW9uKHQpe2lmKGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWVbMF0sbj1lWzFdLGE9ITEsaT0wLG89dC5sZW5ndGgscz1vLTE7aTxvO3M9aSsrKXt2YXIgbD10W2ldLGM9bFswXSx1PWxbMV0saD10W3NdLGY9aFswXSxwPWhbMV07dT5uXnA+biYmcjwoZi1jKSoobi11KS8ocC11KStjJiYoYT0hYSl9cmV0dXJuIGF9KHRbMF0scikpcmV0dXJuIHQucHVzaChlKSwhMH0pfHx0LnB1c2goW2VdKX0pLGk9W10sdC5sZW5ndGg/dC5sZW5ndGg+MT97dHlwZToiTXVsdGlQb2x5Z29uIixjb29yZGluYXRlczp0fTp7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6dFswXX06bnVsbH19LGM9e1BvaW50Om8sTXVsdGlQb2ludDpvLExpbmVTdHJpbmc6cyxNdWx0aUxpbmVTdHJpbmc6cyxQb2x5Z29uOmwsTXVsdGlQb2x5Z29uOmwsU3BoZXJlOmx9O2Z1bmN0aW9uIHUoKXt9dmFyIGg9MWUtNixmPWgqaCxwPU1hdGguUEksZD1wLzIsZz0oTWF0aC5zcXJ0KHApLHAvMTgwKSx2PTE4MC9wO2Z1bmN0aW9uIG0odCl7cmV0dXJuIHQ+MT9kOnQ8LTE/LWQ6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIHkodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/cDpNYXRoLmFjb3ModCl9dmFyIHg9dC5nZW8ucHJvamVjdGlvbixiPXQuZ2VvLnByb2plY3Rpb25NdXRhdG9yO2Z1bmN0aW9uIF8odCxlKXt2YXIgcj0oMitkKSpNYXRoLnNpbihlKTtlLz0yO2Zvcih2YXIgbj0wLGE9MS8wO248MTAmJk1hdGguYWJzKGEpPmg7bisrKXt2YXIgaT1NYXRoLmNvcyhlKTtlLT1hPShlK01hdGguc2luKGUpKihpKzIpLXIpLygyKmkqKDEraSkpfXJldHVyblsyL01hdGguc3FydChwKig0K3ApKSp0KigxK01hdGguY29zKGUpKSwyKk1hdGguc3FydChwLyg0K3ApKSpNYXRoLnNpbihlKV19dC5nZW8uaW50ZXJydXB0PWZ1bmN0aW9uKGUpe3ZhciByLG49W1tbWy1wLDBdLFswLGRdLFtwLDBdXV0sW1tbLXAsMF0sWzAsLWRdLFtwLDBdXV1dO2Z1bmN0aW9uIGEodCxyKXtmb3IodmFyIGE9cjwwPy0xOjEsaT1uWysocjwwKV0sbz0wLHM9aS5sZW5ndGgtMTtvPHMmJnQ+aVtvXVsyXVswXTsrK28pO3ZhciBsPWUodC1pW29dWzFdWzBdLHIpO3JldHVybiBsWzBdKz1lKGlbb11bMV1bMF0sYSpyPmEqaVtvXVswXVsxXT9pW29dWzBdWzFdOnIpWzBdLGx9ZS5pbnZlcnQmJihhLmludmVydD1mdW5jdGlvbih0LGkpe2Zvcih2YXIgbz1yWysoaTwwKV0scz1uWysoaTwwKV0sYz0wLHU9by5sZW5ndGg7Yzx1OysrYyl7dmFyIGg9b1tjXTtpZihoWzBdWzBdPD10JiZ0PGhbMV1bMF0mJmhbMF1bMV08PWkmJmk8aFsxXVsxXSl7dmFyIGY9ZS5pbnZlcnQodC1lKHNbY11bMV1bMF0sMClbMF0saSk7cmV0dXJuIGZbMF0rPXNbY11bMV1bMF0sbChhKGZbMF0sZlsxXSksW3QsaV0pP2Y6bnVsbH19fSk7dmFyIGk9dC5nZW8ucHJvamVjdGlvbihhKSxvPWkuc3RyZWFtO2Z1bmN0aW9uIHModCxlKXtmb3IodmFyIHIsbixhLGk9LTEsbz10Lmxlbmd0aCxzPXRbMF0sbD1bXTsrK2k8bzspe249KChyPXRbaV0pWzBdLXNbMF0pL2UsYT0oclsxXS1zWzFdKS9lO2Zvcih2YXIgYz0wO2M8ZTsrK2MpbC5wdXNoKFtzWzBdK2MqbixzWzFdK2MqYV0pO3M9cn1yZXR1cm4gbC5wdXNoKHIpLGx9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBNYXRoLmFicyh0WzBdLWVbMF0pPGgmJk1hdGguYWJzKHRbMV0tZVsxXSk8aH1yZXR1cm4gaS5zdHJlYW09ZnVuY3Rpb24oZSl7dmFyIHI9aS5yb3RhdGUoKSxhPW8oZSksbD0oaS5yb3RhdGUoWzAsMF0pLG8oZSkpO3JldHVybiBpLnJvdGF0ZShyKSxhLnNwaGVyZT1mdW5jdGlvbigpe3QuZ2VvLnN0cmVhbShmdW5jdGlvbigpe2Zvcih2YXIgZT0xZS02LHI9W10sYT0wLGk9blswXS5sZW5ndGg7YTxpOysrYSl7dmFyIG89blswXVthXSxsPTE4MCpvWzBdWzBdL3AsYz0xODAqb1swXVsxXS9wLHU9MTgwKm9bMV1bMV0vcCxoPTE4MCpvWzJdWzBdL3AsZj0xODAqb1syXVsxXS9wO3IucHVzaChzKFtbbCtlLGMrZV0sW2wrZSx1LWVdLFtoLWUsdS1lXSxbaC1lLGYrZV1dLDMwKSl9Zm9yKHZhciBhPW5bMV0ubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBvPW5bMV1bYV0sbD0xODAqb1swXVswXS9wLGM9MTgwKm9bMF1bMV0vcCx1PTE4MCpvWzFdWzFdL3AsaD0xODAqb1syXVswXS9wLGY9MTgwKm9bMl1bMV0vcDtyLnB1c2gocyhbW2gtZSxmLWVdLFtoLWUsdStlXSxbbCtlLHUrZV0sW2wrZSxjLWVdXSwzMCkpfXJldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdC5tZXJnZShyKV19fSgpLGwpfSxhfSxpLmxvYmVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm5bW3RbMF1bMF0qcC8xODAsdFswXVsxXSpwLzE4MF0sW3RbMV1bMF0qcC8xODAsdFsxXVsxXSpwLzE4MF0sW3RbMl1bMF0qcC8xODAsdFsyXVsxXSpwLzE4MF1dfSl9KSxyPW4ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXt2YXIgcixuPWUodFswXVswXSx0WzBdWzFdKVswXSxhPWUodFsyXVswXSx0WzJdWzFdKVswXSxpPWUodFsxXVswXSx0WzBdWzFdKVsxXSxvPWUodFsxXVswXSx0WzFdWzFdKVsxXTtyZXR1cm4gaT5vJiYocj1pLGk9byxvPXIpLFtbbixpXSxbYSxvXV19KX0pLGkpOm4ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm5bWzE4MCp0WzBdWzBdL3AsMTgwKnRbMF1bMV0vcF0sWzE4MCp0WzFdWzBdL3AsMTgwKnRbMV1bMV0vcF0sWzE4MCp0WzJdWzBdL3AsMTgwKnRbMl1bMV0vcF1dfSl9KX0saX0sXy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0uNSplKk1hdGguc3FydCgoNCtwKS9wKSxuPW0ociksYT1NYXRoLmNvcyhuKTtyZXR1cm5bdC8oMi9NYXRoLnNxcnQocCooNCtwKSkqKDErYSkpLG0oKG4rciooYSsyKSkvKDIrZCkpXX0sKHQuZ2VvLmVja2VydDQ9ZnVuY3Rpb24oKXtyZXR1cm4geChfKX0pLnJhdz1fO3ZhciB3PXQuZ2VvLmF6aW11dGhhbEVxdWFsQXJlYS5yYXc7ZnVuY3Rpb24gayh0LGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8MiYmKGU9dCksMT09PWUpcmV0dXJuIHc7aWYoZT09PTEvMClyZXR1cm4gVDtmdW5jdGlvbiByKHIsbil7dmFyIGE9dyhyL2Usbik7cmV0dXJuIGFbMF0qPXQsYX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24ocixuKXt2YXIgYT13LmludmVydChyL3Qsbik7cmV0dXJuIGFbMF0qPWUsYX0scn1mdW5jdGlvbiBUKHQsZSl7cmV0dXJuW3QqTWF0aC5jb3MoZSkvTWF0aC5jb3MoZS89MiksMipNYXRoLnNpbihlKV19ZnVuY3Rpb24gTSh0LGUpe3JldHVyblszKnQvKDIqcCkqTWF0aC5zcXJ0KHAqcC8zLWUqZSksZV19ZnVuY3Rpb24gQSh0LGUpe3JldHVyblt0LDEuMjUqTWF0aC5sb2coTWF0aC50YW4ocC80Ky40KmUpKV19ZnVuY3Rpb24gUyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHIsbj10Kk1hdGguc2luKGUpLGE9MzA7ZG97ZS09cj0oZStNYXRoLnNpbihlKS1uKS8oMStNYXRoLmNvcyhlKSl9d2hpbGUoTWF0aC5hYnMocik+aCYmLS1hPjApO3JldHVybiBlLzJ9fVQuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9MiptKGUvMik7cmV0dXJuW3QqTWF0aC5jb3Moci8yKS9NYXRoLmNvcyhyKSxyXX0sKHQuZ2VvLmhhbW1lcj1mdW5jdGlvbigpe3ZhciB0PTIsZT1iKGspLHI9ZSh0KTtyZXR1cm4gci5jb2VmZmljaWVudD1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKHQ9K3IpOnR9LHJ9KS5yYXc9ayxNLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblsyLzMqcCp0L01hdGguc3FydChwKnAvMy1lKmUpLGVdfSwodC5nZW8ua2F2cmF5c2tpeTc9ZnVuY3Rpb24oKXtyZXR1cm4geChNKX0pLnJhdz1NLEEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QsMi41Kk1hdGguYXRhbihNYXRoLmV4cCguOCplKSktLjYyNSpwXX0sKHQuZ2VvLm1pbGxlcj1mdW5jdGlvbigpe3JldHVybiB4KEEpfSkucmF3PUEsUyhwKTt2YXIgRT1mdW5jdGlvbih0LGUscil7dmFyIG49UyhyKTtmdW5jdGlvbiBhKHIsYSl7cmV0dXJuW3QqcipNYXRoLmNvcyhhPW4oYSkpLGUqTWF0aC5zaW4oYSldfXJldHVybiBhLmludmVydD1mdW5jdGlvbihuLGEpe3ZhciBpPW0oYS9lKTtyZXR1cm5bbi8odCpNYXRoLmNvcyhpKSksbSgoMippK01hdGguc2luKDIqaSkpL3IpXX0sYX0oTWF0aC5TUVJUMi9kLE1hdGguU1FSVDIscCk7ZnVuY3Rpb24gTCh0LGUpe3ZhciByPWUqZSxuPXIqcjtyZXR1cm5bdCooLjg3MDctLjEzMTk3OSpyK24qKG4qKC4wMDM5NzEqci0uMDAxNTI5Km4pLS4wMTM3OTEpKSxlKigxLjAwNzIyNityKiguMDE1MDg1K24qKC4wMjg4NzQqci0uMDQ0NDc1LS4wMDU5MTYqbikpKV19KHQuZ2VvLm1vbGx3ZWlkZT1mdW5jdGlvbigpe3JldHVybiB4KEUpfSkucmF3PUUsTC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcixuPWUsYT0yNTtkb3t2YXIgaT1uKm4sbz1pKmk7bi09cj0obiooMS4wMDcyMjYraSooLjAxNTA4NStvKiguMDI4ODc0KmktLjA0NDQ3NS0uMDA1OTE2Km8pKSktZSkvKDEuMDA3MjI2K2kqKC4wNDUyNTUrbyooLjI1OTg2NippLS4zMTEzMjUtLjAwNTkxNioxMSpvKSkpfXdoaWxlKE1hdGguYWJzKHIpPmgmJi0tYT4wKTtyZXR1cm5bdC8oLjg3MDcrKGk9bipuKSooaSooaSppKmkqKC4wMDM5NzEtLjAwMTUyOSppKS0uMDEzNzkxKS0uMTMxOTc5KSksbl19LCh0Lmdlby5uYXR1cmFsRWFydGg9ZnVuY3Rpb24oKXtyZXR1cm4geChMKX0pLnJhdz1MO3ZhciBDPVtbLjk5ODYsLS4wNjJdLFsxLDBdLFsuOTk4NiwuMDYyXSxbLjk5NTQsLjEyNF0sWy45OSwuMTg2XSxbLjk4MjIsLjI0OF0sWy45NzMsLjMxXSxbLjk2LC4zNzJdLFsuOTQyNywuNDM0XSxbLjkyMTYsLjQ5NThdLFsuODk2MiwuNTU3MV0sWy44Njc5LC42MTc2XSxbLjgzNSwuNjc2OV0sWy43OTg2LC43MzQ2XSxbLjc1OTcsLjc5MDNdLFsuNzE4NiwuODQzNV0sWy42NzMyLC44OTM2XSxbLjYyMTMsLjkzOTRdLFsuNTcyMiwuOTc2MV0sWy41MzIyLDFdXTtmdW5jdGlvbiBQKHQsZSl7dmFyIHIsbj1NYXRoLm1pbigxOCwzNipNYXRoLmFicyhlKS9wKSxhPU1hdGguZmxvb3IobiksaT1uLWEsbz0ocj1DW2FdKVswXSxzPXJbMV0sbD0ocj1DWysrYV0pWzBdLGM9clsxXSx1PShyPUNbTWF0aC5taW4oMTksKythKV0pWzBdLGg9clsxXTtyZXR1cm5bdCoobCtpKih1LW8pLzIraSppKih1LTIqbCtvKS8yKSwoZT4wP2Q6LWQpKihjK2kqKGgtcykvMitpKmkqKGgtMipjK3MpLzIpXX1mdW5jdGlvbiBPKHQsZSl7cmV0dXJuW3QqTWF0aC5jb3MoZSksZV19ZnVuY3Rpb24geih0LGUpe3ZhciByLG49TWF0aC5jb3MoZSksYT0ocj15KG4qTWF0aC5jb3ModC89MikpKT9yL01hdGguc2luKHIpOjE7cmV0dXJuWzIqbipNYXRoLnNpbih0KSphLE1hdGguc2luKGUpKmFdfWZ1bmN0aW9uIEkodCxlKXt2YXIgcj16KHQsZSk7cmV0dXJuWyhyWzBdK3QvZCkvMiwoclsxXStlKS8yXX1DLmZvckVhY2goZnVuY3Rpb24odCl7dFsxXSo9MS4wMTQ0fSksUC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1lL2Qsbj05MCpyLGE9TWF0aC5taW4oMTgsTWF0aC5hYnMobi81KSksaT1NYXRoLm1heCgwLE1hdGguZmxvb3IoYSkpO2Rve3ZhciBvPUNbaV1bMV0scz1DW2krMV1bMV0sbD1DW01hdGgubWluKDE5LGkrMildWzFdLGM9bC1vLHU9bC0yKnMrbyxoPTIqKE1hdGguYWJzKHIpLXMpL2MscD11L2MsbT1oKigxLXAqaCooMS0yKnAqaCkpO2lmKG0+PTB8fDE9PT1pKXtuPShlPj0wPzU6LTUpKihtK2EpO3ZhciB5LHg9NTA7ZG97bT0oYT1NYXRoLm1pbigxOCxNYXRoLmFicyhuKS81KSktKGk9TWF0aC5mbG9vcihhKSksbz1DW2ldWzFdLHM9Q1tpKzFdWzFdLGw9Q1tNYXRoLm1pbigxOSxpKzIpXVsxXSxuLT0oeT0oZT49MD9kOi1kKSoocyttKihsLW8pLzIrbSptKihsLTIqcytvKS8yKS1lKSp2fXdoaWxlKE1hdGguYWJzKHkpPmYmJi0teD4wKTticmVha319d2hpbGUoLS1pPj0wKTt2YXIgYj1DW2ldWzBdLF89Q1tpKzFdWzBdLHc9Q1tNYXRoLm1pbigxOSxpKzIpXVswXTtyZXR1cm5bdC8oXyttKih3LWIpLzIrbSptKih3LTIqXytiKS8yKSxuKmddfSwodC5nZW8ucm9iaW5zb249ZnVuY3Rpb24oKXtyZXR1cm4geChQKX0pLnJhdz1QLE8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QvTWF0aC5jb3MoZSksZV19LCh0Lmdlby5zaW51c29pZGFsPWZ1bmN0aW9uKCl7cmV0dXJuIHgoTyl9KS5yYXc9Tyx6LmludmVydD1mdW5jdGlvbih0LGUpe2lmKCEodCp0KzQqZSplPnAqcCtoKSl7dmFyIHI9dCxuPWUsYT0yNTtkb3t2YXIgaSxvPU1hdGguc2luKHIpLHM9TWF0aC5zaW4oci8yKSxsPU1hdGguY29zKHIvMiksYz1NYXRoLnNpbihuKSx1PU1hdGguY29zKG4pLGY9TWF0aC5zaW4oMipuKSxkPWMqYyxnPXUqdSx2PXMqcyxtPTEtZypsKmwseD1tP3kodSpsKSpNYXRoLnNxcnQoaT0xL20pOmk9MCxiPTIqeCp1KnMtdCxfPXgqYy1lLHc9aSooZyp2K3gqdSpsKmQpLGs9aSooLjUqbypmLTIqeCpjKnMpLFQ9LjI1KmkqKGYqcy14KmMqZypvKSxNPWkqKGQqbCt4KnYqdSksQT1rKlQtTSp3O2lmKCFBKWJyZWFrO3ZhciBTPShfKmstYipNKS9BLEU9KGIqVC1fKncpL0E7ci09UyxuLT1FfXdoaWxlKChNYXRoLmFicyhTKT5ofHxNYXRoLmFicyhFKT5oKSYmLS1hPjApO3JldHVybltyLG5dfX0sKHQuZ2VvLmFpdG9mZj1mdW5jdGlvbigpe3JldHVybiB4KHopfSkucmF3PXosSS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10LG49ZSxhPTI1O2Rve3ZhciBpLG89TWF0aC5jb3Mobikscz1NYXRoLnNpbihuKSxsPU1hdGguc2luKDIqbiksYz1zKnMsdT1vKm8sZj1NYXRoLnNpbihyKSxwPU1hdGguY29zKHIvMiksZz1NYXRoLnNpbihyLzIpLHY9ZypnLG09MS11KnAqcCx4PW0/eShvKnApKk1hdGguc3FydChpPTEvbSk6aT0wLGI9LjUqKDIqeCpvKmcrci9kKS10LF89LjUqKHgqcytuKS1lLHc9LjUqaSoodSp2K3gqbypwKmMpKy41L2Qsaz1pKihmKmwvNC14KnMqZyksVD0uMTI1KmkqKGwqZy14KnMqdSpmKSxNPS41KmkqKGMqcCt4KnYqbykrLjUsQT1rKlQtTSp3LFM9KF8qay1iKk0pL0EsRT0oYipULV8qdykvQTtyLT1TLG4tPUV9d2hpbGUoKE1hdGguYWJzKFMpPmh8fE1hdGguYWJzKEUpPmgpJiYtLWE+MCk7cmV0dXJuW3Isbl19LCh0Lmdlby53aW5rZWwzPWZ1bmN0aW9uKCl7cmV0dXJuIHgoSSl9KS5yYXc9SX19LHt9XSw3OTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcmVnaXN0cnkiKSxvPU1hdGguUEkvMTgwLHM9MTgwL01hdGguUEksbD17Y3Vyc29yOiJwb2ludGVyIn0sYz17Y3Vyc29yOiJhdXRvIn07ZnVuY3Rpb24gdSh0LGUpe3JldHVybiBuLmJlaGF2aW9yLnpvb20oKS50cmFuc2xhdGUoZS50cmFuc2xhdGUoKSkuc2NhbGUoZS5zY2FsZSgpKX1mdW5jdGlvbiBoKHQsZSxyKXt2YXIgbj10LmlkLG89dC5ncmFwaERpdixzPW8ubGF5b3V0LGw9c1tuXSxjPW8uX2Z1bGxMYXlvdXQsdT1jW25dLGg9e30sZj17fTtmdW5jdGlvbiBwKHQsZSl7aFtuKyIuIit0XT1hLm5lc3RlZFByb3BlcnR5KGwsdCkuZ2V0KCksaS5jYWxsKCJfc3RvcmVEaXJlY3RHVUlFZGl0IixzLGMuX3ByZUdVSSxoKTt2YXIgcj1hLm5lc3RlZFByb3BlcnR5KHUsdCk7ci5nZXQoKSE9PWUmJihyLnNldChlKSxhLm5lc3RlZFByb3BlcnR5KGwsdCkuc2V0KGUpLGZbbisiLiIrdF09ZSl9cihwKSxwKCJwcm9qZWN0aW9uLnNjYWxlIixlLnNjYWxlKCkvdC5maXRTY2FsZSkscCgiZml0Ym91bmRzIiwhMSksby5lbWl0KCJwbG90bHlfcmVsYXlvdXQiLGYpfWZ1bmN0aW9uIGYodCxlKXt2YXIgcj11KDAsZSk7ZnVuY3Rpb24gYShyKXt2YXIgbj1lLmludmVydCh0Lm1pZFB0KTtyKCJjZW50ZXIubG9uIixuWzBdKSxyKCJjZW50ZXIubGF0IixuWzFdKX1yZXR1cm4gci5vbigiem9vbXN0YXJ0IixmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLnN0eWxlKGwpfSkub24oInpvb20iLGZ1bmN0aW9uKCl7ZS5zY2FsZShuLmV2ZW50LnNjYWxlKS50cmFuc2xhdGUobi5ldmVudC50cmFuc2xhdGUpLHQucmVuZGVyKCk7dmFyIHI9ZS5pbnZlcnQodC5taWRQdCk7dC5ncmFwaERpdi5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLHsiZ2VvLnByb2plY3Rpb24uc2NhbGUiOmUuc2NhbGUoKS90LmZpdFNjYWxlLCJnZW8uY2VudGVyLmxvbiI6clswXSwiZ2VvLmNlbnRlci5sYXQiOnJbMV19KX0pLm9uKCJ6b29tZW5kIixmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLnN0eWxlKGMpLGgodCxlLGEpfSkscn1mdW5jdGlvbiBwKHQsZSl7dmFyIHIsYSxpLG8scyxmLHAsZCxnLHY9dSgwLGUpLG09MjtmdW5jdGlvbiB5KHQpe3JldHVybiBlLmludmVydCh0KX1mdW5jdGlvbiB4KHIpe3ZhciBuPWUucm90YXRlKCksYT1lLmludmVydCh0Lm1pZFB0KTtyKCJwcm9qZWN0aW9uLnJvdGF0aW9uLmxvbiIsLW5bMF0pLHIoImNlbnRlci5sb24iLGFbMF0pLHIoImNlbnRlci5sYXQiLGFbMV0pfXJldHVybiB2Lm9uKCJ6b29tc3RhcnQiLGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc3R5bGUobCkscj1uLm1vdXNlKHRoaXMpLGE9ZS5yb3RhdGUoKSxpPWUudHJhbnNsYXRlKCksbz1hLHM9eShyKX0pLm9uKCJ6b29tIixmdW5jdGlvbigpe2lmKGY9bi5tb3VzZSh0aGlzKSxmdW5jdGlvbih0KXt2YXIgcj15KHQpO2lmKCFyKXJldHVybiEwO3ZhciBuPWUocik7cmV0dXJuIE1hdGguYWJzKG5bMF0tdFswXSk+bXx8TWF0aC5hYnMoblsxXS10WzFdKT5tfShyKSlyZXR1cm4gdi5zY2FsZShlLnNjYWxlKCkpLHZvaWQgdi50cmFuc2xhdGUoZS50cmFuc2xhdGUoKSk7ZS5zY2FsZShuLmV2ZW50LnNjYWxlKSxlLnRyYW5zbGF0ZShbaVswXSxuLmV2ZW50LnRyYW5zbGF0ZVsxXV0pLHM/eShmKSYmKGQ9eShmKSxwPVtvWzBdKyhkWzBdLXNbMF0pLGFbMV0sYVsyXV0sZS5yb3RhdGUocCksbz1wKTpzPXkocj1mKSxnPSEwLHQucmVuZGVyKCk7dmFyIGw9ZS5yb3RhdGUoKSxjPWUuaW52ZXJ0KHQubWlkUHQpO3QuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIix7Imdlby5wcm9qZWN0aW9uLnNjYWxlIjplLnNjYWxlKCkvdC5maXRTY2FsZSwiZ2VvLmNlbnRlci5sb24iOmNbMF0sImdlby5jZW50ZXIubGF0IjpjWzFdLCJnZW8ucHJvamVjdGlvbi5yb3RhdGlvbi5sb24iOi1sWzBdfSl9KS5vbigiem9vbWVuZCIsZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zdHlsZShjKSxnJiZoKHQsZSx4KX0pLHZ9ZnVuY3Rpb24gZCh0LGUpe3ZhciByLGE9e3I6ZS5yb3RhdGUoKSxrOmUuc2NhbGUoKX0saT11KDAsZSksZj1mdW5jdGlvbih0KXt2YXIgZT0wLHI9YXJndW1lbnRzLmxlbmd0aCxhPVtdO2Zvcig7KytlPHI7KWEucHVzaChhcmd1bWVudHNbZV0pO3ZhciBpPW4uZGlzcGF0Y2guYXBwbHkobnVsbCxhKTtyZXR1cm4gaS5vZj1mdW5jdGlvbihlLHIpe3JldHVybiBmdW5jdGlvbihhKXt2YXIgbzt0cnl7bz1hLnNvdXJjZUV2ZW50PW4uZXZlbnQsYS50YXJnZXQ9dCxuLmV2ZW50PWEsaVthLnR5cGVdLmFwcGx5KGUscil9ZmluYWxseXtuLmV2ZW50PW99fX0saX0oaSwiem9vbXN0YXJ0Iiwiem9vbSIsInpvb21lbmQiKSxwPTAsZD1pLm9uO2Z1bmN0aW9uIG0odCl7dmFyIHI9ZS5yb3RhdGUoKTt0KCJwcm9qZWN0aW9uLnJvdGF0aW9uLmxvbiIsLXJbMF0pLHQoInByb2plY3Rpb24ucm90YXRpb24ubGF0IiwtclsxXSl9cmV0dXJuIGkub24oInpvb21zdGFydCIsZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zdHlsZShsKTt2YXIgdCxjLHUsaCxtLGIsXyx3LGssVCxNLEE9bi5tb3VzZSh0aGlzKSxTPWUucm90YXRlKCksRT1TLEw9ZS50cmFuc2xhdGUoKSxDPShjPS41Kih0PVMpWzBdKm8sdT0uNSp0WzFdKm8saD0uNSp0WzJdKm8sbT1NYXRoLnNpbihjKSxiPU1hdGguY29zKGMpLF89TWF0aC5zaW4odSksdz1NYXRoLmNvcyh1KSxrPU1hdGguc2luKGgpLFQ9TWF0aC5jb3MoaCksW2IqdypUK20qXyprLG0qdypULWIqXyprLGIqXypUK20qdyprLGIqdyprLW0qXypUXSk7cj1nKGUsQSksZC5jYWxsKGksInpvb20iLGZ1bmN0aW9uKCl7dmFyIHQsaSxvLGwsYyx1LGgscCxkLG0sYj1uLm1vdXNlKHRoaXMpO2lmKGUuc2NhbGUoYS5rPW4uZXZlbnQuc2NhbGUpLHIpe2lmKGcoZSxiKSl7ZS5yb3RhdGUoUykudHJhbnNsYXRlKEwpO3ZhciBfPWcoZSxiKSx3PWZ1bmN0aW9uKHQsZSl7aWYoIXR8fCFlKXJldHVybjt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVyblt0WzFdKmVbMl0tdFsyXSplWzFdLHRbMl0qZVswXS10WzBdKmVbMl0sdFswXSplWzFdLXRbMV0qZVswXV19KHQsZSksbj1NYXRoLnNxcnQoeChyLHIpKSxhPS41Kk1hdGguYWNvcyhNYXRoLm1heCgtMSxNYXRoLm1pbigxLHgodCxlKSkpKSxpPU1hdGguc2luKGEpL247cmV0dXJuIG4mJltNYXRoLmNvcyhhKSxyWzJdKmksLXJbMV0qaSxyWzBdKmldfShyLF8pLGs9ZnVuY3Rpb24odCl7cmV0dXJuW01hdGguYXRhbjIoMioodFswXSp0WzFdK3RbMl0qdFszXSksMS0yKih0WzFdKnRbMV0rdFsyXSp0WzJdKSkqcyxNYXRoLmFzaW4oTWF0aC5tYXgoLTEsTWF0aC5taW4oMSwyKih0WzBdKnRbMl0tdFszXSp0WzFdKSkpKSpzLE1hdGguYXRhbjIoMioodFswXSp0WzNdK3RbMV0qdFsyXSksMS0yKih0WzJdKnRbMl0rdFszXSp0WzNdKSkqc119KChpPXcsbz0odD1DKVswXSxsPXRbMV0sYz10WzJdLHU9dFszXSxoPWlbMF0scD1pWzFdLGQ9aVsyXSxtPWlbM10sW28qaC1sKnAtYypkLXUqbSxvKnArbCpoK2MqbS11KmQsbypkLWwqbStjKmgrdSpwLG8qbStsKmQtYypwK3UqaF0pKSxUPWEucj1mdW5jdGlvbih0LGUscil7dmFyIG49eShlLDIsdFswXSk7bj15KG4sMSx0WzFdKSxuPXkobiwwLHRbMl0tclsyXSk7dmFyIGEsaSxvPWVbMF0sbD1lWzFdLGM9ZVsyXSx1PW5bMF0saD1uWzFdLGY9blsyXSxwPU1hdGguYXRhbjIobCxvKSpzLGQ9TWF0aC5zcXJ0KG8qbytsKmwpO01hdGguYWJzKGgpPmQ/KGk9KGg+MD85MDotOTApLXAsYT0wKTooaT1NYXRoLmFzaW4oaC9kKSpzLXAsYT1NYXRoLnNxcnQoZCpkLWgqaCkpO3ZhciBnPTE4MC1pLTIqcCxtPShNYXRoLmF0YW4yKGYsdSktTWF0aC5hdGFuMihjLGEpKSpzLHg9KE1hdGguYXRhbjIoZix1KS1NYXRoLmF0YW4yKGMsLWEpKSpzLGI9dihyWzBdLHJbMV0saSxtKSxfPXYoclswXSxyWzFdLGcseCk7cmV0dXJuIGI8PV8/W2ksbSxyWzJdXTpbZyx4LHJbMl1dfShrLHIsRSk7aXNGaW5pdGUoVFswXSkmJmlzRmluaXRlKFRbMV0pJiZpc0Zpbml0ZShUWzJdKXx8KFQ9RSksZS5yb3RhdGUoVCksRT1UfX1lbHNlIHI9ZyhlLEE9Yik7Zi5vZih0aGlzLGFyZ3VtZW50cykoe3R5cGU6Inpvb20ifSl9KSxNPWYub2YodGhpcyxhcmd1bWVudHMpLHArK3x8TSh7dHlwZToiem9vbXN0YXJ0In0pfSkub24oInpvb21lbmQiLGZ1bmN0aW9uKCl7dmFyIHI7bi5zZWxlY3QodGhpcykuc3R5bGUoYyksZC5jYWxsKGksInpvb20iLG51bGwpLHI9Zi5vZih0aGlzLGFyZ3VtZW50cyksLS1wfHxyKHt0eXBlOiJ6b29tZW5kIn0pLGgodCxlLG0pfSkub24oInpvb20ucmVkcmF3IixmdW5jdGlvbigpe3QucmVuZGVyKCk7dmFyIHI9ZS5yb3RhdGUoKTt0LmdyYXBoRGl2LmVtaXQoInBsb3RseV9yZWxheW91dGluZyIseyJnZW8ucHJvamVjdGlvbi5zY2FsZSI6ZS5zY2FsZSgpL3QuZml0U2NhbGUsImdlby5wcm9qZWN0aW9uLnJvdGF0aW9uLmxvbiI6LXJbMF0sImdlby5wcm9qZWN0aW9uLnJvdGF0aW9uLmxhdCI6LXJbMV19KX0pLG4ucmViaW5kKGksZiwib24iKX1mdW5jdGlvbiBnKHQsZSl7dmFyIHI9dC5pbnZlcnQoZSk7cmV0dXJuIHImJmlzRmluaXRlKHJbMF0pJiZpc0Zpbml0ZShyWzFdKSYmZnVuY3Rpb24odCl7dmFyIGU9dFswXSpvLHI9dFsxXSpvLG49TWF0aC5jb3Mocik7cmV0dXJuW24qTWF0aC5jb3MoZSksbipNYXRoLnNpbihlKSxNYXRoLnNpbihyKV19KHIpfWZ1bmN0aW9uIHYodCxlLHIsbil7dmFyIGE9bShyLXQpLGk9bShuLWUpO3JldHVybiBNYXRoLnNxcnQoYSphK2kqaSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4odCUzNjArNTQwKSUzNjAtMTgwfWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPXIqbyxhPXQuc2xpY2UoKSxpPTA9PT1lPzE6MCxzPTI9PT1lPzE6MixsPU1hdGguY29zKG4pLGM9TWF0aC5zaW4obik7cmV0dXJuIGFbaV09dFtpXSpsLXRbc10qYyxhW3NdPXRbc10qbCt0W2ldKmMsYX1mdW5jdGlvbiB4KHQsZSl7Zm9yKHZhciByPTAsbj0wLGE9dC5sZW5ndGg7bjxhOysrbilyKz10W25dKmVbbl07cmV0dXJuIHJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5wcm9qZWN0aW9uO3JldHVybihlLl9pc1Njb3BlZD9mOmUuX2lzQ2xpcHBlZD9kOnApKHQscil9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LGQzOjE2NX1dLDgwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9yZWdpc3RyeSIpLGE9dCgiLi9jYXJ0ZXNpYW4vY29uc3RhbnRzIikuU1VCUExPVF9QQVRURVJOO3IuZ2V0U3VicGxvdENhbGNEYXRhPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1uLnN1YnBsb3RzUmVnaXN0cnlbZV07aWYoIWEpcmV0dXJuW107Zm9yKHZhciBpPWEuYXR0cixvPVtdLHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGw9dFtzXTtsWzBdLnRyYWNlW2ldPT09ciYmby5wdXNoKGwpfXJldHVybiBvfSxyLmdldE1vZHVsZUNhbGNEYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYT1bXSxpPVtdO2lmKCEocj0ic3RyaW5nIj09dHlwZW9mIGU/bi5nZXRNb2R1bGUoZSkucGxvdDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOmUucGxvdCkpcmV0dXJuW2EsdF07Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBzPXRbb10sbD1zWzBdLnRyYWNlOyEwPT09bC52aXNpYmxlJiYwIT09bC5fbGVuZ3RoJiYobC5fbW9kdWxlLnBsb3Q9PT1yP2EucHVzaChzKTppLnB1c2gocykpfXJldHVyblthLGldfSxyLmdldFN1YnBsb3REYXRhPWZ1bmN0aW9uKHQsZSxyKXtpZighbi5zdWJwbG90c1JlZ2lzdHJ5W2VdKXJldHVybltdO3ZhciBpLG8scyxsPW4uc3VicGxvdHNSZWdpc3RyeVtlXS5hdHRyLGM9W107aWYoImdsMmQiPT09ZSl7dmFyIHU9ci5tYXRjaChhKTtvPSJ4Iit1WzFdLHM9InkiK3VbMl19Zm9yKHZhciBoPTA7aDx0Lmxlbmd0aDtoKyspaT10W2hdLCJnbDJkIj09PWUmJm4udHJhY2VJcyhpLCJnbDJkIik/aVtsWzBdXT09PW8mJmlbbFsxXV09PT1zJiZjLnB1c2goaSk6aVtsXT09PXImJmMucHVzaChpKTtyZXR1cm4gY319LHsiLi4vcmVnaXN0cnkiOjg0NiwiLi9jYXJ0ZXNpYW4vY29uc3RhbnRzIjo3NzF9XSw4MDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgibW91c2UtY2hhbmdlIiksYT10KCJtb3VzZS13aGVlbCIpLGk9dCgibW91c2UtZXZlbnQtb2Zmc2V0Iiksbz10KCIuLi9jYXJ0ZXNpYW4vY29uc3RhbnRzIikscz10KCJoYXMtcGFzc2l2ZS1ldmVudHMiKTtmdW5jdGlvbiBsKHQsZSl7dGhpcy5lbGVtZW50PXQsdGhpcy5wbG90PWUsdGhpcy5tb3VzZUxpc3RlbmVyPW51bGwsdGhpcy53aGVlbExpc3RlbmVyPW51bGwsdGhpcy5sYXN0SW5wdXRUaW1lPURhdGUubm93KCksdGhpcy5sYXN0UG9zPVswLDBdLHRoaXMuYm94RW5hYmxlZD0hMSx0aGlzLmJveEluaXRlZD0hMSx0aGlzLmJveFN0YXJ0PVswLDBdLHRoaXMuYm94RW5kPVswLDBdLHRoaXMuZHJhZ1N0YXJ0PVswLDBdfWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Lm1vdXNlQ29udGFpbmVyLHI9dC5nbHBsb3QsYz1uZXcgbChlLHIpO2Z1bmN0aW9uIHUoKXt0LnhheGlzLmF1dG9yYW5nZT0hMSx0LnlheGlzLmF1dG9yYW5nZT0hMX1mdW5jdGlvbiBoKGUsbixhKXt2YXIgaSxzLGw9dC5jYWxjRGF0YUJveCgpLGg9ci52aWV3Qm94LGY9Yy5sYXN0UG9zWzBdLHA9Yy5sYXN0UG9zWzFdLGQ9by5NSU5EUkFHKnIucGl4ZWxSYXRpbyxnPW8uTUlOWk9PTSpyLnBpeGVsUmF0aW87ZnVuY3Rpb24gdihlLHIsbil7dmFyIGE9TWF0aC5taW4ocixuKSxpPU1hdGgubWF4KHIsbik7YSE9PWk/KGxbZV09YSxsW2UrMl09aSxjLmRhdGFCb3g9bCx0LnNldFJhbmdlcyhsKSk6KHQuc2VsZWN0Qm94LnNlbGVjdEJveD1bMCwwLDEsMV0sdC5nbHBsb3Quc2V0RGlydHkoKSl9c3dpdGNoKG4qPXIucGl4ZWxSYXRpbyxhKj1yLnBpeGVsUmF0aW8sYT1oWzNdLWhbMV0tYSx0LmZ1bGxMYXlvdXQuZHJhZ21vZGUpe2Nhc2Uiem9vbSI6aWYoZSl7dmFyIG09bi8oaFsyXS1oWzBdKSoobFsyXS1sWzBdKStsWzBdLHk9YS8oaFszXS1oWzFdKSoobFszXS1sWzFdKStsWzFdO2MuYm94SW5pdGVkfHwoYy5ib3hTdGFydFswXT1tLGMuYm94U3RhcnRbMV09eSxjLmRyYWdTdGFydFswXT1uLGMuZHJhZ1N0YXJ0WzFdPWEpLGMuYm94RW5kWzBdPW0sYy5ib3hFbmRbMV09eSxjLmJveEluaXRlZD0hMCxjLmJveEVuYWJsZWR8fGMuYm94U3RhcnRbMF09PT1jLmJveEVuZFswXSYmYy5ib3hTdGFydFsxXT09PWMuYm94RW5kWzFdfHwoYy5ib3hFbmFibGVkPSEwKTt2YXIgeD1NYXRoLmFicyhjLmRyYWdTdGFydFswXS1uKTxnLGI9TWF0aC5hYnMoYy5kcmFnU3RhcnRbMV0tYSk8ZztpZighZnVuY3Rpb24oKXtmb3IodmFyIGU9dC5ncmFwaERpdi5fZnVsbExheW91dC5fYXhpc0NvbnN0cmFpbnRHcm91cHMscj10LnhheGlzLl9pZCxuPXQueWF4aXMuX2lkLGE9MDthPGUubGVuZ3RoO2ErKylpZigtMSE9PWVbYV1bcl0pe2lmKC0xIT09ZVthXVtuXSlyZXR1cm4hMDticmVha31yZXR1cm4hMX0oKXx8eCYmYil4JiYoYy5ib3hFbmRbMF09Yy5ib3hTdGFydFswXSksYiYmKGMuYm94RW5kWzFdPWMuYm94U3RhcnRbMV0pO2Vsc2V7aT1jLmJveEVuZFswXS1jLmJveFN0YXJ0WzBdLHM9Yy5ib3hFbmRbMV0tYy5ib3hTdGFydFsxXTt2YXIgXz0obFszXS1sWzFdKS8obFsyXS1sWzBdKTtNYXRoLmFicyhpKl8pPk1hdGguYWJzKHMpPyhjLmJveEVuZFsxXT1jLmJveFN0YXJ0WzFdK01hdGguYWJzKGkpKl8qKHM+PTA/MTotMSksYy5ib3hFbmRbMV08bFsxXT8oYy5ib3hFbmRbMV09bFsxXSxjLmJveEVuZFswXT1jLmJveFN0YXJ0WzBdKyhsWzFdLWMuYm94U3RhcnRbMV0pL01hdGguYWJzKF8pKTpjLmJveEVuZFsxXT5sWzNdJiYoYy5ib3hFbmRbMV09bFszXSxjLmJveEVuZFswXT1jLmJveFN0YXJ0WzBdKyhsWzNdLWMuYm94U3RhcnRbMV0pL01hdGguYWJzKF8pKSk6KGMuYm94RW5kWzBdPWMuYm94U3RhcnRbMF0rTWF0aC5hYnMocykvXyooaT49MD8xOi0xKSxjLmJveEVuZFswXTxsWzBdPyhjLmJveEVuZFswXT1sWzBdLGMuYm94RW5kWzFdPWMuYm94U3RhcnRbMV0rKGxbMF0tYy5ib3hTdGFydFswXSkqTWF0aC5hYnMoXykpOmMuYm94RW5kWzBdPmxbMl0mJihjLmJveEVuZFswXT1sWzJdLGMuYm94RW5kWzFdPWMuYm94U3RhcnRbMV0rKGxbMl0tYy5ib3hTdGFydFswXSkqTWF0aC5hYnMoXykpKX19ZWxzZSBjLmJveEVuYWJsZWQ/KGk9Yy5ib3hTdGFydFswXSE9PWMuYm94RW5kWzBdLHM9Yy5ib3hTdGFydFsxXSE9PWMuYm94RW5kWzFdLGl8fHM/KGkmJih2KDAsYy5ib3hTdGFydFswXSxjLmJveEVuZFswXSksdC54YXhpcy5hdXRvcmFuZ2U9ITEpLHMmJih2KDEsYy5ib3hTdGFydFsxXSxjLmJveEVuZFsxXSksdC55YXhpcy5hdXRvcmFuZ2U9ITEpLHQucmVsYXlvdXRDYWxsYmFjaygpKTp0LmdscGxvdC5zZXREaXJ0eSgpLGMuYm94RW5hYmxlZD0hMSxjLmJveEluaXRlZD0hMSk6Yy5ib3hJbml0ZWQmJihjLmJveEluaXRlZD0hMSk7YnJlYWs7Y2FzZSJwYW4iOmMuYm94RW5hYmxlZD0hMSxjLmJveEluaXRlZD0hMSxlPyhjLnBhbm5pbmd8fChjLmRyYWdTdGFydFswXT1uLGMuZHJhZ1N0YXJ0WzFdPWEpLE1hdGguYWJzKGMuZHJhZ1N0YXJ0WzBdLW4pPGQmJihuPWMuZHJhZ1N0YXJ0WzBdKSxNYXRoLmFicyhjLmRyYWdTdGFydFsxXS1hKTxkJiYoYT1jLmRyYWdTdGFydFsxXSksaT0oZi1uKSoobFsyXS1sWzBdKS8oci52aWV3Qm94WzJdLXIudmlld0JveFswXSkscz0ocC1hKSoobFszXS1sWzFdKS8oci52aWV3Qm94WzNdLXIudmlld0JveFsxXSksbFswXSs9aSxsWzJdKz1pLGxbMV0rPXMsbFszXSs9cyx0LnNldFJhbmdlcyhsKSxjLnBhbm5pbmc9ITAsYy5sYXN0SW5wdXRUaW1lPURhdGUubm93KCksdSgpLHQuY2FtZXJhQ2hhbmdlZCgpLHQuaGFuZGxlQW5ub3RhdGlvbnMoKSk6Yy5wYW5uaW5nJiYoYy5wYW5uaW5nPSExLHQucmVsYXlvdXRDYWxsYmFjaygpKX1jLmxhc3RQb3NbMF09bixjLmxhc3RQb3NbMV09YX1yZXR1cm4gYy5tb3VzZUxpc3RlbmVyPW4oZSxoKSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLGZ1bmN0aW9uKHQpe3ZhciByPWkodC5jaGFuZ2VkVG91Y2hlc1swXSxlKTtoKDAsclswXSxyWzFdKSxoKDEsclswXSxyWzFdKSx0LnByZXZlbnREZWZhdWx0KCl9LCEhcyYme3Bhc3NpdmU6ITF9KSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPWkodC5jaGFuZ2VkVG91Y2hlc1swXSxlKTtoKDEsclswXSxyWzFdKSx0LnByZXZlbnREZWZhdWx0KCl9LCEhcyYme3Bhc3NpdmU6ITF9KSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixmdW5jdGlvbih0KXtoKDAsYy5sYXN0UG9zWzBdLGMubGFzdFBvc1sxXSksdC5wcmV2ZW50RGVmYXVsdCgpfSwhIXMmJntwYXNzaXZlOiExfSksYy53aGVlbExpc3RlbmVyPWEoZSxmdW5jdGlvbihlLG4pe2lmKCF0LnNjcm9sbFpvb20pcmV0dXJuITE7dmFyIGE9dC5jYWxjRGF0YUJveCgpLGk9ci52aWV3Qm94LG89Yy5sYXN0UG9zWzBdLHM9Yy5sYXN0UG9zWzFdLGw9TWF0aC5leHAoNSpuLyhpWzNdLWlbMV0pKSxoPW8vKGlbMl0taVswXSkqKGFbMl0tYVswXSkrYVswXSxmPXMvKGlbM10taVsxXSkqKGFbM10tYVsxXSkrYVsxXTtyZXR1cm4gYVswXT0oYVswXS1oKSpsK2gsYVsyXT0oYVsyXS1oKSpsK2gsYVsxXT0oYVsxXS1mKSpsK2YsYVszXT0oYVszXS1mKSpsK2YsdC5zZXRSYW5nZXMoYSksYy5sYXN0SW5wdXRUaW1lPURhdGUubm93KCksdSgpLHQuY2FtZXJhQ2hhbmdlZCgpLHQuaGFuZGxlQW5ub3RhdGlvbnMoKSx0LnJlbGF5b3V0Q2FsbGJhY2soKSwhMH0sITApLGN9fSx7Ii4uL2NhcnRlc2lhbi9jb25zdGFudHMiOjc3MSwiaGFzLXBhc3NpdmUtZXZlbnRzIjo0MTMsIm1vdXNlLWNoYW5nZSI6NDM3LCJtb3VzZS1ldmVudC1vZmZzZXQiOjQzOCwibW91c2Utd2hlZWwiOjQ0MH1dLDgwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpO2Z1bmN0aW9uIGkodCl7dGhpcy5zY2VuZT10LHRoaXMuZ2w9dC5nbCx0aGlzLnBpeGVsUmF0aW89dC5waXhlbFJhdGlvLHRoaXMuc2NyZWVuQm94PVswLDAsMSwxXSx0aGlzLnZpZXdCb3g9WzAsMCwxLDFdLHRoaXMuZGF0YUJveD1bLTEsLTEsMSwxXSx0aGlzLmJvcmRlckxpbmVFbmFibGU9WyExLCExLCExLCExXSx0aGlzLmJvcmRlckxpbmVXaWR0aD1bMSwxLDEsMV0sdGhpcy5ib3JkZXJMaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy50aWNrcz1bW10sW11dLHRoaXMudGlja0VuYWJsZT1bITAsITAsITEsITFdLHRoaXMudGlja1BhZD1bMTUsMTUsMTUsMTVdLHRoaXMudGlja0FuZ2xlPVswLDAsMCwwXSx0aGlzLnRpY2tDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpY2tNYXJrTGVuZ3RoPVswLDAsMCwwXSx0aGlzLnRpY2tNYXJrV2lkdGg9WzAsMCwwLDBdLHRoaXMudGlja01hcmtDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxhYmVscz1bIngiLCJ5Il0sdGhpcy5sYWJlbEVuYWJsZT1bITAsITAsITEsITFdLHRoaXMubGFiZWxBbmdsZT1bMCxNYXRoLlBJLzIsMCwzKk1hdGguUEkvMl0sdGhpcy5sYWJlbFBhZD1bMTUsMTUsMTUsMTVdLHRoaXMubGFiZWxTaXplPVsxMiwxMl0sdGhpcy5sYWJlbEZvbnQ9WyJzYW5zLXNlcmlmIiwic2Fucy1zZXJpZiJdLHRoaXMubGFiZWxDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpdGxlPSIiLHRoaXMudGl0bGVFbmFibGU9ITAsdGhpcy50aXRsZUNlbnRlcj1bMCwwLDAsMF0sdGhpcy50aXRsZUFuZ2xlPTAsdGhpcy50aXRsZUNvbG9yPVswLDAsMCwxXSx0aGlzLnRpdGxlRm9udD0ic2Fucy1zZXJpZiIsdGhpcy50aXRsZVNpemU9MTgsdGhpcy5ncmlkTGluZUVuYWJsZT1bITAsITBdLHRoaXMuZ3JpZExpbmVDb2xvcj1bWzAsMCwwLC41XSxbMCwwLDAsLjVdXSx0aGlzLmdyaWRMaW5lV2lkdGg9WzEsMV0sdGhpcy56ZXJvTGluZUVuYWJsZT1bITAsITBdLHRoaXMuemVyb0xpbmVXaWR0aD1bMSwxXSx0aGlzLnplcm9MaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuYm9yZGVyQ29sb3I9WzAsMCwwLDBdLHRoaXMuYmFja2dyb3VuZENvbG9yPVswLDAsMCwwXSx0aGlzLnN0YXRpYz10aGlzLnNjZW5lLnN0YXRpY1Bsb3R9dmFyIG89aS5wcm90b3R5cGUscz1bInhheGlzIiwieWF4aXMiXTtvLm1lcmdlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLG8sbCxjLHUsaCxmLHA7Zm9yKHRoaXMudGl0bGVFbmFibGU9ITEsdGhpcy5iYWNrZ3JvdW5kQ29sb3I9YSh0LnBsb3RfYmdjb2xvciksZj0wO2Y8MjsrK2Ype3ZhciBkPShlPXNbZl0pLmNoYXJBdCgwKTtmb3Iobj0ocj10W3RoaXMuc2NlbmVbZV0uX25hbWVdKS50aXRsZS50ZXh0PT09dGhpcy5zY2VuZS5mdWxsTGF5b3V0Ll9kZmx0VGl0bGVbZF0/IiI6ci50aXRsZS50ZXh0LHA9MDtwPD0yO3ArPTIpdGhpcy5sYWJlbEVuYWJsZVtmK3BdPSExLHRoaXMubGFiZWxzW2YrcF09bix0aGlzLmxhYmVsQ29sb3JbZitwXT1hKHIudGl0bGUuZm9udC5jb2xvciksdGhpcy5sYWJlbEZvbnRbZitwXT1yLnRpdGxlLmZvbnQuZmFtaWx5LHRoaXMubGFiZWxTaXplW2YrcF09ci50aXRsZS5mb250LnNpemUsdGhpcy5sYWJlbFBhZFtmK3BdPXRoaXMuZ2V0TGFiZWxQYWQoZSxyKSx0aGlzLnRpY2tFbmFibGVbZitwXT0hMSx0aGlzLnRpY2tDb2xvcltmK3BdPWEoKHIudGlja2ZvbnR8fHt9KS5jb2xvciksdGhpcy50aWNrQW5nbGVbZitwXT0iYXV0byI9PT1yLnRpY2thbmdsZT8wOk1hdGguUEkqLXIudGlja2FuZ2xlLzE4MCx0aGlzLnRpY2tQYWRbZitwXT10aGlzLmdldFRpY2tQYWQociksdGhpcy50aWNrTWFya0xlbmd0aFtmK3BdPTAsdGhpcy50aWNrTWFya1dpZHRoW2YrcF09ci50aWNrd2lkdGh8fDAsdGhpcy50aWNrTWFya0NvbG9yW2YrcF09YShyLnRpY2tjb2xvciksdGhpcy5ib3JkZXJMaW5lRW5hYmxlW2YrcF09ITEsdGhpcy5ib3JkZXJMaW5lQ29sb3JbZitwXT1hKHIubGluZWNvbG9yKSx0aGlzLmJvcmRlckxpbmVXaWR0aFtmK3BdPXIubGluZXdpZHRofHwwO2M9dGhpcy5oYXNTaGFyZWRBeGlzKHIpLG89dGhpcy5oYXNBeGlzSW5EZmx0UG9zKGUscikmJiFjLGw9dGhpcy5oYXNBeGlzSW5BbHRyUG9zKGUscikmJiFjLGk9ci5taXJyb3J8fCExLHU9Yz8tMSE9PVN0cmluZyhpKS5pbmRleE9mKCJhbGwiKTohIWksaD1jPyJhbGx0aWNrcyI9PT1pOi0xIT09U3RyaW5nKGkpLmluZGV4T2YoInRpY2tzIiksbz90aGlzLmxhYmVsRW5hYmxlW2ZdPSEwOmwmJih0aGlzLmxhYmVsRW5hYmxlW2YrMl09ITApLG8/dGhpcy50aWNrRW5hYmxlW2ZdPXIuc2hvd3RpY2tsYWJlbHM6bCYmKHRoaXMudGlja0VuYWJsZVtmKzJdPXIuc2hvd3RpY2tsYWJlbHMpLChvfHx1KSYmKHRoaXMuYm9yZGVyTGluZUVuYWJsZVtmXT1yLnNob3dsaW5lKSwobHx8dSkmJih0aGlzLmJvcmRlckxpbmVFbmFibGVbZisyXT1yLnNob3dsaW5lKSwob3x8aCkmJih0aGlzLnRpY2tNYXJrTGVuZ3RoW2ZdPXRoaXMuZ2V0VGlja01hcmtMZW5ndGgocikpLChsfHxoKSYmKHRoaXMudGlja01hcmtMZW5ndGhbZisyXT10aGlzLmdldFRpY2tNYXJrTGVuZ3RoKHIpKSx0aGlzLmdyaWRMaW5lRW5hYmxlW2ZdPXIuc2hvd2dyaWQsdGhpcy5ncmlkTGluZUNvbG9yW2ZdPWEoci5ncmlkY29sb3IpLHRoaXMuZ3JpZExpbmVXaWR0aFtmXT1yLmdyaWR3aWR0aCx0aGlzLnplcm9MaW5lRW5hYmxlW2ZdPXIuemVyb2xpbmUsdGhpcy56ZXJvTGluZUNvbG9yW2ZdPWEoci56ZXJvbGluZWNvbG9yKSx0aGlzLnplcm9MaW5lV2lkdGhbZl09ci56ZXJvbGluZXdpZHRofX0sby5oYXNTaGFyZWRBeGlzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2NlbmUscj1lLmZ1bGxMYXlvdXQuX3N1YnBsb3RzLmdsMmQ7cmV0dXJuIDAhPT1uLmZpbmRTdWJwbG90c1dpdGhBeGlzKHIsdCkuaW5kZXhPZihlLmlkKX0sby5oYXNBeGlzSW5EZmx0UG9zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5zaWRlO3JldHVybiJ4YXhpcyI9PT10PyJib3R0b20iPT09cjoieWF4aXMiPT09dD8ibGVmdCI9PT1yOnZvaWQgMH0sby5oYXNBeGlzSW5BbHRyUG9zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5zaWRlO3JldHVybiJ4YXhpcyI9PT10PyJ0b3AiPT09cjoieWF4aXMiPT09dD8icmlnaHQiPT09cjp2b2lkIDB9LG8uZ2V0TGFiZWxQYWQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnRpdGxlLmZvbnQuc2l6ZSxuPWUuc2hvd3RpY2tsYWJlbHM7cmV0dXJuInhheGlzIj09PXQ/InRvcCI9PT1lLnNpZGU/ciooMS41KyhuPzE6MCkpLTEwOnIqKDEuNSsobj8uNTowKSktMTA6InlheGlzIj09PXQ/InJpZ2h0Ij09PWUuc2lkZT8xMCtyKigxLjUrKG4/MTouNSkpOjEwK3IqKDEuNSsobj8uNTowKSk6dm9pZCAwfSxvLmdldFRpY2tQYWQ9ZnVuY3Rpb24odCl7cmV0dXJuIm91dHNpZGUiPT09dC50aWNrcz8xMCt0LnRpY2tsZW46MTV9LG8uZ2V0VGlja01hcmtMZW5ndGg9ZnVuY3Rpb24odCl7aWYoIXQudGlja3MpcmV0dXJuIDA7dmFyIGU9dC50aWNrbGVuO3JldHVybiJpbnNpZGUiPT09dC50aWNrcz8tZTplfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpKHQpfX0seyIuLi8uLi9saWIvc3RyMnJnYmFycmF5Ijo3NDAsIi4uL2NhcnRlc2lhbi9heGVzIjo3NjV9XSw4MDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGE9dCgiLi9zY2VuZTJkIiksaT10KCIuLi9sYXlvdXRfYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxzPXQoIi4uL2NhcnRlc2lhbi9jb25zdGFudHMiKSxsPXQoIi4uL2NhcnRlc2lhbiIpLGM9dCgiLi4vLi4vY29tcG9uZW50cy9meC9sYXlvdXRfYXR0cmlidXRlcyIpLHU9dCgiLi4vZ2V0X2RhdGEiKS5nZXRTdWJwbG90RGF0YTtyLm5hbWU9ImdsMmQiLHIuYXR0cj1bInhheGlzIiwieWF4aXMiXSxyLmlkUm9vdD1bIngiLCJ5Il0sci5pZFJlZ2V4PXMuaWRSZWdleCxyLmF0dHJSZWdleD1zLmF0dHJSZWdleCxyLmF0dHJpYnV0ZXM9dCgiLi4vY2FydGVzaWFuL2F0dHJpYnV0ZXMiKSxyLnN1cHBseUxheW91dERlZmF1bHRzPWZ1bmN0aW9uKHQsZSxyKXtlLl9oYXMoImNhcnRlc2lhbiIpfHxsLnN1cHBseUxheW91dERlZmF1bHRzKHQsZSxyKX0sci5sYXlvdXRBdHRyT3ZlcnJpZGVzPW4obC5sYXlvdXRBdHRyaWJ1dGVzLCJwbG90IiwiZnJvbS1yb290Iiksci5iYXNlTGF5b3V0QXR0ck92ZXJyaWRlcz1uKHtwbG90X2JnY29sb3I6aS5wbG90X2JnY29sb3IsaG92ZXJsYWJlbDpjLmhvdmVybGFiZWx9LCJwbG90IiwibmVzdGVkIiksci5wbG90PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5fZnVsbERhdGEsbj1lLl9zdWJwbG90cy5nbDJkLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXSxzPWUuX3Bsb3RzW29dLGw9dShyLCJnbDJkIixvKSxjPXMuX3NjZW5lMmQ7dm9pZCAwPT09YyYmKGM9bmV3IGEoe2lkOm8sZ3JhcGhEaXY6dCxjb250YWluZXI6dC5xdWVyeVNlbGVjdG9yKCIuZ2wtY29udGFpbmVyIiksc3RhdGljUGxvdDp0Ll9jb250ZXh0LnN0YXRpY1Bsb3QscGxvdEdsUGl4ZWxSYXRpbzp0Ll9jb250ZXh0LnBsb3RHbFBpeGVsUmF0aW99LGUpLHMuX3NjZW5lMmQ9YyksYy5wbG90KGwsdC5jYWxjZGF0YSxlLHQubGF5b3V0KX19LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhPW4uX3N1YnBsb3RzLmdsMmR8fFtdLGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIG89YVtpXSxzPW4uX3Bsb3RzW29dO2lmKHMuX3NjZW5lMmQpMD09PXUodCwiZ2wyZCIsbykubGVuZ3RoJiYocy5fc2NlbmUyZC5kZXN0cm95KCksZGVsZXRlIG4uX3Bsb3RzW29dKX1sLmNsZWFuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sci5kcmF3RnJhbWV3b3JrPWZ1bmN0aW9uKHQpe3QuX2NvbnRleHQuc3RhdGljUGxvdHx8bC5kcmF3RnJhbWV3b3JrKHQpfSxyLnRvU1ZHPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fc3VicGxvdHMuZ2wyZCxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBhPWUuX3Bsb3RzW3Jbbl1dLl9zY2VuZTJkLGk9YS50b0ltYWdlKCJwbmciKTtlLl9nbGltYWdlcy5hcHBlbmQoInN2ZzppbWFnZSIpLmF0dHIoe3htbG5zOm8uc3ZnLCJ4bGluazpocmVmIjppLHg6MCx5OjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KSxhLmRlc3Ryb3koKX19LHIudXBkYXRlRng9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5nbDJkLG49MDtuPHIubGVuZ3RoO24rKyl7ZS5fcGxvdHNbcltuXV0uX3NjZW5lMmQudXBkYXRlRngoZS5kcmFnbW9kZSl9fX0seyIuLi8uLi9jb21wb25lbnRzL2Z4L2xheW91dF9hdHRyaWJ1dGVzIjo2MzEsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vY2FydGVzaWFuIjo3NzYsIi4uL2NhcnRlc2lhbi9hdHRyaWJ1dGVzIjo3NjMsIi4uL2NhcnRlc2lhbi9jb25zdGFudHMiOjc3MSwiLi4vZ2V0X2RhdGEiOjgwMCwiLi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjgxNywiLi9zY2VuZTJkIjo4MDR9XSw4MDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4sYSxpPXQoIi4uLy4uL3JlZ2lzdHJ5Iiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLGw9dCgiZ2wtcGxvdDJkIiksYz10KCJnbC1zcGlrZXMyZCIpLHU9dCgiZ2wtc2VsZWN0LWJveCIpLGg9dCgid2ViZ2wtY29udGV4dCIpLGY9dCgiLi9jb252ZXJ0IikscD10KCIuL2NhbWVyYSIpLGQ9dCgiLi4vLi4vbGliL3Nob3dfbm9fd2ViZ2xfbXNnIiksZz10KCIuLi9jYXJ0ZXNpYW4vY29uc3RyYWludHMiKSx2PWcuZW5mb3JjZSxtPWcuY2xlYW4seT10KCIuLi9jYXJ0ZXNpYW4vYXV0b3JhbmdlIikuZG9BdXRvUmFuZ2UseD1bInhheGlzIiwieWF4aXMiXSxiPXQoIi4uL2NhcnRlc2lhbi9jb25zdGFudHMiKS5TVUJQTE9UX1BBVFRFUk47ZnVuY3Rpb24gXyh0LGUpe3RoaXMuY29udGFpbmVyPXQuY29udGFpbmVyLHRoaXMuZ3JhcGhEaXY9dC5ncmFwaERpdix0aGlzLnBpeGVsUmF0aW89dC5wbG90R2xQaXhlbFJhdGlvfHx3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLmlkPXQuaWQsdGhpcy5zdGF0aWNQbG90PSEhdC5zdGF0aWNQbG90LHRoaXMuc2Nyb2xsWm9vbT10aGlzLmdyYXBoRGl2Ll9jb250ZXh0Ll9zY3JvbGxab29tLmNhcnRlc2lhbix0aGlzLmZ1bGxEYXRhPW51bGwsdGhpcy51cGRhdGVSZWZzKGUpLHRoaXMubWFrZUZyYW1ld29yaygpLHRoaXMuc3RvcHBlZHx8KHRoaXMuZ2xwbG90T3B0aW9ucz1mKHRoaXMpLHRoaXMuZ2xwbG90T3B0aW9ucy5tZXJnZShlKSx0aGlzLmdscGxvdD1sKHRoaXMuZ2xwbG90T3B0aW9ucyksdGhpcy5jYW1lcmE9cCh0aGlzKSx0aGlzLnRyYWNlcz17fSx0aGlzLnNwaWtlcz1jKHRoaXMuZ2xwbG90KSx0aGlzLnNlbGVjdEJveD11KHRoaXMuZ2xwbG90LHtpbm5lckZpbGw6ITEsb3V0ZXJGaWxsOiEwfSksdGhpcy5sYXN0QnV0dG9uU3RhdGU9MCx0aGlzLnBpY2tSZXN1bHQ9bnVsbCx0aGlzLmlzTW91c2VPdmVyPSEwLHRoaXMuc3RvcHBlZD0hMSx0aGlzLnJlZHJhdz10aGlzLmRyYXcuYmluZCh0aGlzKSx0aGlzLnJlZHJhdygpKX1lLmV4cG9ydHM9Xzt2YXIgdz1fLnByb3RvdHlwZTt3Lm1ha2VGcmFtZXdvcms9ZnVuY3Rpb24oKXtpZih0aGlzLnN0YXRpY1Bsb3Qpe2lmKCEoYXx8KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksYT1oKHtjYW52YXM6bixwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITEscHJlbXVsdGlwbGllZEFscGhhOiEwLGFudGlhbGlhczohMH0pKSkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBzdGF0aWMgY2FudmFzL2NvbnRleHQgZm9yIGltYWdlIHNlcnZlciIpO3RoaXMuY2FudmFzPW4sdGhpcy5nbD1hfWVsc2V7dmFyIHQ9dGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcigiLmdsLWNhbnZhcy1mb2N1cyIpLGU9aCh7Y2FudmFzOnQscHJlc2VydmVEcmF3aW5nQnVmZmVyOiEwLHByZW11bHRpcGxpZWRBbHBoYTohMH0pO2lmKCFlKXJldHVybiBkKHRoaXMpLHZvaWQodGhpcy5zdG9wcGVkPSEwKTt0aGlzLmNhbnZhcz10LHRoaXMuZ2w9ZX12YXIgcj10aGlzLmNhbnZhcztyLnN0eWxlLndpZHRoPSIxMDAlIixyLnN0eWxlLmhlaWdodD0iMTAwJSIsci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHIuc3R5bGUudG9wPSIwcHgiLHIuc3R5bGUubGVmdD0iMHB4IixyLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIix0aGlzLnVwZGF0ZVNpemUociksci5jbGFzc05hbWUrPSIgdXNlci1zZWxlY3Qtbm9uZSI7dmFyIGk9dGhpcy5zdmdDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpO2kuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixpLnN0eWxlLnRvcD1pLnN0eWxlLmxlZnQ9IjBweCIsaS5zdHlsZS53aWR0aD1pLnN0eWxlLmhlaWdodD0iMTAwJSIsaS5zdHlsZVsiei1pbmRleCJdPTIwLGkuc3R5bGVbInBvaW50ZXItZXZlbnRzIl09Im5vbmUiO3ZhciBvPXRoaXMubW91c2VDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLG8uc3R5bGVbInBvaW50ZXItZXZlbnRzIl09ImF1dG8iLHRoaXMucGlja0NhbnZhcz10aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIuZ2wtY2FudmFzLXBpY2siKTt2YXIgcz10aGlzLmNvbnRhaW5lcjtzLmFwcGVuZENoaWxkKGkpLHMuYXBwZW5kQ2hpbGQobyk7dmFyIGw9dGhpcztvLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IixmdW5jdGlvbigpe2wuaXNNb3VzZU92ZXI9ITEsbC51bmhvdmVyKCl9KSxvLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtsLmlzTW91c2VPdmVyPSEwfSl9LHcudG9JbWFnZT1mdW5jdGlvbih0KXt0fHwodD0icG5nIiksdGhpcy5zdG9wcGVkPSEwLHRoaXMuc3RhdGljUGxvdCYmdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQobiksdGhpcy51cGRhdGVTaXplKHRoaXMuY2FudmFzKTt2YXIgZT10aGlzLmdscGxvdC5nbCxyPWUuZHJhd2luZ0J1ZmZlcldpZHRoLGE9ZS5kcmF3aW5nQnVmZmVySGVpZ2h0O2UuY2xlYXJDb2xvcigxLDEsMSwwKSxlLmNsZWFyKGUuQ09MT1JfQlVGRkVSX0JJVHxlLkRFUFRIX0JVRkZFUl9CSVQpLHRoaXMuZ2xwbG90LnNldERpcnR5KCksdGhpcy5nbHBsb3QuZHJhdygpLGUuYmluZEZyYW1lYnVmZmVyKGUuRlJBTUVCVUZGRVIsbnVsbCk7dmFyIGk9bmV3IFVpbnQ4QXJyYXkociphKjQpO2UucmVhZFBpeGVscygwLDAscixhLGUuUkdCQSxlLlVOU0lHTkVEX0JZVEUsaSk7Zm9yKHZhciBvPTAscz1hLTE7bzxzOysrbywtLXMpZm9yKHZhciBsPTA7bDxyOysrbClmb3IodmFyIGM9MDtjPDQ7KytjKXt2YXIgdT1pWzQqKHIqbytsKStjXTtpWzQqKHIqbytsKStjXT1pWzQqKHIqcytsKStjXSxpWzQqKHIqcytsKStjXT11fXZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2gud2lkdGg9cixoLmhlaWdodD1hO3ZhciBmLHA9aC5nZXRDb250ZXh0KCIyZCIpLGQ9cC5jcmVhdGVJbWFnZURhdGEocixhKTtzd2l0Y2goZC5kYXRhLnNldChpKSxwLnB1dEltYWdlRGF0YShkLDAsMCksdCl7Y2FzZSJqcGVnIjpmPWgudG9EYXRhVVJMKCJpbWFnZS9qcGVnIik7YnJlYWs7Y2FzZSJ3ZWJwIjpmPWgudG9EYXRhVVJMKCJpbWFnZS93ZWJwIik7YnJlYWs7ZGVmYXVsdDpmPWgudG9EYXRhVVJMKCJpbWFnZS9wbmciKX1yZXR1cm4gdGhpcy5zdGF0aWNQbG90JiZ0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZChuKSxmfSx3LnVwZGF0ZVNpemU9ZnVuY3Rpb24odCl7dHx8KHQ9dGhpcy5jYW52YXMpO3ZhciBlPXRoaXMucGl4ZWxSYXRpbyxyPXRoaXMuZnVsbExheW91dCxuPXIud2lkdGgsYT1yLmhlaWdodCxpPTB8TWF0aC5jZWlsKGUqbiksbz0wfE1hdGguY2VpbChlKmEpO3JldHVybiB0LndpZHRoPT09aSYmdC5oZWlnaHQ9PT1vfHwodC53aWR0aD1pLHQuaGVpZ2h0PW8pLHR9LHcuY29tcHV0ZVRpY2tNYXJrcz1mdW5jdGlvbigpe3RoaXMueGF4aXMuc2V0U2NhbGUoKSx0aGlzLnlheGlzLnNldFNjYWxlKCk7Zm9yKHZhciB0PVtvLmNhbGNUaWNrcyh0aGlzLnhheGlzKSxvLmNhbGNUaWNrcyh0aGlzLnlheGlzKV0sZT0wO2U8MjsrK2UpZm9yKHZhciByPTA7cjx0W2VdLmxlbmd0aDsrK3IpdFtlXVtyXS50ZXh0PXRbZV1bcl0udGV4dCsiIjtyZXR1cm4gdH0sdy51cGRhdGVSZWZzPWZ1bmN0aW9uKHQpe3RoaXMuZnVsbExheW91dD10O3ZhciBlPXRoaXMuaWQubWF0Y2goYikscj0ieGF4aXMiK2VbMV0sbj0ieWF4aXMiK2VbMl07dGhpcy54YXhpcz10aGlzLmZ1bGxMYXlvdXRbcl0sdGhpcy55YXhpcz10aGlzLmZ1bGxMYXlvdXRbbl19LHcucmVsYXlvdXRDYWxsYmFjaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ3JhcGhEaXYsZT10aGlzLnhheGlzLHI9dGhpcy55YXhpcyxuPXQubGF5b3V0LGE9e30sbz1hW2UuX25hbWUrIi5yYW5nZSJdPWUucmFuZ2Uuc2xpY2UoKSxzPWFbci5fbmFtZSsiLnJhbmdlIl09ci5yYW5nZS5zbGljZSgpO2FbZS5fbmFtZSsiLmF1dG9yYW5nZSJdPWUuYXV0b3JhbmdlLGFbci5fbmFtZSsiLmF1dG9yYW5nZSJdPXIuYXV0b3JhbmdlLGkuY2FsbCgiX3N0b3JlRGlyZWN0R1VJRWRpdCIsdC5sYXlvdXQsdC5fZnVsbExheW91dC5fcHJlR1VJLGEpO3ZhciBsPW5bZS5fbmFtZV07bC5yYW5nZT1vLGwuYXV0b3JhbmdlPWUuYXV0b3JhbmdlO3ZhciBjPW5bci5fbmFtZV07Yy5yYW5nZT1zLGMuYXV0b3JhbmdlPXIuYXV0b3JhbmdlLGEubGFzdElucHV0VGltZT10aGlzLmNhbWVyYS5sYXN0SW5wdXRUaW1lLHQuZW1pdCgicGxvdGx5X3JlbGF5b3V0IixhKX0sdy5jYW1lcmFDaGFuZ2VkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jYW1lcmE7dGhpcy5nbHBsb3Quc2V0RGF0YUJveCh0aGlzLmNhbGNEYXRhQm94KCkpO3ZhciBlPXRoaXMuY29tcHV0ZVRpY2tNYXJrcygpOyhmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8MjsrK3Ipe3ZhciBuPXRbcl0sYT1lW3JdO2lmKG4ubGVuZ3RoIT09YS5sZW5ndGgpcmV0dXJuITA7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDsrK2kpaWYobltpXS54IT09YVtpXS54KXJldHVybiEwfXJldHVybiExfSkoZSx0aGlzLmdscGxvdE9wdGlvbnMudGlja3MpJiYodGhpcy5nbHBsb3RPcHRpb25zLnRpY2tzPWUsdGhpcy5nbHBsb3RPcHRpb25zLmRhdGFCb3g9dC5kYXRhQm94LHRoaXMuZ2xwbG90LnVwZGF0ZSh0aGlzLmdscGxvdE9wdGlvbnMpLHRoaXMuaGFuZGxlQW5ub3RhdGlvbnMoKSl9LHcuaGFuZGxlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5ncmFwaERpdixlPXRoaXMuZnVsbExheW91dC5hbm5vdGF0aW9ucyxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi54cmVmPT09dGhpcy54YXhpcy5faWQmJm4ueXJlZj09PXRoaXMueWF4aXMuX2lkJiZpLmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMiLCJkcmF3T25lIikodCxyKX19LHcuZGVzdHJveT1mdW5jdGlvbigpe2lmKHRoaXMuZ2xwbG90KXt2YXIgdD10aGlzLnRyYWNlczt0JiZPYmplY3Qua2V5cyh0KS5tYXAoZnVuY3Rpb24oZSl7dFtlXS5kaXNwb3NlKCksZGVsZXRlIHRbZV19KSx0aGlzLmdscGxvdC5kaXNwb3NlKCksdGhpcy5jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5zdmdDb250YWluZXIpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMubW91c2VDb250YWluZXIpLHRoaXMuZnVsbERhdGE9bnVsbCx0aGlzLmdscGxvdD1udWxsLHRoaXMuc3RvcHBlZD0hMCx0aGlzLmNhbWVyYS5tb3VzZUxpc3RlbmVyLmVuYWJsZWQ9ITEsdGhpcy5tb3VzZUNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJ3aGVlbCIsdGhpcy5jYW1lcmEud2hlZWxMaXN0ZW5lciksdGhpcy5jYW1lcmE9bnVsbH19LHcucGxvdD1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5nbHBsb3Q7dGhpcy51cGRhdGVSZWZzKHIpLHRoaXMueGF4aXMuY2xlYXJDYWxjKCksdGhpcy55YXhpcy5jbGVhckNhbGMoKSx0aGlzLnVwZGF0ZVRyYWNlcyh0LGUpLHRoaXMudXBkYXRlRngoci5kcmFnbW9kZSk7dmFyIGE9ci53aWR0aCxpPXIuaGVpZ2h0O3RoaXMudXBkYXRlU2l6ZSh0aGlzLmNhbnZhcyk7dmFyIG89dGhpcy5nbHBsb3RPcHRpb25zO28ubWVyZ2Uociksby5zY3JlZW5Cb3g9WzAsMCxhLGldO3ZhciBzPXtfZnVsbExheW91dDp7X2F4aXNDb25zdHJhaW50R3JvdXBzOnRoaXMuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQuX2F4aXNDb25zdHJhaW50R3JvdXBzLHhheGlzOnRoaXMueGF4aXMseWF4aXM6dGhpcy55YXhpc319O20ocyx0aGlzLnhheGlzKSxtKHMsdGhpcy55YXhpcyk7dmFyIGwsYyx1PXIuX3NpemUsaD10aGlzLnhheGlzLmRvbWFpbixmPXRoaXMueWF4aXMuZG9tYWluO2ZvcihvLnZpZXdCb3g9W3UubCtoWzBdKnUudyx1LmIrZlswXSp1LmgsYS11LnItKDEtaFsxXSkqdS53LGktdS50LSgxLWZbMV0pKnUuaF0sdGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZS53aWR0aD11LncqKGhbMV0taFswXSkrInB4Iix0aGlzLm1vdXNlQ29udGFpbmVyLnN0eWxlLmhlaWdodD11LmgqKGZbMV0tZlswXSkrInB4Iix0aGlzLm1vdXNlQ29udGFpbmVyLmhlaWdodD11LmgqKGZbMV0tZlswXSksdGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZS5sZWZ0PXUubCtoWzBdKnUudysicHgiLHRoaXMubW91c2VDb250YWluZXIuc3R5bGUudG9wPXUudCsoMS1mWzFdKSp1LmgrInB4IixjPTA7YzwyOysrYykobD10aGlzW3hbY11dKS5fbGVuZ3RoPW8udmlld0JveFtjKzJdLW8udmlld0JveFtjXSx5KHRoaXMuZ3JhcGhEaXYsbCksbC5zZXRTY2FsZSgpO3Yocyksby50aWNrcz10aGlzLmNvbXB1dGVUaWNrTWFya3MoKSxvLmRhdGFCb3g9dGhpcy5jYWxjRGF0YUJveCgpLG8ubWVyZ2Uociksbi51cGRhdGUobyksdGhpcy5nbHBsb3QuZHJhdygpfSx3LmNhbGNEYXRhQm94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy54YXhpcyxlPXRoaXMueWF4aXMscj10LnJhbmdlLG49ZS5yYW5nZSxhPXQucjJsLGk9ZS5yMmw7cmV0dXJuW2EoclswXSksaShuWzBdKSxhKHJbMV0pLGkoblsxXSldfSx3LnNldFJhbmdlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnhheGlzLHI9dGhpcy55YXhpcyxuPWUubDJyLGE9ci5sMnI7ZS5yYW5nZT1bbih0WzBdKSxuKHRbMl0pXSxyLnJhbmdlPVthKHRbMV0pLGEodFszXSldfSx3LnVwZGF0ZVRyYWNlcz1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpPU9iamVjdC5rZXlzKHRoaXMudHJhY2VzKTt0aGlzLmZ1bGxEYXRhPXQ7dDpmb3Iocj0wO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdLHM9dGhpcy50cmFjZXNbb107Zm9yKG49MDtuPHQubGVuZ3RoO24rKylpZigoYT10W25dKS51aWQ9PT1vJiZhLnR5cGU9PT1zLnR5cGUpY29udGludWUgdDtzLmRpc3Bvc2UoKSxkZWxldGUgdGhpcy50cmFjZXNbb119Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7YT10W3JdO3ZhciBsPWVbcl0sYz10aGlzLnRyYWNlc1thLnVpZF07Yz9jLnVwZGF0ZShhLGwpOihjPWEuX21vZHVsZS5wbG90KHRoaXMsYSxsKSx0aGlzLnRyYWNlc1thLnVpZF09Yyl9dGhpcy5nbHBsb3Qub2JqZWN0cy5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX3RyYWNlLmluZGV4LWUuX3RyYWNlLmluZGV4fSl9LHcudXBkYXRlRng9ZnVuY3Rpb24odCl7Imxhc3NvIj09PXR8fCJzZWxlY3QiPT09dD8odGhpcy5waWNrQ2FudmFzLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIix0aGlzLm1vdXNlQ29udGFpbmVyLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIik6KHRoaXMucGlja0NhbnZhcy5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0iYXV0byIsdGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0iYXV0byIpLHRoaXMubW91c2VDb250YWluZXIuc3R5bGUuY3Vyc29yPSJwYW4iPT09dD8ibW92ZSI6Inpvb20iPT09dD8iY3Jvc3NoYWlyIjpudWxsfSx3LmVtaXRQb2ludEFjdGlvbj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuPXQudHJhY2UudWlkLGE9dC5wb2ludEluZGV4LGk9MDtpPHRoaXMuZnVsbERhdGEubGVuZ3RoO2krKyl0aGlzLmZ1bGxEYXRhW2ldLnVpZD09PW4mJihyPXRoaXMuZnVsbERhdGFbaV0pO3ZhciBvPXt4OnQudHJhY2VDb29yZFswXSx5OnQudHJhY2VDb29yZFsxXSxjdXJ2ZU51bWJlcjpyLmluZGV4LHBvaW50TnVtYmVyOmEsZGF0YTpyLl9pbnB1dCxmdWxsRGF0YTp0aGlzLmZ1bGxEYXRhLHhheGlzOnRoaXMueGF4aXMseWF4aXM6dGhpcy55YXhpc307cy5hcHBlbmRBcnJheVBvaW50VmFsdWUobyxyLGEpLHRoaXMuZ3JhcGhEaXYuZW1pdChlLHtwb2ludHM6W29dfSl9LHcuZHJhdz1mdW5jdGlvbigpe2lmKCF0aGlzLnN0b3BwZWQpe3JlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnJlZHJhdyk7dmFyIHQ9dGhpcy5nbHBsb3QsZT10aGlzLmNhbWVyYSxyPWUubW91c2VMaXN0ZW5lcixuPTE9PT10aGlzLmxhc3RCdXR0b25TdGF0ZSYmMD09PXIuYnV0dG9ucyxhPXRoaXMuZnVsbExheW91dDt0aGlzLmxhc3RCdXR0b25TdGF0ZT1yLmJ1dHRvbnMsdGhpcy5jYW1lcmFDaGFuZ2VkKCk7dmFyIGksbz1yLngqdC5waXhlbFJhdGlvLGw9dGhpcy5jYW52YXMuaGVpZ2h0LXQucGl4ZWxSYXRpbypyLnk7aWYoZS5ib3hFbmFibGVkJiYiem9vbSI9PT1hLmRyYWdtb2RlKXt0aGlzLnNlbGVjdEJveC5lbmFibGVkPSEwO2Zvcih2YXIgYz10aGlzLnNlbGVjdEJveC5zZWxlY3RCb3g9W01hdGgubWluKGUuYm94U3RhcnRbMF0sZS5ib3hFbmRbMF0pLE1hdGgubWluKGUuYm94U3RhcnRbMV0sZS5ib3hFbmRbMV0pLE1hdGgubWF4KGUuYm94U3RhcnRbMF0sZS5ib3hFbmRbMF0pLE1hdGgubWF4KGUuYm94U3RhcnRbMV0sZS5ib3hFbmRbMV0pXSx1PTA7dTwyO3UrKyllLmJveFN0YXJ0W3VdPT09ZS5ib3hFbmRbdV0mJihjW3VdPXQuZGF0YUJveFt1XSxjW3UrMl09dC5kYXRhQm94W3UrMl0pO3Quc2V0RGlydHkoKX1lbHNlIGlmKCFlLnBhbm5pbmcmJnRoaXMuaXNNb3VzZU92ZXIpe3RoaXMuc2VsZWN0Qm94LmVuYWJsZWQ9ITE7dmFyIGg9YS5fc2l6ZSxmPXRoaXMueGF4aXMuZG9tYWluLHA9dGhpcy55YXhpcy5kb21haW4sZD0oaT10LnBpY2soby90LnBpeGVsUmF0aW8raC5sK2ZbMF0qaC53LGwvdC5waXhlbFJhdGlvLShoLnQrKDEtcFsxXSkqaC5oKSkpJiZpLm9iamVjdC5fdHJhY2UuaGFuZGxlUGljayhpKTtpZihkJiZuJiZ0aGlzLmVtaXRQb2ludEFjdGlvbihkLCJwbG90bHlfY2xpY2siKSxpJiYic2tpcCIhPT1pLm9iamVjdC5fdHJhY2UuaG92ZXJpbmZvJiZhLmhvdmVybW9kZSYmZCYmKCF0aGlzLmxhc3RQaWNrUmVzdWx0fHx0aGlzLmxhc3RQaWNrUmVzdWx0LnRyYWNlVWlkIT09ZC50cmFjZS51aWR8fHRoaXMubGFzdFBpY2tSZXN1bHQuZGF0YUNvb3JkWzBdIT09ZC5kYXRhQ29vcmRbMF18fHRoaXMubGFzdFBpY2tSZXN1bHQuZGF0YUNvb3JkWzFdIT09ZC5kYXRhQ29vcmRbMV0pKXt2YXIgZz1kO3RoaXMubGFzdFBpY2tSZXN1bHQ9e3RyYWNlVWlkOmQudHJhY2U/ZC50cmFjZS51aWQ6bnVsbCxkYXRhQ29vcmQ6ZC5kYXRhQ29vcmQuc2xpY2UoKX0sdGhpcy5zcGlrZXMudXBkYXRlKHtjZW50ZXI6aS5kYXRhQ29vcmR9KSxnLnNjcmVlbkNvb3JkPVsoKHQudmlld0JveFsyXS10LnZpZXdCb3hbMF0pKihpLmRhdGFDb29yZFswXS10LmRhdGFCb3hbMF0pLyh0LmRhdGFCb3hbMl0tdC5kYXRhQm94WzBdKSt0LnZpZXdCb3hbMF0pL3QucGl4ZWxSYXRpbywodGhpcy5jYW52YXMuaGVpZ2h0LSh0LnZpZXdCb3hbM10tdC52aWV3Qm94WzFdKSooaS5kYXRhQ29vcmRbMV0tdC5kYXRhQm94WzFdKS8odC5kYXRhQm94WzNdLXQuZGF0YUJveFsxXSktdC52aWV3Qm94WzFdKS90LnBpeGVsUmF0aW9dLHRoaXMuZW1pdFBvaW50QWN0aW9uKGQsInBsb3RseV9ob3ZlciIpO3ZhciB2PXRoaXMuZnVsbERhdGFbZy50cmFjZS5pbmRleF18fHt9LG09Zy5wb2ludEluZGV4LHk9cy5jYXN0SG92ZXJpbmZvKHYsYSxtKTtpZih5JiYiYWxsIiE9PXkpe3ZhciB4PXkuc3BsaXQoIisiKTstMT09PXguaW5kZXhPZigieCIpJiYoZy50cmFjZUNvb3JkWzBdPXZvaWQgMCksLTE9PT14LmluZGV4T2YoInkiKSYmKGcudHJhY2VDb29yZFsxXT12b2lkIDApLC0xPT09eC5pbmRleE9mKCJ6IikmJihnLnRyYWNlQ29vcmRbMl09dm9pZCAwKSwtMT09PXguaW5kZXhPZigidGV4dCIpJiYoZy50ZXh0TGFiZWw9dm9pZCAwKSwtMT09PXguaW5kZXhPZigibmFtZSIpJiYoZy5uYW1lPXZvaWQgMCl9cy5sb25lSG92ZXIoe3g6Zy5zY3JlZW5Db29yZFswXSx5Omcuc2NyZWVuQ29vcmRbMV0seExhYmVsOnRoaXMuaG92ZXJGb3JtYXR0ZXIoInhheGlzIixnLnRyYWNlQ29vcmRbMF0pLHlMYWJlbDp0aGlzLmhvdmVyRm9ybWF0dGVyKCJ5YXhpcyIsZy50cmFjZUNvb3JkWzFdKSx6TGFiZWw6Zy50cmFjZUNvb3JkWzJdLHRleHQ6Zy50ZXh0TGFiZWwsbmFtZTpnLm5hbWUsY29sb3I6cy5jYXN0SG92ZXJPcHRpb24odixtLCJiZ2NvbG9yIil8fGcuY29sb3IsYm9yZGVyQ29sb3I6cy5jYXN0SG92ZXJPcHRpb24odixtLCJib3JkZXJjb2xvciIpLGZvbnRGYW1pbHk6cy5jYXN0SG92ZXJPcHRpb24odixtLCJmb250LmZhbWlseSIpLGZvbnRTaXplOnMuY2FzdEhvdmVyT3B0aW9uKHYsbSwiZm9udC5zaXplIiksZm9udENvbG9yOnMuY2FzdEhvdmVyT3B0aW9uKHYsbSwiZm9udC5jb2xvciIpLG5hbWVMZW5ndGg6cy5jYXN0SG92ZXJPcHRpb24odixtLCJuYW1lbGVuZ3RoIiksdGV4dEFsaWduOnMuY2FzdEhvdmVyT3B0aW9uKHYsbSwiYWxpZ24iKX0se2NvbnRhaW5lcjp0aGlzLnN2Z0NvbnRhaW5lcixnZDp0aGlzLmdyYXBoRGl2fSl9fWl8fHRoaXMudW5ob3ZlcigpLHQuZHJhdygpfX0sdy51bmhvdmVyPWZ1bmN0aW9uKCl7dGhpcy5sYXN0UGlja1Jlc3VsdCYmKHRoaXMuc3Bpa2VzLnVwZGF0ZSh7fSksdGhpcy5sYXN0UGlja1Jlc3VsdD1udWxsLHRoaXMuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X3VuaG92ZXIiKSxzLmxvbmVVbmhvdmVyKHRoaXMuc3ZnQ29udGFpbmVyKSl9LHcuaG92ZXJGb3JtYXR0ZXI9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1lKXt2YXIgcj10aGlzW3RdO3JldHVybiBvLnRpY2tUZXh0KHIsci5jMmwoZSksImhvdmVyIikudGV4dH19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliL3Nob3dfbm9fd2ViZ2xfbXNnIjo3MzgsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2NhcnRlc2lhbi9hdXRvcmFuZ2UiOjc2NCwiLi4vY2FydGVzaWFuL2NvbnN0YW50cyI6NzcxLCIuLi9jYXJ0ZXNpYW4vY29uc3RyYWludHMiOjc3MiwiLi9jYW1lcmEiOjgwMSwiLi9jb252ZXJ0Ijo4MDIsImdsLXBsb3QyZCI6MjkwLCJnbC1zZWxlY3QtYm94IjozMDIsImdsLXNwaWtlczJkIjozMTEsIndlYmdsLWNvbnRleHQiOjU1NX1dLDgwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsYT10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2xheW91dF9hdHRyaWJ1dGVzIiksaT10KCIuL3NjZW5lIiksbz10KCIuLi9nZXRfZGF0YSIpLmdldFN1YnBsb3REYXRhLHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpO3IubmFtZT0iZ2wzZCIsci5hdHRyPSJzY2VuZSIsci5pZFJvb3Q9InNjZW5lIixyLmlkUmVnZXg9ci5hdHRyUmVnZXg9cy5jb3VudGVyUmVnZXgoInNjZW5lIiksci5hdHRyaWJ1dGVzPXQoIi4vbGF5b3V0L2F0dHJpYnV0ZXMiKSxyLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXQvbGF5b3V0X2F0dHJpYnV0ZXMiKSxyLmJhc2VMYXlvdXRBdHRyT3ZlcnJpZGVzPW4oe2hvdmVybGFiZWw6YS5ob3ZlcmxhYmVsfSwicGxvdCIsIm5lc3RlZCIpLHIuc3VwcGx5TGF5b3V0RGVmYXVsdHM9dCgiLi9sYXlvdXQvZGVmYXVsdHMiKSxyLnBsb3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj10Ll9mdWxsRGF0YSxuPWUuX3N1YnBsb3RzLmdsM2QsYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgcz1uW2FdLGw9byhyLCJnbDNkIixzKSxjPWVbc10sdT1jLmNhbWVyYSxoPWMuX3NjZW5lO2h8fChoPW5ldyBpKHtpZDpzLGdyYXBoRGl2OnQsY29udGFpbmVyOnQucXVlcnlTZWxlY3RvcigiLmdsLWNvbnRhaW5lciIpLHN0YXRpY1Bsb3Q6dC5fY29udGV4dC5zdGF0aWNQbG90LHBsb3RHbFBpeGVsUmF0aW86dC5fY29udGV4dC5wbG90R2xQaXhlbFJhdGlvLGNhbWVyYTp1fSxlKSxjLl9zY2VuZT1oKSxoLnZpZXdJbml0aWFsfHwoaC52aWV3SW5pdGlhbD17dXA6e3g6dS51cC54LHk6dS51cC55LHo6dS51cC56fSxleWU6e3g6dS5leWUueCx5OnUuZXllLnksejp1LmV5ZS56fSxjZW50ZXI6e3g6dS5jZW50ZXIueCx5OnUuY2VudGVyLnksejp1LmNlbnRlci56fX0pLGgucGxvdChsLGUsdC5sYXlvdXQpfX0sci5jbGVhbj1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9bi5fc3VicGxvdHMuZ2wzZHx8W10saT0wO2k8YS5sZW5ndGg7aSsrKXt2YXIgbz1hW2ldOyFlW29dJiZuW29dLl9zY2VuZSYmKG5bb10uX3NjZW5lLmRlc3Ryb3koKSxuLl9pbmZvbGF5ZXImJm4uX2luZm9sYXllci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLSIrbykucmVtb3ZlKCkpfX0sci50b1NWRz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fZnVsbExheW91dCxyPWUuX3N1YnBsb3RzLmdsM2Qsbj1lLl9zaXplLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGk9ZVtyW2FdXSxvPWkuZG9tYWluLHM9aS5fc2NlbmUsYz1zLnRvSW1hZ2UoInBuZyIpO2UuX2dsaW1hZ2VzLmFwcGVuZCgic3ZnOmltYWdlIikuYXR0cih7eG1sbnM6bC5zdmcsInhsaW5rOmhyZWYiOmMseDpuLmwrbi53Km8ueFswXSx5Om4udCtuLmgqKDEtby55WzFdKSx3aWR0aDpuLncqKG8ueFsxXS1vLnhbMF0pLGhlaWdodDpuLmgqKG8ueVsxXS1vLnlbMF0pLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUifSkscy5kZXN0cm95KCl9fSxyLmNsZWFuSWQ9ZnVuY3Rpb24odCl7aWYodC5tYXRjaCgvXnNjZW5lWzAtOV0qJC8pKXt2YXIgZT10LnN1YnN0cig1KTtyZXR1cm4iMSI9PT1lJiYoZT0iIiksInNjZW5lIitlfX0sci51cGRhdGVGeD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fZnVsbExheW91dCxyPWUuX3N1YnBsb3RzLmdsM2Qsbj0wO248ci5sZW5ndGg7bisrKXtlW3Jbbl1dLl9zY2VuZS51cGRhdGVGeChlLmRyYWdtb2RlLGUuaG92ZXJtb2RlKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngvbGF5b3V0X2F0dHJpYnV0ZXMiOjYzMSwiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjY5NCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vZ2V0X2RhdGEiOjgwMCwiLi9sYXlvdXQvYXR0cmlidXRlcyI6ODA2LCIuL2xheW91dC9kZWZhdWx0cyI6ODEwLCIuL2xheW91dC9sYXlvdXRfYXR0cmlidXRlcyI6ODExLCIuL3NjZW5lIjo4MTV9XSw4MDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtzY2VuZTp7dmFsVHlwZToic3VicGxvdGlkIixkZmx0OiJzY2VuZSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifX19LHt9XSw4MDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgiLi4vLi4vY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxvPXQoIi4uLy4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbDtlLmV4cG9ydHM9byh7dmlzaWJsZTphLnZpc2libGUsc2hvd3NwaWtlczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sc3Bpa2VzaWRlczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sc3Bpa2V0aGlja25lc3M6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoyfSxzcGlrZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxzaG93YmFja2dyb3VuZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sYmFja2dyb3VuZGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgyMDQsIDIwNCwgMjA0LCAwLjUpIn0sc2hvd2F4ZXNsYWJlbHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LGNvbG9yOmEuY29sb3IsY2F0ZWdvcnlvcmRlcjphLmNhdGVnb3J5b3JkZXIsY2F0ZWdvcnlhcnJheTphLmNhdGVnb3J5YXJyYXksdGl0bGU6e3RleHQ6YS50aXRsZS50ZXh0LGZvbnQ6YS50aXRsZS5mb250fSx0eXBlOmkoe30sYS50eXBlLHt2YWx1ZXM6WyItIiwibGluZWFyIiwibG9nIiwiZGF0ZSIsImNhdGVnb3J5Il19KSxhdXRvcmFuZ2U6YS5hdXRvcmFuZ2UscmFuZ2Vtb2RlOmEucmFuZ2Vtb2RlLHJhbmdlOmkoe30sYS5yYW5nZSx7aXRlbXM6W3t2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b3JhbmdlIjohMX19LHt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b3JhbmdlIjohMX19XSxhbmltOiExfSksdGlja21vZGU6YS50aWNrbW9kZSxudGlja3M6YS5udGlja3MsdGljazA6YS50aWNrMCxkdGljazphLmR0aWNrLHRpY2t2YWxzOmEudGlja3ZhbHMsdGlja3RleHQ6YS50aWNrdGV4dCx0aWNrczphLnRpY2tzLG1pcnJvcjphLm1pcnJvcix0aWNrbGVuOmEudGlja2xlbix0aWNrd2lkdGg6YS50aWNrd2lkdGgsdGlja2NvbG9yOmEudGlja2NvbG9yLHNob3d0aWNrbGFiZWxzOmEuc2hvd3RpY2tsYWJlbHMsdGlja2ZvbnQ6YS50aWNrZm9udCx0aWNrYW5nbGU6YS50aWNrYW5nbGUsdGlja3ByZWZpeDphLnRpY2twcmVmaXgsc2hvd3RpY2twcmVmaXg6YS5zaG93dGlja3ByZWZpeCx0aWNrc3VmZml4OmEudGlja3N1ZmZpeCxzaG93dGlja3N1ZmZpeDphLnNob3d0aWNrc3VmZml4LHNob3dleHBvbmVudDphLnNob3dleHBvbmVudCxleHBvbmVudGZvcm1hdDphLmV4cG9uZW50Zm9ybWF0LHNlcGFyYXRldGhvdXNhbmRzOmEuc2VwYXJhdGV0aG91c2FuZHMsdGlja2Zvcm1hdDphLnRpY2tmb3JtYXQsdGlja2Zvcm1hdHN0b3BzOmEudGlja2Zvcm1hdHN0b3BzLGhvdmVyZm9ybWF0OmEuaG92ZXJmb3JtYXQsc2hvd2xpbmU6YS5zaG93bGluZSxsaW5lY29sb3I6YS5saW5lY29sb3IsbGluZXdpZHRoOmEubGluZXdpZHRoLHNob3dncmlkOmEuc2hvd2dyaWQsZ3JpZGNvbG9yOmkoe30sYS5ncmlkY29sb3Ise2RmbHQ6InJnYigyMDQsIDIwNCwgMjA0KSJ9KSxncmlkd2lkdGg6YS5ncmlkd2lkdGgsemVyb2xpbmU6YS56ZXJvbGluZSx6ZXJvbGluZWNvbG9yOmEuemVyb2xpbmVjb2xvcix6ZXJvbGluZXdpZHRoOmEuemVyb2xpbmV3aWR0aCxfZGVwcmVjYXRlZDp7dGl0bGU6YS5fZGVwcmVjYXRlZC50aXRsZSx0aXRsZWZvbnQ6YS5fZGVwcmVjYXRlZC50aXRsZWZvbnR9fSwicGxvdCIsImZyb20tcm9vdCIpfSx7Ii4uLy4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc3fV0sODA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInRpbnljb2xvcjIiKS5taXgsYT10KCIuLi8uLi8uLi9saWIiKSxpPXQoIi4uLy4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxvPXQoIi4vYXhpc19hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jYXJ0ZXNpYW4vdHlwZV9kZWZhdWx0cyIpLGw9dCgiLi4vLi4vY2FydGVzaWFuL2F4aXNfZGVmYXVsdHMiKSxjPVsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgdSxoO2Z1bmN0aW9uIGYodCxlKXtyZXR1cm4gYS5jb2VyY2UodSxoLG8sdCxlKX1mb3IodmFyIHA9MDtwPGMubGVuZ3RoO3ArKyl7dmFyIGQ9Y1twXTt1PXRbZF18fHt9LChoPWkubmV3Q29udGFpbmVyKGUsZCkpLl9pZD1kWzBdK3Iuc2NlbmUsaC5fbmFtZT1kLHModSxoLGYsciksbCh1LGgsZix7Zm9udDpyLmZvbnQsbGV0dGVyOmRbMF0sZGF0YTpyLmRhdGEsc2hvd0dyaWQ6ITAsbm9UaWNrc29uOiEwLGJnQ29sb3I6ci5iZ0NvbG9yLGNhbGVuZGFyOnIuY2FsZW5kYXJ9LHIuZnVsbExheW91dCksZigiZ3JpZGNvbG9yIixuKGguY29sb3Isci5iZ0NvbG9yLDEzNjAwLzE4NykudG9SZ2JTdHJpbmcoKSksZigidGl0bGUudGV4dCIsZFswXSksaC5zZXRTY2FsZT1hLm5vb3AsZigic2hvd3NwaWtlcyIpJiYoZigic3Bpa2VzaWRlcyIpLGYoInNwaWtldGhpY2tuZXNzIiksZigic3Bpa2Vjb2xvciIsaC5jb2xvcikpLGYoInNob3dheGVzbGFiZWxzIiksZigic2hvd2JhY2tncm91bmQiKSYmZigiYmFja2dyb3VuZGNvbG9yIil9fX0seyIuLi8uLi8uLi9saWIiOjcxNywiLi4vLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9jYXJ0ZXNpYW4vYXhpc19kZWZhdWx0cyI6NzY3LCIuLi8uLi9jYXJ0ZXNpYW4vdHlwZV9kZWZhdWx0cyI6Nzg4LCIuL2F4aXNfYXR0cmlidXRlcyI6ODA3LHRpbnljb2xvcjI6NTM2fV0sODA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSxhPXQoIi4uLy4uLy4uL2xpYiIpLGk9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXTtmdW5jdGlvbiBvKCl7dGhpcy5ib3VuZHM9W1stMTAsLTEwLC0xMF0sWzEwLDEwLDEwXV0sdGhpcy50aWNrcz1bW10sW10sW11dLHRoaXMudGlja0VuYWJsZT1bITAsITAsITBdLHRoaXMudGlja0ZvbnQ9WyJzYW5zLXNlcmlmIiwic2Fucy1zZXJpZiIsInNhbnMtc2VyaWYiXSx0aGlzLnRpY2tTaXplPVsxMiwxMiwxMl0sdGhpcy50aWNrQW5nbGU9WzAsMCwwXSx0aGlzLnRpY2tDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMudGlja1BhZD1bMTgsMTgsMThdLHRoaXMubGFiZWxzPVsieCIsInkiLCJ6Il0sdGhpcy5sYWJlbEVuYWJsZT1bITAsITAsITBdLHRoaXMubGFiZWxGb250PVsiT3BlbiBTYW5zIiwiT3BlbiBTYW5zIiwiT3BlbiBTYW5zIl0sdGhpcy5sYWJlbFNpemU9WzIwLDIwLDIwXSx0aGlzLmxhYmVsQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxhYmVsUGFkPVszMCwzMCwzMF0sdGhpcy5saW5lRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5saW5lTWlycm9yPVshMSwhMSwhMV0sdGhpcy5saW5lV2lkdGg9WzEsMSwxXSx0aGlzLmxpbmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMubGluZVRpY2tFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmxpbmVUaWNrTWlycm9yPVshMSwhMSwhMV0sdGhpcy5saW5lVGlja0xlbmd0aD1bMTAsMTAsMTBdLHRoaXMubGluZVRpY2tXaWR0aD1bMSwxLDFdLHRoaXMubGluZVRpY2tDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuZ3JpZEVuYWJsZT1bITAsITAsITBdLHRoaXMuZ3JpZFdpZHRoPVsxLDEsMV0sdGhpcy5ncmlkQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnplcm9FbmFibGU9WyEwLCEwLCEwXSx0aGlzLnplcm9MaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnplcm9MaW5lV2lkdGg9WzIsMiwyXSx0aGlzLmJhY2tncm91bmRFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmJhY2tncm91bmRDb2xvcj1bWy44LC44LC44LC41XSxbLjgsLjgsLjgsLjVdLFsuOCwuOCwuOCwuNV1dLHRoaXMuX2RlZmF1bHRUaWNrUGFkPXRoaXMudGlja1BhZC5zbGljZSgpLHRoaXMuX2RlZmF1bHRMYWJlbFBhZD10aGlzLmxhYmVsUGFkLnNsaWNlKCksdGhpcy5fZGVmYXVsdExpbmVUaWNrTGVuZ3RoPXRoaXMubGluZVRpY2tMZW5ndGguc2xpY2UoKX1vLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8MzsrK3Ipe3ZhciBvPWVbaVtyXV07by52aXNpYmxlPyh0aGlzLmxhYmVsc1tyXT10Ll9tZXRhP2EudGVtcGxhdGVTdHJpbmcoby50aXRsZS50ZXh0LHQuX21ldGEpOm8udGl0bGUudGV4dCwiZm9udCJpbiBvLnRpdGxlJiYoby50aXRsZS5mb250LmNvbG9yJiYodGhpcy5sYWJlbENvbG9yW3JdPW4oby50aXRsZS5mb250LmNvbG9yKSksby50aXRsZS5mb250LmZhbWlseSYmKHRoaXMubGFiZWxGb250W3JdPW8udGl0bGUuZm9udC5mYW1pbHkpLG8udGl0bGUuZm9udC5zaXplJiYodGhpcy5sYWJlbFNpemVbcl09by50aXRsZS5mb250LnNpemUpKSwic2hvd2xpbmUiaW4gbyYmKHRoaXMubGluZUVuYWJsZVtyXT1vLnNob3dsaW5lKSwibGluZWNvbG9yImluIG8mJih0aGlzLmxpbmVDb2xvcltyXT1uKG8ubGluZWNvbG9yKSksImxpbmV3aWR0aCJpbiBvJiYodGhpcy5saW5lV2lkdGhbcl09by5saW5ld2lkdGgpLCJzaG93Z3JpZCJpbiBvJiYodGhpcy5ncmlkRW5hYmxlW3JdPW8uc2hvd2dyaWQpLCJncmlkY29sb3IiaW4gbyYmKHRoaXMuZ3JpZENvbG9yW3JdPW4oby5ncmlkY29sb3IpKSwiZ3JpZHdpZHRoImluIG8mJih0aGlzLmdyaWRXaWR0aFtyXT1vLmdyaWR3aWR0aCksImxvZyI9PT1vLnR5cGU/dGhpcy56ZXJvRW5hYmxlW3JdPSExOiJ6ZXJvbGluZSJpbiBvJiYodGhpcy56ZXJvRW5hYmxlW3JdPW8uemVyb2xpbmUpLCJ6ZXJvbGluZWNvbG9yImluIG8mJih0aGlzLnplcm9MaW5lQ29sb3Jbcl09bihvLnplcm9saW5lY29sb3IpKSwiemVyb2xpbmV3aWR0aCJpbiBvJiYodGhpcy56ZXJvTGluZVdpZHRoW3JdPW8uemVyb2xpbmV3aWR0aCksInRpY2tzImluIG8mJm8udGlja3M/dGhpcy5saW5lVGlja0VuYWJsZVtyXT0hMDp0aGlzLmxpbmVUaWNrRW5hYmxlW3JdPSExLCJ0aWNrbGVuImluIG8mJih0aGlzLmxpbmVUaWNrTGVuZ3RoW3JdPXRoaXMuX2RlZmF1bHRMaW5lVGlja0xlbmd0aFtyXT1vLnRpY2tsZW4pLCJ0aWNrY29sb3IiaW4gbyYmKHRoaXMubGluZVRpY2tDb2xvcltyXT1uKG8udGlja2NvbG9yKSksInRpY2t3aWR0aCJpbiBvJiYodGhpcy5saW5lVGlja1dpZHRoW3JdPW8udGlja3dpZHRoKSwidGlja2FuZ2xlImluIG8mJih0aGlzLnRpY2tBbmdsZVtyXT0iYXV0byI9PT1vLnRpY2thbmdsZT8tMzYwMDpNYXRoLlBJKi1vLnRpY2thbmdsZS8xODApLCJzaG93dGlja2xhYmVscyJpbiBvJiYodGhpcy50aWNrRW5hYmxlW3JdPW8uc2hvd3RpY2tsYWJlbHMpLCJ0aWNrZm9udCJpbiBvJiYoby50aWNrZm9udC5jb2xvciYmKHRoaXMudGlja0NvbG9yW3JdPW4oby50aWNrZm9udC5jb2xvcikpLG8udGlja2ZvbnQuZmFtaWx5JiYodGhpcy50aWNrRm9udFtyXT1vLnRpY2tmb250LmZhbWlseSksby50aWNrZm9udC5zaXplJiYodGhpcy50aWNrU2l6ZVtyXT1vLnRpY2tmb250LnNpemUpKSwibWlycm9yImluIG8/LTEhPT1bInRpY2tzIiwiYWxsIiwiYWxsdGlja3MiXS5pbmRleE9mKG8ubWlycm9yKT8odGhpcy5saW5lVGlja01pcnJvcltyXT0hMCx0aGlzLmxpbmVNaXJyb3Jbcl09ITApOiEwPT09by5taXJyb3I/KHRoaXMubGluZVRpY2tNaXJyb3Jbcl09ITEsdGhpcy5saW5lTWlycm9yW3JdPSEwKToodGhpcy5saW5lVGlja01pcnJvcltyXT0hMSx0aGlzLmxpbmVNaXJyb3Jbcl09ITEpOnRoaXMubGluZU1pcnJvcltyXT0hMSwic2hvd2JhY2tncm91bmQiaW4gbyYmITEhPT1vLnNob3diYWNrZ3JvdW5kPyh0aGlzLmJhY2tncm91bmRFbmFibGVbcl09ITAsdGhpcy5iYWNrZ3JvdW5kQ29sb3Jbcl09bihvLmJhY2tncm91bmRjb2xvcikpOnRoaXMuYmFja2dyb3VuZEVuYWJsZVtyXT0hMSk6KHRoaXMudGlja0VuYWJsZVtyXT0hMSx0aGlzLmxhYmVsRW5hYmxlW3JdPSExLHRoaXMubGluZUVuYWJsZVtyXT0hMSx0aGlzLmxpbmVUaWNrRW5hYmxlW3JdPSExLHRoaXMuZ3JpZEVuYWJsZVtyXT0hMSx0aGlzLnplcm9FbmFibGVbcl09ITEsdGhpcy5iYWNrZ3JvdW5kRW5hYmxlW3JdPSExKX19LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBvO3JldHVybiByLm1lcmdlKHQsZSkscn19LHsiLi4vLi4vLi4vbGliIjo3MTcsIi4uLy4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjc0MH1dLDgxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi8uLi9saWIiKSxhPXQoIi4uLy4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uLy4uL3JlZ2lzdHJ5Iiksbz10KCIuLi8uLi9zdWJwbG90X2RlZmF1bHRzIikscz10KCIuL2F4aXNfZGVmYXVsdHMiKSxsPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxjPXQoIi4uLy4uL2dldF9kYXRhIikuZ2V0U3VicGxvdERhdGEsdT0iZ2wzZCI7ZnVuY3Rpb24gaCh0LGUscixuKXtmb3IodmFyIG89cigiYmdjb2xvciIpLGw9YS5jb21iaW5lKG8sbi5wYXBlcl9iZ2NvbG9yKSxoPVsidXAiLCJjZW50ZXIiLCJleWUiXSxmPTA7ZjxoLmxlbmd0aDtmKyspcigiY2FtZXJhLiIraFtmXSsiLngiKSxyKCJjYW1lcmEuIitoW2ZdKyIueSIpLHIoImNhbWVyYS4iK2hbZl0rIi56Iik7cigiY2FtZXJhLnByb2plY3Rpb24udHlwZSIpO3ZhciBwPSEhcigiYXNwZWN0cmF0aW8ueCIpJiYhIXIoImFzcGVjdHJhdGlvLnkiKSYmISFyKCJhc3BlY3RyYXRpby56IiksZD1yKCJhc3BlY3Rtb2RlIixwPyJtYW51YWwiOiJhdXRvIik7cHx8KHQuYXNwZWN0cmF0aW89ZS5hc3BlY3RyYXRpbz17eDoxLHk6MSx6OjF9LCJtYW51YWwiPT09ZCYmKGUuYXNwZWN0bW9kZT0iYXV0byIpLHQuYXNwZWN0bW9kZT1lLmFzcGVjdG1vZGUpO3ZhciBnPWMobi5mdWxsRGF0YSx1LG4uaWQpO3ModCxlLHtmb250Om4uZm9udCxzY2VuZTpuLmlkLGRhdGE6ZyxiZ0NvbG9yOmwsY2FsZW5kYXI6bi5jYWxlbmRhcixmdWxsTGF5b3V0Om4uZnVsbExheW91dH0pLGkuZ2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0aW9uczNkIiwiaGFuZGxlRGVmYXVsdHMiKSh0LGUsbik7dmFyIHY9bi5nZXREZmx0RnJvbUxheW91dCgiZHJhZ21vZGUiKTtpZighMSE9PXYmJiF2KWlmKHY9Im9yYml0Iix0LmNhbWVyYSYmdC5jYW1lcmEudXApe3ZhciBtPXQuY2FtZXJhLnVwLngseT10LmNhbWVyYS51cC55LHg9dC5jYW1lcmEudXAuejswIT09eCYmKG0mJnkmJng/eC9NYXRoLnNxcnQobSptK3kqeSt4KngpPi45OTkmJih2PSJ0dXJudGFibGUiKTp2PSJ0dXJudGFibGUiKX1lbHNlIHY9InR1cm50YWJsZSI7cigiZHJhZ21vZGUiLHYpLHIoImhvdmVybW9kZSIsbi5nZXREZmx0RnJvbUxheW91dCgiaG92ZXJtb2RlIikpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGE9ZS5fYmFzZVBsb3RNb2R1bGVzLmxlbmd0aD4xO28odCxlLHIse3R5cGU6dSxhdHRyaWJ1dGVzOmwsaGFuZGxlRGVmYXVsdHM6aCxmdWxsTGF5b3V0OmUsZm9udDplLmZvbnQsZnVsbERhdGE6cixnZXREZmx0RnJvbUxheW91dDpmdW5jdGlvbihlKXtpZighYSlyZXR1cm4gbi52YWxpZGF0ZSh0W2VdLGxbZV0pP3RbZV06dm9pZCAwfSxwYXBlcl9iZ2NvbG9yOmUucGFwZXJfYmdjb2xvcixjYWxlbmRhcjplLmNhbGVuZGFyfSl9fSx7Ii4uLy4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vLi4vbGliIjo3MTcsIi4uLy4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uLy4uL2dldF9kYXRhIjo4MDAsIi4uLy4uL3N1YnBsb3RfZGVmYXVsdHMiOjg0MCwiLi9heGlzX2RlZmF1bHRzIjo4MDgsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjgxMX1dLDgxMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2F4aXNfYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vZG9tYWluIikuYXR0cmlidXRlcyxpPXQoIi4uLy4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LG89dCgiLi4vLi4vLi4vbGliIikuY291bnRlclJlZ2V4O2Z1bmN0aW9uIHModCxlLHIpe3JldHVybnt4Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6dCxlZGl0VHlwZToiY2FtZXJhIn0seTp7dmFsVHlwZToibnVtYmVyIixkZmx0OmUsZWRpdFR5cGU6ImNhbWVyYSJ9LHo6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpyLGVkaXRUeXBlOiJjYW1lcmEifSxlZGl0VHlwZToiY2FtZXJhIn19ZS5leHBvcnRzPXtfYXJyYXlBdHRyUmVnZXhwczpbbygic2NlbmUiLCIuYW5ub3RhdGlvbnMiLCEwKV0sYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMCwwLDAsMCkiLGVkaXRUeXBlOiJwbG90In0sY2FtZXJhOnt1cDppKHMoMCwwLDEpLHt9KSxjZW50ZXI6aShzKDAsMCwwKSx7fSksZXllOmkocygxLjI1LDEuMjUsMS4yNSkse30pLHByb2plY3Rpb246e3R5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInBlcnNwZWN0aXZlIiwib3J0aG9ncmFwaGljIl0sZGZsdDoicGVyc3BlY3RpdmUiLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FtZXJhIn0sZG9tYWluOmEoe25hbWU6InNjZW5lIixlZGl0VHlwZToicGxvdCJ9KSxhc3BlY3Rtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwiY3ViZSIsImRhdGEiLCJtYW51YWwiXSxkZmx0OiJhdXRvIixlZGl0VHlwZToicGxvdCIsaW1wbGllZEVkaXRzOnsiYXNwZWN0cmF0aW8ueCI6dm9pZCAwLCJhc3BlY3RyYXRpby55Ijp2b2lkIDAsImFzcGVjdHJhdGlvLnoiOnZvaWQgMH19LGFzcGVjdHJhdGlvOnt4Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXNwZWN0bW9kZSI6Im1hbnVhbCJ9fSx5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXNwZWN0bW9kZSI6Im1hbnVhbCJ9fSx6Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXNwZWN0bW9kZSI6Im1hbnVhbCJ9fSxlZGl0VHlwZToicGxvdCIsaW1wbGllZEVkaXRzOnthc3BlY3Rtb2RlOiJtYW51YWwifX0seGF4aXM6bix5YXhpczpuLHpheGlzOm4sZHJhZ21vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIm9yYml0IiwidHVybnRhYmxlIiwiem9vbSIsInBhbiIsITFdLGVkaXRUeXBlOiJwbG90In0saG92ZXJtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjbG9zZXN0IiwhMV0sZGZsdDoiY2xvc2VzdCIsZWRpdFR5cGU6Im1vZGViYXIifSx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn0sZWRpdFR5cGU6InBsb3QiLF9kZXByZWNhdGVkOntjYW1lcmFwb3NpdGlvbjp7dmFsVHlwZToiaW5mb19hcnJheSIsZWRpdFR5cGU6ImNhbWVyYSJ9fX19LHsiLi4vLi4vLi4vbGliIjo3MTcsIi4uLy4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vZG9tYWluIjo3OTAsIi4vYXhpc19hdHRyaWJ1dGVzIjo4MDd9XSw4MTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpLGE9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXTtmdW5jdGlvbiBpKCl7dGhpcy5lbmFibGVkPVshMCwhMCwhMF0sdGhpcy5jb2xvcnM9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmRyYXdTaWRlcz1bITAsITAsITBdLHRoaXMubGluZVdpZHRoPVsxLDEsMV19aS5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTwzOysrZSl7dmFyIHI9dFthW2VdXTtyLnZpc2libGU/KHRoaXMuZW5hYmxlZFtlXT1yLnNob3dzcGlrZXMsdGhpcy5jb2xvcnNbZV09bihyLnNwaWtlY29sb3IpLHRoaXMuZHJhd1NpZGVzW2VdPXIuc3Bpa2VzaWRlcyx0aGlzLmxpbmVXaWR0aFtlXT1yLnNwaWtldGhpY2tuZXNzKToodGhpcy5lbmFibGVkW2VdPSExLHRoaXMuZHJhd1NpZGVzW2VdPSExKX19LGUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgaTtyZXR1cm4gZS5tZXJnZSh0KSxlfX0seyIuLi8uLi8uLi9saWIvc3RyMnJnYmFycmF5Ijo3NDB9XSw4MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmF4ZXNPcHRpb25zLHI9dC5nbHBsb3QuYXhlc1BpeGVscyxzPXQuZnVsbFNjZW5lTGF5b3V0LGw9W1tdLFtdLFtdXSxjPTA7YzwzOysrYyl7dmFyIHU9c1tpW2NdXTtpZih1Ll9sZW5ndGg9KHJbY10uaGktcltjXS5sbykqcltjXS5waXhlbHNQZXJEYXRhVW5pdC90LmRhdGFTY2FsZVtjXSxNYXRoLmFicyh1Ll9sZW5ndGgpPT09MS8wfHxpc05hTih1Ll9sZW5ndGgpKWxbY109W107ZWxzZXt1Ll9pbnB1dF9yYW5nZT11LnJhbmdlLnNsaWNlKCksdS5yYW5nZVswXT1yW2NdLmxvL3QuZGF0YVNjYWxlW2NdLHUucmFuZ2VbMV09cltjXS5oaS90LmRhdGFTY2FsZVtjXSx1Ll9tPTEvKHQuZGF0YVNjYWxlW2NdKnJbY10ucGl4ZWxzUGVyRGF0YVVuaXQpLHUucmFuZ2VbMF09PT11LnJhbmdlWzFdJiYodS5yYW5nZVswXS09MSx1LnJhbmdlWzFdKz0xKTt2YXIgaD11LnRpY2ttb2RlO2lmKCJhdXRvIj09PXUudGlja21vZGUpe3UudGlja21vZGU9ImxpbmVhciI7dmFyIGY9dS5udGlja3N8fGEuY29uc3RyYWluKHUuX2xlbmd0aC80MCw0LDkpO24uYXV0b1RpY2tzKHUsTWF0aC5hYnModS5yYW5nZVsxXS11LnJhbmdlWzBdKS9mKX1mb3IodmFyIHA9bi5jYWxjVGlja3ModSksZD0wO2Q8cC5sZW5ndGg7KytkKXBbZF0ueD1wW2RdLngqdC5kYXRhU2NhbGVbY10sImRhdGUiPT09dS50eXBlJiYocFtkXS50ZXh0PXBbZF0udGV4dC5yZXBsYWNlKC9cPGJyXD4vZywiICIpKTtsW2NdPXAsdS50aWNrbW9kZT1ofX1lLnRpY2tzPWw7Zm9yKHZhciBjPTA7YzwzOysrYyl7b1tjXT0uNSoodC5nbHBsb3QuYm91bmRzWzBdW2NdK3QuZ2xwbG90LmJvdW5kc1sxXVtjXSk7Zm9yKHZhciBkPTA7ZDwyOysrZCllLmJvdW5kc1tkXVtjXT10LmdscGxvdC5ib3VuZHNbZF1bY119dC5jb250b3VyTGV2ZWxzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkoMykscj0wO3I8MzsrK3Ipe2Zvcih2YXIgbj10W3JdLGE9bmV3IEFycmF5KG4ubGVuZ3RoKSxpPTA7aTxuLmxlbmd0aDsrK2kpYVtpXT1uW2ldLng7ZVtyXT1hfXJldHVybiBlfShsKX07dmFyIG49dCgiLi4vLi4vY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uLy4uL2xpYiIpLGk9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXSxvPVswLDAsMF19LHsiLi4vLi4vLi4vbGliIjo3MTcsIi4uLy4uL2NhcnRlc2lhbi9heGVzIjo3NjV9XSw4MTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByLG4sYT1bMCwwLDAsMF07Zm9yKHI9MDtyPDQ7KytyKWZvcihuPTA7bjw0OysrbilhW25dKz10WzQqcituXSplW3JdO3JldHVybiBhfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQucHJvamVjdGlvbixuKHQudmlldyxuKHQubW9kZWwsW2VbMF0sZVsxXSxlWzJdLDFdKSkpfX0se31dLDgxNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhLGk9dCgiZ2wtcGxvdDNkIiksbz1pLmNyZWF0ZUNhbWVyYSxzPWkuY3JlYXRlU2NlbmUsbD10KCJ3ZWJnbC1jb250ZXh0IiksYz10KCJoYXMtcGFzc2l2ZS1ldmVudHMiKSx1PXQoIi4uLy4uL3JlZ2lzdHJ5IiksaD10KCIuLi8uLi9saWIiKSxmPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikscD10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksZD10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IiksZz10KCIuLi8uLi9saWIvc2hvd19ub193ZWJnbF9tc2ciKSx2PXQoIi4vcHJvamVjdCIpLG09dCgiLi9sYXlvdXQvY29udmVydCIpLHk9dCgiLi9sYXlvdXQvc3Bpa2VzIikseD10KCIuL2xheW91dC90aWNrX21hcmtzIiksYj10KCJpcy1tb2JpbGUiKSxfPWZ1bmN0aW9uKCl7aWYoIW5hdmlnYXRvcilyZXR1cm4hMTt2YXIgdDt0fHwidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8KHQ9bmF2aWdhdG9yLnVzZXJBZ2VudCk7dCYmdC5oZWFkZXJzJiYic3RyaW5nIj09dHlwZW9mIHQuaGVhZGVyc1sidXNlci1hZ2VudCJdJiYodD10LmhlYWRlcnNbInVzZXItYWdlbnQiXSk7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiExO3ZhciBlPWIoe3VhOnQsdGFibGV0OiEwfSk7ITE9PT1lJiYtMSE9PXQuaW5kZXhPZigiTWFjaW50b3NoIikmJi0xIT09dC5pbmRleE9mKCJTYWZhcmkiKSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjEmJihlPSEwKTtyZXR1cm4gZX0oKTtmdW5jdGlvbiB3KHQsZSl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksbj10LmNvbnRhaW5lcjt0aGlzLmdyYXBoRGl2PXQuZ3JhcGhEaXY7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpO2Euc3R5bGUucG9zaXRpb249ImFic29sdXRlIixhLnN0eWxlLnRvcD1hLnN0eWxlLmxlZnQ9IjBweCIsYS5zdHlsZS53aWR0aD1hLnN0eWxlLmhlaWdodD0iMTAwJSIsYS5zdHlsZVsiei1pbmRleCJdPTIwLGEuc3R5bGVbInBvaW50ZXItZXZlbnRzIl09Im5vbmUiLHIuYXBwZW5kQ2hpbGQoYSksdGhpcy5zdmdDb250YWluZXI9YSxyLmlkPXQuaWQsci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHIuc3R5bGUudG9wPXIuc3R5bGUubGVmdD0iMHB4IixyLnN0eWxlLndpZHRoPXIuc3R5bGUuaGVpZ2h0PSIxMDAlIixuLmFwcGVuZENoaWxkKHIpLHRoaXMuZnVsbExheW91dD1lLHRoaXMuaWQ9dC5pZHx8InNjZW5lIix0aGlzLmZ1bGxTY2VuZUxheW91dD1lW3RoaXMuaWRdLHRoaXMucGxvdEFyZ3M9W1tdLHt9LHt9XSx0aGlzLmF4ZXNPcHRpb25zPW0oZSxlW3RoaXMuaWRdKSx0aGlzLnNwaWtlT3B0aW9ucz15KGVbdGhpcy5pZF0pLHRoaXMuY29udGFpbmVyPXIsdGhpcy5zdGF0aWNNb2RlPSEhdC5zdGF0aWNQbG90LHRoaXMucGl4ZWxSYXRpbz10aGlzLnBpeGVsUmF0aW98fHQucGxvdEdsUGl4ZWxSYXRpb3x8Mix0aGlzLmRhdGFTY2FsZT1bMSwxLDFdLHRoaXMuY29udG91ckxldmVscz1bW10sW10sW11dLHRoaXMuY29udmVydEFubm90YXRpb25zPXUuZ2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0aW9uczNkIiwiY29udmVydCIpLHRoaXMuZHJhd0Fubm90YXRpb25zPXUuZ2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0aW9uczNkIiwiZHJhdyIpLHRoaXMuaW5pdGlhbGl6ZUdMUGxvdCgpfXZhciBrPXcucHJvdG90eXBlO2sudHJ5Q3JlYXRlUGxvdD1mdW5jdGlvbigpe3ZhciB0PXtjYW52YXM6dGhpcy5jYW52YXMsZ2w6dGhpcy5nbCxnbE9wdGlvbnM6e3ByZXNlcnZlRHJhd2luZ0J1ZmZlcjpfLHByZW11bHRpcGxpZWRBbHBoYTohMCxhbnRpYWxpYXM6ITB9LGNvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcixheGVzOnRoaXMuYXhlc09wdGlvbnMsc3Bpa2VzOnRoaXMuc3Bpa2VPcHRpb25zLHBpY2tSYWRpdXM6MTAsc25hcFRvRGF0YTohMCxhdXRvU2NhbGU6ITAsYXV0b0JvdW5kczohMSxjYW1lcmFPYmplY3Q6dGhpcy5jYW1lcmEscGl4ZWxSYXRpbzp0aGlzLnBpeGVsUmF0aW99O2lmKHRoaXMuc3RhdGljTW9kZSl7aWYoIShhfHwobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxhPWwoe2NhbnZhczpuLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjohMCxwcmVtdWx0aXBsaWVkQWxwaGE6ITAsYW50aWFsaWFzOiEwfSkpKSl0aHJvdyBuZXcgRXJyb3IoImVycm9yIGNyZWF0aW5nIHN0YXRpYyBjYW52YXMvY29udGV4dCBmb3IgaW1hZ2Ugc2VydmVyIik7dC5nbD1hLHQuY2FudmFzPW59dmFyIGU9MDt0cnl7dGhpcy5nbHBsb3Q9cyh0KX1jYXRjaChyKXtlKys7dHJ5e3RoaXMuZ2xwbG90PXModCl9Y2F0Y2godCl7ZSsrfX1yZXR1cm4gZTwyfSxrLmluaXRpYWxpemVHTENhbWVyYT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZnVsbFNjZW5lTGF5b3V0LmNhbWVyYSxlPSJvcnRob2dyYXBoaWMiPT09dC5wcm9qZWN0aW9uLnR5cGU7dGhpcy5jYW1lcmE9byh0aGlzLmNvbnRhaW5lcix7Y2VudGVyOlt0LmNlbnRlci54LHQuY2VudGVyLnksdC5jZW50ZXIuel0sZXllOlt0LmV5ZS54LHQuZXllLnksdC5leWUuel0sdXA6W3QudXAueCx0LnVwLnksdC51cC56XSxfb3J0aG86ZSx6b29tTWluOi4wMSx6b29tTWF4OjEwMCxtb2RlOiJvcmJpdCJ9KX0say5pbml0aWFsaXplR0xQbG90PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0LmluaXRpYWxpemVHTENhbWVyYSgpLCF0LnRyeUNyZWF0ZVBsb3QoKSlyZXR1cm4gZyh0KTt0LnRyYWNlcz17fSx0Lm1ha2U0dGhEaW1lbnNpb24oKTt2YXIgZT10LmdyYXBoRGl2LHI9ZS5sYXlvdXQsbj1mdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiB0LmlzQ2FtZXJhQ2hhbmdlZChyKSYmKGVbdC5pZCsiLmNhbWVyYSJdPXQuZ2V0Q2FtZXJhKCkpLHQuaXNBc3BlY3RDaGFuZ2VkKHIpJiYoZVt0LmlkKyIuYXNwZWN0cmF0aW8iXT10LmdscGxvdC5nZXRBc3BlY3RyYXRpbygpKSxlfSxhPWZ1bmN0aW9uKHQpe2lmKCExIT09dC5mdWxsU2NlbmVMYXlvdXQuZHJhZ21vZGUpe3ZhciBlPW4oKTt0LnNhdmVMYXlvdXQociksdC5ncmFwaERpdi5lbWl0KCJwbG90bHlfcmVsYXlvdXQiLGUpfX07cmV0dXJuIHQuZ2xwbG90LmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixmdW5jdGlvbigpe2EodCl9KSx0LmdscGxvdC5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLGZ1bmN0aW9uKHIpe2lmKGUuX2NvbnRleHQuX3Njcm9sbFpvb20uZ2wzZCl7aWYodC5jYW1lcmEuX29ydGhvKXt2YXIgbj1yLmRlbHRhWD5yLmRlbHRhWT8xLjE6MS8xLjEsaT10LmdscGxvdC5nZXRBc3BlY3RyYXRpbygpO3QuZ2xwbG90LnNldEFzcGVjdHJhdGlvKHt4Om4qaS54LHk6bippLnksejpuKmkuen0pfWEodCl9fSwhIWMmJntwYXNzaXZlOiExfSksdC5nbHBsb3QuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZnVuY3Rpb24oKXtpZighMSE9PXQuZnVsbFNjZW5lTGF5b3V0LmRyYWdtb2RlJiYwIT09dC5jYW1lcmEubW91c2VMaXN0ZW5lci5idXR0b25zKXt2YXIgZT1uKCk7dC5ncmFwaERpdi5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLGUpfX0pLHQuc3RhdGljTW9kZXx8dC5nbHBsb3QuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGZ1bmN0aW9uKHIpe2UmJmUuZW1pdCYmZS5lbWl0KCJwbG90bHlfd2ViZ2xjb250ZXh0bG9zdCIse2V2ZW50OnIsbGF5ZXI6dC5pZH0pfSwhMSksdC5nbHBsb3Qub25jb250ZXh0bG9zcz1mdW5jdGlvbigpe3QucmVjb3ZlckNvbnRleHQoKX0sdC5nbHBsb3Qub25yZW5kZXI9ZnVuY3Rpb24oKXt0LnJlbmRlcigpfSwhMH0say5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMscj1lLmdyYXBoRGl2LG49ZS5zdmdDb250YWluZXIsYT1lLmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPWEud2lkdGgsbz1hLmhlaWdodDtuLnNldEF0dHJpYnV0ZU5TKG51bGwsInZpZXdCb3giLCIwIDAgIitpKyIgIitvKSxuLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixpKSxuLnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsbykseChlKSxlLmdscGxvdC5heGVzLnVwZGF0ZShlLmF4ZXNPcHRpb25zKTtmb3IodmFyIHMsbD1PYmplY3Qua2V5cyhlLnRyYWNlcyksYz1udWxsLHU9ZS5nbHBsb3Quc2VsZWN0aW9uLGQ9MDtkPGwubGVuZ3RoOysrZCkic2tpcCIhPT0odD1lLnRyYWNlc1tsW2RdXSkuZGF0YS5ob3ZlcmluZm8mJnQuaGFuZGxlUGljayh1KSYmKGM9dCksdC5zZXRDb250b3VyTGV2ZWxzJiZ0LnNldENvbnRvdXJMZXZlbHMoKTtmdW5jdGlvbiBnKHQscil7dmFyIG49ZS5mdWxsU2NlbmVMYXlvdXRbdF07cmV0dXJuIGYudGlja1RleHQobixuLmQybChyKSwiaG92ZXIiKS50ZXh0fWlmKG51bGwhPT1jKXt2YXIgbT12KGUuZ2xwbG90LmNhbWVyYVBhcmFtcyx1LmRhdGFDb29yZGluYXRlKTt0PWMuZGF0YTt2YXIgeSxiPXIuX2Z1bGxEYXRhW3QuaW5kZXhdLF89dS5pbmRleCx3PXt4TGFiZWw6ZygieGF4aXMiLHUudHJhY2VDb29yZGluYXRlWzBdKSx5TGFiZWw6ZygieWF4aXMiLHUudHJhY2VDb29yZGluYXRlWzFdKSx6TGFiZWw6ZygiemF4aXMiLHUudHJhY2VDb29yZGluYXRlWzJdKX0saz1wLmNhc3RIb3ZlcmluZm8oYixlLmZ1bGxMYXlvdXQsXyksVD0oa3x8IiIpLnNwbGl0KCIrIiksTT1rJiYiYWxsIj09PWs7Yi5ob3ZlcnRlbXBsYXRlfHxNfHwoLTE9PT1ULmluZGV4T2YoIngiKSYmKHcueExhYmVsPXZvaWQgMCksLTE9PT1ULmluZGV4T2YoInkiKSYmKHcueUxhYmVsPXZvaWQgMCksLTE9PT1ULmluZGV4T2YoInoiKSYmKHcuekxhYmVsPXZvaWQgMCksLTE9PT1ULmluZGV4T2YoInRleHQiKSYmKHUudGV4dExhYmVsPXZvaWQgMCksLTE9PT1ULmluZGV4T2YoIm5hbWUiKSYmKGMubmFtZT12b2lkIDApKTt2YXIgQT1bXTsiY29uZSI9PT10LnR5cGV8fCJzdHJlYW10dWJlIj09PXQudHlwZT8ody51TGFiZWw9ZygieGF4aXMiLHUudHJhY2VDb29yZGluYXRlWzNdKSwoTXx8LTEhPT1ULmluZGV4T2YoInUiKSkmJkEucHVzaCgidTogIit3LnVMYWJlbCksdy52TGFiZWw9ZygieWF4aXMiLHUudHJhY2VDb29yZGluYXRlWzRdKSwoTXx8LTEhPT1ULmluZGV4T2YoInYiKSkmJkEucHVzaCgidjogIit3LnZMYWJlbCksdy53TGFiZWw9ZygiemF4aXMiLHUudHJhY2VDb29yZGluYXRlWzVdKSwoTXx8LTEhPT1ULmluZGV4T2YoInciKSkmJkEucHVzaCgidzogIit3LndMYWJlbCksdy5ub3JtTGFiZWw9dS50cmFjZUNvb3JkaW5hdGVbNl0udG9QcmVjaXNpb24oMyksKE18fC0xIT09VC5pbmRleE9mKCJub3JtIikpJiZBLnB1c2goIm5vcm06ICIrdy5ub3JtTGFiZWwpLCJzdHJlYW10dWJlIj09PXQudHlwZSYmKHcuZGl2ZXJnZW5jZUxhYmVsPXUudHJhY2VDb29yZGluYXRlWzddLnRvUHJlY2lzaW9uKDMpLChNfHwtMSE9PVQuaW5kZXhPZigiZGl2ZXJnZW5jZSIpKSYmQS5wdXNoKCJkaXZlcmdlbmNlOiAiK3cuZGl2ZXJnZW5jZUxhYmVsKSksdS50ZXh0TGFiZWwmJkEucHVzaCh1LnRleHRMYWJlbCkseT1BLmpvaW4oIjxicj4iKSk6Imlzb3N1cmZhY2UiPT09dC50eXBlfHwidm9sdW1lIj09PXQudHlwZT8ody52YWx1ZUxhYmVsPWYudGlja1RleHQoZS5fbW9ja0F4aXMsZS5fbW9ja0F4aXMuZDJsKHUudHJhY2VDb29yZGluYXRlWzNdKSwiaG92ZXIiKS50ZXh0LEEucHVzaCgidmFsdWU6ICIrdy52YWx1ZUxhYmVsKSx1LnRleHRMYWJlbCYmQS5wdXNoKHUudGV4dExhYmVsKSx5PUEuam9pbigiPGJyPiIpKTp5PXUudGV4dExhYmVsO3ZhciBTPXt4OnUudHJhY2VDb29yZGluYXRlWzBdLHk6dS50cmFjZUNvb3JkaW5hdGVbMV0sejp1LnRyYWNlQ29vcmRpbmF0ZVsyXSxkYXRhOmIuX2lucHV0LGZ1bGxEYXRhOmIsY3VydmVOdW1iZXI6Yi5pbmRleCxwb2ludE51bWJlcjpffTtwLmFwcGVuZEFycmF5UG9pbnRWYWx1ZShTLGIsXyksdC5fbW9kdWxlLmV2ZW50RGF0YSYmKFM9Yi5fbW9kdWxlLmV2ZW50RGF0YShTLHUsYix7fSxfKSk7dmFyIEU9e3BvaW50czpbU119O2UuZnVsbFNjZW5lTGF5b3V0LmhvdmVybW9kZSYmcC5sb25lSG92ZXIoe3RyYWNlOmIseDooLjUrLjUqbVswXS9tWzNdKSppLHk6KC41LS41Km1bMV0vbVszXSkqbyx4TGFiZWw6dy54TGFiZWwseUxhYmVsOncueUxhYmVsLHpMYWJlbDp3LnpMYWJlbCx0ZXh0OnksbmFtZTpjLm5hbWUsY29sb3I6cC5jYXN0SG92ZXJPcHRpb24oYixfLCJiZ2NvbG9yIil8fGMuY29sb3IsYm9yZGVyQ29sb3I6cC5jYXN0SG92ZXJPcHRpb24oYixfLCJib3JkZXJjb2xvciIpLGZvbnRGYW1pbHk6cC5jYXN0SG92ZXJPcHRpb24oYixfLCJmb250LmZhbWlseSIpLGZvbnRTaXplOnAuY2FzdEhvdmVyT3B0aW9uKGIsXywiZm9udC5zaXplIiksZm9udENvbG9yOnAuY2FzdEhvdmVyT3B0aW9uKGIsXywiZm9udC5jb2xvciIpLG5hbWVMZW5ndGg6cC5jYXN0SG92ZXJPcHRpb24oYixfLCJuYW1lbGVuZ3RoIiksdGV4dEFsaWduOnAuY2FzdEhvdmVyT3B0aW9uKGIsXywiYWxpZ24iKSxob3ZlcnRlbXBsYXRlOmguY2FzdE9wdGlvbihiLF8sImhvdmVydGVtcGxhdGUiKSxob3ZlcnRlbXBsYXRlTGFiZWxzOmguZXh0ZW5kRmxhdCh7fSxTLHcpLGV2ZW50RGF0YTpbU119LHtjb250YWluZXI6bixnZDpyfSksdS5idXR0b25zJiZ1LmRpc3RhbmNlPDU/ci5lbWl0KCJwbG90bHlfY2xpY2siLEUpOnIuZW1pdCgicGxvdGx5X2hvdmVyIixFKSxzPUV9ZWxzZSBwLmxvbmVVbmhvdmVyKG4pLHIuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHMpO2UuZHJhd0Fubm90YXRpb25zKGUpfSxrLnJlY292ZXJDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmdscGxvdC5kaXNwb3NlKCk7dmFyIGU9ZnVuY3Rpb24oKXt0LmdscGxvdC5nbC5pc0NvbnRleHRMb3N0KCk/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpOnQuaW5pdGlhbGl6ZUdMUGxvdCgpP3QucGxvdC5hcHBseSh0LHQucGxvdEFyZ3MpOmguZXJyb3IoIkNhdGFzdHJvcGhpYyBhbmQgdW5yZWNvdmVyYWJsZSBXZWJHTCBlcnJvci4gQ29udGV4dCBsb3N0LiIpfTtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSl9O3ZhciBUPVsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl07ZnVuY3Rpb24gTSh0LGUscil7Zm9yKHZhciBuPXQuZnVsbFNjZW5lTGF5b3V0LGE9MDthPDM7YSsrKXt2YXIgaT1UW2FdLG89aS5jaGFyQXQoMCkscz1uW2ldLGw9ZVtvXSxjPWVbbysiY2FsZW5kYXIiXSx1PWVbIl8iK28rImxlbmd0aCJdO2lmKGguaXNBcnJheU9yVHlwZWRBcnJheShsKSlmb3IodmFyIGYscD0wO3A8KHV8fGwubGVuZ3RoKTtwKyspaWYoaC5pc0FycmF5T3JUeXBlZEFycmF5KGxbcF0pKWZvcih2YXIgZD0wO2Q8bFtwXS5sZW5ndGg7KytkKWY9cy5kMmwobFtwXVtkXSwwLGMpLCFpc05hTihmKSYmaXNGaW5pdGUoZikmJihyWzBdW2FdPU1hdGgubWluKHJbMF1bYV0sZiksclsxXVthXT1NYXRoLm1heChyWzFdW2FdLGYpKTtlbHNlIGY9cy5kMmwobFtwXSwwLGMpLCFpc05hTihmKSYmaXNGaW5pdGUoZikmJihyWzBdW2FdPU1hdGgubWluKHJbMF1bYV0sZiksclsxXVthXT1NYXRoLm1heChyWzFdW2FdLGYpKTtlbHNlIHJbMF1bYV09TWF0aC5taW4oclswXVthXSwwKSxyWzFdW2FdPU1hdGgubWF4KHJbMV1bYV0sdS0xKX19ay5wbG90PWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLnBsb3RBcmdzPVt0LGUscl0sIXRoaXMuZ2xwbG90LmNvbnRleHRMb3N0KXt2YXIgbixhLGksbyxzLGwsYz1lW3RoaXMuaWRdLHU9clt0aGlzLmlkXTt0aGlzLmZ1bGxMYXlvdXQ9ZSx0aGlzLmZ1bGxTY2VuZUxheW91dD1jLHRoaXMuYXhlc09wdGlvbnMubWVyZ2UoZSxjKSx0aGlzLnNwaWtlT3B0aW9ucy5tZXJnZShjKSx0aGlzLnNldFZpZXdwb3J0KGMpLHRoaXMudXBkYXRlRngoYy5kcmFnbW9kZSxjLmhvdmVybW9kZSksdGhpcy5jYW1lcmEuZW5hYmxlV2hlZWw9dGhpcy5ncmFwaERpdi5fY29udGV4dC5fc2Nyb2xsWm9vbS5nbDNkLHRoaXMuZ2xwbG90LnNldENsZWFyQ29sb3IoZChjLmJnY29sb3IpKSx0aGlzLnNldENvbnZlcnQocyksdD9BcnJheS5pc0FycmF5KHQpfHwodD1bdF0pOnQ9W107dmFyIGg9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV07Zm9yKGk9MDtpPHQubGVuZ3RoOysraSkhMD09PShuPXRbaV0pLnZpc2libGUmJjAhPT1uLl9sZW5ndGgmJk0odGhpcyxuLGgpOyFmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmZ1bGxTY2VuZUxheW91dCxuPXIuYW5ub3RhdGlvbnN8fFtdLGE9MDthPDM7YSsrKWZvcih2YXIgaT1UW2FdLG89aS5jaGFyQXQoMCkscz1yW2ldLGw9MDtsPG4ubGVuZ3RoO2wrKyl7dmFyIGM9bltsXTtpZihjLnZpc2libGUpe3ZhciB1PXMucjJsKGNbb10pOyFpc05hTih1KSYmaXNGaW5pdGUodSkmJihlWzBdW2FdPU1hdGgubWluKGVbMF1bYV0sdSksZVsxXVthXT1NYXRoLm1heChlWzFdW2FdLHUpKX19fSh0aGlzLGgpO3ZhciBmPVsxLDEsMV07Zm9yKG89MDtvPDM7KytvKWhbMV1bb109PT1oWzBdW29dP2Zbb109MTpmW29dPTEvKGhbMV1bb10taFswXVtvXSk7Zm9yKHRoaXMuZGF0YVNjYWxlPWYsdGhpcy5jb252ZXJ0QW5ub3RhdGlvbnModGhpcyksaT0wO2k8dC5sZW5ndGg7KytpKSEwPT09KG49dFtpXSkudmlzaWJsZSYmMCE9PW4uX2xlbmd0aCYmKChhPXRoaXMudHJhY2VzW24udWlkXSk/YS5kYXRhLnR5cGU9PT1uLnR5cGU/YS51cGRhdGUobik6KGEuZGlzcG9zZSgpLGE9bi5fbW9kdWxlLnBsb3QodGhpcyxuKSx0aGlzLnRyYWNlc1tuLnVpZF09YSk6KGE9bi5fbW9kdWxlLnBsb3QodGhpcyxuKSx0aGlzLnRyYWNlc1tuLnVpZF09YSksYS5uYW1lPW4ubmFtZSk7dmFyIHA9T2JqZWN0LmtleXModGhpcy50cmFjZXMpO3Q6Zm9yKGk9MDtpPHAubGVuZ3RoOysraSl7Zm9yKG89MDtvPHQubGVuZ3RoOysrbylpZih0W29dLnVpZD09PXBbaV0mJiEwPT09dFtvXS52aXNpYmxlJiYwIT09dFtvXS5fbGVuZ3RoKWNvbnRpbnVlIHQ7KGE9dGhpcy50cmFjZXNbcFtpXV0pLmRpc3Bvc2UoKSxkZWxldGUgdGhpcy50cmFjZXNbcFtpXV19dGhpcy5nbHBsb3Qub2JqZWN0cy5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX3RyYWNlLmRhdGEuaW5kZXgtZS5fdHJhY2UuZGF0YS5pbmRleH0pO3ZhciBnPVtbMCwwLDBdLFswLDAsMF1dLHY9W10sbT17fTtmb3IoaT0wO2k8MzsrK2kpe2lmKChsPShzPWNbVFtpXV0pLnR5cGUpaW4gbT8obVtsXS5hY2MqPWZbaV0sbVtsXS5jb3VudCs9MSk6bVtsXT17YWNjOmZbaV0sY291bnQ6MX0scy5hdXRvcmFuZ2Upe2dbMF1baV09MS8wLGdbMV1baV09LTEvMDt2YXIgeT10aGlzLmdscGxvdC5vYmplY3RzLHg9dGhpcy5mdWxsU2NlbmVMYXlvdXQuYW5ub3RhdGlvbnN8fFtdLGI9cy5fbmFtZS5jaGFyQXQoMCk7Zm9yKG89MDtvPHkubGVuZ3RoO28rKyl7dmFyIF89eVtvXSx3PV8uYm91bmRzLGs9Xy5fdHJhY2UuZGF0YS5fcGFkfHwwOyJFcnJvckJhcnMiPT09Xy5jb25zdHJ1Y3Rvci5uYW1lJiZzLl9sb3dlckxvZ0Vycm9yQm91bmQ/Z1swXVtpXT1NYXRoLm1pbihnWzBdW2ldLHMuX2xvd2VyTG9nRXJyb3JCb3VuZCk6Z1swXVtpXT1NYXRoLm1pbihnWzBdW2ldLHdbMF1baV0vZltpXS1rKSxnWzFdW2ldPU1hdGgubWF4KGdbMV1baV0sd1sxXVtpXS9mW2ldK2spfWZvcihvPTA7bzx4Lmxlbmd0aDtvKyspe3ZhciBBPXhbb107aWYoQS52aXNpYmxlKXt2YXIgUz1zLnIybChBW2JdKTtnWzBdW2ldPU1hdGgubWluKGdbMF1baV0sUyksZ1sxXVtpXT1NYXRoLm1heChnWzFdW2ldLFMpfX1pZigicmFuZ2Vtb2RlImluIHMmJiJ0b3plcm8iPT09cy5yYW5nZW1vZGUmJihnWzBdW2ldPU1hdGgubWluKGdbMF1baV0sMCksZ1sxXVtpXT1NYXRoLm1heChnWzFdW2ldLDApKSxnWzBdW2ldPmdbMV1baV0pZ1swXVtpXT0tMSxnWzFdW2ldPTE7ZWxzZXt2YXIgRT1nWzFdW2ldLWdbMF1baV07Z1swXVtpXS09RS8zMixnWzFdW2ldKz1FLzMyfWlmKCJyZXZlcnNlZCI9PT1zLmF1dG9yYW5nZSl7dmFyIEw9Z1swXVtpXTtnWzBdW2ldPWdbMV1baV0sZ1sxXVtpXT1MfX1lbHNle3ZhciBDPXMucmFuZ2U7Z1swXVtpXT1zLnIybChDWzBdKSxnWzFdW2ldPXMucjJsKENbMV0pfWdbMF1baV09PT1nWzFdW2ldJiYoZ1swXVtpXS09MSxnWzFdW2ldKz0xKSx2W2ldPWdbMV1baV0tZ1swXVtpXSx0aGlzLmdscGxvdC5zZXRCb3VuZHMoaSx7bWluOmdbMF1baV0qZltpXSxtYXg6Z1sxXVtpXSpmW2ldfSl9dmFyIFA9WzEsMSwxXTtmb3IoaT0wO2k8MzsrK2kpe3ZhciBPPW1bbD0ocz1jW1RbaV1dKS50eXBlXTtQW2ldPU1hdGgucG93KE8uYWNjLDEvTy5jb3VudCkvZltpXX12YXIgejtpZigiYXV0byI9PT1jLmFzcGVjdG1vZGUpej1NYXRoLm1heC5hcHBseShudWxsLFApL01hdGgubWluLmFwcGx5KG51bGwsUCk8PTQ/UDpbMSwxLDFdO2Vsc2UgaWYoImN1YmUiPT09Yy5hc3BlY3Rtb2RlKXo9WzEsMSwxXTtlbHNlIGlmKCJkYXRhIj09PWMuYXNwZWN0bW9kZSl6PVA7ZWxzZXtpZigibWFudWFsIiE9PWMuYXNwZWN0bW9kZSl0aHJvdyBuZXcgRXJyb3IoInNjZW5lLmpzIGFzcGVjdFJhdGlvIHdhcyBub3Qgb25lIG9mIHRoZSBlbnVtZXJhdGVkIHR5cGVzIik7dmFyIEk9Yy5hc3BlY3RyYXRpbzt6PVtJLngsSS55LEkuel19Yy5hc3BlY3RyYXRpby54PXUuYXNwZWN0cmF0aW8ueD16WzBdLGMuYXNwZWN0cmF0aW8ueT11LmFzcGVjdHJhdGlvLnk9elsxXSxjLmFzcGVjdHJhdGlvLno9dS5hc3BlY3RyYXRpby56PXpbMl0sdGhpcy5nbHBsb3Quc2V0QXNwZWN0cmF0aW8oYy5hc3BlY3RyYXRpbyksdGhpcy52aWV3SW5pdGlhbC5hc3BlY3RyYXRpb3x8KHRoaXMudmlld0luaXRpYWwuYXNwZWN0cmF0aW89e3g6Yy5hc3BlY3RyYXRpby54LHk6Yy5hc3BlY3RyYXRpby55LHo6Yy5hc3BlY3RyYXRpby56fSk7dmFyIEQ9Yy5kb21haW58fG51bGwsUj1lLl9zaXplfHxudWxsO2lmKEQmJlIpe3ZhciBGPXRoaXMuY29udGFpbmVyLnN0eWxlO0YucG9zaXRpb249ImFic29sdXRlIixGLmxlZnQ9Ui5sK0QueFswXSpSLncrInB4IixGLnRvcD1SLnQrKDEtRC55WzFdKSpSLmgrInB4IixGLndpZHRoPVIudyooRC54WzFdLUQueFswXSkrInB4IixGLmhlaWdodD1SLmgqKEQueVsxXS1ELnlbMF0pKyJweCJ9dGhpcy5nbHBsb3QucmVkcmF3KCl9fSxrLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmdscGxvdCYmKHRoaXMuY2FtZXJhLm1vdXNlTGlzdGVuZXIuZW5hYmxlZD0hMSx0aGlzLmNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJ3aGVlbCIsdGhpcy5jYW1lcmEud2hlZWxMaXN0ZW5lciksdGhpcy5jYW1lcmE9bnVsbCx0aGlzLmdscGxvdC5kaXNwb3NlKCksdGhpcy5jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lciksdGhpcy5nbHBsb3Q9bnVsbCl9LGsuZ2V0Q2FtZXJhPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHRoaXMuY2FtZXJhLnZpZXcucmVjYWxjTWF0cml4KHRoaXMuY2FtZXJhLnZpZXcubGFzdFQoKSkse3VwOnt4Oih0PXRoaXMuY2FtZXJhKS51cFswXSx5OnQudXBbMV0sejp0LnVwWzJdfSxjZW50ZXI6e3g6dC5jZW50ZXJbMF0seTp0LmNlbnRlclsxXSx6OnQuY2VudGVyWzJdfSxleWU6e3g6dC5leWVbMF0seTp0LmV5ZVsxXSx6OnQuZXllWzJdfSxwcm9qZWN0aW9uOnt0eXBlOiEwPT09dC5fb3J0aG8/Im9ydGhvZ3JhcGhpYyI6InBlcnNwZWN0aXZlIn19fSxrLnNldFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5jYW1lcmE7dGhpcy5jYW1lcmEubG9va0F0LmFwcGx5KHRoaXMsW1soZT1yKS5leWUueCxlLmV5ZS55LGUuZXllLnpdLFtlLmNlbnRlci54LGUuY2VudGVyLnksZS5jZW50ZXIuel0sW2UudXAueCxlLnVwLnksZS51cC56XV0pLHRoaXMuZ2xwbG90LnNldEFzcGVjdHJhdGlvKHQuYXNwZWN0cmF0aW8pLCJvcnRob2dyYXBoaWMiPT09ci5wcm9qZWN0aW9uLnR5cGUhPT10aGlzLmNhbWVyYS5fb3J0aG8mJih0aGlzLmdscGxvdC5yZWRyYXcoKSx0aGlzLmdscGxvdC5jbGVhclJHQkEoKSx0aGlzLmdscGxvdC5kaXNwb3NlKCksdGhpcy5pbml0aWFsaXplR0xQbG90KCkpfSxrLmlzQ2FtZXJhQ2hhbmdlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldENhbWVyYSgpLHI9aC5uZXN0ZWRQcm9wZXJ0eSh0LHRoaXMuaWQrIi5jYW1lcmEiKS5nZXQoKTtmdW5jdGlvbiBuKHQsZSxyLG4pe3ZhciBhPVsidXAiLCJjZW50ZXIiLCJleWUiXSxpPVsieCIsInkiLCJ6Il07cmV0dXJuIGVbYVtyXV0mJnRbYVtyXV1baVtuXV09PT1lW2Fbcl1dW2lbbl1dfXZhciBhPSExO2lmKHZvaWQgMD09PXIpYT0hMDtlbHNle2Zvcih2YXIgaT0wO2k8MztpKyspZm9yKHZhciBvPTA7bzwzO28rKylpZighbihlLHIsaSxvKSl7YT0hMDticmVha30oIXIucHJvamVjdGlvbnx8ZS5wcm9qZWN0aW9uJiZlLnByb2plY3Rpb24udHlwZSE9PXIucHJvamVjdGlvbi50eXBlKSYmKGE9ITApfXJldHVybiBhfSxrLmlzQXNwZWN0Q2hhbmdlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdscGxvdC5nZXRBc3BlY3RyYXRpbygpLHI9aC5uZXN0ZWRQcm9wZXJ0eSh0LHRoaXMuaWQrIi5hc3BlY3RyYXRpbyIpLmdldCgpO3JldHVybiB2b2lkIDA9PT1yfHxyLnghPT1lLnh8fHIueSE9PWUueXx8ci56IT09ZS56fSxrLnNhdmVMYXlvdXQ9ZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaSxvLHM9dGhpcy5mdWxsTGF5b3V0LGw9dGhpcy5pc0NhbWVyYUNoYW5nZWQodCksYz10aGlzLmlzQXNwZWN0Q2hhbmdlZCh0KSxmPWx8fGM7aWYoZil7dmFyIHA9e307aWYobCYmKGU9dGhpcy5nZXRDYW1lcmEoKSxuPShyPWgubmVzdGVkUHJvcGVydHkodCx0aGlzLmlkKyIuY2FtZXJhIikpLmdldCgpLHBbdGhpcy5pZCsiLmNhbWVyYSJdPW4pLGMmJihhPXRoaXMuZ2xwbG90LmdldEFzcGVjdHJhdGlvKCksbz0oaT1oLm5lc3RlZFByb3BlcnR5KHQsdGhpcy5pZCsiLmFzcGVjdHJhdGlvIikpLmdldCgpLHBbdGhpcy5pZCsiLmFzcGVjdHJhdGlvIl09byksdS5jYWxsKCJfc3RvcmVEaXJlY3RHVUlFZGl0Iix0LHMuX3ByZUdVSSxwKSxsKXIuc2V0KGUpLGgubmVzdGVkUHJvcGVydHkocyx0aGlzLmlkKyIuY2FtZXJhIikuc2V0KGUpO2lmKGMpaS5zZXQoYSksaC5uZXN0ZWRQcm9wZXJ0eShzLHRoaXMuaWQrIi5hc3BlY3RyYXRpbyIpLnNldChhKSx0aGlzLmdscGxvdC5yZWRyYXcoKX1yZXR1cm4gZn0say51cGRhdGVGeD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuY2FtZXJhO2lmKHIpaWYoIm9yYml0Ij09PXQpci5tb2RlPSJvcmJpdCIsci5rZXlCaW5kaW5nTW9kZT0icm90YXRlIjtlbHNlIGlmKCJ0dXJudGFibGUiPT09dCl7ci51cD1bMCwwLDFdLHIubW9kZT0idHVybnRhYmxlIixyLmtleUJpbmRpbmdNb2RlPSJyb3RhdGUiO3ZhciBuPXRoaXMuZ3JhcGhEaXYsYT1uLl9mdWxsTGF5b3V0LGk9dGhpcy5mdWxsU2NlbmVMYXlvdXQuY2FtZXJhLG89aS51cC54LHM9aS51cC55LGw9aS51cC56O2lmKGwvTWF0aC5zcXJ0KG8qbytzKnMrbCpsKTwuOTk5KXt2YXIgYz10aGlzLmlkKyIuY2FtZXJhLnVwIixmPXt4OjAseTowLHo6MX0scD17fTtwW2NdPWY7dmFyIGQ9bi5sYXlvdXQ7dS5jYWxsKCJfc3RvcmVEaXJlY3RHVUlFZGl0IixkLGEuX3ByZUdVSSxwKSxpLnVwPWYsaC5uZXN0ZWRQcm9wZXJ0eShkLGMpLnNldChmKX19ZWxzZSByLmtleUJpbmRpbmdNb2RlPXQ7dGhpcy5mdWxsU2NlbmVMYXlvdXQuaG92ZXJtb2RlPWV9LGsudG9JbWFnZT1mdW5jdGlvbih0KXt0fHwodD0icG5nIiksdGhpcy5zdGF0aWNNb2RlJiZ0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChuKSx0aGlzLmdscGxvdC5yZWRyYXcoKTt2YXIgZT10aGlzLmdscGxvdC5nbCxyPWUuZHJhd2luZ0J1ZmZlcldpZHRoLGE9ZS5kcmF3aW5nQnVmZmVySGVpZ2h0O2UuYmluZEZyYW1lYnVmZmVyKGUuRlJBTUVCVUZGRVIsbnVsbCk7dmFyIGk9bmV3IFVpbnQ4QXJyYXkociphKjQpO2UucmVhZFBpeGVscygwLDAscixhLGUuUkdCQSxlLlVOU0lHTkVEX0JZVEUsaSk7Zm9yKHZhciBvPTAscz1hLTE7bzxzOysrbywtLXMpZm9yKHZhciBsPTA7bDxyOysrbClmb3IodmFyIGM9MDtjPDQ7KytjKXt2YXIgdT1pWzQqKHIqbytsKStjXTtpWzQqKHIqbytsKStjXT1pWzQqKHIqcytsKStjXSxpWzQqKHIqcytsKStjXT11fXZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2gud2lkdGg9cixoLmhlaWdodD1hO3ZhciBmLHA9aC5nZXRDb250ZXh0KCIyZCIpLGQ9cC5jcmVhdGVJbWFnZURhdGEocixhKTtzd2l0Y2goZC5kYXRhLnNldChpKSxwLnB1dEltYWdlRGF0YShkLDAsMCksdCl7Y2FzZSJqcGVnIjpmPWgudG9EYXRhVVJMKCJpbWFnZS9qcGVnIik7YnJlYWs7Y2FzZSJ3ZWJwIjpmPWgudG9EYXRhVVJMKCJpbWFnZS93ZWJwIik7YnJlYWs7ZGVmYXVsdDpmPWgudG9EYXRhVVJMKCJpbWFnZS9wbmciKX1yZXR1cm4gdGhpcy5zdGF0aWNNb2RlJiZ0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZChuKSxmfSxrLnNldENvbnZlcnQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDM7dCsrKXt2YXIgZT10aGlzLmZ1bGxTY2VuZUxheW91dFtUW3RdXTtmLnNldENvbnZlcnQoZSx0aGlzLmZ1bGxMYXlvdXQpLGUuc2V0U2NhbGU9aC5ub29wfX0say5tYWtlNHRoRGltZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ncmFwaERpdi5fZnVsbExheW91dDt0aGlzLl9tb2NrQXhpcz17dHlwZToibGluZWFyIixzaG93ZXhwb25lbnQ6ImFsbCIsZXhwb25lbnRmb3JtYXQ6IkIifSxmLnNldENvbnZlcnQodGhpcy5fbW9ja0F4aXMsdCl9LGUuZXhwb3J0cz13fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zaG93X25vX3dlYmdsX21zZyI6NzM4LCIuLi8uLi9saWIvc3RyMnJnYmFycmF5Ijo3NDAsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vbGF5b3V0L2NvbnZlcnQiOjgwOSwiLi9sYXlvdXQvc3Bpa2VzIjo4MTIsIi4vbGF5b3V0L3RpY2tfbWFya3MiOjgxMywiLi9wcm9qZWN0Ijo4MTQsImdsLXBsb3QzZCI6MjkzLCJoYXMtcGFzc2l2ZS1ldmVudHMiOjQxMywiaXMtbW9iaWxlIjo0MjIsIndlYmdsLWNvbnRleHQiOjU1NX1dLDgxNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7bj1ufHx0Lmxlbmd0aDtmb3IodmFyIGE9bmV3IEFycmF5KG4pLGk9MDtpPG47aSsrKWFbaV09W3RbaV0sZVtpXSxyW2ldXTtyZXR1cm4gYX19LHt9XSw4MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9mb250X2F0dHJpYnV0ZXMiKSxhPXQoIi4vYW5pbWF0aW9uX2F0dHJpYnV0ZXMiKSxpPXQoIi4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLG89dCgiLi9wYWRfYXR0cmlidXRlcyIpLHM9dCgiLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsbD1uKHtlZGl0VHlwZToiY2FsYyJ9KTtsLmZhbWlseS5kZmx0PSciT3BlbiBTYW5zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLGwuc2l6ZS5kZmx0PTEyLGwuY29sb3IuZGZsdD1pLmRlZmF1bHRMaW5lLGUuZXhwb3J0cz17Zm9udDpsLHRpdGxlOnt0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LGZvbnQ6bih7ZWRpdFR5cGU6ImxheW91dHN0eWxlIn0pLHhyZWY6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGRmbHQ6ImNvbnRhaW5lciIsdmFsdWVzOlsiY29udGFpbmVyIiwicGFwZXIiXSxlZGl0VHlwZToibGF5b3V0c3R5bGUifSx5cmVmOnt2YWxUeXBlOiJlbnVtZXJhdGVkIixkZmx0OiJjb250YWluZXIiLHZhbHVlczpbImNvbnRhaW5lciIsInBhcGVyIl0sZWRpdFR5cGU6ImxheW91dHN0eWxlIn0seDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi41LGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoiYXV0byIsZWRpdFR5cGU6ImxheW91dHN0eWxlIn0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsZGZsdDoiYXV0byIsdmFsdWVzOlsiYXV0byIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGRmbHQ6ImF1dG8iLHZhbHVlczpbImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxlZGl0VHlwZToibGF5b3V0c3R5bGUifSxwYWQ6cyhvKHtlZGl0VHlwZToibGF5b3V0c3R5bGUifSkse30pLGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LHVuaWZvcm10ZXh0Onttb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyExLCJoaWRlIiwic2hvdyJdLGRmbHQ6ITEsZWRpdFR5cGU6InBsb3QifSxtaW5zaXplOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sYXV0b3NpemU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6Im5vbmUifSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MTAsZGZsdDo3MDAsZWRpdFR5cGU6InBsb3QifSxoZWlnaHQ6e3ZhbFR5cGU6Im51bWJlciIsbWluOjEwLGRmbHQ6NDUwLGVkaXRUeXBlOiJwbG90In0sbWFyZ2luOntsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6ODAsZWRpdFR5cGU6InBsb3QifSxyOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6ODAsZWRpdFR5cGU6InBsb3QifSx0Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MTAwLGVkaXRUeXBlOiJwbG90In0sYjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjgwLGVkaXRUeXBlOiJwbG90In0scGFkOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9LGF1dG9leHBhbmQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LHBhcGVyX2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkuYmFja2dyb3VuZCxlZGl0VHlwZToicGxvdCJ9LHBsb3RfYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aS5iYWNrZ3JvdW5kLGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LHNlcGFyYXRvcnM6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6InBsb3QifSxoaWRlc291cmNlczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToicGxvdCJ9LHNob3dsZWdlbmQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJsZWdlbmQifSxjb2xvcndheTp7dmFsVHlwZToiY29sb3JsaXN0IixkZmx0OmkuZGVmYXVsdHMsZWRpdFR5cGU6ImNhbGMifSxkYXRhcmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifSx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn0sZWRpdHJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn0sc2VsZWN0aW9ucmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUifSx0ZW1wbGF0ZTp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LG1vZGViYXI6e29yaWVudGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ2IiwiaCJdLGRmbHQ6ImgiLGVkaXRUeXBlOiJtb2RlYmFyIn0sYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJtb2RlYmFyIn0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToibW9kZWJhciJ9LGFjdGl2ZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6Im1vZGViYXIifSx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn0sZWRpdFR5cGU6Im1vZGViYXIifSxtZXRhOnt2YWxUeXBlOiJhbnkiLGFycmF5T2s6ITAsZWRpdFR5cGU6InBsb3QifSx0cmFuc2l0aW9uOnMoe30sYS50cmFuc2l0aW9uLHtlZGl0VHlwZToibm9uZSJ9KSxfZGVwcmVjYXRlZDp7dGl0bGU6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImxheW91dHN0eWxlIn0sdGl0bGVmb250Om4oe2VkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9KX19fSx7Ii4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6NTkxLCIuLi9saWIvZXh0ZW5kIjo3MDgsIi4vYW5pbWF0aW9uX2F0dHJpYnV0ZXMiOjc2MCwiLi9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi9wYWRfYXR0cmlidXRlcyI6ODI1fV0sODE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXsib3Blbi1zdHJlZXQtbWFwIjp7aWQ6Im9zbSIsdmVyc2lvbjo4LHNvdXJjZXM6eyJwbG90bHktb3NtLXRpbGVzIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjonPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9hYm91dC8iIHRhcmdldD0iX2JsYW5rIj5ceGE5IE9wZW5TdHJlZXRNYXA8L2E+Jyx0aWxlczpbImh0dHBzOi8vYS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZyIsImh0dHBzOi8vYi50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZyJdLHRpbGVTaXplOjI1Nn19LGxheWVyczpbe2lkOiJwbG90bHktb3NtLXRpbGVzIix0eXBlOiJyYXN0ZXIiLHNvdXJjZToicGxvdGx5LW9zbS10aWxlcyIsbWluem9vbTowLG1heHpvb206MjJ9XX0sIndoaXRlLWJnIjp7aWQ6IndoaXRlLWJnIix2ZXJzaW9uOjgsc291cmNlczp7fSxsYXllcnM6W3tpZDoid2hpdGUtYmciLHR5cGU6ImJhY2tncm91bmQiLHBhaW50OnsiYmFja2dyb3VuZC1jb2xvciI6IiNGRkZGRkYifSxtaW56b29tOjAsbWF4em9vbToyMn1dfSwiY2FydG8tcG9zaXRyb24iOntpZDoiY2FydG8tcG9zaXRyb24iLHZlcnNpb246OCxzb3VyY2VzOnsicGxvdGx5LWNhcnRvLXBvc2l0cm9uIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjonPGEgaHJlZj0iaHR0cHM6Ly9jYXJ0by5jb20vIiB0YXJnZXQ9Il9ibGFuayI+XHhhOSBDQVJUTzwvYT4nLHRpbGVzOlsiaHR0cHM6Ly9jYXJ0b2RiLWJhc2VtYXBzLWMuZ2xvYmFsLnNzbC5mYXN0bHkubmV0L2xpZ2h0X2FsbC97en0ve3h9L3t5fS5wbmciXSx0aWxlU2l6ZToyNTZ9fSxsYXllcnM6W3tpZDoicGxvdGx5LWNhcnRvLXBvc2l0cm9uIix0eXBlOiJyYXN0ZXIiLHNvdXJjZToicGxvdGx5LWNhcnRvLXBvc2l0cm9uIixtaW56b29tOjAsbWF4em9vbToyMn1dfSwiY2FydG8tZGFya21hdHRlciI6e2lkOiJjYXJ0by1kYXJrbWF0dGVyIix2ZXJzaW9uOjgsc291cmNlczp7InBsb3RseS1jYXJ0by1kYXJrbWF0dGVyIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjonPGEgaHJlZj0iaHR0cHM6Ly9jYXJ0by5jb20vIiB0YXJnZXQ9Il9ibGFuayI+XHhhOSBDQVJUTzwvYT4nLHRpbGVzOlsiaHR0cHM6Ly9jYXJ0b2RiLWJhc2VtYXBzLWMuZ2xvYmFsLnNzbC5mYXN0bHkubmV0L2RhcmtfYWxsL3t6fS97eH0ve3l9LnBuZyJdLHRpbGVTaXplOjI1Nn19LGxheWVyczpbe2lkOiJwbG90bHktY2FydG8tZGFya21hdHRlciIsdHlwZToicmFzdGVyIixzb3VyY2U6InBsb3RseS1jYXJ0by1kYXJrbWF0dGVyIixtaW56b29tOjAsbWF4em9vbToyMn1dfSwic3RhbWVuLXRlcnJhaW4iOntpZDoic3RhbWVuLXRlcnJhaW4iLHZlcnNpb246OCxzb3VyY2VzOnsicGxvdGx5LXN0YW1lbi10ZXJyYWluIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjonTWFwIHRpbGVzIGJ5IDxhIGhyZWY9Imh0dHA6Ly9zdGFtZW4uY29tIj5TdGFtZW4gRGVzaWduPC9hPiwgdW5kZXIgPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wIj5DQyBCWSAzLjA8L2E+IHwgRGF0YSBieSA8YSBocmVmPSJodHRwOi8vb3BlbnN0cmVldG1hcC5vcmciPk9wZW5TdHJlZXRNYXA8L2E+LCB1bmRlciA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodCI+T0RiTDwvYT4uJyx0aWxlczpbImh0dHBzOi8vc3RhbWVuLXRpbGVzLmEuc3NsLmZhc3RseS5uZXQvdGVycmFpbi97en0ve3h9L3t5fS5wbmciXSx0aWxlU2l6ZToyNTZ9fSxsYXllcnM6W3tpZDoicGxvdGx5LXN0YW1lbi10ZXJyYWluIix0eXBlOiJyYXN0ZXIiLHNvdXJjZToicGxvdGx5LXN0YW1lbi10ZXJyYWluIixtaW56b29tOjAsbWF4em9vbToyMn1dfSwic3RhbWVuLXRvbmVyIjp7aWQ6InN0YW1lbi10b25lciIsdmVyc2lvbjo4LHNvdXJjZXM6eyJwbG90bHktc3RhbWVuLXRvbmVyIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjonTWFwIHRpbGVzIGJ5IDxhIGhyZWY9Imh0dHA6Ly9zdGFtZW4uY29tIj5TdGFtZW4gRGVzaWduPC9hPiwgdW5kZXIgPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wIj5DQyBCWSAzLjA8L2E+IHwgRGF0YSBieSA8YSBocmVmPSJodHRwOi8vb3BlbnN0cmVldG1hcC5vcmciPk9wZW5TdHJlZXRNYXA8L2E+LCB1bmRlciA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodCI+T0RiTDwvYT4uJyx0aWxlczpbImh0dHBzOi8vc3RhbWVuLXRpbGVzLmEuc3NsLmZhc3RseS5uZXQvdG9uZXIve3p9L3t4fS97eX0ucG5nIl0sdGlsZVNpemU6MjU2fX0sbGF5ZXJzOlt7aWQ6InBsb3RseS1zdGFtZW4tdG9uZXIiLHR5cGU6InJhc3RlciIsc291cmNlOiJwbG90bHktc3RhbWVuLXRvbmVyIixtaW56b29tOjAsbWF4em9vbToyMn1dfSwic3RhbWVuLXdhdGVyY29sb3IiOntpZDoic3RhbWVuLXdhdGVyY29sb3IiLHZlcnNpb246OCxzb3VyY2VzOnsicGxvdGx5LXN0YW1lbi13YXRlcmNvbG9yIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjonTWFwIHRpbGVzIGJ5IDxhIGhyZWY9Imh0dHA6Ly9zdGFtZW4uY29tIj5TdGFtZW4gRGVzaWduPC9hPiwgdW5kZXIgPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wIj5DQyBCWSAzLjA8L2E+IHwgRGF0YSBieSA8YSBocmVmPSJodHRwOi8vb3BlbnN0cmVldG1hcC5vcmciPk9wZW5TdHJlZXRNYXA8L2E+LCB1bmRlciA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAiPkNDIEJZIFNBPC9hPi4nLHRpbGVzOlsiaHR0cHM6Ly9zdGFtZW4tdGlsZXMuYS5zc2wuZmFzdGx5Lm5ldC93YXRlcmNvbG9yL3t6fS97eH0ve3l9LnBuZyJdLHRpbGVTaXplOjI1Nn19LGxheWVyczpbe2lkOiJwbG90bHktc3RhbWVuLXdhdGVyY29sb3IiLHR5cGU6InJhc3RlciIsc291cmNlOiJwbG90bHktc3RhbWVuLXdhdGVyY29sb3IiLG1pbnpvb206MCxtYXh6b29tOjIyfV19fSxhPU9iamVjdC5rZXlzKG4pO2UuZXhwb3J0cz17cmVxdWlyZWRWZXJzaW9uOiIxLjMuMiIsc3R5bGVVcmxQcmVmaXg6Im1hcGJveDovL3N0eWxlcy9tYXBib3gvIixzdHlsZVVybFN1ZmZpeDoidjkiLHN0eWxlVmFsdWVzTWFwYm94OlsiYmFzaWMiLCJzdHJlZXRzIiwib3V0ZG9vcnMiLCJsaWdodCIsImRhcmsiLCJzYXRlbGxpdGUiLCJzYXRlbGxpdGUtc3RyZWV0cyJdLHN0eWxlVmFsdWVEZmx0OiJiYXNpYyIsc3R5bGVzTm9uTWFwYm94Om4sc3R5bGVWYWx1ZXNOb25NYXBib3g6YSx0cmFjZUxheWVyUHJlZml4OiJwbG90bHktdHJhY2UtbGF5ZXItIixsYXlvdXRMYXllclByZWZpeDoicGxvdGx5LWxheW91dC1sYXllci0iLHdyb25nVmVyc2lvbkVycm9yTXNnOlsiWW91ciBjdXN0b20gcGxvdGx5LmpzIGJ1bmRsZSBpcyBub3QgdXNpbmcgdGhlIGNvcnJlY3QgbWFwYm94LWdsIHZlcnNpb24iLCJQbGVhc2UgaW5zdGFsbCBtYXBib3gtZ2xAMS4zLjIuIl0uam9pbigiXG4iKSxub0FjY2Vzc1Rva2VuRXJyb3JNc2c6WyJNaXNzaW5nIE1hcGJveCBhY2Nlc3MgdG9rZW4uIiwiTWFwYm94IHRyYWNlIHR5cGUgcmVxdWlyZSBhIE1hcGJveCBhY2Nlc3MgdG9rZW4gdG8gYmUgcmVnaXN0ZXJlZC4iLCJGb3IgZXhhbXBsZToiLCIgIFBsb3RseS5wbG90KGdkLCBkYXRhLCBsYXlvdXQsIHsgbWFwYm94QWNjZXNzVG9rZW46ICdteS1hY2Nlc3MtdG9rZW4nIH0pOyIsIk1vcmUgaW5mbyBoZXJlOiBodHRwczovL3d3dy5tYXBib3guY29tL2hlbHAvZGVmaW5lLWFjY2Vzcy10b2tlbi8iXS5qb2luKCJcbiIpLG1pc3NpbmdTdHlsZUVycm9yTXNnOlsiTm8gdmFsaWQgbWFwYm94IHN0eWxlIGZvdW5kLCBwbGVhc2Ugc2V0IGBtYXBib3guc3R5bGVgIHRvIG9uZSBvZjoiLGEuam9pbigiLCAiKSwib3IgcmVnaXN0ZXIgYSBNYXBib3ggYWNjZXNzIHRva2VuIHRvIHVzZSBhIE1hcGJveC1zZXJ2ZWQgc3R5bGUuIl0uam9pbigiXG4iKSxtdWx0aXBsZVRva2Vuc0Vycm9yTXNnOlsiU2V0IG11bHRpcGxlIG1hcGJveCBhY2Nlc3MgdG9rZW4gYWNyb3NzIGRpZmZlcmVudCBtYXBib3ggc3VicGxvdCwiLCJ1c2luZyBmaXJzdCB0b2tlbiBmb3VuZCBhcyBtYXBib3gtZ2wgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGVhY2Nlc3MgdG9rZW5zIG9uIHRoZSBzYW1lIHBhZ2UuIl0uam9pbigiXG4iKSxtYXBPbkVycm9yTXNnOiJNYXBib3ggZXJyb3IuIixtYXBib3hMb2dvOntwYXRoMDoibSAxMC41LDEuMjQgYyAtNS4xMSwwIC05LjI1LDQuMTUgLTkuMjUsOS4yNSAwLDUuMSA0LjE1LDkuMjUgOS4yNSw5LjI1IDUuMSwwIDkuMjUsLTQuMTUgOS4yNSwtOS4yNSAwLC01LjExIC00LjE0LC05LjI1IC05LjI1LC05LjI1IHogbSA0LjM5LDExLjUzIGMgLTEuOTMsMS45MyAtNC43OCwyLjMxIC02LjcsMi4zMSAtMC43LDAgLTEuNDEsLTAuMDUgLTIuMSwtMC4xNiAwLDAgLTEuMDIsLTUuNjQgMi4xNCwtOC44MSAwLjgzLC0wLjgzIDEuOTUsLTEuMjggMy4xMywtMS4yOCAxLjI3LDAgMi40OSwwLjUxIDMuMzksMS40MiAxLjg0LDEuODQgMS44OSw0Ljc1IDAuMTQsNi41MiB6IixwYXRoMToiTSAxMC41LC0wLjAxIEMgNC43LC0wLjAxIDAsNC43IDAsMTAuNDkgYyAwLDUuNzkgNC43LDEwLjUgMTAuNSwxMC41IDUuOCwwIDEwLjUsLTQuNyAxMC41LC0xMC41IEMgMjAuOTksNC43IDE2LjMsLTAuMDEgMTAuNSwtMC4wMSBaIG0gMCwxOS43NSBjIC01LjExLDAgLTkuMjUsLTQuMTUgLTkuMjUsLTkuMjUgMCwtNS4xIDQuMTQsLTkuMjYgOS4yNSwtOS4yNiA1LjExLDAgOS4yNSw0LjE1IDkuMjUsOS4yNSAwLDUuMTMgLTQuMTQsOS4yNiAtOS4yNSw5LjI2IHoiLHBhdGgyOiJNIDE0Ljc0LDYuMjUgQyAxMi45LDQuNDEgOS45OCw0LjM1IDguMjMsNi4xIDUuMDcsOS4yNyA2LjA5LDE0LjkxIDYuMDksMTQuOTEgYyAwLDAgNS42NCwxLjAyIDguODEsLTIuMTQgQyAxNi42NCwxMSAxNi41OSw4LjA5IDE0Ljc0LDYuMjUgWiBtIC0yLjI3LDQuMDkgLTAuOTEsMS44NyAtMC45LC0xLjg3IC0xLjg2LC0wLjkxIDEuODYsLTAuOSAwLjksLTEuODcgMC45MSwxLjg3IDEuODYsMC45IHoiLHBvbHlnb246IjExLjU2LDEyLjIxIDEwLjY2LDEwLjM0IDguOCw5LjQzIDEwLjY2LDguNTMgMTEuNTYsNi42NiAxMi40Nyw4LjUzIDE0LjMzLDkuNDMgMTIuNDcsMTAuMzQifSxzdHlsZVJ1bGVzOnttYXA6Im92ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTsiLCJtaXNzaW5nLWNzcyI6ImRpc3BsYXk6bm9uZTsiLGNhbmFyeToiYmFja2dyb3VuZC1jb2xvcjpzYWxtb247IiwiY3RybC1ib3R0b20tbGVmdCI6InBvc2l0aW9uOiBhYnNvbHV0ZTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDI7IGJvdHRvbTogMDsgbGVmdDogMDsiLCJjdHJsLWJvdHRvbS1yaWdodCI6InBvc2l0aW9uOiBhYnNvbHV0ZTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDI7IHJpZ2h0OiAwOyBib3R0b206IDA7IixjdHJsOiJjbGVhcjogYm90aDsgcG9pbnRlci1ldmVudHM6IGF1dG87IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOyIsImN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3QgLm1hcGJveGdsLWN0cmwtYXR0cmliLWlubmVyIjoiZGlzcGxheTogbm9uZTsiLCJjdHJsLWF0dHJpYi5tYXBib3hnbC1jb21wYWN0OmhvdmVyIC5tYXBib3hnbC1jdHJsLWF0dHJpYi1pbm5lciI6ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tdG9wOjJweCIsImN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Q6aG92ZXIiOiJwYWRkaW5nOiAycHggMjRweCAycHggNHB4OyB2aXNpYmlsaXR5OiB2aXNpYmxlOyBtYXJnaW4tdG9wOiA2cHg7IiwiY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdDo6YWZ0ZXIiOidjb250ZW50OiAiIjsgY3Vyc29yOiBwb2ludGVyOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJhY2tncm91bmQtaW1hZ2U6IHVybChcJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIlM0UgJTNDcGF0aCBmaWxsPSIlMjMzMzMzMzMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQsMTBhNiw2IDAgMSwwIDEyLDBhNiw2IDAgMSwwIC0xMiwwIE05LDdhMSwxIDAgMSwwIDIsMGExLDEgMCAxLDAgLTIsMCBNOSwxMGExLDEgMCAxLDEgMiwwbDAsM2ExLDEgMCAxLDEgLTIsMCIvJTNFICUzQy9zdmclM0VcJyk7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgd2lkdGg6IDI0cHg7IGhlaWdodDogMjRweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLXJhZGl1czogMTJweDsnLCJjdHJsLWF0dHJpYi5tYXBib3hnbC1jb21wYWN0IjoibWluLWhlaWdodDogMjBweDsgcGFkZGluZzogMDsgbWFyZ2luOiAxMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDNweCAxMnB4IDEycHggM3B4OyIsImN0cmwtYm90dG9tLXJpZ2h0ID4gLm1hcGJveGdsLWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Q6OmFmdGVyIjoiYm90dG9tOiAwOyByaWdodDogMCIsImN0cmwtYm90dG9tLWxlZnQgPiAubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdDo6YWZ0ZXIiOiJib3R0b206IDA7IGxlZnQ6IDAiLCJjdHJsLWJvdHRvbS1sZWZ0IC5tYXBib3hnbC1jdHJsIjoibWFyZ2luOiAwIDAgMTBweCAxMHB4OyBmbG9hdDogbGVmdDsiLCJjdHJsLWJvdHRvbS1yaWdodCAubWFwYm94Z2wtY3RybCI6Im1hcmdpbjogMCAxMHB4IDEwcHggMDsgZmxvYXQ6IHJpZ2h0OyIsImN0cmwtYXR0cmliIjoiY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43NSk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMnB4IiwiY3RybC1hdHRyaWIgYSI6ImNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNzUpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweCIsImN0cmwtYXR0cmliIGE6aG92ZXIiOiJjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiwiY3RybC1hdHRyaWIgLm1hcGJveC1pbXByb3ZlLW1hcCI6ImZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW4tbGVmdDogMnB4OyIsImF0dHJpYi1lbXB0eSI6ImRpc3BsYXk6IG5vbmU7IiwiY3RybC1sb2dvIjonZGlzcGxheTpibG9jazsgd2lkdGg6IDIxcHg7IGhlaWdodDogMjFweDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDP3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/JTNFICUzQ3N2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDIxIDIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMSAyMTsiIHhtbDpzcGFjZT0icHJlc2VydmUiJTNFJTNDZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDAuMDEpIiUzRSUzQ3BhdGggZD0ibSAxMC41LDEuMjQgYyAtNS4xMSwwIC05LjI1LDQuMTUgLTkuMjUsOS4yNSAwLDUuMSA0LjE1LDkuMjUgOS4yNSw5LjI1IDUuMSwwIDkuMjUsLTQuMTUgOS4yNSwtOS4yNSAwLC01LjExIC00LjE0LC05LjI1IC05LjI1LC05LjI1IHogbSA0LjM5LDExLjUzIGMgLTEuOTMsMS45MyAtNC43OCwyLjMxIC02LjcsMi4zMSAtMC43LDAgLTEuNDEsLTAuMDUgLTIuMSwtMC4xNiAwLDAgLTEuMDIsLTUuNjQgMi4xNCwtOC44MSAwLjgzLC0wLjgzIDEuOTUsLTEuMjggMy4xMywtMS4yOCAxLjI3LDAgMi40OSwwLjUxIDMuMzksMS40MiAxLjg0LDEuODQgMS44OSw0Ljc1IDAuMTQsNi41MiB6IiBzdHlsZT0ib3BhY2l0eTowLjk7ZmlsbDolMjNmZmZmZmY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3IiBjbGFzcz0ic3QwIi8lM0UlM0NwYXRoIGQ9Ik0gMTAuNSwtMC4wMSBDIDQuNywtMC4wMSAwLDQuNyAwLDEwLjQ5IGMgMCw1Ljc5IDQuNywxMC41IDEwLjUsMTAuNSA1LjgsMCAxMC41LC00LjcgMTAuNSwtMTAuNSBDIDIwLjk5LDQuNyAxNi4zLC0wLjAxIDEwLjUsLTAuMDEgWiBtIDAsMTkuNzUgYyAtNS4xMSwwIC05LjI1LC00LjE1IC05LjI1LC05LjI1IDAsLTUuMSA0LjE0LC05LjI2IDkuMjUsLTkuMjYgNS4xMSwwIDkuMjUsNC4xNSA5LjI1LDkuMjUgMCw1LjEzIC00LjE0LDkuMjYgLTkuMjUsOS4yNiB6IiBzdHlsZT0ib3BhY2l0eTowLjM1O2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyIgY2xhc3M9InN0MSIvJTNFJTNDcGF0aCBkPSJNIDE0Ljc0LDYuMjUgQyAxMi45LDQuNDEgOS45OCw0LjM1IDguMjMsNi4xIDUuMDcsOS4yNyA2LjA5LDE0LjkxIDYuMDksMTQuOTEgYyAwLDAgNS42NCwxLjAyIDguODEsLTIuMTQgQyAxNi42NCwxMSAxNi41OSw4LjA5IDE0Ljc0LDYuMjUgWiBtIC0yLjI3LDQuMDkgLTAuOTEsMS44NyAtMC45LC0xLjg3IC0xLjg2LC0wLjkxIDEuODYsLTAuOSAwLjksLTEuODcgMC45MSwxLjg3IDEuODYsMC45IHoiIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZW5hYmxlLWJhY2tncm91bmQ6bmV3IiBjbGFzcz0ic3QxIi8lM0UlM0Nwb2x5Z29uIHBvaW50cz0iMTEuNTYsMTIuMjEgMTAuNjYsMTAuMzQgOC44LDkuNDMgMTAuNjYsOC41MyAxMS41Niw2LjY2IDEyLjQ3LDguNTMgMTQuMzMsOS40MyAxMi40NywxMC4zNCAiIHN0eWxlPSJvcGFjaXR5OjAuOTtmaWxsOiUyM2ZmZmZmZjtlbmFibGUtYmFja2dyb3VuZDpuZXciIGNsYXNzPSJzdDAiLyUzRSUzQy9nJTNFJTNDL3N2ZyUzRVwnKSd9fX0se31dLDgxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnNwbGl0KCIgIiksYT1yWzBdLGk9clsxXSxvPW4uaXNBcnJheU9yVHlwZWRBcnJheShlKT9uLm1lYW4oZSk6ZSxzPS41K28vMTAwLGw9MS41K28vMTAwLGM9WyIiLCIiXSx1PVswLDBdO3N3aXRjaChhKXtjYXNlInRvcCI6Y1swXT0idG9wIix1WzFdPS1sO2JyZWFrO2Nhc2UiYm90dG9tIjpjWzBdPSJib3R0b20iLHVbMV09bH1zd2l0Y2goaSl7Y2FzZSJsZWZ0IjpjWzFdPSJyaWdodCIsdVswXT0tczticmVhaztjYXNlInJpZ2h0IjpjWzFdPSJsZWZ0Iix1WzBdPXN9cmV0dXJue2FuY2hvcjpjWzBdJiZjWzFdP2Muam9pbigiLSIpOmNbMF0/Y1swXTpjWzFdP2NbMV06ImNlbnRlciIsb2Zmc2V0OnV9fX0seyIuLi8uLi9saWIiOjcxN31dLDgyMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJtYXBib3gtZ2wiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiKS5nZXRTdWJwbG90Q2FsY0RhdGEsbz10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpLHM9dCgiZDMiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGM9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksdT10KCIuL21hcGJveCIpLGg9ci5jb25zdGFudHM9dCgiLi9jb25zdGFudHMiKTtmdW5jdGlvbiBmKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmKC0xIT09aC5zdHlsZVZhbHVlc01hcGJveC5pbmRleE9mKHQpfHwwPT09dC5pbmRleE9mKCJtYXBib3g6Ly8iKSl9ci5uYW1lPSJtYXBib3giLHIuYXR0cj0ic3VicGxvdCIsci5pZFJvb3Q9Im1hcGJveCIsci5pZFJlZ2V4PXIuYXR0clJlZ2V4PWEuY291bnRlclJlZ2V4KCJtYXBib3giKSxyLmF0dHJpYnV0ZXM9e3N1YnBsb3Q6e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDoibWFwYm94IixlZGl0VHlwZToiY2FsYyJ9fSxyLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHIuc3VwcGx5TGF5b3V0RGVmYXVsdHM9dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxyLnBsb3Q9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPXQuY2FsY2RhdGEsbz1lLl9zdWJwbG90cy5tYXBib3g7aWYobi52ZXJzaW9uIT09aC5yZXF1aXJlZFZlcnNpb24pdGhyb3cgbmV3IEVycm9yKGgud3JvbmdWZXJzaW9uRXJyb3JNc2cpO3ZhciBzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dDtpZigiIj09PXQuX2NvbnRleHQubWFwYm94QWNjZXNzVG9rZW4pcmV0dXJuIiI7Zm9yKHZhciBuPVtdLGk9W10sbz0hMSxzPSExLGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9cltlW2xdXSx1PWMuYWNjZXNzdG9rZW47ZihjLnN0eWxlKSYmKHU/YS5wdXNoVW5pcXVlKG4sdSk6KGYoYy5faW5wdXQuc3R5bGUpJiYoYS5lcnJvcigiVXNlcyBNYXBib3ggbWFwIHN0eWxlLCBidXQgZGlkIG5vdCBzZXQgYW4gYWNjZXNzIHRva2VuLiIpLG89ITApLHM9ITApKSx1JiZhLnB1c2hVbmlxdWUoaSx1KX1pZihzKXt2YXIgcD1vP2gubm9BY2Nlc3NUb2tlbkVycm9yTXNnOmgubWlzc2luZ1N0eWxlRXJyb3JNc2c7dGhyb3cgYS5lcnJvcihwKSxuZXcgRXJyb3IocCl9cmV0dXJuIG4ubGVuZ3RoPyhuLmxlbmd0aD4xJiZhLndhcm4oaC5tdWx0aXBsZVRva2Vuc0Vycm9yTXNnKSxuWzBdKTooaS5sZW5ndGgmJmEubG9nKFsiTGlzdGVkIG1hcGJveCBhY2Nlc3MgdG9rZW4ocykiLGkuam9pbigiLCIpLCJidXQgZGlkIG5vdCB1c2UgYSBNYXBib3ggbWFwIHN0eWxlLCBpZ25vcmluZyB0b2tlbihzKS4iXS5qb2luKCIgIikpLCIiKX0odCxvKTtuLmFjY2Vzc1Rva2VuPXM7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspe3ZhciBjPW9bbF0scD1pKHIsIm1hcGJveCIsYyksZD1lW2NdLGc9ZC5fc3VicGxvdDtnfHwoZz1uZXcgdSh0LGMpLGVbY10uX3N1YnBsb3Q9ZyksZy52aWV3SW5pdGlhbHx8KGcudmlld0luaXRpYWw9e2NlbnRlcjphLmV4dGVuZEZsYXQoe30sZC5jZW50ZXIpLHpvb206ZC56b29tLGJlYXJpbmc6ZC5iZWFyaW5nLHBpdGNoOmQucGl0Y2h9KSxnLnBsb3QocCxlLHQuX3Byb21pc2VzKX19LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhPW4uX3N1YnBsb3RzLm1hcGJveHx8W10saT0wO2k8YS5sZW5ndGg7aSsrKXt2YXIgbz1hW2ldOyFlW29dJiZuW29dLl9zdWJwbG90JiZuW29dLl9zdWJwbG90LmRlc3Ryb3koKX19LHIudG9TVkc9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5tYXBib3gsbj1lLl9zaXplLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGk9ZVtyW2FdXSx1PWkuZG9tYWluLGY9aS5fc3VicGxvdC50b0ltYWdlKCJwbmciKTtlLl9nbGltYWdlcy5hcHBlbmQoInN2ZzppbWFnZSIpLmF0dHIoe3htbG5zOm8uc3ZnLCJ4bGluazpocmVmIjpmLHg6bi5sK24udyp1LnhbMF0seTpuLnQrbi5oKigxLXUueVsxXSksd2lkdGg6bi53Kih1LnhbMV0tdS54WzBdKSxoZWlnaHQ6bi5oKih1LnlbMV0tdS55WzBdKSxwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pO3ZhciBwPXMuc2VsZWN0KGkuX3N1YnBsb3QuZGl2KTtpZighKG51bGw9PT1wLnNlbGVjdCgiLm1hcGJveGdsLWN0cmwtbG9nbyIpLm5vZGUoKS5vZmZzZXRQYXJlbnQpKXt2YXIgZD1lLl9nbGltYWdlcy5hcHBlbmQoImciKTtkLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhuLmwrbi53KnUueFswXSsxMCkrIiwgIisobi50K24uaCooMS11LnlbMF0pLTMxKSsiKSIpLGQuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsaC5tYXBib3hMb2dvLnBhdGgwKS5zdHlsZSh7b3BhY2l0eTouOSxmaWxsOiIjZmZmZmZmIiwiZW5hYmxlLWJhY2tncm91bmQiOiJuZXcifSksZC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixoLm1hcGJveExvZ28ucGF0aDEpLnN0eWxlKCJvcGFjaXR5IiwuMzUpLnN0eWxlKCJlbmFibGUtYmFja2dyb3VuZCIsIm5ldyIpLGQuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsaC5tYXBib3hMb2dvLnBhdGgyKS5zdHlsZSgib3BhY2l0eSIsLjM1KS5zdHlsZSgiZW5hYmxlLWJhY2tncm91bmQiLCJuZXciKSxkLmFwcGVuZCgicG9seWdvbiIpLmF0dHIoInBvaW50cyIsaC5tYXBib3hMb2dvLnBvbHlnb24pLnN0eWxlKHtvcGFjaXR5Oi45LGZpbGw6IiNmZmZmZmYiLCJlbmFibGUtYmFja2dyb3VuZCI6Im5ldyJ9KX12YXIgZz1wLnNlbGVjdCgiLm1hcGJveGdsLWN0cmwtYXR0cmliIikudGV4dCgpLnJlcGxhY2UoIkltcHJvdmUgdGhpcyBtYXAiLCIiKSx2PWUuX2dsaW1hZ2VzLmFwcGVuZCgiZyIpLG09di5hcHBlbmQoInRleHQiKTttLnRleHQoZykuY2xhc3NlZCgic3RhdGljLWF0dHJpYnV0aW9uIiwhMCkuYXR0cih7ImZvbnQtc2l6ZSI6MTIsImZvbnQtZmFtaWx5IjoiQXJpYWwiLGNvbG9yOiJyZ2JhKDAsIDAsIDAsIDAuNzUpIiwidGV4dC1hbmNob3IiOiJlbmQiLCJkYXRhLXVuZm9ybWF0dGVkIjpnfSk7dmFyIHk9bC5iQm94KG0ubm9kZSgpKSx4PW4udyoodS54WzFdLXUueFswXSk7aWYoeS53aWR0aD54LzIpe3ZhciBiPWcuc3BsaXQoInwiKS5qb2luKCI8YnI+Iik7bS50ZXh0KGIpLmF0dHIoImRhdGEtdW5mb3JtYXR0ZWQiLGIpLmNhbGwoYy5jb252ZXJ0VG9Uc3BhbnMsdCkseT1sLmJCb3gobS5ub2RlKCkpfW0uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0zLCAiKyg4LXkuaGVpZ2h0KSsiKSIpLHYuaW5zZXJ0KCJyZWN0IiwiLnN0YXRpYy1hdHRyaWJ1dGlvbiIpLmF0dHIoe3g6LXkud2lkdGgtNix5Oi15LmhlaWdodC0zLHdpZHRoOnkud2lkdGgrNixoZWlnaHQ6eS5oZWlnaHQrMyxmaWxsOiJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpIn0pO3ZhciBfPTE7eS53aWR0aCs2PngmJihfPXgvKHkud2lkdGgrNikpO3ZhciB3PVtuLmwrbi53KnUueFsxXSxuLnQrbi5oKigxLXUueVswXSldO3YuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrd1swXSsiLCIrd1sxXSsiKSBzY2FsZSgiK18rIikiKX19LHIudXBkYXRlRng9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5tYXBib3gsbj0wO248ci5sZW5ndGg7bisrKXtlW3Jbbl1dLl9zdWJwbG90LnVwZGF0ZUZ4KGUpfX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiOjgwMCwiLi9jb25zdGFudHMiOjgxOCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODIyLCIuL2xheW91dF9kZWZhdWx0cyI6ODIzLCIuL21hcGJveCI6ODI0LGQzOjE2NSwibWFwYm94LWdsIjo0Mjh9XSw4MjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2NvbnZlcnRfdGV4dF9vcHRzIiksaT10KCIuL2NvbnN0YW50cyIpO2Z1bmN0aW9uIG8odCxlKXt0aGlzLnN1YnBsb3Q9dCx0aGlzLnVpZD10LnVpZCsiLSIrZSx0aGlzLmluZGV4PWUsdGhpcy5pZFNvdXJjZT0ic291cmNlLSIrdGhpcy51aWQsdGhpcy5pZExheWVyPWkubGF5b3V0TGF5ZXJQcmVmaXgrdGhpcy51aWQsdGhpcy5zb3VyY2VUeXBlPW51bGwsdGhpcy5zb3VyY2U9bnVsbCx0aGlzLmxheWVyVHlwZT1udWxsLHRoaXMuYmVsb3c9bnVsbCx0aGlzLnZpc2libGU9ITF9dmFyIHM9by5wcm90b3R5cGU7ZnVuY3Rpb24gbCh0KXtpZighdC52aXNpYmxlKXJldHVybiExO3ZhciBlPXQuc291cmNlO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKCJzdHJpbmciIT10eXBlb2YgZVtyXXx8MD09PWVbcl0ubGVuZ3RoKXJldHVybiExO3JldHVybiEwfXJldHVybiBuLmlzUGxhaW5PYmplY3QoZSl8fCJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MH1mdW5jdGlvbiBjKHQpe3ZhciBlPXt9LHI9e307c3dpdGNoKHQudHlwZSl7Y2FzZSJjaXJjbGUiOm4uZXh0ZW5kRmxhdChyLHsiY2lyY2xlLXJhZGl1cyI6dC5jaXJjbGUucmFkaXVzLCJjaXJjbGUtY29sb3IiOnQuY29sb3IsImNpcmNsZS1vcGFjaXR5Ijp0Lm9wYWNpdHl9KTticmVhaztjYXNlImxpbmUiOm4uZXh0ZW5kRmxhdChyLHsibGluZS13aWR0aCI6dC5saW5lLndpZHRoLCJsaW5lLWNvbG9yIjp0LmNvbG9yLCJsaW5lLW9wYWNpdHkiOnQub3BhY2l0eSwibGluZS1kYXNoYXJyYXkiOnQubGluZS5kYXNofSk7YnJlYWs7Y2FzZSJmaWxsIjpuLmV4dGVuZEZsYXQocix7ImZpbGwtY29sb3IiOnQuY29sb3IsImZpbGwtb3V0bGluZS1jb2xvciI6dC5maWxsLm91dGxpbmVjb2xvciwiZmlsbC1vcGFjaXR5Ijp0Lm9wYWNpdHl9KTticmVhaztjYXNlInN5bWJvbCI6dmFyIGk9dC5zeW1ib2wsbz1hKGkudGV4dHBvc2l0aW9uLGkuaWNvbnNpemUpO24uZXh0ZW5kRmxhdChlLHsiaWNvbi1pbWFnZSI6aS5pY29uKyItMTUiLCJpY29uLXNpemUiOmkuaWNvbnNpemUvMTAsInRleHQtZmllbGQiOmkudGV4dCwidGV4dC1zaXplIjppLnRleHRmb250LnNpemUsInRleHQtYW5jaG9yIjpvLmFuY2hvciwidGV4dC1vZmZzZXQiOm8ub2Zmc2V0LCJzeW1ib2wtcGxhY2VtZW50IjppLnBsYWNlbWVudH0pLG4uZXh0ZW5kRmxhdChyLHsiaWNvbi1jb2xvciI6dC5jb2xvciwidGV4dC1jb2xvciI6aS50ZXh0Zm9udC5jb2xvciwidGV4dC1vcGFjaXR5Ijp0Lm9wYWNpdHl9KTticmVhaztjYXNlInJhc3RlciI6bi5leHRlbmRGbGF0KHIseyJyYXN0ZXItZmFkZS1kdXJhdGlvbiI6MCwicmFzdGVyLW9wYWNpdHkiOnQub3BhY2l0eX0pfXJldHVybntsYXlvdXQ6ZSxwYWludDpyfX1zLnVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnZpc2libGU/dGhpcy5uZWVkc05ld0ltYWdlKHQpP3RoaXMudXBkYXRlSW1hZ2UodCk6dGhpcy5uZWVkc05ld1NvdXJjZSh0KT8odGhpcy5yZW1vdmVMYXllcigpLHRoaXMudXBkYXRlU291cmNlKHQpLHRoaXMudXBkYXRlTGF5ZXIodCkpOnRoaXMubmVlZHNOZXdMYXllcih0KT90aGlzLnVwZGF0ZUxheWVyKHQpOnRoaXMudXBkYXRlU3R5bGUodCk6KHRoaXMudXBkYXRlU291cmNlKHQpLHRoaXMudXBkYXRlTGF5ZXIodCkpLHRoaXMudmlzaWJsZT1sKHQpfSxzLm5lZWRzTmV3SW1hZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3VicGxvdC5tYXAuZ2V0U291cmNlKHRoaXMuaWRTb3VyY2UpJiYiaW1hZ2UiPT09dGhpcy5zb3VyY2VUeXBlJiYiaW1hZ2UiPT09dC5zb3VyY2V0eXBlJiYodGhpcy5zb3VyY2UhPT10LnNvdXJjZXx8SlNPTi5zdHJpbmdpZnkodGhpcy5jb29yZGluYXRlcykhPT1KU09OLnN0cmluZ2lmeSh0LmNvb3JkaW5hdGVzKSl9LHMubmVlZHNOZXdTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc291cmNlVHlwZSE9PXQuc291cmNldHlwZXx8dGhpcy5zb3VyY2UhPT10LnNvdXJjZXx8dGhpcy5sYXllclR5cGUhPT10LnR5cGV9LHMubmVlZHNOZXdMYXllcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sYXllclR5cGUhPT10LnR5cGV8fHRoaXMuYmVsb3chPT10aGlzLnN1YnBsb3QuYmVsb3dMb29rdXBbImxheW91dC0iK3RoaXMuaW5kZXhdfSxzLnVwZGF0ZUltYWdlPWZ1bmN0aW9uKHQpe3RoaXMuc3VicGxvdC5tYXAuZ2V0U291cmNlKHRoaXMuaWRTb3VyY2UpLnVwZGF0ZUltYWdlKHt1cmw6dC5zb3VyY2UsY29vcmRpbmF0ZXM6dC5jb29yZGluYXRlc30pfSxzLnVwZGF0ZVNvdXJjZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnN1YnBsb3QubWFwO2lmKGUuZ2V0U291cmNlKHRoaXMuaWRTb3VyY2UpJiZlLnJlbW92ZVNvdXJjZSh0aGlzLmlkU291cmNlKSx0aGlzLnNvdXJjZVR5cGU9dC5zb3VyY2V0eXBlLHRoaXMuc291cmNlPXQuc291cmNlLGwodCkpe3ZhciByPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5zb3VyY2V0eXBlLG49dC5zb3VyY2UsYT17dHlwZTpyfTsiZ2VvanNvbiI9PT1yP2U9ImRhdGEiOiJ2ZWN0b3IiPT09cj9lPSJzdHJpbmciPT10eXBlb2Ygbj8idXJsIjoidGlsZXMiOiJyYXN0ZXIiPT09cj8oZT0idGlsZXMiLGEudGlsZVNpemU9MjU2KToiaW1hZ2UiPT09ciYmKGU9InVybCIsYS5jb29yZGluYXRlcz10LmNvb3JkaW5hdGVzKTthW2VdPW4sdC5zb3VyY2VhdHRyaWJ1dGlvbiYmKGEuYXR0cmlidXRpb249dC5zb3VyY2VhdHRyaWJ1dGlvbik7cmV0dXJuIGF9KHQpO2UuYWRkU291cmNlKHRoaXMuaWRTb3VyY2Uscil9fSxzLnVwZGF0ZUxheWVyPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5zdWJwbG90LG49Yyh0KSxhPXRoaXMuc3VicGxvdC5iZWxvd0xvb2t1cFsibGF5b3V0LSIrdGhpcy5pbmRleF07aWYoInRyYWNlcyI9PT1hKWZvcih2YXIgbz1yLmdldE1hcExheWVycygpLHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIHU9b1tzXS5pZDtpZigic3RyaW5nIj09dHlwZW9mIHUmJjA9PT11LmluZGV4T2YoaS50cmFjZUxheWVyUHJlZml4KSl7ZT11O2JyZWFrfX1lbHNlIGU9YTt0aGlzLnJlbW92ZUxheWVyKCksbCh0KSYmci5hZGRMYXllcih7aWQ6dGhpcy5pZExheWVyLHNvdXJjZTp0aGlzLmlkU291cmNlLCJzb3VyY2UtbGF5ZXIiOnQuc291cmNlbGF5ZXJ8fCIiLHR5cGU6dC50eXBlLG1pbnpvb206dC5taW56b29tLG1heHpvb206dC5tYXh6b29tLGxheW91dDpuLmxheW91dCxwYWludDpuLnBhaW50fSxlKSx0aGlzLmxheWVyVHlwZT10LnR5cGUsdGhpcy5iZWxvdz1hfSxzLnVwZGF0ZVN0eWxlPWZ1bmN0aW9uKHQpe2lmKGwodCkpe3ZhciBlPWModCk7dGhpcy5zdWJwbG90LnNldE9wdGlvbnModGhpcy5pZExheWVyLCJzZXRMYXlvdXRQcm9wZXJ0eSIsZS5sYXlvdXQpLHRoaXMuc3VicGxvdC5zZXRPcHRpb25zKHRoaXMuaWRMYXllciwic2V0UGFpbnRQcm9wZXJ0eSIsZS5wYWludCl9fSxzLnJlbW92ZUxheWVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdWJwbG90Lm1hcDt0LmdldExheWVyKHRoaXMuaWRMYXllcikmJnQucmVtb3ZlTGF5ZXIodGhpcy5pZExheWVyKX0scy5kaXNwb3NlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdWJwbG90Lm1hcDt0LmdldExheWVyKHRoaXMuaWRMYXllcikmJnQucmVtb3ZlTGF5ZXIodGhpcy5pZExheWVyKSx0LmdldFNvdXJjZSh0aGlzLmlkU291cmNlKSYmdC5yZW1vdmVTb3VyY2UodGhpcy5pZFNvdXJjZSl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49bmV3IG8odCxlKTtyZXR1cm4gbi51cGRhdGUociksbn19LHsiLi4vLi4vbGliIjo3MTcsIi4vY29uc3RhbnRzIjo4MTgsIi4vY29udmVydF90ZXh0X29wdHMiOjgxOX1dLDgyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKS5kZWZhdWx0TGluZSxpPXQoIi4uL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbz10KCIuLi9mb250X2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL2F0dHJpYnV0ZXMiKS50ZXh0cG9zaXRpb24sbD10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsYz10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXksdT10KCIuL2NvbnN0YW50cyIpLGg9byh7fSk7aC5mYW1pbHkuZGZsdD0iT3BlbiBTYW5zIFJlZ3VsYXIsIEFyaWFsIFVuaWNvZGUgTVMgUmVndWxhciIsKGUuZXhwb3J0cz1sKHtfYXJyYXlBdHRyUmVnZXhwczpbbi5jb3VudGVyUmVnZXgoIm1hcGJveCIsIi5sYXllcnMiLCEwKV0sZG9tYWluOmkoe25hbWU6Im1hcGJveCJ9KSxhY2Nlc3N0b2tlbjp7dmFsVHlwZToic3RyaW5nIixub0JsYW5rOiEwLHN0cmljdDohMH0sc3R5bGU6e3ZhbFR5cGU6ImFueSIsdmFsdWVzOnUuc3R5bGVWYWx1ZXNNYXBib3guY29uY2F0KHUuc3R5bGVWYWx1ZXNOb25NYXBib3gpLGRmbHQ6dS5zdHlsZVZhbHVlRGZsdH0sY2VudGVyOntsb246e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowfSxsYXQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowfX0sem9vbTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjF9LGJlYXJpbmc6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowfSxwaXRjaDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjB9LGxheWVyczpjKCJsYXllciIse3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHNvdXJjZXR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImdlb2pzb24iLCJ2ZWN0b3IiLCJyYXN0ZXIiLCJpbWFnZSJdLGRmbHQ6Imdlb2pzb24ifSxzb3VyY2U6e3ZhbFR5cGU6ImFueSJ9LHNvdXJjZWxheWVyOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiJ9LHNvdXJjZWF0dHJpYnV0aW9uOnt2YWxUeXBlOiJzdHJpbmcifSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjaXJjbGUiLCJsaW5lIiwiZmlsbCIsInN5bWJvbCIsInJhc3RlciJdLGRmbHQ6ImNpcmNsZSJ9LGNvb3JkaW5hdGVzOnt2YWxUeXBlOiJhbnkifSxiZWxvdzp7dmFsVHlwZToic3RyaW5nIn0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmF9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfSxtaW56b29tOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoyNCxkZmx0OjB9LG1heHpvb206e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjI0LGRmbHQ6MjR9LGNpcmNsZTp7cmFkaXVzOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MTV9fSxsaW5lOnt3aWR0aDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjJ9LGRhc2g6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifX0sZmlsbDp7b3V0bGluZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDphfX0sc3ltYm9sOntpY29uOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6Im1hcmtlciJ9LGljb25zaXplOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MTB9LHRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIn0scGxhY2VtZW50Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwb2ludCIsImxpbmUiLCJsaW5lLWNlbnRlciJdLGRmbHQ6InBvaW50In0sdGV4dGZvbnQ6aCx0ZXh0cG9zaXRpb246bi5leHRlbmRGbGF0KHt9LHMse2FycmF5T2s6ITF9KX19KX0sInBsb3QiLCJmcm9tLXJvb3QiKSkudWlyZXZpc2lvbj17dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi90cmFjZXMvc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwLCIuLi9kb21haW4iOjc5MCwiLi4vZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4vY29uc3RhbnRzIjo4MTh9XSw4MjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zdWJwbG90X2RlZmF1bHRzIiksaT10KCIuLi9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxvPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBzKHQsZSxyLG4pe3IoImFjY2Vzc3Rva2VuIixuLmFjY2Vzc1Rva2VuKSxyKCJzdHlsZSIpLHIoImNlbnRlci5sb24iKSxyKCJjZW50ZXIubGF0Iikscigiem9vbSIpLHIoImJlYXJpbmciKSxyKCJwaXRjaCIpLGkodCxlLHtuYW1lOiJsYXllcnMiLGhhbmRsZUl0ZW1EZWZhdWx0czpsfSksZS5faW5wdXQ9dH1mdW5jdGlvbiBsKHQsZSl7ZnVuY3Rpb24gcihyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsby5sYXllcnMscixhKX1pZihyKCJ2aXNpYmxlIikpe3ZhciBhLGk9cigic291cmNldHlwZSIpLHM9InJhc3RlciI9PT1pfHwiaW1hZ2UiPT09aTtyKCJzb3VyY2UiKSxyKCJzb3VyY2VhdHRyaWJ1dGlvbiIpLCJ2ZWN0b3IiPT09aSYmcigic291cmNlbGF5ZXIiKSwiaW1hZ2UiPT09aSYmcigiY29vcmRpbmF0ZXMiKSxzJiYoYT0icmFzdGVyIik7dmFyIGw9cigidHlwZSIsYSk7cyYmInJhc3RlciIhPT1sJiYobD1lLnR5cGU9InJhc3RlciIsbi5sb2coIlNvdXJjZSB0eXBlcyAqcmFzdGVyKiBhbmQgKmltYWdlKiBtdXN0IGRyYXduICpyYXN0ZXIqIGxheWVyIHR5cGUuIikpLHIoImJlbG93IikscigiY29sb3IiKSxyKCJvcGFjaXR5IikscigibWluem9vbSIpLHIoIm1heHpvb20iKSwiY2lyY2xlIj09PWwmJnIoImNpcmNsZS5yYWRpdXMiKSwibGluZSI9PT1sJiYocigibGluZS53aWR0aCIpLHIoImxpbmUuZGFzaCIpKSwiZmlsbCI9PT1sJiZyKCJmaWxsLm91dGxpbmVjb2xvciIpLCJzeW1ib2wiPT09bCYmKHIoInN5bWJvbC5pY29uIikscigic3ltYm9sLmljb25zaXplIikscigic3ltYm9sLnRleHQiKSxuLmNvZXJjZUZvbnQociwic3ltYm9sLnRleHRmb250Iikscigic3ltYm9sLnRleHRwb3NpdGlvbiIpLHIoInN5bWJvbC5wbGFjZW1lbnQiKSl9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7YSh0LGUscix7dHlwZToibWFwYm94IixhdHRyaWJ1dGVzOm8saGFuZGxlRGVmYXVsdHM6cyxwYXJ0aXRpb246InkiLGFjY2Vzc1Rva2VuOmUuX21hcGJveEFjY2Vzc1Rva2VufSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi4vc3VicGxvdF9kZWZhdWx0cyI6ODQwLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo4MjJ9XSw4MjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgibWFwYm94LWdsIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiKSxzPXQoIi4uLy4uL3JlZ2lzdHJ5IiksbD10KCIuLi9jYXJ0ZXNpYW4vYXhlcyIpLGM9dCgiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCIpLHU9dCgiLi4vY2FydGVzaWFuL3NlbGVjdCIpLnByZXBTZWxlY3QsaD10KCIuLi9jYXJ0ZXNpYW4vc2VsZWN0Iikuc2VsZWN0T25DbGljayxmPXQoIi4vY29uc3RhbnRzIikscD10KCIuL2xheWVycyIpO2Z1bmN0aW9uIGQodCxlKXt0aGlzLmlkPWUsdGhpcy5nZD10O3ZhciByPXQuX2Z1bGxMYXlvdXQsbj10Ll9jb250ZXh0O3RoaXMuY29udGFpbmVyPXIuX2dsY29udGFpbmVyLm5vZGUoKSx0aGlzLmlzU3RhdGljPW4uc3RhdGljUGxvdCx0aGlzLnVpZD1yLl91aWQrIi0iK3RoaXMuaWQsdGhpcy5kaXY9bnVsbCx0aGlzLnhheGlzPW51bGwsdGhpcy55YXhpcz1udWxsLHRoaXMuY3JlYXRlRnJhbWV3b3JrKHIpLHRoaXMubWFwPW51bGwsdGhpcy5hY2Nlc3NUb2tlbj1udWxsLHRoaXMuc3R5bGVPYmo9bnVsbCx0aGlzLnRyYWNlSGFzaD17fSx0aGlzLmxheWVyTGlzdD1bXSx0aGlzLmJlbG93TG9va3VwPXt9LHRoaXMuZHJhZ2dpbmc9ITEsdGhpcy53aGVlbGluZz0hMX12YXIgZz1kLnByb3RvdHlwZTtnLnBsb3Q9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE9dGhpcyxpPWVbYS5pZF07YS5tYXAmJmkuYWNjZXNzdG9rZW4hPT1hLmFjY2Vzc1Rva2VuJiYoYS5tYXAucmVtb3ZlKCksYS5tYXA9bnVsbCxhLnN0eWxlT2JqPW51bGwsYS50cmFjZUhhc2g9W10sYS5sYXllckxpc3Q9e30pLG49YS5tYXA/bmV3IFByb21pc2UoZnVuY3Rpb24ocixuKXthLnVwZGF0ZU1hcCh0LGUscixuKX0pOm5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7YS5jcmVhdGVNYXAodCxlLHIsbil9KSxyLnB1c2gobil9LGcuY3JlYXRlTWFwPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPXRoaXMscz1lW2kuaWRdLGw9aS5zdHlsZU9iaj1tKHMuc3R5bGUpO2kuYWNjZXNzVG9rZW49cy5hY2Nlc3N0b2tlbjt2YXIgYz1pLm1hcD1uZXcgbi5NYXAoe2NvbnRhaW5lcjppLmRpdixzdHlsZTpsLnN0eWxlLGNlbnRlcjp4KHMuY2VudGVyKSx6b29tOnMuem9vbSxiZWFyaW5nOnMuYmVhcmluZyxwaXRjaDpzLnBpdGNoLGludGVyYWN0aXZlOiFpLmlzU3RhdGljLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjppLmlzU3RhdGljLGRvdWJsZUNsaWNrWm9vbTohMSxib3hab29tOiExLGF0dHJpYnV0aW9uQ29udHJvbDohMX0pLmFkZENvbnRyb2wobmV3IG4uQXR0cmlidXRpb25Db250cm9sKHtjb21wYWN0OiEwfSkpO2MuX2NhbnZhcy5zdHlsZS5sZWZ0PSIwcHgiLGMuX2NhbnZhcy5zdHlsZS50b3A9IjBweCIsaS5yZWplY3RPbkVycm9yKGEpLGkuaXNTdGF0aWN8fGkuaW5pdEZ4KHQsZSk7dmFyIHU9W107dS5wdXNoKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe2Mub25jZSgibG9hZCIsdCl9KSksdT11LmNvbmNhdChvLmZldGNoVHJhY2VHZW9EYXRhKHQpKSxQcm9taXNlLmFsbCh1KS50aGVuKGZ1bmN0aW9uKCl7aS5maWxsQmVsb3dMb29rdXAodCxlKSxpLnVwZGF0ZURhdGEodCksaS51cGRhdGVMYXlvdXQoZSksaS5yZXNvbHZlT25SZW5kZXIocil9KS5jYXRjaChhKX0sZy51cGRhdGVNYXA9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dGhpcyxpPWEubWFwLHM9ZVt0aGlzLmlkXTthLnJlamVjdE9uRXJyb3Iobik7dmFyIGw9W10sYz1tKHMuc3R5bGUpO2Euc3R5bGVPYmouaWQhPT1jLmlkJiYoYS5zdHlsZU9iaj1jLGkuc2V0U3R5bGUoYy5zdHlsZSksYS50cmFjZUhhc2g9e30sbC5wdXNoKG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe2kub25jZSgic3R5bGVkYXRhIix0KX0pKSksbD1sLmNvbmNhdChvLmZldGNoVHJhY2VHZW9EYXRhKHQpKSxQcm9taXNlLmFsbChsKS50aGVuKGZ1bmN0aW9uKCl7YS5maWxsQmVsb3dMb29rdXAodCxlKSxhLnVwZGF0ZURhdGEodCksYS51cGRhdGVMYXlvdXQoZSksYS5yZXNvbHZlT25SZW5kZXIocil9KS5jYXRjaChuKX0sZy5maWxsQmVsb3dMb29rdXA9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9ZVt0aGlzLmlkXS5sYXllcnMsaT10aGlzLmJlbG93TG9va3VwPXt9LG89ITE7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIHM9dFtyXVswXS50cmFjZSxsPXMuX21vZHVsZTsic3RyaW5nIj09dHlwZW9mIHMuYmVsb3c/bj1zLmJlbG93OmwuZ2V0QmVsb3cmJihuPWwuZ2V0QmVsb3cocyx0aGlzKSksIiI9PT1uJiYobz0hMCksaVsidHJhY2UtIitzLnVpZF09bnx8IiJ9Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyl7dmFyIGM9YVtyXTtuPSJzdHJpbmciPT10eXBlb2YgYy5iZWxvdz9jLmJlbG93Om8/InRyYWNlcyI6IiIsaVsibGF5b3V0LSIrcl09bn12YXIgdSxoLGY9e307Zm9yKHUgaW4gaSlmW249aVt1XV0/ZltuXS5wdXNoKHUpOmZbbl09W3VdO2ZvcihuIGluIGYpe3ZhciBwPWZbbl07aWYocC5sZW5ndGg+MSlmb3Iocj0wO3I8cC5sZW5ndGg7cisrKTA9PT0odT1wW3JdKS5pbmRleE9mKCJ0cmFjZS0iKT8oaD11LnNwbGl0KCJ0cmFjZS0iKVsxXSx0aGlzLnRyYWNlSGFzaFtoXSYmKHRoaXMudHJhY2VIYXNoW2hdLmJlbG93PW51bGwpKTowPT09dS5pbmRleE9mKCJsYXlvdXQtIikmJihoPXUuc3BsaXQoImxheW91dC0iKVsxXSx0aGlzLmxheWVyTGlzdFtoXSYmKHRoaXMubGF5ZXJMaXN0W2hdLmJlbG93PW51bGwpKX19O3ZhciB2PXtjaG9yb3BsZXRobWFwYm94OjAsZGVuc2l0eW1hcGJveDoxLHNjYXR0ZXJtYXBib3g6Mn07ZnVuY3Rpb24gbSh0KXt2YXIgZT17fTtyZXR1cm4gaS5pc1BsYWluT2JqZWN0KHQpPyhlLmlkPXQuaWQsZS5zdHlsZT10KToic3RyaW5nIj09dHlwZW9mIHQ/KGUuaWQ9dCwtMSE9PWYuc3R5bGVWYWx1ZXNNYXBib3guaW5kZXhPZih0KT9lLnN0eWxlPXkodCk6Zi5zdHlsZXNOb25NYXBib3hbdF0/ZS5zdHlsZT1mLnN0eWxlc05vbk1hcGJveFt0XTplLnN0eWxlPXQpOihlLmlkPWYuc3R5bGVWYWx1ZURmbHQsZS5zdHlsZT15KGYuc3R5bGVWYWx1ZURmbHQpKSxlLnRyYW5zaXRpb249e2R1cmF0aW9uOjAsZGVsYXk6MH0sZX1mdW5jdGlvbiB5KHQpe3JldHVybiBmLnN0eWxlVXJsUHJlZml4K3QrIi0iK2Yuc3R5bGVVcmxTdWZmaXh9ZnVuY3Rpb24geCh0KXtyZXR1cm5bdC5sb24sdC5sYXRdfWcudXBkYXRlRGF0YT1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpPXRoaXMudHJhY2VIYXNoLG89dC5zbGljZSgpLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdlt0WzBdLnRyYWNlLnR5cGVdLXZbZVswXS50cmFjZS50eXBlXX0pO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspe3ZhciBzPW9bbl0sbD0hMTsoZT1pWyhyPXNbMF0udHJhY2UpLnVpZF0pJiYoZS50eXBlPT09ci50eXBlPyhlLnVwZGF0ZShzKSxsPSEwKTplLmRpc3Bvc2UoKSksIWwmJnIuX21vZHVsZSYmKGlbci51aWRdPXIuX21vZHVsZS5wbG90KHRoaXMscykpfXZhciBjPU9iamVjdC5rZXlzKGkpO3Q6Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7dmFyIHU9Y1tuXTtmb3IoYT0wO2E8dC5sZW5ndGg7YSsrKWlmKHU9PT0ocj10W2FdWzBdLnRyYWNlKS51aWQpY29udGludWUgdDsoZT1pW3VdKS5kaXNwb3NlKCksZGVsZXRlIGlbdV19fSxnLnVwZGF0ZUxheW91dD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm1hcCxyPXRbdGhpcy5pZF07dGhpcy5kcmFnZ2luZ3x8dGhpcy53aGVlbGluZ3x8KGUuc2V0Q2VudGVyKHgoci5jZW50ZXIpKSxlLnNldFpvb20oci56b29tKSxlLnNldEJlYXJpbmcoci5iZWFyaW5nKSxlLnNldFBpdGNoKHIucGl0Y2gpKSx0aGlzLnVwZGF0ZUxheWVycyh0KSx0aGlzLnVwZGF0ZUZyYW1ld29yayh0KSx0aGlzLnVwZGF0ZUZ4KHQpLHRoaXMubWFwLnJlc2l6ZSgpLHRoaXMuZ2QuX2NvbnRleHQuX3Njcm9sbFpvb20ubWFwYm94P2Uuc2Nyb2xsWm9vbS5lbmFibGUoKTplLnNjcm9sbFpvb20uZGlzYWJsZSgpfSxnLnJlc29sdmVPblJlbmRlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm1hcDtlLm9uKCJyZW5kZXIiLGZ1bmN0aW9uIHIoKXtlLmxvYWRlZCgpJiYoZS5vZmYoInJlbmRlciIsciksc2V0VGltZW91dCh0LDEwKSl9KX0sZy5yZWplY3RPbkVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWFwO2Z1bmN0aW9uIHIoKXt0KG5ldyBFcnJvcihmLm1hcE9uRXJyb3JNc2cpKX1lLm9uY2UoImVycm9yIixyKSxlLm9uY2UoInN0eWxlLmVycm9yIixyKSxlLm9uY2UoInNvdXJjZS5lcnJvciIsciksZS5vbmNlKCJ0aWxlLmVycm9yIixyKSxlLm9uY2UoImxheWVyLmVycm9yIixyKX0sZy5jcmVhdGVGcmFtZXdvcms9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPWUuZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3IuaWQ9ZS51aWQsci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUuY29udGFpbmVyLmFwcGVuZENoaWxkKHIpLGUueGF4aXM9e19pZDoieCIsYzJwOmZ1bmN0aW9uKHQpe3JldHVybiBlLnByb2plY3QodCkueH19LGUueWF4aXM9e19pZDoieSIsYzJwOmZ1bmN0aW9uKHQpe3JldHVybiBlLnByb2plY3QodCkueX19LGUudXBkYXRlRnJhbWV3b3JrKHQpLGUubW9ja0F4aXM9e3R5cGU6ImxpbmVhciIsc2hvd2V4cG9uZW50OiJhbGwiLGV4cG9uZW50Zm9ybWF0OiJCIn0sbC5zZXRDb252ZXJ0KGUubW9ja0F4aXMsdCl9LGcuaW5pdEZ4PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXIuZ2QsaT1yLm1hcDtmdW5jdGlvbiBvKCl7YS5sb25lVW5ob3ZlcihlLl9ob3ZlcmxheWVyKX1mdW5jdGlvbiBsKCl7dmFyIHQ9ci5nZXRWaWV3KCk7bi5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLHIuZ2V0Vmlld0VkaXRzV2l0aERlcml2ZWQodCkpfWkub24oIm1vdmVlbmQiLGZ1bmN0aW9uKHQpe2lmKHIubWFwKXt2YXIgZT1uLl9mdWxsTGF5b3V0O2lmKHQub3JpZ2luYWxFdmVudHx8ci53aGVlbGluZyl7dmFyIGE9ZVtyLmlkXTtzLmNhbGwoIl9zdG9yZURpcmVjdEdVSUVkaXQiLG4ubGF5b3V0LGUuX3ByZUdVSSxyLmdldFZpZXdFZGl0cyhhKSk7dmFyIGk9ci5nZXRWaWV3KCk7YS5faW5wdXQuY2VudGVyPWEuY2VudGVyPWkuY2VudGVyLGEuX2lucHV0Lnpvb209YS56b29tPWkuem9vbSxhLl9pbnB1dC5iZWFyaW5nPWEuYmVhcmluZz1pLmJlYXJpbmcsYS5faW5wdXQucGl0Y2g9YS5waXRjaD1pLnBpdGNoLG4uZW1pdCgicGxvdGx5X3JlbGF5b3V0IixyLmdldFZpZXdFZGl0c1dpdGhEZXJpdmVkKGkpKX10Lm9yaWdpbmFsRXZlbnQmJiJtb3VzZXVwIj09PXQub3JpZ2luYWxFdmVudC50eXBlP3IuZHJhZ2dpbmc9ITE6ci53aGVlbGluZyYmKHIud2hlZWxpbmc9ITEpLGUuX3JlaG92ZXImJmUuX3JlaG92ZXIoKX19KSxpLm9uKCJ3aGVlbCIsZnVuY3Rpb24oKXtyLndoZWVsaW5nPSEwfSksaS5vbigibW91c2Vtb3ZlIixmdW5jdGlvbih0KXt2YXIgZT1yLmRpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0LmNsaWVudFg9dC5wb2ludC54K2UubGVmdCx0LmNsaWVudFk9dC5wb2ludC55K2UudG9wLHQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdD1mdW5jdGlvbigpe3JldHVybiBlfSxyLnhheGlzLnAyYz1mdW5jdGlvbigpe3JldHVybiB0LmxuZ0xhdC5sbmd9LHIueWF4aXMucDJjPWZ1bmN0aW9uKCl7cmV0dXJuIHQubG5nTGF0LmxhdH0sbi5fZnVsbExheW91dC5fcmVob3Zlcj1mdW5jdGlvbigpe24uX2Z1bGxMYXlvdXQuX2hvdmVyc3VicGxvdD09PXIuaWQmJm4uX2Z1bGxMYXlvdXRbci5pZF0mJmEuaG92ZXIobix0LHIuaWQpfSxhLmhvdmVyKG4sdCxyLmlkKSxuLl9mdWxsTGF5b3V0Ll9ob3ZlcnN1YnBsb3Q9ci5pZH0pLGkub24oImRyYWdzdGFydCIsZnVuY3Rpb24oKXtyLmRyYWdnaW5nPSEwLG8oKX0pLGkub24oInpvb21zdGFydCIsbyksaS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7bi5fZnVsbExheW91dC5faG92ZXJzdWJwbG90PW51bGx9KSxpLm9uKCJkcmFnIixsKSxpLm9uKCJ6b29tIixsKSxpLm9uKCJkYmxjbGljayIsZnVuY3Rpb24oKXt2YXIgdD1uLl9mdWxsTGF5b3V0W3IuaWRdO3MuY2FsbCgiX3N0b3JlRGlyZWN0R1VJRWRpdCIsbi5sYXlvdXQsbi5fZnVsbExheW91dC5fcHJlR1VJLHIuZ2V0Vmlld0VkaXRzKHQpKTt2YXIgZT1yLnZpZXdJbml0aWFsO2kuc2V0Q2VudGVyKHgoZS5jZW50ZXIpKSxpLnNldFpvb20oZS56b29tKSxpLnNldEJlYXJpbmcoZS5iZWFyaW5nKSxpLnNldFBpdGNoKGUucGl0Y2gpO3ZhciBhPXIuZ2V0VmlldygpO3QuX2lucHV0LmNlbnRlcj10LmNlbnRlcj1hLmNlbnRlcix0Ll9pbnB1dC56b29tPXQuem9vbT1hLnpvb20sdC5faW5wdXQuYmVhcmluZz10LmJlYXJpbmc9YS5iZWFyaW5nLHQuX2lucHV0LnBpdGNoPXQucGl0Y2g9YS5waXRjaCxuLmVtaXQoInBsb3RseV9kb3VibGVjbGljayIsbnVsbCksbi5lbWl0KCJwbG90bHlfcmVsYXlvdXQiLHIuZ2V0Vmlld0VkaXRzV2l0aERlcml2ZWQoYSkpfSksci5jbGVhclNlbGVjdD1mdW5jdGlvbigpe24uX2Z1bGxMYXlvdXQuX3pvb21sYXllci5zZWxlY3RBbGwoIi5zZWxlY3Qtb3V0bGluZSIpLnJlbW92ZSgpfSxyLm9uQ2xpY2tJblBhbkZuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgaT1uLl9mdWxsTGF5b3V0LmNsaWNrbW9kZTtpLmluZGV4T2YoInNlbGVjdCIpPi0xJiZoKGUub3JpZ2luYWxFdmVudCxuLFtyLnhheGlzXSxbci55YXhpc10sci5pZCx0KSxpLmluZGV4T2YoImV2ZW50Iik+LTEmJmEuY2xpY2sobixlLm9yaWdpbmFsRXZlbnQpfX19LGcudXBkYXRlRng9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPWUubWFwLG49ZS5nZDtpZighZS5pc1N0YXRpYyl7dmFyIGEsbz10LmRyYWdtb2RlO2E9InNlbGVjdCI9PT1vP2Z1bmN0aW9uKHQscil7KHQucmFuZ2U9e30pW2UuaWRdPVtsKFtyLnhtaW4sci55bWluXSksbChbci54bWF4LHIueW1heF0pXX06ZnVuY3Rpb24odCxyLG4peyh0Lmxhc3NvUG9pbnRzPXt9KVtlLmlkXT1uLmZpbHRlcmVkLm1hcChsKX07dmFyIHM9ZS5kcmFnT3B0aW9ucztlLmRyYWdPcHRpb25zPWkuZXh0ZW5kRGVlcChzfHx7fSx7ZWxlbWVudDplLmRpdixnZDpuLHBsb3RpbmZvOntpZDplLmlkLHhheGlzOmUueGF4aXMseWF4aXM6ZS55YXhpcyxmaWxsUmFuZ2VJdGVtczphfSx4YXhlczpbZS54YXhpc10seWF4ZXM6W2UueWF4aXNdLHN1YnBsb3Q6ZS5pZH0pLHIub2ZmKCJjbGljayIsZS5vbkNsaWNrSW5QYW5IYW5kbGVyKSwic2VsZWN0Ij09PW98fCJsYXNzbyI9PT1vPyhyLmRyYWdQYW4uZGlzYWJsZSgpLHIub24oInpvb21zdGFydCIsZS5jbGVhclNlbGVjdCksZS5kcmFnT3B0aW9ucy5wcmVwRm49ZnVuY3Rpb24odCxyLG4pe3UodCxyLG4sZS5kcmFnT3B0aW9ucyxvKX0sYy5pbml0KGUuZHJhZ09wdGlvbnMpKTooci5kcmFnUGFuLmVuYWJsZSgpLHIub2ZmKCJ6b29tc3RhcnQiLGUuY2xlYXJTZWxlY3QpLGUuZGl2Lm9ubW91c2Vkb3duPW51bGwsZS5vbkNsaWNrSW5QYW5IYW5kbGVyPWUub25DbGlja0luUGFuRm4oZS5kcmFnT3B0aW9ucyksci5vbigiY2xpY2siLGUub25DbGlja0luUGFuSGFuZGxlcikpfWZ1bmN0aW9uIGwodCl7dmFyIHI9ZS5tYXAudW5wcm9qZWN0KHQpO3JldHVybltyLmxuZyxyLmxhdF19fSxnLnVwZGF0ZUZyYW1ld29yaz1mdW5jdGlvbih0KXt2YXIgZT10W3RoaXMuaWRdLmRvbWFpbixyPXQuX3NpemUsbj10aGlzLmRpdi5zdHlsZTtuLndpZHRoPXIudyooZS54WzFdLWUueFswXSkrInB4IixuLmhlaWdodD1yLmgqKGUueVsxXS1lLnlbMF0pKyJweCIsbi5sZWZ0PXIubCtlLnhbMF0qci53KyJweCIsbi50b3A9ci50KygxLWUueVsxXSkqci5oKyJweCIsdGhpcy54YXhpcy5fb2Zmc2V0PXIubCtlLnhbMF0qci53LHRoaXMueGF4aXMuX2xlbmd0aD1yLncqKGUueFsxXS1lLnhbMF0pLHRoaXMueWF4aXMuX29mZnNldD1yLnQrKDEtZS55WzFdKSpyLmgsdGhpcy55YXhpcy5fbGVuZ3RoPXIuaCooZS55WzFdLWUueVswXSl9LGcudXBkYXRlTGF5ZXJzPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dFt0aGlzLmlkXS5sYXllcnMsbj10aGlzLmxheWVyTGlzdDtpZihyLmxlbmd0aCE9PW4ubGVuZ3RoKXtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKW5bZV0uZGlzcG9zZSgpO2ZvcihuPXRoaXMubGF5ZXJMaXN0PVtdLGU9MDtlPHIubGVuZ3RoO2UrKyluLnB1c2gocCh0aGlzLGUscltlXSkpfWVsc2UgZm9yKGU9MDtlPHIubGVuZ3RoO2UrKyluW2VdLnVwZGF0ZShyW2VdKX0sZy5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5tYXAmJih0aGlzLm1hcC5yZW1vdmUoKSx0aGlzLm1hcD1udWxsLHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuZGl2KSl9LGcudG9JbWFnZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcC5zdG9wKCksdGhpcy5tYXAuZ2V0Q2FudmFzKCkudG9EYXRhVVJMKCl9LGcuc2V0T3B0aW9ucz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuIGluIHIpdGhpcy5tYXBbZV0odCxuLHJbbl0pfSxnLmdldE1hcExheWVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcC5nZXRTdHlsZSgpLmxheWVyc30sZy5hZGRMYXllcj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubWFwO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoIiI9PT1lKXJldHVybiB2b2lkIHIuYWRkTGF5ZXIodCxlKTtmb3IodmFyIG49dGhpcy5nZXRNYXBMYXllcnMoKSxhPTA7YTxuLmxlbmd0aDthKyspaWYoZT09PW5bYV0uaWQpcmV0dXJuIHZvaWQgci5hZGRMYXllcih0LGUpO2kud2FybihbIlRyeWluZyB0byBhZGQgbGF5ZXIgd2l0aCAqYmVsb3cqIHZhbHVlIixlLCJyZWZlcmVuY2luZyBhIGxheWVyIHRoYXQgZG9lcyBub3QgZXhpc3QiLCJvciB0aGF0IGRvZXMgbm90IHlldCBleGlzdC4iXS5qb2luKCIgIikpfXIuYWRkTGF5ZXIodCl9LGcucHJvamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAucHJvamVjdChuZXcgbi5MbmdMYXQodFswXSx0WzFdKSl9LGcuZ2V0Vmlldz1mdW5jdGlvbigpe3ZhciB0PXRoaXMubWFwLGU9dC5nZXRDZW50ZXIoKSxyPXtsb246ZS5sbmcsbGF0OmUubGF0fSxuPXQuZ2V0Q2FudmFzKCksYT1uLndpZHRoLGk9bi5oZWlnaHQ7cmV0dXJue2NlbnRlcjpyLHpvb206dC5nZXRab29tKCksYmVhcmluZzp0LmdldEJlYXJpbmcoKSxwaXRjaDp0LmdldFBpdGNoKCksX2Rlcml2ZWQ6e2Nvb3JkaW5hdGVzOlt0LnVucHJvamVjdChbMCwwXSkudG9BcnJheSgpLHQudW5wcm9qZWN0KFthLDBdKS50b0FycmF5KCksdC51bnByb2plY3QoW2EsaV0pLnRvQXJyYXkoKSx0LnVucHJvamVjdChbMCxpXSkudG9BcnJheSgpXX19fSxnLmdldFZpZXdFZGl0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5pZCxyPVsiY2VudGVyIiwiem9vbSIsImJlYXJpbmciLCJwaXRjaCJdLG49e30sYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgaT1yW2FdO25bZSsiLiIraV09dFtpXX1yZXR1cm4gbn0sZy5nZXRWaWV3RWRpdHNXaXRoRGVyaXZlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5nZXRWaWV3RWRpdHModCk7cmV0dXJuIHJbZSsiLl9kZXJpdmVkIl09dC5fZGVyaXZlZCxyfSxlLmV4cG9ydHM9ZH0seyIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50Ijo2MTAsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiOjcxMSwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vY2FydGVzaWFuL3NlbGVjdCI6NzgyLCIuL2NvbnN0YW50cyI6ODE4LCIuL2xheWVycyI6ODIxLCJtYXBib3gtZ2wiOjQyOH1dLDgyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5lZGl0VHlwZTtyZXR1cm57dDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ZX0scjp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ZX0sYjp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ZX0sbDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ZX0sZWRpdFR5cGU6ZX19fSx7fV0sODI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vcmVnaXN0cnkiKSxvPXQoIi4uL3Bsb3RfYXBpL3Bsb3Rfc2NoZW1hIikscz10KCIuLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksbD10KCIuLi9saWIiKSxjPXQoIi4uL2NvbXBvbmVudHMvY29sb3IiKSx1PXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0saD10KCIuL2NhcnRlc2lhbi9heGlzX2lkcyIpLGY9dCgiLi9hbmltYXRpb25fYXR0cmlidXRlcyIpLHA9dCgiLi9mcmFtZV9hdHRyaWJ1dGVzIiksZD10KCIuLi9wbG90cy9nZXRfZGF0YSIpLmdldE1vZHVsZUNhbGNEYXRhLGc9bC5yZWxpbmtQcml2YXRlS2V5cyx2PWwuXyxtPWUuZXhwb3J0cz17fTtsLmV4dGVuZEZsYXQobSxpKSxtLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVzIiksbS5hdHRyaWJ1dGVzLnR5cGUudmFsdWVzPW0uYWxsVHlwZXMsbS5mb250QXR0cnM9dCgiLi9mb250X2F0dHJpYnV0ZXMiKSxtLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLG0uZm9udFdlaWdodD0ibm9ybWFsIjt2YXIgeT1tLnRyYW5zZm9ybXNSZWdpc3RyeSx4PXQoIi4vY29tbWFuZCIpO20uZXhlY3V0ZUFQSUNvbW1hbmQ9eC5leGVjdXRlQVBJQ29tbWFuZCxtLmNvbXB1dGVBUElDb21tYW5kQmluZGluZ3M9eC5jb21wdXRlQVBJQ29tbWFuZEJpbmRpbmdzLG0ubWFuYWdlQ29tbWFuZE9ic2VydmVyPXgubWFuYWdlQ29tbWFuZE9ic2VydmVyLG0uaGFzU2ltcGxlQVBJQ29tbWFuZEJpbmRpbmdzPXguaGFzU2ltcGxlQVBJQ29tbWFuZEJpbmRpbmdzLG0ucmVkcmF3VGV4dD1mdW5jdGlvbih0KXt2YXIgZT0odD1sLmdldEdyYXBoRGl2KHQpKS5fZnVsbExheW91dHx8e307aWYoISghKGUuX2hhcyYmZS5faGFzKCJwb2xhciIpKSYmdC5kYXRhJiZ0LmRhdGFbMF0mJnQuZGF0YVswXS5yKSlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe2kuZ2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0aW9ucyIsImRyYXciKSh0KSxpLmdldENvbXBvbmVudE1ldGhvZCgibGVnZW5kIiwiZHJhdyIpKHQpLGkuZ2V0Q29tcG9uZW50TWV0aG9kKCJjb2xvcmJhciIsImRyYXciKSh0KSxlKG0ucHJldmlvdXNQcm9taXNlcyh0KSl9LDMwMCl9KX0sbS5yZXNpemU9ZnVuY3Rpb24odCl7dmFyIGU7dD1sLmdldEdyYXBoRGl2KHQpO3ZhciByPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7dCYmIWwuaXNIaWRkZW4odCl8fG4obmV3IEVycm9yKCJSZXNpemUgbXVzdCBiZSBwYXNzZWQgYSBkaXNwbGF5ZWQgcGxvdCBkaXYgZWxlbWVudC4iKSksdC5fcmVkcmF3VGltZXImJmNsZWFyVGltZW91dCh0Ll9yZWRyYXdUaW1lciksdC5fcmVzb2x2ZVJlc2l6ZSYmKGU9dC5fcmVzb2x2ZVJlc2l6ZSksdC5fcmVzb2x2ZVJlc2l6ZT1yLHQuX3JlZHJhd1RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZighdC5sYXlvdXR8fHQubGF5b3V0LndpZHRoJiZ0LmxheW91dC5oZWlnaHR8fGwuaXNIaWRkZW4odCkpcih0KTtlbHNle2RlbGV0ZSB0LmxheW91dC53aWR0aCxkZWxldGUgdC5sYXlvdXQuaGVpZ2h0O3ZhciBlPXQuY2hhbmdlZDt0LmF1dG9wbGF5PSEwLGkuY2FsbCgicmVsYXlvdXQiLHQse2F1dG9zaXplOiEwfSkudGhlbihmdW5jdGlvbigpe3QuY2hhbmdlZD1lLHQuX3Jlc29sdmVSZXNpemU9PT1yJiYoZGVsZXRlIHQuX3Jlc29sdmVSZXNpemUscih0KSl9KX19LDEwMCl9KTtyZXR1cm4gZSYmZShyKSxyfSxtLnByZXZpb3VzUHJvbWlzZXM9ZnVuY3Rpb24odCl7aWYoKHQuX3Byb21pc2VzfHxbXSkubGVuZ3RoKXJldHVybiBQcm9taXNlLmFsbCh0Ll9wcm9taXNlcykudGhlbihmdW5jdGlvbigpe3QuX3Byb21pc2VzPVtdfSl9LG0uYWRkTGlua3M9ZnVuY3Rpb24odCl7aWYodC5fY29udGV4dC5zaG93TGlua3x8dC5fY29udGV4dC5zaG93U291cmNlcyl7dmFyIGU9dC5fZnVsbExheW91dCxyPWwuZW5zdXJlU2luZ2xlKGUuX3BhcGVyLCJ0ZXh0IiwianMtcGxvdC1saW5rLWNvbnRhaW5lciIsZnVuY3Rpb24odCl7dC5zdHlsZSh7ImZvbnQtZmFtaWx5IjonIk9wZW4gU2FucyIsIEFyaWFsLCBzYW5zLXNlcmlmJywiZm9udC1zaXplIjoiMTJweCIsZmlsbDpjLmRlZmF1bHRMaW5lLCJwb2ludGVyLWV2ZW50cyI6ImFsbCJ9KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyk7dC5hcHBlbmQoInRzcGFuIikuY2xhc3NlZCgianMtbGluay10by10b29sIiwhMCksdC5hcHBlbmQoInRzcGFuIikuY2xhc3NlZCgianMtbGluay1zcGFjZXIiLCEwKSx0LmFwcGVuZCgidHNwYW4iKS5jbGFzc2VkKCJqcy1zb3VyY2VsaW5rcyIsITApfSl9KSxhPXIubm9kZSgpLGk9e3k6ZS5fcGFwZXIuYXR0cigiaGVpZ2h0IiktOX07ZG9jdW1lbnQuYm9keS5jb250YWlucyhhKSYmYS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKT49ZS53aWR0aC0yMD8oaVsidGV4dC1hbmNob3IiXT0ic3RhcnQiLGkueD01KTooaVsidGV4dC1hbmNob3IiXT0iZW5kIixpLng9ZS5fcGFwZXIuYXR0cigid2lkdGgiKS03KSxyLmF0dHIoaSk7dmFyIG89ci5zZWxlY3QoIi5qcy1saW5rLXRvLXRvb2wiKSxzPXIuc2VsZWN0KCIuanMtbGluay1zcGFjZXIiKSx1PXIuc2VsZWN0KCIuanMtc291cmNlbGlua3MiKTt0Ll9jb250ZXh0LnNob3dTb3VyY2VzJiZ0Ll9jb250ZXh0LnNob3dTb3VyY2VzKHQpLHQuX2NvbnRleHQuc2hvd0xpbmsmJmZ1bmN0aW9uKHQsZSl7ZS50ZXh0KCIiKTt2YXIgcj1lLmFwcGVuZCgiYSIpLmF0dHIoeyJ4bGluazp4bGluazpocmVmIjoiIyIsY2xhc3M6ImxpbmstLWltcHQgbGluay0tZW1iZWR2aWV3IiwiZm9udC13ZWlnaHQiOiJib2xkIn0pLnRleHQodC5fY29udGV4dC5saW5rVGV4dCsiICIrU3RyaW5nLmZyb21DaGFyQ29kZSgxODcpKTtpZih0Ll9jb250ZXh0LnNlbmREYXRhKXIub24oImNsaWNrIixmdW5jdGlvbigpe20uc2VuZERhdGFUb0Nsb3VkKHQpfSk7ZWxzZXt2YXIgbj13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoIi8iKSxhPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7ci5hdHRyKHsieGxpbms6eGxpbms6c2hvdyI6Im5ldyIsInhsaW5rOnhsaW5rOmhyZWYiOiIvIituWzJdLnNwbGl0KCIuIilbMF0rIi8iK25bMV0rYX0pfX0odCxvKSxzLnRleHQoby50ZXh0KCkmJnUudGV4dCgpPyIgLSAiOiIiKX19LG0uc2VuZERhdGFUb0Nsb3VkPWZ1bmN0aW9uKHQpe3QuZW1pdCgicGxvdGx5X2JlZm9yZWV4cG9ydCIpO3ZhciBlPSh3aW5kb3cuUExPVExZRU5WfHx7fSkuQkFTRV9VUkx8fHQuX2NvbnRleHQucGxvdGx5U2VydmVyVVJMLHI9bi5zZWxlY3QodCkuYXBwZW5kKCJkaXYiKS5hdHRyKCJpZCIsImhpZGRlbmZvcm0iKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSxhPXIuYXBwZW5kKCJmb3JtIikuYXR0cih7YWN0aW9uOmUrIi9leHRlcm5hbCIsbWV0aG9kOiJwb3N0Iix0YXJnZXQ6Il9ibGFuayJ9KTtyZXR1cm4gYS5hcHBlbmQoImlucHV0IikuYXR0cih7dHlwZToidGV4dCIsbmFtZToiZGF0YSJ9KS5ub2RlKCkudmFsdWU9bS5ncmFwaEpzb24odCwhMSwia2VlcGRhdGEiKSxhLm5vZGUoKS5zdWJtaXQoKSxyLnJlbW92ZSgpLHQuZW1pdCgicGxvdGx5X2FmdGVyZXhwb3J0IiksITF9O3ZhciBiPVsiZGF5cyIsInNob3J0RGF5cyIsIm1vbnRocyIsInNob3J0TW9udGhzIiwicGVyaW9kcyIsImRhdGVUaW1lIiwiZGF0ZSIsInRpbWUiLCJkZWNpbWFsIiwidGhvdXNhbmRzIiwiZ3JvdXBpbmciLCJjdXJyZW5jeSJdLF89WyJ5ZWFyIiwibW9udGgiLCJkYXlNb250aCIsImRheU1vbnRoWWVhciJdO2Z1bmN0aW9uIHcodCxlKXt2YXIgcj10Ll9jb250ZXh0LmxvY2FsZSxuPSExLGE9e307ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHI9ITAsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO2Fbb118fCh0W29dP2Fbb109dFtvXTpyPSExKX1yJiYobj0hMCl9Zm9yKHZhciBzPTA7czwyO3MrKyl7Zm9yKHZhciBsPXQuX2NvbnRleHQubG9jYWxlcyxjPTA7YzwyO2MrKyl7dmFyIHU9KGxbcl18fHt9KS5mb3JtYXQ7aWYodSYmKG8odSksbikpYnJlYWs7bD1pLmxvY2FsZVJlZ2lzdHJ5fXZhciBoPXIuc3BsaXQoIi0iKVswXTtpZihufHxoPT09cilicmVhaztyPWh9cmV0dXJuIG58fG8oaS5sb2NhbGVSZWdpc3RyeS5lbi5mb3JtYXQpLGF9ZnVuY3Rpb24gayh0LGUpe3ZhciByPXtfZnVsbExheW91dDplfSxuPSJ4Ij09PXQuX2lkLmNoYXJBdCgwKSxhPXQuX21haW5BeGlzLl9hbmNob3JBeGlzLGk9IiIsbz0iIixzPSIiO2lmKGEmJihzPWEuX21haW5BeGlzLl9pZCxpPW4/dC5faWQrczpzK3QuX2lkKSwhaXx8IWUuX3Bsb3RzW2ldKXtpPSIiO2Zvcih2YXIgbD10Ll9jb3VudGVyQXhlcyxjPTA7YzxsLmxlbmd0aDtjKyspe3ZhciB1PWxbY10sZj1uP3QuX2lkK3U6dSt0Ll9pZDtvfHwobz1mKTt2YXIgcD1oLmdldEZyb21JZChyLHUpO2lmKHMmJnAub3ZlcmxheWluZz09PXMpe2k9ZjticmVha319fXJldHVybiBpfHxvfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC50cmFuc2Zvcm1zO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdLGE9bi5fbW9kdWxlfHx5W24udHlwZV07aWYoYSYmYS5tYWtlc0RhdGEpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gTSh0LGUscixuKXtmb3IodmFyIGE9dC50cmFuc2Zvcm1zLGk9W3RdLG89MDtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXSxsPXlbcy50eXBlXTtsJiZsLnRyYW5zZm9ybSYmKGk9bC50cmFuc2Zvcm0oaSx7dHJhbnNmb3JtOnMsZnVsbFRyYWNlOnQsZnVsbERhdGE6ZSxsYXlvdXQ6cixmdWxsTGF5b3V0Om4sdHJhbnNmb3JtSW5kZXg6b30pKX1yZXR1cm4gaX1mdW5jdGlvbiBBKHQpe3ZhciBlPXQubWFyZ2luO2lmKCF0Ll9zaXplKXt2YXIgcj10Ll9zaXplPXtsOk1hdGgucm91bmQoZS5sKSxyOk1hdGgucm91bmQoZS5yKSx0Ok1hdGgucm91bmQoZS50KSxiOk1hdGgucm91bmQoZS5iKSxwOk1hdGgucm91bmQoZS5wYWQpfTtyLnc9TWF0aC5yb3VuZCh0LndpZHRoKS1yLmwtci5yLHIuaD1NYXRoLnJvdW5kKHQuaGVpZ2h0KS1yLnQtci5ifXQuX3B1c2htYXJnaW58fCh0Ll9wdXNobWFyZ2luPXt9KSx0Ll9wdXNobWFyZ2luSWRzfHwodC5fcHVzaG1hcmdpbklkcz17fSl9bS5zdXBwbHlEZWZhdWx0cz1mdW5jdGlvbih0LGUpe3ZhciByPWUmJmUuc2tpcFVwZGF0ZUNhbGMsYT10Ll9mdWxsTGF5b3V0fHx7fTtpZihhLl9za2lwRGVmYXVsdHMpZGVsZXRlIGEuX3NraXBEZWZhdWx0cztlbHNle3ZhciBvLHM9dC5fZnVsbExheW91dD17fSxjPXQubGF5b3V0fHx7fSx1PXQuX2Z1bGxEYXRhfHxbXSxoPXQuX2Z1bGxEYXRhPVtdLGY9dC5kYXRhfHxbXSxwPXQuY2FsY2RhdGF8fFtdLGQ9dC5fY29udGV4dHx8e307dC5fdHJhbnNpdGlvbkRhdGF8fG0uY3JlYXRlVHJhbnNpdGlvbkRhdGEodCkscy5fZGZsdFRpdGxlPXtwbG90OnYodCwiQ2xpY2sgdG8gZW50ZXIgUGxvdCB0aXRsZSIpLHg6dih0LCJDbGljayB0byBlbnRlciBYIGF4aXMgdGl0bGUiKSx5OnYodCwiQ2xpY2sgdG8gZW50ZXIgWSBheGlzIHRpdGxlIiksY29sb3JiYXI6dih0LCJDbGljayB0byBlbnRlciBDb2xvcnNjYWxlIHRpdGxlIiksYW5ub3RhdGlvbjp2KHQsIm5ldyB0ZXh0Iil9LHMuX3RyYWNlV29yZD12KHQsInRyYWNlIik7dmFyIHk9dyh0LGIpO2lmKHMuX21hcGJveEFjY2Vzc1Rva2VuPWQubWFwYm94QWNjZXNzVG9rZW4sYS5faW5pdGlhbEF1dG9TaXplSXNEb25lKXt2YXIgeD1hLndpZHRoLGs9YS5oZWlnaHQ7bS5zdXBwbHlMYXlvdXRHbG9iYWxEZWZhdWx0cyhjLHMseSksYy53aWR0aHx8KHMud2lkdGg9eCksYy5oZWlnaHR8fChzLmhlaWdodD1rKSxtLnNhbml0aXplTWFyZ2lucyhzKX1lbHNle20uc3VwcGx5TGF5b3V0R2xvYmFsRGVmYXVsdHMoYyxzLHkpO3ZhciBUPSFjLndpZHRofHwhYy5oZWlnaHQsTT1zLmF1dG9zaXplLFM9ZC5hdXRvc2l6YWJsZTtUJiYoTXx8Uyk/bS5wbG90QXV0b1NpemUodCxjLHMpOlQmJm0uc2FuaXRpemVNYXJnaW5zKHMpLCFNJiZUJiYoYy53aWR0aD1zLndpZHRoLGMuaGVpZ2h0PXMuaGVpZ2h0KX1zLl9kM2xvY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmRlY2ltYWw9ZS5jaGFyQXQoMCksdC50aG91c2FuZHM9ZS5jaGFyQXQoMSksbi5sb2NhbGUodCl9KHkscy5zZXBhcmF0b3JzKSxzLl9leHRyYUZvcm1hdD13KHQsXykscy5faW5pdGlhbEF1dG9TaXplSXNEb25lPSEwLHMuX2RhdGFMZW5ndGg9Zi5sZW5ndGgscy5fbW9kdWxlcz1bXSxzLl92aXNpYmxlTW9kdWxlcz1bXSxzLl9iYXNlUGxvdE1vZHVsZXM9W107dmFyIEU9cy5fc3VicGxvdHM9ZnVuY3Rpb24oKXt2YXIgdCxlLHI9aS5jb2xsZWN0YWJsZVN1YnBsb3RUeXBlcyxuPXt9O2lmKCFyKXtyPVtdO3ZhciBhPWkuc3VicGxvdHNSZWdpc3RyeTtmb3IodmFyIG8gaW4gYSl7dmFyIHM9YVtvXSxjPXMuYXR0cjtpZihjJiYoci5wdXNoKG8pLEFycmF5LmlzQXJyYXkoYykpKWZvcihlPTA7ZTxjLmxlbmd0aDtlKyspbC5wdXNoVW5pcXVlKHIsY1tlXSl9fWZvcih0PTA7dDxyLmxlbmd0aDt0KyspbltyW3RdXT1bXTtyZXR1cm4gbn0oKSxMPXMuX3NwbG9tQXhlcz17eDp7fSx5Ont9fSxDPXMuX3NwbG9tU3VicGxvdHM9e307cy5fc3Bsb21HcmlkRGZsdD17fSxzLl9zY2F0dGVyU3RhY2tPcHRzPXt9LHMuX2ZpcnN0U2NhdHRlcj17fSxzLl9hbGlnbm1lbnRPcHRzPXt9LHMuX2NvbG9yQXhlcz17fSxzLl9yZXF1ZXN0UmFuZ2VzbGlkZXI9e30scy5fdHJhY2VVaWRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPWUubGVuZ3RoLGk9W107Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dFtyXS5fZnVsbElucHV0O28hPT1uJiZpLnB1c2gobyksbj1vfXZhciBzPWkubGVuZ3RoLGM9bmV3IEFycmF5KGEpLHU9e307ZnVuY3Rpb24gaCh0LGUpe2NbZV09dCx1W3RdPTF9ZnVuY3Rpb24gZih0LGUpe2lmKHQmJiJzdHJpbmciPT10eXBlb2YgdCYmIXVbdF0pcmV0dXJuIGgodCxlKSwhMH1mb3Iocj0wO3I8YTtyKyspe3ZhciBwPWVbcl0udWlkOyJudW1iZXIiPT10eXBlb2YgcCYmKHA9U3RyaW5nKHApKSxmKHAscil8fChyPHMmJmYoaVtyXS51aWQscil8fGgobC5yYW5kc3RyKHUpLHIpKX1yZXR1cm4gY30odSxmKSxzLl9nbG9iYWxUcmFuc2Zvcm1zPSh0Ll9jb250ZXh0fHx7fSkuZ2xvYmFsVHJhbnNmb3JtcyxtLnN1cHBseURhdGFEZWZhdWx0cyhmLGgsYyxzKTt2YXIgUD1PYmplY3Qua2V5cyhMLngpLE89T2JqZWN0LmtleXMoTC55KTtpZihQLmxlbmd0aD4xJiZPLmxlbmd0aD4xKXtmb3IoaS5nZXRDb21wb25lbnRNZXRob2QoImdyaWQiLCJzaXplRGVmYXVsdHMiKShjLHMpLG89MDtvPFAubGVuZ3RoO28rKylsLnB1c2hVbmlxdWUoRS54YXhpcyxQW29dKTtmb3Iobz0wO288Ty5sZW5ndGg7bysrKWwucHVzaFVuaXF1ZShFLnlheGlzLE9bb10pO2Zvcih2YXIgeiBpbiBDKWwucHVzaFVuaXF1ZShFLmNhcnRlc2lhbix6KX1pZihzLl9oYXM9bS5faGFzUGxvdFR5cGUuYmluZChzKSx1Lmxlbmd0aD09PWgubGVuZ3RoKWZvcihvPTA7bzxoLmxlbmd0aDtvKyspZyhoW29dLHVbb10pO20uc3VwcGx5TGF5b3V0TW9kdWxlRGVmYXVsdHMoYyxzLGgsdC5fdHJhbnNpdGlvbkRhdGEpO3ZhciBJPXMuX3Zpc2libGVNb2R1bGVzLEQ9W107Zm9yKG89MDtvPEkubGVuZ3RoO28rKyl7dmFyIFI9SVtvXS5jcm9zc1RyYWNlRGVmYXVsdHM7UiYmbC5wdXNoVW5pcXVlKEQsUil9Zm9yKG89MDtvPEQubGVuZ3RoO28rKylEW29dKGgscyk7cy5faGFzT25seUxhcmdlU3Bsb21zPTE9PT1zLl9iYXNlUGxvdE1vZHVsZXMubGVuZ3RoJiYic3Bsb20iPT09cy5fYmFzZVBsb3RNb2R1bGVzWzBdLm5hbWUmJlAubGVuZ3RoPjE1JiZPLmxlbmd0aD4xNSYmMD09PXMuc2hhcGVzLmxlbmd0aCYmMD09PXMuaW1hZ2VzLmxlbmd0aCxzLl9oYXNDYXJ0ZXNpYW49cy5faGFzKCJjYXJ0ZXNpYW4iKSxzLl9oYXNHZW89cy5faGFzKCJnZW8iKSxzLl9oYXNHTDNEPXMuX2hhcygiZ2wzZCIpLHMuX2hhc0dMMkQ9cy5faGFzKCJnbDJkIikscy5faGFzVGVybmFyeT1zLl9oYXMoInRlcm5hcnkiKSxzLl9oYXNQaWU9cy5faGFzKCJwaWUiKSxtLmxpbmtTdWJwbG90cyhoLHMsdSxhKSxtLmNsZWFuUGxvdChoLHMsdSxhKSxhLl96b29tbGF5ZXImJiF0Ll9kcmFnZ2luZyYmYS5fem9vbWxheWVyLnNlbGVjdEFsbCgiLnNlbGVjdC1vdXRsaW5lIikucmVtb3ZlKCksZnVuY3Rpb24odCxlKXt2YXIgcixuPVtdO2UubWV0YSYmKHI9ZS5fbWV0YT17bWV0YTplLm1ldGEsbGF5b3V0OnttZXRhOmUubWV0YX19KTtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIGk9dFthXTtpLm1ldGE/bltpLmluZGV4XT1pLl9tZXRhPXttZXRhOmkubWV0YX06ZS5tZXRhJiYoaS5fbWV0YT17bWV0YTplLm1ldGF9KSxlLm1ldGEmJihpLl9tZXRhLmxheW91dD17bWV0YTplLm1ldGF9KX1uLmxlbmd0aCYmKHJ8fChyPWUuX21ldGE9e30pLHIuZGF0YT1uKX0oaCxzKSxnKHMsYSksaS5nZXRDb21wb25lbnRNZXRob2QoImNvbG9yc2NhbGUiLCJjcm9zc1RyYWNlRGVmYXVsdHMiKShoLHMpLHMuX3ByZUdVSXx8KHMuX3ByZUdVST17fSkscy5fdHJhY2VQcmVHVUl8fChzLl90cmFjZVByZUdVST17fSk7dmFyIEYsQj1zLl90cmFjZVByZUdVSSxOPXt9O2ZvcihGIGluIEIpTltGXT0ib2xkIjtmb3Iobz0wO288aC5sZW5ndGg7bysrKU5bRj1oW29dLl9mdWxsSW5wdXQudWlkXXx8KEJbRl09e30pLE5bRl09Im5ldyI7Zm9yKEYgaW4gTikib2xkIj09PU5bRl0mJmRlbGV0ZSBCW0ZdO0EocyksaS5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwibWFrZURhdGEiKShzKSxyfHxwLmxlbmd0aCE9PWgubGVuZ3RofHxtLnN1cHBseURlZmF1bHRzVXBkYXRlQ2FsYyhwLGgpfX0sbS5zdXBwbHlEZWZhdWx0c1VwZGF0ZUNhbGM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXSxhPSh0W3JdfHxbXSlbMF07aWYoYSYmYS50cmFjZSl7dmFyIGk9YS50cmFjZTtpZihpLl9oYXNDYWxjVHJhbnNmb3JtKXt2YXIgbyxzLGMsdT1pLl9hcnJheUF0dHJzO2ZvcihvPTA7bzx1Lmxlbmd0aDtvKyspcz11W29dLGM9bC5uZXN0ZWRQcm9wZXJ0eShpLHMpLmdldCgpLnNsaWNlKCksbC5uZXN0ZWRQcm9wZXJ0eShuLHMpLnNldChjKX1hLnRyYWNlPW59fX0sbS5jcmVhdGVUcmFuc2l0aW9uRGF0YT1mdW5jdGlvbih0KXt0Ll90cmFuc2l0aW9uRGF0YXx8KHQuX3RyYW5zaXRpb25EYXRhPXt9KSx0Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVzfHwodC5fdHJhbnNpdGlvbkRhdGEuX2ZyYW1lcz1bXSksdC5fdHJhbnNpdGlvbkRhdGEuX2ZyYW1lSGFzaHx8KHQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZUhhc2g9e30pLHQuX3RyYW5zaXRpb25EYXRhLl9jb3VudGVyfHwodC5fdHJhbnNpdGlvbkRhdGEuX2NvdW50ZXI9MCksdC5fdHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxiYWNrc3x8KHQuX3RyYW5zaXRpb25EYXRhLl9pbnRlcnJ1cHRDYWxsYmFja3M9W10pfSxtLl9oYXNQbG90VHlwZT1mdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMuX2Jhc2VQbG90TW9kdWxlc3x8W107Zm9yKGU9MDtlPHIubGVuZ3RoO2UrKylpZihyW2VdLm5hbWU9PT10KXJldHVybiEwO3ZhciBuPXRoaXMuX21vZHVsZXN8fFtdO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspe3ZhciBhPW5bZV0ubmFtZTtpZihhPT09dClyZXR1cm4hMDt2YXIgbz1pLm1vZHVsZXNbYV07aWYobyYmby5jYXRlZ29yaWVzW3RdKXJldHVybiEwfXJldHVybiExfSxtLmNsZWFuUGxvdD1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpLG89bi5fYmFzZVBsb3RNb2R1bGVzfHxbXTtmb3IoYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgcz1vW2FdO3MuY2xlYW4mJnMuY2xlYW4odCxlLHIsbil9dmFyIGw9bi5faGFzJiZuLl9oYXMoImdsIiksYz1lLl9oYXMmJmUuX2hhcygiZ2wiKTtsJiYhYyYmdm9pZCAwIT09bi5fZ2xjb250YWluZXImJihuLl9nbGNvbnRhaW5lci5zZWxlY3RBbGwoIi5nbC1jYW52YXMiKS5yZW1vdmUoKSxuLl9nbGNvbnRhaW5lci5zZWxlY3RBbGwoIi5uby13ZWJnbCIpLnJlbW92ZSgpLG4uX2dsY2FudmFzPW51bGwpO3ZhciB1PSEhbi5faW5mb2xheWVyO3Q6Zm9yKGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGg9clthXS51aWQ7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7aWYoaD09PXRbaV0udWlkKWNvbnRpbnVlIHR9dSYmbi5faW5mb2xheWVyLnNlbGVjdCgiLmNiIitoKS5yZW1vdmUoKX19LG0ubGlua1N1YnBsb3RzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLG8scz1uLl9wbG90c3x8e30sYz1lLl9wbG90cz17fSx1PWUuX3N1YnBsb3RzLGY9e19mdWxsRGF0YTp0LF9mdWxsTGF5b3V0OmV9LHA9dS5jYXJ0ZXNpYW4uY29uY2F0KHUuZ2wyZHx8W10pO2ZvcihhPTA7YTxwLmxlbmd0aDthKyspe3ZhciBkLGc9cFthXSx2PXNbZ10sbT1oLmdldEZyb21JZChmLGcsIngiKSx5PWguZ2V0RnJvbUlkKGYsZywieSIpO2Zvcih2P2Q9Y1tnXT12OihkPWNbZ109e30pLmlkPWcsbS5fY291bnRlckF4ZXMucHVzaCh5Ll9pZCkseS5fY291bnRlckF4ZXMucHVzaChtLl9pZCksbS5fc3VicGxvdHNXaXRoLnB1c2goZykseS5fc3VicGxvdHNXaXRoLnB1c2goZyksZC54YXhpcz1tLGQueWF4aXM9eSxkLl9oYXNDbGlwT25BeGlzRmFsc2U9ITEsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgeD10W29dO2lmKHgueGF4aXM9PT1kLnhheGlzLl9pZCYmeC55YXhpcz09PWQueWF4aXMuX2lkJiYhMT09PXguY2xpcG9uYXhpcyl7ZC5faGFzQ2xpcE9uQXhpc0ZhbHNlPSEwO2JyZWFrfX19dmFyIGIsXz1oLmxpc3QoZixudWxsLCEwKTtmb3IoYT0wO2E8Xy5sZW5ndGg7YSsrKXt2YXIgdz1udWxsOyhiPV9bYV0pLm92ZXJsYXlpbmcmJih3PWguZ2V0RnJvbUlkKGYsYi5vdmVybGF5aW5nKSkmJncub3ZlcmxheWluZyYmKGIub3ZlcmxheWluZz0hMSx3PW51bGwpLGIuX21haW5BeGlzPXd8fGIsdyYmKGIuZG9tYWluPXcuZG9tYWluLnNsaWNlKCkpLGIuX2FuY2hvckF4aXM9ImZyZWUiPT09Yi5hbmNob3I/bnVsbDpoLmdldEZyb21JZChmLGIuYW5jaG9yKX1mb3IoYT0wO2E8Xy5sZW5ndGg7YSsrKWlmKChiPV9bYV0pLl9jb3VudGVyQXhlcy5zb3J0KGguaWRTb3J0KSxiLl9zdWJwbG90c1dpdGguc29ydChsLnN1YnBsb3RTb3J0KSxiLl9tYWluU3VicGxvdD1rKGIsZSksYi5fY291bnRlckF4ZXMubGVuZ3RoJiYoYi5zcGlrZW1vZGUmJi0xIT09Yi5zcGlrZW1vZGUuaW5kZXhPZigiYWNyb3NzIil8fGIuYXV0b21hcmdpbiYmYi5taXJyb3ImJiJmcmVlIiE9PWIuYW5jaG9yfHxpLmdldENvbXBvbmVudE1ldGhvZCgicmFuZ2VzbGlkZXIiLCJpc1Zpc2libGUiKShiKSkpe3ZhciBUPTEsTT0wO2ZvcihvPTA7bzxiLl9jb3VudGVyQXhlcy5sZW5ndGg7bysrKXt2YXIgQT1oLmdldEZyb21JZChmLGIuX2NvdW50ZXJBeGVzW29dKTtUPU1hdGgubWluKFQsQS5kb21haW5bMF0pLE09TWF0aC5tYXgoTSxBLmRvbWFpblsxXSl9VDxNJiYoYi5fY291bnRlckRvbWFpbk1pbj1ULGIuX2NvdW50ZXJEb21haW5NYXg9TSl9fSxtLmNsZWFyRXhwYW5kZWRUcmFjZURlZmF1bHRDb2xvcnM9ZnVuY3Rpb24odCl7dmFyIGUscixuO2ZvcihyPVtdLChlPXQuX21vZHVsZS5fY29sb3JBdHRycyl8fCh0Ll9tb2R1bGUuX2NvbG9yQXR0cnM9ZT1bXSxvLmNyYXdsKHQuX21vZHVsZS5hdHRyaWJ1dGVzLGZ1bmN0aW9uKHQsbixhLGkpe3JbaV09bixyLmxlbmd0aD1pKzEsImNvbG9yIj09PXQudmFsVHlwZSYmdm9pZCAwPT09dC5kZmx0JiZlLnB1c2goci5qb2luKCIuIikpfSkpLG49MDtuPGUubGVuZ3RoO24rKyl7bC5uZXN0ZWRQcm9wZXJ0eSh0LCJfaW5wdXQuIitlW25dKS5nZXQoKXx8bC5uZXN0ZWRQcm9wZXJ0eSh0LGVbbl0pLnNldChudWxsKX19LG0uc3VwcGx5RGF0YURlZmF1bHRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLG8sYyx1PW4uX21vZHVsZXMsaD1uLl92aXNpYmxlTW9kdWxlcyxmPW4uX2Jhc2VQbG90TW9kdWxlcyxwPTAsZD0wO2Z1bmN0aW9uIHYodCl7ZS5wdXNoKHQpO3ZhciByPXQuX21vZHVsZTtyJiYobC5wdXNoVW5pcXVlKHUsciksITA9PT10LnZpc2libGUmJmwucHVzaFVuaXF1ZShoLHIpLGwucHVzaFVuaXF1ZShmLHQuX21vZHVsZS5iYXNlUGxvdE1vZHVsZSkscCsrLCExIT09dC5faW5wdXQudmlzaWJsZSYmZCsrKX1uLl90cmFuc2Zvcm1Nb2R1bGVzPVtdO3ZhciB5PXt9LHg9W10sYj0oci50ZW1wbGF0ZXx8e30pLmRhdGF8fHt9LF89cy50cmFjZVRlbXBsYXRlcihiKTtmb3IoYT0wO2E8dC5sZW5ndGg7YSsrKXtpZihjPXRbYV0sKG89Xy5uZXdUcmFjZShjKSkudWlkPW4uX3RyYWNlVWlkc1thXSxtLnN1cHBseVRyYWNlRGVmYXVsdHMoYyxvLGQsbixhKSxvLmluZGV4PWEsby5faW5wdXQ9YyxvLl9leHBhbmRlZEluZGV4PXAsby50cmFuc2Zvcm1zJiZvLnRyYW5zZm9ybXMubGVuZ3RoKWZvcih2YXIgdz0hMSE9PWMudmlzaWJsZSYmITE9PT1vLnZpc2libGUsaz1NKG8sZSxyLG4pLFQ9MDtUPGsubGVuZ3RoO1QrKyl7dmFyIEE9a1tUXSxTPXtfdGVtcGxhdGU6by5fdGVtcGxhdGUsdHlwZTpvLnR5cGUsdWlkOm8udWlkK1R9O3cmJiExPT09QS52aXNpYmxlJiZkZWxldGUgQS52aXNpYmxlLG0uc3VwcGx5VHJhY2VEZWZhdWx0cyhBLFMscCxuLGEpLGcoUyxBKSxTLmluZGV4PWEsUy5faW5wdXQ9YyxTLl9mdWxsSW5wdXQ9byxTLl9leHBhbmRlZEluZGV4PXAsUy5fZXhwYW5kZWRJbnB1dD1BLHYoUyl9ZWxzZSBvLl9mdWxsSW5wdXQ9byxvLl9leHBhbmRlZElucHV0PW8sdihvKTtpLnRyYWNlSXMobywiY2FycGV0QXhpcyIpJiYoeVtvLmNhcnBldF09byksaS50cmFjZUlzKG8sImNhcnBldERlcGVuZGVudCIpJiZ4LnB1c2goYSl9Zm9yKGE9MDthPHgubGVuZ3RoO2ErKylpZigobz1lW3hbYV1dKS52aXNpYmxlKXt2YXIgRT15W28uY2FycGV0XTtvLl9jYXJwZXQ9RSxFJiZFLnZpc2libGU/KG8ueGF4aXM9RS54YXhpcyxvLnlheGlzPUUueWF4aXMpOm8udmlzaWJsZT0hMX19LG0uc3VwcGx5QW5pbWF0aW9uRGVmYXVsdHM9ZnVuY3Rpb24odCl7dmFyIGU7dD10fHx7fTt2YXIgcj17fTtmdW5jdGlvbiBuKGUsbil7cmV0dXJuIGwuY29lcmNlKHR8fHt9LHIsZixlLG4pfWlmKG4oIm1vZGUiKSxuKCJkaXJlY3Rpb24iKSxuKCJmcm9tY3VycmVudCIpLEFycmF5LmlzQXJyYXkodC5mcmFtZSkpZm9yKHIuZnJhbWU9W10sZT0wO2U8dC5mcmFtZS5sZW5ndGg7ZSsrKXIuZnJhbWVbZV09bS5zdXBwbHlBbmltYXRpb25GcmFtZURlZmF1bHRzKHQuZnJhbWVbZV18fHt9KTtlbHNlIHIuZnJhbWU9bS5zdXBwbHlBbmltYXRpb25GcmFtZURlZmF1bHRzKHQuZnJhbWV8fHt9KTtpZihBcnJheS5pc0FycmF5KHQudHJhbnNpdGlvbikpZm9yKHIudHJhbnNpdGlvbj1bXSxlPTA7ZTx0LnRyYW5zaXRpb24ubGVuZ3RoO2UrKylyLnRyYW5zaXRpb25bZV09bS5zdXBwbHlBbmltYXRpb25UcmFuc2l0aW9uRGVmYXVsdHModC50cmFuc2l0aW9uW2VdfHx7fSk7ZWxzZSByLnRyYW5zaXRpb249bS5zdXBwbHlBbmltYXRpb25UcmFuc2l0aW9uRGVmYXVsdHModC50cmFuc2l0aW9ufHx7fSk7cmV0dXJuIHJ9LG0uc3VwcGx5QW5pbWF0aW9uRnJhbWVEZWZhdWx0cz1mdW5jdGlvbih0KXt2YXIgZT17fTtmdW5jdGlvbiByKHIsbil7cmV0dXJuIGwuY29lcmNlKHR8fHt9LGUsZi5mcmFtZSxyLG4pfXJldHVybiByKCJkdXJhdGlvbiIpLHIoInJlZHJhdyIpLGV9LG0uc3VwcGx5QW5pbWF0aW9uVHJhbnNpdGlvbkRlZmF1bHRzPWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gbC5jb2VyY2UodHx8e30sZSxmLnRyYW5zaXRpb24scixuKX1yZXR1cm4gcigiZHVyYXRpb24iKSxyKCJlYXNpbmciKSxlfSxtLnN1cHBseUZyYW1lRGVmYXVsdHM9ZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gcihyLG4pe3JldHVybiBsLmNvZXJjZSh0LGUscCxyLG4pfXJldHVybiByKCJncm91cCIpLHIoIm5hbWUiKSxyKCJ0cmFjZXMiKSxyKCJiYXNlZnJhbWUiKSxyKCJkYXRhIikscigibGF5b3V0IiksZX0sbS5zdXBwbHlUcmFjZURlZmF1bHRzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIG8scz1uLmNvbG9yd2F5fHxjLmRlZmF1bHRzLHU9c1tyJXMubGVuZ3RoXTtmdW5jdGlvbiBoKHIsbil7cmV0dXJuIGwuY29lcmNlKHQsZSxtLmF0dHJpYnV0ZXMscixuKX12YXIgZj1oKCJ2aXNpYmxlIik7aCgidHlwZSIpLGgoIm5hbWUiLG4uX3RyYWNlV29yZCsiICIrYSksaCgidWlyZXZpc2lvbiIsbi51aXJldmlzaW9uKTt2YXIgcD1tLmdldE1vZHVsZShlKTtpZihlLl9tb2R1bGU9cCxwKXt2YXIgZD1wLmJhc2VQbG90TW9kdWxlLGc9ZC5hdHRyLHY9ZC5hdHRyaWJ1dGVzO2lmKGcmJnYpe3ZhciB5PW4uX3N1YnBsb3RzLHg9IiI7aWYoZnx8ImdsMmQiIT09ZC5uYW1lKXtpZihBcnJheS5pc0FycmF5KGcpKWZvcihvPTA7bzxnLmxlbmd0aDtvKyspe3ZhciBiPWdbb10sXz1sLmNvZXJjZSh0LGUsdixiKTt5W2JdJiZsLnB1c2hVbmlxdWUoeVtiXSxfKSx4Kz1ffWVsc2UgeD1sLmNvZXJjZSh0LGUsdixnKTt5W2QubmFtZV0mJmwucHVzaFVuaXF1ZSh5W2QubmFtZV0seCl9fX1yZXR1cm4gZiYmKGgoImN1c3RvbWRhdGEiKSxoKCJpZHMiKSxoKCJtZXRhIiksaS50cmFjZUlzKGUsInNob3dMZWdlbmQiKT8obC5jb2VyY2UodCxlLHAuYXR0cmlidXRlcy5zaG93bGVnZW5kP3AuYXR0cmlidXRlczptLmF0dHJpYnV0ZXMsInNob3dsZWdlbmQiKSxoKCJsZWdlbmRncm91cCIpLGUuX2RmbHRTaG93TGVnZW5kPSEwKTplLl9kZmx0U2hvd0xlZ2VuZD0hMSxwJiZwLnN1cHBseURlZmF1bHRzKHQsZSx1LG4pLGkudHJhY2VJcyhlLCJub09wYWNpdHkiKXx8aCgib3BhY2l0eSIpLGkudHJhY2VJcyhlLCJub3RMZWdlbmRJc29sYXRhYmxlIikmJihlLnZpc2libGU9ISFlLnZpc2libGUpLGkudHJhY2VJcyhlLCJub0hvdmVyIil8fChlLmhvdmVydGVtcGxhdGV8fGwuY29lcmNlSG92ZXJpbmZvKHQsZSxuKSwicGFyY2F0cyIhPT1lLnR5cGUmJmkuZ2V0Q29tcG9uZW50TWV0aG9kKCJmeCIsInN1cHBseURlZmF1bHRzIikodCxlLHUsbikpLHAmJnAuc2VsZWN0UG9pbnRzJiZoKCJzZWxlY3RlZHBvaW50cyIpLG0uc3VwcGx5VHJhbnNmb3JtRGVmYXVsdHModCxlLG4pKSxlfSxtLmhhc01ha2VzRGF0YVRyYW5zZm9ybT1ULG0uc3VwcGx5VHJhbnNmb3JtRGVmYXVsdHM9ZnVuY3Rpb24odCxlLHIpe2lmKGUuX2xlbmd0aHx8VCh0KSl7dmFyIG49ci5fZ2xvYmFsVHJhbnNmb3Jtc3x8W10sYT1yLl90cmFuc2Zvcm1Nb2R1bGVzfHxbXTtpZihBcnJheS5pc0FycmF5KHQudHJhbnNmb3Jtcyl8fDAhPT1uLmxlbmd0aClmb3IodmFyIGk9dC50cmFuc2Zvcm1zfHxbXSxvPW4uY29uY2F0KGkpLHM9ZS50cmFuc2Zvcm1zPVtdLGM9MDtjPG8ubGVuZ3RoO2MrKyl7dmFyIHUsaD1vW2NdLGY9aC50eXBlLHA9eVtmXSxkPSEoaC5fbW9kdWxlJiZoLl9tb2R1bGU9PT1wKSxnPXAmJiJmdW5jdGlvbiI9PXR5cGVvZiBwLnRyYW5zZm9ybTtwfHxsLndhcm4oIlVucmVjb2duaXplZCB0cmFuc2Zvcm0gdHlwZSAiK2YrIi4iKSxwJiZwLnN1cHBseURlZmF1bHRzJiYoZHx8Zyk/KCh1PXAuc3VwcGx5RGVmYXVsdHMoaCxlLHIsdCkpLnR5cGU9Zix1Ll9tb2R1bGU9cCxsLnB1c2hVbmlxdWUoYSxwKSk6dT1sLmV4dGVuZEZsYXQoe30saCkscy5wdXNoKHUpfX19LG0uc3VwcGx5TGF5b3V0R2xvYmFsRGVmYXVsdHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4ocixuKXtyZXR1cm4gbC5jb2VyY2UodCxlLG0ubGF5b3V0QXR0cmlidXRlcyxyLG4pfXZhciBhPXQudGVtcGxhdGU7bC5pc1BsYWluT2JqZWN0KGEpJiYoZS50ZW1wbGF0ZT1hLGUuX3RlbXBsYXRlPWEubGF5b3V0LGUuX2RhdGFUZW1wbGF0ZT1hLmRhdGEpO3ZhciBvPWwuY29lcmNlRm9udChuLCJmb250Iik7bigidGl0bGUudGV4dCIsZS5fZGZsdFRpdGxlLnBsb3QpLGwuY29lcmNlRm9udChuLCJ0aXRsZS5mb250Iix7ZmFtaWx5Om8uZmFtaWx5LHNpemU6TWF0aC5yb3VuZCgxLjQqby5zaXplKSxjb2xvcjpvLmNvbG9yfSksbigidGl0bGUueHJlZiIpLG4oInRpdGxlLnlyZWYiKSxuKCJ0aXRsZS54IiksbigidGl0bGUueSIpLG4oInRpdGxlLnhhbmNob3IiKSxuKCJ0aXRsZS55YW5jaG9yIiksbigidGl0bGUucGFkLnQiKSxuKCJ0aXRsZS5wYWQuciIpLG4oInRpdGxlLnBhZC5iIiksbigidGl0bGUucGFkLmwiKSxuKCJ1bmlmb3JtdGV4dC5tb2RlIikmJm4oInVuaWZvcm10ZXh0Lm1pbnNpemUiKSxuKCJhdXRvc2l6ZSIsISh0LndpZHRoJiZ0LmhlaWdodCkpLG4oIndpZHRoIiksbigiaGVpZ2h0IiksbigibWFyZ2luLmwiKSxuKCJtYXJnaW4uciIpLG4oIm1hcmdpbi50IiksbigibWFyZ2luLmIiKSxuKCJtYXJnaW4ucGFkIiksbigibWFyZ2luLmF1dG9leHBhbmQiKSx0LndpZHRoJiZ0LmhlaWdodCYmbS5zYW5pdGl6ZU1hcmdpbnMoZSksaS5nZXRDb21wb25lbnRNZXRob2QoImdyaWQiLCJzaXplRGVmYXVsdHMiKSh0LGUpLG4oInBhcGVyX2JnY29sb3IiKSxuKCJzZXBhcmF0b3JzIixyLmRlY2ltYWwrci50aG91c2FuZHMpLG4oImhpZGVzb3VyY2VzIiksbigiY29sb3J3YXkiKSxuKCJkYXRhcmV2aXNpb24iKTt2YXIgcz1uKCJ1aXJldmlzaW9uIik7bigiZWRpdHJldmlzaW9uIixzKSxuKCJzZWxlY3Rpb25yZXZpc2lvbiIscyksbigibW9kZWJhci5vcmllbnRhdGlvbiIpLG4oIm1vZGViYXIuYmdjb2xvciIsYy5hZGRPcGFjaXR5KGUucGFwZXJfYmdjb2xvciwuNSkpO3ZhciB1PWMuY29udHJhc3QoYy5yZ2IoZS5tb2RlYmFyLmJnY29sb3IpKTtuKCJtb2RlYmFyLmNvbG9yIixjLmFkZE9wYWNpdHkodSwuMykpLG4oIm1vZGViYXIuYWN0aXZlY29sb3IiLGMuYWRkT3BhY2l0eSh1LC43KSksbigibW9kZWJhci51aXJldmlzaW9uIixzKSxuKCJtZXRhIiksbC5pc1BsYWluT2JqZWN0KHQudHJhbnNpdGlvbikmJihuKCJ0cmFuc2l0aW9uLmR1cmF0aW9uIiksbigidHJhbnNpdGlvbi5lYXNpbmciKSxuKCJ0cmFuc2l0aW9uLm9yZGVyaW5nIikpLGkuZ2V0Q29tcG9uZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVEZWZhdWx0cyIpKHQsZSwiY2FsZW5kYXIiKSxpLmdldENvbXBvbmVudE1ldGhvZCgiZngiLCJzdXBwbHlMYXlvdXRHbG9iYWxEZWZhdWx0cyIpKHQsZSxuKX0sbS5wbG90QXV0b1NpemU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksbz10Ll9jb250ZXh0fHx7fSxzPW8uZnJhbWVNYXJnaW5zLGM9bC5pc1Bsb3REaXYodCk7aWYoYyYmdC5lbWl0KCJwbG90bHlfYXV0b3NpemUiKSxvLmZpbGxGcmFtZSluPXdpbmRvdy5pbm5lcldpZHRoLGk9d2luZG93LmlubmVySGVpZ2h0LGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7ZWxzZXt2YXIgdT1jP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpOnt9O2lmKG49cGFyc2VGbG9hdCh1LndpZHRoKXx8cGFyc2VGbG9hdCh1Lm1heFdpZHRoKXx8ci53aWR0aCxpPXBhcnNlRmxvYXQodS5oZWlnaHQpfHxwYXJzZUZsb2F0KHUubWF4SGVpZ2h0KXx8ci5oZWlnaHQsYShzKSYmcz4wKXt2YXIgaD0xLTIqcztuPU1hdGgucm91bmQoaCpuKSxpPU1hdGgucm91bmQoaCppKX19dmFyIGY9bS5sYXlvdXRBdHRyaWJ1dGVzLndpZHRoLm1pbixwPW0ubGF5b3V0QXR0cmlidXRlcy5oZWlnaHQubWluO248ZiYmKG49ZiksaTxwJiYoaT1wKTt2YXIgZD0hZS53aWR0aCYmTWF0aC5hYnMoci53aWR0aC1uKT4xLGc9IWUuaGVpZ2h0JiZNYXRoLmFicyhyLmhlaWdodC1pKT4xOyhnfHxkKSYmKGQmJihyLndpZHRoPW4pLGcmJihyLmhlaWdodD1pKSksdC5faW5pdGlhbEF1dG9TaXplfHwodC5faW5pdGlhbEF1dG9TaXplPXt3aWR0aDpuLGhlaWdodDppfSksbS5zYW5pdGl6ZU1hcmdpbnMocil9LG0uc3VwcGx5TGF5b3V0TW9kdWxlRGVmYXVsdHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsbyxzLGM9aS5jb21wb25lbnRzUmVnaXN0cnksdT1lLl9iYXNlUGxvdE1vZHVsZXMsaD1pLnN1YnBsb3RzUmVnaXN0cnkuY2FydGVzaWFuO2ZvcihhIGluIGMpKHM9Y1thXSkuaW5jbHVkZUJhc2VQbG90JiZzLmluY2x1ZGVCYXNlUGxvdCh0LGUpO2Zvcih2YXIgZiBpbiB1Lmxlbmd0aHx8dS5wdXNoKGgpLGUuX2hhcygiY2FydGVzaWFuIikmJihpLmdldENvbXBvbmVudE1ldGhvZCgiZ3JpZCIsImNvbnRlbnREZWZhdWx0cyIpKHQsZSksaC5maW5hbGl6ZVN1YnBsb3RzKHQsZSkpLGUuX3N1YnBsb3RzKWUuX3N1YnBsb3RzW2ZdLnNvcnQobC5zdWJwbG90U29ydCk7Zm9yKG89MDtvPHUubGVuZ3RoO28rKykocz11W29dKS5zdXBwbHlMYXlvdXREZWZhdWx0cyYmcy5zdXBwbHlMYXlvdXREZWZhdWx0cyh0LGUscik7dmFyIHA9ZS5fbW9kdWxlcztmb3Iobz0wO288cC5sZW5ndGg7bysrKShzPXBbb10pLnN1cHBseUxheW91dERlZmF1bHRzJiZzLnN1cHBseUxheW91dERlZmF1bHRzKHQsZSxyKTt2YXIgZD1lLl90cmFuc2Zvcm1Nb2R1bGVzO2ZvcihvPTA7bzxkLmxlbmd0aDtvKyspKHM9ZFtvXSkuc3VwcGx5TGF5b3V0RGVmYXVsdHMmJnMuc3VwcGx5TGF5b3V0RGVmYXVsdHModCxlLHIsbik7Zm9yKGEgaW4gYykocz1jW2FdKS5zdXBwbHlMYXlvdXREZWZhdWx0cyYmcy5zdXBwbHlMYXlvdXREZWZhdWx0cyh0LGUscil9LG0ucHVyZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dHx8e307dm9pZCAwIT09ZS5fZ2xjb250YWluZXImJihlLl9nbGNvbnRhaW5lci5zZWxlY3RBbGwoIi5nbC1jYW52YXMiKS5yZW1vdmUoKSxlLl9nbGNvbnRhaW5lci5yZW1vdmUoKSxlLl9nbGNhbnZhcz1udWxsKSxlLl9tb2RlQmFyJiZlLl9tb2RlQmFyLmRlc3Ryb3koKSx0Ll90cmFuc2l0aW9uRGF0YSYmKHQuX3RyYW5zaXRpb25EYXRhLl9pbnRlcnJ1cHRDYWxsYmFja3MmJih0Ll90cmFuc2l0aW9uRGF0YS5faW50ZXJydXB0Q2FsbGJhY2tzLmxlbmd0aD0wKSx0Ll90cmFuc2l0aW9uRGF0YS5fYW5pbWF0aW9uUmFmJiZ3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodC5fdHJhbnNpdGlvbkRhdGEuX2FuaW1hdGlvblJhZikpLGwuY2xlYXJUaHJvdHRsZSgpLGwuY2xlYXJSZXNwb25zaXZlKHQpLGRlbGV0ZSB0LmRhdGEsZGVsZXRlIHQubGF5b3V0LGRlbGV0ZSB0Ll9mdWxsRGF0YSxkZWxldGUgdC5fZnVsbExheW91dCxkZWxldGUgdC5jYWxjZGF0YSxkZWxldGUgdC5mcmFtZXdvcmssZGVsZXRlIHQuZW1wdHksZGVsZXRlIHQuZmlkLGRlbGV0ZSB0LnVuZG9xdWV1ZSxkZWxldGUgdC51bmRvbnVtLGRlbGV0ZSB0LmF1dG9wbGF5LGRlbGV0ZSB0LmNoYW5nZWQsZGVsZXRlIHQuX3Byb21pc2VzLGRlbGV0ZSB0Ll9yZWRyYXdUaW1lcixkZWxldGUgdC5faG1sdW1jb3VudCxkZWxldGUgdC5faG1waXhjb3VudCxkZWxldGUgdC5fdHJhbnNpdGlvbkRhdGEsZGVsZXRlIHQuX3RyYW5zaXRpb25pbmcsZGVsZXRlIHQuX2luaXRpYWxBdXRvU2l6ZSxkZWxldGUgdC5fdHJhbnNpdGlvbmluZ1dpdGhEdXJhdGlvbixkZWxldGUgdC5fZHJhZ2dpbmcsZGVsZXRlIHQuX2RyYWdnZWQsZGVsZXRlIHQuX2RyYWdkYXRhLGRlbGV0ZSB0Ll9ob3ZlcmRhdGEsZGVsZXRlIHQuX3NuYXBzaG90SW5Qcm9ncmVzcyxkZWxldGUgdC5fZWRpdGluZyxkZWxldGUgdC5fbW91c2VEb3duVGltZSxkZWxldGUgdC5fbGVnZW5kTW91c2VEb3duVGltZSx0LnJlbW92ZUFsbExpc3RlbmVycyYmdC5yZW1vdmVBbGxMaXN0ZW5lcnMoKX0sbS5zdHlsZT1mdW5jdGlvbih0KXt2YXIgZSxyPXQuX2Z1bGxMYXlvdXQuX3Zpc2libGVNb2R1bGVzLG49W107Zm9yKGU9MDtlPHIubGVuZ3RoO2UrKyl7dmFyIGE9cltlXTthLnN0eWxlJiZsLnB1c2hVbmlxdWUobixhLnN0eWxlKX1mb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKW5bZV0odCl9LG0uc2FuaXRpemVNYXJnaW5zPWZ1bmN0aW9uKHQpe2lmKHQmJnQubWFyZ2luKXt2YXIgZSxyPXQud2lkdGgsbj10LmhlaWdodCxhPXQubWFyZ2luLGk9ci0oYS5sK2Euciksbz1uLShhLnQrYS5iKTtpPDAmJihlPShyLTEpLyhhLmwrYS5yKSxhLmw9TWF0aC5mbG9vcihlKmEubCksYS5yPU1hdGguZmxvb3IoZSphLnIpKSxvPDAmJihlPShuLTEpLyhhLnQrYS5iKSxhLnQ9TWF0aC5mbG9vcihlKmEudCksYS5iPU1hdGguZmxvb3IoZSphLmIpKX19LG0uY2xlYXJBdXRvTWFyZ2luSWRzPWZ1bmN0aW9uKHQpe3QuX2Z1bGxMYXlvdXQuX3B1c2htYXJnaW5JZHM9e319LG0uYWxsb3dBdXRvTWFyZ2luPWZ1bmN0aW9uKHQsZSl7dC5fZnVsbExheW91dC5fcHVzaG1hcmdpbklkc1tlXT0xfSxtLmF1dG9NYXJnaW49ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuX2Z1bGxMYXlvdXQsYT1uLl9wdXNobWFyZ2luLGk9bi5fcHVzaG1hcmdpbklkcztpZighMSE9PW4ubWFyZ2luLmF1dG9leHBhbmQpe2lmKHIpe3ZhciBvPXIucGFkO2lmKHZvaWQgMD09PW8pe3ZhciBzPW4ubWFyZ2luO289TWF0aC5taW4oMTIscy5sLHMucixzLnQscy5iKX1yLmwrci5yPi41Km4ud2lkdGgmJihsLmxvZygiTWFyZ2luIHB1c2giLGUsImlzIHRvbyBiaWcgaW4geCwgZHJvcHBpbmciKSxyLmw9ci5yPTApLHIuYityLnQ+LjUqbi5oZWlnaHQmJihsLmxvZygiTWFyZ2luIHB1c2giLGUsImlzIHRvbyBiaWcgaW4geSwgZHJvcHBpbmciKSxyLmI9ci50PTApO3ZhciBjPXZvaWQgMCE9PXIueGw/ci54bDpyLngsdT12b2lkIDAhPT1yLnhyP3IueHI6ci54LGg9dm9pZCAwIT09ci55dD9yLnl0OnIueSxmPXZvaWQgMCE9PXIueWI/ci55YjpyLnk7YVtlXT17bDp7dmFsOmMsc2l6ZTpyLmwrb30scjp7dmFsOnUsc2l6ZTpyLnIrb30sYjp7dmFsOmYsc2l6ZTpyLmIrb30sdDp7dmFsOmgsc2l6ZTpyLnQrb319LGlbZV09MX1lbHNlIGRlbGV0ZSBhW2VdLGRlbGV0ZSBpW2VdO2lmKCFuLl9yZXBsb3R0aW5nKXJldHVybiBtLmRvQXV0b01hcmdpbih0KX19LG0uZG9BdXRvTWFyZ2luPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7ZS5fc2l6ZXx8KGUuX3NpemU9e30pLEEoZSk7dmFyIHI9ZS5fc2l6ZSxuPWUubWFyZ2luLG89bC5leHRlbmRGbGF0KHt9LHIpLHM9bi5sLGM9bi5yLHU9bi50LGg9bi5iLGY9ZS53aWR0aCxwPWUuaGVpZ2h0LGQ9ZS5fcHVzaG1hcmdpbixnPWUuX3B1c2htYXJnaW5JZHM7aWYoITEhPT1lLm1hcmdpbi5hdXRvZXhwYW5kKXtmb3IodmFyIHYgaW4gZClnW3ZdfHxkZWxldGUgZFt2XTtmb3IodmFyIHkgaW4gZC5iYXNlPXtsOnt2YWw6MCxzaXplOnN9LHI6e3ZhbDoxLHNpemU6Y30sdDp7dmFsOjEsc2l6ZTp1fSxiOnt2YWw6MCxzaXplOmh9fSxkKXt2YXIgeD1kW3ldLmx8fHt9LGI9ZFt5XS5ifHx7fSxfPXgudmFsLHc9eC5zaXplLGs9Yi52YWwsVD1iLnNpemU7Zm9yKHZhciBNIGluIGQpe2lmKGEodykmJmRbTV0ucil7dmFyIFM9ZFtNXS5yLnZhbCxFPWRbTV0uci5zaXplO2lmKFM+Xyl7dmFyIEw9KHcqUysoRS1mKSpfKS8oUy1fKSxDPShFKigxLV8pKyh3LWYpKigxLVMpKS8oUy1fKTtMPj0wJiZDPj0wJiZmLShMK0MpPjAmJkwrQz5zK2MmJihzPUwsYz1DKX19aWYoYShUKSYmZFtNXS50KXt2YXIgUD1kW01dLnQudmFsLE89ZFtNXS50LnNpemU7aWYoUD5rKXt2YXIgej0oVCpQKyhPLXApKmspLyhQLWspLEk9KE8qKDEtaykrKFQtcCkqKDEtUCkpLyhQLWspO3o+PTAmJkk+PTAmJnAtKEkreik+MCYmeitJPmgrdSYmKGg9eix1PUkpfX19fX1pZihyLmw9TWF0aC5yb3VuZChzKSxyLnI9TWF0aC5yb3VuZChjKSxyLnQ9TWF0aC5yb3VuZCh1KSxyLmI9TWF0aC5yb3VuZChoKSxyLnA9TWF0aC5yb3VuZChuLnBhZCksci53PU1hdGgucm91bmQoZiktci5sLXIucixyLmg9TWF0aC5yb3VuZChwKS1yLnQtci5iLCFlLl9yZXBsb3R0aW5nJiZtLmRpZE1hcmdpbkNoYW5nZShvLHIpKXsiX3JlZHJhd0Zyb21BdXRvTWFyZ2luQ291bnQiaW4gZT9lLl9yZWRyYXdGcm9tQXV0b01hcmdpbkNvdW50Kys6ZS5fcmVkcmF3RnJvbUF1dG9NYXJnaW5Db3VudD0xO3ZhciBEPTMqKDErT2JqZWN0LmtleXMoZykubGVuZ3RoKTtpZihlLl9yZWRyYXdGcm9tQXV0b01hcmdpbkNvdW50PEQpcmV0dXJuIGkuY2FsbCgicGxvdCIsdCk7bC53YXJuKCJUb28gbWFueSBhdXRvLW1hcmdpbiByZWRyYXdzLiIpfX07dmFyIFM9WyJsIiwiciIsInQiLCJiIiwicCIsInciLCJoIl07ZnVuY3Rpb24gRSh0LGUscil7dmFyIG49ITE7dmFyIGE9W20ucHJldmlvdXNQcm9taXNlcyxmdW5jdGlvbigpe2lmKHQuX3RyYW5zaXRpb25EYXRhKXJldHVybiB0Ll90cmFuc2l0aW9uaW5nPSExLGZ1bmN0aW9uKHQpe3ZhciBlPVByb21pc2UucmVzb2x2ZSgpO2lmKCF0KXJldHVybiBlO2Zvcig7dC5sZW5ndGg7KWU9ZS50aGVuKHQuc2hpZnQoKSk7cmV0dXJuIGV9KHQuX3RyYW5zaXRpb25EYXRhLl9pbnRlcnJ1cHRDYWxsYmFja3MpfSxyLnByZXBhcmVGbixtLnJlaG92ZXIsZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfdHJhbnNpdGlvbmluZyIsW10pLG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEpe3QuX3RyYW5zaXRpb25pbmc9ITAsZS5kdXJhdGlvbj4wJiYodC5fdHJhbnNpdGlvbmluZ1dpdGhEdXJhdGlvbj0hMCksdC5fdHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKCl7bj0hMH0pLHIucmVkcmF3JiZ0Ll90cmFuc2l0aW9uRGF0YS5faW50ZXJydXB0Q2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gaS5jYWxsKCJyZWRyYXciLHQpfSksdC5fdHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKCl7dC5lbWl0KCJwbG90bHlfdHJhbnNpdGlvbmludGVycnVwdGVkIixbXSl9KTt2YXIgbz0wLHM9MDtmdW5jdGlvbiBsKCl7cmV0dXJuIG8rKyxmdW5jdGlvbigpe3ZhciBlO3MrKyxufHxzIT09b3x8KGU9YSx0Ll90cmFuc2l0aW9uRGF0YSYmKGZ1bmN0aW9uKHQpe2lmKHQpZm9yKDt0Lmxlbmd0aDspdC5zaGlmdCgpfSh0Ll90cmFuc2l0aW9uRGF0YS5faW50ZXJydXB0Q2FsbGJhY2tzKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7aWYoci5yZWRyYXcpcmV0dXJuIGkuY2FsbCgicmVkcmF3Iix0KX0pLnRoZW4oZnVuY3Rpb24oKXt0Ll90cmFuc2l0aW9uaW5nPSExLHQuX3RyYW5zaXRpb25pbmdXaXRoRHVyYXRpb249ITEsdC5lbWl0KCJwbG90bHlfdHJhbnNpdGlvbmVkIixbXSl9KS50aGVuKGUpKSl9fXIucnVuRm4obCksc2V0VGltZW91dChsKCkpfSl9XSxvPWwuc3luY09yQXN5bmMoYSx0KTtyZXR1cm4gbyYmby50aGVufHwobz1Qcm9taXNlLnJlc29sdmUoKSksby50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KX1tLmRpZE1hcmdpbkNoYW5nZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8Uy5sZW5ndGg7cisrKXt2YXIgbj1TW3JdLGk9dFtuXSxvPWVbbl07aWYoIWEoaSl8fE1hdGguYWJzKG8taSk+MSlyZXR1cm4hMH1yZXR1cm4hMX0sbS5ncmFwaEpzb249ZnVuY3Rpb24odCxlLHIsbixhKXsoYSYmZSYmIXQuX2Z1bGxEYXRhfHxhJiYhZSYmIXQuX2Z1bGxMYXlvdXQpJiZtLnN1cHBseURlZmF1bHRzKHQpO3ZhciBpPWE/dC5fZnVsbERhdGE6dC5kYXRhLG89YT90Ll9mdWxsTGF5b3V0OnQubGF5b3V0LHM9KHQuX3RyYW5zaXRpb25EYXRhfHx7fSkuX2ZyYW1lcztmdW5jdGlvbiBjKHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiBudWxsO2lmKGwuaXNQbGFpbk9iamVjdCh0KSl7dmFyIGUsbixhPXt9O2ZvcihlIGluIHQpaWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbZV0mJi0xPT09WyJfIiwiWyJdLmluZGV4T2YoZS5jaGFyQXQoMCkpKXtpZigia2VlcGRhdGEiPT09cil7aWYoInNyYyI9PT1lLnN1YnN0cihlLmxlbmd0aC0zKSljb250aW51ZX1lbHNlIGlmKCJrZWVwc3RyZWFtIj09PXIpe2lmKCJzdHJpbmciPT10eXBlb2Yobj10W2UrInNyYyJdKSYmbi5pbmRleE9mKCI6Iik+MCYmIWwuaXNQbGFpbk9iamVjdCh0LnN0cmVhbSkpY29udGludWV9ZWxzZSBpZigia2VlcGFsbCIhPT1yJiYic3RyaW5nIj09dHlwZW9mKG49dFtlKyJzcmMiXSkmJm4uaW5kZXhPZigiOiIpPjApY29udGludWU7YVtlXT1jKHRbZV0pfXJldHVybiBhfXJldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGMpOmwuaXNUeXBlZEFycmF5KHQpP2wuc2ltcGxlTWFwKHQsbC5pZGVudGl0eSk6bC5pc0pTRGF0ZSh0KT9sLm1zMkRhdGVUaW1lTG9jYWwoK3QpOnR9dmFyIHU9e2RhdGE6KGl8fFtdKS5tYXAoZnVuY3Rpb24odCl7dmFyIHI9Yyh0KTtyZXR1cm4gZSYmZGVsZXRlIHIuZml0LHJ9KX07cmV0dXJuIGV8fCh1LmxheW91dD1jKG8pKSx0LmZyYW1ld29yayYmdC5mcmFtZXdvcmsuaXNQb2xhciYmKHU9dC5mcmFtZXdvcmsuZ2V0Q29uZmlnKCkpLHMmJih1LmZyYW1lcz1jKHMpKSwib2JqZWN0Ij09PW4/dTpKU09OLnN0cmluZ2lmeSh1KX0sbS5tb2RpZnlGcmFtZXM9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsaT10Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVzLG89dC5fdHJhbnNpdGlvbkRhdGEuX2ZyYW1lSGFzaDtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKXN3aXRjaCgobj1lW3JdKS50eXBlKXtjYXNlInJlcGxhY2UiOmE9bi52YWx1ZTt2YXIgcz0oaVtuLmluZGV4XXx8e30pLm5hbWUsbD1hLm5hbWU7aVtuLmluZGV4XT1vW2xdPWEsbCE9PXMmJihkZWxldGUgb1tzXSxvW2xdPWEpO2JyZWFrO2Nhc2UiaW5zZXJ0IjpvWyhhPW4udmFsdWUpLm5hbWVdPWEsaS5zcGxpY2Uobi5pbmRleCwwLGEpO2JyZWFrO2Nhc2UiZGVsZXRlIjpkZWxldGUgb1soYT1pW24uaW5kZXhdKS5uYW1lXSxpLnNwbGljZShuLmluZGV4LDEpfXJldHVybiBQcm9taXNlLnJlc29sdmUoKX0sbS5jb21wdXRlRnJhbWU9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsaSxvPXQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZUhhc2g7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJjb21wdXRlRnJhbWUgbXVzdCBiZSBnaXZlbiBhIHN0cmluZyBmcmFtZSBuYW1lIik7dmFyIHM9b1tlLnRvU3RyaW5nKCldO2lmKCFzKXJldHVybiExO2Zvcih2YXIgbD1bc10sYz1bcy5uYW1lXTtzLmJhc2VmcmFtZSYmKHM9b1tzLmJhc2VmcmFtZS50b1N0cmluZygpXSkmJi0xPT09Yy5pbmRleE9mKHMubmFtZSk7KWwucHVzaChzKSxjLnB1c2gocy5uYW1lKTtmb3IodmFyIHU9e307cz1sLnBvcCgpOylpZihzLmxheW91dCYmKHUubGF5b3V0PW0uZXh0ZW5kTGF5b3V0KHUubGF5b3V0LHMubGF5b3V0KSkscy5kYXRhKXtpZih1LmRhdGF8fCh1LmRhdGE9W10pLCEobj1zLnRyYWNlcykpZm9yKG49W10scj0wO3I8cy5kYXRhLmxlbmd0aDtyKyspbltyXT1yO2Zvcih1LnRyYWNlc3x8KHUudHJhY2VzPVtdKSxyPTA7cjxzLmRhdGEubGVuZ3RoO3IrKyludWxsIT0oYT1uW3JdKSYmKC0xPT09KGk9dS50cmFjZXMuaW5kZXhPZihhKSkmJihpPXUuZGF0YS5sZW5ndGgsdS50cmFjZXNbaV09YSksdS5kYXRhW2ldPW0uZXh0ZW5kVHJhY2UodS5kYXRhW2ldLHMuZGF0YVtyXSkpfXJldHVybiB1fSxtLnJlY29tcHV0ZUZyYW1lSGFzaD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fdHJhbnNpdGlvbkRhdGEuX2ZyYW1lSGFzaD17fSxyPXQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZXMsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgYT1yW25dO2EmJmEubmFtZSYmKGVbYS5uYW1lXT1hKX19LG0uZXh0ZW5kT2JqZWN0V2l0aENvbnRhaW5lcnM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaSxvLHMsYyx1LGg9bC5leHRlbmREZWVwTm9BcnJheXMoe30sZXx8e30pLGY9bC5leHBhbmRPYmplY3RQYXRocyhoKSxwPXt9O2lmKHImJnIubGVuZ3RoKWZvcihpPTA7aTxyLmxlbmd0aDtpKyspdm9pZCAwPT09KGE9KG49bC5uZXN0ZWRQcm9wZXJ0eShmLHJbaV0pKS5nZXQoKSk/bC5uZXN0ZWRQcm9wZXJ0eShwLHJbaV0pLnNldChudWxsKToobi5zZXQobnVsbCksbC5uZXN0ZWRQcm9wZXJ0eShwLHJbaV0pLnNldChhKSk7aWYodD1sLmV4dGVuZERlZXBOb0FycmF5cyh0fHx7fSxmKSxyJiZyLmxlbmd0aClmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKWlmKGM9bC5uZXN0ZWRQcm9wZXJ0eShwLHJbaV0pLmdldCgpKXtmb3IodT0ocz1sLm5lc3RlZFByb3BlcnR5KHQscltpXSkpLmdldCgpLEFycmF5LmlzQXJyYXkodSl8fCh1PVtdLHMuc2V0KHUpKSxvPTA7bzxjLmxlbmd0aDtvKyspe3ZhciBkPWNbb107dVtvXT1udWxsPT09ZD9udWxsOm0uZXh0ZW5kT2JqZWN0V2l0aENvbnRhaW5lcnModVtvXSxkKX1zLnNldCh1KX1yZXR1cm4gdH0sbS5kYXRhQXJyYXlDb250YWluZXJzPVsidHJhbnNmb3JtcyIsImRpbWVuc2lvbnMiXSxtLmxheW91dEFycmF5Q29udGFpbmVycz1pLmxheW91dEFycmF5Q29udGFpbmVycyxtLmV4dGVuZFRyYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0uZXh0ZW5kT2JqZWN0V2l0aENvbnRhaW5lcnModCxlLG0uZGF0YUFycmF5Q29udGFpbmVycyl9LG0uZXh0ZW5kTGF5b3V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0uZXh0ZW5kT2JqZWN0V2l0aENvbnRhaW5lcnModCxlLG0ubGF5b3V0QXJyYXlDb250YWluZXJzKX0sbS50cmFuc2l0aW9uPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbz17cmVkcmF3OmEucmVkcmF3fSxzPXt9LGM9W107cmV0dXJuIG8ucHJlcGFyZUZuPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPUFycmF5LmlzQXJyYXkoZSk/ZS5sZW5ndGg6MCxpPW4uc2xpY2UoMCxhKSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciB1PWlbb10saD10Ll9mdWxsRGF0YVt1XS5fbW9kdWxlO2lmKGgpe2lmKGguYW5pbWF0YWJsZSl7dmFyIGY9aC5iYXNlUGxvdE1vZHVsZS5uYW1lO3NbZl18fChzW2ZdPVtdKSxzW2ZdLnB1c2godSl9dC5kYXRhW2lbb11dPW0uZXh0ZW5kVHJhY2UodC5kYXRhW2lbb11dLGVbb10pfX12YXIgcD1sLmV4cGFuZE9iamVjdFBhdGhzKGwuZXh0ZW5kRGVlcE5vQXJyYXlzKHt9LHIpKSxkPS9eW3h5XWF4aXNbMC05XSokLztmb3IodmFyIGcgaW4gcClkLnRlc3QoZykmJmRlbGV0ZSBwW2ddLnJhbmdlO20uZXh0ZW5kTGF5b3V0KHQubGF5b3V0LHApLGRlbGV0ZSB0LmNhbGNkYXRhLG0uc3VwcGx5RGVmYXVsdHModCksbS5kb0NhbGNkYXRhKHQpO3ZhciB2PWwuZXhwYW5kT2JqZWN0UGF0aHMocik7aWYodil7dmFyIHk9dC5fZnVsbExheW91dC5fcGxvdHM7Zm9yKHZhciB4IGluIHkpe3ZhciBiPXlbeF0sXz1iLnhheGlzLHc9Yi55YXhpcyxrPV8ucmFuZ2Uuc2xpY2UoKSxUPXcucmFuZ2Uuc2xpY2UoKSxNPW51bGwsQT1udWxsLFM9bnVsbCxFPW51bGw7QXJyYXkuaXNBcnJheSh2W18uX25hbWUrIi5yYW5nZSJdKT9NPXZbXy5fbmFtZSsiLnJhbmdlIl0uc2xpY2UoKTpBcnJheS5pc0FycmF5KCh2W18uX25hbWVdfHx7fSkucmFuZ2UpJiYoTT12W18uX25hbWVdLnJhbmdlLnNsaWNlKCkpLEFycmF5LmlzQXJyYXkodlt3Ll9uYW1lKyIucmFuZ2UiXSk/QT12W3cuX25hbWUrIi5yYW5nZSJdLnNsaWNlKCk6QXJyYXkuaXNBcnJheSgodlt3Ll9uYW1lXXx8e30pLnJhbmdlKSYmKEE9dlt3Ll9uYW1lXS5yYW5nZS5zbGljZSgpKSxrJiZNJiYoXy5yMmwoa1swXSkhPT1fLnIybChNWzBdKXx8Xy5yMmwoa1sxXSkhPT1fLnIybChNWzFdKSkmJihTPXt4cjA6ayx4cjE6TX0pLFQmJkEmJih3LnIybChUWzBdKSE9PXcucjJsKEFbMF0pfHx3LnIybChUWzFdKSE9PXcucjJsKEFbMV0pKSYmKEU9e3lyMDpULHlyMTpBfSksKFN8fEUpJiZjLnB1c2gobC5leHRlbmRGbGF0KHtwbG90aW5mbzpifSxTLEUpKX19cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSxvLnJ1bkZuPWZ1bmN0aW9uKGUpe3ZhciBuLGEsbz10Ll9mdWxsTGF5b3V0Ll9iYXNlUGxvdE1vZHVsZXMsdT1jLmxlbmd0aDtpZihyKWZvcihhPTA7YTxvLmxlbmd0aDthKyspb1thXS50cmFuc2l0aW9uQXhlcyYmb1thXS50cmFuc2l0aW9uQXhlcyh0LGMsaSxlKTtmb3IodmFyIGggaW4gdT8oKG49bC5leHRlbmRGbGF0KHt9LGkpKS5kdXJhdGlvbj0wLGRlbGV0ZSBzLmNhcnRlc2lhbik6bj1pLHMpe3ZhciBmPXNbaF07dC5fZnVsbERhdGFbZlswXV0uX21vZHVsZS5iYXNlUGxvdE1vZHVsZS5wbG90KHQsZixuLGUpfX0sRSh0LGksbyl9LG0udHJhbnNpdGlvbkZyb21SZWFjdD1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10Ll9mdWxsTGF5b3V0LGk9YS50cmFuc2l0aW9uLG89e30scz1bXTtyZXR1cm4gby5wcmVwYXJlRm49ZnVuY3Rpb24oKXt2YXIgdD1hLl9wbG90cztmb3IodmFyIGkgaW4gby5yZWRyYXc9ITEsInNvbWUiPT09ZS5hbmltJiYoby5yZWRyYXc9ITApLCJzb21lIj09PXIuYW5pbSYmKG8ucmVkcmF3PSEwKSx0KXt2YXIgYz10W2ldLHU9Yy54YXhpcyxoPWMueWF4aXMsZj1uW3UuX25hbWVdLnJhbmdlLnNsaWNlKCkscD1uW2guX25hbWVdLnJhbmdlLnNsaWNlKCksZD11LnJhbmdlLnNsaWNlKCksZz1oLnJhbmdlLnNsaWNlKCk7dS5zZXRTY2FsZSgpLGguc2V0U2NhbGUoKTt2YXIgdj1udWxsLG09bnVsbDt1LnIybChmWzBdKT09PXUucjJsKGRbMF0pJiZ1LnIybChmWzFdKT09PXUucjJsKGRbMV0pfHwodj17eHIwOmYseHIxOmR9KSxoLnIybChwWzBdKT09PWgucjJsKGdbMF0pJiZoLnIybChwWzFdKT09PWgucjJsKGdbMV0pfHwobT17eXIwOnAseXIxOmd9KSwodnx8bSkmJnMucHVzaChsLmV4dGVuZEZsYXQoe3Bsb3RpbmZvOmN9LHYsbSkpfXJldHVybiBQcm9taXNlLnJlc29sdmUoKX0sby5ydW5Gbj1mdW5jdGlvbihyKXtmb3IodmFyIG4sYSxvLGM9dC5fZnVsbERhdGEsdT10Ll9mdWxsTGF5b3V0Ll9iYXNlUGxvdE1vZHVsZXMsaD1bXSxmPTA7ZjxjLmxlbmd0aDtmKyspaC5wdXNoKGYpO2Z1bmN0aW9uIHAoKXtmb3IodmFyIGU9MDtlPHUubGVuZ3RoO2UrKyl1W2VdLnRyYW5zaXRpb25BeGVzJiZ1W2VdLnRyYW5zaXRpb25BeGVzKHQscyxuLHIpfWZ1bmN0aW9uIGQoKXtmb3IodmFyIGU9MDtlPHUubGVuZ3RoO2UrKyl1W2VdLnBsb3QodCxvLGEscil9cy5sZW5ndGgmJmUuYW5pbT8idHJhY2VzIGZpcnN0Ij09PWkub3JkZXJpbmc/KG49bC5leHRlbmRGbGF0KHt9LGkse2R1cmF0aW9uOjB9KSxvPWgsYT1pLHNldFRpbWVvdXQocCxpLmR1cmF0aW9uKSxkKCkpOihuPWksbz1udWxsLGE9bC5leHRlbmRGbGF0KHt9LGkse2R1cmF0aW9uOjB9KSxzZXRUaW1lb3V0KGQsbi5kdXJhdGlvbikscCgpKTpzLmxlbmd0aD8obj1pLHAoKSk6ZS5hbmltJiYobz1oLGE9aSxkKCkpfSxFKHQsaSxvKX0sbS5kb0NhbGNkYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhLHMsYz1oLmxpc3QodCksZj10Ll9mdWxsRGF0YSxwPXQuX2Z1bGxMYXlvdXQsZD1uZXcgQXJyYXkoZi5sZW5ndGgpLGc9KHQuY2FsY2RhdGF8fFtdKS5zbGljZSgpO2Zvcih0LmNhbGNkYXRhPWQscC5fbnVtQm94ZXM9MCxwLl9udW1WaW9saW5zPTAscC5fdmlvbGluU2NhbGVHcm91cFN0YXRzPXt9LHQuX2htcGl4Y291bnQ9MCx0Ll9obWx1bWNvdW50PTAscC5fcGllY29sb3JtYXA9e30scC5fc3VuYnVyc3Rjb2xvcm1hcD17fSxwLl90cmVlbWFwY29sb3JtYXA9e30scC5fZnVubmVsYXJlYWNvbG9ybWFwPXt9LGE9MDthPGYubGVuZ3RoO2ErKylBcnJheS5pc0FycmF5KGUpJiYtMT09PWUuaW5kZXhPZihhKSYmKGRbYV09Z1thXSk7Zm9yKGE9MDthPGYubGVuZ3RoO2ErKykocj1mW2FdKS5fYXJyYXlBdHRycz1vLmZpbmRBcnJheUF0dHJpYnV0ZXMociksci5fZXh0cmVtZXM9e307dmFyIHY9cC5fc3VicGxvdHMucG9sYXJ8fFtdO2ZvcihhPTA7YTx2Lmxlbmd0aDthKyspYy5wdXNoKHBbdlthXV0ucmFkaWFsYXhpcyxwW3ZbYV1dLmFuZ3VsYXJheGlzKTtmb3IodmFyIG0gaW4gcC5fY29sb3JBeGVzKXt2YXIgeD1wW21dOyExIT09eC5jYXV0byYmKGRlbGV0ZSB4LmNtaW4sZGVsZXRlIHguY21heCl9dmFyIGI9ITE7ZnVuY3Rpb24gXyhlKXtpZihyPWZbZV0sbj1yLl9tb2R1bGUsITA9PT1yLnZpc2libGUmJnIudHJhbnNmb3Jtcyl7aWYobiYmbi5jYWxjKXt2YXIgYT1uLmNhbGModCxyKTthWzBdJiZhWzBdLnQmJmFbMF0udC5fc2NlbmUmJmRlbGV0ZSBhWzBdLnQuX3NjZW5lLmRpcnR5fWZvcihzPTA7czxyLnRyYW5zZm9ybXMubGVuZ3RoO3MrKyl7dmFyIGk9ci50cmFuc2Zvcm1zW3NdOyhuPXlbaS50eXBlXSkmJm4uY2FsY1RyYW5zZm9ybSYmKHIuX2hhc0NhbGNUcmFuc2Zvcm09ITAsYj0hMCxuLmNhbGNUcmFuc2Zvcm0odCxyLGkpKX19fWZ1bmN0aW9uIHcoZSxhKXtpZihyPWZbZV0sISEobj1yLl9tb2R1bGUpLmlzQ29udGFpbmVyPT09YSl7dmFyIGk9W107aWYoITA9PT1yLnZpc2libGUmJjAhPT1yLl9sZW5ndGgpe2RlbGV0ZSByLl9pbmRleFRvUG9pbnRzO3ZhciBvPXIudHJhbnNmb3Jtc3x8W107Zm9yKHM9by5sZW5ndGgtMTtzPj0wO3MtLSlpZihvW3NdLmVuYWJsZWQpe3IuX2luZGV4VG9Qb2ludHM9b1tzXS5faW5kZXhUb1BvaW50czticmVha31uJiZuLmNhbGMmJihpPW4uY2FsYyh0LHIpKX1BcnJheS5pc0FycmF5KGkpJiZpWzBdfHwoaT1be3g6dSx5OnV9XSksaVswXS50fHwoaVswXS50PXt9KSxpWzBdLnRyYWNlPXIsZFtlXT1pfX1mb3IoQyhjLGYscCksYT0wO2E8Zi5sZW5ndGg7YSsrKXcoYSwhMCk7Zm9yKGE9MDthPGYubGVuZ3RoO2ErKylfKGEpO2ZvcihiJiZDKGMsZixwKSxhPTA7YTxmLmxlbmd0aDthKyspdyhhLCEwKTtmb3IoYT0wO2E8Zi5sZW5ndGg7YSsrKXcoYSwhMSk7UCh0KTt2YXIgaz1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxvLHMsYz1bXTtmdW5jdGlvbiB1KHQscixuKXt2YXIgYT1yLl9pZC5jaGFyQXQoMCk7aWYoImhpc3RvZ3JhbTJkY29udG91ciI9PT10KXt2YXIgaT1yLl9jb3VudGVyQXhlc1swXSxvPWguZ2V0RnJvbUlkKGUsaSkscz0ieCI9PT1hfHwieCI9PT1pJiYiY2F0ZWdvcnkiPT09by50eXBlLGw9InkiPT09YXx8InkiPT09aSYmImNhdGVnb3J5Ij09PW8udHlwZTtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PXR8fDA9PT1lPy0xOnMmJnQ9PT1uW2VdLmxlbmd0aC0xPy0xOmwmJmU9PT1uLmxlbmd0aC0xPy0xOigieSI9PT1hP2U6dCktMX19cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuInkiPT09YT9lOnR9fXZhciBmPXttaW46ZnVuY3Rpb24odCl7cmV0dXJuIGwuYWdnTnVtcyhNYXRoLm1pbixudWxsLHQpfSxtYXg6ZnVuY3Rpb24odCl7cmV0dXJuIGwuYWdnTnVtcyhNYXRoLm1heCxudWxsLHQpfSxzdW06ZnVuY3Rpb24odCl7cmV0dXJuIGwuYWdnTnVtcyhmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9LG51bGwsdCl9LHRvdGFsOmZ1bmN0aW9uKHQpe3JldHVybiBsLmFnZ051bXMoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSxudWxsLHQpfSxtZWFuOmZ1bmN0aW9uKHQpe3JldHVybiBsLm1lYW4odCl9LG1lZGlhbjpmdW5jdGlvbih0KXtyZXR1cm4gbC5tZWRpYW4odCl9fTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgcD10W3JdO2lmKCJjYXRlZ29yeSI9PT1wLnR5cGUpe3ZhciBkPXAuY2F0ZWdvcnlvcmRlci5tYXRjaChMKTtpZihkKXt2YXIgZz1kWzFdLHY9ZFsyXSxtPVtdO2ZvcihuPTA7bjxwLl9jYXRlZ29yaWVzLmxlbmd0aDtuKyspbS5wdXNoKFtwLl9jYXRlZ29yaWVzW25dLFtdXSk7Zm9yKG49MDtuPHAuX3RyYWNlSW5kaWNlcy5sZW5ndGg7bisrKXt2YXIgeT1wLl90cmFjZUluZGljZXNbbl0seD1lLl9mdWxsRGF0YVt5XSxiPXAuX2lkLmNoYXJBdCgwKTtpZighMD09PXgudmlzaWJsZSl7dmFyIF89eC50eXBlO2kudHJhY2VJcyh4LCJoaXN0b2dyYW0iKSYmKGRlbGV0ZSB4Ll94YXV0b0JpbkZpbmlzaGVkLGRlbGV0ZSB4Ll95YXV0b0JpbkZpbmlzaGVkKTt2YXIgdz1lLmNhbGNkYXRhW3ldO2ZvcihhPTA7YTx3Lmxlbmd0aDthKyspe3ZhciBrLFQsTSxBPXdbYV07aWYoInNwbG9tIj09PV8pe3ZhciBTPXguX2F4ZXNEaW1bcC5faWRdO2lmKCJ5Ij09PWIpe3ZhciBFPXguX2RpYWdbU11bMF07RSYmKHA9ZS5fZnVsbExheW91dFtoLmlkMm5hbWUoRSldKX12YXIgQz1BLnRyYWNlLmRpbWVuc2lvbnNbU10udmFsdWVzO2ZvcihvPTA7bzxDLmxlbmd0aDtvKyspZm9yKGs9Q1tvXSxUPXAuX2NhdGVnb3JpZXNNYXBba10scz0wO3M8QS50cmFjZS5kaW1lbnNpb25zLmxlbmd0aDtzKyspaWYocyE9PVMpe3ZhciBQPUEudHJhY2UuZGltZW5zaW9uc1tzXTttW1RdWzFdLnB1c2goUC52YWx1ZXNbb10pfX1lbHNlIGlmKCJzY2F0dGVyZ2wiPT09Xyl7Zm9yKG89MDtvPEEudC54Lmxlbmd0aDtvKyspIngiPT09YiYmKGs9QS50Lnhbb10sVD1rLE09QS50Lnlbb10pLCJ5Ij09PWImJihrPUEudC55W29dLFQ9ayxNPUEudC54W29dKSxtW1RdWzFdLnB1c2goTSk7QS50JiZBLnQuX3NjZW5lJiZkZWxldGUgQS50Ll9zY2VuZS5kaXJ0eX1lbHNlIGlmKEEuaGFzT3duUHJvcGVydHkoInoiKSl7TT1BLno7dmFyIE89dSh4LnR5cGUscCxNKTtmb3Iobz0wO288TS5sZW5ndGg7bysrKWZvcihzPTA7czxNW29dLmxlbmd0aDtzKyspKFQ9TyhzLG8pKSsxJiZtW1RdWzFdLnB1c2goTVtvXVtzXSl9ZWxzZSBmb3IoIngiPT09Yj8oaz1BLnArMT9BLnA6QS54LE09QS5zfHxBLnZ8fEEueSk6InkiPT09YiYmKGs9QS5wKzE/QS5wOkEueSxNPUEuc3x8QS52fHxBLngpLEFycmF5LmlzQXJyYXkoTSl8fChNPVtNXSksbz0wO288TS5sZW5ndGg7bysrKW1ba11bMV0ucHVzaChNW29dKX19fXAuX2NhdGVnb3JpZXNWYWx1ZT1tO3ZhciB6PVtdO2ZvcihuPTA7bjxtLmxlbmd0aDtuKyspei5wdXNoKFttW25dWzBdLGZbZ10obVtuXVsxXSldKTt6LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFsxXS1lWzFdfSkscC5fY2F0ZWdvcmllc0FnZ3JlZ2F0ZWRWYWx1ZT16LHAuX2luaXRpYWxDYXRlZ29yaWVzPXoubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdfSksImRlc2NlbmRpbmciPT09diYmcC5faW5pdGlhbENhdGVnb3JpZXMucmV2ZXJzZSgpLGM9Yy5jb25jYXQocC5zb3J0QnlJbml0aWFsQ2F0ZWdvcmllcygpKX19fXJldHVybiBjfShjLHQpO2lmKGsubGVuZ3RoKXtmb3IocC5fbnVtQm94ZXM9MCxwLl9udW1WaW9saW5zPTAsYT0wO2E8ay5sZW5ndGg7YSsrKXcoa1thXSwhMCk7Zm9yKGE9MDthPGsubGVuZ3RoO2ErKyl3KGtbYV0sITEpO1AodCl9aS5nZXRDb21wb25lbnRNZXRob2QoImZ4IiwiY2FsYyIpKHQpLGkuZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJjYWxjIikodCl9O3ZhciBMPS8odG90YWx8c3VtfG1pbnxtYXh8bWVhbnxtZWRpYW4pIChhc2NlbmRpbmd8ZGVzY2VuZGluZykvO2Z1bmN0aW9uIEModCxlLHIpe3ZhciBuLGEsaSxvPXt9O2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspaT0oYT10W25dKS5faWQsYS5jbGVhckNhbGMoKSwibXVsdGljYXRlZ29yeSI9PT1hLnR5cGUmJmEuc2V0dXBNdWx0aUNhdGVnb3J5KGUpLG9bYS5faWRdPTE7dmFyIHM9ci5fYXhpc01hdGNoR3JvdXBzfHxbXTtmb3Iobj0wO248cy5sZW5ndGg7bisrKWZvcihpIGluIHNbbl0pb1tpXXx8KGE9cltoLmlkMm5hbWUoaSldKS5jbGVhckNhbGMoKX1mdW5jdGlvbiBQKHQpe3ZhciBlLHIsbixhPXQuX2Z1bGxMYXlvdXQsaT1hLl92aXNpYmxlTW9kdWxlcyxvPXt9O2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspe3ZhciBzPWlbcl0sYz1zLmNyb3NzVHJhY2VDYWxjO2lmKGMpe3ZhciB1PXMuYmFzZVBsb3RNb2R1bGUubmFtZTtvW3VdP2wucHVzaFVuaXF1ZShvW3VdLGMpOm9bdV09W2NdfX1mb3IobiBpbiBvKXt2YXIgaD1vW25dLGY9YS5fc3VicGxvdHNbbl07aWYoQXJyYXkuaXNBcnJheShmKSlmb3IoZT0wO2U8Zi5sZW5ndGg7ZSsrKXt2YXIgcD1mW2VdLGQ9ImNhcnRlc2lhbiI9PT1uP2EuX3Bsb3RzW3BdOmFbcF07Zm9yKHI9MDtyPGgubGVuZ3RoO3IrKyloW3JdKHQsZCxwKX1lbHNlIGZvcihyPTA7cjxoLmxlbmd0aDtyKyspaFtyXSh0KX19bS5yZWhvdmVyPWZ1bmN0aW9uKHQpe3QuX2Z1bGxMYXlvdXQuX3JlaG92ZXImJnQuX2Z1bGxMYXlvdXQuX3JlaG92ZXIoKX0sbS5yZWRyYWc9ZnVuY3Rpb24odCl7dC5fZnVsbExheW91dC5fcmVkcmFnJiZ0Ll9mdWxsTGF5b3V0Ll9yZWRyYWcoKX0sbS5nZW5lcmFsVXBkYXRlUGVyVHJhY2VNb2R1bGU9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaT1lLnRyYWNlSGFzaCxvPXt9O2ZvcihhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBzPXJbYV0sYz1zWzBdLnRyYWNlO2MudmlzaWJsZSYmKG9bYy50eXBlXT1vW2MudHlwZV18fFtdLG9bYy50eXBlXS5wdXNoKHMpKX1mb3IodmFyIHUgaW4gaSlpZighb1t1XSl7dmFyIGg9aVt1XVswXTtoWzBdLnRyYWNlLnZpc2libGU9ITEsb1t1XT1baF19Zm9yKHZhciBmIGluIG8pe3ZhciBwPW9bZl07cFswXVswXS50cmFjZS5fbW9kdWxlLnBsb3QodCxlLGwuZmlsdGVyVmlzaWJsZShwKSxuKX1lLnRyYWNlSGFzaD1vfSxtLnBsb3RCYXNlUGxvdD1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBvPWkuZ2V0TW9kdWxlKHQpLHM9ZChlLmNhbGNkYXRhLG8pWzBdO28ucGxvdChlLHMsbixhKX0sbS5jbGVhbkJhc2VQbG90PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9YS5faGFzJiZhLl9oYXModCksbz1yLl9oYXMmJnIuX2hhcyh0KTtpJiYhbyYmYVsiXyIrdCsibGF5ZXIiXS5zZWxlY3RBbGwoImcudHJhY2UiKS5yZW1vdmUoKX19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uL2xpYiI6NzE3LCIuLi9wbG90X2FwaS9wbG90X3NjaGVtYSI6NzU0LCIuLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4uL3JlZ2lzdHJ5Ijo4NDYsIi4vYW5pbWF0aW9uX2F0dHJpYnV0ZXMiOjc2MCwiLi9hdHRyaWJ1dGVzIjo3NjIsIi4vY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4vY29tbWFuZCI6Nzg5LCIuL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuL2ZyYW1lX2F0dHJpYnV0ZXMiOjc5MiwiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODE3LGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDgyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHI6InN1YnBsb3QiLG5hbWU6InBvbGFyIixheGlzTmFtZXM6WyJhbmd1bGFyYXhpcyIsInJhZGlhbGF4aXMiXSxheGlzTmFtZTJkYXRhQXJyYXk6e2FuZ3VsYXJheGlzOiJ0aGV0YSIscmFkaWFsYXhpczoiciJ9LGxheWVyTmFtZXM6WyJkcmFnbGF5ZXIiLCJwbG90YmciLCJiYWNrcGxvdCIsImFuZ3VsYXItZ3JpZCIsInJhZGlhbC1ncmlkIiwiZnJvbnRwbG90IiwiYW5ndWxhci1saW5lIiwicmFkaWFsLWxpbmUiLCJhbmd1bGFyLWF4aXMiLCJyYWRpYWwtYXhpcyJdLHJhZGlhbERyYWdCb3hTaXplOjUwLGFuZ3VsYXJEcmFnQm94U2l6ZTozMCxjb3JuZXJMZW46MjUsY29ybmVySGFsZldpZHRoOjIsTUlORFJBRzo4LE1JTlpPT006MjAsT0ZGRURHRToyMH19LHt9XSw4Mjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9saWIvcG9seWdvbiIpLnRlc3RlcixpPW4uZmluZEluZGV4T2ZNaW4sbz1uLmlzQW5nbGVJbnNpZGVTZWN0b3Iscz1uLmFuZ2xlRGVsdGEsbD1uLmFuZ2xlRGlzdDtmdW5jdGlvbiBjKHQsZSxyLG4pe3ZhciBhLGksbz1uWzBdLHM9blsxXSxsPWgoTWF0aC5zaW4oZSktTWF0aC5zaW4odCkpLGM9aChNYXRoLmNvcyhlKS1NYXRoLmNvcyh0KSksdT1NYXRoLnRhbihyKSxmPWgoMS91KSxwPWwvYyxkPXMtcCpvO3JldHVybiBmP2wmJmM/aT11KihhPWQvKHUtcCkpOmM/KGE9cypmLGk9cyk6KGE9byxpPW8qdSk6bCYmYz8oYT0wLGk9ZCk6Yz8oYT0wLGk9cyk6YT1pPU5hTixbYSxpXX1mdW5jdGlvbiB1KHQsZSxyLGEpe3JldHVybiBuLmlzRnVsbENpcmNsZShbZSxyXSk/ZnVuY3Rpb24odCxlKXt2YXIgcixuPWUubGVuZ3RoLGE9bmV3IEFycmF5KG4rMSk7Zm9yKHI9MDtyPG47cisrKXt2YXIgaT1lW3JdO2Fbcl09W3QqTWF0aC5jb3MoaSksdCpNYXRoLnNpbihpKV19cmV0dXJuIGFbcl09YVswXS5zbGljZSgpLGF9KHQsYSk6ZnVuY3Rpb24odCxlLHIsYSl7dmFyIHMsdSxoPWEubGVuZ3RoLGY9W107ZnVuY3Rpb24gcChlKXtyZXR1cm5bdCpNYXRoLmNvcyhlKSx0Kk1hdGguc2luKGUpXX1mdW5jdGlvbiBkKHQsZSxyKXtyZXR1cm4gYyh0LGUscixwKHQpKX1mdW5jdGlvbiBnKHQpe3JldHVybiBuLm1vZCh0LGgpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIG8odCxbZSxyXSl9dmFyIG09aShhLGZ1bmN0aW9uKHQpe3JldHVybiB2KHQpP2wodCxlKToxLzB9KSx5PWQoYVttXSxhW2cobS0xKV0sZSk7Zm9yKGYucHVzaCh5KSxzPW0sdT0wO3U8aDtzKyssdSsrKXt2YXIgeD1hW2cocyldO2lmKCF2KHgpKWJyZWFrO2YucHVzaChwKHgpKX12YXIgYj1pKGEsZnVuY3Rpb24odCl7cmV0dXJuIHYodCk/bCh0LHIpOjEvMH0pLF89ZChhW2JdLGFbZyhiKzEpXSxyKTtyZXR1cm4gZi5wdXNoKF8pLGYucHVzaChbMCwwXSksZi5wdXNoKGZbMF0uc2xpY2UoKSksZn0odCxlLHIsYSl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gTWF0aC5hYnModCk+MWUtMTA/dDowfWZ1bmN0aW9uIGYodCxlLHIpe2U9ZXx8MCxyPXJ8fDA7Zm9yKHZhciBuPXQubGVuZ3RoLGE9bmV3IEFycmF5KG4pLGk9MDtpPG47aSsrKXt2YXIgbz10W2ldO2FbaV09W2Urb1swXSxyLW9bMV1dfXJldHVybiBhfWUuZXhwb3J0cz17aXNQdEluc2lkZVBvbHlnb246ZnVuY3Rpb24odCxlLHIsbixpKXtpZighbyhlLG4pKXJldHVybiExO3ZhciBzLGw7clswXTxyWzFdPyhzPXJbMF0sbD1yWzFdKToocz1yWzFdLGw9clswXSk7dmFyIGM9YSh1KHMsblswXSxuWzFdLGkpKSxoPWEodShsLG5bMF0sblsxXSxpKSksZj1bdCpNYXRoLmNvcyhlKSx0Kk1hdGguc2luKGUpXTtyZXR1cm4gaC5jb250YWlucyhmKSYmIWMuY29udGFpbnMoZil9LGZpbmRQb2x5Z29uT2Zmc2V0OmZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgYT0xLzAsaT0xLzAsbz11KHQsZSxyLG4pLHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIGw9b1tzXTthPU1hdGgubWluKGEsbFswXSksaT1NYXRoLm1pbihpLC1sWzFdKX1yZXR1cm5bYSxpXX0sZmluZEVuY2xvc2luZ1ZlcnRleEFuZ2xlczpmdW5jdGlvbih0LGUpe3ZhciByPWkoZSxmdW5jdGlvbihlKXt2YXIgcj1zKGUsdCk7cmV0dXJuIHI+MD9yOjEvMH0pLGE9bi5tb2QocisxLGUubGVuZ3RoKTtyZXR1cm5bZVtyXSxlW2FdXX0sZmluZEludGVyc2VjdGlvblhZOmMsZmluZFhZYXRMZW5ndGg6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9LWUqcixpPWUqZSsxLG89MiooZSphLXIpLHM9YSphK3Iqci10KnQsbD1NYXRoLnNxcnQobypvLTQqaSpzKSxjPSgtbytsKS8oMippKSx1PSgtby1sKS8oMippKTtyZXR1cm5bW2MsZSpjK2Erbl0sW3UsZSp1K2Erbl1dfSxjbGFtcFRpbnk6aCxwYXRoUG9seWdvbjpmdW5jdGlvbih0LGUscixuLGEsaSl7cmV0dXJuIk0iK2YodSh0LGUscixuKSxhLGkpLmpvaW4oIkwiKX0scGF0aFBvbHlnb25Bbm51bHVzOmZ1bmN0aW9uKHQsZSxyLG4sYSxpLG8pe3ZhciBzLGw7dDxlPyhzPXQsbD1lKToocz1lLGw9dCk7dmFyIGM9Zih1KHMscixuLGEpLGksbyk7cmV0dXJuIk0iK2YodShsLHIsbixhKSxpLG8pLnJldmVyc2UoKS5qb2luKCJMIikrIk0iK2Muam9pbigiTCIpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9wb2x5Z29uIjo3Mjl9XSw4Mjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vZ2V0X2RhdGEiKS5nZXRTdWJwbG90Q2FsY0RhdGEsYT10KCIuLi8uLi9saWIiKS5jb3VudGVyUmVnZXgsaT10KCIuL3BvbGFyIiksbz10KCIuL2NvbnN0YW50cyIpLHM9by5hdHRyLGw9by5uYW1lLGM9YShsKSx1PXt9O3Vbc109e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDpsLGVkaXRUeXBlOiJjYWxjIn0sZS5leHBvcnRzPXthdHRyOnMsbmFtZTpsLGlkUm9vdDpsLGlkUmVnZXg6YyxhdHRyUmVnZXg6YyxhdHRyaWJ1dGVzOnUsbGF5b3V0QXR0cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxwbG90OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5jYWxjZGF0YSxhPWUuX3N1YnBsb3RzW2xdLG89MDtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXSxjPW4ocixsLHMpLHU9ZVtzXS5fc3VicGxvdDt1fHwodT1pKHQscyksZVtzXS5fc3VicGxvdD11KSx1LnBsb3QoYyxlLHQuX3Byb21pc2VzKX19LGNsZWFuOmZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgYT1uLl9zdWJwbG90c1tsXXx8W10saT1uLl9oYXMmJm4uX2hhcygiZ2wiKSxvPWUuX2hhcyYmZS5faGFzKCJnbCIpLHM9aSYmIW8sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgdT1hW2NdLGg9blt1XS5fc3VicGxvdDtpZighZVt1XSYmaClmb3IodmFyIGYgaW4gaC5mcmFtZXdvcmsucmVtb3ZlKCksaC5sYXllcnNbInJhZGlhbC1heGlzLXRpdGxlIl0ucmVtb3ZlKCksaC5jbGlwUGF0aHMpaC5jbGlwUGF0aHNbZl0ucmVtb3ZlKCk7cyYmaC5fc2NlbmUmJihoLl9zY2VuZS5kZXN0cm95KCksaC5fc2NlbmU9bnVsbCl9fSx0b1NWRzp0KCIuLi9jYXJ0ZXNpYW4iKS50b1NWR319LHsiLi4vLi4vbGliIjo3MTcsIi4uL2NhcnRlc2lhbiI6Nzc2LCIuLi9nZXRfZGF0YSI6ODAwLCIuL2NvbnN0YW50cyI6ODI3LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo4MzAsIi4vbGF5b3V0X2RlZmF1bHRzIjo4MzEsIi4vcG9sYXIiOjgzOH1dLDgzMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxhPXQoIi4uL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyIpLGk9dCgiLi4vZG9tYWluIikuYXR0cmlidXRlcyxvPXQoIi4uLy4uL2xpYiIpLmV4dGVuZEZsYXQscz10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsbD1zKHtjb2xvcjphLmNvbG9yLHNob3dsaW5lOm8oe30sYS5zaG93bGluZSx7ZGZsdDohMH0pLGxpbmVjb2xvcjphLmxpbmVjb2xvcixsaW5ld2lkdGg6YS5saW5ld2lkdGgsc2hvd2dyaWQ6byh7fSxhLnNob3dncmlkLHtkZmx0OiEwfSksZ3JpZGNvbG9yOmEuZ3JpZGNvbG9yLGdyaWR3aWR0aDphLmdyaWR3aWR0aH0sInBsb3QiLCJmcm9tLXJvb3QiKSxjPXMoe3RpY2ttb2RlOmEudGlja21vZGUsbnRpY2tzOmEubnRpY2tzLHRpY2swOmEudGljazAsZHRpY2s6YS5kdGljayx0aWNrdmFsczphLnRpY2t2YWxzLHRpY2t0ZXh0OmEudGlja3RleHQsdGlja3M6YS50aWNrcyx0aWNrbGVuOmEudGlja2xlbix0aWNrd2lkdGg6YS50aWNrd2lkdGgsdGlja2NvbG9yOmEudGlja2NvbG9yLHNob3d0aWNrbGFiZWxzOmEuc2hvd3RpY2tsYWJlbHMsc2hvd3RpY2twcmVmaXg6YS5zaG93dGlja3ByZWZpeCx0aWNrcHJlZml4OmEudGlja3ByZWZpeCxzaG93dGlja3N1ZmZpeDphLnNob3d0aWNrc3VmZml4LHRpY2tzdWZmaXg6YS50aWNrc3VmZml4LHNob3dleHBvbmVudDphLnNob3dleHBvbmVudCxleHBvbmVudGZvcm1hdDphLmV4cG9uZW50Zm9ybWF0LHNlcGFyYXRldGhvdXNhbmRzOmEuc2VwYXJhdGV0aG91c2FuZHMsdGlja2ZvbnQ6YS50aWNrZm9udCx0aWNrYW5nbGU6YS50aWNrYW5nbGUsdGlja2Zvcm1hdDphLnRpY2tmb3JtYXQsdGlja2Zvcm1hdHN0b3BzOmEudGlja2Zvcm1hdHN0b3BzLGxheWVyOmEubGF5ZXJ9LCJwbG90IiwiZnJvbS1yb290IiksdT17dmlzaWJsZTpvKHt9LGEudmlzaWJsZSx7ZGZsdDohMH0pLHR5cGU6byh7fSxhLnR5cGUse3ZhbHVlczpbIi0iLCJsaW5lYXIiLCJsb2ciLCJkYXRlIiwiY2F0ZWdvcnkiXX0pLGF1dG9yYW5nZTpvKHt9LGEuYXV0b3JhbmdlLHtlZGl0VHlwZToicGxvdCJ9KSxyYW5nZW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvemVybyIsIm5vbm5lZ2F0aXZlIiwibm9ybWFsIl0sZGZsdDoidG96ZXJvIixlZGl0VHlwZToiY2FsYyJ9LHJhbmdlOm8oe30sYS5yYW5nZSx7aXRlbXM6W3t2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b3JhbmdlIjohMX19LHt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b3JhbmdlIjohMX19XSxlZGl0VHlwZToicGxvdCJ9KSxjYXRlZ29yeW9yZGVyOmEuY2F0ZWdvcnlvcmRlcixjYXRlZ29yeWFycmF5OmEuY2F0ZWdvcnlhcnJheSxhbmdsZTp7dmFsVHlwZToiYW5nbGUiLGVkaXRUeXBlOiJwbG90In0sc2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY2xvY2t3aXNlIiwiY291bnRlcmNsb2Nrd2lzZSJdLGRmbHQ6ImNsb2Nrd2lzZSIsZWRpdFR5cGU6InBsb3QifSx0aXRsZTp7dGV4dDpvKHt9LGEudGl0bGUudGV4dCx7ZWRpdFR5cGU6InBsb3QiLGRmbHQ6IiJ9KSxmb250Om8oe30sYS50aXRsZS5mb250LHtlZGl0VHlwZToicGxvdCJ9KSxlZGl0VHlwZToicGxvdCJ9LGhvdmVyZm9ybWF0OmEuaG92ZXJmb3JtYXQsdWlyZXZpc2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LGVkaXRUeXBlOiJjYWxjIixfZGVwcmVjYXRlZDp7dGl0bGU6YS5fZGVwcmVjYXRlZC50aXRsZSx0aXRsZWZvbnQ6YS5fZGVwcmVjYXRlZC50aXRsZWZvbnR9fTtvKHUsbCxjKTt2YXIgaD17dmlzaWJsZTpvKHt9LGEudmlzaWJsZSx7ZGZsdDohMH0pLHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIi0iLCJsaW5lYXIiLCJjYXRlZ29yeSJdLGRmbHQ6Ii0iLGVkaXRUeXBlOiJjYWxjIixfbm9UZW1wbGF0aW5nOiEwfSxjYXRlZ29yeW9yZGVyOmEuY2F0ZWdvcnlvcmRlcixjYXRlZ29yeWFycmF5OmEuY2F0ZWdvcnlhcnJheSx0aGV0YXVuaXQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInJhZGlhbnMiLCJkZWdyZWVzIl0sZGZsdDoiZGVncmVlcyIsZWRpdFR5cGU6ImNhbGMifSxwZXJpb2Q6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMiLG1pbjowfSxkaXJlY3Rpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNvdW50ZXJjbG9ja3dpc2UiLCJjbG9ja3dpc2UiXSxkZmx0OiJjb3VudGVyY2xvY2t3aXNlIixlZGl0VHlwZToiY2FsYyJ9LHJvdGF0aW9uOnt2YWxUeXBlOiJhbmdsZSIsZWRpdFR5cGU6ImNhbGMifSxob3ZlcmZvcm1hdDphLmhvdmVyZm9ybWF0LHVpcmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUifSxlZGl0VHlwZToiY2FsYyJ9O28oaCxsLGMpLGUuZXhwb3J0cz17ZG9tYWluOmkoe25hbWU6InBvbGFyIixlZGl0VHlwZToicGxvdCJ9KSxzZWN0b3I6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToicGxvdCJ9LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJwbG90In1dLGRmbHQ6WzAsMzYwXSxlZGl0VHlwZToicGxvdCJ9LGhvbGU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDowLGVkaXRUeXBlOiJwbG90In0sYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJwbG90IixkZmx0Om4uYmFja2dyb3VuZH0scmFkaWFsYXhpczp1LGFuZ3VsYXJheGlzOmgsZ3JpZHNoYXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjaXJjdWxhciIsImxpbmVhciJdLGRmbHQ6ImNpcmN1bGFyIixlZGl0VHlwZToicGxvdCJ9LHVpcmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUifSxlZGl0VHlwZToiY2FsYyJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6NTkxLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi4vZG9tYWluIjo3OTB9XSw4MzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksbz10KCIuLi9zdWJwbG90X2RlZmF1bHRzIikscz10KCIuLi9nZXRfZGF0YSIpLmdldFN1YnBsb3REYXRhLGw9dCgiLi4vY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiKSxjPXQoIi4uL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVsdHMiKSx1PXQoIi4uL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIiksaD10KCIuLi9jYXJ0ZXNpYW4vY2F0ZWdvcnlfb3JkZXJfZGVmYXVsdHMiKSxmPXQoIi4uL2NhcnRlc2lhbi9saW5lX2dyaWRfZGVmYXVsdHMiKSxwPXQoIi4uL2NhcnRlc2lhbi9heGlzX2F1dG90eXBlIiksZD10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksZz10KCIuL3NldF9jb252ZXJ0Iiksdj10KCIuL2NvbnN0YW50cyIpLG09di5heGlzTmFtZXM7ZnVuY3Rpb24geSh0LGUscixvKXt2YXIgcD1yKCJiZ2NvbG9yIik7by5iZ0NvbG9yPWEuY29tYmluZShwLG8ucGFwZXJfYmdjb2xvcik7dmFyIHk9cigic2VjdG9yIik7cigiaG9sZSIpO3ZhciBiLF89cyhvLmZ1bGxEYXRhLHYubmFtZSxvLmlkKSx3PW8ubGF5b3V0T3V0O2Z1bmN0aW9uIGsodCxlKXtyZXR1cm4gcihiKyIuIit0LGUpfWZvcih2YXIgVD0wO1Q8bS5sZW5ndGg7VCsrKXtiPW1bVF0sbi5pc1BsYWluT2JqZWN0KHRbYl0pfHwodFtiXT17fSk7dmFyIE09dFtiXSxBPWkubmV3Q29udGFpbmVyKGUsYik7QS5faWQ9QS5fbmFtZT1iLEEuX2F0dHI9by5pZCsiLiIrYixBLl90cmFjZUluZGljZXM9Xy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuX2V4cGFuZGVkSW5kZXh9KTt2YXIgUz12LmF4aXNOYW1lMmRhdGFBcnJheVtiXSxFPXgoTSxBLGssXyxTKTtoKE0sQSxrLHtheERhdGE6XyxkYXRhQXR0cjpTfSk7dmFyIEwsQyxQPWsoInZpc2libGUiKTtzd2l0Y2goZyhBLGUsdyksaygidWlyZXZpc2lvbiIsZS51aXJldmlzaW9uKSxQJiYoQz0oTD1rKCJjb2xvciIpKT09PU0uY29sb3I/TDpvLmZvbnQuY29sb3IpLEEuX209MSxiKXtjYXNlInJhZGlhbGF4aXMiOnZhciBPPWsoImF1dG9yYW5nZSIsIUEuaXNWYWxpZFJhbmdlKE0ucmFuZ2UpKTtNLmF1dG9yYW5nZT1PLCFPfHwibGluZWFyIiE9PUUmJiItIiE9PUV8fGsoInJhbmdlbW9kZSIpLCJyZXZlcnNlZCI9PT1PJiYoQS5fbT0tMSksaygicmFuZ2UiKSxBLmNsZWFuUmFuZ2UoInJhbmdlIix7ZGZsdFJhbmdlOlswLDFdfSksUCYmKGsoInNpZGUiKSxrKCJhbmdsZSIseVswXSksaygidGl0bGUudGV4dCIpLG4uY29lcmNlRm9udChrLCJ0aXRsZS5mb250Iix7ZmFtaWx5Om8uZm9udC5mYW1pbHksc2l6ZTpNYXRoLnJvdW5kKDEuMipvLmZvbnQuc2l6ZSksY29sb3I6Q30pKTticmVhaztjYXNlImFuZ3VsYXJheGlzIjppZigiZGF0ZSI9PT1FKXtuLmxvZygiUG9sYXIgcGxvdHMgZG8gbm90IHN1cHBvcnQgZGF0ZSBhbmd1bGFyIGF4ZXMgeWV0LiIpO2Zvcih2YXIgej0wO3o8Xy5sZW5ndGg7eisrKV9bel0udmlzaWJsZT0hMTtFPU0udHlwZT1BLnR5cGU9ImxpbmVhciJ9aygibGluZWFyIj09PUU/InRoZXRhdW5pdCI6InBlcmlvZCIpO3ZhciBJPWsoImRpcmVjdGlvbiIpO2soInJvdGF0aW9uIix7Y291bnRlcmNsb2Nrd2lzZTowLGNsb2Nrd2lzZTo5MH1bSV0pfWlmKFApbChNLEEsayxBLnR5cGUpLHUoTSxBLGssQS50eXBlLHt0aWNrU3VmZml4RGZsdDoiZGVncmVlcyI9PT1BLnRoZXRhdW5pdD8iXHhiMCI6dm9pZCAwfSksYyhNLEEsayx7b3V0ZXJUaWNrczohMH0pLGsoInNob3d0aWNrbGFiZWxzIikmJihuLmNvZXJjZUZvbnQoaywidGlja2ZvbnQiLHtmYW1pbHk6by5mb250LmZhbWlseSxzaXplOm8uZm9udC5zaXplLGNvbG9yOkN9KSxrKCJ0aWNrYW5nbGUiKSxrKCJ0aWNrZm9ybWF0IikpLGYoTSxBLGsse2RmbHRDb2xvcjpMLGJnQ29sb3I6by5iZ0NvbG9yLGJsZW5kOjYwLHNob3dMaW5lOiEwLHNob3dHcmlkOiEwLG5vWmVyb0xpbmU6ITAsYXR0cmlidXRlczpkW2JdfSksaygibGF5ZXIiKTsiY2F0ZWdvcnkiIT09RSYmaygiaG92ZXJmb3JtYXQiKSxBLl9pbnB1dD1NfSJjYXRlZ29yeSI9PT1lLmFuZ3VsYXJheGlzLnR5cGUmJnIoImdyaWRzaGFwZSIpfWZ1bmN0aW9uIHgodCxlLHIsbixhKXtpZigiLSI9PT1yKCJ0eXBlIikpe2Zvcih2YXIgaSxvPTA7bzxuLmxlbmd0aDtvKyspaWYobltvXS52aXNpYmxlKXtpPW5bb107YnJlYWt9aSYmaVthXSYmKGUudHlwZT1wKGlbYV0sImdyZWdvcmlhbiIpKSwiLSI9PT1lLnR5cGU/ZS50eXBlPSJsaW5lYXIiOnQudHlwZT1lLnR5cGV9cmV0dXJuIGUudHlwZX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe28odCxlLHIse3R5cGU6di5uYW1lLGF0dHJpYnV0ZXM6ZCxoYW5kbGVEZWZhdWx0czp5LGZvbnQ6ZS5mb250LHBhcGVyX2JnY29sb3I6ZS5wYXBlcl9iZ2NvbG9yLGZ1bGxEYXRhOnIsbGF5b3V0T3V0OmV9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi9jYXJ0ZXNpYW4vYXhpc19hdXRvdHlwZSI6NzY2LCIuLi9jYXJ0ZXNpYW4vY2F0ZWdvcnlfb3JkZXJfZGVmYXVsdHMiOjc2OSwiLi4vY2FydGVzaWFuL2xpbmVfZ3JpZF9kZWZhdWx0cyI6Nzc5LCIuLi9jYXJ0ZXNpYW4vdGlja19sYWJlbF9kZWZhdWx0cyI6Nzg0LCIuLi9jYXJ0ZXNpYW4vdGlja19tYXJrX2RlZmF1bHRzIjo3ODUsIi4uL2NhcnRlc2lhbi90aWNrX3ZhbHVlX2RlZmF1bHRzIjo3ODYsIi4uL2dldF9kYXRhIjo4MDAsIi4uL3N1YnBsb3RfZGVmYXVsdHMiOjg0MCwiLi9jb25zdGFudHMiOjgyNywiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODMwLCIuL3NldF9jb252ZXJ0Ijo4Mzl9XSw4MzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGE9bi5tYXJrZXIsaT10KCIuLi8uLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtbIkFyZWEgdHJhY2VzIGFyZSBkZXByZWNhdGVkISIsIlBsZWFzZSBzd2l0Y2ggdG8gdGhlICpiYXJwb2xhciogdHJhY2UgdHlwZS4iXS5qb2luKCIgIik7ZS5leHBvcnRzPXtyOmkoe30sbi5yLHt9KSx0Omkoe30sbi50LHt9KSxtYXJrZXI6e2NvbG9yOmkoe30sYS5jb2xvcix7fSksc2l6ZTppKHt9LGEuc2l6ZSx7fSksc3ltYm9sOmkoe30sYS5zeW1ib2wse30pLG9wYWNpdHk6aSh7fSxhLm9wYWNpdHkse30pLGVkaXRUeXBlOiJjYWxjIn19fSx7Ii4uLy4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vLi4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMH1dLDgzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGk9dCgiLi4vLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLG89WyJMZWdhY3kgcG9sYXIgY2hhcnRzIGFyZSBkZXByZWNhdGVkISIsIlBsZWFzZSBzd2l0Y2ggdG8gKnBvbGFyKiBzdWJwbG90cy4iXS5qb2luKCIgIikscz1hKHt9LG4uZG9tYWluLHt9KTtmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIGEoe30sZSx7c2hvd2xpbmU6e3ZhbFR5cGU6ImJvb2xlYW4ifSxzaG93dGlja2xhYmVsczp7dmFsVHlwZToiYm9vbGVhbiJ9LHRpY2tvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaG9yaXpvbnRhbCIsInZlcnRpY2FsIl19LHRpY2tsZW46e3ZhbFR5cGU6Im51bWJlciIsbWluOjB9LHRpY2tjb2xvcjp7dmFsVHlwZToiY29sb3IifSx0aWNrc3VmZml4Ont2YWxUeXBlOiJzdHJpbmcifSxlbmRwYWRkaW5nOnt2YWxUeXBlOiJudW1iZXIiLGRlc2NyaXB0aW9uOm99LHZpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4ifX0pfWUuZXhwb3J0cz1pKHtyYWRpYWxheGlzOmwoMCx7cmFuZ2U6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIn0se3ZhbFR5cGU6Im51bWJlciJ9XX0sZG9tYWluOnMsb3JpZW50YXRpb246e3ZhbFR5cGU6Im51bWJlciJ9fSksYW5ndWxhcmF4aXM6bCgwLHtyYW5nZTp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MH0se3ZhbFR5cGU6Im51bWJlciIsZGZsdDozNjB9XX0sZG9tYWluOnN9KSxsYXlvdXQ6e2RpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY2xvY2t3aXNlIiwiY291bnRlcmNsb2Nrd2lzZSJdfSxvcmllbnRhdGlvbjp7dmFsVHlwZToiYW5nbGUifX19LCJwbG90IiwibmVzdGVkIil9LHsiLi4vLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc3fV0sODM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiOyhlLmV4cG9ydHM9dCgiLi9taWNyb3BvbGFyIikpLm1hbmFnZXI9dCgiLi9taWNyb3BvbGFyX21hbmFnZXIiKX0seyIuL21pY3JvcG9sYXIiOjgzNSwiLi9taWNyb3BvbGFyX21hbmFnZXIiOjgzNn1dLDgzNTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi8uLi9saWIiKS5leHRlbmREZWVwQWxsLGk9dCgiLi4vLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLk1JRF9TSElGVCxvPWUuZXhwb3J0cz17dmVyc2lvbjoiMC4yLjIifTtvLkF4aXM9ZnVuY3Rpb24oKXt2YXIgdCxlLHIscyxsPXtkYXRhOltdLGxheW91dDp7fX0sYz17fSx1PXt9LGg9bi5kaXNwYXRjaCgiaG92ZXIiKSxmPXt9O3JldHVybiBmLnJlbmRlcj1mdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oYyl7ZT1jfHxlO3ZhciBoPWwuZGF0YSxmPWwubGF5b3V0Oygic3RyaW5nIj09dHlwZW9mIGV8fGUubm9kZU5hbWUpJiYoZT1uLnNlbGVjdChlKSksZS5kYXR1bShoKS5lYWNoKGZ1bmN0aW9uKGUsbCl7dmFyIGM9ZS5zbGljZSgpO3U9e2RhdGE6by51dGlsLmNsb25lSnNvbihjKSxsYXlvdXQ6by51dGlsLmNsb25lSnNvbihmKX07dmFyIGg9MDtjLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmNvbG9yfHwodC5jb2xvcj1mLmRlZmF1bHRDb2xvclJhbmdlW2hdLGg9KGgrMSklZi5kZWZhdWx0Q29sb3JSYW5nZS5sZW5ndGgpLHQuc3Ryb2tlQ29sb3J8fCh0LnN0cm9rZUNvbG9yPSJMaW5lUGxvdCI9PT10Lmdlb21ldHJ5P3QuY29sb3I6bi5yZ2IodC5jb2xvcikuZGFya2VyKCkudG9TdHJpbmcoKSksdS5kYXRhW2VdLmNvbG9yPXQuY29sb3IsdS5kYXRhW2VdLnN0cm9rZUNvbG9yPXQuc3Ryb2tlQ29sb3IsdS5kYXRhW2VdLnN0cm9rZURhc2g9dC5zdHJva2VEYXNoLHUuZGF0YVtlXS5zdHJva2VTaXplPXQuc3Ryb2tlU2l6ZX0pO3ZhciBwPWMuZmlsdGVyKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC52aXNpYmxlO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygcnx8ITA9PT1yfSksZD0hMSxnPXAubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGQ9ZHx8InVuZGVmaW5lZCIhPXR5cGVvZiB0Lmdyb3VwSWQsdH0pO2lmKGQpe3ZhciB2PW4ubmVzdCgpLmtleShmdW5jdGlvbih0LGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5ncm91cElkP3QuZ3JvdXBJZDoidW5zdGFja2VkIn0pLmVudHJpZXMoZyksbT1bXSx5PXYubWFwKGZ1bmN0aW9uKHQsZSl7aWYoInVuc3RhY2tlZCI9PT10LmtleSlyZXR1cm4gdC52YWx1ZXM7dmFyIHI9dC52YWx1ZXNbMF0uci5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gMH0pO3JldHVybiB0LnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSxuKXt0LnlTdGFjaz1bcl0sbS5wdXNoKHIpLHI9by51dGlsLnN1bUFycmF5cyh0LnIscil9KSx0LnZhbHVlc30pO3A9bi5tZXJnZSh5KX1wLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LnQ9QXJyYXkuaXNBcnJheSh0LnRbMF0pP3QudDpbdC50XSx0LnI9QXJyYXkuaXNBcnJheSh0LnJbMF0pP3QucjpbdC5yXX0pO3ZhciB4PU1hdGgubWluKGYud2lkdGgtZi5tYXJnaW4ubGVmdC1mLm1hcmdpbi5yaWdodCxmLmhlaWdodC1mLm1hcmdpbi50b3AtZi5tYXJnaW4uYm90dG9tKS8yO3g9TWF0aC5tYXgoMTAseCk7dmFyIGIsXz1bZi5tYXJnaW4ubGVmdCt4LGYubWFyZ2luLnRvcCt4XTtiPWQ/WzAsbi5tYXgoby51dGlsLnN1bUFycmF5cyhvLnV0aWwuYXJyYXlMYXN0KHApLnJbMF0sby51dGlsLmFycmF5TGFzdChtKSkpXTpuLmV4dGVudChvLnV0aWwuZmxhdHRlbkFycmF5KHAubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucn0pKSksZi5yYWRpYWxBeGlzLmRvbWFpbiE9by5EQVRBRVhURU5UJiYoYlswXT0wKSxyPW4uc2NhbGUubGluZWFyKCkuZG9tYWluKGYucmFkaWFsQXhpcy5kb21haW4hPW8uREFUQUVYVEVOVCYmZi5yYWRpYWxBeGlzLmRvbWFpbj9mLnJhZGlhbEF4aXMuZG9tYWluOmIpLnJhbmdlKFswLHhdKSx1LmxheW91dC5yYWRpYWxBeGlzLmRvbWFpbj1yLmRvbWFpbigpO3ZhciB3LGs9by51dGlsLmZsYXR0ZW5BcnJheShwLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0LnR9KSksVD0ic3RyaW5nIj09dHlwZW9mIGtbMF07VCYmKGs9by51dGlsLmRlZHVwbGljYXRlKGspLHc9ay5zbGljZSgpLGs9bi5yYW5nZShrLmxlbmd0aCkscD1wLm1hcChmdW5jdGlvbih0LGUpe3ZhciByPXQ7cmV0dXJuIHQudD1ba10sZCYmKHIueVN0YWNrPXQueVN0YWNrKSxyfSkpO3ZhciBNPXAuZmlsdGVyKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIkxpbmVQbG90Ij09PXQuZ2VvbWV0cnl8fCJEb3RQbG90Ij09PXQuZ2VvbWV0cnl9KS5sZW5ndGg9PT1wLmxlbmd0aCxBPW51bGw9PT1mLm5lZWRzRW5kU3BhY2luZz9UfHwhTTpmLm5lZWRzRW5kU3BhY2luZyxTPWYuYW5ndWxhckF4aXMuZG9tYWluJiZmLmFuZ3VsYXJBeGlzLmRvbWFpbiE9by5EQVRBRVhURU5UJiYhVCYmZi5hbmd1bGFyQXhpcy5kb21haW5bMF0+PTA/Zi5hbmd1bGFyQXhpcy5kb21haW46bi5leHRlbnQoayksRT1NYXRoLmFicyhrWzFdLWtbMF0pO00mJiFUJiYoRT0wKTt2YXIgTD1TLnNsaWNlKCk7QSYmVCYmKExbMV0rPUUpO3ZhciBDPWYuYW5ndWxhckF4aXMudGlja3NDb3VudHx8NDtDPjgmJihDPUMvKEMvOCkrQyU4KSxmLmFuZ3VsYXJBeGlzLnRpY2tzU3RlcCYmKEM9KExbMV0tTFswXSkvQyk7dmFyIFA9Zi5hbmd1bGFyQXhpcy50aWNrc1N0ZXB8fChMWzFdLUxbMF0pLyhDKihmLm1pbm9yVGlja3MrMSkpO3cmJihQPU1hdGgubWF4KE1hdGgucm91bmQoUCksMSkpLExbMl18fChMWzJdPVApO3ZhciBPPW4ucmFuZ2UuYXBwbHkodGhpcyxMKTtpZihPPU8ubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC50b1ByZWNpc2lvbigxMikpfSkscz1uLnNjYWxlLmxpbmVhcigpLmRvbWFpbihMLnNsaWNlKDAsMikpLnJhbmdlKCJjbG9ja3dpc2UiPT09Zi5kaXJlY3Rpb24/WzAsMzYwXTpbMzYwLDBdKSx1LmxheW91dC5hbmd1bGFyQXhpcy5kb21haW49cy5kb21haW4oKSx1LmxheW91dC5hbmd1bGFyQXhpcy5lbmRQYWRkaW5nPUE/RTowLCJ1bmRlZmluZWQiPT10eXBlb2YodD1uLnNlbGVjdCh0aGlzKS5zZWxlY3QoInN2Zy5jaGFydC1yb290IikpfHx0LmVtcHR5KCkpe3ZhciB6PShuZXcgRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoIjxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBjbGFzcz0nY2hhcnQtcm9vdCc+JyArICc8ZyBjbGFzcz0nb3V0ZXItZ3JvdXAnPicgKyAnPGcgY2xhc3M9J2NoYXJ0LWdyb3VwJz4nICsgJzxjaXJjbGUgY2xhc3M9J2JhY2tncm91bmQtY2lyY2xlJz48L2NpcmNsZT4nICsgJzxnIGNsYXNzPSdnZW9tZXRyeS1ncm91cCc+PC9nPicgKyAnPGcgY2xhc3M9J3JhZGlhbCBheGlzLWdyb3VwJz4nICsgJzxjaXJjbGUgY2xhc3M9J291dHNpZGUtY2lyY2xlJz48L2NpcmNsZT4nICsgJzwvZz4nICsgJzxnIGNsYXNzPSdhbmd1bGFyIGF4aXMtZ3JvdXAnPjwvZz4nICsgJzxnIGNsYXNzPSdndWlkZXMtZ3JvdXAnPjxsaW5lPjwvbGluZT48Y2lyY2xlIHI9JzAnPjwvY2lyY2xlPjwvZz4nICsgJzwvZz4nICsgJzxnIGNsYXNzPSdsZWdlbmQtZ3JvdXAnPjwvZz4nICsgJzxnIGNsYXNzPSd0b29sdGlwcy1ncm91cCc+PC9nPicgKyAnPGcgY2xhc3M9J3RpdGxlLWdyb3VwJz48dGV4dD48L3RleHQ+PC9nPicgKyAnPC9nPicgKyAnPC9zdmc+IiwiYXBwbGljYXRpb24veG1sIiksST10aGlzLmFwcGVuZENoaWxkKHRoaXMub3duZXJEb2N1bWVudC5pbXBvcnROb2RlKHouZG9jdW1lbnRFbGVtZW50LCEwKSk7dD1uLnNlbGVjdChJKX10LnNlbGVjdCgiLmd1aWRlcy1ncm91cCIpLnN0eWxlKHsicG9pbnRlci1ldmVudHMiOiJub25lIn0pLHQuc2VsZWN0KCIuYW5ndWxhci5heGlzLWdyb3VwIikuc3R5bGUoeyJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSksdC5zZWxlY3QoIi5yYWRpYWwuYXhpcy1ncm91cCIpLnN0eWxlKHsicG9pbnRlci1ldmVudHMiOiJub25lIn0pO3ZhciBELFI9dC5zZWxlY3QoIi5jaGFydC1ncm91cCIpLEY9e2ZpbGw6Im5vbmUiLHN0cm9rZTpmLnRpY2tDb2xvcn0sQj17ImZvbnQtc2l6ZSI6Zi5mb250LnNpemUsImZvbnQtZmFtaWx5IjpmLmZvbnQuZmFtaWx5LGZpbGw6Zi5mb250LmNvbG9yLCJ0ZXh0LXNoYWRvdyI6WyItMXB4IDBweCIsIjFweCAtMXB4IiwiLTFweCAxcHgiLCIxcHggMXB4Il0ubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiAiK3QrIiAwICIrZi5mb250Lm91dGxpbmVDb2xvcn0pLmpvaW4oIiwiKX07aWYoZi5zaG93TGVnZW5kKXtEPXQuc2VsZWN0KCIubGVnZW5kLWdyb3VwIikuYXR0cih7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIitbeCxmLm1hcmdpbi50b3BdKyIpIn0pLnN0eWxlKHtkaXNwbGF5OiJibG9jayJ9KTt2YXIgTj1wLm1hcChmdW5jdGlvbih0LGUpe3ZhciByPW8udXRpbC5jbG9uZUpzb24odCk7cmV0dXJuIHIuc3ltYm9sPSJEb3RQbG90Ij09PXQuZ2VvbWV0cnk/dC5kb3RUeXBlfHwiY2lyY2xlIjoiTGluZVBsb3QiIT10Lmdlb21ldHJ5PyJzcXVhcmUiOiJsaW5lIixyLnZpc2libGVJbkxlZ2VuZD0idW5kZWZpbmVkIj09dHlwZW9mIHQudmlzaWJsZUluTGVnZW5kfHx0LnZpc2libGVJbkxlZ2VuZCxyLmNvbG9yPSJMaW5lUGxvdCI9PT10Lmdlb21ldHJ5P3Quc3Ryb2tlQ29sb3I6dC5jb2xvcixyfSk7by5MZWdlbmQoKS5jb25maWcoe2RhdGE6cC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5uYW1lfHwiRWxlbWVudCIrZX0pLGxlZ2VuZENvbmZpZzphKHt9LG8uTGVnZW5kLmRlZmF1bHRDb25maWcoKS5sZWdlbmRDb25maWcse2NvbnRhaW5lcjpELGVsZW1lbnRzOk4scmV2ZXJzZU9yZGVyOmYubGVnZW5kLnJldmVyc2VPcmRlcn0pfSkoKTt2YXIgaj1ELm5vZGUoKS5nZXRCQm94KCk7eD1NYXRoLm1pbihmLndpZHRoLWoud2lkdGgtZi5tYXJnaW4ubGVmdC1mLm1hcmdpbi5yaWdodCxmLmhlaWdodC1mLm1hcmdpbi50b3AtZi5tYXJnaW4uYm90dG9tKS8yLHg9TWF0aC5tYXgoMTAseCksXz1bZi5tYXJnaW4ubGVmdCt4LGYubWFyZ2luLnRvcCt4XSxyLnJhbmdlKFswLHhdKSx1LmxheW91dC5yYWRpYWxBeGlzLmRvbWFpbj1yLmRvbWFpbigpLEQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrW19bMF0reCxfWzFdLXhdKyIpIil9ZWxzZSBEPXQuc2VsZWN0KCIubGVnZW5kLWdyb3VwIikuc3R5bGUoe2Rpc3BsYXk6Im5vbmUifSk7dC5hdHRyKHt3aWR0aDpmLndpZHRoLGhlaWdodDpmLmhlaWdodH0pLnN0eWxlKHtvcGFjaXR5OmYub3BhY2l0eX0pLFIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrXysiKSIpLnN0eWxlKHtjdXJzb3I6ImNyb3NzaGFpciJ9KTt2YXIgVj1bKGYud2lkdGgtKGYubWFyZ2luLmxlZnQrZi5tYXJnaW4ucmlnaHQrMip4KyhqP2oud2lkdGg6MCkpKS8yLChmLmhlaWdodC0oZi5tYXJnaW4udG9wK2YubWFyZ2luLmJvdHRvbSsyKngpKS8yXTtpZihWWzBdPU1hdGgubWF4KDAsVlswXSksVlsxXT1NYXRoLm1heCgwLFZbMV0pLHQuc2VsZWN0KCIub3V0ZXItZ3JvdXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitWKyIpIiksZi50aXRsZSYmZi50aXRsZS50ZXh0KXt2YXIgVT10LnNlbGVjdCgiZy50aXRsZS1ncm91cCB0ZXh0Iikuc3R5bGUoQikudGV4dChmLnRpdGxlLnRleHQpLHE9VS5ub2RlKCkuZ2V0QkJveCgpO1UuYXR0cih7eDpfWzBdLXEud2lkdGgvMix5Ol9bMV0teC0yMH0pfXZhciBIPXQuc2VsZWN0KCIucmFkaWFsLmF4aXMtZ3JvdXAiKTtpZihmLnJhZGlhbEF4aXMuZ3JpZExpbmVzVmlzaWJsZSl7dmFyIEc9SC5zZWxlY3RBbGwoImNpcmNsZS5ncmlkLWNpcmNsZSIpLmRhdGEoci50aWNrcyg1KSk7Ry5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuYXR0cih7Y2xhc3M6ImdyaWQtY2lyY2xlIn0pLnN0eWxlKEYpLEcuYXR0cigiciIsciksRy5leGl0KCkucmVtb3ZlKCl9SC5zZWxlY3QoImNpcmNsZS5vdXRzaWRlLWNpcmNsZSIpLmF0dHIoe3I6eH0pLnN0eWxlKEYpO3ZhciBZPXQuc2VsZWN0KCJjaXJjbGUuYmFja2dyb3VuZC1jaXJjbGUiKS5hdHRyKHtyOnh9KS5zdHlsZSh7ZmlsbDpmLmJhY2tncm91bmRDb2xvcixzdHJva2U6Zi5zdHJva2V9KTtmdW5jdGlvbiBXKHQsZSl7cmV0dXJuIHModCklMzYwK2Yub3JpZW50YXRpb259aWYoZi5yYWRpYWxBeGlzLnZpc2libGUpe3ZhciBYPW4uc3ZnLmF4aXMoKS5zY2FsZShyKS50aWNrcyg1KS50aWNrU2l6ZSg1KTtILmNhbGwoWCkuYXR0cih7dHJhbnNmb3JtOiJyb3RhdGUoIitmLnJhZGlhbEF4aXMub3JpZW50YXRpb24rIikifSksSC5zZWxlY3RBbGwoIi5kb21haW4iKS5zdHlsZShGKSxILnNlbGVjdEFsbCgiZz50ZXh0IikudGV4dChmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnRleHRDb250ZW50K2YucmFkaWFsQXhpcy50aWNrc1N1ZmZpeH0pLnN0eWxlKEIpLnN0eWxlKHsidGV4dC1hbmNob3IiOiJzdGFydCJ9KS5hdHRyKHt4OjAseTowLGR4OjAsZHk6MCx0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4iaG9yaXpvbnRhbCI9PT1mLnJhZGlhbEF4aXMudGlja09yaWVudGF0aW9uPyJyb3RhdGUoIistZi5yYWRpYWxBeGlzLm9yaWVudGF0aW9uKyIpIHRyYW5zbGF0ZSgiK1swLEJbImZvbnQtc2l6ZSJdXSsiKSI6InRyYW5zbGF0ZSgiK1swLEJbImZvbnQtc2l6ZSJdXSsiKSJ9fSksSC5zZWxlY3RBbGwoImc+bGluZSIpLnN0eWxlKHtzdHJva2U6ImJsYWNrIn0pfXZhciBaPXQuc2VsZWN0KCIuYW5ndWxhci5heGlzLWdyb3VwIikuc2VsZWN0QWxsKCJnLmFuZ3VsYXItdGljayIpLmRhdGEoTyksSj1aLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ndWxhci10aWNrIiwhMCk7Wi5hdHRyKHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4icm90YXRlKCIrVyh0KSsiKSJ9fSkuc3R5bGUoe2Rpc3BsYXk6Zi5hbmd1bGFyQXhpcy52aXNpYmxlPyJibG9jayI6Im5vbmUifSksWi5leGl0KCkucmVtb3ZlKCksSi5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJncmlkLWxpbmUiLCEwKS5jbGFzc2VkKCJtYWpvciIsZnVuY3Rpb24odCxlKXtyZXR1cm4gZSUoZi5taW5vclRpY2tzKzEpPT0wfSkuY2xhc3NlZCgibWlub3IiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIShlJShmLm1pbm9yVGlja3MrMSk9PTApfSkuc3R5bGUoRiksSi5zZWxlY3RBbGwoIi5taW5vciIpLnN0eWxlKHtzdHJva2U6Zi5taW5vclRpY2tDb2xvcn0pLFouc2VsZWN0KCJsaW5lLmdyaWQtbGluZSIpLmF0dHIoe3gxOmYudGlja0xlbmd0aD94LWYudGlja0xlbmd0aDowLHgyOnh9KS5zdHlsZSh7ZGlzcGxheTpmLmFuZ3VsYXJBeGlzLmdyaWRMaW5lc1Zpc2libGU/ImJsb2NrIjoibm9uZSJ9KSxKLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImF4aXMtdGV4dCIsITApLnN0eWxlKEIpO3ZhciBLPVouc2VsZWN0KCJ0ZXh0LmF4aXMtdGV4dCIpLmF0dHIoe3g6eCtmLmxhYmVsT2Zmc2V0LGR5OmkrImVtIix0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXt2YXIgcj1XKHQpLG49eCtmLmxhYmVsT2Zmc2V0LGE9Zi5hbmd1bGFyQXhpcy50aWNrT3JpZW50YXRpb247cmV0dXJuImhvcml6b250YWwiPT1hPyJyb3RhdGUoIistcisiICIrbisiIDApIjoicmFkaWFsIj09YT9yPDI3MCYmcj45MD8icm90YXRlKDE4MCAiK24rIiAwKSI6bnVsbDoicm90YXRlKCIrKHI8PTE4MCYmcj4wPy05MDo5MCkrIiAiK24rIiAwKSJ9fSkuc3R5bGUoeyJ0ZXh0LWFuY2hvciI6Im1pZGRsZSIsZGlzcGxheTpmLmFuZ3VsYXJBeGlzLmxhYmVsc1Zpc2libGU/ImJsb2NrIjoibm9uZSJ9KS50ZXh0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUlKGYubWlub3JUaWNrcysxKSE9MD8iIjp3P3dbdF0rZi5hbmd1bGFyQXhpcy50aWNrc1N1ZmZpeDp0K2YuYW5ndWxhckF4aXMudGlja3NTdWZmaXh9KS5zdHlsZShCKTtmLmFuZ3VsYXJBeGlzLnJld3JpdGVUaWNrcyYmSy50ZXh0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUlKGYubWlub3JUaWNrcysxKSE9MD8iIjpmLmFuZ3VsYXJBeGlzLnJld3JpdGVUaWNrcyh0aGlzLnRleHRDb250ZW50LGUpfSk7dmFyIFE9bi5tYXgoUi5zZWxlY3RBbGwoIi5hbmd1bGFyLXRpY2sgdGV4dCIpWzBdLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0LmdldENUTSgpLmUrdC5nZXRCQm94KCkud2lkdGh9KSk7RC5hdHRyKHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK1t4K1EsZi5tYXJnaW4udG9wXSsiKSJ9KTt2YXIgJD10LnNlbGVjdCgiZy5nZW9tZXRyeS1ncm91cCIpLnNlbGVjdEFsbCgiZyIpLnNpemUoKT4wLHR0PXQuc2VsZWN0KCJnLmdlb21ldHJ5LWdyb3VwIikuc2VsZWN0QWxsKCJnLmdlb21ldHJ5IikuZGF0YShwKTtpZih0dC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoe2NsYXNzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuImdlb21ldHJ5IGdlb21ldHJ5IitlfX0pLHR0LmV4aXQoKS5yZW1vdmUoKSxwWzBdfHwkKXt2YXIgZXQ9W107cC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dmFyIG49e307bi5yYWRpYWxTY2FsZT1yLG4uYW5ndWxhclNjYWxlPXMsbi5jb250YWluZXI9dHQuZmlsdGVyKGZ1bmN0aW9uKHQscil7cmV0dXJuIHI9PWV9KSxuLmdlb21ldHJ5PXQuZ2VvbWV0cnksbi5vcmllbnRhdGlvbj1mLm9yaWVudGF0aW9uLG4uZGlyZWN0aW9uPWYuZGlyZWN0aW9uLG4uaW5kZXg9ZSxldC5wdXNoKHtkYXRhOnQsZ2VvbWV0cnlDb25maWc6bn0pfSk7dmFyIHJ0PW4ubmVzdCgpLmtleShmdW5jdGlvbih0LGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5kYXRhLmdyb3VwSWR8fCJ1bnN0YWNrZWQifSkuZW50cmllcyhldCksbnQ9W107cnQuZm9yRWFjaChmdW5jdGlvbih0LGUpeyJ1bnN0YWNrZWQiPT09dC5rZXk/bnQ9bnQuY29uY2F0KHQudmFsdWVzLm1hcChmdW5jdGlvbih0LGUpe3JldHVyblt0XX0pKTpudC5wdXNoKHQudmFsdWVzKX0pLG50LmZvckVhY2goZnVuY3Rpb24odCxlKXt2YXIgcjtyPUFycmF5LmlzQXJyYXkodCk/dFswXS5nZW9tZXRyeUNvbmZpZy5nZW9tZXRyeTp0Lmdlb21ldHJ5Q29uZmlnLmdlb21ldHJ5O3ZhciBuPXQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEob1tyXS5kZWZhdWx0Q29uZmlnKCksdCl9KTtvW3JdKCkuY29uZmlnKG4pKCl9KX12YXIgYXQsaXQsb3Q9dC5zZWxlY3QoIi5ndWlkZXMtZ3JvdXAiKSxzdD10LnNlbGVjdCgiLnRvb2x0aXBzLWdyb3VwIiksbHQ9by50b29sdGlwUGFuZWwoKS5jb25maWcoe2NvbnRhaW5lcjpzdCxmb250U2l6ZTo4fSkoKSxjdD1vLnRvb2x0aXBQYW5lbCgpLmNvbmZpZyh7Y29udGFpbmVyOnN0LGZvbnRTaXplOjh9KSgpLHV0PW8udG9vbHRpcFBhbmVsKCkuY29uZmlnKHtjb250YWluZXI6c3QsaGFzVGljazohMH0pKCk7aWYoIVQpe3ZhciBodD1vdC5zZWxlY3QoImxpbmUiKS5hdHRyKHt4MTowLHkxOjAseTI6MH0pLnN0eWxlKHtzdHJva2U6ImdyZXkiLCJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSk7Ui5vbigibW91c2Vtb3ZlLmFuZ3VsYXItZ3VpZGUiLGZ1bmN0aW9uKHQsZSl7dmFyIHI9by51dGlsLmdldE1vdXNlUG9zKFkpLmFuZ2xlO2h0LmF0dHIoe3gyOi14LHRyYW5zZm9ybToicm90YXRlKCIrcisiKSJ9KS5zdHlsZSh7b3BhY2l0eTouNX0pO3ZhciBuPShyKzE4MCszNjAtZi5vcmllbnRhdGlvbiklMzYwO2F0PXMuaW52ZXJ0KG4pO3ZhciBhPW8udXRpbC5jb252ZXJ0VG9DYXJ0ZXNpYW4oeCsxMixyKzE4MCk7bHQudGV4dChvLnV0aWwucm91bmQoYXQpKS5tb3ZlKFthWzBdK19bMF0sYVsxXStfWzFdXSl9KS5vbigibW91c2VvdXQuYW5ndWxhci1ndWlkZSIsZnVuY3Rpb24odCxlKXtvdC5zZWxlY3QoImxpbmUiKS5zdHlsZSh7b3BhY2l0eTowfSl9KX12YXIgZnQ9b3Quc2VsZWN0KCJjaXJjbGUiKS5zdHlsZSh7c3Ryb2tlOiJncmV5IixmaWxsOiJub25lIn0pO1Iub24oIm1vdXNlbW92ZS5yYWRpYWwtZ3VpZGUiLGZ1bmN0aW9uKHQsZSl7dmFyIG49by51dGlsLmdldE1vdXNlUG9zKFkpLnJhZGl1cztmdC5hdHRyKHtyOm59KS5zdHlsZSh7b3BhY2l0eTouNX0pLGl0PXIuaW52ZXJ0KG8udXRpbC5nZXRNb3VzZVBvcyhZKS5yYWRpdXMpO3ZhciBhPW8udXRpbC5jb252ZXJ0VG9DYXJ0ZXNpYW4obixmLnJhZGlhbEF4aXMub3JpZW50YXRpb24pO2N0LnRleHQoby51dGlsLnJvdW5kKGl0KSkubW92ZShbYVswXStfWzBdLGFbMV0rX1sxXV0pfSkub24oIm1vdXNlb3V0LnJhZGlhbC1ndWlkZSIsZnVuY3Rpb24odCxlKXtmdC5zdHlsZSh7b3BhY2l0eTowfSksdXQuaGlkZSgpLGx0LmhpZGUoKSxjdC5oaWRlKCl9KSx0LnNlbGVjdEFsbCgiLmdlb21ldHJ5LWdyb3VwIC5tYXJrIikub24oIm1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlLHIpe3ZhciBhPW4uc2VsZWN0KHRoaXMpLGk9dGhpcy5zdHlsZS5maWxsLHM9ImJsYWNrIixsPXRoaXMuc3R5bGUub3BhY2l0eXx8MTtpZihhLmF0dHIoeyJkYXRhLW9wYWNpdHkiOmx9KSxpJiYibm9uZSIhPT1pKXthLmF0dHIoeyJkYXRhLWZpbGwiOml9KSxzPW4uaHNsKGkpLmRhcmtlcigpLnRvU3RyaW5nKCksYS5zdHlsZSh7ZmlsbDpzLG9wYWNpdHk6MX0pO3ZhciBjPXt0Om8udXRpbC5yb3VuZChlWzBdKSxyOm8udXRpbC5yb3VuZChlWzFdKX07VCYmKGMudD13W2VbMF1dKTt2YXIgdT0idDogIitjLnQrIiwgcjogIitjLnIsaD10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9dC5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscD1baC5sZWZ0K2gud2lkdGgvMi1WWzBdLWYubGVmdCxoLnRvcCtoLmhlaWdodC8yLVZbMV0tZi50b3BdO3V0LmNvbmZpZyh7Y29sb3I6c30pLnRleHQodSksdXQubW92ZShwKX1lbHNlIGk9dGhpcy5zdHlsZS5zdHJva2V8fCJibGFjayIsYS5hdHRyKHsiZGF0YS1zdHJva2UiOml9KSxzPW4uaHNsKGkpLmRhcmtlcigpLnRvU3RyaW5nKCksYS5zdHlsZSh7c3Ryb2tlOnMsb3BhY2l0eToxfSl9KS5vbigibW91c2Vtb3ZlLnRvb2x0aXAiLGZ1bmN0aW9uKHQsZSl7aWYoMCE9bi5ldmVudC53aGljaClyZXR1cm4hMTtuLnNlbGVjdCh0aGlzKS5hdHRyKCJkYXRhLWZpbGwiKSYmdXQuc2hvdygpfSkub24oIm1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKHQsZSl7dXQuaGlkZSgpO3ZhciByPW4uc2VsZWN0KHRoaXMpLGE9ci5hdHRyKCJkYXRhLWZpbGwiKTthP3Iuc3R5bGUoe2ZpbGw6YSxvcGFjaXR5OnIuYXR0cigiZGF0YS1vcGFjaXR5Iil9KTpyLnN0eWxlKHtzdHJva2U6ci5hdHRyKCJkYXRhLXN0cm9rZSIpLG9wYWNpdHk6ci5hdHRyKCJkYXRhLW9wYWNpdHkiKX0pfSl9KX0oYyksdGhpc30sZi5jb25maWc9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGw7dmFyIGU9by51dGlsLmNsb25lSnNvbih0KTtyZXR1cm4gZS5kYXRhLmZvckVhY2goZnVuY3Rpb24odCxlKXtsLmRhdGFbZV18fChsLmRhdGFbZV09e30pLGEobC5kYXRhW2VdLG8uQXhpcy5kZWZhdWx0Q29uZmlnKCkuZGF0YVswXSksYShsLmRhdGFbZV0sdCl9KSxhKGwubGF5b3V0LG8uQXhpcy5kZWZhdWx0Q29uZmlnKCkubGF5b3V0KSxhKGwubGF5b3V0LGUubGF5b3V0KSx0aGlzfSxmLmdldExpdmVDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZi5nZXRpbnB1dENvbmZpZz1mdW5jdGlvbigpe3JldHVybiBjfSxmLnJhZGlhbFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiByfSxmLmFuZ3VsYXJTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gc30sZi5zdmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbi5yZWJpbmQoZixoLCJvbiIpLGZ9LG8uQXhpcy5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2RhdGE6W3t0OlsxLDIsMyw0XSxyOlsxMCwxMSwxMiwxM10sbmFtZToiTGluZTEiLGdlb21ldHJ5OiJMaW5lUGxvdCIsY29sb3I6bnVsbCxzdHJva2VEYXNoOiJzb2xpZCIsc3Ryb2tlQ29sb3I6bnVsbCxzdHJva2VTaXplOiIxIix2aXNpYmxlSW5MZWdlbmQ6ITAsb3BhY2l0eToxfV0sbGF5b3V0OntkZWZhdWx0Q29sb3JSYW5nZTpuLnNjYWxlLmNhdGVnb3J5MTAoKS5yYW5nZSgpLHRpdGxlOm51bGwsaGVpZ2h0OjQ1MCx3aWR0aDo1MDAsbWFyZ2luOnt0b3A6NDAscmlnaHQ6NDAsYm90dG9tOjQwLGxlZnQ6NDB9LGZvbnQ6e3NpemU6MTIsY29sb3I6ImdyYXkiLG91dGxpbmVDb2xvcjoid2hpdGUiLGZhbWlseToiVGFob21hLCBzYW5zLXNlcmlmIn0sZGlyZWN0aW9uOiJjbG9ja3dpc2UiLG9yaWVudGF0aW9uOjAsbGFiZWxPZmZzZXQ6MTAscmFkaWFsQXhpczp7ZG9tYWluOm51bGwsb3JpZW50YXRpb246LTQ1LHRpY2tzU3VmZml4OiIiLHZpc2libGU6ITAsZ3JpZExpbmVzVmlzaWJsZTohMCx0aWNrT3JpZW50YXRpb246Imhvcml6b250YWwiLHJld3JpdGVUaWNrczpudWxsfSxhbmd1bGFyQXhpczp7ZG9tYWluOlswLDM2MF0sdGlja3NTdWZmaXg6IiIsdmlzaWJsZTohMCxncmlkTGluZXNWaXNpYmxlOiEwLGxhYmVsc1Zpc2libGU6ITAsdGlja09yaWVudGF0aW9uOiJob3Jpem9udGFsIixyZXdyaXRlVGlja3M6bnVsbCx0aWNrc0NvdW50Om51bGwsdGlja3NTdGVwOm51bGx9LG1pbm9yVGlja3M6MCx0aWNrTGVuZ3RoOm51bGwsdGlja0NvbG9yOiJzaWx2ZXIiLG1pbm9yVGlja0NvbG9yOiIjZWVlIixiYWNrZ3JvdW5kQ29sb3I6Im5vbmUiLG5lZWRzRW5kU3BhY2luZzpudWxsLHNob3dMZWdlbmQ6ITAsbGVnZW5kOntyZXZlcnNlT3JkZXI6ITF9LG9wYWNpdHk6MX19fSxvLnV0aWw9e30sby5EQVRBRVhURU5UPSJkYXRhRXh0ZW50IixvLkFSRUE9IkFyZWFDaGFydCIsby5MSU5FPSJMaW5lUGxvdCIsby5ET1Q9IkRvdFBsb3QiLG8uQkFSPSJCYXJDaGFydCIsby51dGlsLl9vdmVycmlkZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiB0KXIgaW4gZSYmKGVbcl09dFtyXSl9LG8udXRpbC5fZXh0ZW5kPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIHQpZVtyXT10W3JdfSxvLnV0aWwuX3JuZFNuZD1mdW5jdGlvbigpe3JldHVybiAyKk1hdGgucmFuZG9tKCktMSsoMipNYXRoLnJhbmRvbSgpLTEpKygyKk1hdGgucmFuZG9tKCktMSl9LG8udXRpbC5kYXRhRnJvbUVxdWF0aW9uMj1mdW5jdGlvbih0LGUpe3ZhciByPWV8fDY7cmV0dXJuIG4ucmFuZ2UoMCwzNjArcixyKS5tYXAoZnVuY3Rpb24oZSxyKXt2YXIgbj1lKk1hdGguUEkvMTgwO3JldHVybltlLHQobildfSl9LG8udXRpbC5kYXRhRnJvbUVxdWF0aW9uPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1lfHw2LGk9W10sbz1bXTtuLnJhbmdlKDAsMzYwK2EsYSkuZm9yRWFjaChmdW5jdGlvbihlLHIpe3ZhciBuPWUqTWF0aC5QSS8xODAsYT10KG4pO2kucHVzaChlKSxvLnB1c2goYSl9KTt2YXIgcz17dDppLHI6b307cmV0dXJuIHImJihzLm5hbWU9ciksc30sby51dGlsLmVuc3VyZUFycmF5PWZ1bmN0aW9uKHQsZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB0KXJldHVybiBudWxsO3ZhciByPVtdLmNvbmNhdCh0KTtyZXR1cm4gbi5yYW5nZShlKS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gcltlXXx8clswXX0pfSxvLnV0aWwuZmlsbEFycmF5cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe3RbZV09by51dGlsLmVuc3VyZUFycmF5KHRbZV0scil9KSx0fSxvLnV0aWwuY2xvbmVKc29uPWZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX0sby51dGlsLnZhbGlkYXRlS2V5cz1mdW5jdGlvbih0LGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS5zcGxpdCgiLiIpKTt2YXIgcj1lLnNoaWZ0KCk7cmV0dXJuIHRbcl0mJighZS5sZW5ndGh8fG9iakhhc0tleXModFtyXSxlKSl9LG8udXRpbC5zdW1BcnJheXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi56aXAodCxlKS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zdW0odCl9KX0sby51dGlsLmFycmF5TGFzdD1mdW5jdGlvbih0KXtyZXR1cm4gdFt0Lmxlbmd0aC0xXX0sby51dGlsLmFycmF5RXF1YWw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9TWF0aC5tYXgodC5sZW5ndGgsZS5sZW5ndGgsMSk7ci0tID49MCYmdFtyXT09PWVbcl07KTtyZXR1cm4tMj09PXJ9LG8udXRpbC5mbGF0dGVuQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdOyFvLnV0aWwuYXJyYXlFcXVhbChlLHQpOyllPXQsdD1bXS5jb25jYXQuYXBwbHkoW10sdCk7cmV0dXJuIHR9LG8udXRpbC5kZWR1cGxpY2F0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoZnVuY3Rpb24odCxlLHIpe3JldHVybiByLmluZGV4T2YodCk9PWV9KX0sby51dGlsLmNvbnZlcnRUb0NhcnRlc2lhbj1mdW5jdGlvbih0LGUpe3ZhciByPWUqTWF0aC5QSS8xODA7cmV0dXJuW3QqTWF0aC5jb3MociksdCpNYXRoLnNpbihyKV19LG8udXRpbC5yb3VuZD1mdW5jdGlvbih0LGUpe3ZhciByPWV8fDIsbj1NYXRoLnBvdygxMCxyKTtyZXR1cm4gTWF0aC5yb3VuZCh0Km4pL259LG8udXRpbC5nZXRNb3VzZVBvcz1mdW5jdGlvbih0KXt2YXIgZT1uLm1vdXNlKHQubm9kZSgpKSxyPWVbMF0sYT1lWzFdLGk9e307cmV0dXJuIGkueD1yLGkueT1hLGkucG9zPWUsaS5hbmdsZT0xODAqKE1hdGguYXRhbjIoYSxyKStNYXRoLlBJKS9NYXRoLlBJLGkucmFkaXVzPU1hdGguc3FydChyKnIrYSphKSxpfSxvLnV0aWwuZHVwbGljYXRlc0NvdW50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPXt9LG49e30sYT0wLGk9dC5sZW5ndGg7YTxpO2ErKykoZT10W2FdKWluIHI/KHJbZV0rKyxuW2VdPXJbZV0pOnJbZV09MTtyZXR1cm4gbn0sby51dGlsLmR1cGxpY2F0ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKG8udXRpbC5kdXBsaWNhdGVzQ291bnQodCkpfSxvLnV0aWwudHJhbnNsYXRvcj1mdW5jdGlvbih0LGUscixuKXtpZihuKXt2YXIgYT1yLnNsaWNlKCk7cj1lLGU9YX12YXIgaT1lLnJlZHVjZShmdW5jdGlvbih0LGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdClyZXR1cm4gdFtlXX0sdCk7InVuZGVmaW5lZCIhPXR5cGVvZiBpJiYoZS5yZWR1Y2UoZnVuY3Rpb24odCxyLG4pe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdClyZXR1cm4gbj09PWUubGVuZ3RoLTEmJmRlbGV0ZSB0W3JdLHRbcl19LHQpLHIucmVkdWNlKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHRbZV0mJih0W2VdPXt9KSxuPT09ci5sZW5ndGgtMSYmKHRbZV09aSksdFtlXX0sdCkpfSxvLlBvbHlDaGFydD1mdW5jdGlvbigpe3ZhciB0PVtvLlBvbHlDaGFydC5kZWZhdWx0Q29uZmlnKCldLGU9bi5kaXNwYXRjaCgiaG92ZXIiKSxyPXtzb2xpZDoibm9uZSIsZGFzaDpbNSwyXSxkb3Q6WzIsNV19O2Z1bmN0aW9uIGkoKXt2YXIgZT10WzBdLmdlb21ldHJ5Q29uZmlnLGE9ZS5jb250YWluZXI7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1uLnNlbGVjdChhKSksYS5kYXR1bSh0KS5lYWNoKGZ1bmN0aW9uKHQsYSl7dmFyIGk9ISF0WzBdLmRhdGEueVN0YWNrLG89dC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gaT9uLnppcCh0LmRhdGEudFswXSx0LmRhdGEuclswXSx0LmRhdGEueVN0YWNrWzBdKTpuLnppcCh0LmRhdGEudFswXSx0LmRhdGEuclswXSl9KSxzPWUuYW5ndWxhclNjYWxlLGw9ZS5yYWRpYWxTY2FsZS5kb21haW4oKVswXSxjPXtiYXI6ZnVuY3Rpb24ocixhLGkpe3ZhciBvPXRbaV0uZGF0YSxsPWUucmFkaWFsU2NhbGUoclsxXSktZS5yYWRpYWxTY2FsZSgwKSxjPWUucmFkaWFsU2NhbGUoclsyXXx8MCksdT1vLmJhcldpZHRoO24uc2VsZWN0KHRoaXMpLmF0dHIoe2NsYXNzOiJtYXJrIGJhciIsZDoiTSIrW1tsK2MsLXUvMl0sW2wrYyx1LzJdLFtjLHUvMl0sW2MsLXUvMl1dLmpvaW4oIkwiKSsiWiIsdHJhbnNmb3JtOmZ1bmN0aW9uKHQscil7cmV0dXJuInJvdGF0ZSgiKyhlLm9yaWVudGF0aW9uK3ModFswXSkpKyIpIn19KX19O2MuZG90PWZ1bmN0aW9uKHIsYSxpKXt2YXIgbz1yWzJdP1tyWzBdLHJbMV0rclsyXV06cixzPW4uc3ZnLnN5bWJvbCgpLnNpemUodFtpXS5kYXRhLmRvdFNpemUpLnR5cGUodFtpXS5kYXRhLmRvdFR5cGUpKHIsYSk7bi5zZWxlY3QodGhpcykuYXR0cih7Y2xhc3M6Im1hcmsgZG90IixkOnMsdHJhbnNmb3JtOmZ1bmN0aW9uKHQscil7dmFyIG4sYSxpLHM9KG49ZnVuY3Rpb24odCxyKXt2YXIgbj1lLnJhZGlhbFNjYWxlKHRbMV0pLGE9KGUuYW5ndWxhclNjYWxlKHRbMF0pK2Uub3JpZW50YXRpb24pKk1hdGguUEkvMTgwO3JldHVybntyOm4sdDphfX0obyksYT1uLnIqTWF0aC5jb3Mobi50KSxpPW4ucipNYXRoLnNpbihuLnQpLHt4OmEseTppfSk7cmV0dXJuInRyYW5zbGF0ZSgiK1tzLngscy55XSsiKSJ9fSl9O3ZhciB1PW4uc3ZnLmxpbmUucmFkaWFsKCkuaW50ZXJwb2xhdGUodFswXS5kYXRhLmxpbmVJbnRlcnBvbGF0aW9uKS5yYWRpdXMoZnVuY3Rpb24odCl7cmV0dXJuIGUucmFkaWFsU2NhbGUodFsxXSl9KS5hbmdsZShmdW5jdGlvbih0KXtyZXR1cm4gZS5hbmd1bGFyU2NhbGUodFswXSkqTWF0aC5QSS8xODB9KTtjLmxpbmU9ZnVuY3Rpb24ocixhLGkpe3ZhciBzPXJbMl0/b1tpXS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5bdFswXSx0WzFdK3RbMl1dfSk6b1tpXTtpZihuLnNlbGVjdCh0aGlzKS5lYWNoKGMuZG90KS5zdHlsZSh7b3BhY2l0eTpmdW5jdGlvbihlLHIpe3JldHVybit0W2ldLmRhdGEuZG90VmlzaWJsZX0sZmlsbDpkLnN0cm9rZShyLGEsaSl9KS5hdHRyKHtjbGFzczoibWFyayBkb3QifSksIShhPjApKXt2YXIgbD1uLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLnNlbGVjdEFsbCgicGF0aC5saW5lIikuZGF0YShbMF0pO2wuZW50ZXIoKS5pbnNlcnQoInBhdGgiKSxsLmF0dHIoe2NsYXNzOiJsaW5lIixkOnUocyksdHJhbnNmb3JtOmZ1bmN0aW9uKHQscil7cmV0dXJuInJvdGF0ZSgiKyhlLm9yaWVudGF0aW9uKzkwKSsiKSJ9LCJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSkuc3R5bGUoe2ZpbGw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZC5maWxsKHIsYSxpKX0sImZpbGwtb3BhY2l0eSI6MCxzdHJva2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZC5zdHJva2UocixhLGkpfSwic3Ryb2tlLXdpZHRoIjpmdW5jdGlvbih0LGUpe3JldHVybiBkWyJzdHJva2Utd2lkdGgiXShyLGEsaSl9LCJzdHJva2UtZGFzaGFycmF5IjpmdW5jdGlvbih0LGUpe3JldHVybiBkWyJzdHJva2UtZGFzaGFycmF5Il0ocixhLGkpfSxvcGFjaXR5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGQub3BhY2l0eShyLGEsaSl9LGRpc3BsYXk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZC5kaXNwbGF5KHIsYSxpKX19KX19O3ZhciBoPWUuYW5ndWxhclNjYWxlLnJhbmdlKCksZj1NYXRoLmFicyhoWzFdLWhbMF0pL29bMF0ubGVuZ3RoKk1hdGguUEkvMTgwLHA9bi5zdmcuYXJjKCkuc3RhcnRBbmdsZShmdW5jdGlvbih0KXtyZXR1cm4tZi8yfSkuZW5kQW5nbGUoZnVuY3Rpb24odCl7cmV0dXJuIGYvMn0pLmlubmVyUmFkaXVzKGZ1bmN0aW9uKHQpe3JldHVybiBlLnJhZGlhbFNjYWxlKGwrKHRbMl18fDApKX0pLm91dGVyUmFkaXVzKGZ1bmN0aW9uKHQpe3JldHVybiBlLnJhZGlhbFNjYWxlKGwrKHRbMl18fDApKStlLnJhZGlhbFNjYWxlKHRbMV0pfSk7Yy5hcmM9ZnVuY3Rpb24odCxyLGEpe24uc2VsZWN0KHRoaXMpLmF0dHIoe2NsYXNzOiJtYXJrIGFyYyIsZDpwLHRyYW5zZm9ybTpmdW5jdGlvbih0LHIpe3JldHVybiJyb3RhdGUoIisoZS5vcmllbnRhdGlvbitzKHRbMF0pKzkwKSsiKSJ9fSl9O3ZhciBkPXtmaWxsOmZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdFtuXS5kYXRhLmNvbG9yfSxzdHJva2U6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0W25dLmRhdGEuc3Ryb2tlQ29sb3J9LCJzdHJva2Utd2lkdGgiOmZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdFtuXS5kYXRhLnN0cm9rZVNpemUrInB4In0sInN0cm9rZS1kYXNoYXJyYXkiOmZ1bmN0aW9uKGUsbixhKXtyZXR1cm4gclt0W2FdLmRhdGEuc3Ryb2tlRGFzaF19LG9wYWNpdHk6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0W25dLmRhdGEub3BhY2l0eX0sZGlzcGxheTpmdW5jdGlvbihlLHIsbil7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB0W25dLmRhdGEudmlzaWJsZXx8dFtuXS5kYXRhLnZpc2libGU/ImJsb2NrIjoibm9uZSJ9fSxnPW4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5sYXllciIpLmRhdGEobyk7Zy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoe2NsYXNzOiJsYXllciJ9KTt2YXIgdj1nLnNlbGVjdEFsbCgicGF0aC5tYXJrIikuZGF0YShmdW5jdGlvbih0LGUpe3JldHVybiB0fSk7di5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoe2NsYXNzOiJtYXJrIn0pLHYuc3R5bGUoZCkuZWFjaChjW2UuZ2VvbWV0cnlUeXBlXSksdi5leGl0KCkucmVtb3ZlKCksZy5leGl0KCkucmVtb3ZlKCl9KX1yZXR1cm4gaS5jb25maWc9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUuZm9yRWFjaChmdW5jdGlvbihlLHIpe3Rbcl18fCh0W3JdPXt9KSxhKHRbcl0sby5Qb2x5Q2hhcnQuZGVmYXVsdENvbmZpZygpKSxhKHRbcl0sZSl9KSx0aGlzKTp0fSxpLmdldENvbG9yU2NhbGU9ZnVuY3Rpb24oKXt9LG4ucmViaW5kKGksZSwib24iKSxpfSxvLlBvbHlDaGFydC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue2RhdGE6e25hbWU6Imdlb20xIix0OltbMSwyLDMsNF1dLHI6W1sxLDIsMyw0XV0sZG90VHlwZToiY2lyY2xlIixkb3RTaXplOjY0LGRvdFZpc2libGU6ITEsYmFyV2lkdGg6MjAsY29sb3I6IiNmZmE1MDAiLHN0cm9rZVNpemU6MSxzdHJva2VDb2xvcjoic2lsdmVyIixzdHJva2VEYXNoOiJzb2xpZCIsb3BhY2l0eToxLGluZGV4OjAsdmlzaWJsZTohMCx2aXNpYmxlSW5MZWdlbmQ6ITB9LGdlb21ldHJ5Q29uZmlnOntnZW9tZXRyeToiTGluZVBsb3QiLGdlb21ldHJ5VHlwZToiYXJjIixkaXJlY3Rpb246ImNsb2Nrd2lzZSIsb3JpZW50YXRpb246MCxjb250YWluZXI6ImJvZHkiLHJhZGlhbFNjYWxlOm51bGwsYW5ndWxhclNjYWxlOm51bGwsY29sb3JTY2FsZTpuLnNjYWxlLmNhdGVnb3J5MjAoKX19fSxvLkJhckNoYXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG8uUG9seUNoYXJ0KCl9LG8uQmFyQ2hhcnQuZGVmYXVsdENvbmZpZz1mdW5jdGlvbigpe3JldHVybntnZW9tZXRyeUNvbmZpZzp7Z2VvbWV0cnlUeXBlOiJiYXIifX19LG8uQXJlYUNoYXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG8uUG9seUNoYXJ0KCl9LG8uQXJlYUNoYXJ0LmRlZmF1bHRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm57Z2VvbWV0cnlDb25maWc6e2dlb21ldHJ5VHlwZToiYXJjIn19fSxvLkRvdFBsb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gby5Qb2x5Q2hhcnQoKX0sby5Eb3RQbG90LmRlZmF1bHRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm57Z2VvbWV0cnlDb25maWc6e2dlb21ldHJ5VHlwZToiZG90Iixkb3RUeXBlOiJjaXJjbGUifX19LG8uTGluZVBsb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gby5Qb2x5Q2hhcnQoKX0sby5MaW5lUGxvdC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue2dlb21ldHJ5Q29uZmlnOntnZW9tZXRyeVR5cGU6ImxpbmUifX19LG8uTGVnZW5kPWZ1bmN0aW9uKCl7dmFyIHQ9by5MZWdlbmQuZGVmYXVsdENvbmZpZygpLGU9bi5kaXNwYXRjaCgiaG92ZXIiKTtmdW5jdGlvbiByKCl7dmFyIGU9dC5sZWdlbmRDb25maWcsaT10LmRhdGEubWFwKGZ1bmN0aW9uKHQscil7cmV0dXJuW10uY29uY2F0KHQpLm1hcChmdW5jdGlvbih0LG4pe3ZhciBpPWEoe30sZS5lbGVtZW50c1tyXSk7cmV0dXJuIGkubmFtZT10LGkuY29sb3I9W10uY29uY2F0KGUuZWxlbWVudHNbcl0uY29sb3IpW25dLGl9KX0pLG89bi5tZXJnZShpKTtvPW8uZmlsdGVyKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuZWxlbWVudHNbcl0mJihlLmVsZW1lbnRzW3JdLnZpc2libGVJbkxlZ2VuZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBlLmVsZW1lbnRzW3JdLnZpc2libGVJbkxlZ2VuZCl9KSxlLnJldmVyc2VPcmRlciYmKG89by5yZXZlcnNlKCkpO3ZhciBzPWUuY29udGFpbmVyOygic3RyaW5nIj09dHlwZW9mIHN8fHMubm9kZU5hbWUpJiYocz1uLnNlbGVjdChzKSk7dmFyIGw9by5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb2xvcn0pLGM9ZS5mb250U2l6ZSx1PW51bGw9PWUuaXNDb250aW51b3VzPyJudW1iZXIiPT10eXBlb2Ygb1swXTplLmlzQ29udGludW91cyxoPXU/ZS5oZWlnaHQ6YypvLmxlbmd0aCxmPXMuY2xhc3NlZCgibGVnZW5kLWdyb3VwIiwhMCkuc2VsZWN0QWxsKCJzdmciKS5kYXRhKFswXSkscD1mLmVudGVyKCkuYXBwZW5kKCJzdmciKS5hdHRyKHt3aWR0aDozMDAsaGVpZ2h0OmgrYyx4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ4bWxuczp4bGluayI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHZlcnNpb246IjEuMSJ9KTtwLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxlZ2VuZC1heGlzIiwhMCkscC5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmQtbWFya3MiLCEwKTt2YXIgZD1uLnJhbmdlKG8ubGVuZ3RoKSxnPW4uc2NhbGVbdT8ibGluZWFyIjoib3JkaW5hbCJdKCkuZG9tYWluKGQpLnJhbmdlKGwpLHY9bi5zY2FsZVt1PyJsaW5lYXIiOiJvcmRpbmFsIl0oKS5kb21haW4oZClbdT8icmFuZ2UiOiJyYW5nZVBvaW50cyJdKFswLGhdKTtpZih1KXt2YXIgbT1mLnNlbGVjdCgiLmxlZ2VuZC1tYXJrcyIpLmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibGluZWFyR3JhZGllbnQiKS5hdHRyKHtpZDoiZ3JhZDEiLHgxOiIwJSIseTE6IjAlIix4MjoiMCUiLHkyOiIxMDAlIn0pLnNlbGVjdEFsbCgic3RvcCIpLmRhdGEobCk7bS5lbnRlcigpLmFwcGVuZCgic3RvcCIpLG0uYXR0cih7b2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUvKGwubGVuZ3RoLTEpKjEwMCsiJSJ9fSkuc3R5bGUoeyJzdG9wLWNvbG9yIjpmdW5jdGlvbih0LGUpe3JldHVybiB0fX0pLGYuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgibGVnZW5kLW1hcmsiLCEwKS5hdHRyKHtoZWlnaHQ6ZS5oZWlnaHQsd2lkdGg6ZS5jb2xvckJhbmRXaWR0aCxmaWxsOiJ1cmwoI2dyYWQxKSJ9KX1lbHNle3ZhciB5PWYuc2VsZWN0KCIubGVnZW5kLW1hcmtzIikuc2VsZWN0QWxsKCJwYXRoLmxlZ2VuZC1tYXJrIikuZGF0YShvKTt5LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgibGVnZW5kLW1hcmsiLCEwKSx5LmF0dHIoe3RyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiJ0cmFuc2xhdGUoIitbYy8yLHYoZSkrYy8yXSsiKSJ9LGQ6ZnVuY3Rpb24odCxlKXt2YXIgcixhLGksbz10LnN5bWJvbDtyZXR1cm4gaT0zKihhPWMpLCJsaW5lIj09PShyPW8pPyJNIitbWy1hLzIsLWEvMTJdLFthLzIsLWEvMTJdLFthLzIsYS8xMl0sWy1hLzIsYS8xMl1dKyJaIjotMSE9bi5zdmcuc3ltYm9sVHlwZXMuaW5kZXhPZihyKT9uLnN2Zy5zeW1ib2woKS50eXBlKHIpLnNpemUoaSkoKTpuLnN2Zy5zeW1ib2woKS50eXBlKCJzcXVhcmUiKS5zaXplKGkpKCl9LGZpbGw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZyhlKX19KSx5LmV4aXQoKS5yZW1vdmUoKX12YXIgeD1uLnN2Zy5heGlzKCkuc2NhbGUodikub3JpZW50KCJyaWdodCIpLGI9Zi5zZWxlY3QoImcubGVnZW5kLWF4aXMiKS5hdHRyKHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK1t1P2UuY29sb3JCYW5kV2lkdGg6YyxjLzJdKyIpIn0pLmNhbGwoeCk7cmV0dXJuIGIuc2VsZWN0QWxsKCIuZG9tYWluIikuc3R5bGUoe2ZpbGw6Im5vbmUiLHN0cm9rZToibm9uZSJ9KSxiLnNlbGVjdEFsbCgibGluZSIpLnN0eWxlKHtmaWxsOiJub25lIixzdHJva2U6dT9lLnRleHRDb2xvcjoibm9uZSJ9KSxiLnNlbGVjdEFsbCgidGV4dCIpLnN0eWxlKHtmaWxsOmUudGV4dENvbG9yLCJmb250LXNpemUiOmUuZm9udFNpemV9KS50ZXh0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZV0ubmFtZX0pLHJ9cmV0dXJuIHIuY29uZmlnPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhKHQsZSksdGhpcyk6dH0sbi5yZWJpbmQocixlLCJvbiIpLHJ9LG8uTGVnZW5kLmRlZmF1bHRDb25maWc9ZnVuY3Rpb24odCxlKXtyZXR1cm57ZGF0YTpbImEiLCJiIiwiYyJdLGxlZ2VuZENvbmZpZzp7ZWxlbWVudHM6W3tzeW1ib2w6ImxpbmUiLGNvbG9yOiJyZWQifSx7c3ltYm9sOiJzcXVhcmUiLGNvbG9yOiJ5ZWxsb3cifSx7c3ltYm9sOiJkaWFtb25kIixjb2xvcjoibGltZWdyZWVuIn1dLGhlaWdodDoxNTAsY29sb3JCYW5kV2lkdGg6MzAsZm9udFNpemU6MTIsY29udGFpbmVyOiJib2R5Iixpc0NvbnRpbnVvdXM6bnVsbCx0ZXh0Q29sb3I6ImdyZXkiLHJldmVyc2VPcmRlcjohMX19fSxvLnRvb2x0aXBQYW5lbD1mdW5jdGlvbigpe3ZhciB0LGUscixpPXtjb250YWluZXI6bnVsbCxoYXNUaWNrOiExLGZvbnRTaXplOjEyLGNvbG9yOiJ3aGl0ZSIscGFkZGluZzo1fSxzPSJ0b29sdGlwLSIrby50b29sdGlwUGFuZWwudWlkKyssbD0xMCxjPWZ1bmN0aW9uKCl7dmFyIG49KHQ9aS5jb250YWluZXIuc2VsZWN0QWxsKCJnLiIrcykuZGF0YShbMF0pKS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQocywhMCkuc3R5bGUoeyJwb2ludGVyLWV2ZW50cyI6Im5vbmUiLGRpc3BsYXk6Im5vbmUifSk7cmV0dXJuIHI9bi5hcHBlbmQoInBhdGgiKS5zdHlsZSh7ZmlsbDoid2hpdGUiLCJmaWxsLW9wYWNpdHkiOi45fSkuYXR0cih7ZDoiTTAgMCJ9KSxlPW4uYXBwZW5kKCJ0ZXh0IikuYXR0cih7ZHg6aS5wYWRkaW5nK2wsZHk6LjMqK2kuZm9udFNpemV9KSxjfTtyZXR1cm4gYy50ZXh0PWZ1bmN0aW9uKGEpe3ZhciBvPW4uaHNsKGkuY29sb3IpLmwscz1vPj0uNT8iI2FhYSI6IndoaXRlIix1PW8+PS41PyJibGFjayI6IndoaXRlIixoPWF8fCIiO2Uuc3R5bGUoe2ZpbGw6dSwiZm9udC1zaXplIjppLmZvbnRTaXplKyJweCJ9KS50ZXh0KGgpO3ZhciBmPWkucGFkZGluZyxwPWUubm9kZSgpLmdldEJCb3goKSxkPXtmaWxsOmkuY29sb3Isc3Ryb2tlOnMsInN0cm9rZS13aWR0aCI6IjJweCJ9LGc9cC53aWR0aCsyKmYrbCx2PXAuaGVpZ2h0KzIqZjtyZXR1cm4gci5hdHRyKHtkOiJNIitbW2wsLXYvMl0sW2wsLXYvNF0sW2kuaGFzVGljaz8wOmwsMF0sW2wsdi80XSxbbCx2LzJdLFtnLHYvMl0sW2csLXYvMl1dLmpvaW4oIkwiKSsiWiJ9KS5zdHlsZShkKSx0LmF0dHIoe3RyYW5zZm9ybToidHJhbnNsYXRlKCIrW2wsLXYvMisyKmZdKyIpIn0pLHQuc3R5bGUoe2Rpc3BsYXk6ImJsb2NrIn0pLGN9LGMubW92ZT1mdW5jdGlvbihlKXtpZih0KXJldHVybiB0LmF0dHIoe3RyYW5zZm9ybToidHJhbnNsYXRlKCIrW2VbMF0sZVsxXV0rIikifSkuc3R5bGUoe2Rpc3BsYXk6ImJsb2NrIn0pLGN9LGMuaGlkZT1mdW5jdGlvbigpe2lmKHQpcmV0dXJuIHQuc3R5bGUoe2Rpc3BsYXk6Im5vbmUifSksY30sYy5zaG93PWZ1bmN0aW9uKCl7aWYodClyZXR1cm4gdC5zdHlsZSh7ZGlzcGxheToiYmxvY2sifSksY30sYy5jb25maWc9ZnVuY3Rpb24odCl7cmV0dXJuIGEoaSx0KSxjfSxjfSxvLnRvb2x0aXBQYW5lbC51aWQ9MSxvLmFkYXB0ZXI9e30sby5hZGFwdGVyLnBsb3RseT1mdW5jdGlvbigpe3ZhciB0PXtjb252ZXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIHI9e307aWYodC5kYXRhJiYoci5kYXRhPXQuZGF0YS5tYXAoZnVuY3Rpb24odCxyKXt2YXIgbj1hKHt9LHQpO3JldHVybltbbixbIm1hcmtlciIsImNvbG9yIl0sWyJjb2xvciJdXSxbbixbIm1hcmtlciIsIm9wYWNpdHkiXSxbIm9wYWNpdHkiXV0sW24sWyJtYXJrZXIiLCJsaW5lIiwiY29sb3IiXSxbInN0cm9rZUNvbG9yIl1dLFtuLFsibWFya2VyIiwibGluZSIsImRhc2giXSxbInN0cm9rZURhc2giXV0sW24sWyJtYXJrZXIiLCJsaW5lIiwid2lkdGgiXSxbInN0cm9rZVNpemUiXV0sW24sWyJtYXJrZXIiLCJzeW1ib2wiXSxbImRvdFR5cGUiXV0sW24sWyJtYXJrZXIiLCJzaXplIl0sWyJkb3RTaXplIl1dLFtuLFsibWFya2VyIiwiYmFyV2lkdGgiXSxbImJhcldpZHRoIl1dLFtuLFsibGluZSIsImludGVycG9sYXRpb24iXSxbImxpbmVJbnRlcnBvbGF0aW9uIl1dLFtuLFsic2hvd2xlZ2VuZCJdLFsidmlzaWJsZUluTGVnZW5kIl1dXS5mb3JFYWNoKGZ1bmN0aW9uKHQscil7by51dGlsLnRyYW5zbGF0b3IuYXBwbHkobnVsbCx0LmNvbmNhdChlKSl9KSxlfHxkZWxldGUgbi5tYXJrZXIsZSYmZGVsZXRlIG4uZ3JvdXBJZCxlPygiTGluZVBsb3QiPT09bi5nZW9tZXRyeT8obi50eXBlPSJzY2F0dGVyIiwhMD09PW4uZG90VmlzaWJsZT8oZGVsZXRlIG4uZG90VmlzaWJsZSxuLm1vZGU9ImxpbmVzK21hcmtlcnMiKTpuLm1vZGU9ImxpbmVzIik6IkRvdFBsb3QiPT09bi5nZW9tZXRyeT8obi50eXBlPSJzY2F0dGVyIixuLm1vZGU9Im1hcmtlcnMiKToiQXJlYUNoYXJ0Ij09PW4uZ2VvbWV0cnk/bi50eXBlPSJhcmVhIjoiQmFyQ2hhcnQiPT09bi5nZW9tZXRyeSYmKG4udHlwZT0iYmFyIiksZGVsZXRlIG4uZ2VvbWV0cnkpOigic2NhdHRlciI9PT1uLnR5cGU/ImxpbmVzIj09PW4ubW9kZT9uLmdlb21ldHJ5PSJMaW5lUGxvdCI6Im1hcmtlcnMiPT09bi5tb2RlP24uZ2VvbWV0cnk9IkRvdFBsb3QiOiJsaW5lcyttYXJrZXJzIj09PW4ubW9kZSYmKG4uZ2VvbWV0cnk9IkxpbmVQbG90IixuLmRvdFZpc2libGU9ITApOiJhcmVhIj09PW4udHlwZT9uLmdlb21ldHJ5PSJBcmVhQ2hhcnQiOiJiYXIiPT09bi50eXBlJiYobi5nZW9tZXRyeT0iQmFyQ2hhcnQiKSxkZWxldGUgbi5tb2RlLGRlbGV0ZSBuLnR5cGUpLG59KSwhZSYmdC5sYXlvdXQmJiJzdGFjayI9PT10LmxheW91dC5iYXJtb2RlKSl7dmFyIGk9by51dGlsLmR1cGxpY2F0ZXMoci5kYXRhLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmdlb21ldHJ5fSkpO3IuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dmFyIG49aS5pbmRleE9mKHQuZ2VvbWV0cnkpOy0xIT1uJiYoci5kYXRhW2VdLmdyb3VwSWQ9bil9KX1pZih0LmxheW91dCl7dmFyIHM9YSh7fSx0LmxheW91dCk7aWYoW1tzLFsicGxvdF9iZ2NvbG9yIl0sWyJiYWNrZ3JvdW5kQ29sb3IiXV0sW3MsWyJzaG93bGVnZW5kIl0sWyJzaG93TGVnZW5kIl1dLFtzLFsicmFkaWFsYXhpcyJdLFsicmFkaWFsQXhpcyJdXSxbcyxbImFuZ3VsYXJheGlzIl0sWyJhbmd1bGFyQXhpcyJdXSxbcy5hbmd1bGFyYXhpcyxbInNob3dsaW5lIl0sWyJncmlkTGluZXNWaXNpYmxlIl1dLFtzLmFuZ3VsYXJheGlzLFsic2hvd3RpY2tsYWJlbHMiXSxbImxhYmVsc1Zpc2libGUiXV0sW3MuYW5ndWxhcmF4aXMsWyJudGlja3MiXSxbInRpY2tzQ291bnQiXV0sW3MuYW5ndWxhcmF4aXMsWyJ0aWNrb3JpZW50YXRpb24iXSxbInRpY2tPcmllbnRhdGlvbiJdXSxbcy5hbmd1bGFyYXhpcyxbInRpY2tzdWZmaXgiXSxbInRpY2tzU3VmZml4Il1dLFtzLmFuZ3VsYXJheGlzLFsicmFuZ2UiXSxbImRvbWFpbiJdXSxbcy5hbmd1bGFyYXhpcyxbImVuZHBhZGRpbmciXSxbImVuZFBhZGRpbmciXV0sW3MucmFkaWFsYXhpcyxbInNob3dsaW5lIl0sWyJncmlkTGluZXNWaXNpYmxlIl1dLFtzLnJhZGlhbGF4aXMsWyJ0aWNrb3JpZW50YXRpb24iXSxbInRpY2tPcmllbnRhdGlvbiJdXSxbcy5yYWRpYWxheGlzLFsidGlja3N1ZmZpeCJdLFsidGlja3NTdWZmaXgiXV0sW3MucmFkaWFsYXhpcyxbInJhbmdlIl0sWyJkb21haW4iXV0sW3MuYW5ndWxhckF4aXMsWyJzaG93bGluZSJdLFsiZ3JpZExpbmVzVmlzaWJsZSJdXSxbcy5hbmd1bGFyQXhpcyxbInNob3d0aWNrbGFiZWxzIl0sWyJsYWJlbHNWaXNpYmxlIl1dLFtzLmFuZ3VsYXJBeGlzLFsibnRpY2tzIl0sWyJ0aWNrc0NvdW50Il1dLFtzLmFuZ3VsYXJBeGlzLFsidGlja29yaWVudGF0aW9uIl0sWyJ0aWNrT3JpZW50YXRpb24iXV0sW3MuYW5ndWxhckF4aXMsWyJ0aWNrc3VmZml4Il0sWyJ0aWNrc1N1ZmZpeCJdXSxbcy5hbmd1bGFyQXhpcyxbInJhbmdlIl0sWyJkb21haW4iXV0sW3MuYW5ndWxhckF4aXMsWyJlbmRwYWRkaW5nIl0sWyJlbmRQYWRkaW5nIl1dLFtzLnJhZGlhbEF4aXMsWyJzaG93bGluZSJdLFsiZ3JpZExpbmVzVmlzaWJsZSJdXSxbcy5yYWRpYWxBeGlzLFsidGlja29yaWVudGF0aW9uIl0sWyJ0aWNrT3JpZW50YXRpb24iXV0sW3MucmFkaWFsQXhpcyxbInRpY2tzdWZmaXgiXSxbInRpY2tzU3VmZml4Il1dLFtzLnJhZGlhbEF4aXMsWyJyYW5nZSJdLFsiZG9tYWluIl1dLFtzLmZvbnQsWyJvdXRsaW5lY29sb3IiXSxbIm91dGxpbmVDb2xvciJdXSxbcy5sZWdlbmQsWyJ0cmFjZW9yZGVyIl0sWyJyZXZlcnNlT3JkZXIiXV0sW3MsWyJsYWJlbG9mZnNldCJdLFsibGFiZWxPZmZzZXQiXV0sW3MsWyJkZWZhdWx0Y29sb3JyYW5nZSJdLFsiZGVmYXVsdENvbG9yUmFuZ2UiXV1dLmZvckVhY2goZnVuY3Rpb24odCxyKXtvLnV0aWwudHJhbnNsYXRvci5hcHBseShudWxsLHQuY29uY2F0KGUpKX0pLGU/KCJ1bmRlZmluZWQiIT10eXBlb2Ygcy50aWNrTGVuZ3RoJiYocy5hbmd1bGFyYXhpcy50aWNrbGVuPXMudGlja0xlbmd0aCxkZWxldGUgcy50aWNrTGVuZ3RoKSxzLnRpY2tDb2xvciYmKHMuYW5ndWxhcmF4aXMudGlja2NvbG9yPXMudGlja0NvbG9yLGRlbGV0ZSBzLnRpY2tDb2xvcikpOihzLmFuZ3VsYXJBeGlzJiYidW5kZWZpbmVkIiE9dHlwZW9mIHMuYW5ndWxhckF4aXMudGlja2xlbiYmKHMudGlja0xlbmd0aD1zLmFuZ3VsYXJBeGlzLnRpY2tsZW4pLHMuYW5ndWxhckF4aXMmJiJ1bmRlZmluZWQiIT10eXBlb2Ygcy5hbmd1bGFyQXhpcy50aWNrY29sb3ImJihzLnRpY2tDb2xvcj1zLmFuZ3VsYXJBeGlzLnRpY2tjb2xvcikpLHMubGVnZW5kJiYiYm9vbGVhbiIhPXR5cGVvZiBzLmxlZ2VuZC5yZXZlcnNlT3JkZXImJihzLmxlZ2VuZC5yZXZlcnNlT3JkZXI9Im5vcm1hbCIhPXMubGVnZW5kLnJldmVyc2VPcmRlcikscy5sZWdlbmQmJiJib29sZWFuIj09dHlwZW9mIHMubGVnZW5kLnRyYWNlb3JkZXImJihzLmxlZ2VuZC50cmFjZW9yZGVyPXMubGVnZW5kLnRyYWNlb3JkZXI/InJldmVyc2VkIjoibm9ybWFsIixkZWxldGUgcy5sZWdlbmQucmV2ZXJzZU9yZGVyKSxzLm1hcmdpbiYmInVuZGVmaW5lZCIhPXR5cGVvZiBzLm1hcmdpbi50KXt2YXIgbD1bInQiLCJyIiwiYiIsImwiLCJwYWQiXSxjPVsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwicGFkIl0sdT17fTtuLmVudHJpZXMocy5tYXJnaW4pLmZvckVhY2goZnVuY3Rpb24odCxlKXt1W2NbbC5pbmRleE9mKHQua2V5KV1dPXQudmFsdWV9KSxzLm1hcmdpbj11fWUmJihkZWxldGUgcy5uZWVkc0VuZFNwYWNpbmcsZGVsZXRlIHMubWlub3JUaWNrQ29sb3IsZGVsZXRlIHMubWlub3JUaWNrcyxkZWxldGUgcy5hbmd1bGFyYXhpcy50aWNrc0NvdW50LGRlbGV0ZSBzLmFuZ3VsYXJheGlzLnRpY2tzQ291bnQsZGVsZXRlIHMuYW5ndWxhcmF4aXMudGlja3NTdGVwLGRlbGV0ZSBzLmFuZ3VsYXJheGlzLnJld3JpdGVUaWNrcyxkZWxldGUgcy5hbmd1bGFyYXhpcy5udGlja3MsZGVsZXRlIHMucmFkaWFsYXhpcy50aWNrc0NvdW50LGRlbGV0ZSBzLnJhZGlhbGF4aXMudGlja3NDb3VudCxkZWxldGUgcy5yYWRpYWxheGlzLnRpY2tzU3RlcCxkZWxldGUgcy5yYWRpYWxheGlzLnJld3JpdGVUaWNrcyxkZWxldGUgcy5yYWRpYWxheGlzLm50aWNrcyksci5sYXlvdXQ9c31yZXR1cm4gcn19O3JldHVybiB0fX0seyIuLi8uLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uLy4uL2xpYiI6NzE3LGQzOjE2NX1dLDgzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vLi4vbGliIiksaT10KCIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIuL21pY3JvcG9sYXIiKSxzPXQoIi4vdW5kb19tYW5hZ2VyIiksbD1hLmV4dGVuZERlZXBBbGwsYz1lLmV4cG9ydHM9e307Yy5mcmFtZXdvcms9ZnVuY3Rpb24odCl7dmFyIGUscixhLGksdSxoPW5ldyBzO2Z1bmN0aW9uIGYocixzKXtyZXR1cm4gcyYmKHU9cyksbi5zZWxlY3Qobi5zZWxlY3QodSkubm9kZSgpLnBhcmVudE5vZGUpLnNlbGVjdEFsbCgiLnN2Zy1jb250YWluZXI+Kjpub3QoLmNoYXJ0LXJvb3QpIikucmVtb3ZlKCksZT1lP2woZSxyKTpyLGF8fChhPW8uQXhpcygpKSxpPW8uYWRhcHRlci5wbG90bHkoKS5jb252ZXJ0KGUpLGEuY29uZmlnKGkpLnJlbmRlcih1KSx0LmRhdGE9ZS5kYXRhLHQubGF5b3V0PWUubGF5b3V0LGMuZmlsbExheW91dCh0KSxlfXJldHVybiBmLmlzUG9sYXI9ITAsZi5zdmc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5zdmcoKX0sZi5nZXRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sZi5nZXRMaXZlQ29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIG8uYWRhcHRlci5wbG90bHkoKS5jb252ZXJ0KGEuZ2V0TGl2ZUNvbmZpZygpLCEwKX0sZi5nZXRMaXZlU2NhbGVzPWZ1bmN0aW9uKCl7cmV0dXJue3Q6YS5hbmd1bGFyU2NhbGUoKSxyOmEucmFkaWFsU2NhbGUoKX19LGYuc2V0VW5kb1BvaW50PWZ1bmN0aW9uKCl7dmFyIHQsbixhPXRoaXMsaT1vLnV0aWwuY2xvbmVKc29uKGUpO3Q9aSxuPXIsaC5hZGQoe3VuZG86ZnVuY3Rpb24oKXtuJiZhKG4pfSxyZWRvOmZ1bmN0aW9uKCl7YSh0KX19KSxyPW8udXRpbC5jbG9uZUpzb24oaSl9LGYudW5kbz1mdW5jdGlvbigpe2gudW5kbygpfSxmLnJlZG89ZnVuY3Rpb24oKXtoLnJlZG8oKX0sZn0sYy5maWxsTGF5b3V0PWZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiLnBsb3QtY29udGFpbmVyIikscj1lLnNlbGVjdEFsbCgiLnN2Zy1jb250YWluZXIiKSxhPXQuZnJhbWV3b3JrJiZ0LmZyYW1ld29yay5zdmcmJnQuZnJhbWV3b3JrLnN2ZygpLG89e3dpZHRoOjgwMCxoZWlnaHQ6NjAwLHBhcGVyX2JnY29sb3I6aS5iYWNrZ3JvdW5kLF9jb250YWluZXI6ZSxfcGFwZXJkaXY6cixfcGFwZXI6YX07dC5fZnVsbExheW91dD1sKG8sdC5sYXlvdXQpfX0seyIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uLy4uL2xpYiI6NzE3LCIuL21pY3JvcG9sYXIiOjgzNSwiLi91bmRvX21hbmFnZXIiOjgzNyxkMzoxNjV9XSw4Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQsZT1bXSxyPS0xLG49ITE7ZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0PyhuPSEwLHRbZV0oKSxuPSExLHRoaXMpOnRoaXN9cmV0dXJue2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gbj90aGlzOihlLnNwbGljZShyKzEsZS5sZW5ndGgtciksZS5wdXNoKHQpLHI9ZS5sZW5ndGgtMSx0aGlzKX0sc2V0Q2FsbGJhY2s6ZnVuY3Rpb24oZSl7dD1lfSx1bmRvOmZ1bmN0aW9uKCl7dmFyIG49ZVtyXTtyZXR1cm4gbj8oYShuLCJ1bmRvIiksci09MSx0JiZ0KG4udW5kbyksdGhpcyk6dGhpc30scmVkbzpmdW5jdGlvbigpe3ZhciBuPWVbcisxXTtyZXR1cm4gbj8oYShuLCJyZWRvIikscis9MSx0JiZ0KG4ucmVkbyksdGhpcyk6dGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtlPVtdLHI9LTF9LGhhc1VuZG86ZnVuY3Rpb24oKXtyZXR1cm4tMSE9PXJ9LGhhc1JlZG86ZnVuY3Rpb24oKXtyZXR1cm4gcjxlLmxlbmd0aC0xfSxnZXRDb21tYW5kczpmdW5jdGlvbigpe3JldHVybiBlfSxnZXRQcmV2aW91c0NvbW1hbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyLTFdfSxnZXRJbmRleDpmdW5jdGlvbigpe3JldHVybiByfX19fSx7fV0sODM4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJ0aW55Y29sb3IyIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxjPXQoIi4uL3Bsb3RzIiksdT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGg9dCgiLi4vY2FydGVzaWFuL3NldF9jb252ZXJ0IiksZj10KCIuL3NldF9jb252ZXJ0IikscD10KCIuLi9jYXJ0ZXNpYW4vYXV0b3JhbmdlIikuZG9BdXRvUmFuZ2UsZD10KCIuLi9jYXJ0ZXNpYW4vZHJhZ2JveCIpLGc9dCgiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCIpLHY9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLG09dCgiLi4vLi4vY29tcG9uZW50cy90aXRsZXMiKSx5PXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5wcmVwU2VsZWN0LHg9dCgiLi4vY2FydGVzaWFuL3NlbGVjdCIpLnNlbGVjdE9uQ2xpY2ssYj10KCIuLi9jYXJ0ZXNpYW4vc2VsZWN0IikuY2xlYXJTZWxlY3QsXz10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIiksdz10KCIuLi8uLi9saWIvY2xlYXJfZ2xfY2FudmFzZXMiKSxrPXQoIi4uLy4uL3Bsb3RfYXBpL3N1YnJvdXRpbmVzIikucmVkcmF3UmVnbFRyYWNlcyxUPXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5NSURfU0hJRlQsTT10KCIuL2NvbnN0YW50cyIpLEE9dCgiLi9oZWxwZXJzIiksUz1vLl8sRT1vLm1vZCxMPW8uZGVnMnJhZCxDPW8ucmFkMmRlZztmdW5jdGlvbiBQKHQsZSl7dGhpcy5pZD1lLHRoaXMuZ2Q9dCx0aGlzLl9oYXNDbGlwT25BeGlzRmFsc2U9bnVsbCx0aGlzLnZhbmdsZXM9bnVsbCx0aGlzLnJhZGlhbEF4aXNBbmdsZT1udWxsLHRoaXMudHJhY2VIYXNoPXt9LHRoaXMubGF5ZXJzPXt9LHRoaXMuY2xpcFBhdGhzPXt9LHRoaXMuY2xpcElkcz17fSx0aGlzLnZpZXdJbml0aWFsPXt9O3ZhciByPXQuX2Z1bGxMYXlvdXQsbj0iY2xpcCIrci5fdWlkK2U7dGhpcy5jbGlwSWRzLmZvclRyYWNlcz1uKyItZm9yLXRyYWNlcyIsdGhpcy5jbGlwUGF0aHMuZm9yVHJhY2VzPXIuX2NsaXBzLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsdGhpcy5jbGlwSWRzLmZvclRyYWNlcyksdGhpcy5jbGlwUGF0aHMuZm9yVHJhY2VzLmFwcGVuZCgicGF0aCIpLHRoaXMuZnJhbWV3b3JrPXIuX3BvbGFybGF5ZXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGUpLHRoaXMucmFkaWFsVGlja0xheW91dD1udWxsLHRoaXMuYW5ndWxhclRpY2tMYXlvdXQ9bnVsbH12YXIgTz1QLnByb3RvdHlwZTtmdW5jdGlvbiB6KHQpe3ZhciBlPXQudGlja3MrU3RyaW5nKHQudGlja2xlbikrU3RyaW5nKHQuc2hvd3RpY2tsYWJlbHMpO3JldHVybiJzaWRlImluIHQmJihlKz10LnNpZGUpLGV9ZnVuY3Rpb24gSSh0LGUpe3JldHVybiBlW28uZmluZEluZGV4T2ZNaW4oZSxmdW5jdGlvbihlKXtyZXR1cm4gby5hbmdsZURpc3QodCxlKX0pXX1mdW5jdGlvbiBEKHQsZSxyKXtyZXR1cm4gZT8odC5hdHRyKCJkaXNwbGF5IixudWxsKSx0LmF0dHIocikpOnQmJnQuYXR0cigiZGlzcGxheSIsIm5vbmUiKSx0fWZ1bmN0aW9uIFIodCxlKXtyZXR1cm4idHJhbnNsYXRlKCIrdCsiLCIrZSsiKSJ9ZnVuY3Rpb24gRih0KXtyZXR1cm4icm90YXRlKCIrdCsiKSJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBQKHQsZSl9LE8ucGxvdD1mdW5jdGlvbih0LGUpe3ZhciByPWVbdGhpcy5pZF07dGhpcy5faGFzQ2xpcE9uQXhpc0ZhbHNlPSExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXtpZighMT09PXRbbl1bMF0udHJhY2UuY2xpcG9uYXhpcyl7dGhpcy5faGFzQ2xpcE9uQXhpc0ZhbHNlPSEwO2JyZWFrfX10aGlzLnVwZGF0ZUxheWVycyhlLHIpLHRoaXMudXBkYXRlTGF5b3V0KGUsciksYy5nZW5lcmFsVXBkYXRlUGVyVHJhY2VNb2R1bGUodGhpcy5nZCx0aGlzLHQsciksdGhpcy51cGRhdGVGeChlLHIpfSxPLnVwZGF0ZUxheWVycz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGF5ZXJzLGE9ZS5yYWRpYWxheGlzLGk9ZS5hbmd1bGFyYXhpcyxvPU0ubGF5ZXJOYW1lcyxzPW8uaW5kZXhPZigiZnJvbnRwbG90IiksbD1vLnNsaWNlKDAscyksYz0iYmVsb3cgdHJhY2VzIj09PWkubGF5ZXIsdT0iYmVsb3cgdHJhY2VzIj09PWEubGF5ZXI7YyYmbC5wdXNoKCJhbmd1bGFyLWxpbmUiKSx1JiZsLnB1c2goInJhZGlhbC1saW5lIiksYyYmbC5wdXNoKCJhbmd1bGFyLWF4aXMiKSx1JiZsLnB1c2goInJhZGlhbC1heGlzIiksbC5wdXNoKCJmcm9udHBsb3QiKSxjfHxsLnB1c2goImFuZ3VsYXItbGluZSIpLHV8fGwucHVzaCgicmFkaWFsLWxpbmUiKSxjfHxsLnB1c2goImFuZ3VsYXItYXhpcyIpLHV8fGwucHVzaCgicmFkaWFsLWF4aXMiKTt2YXIgaD10aGlzLmZyYW1ld29yay5zZWxlY3RBbGwoIi5wb2xhcnN1YmxheWVyIikuZGF0YShsLFN0cmluZyk7aC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbih0KXtyZXR1cm4icG9sYXJzdWJsYXllciAiK3R9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXJbdF09bi5zZWxlY3QodGhpcyk7c3dpdGNoKHQpe2Nhc2UiZnJvbnRwbG90IjplLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJhcmxheWVyIiwhMCksZS5hcHBlbmQoImciKS5jbGFzc2VkKCJzY2F0dGVybGF5ZXIiLCEwKTticmVhaztjYXNlImJhY2twbG90IjplLmFwcGVuZCgiZyIpLmNsYXNzZWQoIm1hcGxheWVyIiwhMCk7YnJlYWs7Y2FzZSJwbG90YmciOnIuYmc9ZS5hcHBlbmQoInBhdGgiKTticmVhaztjYXNlInJhZGlhbC1ncmlkIjpjYXNlImFuZ3VsYXItZ3JpZCI6ZS5zdHlsZSgiZmlsbCIsIm5vbmUiKTticmVhaztjYXNlInJhZGlhbC1saW5lIjplLmFwcGVuZCgibGluZSIpLnN0eWxlKCJmaWxsIiwibm9uZSIpO2JyZWFrO2Nhc2UiYW5ndWxhci1saW5lIjplLmFwcGVuZCgicGF0aCIpLnN0eWxlKCJmaWxsIiwibm9uZSIpfX0pLGgub3JkZXIoKX0sTy51cGRhdGVMYXlvdXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxheWVycyxuPXQuX3NpemUsYT1lLnJhZGlhbGF4aXMsaT1lLmFuZ3VsYXJheGlzLG89ZS5kb21haW4ueCxjPWUuZG9tYWluLnk7dGhpcy54T2Zmc2V0PW4ubCtuLncqb1swXSx0aGlzLnlPZmZzZXQ9bi50K24uaCooMS1jWzFdKTt2YXIgdT10aGlzLnhMZW5ndGg9bi53KihvWzFdLW9bMF0pLGg9dGhpcy55TGVuZ3RoPW4uaCooY1sxXS1jWzBdKSxmPWUuc2VjdG9yO3RoaXMuc2VjdG9ySW5SYWQ9Zi5tYXAoTCk7dmFyIHAsZCxnLHYsbSx5PXRoaXMuc2VjdG9yQkJveD1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpPXRbMF0sbz10WzFdLWkscz1FKGksMzYwKSxsPXMrbyxjPU1hdGguY29zKEwocykpLHU9TWF0aC5zaW4oTChzKSksaD1NYXRoLmNvcyhMKGwpKSxmPU1hdGguc2luKEwobCkpO2E9czw9OTAmJmw+PTkwfHxzPjkwJiZsPj00NTA/MTp1PD0wJiZmPD0wPzA6TWF0aC5tYXgodSxmKTtlPXM8PTE4MCYmbD49MTgwfHxzPjE4MCYmbD49NTQwPy0xOmM+PTAmJmg+PTA/MDpNYXRoLm1pbihjLGgpO3I9czw9MjcwJiZsPj0yNzB8fHM+MjcwJiZsPj02MzA/LTE6dT49MCYmZj49MD8wOk1hdGgubWluKHUsZik7bj1sPj0zNjA/MTpjPD0wJiZoPD0wPzA6TWF0aC5tYXgoYyxoKTtyZXR1cm5bZSxyLG4sYV19KGYpLHg9eVsyXS15WzBdLGI9eVszXS15WzFdLF89aC91LHc9TWF0aC5hYnMoYi94KTtfPnc/KHA9dSxtPShoLShkPXUqdykpL24uaC8yLGc9W29bMF0sb1sxXV0sdj1bY1swXSttLGNbMV0tbV0pOihkPWgsbT0odS0ocD1oL3cpKS9uLncvMixnPVtvWzBdK20sb1sxXS1tXSx2PVtjWzBdLGNbMV1dKSx0aGlzLnhMZW5ndGgyPXAsdGhpcy55TGVuZ3RoMj1kLHRoaXMueERvbWFpbjI9Zyx0aGlzLnlEb21haW4yPXY7dmFyIGs9dGhpcy54T2Zmc2V0Mj1uLmwrbi53KmdbMF0sVD10aGlzLnlPZmZzZXQyPW4udCtuLmgqKDEtdlsxXSksTT10aGlzLnJhZGl1cz1wL3gsQT10aGlzLmlubmVyUmFkaXVzPWUuaG9sZSpNLFM9dGhpcy5jeD1rLU0qeVswXSxDPXRoaXMuY3k9VCtNKnlbM10sUD10aGlzLmN4eD1TLWssTz10aGlzLmN5eT1DLVQ7dGhpcy5yYWRpYWxBeGlzPXRoaXMubW9ja0F4aXModCxlLGEse19pZDoieCIsc2lkZTp7Y291bnRlcmNsb2Nrd2lzZToidG9wIixjbG9ja3dpc2U6ImJvdHRvbSJ9W2Euc2lkZV0sZG9tYWluOltBL24udyxNL24ud119KSx0aGlzLmFuZ3VsYXJBeGlzPXRoaXMubW9ja0F4aXModCxlLGkse3NpZGU6InJpZ2h0Iixkb21haW46WzAsTWF0aC5QSV0sYXV0b3JhbmdlOiExfSksdGhpcy5kb0F1dG9SYW5nZSh0LGUpLHRoaXMudXBkYXRlQW5ndWxhckF4aXModCxlKSx0aGlzLnVwZGF0ZVJhZGlhbEF4aXModCxlKSx0aGlzLnVwZGF0ZVJhZGlhbEF4aXNUaXRsZSh0LGUpLHRoaXMueGF4aXM9dGhpcy5tb2NrQ2FydGVzaWFuQXhpcyh0LGUse19pZDoieCIsZG9tYWluOmd9KSx0aGlzLnlheGlzPXRoaXMubW9ja0NhcnRlc2lhbkF4aXModCxlLHtfaWQ6InkiLGRvbWFpbjp2fSk7dmFyIHo9dGhpcy5wYXRoU3VicGxvdCgpO3RoaXMuY2xpcFBhdGhzLmZvclRyYWNlcy5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIix6KS5hdHRyKCJ0cmFuc2Zvcm0iLFIoUCxPKSksci5mcm9udHBsb3QuYXR0cigidHJhbnNmb3JtIixSKGssVCkpLmNhbGwobC5zZXRDbGlwVXJsLHRoaXMuX2hhc0NsaXBPbkF4aXNGYWxzZT9udWxsOnRoaXMuY2xpcElkcy5mb3JUcmFjZXMsdGhpcy5nZCksci5iZy5hdHRyKCJkIix6KS5hdHRyKCJ0cmFuc2Zvcm0iLFIoUyxDKSkuY2FsbChzLmZpbGwsZS5iZ2NvbG9yKX0sTy5tb2NrQXhpcz1mdW5jdGlvbih0LGUscixuKXt2YXIgYT1vLmV4dGVuZEZsYXQoe30scixuKTtyZXR1cm4gZihhLGUsdCksYX0sTy5tb2NrQ2FydGVzaWFuQXhpcz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcyxhPXIuX2lkLGk9by5leHRlbmRGbGF0KHt0eXBlOiJsaW5lYXIifSxyKTtoKGksdCk7dmFyIHM9e3g6WzAsMl0seTpbMSwzXX07cmV0dXJuIGkuc2V0UmFuZ2U9ZnVuY3Rpb24oKXt2YXIgdD1uLnNlY3RvckJCb3gscj1zW2FdLG89bi5yYWRpYWxBeGlzLl9ybCxsPShvWzFdLW9bMF0pLygxLWUuaG9sZSk7aS5yYW5nZT1bdFtyWzBdXSpsLHRbclsxXV0qbF19LGkuaXNQdFdpdGhpblJhbmdlPSJ4Ij09PWE/ZnVuY3Rpb24odCl7cmV0dXJuIG4uaXNQdEluc2lkZSh0KX06ZnVuY3Rpb24oKXtyZXR1cm4hMH0saS5zZXRSYW5nZSgpLGkuc2V0U2NhbGUoKSxpfSxPLmRvQXV0b1JhbmdlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5nZCxuPXRoaXMucmFkaWFsQXhpcyxhPWUucmFkaWFsYXhpcztuLnNldFNjYWxlKCkscChyLG4pO3ZhciBpPW4ucmFuZ2U7YS5yYW5nZT1pLnNsaWNlKCksYS5faW5wdXQucmFuZ2U9aS5zbGljZSgpLG4uX3JsPVtuLnIybChpWzBdLG51bGwsImdyZWdvcmlhbiIpLG4ucjJsKGlbMV0sbnVsbCwiZ3JlZ29yaWFuIildfSxPLnVwZGF0ZVJhZGlhbEF4aXM9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLG49ci5nZCxhPXIubGF5ZXJzLGk9ci5yYWRpdXMsbD1yLmlubmVyUmFkaXVzLGM9ci5jeCxoPXIuY3ksZj1lLnJhZGlhbGF4aXMscD1FKGUuc2VjdG9yWzBdLDM2MCksZD1yLnJhZGlhbEF4aXMsZz1sPGk7ci5maWxsVmlld0luaXRpYWxLZXkoInJhZGlhbGF4aXMuYW5nbGUiLGYuYW5nbGUpLHIuZmlsbFZpZXdJbml0aWFsS2V5KCJyYWRpYWxheGlzLnJhbmdlIixkLnJhbmdlLnNsaWNlKCkpLGQuc2V0R2VvbWV0cnkoKSwiYXV0byI9PT1kLnRpY2thbmdsZSYmcD45MCYmcDw9MjcwJiYoZC50aWNrYW5nbGU9MTgwKTt2YXIgdj1mdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrKGQubDJwKHQueCkrbCkrIiwwKSJ9LG09eihmKTtpZihyLnJhZGlhbFRpY2tMYXlvdXQhPT1tJiYoYVsicmFkaWFsLWF4aXMiXS5zZWxlY3RBbGwoIi54dGljayIpLnJlbW92ZSgpLHIucmFkaWFsVGlja0xheW91dD1tKSxnKXtkLnNldFNjYWxlKCk7dmFyIHk9dS5jYWxjVGlja3MoZCkseD11LmNsaXBFbmRzKGQseSksYj11LmdldFRpY2tTaWducyhkKVsyXTt1LmRyYXdUaWNrcyhuLGQse3ZhbHM6eSxsYXllcjphWyJyYWRpYWwtYXhpcyJdLHBhdGg6dS5tYWtlVGlja1BhdGgoZCwwLGIpLHRyYW5zRm46dixjcmlzcDohMX0pLHUuZHJhd0dyaWQobixkLHt2YWxzOngsbGF5ZXI6YVsicmFkaWFsLWdyaWQiXSxwYXRoOmZ1bmN0aW9uKHQpe3JldHVybiByLnBhdGhBcmMoZC5yMnAodC54KStsKX0sdHJhbnNGbjpvLm5vb3AsY3Jpc3A6ITF9KSx1LmRyYXdMYWJlbHMobixkLHt2YWxzOnksbGF5ZXI6YVsicmFkaWFsLWF4aXMiXSx0cmFuc0ZuOnYsbGFiZWxGbnM6dS5tYWtlTGFiZWxGbnMoZCwwKX0pfXZhciBfPXIucmFkaWFsQXhpc0FuZ2xlPXIudmFuZ2xlcz9DKEkoTChmLmFuZ2xlKSxyLnZhbmdsZXMpKTpmLmFuZ2xlLHc9UihjLGgpLGs9dytGKC1fKTtEKGFbInJhZGlhbC1heGlzIl0sZyYmKGYuc2hvd3RpY2tsYWJlbHN8fGYudGlja3MpLHt0cmFuc2Zvcm06a30pLEQoYVsicmFkaWFsLWdyaWQiXSxnJiZmLnNob3dncmlkLHt0cmFuc2Zvcm06d30pLEQoYVsicmFkaWFsLWxpbmUiXS5zZWxlY3QoImxpbmUiKSxnJiZmLnNob3dsaW5lLHt4MTpsLHkxOjAseDI6aSx5MjowLHRyYW5zZm9ybTprfSkuYXR0cigic3Ryb2tlLXdpZHRoIixmLmxpbmV3aWR0aCkuY2FsbChzLnN0cm9rZSxmLmxpbmVjb2xvcil9LE8udXBkYXRlUmFkaWFsQXhpc1RpdGxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLmdkLGE9dGhpcy5yYWRpdXMsaT10aGlzLmN4LG89dGhpcy5jeSxzPWUucmFkaWFsYXhpcyxjPXRoaXMuaWQrInRpdGxlIix1PXZvaWQgMCE9PXI/cjp0aGlzLnJhZGlhbEF4aXNBbmdsZSxoPUwodSksZj1NYXRoLmNvcyhoKSxwPU1hdGguc2luKGgpLGQ9MDtpZihzLnRpdGxlKXt2YXIgZz1sLmJCb3godGhpcy5sYXllcnNbInJhZGlhbC1heGlzIl0ubm9kZSgpKS5oZWlnaHQsdj1zLnRpdGxlLmZvbnQuc2l6ZTtkPSJjb3VudGVyY2xvY2t3aXNlIj09PXMuc2lkZT8tZy0uNCp2OmcrLjgqdn10aGlzLmxheWVyc1sicmFkaWFsLWF4aXMtdGl0bGUiXT1tLmRyYXcobixjLHtwcm9wQ29udGFpbmVyOnMscHJvcE5hbWU6dGhpcy5pZCsiLnJhZGlhbGF4aXMudGl0bGUiLHBsYWNlaG9sZGVyOlMobiwiQ2xpY2sgdG8gZW50ZXIgcmFkaWFsIGF4aXMgdGl0bGUiKSxhdHRyaWJ1dGVzOnt4OmkrYS8yKmYrZCpwLHk6by1hLzIqcCtkKmYsInRleHQtYW5jaG9yIjoibWlkZGxlIn0sdHJhbnNmb3JtOntyb3RhdGU6LXV9fSl9LE8udXBkYXRlQW5ndWxhckF4aXM9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLG49ci5nZCxhPXIubGF5ZXJzLGk9ci5yYWRpdXMsbD1yLmlubmVyUmFkaXVzLGM9ci5jeCxoPXIuY3ksZj1lLmFuZ3VsYXJheGlzLHA9ci5hbmd1bGFyQXhpcztyLmZpbGxWaWV3SW5pdGlhbEtleSgiYW5ndWxhcmF4aXMucm90YXRpb24iLGYucm90YXRpb24pLHAuc2V0R2VvbWV0cnkoKSxwLnNldFNjYWxlKCk7dmFyIGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudDJnKHQueCl9OyJsaW5lYXIiPT09cC50eXBlJiYicmFkaWFucyI9PT1wLnRoZXRhdW5pdCYmKHAudGljazA9QyhwLnRpY2swKSxwLmR0aWNrPUMocC5kdGljaykpO3ZhciBnPWZ1bmN0aW9uKHQpe3JldHVybiBSKGMraSpNYXRoLmNvcyh0KSxoLWkqTWF0aC5zaW4odCkpfSx2PXUubWFrZUxhYmVsRm5zKHAsMCkubGFiZWxTdGFuZG9mZixtPXt4Rm46ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KTtyZXR1cm4gTWF0aC5jb3MoZSkqdn0seUZuOmZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj1NYXRoLnNpbihlKT4wPy4yOjE7cmV0dXJuLU1hdGguc2luKGUpKih2K3QuZm9udFNpemUqcikrTWF0aC5hYnMoTWF0aC5jb3MoZSkpKih0LmZvbnRTaXplKlQpfSxhbmNob3JGbjpmdW5jdGlvbih0KXt2YXIgZT1kKHQpLHI9TWF0aC5jb3MoZSk7cmV0dXJuIE1hdGguYWJzKHIpPC4xPyJtaWRkbGUiOnI+MD8ic3RhcnQiOiJlbmQifSxoZWlnaHRGbjpmdW5jdGlvbih0LGUscil7dmFyIG49ZCh0KTtyZXR1cm4tLjUqKDErTWF0aC5zaW4obikpKnJ9fSx5PXooZik7ci5hbmd1bGFyVGlja0xheW91dCE9PXkmJihhWyJhbmd1bGFyLWF4aXMiXS5zZWxlY3RBbGwoIi4iK3AuX2lkKyJ0aWNrIikucmVtb3ZlKCksci5hbmd1bGFyVGlja0xheW91dD15KTt2YXIgeCxiPXUuY2FsY1RpY2tzKHApO2lmKCJsaW5lYXIiPT09ZS5ncmlkc2hhcGU/KHg9Yi5tYXAoZCksby5hbmdsZURlbHRhKHhbMF0seFsxXSk8MCYmKHg9eC5zbGljZSgpLnJldmVyc2UoKSkpOng9bnVsbCxyLnZhbmdsZXM9eCwiY2F0ZWdvcnkiPT09cC50eXBlJiYoYj1iLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gby5pc0FuZ2xlSW5zaWRlU2VjdG9yKGQodCksci5zZWN0b3JJblJhZCl9KSkscC52aXNpYmxlKXt2YXIgXz0iaW5zaWRlIj09PXAudGlja3M/LTE6MSx3PShwLmxpbmV3aWR0aHx8MSkvMjt1LmRyYXdUaWNrcyhuLHAse3ZhbHM6YixsYXllcjphWyJhbmd1bGFyLWF4aXMiXSxwYXRoOiJNIitfKncrIiwwaCIrXypwLnRpY2tsZW4sdHJhbnNGbjpmdW5jdGlvbih0KXt2YXIgZT1kKHQpO3JldHVybiBnKGUpK0YoLUMoZSkpfSxjcmlzcDohMX0pLHUuZHJhd0dyaWQobixwLHt2YWxzOmIsbGF5ZXI6YVsiYW5ndWxhci1ncmlkIl0scGF0aDpmdW5jdGlvbih0KXt2YXIgZT1kKHQpLHI9TWF0aC5jb3MoZSksbj1NYXRoLnNpbihlKTtyZXR1cm4iTSIrW2MrbCpyLGgtbCpuXSsiTCIrW2MraSpyLGgtaSpuXX0sdHJhbnNGbjpvLm5vb3AsY3Jpc3A6ITF9KSx1LmRyYXdMYWJlbHMobixwLHt2YWxzOmIsbGF5ZXI6YVsiYW5ndWxhci1heGlzIl0scmVwb3NpdGlvbk9uVXBkYXRlOiEwLHRyYW5zRm46ZnVuY3Rpb24odCl7cmV0dXJuIGcoZCh0KSl9LGxhYmVsRm5zOm19KX1EKGFbImFuZ3VsYXItbGluZSJdLnNlbGVjdCgicGF0aCIpLGYuc2hvd2xpbmUse2Q6ci5wYXRoU3VicGxvdCgpLHRyYW5zZm9ybTpSKGMsaCl9KS5hdHRyKCJzdHJva2Utd2lkdGgiLGYubGluZXdpZHRoKS5jYWxsKHMuc3Ryb2tlLGYubGluZWNvbG9yKX0sTy51cGRhdGVGeD1mdW5jdGlvbih0LGUpe3RoaXMuZ2QuX2NvbnRleHQuc3RhdGljUGxvdHx8KHRoaXMudXBkYXRlQW5ndWxhckRyYWcodCksdGhpcy51cGRhdGVSYWRpYWxEcmFnKHQsZSwwKSx0aGlzLnVwZGF0ZVJhZGlhbERyYWcodCxlLDEpLHRoaXMudXBkYXRlTWFpbkRyYWcodCkpfSxPLnVwZGF0ZU1haW5EcmFnPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscj1lLmdkLG89ZS5sYXllcnMscz10Ll96b29tbGF5ZXIsbD1NLk1JTlpPT00sYz1NLk9GRkVER0UsdT1lLnJhZGl1cyxoPWUuaW5uZXJSYWRpdXMsZj1lLmN4LHA9ZS5jeSxtPWUuY3h4LF89ZS5jeXksdz1lLnNlY3RvckluUmFkLGs9ZS52YW5nbGVzLFQ9ZS5yYWRpYWxBeGlzLFM9QS5jbGFtcFRpbnksRT1BLmZpbmRYWWF0TGVuZ3RoLEw9QS5maW5kRW5jbG9zaW5nVmVydGV4QW5nbGVzLEM9TS5jb3JuZXJIYWxmV2lkdGgsUD1NLmNvcm5lckxlbi8yLE89ZC5tYWtlRHJhZ2dlcihvLCJwYXRoIiwibWFpbmRyYWciLCJjcm9zc2hhaXIiKTtuLnNlbGVjdChPKS5hdHRyKCJkIixlLnBhdGhTdWJwbG90KCkpLmF0dHIoInRyYW5zZm9ybSIsUihmLHApKTt2YXIgeixJLEQsRixCLE4saixWLFUscT17ZWxlbWVudDpPLGdkOnIsc3VicGxvdDplLmlkLHBsb3RpbmZvOntpZDplLmlkLHhheGlzOmUueGF4aXMseWF4aXM6ZS55YXhpc30seGF4ZXM6W2UueGF4aXNdLHlheGVzOltlLnlheGlzXX07ZnVuY3Rpb24gSCh0LGUpe3JldHVybiBNYXRoLnNxcnQodCp0K2UqZSl9ZnVuY3Rpb24gRyh0LGUpe3JldHVybiBIKHQtbSxlLV8pfWZ1bmN0aW9uIFkodCxlKXtyZXR1cm4gTWF0aC5hdGFuMihfLWUsdC1tKX1mdW5jdGlvbiBXKHQsZSl7cmV0dXJuW3QqTWF0aC5jb3MoZSksdCpNYXRoLnNpbigtZSldfWZ1bmN0aW9uIFgodCxyKXtpZigwPT09dClyZXR1cm4gZS5wYXRoU2VjdG9yKDIqQyk7dmFyIG49UC90LGE9ci1uLGk9cituLG89TWF0aC5tYXgoMCxNYXRoLm1pbih0LHUpKSxzPW8tQyxsPW8rQztyZXR1cm4iTSIrVyhzLGEpKyJBIitbcyxzXSsiIDAsMCwwICIrVyhzLGkpKyJMIitXKGwsaSkrIkEiK1tsLGxdKyIgMCwwLDEgIitXKGwsYSkrIloifWZ1bmN0aW9uIFoodCxyLG4pe2lmKDA9PT10KXJldHVybiBlLnBhdGhTZWN0b3IoMipDKTt2YXIgYSxpLG89Vyh0LHIpLHM9Vyh0LG4pLGw9Uygob1swXStzWzBdKS8yKSxjPVMoKG9bMV0rc1sxXSkvMik7aWYobCYmYyl7dmFyIHU9Yy9sLGg9LTEvdSxmPUUoQyx1LGwsYyk7YT1FKFAsaCxmWzBdWzBdLGZbMF1bMV0pLGk9RShQLGgsZlsxXVswXSxmWzFdWzFdKX1lbHNle3ZhciBwLGQ7Yz8ocD1QLGQ9Qyk6KHA9QyxkPVApLGE9W1tsLXAsYy1kXSxbbCtwLGMtZF1dLGk9W1tsLXAsYytkXSxbbCtwLGMrZF1dfXJldHVybiJNIithLmpvaW4oIkwiKSsiTCIraS5yZXZlcnNlKCkuam9pbigiTCIpKyJaIn1mdW5jdGlvbiBKKHQsZSl7cmV0dXJuIGU9TWF0aC5tYXgoTWF0aC5taW4oZSx1KSxoKSx0PGM/dD0wOnUtdDxjP3Q9dTplPGM/ZT0wOnUtZTxjJiYoZT11KSxNYXRoLmFicyhlLXQpPmw/KHQ8ZT8oRD10LEY9ZSk6KEQ9ZSxGPXQpLCEwKTooRD1udWxsLEY9bnVsbCwhMSl9ZnVuY3Rpb24gSyh0LGUpe3Q9dHx8QixlPWV8fCJNMCwwWiIsVi5hdHRyKCJkIix0KSxVLmF0dHIoImQiLGUpLGQudHJhbnNpdGlvblpvb21ib3goVixVLE4saiksTj0hMDt2YXIgbj17fTtydChuKSxyLmVtaXQoInBsb3RseV9yZWxheW91dGluZyIsbil9ZnVuY3Rpb24gUSh0LHIpe3ZhciBuLGEsaT16K3Qsbz1JK3Iscz1HKHosSSksbD1NYXRoLm1pbihHKGksbyksdSksYz1ZKHosSSk7SihzLGwpJiYobj1CK2UucGF0aFNlY3RvcihGKSxEJiYobis9ZS5wYXRoU2VjdG9yKEQpKSxhPVgoRCxjKStYKEYsYykpLEsobixhKX1mdW5jdGlvbiAkKHQsZSxyLG4pe3ZhciBhPUEuZmluZEludGVyc2VjdGlvblhZKHIsbixyLFt0LW0sXy1lXSk7cmV0dXJuIEgoYVswXSxhWzFdKX1mdW5jdGlvbiB0dCh0LHIpe3ZhciBuLGEsaT16K3Qsbz1JK3Iscz1ZKHosSSksbD1ZKGksbyksYz1MKHMsayksaD1MKGwsayk7SigkKHosSSxjWzBdLGNbMV0pLE1hdGgubWluKCQoaSxvLGhbMF0saFsxXSksdSkpJiYobj1CK2UucGF0aFNlY3RvcihGKSxEJiYobis9ZS5wYXRoU2VjdG9yKEQpKSxhPVtaKEQsY1swXSxjWzFdKSxaKEYsY1swXSxjWzFdKV0uam9pbigiICIpKSxLKG4sYSl9ZnVuY3Rpb24gZXQoKXtpZihkLnJlbW92ZVpvb21ib3gociksbnVsbCE9PUQmJm51bGwhPT1GKXt2YXIgdD17fTtydCh0KSxkLnNob3dEb3VibGVDbGlja05vdGlmaWVyKHIpLGkuY2FsbCgiX2d1aVJlbGF5b3V0IixyLHQpfX1mdW5jdGlvbiBydCh0KXt2YXIgcj1ULl9ybCxuPShyWzFdLXJbMF0pLygxLWgvdSkvdSxhPVtyWzBdKyhELWgpKm4sclswXSsoRi1oKSpuXTt0W2UuaWQrIi5yYWRpYWxheGlzLnJhbmdlIl09YX1mdW5jdGlvbiBudCh0LG4pe3ZhciBhPXIuX2Z1bGxMYXlvdXQuY2xpY2ttb2RlO2lmKGQucmVtb3ZlWm9vbWJveChyKSwyPT09dCl7dmFyIG89e307Zm9yKHZhciBzIGluIGUudmlld0luaXRpYWwpb1tlLmlkKyIuIitzXT1lLnZpZXdJbml0aWFsW3NdO3IuZW1pdCgicGxvdGx5X2RvdWJsZWNsaWNrIixudWxsKSxpLmNhbGwoIl9ndWlSZWxheW91dCIscixvKX1hLmluZGV4T2YoInNlbGVjdCIpPi0xJiYxPT09dCYmeChuLHIsW2UueGF4aXNdLFtlLnlheGlzXSxlLmlkLHEpLGEuaW5kZXhPZigiZXZlbnQiKT4tMSYmdi5jbGljayhyLG4sZS5pZCl9cS5wcmVwRm49ZnVuY3Rpb24odCxuLGkpe3ZhciBvPXIuX2Z1bGxMYXlvdXQuZHJhZ21vZGUsbD1PLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHo9bi1sLmxlZnQsST1pLWwudG9wLGspe3ZhciBjPUEuZmluZFBvbHlnb25PZmZzZXQodSx3WzBdLHdbMV0sayk7eis9bStjWzBdLEkrPV8rY1sxXX1zd2l0Y2gobyl7Y2FzZSJ6b29tIjpxLm1vdmVGbj1rP3R0OlEscS5jbGlja0ZuPW50LHEuZG9uZUZuPWV0LGZ1bmN0aW9uKCl7RD1udWxsLEY9bnVsbCxCPWUucGF0aFN1YnBsb3QoKSxOPSExO3ZhciB0PXIuX2Z1bGxMYXlvdXRbZS5pZF07aj1hKHQuYmdjb2xvcikuZ2V0THVtaW5hbmNlKCksKFY9ZC5tYWtlWm9vbWJveChzLGosZixwLEIpKS5hdHRyKCJmaWxsLXJ1bGUiLCJldmVub2RkIiksVT1kLm1ha2VDb3JuZXJzKHMsZixwKSxiKHIpfSgpO2JyZWFrO2Nhc2Uic2VsZWN0IjpjYXNlImxhc3NvIjp5KHQsbixpLHEsbyl9fSxPLm9ubW91c2Vtb3ZlPWZ1bmN0aW9uKHQpe3YuaG92ZXIocix0LGUuaWQpLHIuX2Z1bGxMYXlvdXQuX2xhc3Rob3Zlcj1PLHIuX2Z1bGxMYXlvdXQuX2hvdmVyc3VicGxvdD1lLmlkfSxPLm9ubW91c2VvdXQ9ZnVuY3Rpb24odCl7ci5fZHJhZ2dpbmd8fGcudW5ob3ZlcihyLHQpfSxnLmluaXQocSl9LE8udXBkYXRlUmFkaWFsRHJhZz1mdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcyxzPWEuZ2QsbD1hLmxheWVycyxjPWEucmFkaXVzLHU9YS5pbm5lclJhZGl1cyxoPWEuY3gsZj1hLmN5LHA9YS5yYWRpYWxBeGlzLHY9TS5yYWRpYWxEcmFnQm94U2l6ZSxtPXYvMjtpZihwLnZpc2libGUpe3ZhciB5LHgsXyxUPUwoYS5yYWRpYWxBeGlzQW5nbGUpLEE9cC5fcmwsUz1BWzBdLEU9QVsxXSxQPUFbcl0sTz0uNzUqKEFbMV0tQVswXSkvKDEtZS5ob2xlKS9jO3I/KHk9aCsoYyttKSpNYXRoLmNvcyhUKSx4PWYtKGMrbSkqTWF0aC5zaW4oVCksXz0icmFkaWFsZHJhZyIpOih5PWgrKHUtbSkqTWF0aC5jb3MoVCkseD1mLSh1LW0pKk1hdGguc2luKFQpLF89InJhZGlhbGRyYWctaW5uZXIiKTt2YXIgeixCLE4saj1kLm1ha2VSZWN0RHJhZ2dlcihsLF8sImNyb3NzaGFpciIsLW0sLW0sdix2KSxWPXtlbGVtZW50OmosZ2Q6c307RChuLnNlbGVjdChqKSxwLnZpc2libGUmJnU8Yyx7dHJhbnNmb3JtOlIoeSx4KX0pLFYucHJlcEZuPWZ1bmN0aW9uKCl7ej1udWxsLEI9bnVsbCxOPW51bGwsVi5tb3ZlRm49VSxWLmRvbmVGbj1xLGIocyl9LFYuY2xhbXBGbj1mdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLnNxcnQodCp0K2UqZSk8TS5NSU5EUkFHJiYodD0wLGU9MCksW3QsZV19LGcuaW5pdChWKX1mdW5jdGlvbiBVKHQsZSl7aWYoeil6KHQsZSk7ZWxzZXt2YXIgbj1bdCwtZV0saT1bTWF0aC5jb3MoVCksTWF0aC5zaW4oVCldLGw9TWF0aC5hYnMoby5kb3QobixpKS9NYXRoLnNxcnQoby5kb3QobixuKSkpO2lzTmFOKGwpfHwoej1sPC41P0g6Ryl9dmFyIGM9e307IWZ1bmN0aW9uKHQpe251bGwhPT1CP3RbYS5pZCsiLnJhZGlhbGF4aXMuYW5nbGUiXT1COm51bGwhPT1OJiYodFthLmlkKyIucmFkaWFsYXhpcy5yYW5nZVsiK3IrIl0iXT1OKX0oYykscy5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLGMpfWZ1bmN0aW9uIHEoKXtudWxsIT09Qj9pLmNhbGwoIl9ndWlSZWxheW91dCIscyxhLmlkKyIucmFkaWFsYXhpcy5hbmdsZSIsQik6bnVsbCE9PU4mJmkuY2FsbCgiX2d1aVJlbGF5b3V0IixzLGEuaWQrIi5yYWRpYWxheGlzLnJhbmdlWyIrcisiXSIsTil9ZnVuY3Rpb24gSCh0LGUpe2lmKDAhPT1yKXt2YXIgbj15K3QsaT14K2U7Qj1NYXRoLmF0YW4yKGYtaSxuLWgpLGEudmFuZ2xlcyYmKEI9SShCLGEudmFuZ2xlcykpLEI9QyhCKTt2YXIgbz1SKGgsZikrRigtQik7bFsicmFkaWFsLWF4aXMiXS5hdHRyKCJ0cmFuc2Zvcm0iLG8pLGxbInJhZGlhbC1saW5lIl0uc2VsZWN0KCJsaW5lIikuYXR0cigidHJhbnNmb3JtIixvKTt2YXIgcz1hLmdkLl9mdWxsTGF5b3V0LGM9c1thLmlkXTthLnVwZGF0ZVJhZGlhbEF4aXNUaXRsZShzLGMsQil9fWZ1bmN0aW9uIEcodCxlKXt2YXIgbj1vLmRvdChbdCwtZV0sW01hdGguY29zKFQpLE1hdGguc2luKFQpXSk7aWYoTj1QLU8qbixPPjA9PShyP04+UzpOPEUpKXt2YXIgbD1zLl9mdWxsTGF5b3V0LGM9bFthLmlkXTtwLnJhbmdlW3JdPU4scC5fcmxbcl09TixhLnVwZGF0ZVJhZGlhbEF4aXMobCxjKSxhLnhheGlzLnNldFJhbmdlKCksYS54YXhpcy5zZXRTY2FsZSgpLGEueWF4aXMuc2V0UmFuZ2UoKSxhLnlheGlzLnNldFNjYWxlKCk7dmFyIHU9ITE7Zm9yKHZhciBoIGluIGEudHJhY2VIYXNoKXt2YXIgZj1hLnRyYWNlSGFzaFtoXSxkPW8uZmlsdGVyVmlzaWJsZShmKTtmWzBdWzBdLnRyYWNlLl9tb2R1bGUucGxvdChzLGEsZCxjKSxpLnRyYWNlSXMoaCwiZ2wiKSYmZC5sZW5ndGgmJih1PSEwKX11JiYodyhzKSxrKHMpKX1lbHNlIE49bnVsbH19LE8udXBkYXRlQW5ndWxhckRyYWc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPWUuZ2QsYT1lLmxheWVycyxzPWUucmFkaXVzLGM9ZS5hbmd1bGFyQXhpcyx1PWUuY3gsaD1lLmN5LGY9ZS5jeHgscD1lLmN5eSx2PU0uYW5ndWxhckRyYWdCb3hTaXplLG09ZC5tYWtlRHJhZ2dlcihhLCJwYXRoIiwiYW5ndWxhcmRyYWciLCJtb3ZlIikseT17ZWxlbWVudDptLGdkOnJ9O2Z1bmN0aW9uIHgodCxlKXtyZXR1cm4gTWF0aC5hdGFuMihwK3YtZSx0LWYtdil9bi5zZWxlY3QobSkuYXR0cigiZCIsZS5wYXRoQW5udWx1cyhzLHMrdikpLmF0dHIoInRyYW5zZm9ybSIsUih1LGgpKS5jYWxsKF8sIm1vdmUiKTt2YXIgVCxBLFMsRSxMLFAsTz1hLmZyb250cGxvdC5zZWxlY3QoIi5zY2F0dGVybGF5ZXIiKS5zZWxlY3RBbGwoIi50cmFjZSIpLHo9Ty5zZWxlY3RBbGwoIi5wb2ludCIpLEk9Ty5zZWxlY3RBbGwoIi50ZXh0cG9pbnQiKTtmdW5jdGlvbiBEKHQscyl7dmFyIGQ9ZS5nZC5fZnVsbExheW91dCxnPWRbZS5pZF0sdj14KFQrdCxBK3MpLG09Qyh2LVApO2lmKEU9UyttLGEuZnJvbnRwbG90LmF0dHIoInRyYW5zZm9ybSIsUihlLnhPZmZzZXQyLGUueU9mZnNldDIpK0YoWy1tLGYscF0pKSxlLnZhbmdsZXMpe0w9ZS5yYWRpYWxBeGlzQW5nbGUrbTt2YXIgeT1SKHUsaCkrRigtbSksYj1SKHUsaCkrRigtTCk7YS5iZy5hdHRyKCJ0cmFuc2Zvcm0iLHkpLGFbInJhZGlhbC1ncmlkIl0uYXR0cigidHJhbnNmb3JtIix5KSxhWyJyYWRpYWwtYXhpcyJdLmF0dHIoInRyYW5zZm9ybSIsYiksYVsicmFkaWFsLWxpbmUiXS5zZWxlY3QoImxpbmUiKS5hdHRyKCJ0cmFuc2Zvcm0iLGIpLGUudXBkYXRlUmFkaWFsQXhpc1RpdGxlKGQsZyxMKX1lbHNlIGUuY2xpcFBhdGhzLmZvclRyYWNlcy5zZWxlY3QoInBhdGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLFIoZixwKStGKG0pKTt6LmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxlPWwuZ2V0VHJhbnNsYXRlKHQpO3QuYXR0cigidHJhbnNmb3JtIixSKGUueCxlLnkpK0YoW21dKSl9KSxJLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxlPXQuc2VsZWN0KCJ0ZXh0Iikscj1sLmdldFRyYW5zbGF0ZSh0KTt0LmF0dHIoInRyYW5zZm9ybSIsRihbbSxlLmF0dHIoIngiKSxlLmF0dHIoInkiKV0pK1Ioci54LHIueSkpfSksYy5yb3RhdGlvbj1vLm1vZEhhbGYoRSwzNjApLGUudXBkYXRlQW5ndWxhckF4aXMoZCxnKSxlLl9oYXNDbGlwT25BeGlzRmFsc2UmJiFvLmlzRnVsbENpcmNsZShlLnNlY3RvckluUmFkKSYmTy5jYWxsKGwuaGlkZU91dHNpZGVSYW5nZVBvaW50cyxlKTt2YXIgXz0hMTtmb3IodmFyIE0gaW4gZS50cmFjZUhhc2gpaWYoaS50cmFjZUlzKE0sImdsIikpe3ZhciBEPWUudHJhY2VIYXNoW01dLE49by5maWx0ZXJWaXNpYmxlKEQpO0RbMF1bMF0udHJhY2UuX21vZHVsZS5wbG90KHIsZSxOLGcpLE4ubGVuZ3RoJiYoXz0hMCl9XyYmKHcociksayhyKSk7dmFyIGo9e307QihqKSxyLmVtaXQoInBsb3RseV9yZWxheW91dGluZyIsail9ZnVuY3Rpb24gQih0KXt0W2UuaWQrIi5hbmd1bGFyYXhpcy5yb3RhdGlvbiJdPUUsZS52YW5nbGVzJiYodFtlLmlkKyIucmFkaWFsYXhpcy5hbmdsZSJdPUwpfWZ1bmN0aW9uIE4oKXtJLnNlbGVjdCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsbnVsbCk7dmFyIHQ9e307Qih0KSxpLmNhbGwoIl9ndWlSZWxheW91dCIscix0KX15LnByZXBGbj1mdW5jdGlvbihuLGEsaSl7dmFyIG89dFtlLmlkXTtTPW8uYW5ndWxhcmF4aXMucm90YXRpb247dmFyIHM9bS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtUPWEtcy5sZWZ0LEE9aS1zLnRvcCxQPXgoVCxBKSx5Lm1vdmVGbj1ELHkuZG9uZUZuPU4sYihyKX0sZS52YW5nbGVzJiYhby5pc0Z1bGxDaXJjbGUoZS5zZWN0b3JJblJhZCkmJih5LnByZXBGbj1vLm5vb3AsXyhuLnNlbGVjdChtKSxudWxsKSksZy5pbml0KHkpfSxPLmlzUHRJbnNpZGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zZWN0b3JJblJhZCxyPXRoaXMudmFuZ2xlcyxuPXRoaXMuYW5ndWxhckF4aXMuYzJnKHQudGhldGEpLGE9dGhpcy5yYWRpYWxBeGlzLGk9YS5jMmwodC5yKSxzPWEuX3JsO3JldHVybihyP0EuaXNQdEluc2lkZVBvbHlnb246by5pc1B0SW5zaWRlU2VjdG9yKShpLG4scyxlLHIpfSxPLnBhdGhBcmM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zZWN0b3JJblJhZCxyPXRoaXMudmFuZ2xlcztyZXR1cm4ocj9BLnBhdGhQb2x5Z29uOm8ucGF0aEFyYykodCxlWzBdLGVbMV0scil9LE8ucGF0aFNlY3Rvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnNlY3RvckluUmFkLHI9dGhpcy52YW5nbGVzO3JldHVybihyP0EucGF0aFBvbHlnb246by5wYXRoU2VjdG9yKSh0LGVbMF0sZVsxXSxyKX0sTy5wYXRoQW5udWx1cz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuc2VjdG9ySW5SYWQsbj10aGlzLnZhbmdsZXM7cmV0dXJuKG4/QS5wYXRoUG9seWdvbkFubnVsdXM6by5wYXRoQW5udWx1cykodCxlLHJbMF0sclsxXSxuKX0sTy5wYXRoU3VicGxvdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaW5uZXJSYWRpdXMsZT10aGlzLnJhZGl1cztyZXR1cm4gdD90aGlzLnBhdGhBbm51bHVzKHQsZSk6dGhpcy5wYXRoU2VjdG9yKGUpfSxPLmZpbGxWaWV3SW5pdGlhbEtleT1mdW5jdGlvbih0LGUpe3QgaW4gdGhpcy52aWV3SW5pdGlhbHx8KHRoaXMudmlld0luaXRpYWxbdF09ZSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCI6NjEwLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9jb21wb25lbnRzL3RpdGxlcyI6Njc5LCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODYsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvY2xlYXJfZ2xfY2FudmFzZXMiOjcwMiwiLi4vLi4vbGliL3NldGN1cnNvciI6NzM3LCIuLi8uLi9wbG90X2FwaS9zdWJyb3V0aW5lcyI6NzU2LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9jYXJ0ZXNpYW4vYXV0b3JhbmdlIjo3NjQsIi4uL2NhcnRlc2lhbi9kcmFnYm94Ijo3NzMsIi4uL2NhcnRlc2lhbi9zZWxlY3QiOjc4MiwiLi4vY2FydGVzaWFuL3NldF9jb252ZXJ0Ijo3ODMsIi4uL3Bsb3RzIjo4MjYsIi4vY29uc3RhbnRzIjo4MjcsIi4vaGVscGVycyI6ODI4LCIuL3NldF9jb252ZXJ0Ijo4MzksZDM6MTY1LHRpbnljb2xvcjI6NTM2fV0sODM5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vY2FydGVzaWFuL3NldF9jb252ZXJ0IiksaT1uLmRlZzJyYWQsbz1uLnJhZDJkZWc7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtzd2l0Y2goYSh0LHIpLHQuX2lkKXtjYXNlIngiOmNhc2UicmFkaWFsYXhpcyI6IWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5fc3VicGxvdDt0LnNldEdlb21ldHJ5PWZ1bmN0aW9uKCl7dmFyIGU9dC5fcmxbMF0sbj10Ll9ybFsxXSxhPXIuaW5uZXJSYWRpdXMsaT0oci5yYWRpdXMtYSkvKG4tZSksbz1hL2kscz1lPm4/ZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTB9OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0wfTt0LmMyZz1mdW5jdGlvbihyKXt2YXIgbj10LmMybChyKS1lO3JldHVybihzKG4pP246MCkrb30sdC5nMmM9ZnVuY3Rpb24ocil7cmV0dXJuIHQubDJjKHIrZS1vKX0sdC5nMnA9ZnVuY3Rpb24odCl7cmV0dXJuIHQqaX0sdC5jMnA9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZzJwKHQuYzJnKGUpKX19fSh0LGUpO2JyZWFrO2Nhc2UiYW5ndWxhcmF4aXMiOiFmdW5jdGlvbih0LGUpe3ZhciByPXQudHlwZTtpZigibGluZWFyIj09PXIpe3ZhciBhPXQuZDJjLHM9dC5jMmQ7dC5kMmM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4iZGVncmVlcyI9PT1lP2kodCk6dH0oYSh0KSxlKX0sdC5jMmQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcyhmdW5jdGlvbih0LGUpe3JldHVybiJkZWdyZWVzIj09PWU/byh0KTp0fSh0LGUpKX19dC5tYWtlQ2FsY2RhdGE9ZnVuY3Rpb24oZSxhKXt2YXIgaSxvLHM9ZVthXSxsPWUuX2xlbmd0aCxjPWZ1bmN0aW9uKHIpe3JldHVybiB0LmQyYyhyLGUudGhldGF1bml0KX07aWYocyl7aWYobi5pc1R5cGVkQXJyYXkocykmJiJsaW5lYXIiPT09cil7aWYobD09PXMubGVuZ3RoKXJldHVybiBzO2lmKHMuc3ViYXJyYXkpcmV0dXJuIHMuc3ViYXJyYXkoMCxsKX1mb3IoaT1uZXcgQXJyYXkobCksbz0wO288bDtvKyspaVtvXT1jKHNbb10pfWVsc2V7dmFyIHU9YSsiMCIsaD0iZCIrYSxmPXUgaW4gZT9jKGVbdV0pOjAscD1lW2hdP2MoZVtoXSk6KHQucGVyaW9kfHwyKk1hdGguUEkpL2w7Zm9yKGk9bmV3IEFycmF5KGwpLG89MDtvPGw7bysrKWlbb109ZitvKnB9cmV0dXJuIGl9LHQuc2V0R2VvbWV0cnk9ZnVuY3Rpb24oKXt2YXIgYSxzLGwsYyx1PWUuc2VjdG9yLGg9dS5tYXAoaSksZj17Y2xvY2t3aXNlOi0xLGNvdW50ZXJjbG9ja3dpc2U6MX1bdC5kaXJlY3Rpb25dLHA9aSh0LnJvdGF0aW9uKSxkPWZ1bmN0aW9uKHQpe3JldHVybiBmKnQrcH0sZz1mdW5jdGlvbih0KXtyZXR1cm4odC1wKS9mfTtzd2l0Y2gocil7Y2FzZSJsaW5lYXIiOnM9YT1uLmlkZW50aXR5LGM9aSxsPW8sdC5yYW5nZT1uLmlzRnVsbENpcmNsZShoKT9bdVswXSx1WzBdKzM2MF06aC5tYXAoZykubWFwKG8pO2JyZWFrO2Nhc2UiY2F0ZWdvcnkiOnZhciB2PXQuX2NhdGVnb3JpZXMubGVuZ3RoLG09dC5wZXJpb2Q/TWF0aC5tYXgodC5wZXJpb2Qsdik6djswPT09bSYmKG09MSkscz1jPWZ1bmN0aW9uKHQpe3JldHVybiAyKnQqTWF0aC5QSS9tfSxhPWw9ZnVuY3Rpb24odCl7cmV0dXJuIHQqbS9NYXRoLlBJLzJ9LHQucmFuZ2U9WzAsbV19dC5jMmc9ZnVuY3Rpb24odCl7cmV0dXJuIGQocyh0KSl9LHQuZzJjPWZ1bmN0aW9uKHQpe3JldHVybiBhKGcodCkpfSx0LnQyZz1mdW5jdGlvbih0KXtyZXR1cm4gZChjKHQpKX0sdC5nMnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGwoZyh0KSl9fX0odCxlKX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9jYXJ0ZXNpYW4vc2V0X2NvbnZlcnQiOjc4M31dLDg0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPXQoIi4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxpPXQoIi4vZG9tYWluIikuZGVmYXVsdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzLGwsYz1vLnR5cGUsdT1vLmF0dHJpYnV0ZXMsaD1vLmhhbmRsZURlZmF1bHRzLGY9by5wYXJ0aXRpb258fCJ4IixwPWUuX3N1YnBsb3RzW2NdLGQ9cC5sZW5ndGgsZz1kJiZwWzBdLnJlcGxhY2UoL1xkKyQvLCIiKTtmdW5jdGlvbiB2KHQsZSl7cmV0dXJuIG4uY29lcmNlKHMsbCx1LHQsZSl9Zm9yKHZhciBtPTA7bTxkO20rKyl7dmFyIHk9cFttXTtzPXRbeV0/dFt5XTp0W3ldPXt9LGw9YS5uZXdDb250YWluZXIoZSx5LGcpLHYoInVpcmV2aXNpb24iLGUudWlyZXZpc2lvbik7dmFyIHg9e307eFtmXT1bbS9kLChtKzEpL2RdLGkobCxlLHYseCksby5pZD15LGgocyxsLHYsbyl9fX0seyIuLi9saWIiOjcxNywiLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuL2RvbWFpbiI6NzkwfV0sODQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO1snVmFyaWFibGVzIGFyZSBpbnNlcnRlZCB1c2luZyAle3ZhcmlhYmxlfSwgZm9yIGV4YW1wbGUgInk6ICV7eX0iLicsJ051bWJlcnMgYXJlIGZvcm1hdHRlZCB1c2luZyBkMy1mb3JtYXRcJ3Mgc3ludGF4ICV7dmFyaWFibGU6ZDMtZm9ybWF0fSwgZm9yIGV4YW1wbGUgIlByaWNlOiAle3k6JC4yZn0iLicsdCgiLi4vY29uc3RhbnRzL2RvY3MiKS5GT1JNQVRfTElOSywiZm9yIGRldGFpbHMgb24gdGhlIGZvcm1hdHRpbmcgc3ludGF4LiIsJ0RhdGVzIGFyZSBmb3JtYXR0ZWQgdXNpbmcgZDMtdGltZS1mb3JtYXRcJ3Mgc3ludGF4ICV7dmFyaWFibGV8ZDMtdGltZS1mb3JtYXR9LCBmb3IgZXhhbXBsZSAiRGF5OiAlezIwMTktMDEtMDF8JUF9Ii4nLHQoIi4uL2NvbnN0YW50cy9kb2NzIikuREFURV9GT1JNQVRfTElOSywiZm9yIGRldGFpbHMgb24gdGhlIGRhdGUgZm9ybWF0dGluZyBzeW50YXguIl0uam9pbigiICIpO2Z1bmN0aW9uIG4odCl7dmFyIGU9dC5kZXNjcmlwdGlvbj8iICIrdC5kZXNjcmlwdGlvbjoiIixyPXQua2V5c3x8W107aWYoci5sZW5ndGg+MCl7Zm9yKHZhciBuPVtdLGE9MDthPHIubGVuZ3RoO2ErKyluW2FdPSJgIityW2FdKyJgIjtlKz0iRmluYWxseSwgdGhlIHRlbXBsYXRlIHN0cmluZyBoYXMgYWNjZXNzIHRvICIsZT0xPT09ci5sZW5ndGg/InZhcmlhYmxlICIrblswXToidmFyaWFibGVzICIrbi5zbGljZSgwLC0xKS5qb2luKCIsICIpKyIgYW5kICIrbi5zbGljZSgtMSkrIi4ifXJldHVybiBlfXIuaG92ZXJ0ZW1wbGF0ZUF0dHJzPWZ1bmN0aW9uKHQsZSl7dD10fHx7fTtuKGU9ZXx8e30pO3ZhciByPXt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6dC5lZGl0VHlwZXx8Im5vbmUifTtyZXR1cm4hMSE9PXQuYXJyYXlPayYmKHIuYXJyYXlPaz0hMCkscn0sci50ZXh0dGVtcGxhdGVBdHRycz1mdW5jdGlvbih0LGUpe3Q9dHx8e307bihlPWV8fHt9KTt2YXIgcj17dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOnQuZWRpdFR5cGV8fCJjYWxjIn07cmV0dXJuITEhPT10LmFycmF5T2smJihyLmFycmF5T2s9ITApLHJ9fSx7Ii4uL2NvbnN0YW50cy9kb2NzIjo2ODh9XSw4NDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi90ZXJuYXJ5IiksYT10KCIuLi8uLi9wbG90cy9nZXRfZGF0YSIpLmdldFN1YnBsb3RDYWxjRGF0YSxpPXQoIi4uLy4uL2xpYiIpLmNvdW50ZXJSZWdleDtyLm5hbWU9InRlcm5hcnkiO3ZhciBvPXIuYXR0cj0ic3VicGxvdCI7ci5pZFJvb3Q9InRlcm5hcnkiLHIuaWRSZWdleD1yLmF0dHJSZWdleD1pKCJ0ZXJuYXJ5IiksKHIuYXR0cmlidXRlcz17fSlbb109e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDoidGVybmFyeSIsZWRpdFR5cGU6ImNhbGMifSxyLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHIuc3VwcGx5TGF5b3V0RGVmYXVsdHM9dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxyLnBsb3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj10LmNhbGNkYXRhLGk9ZS5fc3VicGxvdHMudGVybmFyeSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBzPWlbb10sbD1hKHIsInRlcm5hcnkiLHMpLGM9ZVtzXS5fc3VicGxvdDtjfHwoYz1uZXcgbih7aWQ6cyxncmFwaERpdjp0LGNvbnRhaW5lcjplLl90ZXJuYXJ5bGF5ZXIubm9kZSgpfSxlKSxlW3NdLl9zdWJwbG90PWMpLGMucGxvdChsLGUsdC5fcHJvbWlzZXMpfX0sci5jbGVhbj1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9bi5fc3VicGxvdHMudGVybmFyeXx8W10saT0wO2k8YS5sZW5ndGg7aSsrKXt2YXIgbz1hW2ldLHM9bltvXS5fc3VicGxvdDshZVtvXSYmcyYmKHMucGxvdENvbnRhaW5lci5yZW1vdmUoKSxzLmNsaXBEZWYucmVtb3ZlKCkscy5jbGlwRGVmUmVsYXRpdmUucmVtb3ZlKCkscy5sYXllcnNbImEtdGl0bGUiXS5yZW1vdmUoKSxzLmxheWVyc1siYi10aXRsZSJdLnJlbW92ZSgpLHMubGF5ZXJzWyJjLXRpdGxlIl0ucmVtb3ZlKCkpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjg0MywiLi9sYXlvdXRfZGVmYXVsdHMiOjg0NCwiLi90ZXJuYXJ5Ijo4NDV9XSw4NDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksYT10KCIuLi9kb21haW4iKS5hdHRyaWJ1dGVzLGk9dCgiLi4vY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxsPXt0aXRsZTp7dGV4dDppLnRpdGxlLnRleHQsZm9udDppLnRpdGxlLmZvbnR9LGNvbG9yOmkuY29sb3IsdGlja21vZGU6aS50aWNrbW9kZSxudGlja3M6cyh7fSxpLm50aWNrcyx7ZGZsdDo2LG1pbjoxfSksdGljazA6aS50aWNrMCxkdGljazppLmR0aWNrLHRpY2t2YWxzOmkudGlja3ZhbHMsdGlja3RleHQ6aS50aWNrdGV4dCx0aWNrczppLnRpY2tzLHRpY2tsZW46aS50aWNrbGVuLHRpY2t3aWR0aDppLnRpY2t3aWR0aCx0aWNrY29sb3I6aS50aWNrY29sb3Isc2hvd3RpY2tsYWJlbHM6aS5zaG93dGlja2xhYmVscyxzaG93dGlja3ByZWZpeDppLnNob3d0aWNrcHJlZml4LHRpY2twcmVmaXg6aS50aWNrcHJlZml4LHNob3d0aWNrc3VmZml4Omkuc2hvd3RpY2tzdWZmaXgsdGlja3N1ZmZpeDppLnRpY2tzdWZmaXgsc2hvd2V4cG9uZW50Omkuc2hvd2V4cG9uZW50LGV4cG9uZW50Zm9ybWF0OmkuZXhwb25lbnRmb3JtYXQsc2VwYXJhdGV0aG91c2FuZHM6aS5zZXBhcmF0ZXRob3VzYW5kcyx0aWNrZm9udDppLnRpY2tmb250LHRpY2thbmdsZTppLnRpY2thbmdsZSx0aWNrZm9ybWF0OmkudGlja2Zvcm1hdCx0aWNrZm9ybWF0c3RvcHM6aS50aWNrZm9ybWF0c3RvcHMsaG92ZXJmb3JtYXQ6aS5ob3ZlcmZvcm1hdCxzaG93bGluZTpzKHt9LGkuc2hvd2xpbmUse2RmbHQ6ITB9KSxsaW5lY29sb3I6aS5saW5lY29sb3IsbGluZXdpZHRoOmkubGluZXdpZHRoLHNob3dncmlkOnMoe30saS5zaG93Z3JpZCx7ZGZsdDohMH0pLGdyaWRjb2xvcjppLmdyaWRjb2xvcixncmlkd2lkdGg6aS5ncmlkd2lkdGgsbGF5ZXI6aS5sYXllcixtaW46e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLG1pbjowfSxfZGVwcmVjYXRlZDp7dGl0bGU6aS5fZGVwcmVjYXRlZC50aXRsZSx0aXRsZWZvbnQ6aS5fZGVwcmVjYXRlZC50aXRsZWZvbnR9fSxjPWUuZXhwb3J0cz1vKHtkb21haW46YSh7bmFtZToidGVybmFyeSJ9KSxiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmJhY2tncm91bmR9LHN1bTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsbWluOjB9LGFheGlzOmwsYmF4aXM6bCxjYXhpczpsfSwicGxvdCIsImZyb20tcm9vdCIpO2MudWlyZXZpc2lvbj17dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LGMuYWF4aXMudWlyZXZpc2lvbj1jLmJheGlzLnVpcmV2aXNpb249Yy5jYXhpcy51aXJldmlzaW9uPXt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjo1OTEsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi4vZG9tYWluIjo3OTB9XSw4NDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi9zdWJwbG90X2RlZmF1bHRzIikscz10KCIuLi9jYXJ0ZXNpYW4vdGlja19sYWJlbF9kZWZhdWx0cyIpLGw9dCgiLi4vY2FydGVzaWFuL3RpY2tfbWFya19kZWZhdWx0cyIpLGM9dCgiLi4vY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiKSx1PXQoIi4uL2NhcnRlc2lhbi9saW5lX2dyaWRfZGVmYXVsdHMiKSxoPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxmPVsiYWF4aXMiLCJiYXhpcyIsImNheGlzIl07ZnVuY3Rpb24gcCh0LGUscixpKXt2YXIgbyxzLGwsYz1yKCJiZ2NvbG9yIiksdT1yKCJzdW0iKTtpLmJnQ29sb3I9bi5jb21iaW5lKGMsaS5wYXBlcl9iZ2NvbG9yKTtmb3IodmFyIGg9MDtoPGYubGVuZ3RoO2grKylzPXRbbz1mW2hdXXx8e30sKGw9YS5uZXdDb250YWluZXIoZSxvKSkuX25hbWU9byxkKHMsbCxpLGUpO3ZhciBwPWUuYWF4aXMsZz1lLmJheGlzLHY9ZS5jYXhpcztwLm1pbitnLm1pbit2Lm1pbj49dSYmKHAubWluPTAsZy5taW49MCx2Lm1pbj0wLHQuYWF4aXMmJmRlbGV0ZSB0LmFheGlzLm1pbix0LmJheGlzJiZkZWxldGUgdC5iYXhpcy5taW4sdC5jYXhpcyYmZGVsZXRlIHQuY2F4aXMubWluKX1mdW5jdGlvbiBkKHQsZSxyLG4pe3ZhciBhPWhbZS5fbmFtZV07ZnVuY3Rpb24gbyhyLG4pe3JldHVybiBpLmNvZXJjZSh0LGUsYSxyLG4pfW8oInVpcmV2aXNpb24iLG4udWlyZXZpc2lvbiksZS50eXBlPSJsaW5lYXIiO3ZhciBmPW8oImNvbG9yIikscD1mIT09YS5jb2xvci5kZmx0P2Y6ci5mb250LmNvbG9yLGQ9ZS5fbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxnPSJDb21wb25lbnQgIitkLHY9bygidGl0bGUudGV4dCIsZyk7ZS5faG92ZXJ0aXRsZT12PT09Zz92OmQsaS5jb2VyY2VGb250KG8sInRpdGxlLmZvbnQiLHtmYW1pbHk6ci5mb250LmZhbWlseSxzaXplOk1hdGgucm91bmQoMS4yKnIuZm9udC5zaXplKSxjb2xvcjpwfSksbygibWluIiksYyh0LGUsbywibGluZWFyIikscyh0LGUsbywibGluZWFyIix7fSksbCh0LGUsbyx7b3V0ZXJUaWNrczohMH0pLG8oInNob3d0aWNrbGFiZWxzIikmJihpLmNvZXJjZUZvbnQobywidGlja2ZvbnQiLHtmYW1pbHk6ci5mb250LmZhbWlseSxzaXplOnIuZm9udC5zaXplLGNvbG9yOnB9KSxvKCJ0aWNrYW5nbGUiKSxvKCJ0aWNrZm9ybWF0IikpLHUodCxlLG8se2RmbHRDb2xvcjpmLGJnQ29sb3I6ci5iZ0NvbG9yLGJsZW5kOjYwLHNob3dMaW5lOiEwLHNob3dHcmlkOiEwLG5vWmVyb0xpbmU6ITAsYXR0cmlidXRlczphfSksbygiaG92ZXJmb3JtYXQiKSxvKCJsYXllciIpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7byh0LGUscix7dHlwZToidGVybmFyeSIsYXR0cmlidXRlczpoLGhhbmRsZURlZmF1bHRzOnAsZm9udDplLmZvbnQscGFwZXJfYmdjb2xvcjplLnBhcGVyX2JnY29sb3J9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi9jYXJ0ZXNpYW4vbGluZV9ncmlkX2RlZmF1bHRzIjo3NzksIi4uL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIjo3ODQsIi4uL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVsdHMiOjc4NSwiLi4vY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjc4NiwiLi4vc3VicGxvdF9kZWZhdWx0cyI6ODQwLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo4NDN9XSw4NDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoInRpbnljb2xvcjIiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5Iiksbz10KCIuLi8uLi9saWIiKSxzPW8uXyxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHU9dCgiLi4vY2FydGVzaWFuL3NldF9jb252ZXJ0IiksaD10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxmPXQoIi4uL3Bsb3RzIikscD10KCIuLi9jYXJ0ZXNpYW4vYXhlcyIpLGQ9dCgiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCIpLGc9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLHY9dCgiLi4vLi4vY29tcG9uZW50cy90aXRsZXMiKSxtPXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5wcmVwU2VsZWN0LHk9dCgiLi4vY2FydGVzaWFuL3NlbGVjdCIpLnNlbGVjdE9uQ2xpY2sseD10KCIuLi9jYXJ0ZXNpYW4vc2VsZWN0IikuY2xlYXJTZWxlY3QsYj10KCIuLi9jYXJ0ZXNpYW4vY29uc3RhbnRzIik7ZnVuY3Rpb24gXyh0LGUpe3RoaXMuaWQ9dC5pZCx0aGlzLmdyYXBoRGl2PXQuZ3JhcGhEaXYsdGhpcy5pbml0KGUpLHRoaXMubWFrZUZyYW1ld29yayhlKSx0aGlzLmFUaWNrTGF5b3V0PW51bGwsdGhpcy5iVGlja0xheW91dD1udWxsLHRoaXMuY1RpY2tMYXlvdXQ9bnVsbH1lLmV4cG9ydHM9Xzt2YXIgdz1fLnByb3RvdHlwZTt3LmluaXQ9ZnVuY3Rpb24odCl7dGhpcy5jb250YWluZXI9dC5fdGVybmFyeWxheWVyLHRoaXMuZGVmcz10Ll9kZWZzLHRoaXMubGF5b3V0SWQ9dC5fdWlkLHRoaXMudHJhY2VIYXNoPXt9LHRoaXMubGF5ZXJzPXt9fSx3LnBsb3Q9ZnVuY3Rpb24odCxlKXt2YXIgcj1lW3RoaXMuaWRdLG49ZS5fc2l6ZTt0aGlzLl9oYXNDbGlwT25BeGlzRmFsc2U9ITE7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspe2lmKCExPT09dFthXVswXS50cmFjZS5jbGlwb25heGlzKXt0aGlzLl9oYXNDbGlwT25BeGlzRmFsc2U9ITA7YnJlYWt9fXRoaXMudXBkYXRlTGF5ZXJzKHIpLHRoaXMuYWRqdXN0TGF5b3V0KHIsbiksZi5nZW5lcmFsVXBkYXRlUGVyVHJhY2VNb2R1bGUodGhpcy5ncmFwaERpdix0aGlzLHQsciksdGhpcy5sYXllcnMucGxvdGJnLnNlbGVjdCgicGF0aCIpLmNhbGwobC5maWxsLHIuYmdjb2xvcil9LHcubWFrZUZyYW1ld29yaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdyYXBoRGl2LHI9dFt0aGlzLmlkXSxuPXRoaXMuY2xpcElkPSJjbGlwIit0aGlzLmxheW91dElkK3RoaXMuaWQsYT10aGlzLmNsaXBJZFJlbGF0aXZlPSJjbGlwLXJlbGF0aXZlIit0aGlzLmxheW91dElkK3RoaXMuaWQ7dGhpcy5jbGlwRGVmPW8uZW5zdXJlU2luZ2xlQnlJZCh0Ll9jbGlwcywiY2xpcFBhdGgiLG4sZnVuY3Rpb24odCl7dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTTAsMFoiKX0pLHRoaXMuY2xpcERlZlJlbGF0aXZlPW8uZW5zdXJlU2luZ2xlQnlJZCh0Ll9jbGlwcywiY2xpcFBhdGgiLGEsZnVuY3Rpb24odCl7dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTTAsMFoiKX0pLHRoaXMucGxvdENvbnRhaW5lcj1vLmVuc3VyZVNpbmdsZSh0aGlzLmNvbnRhaW5lciwiZyIsdGhpcy5pZCksdGhpcy51cGRhdGVMYXllcnMociksYy5zZXRDbGlwVXJsKHRoaXMubGF5ZXJzLmJhY2twbG90LG4sZSksYy5zZXRDbGlwVXJsKHRoaXMubGF5ZXJzLmdyaWRzLG4sZSl9LHcudXBkYXRlTGF5ZXJzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGF5ZXJzLHI9WyJkcmFnbGF5ZXIiLCJwbG90YmciLCJiYWNrcGxvdCIsImdyaWRzIl07ImJlbG93IHRyYWNlcyI9PT10LmFheGlzLmxheWVyJiZyLnB1c2goImFheGlzIiwiYWxpbmUiKSwiYmVsb3cgdHJhY2VzIj09PXQuYmF4aXMubGF5ZXImJnIucHVzaCgiYmF4aXMiLCJibGluZSIpLCJiZWxvdyB0cmFjZXMiPT09dC5jYXhpcy5sYXllciYmci5wdXNoKCJjYXhpcyIsImNsaW5lIiksci5wdXNoKCJmcm9udHBsb3QiKSwiYWJvdmUgdHJhY2VzIj09PXQuYWF4aXMubGF5ZXImJnIucHVzaCgiYWF4aXMiLCJhbGluZSIpLCJhYm92ZSB0cmFjZXMiPT09dC5iYXhpcy5sYXllciYmci5wdXNoKCJiYXhpcyIsImJsaW5lIiksImFib3ZlIHRyYWNlcyI9PT10LmNheGlzLmxheWVyJiZyLnB1c2goImNheGlzIiwiY2xpbmUiKTt2YXIgYT10aGlzLnBsb3RDb250YWluZXIuc2VsZWN0QWxsKCJnLnRvcGxldmVsIikuZGF0YShyLFN0cmluZyksaT1bImFncmlkIiwiYmdyaWQiLCJjZ3JpZCJdO2EuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuInRvcGxldmVsICIrdH0pLmVhY2goZnVuY3Rpb24odCl7dmFyIHI9bi5zZWxlY3QodGhpcyk7ZVt0XT1yLCJmcm9udHBsb3QiPT09dD9yLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNjYXR0ZXJsYXllciIsITApOiJiYWNrcGxvdCI9PT10P3IuYXBwZW5kKCJnIikuY2xhc3NlZCgibWFwbGF5ZXIiLCEwKToicGxvdGJnIj09PXQ/ci5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTTAsMFoiKToiYWxpbmUiPT09dHx8ImJsaW5lIj09PXR8fCJjbGluZSI9PT10P3IuYXBwZW5kKCJwYXRoIik6ImdyaWRzIj09PXQmJmkuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiZ3JpZCAiK3QsITApfSl9KSxhLm9yZGVyKCl9O3ZhciBrPU1hdGguc3FydCg0LzMpO3cuYWRqdXN0TGF5b3V0PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhLGksbyxzLGY9dGhpcyxwPXQuZG9tYWluLGQ9KHAueFswXStwLnhbMV0pLzIsZz0ocC55WzBdK3AueVsxXSkvMix2PXAueFsxXS1wLnhbMF0sbT1wLnlbMV0tcC55WzBdLHk9diplLncseD1tKmUuaCxiPXQuc3VtLF89dC5hYXhpcy5taW4sdz10LmJheGlzLm1pbixUPXQuY2F4aXMubWluO3k+ayp4P2E9KGk9eCkqazppPShhPXkpL2ssbz12KmEveSxzPW0qaS94LHI9ZS5sK2UudypkLWEvMixuPWUudCtlLmgqKDEtZyktaS8yLGYueDA9cixmLnkwPW4sZi53PWEsZi5oPWksZi5zdW09YixmLnhheGlzPXt0eXBlOiJsaW5lYXIiLHJhbmdlOltfKzIqVC1iLGItXy0yKnddLGRvbWFpbjpbZC1vLzIsZCtvLzJdLF9pZDoieCJ9LHUoZi54YXhpcyxmLmdyYXBoRGl2Ll9mdWxsTGF5b3V0KSxmLnhheGlzLnNldFNjYWxlKCksZi54YXhpcy5pc1B0V2l0aGluUmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQuYT49Zi5hYXhpcy5yYW5nZVswXSYmdC5hPD1mLmFheGlzLnJhbmdlWzFdJiZ0LmI+PWYuYmF4aXMucmFuZ2VbMV0mJnQuYjw9Zi5iYXhpcy5yYW5nZVswXSYmdC5jPj1mLmNheGlzLnJhbmdlWzFdJiZ0LmM8PWYuY2F4aXMucmFuZ2VbMF19LGYueWF4aXM9e3R5cGU6ImxpbmVhciIscmFuZ2U6W18sYi13LVRdLGRvbWFpbjpbZy1zLzIsZytzLzJdLF9pZDoieSJ9LHUoZi55YXhpcyxmLmdyYXBoRGl2Ll9mdWxsTGF5b3V0KSxmLnlheGlzLnNldFNjYWxlKCksZi55YXhpcy5pc1B0V2l0aGluUmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4hMH07dmFyIE09Zi55YXhpcy5kb21haW5bMF0sQT1mLmFheGlzPWgoe30sdC5hYXhpcyx7cmFuZ2U6W18sYi13LVRdLHNpZGU6ImxlZnQiLHRpY2thbmdsZTooK3QuYWF4aXMudGlja2FuZ2xlfHwwKS0zMCxkb21haW46W00sTStzKmtdLGFuY2hvcjoiZnJlZSIscG9zaXRpb246MCxfaWQ6InkiLF9sZW5ndGg6YX0pO3UoQSxmLmdyYXBoRGl2Ll9mdWxsTGF5b3V0KSxBLnNldFNjYWxlKCk7dmFyIFM9Zi5iYXhpcz1oKHt9LHQuYmF4aXMse3JhbmdlOltiLV8tVCx3XSxzaWRlOiJib3R0b20iLGRvbWFpbjpmLnhheGlzLmRvbWFpbixhbmNob3I6ImZyZWUiLHBvc2l0aW9uOjAsX2lkOiJ4IixfbGVuZ3RoOmF9KTt1KFMsZi5ncmFwaERpdi5fZnVsbExheW91dCksUy5zZXRTY2FsZSgpO3ZhciBFPWYuY2F4aXM9aCh7fSx0LmNheGlzLHtyYW5nZTpbYi1fLXcsVF0sc2lkZToicmlnaHQiLHRpY2thbmdsZTooK3QuY2F4aXMudGlja2FuZ2xlfHwwKSszMCxkb21haW46W00sTStzKmtdLGFuY2hvcjoiZnJlZSIscG9zaXRpb246MCxfaWQ6InkiLF9sZW5ndGg6YX0pO3UoRSxmLmdyYXBoRGl2Ll9mdWxsTGF5b3V0KSxFLnNldFNjYWxlKCk7dmFyIEw9Ik0iK3IrIiwiKyhuK2kpKyJoIithKyJsLSIrYS8yKyIsLSIraSsiWiI7Zi5jbGlwRGVmLnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLEwpLGYubGF5ZXJzLnBsb3RiZy5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixMKTt2YXIgQz0iTTAsIitpKyJoIithKyJsLSIrYS8yKyIsLSIraSsiWiI7Zi5jbGlwRGVmUmVsYXRpdmUuc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsQyk7dmFyIFA9InRyYW5zbGF0ZSgiK3IrIiwiK24rIikiO2YucGxvdENvbnRhaW5lci5zZWxlY3RBbGwoIi5zY2F0dGVybGF5ZXIsLm1hcGxheWVyIikuYXR0cigidHJhbnNmb3JtIixQKSxmLmNsaXBEZWZSZWxhdGl2ZS5zZWxlY3QoInBhdGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpO3ZhciBPPSJ0cmFuc2xhdGUoIisoci1TLl9vZmZzZXQpKyIsIisobitpKSsiKSI7Zi5sYXllcnMuYmF4aXMuYXR0cigidHJhbnNmb3JtIixPKSxmLmxheWVycy5iZ3JpZC5hdHRyKCJ0cmFuc2Zvcm0iLE8pO3ZhciB6PSJ0cmFuc2xhdGUoIisocithLzIpKyIsIituKyIpcm90YXRlKDMwKXRyYW5zbGF0ZSgwLCIrLUEuX29mZnNldCsiKSI7Zi5sYXllcnMuYWF4aXMuYXR0cigidHJhbnNmb3JtIix6KSxmLmxheWVycy5hZ3JpZC5hdHRyKCJ0cmFuc2Zvcm0iLHopO3ZhciBJPSJ0cmFuc2xhdGUoIisocithLzIpKyIsIituKyIpcm90YXRlKC0zMCl0cmFuc2xhdGUoMCwiKy1FLl9vZmZzZXQrIikiO2YubGF5ZXJzLmNheGlzLmF0dHIoInRyYW5zZm9ybSIsSSksZi5sYXllcnMuY2dyaWQuYXR0cigidHJhbnNmb3JtIixJKSxmLmRyYXdBeGVzKCEwKSxmLmxheWVycy5hbGluZS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixBLnNob3dsaW5lPyJNIityKyIsIisobitpKSsibCIrYS8yKyIsLSIraToiTTAsMCIpLmNhbGwobC5zdHJva2UsQS5saW5lY29sb3J8fCIjMDAwIikuc3R5bGUoInN0cm9rZS13aWR0aCIsKEEubGluZXdpZHRofHwwKSsicHgiKSxmLmxheWVycy5ibGluZS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixTLnNob3dsaW5lPyJNIityKyIsIisobitpKSsiaCIrYToiTTAsMCIpLmNhbGwobC5zdHJva2UsUy5saW5lY29sb3J8fCIjMDAwIikuc3R5bGUoInN0cm9rZS13aWR0aCIsKFMubGluZXdpZHRofHwwKSsicHgiKSxmLmxheWVycy5jbGluZS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixFLnNob3dsaW5lPyJNIisocithLzIpKyIsIituKyJsIithLzIrIiwiK2k6Ik0wLDAiKS5jYWxsKGwuc3Ryb2tlLEUubGluZWNvbG9yfHwiIzAwMCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLChFLmxpbmV3aWR0aHx8MCkrInB4IiksZi5ncmFwaERpdi5fY29udGV4dC5zdGF0aWNQbG90fHxmLmluaXRJbnRlcmFjdGlvbnMoKSxjLnNldENsaXBVcmwoZi5sYXllcnMuZnJvbnRwbG90LGYuX2hhc0NsaXBPbkF4aXNGYWxzZT9udWxsOmYuY2xpcElkLGYuZ3JhcGhEaXYpfSx3LmRyYXdBeGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ3JhcGhEaXYscj10aGlzLmlkLnN1YnN0cig3KSsidGl0bGUiLG49dGhpcy5sYXllcnMsYT10aGlzLmFheGlzLGk9dGhpcy5iYXhpcyxvPXRoaXMuY2F4aXM7aWYodGhpcy5kcmF3QXgoYSksdGhpcy5kcmF3QXgoaSksdGhpcy5kcmF3QXgobyksdCl7dmFyIGw9TWF0aC5tYXgoYS5zaG93dGlja2xhYmVscz9hLnRpY2tmb250LnNpemUvMjowLChvLnNob3d0aWNrbGFiZWxzPy43NSpvLnRpY2tmb250LnNpemU6MCkrKCJvdXRzaWRlIj09PW8udGlja3M/Ljg3Km8udGlja2xlbjowKSksYz0oaS5zaG93dGlja2xhYmVscz9pLnRpY2tmb250LnNpemU6MCkrKCJvdXRzaWRlIj09PWkudGlja3M/aS50aWNrbGVuOjApKzM7blsiYS10aXRsZSJdPXYuZHJhdyhlLCJhIityLHtwcm9wQ29udGFpbmVyOmEscHJvcE5hbWU6dGhpcy5pZCsiLmFheGlzLnRpdGxlIixwbGFjZWhvbGRlcjpzKGUsIkNsaWNrIHRvIGVudGVyIENvbXBvbmVudCBBIHRpdGxlIiksYXR0cmlidXRlczp7eDp0aGlzLngwK3RoaXMudy8yLHk6dGhpcy55MC1hLnRpdGxlLmZvbnQuc2l6ZS8zLWwsInRleHQtYW5jaG9yIjoibWlkZGxlIn19KSxuWyJiLXRpdGxlIl09di5kcmF3KGUsImIiK3Ise3Byb3BDb250YWluZXI6aSxwcm9wTmFtZTp0aGlzLmlkKyIuYmF4aXMudGl0bGUiLHBsYWNlaG9sZGVyOnMoZSwiQ2xpY2sgdG8gZW50ZXIgQ29tcG9uZW50IEIgdGl0bGUiKSxhdHRyaWJ1dGVzOnt4OnRoaXMueDAtYyx5OnRoaXMueTArdGhpcy5oKy44MyppLnRpdGxlLmZvbnQuc2l6ZStjLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9fSksblsiYy10aXRsZSJdPXYuZHJhdyhlLCJjIityLHtwcm9wQ29udGFpbmVyOm8scHJvcE5hbWU6dGhpcy5pZCsiLmNheGlzLnRpdGxlIixwbGFjZWhvbGRlcjpzKGUsIkNsaWNrIHRvIGVudGVyIENvbXBvbmVudCBDIHRpdGxlIiksYXR0cmlidXRlczp7eDp0aGlzLngwK3RoaXMudytjLHk6dGhpcy55MCt0aGlzLmgrLjgzKm8udGl0bGUuZm9udC5zaXplK2MsInRleHQtYW5jaG9yIjoibWlkZGxlIn19KX19LHcuZHJhd0F4PWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5ncmFwaERpdixuPXQuX25hbWUsYT1uLmNoYXJBdCgwKSxpPXQuX2lkLHM9dGhpcy5sYXllcnNbbl0sbD1hKyJ0aWNrTGF5b3V0IixjPShlPXQpLnRpY2tzK1N0cmluZyhlLnRpY2tsZW4pK1N0cmluZyhlLnNob3d0aWNrbGFiZWxzKTt0aGlzW2xdIT09YyYmKHMuc2VsZWN0QWxsKCIuIitpKyJ0aWNrIikucmVtb3ZlKCksdGhpc1tsXT1jKSx0LnNldFNjYWxlKCk7dmFyIHU9cC5jYWxjVGlja3ModCksaD1wLmNsaXBFbmRzKHQsdSksZj1wLm1ha2VUcmFuc0ZuKHQpLGQ9cC5nZXRUaWNrU2lnbnModClbMl0sZz1vLmRlZzJyYWQoMzApLHY9ZCoodC5saW5ld2lkdGh8fDEpLzIsbT1kKnQudGlja2xlbix5PXRoaXMudyx4PXRoaXMuaCxiPSJiIj09PWE/Ik0wLCIrdisibCIrTWF0aC5zaW4oZykqbSsiLCIrTWF0aC5jb3MoZykqbToiTSIrdisiLDBsIitNYXRoLmNvcyhnKSptKyIsIistTWF0aC5zaW4oZykqbSxfPXthOiJNMCwwbCIreCsiLC0iK3kvMixiOiJNMCwwbC0iK3kvMisiLC0iK3gsYzoiTTAsMGwtIit4KyIsIit5LzJ9W2FdO3AuZHJhd1RpY2tzKHIsdCx7dmFsczoiaW5zaWRlIj09PXQudGlja3M/aDp1LGxheWVyOnMscGF0aDpiLHRyYW5zRm46ZixjcmlzcDohMX0pLHAuZHJhd0dyaWQocix0LHt2YWxzOmgsbGF5ZXI6dGhpcy5sYXllcnNbYSsiZ3JpZCJdLHBhdGg6Xyx0cmFuc0ZuOmYsY3Jpc3A6ITF9KSxwLmRyYXdMYWJlbHMocix0LHt2YWxzOnUsbGF5ZXI6cyx0cmFuc0ZuOmYsbGFiZWxGbnM6cC5tYWtlTGFiZWxGbnModCwwLDMwKX0pfTt2YXIgVD1iLk1JTlpPT00vMisuODcsTT0ibS0wLjg3LC41aCIrVCsidjNoLSIrKFQrNS4yKSsibCIrKFQvMisyLjYpKyIsLSIrKC44NypUKzQuNSkrImwyLjYsMS41bC0iK1QvMisiLCIrLjg3KlQrIloiLEE9Im0wLjg3LC41aC0iK1QrInYzaCIrKFQrNS4yKSsibC0iKyhULzIrMi42KSsiLC0iKyguODcqVCs0LjUpKyJsLTIuNiwxLjVsIitULzIrIiwiKy44NypUKyJaIixTPSJtMCwxbCIrVC8yKyIsIisuODcqVCsibDIuNiwtMS41bC0iKyhULzIrMi42KSsiLC0iKyguODcqVCs0LjUpKyJsLSIrKFQvMisyLjYpKyIsIisoLjg3KlQrNC41KSsibDIuNiwxLjVsIitULzIrIiwtIisuODcqVCsiWiIsRT0ibTAuNSwwLjVoNXYtMmgtNXYtNWgtMnY1aC01djJoNXY1aDJaIixMPSEwO2Z1bmN0aW9uIEModCl7bi5zZWxlY3QodCkuc2VsZWN0QWxsKCIuem9vbWJveCwuanMtem9vbWJveC1iYWNrZHJvcCwuanMtem9vbWJveC1tZW51LC56b29tYm94LWNvcm5lcnMiKS5yZW1vdmUoKX13LmluaXRJbnRlcmFjdGlvbnM9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbix1LGgsZixwLHYsXyx3PXRoaXMsVD13LmxheWVycy5wbG90Ymcuc2VsZWN0KCJwYXRoIikubm9kZSgpLFA9dy5ncmFwaERpdixPPVAuX2Z1bGxMYXlvdXQuX3pvb21sYXllcix6PXtlbGVtZW50OlQsZ2Q6UCxwbG90aW5mbzp7aWQ6dy5pZCx4YXhpczp3LnhheGlzLHlheGlzOncueWF4aXN9LHN1YnBsb3Q6dy5pZCxwcmVwRm46ZnVuY3Rpb24oaSxvLHMpe3oueGF4ZXM9W3cueGF4aXNdLHoueWF4ZXM9W3cueWF4aXNdO3ZhciBjPVAuX2Z1bGxMYXlvdXQuZHJhZ21vZGU7ei5taW5EcmFnPSJsYXNzbyI9PT1jPzE6dm9pZCAwLCJ6b29tIj09PWM/KHoubW92ZUZuPU4sei5jbGlja0ZuPUQsei5kb25lRm49aixmdW5jdGlvbihpLG8scyl7dmFyIGM9VC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0PW8tYy5sZWZ0LGU9cy1jLnRvcCxyPXthOncuYWF4aXMucmFuZ2VbMF0sYjp3LmJheGlzLnJhbmdlWzFdLGM6dy5jYXhpcy5yYW5nZVsxXX0sdT1yLG49dy5hYXhpcy5yYW5nZVsxXS1yLmEsaD1hKHcuZ3JhcGhEaXYuX2Z1bGxMYXlvdXRbdy5pZF0uYmdjb2xvcikuZ2V0THVtaW5hbmNlKCksZj0iTTAsIit3LmgrIkwiK3cudy8yKyIsIDBMIit3LncrIiwiK3cuaCsiWiIscD0hMSx2PU8uYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJ6b29tYm94IikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdy54MCsiLCAiK3cueTArIikiKS5zdHlsZSh7ZmlsbDpoPi4yPyJyZ2JhKDAsMCwwLDApIjoicmdiYSgyNTUsMjU1LDI1NSwwKSIsInN0cm9rZS13aWR0aCI6MH0pLmF0dHIoImQiLGYpLF89Ty5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsInpvb21ib3gtY29ybmVycyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3cueDArIiwgIit3LnkwKyIpIikuc3R5bGUoe2ZpbGw6bC5iYWNrZ3JvdW5kLHN0cm9rZTpsLmRlZmF1bHRMaW5lLCJzdHJva2Utd2lkdGgiOjEsb3BhY2l0eTowfSkuYXR0cigiZCIsIk0wLDBaIikseChQKX0oMCxvLHMpKToicGFuIj09PWM/KHoubW92ZUZuPVYsei5jbGlja0ZuPUQsei5kb25lRm49VSxyPXthOncuYWF4aXMucmFuZ2VbMF0sYjp3LmJheGlzLnJhbmdlWzFdLGM6dy5jYXhpcy5yYW5nZVsxXX0sdT1yLHgoUCkpOiJzZWxlY3QiIT09YyYmImxhc3NvIiE9PWN8fG0oaSxvLHMseixjKX19O2Z1bmN0aW9uIEkodCl7dmFyIGU9e307cmV0dXJuIGVbdy5pZCsiLmFheGlzLm1pbiJdPXQuYSxlW3cuaWQrIi5iYXhpcy5taW4iXT10LmIsZVt3LmlkKyIuY2F4aXMubWluIl09dC5jLGV9ZnVuY3Rpb24gRCh0LGUpe3ZhciByPVAuX2Z1bGxMYXlvdXQuY2xpY2ttb2RlO0MoUCksMj09PXQmJihQLmVtaXQoInBsb3RseV9kb3VibGVjbGljayIsbnVsbCksaS5jYWxsKCJfZ3VpUmVsYXlvdXQiLFAsSSh7YTowLGI6MCxjOjB9KSkpLHIuaW5kZXhPZigic2VsZWN0Iik+LTEmJjE9PT10JiZ5KGUsUCxbdy54YXhpc10sW3cueWF4aXNdLHcuaWQseiksci5pbmRleE9mKCJldmVudCIpPi0xJiZnLmNsaWNrKFAsZSx3LmlkKX1mdW5jdGlvbiBSKHQsZSl7cmV0dXJuIDEtZS93Lmh9ZnVuY3Rpb24gRih0LGUpe3JldHVybiAxLSh0Kyh3LmgtZSkvTWF0aC5zcXJ0KDMpKS93Lnd9ZnVuY3Rpb24gQih0LGUpe3JldHVybih0LSh3LmgtZSkvTWF0aC5zcXJ0KDMpKS93Lnd9ZnVuY3Rpb24gTihhLGkpe3ZhciBvPXQrYSxzPWUraSxsPU1hdGgubWF4KDAsTWF0aC5taW4oMSxSKDAsZSksUigwLHMpKSksYz1NYXRoLm1heCgwLE1hdGgubWluKDEsRih0LGUpLEYobyxzKSkpLGQ9TWF0aC5tYXgoMCxNYXRoLm1pbigxLEIodCxlKSxCKG8scykpKSxnPShsLzIrZCkqdy53LG09KDEtbC8yLWMpKncudyx5PShnK20pLzIseD1tLWcsVD0oMS1sKSp3LmgsTD1ULXgvazt4PGIuTUlOWk9PTT8odT1yLHYuYXR0cigiZCIsZiksXy5hdHRyKCJkIiwiTTAsMFoiKSk6KHU9e2E6ci5hK2wqbixiOnIuYitjKm4sYzpyLmMrZCpufSx2LmF0dHIoImQiLGYrIk0iK2crIiwiK1QrIkgiK20rIkwiK3krIiwiK0wrIkwiK2crIiwiK1QrIloiKSxfLmF0dHIoImQiLCJNIit0KyIsIitlK0UrIk0iK2crIiwiK1QrTSsiTSIrbSsiLCIrVCtBKyJNIit5KyIsIitMK1MpKSxwfHwodi50cmFuc2l0aW9uKCkuc3R5bGUoImZpbGwiLGg+LjI/InJnYmEoMCwwLDAsMC40KSI6InJnYmEoMjU1LDI1NSwyNTUsMC4zKSIpLmR1cmF0aW9uKDIwMCksXy50cmFuc2l0aW9uKCkuc3R5bGUoIm9wYWNpdHkiLDEpLmR1cmF0aW9uKDIwMCkscD0hMCksUC5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLEkodSkpfWZ1bmN0aW9uIGooKXtDKFApLHUhPT1yJiYoaS5jYWxsKCJfZ3VpUmVsYXlvdXQiLFAsSSh1KSksTCYmUC5kYXRhJiZQLl9jb250ZXh0LnNob3dUaXBzJiYoby5ub3RpZmllcihzKFAsIkRvdWJsZS1jbGljayB0byB6b29tIGJhY2sgb3V0IiksImxvbmciKSxMPSExKSl9ZnVuY3Rpb24gVih0LGUpe3ZhciBuPXQvdy54YXhpcy5fbSxhPWUvdy55YXhpcy5fbSxpPVsodT17YTpyLmEtYSxiOnIuYisobithKS8yLGM6ci5jLShuLWEpLzJ9KS5hLHUuYix1LmNdLnNvcnQoKSxvPWkuaW5kZXhPZih1LmEpLHM9aS5pbmRleE9mKHUuYiksbD1pLmluZGV4T2YodS5jKTtpWzBdPDAmJihpWzFdK2lbMF0vMjwwPyhpWzJdKz1pWzBdK2lbMV0saVswXT1pWzFdPTApOihpWzJdKz1pWzBdLzIsaVsxXSs9aVswXS8yLGlbMF09MCksdT17YTppW29dLGI6aVtzXSxjOmlbbF19LGU9KHIuYS11LmEpKncueWF4aXMuX20sdD0oci5jLXUuYy1yLmIrdS5iKSp3LnhheGlzLl9tKTt2YXIgaD0idHJhbnNsYXRlKCIrKHcueDArdCkrIiwiKyh3LnkwK2UpKyIpIjt3LnBsb3RDb250YWluZXIuc2VsZWN0QWxsKCIuc2NhdHRlcmxheWVyLC5tYXBsYXllciIpLmF0dHIoInRyYW5zZm9ybSIsaCk7dmFyIGY9InRyYW5zbGF0ZSgiKy10KyIsIistZSsiKSI7dy5jbGlwRGVmUmVsYXRpdmUuc2VsZWN0KCJwYXRoIikuYXR0cigidHJhbnNmb3JtIixmKSx3LmFheGlzLnJhbmdlPVt1LmEsdy5zdW0tdS5iLXUuY10sdy5iYXhpcy5yYW5nZT1bdy5zdW0tdS5hLXUuYyx1LmJdLHcuY2F4aXMucmFuZ2U9W3cuc3VtLXUuYS11LmIsdS5jXSx3LmRyYXdBeGVzKCExKSx3Ll9oYXNDbGlwT25BeGlzRmFsc2UmJncucGxvdENvbnRhaW5lci5zZWxlY3QoIi5zY2F0dGVybGF5ZXIiKS5zZWxlY3RBbGwoIi50cmFjZSIpLmNhbGwoYy5oaWRlT3V0c2lkZVJhbmdlUG9pbnRzLHcpLFAuZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIixJKHUpKX1mdW5jdGlvbiBVKCl7aS5jYWxsKCJfZ3VpUmVsYXlvdXQiLFAsSSh1KSl9VC5vbm1vdXNlbW92ZT1mdW5jdGlvbih0KXtnLmhvdmVyKFAsdCx3LmlkKSxQLl9mdWxsTGF5b3V0Ll9sYXN0aG92ZXI9VCxQLl9mdWxsTGF5b3V0Ll9ob3ZlcnN1YnBsb3Q9dy5pZH0sVC5vbm1vdXNlb3V0PWZ1bmN0aW9uKHQpe1AuX2RyYWdnaW5nfHxkLnVuaG92ZXIoUCx0KX0sZC5pbml0KHopfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiOjYxMCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vY29tcG9uZW50cy90aXRsZXMiOjY3OSwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vY2FydGVzaWFuL2NvbnN0YW50cyI6NzcxLCIuLi9jYXJ0ZXNpYW4vc2VsZWN0Ijo3ODIsIi4uL2NhcnRlc2lhbi9zZXRfY29udmVydCI6NzgzLCIuLi9wbG90cyI6ODI2LGQzOjE2NSx0aW55Y29sb3IyOjUzNn1dLDg0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9sb2dnZXJzIiksYT10KCIuL2xpYi9ub29wIiksaT10KCIuL2xpYi9wdXNoX3VuaXF1ZSIpLG89dCgiLi9saWIvaXNfcGxhaW5fb2JqZWN0Iikscz10KCIuL2xpYi9kb20iKS5hZGRTdHlsZVJ1bGUsbD10KCIuL2xpYi9leHRlbmQiKSxjPXQoIi4vcGxvdHMvYXR0cmlidXRlcyIpLHU9dCgiLi9wbG90cy9sYXlvdXRfYXR0cmlidXRlcyIpLGg9bC5leHRlbmRGbGF0LGY9bC5leHRlbmREZWVwQWxsO2Z1bmN0aW9uIHAodCl7dmFyIGU9dC5uYW1lLGE9dC5jYXRlZ29yaWVzLGk9dC5tZXRhO2lmKHIubW9kdWxlc1tlXSluLmxvZygiVHlwZSAiK2UrIiBhbHJlYWR5IHJlZ2lzdGVyZWQiKTtlbHNle3Iuc3VicGxvdHNSZWdpc3RyeVt0LmJhc2VQbG90TW9kdWxlLm5hbWVdfHxmdW5jdGlvbih0KXt2YXIgZT10Lm5hbWU7aWYoci5zdWJwbG90c1JlZ2lzdHJ5W2VdKXJldHVybiB2b2lkIG4ubG9nKCJQbG90IHR5cGUgIitlKyIgYWxyZWFkeSByZWdpc3RlcmVkLiIpO2Zvcih2YXIgYSBpbiBtKHQpLHIuc3VicGxvdHNSZWdpc3RyeVtlXT10LHIuY29tcG9uZW50c1JlZ2lzdHJ5KWIoYSx0Lm5hbWUpfSh0LmJhc2VQbG90TW9kdWxlKTtmb3IodmFyIG89e30sbD0wO2w8YS5sZW5ndGg7bCsrKW9bYVtsXV09ITAsci5hbGxDYXRlZ29yaWVzW2FbbF1dPSEwO2Zvcih2YXIgYyBpbiByLm1vZHVsZXNbZV09e19tb2R1bGU6dCxjYXRlZ29yaWVzOm99LGkmJk9iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHIubW9kdWxlc1tlXS5tZXRhPWkpLHIuYWxsVHlwZXMucHVzaChlKSxyLmNvbXBvbmVudHNSZWdpc3RyeSl5KGMsZSk7dC5sYXlvdXRBdHRyaWJ1dGVzJiZoKHIudHJhY2VMYXlvdXRBdHRyaWJ1dGVzLHQubGF5b3V0QXR0cmlidXRlcyk7dmFyIHU9dC5iYXNlUGxvdE1vZHVsZSxmPXUubmFtZTtpZigibWFwYm94Ij09PWYpe3ZhciBwPXUuY29uc3RhbnRzLnN0eWxlUnVsZXM7Zm9yKHZhciBkIGluIHApcygiLmpzLXBsb3RseS1wbG90IC5wbG90bHkgLm1hcGJveGdsLSIrZCxwW2RdKX0iZ2VvIiE9PWYmJiJtYXBib3giIT09Znx8dm9pZCAwPT09dHlwZW9mIHdpbmRvd3x8dm9pZCAwIT09d2luZG93LlBsb3RseUdlb0Fzc2V0c3x8KHdpbmRvdy5QbG90bHlHZW9Bc3NldHM9e3RvcG9qc29uOnt9fSl9fWZ1bmN0aW9uIGQodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0Lm5hbWUpdGhyb3cgbmV3IEVycm9yKCJDb21wb25lbnQgbW9kdWxlICpuYW1lKiBtdXN0IGJlIGEgc3RyaW5nLiIpO3ZhciBlPXQubmFtZTtmb3IodmFyIG4gaW4gci5jb21wb25lbnRzUmVnaXN0cnlbZV09dCx0LmxheW91dEF0dHJpYnV0ZXMmJih0LmxheW91dEF0dHJpYnV0ZXMuX2lzTGlua2VkVG9BcnJheSYmaShyLmxheW91dEFycmF5Q29udGFpbmVycyxlKSxtKHQpKSxyLm1vZHVsZXMpeShlLG4pO2Zvcih2YXIgYSBpbiByLnN1YnBsb3RzUmVnaXN0cnkpYihlLGEpO2Zvcih2YXIgbyBpbiByLnRyYW5zZm9ybXNSZWdpc3RyeSl4KGUsbyk7dC5zY2hlbWEmJnQuc2NoZW1hLmxheW91dCYmZih1LHQuc2NoZW1hLmxheW91dCl9ZnVuY3Rpb24gZyh0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQubmFtZSl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zZm9ybSBtb2R1bGUgKm5hbWUqIG11c3QgYmUgYSBzdHJpbmcuIik7dmFyIGU9IlRyYW5zZm9ybSBtb2R1bGUgIit0Lm5hbWUsYT0iZnVuY3Rpb24iPT10eXBlb2YgdC50cmFuc2Zvcm0saT0iZnVuY3Rpb24iPT10eXBlb2YgdC5jYWxjVHJhbnNmb3JtO2lmKCFhJiYhaSl0aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG1pc3NpbmcgYSAqdHJhbnNmb3JtKiBvciAqY2FsY1RyYW5zZm9ybSogbWV0aG9kLiIpO2Zvcih2YXIgcyBpbiBhJiZpJiZuLmxvZyhbZSsiIGhhcyBib3RoIGEgKnRyYW5zZm9ybSogYW5kICpjYWxjVHJhbnNmb3JtKiBtZXRob2RzLiIsIlBsZWFzZSBub3RlIHRoYXQgYWxsICp0cmFuc2Zvcm0qIG1ldGhvZHMgYXJlIGV4ZWN1dGVkIiwiYmVmb3JlIGFsbCAqY2FsY1RyYW5zZm9ybSogbWV0aG9kcy4iXS5qb2luKCIgIikpLG8odC5hdHRyaWJ1dGVzKXx8bi5sb2coZSsiIHJlZ2lzdGVyZWQgd2l0aG91dCBhbiAqYXR0cmlidXRlcyogb2JqZWN0LiIpLCJmdW5jdGlvbiIhPXR5cGVvZiB0LnN1cHBseURlZmF1bHRzJiZuLmxvZyhlKyIgcmVnaXN0ZXJlZCB3aXRob3V0IGEgKnN1cHBseURlZmF1bHRzKiBtZXRob2QuIiksci50cmFuc2Zvcm1zUmVnaXN0cnlbdC5uYW1lXT10LHIuY29tcG9uZW50c1JlZ2lzdHJ5KXgocyx0Lm5hbWUpfWZ1bmN0aW9uIHYodCl7dmFyIGU9dC5uYW1lLG49ZS5zcGxpdCgiLSIpWzBdLGE9dC5kaWN0aW9uYXJ5LGk9dC5mb3JtYXQsbz1hJiZPYmplY3Qua2V5cyhhKS5sZW5ndGgscz1pJiZPYmplY3Qua2V5cyhpKS5sZW5ndGgsbD1yLmxvY2FsZVJlZ2lzdHJ5LGM9bFtlXTtpZihjfHwobFtlXT1jPXt9KSxuIT09ZSl7dmFyIHU9bFtuXTt1fHwobFtuXT11PXt9KSxvJiZ1LmRpY3Rpb25hcnk9PT1jLmRpY3Rpb25hcnkmJih1LmRpY3Rpb25hcnk9YSkscyYmdS5mb3JtYXQ9PT1jLmZvcm1hdCYmKHUuZm9ybWF0PWkpfW8mJihjLmRpY3Rpb25hcnk9YSkscyYmKGMuZm9ybWF0PWkpfWZ1bmN0aW9uIG0odCl7aWYodC5sYXlvdXRBdHRyaWJ1dGVzKXt2YXIgZT10LmxheW91dEF0dHJpYnV0ZXMuX2FycmF5QXR0clJlZ2V4cHM7aWYoZSlmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpKHIubGF5b3V0QXJyYXlSZWdleGVzLGVbbl0pfX1mdW5jdGlvbiB5KHQsZSl7dmFyIG49ci5jb21wb25lbnRzUmVnaXN0cnlbdF0uc2NoZW1hO2lmKG4mJm4udHJhY2VzKXt2YXIgYT1uLnRyYWNlc1tlXTthJiZmKHIubW9kdWxlc1tlXS5fbW9kdWxlLmF0dHJpYnV0ZXMsYSl9fWZ1bmN0aW9uIHgodCxlKXt2YXIgbj1yLmNvbXBvbmVudHNSZWdpc3RyeVt0XS5zY2hlbWE7aWYobiYmbi50cmFuc2Zvcm1zKXt2YXIgYT1uLnRyYW5zZm9ybXNbZV07YSYmZihyLnRyYW5zZm9ybXNSZWdpc3RyeVtlXS5hdHRyaWJ1dGVzLGEpfX1mdW5jdGlvbiBiKHQsZSl7dmFyIG49ci5jb21wb25lbnRzUmVnaXN0cnlbdF0uc2NoZW1hO2lmKG4mJm4uc3VicGxvdHMpe3ZhciBhPXIuc3VicGxvdHNSZWdpc3RyeVtlXSxpPWEubGF5b3V0QXR0cmlidXRlcyxvPSJzdWJwbG90Ij09PWEuYXR0cj9hLm5hbWU6YS5hdHRyO0FycmF5LmlzQXJyYXkobykmJihvPW9bMF0pO3ZhciBzPW4uc3VicGxvdHNbb107aSYmcyYmZihpLHMpfX1mdW5jdGlvbiBfKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmKHQ9dC50eXBlKSx0fXIubW9kdWxlcz17fSxyLmFsbENhdGVnb3JpZXM9e30sci5hbGxUeXBlcz1bXSxyLnN1YnBsb3RzUmVnaXN0cnk9e30sci50cmFuc2Zvcm1zUmVnaXN0cnk9e30sci5jb21wb25lbnRzUmVnaXN0cnk9e30sci5sYXlvdXRBcnJheUNvbnRhaW5lcnM9W10sci5sYXlvdXRBcnJheVJlZ2V4ZXM9W10sci50cmFjZUxheW91dEF0dHJpYnV0ZXM9e30sci5sb2NhbGVSZWdpc3RyeT17fSxyLmFwaU1ldGhvZFJlZ2lzdHJ5PXt9LHIuY29sbGVjdGFibGVTdWJwbG90VHlwZXM9bnVsbCxyLnJlZ2lzdGVyPWZ1bmN0aW9uKHQpe2lmKHIuY29sbGVjdGFibGVTdWJwbG90VHlwZXM9bnVsbCwhdCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFyZ3VtZW50IHBhc3NlZCB0byBQbG90bHkucmVnaXN0ZXIuIik7dCYmIUFycmF5LmlzQXJyYXkodCkmJih0PVt0XSk7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1vZHVsZSB3YXMgYXR0ZW1wdGVkIHRvIGJlIHJlZ2lzdGVyZWQhIik7c3dpdGNoKG4ubW9kdWxlVHlwZSl7Y2FzZSJ0cmFjZSI6cChuKTticmVhaztjYXNlInRyYW5zZm9ybSI6ZyhuKTticmVhaztjYXNlImNvbXBvbmVudCI6ZChuKTticmVhaztjYXNlImxvY2FsZSI6dihuKTticmVhaztjYXNlImFwaU1ldGhvZCI6dmFyIGE9bi5uYW1lO3IuYXBpTWV0aG9kUmVnaXN0cnlbYV09bi5mbjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBtb2R1bGUgd2FzIGF0dGVtcHRlZCB0byBiZSByZWdpc3RlcmVkISIpfX19LHIuZ2V0TW9kdWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXIubW9kdWxlc1tfKHQpXTtyZXR1cm4hIWUmJmUuX21vZHVsZX0sci50cmFjZUlzPWZ1bmN0aW9uKHQsZSl7aWYoInZhcmlvdXMiPT09KHQ9Xyh0KSkpcmV0dXJuITE7dmFyIGE9ci5tb2R1bGVzW3RdO3JldHVybiBhfHwodCYmImFyZWEiIT09dCYmbi5sb2coIlVucmVjb2duaXplZCB0cmFjZSB0eXBlICIrdCsiLiIpLGE9ci5tb2R1bGVzW2MudHlwZS5kZmx0XSksISFhLmNhdGVnb3JpZXNbZV19LHIuZ2V0VHJhbnNmb3JtSW5kaWNlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPXQudHJhbnNmb3Jtc3x8W10sYT0wO2E8bi5sZW5ndGg7YSsrKW5bYV0udHlwZT09PWUmJnIucHVzaChhKTtyZXR1cm4gcn0sci5oYXNUcmFuc2Zvcm09ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC50cmFuc2Zvcm1zfHxbXSxuPTA7bjxyLmxlbmd0aDtuKyspaWYocltuXS50eXBlPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sci5nZXRDb21wb25lbnRNZXRob2Q9ZnVuY3Rpb24odCxlKXt2YXIgbj1yLmNvbXBvbmVudHNSZWdpc3RyeVt0XTtyZXR1cm4gbiYmbltlXXx8YX0sci5jYWxsPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdLGU9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIHIuYXBpTWV0aG9kUmVnaXN0cnlbdF0uYXBwbHkobnVsbCxlKX19LHsiLi9saWIvZG9tIjo3MDYsIi4vbGliL2V4dGVuZCI6NzA4LCIuL2xpYi9pc19wbGFpbl9vYmplY3QiOjcxOCwiLi9saWIvbG9nZ2VycyI6NzIxLCIuL2xpYi9ub29wIjo3MjYsIi4vbGliL3B1c2hfdW5pcXVlIjo3MzEsIi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuL3Bsb3RzL2xheW91dF9hdHRyaWJ1dGVzIjo4MTd9XSw4NDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcmVnaXN0cnkiKSxhPXQoIi4uL2xpYiIpLGk9YS5leHRlbmRGbGF0LG89YS5leHRlbmREZWVwO2Z1bmN0aW9uIHModCl7dmFyIGU7c3dpdGNoKHQpe2Nhc2UidGhlbWVzX190aHVtYiI6ZT17YXV0b3NpemU6ITAsd2lkdGg6MTUwLGhlaWdodDoxNTAsdGl0bGU6e3RleHQ6IiJ9LHNob3dsZWdlbmQ6ITEsbWFyZ2luOntsOjUscjo1LHQ6NSxiOjUscGFkOjB9LGFubm90YXRpb25zOltdfTticmVhaztjYXNlInRodW1ibmFpbCI6ZT17dGl0bGU6e3RleHQ6IiJ9LGhpZGVzb3VyY2VzOiEwLHNob3dsZWdlbmQ6ITEsYm9yZGVyd2lkdGg6MCxib3JkZXJjb2xvcjoiIixtYXJnaW46e2w6MSxyOjEsdDoxLGI6MSxwYWQ6MH0sYW5ub3RhdGlvbnM6W119O2JyZWFrO2RlZmF1bHQ6ZT17fX1yZXR1cm4gZX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcjt0LmZyYW1ld29yayYmdC5mcmFtZXdvcmsuaXNQb2xhciYmKHQ9dC5mcmFtZXdvcmsuZ2V0Q29uZmlnKCkpO3ZhciBhLGw9dC5kYXRhLGM9dC5sYXlvdXQsdT1vKFtdLGwpLGg9byh7fSxjLHMoZS50aWxlQ2xhc3MpKSxmPXQuX2NvbnRleHR8fHt9O2lmKGUud2lkdGgmJihoLndpZHRoPWUud2lkdGgpLGUuaGVpZ2h0JiYoaC5oZWlnaHQ9ZS5oZWlnaHQpLCJ0aHVtYm5haWwiPT09ZS50aWxlQ2xhc3N8fCJ0aGVtZXNfX3RodW1iIj09PWUudGlsZUNsYXNzKXtoLmFubm90YXRpb25zPVtdO3ZhciBwPU9iamVjdC5rZXlzKGgpO2ZvcihyPTA7cjxwLmxlbmd0aDtyKyspYT1wW3JdLFsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl0uaW5kZXhPZihhLnNsaWNlKDAsNSkpPi0xJiYoaFtwW3JdXS50aXRsZT17dGV4dDoiIn0pO2ZvcihyPTA7cjx1Lmxlbmd0aDtyKyspe3ZhciBkPXVbcl07ZC5zaG93c2NhbGU9ITEsZC5tYXJrZXImJihkLm1hcmtlci5zaG93c2NhbGU9ITEpLG4udHJhY2VJcyhkLCJwaWUtbGlrZSIpJiYoZC50ZXh0cG9zaXRpb249Im5vbmUiKX19aWYoQXJyYXkuaXNBcnJheShlLmFubm90YXRpb25zKSlmb3Iocj0wO3I8ZS5hbm5vdGF0aW9ucy5sZW5ndGg7cisrKWguYW5ub3RhdGlvbnMucHVzaChlLmFubm90YXRpb25zW3JdKTt2YXIgZz1PYmplY3Qua2V5cyhoKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQubWF0Y2goL15zY2VuZVxkKiQvKX0pO2lmKGcubGVuZ3RoKXt2YXIgdj17fTtmb3IoInRodW1ibmFpbCI9PT1lLnRpbGVDbGFzcyYmKHY9e3RpdGxlOnt0ZXh0OiIifSxzaG93YXhlc2xhYmVsczohMSxzaG93dGlja2xhYmVsczohMSxsaW5ldGlja2VuYWJsZTohMX0pLHI9MDtyPGcubGVuZ3RoO3IrKyl7dmFyIG09aFtnW3JdXTttLnhheGlzfHwobS54YXhpcz17fSksbS55YXhpc3x8KG0ueWF4aXM9e30pLG0uemF4aXN8fChtLnpheGlzPXt9KSxpKG0ueGF4aXMsdiksaShtLnlheGlzLHYpLGkobS56YXhpcyx2KSxtLl9zY2VuZT1udWxsfX12YXIgeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLnRpbGVDbGFzcyYmKHkuY2xhc3NOYW1lPWUudGlsZUNsYXNzKTt2YXIgeD17Z2Q6eSx0ZDp5LGxheW91dDpoLGRhdGE6dSxjb25maWc6e3N0YXRpY1Bsb3Q6dm9pZCAwPT09ZS5zdGF0aWNQbG90fHxlLnN0YXRpY1Bsb3QscGxvdEdsUGl4ZWxSYXRpbzp2b2lkIDA9PT1lLnBsb3RHbFBpeGVsUmF0aW8/MjplLnBsb3RHbFBpeGVsUmF0aW8sZGlzcGxheWxvZ286ZS5kaXNwbGF5bG9nb3x8ITEsc2hvd0xpbms6ZS5zaG93TGlua3x8ITEsc2hvd1RpcHM6ZS5zaG93VGlwc3x8ITEsbWFwYm94QWNjZXNzVG9rZW46Zi5tYXBib3hBY2Nlc3NUb2tlbn19O3JldHVybiJ0cmFuc3BhcmVudCIhPT1lLnNldEJhY2tncm91bmQmJih4LmNvbmZpZy5zZXRCYWNrZ3JvdW5kPWUuc2V0QmFja2dyb3VuZHx8Im9wYXF1ZSIpLHguZ2QuZGVmYXVsdExheW91dD1zKGUudGlsZUNsYXNzKSx4fX0seyIuLi9saWIiOjcxNywiLi4vcmVnaXN0cnkiOjg0Nn1dLDg0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPXQoIi4uL3Bsb3RfYXBpL3RvX2ltYWdlIiksaT10KCIuL2ZpbGVzYXZlciIpLG89dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI7cmV0dXJuIG4uaXNQbGFpbk9iamVjdCh0KXx8KHI9bi5nZXRHcmFwaERpdih0KSksKGU9ZXx8e30pLmZvcm1hdD1lLmZvcm1hdHx8InBuZyIsZS5pbWFnZURhdGFPbmx5PSEwLG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMsbCl7ciYmci5fc25hcHNob3RJblByb2dyZXNzJiZsKG5ldyBFcnJvcigiU25hcHNob3R0aW5nIGFscmVhZHkgaW4gcHJvZ3Jlc3MuIikpLG4uaXNJRSgpJiYic3ZnIiE9PWUuZm9ybWF0JiZsKG5ldyBFcnJvcihvLk1TR19JRV9CQURfRk9STUFUKSksciYmKHIuX3NuYXBzaG90SW5Qcm9ncmVzcz0hMCk7dmFyIGM9YSh0LGUpLHU9ZS5maWxlbmFtZXx8dC5mbnx8Im5ld3Bsb3QiO3UrPSIuIitlLmZvcm1hdCxjLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHImJihyLl9zbmFwc2hvdEluUHJvZ3Jlc3M9ITEpLGkodCx1LGUuZm9ybWF0KX0pLnRoZW4oZnVuY3Rpb24odCl7cyh0KX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3ImJihyLl9zbmFwc2hvdEluUHJvZ3Jlc3M9ITEpLGwodCl9KX0pfX0seyIuLi9saWIiOjcxNywiLi4vcGxvdF9hcGkvdG9faW1hZ2UiOjc1OCwiLi9maWxlc2F2ZXIiOjg0OSwiLi9oZWxwZXJzIjo4NTB9XSw4NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliIiksYT10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxvPSJkb3dubG9hZCJpbiBpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihzLGwpe3ZhciBjLHU7aWYobi5pc0lFOW9yQmVsb3coKSYmbChuZXcgRXJyb3IoIklFIDwgMTAgdW5zdXBwb3J0ZWQiKSksbi5pc1NhZmFyaSgpKXt2YXIgaD0ic3ZnIj09PXI/IiwiOiI7YmFzZTY0LCI7cmV0dXJuIGEub2N0ZXRTdHJlYW0oaCtlbmNvZGVVUklDb21wb25lbnQodCkpLHMoZSl9cmV0dXJuIG4uaXNJRSgpPyhjPWEuY3JlYXRlQmxvYih0LCJzdmciKSx3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IoYyxlKSxjPW51bGwscyhlKSk6bz8oYz1hLmNyZWF0ZUJsb2IodCxyKSx1PWEuY3JlYXRlT2JqZWN0VVJMKGMpLGkuaHJlZj11LGkuZG93bmxvYWQ9ZSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpLGkuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGkpLGEucmV2b2tlT2JqZWN0VVJMKHUpLGM9bnVsbCxzKGUpKTp2b2lkIGwobmV3IEVycm9yKCJkb3dubG9hZCBlcnJvciIpKX0pfX0seyIuLi9saWIiOjcxNywiLi9oZWxwZXJzIjo4NTB9XSw4NTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcmVnaXN0cnkiKTtyLmdldERlbGF5PWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9oYXMmJih0Ll9oYXMoImdsM2QiKXx8dC5faGFzKCJnbDJkIil8fHQuX2hhcygibWFwYm94IikpPzUwMDowfSxyLmdldFJlZHJhd0Z1bmM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5fZnVsbExheW91dHx8e307IShlLl9oYXMmJmUuX2hhcygicG9sYXIiKSkmJnQuZGF0YSYmdC5kYXRhWzBdJiZ0LmRhdGFbMF0ucnx8bi5nZXRDb21wb25lbnRNZXRob2QoImNvbG9yYmFyIiwiZHJhdyIpKHQpfX0sci5lbmNvZGVTVkc9ZnVuY3Rpb24odCl7cmV0dXJuImRhdGE6aW1hZ2Uvc3ZnK3htbCwiK2VuY29kZVVSSUNvbXBvbmVudCh0KX07dmFyIGE9d2luZG93LlVSTHx8d2luZG93LndlYmtpdFVSTDtyLmNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbih0KXtyZXR1cm4gYS5jcmVhdGVPYmplY3RVUkwodCl9LHIucmV2b2tlT2JqZWN0VVJMPWZ1bmN0aW9uKHQpe3JldHVybiBhLnJldm9rZU9iamVjdFVSTCh0KX0sci5jcmVhdGVCbG9iPWZ1bmN0aW9uKHQsZSl7aWYoInN2ZyI9PT1lKXJldHVybiBuZXcgd2luZG93LkJsb2IoW3RdLHt0eXBlOiJpbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgifSk7dmFyIHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IEFycmF5QnVmZmVyKGUpLG49bmV3IFVpbnQ4QXJyYXkociksYT0wO2E8ZTthKyspblthXT10LmNoYXJDb2RlQXQoYSk7cmV0dXJuIHJ9KHdpbmRvdy5hdG9iKHQpKTtyZXR1cm4gbmV3IHdpbmRvdy5CbG9iKFtyXSx7dHlwZToiaW1hZ2UvIitlfSl9LHIub2N0ZXRTdHJlYW09ZnVuY3Rpb24odCl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iK3R9LHIuSU1BR0VfVVJMX1BSRUZJWD0vXmRhdGE6aW1hZ2VcL1x3KztiYXNlNjQsLyxyLk1TR19JRV9CQURfRk9STUFUPSJTb3JyeSBJRSBkb2VzIG5vdCBzdXBwb3J0IGRvd25sb2FkaW5nIGZyb20gY2FudmFzLiBUcnkge2Zvcm1hdDonc3ZnJ30gaW5zdGVhZC4ifSx7Ii4uL3JlZ2lzdHJ5Ijo4NDZ9XSw4NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9oZWxwZXJzIiksYT17Z2V0RGVsYXk6bi5nZXREZWxheSxnZXRSZWRyYXdGdW5jOm4uZ2V0UmVkcmF3RnVuYyxjbG9uZTp0KCIuL2Nsb25lcGxvdCIpLHRvU1ZHOnQoIi4vdG9zdmciKSxzdmdUb0ltZzp0KCIuL3N2Z3RvaW1nIiksdG9JbWFnZTp0KCIuL3RvaW1hZ2UiKSxkb3dubG9hZEltYWdlOnQoIi4vZG93bmxvYWQiKX07ZS5leHBvcnRzPWF9LHsiLi9jbG9uZXBsb3QiOjg0NywiLi9kb3dubG9hZCI6ODQ4LCIuL2hlbHBlcnMiOjg1MCwiLi9zdmd0b2ltZyI6ODUyLCIuL3RvaW1hZ2UiOjg1MywiLi90b3N2ZyI6ODU0fV0sODUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGE9dCgiZXZlbnRzIikuRXZlbnRFbWl0dGVyLGk9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZW1pdHRlcnx8bmV3IGEscj1uZXcgUHJvbWlzZShmdW5jdGlvbihhLG8pe3ZhciBzPXdpbmRvdy5JbWFnZSxsPXQuc3ZnLGM9dC5mb3JtYXR8fCJwbmciO2lmKG4uaXNJRSgpJiYic3ZnIiE9PWMpe3ZhciB1PW5ldyBFcnJvcihpLk1TR19JRV9CQURfRk9STUFUKTtyZXR1cm4gbyh1KSx0LnByb21pc2U/cjplLmVtaXQoImVycm9yIix1KX12YXIgaCxmLHA9dC5jYW52YXMsZD10LnNjYWxlfHwxLGc9dC53aWR0aHx8MzAwLHY9dC5oZWlnaHR8fDE1MCxtPWQqZyx5PWQqdix4PXAuZ2V0Q29udGV4dCgiMmQiKSxiPW5ldyBzOyJzdmciPT09Y3x8bi5pc0lFOW9yQmVsb3coKXx8bi5pc1NhZmFyaSgpP2Y9aS5lbmNvZGVTVkcobCk6KGg9aS5jcmVhdGVCbG9iKGwsInN2ZyIpLGY9aS5jcmVhdGVPYmplY3RVUkwoaCkpLHAud2lkdGg9bSxwLmhlaWdodD15LGIub25sb2FkPWZ1bmN0aW9uKCl7dmFyIHI7c3dpdGNoKGg9bnVsbCxpLnJldm9rZU9iamVjdFVSTChmKSwic3ZnIiE9PWMmJnguZHJhd0ltYWdlKGIsMCwwLG0seSksYyl7Y2FzZSJqcGVnIjpyPXAudG9EYXRhVVJMKCJpbWFnZS9qcGVnIik7YnJlYWs7Y2FzZSJwbmciOnI9cC50b0RhdGFVUkwoImltYWdlL3BuZyIpO2JyZWFrO2Nhc2Uid2VicCI6cj1wLnRvRGF0YVVSTCgiaW1hZ2Uvd2VicCIpO2JyZWFrO2Nhc2Uic3ZnIjpyPWY7YnJlYWs7ZGVmYXVsdDp2YXIgbj0iSW1hZ2UgZm9ybWF0IGlzIG5vdCBqcGVnLCBwbmcsIHN2ZyBvciB3ZWJwLiI7aWYobyhuZXcgRXJyb3IobikpLCF0LnByb21pc2UpcmV0dXJuIGUuZW1pdCgiZXJyb3IiLG4pfWEociksdC5wcm9taXNlfHxlLmVtaXQoInN1Y2Nlc3MiLHIpfSxiLm9uZXJyb3I9ZnVuY3Rpb24ocil7aWYoaD1udWxsLGkucmV2b2tlT2JqZWN0VVJMKGYpLG8ociksIXQucHJvbWlzZSlyZXR1cm4gZS5lbWl0KCJlcnJvciIscil9LGIuc3JjPWZ9KTtyZXR1cm4gdC5wcm9taXNlP3I6ZX19LHsiLi4vbGliIjo3MTcsIi4vaGVscGVycyI6ODUwLGV2ZW50czoxMDZ9XSw4NTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZXZlbnRzIikuRXZlbnRFbWl0dGVyLGE9dCgiLi4vcmVnaXN0cnkiKSxpPXQoIi4uL2xpYiIpLG89dCgiLi9oZWxwZXJzIikscz10KCIuL2Nsb25lcGxvdCIpLGw9dCgiLi90b3N2ZyIpLGM9dCgiLi9zdmd0b2ltZyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBuLHU9cyh0LHtmb3JtYXQ6InBuZyJ9KSxoPXUuZ2Q7aC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGguc3R5bGUubGVmdD0iLTUwMDBweCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoKTt2YXIgZj1vLmdldFJlZHJhd0Z1bmMoaCk7cmV0dXJuIGEuY2FsbCgicGxvdCIsaCx1LmRhdGEsdS5sYXlvdXQsdS5jb25maWcpLnRoZW4oZikudGhlbihmdW5jdGlvbigpe3ZhciB0PW8uZ2V0RGVsYXkoaC5fZnVsbExheW91dCk7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0PWwoaCksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtuLmlkPWkucmFuZHN0cigpLChyPWMoe2Zvcm1hdDplLmZvcm1hdCx3aWR0aDpoLl9mdWxsTGF5b3V0LndpZHRoLGhlaWdodDpoLl9mdWxsTGF5b3V0LmhlaWdodCxjYW52YXM6bixlbWl0dGVyOnIsc3ZnOnR9KSkuY2xlYW49ZnVuY3Rpb24oKXtoJiZkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGgpfX0sdCl9KS5jYXRjaChmdW5jdGlvbih0KXtyLmVtaXQoImVycm9yIix0KX0pLHJ9fSx7Ii4uL2xpYiI6NzE3LCIuLi9yZWdpc3RyeSI6ODQ2LCIuL2Nsb25lcGxvdCI6ODQ3LCIuL2hlbHBlcnMiOjg1MCwiLi9zdmd0b2ltZyI6ODUyLCIuL3Rvc3ZnIjo4NTQsZXZlbnRzOjEwNn1dLDg1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vbGliIiksaT10KCIuLi9jb21wb25lbnRzL2RyYXdpbmciKSxvPXQoIi4uL2NvbXBvbmVudHMvY29sb3IiKSxzPXQoIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIiksbD0vIi9nLGM9bmV3IFJlZ0V4cCgnKCJUT0JFU1RSSVBQRUQpfChUT0JFU1RSSVBQRUQiKScsImciKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciB1LGg9dC5fZnVsbExheW91dCxmPWguX3BhcGVyLHA9aC5fdG9wcGFwZXIsZD1oLndpZHRoLGc9aC5oZWlnaHQ7Zi5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKS5jYWxsKGkuc2V0UmVjdCwwLDAsZCxnKS5jYWxsKG8uZmlsbCxoLnBhcGVyX2JnY29sb3IpO3ZhciB2PWguX2Jhc2VQbG90TW9kdWxlc3x8W107Zm9yKHU9MDt1PHYubGVuZ3RoO3UrKyl7dmFyIG09dlt1XTttLnRvU1ZHJiZtLnRvU1ZHKHQpfWlmKHApe3ZhciB5PXAubm9kZSgpLmNoaWxkTm9kZXMseD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh5KTtmb3IodT0wO3U8eC5sZW5ndGg7dSsrKXt2YXIgYj14W3VdO2IuY2hpbGROb2Rlcy5sZW5ndGgmJmYubm9kZSgpLmFwcGVuZENoaWxkKGIpfX1pZihoLl9kcmFnZ2VycyYmaC5fZHJhZ2dlcnMucmVtb3ZlKCksZi5ub2RlKCkuc3R5bGUuYmFja2dyb3VuZD0iIixmLnNlbGVjdEFsbCgidGV4dCIpLmF0dHIoeyJkYXRhLXVuZm9ybWF0dGVkIjpudWxsLCJkYXRhLW1hdGgiOm51bGx9KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyk7aWYoImhpZGRlbiIhPT10aGlzLnN0eWxlLnZpc2liaWxpdHkmJiJub25lIiE9PXRoaXMuc3R5bGUuZGlzcGxheSl7dC5zdHlsZSh7dmlzaWJpbGl0eTpudWxsLGRpc3BsYXk6bnVsbH0pO3ZhciBlPXRoaXMuc3R5bGUuZm9udEZhbWlseTtlJiYtMSE9PWUuaW5kZXhPZignIicpJiZ0LnN0eWxlKCJmb250LWZhbWlseSIsZS5yZXBsYWNlKGwsIlRPQkVTVFJJUFBFRCIpKX1lbHNlIHQucmVtb3ZlKCl9KSxoLl9ncmFkaWVudFVybFF1ZXJ5UGFydHMpe3ZhciBfPVtdO2Zvcih2YXIgdyBpbiBoLl9ncmFkaWVudFVybFF1ZXJ5UGFydHMpXy5wdXNoKHcpO18ubGVuZ3RoJiZmLnNlbGVjdEFsbChfLmpvaW4oIiwiKSkuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpLGU9dGhpcy5zdHlsZS5maWxsO2UmJi0xIT09ZS5pbmRleE9mKCJ1cmwoIikmJnQuc3R5bGUoImZpbGwiLGUucmVwbGFjZShsLCJUT0JFU1RSSVBQRUQiKSk7dmFyIHI9dGhpcy5zdHlsZS5zdHJva2U7ciYmLTEhPT1yLmluZGV4T2YoInVybCgiKSYmdC5zdHlsZSgic3Ryb2tlIixyLnJlcGxhY2UobCwiVE9CRVNUUklQUEVEIikpfSl9InBkZiIhPT1lJiYiZXBzIiE9PWV8fGYuc2VsZWN0QWxsKCIjTWF0aEpheF9TVkdfZ2x5cGhzIHBhdGgiKS5hdHRyKCJzdHJva2Utd2lkdGgiLDApLGYubm9kZSgpLnNldEF0dHJpYnV0ZU5TKHMueG1sbnMsInhtbG5zIixzLnN2ZyksZi5ub2RlKCkuc2V0QXR0cmlidXRlTlMocy54bWxucywieG1sbnM6eGxpbmsiLHMueGxpbmspLCJzdmciPT09ZSYmciYmKGYuYXR0cigid2lkdGgiLHIqZCksZi5hdHRyKCJoZWlnaHQiLHIqZyksZi5hdHRyKCJ2aWV3Qm94IiwiMCAwICIrZCsiICIrZykpO3ZhciBrPShuZXcgd2luZG93LlhNTFNlcmlhbGl6ZXIpLnNlcmlhbGl6ZVRvU3RyaW5nKGYubm9kZSgpKTtyZXR1cm4gaz1mdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCgiYm9keSIpLmFwcGVuZCgiZGl2Iikuc3R5bGUoe2Rpc3BsYXk6Im5vbmUifSkuaHRtbCgiIikscj10LnJlcGxhY2UoLygmW147XSo7KS9naSxmdW5jdGlvbih0KXtyZXR1cm4iJmx0OyI9PT10PyImIzYwOyI6IiZydDsiPT09dD8iJiM2MjsiOi0xIT09dC5pbmRleE9mKCI8Iil8fC0xIT09dC5pbmRleE9mKCI+Iik/IiI6ZS5odG1sKHQpLnRleHQoKX0pO3JldHVybiBlLnJlbW92ZSgpLHJ9KGspLGs9KGs9ay5yZXBsYWNlKC8mKD8hXHcrO3xcI1swLTldKzt8IFwjeFswLTlBLUZdKzspL2csIiZhbXA7IikpLnJlcGxhY2UoYywiJyIpLGEuaXNJRSgpJiYoaz0oaz0oaz1rLnJlcGxhY2UoLyIvZ2ksIiciKSkucmVwbGFjZSgvKFwoJyMpKFteJ10qKSgnXCkpL2dpLCcoIiMkMiIpJykpLnJlcGxhY2UoLyhcXCcpL2dpLCciJykpLGt9fSx7Ii4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uL2xpYiI6NzE3LGQzOjE2NX1dLDg1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdLmk9cjtuLm1lcmdlQXJyYXkoZS50ZXh0LHQsInR4Iiksbi5tZXJnZUFycmF5KGUuaG92ZXJ0ZXh0LHQsImh0eCIpO3ZhciBhPWUubWFya2VyO2lmKGEpe24ubWVyZ2VBcnJheShhLm9wYWNpdHksdCwibW8iLCEwKSxuLm1lcmdlQXJyYXkoYS5jb2xvcix0LCJtYyIpO3ZhciBpPWEubGluZTtpJiYobi5tZXJnZUFycmF5KGkuY29sb3IsdCwibWxjIiksbi5tZXJnZUFycmF5Q2FzdFBvc2l0aXZlKGkud2lkdGgsdCwibWx3IikpfX19LHsiLi4vLi4vbGliIjo3MTd9XSw4NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGw9dCgiLi9jb25zdGFudHMiKSxjPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHU9cyh7ZWRpdFR5cGU6ImNhbGMiLGFycmF5T2s6ITAsY29sb3JFZGl0VHlwZToic3R5bGUifSksaD1jKHt9LG4ubWFya2VyLmxpbmUud2lkdGgse2RmbHQ6MH0pLGY9Yyh7d2lkdGg6aCxlZGl0VHlwZToiY2FsYyJ9LG8oIm1hcmtlci5saW5lIikpLHA9Yyh7bGluZTpmLGVkaXRUeXBlOiJjYWxjIn0sbygibWFya2VyIikse29wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsYXJyYXlPazohMCxkZmx0OjEsbWluOjAsbWF4OjEsZWRpdFR5cGU6InN0eWxlIn19KTtlLmV4cG9ydHM9e3g6bi54LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHksdGV4dDpuLnRleHQsdGV4dHRlbXBsYXRlOmkoe2VkaXRUeXBlOiJwbG90In0se2tleXM6bC5ldmVudERhdGFLZXlzfSksaG92ZXJ0ZXh0Om4uaG92ZXJ0ZXh0LGhvdmVydGVtcGxhdGU6YSh7fSx7a2V5czpsLmV2ZW50RGF0YUtleXN9KSx0ZXh0cG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImluc2lkZSIsIm91dHNpZGUiLCJhdXRvIiwibm9uZSJdLGRmbHQ6Im5vbmUiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSxpbnNpZGV0ZXh0YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJlbmQiLCJtaWRkbGUiLCJzdGFydCJdLGRmbHQ6ImVuZCIsZWRpdFR5cGU6InBsb3QifSx0ZXh0YW5nbGU6e3ZhbFR5cGU6ImFuZ2xlIixkZmx0OiJhdXRvIixlZGl0VHlwZToicGxvdCJ9LHRleHRmb250OmMoe30sdSx7fSksaW5zaWRldGV4dGZvbnQ6Yyh7fSx1LHt9KSxvdXRzaWRldGV4dGZvbnQ6Yyh7fSx1LHt9KSxjb25zdHJhaW50ZXh0Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJpbnNpZGUiLCJvdXRzaWRlIiwiYm90aCIsIm5vbmUiXSxkZmx0OiJib3RoIixlZGl0VHlwZToiY2FsYyJ9LGNsaXBvbmF4aXM6Yyh7fSxuLmNsaXBvbmF4aXMse30pLG9yaWVudGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ2IiwiaCJdLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sYmFzZTp7dmFsVHlwZToiYW55IixkZmx0Om51bGwsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LG9mZnNldDp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxtaW46MCxhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0sbWFya2VyOnAsb2Zmc2V0Z3JvdXA6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LGFsaWdubWVudGdyb3VwOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxzZWxlY3RlZDp7bWFya2VyOntvcGFjaXR5Om4uc2VsZWN0ZWQubWFya2VyLm9wYWNpdHksY29sb3I6bi5zZWxlY3RlZC5tYXJrZXIuY29sb3IsZWRpdFR5cGU6InN0eWxlIn0sdGV4dGZvbnQ6bi5zZWxlY3RlZC50ZXh0Zm9udCxlZGl0VHlwZToic3R5bGUifSx1bnNlbGVjdGVkOnttYXJrZXI6e29wYWNpdHk6bi51bnNlbGVjdGVkLm1hcmtlci5vcGFjaXR5LGNvbG9yOm4udW5zZWxlY3RlZC5tYXJrZXIuY29sb3IsZWRpdFR5cGU6InN0eWxlIn0sdGV4dGZvbnQ6bi51bnNlbGVjdGVkLnRleHRmb250LGVkaXRUeXBlOiJzdHlsZSJ9LHI6bi5yLHQ6bi50LF9kZXByZWNhdGVkOntiYXJkaXI6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGVkaXRUeXBlOiJjYWxjIix2YWx1ZXM6WyJ2IiwiaCJdfX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwLCIuL2NvbnN0YW50cyI6ODU4fV0sODU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLG89dCgiLi9hcnJheXNfdG9fY2FsY2RhdGEiKSxzPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixsLGM9bi5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLHU9bi5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIpOyJoIj09PWUub3JpZW50YXRpb24/KHI9Yy5tYWtlQ2FsY2RhdGEoZSwieCIpLGw9dS5tYWtlQ2FsY2RhdGEoZSwieSIpKToocj11Lm1ha2VDYWxjZGF0YShlLCJ5IiksbD1jLm1ha2VDYWxjZGF0YShlLCJ4IikpO2Zvcih2YXIgaD1NYXRoLm1pbihsLmxlbmd0aCxyLmxlbmd0aCksZj1uZXcgQXJyYXkoaCkscD0wO3A8aDtwKyspZltwXT17cDpsW3BdLHM6cltwXX0sZS5pZHMmJihmW3BdLmlkPVN0cmluZyhlLmlkc1twXSkpO3JldHVybiBhKGUsIm1hcmtlciIpJiZpKHQsZSx7dmFsczplLm1hcmtlci5jb2xvcixjb250YWluZXJTdHI6Im1hcmtlciIsY0xldHRlcjoiYyJ9KSxhKGUsIm1hcmtlci5saW5lIikmJmkodCxlLHt2YWxzOmUubWFya2VyLmxpbmUuY29sb3IsY29udGFpbmVyU3RyOiJtYXJrZXIubGluZSIsY0xldHRlcjoiYyJ9KSxvKGYsZSkscyhmLGUpLGZ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjo2MDAsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iOjExMjIsIi4vYXJyYXlzX3RvX2NhbGNkYXRhIjo4NTV9XSw4NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtURVhUUEFEOjMsZXZlbnREYXRhS2V5czpbInZhbHVlIiwibGFiZWwiXX19LHt9XSw4NTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXksaT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLG89dCgiLi4vLi4vcmVnaXN0cnkiKSxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKS5nZXRBeGlzR3JvdXAsYz10KCIuL3NpZXZlLmpzIik7ZnVuY3Rpb24gdSh0LGUscixvLHUpe2lmKG8ubGVuZ3RoKXt2YXIgYixfLHcsaztzd2l0Y2goZnVuY3Rpb24odCxlKXt2YXIgcixpO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvLHM9ZVtyXSxsPXNbMF0udHJhY2UsYz0iZnVubmVsIj09PWwudHlwZT9sLl9iYXNlOmwuYmFzZSx1PSJoIj09PWwub3JpZW50YXRpb24/bC54Y2FsZW5kYXI6bC55Y2FsZW5kYXIsaD0iY2F0ZWdvcnkiPT09dC50eXBlfHwibXVsdGljYXRlZ29yeSI9PT10LnR5cGU/ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH06dC5kMmM7aWYoYShjKSl7Zm9yKGk9MDtpPE1hdGgubWluKGMubGVuZ3RoLHMubGVuZ3RoKTtpKyspbz1oKGNbaV0sMCx1KSxuKG8pPyhzW2ldLmI9K28sc1tpXS5oYXNCPTEpOnNbaV0uYj0wO2Zvcig7aTxzLmxlbmd0aDtpKyspc1tpXS5iPTB9ZWxzZXtvPWgoYywwLHUpO3ZhciBmPW4obyk7Zm9yKG89Zj9vOjAsaT0wO2k8cy5sZW5ndGg7aSsrKXNbaV0uYj1vLGYmJihzW2ldLmhhc0I9MSl9fX0ocixvKSx1Lm1vZGUpe2Nhc2Uib3ZlcmxheSI6aChlLHIsbyx1KTticmVhaztjYXNlImdyb3VwIjpmb3IoYj1bXSxfPVtdLHc9MDt3PG8ubGVuZ3RoO3crKyl2b2lkIDA9PT0oaz1vW3ddKVswXS50cmFjZS5vZmZzZXQ/Xy5wdXNoKGspOmIucHVzaChrKTtfLmxlbmd0aCYmZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbz1uZXcgYyhuLHtzZXBOZWdWYWw6ITEsb3ZlcmxhcE5vTWVyZ2U6IWEubm9ybX0pOyhmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9dC5fZnVsbExheW91dCxpPXIucG9zaXRpb25zLG89ci5kaXN0aW5jdFBvc2l0aW9ucyxzPXIubWluRGlmZixjPXIudHJhY2VzLHU9Yy5sZW5ndGgsaD1pLmxlbmd0aCE9PW8ubGVuZ3RoLGY9cyooMS1uLmdhcCksdj1sKGEsZS5faWQpK2NbMF1bMF0udHJhY2Uub3JpZW50YXRpb24sbT1hLl9hbGlnbm1lbnRPcHRzW3ZdfHx7fSx5PTA7eTx1O3krKyl7dmFyIHgsYixfPWNbeV0sdz1fWzBdLnRyYWNlLGs9bVt3LmFsaWdubWVudGdyb3VwXXx8e30sVD1PYmplY3Qua2V5cyhrLm9mZnNldEdyb3Vwc3x8e30pLmxlbmd0aCxNPSh4PVQ/Zi9UOmg/Zi91OmYpKigxLShuLmdyb3VwZ2FwfHwwKSk7Yj1UPygoMip3Ll9vZmZzZXRJbmRleCsxLVQpKngtTSkvMjpoPygoMip5KzEtdSkqeC1NKS8yOi1NLzI7dmFyIEE9X1swXS50O0EuYmFyd2lkdGg9TSxBLnBvZmZzZXQ9YixBLmJhcmdyb3Vwd2lkdGg9ZixBLmJhcmRlbHRhPXN9ci5iaW5XaWR0aD1jWzBdWzBdLnQuYmFyd2lkdGgvMTAwLHAociksZChlLHIpLGcoZSxyLGgpfSkodCxlLG8sYSksZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQudHJhY2VzLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXSxhPW5bMF0udHJhY2U7aWYodm9pZCAwPT09YS5iYXNlKWZvcih2YXIgbz1uZXcgYyhbbl0se3NlcE5lZ1ZhbDohMCxvdmVybGFwTm9NZXJnZTohMH0pLHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIGw9bltzXTtpZihsLnAhPT1pKXt2YXIgdT1vLnB1dChsLnAsbC5iK2wucyk7dSYmKGwuYj11KX19fX0obyksYS5ub3JtPyhtKG8pLHkocixvLGEpKTp2KHIsbyl9KHQsZSxyLF8sdSksYi5sZW5ndGgmJmgoZSxyLGIsdSk7YnJlYWs7Y2FzZSJzdGFjayI6Y2FzZSJyZWxhdGl2ZSI6Zm9yKGI9W10sXz1bXSx3PTA7dzxvLmxlbmd0aDt3Kyspdm9pZCAwPT09KGs9b1t3XSlbMF0udHJhY2UuYmFzZT9fLnB1c2goayk6Yi5wdXNoKGspO18ubGVuZ3RoJiZmdW5jdGlvbih0LGUscixuLGEpe3ZhciBvPW5ldyBjKG4se3NlcE5lZ1ZhbDoicmVsYXRpdmUiPT09YS5tb2RlLG92ZXJsYXBOb01lcmdlOiEoYS5ub3JtfHwic3RhY2siPT09YS5tb2RlfHwicmVsYXRpdmUiPT09YS5tb2RlKX0pO2YoZSxvLGEpLGZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLG8sbCxjLHUsaD14KHQpLGY9ZS50cmFjZXM7Zm9yKGw9MDtsPGYubGVuZ3RoO2wrKylpZihuPWZbbF0sImZ1bm5lbCI9PT0oYT1uWzBdLnRyYWNlKS50eXBlKWZvcihjPTA7YzxuLmxlbmd0aDtjKyspKHU9bltjXSkucyE9PWkmJmUucHV0KHUucCwtLjUqdS5zKTtmb3IobD0wO2w8Zi5sZW5ndGg7bCsrKXtuPWZbbF0sYT1uWzBdLnRyYWNlLG89ImZ1bm5lbCI9PT1hLnR5cGU7dmFyIHA9W107Zm9yKGM9MDtjPG4ubGVuZ3RoO2MrKylpZigodT1uW2NdKS5zIT09aSl7dmFyIGQ7ZD1vP3Uuczp1LnMrdS5iO3ZhciBnPWUucHV0KHUucCxkKSx2PWcrZDt1LmI9Zyx1W2hdPXYsci5ub3JtfHwocC5wdXNoKHYpLHUuaGFzQiYmcC5wdXNoKGcpKX1yLm5vcm18fChhLl9leHRyZW1lc1t0Ll9pZF09cy5maW5kRXh0cmVtZXModCxwLHt0b3plcm86ITAscGFkZGVkOiEwfSkpfX0ocixvLGEpO2Zvcih2YXIgbD0wO2w8bi5sZW5ndGg7bCsrKWZvcih2YXIgdT1uW2xdLGg9MDtoPHUubGVuZ3RoO2grKyl7dmFyIHA9dVtoXTtpZihwLnMhPT1pKXt2YXIgZD1wLmIrcC5zPT09by5nZXQocC5wLHAucyk7ZCYmKHAuX291dG1vc3Q9ITApfX1hLm5vcm0mJnkocixvLGEpfSgwLGUscixfLHUpLGIubGVuZ3RoJiZoKGUscixiLHUpfSFmdW5jdGlvbih0LGUpe3ZhciByLGEsaSxvPXgoZSkscz17fSxsPTEvMCxjPS0xLzA7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylmb3IoaT10W3JdLGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIHU9aVthXS5wO24odSkmJihsPU1hdGgubWluKGwsdSksYz1NYXRoLm1heChjLHUpKX12YXIgaD0xZTQvKGMtbCksZj1zLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcoTWF0aC5yb3VuZChoKih0LWwpKSl9O2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspeyhpPXRbcl0pWzBdLnQuZXh0ZW50cz1zO3ZhciBwPWlbMF0udC5wb2Zmc2V0LGQ9QXJyYXkuaXNBcnJheShwKTtmb3IoYT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgZz1pW2FdLHY9Z1tvXS1nLncvMjtpZihuKHYpKXt2YXIgbT1nW29dK2cudy8yLHk9ZihnLnApO3NbeV0/c1t5XT1bTWF0aC5taW4odixzW3ldWzBdKSxNYXRoLm1heChtLHNbeV1bMV0pXTpzW3ldPVt2LG1dfWcucDA9Zy5wKyhkP3BbYV06cCksZy5wMT1nLnAwK2cudyxnLnMwPWcuYixnLnMxPWcuczArZy5zfX19KG8sZSl9fWZ1bmN0aW9uIGgodCxlLHIsbil7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBpPXJbYV0sbz1uZXcgYyhbaV0se3NlcE5lZ1ZhbDohMSxvdmVybGFwTm9NZXJnZTohbi5ub3JtfSk7Zih0LG8sbiksbi5ub3JtPyhtKG8pLHkoZSxvLG4pKTp2KGUsbyl9fWZ1bmN0aW9uIGYodCxlLHIpe2Zvcih2YXIgbj1lLm1pbkRpZmYsYT1lLnRyYWNlcyxpPW4qKDEtci5nYXApLG89aSooMS0oci5ncm91cGdhcHx8MCkpLHM9LW8vMixsPTA7bDxhLmxlbmd0aDtsKyspe3ZhciBjPWFbbF1bMF0udDtjLmJhcndpZHRoPW8sYy5wb2Zmc2V0PXMsYy5iYXJncm91cHdpZHRoPWksYy5iYXJkZWx0YT1ufWUuYmluV2lkdGg9YVswXVswXS50LmJhcndpZHRoLzEwMCxwKGUpLGQodCxlKSxnKHQsZSl9ZnVuY3Rpb24gcCh0KXt2YXIgZSxyLGk9dC50cmFjZXM7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKyl7dmFyIG8scz1pW2VdLGw9c1swXSxjPWwudHJhY2UsdT1sLnQsaD1jLl9vZmZzZXR8fGMub2Zmc2V0LGY9dS5wb2Zmc2V0O2lmKGEoaCkpe2ZvcihvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGgsMCxzLmxlbmd0aCkscj0wO3I8by5sZW5ndGg7cisrKW4ob1tyXSl8fChvW3JdPWYpO2ZvcihyPW8ubGVuZ3RoO3I8cy5sZW5ndGg7cisrKW8ucHVzaChmKTt1LnBvZmZzZXQ9b31lbHNlIHZvaWQgMCE9PWgmJih1LnBvZmZzZXQ9aCk7dmFyIHA9Yy5fd2lkdGh8fGMud2lkdGgsZD11LmJhcndpZHRoO2lmKGEocCkpe3ZhciBnPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHAsMCxzLmxlbmd0aCk7Zm9yKHI9MDtyPGcubGVuZ3RoO3IrKyluKGdbcl0pfHwoZ1tyXT1kKTtmb3Iocj1nLmxlbmd0aDtyPHMubGVuZ3RoO3IrKylnLnB1c2goZCk7aWYodS5iYXJ3aWR0aD1nLHZvaWQgMD09PWgpe2ZvcihvPVtdLHI9MDtyPHMubGVuZ3RoO3IrKylvLnB1c2goZisoZC1nW3JdKS8yKTt1LnBvZmZzZXQ9b319ZWxzZSB2b2lkIDAhPT1wJiYodS5iYXJ3aWR0aD1wLHZvaWQgMD09PWgmJih1LnBvZmZzZXQ9ZisoZC1wKS8yKSl9fWZ1bmN0aW9uIGQodCxlKXtmb3IodmFyIHI9ZS50cmFjZXMsbj14KHQpLGE9MDthPHIubGVuZ3RoO2ErKylmb3IodmFyIGk9clthXSxvPWlbMF0udCxzPW8ucG9mZnNldCxsPUFycmF5LmlzQXJyYXkocyksYz1vLmJhcndpZHRoLHU9QXJyYXkuaXNBcnJheShjKSxoPTA7aDxpLmxlbmd0aDtoKyspe3ZhciBmPWlbaF0scD1mLnc9dT9jW2hdOmM7ZltuXT1mLnArKGw/c1toXTpzKStwLzJ9fWZ1bmN0aW9uIGcodCxlLHIpe3ZhciBuPWUudHJhY2VzLGE9ZS5taW5EaWZmLzI7cy5taW5EdGljayh0LGUubWluRGlmZixlLmRpc3RpbmN0UG9zaXRpb25zWzBdLHIpO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbyxsLGMsdSxoPW5baV0sZj1oWzBdLHA9Zi50cmFjZSxkPVtdO2Zvcih1PTA7dTxoLmxlbmd0aDt1KyspbD0obz1oW3VdKS5wLWEsYz1vLnArYSxkLnB1c2gobCxjKTtpZihwLndpZHRofHxwLm9mZnNldCl7dmFyIGc9Zi50LHY9Zy5wb2Zmc2V0LG09Zy5iYXJ3aWR0aCx5PUFycmF5LmlzQXJyYXkodikseD1BcnJheS5pc0FycmF5KG0pO2Zvcih1PTA7dTxoLmxlbmd0aDt1Kyspe289aFt1XTt2YXIgYj15P3ZbdV06dixfPXg/bVt1XTptO2M9KGw9by5wK2IpK18sZC5wdXNoKGwsYyl9fXAuX2V4dHJlbWVzW3QuX2lkXT1zLmZpbmRFeHRyZW1lcyh0LGQse3BhZGRlZDohMX0pfX1mdW5jdGlvbiB2KHQsZSl7Zm9yKHZhciByPWUudHJhY2VzLG49eCh0KSxhPTA7YTxyLmxlbmd0aDthKyspe2Zvcih2YXIgaT1yW2FdLG89aVswXS50cmFjZSxsPVtdLGM9ITAsdT0wO3U8aS5sZW5ndGg7dSsrKXt2YXIgaD1pW3VdLGY9aC5iLHA9ZitoLnM7aFtuXT1wLGwucHVzaChwKSxoLmhhc0ImJmwucHVzaChmKSxoLmhhc0ImJmguYj4wJiZoLnM+MHx8KGM9ITEpfW8uX2V4dHJlbWVzW3QuX2lkXT1zLmZpbmRFeHRyZW1lcyh0LGwse3RvemVybzohYyxwYWRkZWQ6ITB9KX19ZnVuY3Rpb24gbSh0KXtmb3IodmFyIGU9dC50cmFjZXMscj0wO3I8ZS5sZW5ndGg7cisrKWZvcih2YXIgbj1lW3JdLGE9MDthPG4ubGVuZ3RoO2ErKyl7dmFyIG89blthXTtvLnMhPT1pJiZ0LnB1dChvLnAsby5iK28ucyl9fWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBhPWUudHJhY2VzLG89eCh0KSxsPSJmcmFjdGlvbiI9PT1yLm5vcm0/MToxMDAsYz1sLzFlOSx1PXQubDJjKHQuYzJsKDApKSxoPSJzdGFjayI9PT1yLm1vZGU/bDp1O2Z1bmN0aW9uIGYoZSl7cmV0dXJuIG4odC5jMmwoZSkpJiYoZTx1LWN8fGU+aCtjfHwhbih1KSl9Zm9yKHZhciBwPTA7cDxhLmxlbmd0aDtwKyspe2Zvcih2YXIgZD1hW3BdLGc9ZFswXS50cmFjZSx2PVtdLG09ITAseT0hMSxiPTA7YjxkLmxlbmd0aDtiKyspe3ZhciBfPWRbYl07aWYoXy5zIT09aSl7dmFyIHc9TWF0aC5hYnMobC9lLmdldChfLnAsXy5zKSk7Xy5iKj13LF8ucyo9dzt2YXIgaz1fLmIsVD1rK18ucztfW29dPVQsdi5wdXNoKFQpLHk9eXx8ZihUKSxfLmhhc0ImJih2LnB1c2goaykseT15fHxmKGspKSxfLmhhc0ImJl8uYj4wJiZfLnM+MHx8KG09ITEpfX1nLl9leHRyZW1lc1t0Ll9pZF09cy5maW5kRXh0cmVtZXModCx2LHt0b3plcm86IW0scGFkZGVkOnl9KX19ZnVuY3Rpb24geCh0KXtyZXR1cm4gdC5faWQuY2hhckF0KDApfWUuZXhwb3J0cz17Y3Jvc3NUcmFjZUNhbGM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS54YXhpcyxuPWUueWF4aXMsYT10Ll9mdWxsTGF5b3V0LGk9dC5fZnVsbERhdGEscz10LmNhbGNkYXRhLGw9W10sYz1bXSxoPTA7aDxpLmxlbmd0aDtoKyspe3ZhciBmPWlbaF07ITA9PT1mLnZpc2libGUmJm8udHJhY2VJcyhmLCJiYXIiKSYmZi54YXhpcz09PXIuX2lkJiZmLnlheGlzPT09bi5faWQmJigiaCI9PT1mLm9yaWVudGF0aW9uP2wucHVzaChzW2hdKTpjLnB1c2goc1toXSkpfXZhciBwPXttb2RlOmEuYmFybW9kZSxub3JtOmEuYmFybm9ybSxnYXA6YS5iYXJnYXAsZ3JvdXBnYXA6YS5iYXJncm91cGdhcH07dSh0LHIsbixjLHApLHUodCxuLHIsbCxwKX0sc2V0R3JvdXBQb3NpdGlvbnM6dX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vc2lldmUuanMiOjg2OSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDg2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5Iiksbz10KCIuLi9zY2F0dGVyL3h5X2RlZmF1bHRzIikscz10KCIuL3N0eWxlX2RlZmF1bHRzIiksbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKS5nZXRBeGlzR3JvdXAsYz10KCIuL2F0dHJpYnV0ZXMiKSx1PW4uY29lcmNlRm9udDtmdW5jdGlvbiBoKHQsZSxyLG4pe3ZhciBhPWUub3JpZW50YXRpb24saT1lW3t2OiJ4IixoOiJ5In1bYV0rImF4aXMiXSxvPWwocixpKSthLHM9ci5fYWxpZ25tZW50T3B0c3x8e30sYz1uKCJhbGlnbm1lbnRncm91cCIpLHU9c1tvXTt1fHwodT1zW29dPXt9KTt2YXIgaD11W2NdO2g/aC50cmFjZXMucHVzaChlKTpoPXVbY109e3RyYWNlczpbZV0sYWxpZ25tZW50SW5kZXg6T2JqZWN0LmtleXModSkubGVuZ3RoLG9mZnNldEdyb3Vwczp7fX07dmFyIGY9bigib2Zmc2V0Z3JvdXAiKSxwPWgub2Zmc2V0R3JvdXBzLGQ9cFtmXTtmJiYoZHx8KGQ9cFtmXT17b2Zmc2V0SW5kZXg6T2JqZWN0LmtleXMocCkubGVuZ3RofSksZS5fb2Zmc2V0SW5kZXg9ZC5vZmZzZXRJbmRleCl9ZnVuY3Rpb24gZih0LGUscixhLGksbyl7dmFyIHM9ISghMT09PShvPW98fHt9KS5tb2R1bGVIYXNTZWxlY3RlZCksbD0hKCExPT09by5tb2R1bGVIYXNVbnNlbGVjdGVkKSxjPSEoITE9PT1vLm1vZHVsZUhhc0NvbnN0cmFpbiksaD0hKCExPT09by5tb2R1bGVIYXNDbGlwb25heGlzKSxmPSEoITE9PT1vLm1vZHVsZUhhc1RleHRhbmdsZSkscD0hKCExPT09by5tb2R1bGVIYXNJbnNpZGVhbmNob3IpLGQ9ISFvLmhhc1BhdGhiYXIsZz1BcnJheS5pc0FycmF5KGkpfHwiYXV0byI9PT1pLHY9Z3x8Imluc2lkZSI9PT1pLG09Z3x8Im91dHNpZGUiPT09aTtpZih2fHxtKXt2YXIgeT11KGEsInRleHRmb250IixyLmZvbnQpLHg9bi5leHRlbmRGbGF0KHt9LHkpLGI9ISh0LnRleHRmb250JiZ0LnRleHRmb250LmNvbG9yKTtpZihiJiZkZWxldGUgeC5jb2xvcix1KGEsImluc2lkZXRleHRmb250Iix4KSxkKXt2YXIgXz1uLmV4dGVuZEZsYXQoe30seSk7YiYmZGVsZXRlIF8uY29sb3IsdShhLCJwYXRoYmFyLnRleHRmb250IixfKX1tJiZ1KGEsIm91dHNpZGV0ZXh0Zm9udCIseSkscyYmYSgic2VsZWN0ZWQudGV4dGZvbnQuY29sb3IiKSxsJiZhKCJ1bnNlbGVjdGVkLnRleHRmb250LmNvbG9yIiksYyYmYSgiY29uc3RyYWludGV4dCIpLGgmJmEoImNsaXBvbmF4aXMiKSxmJiZhKCJ0ZXh0YW5nbGUiKSxhKCJ0ZXh0dGVtcGxhdGUiKX12JiZwJiZhKCJpbnNpZGV0ZXh0YW5jaG9yIil9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpmdW5jdGlvbih0LGUscixsKXtmdW5jdGlvbiB1KHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxjLHIsYSl9aWYobyh0LGUsbCx1KSl7dSgib3JpZW50YXRpb24iLGUueCYmIWUueT8iaCI6InYiKSx1KCJiYXNlIiksdSgib2Zmc2V0IiksdSgid2lkdGgiKSx1KCJ0ZXh0IiksdSgiaG92ZXJ0ZXh0IiksdSgiaG92ZXJ0ZW1wbGF0ZSIpO3ZhciBoPXUoInRleHRwb3NpdGlvbiIpO2YodCwwLGwsdSxoLHttb2R1bGVIYXNTZWxlY3RlZDohMCxtb2R1bGVIYXNVbnNlbGVjdGVkOiEwLG1vZHVsZUhhc0NvbnN0cmFpbjohMCxtb2R1bGVIYXNDbGlwb25heGlzOiEwLG1vZHVsZUhhc1RleHRhbmdsZTohMCxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITB9KSxzKHQsZSx1LHIsbCk7dmFyIHA9KGUubWFya2VyLmxpbmV8fHt9KS5jb2xvcixkPWkuZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJzdXBwbHlEZWZhdWx0cyIpO2QodCxlLHB8fGEuZGVmYXVsdExpbmUse2F4aXM6InkifSksZCh0LGUscHx8YS5kZWZhdWx0TGluZSx7YXhpczoieCIsaW5oZXJpdDoieSJ9KSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSx1KX1lbHNlIGUudmlzaWJsZT0hMX0sY3Jvc3NUcmFjZURlZmF1bHRzOmZ1bmN0aW9uKHQsZSl7dmFyIHI7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbi5jb2VyY2Uoci5faW5wdXQscixjLHQpfWlmKCJncm91cCI9PT1lLmJhcm1vZGUpZm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspImJhciI9PT0ocj10W2ldKS50eXBlJiYoci5faW5wdXQsaCgwLHIsZSxhKSl9LGhhbmRsZUdyb3VwaW5nRGVmYXVsdHM6aCxoYW5kbGVUZXh0OmZ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9zY2F0dGVyL3h5X2RlZmF1bHRzIjoxMTQ2LCIuL2F0dHJpYnV0ZXMiOjg1NiwiLi9zdHlsZV9kZWZhdWx0cyI6ODcxfV0sODYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQueD0ieFZhbCJpbiBlP2UueFZhbDplLngsdC55PSJ5VmFsImluIGU/ZS55VmFsOmUueSxlLnhhJiYodC54YXhpcz1lLnhhKSxlLnlhJiYodC55YXhpcz1lLnlhKSwiaCI9PT1yLm9yaWVudGF0aW9uPyh0LmxhYmVsPXQueSx0LnZhbHVlPXQueCk6KHQubGFiZWw9dC54LHQudmFsdWU9dC55KSx0fX0se31dLDg2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgidGlueWNvbG9yMiIpLGk9dCgiLi4vLi4vbGliIikuaXNBcnJheU9yVHlwZWRBcnJheTtyLmNvZXJjZVN0cmluZz1mdW5jdGlvbih0LGUscil7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZihlfHwhdC5ub0JsYW5rKXJldHVybiBlfWVsc2UgaWYoKCJudW1iZXIiPT10eXBlb2YgZXx8ITA9PT1lKSYmIXQuc3RyaWN0KXJldHVybiBTdHJpbmcoZSk7cmV0dXJuIHZvaWQgMCE9PXI/cjp0LmRmbHR9LHIuY29lcmNlTnVtYmVyPWZ1bmN0aW9uKHQsZSxyKXtpZihuKGUpKXtlPStlO3ZhciBhPXQubWluLGk9dC5tYXg7aWYoISh2b2lkIDAhPT1hJiZlPGF8fHZvaWQgMCE9PWkmJmU+aSkpcmV0dXJuIGV9cmV0dXJuIHZvaWQgMCE9PXI/cjp0LmRmbHR9LHIuY29lcmNlQ29sb3I9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBhKGUpLmlzVmFsaWQoKT9lOnZvaWQgMCE9PXI/cjp0LmRmbHR9LHIuY29lcmNlRW51bWVyYXRlZD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQuY29lcmNlTnVtYmVyJiYoZT0rZSksLTEhPT10LnZhbHVlcy5pbmRleE9mKGUpP2U6dm9pZCAwIT09cj9yOnQuZGZsdH0sci5nZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiBBcnJheS5pc0FycmF5KHQpP2U8dC5sZW5ndGgmJihyPXRbZV0pOnI9dCxyfSxyLmdldExpbmVXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiAwPGUubWx3P2UubWx3OmkodC5tYXJrZXIubGluZS53aWR0aCk/MDp0Lm1hcmtlci5saW5lLndpZHRofX0seyIuLi8uLi9saWIiOjcxNywiZmFzdC1pc251bWVyaWMiOjIyOCx0aW55Y29sb3IyOjUzNn1dLDg2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89dCgiLi4vLi4vbGliIikuZmlsbFRleHQscz10KCIuL2hlbHBlcnMiKS5nZXRMaW5lV2lkdGgsbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLmhvdmVyTGFiZWxUZXh0O2Z1bmN0aW9uIGModCxlLHIsYSl7dmFyIGkscyxjLHUsaCxmLHAsZD10LmNkLGc9ZFswXS50cmFjZSx2PWRbMF0udCxtPSJjbG9zZXN0Ij09PWEseT0id2F0ZXJmYWxsIj09PWcudHlwZSx4PXQubWF4SG92ZXJEaXN0YW5jZSxiPXQubWF4U3Bpa2VEaXN0YW5jZTtmdW5jdGlvbiBfKHQpe3JldHVybiB0W2NdLXQudy8yfWZ1bmN0aW9uIHcodCl7cmV0dXJuIHRbY10rdC53LzJ9dmFyIGs9bT9fOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1pbihfKHQpLHQucC12LmJhcmRlbHRhLzIpfSxUPW0/dzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgodyh0KSx0LnArdi5iYXJkZWx0YS8yKX07ZnVuY3Rpb24gTSh0LGUpe3JldHVybiBuLmluYm94KHQtaSxlLWkseCtNYXRoLm1pbigxLE1hdGguYWJzKGUtdCkvcCktMSl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gTShrKHQpLFQodCkpfWZ1bmN0aW9uIFModCl7dmFyIGU9cyxyPXQuYixhPXRbdV07aWYoeSl7dmFyIGk9TWF0aC5hYnModC5yYXdTKXx8MDtlPjA/YSs9aTplPDAmJihhLT1pKX1yZXR1cm4gbi5pbmJveChyLWUsYS1lLHgrKGEtZSkvKGEtciktMSl9ImgiPT09Zy5vcmllbnRhdGlvbj8oaT1yLHM9ZSxjPSJ5Iix1PSJ4IixoPVMsZj1BKTooaT1lLHM9cixjPSJ4Iix1PSJ5IixmPVMsaD1BKTt2YXIgRT10W2MrImEiXSxMPXRbdSsiYSJdO3A9TWF0aC5hYnMoRS5yMmMoRS5yYW5nZVsxXSktRS5yMmMoRS5yYW5nZVswXSkpO3ZhciBDPW4uZ2V0RGlzdGFuY2VGdW5jdGlvbihhLGgsZixmdW5jdGlvbih0KXtyZXR1cm4oaCh0KStmKHQpKS8yfSk7aWYobi5nZXRDbG9zZXN0KGQsQyx0KSwhMSE9PXQuaW5kZXgpe218fChrPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1pbihfKHQpLHQucC12LmJhcmdyb3Vwd2lkdGgvMil9LFQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KHcodCksdC5wK3YuYmFyZ3JvdXB3aWR0aC8yKX0pO3ZhciBQPWRbdC5pbmRleF0sTz1nLmJhc2U/UC5iK1AuczpQLnM7dFt1KyIwIl09dFt1KyIxIl09TC5jMnAoUFt1XSwhMCksdFt1KyJMYWJlbFZhbCJdPU87dmFyIHo9di5leHRlbnRzW3YuZXh0ZW50cy5yb3VuZChQLnApXTtyZXR1cm4gdFtjKyIwIl09RS5jMnAobT9rKFApOnpbMF0sITApLHRbYysiMSJdPUUuYzJwKG0/VChQKTp6WzFdLCEwKSx0W2MrIkxhYmVsVmFsIl09UC5wLHQubGFiZWxMYWJlbD1sKEUsdFtjKyJMYWJlbFZhbCJdKSx0LnZhbHVlTGFiZWw9bChMLHRbdSsiTGFiZWxWYWwiXSksdC5zcGlrZURpc3RhbmNlPShTKFApK2Z1bmN0aW9uKHQpe3JldHVybiBNKF8odCksdyh0KSl9KFApKS8yK2IteCx0W2MrIlNwaWtlIl09RS5jMnAoUC5wLCEwKSxvKFAsZyx0KSx0LmhvdmVydGVtcGxhdGU9Zy5ob3ZlcnRlbXBsYXRlLHR9fWZ1bmN0aW9uIHUodCxlKXt2YXIgcj1lLm1jY3x8dC5tYXJrZXIuY29sb3Isbj1lLm1sY2N8fHQubWFya2VyLmxpbmUuY29sb3IsYT1zKHQsZSk7cmV0dXJuIGkub3BhY2l0eShyKT9yOmkub3BhY2l0eShuKSYmYT9uOnZvaWQgMH1lLmV4cG9ydHM9e2hvdmVyUG9pbnRzOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPWModCxlLHIsbik7aWYoaSl7dmFyIG89aS5jZCxzPW9bMF0udHJhY2UsbD1vW2kuaW5kZXhdO3JldHVybiBpLmNvbG9yPXUocyxsKSxhLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwiaG92ZXJJbmZvIikobCxzLGkpLFtpXX19LGhvdmVyT25CYXJzOmMsZ2V0VHJhY2VDb2xvcjp1fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vaGVscGVycyI6ODYyfV0sODY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY3Jvc3NUcmFjZURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKS5jcm9zc1RyYWNlRGVmYXVsdHMsc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLGNyb3NzVHJhY2VDYWxjOnQoIi4vY3Jvc3NfdHJhY2VfY2FsYyIpLmNyb3NzVHJhY2VDYWxjLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksYXJyYXlzVG9DYWxjZGF0YTp0KCIuL2FycmF5c190b19jYWxjZGF0YSIpLHBsb3Q6dCgiLi9wbG90IikucGxvdCxzdHlsZTp0KCIuL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIikuaG92ZXJQb2ludHMsZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJiYXIiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJiYXItbGlrZSIsImNhcnRlc2lhbiIsInN2ZyIsImJhciIsIm9yaWVudGVkIiwiZXJyb3JCYXJzT0siLCJzaG93TGVnZW5kIiwiem9vbVNjYWxlIl0sYW5pbWF0YWJsZTohMCxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4vYXJyYXlzX3RvX2NhbGNkYXRhIjo4NTUsIi4vYXR0cmlidXRlcyI6ODU2LCIuL2NhbGMiOjg1NywiLi9jcm9zc190cmFjZV9jYWxjIjo4NTksIi4vZGVmYXVsdHMiOjg2MCwiLi9ldmVudF9kYXRhIjo4NjEsIi4vaG92ZXIiOjg2MywiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODY1LCIuL2xheW91dF9kZWZhdWx0cyI6ODY2LCIuL3Bsb3QiOjg2NywiLi9zZWxlY3QiOjg2OCwiLi9zdHlsZSI6ODcwfV0sODY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YmFybW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsic3RhY2siLCJncm91cCIsIm92ZXJsYXkiLCJyZWxhdGl2ZSJdLGRmbHQ6Imdyb3VwIixlZGl0VHlwZToiY2FsYyJ9LGJhcm5vcm06e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIiIsImZyYWN0aW9uIiwicGVyY2VudCJdLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxiYXJnYXA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6ImNhbGMifSxiYXJncm91cGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifX19LHt9XSw4NjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIHMocixuKXtyZXR1cm4gaS5jb2VyY2UodCxlLG8scixuKX1mb3IodmFyIGw9ITEsYz0hMSx1PSExLGg9e30sZj1zKCJiYXJtb2RlIikscD0wO3A8ci5sZW5ndGg7cCsrKXt2YXIgZD1yW3BdO2lmKG4udHJhY2VJcyhkLCJiYXIiKSYmZC52aXNpYmxlKXtpZihsPSEwLCJncm91cCI9PT1mKXt2YXIgZz1kLnhheGlzK2QueWF4aXM7aFtnXSYmKHU9ITApLGhbZ109ITB9aWYoZC52aXNpYmxlJiYiaGlzdG9ncmFtIj09PWQudHlwZSkiY2F0ZWdvcnkiIT09YS5nZXRGcm9tSWQoe19mdWxsTGF5b3V0OmV9LGRbInYiPT09ZC5vcmllbnRhdGlvbj8ieGF4aXMiOiJ5YXhpcyJdKS50eXBlJiYoYz0hMCl9fWw/KCJvdmVybGF5IiE9PWYmJnMoImJhcm5vcm0iKSxzKCJiYXJnYXAiLGMmJiF1PzA6LjIpLHMoImJhcmdyb3VwZ2FwIikpOmRlbGV0ZSBlLmJhcm1vZGV9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo4NjV9XSw4Njc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksYz10KCIuLi8uLi9yZWdpc3RyeSIpLHU9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKS50aWNrVGV4dCxoPXQoIi4vdW5pZm9ybV90ZXh0IiksZj1oLnJlY29yZE1pblRleHRTaXplLHA9aC5jbGVhck1pblRleHRTaXplLGQ9dCgiLi9zdHlsZSIpLGc9dCgiLi9oZWxwZXJzIiksdj10KCIuL2NvbnN0YW50cyIpLG09dCgiLi9hdHRyaWJ1dGVzIikseT1tLnRleHQseD1tLnRleHRwb3NpdGlvbixiPXQoIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyIpLmFwcGVuZEFycmF5UG9pbnRWYWx1ZSxfPXYuVEVYVFBBRDtmdW5jdGlvbiB3KHQpe3JldHVybiB0LmlkfWZ1bmN0aW9uIGsodCl7aWYodC5pZHMpcmV0dXJuIHd9ZnVuY3Rpb24gVCh0LGUpe3JldHVybiB0PGU/MTotMX1mdW5jdGlvbiBNKHQsZSxyLG4pe3ZhciBhO3JldHVybiFlLnVuaWZvcm10ZXh0Lm1vZGUmJkEocik/KG4mJihhPW4oKSksdC50cmFuc2l0aW9uKCkuZHVyYXRpb24oci5kdXJhdGlvbikuZWFzZShyLmVhc2luZykuZWFjaCgiZW5kIixmdW5jdGlvbigpe2EmJmEoKX0pLmVhY2goImludGVycnVwdCIsZnVuY3Rpb24oKXthJiZhKCl9KSk6dH1mdW5jdGlvbiBBKHQpe3JldHVybiB0JiZ0LmR1cmF0aW9uPjB9ZnVuY3Rpb24gUyh0KXtyZXR1cm4iYXV0byI9PT10PzA6dH1mdW5jdGlvbiBFKHQsZSl7dmFyIHI9TWF0aC5QSS8xODAqZSxuPU1hdGguYWJzKE1hdGguc2luKHIpKSxhPU1hdGguYWJzKE1hdGguY29zKHIpKTtyZXR1cm57eDp0LndpZHRoKmErdC5oZWlnaHQqbix5OnQud2lkdGgqbit0LmhlaWdodCphfX1mdW5jdGlvbiBMKHQsZSxyLG4sYSxpKXt2YXIgbz0hIWkuaXNIb3Jpem9udGFsLHM9ISFpLmNvbnN0cmFpbmVkLGw9aS5hbmdsZXx8MCxjPWkuYW5jaG9yfHwiZW5kIix1PSJlbmQiPT09YyxoPSJzdGFydCI9PT1jLGY9KChpLmxlZnRUb1JpZ2h0fHwwKSsxKS8yLHA9MS1mLGQ9YS53aWR0aCxnPWEuaGVpZ2h0LHY9TWF0aC5hYnMoZS10KSxtPU1hdGguYWJzKG4tcikseT12PjIqXyYmbT4yKl8/XzowO3YtPTIqeSxtLT0yKnk7dmFyIHg9UyhsKTsiYXV0byIhPT1sfHxkPD12JiZnPD1tfHwhKGQ+dnx8Zz5tKXx8KGQ+bXx8Zz52KSYmZDxnPT12PG18fCh4Kz05MCk7dmFyIGI9RShhLHgpLHc9MTtzJiYodz1NYXRoLm1pbigxLHYvYi54LG0vYi55KSk7dmFyIGs9YS5sZWZ0KnArYS5yaWdodCpmLE09KGEudG9wK2EuYm90dG9tKS8yLEE9KHQrXykqcCsoZS1fKSpmLEw9KHIrbikvMixDPTAsUD0wO2lmKGh8fHUpe3ZhciBPPShvP2IueDpiLnkpLzIsej1vP1QodCxlKTpUKHIsbik7bz9oPyhBPXQreip5LEM9LXoqTyk6KEE9ZS16KnksQz16Kk8pOmg/KEw9cit6KnksUD0teipPKTooTD1uLXoqeSxQPXoqTyl9cmV0dXJue3RleHRYOmssdGV4dFk6TSx0YXJnZXRYOkEsdGFyZ2V0WTpMLGFuY2hvclg6QyxhbmNob3JZOlAsc2NhbGU6dyxyb3RhdGU6eH19ZS5leHBvcnRzPXtwbG90OmZ1bmN0aW9uKHQsZSxyLGgsdixtKXt2YXIgdz1lLnhheGlzLEM9ZS55YXhpcyxQPXQuX2Z1bGxMYXlvdXQ7dnx8KHY9e21vZGU6UC5iYXJtb2RlLG5vcm06UC5iYXJtb2RlLGdhcDpQLmJhcmdhcCxncm91cGdhcDpQLmJhcmdyb3VwZ2FwfSxwKCJiYXIiLFApKTt2YXIgTz1pLm1ha2VUcmFjZUdyb3VwcyhoLHIsInRyYWNlIGJhcnMiKS5lYWNoKGZ1bmN0aW9uKHIpe3ZhciBjPW4uc2VsZWN0KHRoaXMpLGg9clswXS50cmFjZSxwPSJ3YXRlcmZhbGwiPT09aC50eXBlLE89ImZ1bm5lbCI9PT1oLnR5cGUsej0iYmFyIj09PWgudHlwZXx8TyxJPTA7cCYmaC5jb25uZWN0b3IudmlzaWJsZSYmImJldHdlZW4iPT09aC5jb25uZWN0b3IubW9kZSYmKEk9aC5jb25uZWN0b3IubGluZS53aWR0aC8yKTt2YXIgRD0iaCI9PT1oLm9yaWVudGF0aW9uLFI9aS5lbnN1cmVTaW5nbGUoYywiZyIsInBvaW50cyIpLEY9ayhoKSxCPVIuc2VsZWN0QWxsKCJnLnBvaW50IikuZGF0YShpLmlkZW50aXR5LEYpO0IuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJwb2ludCIsITApLEIuZXhpdCgpLnJlbW92ZSgpLEIuZWFjaChmdW5jdGlvbihjLHApe3ZhciBrPW4uc2VsZWN0KHRoaXMpLE89ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9W10saT1bXSxvPW4/ZTpyLHM9bj9yOmU7cmV0dXJuIGFbMF09by5jMnAodC5zMCwhMCksaVswXT1zLmMycCh0LnAwLCEwKSxhWzFdPW8uYzJwKHQuczEsITApLGlbMV09cy5jMnAodC5wMSwhMCksbj9bYSxpXTpbaSxhXX0oYyx3LEMsRCksUj1PWzBdWzBdLEY9T1swXVsxXSxCPU9bMV1bMF0sTj1PWzFdWzFdLGo9IShSIT09RiYmQiE9PU4mJmEoUikmJmEoRikmJmEoQikmJmEoTikpO2omJnomJmcuZ2V0TGluZVdpZHRoKGgsYykmJihEP0YtUj09MDpOLUI9PTApJiYoaj0hMSksYy5pc0JsYW5rPWosaiYmRCYmKEY9UiksaiYmIUQmJihOPUIpO3ZhciBWLFUscT1EJiZSIT09RixIPSFEJiZCIT09TjtpZihJJiYhaiYmKEQ/KFItPVQoUixGKSpJLEYrPVQoUixGKSpJKTooQi09VChCLE4pKkksTis9VChCLE4pKkkpKSwid2F0ZXJmYWxsIj09PWgudHlwZSl7aWYoIWope3ZhciBHPWhbYy5kaXJdLm1hcmtlcjtWPUcubGluZS53aWR0aCxVPUcuY29sb3J9fWVsc2UgVj1nLmdldExpbmVXaWR0aChoLGMpLFU9Yy5tY3x8aC5tYXJrZXIuY29sb3I7dmFyIFk9bi5yb3VuZChWLzIlMSwyKTtmdW5jdGlvbiBXKHQpe3JldHVybiAwPT09di5nYXAmJjA9PT12Lmdyb3VwZ2FwP24ucm91bmQoTWF0aC5yb3VuZCh0KS1ZLDIpOnR9aWYoIXQuX2NvbnRleHQuc3RhdGljUGxvdCl7dmFyIFg9cy5vcGFjaXR5KFUpPDF8fFY+LjAxP1c6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5hYnModC1lKT49Mj9XKHQpOnQ+ZT9NYXRoLmNlaWwodCk6TWF0aC5mbG9vcih0KX07cSYmKFI9WChSLEYpLEY9WChGLFIpKSxIJiYoQj1YKEIsTiksTj1YKE4sQikpfXZhciBaPU0oaS5lbnN1cmVTaW5nbGUoaywicGF0aCIpLFAsdixtKTtpZihaLnN0eWxlKCJ2ZWN0b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIikuYXR0cigiZCIsIk0iK1IrIiwiK0IrIlYiK04rIkgiK0YrIlYiK0IrIloiKS5jYWxsKGwuc2V0Q2xpcFVybCxlLmxheWVyQ2xpcElkLHQpLCFQLnVuaWZvcm10ZXh0Lm1vZGUmJkEodikpe3ZhciBKPWwubWFrZVBvaW50U3R5bGVGbnMoaCk7bC5zaW5nbGVQb2ludFN0eWxlKGMsWixoLEosdCl9IWZ1bmN0aW9uKHQsZSxyLG4sYSxzLGMsaCxwLHYsbSl7dmFyIHcsaz1lLnhheGlzLEE9ZS55YXhpcyxDPXQuX2Z1bGxMYXlvdXQ7ZnVuY3Rpb24gUChlLHIsbil7dmFyIGE9aS5lbnN1cmVTaW5nbGUoZSwidGV4dCIpLnRleHQocikuYXR0cih7Y2xhc3M6ImJhcnRleHQgYmFydGV4dC0iK3csInRleHQtYW5jaG9yIjoibWlkZGxlIiwiZGF0YS1ub3RleCI6MX0pLmNhbGwobC5mb250LG4pLmNhbGwoby5jb252ZXJ0VG9Uc3BhbnMsdCk7cmV0dXJuIGF9dmFyIE89blswXS50cmFjZSx6PSJoIj09PU8ub3JpZW50YXRpb24sST1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBvLHM9ZVswXS50cmFjZTtyZXR1cm4gbz1zLnRleHR0ZW1wbGF0ZT9mdW5jdGlvbih0LGUscixuLGEpe3ZhciBvPWVbMF0udHJhY2Uscz1pLmNhc3RPcHRpb24obyxyLCJ0ZXh0dGVtcGxhdGUiKTtpZighcylyZXR1cm4iIjt2YXIgbCxjLGgsZixwPSJ3YXRlcmZhbGwiPT09by50eXBlLGQ9ImZ1bm5lbCI9PT1vLnR5cGU7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdShmLCt0LCEwKS50ZXh0fSJoIj09PW8ub3JpZW50YXRpb24/KGw9InkiLGM9YSxoPSJ4IixmPW4pOihsPSJ4IixjPW4saD0ieSIsZj1hKTt2YXIgdixtPWVbcl0seT17fTt5LmxhYmVsPW0ucCx5LmxhYmVsTGFiZWw9eVtsKyJMYWJlbCJdPSh2PW0ucCx1KGMsdiwhMCkudGV4dCk7dmFyIHg9aS5jYXN0T3B0aW9uKG8sbS5pLCJ0ZXh0Iik7KDA9PT14fHx4KSYmKHkudGV4dD14KSx5LnZhbHVlPW0ucyx5LnZhbHVlTGFiZWw9eVtoKyJMYWJlbCJdPWcobS5zKTt2YXIgXz17fTtiKF8sbyxtLmkpLHAmJih5LmRlbHRhPSttLnJhd1N8fG0ucyx5LmRlbHRhTGFiZWw9Zyh5LmRlbHRhKSx5LmZpbmFsPW0udix5LmZpbmFsTGFiZWw9Zyh5LmZpbmFsKSx5LmluaXRpYWw9eS5maW5hbC15LmRlbHRhLHkuaW5pdGlhbExhYmVsPWcoeS5pbml0aWFsKSksZCYmKHkudmFsdWU9bS5zLHkudmFsdWVMYWJlbD1nKHkudmFsdWUpLHkucGVyY2VudEluaXRpYWw9bS5iZWdSLHkucGVyY2VudEluaXRpYWxMYWJlbD1pLmZvcm1hdFBlcmNlbnQobS5iZWdSKSx5LnBlcmNlbnRQcmV2aW91cz1tLmRpZlIseS5wZXJjZW50UHJldmlvdXNMYWJlbD1pLmZvcm1hdFBlcmNlbnQobS5kaWZSKSx5LnBlcmNlbnRUb3RhbD1tLnN1bVIseS5wZXJjZW5Ub3RhbExhYmVsPWkuZm9ybWF0UGVyY2VudChtLnN1bVIpKTt2YXIgdz1pLmNhc3RPcHRpb24obyxtLmksImN1c3RvbWRhdGEiKTtyZXR1cm4gdyYmKHkuY3VzdG9tZGF0YT13KSxpLnRleHR0ZW1wbGF0ZVN0cmluZyhzLHksdC5fZDNsb2NhbGUsXyx5LG8uX21ldGF8fHt9KX0odCxlLHIsbixhKTpzLnRleHRpbmZvP2Z1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRbMF0udHJhY2Usbz0iaCI9PT1hLm9yaWVudGF0aW9uLHM9IndhdGVyZmFsbCI9PT1hLnR5cGUsbD0iZnVubmVsIj09PWEudHlwZTtmdW5jdGlvbiBjKHQpe3ZhciBlPW8/cjpuO3JldHVybiB1KGUsK3QsITApLnRleHR9dmFyIGgsZixwPWEudGV4dGluZm8sZD10W2VdLGc9cC5zcGxpdCgiKyIpLHY9W10sbT1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PWcuaW5kZXhPZih0KX07aWYobSgibGFiZWwiKSYmdi5wdXNoKChmPXRbZV0ucCx1KG8/bjpyLGYsITApLnRleHQpKSxtKCJ0ZXh0IikmJigwPT09KGg9aS5jYXN0T3B0aW9uKGEsZC5pLCJ0ZXh0IikpfHxoKSYmdi5wdXNoKGgpLHMpe3ZhciB5PStkLnJhd1N8fGQucyx4PWQudixiPXgteTttKCJpbml0aWFsIikmJnYucHVzaChjKGIpKSxtKCJkZWx0YSIpJiZ2LnB1c2goYyh5KSksbSgiZmluYWwiKSYmdi5wdXNoKGMoeCkpfWlmKGwpe20oInZhbHVlIikmJnYucHVzaChjKGQucykpO3ZhciBfPTA7bSgicGVyY2VudCBpbml0aWFsIikmJl8rKyxtKCJwZXJjZW50IHByZXZpb3VzIikmJl8rKyxtKCJwZXJjZW50IHRvdGFsIikmJl8rKzt2YXIgdz1fPjE7bSgicGVyY2VudCBpbml0aWFsIikmJihoPWkuZm9ybWF0UGVyY2VudChkLmJlZ1IpLHcmJihoKz0iIG9mIGluaXRpYWwiKSx2LnB1c2goaCkpLG0oInBlcmNlbnQgcHJldmlvdXMiKSYmKGg9aS5mb3JtYXRQZXJjZW50KGQuZGlmUiksdyYmKGgrPSIgb2YgcHJldmlvdXMiKSx2LnB1c2goaCkpLG0oInBlcmNlbnQgdG90YWwiKSYmKGg9aS5mb3JtYXRQZXJjZW50KGQuc3VtUiksdyYmKGgrPSIgb2YgdG90YWwiKSx2LnB1c2goaCkpfXJldHVybiB2LmpvaW4oIjxicj4iKX0oZSxyLG4sYSk6Zy5nZXRWYWx1ZShzLnRleHQsciksZy5jb2VyY2VTdHJpbmcoeSxvKX0oQyxuLGEsayxBKTt3PWZ1bmN0aW9uKHQsZSl7dmFyIHI9Zy5nZXRWYWx1ZSh0LnRleHRwb3NpdGlvbixlKTtyZXR1cm4gZy5jb2VyY2VFbnVtZXJhdGVkKHgscil9KE8sYSk7dmFyIEQ9InN0YWNrIj09PXYubW9kZXx8InJlbGF0aXZlIj09PXYubW9kZSxSPW5bYV0sRj0hRHx8Ui5fb3V0bW9zdDtpZihJJiYibm9uZSIhPT13JiYoIVIuaXNCbGFuayYmcyE9PWMmJmghPT1wfHwiYXV0byIhPT13JiYiaW5zaWRlIiE9PXcpKXt2YXIgQj1DLmZvbnQsTj1kLmdldEJhckNvbG9yKG5bYV0sTyksaj1kLmdldEluc2lkZVRleHRGb250KE8sYSxCLE4pLFY9ZC5nZXRPdXRzaWRlVGV4dEZvbnQoTyxhLEIpLFU9ci5kYXR1bSgpO3o/ImxvZyI9PT1rLnR5cGUmJlUuczA8PTAmJihzPWsucmFuZ2VbMF08ay5yYW5nZVsxXT8wOmsuX2xlbmd0aCk6ImxvZyI9PT1BLnR5cGUmJlUuczA8PTAmJihoPUEucmFuZ2VbMF08QS5yYW5nZVsxXT9BLl9sZW5ndGg6MCk7dmFyIHEsSCxHLFksVyxYPU1hdGguYWJzKGMtcyktMipfLFo9TWF0aC5hYnMocC1oKS0yKl87aWYoIm91dHNpZGUiPT09dyYmKEZ8fFIuaGFzQnx8KHc9Imluc2lkZSIpKSwiYXV0byI9PT13KWlmKEYpe3c9Imluc2lkZSIsVz1pLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0LGopLHE9UChyLEksVyksSD1sLmJCb3gocS5ub2RlKCkpLEc9SC53aWR0aCxZPUguaGVpZ2h0O3ZhciBKPUc+MCYmWT4wLEs9Rzw9WCYmWTw9WixRPUc8PVomJlk8PVgsJD16P1g+PUcqKFovWSk6Wj49WSooWC9HKTtKJiYoS3x8UXx8JCk/dz0iaW5zaWRlIjoodz0ib3V0c2lkZSIscS5yZW1vdmUoKSxxPW51bGwpfWVsc2Ugdz0iaW5zaWRlIjtpZighcSl7Vz1pLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0LCJvdXRzaWRlIj09PXc/VjpqKTt2YXIgdHQ9KHE9UChyLEksVykpLmF0dHIoInRyYW5zZm9ybSIpO2lmKHEuYXR0cigidHJhbnNmb3JtIiwiIiksSD1sLmJCb3gocS5ub2RlKCkpLEc9SC53aWR0aCxZPUguaGVpZ2h0LHEuYXR0cigidHJhbnNmb3JtIix0dCksRzw9MHx8WTw9MClyZXR1cm4gdm9pZCBxLnJlbW92ZSgpfXZhciBldCxydCxudD1PLnRleHRhbmdsZTsib3V0c2lkZSI9PT13PyhydD0iYm90aCI9PT1PLmNvbnN0cmFpbnRleHR8fCJvdXRzaWRlIj09PU8uY29uc3RyYWludGV4dCxldD1mdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG8scz0hIWkuaXNIb3Jpem9udGFsLGw9ISFpLmNvbnN0cmFpbmVkLGM9aS5hbmdsZXx8MCx1PWEud2lkdGgsaD1hLmhlaWdodCxmPU1hdGguYWJzKGUtdCkscD1NYXRoLmFicyhuLXIpO289cz9wPjIqXz9fOjA6Zj4yKl8/XzowO3ZhciBkPTE7bCYmKGQ9cz9NYXRoLm1pbigxLHAvaCk6TWF0aC5taW4oMSxmL3UpKTt2YXIgZz1TKGMpLHY9RShhLGcpLG09KHM/di54OnYueSkvMix5PShhLmxlZnQrYS5yaWdodCkvMix4PShhLnRvcCthLmJvdHRvbSkvMixiPSh0K2UpLzIsdz0ocituKS8yLGs9MCxNPTAsQT1zP1QoZSx0KTpUKHIsbik7cmV0dXJuIHM/KGI9ZS1BKm8saz1BKm0pOih3PW4rQSpvLE09LUEqbSkse3RleHRYOnksdGV4dFk6eCx0YXJnZXRYOmIsdGFyZ2V0WTp3LGFuY2hvclg6ayxhbmNob3JZOk0sc2NhbGU6ZCxyb3RhdGU6Z319KHMsYyxoLHAsSCx7aXNIb3Jpem9udGFsOnosY29uc3RyYWluZWQ6cnQsYW5nbGU6bnR9KSk6KHJ0PSJib3RoIj09PU8uY29uc3RyYWludGV4dHx8Imluc2lkZSI9PT1PLmNvbnN0cmFpbnRleHQsZXQ9TChzLGMsaCxwLEgse2lzSG9yaXpvbnRhbDp6LGNvbnN0cmFpbmVkOnJ0LGFuZ2xlOm50LGFuY2hvcjpPLmluc2lkZXRleHRhbmNob3J9KSksZXQuZm9udFNpemU9Vy5zaXplLGYoTy50eXBlLGV0LEMpLFIudHJhbnNmb3JtPWV0LE0ocSxDLHYsbSkuYXR0cigidHJhbnNmb3JtIixpLmdldFRleHRUcmFuc2Zvcm0oZXQpKX1lbHNlIHIuc2VsZWN0KCJ0ZXh0IikucmVtb3ZlKCl9KHQsZSxrLHIscCxSLEYsQixOLHYsbSksZS5sYXllckNsaXBJZCYmbC5oaWRlT3V0c2lkZVJhbmdlUG9pbnQoYyxrLnNlbGVjdCgidGV4dCIpLHcsQyxoLnhjYWxlbmRhcixoLnljYWxlbmRhcil9KTt2YXIgTj0hMT09PWguY2xpcG9uYXhpcztsLnNldENsaXBVcmwoYyxOP251bGw6ZS5sYXllckNsaXBJZCx0KX0pO2MuZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJwbG90IikodCxPLGUsdil9LHRvTW92ZUluc2lkZUJhcjpMfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiOjYyNywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2F0dHJpYnV0ZXMiOjg1NiwiLi9jb25zdGFudHMiOjg1OCwiLi9oZWxwZXJzIjo4NjIsIi4vc3R5bGUiOjg3MCwiLi91bmlmb3JtX3RleHQiOjg3MixkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjh9XSw4Njg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGEpe3ZhciBpPWUuYzJwKG4/dC5zMDp0LnAwLCEwKSxvPWUuYzJwKG4/dC5zMTp0LnAxLCEwKSxzPXIuYzJwKG4/dC5wMDp0LnMwLCEwKSxsPXIuYzJwKG4/dC5wMTp0LnMxLCEwKTtyZXR1cm4gYT9bKGkrbykvMiwocytsKS8yXTpuP1tvLChzK2wpLzJdOlsoaStvKS8yLGxdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGE9dC5jZCxpPXQueGF4aXMsbz10LnlheGlzLHM9YVswXS50cmFjZSxsPSJmdW5uZWwiPT09cy50eXBlLGM9ImgiPT09cy5vcmllbnRhdGlvbix1PVtdO2lmKCExPT09ZSlmb3Iocj0wO3I8YS5sZW5ndGg7cisrKWFbcl0uc2VsZWN0ZWQ9MDtlbHNlIGZvcihyPTA7cjxhLmxlbmd0aDtyKyspe3ZhciBoPWFbcl0sZj0iY3QiaW4gaD9oLmN0Om4oaCxpLG8sYyxsKTtlLmNvbnRhaW5zKGYsITEscix0KT8odS5wdXNoKHtwb2ludE51bWJlcjpyLHg6aS5jMmQoaC54KSx5Om8uYzJkKGgueSl9KSxoLnNlbGVjdGVkPTEpOmguc2VsZWN0ZWQ9MH1yZXR1cm4gdX19LHt9XSw4Njk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWk7dmFyIG49dCgiLi4vLi4vbGliIikuZGlzdGluY3RWYWxzLGE9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtmdW5jdGlvbiBpKHQsZSl7dGhpcy50cmFjZXM9dCx0aGlzLnNlcE5lZ1ZhbD1lLnNlcE5lZ1ZhbCx0aGlzLm92ZXJsYXBOb01lcmdlPWUub3ZlcmxhcE5vTWVyZ2U7Zm9yKHZhciByPTEvMCxpPVtdLG89MDtvPHQubGVuZ3RoO28rKyl7Zm9yKHZhciBzPXRbb10sbD0wO2w8cy5sZW5ndGg7bCsrKXt2YXIgYz1zW2xdO2MucCE9PWEmJmkucHVzaChjLnApfXNbMF0mJnNbMF0ud2lkdGgxJiYocj1NYXRoLm1pbihzWzBdLndpZHRoMSxyKSl9dGhpcy5wb3NpdGlvbnM9aTt2YXIgdT1uKGkpO3RoaXMuZGlzdGluY3RQb3NpdGlvbnM9dS52YWxzLDE9PT11LnZhbHMubGVuZ3RoJiZyIT09MS8wP3RoaXMubWluRGlmZj1yOnRoaXMubWluRGlmZj1NYXRoLm1pbih1Lm1pbkRpZmYsciksdGhpcy5iaW5XaWR0aD10aGlzLm1pbkRpZmYsdGhpcy5iaW5zPXt9fWkucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuZ2V0TGFiZWwodCxlKSxuPXRoaXMuYmluc1tyXXx8MDtyZXR1cm4gdGhpcy5iaW5zW3JdPW4rZSxufSxpLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmdldExhYmVsKHQsZSk7cmV0dXJuIHRoaXMuYmluc1tyXXx8MH0saS5wcm90b3R5cGUuZ2V0TGFiZWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4oZTwwJiZ0aGlzLnNlcE5lZ1ZhbD8idiI6Il4iKSsodGhpcy5vdmVybGFwTm9NZXJnZT90Ok1hdGgucm91bmQodC90aGlzLmJpbldpZHRoKSl9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTd9XSw4NzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi8uLi9yZWdpc3RyeSIpLGw9dCgiLi91bmlmb3JtX3RleHQiKS5yZXNpemVUZXh0LGM9dCgiLi9hdHRyaWJ1dGVzIiksdT1jLnRleHRmb250LGg9Yy5pbnNpZGV0ZXh0Zm9udCxmPWMub3V0c2lkZXRleHRmb250LHA9dCgiLi9oZWxwZXJzIik7ZnVuY3Rpb24gZCh0LGUscil7aS5wb2ludFN0eWxlKHQuc2VsZWN0QWxsKCJwYXRoIiksZSxyKSxnKHQsZSxyKX1mdW5jdGlvbiBnKHQsZSxyKXt0LnNlbGVjdEFsbCgidGV4dCIpLmVhY2goZnVuY3Rpb24odCl7dmFyIGE9bi5zZWxlY3QodGhpcykscz1vLmVuc3VyZVVuaWZvcm1Gb250U2l6ZShyLHYoYSx0LGUscikpO2kuZm9udChhLHMpfSl9ZnVuY3Rpb24gdih0LGUscixuKXt2YXIgYT1uLl9mdWxsTGF5b3V0LmZvbnQsaT1yLnRleHRmb250O2lmKHQuY2xhc3NlZCgiYmFydGV4dC1pbnNpZGUiKSl7dmFyIG89XyhlLHIpO2k9eShyLGUuaSxhLG8pfWVsc2UgdC5jbGFzc2VkKCJiYXJ0ZXh0LW91dHNpZGUiKSYmKGk9eChyLGUuaSxhKSk7cmV0dXJuIGl9ZnVuY3Rpb24gbSh0LGUscil7cmV0dXJuIGIodSx0LnRleHRmb250LGUscil9ZnVuY3Rpb24geSh0LGUscixuKXt2YXIgaT1tKHQsZSxyKTtyZXR1cm4odm9pZCAwPT09dC5faW5wdXQudGV4dGZvbnR8fHZvaWQgMD09PXQuX2lucHV0LnRleHRmb250LmNvbG9yfHxBcnJheS5pc0FycmF5KHQudGV4dGZvbnQuY29sb3IpJiZ2b2lkIDA9PT10LnRleHRmb250LmNvbG9yW2VdKSYmKGk9e2NvbG9yOmEuY29udHJhc3QobiksZmFtaWx5OmkuZmFtaWx5LHNpemU6aS5zaXplfSksYihoLHQuaW5zaWRldGV4dGZvbnQsZSxpKX1mdW5jdGlvbiB4KHQsZSxyKXt2YXIgbj1tKHQsZSxyKTtyZXR1cm4gYihmLHQub3V0c2lkZXRleHRmb250LGUsbil9ZnVuY3Rpb24gYih0LGUscixuKXtlPWV8fHt9O3ZhciBhPXAuZ2V0VmFsdWUoZS5mYW1pbHksciksaT1wLmdldFZhbHVlKGUuc2l6ZSxyKSxvPXAuZ2V0VmFsdWUoZS5jb2xvcixyKTtyZXR1cm57ZmFtaWx5OnAuY29lcmNlU3RyaW5nKHQuZmFtaWx5LGEsbi5mYW1pbHkpLHNpemU6cC5jb2VyY2VOdW1iZXIodC5zaXplLGksbi5zaXplKSxjb2xvcjpwLmNvZXJjZUNvbG9yKHQuY29sb3IsbyxuLmNvbG9yKX19ZnVuY3Rpb24gXyh0LGUpe3JldHVybiJ3YXRlcmZhbGwiPT09ZS50eXBlP2VbdC5kaXJdLm1hcmtlci5jb2xvcjp0Lm1jfHxlLm1hcmtlci5jb2xvcn1lLmV4cG9ydHM9e3N0eWxlOmZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiZy5iYXJsYXllciIpLnNlbGVjdEFsbCgiZy50cmFjZSIpO2wodCxlLCJiYXIiKTt2YXIgcj1lLnNpemUoKSxhPXQuX2Z1bGxMYXlvdXQ7ZS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pLmVhY2goZnVuY3Rpb24odCl7KCJzdGFjayI9PT1hLmJhcm1vZGUmJnI+MXx8MD09PWEuYmFyZ2FwJiYwPT09YS5iYXJncm91cGdhcCYmIXRbMF0udHJhY2UubWFya2VyLmxpbmUud2lkdGgpJiZuLnNlbGVjdCh0aGlzKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIil9KSxlLnNlbGVjdEFsbCgiZy5wb2ludHMiKS5lYWNoKGZ1bmN0aW9uKGUpe2Qobi5zZWxlY3QodGhpcyksZVswXS50cmFjZSx0KX0pLHMuZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJzdHlsZSIpKGUpfSxzdHlsZVRleHRQb2ludHM6ZyxzdHlsZU9uU2VsZWN0OmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1lWzBdLnRyYWNlO2Euc2VsZWN0ZWRwb2ludHM/ZnVuY3Rpb24odCxlLHIpe2kuc2VsZWN0ZWRQb2ludFN0eWxlKHQuc2VsZWN0QWxsKCJwYXRoIiksZSksZnVuY3Rpb24odCxlLHIpe3QuZWFjaChmdW5jdGlvbih0KXt2YXIgYSxzPW4uc2VsZWN0KHRoaXMpO2lmKHQuc2VsZWN0ZWQpe2E9by5lbnN1cmVVbmlmb3JtRm9udFNpemUocix2KHMsdCxlLHIpKTt2YXIgbD1lLnNlbGVjdGVkLnRleHRmb250JiZlLnNlbGVjdGVkLnRleHRmb250LmNvbG9yO2wmJihhLmNvbG9yPWwpLGkuZm9udChzLGEpfWVsc2UgaS5zZWxlY3RlZFRleHRTdHlsZShzLGUpfSl9KHQuc2VsZWN0QWxsKCJ0ZXh0IiksZSxyKX0ocixhLHQpOihkKHIsYSx0KSxzLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwic3R5bGUiKShyKSl9LGdldEluc2lkZVRleHRGb250OnksZ2V0T3V0c2lkZVRleHRGb250OngsZ2V0QmFyQ29sb3I6XyxyZXNpemVUZXh0Omx9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2F0dHJpYnV0ZXMiOjg1NiwiLi9oZWxwZXJzIjo4NjIsIi4vdW5pZm9ybV90ZXh0Ijo4NzIsZDM6MTY1fV0sODcxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvLHMpe3IoIm1hcmtlci5jb2xvciIsbyksYSh0LCJtYXJrZXIiKSYmaSh0LGUscyxyLHtwcmVmaXg6Im1hcmtlci4iLGNMZXR0ZXI6ImMifSkscigibWFya2VyLmxpbmUuY29sb3IiLG4uZGVmYXVsdExpbmUpLGEodCwibWFya2VyLmxpbmUiKSYmaSh0LGUscyxyLHtwcmVmaXg6Im1hcmtlci5saW5lLiIsY0xldHRlcjoiYyJ9KSxyKCJtYXJrZXIubGluZS53aWR0aCIpLHIoIm1hcmtlci5vcGFjaXR5Iikscigic2VsZWN0ZWQubWFya2VyLmNvbG9yIikscigidW5zZWxlY3RlZC5tYXJrZXIuY29sb3IiKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hlbHBlcnMiOjYwM31dLDg3MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIik7ZnVuY3Rpb24gaSh0KXtyZXR1cm4iXyIrdCsiVGV4dF9taW5zaXplIn1lLmV4cG9ydHM9e3JlY29yZE1pblRleHRTaXplOmZ1bmN0aW9uKHQsZSxyKXtpZihyLnVuaWZvcm10ZXh0Lm1vZGUpe3ZhciBuPWkodCksYT1yLnVuaWZvcm10ZXh0Lm1pbnNpemUsbz1lLnNjYWxlKmUuZm9udFNpemU7ZS5oaWRlPW88YSxyW25dPXJbbl18fDEvMCxlLmhpZGV8fChyW25dPU1hdGgubWluKHJbbl0sTWF0aC5tYXgobyxhKSkpfX0sY2xlYXJNaW5UZXh0U2l6ZTpmdW5jdGlvbih0LGUpe2VbaSh0KV09dm9pZCAwfSxyZXNpemVUZXh0OmZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10Ll9mdWxsTGF5b3V0LG89aVsiXyIrcisiVGV4dF9taW5zaXplIl07aWYobyl7dmFyIHMsbD0iaGlkZSI9PT1pLnVuaWZvcm10ZXh0Lm1vZGU7c3dpdGNoKHIpe2Nhc2UiZnVubmVsYXJlYSI6Y2FzZSJwaWUiOmNhc2Uic3VuYnVyc3QiOnM9Imcuc2xpY2UiO2JyZWFrO2Nhc2UidHJlZW1hcCI6cz0iZy5zbGljZSwgZy5wYXRoYmFyIjticmVhaztkZWZhdWx0OnM9ImcucG9pbnRzID4gZy5wb2ludCJ9ZS5zZWxlY3RBbGwocykuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10LnRyYW5zZm9ybTtlJiYoZS5zY2FsZT1sJiZlLmhpZGU/MDpvL2UuZm9udFNpemUsbi5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0IikuYXR0cigidHJhbnNmb3JtIixhLmdldFRleHRUcmFuc2Zvcm0oZSkpKX0pfX19fSx7Ii4uLy4uL2xpYiI6NzE3LGQzOjE2NX1dLDg3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsaT10KCIuLi9zY2F0dGVycG9sYXIvYXR0cmlidXRlcyIpLG89dCgiLi4vYmFyL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e3I6aS5yLHRoZXRhOmkudGhldGEscjA6aS5yMCxkcjppLmRyLHRoZXRhMDppLnRoZXRhMCxkdGhldGE6aS5kdGhldGEsdGhldGF1bml0OmkudGhldGF1bml0LGJhc2U6YSh7fSxvLmJhc2Use30pLG9mZnNldDphKHt9LG8ub2Zmc2V0LHt9KSx3aWR0aDphKHt9LG8ud2lkdGgse30pLHRleHQ6YSh7fSxvLnRleHQse30pLGhvdmVydGV4dDphKHt9LG8uaG92ZXJ0ZXh0LHt9KSxtYXJrZXI6by5tYXJrZXIsaG92ZXJpbmZvOmkuaG92ZXJpbmZvLGhvdmVydGVtcGxhdGU6bigpLHNlbGVjdGVkOm8uc2VsZWN0ZWQsdW5zZWxlY3RlZDpvLnVuc2VsZWN0ZWR9fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9iYXIvYXR0cmlidXRlcyI6ODU2LCIuLi9zY2F0dGVycG9sYXIvYXR0cmlidXRlcyI6MTE5M31dLDg3NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLGk9dCgiLi4vYmFyL2FycmF5c190b19jYWxjZGF0YSIpLG89dCgiLi4vYmFyL2Nyb3NzX3RyYWNlX2NhbGMiKS5zZXRHcm91cFBvc2l0aW9ucyxzPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxsPXQoIi4uLy4uL3JlZ2lzdHJ5IikudHJhY2VJcyxjPXQoIi4uLy4uL2xpYiIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXtjYWxjOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuX2Z1bGxMYXlvdXQsbz1lLnN1YnBsb3QsbD1yW29dLnJhZGlhbGF4aXMsYz1yW29dLmFuZ3VsYXJheGlzLHU9bC5tYWtlQ2FsY2RhdGEoZSwiciIpLGg9Yy5tYWtlQ2FsY2RhdGEoZSwidGhldGEiKSxmPWUuX2xlbmd0aCxwPW5ldyBBcnJheShmKSxkPXUsZz1oLHY9MDt2PGY7disrKXBbdl09e3A6Z1t2XSxzOmRbdl19O2Z1bmN0aW9uIG0odCl7dmFyIHI9ZVt0XTt2b2lkIDAhPT1yJiYoZVsiXyIrdF09QXJyYXkuaXNBcnJheShyKT9jLm1ha2VDYWxjZGF0YShlLHQpOmMuZDJjKHIsZS50aGV0YXVuaXQpKX1yZXR1cm4ibGluZWFyIj09PWMudHlwZSYmKG0oIndpZHRoIiksbSgib2Zmc2V0IikpLG4oZSwibWFya2VyIikmJmEodCxlLHt2YWxzOmUubWFya2VyLmNvbG9yLGNvbnRhaW5lclN0cjoibWFya2VyIixjTGV0dGVyOiJjIn0pLG4oZSwibWFya2VyLmxpbmUiKSYmYSh0LGUse3ZhbHM6ZS5tYXJrZXIubGluZS5jb2xvcixjb250YWluZXJTdHI6Im1hcmtlci5saW5lIixjTGV0dGVyOiJjIn0pLGkocCxlKSxzKHAsZSkscH0sY3Jvc3NUcmFjZUNhbGM6ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj10LmNhbGNkYXRhLGE9W10saT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgcz1uW2ldLHU9c1swXS50cmFjZTshMD09PXUudmlzaWJsZSYmbCh1LCJiYXIiKSYmdS5zdWJwbG90PT09ciYmYS5wdXNoKHMpfXZhciBoPWMoe30sZS5yYWRpYWxheGlzLHtfaWQ6IngifSksZj1lLmFuZ3VsYXJheGlzO28odCxmLGgsYSx7bW9kZTplLmJhcm1vZGUsbm9ybTplLmJhcm5vcm0sZ2FwOmUuYmFyZ2FwLGdyb3VwZ2FwOmUuYmFyZ3JvdXBnYXB9KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjo2MDAsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9iYXIvYXJyYXlzX3RvX2NhbGNkYXRhIjo4NTUsIi4uL2Jhci9jcm9zc190cmFjZV9jYWxjIjo4NTksIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iOjExMjJ9XSw4NzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVycG9sYXIvZGVmYXVsdHMiKS5oYW5kbGVSVGhldGFEZWZhdWx0cyxpPXQoIi4uL2Jhci9zdHlsZV9kZWZhdWx0cyIpLG89dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe2Z1bmN0aW9uIGwocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixhKX1hKHQsZSxzLGwpPyhsKCJ0aGV0YXVuaXQiKSxsKCJiYXNlIiksbCgib2Zmc2V0IiksbCgid2lkdGgiKSxsKCJ0ZXh0IiksbCgiaG92ZXJ0ZXh0IiksbCgiaG92ZXJ0ZW1wbGF0ZSIpLGkodCxlLGwscixzKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxsKSk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjcxNywiLi4vYmFyL3N0eWxlX2RlZmF1bHRzIjo4NzEsIi4uL3NjYXR0ZXJwb2xhci9kZWZhdWx0cyI6MTE5NSwiLi9hdHRyaWJ1dGVzIjo4NzN9XSw4NzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi9iYXIvaG92ZXIiKS5nZXRUcmFjZUNvbG9yLG89YS5maWxsVGV4dCxzPXQoIi4uL3NjYXR0ZXJwb2xhci9ob3ZlciIpLm1ha2VIb3ZlclBvaW50VGV4dCxsPXQoIi4uLy4uL3Bsb3RzL3BvbGFyL2hlbHBlcnMiKS5pc1B0SW5zaWRlUG9seWdvbjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBjPXQuY2QsdT1jWzBdLnRyYWNlLGg9dC5zdWJwbG90LGY9aC5yYWRpYWxBeGlzLHA9aC5hbmd1bGFyQXhpcyxkPWgudmFuZ2xlcyxnPWQ/bDphLmlzUHRJbnNpZGVTZWN0b3Isdj10Lm1heEhvdmVyRGlzdGFuY2UsbT1wLl9wZXJpb2R8fDIqTWF0aC5QSSx5PU1hdGguYWJzKGYuZzJwKE1hdGguc3FydChlKmUrcipyKSkpLHg9TWF0aC5hdGFuMihyLGUpO2YucmFuZ2VbMF0+Zi5yYW5nZVsxXSYmKHgrPU1hdGguUEkpO2lmKG4uZ2V0Q2xvc2VzdChjLGZ1bmN0aW9uKHQpe3JldHVybiBnKHkseCxbdC5ycDAsdC5ycDFdLFt0LnRoZXRhZzAsdC50aGV0YWcxXSxkKT92K01hdGgubWluKDEsTWF0aC5hYnModC50aGV0YWcxLXQudGhldGFnMCkvbSktMSsodC5ycDEteSkvKHQucnAxLXQucnAwKS0xOjEvMH0sdCksITEhPT10LmluZGV4KXt2YXIgYj1jW3QuaW5kZXhdO3QueDA9dC54MT1iLmN0WzBdLHQueTA9dC55MT1iLmN0WzFdO3ZhciBfPWEuZXh0ZW5kRmxhdCh7fSxiLHtyOmIucyx0aGV0YTpiLnB9KTtyZXR1cm4gbyhiLHUsdCkscyhfLHUsaCx0KSx0LmhvdmVydGVtcGxhdGU9dS5ob3ZlcnRlbXBsYXRlLHQuY29sb3I9aSh1LGIpLHQueExhYmVsVmFsPXQueUxhYmVsVmFsPXZvaWQgMCxiLnM8MCYmKHQuaWRlYWxBbGlnbj0ibGVmdCIpLFt0XX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL3BvbGFyL2hlbHBlcnMiOjgyOCwiLi4vYmFyL2hvdmVyIjo4NjMsIi4uL3NjYXR0ZXJwb2xhci9ob3ZlciI6MTE5N31dLDg3NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJiYXJwb2xhciIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvcG9sYXIiKSxjYXRlZ29yaWVzOlsicG9sYXIiLCJiYXIiLCJzaG93TGVnZW5kIl0sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi9jYWxjIikuY3Jvc3NUcmFjZUNhbGMscGxvdDp0KCIuL3Bsb3QiKSxjb2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIuLi9zY2F0dGVycG9sYXIvZm9ybWF0X2xhYmVscyIpLHN0eWxlOnQoIi4uL2Jhci9zdHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgiLi4vYmFyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4uL2Jhci9zZWxlY3QiKSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9wb2xhciI6ODI5LCIuLi9iYXIvc2VsZWN0Ijo4NjgsIi4uL2Jhci9zdHlsZSI6ODcwLCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciI6MTEzOCwiLi4vc2NhdHRlcnBvbGFyL2Zvcm1hdF9sYWJlbHMiOjExOTYsIi4vYXR0cmlidXRlcyI6ODczLCIuL2NhbGMiOjg3NCwiLi9kZWZhdWx0cyI6ODc1LCIuL2hvdmVyIjo4NzYsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjg3OCwiLi9sYXlvdXRfZGVmYXVsdHMiOjg3OSwiLi9wbG90Ijo4ODB9XSw4Nzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtiYXJtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzdGFjayIsIm92ZXJsYXkiXSxkZmx0OiJzdGFjayIsZWRpdFR5cGU6ImNhbGMifSxiYXJnYXA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDouMSxtaW46MCxtYXg6MSxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDg3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBpLG89e307ZnVuY3Rpb24gcyhyLG8pe3JldHVybiBuLmNvZXJjZSh0W2ldfHx7fSxlW2ldLGEscixvKX1mb3IodmFyIGw9MDtsPHIubGVuZ3RoO2wrKyl7dmFyIGM9cltsXTsiYmFycG9sYXIiPT09Yy50eXBlJiYhMD09PWMudmlzaWJsZSYmKG9baT1jLnN1YnBsb3RdfHwocygiYmFybW9kZSIpLHMoImJhcmdhcCIpLG9baV09MSkpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjg3OH1dLDg4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIikscz10KCIuLi8uLi9wbG90cy9wb2xhci9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbD1lLnhheGlzLGM9ZS55YXhpcyx1PWUucmFkaWFsQXhpcyxoPWUuYW5ndWxhckF4aXMsZj1mdW5jdGlvbih0KXt2YXIgZT10LmN4eCxyPXQuY3l5O2lmKHQudmFuZ2xlcylyZXR1cm4gZnVuY3Rpb24obixhLG8sbCl7dmFyIGMsdTtpLmFuZ2xlRGVsdGEobyxsKT4wPyhjPW8sdT1sKTooYz1sLHU9byk7dmFyIGg9cy5maW5kRW5jbG9zaW5nVmVydGV4QW5nbGVzKGMsdC52YW5nbGVzKVswXSxmPXMuZmluZEVuY2xvc2luZ1ZlcnRleEFuZ2xlcyh1LHQudmFuZ2xlcylbMV0scD1baCwoYyt1KS8yLGZdO3JldHVybiBzLnBhdGhQb2x5Z29uQW5udWx1cyhuLGEsYyx1LHAsZSxyKX07cmV0dXJuIGZ1bmN0aW9uKHQsbixhLG8pe3JldHVybiBpLnBhdGhBbm51bHVzKHQsbixhLG8sZSxyKX19KGUpLHA9ZS5sYXllcnMuZnJvbnRwbG90LnNlbGVjdCgiZy5iYXJsYXllciIpO2kubWFrZVRyYWNlR3JvdXBzKHAsciwidHJhY2UgYmFycyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxzPWkuZW5zdXJlU2luZ2xlKHIsImciLCJwb2ludHMiKS5zZWxlY3RBbGwoImcucG9pbnQiKS5kYXRhKGkuaWRlbnRpdHkpO3MuZW50ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLnN0eWxlKCJzdHJva2UtbWl0ZXJsaW1pdCIsMikuY2xhc3NlZCgicG9pbnQiLCEwKSxzLmV4aXQoKS5yZW1vdmUoKSxzLmVhY2goZnVuY3Rpb24odCl7dmFyIGUscj1uLnNlbGVjdCh0aGlzKSxvPXQucnAwPXUuYzJwKHQuczApLHM9dC5ycDE9dS5jMnAodC5zMSkscD10LnRoZXRhZzA9aC5jMmcodC5wMCksZD10LnRoZXRhZzE9aC5jMmcodC5wMSk7aWYoYShvKSYmYShzKSYmYShwKSYmYShkKSYmbyE9PXMmJnAhPT1kKXt2YXIgZz11LmMyZyh0LnMxKSx2PShwK2QpLzI7dC5jdD1bbC5jMnAoZypNYXRoLmNvcyh2KSksYy5jMnAoZypNYXRoLnNpbih2KSldLGU9ZihvLHMscCxkKX1lbHNlIGU9Ik0wLDBaIjtpLmVuc3VyZVNpbmdsZShyLCJwYXRoIikuYXR0cigiZCIsZSl9KSxvLnNldENsaXBVcmwocixlLl9oYXNDbGlwT25BeGlzRmFsc2U/ZS5jbGlwSWRzLmZvclRyYWNlczpudWxsLHQpfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvcG9sYXIvaGVscGVycyI6ODI4LGQzOjE2NSwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDg4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxhPXQoIi4uL2Jhci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxsPW4ubWFya2VyLGM9bC5saW5lO2UuZXhwb3J0cz17eTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx4Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHgwOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0seTA6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxkeDp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LGR5Ont2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn0sbmFtZTp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHExOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LG1lZGlhbjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxxMzp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxsb3dlcmZlbmNlOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHVwcGVyZmVuY2U6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbm90Y2hlZDp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6ImNhbGMifSxub3RjaHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDouNSxkZmx0Oi4yNSxlZGl0VHlwZToiY2FsYyJ9LG5vdGNoc3Bhbjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxib3hwb2ludHM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsIm91dGxpZXJzIiwic3VzcGVjdGVkb3V0bGllcnMiLCExXSxlZGl0VHlwZToiY2FsYyJ9LGppdHRlcjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToiY2FsYyJ9LHBvaW50cG9zOnt2YWxUeXBlOiJudW1iZXIiLG1pbjotMixtYXg6MixlZGl0VHlwZToiY2FsYyJ9LGJveG1lYW46e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITAsInNkIiwhMV0sZWRpdFR5cGU6ImNhbGMifSxtZWFuOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHNkOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LG9yaWVudGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ2IiwiaCJdLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0scXVhcnRpbGVtZXRob2Q6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxpbmVhciIsImV4Y2x1c2l2ZSIsImluY2x1c2l2ZSJdLGRmbHQ6ImxpbmVhciIsZWRpdFR5cGU6ImNhbGMifSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxtYXJrZXI6e291dGxpZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMCwgMCwgMCwgMCkiLGVkaXRUeXBlOiJzdHlsZSJ9LHN5bWJvbDpzKHt9LGwuc3ltYm9sLHthcnJheU9rOiExLGVkaXRUeXBlOiJwbG90In0pLG9wYWNpdHk6cyh7fSxsLm9wYWNpdHkse2FycmF5T2s6ITEsZGZsdDoxLGVkaXRUeXBlOiJzdHlsZSJ9KSxzaXplOnMoe30sbC5zaXplLHthcnJheU9rOiExLGVkaXRUeXBlOiJjYWxjIn0pLGNvbG9yOnMoe30sbC5jb2xvcix7YXJyYXlPazohMSxlZGl0VHlwZToic3R5bGUifSksbGluZTp7Y29sb3I6cyh7fSxjLmNvbG9yLHthcnJheU9rOiExLGRmbHQ6aS5kZWZhdWx0TGluZSxlZGl0VHlwZToic3R5bGUifSksd2lkdGg6cyh7fSxjLndpZHRoLHthcnJheU9rOiExLGRmbHQ6MCxlZGl0VHlwZToic3R5bGUifSksb3V0bGllcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sb3V0bGllcndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToicGxvdCJ9LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoyLGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJwbG90In0sZmlsbGNvbG9yOm4uZmlsbGNvbG9yLHdoaXNrZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi41LGVkaXRUeXBlOiJjYWxjIn0sb2Zmc2V0Z3JvdXA6YS5vZmZzZXRncm91cCxhbGlnbm1lbnRncm91cDphLmFsaWdubWVudGdyb3VwLHNlbGVjdGVkOnttYXJrZXI6bi5zZWxlY3RlZC5tYXJrZXIsZWRpdFR5cGU6InN0eWxlIn0sdW5zZWxlY3RlZDp7bWFya2VyOm4udW5zZWxlY3RlZC5tYXJrZXIsZWRpdFR5cGU6InN0eWxlIn0sdGV4dDpzKHt9LG4udGV4dCx7fSksaG92ZXJ0ZXh0OnMoe30sbi5ob3ZlcnRleHQse30pLGhvdmVydGVtcGxhdGU6byh7fSksaG92ZXJvbjp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsiYm94ZXMiLCJwb2ludHMiXSxkZmx0OiJib3hlcytwb2ludHMiLGVkaXRUeXBlOiJzdHlsZSJ9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL2Jhci9hdHRyaWJ1dGVzIjo4NTYsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMH1dLDg4MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxzPWkuXztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixsLG0seSx4LGIsXz10Ll9mdWxsTGF5b3V0LHc9YS5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLGs9YS5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIpLFQ9W10sTT0idmlvbGluIj09PWUudHlwZT8iX251bVZpb2xpbnMiOiJfbnVtQm94ZXMiOyJoIj09PWUub3JpZW50YXRpb24/KG09dyx5PSJ4Iix4PWssYj0ieSIpOihtPWsseT0ieSIseD13LGI9IngiKTt2YXIgQSxTLEUsTCxDLFAsTz1mdW5jdGlvbih0LGUscixhKXt2YXIgbyxzPWUrIjAiaW4gdCxsPSJkIitlIGluIHQ7aWYoZSBpbiB0fHxzJiZsKXJldHVybiByLm1ha2VDYWxjZGF0YSh0LGUpO289cz90W2UrIjAiXToibmFtZSJpbiB0JiYoImNhdGVnb3J5Ij09PXIudHlwZXx8bih0Lm5hbWUpJiYtMSE9PVsibGluZWFyIiwibG9nIl0uaW5kZXhPZihyLnR5cGUpfHxpLmlzRGF0ZVRpbWUodC5uYW1lKSYmImRhdGUiPT09ci50eXBlKT90Lm5hbWU6YTtmb3IodmFyIGM9Im11bHRpY2F0ZWdvcnkiPT09ci50eXBlP3IucjJjX2p1c3RfaW5kaWNlcyhvKTpyLmQyYyhvLDAsdFtlKyJjYWxlbmRhciJdKSx1PXQuX2xlbmd0aCxoPW5ldyBBcnJheSh1KSxmPTA7Zjx1O2YrKyloW2ZdPWM7cmV0dXJuIGh9KGUsYix4LF9bTV0pLHo9aS5kaXN0aW5jdFZhbHMoTyksST16LnZhbHMsRD16Lm1pbkRpZmYvMixSPSJhbGwiPT09KGUuYm94cG9pbnRzfHxlLnBvaW50cyk/aS5pZGVudGl0eTpmdW5jdGlvbih0KXtyZXR1cm4gdC52PEEubGZ8fHQudj5BLnVmfTtpZihlLl9oYXNQcmVDb21wU3RhdHMpe3ZhciBGPWVbeV0sQj1mdW5jdGlvbih0KXtyZXR1cm4gbS5kMmMoKGVbdF18fFtdKVtyXSl9LE49MS8wLGo9LTEvMDtmb3Iocj0wO3I8ZS5fbGVuZ3RoO3IrKyl7dmFyIFY9T1tyXTtpZihuKFYpKXtpZigoQT17fSkucG9zPUFbYl09VixBLnExPUIoInExIiksQS5tZWQ9QigibWVkaWFuIiksQS5xMz1CKCJxMyIpLFM9W10sRiYmaS5pc0FycmF5T3JUeXBlZEFycmF5KEZbcl0pKWZvcihsPTA7bDxGW3JdLmxlbmd0aDtsKyspKFA9bS5kMmMoRltyXVtsXSkpIT09byYmKGMoQz17djpQLGk6W3IsbF19LGUsW3IsbF0pLFMucHVzaChDKSk7aWYoQS5wdHM9Uy5zb3J0KHUpLEw9KEU9QVt5XT1TLm1hcChoKSkubGVuZ3RoLEEubWVkIT09byYmQS5xMSE9PW8mJkEucTMhPT1vJiZBLm1lZD49QS5xMSYmQS5xMz49QS5tZWQpe3ZhciBVPUIoImxvd2VyZmVuY2UiKTtBLmxmPVUhPT1vJiZVPD1BLnExP1U6ZihBLEUsTCk7dmFyIHE9QigidXBwZXJmZW5jZSIpO0EudWY9cSE9PW8mJnE+PUEucTM/cTpwKEEsRSxMKTt2YXIgSD1CKCJtZWFuIik7QS5tZWFuPUghPT1vP0g6TD9pLm1lYW4oRSxMKTooQS5xMStBLnEzKS8yO3ZhciBHPUIoInNkIik7QS5zZD1IIT09byYmRz49MD9HOkw/aS5zdGRldihFLEwsQS5tZWFuKTpBLnEzLUEucTEsQS5sbz1kKEEpLEEudW89ZyhBKTt2YXIgWT1CKCJub3RjaHNwYW4iKTtZPVkhPT1vJiZZPjA/WTp2KEEsTCksQS5sbj1BLm1lZC1ZLEEudW49QS5tZWQrWTt2YXIgVz1BLmxmLFg9QS51ZjtlLmJveHBvaW50cyYmRS5sZW5ndGgmJihXPU1hdGgubWluKFcsRVswXSksWD1NYXRoLm1heChYLEVbTC0xXSkpLGUubm90Y2hlZCYmKFc9TWF0aC5taW4oVyxBLmxuKSxYPU1hdGgubWF4KFgsQS51bikpLEEubWluPVcsQS5tYXg9WH1lbHNle3ZhciBaO2kud2FybihbIkludmFsaWQgaW5wdXQgLSBtYWtlIHN1cmUgdGhhdCBxMSA8PSBtZWRpYW4gPD0gcTMiLCJxMSA9ICIrQS5xMSwibWVkaWFuID0gIitBLm1lZCwicTMgPSAiK0EucTNdLmpvaW4oIlxuIikpLFo9QS5tZWQhPT1vP0EubWVkOkEucTEhPT1vP0EucTMhPT1vPyhBLnExK0EucTMpLzI6QS5xMTpBLnEzIT09bz9BLnEzOjAsQS5tZWQ9WixBLnExPUEucTM9WixBLmxmPUEudWY9WixBLm1lYW49QS5zZD1aLEEubG49QS51bj1aLEEubWluPUEubWF4PVp9Tj1NYXRoLm1pbihOLEEubWluKSxqPU1hdGgubWF4KGosQS5tYXgpLEEucHRzMj1TLmZpbHRlcihSKSxULnB1c2goQSl9fWUuX2V4dHJlbWVzW20uX2lkXT1hLmZpbmRFeHRyZW1lcyhtLFtOLGpdLHtwYWRkZWQ6ITB9KX1lbHNle3ZhciBKPW0ubWFrZUNhbGNkYXRhKGUseSksSz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKzEpLGE9MDthPHI7YSsrKW5bYV09dFthXS1lO3JldHVybiBuW3JdPXRbci0xXStlLG59KEksRCksUT1JLmxlbmd0aCwkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT1bXTtyZXR1cm4gZX0oUSk7Zm9yKHI9MDtyPGUuX2xlbmd0aDtyKyspaWYoUD1KW3JdLG4oUCkpe3ZhciB0dD1pLmZpbmRCaW4oT1tyXSxLKTt0dD49MCYmdHQ8USYmKGMoQz17djpQLGk6cn0sZSxyKSwkW3R0XS5wdXNoKEMpKX12YXIgZXQ9MS8wLHJ0PS0xLzAsbnQ9ZS5xdWFydGlsZW1ldGhvZCxhdD0iZXhjbHVzaXZlIj09PW50LGl0PSJpbmNsdXNpdmUiPT09bnQ7Zm9yKHI9MDtyPFE7cisrKWlmKCRbcl0ubGVuZ3RoPjApe3ZhciBvdCxzdDtpZigoQT17fSkucG9zPUFbYl09SVtyXSxTPUEucHRzPSRbcl0uc29ydCh1KSxMPShFPUFbeV09Uy5tYXAoaCkpLmxlbmd0aCxBLm1pbj1FWzBdLEEubWF4PUVbTC0xXSxBLm1lYW49aS5tZWFuKEUsTCksQS5zZD1pLnN0ZGV2KEUsTCxBLm1lYW4pLEEubWVkPWkuaW50ZXJwKEUsLjUpLEwlMiYmKGF0fHxpdCkpYXQ/KG90PUUuc2xpY2UoMCxMLzIpLHN0PUUuc2xpY2UoTC8yKzEpKTppdCYmKG90PUUuc2xpY2UoMCxMLzIrMSksc3Q9RS5zbGljZShMLzIpKSxBLnExPWkuaW50ZXJwKG90LC41KSxBLnEzPWkuaW50ZXJwKHN0LC41KTtlbHNlIEEucTE9aS5pbnRlcnAoRSwuMjUpLEEucTM9aS5pbnRlcnAoRSwuNzUpO0EubGY9ZihBLEUsTCksQS51Zj1wKEEsRSxMKSxBLmxvPWQoQSksQS51bz1nKEEpO3ZhciBsdD12KEEsTCk7QS5sbj1BLm1lZC1sdCxBLnVuPUEubWVkK2x0LGV0PU1hdGgubWluKGV0LEEubG4pLHJ0PU1hdGgubWF4KHJ0LEEudW4pLEEucHRzMj1TLmZpbHRlcihSKSxULnB1c2goQSl9ZS5fZXh0cmVtZXNbbS5faWRdPWEuZmluZEV4dHJlbWVzKG0sZS5ub3RjaGVkP0ouY29uY2F0KFtldCxydF0pOkose3BhZGRlZDohMH0pfXJldHVybiBmdW5jdGlvbih0LGUpe2lmKGkuaXNBcnJheU9yVHlwZWRBcnJheShlLnNlbGVjdGVkcG9pbnRzKSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7Zm9yKHZhciBuPXRbcl0ucHRzfHxbXSxhPXt9LG89MDtvPG4ubGVuZ3RoO28rKylhW25bb10uaV09bztpLnRhZ1NlbGVjdGVkKG4sZSxhKX19KFQsZSksVC5sZW5ndGg+MD8oVFswXS50PXtudW06X1tNXSxkUG9zOkQscG9zTGV0dGVyOmIsdmFsTGV0dGVyOnksbGFiZWxzOnttZWQ6cyh0LCJtZWRpYW46IiksbWluOnModCwibWluOiIpLHExOnModCwicTE6IikscTM6cyh0LCJxMzoiKSxtYXg6cyh0LCJtYXg6IiksbWVhbjoic2QiPT09ZS5ib3htZWFuP3ModCwibWVhbiBceGIxIFx1MDNjMzoiKTpzKHQsIm1lYW46IiksbGY6cyh0LCJsb3dlciBmZW5jZToiKSx1ZjpzKHQsInVwcGVyIGZlbmNlOiIpfX0sX1tNXSsrLFQpOlt7dDp7ZW1wdHk6ITB9fV19O3ZhciBsPXt0ZXh0OiJ0eCIsaG92ZXJ0ZXh0OiJodHgifTtmdW5jdGlvbiBjKHQsZSxyKXtmb3IodmFyIG4gaW4gbClpLmlzQXJyYXlPclR5cGVkQXJyYXkoZVtuXSkmJihBcnJheS5pc0FycmF5KHIpP2kuaXNBcnJheU9yVHlwZWRBcnJheShlW25dW3JbMF1dKSYmKHRbbFtuXV09ZVtuXVtyWzBdXVtyWzFdXSk6dFtsW25dXT1lW25dW3JdKX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIHQudi1lLnZ9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdC52fWZ1bmN0aW9uIGYodCxlLHIpe3JldHVybiAwPT09cj90LnExOk1hdGgubWluKHQucTEsZVtNYXRoLm1pbihpLmZpbmRCaW4oMi41KnQucTEtMS41KnQucTMsZSwhMCkrMSxyLTEpXSl9ZnVuY3Rpb24gcCh0LGUscil7cmV0dXJuIDA9PT1yP3QucTM6TWF0aC5tYXgodC5xMyxlW01hdGgubWF4KGkuZmluZEJpbigyLjUqdC5xMy0xLjUqdC5xMSxlKSwwKV0pfWZ1bmN0aW9uIGQodCl7cmV0dXJuIDQqdC5xMS0zKnQucTN9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gNCp0LnEzLTMqdC5xMX1mdW5jdGlvbiB2KHQsZSl7cmV0dXJuIDA9PT1lPzA6MS41NyoodC5xMy10LnExKS9NYXRoLnNxcnQoZSl9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsImZhc3QtaXNudW1lcmljIjoyMjh9XSw4ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIikuZ2V0QXhpc0dyb3VwLG89WyJ2IiwiaCJdO2Z1bmN0aW9uIHModCxlLHIsbyl7dmFyIHMsbCxjLHU9ZS5jYWxjZGF0YSxoPWUuX2Z1bGxMYXlvdXQsZj1vLl9pZCxwPWYuY2hhckF0KDApLGQ9W10sZz0wO2ZvcihzPTA7czxyLmxlbmd0aDtzKyspZm9yKGM9dVtyW3NdXSxsPTA7bDxjLmxlbmd0aDtsKyspZC5wdXNoKG8uYzJsKGNbbF0ucG9zLCEwKSksZys9KGNbbF0ucHRzMnx8W10pLmxlbmd0aDtpZihkLmxlbmd0aCl7dmFyIHY9YS5kaXN0aW5jdFZhbHMoZCksbT12Lm1pbkRpZmYvMjtuLm1pbkR0aWNrKG8sdi5taW5EaWZmLHYudmFsc1swXSwhMCk7dmFyIHk9aFsidmlvbGluIj09PXQ/Il9udW1WaW9saW5zIjoiX251bUJveGVzIl0seD0iZ3JvdXAiPT09aFt0KyJtb2RlIl0mJnk+MSxiPTEtaFt0KyJnYXAiXSxfPTEtaFt0KyJncm91cGdhcCJdO2ZvcihzPTA7czxyLmxlbmd0aDtzKyspe3ZhciB3LGssVCxNLEEsUyxFPShjPXVbcltzXV0pWzBdLnRyYWNlLEw9Y1swXS50LEM9RS53aWR0aCxQPUUuc2lkZTtpZihDKXc9az1NPUMvMixUPTA7ZWxzZSBpZih3PW0seCl7dmFyIE89aShoLG8uX2lkKStFLm9yaWVudGF0aW9uLHo9KGguX2FsaWdubWVudE9wdHNbT118fHt9KVtFLmFsaWdubWVudGdyb3VwXXx8e30sST1PYmplY3Qua2V5cyh6Lm9mZnNldEdyb3Vwc3x8e30pLmxlbmd0aCxEPUl8fHk7az13KmIqXy9ELFQ9Mip3KigoKEk/RS5fb2Zmc2V0SW5kZXg6TC5udW0pKy41KS9ELS41KSpiLE09dypiL0R9ZWxzZSBrPXcqYipfLFQ9MCxNPXc7TC5kUG9zPXcsTC5iUG9zPVQsTC5iZFBvcz1rLEwud0hvdmVyPU07dmFyIFIsRixCLE4saixWLFU9VCtrLHE9Qm9vbGVhbihDKTtpZigicG9zaXRpdmUiPT09UD8oQT13KihDPzE6LjUpLFI9VSxTPVI9VCk6Im5lZ2F0aXZlIj09PVA/KEE9Uj1ULFM9dyooQz8xOi41KSxGPVUpOihBPVM9dyxSPUY9VSksKEUuYm94cG9pbnRzfHxFLnBvaW50cykmJmc+MCl7dmFyIEg9RS5wb2ludHBvcyxHPUUuaml0dGVyLFk9RS5tYXJrZXIuc2l6ZS8yLFc9MDtIK0c+PTAmJigoVz1VKihIK0cpKT5BPyhxPSEwLGo9WSxCPVcpOlc+UiYmKGo9WSxCPUEpKSxXPD1BJiYoQj1BKTt2YXIgWD0wO0gtRzw9MCYmKChYPS1VKihILUcpKT5TPyhxPSEwLFY9WSxOPVgpOlg+RiYmKFY9WSxOPVMpKSxYPD1TJiYoTj1TKX1lbHNlIEI9QSxOPVM7dmFyIFo9bmV3IEFycmF5KGMubGVuZ3RoKTtmb3IobD0wO2w8Yy5sZW5ndGg7bCsrKVpbbF09Y1tsXS5wb3M7RS5fZXh0cmVtZXNbZl09bi5maW5kRXh0cmVtZXMobyxaLHtwYWRkZWQ6cSx2cGFkbWludXM6Tix2cGFkcGx1czpCLHZwYWRMaW5lYXJpemVkOiEwLHBwYWRtaW51czp7eDpWLHk6an1bcF0scHBhZHBsdXM6e3g6aix5OlZ9W3BdfSl9fX1lLmV4cG9ydHM9e2Nyb3NzVHJhY2VDYWxjOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY2FsY2RhdGEsbj1lLnhheGlzLGE9ZS55YXhpcyxpPTA7aTxvLmxlbmd0aDtpKyspe2Zvcih2YXIgbD1vW2ldLGM9ImgiPT09bD9hOm4sdT1bXSxoPTA7aDxyLmxlbmd0aDtoKyspe3ZhciBmPXJbaF0scD1mWzBdLnQsZD1mWzBdLnRyYWNlOyEwIT09ZC52aXNpYmxlfHwiYm94IiE9PWQudHlwZSYmImNhbmRsZXN0aWNrIiE9PWQudHlwZXx8cC5lbXB0eXx8KGQub3JpZW50YXRpb258fCJ2IikhPT1sfHxkLnhheGlzIT09bi5faWR8fGQueWF4aXMhPT1hLl9pZHx8dS5wdXNoKGgpfXMoImJveCIsdCx1LGMpfX0sc2V0UG9zaXRpb25PZmZzZXQ6c319LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4fV0sODg0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZUdyb3VwaW5nRGVmYXVsdHMscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19hdXRvdHlwZSIpLGw9dCgiLi9hdHRyaWJ1dGVzIik7ZnVuY3Rpb24gYyh0LGUscixpKXtmdW5jdGlvbiBvKHQpe3ZhciBlPTA7cmV0dXJuIHQmJnQubGVuZ3RoJiYoZSs9MSxuLmlzQXJyYXlPclR5cGVkQXJyYXkodFswXSkmJnRbMF0ubGVuZ3RoJiYoZSs9MSkpLGV9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gbi52YWxpZGF0ZSh0W2VdLGxbZV0pfXZhciB1LGg9cigieSIpLGY9cigieCIpO2lmKCJib3giPT09ZS50eXBlKXt2YXIgcD1yKCJxMSIpLGQ9cigibWVkaWFuIiksZz1yKCJxMyIpO2UuX2hhc1ByZUNvbXBTdGF0cz1wJiZwLmxlbmd0aCYmZCYmZC5sZW5ndGgmJmcmJmcubGVuZ3RoLHU9TWF0aC5taW4obi5taW5Sb3dMZW5ndGgocCksbi5taW5Sb3dMZW5ndGgoZCksbi5taW5Sb3dMZW5ndGgoZykpfXZhciB2LG0seT1vKGgpLHg9byhmKSxiPXkmJm4ubWluUm93TGVuZ3RoKGgpLF89eCYmbi5taW5Sb3dMZW5ndGgoZik7aWYoZS5faGFzUHJlQ29tcFN0YXRzKXN3aXRjaChTdHJpbmcoeCkrU3RyaW5nKHkpKXtjYXNlIjAwIjp2YXIgdz1jKCJ4MCIpfHxjKCJkeCIpO3Y9KGMoInkwIil8fGMoImR5IikpJiYhdz8iaCI6InYiLG09dTticmVhaztjYXNlIjEwIjp2PSJ2IixtPU1hdGgubWluKHUsXyk7YnJlYWs7Y2FzZSIyMCI6dj0iaCIsbT1NYXRoLm1pbih1LGYubGVuZ3RoKTticmVhaztjYXNlIjAxIjp2PSJoIixtPU1hdGgubWluKHUsYik7YnJlYWs7Y2FzZSIwMiI6dj0idiIsbT1NYXRoLm1pbih1LGgubGVuZ3RoKTticmVhaztjYXNlIjEyIjp2PSJ2IixtPU1hdGgubWluKHUsXyxoLmxlbmd0aCk7YnJlYWs7Y2FzZSIyMSI6dj0iaCIsbT1NYXRoLm1pbih1LGYubGVuZ3RoLGIpO2JyZWFrO2Nhc2UiMTEiOm09MDticmVhaztjYXNlIjIyIjp2YXIgayxUPSExO2ZvcihrPTA7azxmLmxlbmd0aDtrKyspaWYoImNhdGVnb3J5Ij09PXMoZltrXSkpe1Q9ITA7YnJlYWt9aWYoVCl2PSJ2IixtPU1hdGgubWluKHUsXyxoLmxlbmd0aCk7ZWxzZXtmb3Ioaz0wO2s8aC5sZW5ndGg7aysrKWlmKCJjYXRlZ29yeSI9PT1zKGhba10pKXtUPSEwO2JyZWFrfVQ/KHY9ImgiLG09TWF0aC5taW4odSxmLmxlbmd0aCxiKSk6KHY9InYiLG09TWF0aC5taW4odSxfLGgubGVuZ3RoKSl9fWVsc2UgeT4wPyh2PSJ2IixtPXg+MD9NYXRoLm1pbihfLGIpOk1hdGgubWluKGIpKTp4PjA/KHY9ImgiLG09TWF0aC5taW4oXykpOm09MDtpZihtKXtlLl9sZW5ndGg9bTt2YXIgTT1yKCJvcmllbnRhdGlvbiIsdik7ZS5faGFzUHJlQ29tcFN0YXRzPyJ2Ij09PU0mJjA9PT14PyhyKCJ4MCIsMCkscigiZHgiLDEpKToiaCI9PT1NJiYwPT09eSYmKHIoInkwIiwwKSxyKCJkeSIsMSkpOiJ2Ij09PU0mJjA9PT14P3IoIngwIik6ImgiPT09TSYmMD09PXkmJnIoInkwIiksYS5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsWyJ4IiwieSJdLGkpfWVsc2UgZS52aXNpYmxlPSExfWZ1bmN0aW9uIHUodCxlLHIsYSl7dmFyIGk9YS5wcmVmaXgsbz1uLmNvZXJjZTIodCxlLGwsIm1hcmtlci5vdXRsaWVyY29sb3IiKSxzPXIoIm1hcmtlci5saW5lLm91dGxpZXJjb2xvciIpLGM9Im91dGxpZXJzIjtlLl9oYXNQcmVDb21wU3RhdHM/Yz0iYWxsIjoob3x8cykmJihjPSJzdXNwZWN0ZWRvdXRsaWVycyIpO3ZhciB1PXIoaSsicG9pbnRzIixjKTt1PyhyKCJqaXR0ZXIiLCJhbGwiPT09dT8uMzowKSxyKCJwb2ludHBvcyIsImFsbCI9PT11Py0xLjU6MCkscigibWFya2VyLnN5bWJvbCIpLHIoIm1hcmtlci5vcGFjaXR5IikscigibWFya2VyLnNpemUiKSxyKCJtYXJrZXIuY29sb3IiLGUubGluZS5jb2xvcikscigibWFya2VyLmxpbmUuY29sb3IiKSxyKCJtYXJrZXIubGluZS53aWR0aCIpLCJzdXNwZWN0ZWRvdXRsaWVycyI9PT11JiYocigibWFya2VyLmxpbmUub3V0bGllcmNvbG9yIixlLm1hcmtlci5jb2xvcikscigibWFya2VyLmxpbmUub3V0bGllcndpZHRoIikpLHIoInNlbGVjdGVkLm1hcmtlci5jb2xvciIpLHIoInVuc2VsZWN0ZWQubWFya2VyLmNvbG9yIikscigic2VsZWN0ZWQubWFya2VyLnNpemUiKSxyKCJ1bnNlbGVjdGVkLm1hcmtlci5zaXplIikscigidGV4dCIpLHIoImhvdmVydGV4dCIpKTpkZWxldGUgZS5tYXJrZXI7dmFyIGg9cigiaG92ZXJvbiIpOyJhbGwiIT09aCYmLTE9PT1oLmluZGV4T2YoInBvaW50cyIpfHxyKCJob3ZlcnRlbXBsYXRlIiksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUscil9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpmdW5jdGlvbih0LGUscixhKXtmdW5jdGlvbiBvKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxsLHIsYSl9aWYoYyh0LGUsbyxhKSwhMSE9PWUudmlzaWJsZSl7dmFyIHM9ZS5faGFzUHJlQ29tcFN0YXRzO3MmJihvKCJsb3dlcmZlbmNlIiksbygidXBwZXJmZW5jZSIpKSxvKCJsaW5lLmNvbG9yIiwodC5tYXJrZXJ8fHt9KS5jb2xvcnx8ciksbygibGluZS53aWR0aCIpLG8oImZpbGxjb2xvciIsaS5hZGRPcGFjaXR5KGUubGluZS5jb2xvciwuNSkpO3ZhciBoPSExO2lmKHMpe3ZhciBmPW8oIm1lYW4iKSxwPW8oInNkIik7ZiYmZi5sZW5ndGgmJihoPSEwLHAmJnAubGVuZ3RoJiYoaD0ic2QiKSl9bygiYm94bWVhbiIsaCksbygid2hpc2tlcndpZHRoIiksbygid2lkdGgiKSxvKCJxdWFydGlsZW1ldGhvZCIpO3ZhciBkPSExO2lmKHMpe3ZhciBnPW8oIm5vdGNoc3BhbiIpO2cmJmcubGVuZ3RoJiYoZD0hMCl9ZWxzZSBuLnZhbGlkYXRlKHQubm90Y2h3aWR0aCxsLm5vdGNod2lkdGgpJiYoZD0hMCk7bygibm90Y2hlZCIsZCkmJm8oIm5vdGNod2lkdGgiKSx1KHQsZSxvLHtwcmVmaXg6ImJveCJ9KX19LGNyb3NzVHJhY2VEZWZhdWx0czpmdW5jdGlvbih0LGUpe3ZhciByLGE7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbi5jb2VyY2UoYS5faW5wdXQsYSxsLHQpfWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgYz0oYT10W3NdKS50eXBlOyJib3giIT09YyYmInZpb2xpbiIhPT1jfHwocj1hLl9pbnB1dCwiZ3JvdXAiPT09ZVtjKyJtb2RlIl0mJm8ocixhLGUsaSkpfX0saGFuZGxlU2FtcGxlRGVmYXVsdHM6YyxoYW5kbGVQb2ludHNEZWZhdWx0czp1fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19hdXRvdHlwZSI6NzY2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9iYXIvZGVmYXVsdHMiOjg2MCwiLi9hdHRyaWJ1dGVzIjo4ODF9XSw4ODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuaG92ZXJPbkJveCYmKHQuaG92ZXJPbkJveD1lLmhvdmVyT25Cb3gpLCJ4VmFsImluIGUmJih0Lng9ZS54VmFsKSwieVZhbCJpbiBlJiYodC55PWUueVZhbCksZS54YSYmKHQueGF4aXM9ZS54YSksZS55YSYmKHQueWF4aXM9ZS55YSksdH19LHt9XSw4ODY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLHM9YS5maWxsVGV4dDtmdW5jdGlvbiBsKHQsZSxyLHMpe3ZhciBsLGMsdSxoLGYscCxkLGcsdixtLHkseCxiLF8sdz10LmNkLGs9dC54YSxUPXQueWEsTT13WzBdLnRyYWNlLEE9d1swXS50LFM9InZpb2xpbiI9PT1NLnR5cGUsRT1bXSxMPUEuYmRQb3MsQz1BLndIb3ZlcixQPWZ1bmN0aW9uKHQpe3JldHVybiB1LmMybCh0LnBvcykrQS5iUG9zLXUuYzJsKHApfTtTJiYiYm90aCIhPT1NLnNpZGU/KCJwb3NpdGl2ZSI9PT1NLnNpZGUmJih2PWZ1bmN0aW9uKHQpe3ZhciBlPVAodCk7cmV0dXJuIGkuaW5ib3goZSxlK0MsbSl9LHg9TCxiPTApLCJuZWdhdGl2ZSI9PT1NLnNpZGUmJih2PWZ1bmN0aW9uKHQpe3ZhciBlPVAodCk7cmV0dXJuIGkuaW5ib3goZS1DLGUsbSl9LHg9MCxiPUwpKToodj1mdW5jdGlvbih0KXt2YXIgZT1QKHQpO3JldHVybiBpLmluYm94KGUtQyxlK0MsbSl9LHg9Yj1MKSxfPVM/ZnVuY3Rpb24odCl7cmV0dXJuIGkuaW5ib3godC5zcGFuWzBdLWYsdC5zcGFuWzFdLWYsbSl9OmZ1bmN0aW9uKHQpe3JldHVybiBpLmluYm94KHQubWluLWYsdC5tYXgtZixtKX0sImgiPT09TS5vcmllbnRhdGlvbj8oZj1lLHA9cixkPV8sZz12LGw9InkiLHU9VCxjPSJ4IixoPWspOihmPXIscD1lLGQ9dixnPV8sbD0ieCIsdT1rLGM9InkiLGg9VCk7dmFyIE89TWF0aC5taW4oMSxML01hdGguYWJzKHUucjJjKHUucmFuZ2VbMV0pLXUucjJjKHUucmFuZ2VbMF0pKSk7ZnVuY3Rpb24geih0KXtyZXR1cm4oZCh0KStnKHQpKS8yfW09dC5tYXhIb3ZlckRpc3RhbmNlLU8seT10Lm1heFNwaWtlRGlzdGFuY2UtTzt2YXIgST1pLmdldERpc3RhbmNlRnVuY3Rpb24ocyxkLGcseik7aWYoaS5nZXRDbG9zZXN0KHcsSSx0KSwhMT09PXQuaW5kZXgpcmV0dXJuW107dmFyIEQ9d1t0LmluZGV4XSxSPU0ubGluZS5jb2xvcixGPShNLm1hcmtlcnx8e30pLmNvbG9yO28ub3BhY2l0eShSKSYmTS5saW5lLndpZHRoP3QuY29sb3I9UjpvLm9wYWNpdHkoRikmJk0uYm94cG9pbnRzP3QuY29sb3I9Rjp0LmNvbG9yPU0uZmlsbGNvbG9yLHRbbCsiMCJdPXUuYzJwKEQucG9zK0EuYlBvcy1iLCEwKSx0W2wrIjEiXT11LmMycChELnBvcytBLmJQb3MreCwhMCksdFtsKyJMYWJlbFZhbCJdPUQucG9zO3ZhciBCPWwrIlNwaWtlIjt0LnNwaWtlRGlzdGFuY2U9eihEKSp5L20sdFtCXT11LmMycChELnBvcywhMCk7dmFyIE49e30saj1bIm1lZCIsInExIiwicTMiLCJtaW4iLCJtYXgiXTsoTS5ib3htZWFufHwoTS5tZWFubGluZXx8e30pLnZpc2libGUpJiZqLnB1c2goIm1lYW4iKSwoTS5ib3hwb2ludHN8fE0ucG9pbnRzKSYmai5wdXNoKCJsZiIsInVmIik7Zm9yKHZhciBWPTA7VjxqLmxlbmd0aDtWKyspe3ZhciBVPWpbVl07aWYoVSBpbiBEJiYhKERbVV1pbiBOKSl7TltEW1VdXT0hMDt2YXIgcT1EW1VdLEg9aC5jMnAocSwhMCksRz1hLmV4dGVuZEZsYXQoe30sdCk7Ry5hdHRyPVUsR1tjKyIwIl09R1tjKyIxIl09SCxHW2MrIkxhYmVsVmFsIl09cSxHW2MrIkxhYmVsIl09KEEubGFiZWxzP0EubGFiZWxzW1VdKyIgIjoiIikrbi5ob3ZlckxhYmVsVGV4dChoLHEpLEcuaG92ZXJPbkJveD0hMCwibWVhbiI9PT1VJiYic2QiaW4gRCYmInNkIj09PU0uYm94bWVhbiYmKEdbYysiZXJyIl09RC5zZCksdC5uYW1lPSIiLHQuc3Bpa2VEaXN0YW5jZT12b2lkIDAsdFtCXT12b2lkIDAsRy5ob3ZlcnRlbXBsYXRlPSExLEUucHVzaChHKX19cmV0dXJuIEV9ZnVuY3Rpb24gYyh0LGUscil7Zm9yKHZhciBuLG8sbCxjPXQuY2QsdT10LnhhLGg9dC55YSxmPWNbMF0udHJhY2UscD11LmMycChlKSxkPWguYzJwKHIpLGc9aS5xdWFkcmF0dXJlKGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDMsdC5tcmN8fDApO3JldHVybiBNYXRoLm1heChNYXRoLmFicyh1LmMycCh0LngpLXApLWUsMS0zL2UpfSxmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgzLHQubXJjfHwwKTtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMoaC5jMnAodC55KS1kKS1lLDEtMy9lKX0pLHY9ITEsbT0wO208Yy5sZW5ndGg7bSsrKXtvPWNbbV07Zm9yKHZhciB5PTA7eTwoby5wdHN8fFtdKS5sZW5ndGg7eSsrKXt2YXIgeD1nKGw9by5wdHNbeV0pO3g8PXQuZGlzdGFuY2UmJih0LmRpc3RhbmNlPXgsdj1bbSx5XSl9fWlmKCF2KXJldHVybiExO2w9KG89Y1t2WzBdXSkucHRzW3ZbMV1dO3ZhciBiLF89dS5jMnAobC54LCEwKSx3PWguYzJwKGwueSwhMCksaz1sLm1yY3x8MTtyZXR1cm4gbj1hLmV4dGVuZEZsYXQoe30sdCx7aW5kZXg6bC5pLGNvbG9yOihmLm1hcmtlcnx8e30pLmNvbG9yLG5hbWU6Zi5uYW1lLHgwOl8tayx4MTpfK2sseTA6dy1rLHkxOncrayxzcGlrZURpc3RhbmNlOnQuZGlzdGFuY2UsaG92ZXJ0ZW1wbGF0ZTpmLmhvdmVydGVtcGxhdGV9KSwiaCI9PT1mLm9yaWVudGF0aW9uPyhiPWgsbi54TGFiZWxWYWw9bC54LG4ueUxhYmVsVmFsPW8ucG9zKTooYj11LG4ueExhYmVsVmFsPW8ucG9zLG4ueUxhYmVsVmFsPWwueSksbltiLl9pZC5jaGFyQXQoMCkrIlNwaWtlIl09Yi5jMnAoby5wb3MsITApLHMobCxmLG4pLG59ZS5leHBvcnRzPXtob3ZlclBvaW50czpmdW5jdGlvbih0LGUscixuKXt2YXIgYSxpPXQuY2RbMF0udHJhY2UuaG92ZXJvbixvPVtdO3JldHVybi0xIT09aS5pbmRleE9mKCJib3hlcyIpJiYobz1vLmNvbmNhdChsKHQsZSxyLG4pKSksLTEhPT1pLmluZGV4T2YoInBvaW50cyIpJiYoYT1jKHQsZSxyKSksImNsb3Nlc3QiPT09bj9hP1thXTpvOmE/KG8ucHVzaChhKSxvKTpvfSxob3Zlck9uQm94ZXM6bCxob3Zlck9uUG9pbnRzOmN9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDg4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLnN1cHBseURlZmF1bHRzLGNyb3NzVHJhY2VEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuY3Jvc3NUcmFjZURlZmF1bHRzLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIikuc3VwcGx5TGF5b3V0RGVmYXVsdHMsY2FsYzp0KCIuL2NhbGMiKSxjcm9zc1RyYWNlQ2FsYzp0KCIuL2Nyb3NzX3RyYWNlX2NhbGMiKS5jcm9zc1RyYWNlQ2FsYyxwbG90OnQoIi4vcGxvdCIpLnBsb3Qsc3R5bGU6dCgiLi9zdHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgiLi9zdHlsZSIpLnN0eWxlT25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEiKSxzZWxlY3RQb2ludHM6dCgiLi9zZWxlY3QiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiYm94IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwic3ltYm9scyIsIm9yaWVudGVkIiwiYm94LXZpb2xpbiIsInNob3dMZWdlbmQiLCJib3hMYXlvdXQiLCJ6b29tU2NhbGUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi9hdHRyaWJ1dGVzIjo4ODEsIi4vY2FsYyI6ODgyLCIuL2Nyb3NzX3RyYWNlX2NhbGMiOjg4MywiLi9kZWZhdWx0cyI6ODg0LCIuL2V2ZW50X2RhdGEiOjg4NSwiLi9ob3ZlciI6ODg2LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo4ODgsIi4vbGF5b3V0X2RlZmF1bHRzIjo4ODksIi4vcGxvdCI6ODkwLCIuL3NlbGVjdCI6ODkxLCIuL3N0eWxlIjo4OTJ9XSw4ODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtib3htb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJncm91cCIsIm92ZXJsYXkiXSxkZmx0OiJvdmVybGF5IixlZGl0VHlwZToiY2FsYyJ9LGJveGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi4zLGVkaXRUeXBlOiJjYWxjIn0sYm94Z3JvdXBnYXA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouMyxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDg4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZnVuY3Rpb24gbyh0LGUscixhLGkpe2Zvcih2YXIgbz1pKyJMYXlvdXQiLHM9ITEsbD0wO2w8ci5sZW5ndGg7bCsrKXt2YXIgYz1yW2xdO2lmKG4udHJhY2VJcyhjLG8pKXtzPSEwO2JyZWFrfX1zJiYoYShpKyJtb2RlIiksYShpKyJnYXAiKSxhKGkrImdyb3VwZ2FwIikpfWUuZXhwb3J0cz17c3VwcGx5TGF5b3V0RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIpe28oMCwwLHIsZnVuY3Rpb24ocixuKXtyZXR1cm4gYS5jb2VyY2UodCxlLGkscixuKX0sImJveCIpfSxfc3VwcGx5Om99fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo4ODh9XSw4OTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz01LHM9LjAxO2Z1bmN0aW9uIGwodCxlLHIsaSl7dmFyIG8scyxsPWUucG9zLGM9ZS52YWwsdT1pLmJQb3MsaD1pLndkUG9zfHwwLGY9aS5iUG9zUHhPZmZzZXR8fDAscD1yLndoaXNrZXJ3aWR0aHx8MCxkPXIubm90Y2hlZHx8ITEsZz1kPzEtMipyLm5vdGNod2lkdGg6MTtBcnJheS5pc0FycmF5KGkuYmRQb3MpPyhvPWkuYmRQb3NbMF0scz1pLmJkUG9zWzFdKToobz1pLmJkUG9zLHM9aS5iZFBvcyk7dmFyIHY9dC5zZWxlY3RBbGwoInBhdGguYm94IikuZGF0YSgidmlvbGluIiE9PXIudHlwZXx8ci5ib3gudmlzaWJsZT9hLmlkZW50aXR5OltdKTt2LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuc3R5bGUoInZlY3Rvci1lZmZlY3QiLCJub24tc2NhbGluZy1zdHJva2UiKS5hdHRyKCJjbGFzcyIsImJveCIpLHYuZXhpdCgpLnJlbW92ZSgpLHYuZWFjaChmdW5jdGlvbih0KXtpZih0LmVtcHR5KXJldHVybiJNMCwwWiI7dmFyIGU9bC5jMmwodC5wb3MrdSwhMCksaT1sLmwycChlKStmLHY9bC5sMnAoZS1vKStmLG09bC5sMnAoZStzKStmLHk9bC5sMnAoZS1oKStmLHg9bC5sMnAoZStoKStmLGI9bC5sMnAoZS1vKmcpK2YsXz1sLmwycChlK3MqZykrZix3PWMuYzJwKHQucTEsITApLGs9Yy5jMnAodC5xMywhMCksVD1hLmNvbnN0cmFpbihjLmMycCh0Lm1lZCwhMCksTWF0aC5taW4odyxrKSsxLE1hdGgubWF4KHcsayktMSksTT12b2lkIDA9PT10LmxmfHwhMT09PXIuYm94cG9pbnRzLEE9Yy5jMnAoTT90Lm1pbjp0LmxmLCEwKSxTPWMuYzJwKE0/dC5tYXg6dC51ZiwhMCksRT1jLmMycCh0LmxuLCEwKSxMPWMuYzJwKHQudW4sITApOyJoIj09PXIub3JpZW50YXRpb24/bi5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iK1QrIiwiK2IrIlYiK18rIk0iK3crIiwiK3YrIlYiK20rKGQ/IkgiK0UrIkwiK1QrIiwiK18rIkwiK0wrIiwiK206IiIpKyJIIitrKyJWIit2KyhkPyJIIitMKyJMIitUKyIsIitiKyJMIitFKyIsIit2OiIiKSsiWk0iK3crIiwiK2krIkgiK0ErIk0iK2srIiwiK2krIkgiK1MrKDA9PT1wPyIiOiJNIitBKyIsIit5KyJWIit4KyJNIitTKyIsIit5KyJWIit4KSk6bi5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iK2IrIiwiK1QrIkgiK18rIk0iK3YrIiwiK3crIkgiK20rKGQ/IlYiK0UrIkwiK18rIiwiK1QrIkwiK20rIiwiK0w6IiIpKyJWIitrKyJIIit2KyhkPyJWIitMKyJMIitiKyIsIitUKyJMIit2KyIsIitFOiIiKSsiWk0iK2krIiwiK3crIlYiK0ErIk0iK2krIiwiK2srIlYiK1MrKDA9PT1wPyIiOiJNIit5KyIsIitBKyJIIit4KyJNIit5KyIsIitTKyJIIit4KSl9KX1mdW5jdGlvbiBjKHQsZSxyLG4pe3ZhciBsPWUueCxjPWUueSx1PW4uYmRQb3MsaD1uLmJQb3MsZj1yLmJveHBvaW50c3x8ci5wb2ludHM7YS5zZWVkUHNldWRvUmFuZG9tKCk7dmFyIHA9dC5zZWxlY3RBbGwoImcucG9pbnRzIikuZGF0YShmP2Z1bmN0aW9uKHQpe3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7dC50PW4sdC50cmFjZT1yfSksdH06W10pO3AuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInBvaW50cyIpLHAuZXhpdCgpLnJlbW92ZSgpO3ZhciBkPXAuc2VsZWN0QWxsKCJwYXRoIikuZGF0YShmdW5jdGlvbih0KXt2YXIgZSxuLGk9dC5wdHMyLGw9TWF0aC5tYXgoKHQubWF4LXQubWluKS8xMCx0LnEzLXQucTEpLGM9MWUtOSpsLHA9bCpzLGQ9W10sZz0wO2lmKHIuaml0dGVyKXtpZigwPT09bClmb3IoZz0xLGQ9bmV3IEFycmF5KGkubGVuZ3RoKSxlPTA7ZTxpLmxlbmd0aDtlKyspZFtlXT0xO2Vsc2UgZm9yKGU9MDtlPGkubGVuZ3RoO2UrKyl7dmFyIHY9TWF0aC5tYXgoMCxlLW8pLG09aVt2XS52LHk9TWF0aC5taW4oaS5sZW5ndGgtMSxlK28pLHg9aVt5XS52OyJhbGwiIT09ZiYmKGlbZV0udjx0LmxmP3g9TWF0aC5taW4oeCx0LmxmKTptPU1hdGgubWF4KG0sdC51ZikpO3ZhciBiPU1hdGguc3FydChwKih5LXYpLyh4LW0rYykpfHwwO2I9YS5jb25zdHJhaW4oTWF0aC5hYnMoYiksMCwxKSxkLnB1c2goYiksZz1NYXRoLm1heChiLGcpfW49MipyLmppdHRlci8oZ3x8MSl9Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKyl7dmFyIF89aVtlXSx3PV8udixrPXIuaml0dGVyP24qZFtlXSooYS5wc2V1ZG9SYW5kb20oKS0uNSk6MCxUPXQucG9zK2grdSooci5wb2ludHBvcytrKTsiaCI9PT1yLm9yaWVudGF0aW9uPyhfLnk9VCxfLng9dyk6KF8ueD1ULF8ueT13KSwic3VzcGVjdGVkb3V0bGllcnMiPT09ZiYmdzx0LnVvJiZ3PnQubG8mJihfLnNvPSEwKX1yZXR1cm4gaX0pO2QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJwb2ludCIsITApLGQuZXhpdCgpLnJlbW92ZSgpLGQuY2FsbChpLnRyYW5zbGF0ZVBvaW50cyxsLGMpfWZ1bmN0aW9uIHUodCxlLHIsaSl7dmFyIG8scyxsPWUucG9zLGM9ZS52YWwsdT1pLmJQb3MsaD1pLmJQb3NQeE9mZnNldHx8MCxmPXIuYm94bWVhbnx8KHIubWVhbmxpbmV8fHt9KS52aXNpYmxlO0FycmF5LmlzQXJyYXkoaS5iZFBvcyk/KG89aS5iZFBvc1swXSxzPWkuYmRQb3NbMV0pOihvPWkuYmRQb3Mscz1pLmJkUG9zKTt2YXIgcD10LnNlbGVjdEFsbCgicGF0aC5tZWFuIikuZGF0YSgiYm94Ij09PXIudHlwZSYmci5ib3htZWFufHwidmlvbGluIj09PXIudHlwZSYmci5ib3gudmlzaWJsZSYmci5tZWFubGluZS52aXNpYmxlP2EuaWRlbnRpdHk6W10pO3AuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsIm1lYW4iKS5zdHlsZSh7ZmlsbDoibm9uZSIsInZlY3Rvci1lZmZlY3QiOiJub24tc2NhbGluZy1zdHJva2UifSkscC5leGl0KCkucmVtb3ZlKCkscC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWwuYzJsKHQucG9zK3UsITApLGE9bC5sMnAoZSkraCxpPWwubDJwKGUtbykraCxwPWwubDJwKGUrcykraCxkPWMuYzJwKHQubWVhbiwhMCksZz1jLmMycCh0Lm1lYW4tdC5zZCwhMCksdj1jLmMycCh0Lm1lYW4rdC5zZCwhMCk7ImgiPT09ci5vcmllbnRhdGlvbj9uLnNlbGVjdCh0aGlzKS5hdHRyKCJkIiwiTSIrZCsiLCIraSsiViIrcCsoInNkIj09PWY/Im0wLDBMIitnKyIsIithKyJMIitkKyIsIitpKyJMIit2KyIsIithKyJaIjoiIikpOm4uc2VsZWN0KHRoaXMpLmF0dHIoImQiLCJNIitpKyIsIitkKyJIIitwKygic2QiPT09Zj8ibTAsMEwiK2ErIiwiK2crIkwiK2krIiwiK2QrIkwiK2ErIiwiK3YrIloiOiIiKSl9KX1lLmV4cG9ydHM9e3Bsb3Q6ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89ZS54YXhpcyxzPWUueWF4aXM7YS5tYWtlVHJhY2VHcm91cHMoaSxyLCJ0cmFjZSBib3hlcyIpLmVhY2goZnVuY3Rpb24odCl7dmFyIGUscixhPW4uc2VsZWN0KHRoaXMpLGk9dFswXSxoPWkudCxmPWkudHJhY2U7aC53ZFBvcz1oLmJkUG9zKmYud2hpc2tlcndpZHRoLCEwIT09Zi52aXNpYmxlfHxoLmVtcHR5P2EucmVtb3ZlKCk6KCJoIj09PWYub3JpZW50YXRpb24/KGU9cyxyPW8pOihlPW8scj1zKSxsKGEse3BvczplLHZhbDpyfSxmLGgpLGMoYSx7eDpvLHk6c30sZixoKSx1KGEse3BvczplLHZhbDpyfSxmLGgpKX0pfSxwbG90Qm94QW5kV2hpc2tlcnM6bCxwbG90UG9pbnRzOmMscGxvdEJveE1lYW46dX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LGQzOjE2NX1dLDg5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9dC5jZCxpPXQueGF4aXMsbz10LnlheGlzLHM9W107aWYoITE9PT1lKWZvcihyPTA7cjxhLmxlbmd0aDtyKyspZm9yKG49MDtuPChhW3JdLnB0c3x8W10pLmxlbmd0aDtuKyspYVtyXS5wdHNbbl0uc2VsZWN0ZWQ9MDtlbHNlIGZvcihyPTA7cjxhLmxlbmd0aDtyKyspZm9yKG49MDtuPChhW3JdLnB0c3x8W10pLmxlbmd0aDtuKyspe3ZhciBsPWFbcl0ucHRzW25dLGM9aS5jMnAobC54KSx1PW8uYzJwKGwueSk7ZS5jb250YWlucyhbYyx1XSxudWxsLGwuaSx0KT8ocy5wdXNoKHtwb2ludE51bWJlcjpsLmkseDppLmMyZChsLngpLHk6by5jMmQobC55KX0pLGwuc2VsZWN0ZWQ9MSk6bC5zZWxlY3RlZD0wfXJldHVybiBzfX0se31dLDg5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIik7ZS5leHBvcnRzPXtzdHlsZTpmdW5jdGlvbih0LGUscil7dmFyIG89cnx8bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLnRyYWNlLmJveGVzIik7by5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pLG8uZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxvPWVbMF0udHJhY2Uscz1vLmxpbmUud2lkdGg7ZnVuY3Rpb24gbCh0LGUscixuKXt0LnN0eWxlKCJzdHJva2Utd2lkdGgiLGUrInB4IikuY2FsbChhLnN0cm9rZSxyKS5jYWxsKGEuZmlsbCxuKX12YXIgYz1yLnNlbGVjdEFsbCgicGF0aC5ib3giKTtpZigiY2FuZGxlc3RpY2siPT09by50eXBlKWMuZWFjaChmdW5jdGlvbih0KXtpZighdC5lbXB0eSl7dmFyIGU9bi5zZWxlY3QodGhpcykscj1vW3QuZGlyXTtsKGUsci5saW5lLndpZHRoLHIubGluZS5jb2xvcixyLmZpbGxjb2xvciksZS5zdHlsZSgib3BhY2l0eSIsby5zZWxlY3RlZHBvaW50cyYmIXQuc2VsZWN0ZWQ/LjM6MSl9fSk7ZWxzZXtsKGMscyxvLmxpbmUuY29sb3Isby5maWxsY29sb3IpLHIuc2VsZWN0QWxsKCJwYXRoLm1lYW4iKS5zdHlsZSh7InN0cm9rZS13aWR0aCI6cywic3Ryb2tlLWRhc2hhcnJheSI6MipzKyJweCwiK3MrInB4In0pLmNhbGwoYS5zdHJva2Usby5saW5lLmNvbG9yKTt2YXIgdT1yLnNlbGVjdEFsbCgicGF0aC5wb2ludCIpO2kucG9pbnRTdHlsZSh1LG8sdCl9fSl9LHN0eWxlT25TZWxlY3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0udHJhY2UsYT1yLnNlbGVjdEFsbCgicGF0aC5wb2ludCIpO24uc2VsZWN0ZWRwb2ludHM/aS5zZWxlY3RlZFBvaW50U3R5bGUoYSxuKTppLnBvaW50U3R5bGUoYSxuLHQpfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMyxkMzoxNjV9XSw4OTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIikuZXh0ZW5kRmxhdCxhPXQoIi4uL29obGMvYXR0cmlidXRlcyIpLGk9dCgiLi4vYm94L2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBvKHQpe3JldHVybntsaW5lOntjb2xvcjpuKHt9LGkubGluZS5jb2xvcix7ZGZsdDp0fSksd2lkdGg6aS5saW5lLndpZHRoLGVkaXRUeXBlOiJzdHlsZSJ9LGZpbGxjb2xvcjppLmZpbGxjb2xvcixlZGl0VHlwZToic3R5bGUifX1lLmV4cG9ydHM9e3g6YS54LG9wZW46YS5vcGVuLGhpZ2g6YS5oaWdoLGxvdzphLmxvdyxjbG9zZTphLmNsb3NlLGxpbmU6e3dpZHRoOm4oe30saS5saW5lLndpZHRoLHt9KSxlZGl0VHlwZToic3R5bGUifSxpbmNyZWFzaW5nOm8oYS5pbmNyZWFzaW5nLmxpbmUuY29sb3IuZGZsdCksZGVjcmVhc2luZzpvKGEuZGVjcmVhc2luZy5saW5lLmNvbG9yLmRmbHQpLHRleHQ6YS50ZXh0LGhvdmVydGV4dDphLmhvdmVydGV4dCx3aGlza2Vyd2lkdGg6bih7fSxpLndoaXNrZXJ3aWR0aCx7ZGZsdDowfSksaG92ZXJsYWJlbDphLmhvdmVybGFiZWx9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9ib3gvYXR0cmlidXRlcyI6ODgxLCIuLi9vaGxjL2F0dHJpYnV0ZXMiOjEwNjZ9XSw4OTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vb2hsYy9jYWxjIikuY2FsY0NvbW1vbjtmdW5jdGlvbiBvKHQsZSxyLG4pe3JldHVybnttaW46cixxMTpNYXRoLm1pbih0LG4pLG1lZDpuLHEzOk1hdGgubWF4KHQsbiksbWF4OmV9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQscz1hLmdldEZyb21JZCh0LGUueGF4aXMpLGw9YS5nZXRGcm9tSWQodCxlLnlheGlzKSxjPXMubWFrZUNhbGNkYXRhKGUsIngiKSx1PWkodCxlLGMsbCxvKTtyZXR1cm4gdS5sZW5ndGg/KG4uZXh0ZW5kRmxhdCh1WzBdLnQse251bTpyLl9udW1Cb3hlcyxkUG9zOm4uZGlzdGluY3RWYWxzKGMpLm1pbkRpZmYvMixwb3NMZXR0ZXI6IngiLHZhbExldHRlcjoieSJ9KSxyLl9udW1Cb3hlcysrLHUpOlt7dDp7ZW1wdHk6ITB9fV19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9vaGxjL2NhbGMiOjEwNjd9XSw4OTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi9vaGxjL29obGNfZGVmYXVsdHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpO2Z1bmN0aW9uIHModCxlLHIsbil7dmFyIGk9cihuKyIubGluZS5jb2xvciIpO3IobisiLmxpbmUud2lkdGgiLGUubGluZS53aWR0aCkscihuKyIuZmlsbGNvbG9yIixhLmFkZE9wYWNpdHkoaSwuNSkpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXtmdW5jdGlvbiBsKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsYSl9aSh0LGUsbCxhKT8obCgibGluZS53aWR0aCIpLHModCxlLGwsImluY3JlYXNpbmciKSxzKHQsZSxsLCJkZWNyZWFzaW5nIiksbCgidGV4dCIpLGwoImhvdmVydGV4dCIpLGwoIndoaXNrZXJ3aWR0aCIpLGEuX3JlcXVlc3RSYW5nZXNsaWRlcltlLnhheGlzXT0hMCk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi9vaGxjL29obGNfZGVmYXVsdHMiOjEwNzEsIi4vYXR0cmlidXRlcyI6ODkzfV0sODk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImNhbmRsZXN0aWNrIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwic2hvd0xlZ2VuZCIsImNhbmRsZXN0aWNrIiwiYm94TGF5b3V0Il0sbWV0YTp7fSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0ZXM6dCgiLi4vYm94L2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi4vYm94L2xheW91dF9kZWZhdWx0cyIpLnN1cHBseUxheW91dERlZmF1bHRzLGNyb3NzVHJhY2VDYWxjOnQoIi4uL2JveC9jcm9zc190cmFjZV9jYWxjIikuY3Jvc3NUcmFjZUNhbGMsc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIuLi9ib3gvcGxvdCIpLnBsb3QsbGF5ZXJOYW1lOiJib3hsYXllciIsc3R5bGU6dCgiLi4vYm94L3N0eWxlIikuc3R5bGUsaG92ZXJQb2ludHM6dCgiLi4vb2hsYy9ob3ZlciIpLmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuLi9vaGxjL3NlbGVjdCIpfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vYm94L2Nyb3NzX3RyYWNlX2NhbGMiOjg4MywiLi4vYm94L2xheW91dF9hdHRyaWJ1dGVzIjo4ODgsIi4uL2JveC9sYXlvdXRfZGVmYXVsdHMiOjg4OSwiLi4vYm94L3Bsb3QiOjg5MCwiLi4vYm94L3N0eWxlIjo4OTIsIi4uL29obGMvaG92ZXIiOjEwNjksIi4uL29obGMvc2VsZWN0IjoxMDczLCIuL2F0dHJpYnV0ZXMiOjg5MywiLi9jYWxjIjo4OTQsIi4vZGVmYXVsdHMiOjg5NX1dLDg5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2F4aXNfZGVmYXVsdHMiKSxhPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxvKXtpKCJhIil8fChpKCJkYSIpLGkoImEwIikpLGkoImIiKXx8KGkoImRiIiksaSgiYjAiKSksZnVuY3Rpb24odCxlLHIsaSl7WyJhYXhpcyIsImJheGlzIl0uZm9yRWFjaChmdW5jdGlvbihvKXt2YXIgcz1vLmNoYXJBdCgwKSxsPXRbb118fHt9LGM9YS5uZXdDb250YWluZXIoZSxvKSx1PXt0aWNrZm9udDoieCIsaWQ6cysiYXhpcyIsbGV0dGVyOnMsZm9udDplLmZvbnQsbmFtZTpvLGRhdGE6dFtzXSxjYWxlbmRhcjplLmNhbGVuZGFyLGRmbHRDb2xvcjppLGJnQ29sb3I6ci5wYXBlcl9iZ2NvbG9yLGZ1bGxMYXlvdXQ6cn07bihsLGMsdSksYy5fY2F0ZWdvcmllcz1jLl9jYXRlZ29yaWVzfHxbXSx0W29dfHwiLSI9PT1sLnR5cGV8fCh0W29dPXt0eXBlOmwudHlwZX0pfSl9KHQsZSxyLG8pfX0seyIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4vYXhpc19kZWZhdWx0cyI6OTAyfV0sODk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiB0KGUscil7aWYoIW4oZSl8fHI+PTEwKXJldHVybiBudWxsO3ZhciBhPTEvMDt2YXIgaT0tMS8wO3ZhciBvPWUubGVuZ3RoO2Zvcih2YXIgcz0wO3M8bztzKyspe3ZhciBsPWVbc107aWYobihsKSl7dmFyIGM9dChsLHIrMSk7YyYmKGE9TWF0aC5taW4oY1swXSxhKSxpPU1hdGgubWF4KGNbMV0saSkpfWVsc2UgYT1NYXRoLm1pbihsLGEpLGk9TWF0aC5tYXgobCxpKX1yZXR1cm5bYSxpXX0odCwwKX19LHsiLi4vLi4vbGliIjo3MTd9XSw4OTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuL2F4aXNfYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksbz1uKHtlZGl0VHlwZToiY2FsYyJ9KTtvLmZhbWlseS5kZmx0PSciT3BlbiBTYW5zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLG8uc2l6ZS5kZmx0PTEyLG8uY29sb3IuZGZsdD1pLmRlZmF1bHRMaW5lLGUuZXhwb3J0cz17Y2FycGV0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjIn0seDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LGE6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sYTA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sZGE6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sYjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxiMDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxkYjp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRpdFR5cGU6ImNhbGMifSxjaGVhdGVyc2xvcGU6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sYWF4aXM6YSxiYXhpczphLGZvbnQ6byxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aS5kZWZhdWx0TGluZSxlZGl0VHlwZToicGxvdCJ9LHRyYW5zZm9ybXM6dm9pZCAwfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4vYXhpc19hdHRyaWJ1dGVzIjo5MDF9XSw5MDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIikuaXNBcnJheU9yVHlwZWRBcnJheTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGksbyxzLGwsYyx1LGgsZixwLGQsZyx2LG0seT1uKHIpPyJhIjoiYiIseD0oImEiPT09eT90LmFheGlzOnQuYmF4aXMpLnNtb290aGluZyxiPSJhIj09PXk/dC5hMmk6dC5iMmosXz0iYSI9PT15P3I6YSx3PSJhIj09PXk/YTpyLGs9ImEiPT09eT9lLmEubGVuZ3RoOmUuYi5sZW5ndGgsVD0iYSI9PT15P2UuYi5sZW5ndGg6ZS5hLmxlbmd0aCxNPU1hdGguZmxvb3IoImEiPT09eT90LmIyaih3KTp0LmEyaSh3KSksQT0iYSI9PT15P2Z1bmN0aW9uKGUpe3JldHVybiB0LmV2YWx4eShbXSxlLE0pfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ldmFseHkoW10sTSxlKX07eCYmKHM9TWF0aC5tYXgoMCxNYXRoLm1pbihULTIsTSkpLGw9TS1zLG89ImEiPT09eT9mdW5jdGlvbihlLHIpe3JldHVybiB0LmR4eWRpKFtdLGUscyxyLGwpfTpmdW5jdGlvbihlLHIpe3JldHVybiB0LmR4eWRqKFtdLHMsZSxsLHIpfSk7dmFyIFM9YihfWzBdKSxFPWIoX1sxXSksTD1TPEU/MTotMSxDPTFlLTgqKEUtUyksUD1MPjA/TWF0aC5mbG9vcjpNYXRoLmNlaWwsTz1MPjA/TWF0aC5jZWlsOk1hdGguZmxvb3Isej1MPjA/TWF0aC5taW46TWF0aC5tYXgsST1MPjA/TWF0aC5tYXg6TWF0aC5taW4sRD1QKFMrQyksUj1PKEUtQyksRj1bW2g9QShTKV1dO2ZvcihpPUQ7aSpMPFIqTDtpKz1MKWM9W10sZz1JKFMsaSksbT0odj16KEUsaStMKSktZyx1PU1hdGgubWF4KDAsTWF0aC5taW4oay0yLE1hdGguZmxvb3IoLjUqKGcrdikpKSksZj1BKHYpLHgmJihwPW8odSxnLXUpLGQ9byh1LHYtdSksYy5wdXNoKFtoWzBdK3BbMF0vMyptLGhbMV0rcFsxXS8zKm1dKSxjLnB1c2goW2ZbMF0tZFswXS8zKm0sZlsxXS1kWzFdLzMqbV0pKSxjLnB1c2goZiksRi5wdXNoKGMpLGg9ZjtyZXR1cm4gRn19LHsiLi4vLi4vbGliIjo3MTd9XSw5MDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsO3QoIi4uLy4uL2NvbnN0YW50cy9kb2NzIikuRk9STUFUX0xJTkssdCgiLi4vLi4vY29uc3RhbnRzL2RvY3MiKS5USU1FX0ZPUk1BVF9MSU5LO2UuZXhwb3J0cz17Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiY2FsYyJ9LHNtb290aGluZzp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsbWluOjAsbWF4OjEuMyxlZGl0VHlwZToiY2FsYyJ9LHRpdGxlOnt0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxmb250Om4oe2VkaXRUeXBlOiJjYWxjIn0pLG9mZnNldDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEwLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyItIiwibGluZWFyIiwiZGF0ZSIsImNhdGVnb3J5Il0sZGZsdDoiLSIsZWRpdFR5cGU6ImNhbGMifSxhdXRvcmFuZ2U6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITAsITEsInJldmVyc2VkIl0sZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LHJhbmdlbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9ybWFsIiwidG96ZXJvIiwibm9ubmVnYXRpdmUiXSxkZmx0OiJub3JtYWwiLGVkaXRUeXBlOiJjYWxjIn0scmFuZ2U6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGVkaXRUeXBlOiJjYWxjIixpdGVtczpbe3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9XX0sZml4ZWRyYW5nZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LGNoZWF0ZXJ0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJpbmRleCIsInZhbHVlIl0sZGZsdDoidmFsdWUiLGVkaXRUeXBlOiJjYWxjIn0sdGlja21vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxpbmVhciIsImFycmF5Il0sZGZsdDoiYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbnRpY2tzOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSx0aWNrdmFsczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx0aWNrdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxzaG93dGlja2xhYmVsczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsic3RhcnQiLCJlbmQiLCJib3RoIiwibm9uZSJdLGRmbHQ6InN0YXJ0IixlZGl0VHlwZToiY2FsYyJ9LHRpY2tmb250Om4oe2VkaXRUeXBlOiJjYWxjIn0pLHRpY2thbmdsZTp7dmFsVHlwZToiYW5nbGUiLGRmbHQ6ImF1dG8iLGVkaXRUeXBlOiJjYWxjIn0sdGlja3ByZWZpeDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sc2hvd3RpY2twcmVmaXg6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJhbGwiLGVkaXRUeXBlOiJjYWxjIn0sdGlja3N1ZmZpeDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sc2hvd3RpY2tzdWZmaXg6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJhbGwiLGVkaXRUeXBlOiJjYWxjIn0sc2hvd2V4cG9uZW50Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwiLCJmaXJzdCIsImxhc3QiLCJub25lIl0sZGZsdDoiYWxsIixlZGl0VHlwZToiY2FsYyJ9LGV4cG9uZW50Zm9ybWF0Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJub25lIiwiZSIsIkUiLCJwb3dlciIsIlNJIiwiQiJdLGRmbHQ6IkIiLGVkaXRUeXBlOiJjYWxjIn0sc2VwYXJhdGV0aG91c2FuZHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSx0aWNrZm9ybWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSx0aWNrZm9ybWF0c3RvcHM6byhpLnRpY2tmb3JtYXRzdG9wcywiY2FsYyIsImZyb20tcm9vdCIpLGNhdGVnb3J5b3JkZXI6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRyYWNlIiwiY2F0ZWdvcnkgYXNjZW5kaW5nIiwiY2F0ZWdvcnkgZGVzY2VuZGluZyIsImFycmF5Il0sZGZsdDoidHJhY2UiLGVkaXRUeXBlOiJjYWxjIn0sY2F0ZWdvcnlhcnJheTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxsYWJlbHBhZGRpbmc6e3ZhbFR5cGU6ImludGVnZXIiLGRmbHQ6MTAsZWRpdFR5cGU6ImNhbGMifSxsYWJlbHByZWZpeDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9LGxhYmVsc3VmZml4Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxzaG93bGluZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LGxpbmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6YS5kZWZhdWx0TGluZSxlZGl0VHlwZToiY2FsYyJ9LGxpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6ImNhbGMifSxncmlkY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiY2FsYyJ9LGdyaWR3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6ImNhbGMifSxzaG93Z3JpZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LG1pbm9yZ3JpZGNvdW50Ont2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxtaW5vcmdyaWR3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6ImNhbGMifSxtaW5vcmdyaWRjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6YS5saWdodExpbmUsZWRpdFR5cGU6ImNhbGMifSxzdGFydGxpbmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0sc3RhcnRsaW5lY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiY2FsYyJ9LHN0YXJ0bGluZXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGVuZGxpbmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0sZW5kbGluZXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGVuZGxpbmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJjYWxjIn0sdGljazA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sZHRpY2s6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sYXJyYXl0aWNrMDp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sYXJyYXlkdGljazp7dmFsVHlwZToiaW50ZWdlciIsbWluOjEsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sX2RlcHJlY2F0ZWQ6e3RpdGxlOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjIn0sdGl0bGVmb250Om4oe2VkaXRUeXBlOiJjYWxjIn0pLHRpdGxlb2Zmc2V0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MTAsZWRpdFR5cGU6ImNhbGMifX0sZWRpdFR5cGU6ImNhbGMifX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vLi4vY29uc3RhbnRzL2RvY3MiOjY4OCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTF9XSw5MDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIikuYWRkT3BhY2l0eSxpPXQoIi4uLy4uL3JlZ2lzdHJ5Iiksbz10KCIuLi8uLi9saWIiKSxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX3ZhbHVlX2RlZmF1bHRzIiksbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja19sYWJlbF9kZWZhdWx0cyIpLGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NhdGVnb3J5X29yZGVyX2RlZmF1bHRzIiksdT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vc2V0X2NvbnZlcnQiKSxoPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2F1dG90eXBlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgZj1yLmxldHRlcixwPXIuZm9udHx8e30sZD1uW2YrImF4aXMiXTtmdW5jdGlvbiBnKHIsbil7cmV0dXJuIG8uY29lcmNlKHQsZSxkLHIsbil9ZnVuY3Rpb24gdihyLG4pe3JldHVybiBvLmNvZXJjZTIodCxlLGQscixuKX1yLm5hbWUmJihlLl9uYW1lPXIubmFtZSxlLl9pZD1yLm5hbWUpO3ZhciBtPWcoInR5cGUiKTsoIi0iPT09bSYmKHIuZGF0YSYmZnVuY3Rpb24odCxlKXtpZigiLSIhPT10LnR5cGUpcmV0dXJuO3ZhciByPXQuX2lkLmNoYXJBdCgwKSxuPXRbcisiY2FsZW5kYXIiXTt0LnR5cGU9aChlLG4pfShlLHIuZGF0YSksIi0iPT09ZS50eXBlP2UudHlwZT0ibGluZWFyIjptPXQudHlwZT1lLnR5cGUpLGcoInNtb290aGluZyIpLGcoImNoZWF0ZXJ0eXBlIiksZygic2hvd3RpY2tsYWJlbHMiKSxnKCJsYWJlbHByZWZpeCIsZisiID0gIiksZygibGFiZWxzdWZmaXgiKSxnKCJzaG93dGlja3ByZWZpeCIpLGcoInNob3d0aWNrc3VmZml4IiksZygic2VwYXJhdGV0aG91c2FuZHMiKSxnKCJ0aWNrZm9ybWF0IiksZygiZXhwb25lbnRmb3JtYXQiKSxnKCJzaG93ZXhwb25lbnQiKSxnKCJjYXRlZ29yeW9yZGVyIiksZygidGlja21vZGUiKSxnKCJ0aWNrdmFscyIpLGcoInRpY2t0ZXh0IiksZygidGljazAiKSxnKCJkdGljayIpLCJhcnJheSI9PT1lLnRpY2ttb2RlJiYoZygiYXJyYXl0aWNrMCIpLGcoImFycmF5ZHRpY2siKSksZygibGFiZWxwYWRkaW5nIiksZS5faG92ZXJ0aXRsZT1mLCJkYXRlIj09PW0pJiZpLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlRGVmYXVsdHMiKSh0LGUsImNhbGVuZGFyIixyLmNhbGVuZGFyKTt1KGUsci5mdWxsTGF5b3V0KSxlLmMycD1vLmlkZW50aXR5O3ZhciB5PWcoImNvbG9yIixyLmRmbHRDb2xvcikseD15PT09dC5jb2xvcj95OnAuY29sb3I7ZygidGl0bGUudGV4dCIpJiYoby5jb2VyY2VGb250KGcsInRpdGxlLmZvbnQiLHtmYW1pbHk6cC5mYW1pbHksc2l6ZTpNYXRoLnJvdW5kKDEuMipwLnNpemUpLGNvbG9yOnh9KSxnKCJ0aXRsZS5vZmZzZXQiKSksZygidGlja2FuZ2xlIiksZygiYXV0b3JhbmdlIiwhZS5pc1ZhbGlkUmFuZ2UodC5yYW5nZSkpJiZnKCJyYW5nZW1vZGUiKSxnKCJyYW5nZSIpLGUuY2xlYW5SYW5nZSgpLGcoImZpeGVkcmFuZ2UiKSxzKHQsZSxnLG0pLGwodCxlLGcsbSxyKSxjKHQsZSxnLHtkYXRhOnIuZGF0YSxkYXRhQXR0cjpmfSk7dmFyIGI9digiZ3JpZGNvbG9yIixhKHksLjMpKSxfPXYoImdyaWR3aWR0aCIpLHc9Zygic2hvd2dyaWQiKTt3fHwoZGVsZXRlIGUuZ3JpZGNvbG9yLGRlbGV0ZSBlLmdyaWR3aWR0aCk7dmFyIGs9digic3RhcnRsaW5lY29sb3IiLHkpLFQ9digic3RhcnRsaW5ld2lkdGgiLF8pO2coInN0YXJ0bGluZSIsZS5zaG93Z3JpZHx8ISFrfHwhIVQpfHwoZGVsZXRlIGUuc3RhcnRsaW5lY29sb3IsZGVsZXRlIGUuc3RhcnRsaW5ld2lkdGgpO3ZhciBNPXYoImVuZGxpbmVjb2xvciIseSksQT12KCJlbmRsaW5ld2lkdGgiLF8pO3JldHVybiBnKCJlbmRsaW5lIixlLnNob3dncmlkfHwhIU18fCEhQSl8fChkZWxldGUgZS5lbmRsaW5lY29sb3IsZGVsZXRlIGUuZW5kbGluZXdpZHRoKSx3PyhnKCJtaW5vcmdyaWRjb3VudCIpLGcoIm1pbm9yZ3JpZHdpZHRoIixfKSxnKCJtaW5vcmdyaWRjb2xvciIsYShiLC4wNikpLGUubWlub3JncmlkY291bnR8fChkZWxldGUgZS5taW5vcmdyaWR3aWR0aCxkZWxldGUgZS5taW5vcmdyaWRjb2xvcikpOihkZWxldGUgZS5ncmlkY29sb3IsZGVsZXRlIGUuZ3JpZFdpZHRoKSwibm9uZSI9PT1lLnNob3d0aWNrbGFiZWxzJiYoZGVsZXRlIGUudGlja2ZvbnQsZGVsZXRlIGUudGlja2FuZ2xlLGRlbGV0ZSBlLnNob3dleHBvbmVudCxkZWxldGUgZS5leHBvbmVudGZvcm1hdCxkZWxldGUgZS50aWNrZm9ybWF0LGRlbGV0ZSBlLnNob3d0aWNrc3VmZml4LGRlbGV0ZSBlLnNob3d0aWNrcHJlZml4KSxlLnNob3d0aWNrc3VmZml4fHxkZWxldGUgZS50aWNrc3VmZml4LGUuc2hvd3RpY2twcmVmaXh8fGRlbGV0ZSBlLnRpY2twcmVmaXgsZygidGlja21vZGUiKSxlfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19hdXRvdHlwZSI6NzY2LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY2F0ZWdvcnlfb3JkZXJfZGVmYXVsdHMiOjc2OSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3NldF9jb252ZXJ0Ijo3ODMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIjo3ODQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX3ZhbHVlX2RlZmF1bHRzIjo3ODYsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vYXR0cmlidXRlcyI6ODk5fV0sOTAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi8uLi9saWIiKS5pc0FycmF5MUQsaT10KCIuL2NoZWF0ZXJfYmFzaXMiKSxvPXQoIi4vYXJyYXlfbWlubWF4Iikscz10KCIuL2NhbGNfZ3JpZGxpbmVzIiksbD10KCIuL2NhbGNfbGFiZWxzIiksYz10KCIuL2NhbGNfY2xpcHBhdGgiKSx1PXQoIi4uL2hlYXRtYXAvY2xlYW5fMmRfYXJyYXkiKSxoPXQoIi4vc21vb3RoX2ZpbGxfMmRfYXJyYXkiKSxmPXQoIi4uL2hlYXRtYXAvY29udmVydF9jb2x1bW5feHl6IikscD10KCIuL3NldF9jb252ZXJ0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5nZXRGcm9tSWQodCxlLnhheGlzKSxkPW4uZ2V0RnJvbUlkKHQsZS55YXhpcyksZz1lLmFheGlzLHY9ZS5iYXhpcyxtPWUueCx5PWUueSx4PVtdO20mJmEobSkmJngucHVzaCgieCIpLHkmJmEoeSkmJngucHVzaCgieSIpLHgubGVuZ3RoJiZmKGUsZyx2LCJhIiwiYiIseCk7dmFyIGI9ZS5fYT1lLl9hfHxlLmEsXz1lLl9iPWUuX2J8fGUuYjttPWUuX3h8fGUueCx5PWUuX3l8fGUueTt2YXIgdz17fTtpZihlLl9jaGVhdGVyKXt2YXIgaz0iaW5kZXgiPT09Zy5jaGVhdGVydHlwZT9iLmxlbmd0aDpiLFQ9ImluZGV4Ij09PXYuY2hlYXRlcnR5cGU/Xy5sZW5ndGg6XzttPWkoayxULGUuY2hlYXRlcnNsb3BlKX1lLl94PW09dShtKSxlLl95PXk9dSh5KSxoKG0sYixfKSxoKHksYixfKSxwKGUpLGUuc2V0U2NhbGUoKTt2YXIgTT1vKG0pLEE9byh5KSxTPS41KihNWzFdLU1bMF0pLEU9LjUqKE1bMV0rTVswXSksTD0uNSooQVsxXS1BWzBdKSxDPS41KihBWzFdK0FbMF0pO3JldHVybiBNPVtFLTEuMypTLEUrMS4zKlNdLEE9W0MtMS4zKkwsQysxLjMqTF0sZS5fZXh0cmVtZXNbci5faWRdPW4uZmluZEV4dHJlbWVzKHIsTSx7cGFkZGVkOiEwfSksZS5fZXh0cmVtZXNbZC5faWRdPW4uZmluZEV4dHJlbWVzKGQsQSx7cGFkZGVkOiEwfSkscyhlLCJhIiwiYiIpLHMoZSwiYiIsImEiKSxsKGUsZyksbChlLHYpLHcuY2xpcHNlZ21lbnRzPWMoZS5feGN0cmwsZS5feWN0cmwsZyx2KSx3Lng9bSx3Lnk9eSx3LmE9Yix3LmI9Xyxbd119fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9oZWF0bWFwL2NsZWFuXzJkX2FycmF5IjoxMDAyLCIuLi9oZWF0bWFwL2NvbnZlcnRfY29sdW1uX3h5eiI6MTAwNCwiLi9hcnJheV9taW5tYXgiOjg5OCwiLi9jYWxjX2NsaXBwYXRoIjo5MDQsIi4vY2FsY19ncmlkbGluZXMiOjkwNSwiLi9jYWxjX2xhYmVscyI6OTA2LCIuL2NoZWF0ZXJfYmFzaXMiOjkwOCwiLi9zZXRfY29udmVydCI6OTIxLCIuL3Ntb290aF9maWxsXzJkX2FycmF5Ijo5MjJ9XSw5MDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGksbyxzPVtdLGw9ISFyLnNtb290aGluZyxjPSEhbi5zbW9vdGhpbmcsdT10WzBdLmxlbmd0aC0xLGg9dC5sZW5ndGgtMTtmb3IoYT0wLGk9W10sbz1bXTthPD11O2ErKylpW2FdPXRbMF1bYV0sb1thXT1lWzBdW2FdO2ZvcihzLnB1c2goe3g6aSx5Om8sYmljdWJpYzpsfSksYT0wLGk9W10sbz1bXTthPD1oO2ErKylpW2FdPXRbYV1bdV0sb1thXT1lW2FdW3VdO2ZvcihzLnB1c2goe3g6aSx5Om8sYmljdWJpYzpjfSksYT11LGk9W10sbz1bXTthPj0wO2EtLSlpW3UtYV09dFtoXVthXSxvW3UtYV09ZVtoXVthXTtmb3Iocy5wdXNoKHt4OmkseTpvLGJpY3ViaWM6bH0pLGE9aCxpPVtdLG89W107YT49MDthLS0paVtoLWFdPXRbYV1bMF0sb1toLWFdPWVbYV1bMF07cmV0dXJuIHMucHVzaCh7eDppLHk6byxiaWN1YmljOmN9KSxzfX0se31dLDkwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaSxvLHMsbCxjLHUsaCxmLHAsZCxnLHYsbSx5LHg9dFsiXyIrZV0sYj10W2UrImF4aXMiXSxfPWIuX2dyaWRsaW5lcz1bXSx3PWIuX21pbm9yZ3JpZGxpbmVzPVtdLGs9Yi5fYm91bmRhcnlsaW5lcz1bXSxUPXRbIl8iK3JdLE09dFtyKyJheGlzIl07ImFycmF5Ij09PWIudGlja21vZGUmJihiLnRpY2t2YWxzPXguc2xpY2UoKSk7dmFyIEE9dC5feGN0cmwsUz10Ll95Y3RybCxFPUFbMF0ubGVuZ3RoLEw9QS5sZW5ndGgsQz10Ll9hLmxlbmd0aCxQPXQuX2IubGVuZ3RoO24ucHJlcFRpY2tzKGIpLCJhcnJheSI9PT1iLnRpY2ttb2RlJiZkZWxldGUgYi50aWNrdmFsczt2YXIgTz1iLnNtb290aGluZz8zOjE7ZnVuY3Rpb24geihuKXt2YXIgYSxpLG8scyxsLGMsdSxoLHAsZCxnLHYsbT1bXSx5PVtdLHg9e307aWYoImIiPT09ZSlmb3IoaT10LmIyaihuKSxvPU1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbihQLTIsaSkpKSxzPWktbyx4Lmxlbmd0aD1QLHguY3Jvc3NMZW5ndGg9Qyx4Lnh5PWZ1bmN0aW9uKGUpe3JldHVybiB0LmV2YWx4eShbXSxlLGkpfSx4LmR4eT1mdW5jdGlvbihlLHIpe3JldHVybiB0LmR4eWRpKFtdLGUsbyxyLHMpfSxhPTA7YTxDO2ErKyljPU1hdGgubWluKEMtMixhKSx1PWEtYyxoPXQuZXZhbHh5KFtdLGEsaSksTS5zbW9vdGhpbmcmJmE+MCYmKHA9dC5keHlkaShbXSxhLTEsbywwLHMpLG0ucHVzaChsWzBdK3BbMF0vMykseS5wdXNoKGxbMV0rcFsxXS8zKSxkPXQuZHh5ZGkoW10sYS0xLG8sMSxzKSxtLnB1c2goaFswXS1kWzBdLzMpLHkucHVzaChoWzFdLWRbMV0vMykpLG0ucHVzaChoWzBdKSx5LnB1c2goaFsxXSksbD1oO2Vsc2UgZm9yKGE9dC5hMmkobiksYz1NYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oQy0yLGEpKSksdT1hLWMseC5sZW5ndGg9Qyx4LmNyb3NzTGVuZ3RoPVAseC54eT1mdW5jdGlvbihlKXtyZXR1cm4gdC5ldmFseHkoW10sYSxlKX0seC5keHk9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5keHlkaihbXSxjLGUsdSxyKX0saT0wO2k8UDtpKyspbz1NYXRoLm1pbihQLTIsaSkscz1pLW8saD10LmV2YWx4eShbXSxhLGkpLE0uc21vb3RoaW5nJiZpPjAmJihnPXQuZHh5ZGooW10sYyxpLTEsdSwwKSxtLnB1c2gobFswXStnWzBdLzMpLHkucHVzaChsWzFdK2dbMV0vMyksdj10LmR4eWRqKFtdLGMsaS0xLHUsMSksbS5wdXNoKGhbMF0tdlswXS8zKSx5LnB1c2goaFsxXS12WzFdLzMpKSxtLnB1c2goaFswXSkseS5wdXNoKGhbMV0pLGw9aDtyZXR1cm4geC5heGlzTGV0dGVyPWUseC5heGlzPWIseC5jcm9zc0F4aXM9TSx4LnZhbHVlPW4seC5jb25zdHZhcj1yLHguaW5kZXg9Zix4Lng9bSx4Lnk9eSx4LnNtb290aGluZz1NLnNtb290aGluZyx4fWZ1bmN0aW9uIEkobil7dmFyIGEsaSxvLHMsbCxjPVtdLHU9W10saD17fTtpZihoLmxlbmd0aD14Lmxlbmd0aCxoLmNyb3NzTGVuZ3RoPVQubGVuZ3RoLCJiIj09PWUpZm9yKG89TWF0aC5tYXgoMCxNYXRoLm1pbihQLTIsbikpLGw9TWF0aC5taW4oMSxNYXRoLm1heCgwLG4tbykpLGgueHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZXZhbHh5KFtdLGUsbil9LGguZHh5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHQuZHh5ZGkoW10sZSxvLHIsbCl9LGE9MDthPEU7YSsrKWNbYV09QVtuKk9dW2FdLHVbYV09U1tuKk9dW2FdO2Vsc2UgZm9yKGk9TWF0aC5tYXgoMCxNYXRoLm1pbihDLTIsbikpLHM9TWF0aC5taW4oMSxNYXRoLm1heCgwLG4taSkpLGgueHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZXZhbHh5KFtdLG4sZSl9LGguZHh5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHQuZHh5ZGooW10saSxlLHMscil9LGE9MDthPEw7YSsrKWNbYV09QVthXVtuKk9dLHVbYV09U1thXVtuKk9dO3JldHVybiBoLmF4aXNMZXR0ZXI9ZSxoLmF4aXM9YixoLmNyb3NzQXhpcz1NLGgudmFsdWU9eFtuXSxoLmNvbnN0dmFyPXIsaC5pbmRleD1uLGgueD1jLGgueT11LGguc21vb3RoaW5nPU0uc21vb3RoaW5nLGh9aWYoImFycmF5Ij09PWIudGlja21vZGUpe2ZvcihsPTVlLTE1LHU9KGM9W01hdGguZmxvb3IoKHgubGVuZ3RoLTEtYi5hcnJheXRpY2swKS9iLmFycmF5ZHRpY2sqKDErbCkpLE1hdGguY2VpbCgtYi5hcnJheXRpY2swL2IuYXJyYXlkdGljay8oMStsKSldLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpWzBdLTEsaD1jWzFdKzEsZj11O2Y8aDtmKyspKG89Yi5hcnJheXRpY2swK2IuYXJyYXlkdGljaypmKTwwfHxvPngubGVuZ3RoLTF8fF8ucHVzaChhKEkobykse2NvbG9yOmIuZ3JpZGNvbG9yLHdpZHRoOmIuZ3JpZHdpZHRofSkpO2ZvcihmPXU7ZjxoO2YrKylpZihzPWIuYXJyYXl0aWNrMCtiLmFycmF5ZHRpY2sqZixnPU1hdGgubWluKHMrYi5hcnJheWR0aWNrLHgubGVuZ3RoLTEpLCEoczwwfHxzPngubGVuZ3RoLTF8fGc8MHx8Zz54Lmxlbmd0aC0xKSlmb3Iodj14W3NdLG09eFtnXSxpPTA7aTxiLm1pbm9yZ3JpZGNvdW50O2krKykoeT1nLXMpPD0wfHwoZD12KyhtLXYpKihpKzEpLyhiLm1pbm9yZ3JpZGNvdW50KzEpKihiLmFycmF5ZHRpY2sveSkpPHhbMF18fGQ+eFt4Lmxlbmd0aC0xXXx8dy5wdXNoKGEoeihkKSx7Y29sb3I6Yi5taW5vcmdyaWRjb2xvcix3aWR0aDpiLm1pbm9yZ3JpZHdpZHRofSkpO2Iuc3RhcnRsaW5lJiZrLnB1c2goYShJKDApLHtjb2xvcjpiLnN0YXJ0bGluZWNvbG9yLHdpZHRoOmIuc3RhcnRsaW5ld2lkdGh9KSksYi5lbmRsaW5lJiZrLnB1c2goYShJKHgubGVuZ3RoLTEpLHtjb2xvcjpiLmVuZGxpbmVjb2xvcix3aWR0aDpiLmVuZGxpbmV3aWR0aH0pKX1lbHNle2ZvcihsPTVlLTE1LHU9KGM9W01hdGguZmxvb3IoKHhbeC5sZW5ndGgtMV0tYi50aWNrMCkvYi5kdGljayooMStsKSksTWF0aC5jZWlsKCh4WzBdLWIudGljazApL2IuZHRpY2svKDErbCkpXS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKVswXSxoPWNbMV0sZj11O2Y8PWg7ZisrKXA9Yi50aWNrMCtiLmR0aWNrKmYsXy5wdXNoKGEoeihwKSx7Y29sb3I6Yi5ncmlkY29sb3Isd2lkdGg6Yi5ncmlkd2lkdGh9KSk7Zm9yKGY9dS0xO2Y8aCsxO2YrKylmb3IocD1iLnRpY2swK2IuZHRpY2sqZixpPTA7aTxiLm1pbm9yZ3JpZGNvdW50O2krKykoZD1wK2IuZHRpY2sqKGkrMSkvKGIubWlub3JncmlkY291bnQrMSkpPHhbMF18fGQ+eFt4Lmxlbmd0aC0xXXx8dy5wdXNoKGEoeihkKSx7Y29sb3I6Yi5taW5vcmdyaWRjb2xvcix3aWR0aDpiLm1pbm9yZ3JpZHdpZHRofSkpO2Iuc3RhcnRsaW5lJiZrLnB1c2goYSh6KHhbMF0pLHtjb2xvcjpiLnN0YXJ0bGluZWNvbG9yLHdpZHRoOmIuc3RhcnRsaW5ld2lkdGh9KSksYi5lbmRsaW5lJiZrLnB1c2goYSh6KHhbeC5sZW5ndGgtMV0pLHtjb2xvcjpiLmVuZGxpbmVjb2xvcix3aWR0aDpiLmVuZGxpbmV3aWR0aH0pKX19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDkwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsaSxvLHM9ZS5fbGFiZWxzPVtdLGw9ZS5fZ3JpZGxpbmVzO2ZvcihyPTA7cjxsLmxlbmd0aDtyKyspbz1sW3JdLC0xIT09WyJzdGFydCIsImJvdGgiXS5pbmRleE9mKGUuc2hvd3RpY2tsYWJlbHMpJiYoaT1uLnRpY2tUZXh0KGUsby52YWx1ZSksYShpLHtwcmVmaXg6dm9pZCAwLHN1ZmZpeDp2b2lkIDAsZW5kQW5jaG9yOiEwLHh5Om8ueHkoMCksZHh5Om8uZHh5KDAsMCksYXhpczpvLmF4aXMsbGVuZ3RoOm8uY3Jvc3NBeGlzLmxlbmd0aCxmb250Om8uYXhpcy50aWNrZm9udCxpc0ZpcnN0OjA9PT1yLGlzTGFzdDpyPT09bC5sZW5ndGgtMX0pLHMucHVzaChpKSksLTEhPT1bImVuZCIsImJvdGgiXS5pbmRleE9mKGUuc2hvd3RpY2tsYWJlbHMpJiYoaT1uLnRpY2tUZXh0KGUsby52YWx1ZSksYShpLHtlbmRBbmNob3I6ITEseHk6by54eShvLmNyb3NzTGVuZ3RoLTEpLGR4eTpvLmR4eShvLmNyb3NzTGVuZ3RoLTIsMSksYXhpczpvLmF4aXMsbGVuZ3RoOm8uY3Jvc3NBeGlzLmxlbmd0aCxmb250Om8uYXhpcy50aWNrZm9udCxpc0ZpcnN0OjA9PT1yLGlzTGFzdDpyPT09bC5sZW5ndGgtMX0pLHMucHVzaChpKSl9fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDkwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dFswXS1lWzBdLGk9dFsxXS1lWzFdLG89clswXS1lWzBdLHM9clsxXS1lWzFdLGw9TWF0aC5wb3coYSphK2kqaSwuMjUpLGM9TWF0aC5wb3cobypvK3MqcywuMjUpLHU9KGMqYyphLWwqbCpvKSpuLGg9KGMqYyppLWwqbCpzKSpuLGY9YyoobCtjKSozLHA9bCoobCtjKSozO3JldHVybltbZVswXSsoZiYmdS9mKSxlWzFdKyhmJiZoL2YpXSxbZVswXS0ocCYmdS9wKSxlWzFdLShwJiZoL3ApXV19fSx7fV0sOTA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxpLG8scyxsLGMsdT1bXSxoPW4odCk/dC5sZW5ndGg6dCxmPW4oZSk/ZS5sZW5ndGg6ZSxwPW4odCk/dDpudWxsLGQ9bihlKT9lOm51bGw7cCYmKG89KHAubGVuZ3RoLTEpLyhwW3AubGVuZ3RoLTFdLXBbMF0pLyhoLTEpKSxkJiYocz0oZC5sZW5ndGgtMSkvKGRbZC5sZW5ndGgtMV0tZFswXSkvKGYtMSkpO3ZhciBnPTEvMCx2PS0xLzA7Zm9yKGk9MDtpPGY7aSsrKWZvcih1W2ldPVtdLGw9ZD8oZFtpXS1kWzBdKSpzOmkvKGYtMSksYT0wO2E8aDthKyspYz0ocD8ocFthXS1wWzBdKSpvOmEvKGgtMSkpLWwqcixnPU1hdGgubWluKGMsZyksdj1NYXRoLm1heChjLHYpLHVbaV1bYV09Yzt2YXIgbT0xLyh2LWcpLHk9LWcqbTtmb3IoaT0wO2k8ZjtpKyspZm9yKGE9MDthPGg7YSsrKXVbaV1bYV09bSp1W2ldW2FdK3k7cmV0dXJuIHV9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY2F0bXVsbF9yb20iKSxhPXQoIi4uLy4uL2xpYiIpLmVuc3VyZUFycmF5O2Z1bmN0aW9uIGkodCxlLHIpe3ZhciBuPS0uNSpyWzBdKzEuNSplWzBdLGE9LS41KnJbMV0rMS41KmVbMV07cmV0dXJuWygyKm4rdFswXSkvMywoMiphK3RbMV0pLzNdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvLHMsbCl7dmFyIGMsdSxoLGYscCxkLGcsdixtLHkseD1yWzBdLmxlbmd0aCxiPXIubGVuZ3RoLF89cz8zKngtMjp4LHc9bD8zKmItMjpiO2Zvcih0PWEodCx3KSxlPWEoZSx3KSxoPTA7aDx3O2grKyl0W2hdPWEodFtoXSxfKSxlW2hdPWEoZVtoXSxfKTtmb3IodT0wLGY9MDt1PGI7dSsrLGYrPWw/MzoxKWZvcihwPXRbZl0sZD1lW2ZdLGc9clt1XSx2PW9bdV0sYz0wLGg9MDtjPHg7YysrLGgrPXM/MzoxKXBbaF09Z1tjXSxkW2hdPXZbY107aWYocylmb3IodT0wLGY9MDt1PGI7dSsrLGYrPWw/MzoxKXtmb3IoYz0xLGg9MztjPHgtMTtjKyssaCs9MyltPW4oW3JbdV1bYy0xXSxvW3VdW2MtMV1dLFtyW3VdW2NdLG9bdV1bY11dLFtyW3VdW2MrMV0sb1t1XVtjKzFdXSxzKSx0W2ZdW2gtMV09bVswXVswXSxlW2ZdW2gtMV09bVswXVsxXSx0W2ZdW2grMV09bVsxXVswXSxlW2ZdW2grMV09bVsxXVsxXTt5PWkoW3RbZl1bMF0sZVtmXVswXV0sW3RbZl1bMl0sZVtmXVsyXV0sW3RbZl1bM10sZVtmXVszXV0pLHRbZl1bMV09eVswXSxlW2ZdWzFdPXlbMV0seT1pKFt0W2ZdW18tMV0sZVtmXVtfLTFdXSxbdFtmXVtfLTNdLGVbZl1bXy0zXV0sW3RbZl1bXy00XSxlW2ZdW18tNF1dKSx0W2ZdW18tMl09eVswXSxlW2ZdW18tMl09eVsxXX1pZihsKWZvcihoPTA7aDxfO2grKyl7Zm9yKGY9MztmPHctMztmKz0zKW09bihbdFtmLTNdW2hdLGVbZi0zXVtoXV0sW3RbZl1baF0sZVtmXVtoXV0sW3RbZiszXVtoXSxlW2YrM11baF1dLGwpLHRbZi0xXVtoXT1tWzBdWzBdLGVbZi0xXVtoXT1tWzBdWzFdLHRbZisxXVtoXT1tWzFdWzBdLGVbZisxXVtoXT1tWzFdWzFdO3k9aShbdFswXVtoXSxlWzBdW2hdXSxbdFsyXVtoXSxlWzJdW2hdXSxbdFszXVtoXSxlWzNdW2hdXSksdFsxXVtoXT15WzBdLGVbMV1baF09eVsxXSx5PWkoW3Rbdy0xXVtoXSxlW3ctMV1baF1dLFt0W3ctM11baF0sZVt3LTNdW2hdXSxbdFt3LTRdW2hdLGVbdy00XVtoXV0pLHRbdy0yXVtoXT15WzBdLGVbdy0yXVtoXT15WzFdfWlmKHMmJmwpZm9yKGY9MTtmPHc7Zis9KGYrMSklMz09MD8yOjEpe2ZvcihoPTM7aDxfLTM7aCs9MyltPW4oW3RbZl1baC0zXSxlW2ZdW2gtM11dLFt0W2ZdW2hdLGVbZl1baF1dLFt0W2ZdW2grM10sZVtmXVtoKzNdXSxzKSx0W2ZdW2gtMV09LjUqKHRbZl1baC0xXSttWzBdWzBdKSxlW2ZdW2gtMV09LjUqKGVbZl1baC0xXSttWzBdWzFdKSx0W2ZdW2grMV09LjUqKHRbZl1baCsxXSttWzFdWzBdKSxlW2ZdW2grMV09LjUqKGVbZl1baCsxXSttWzFdWzFdKTt5PWkoW3RbZl1bMF0sZVtmXVswXV0sW3RbZl1bMl0sZVtmXVsyXV0sW3RbZl1bM10sZVtmXVszXV0pLHRbZl1bMV09LjUqKHRbZl1bMV0reVswXSksZVtmXVsxXT0uNSooZVtmXVsxXSt5WzFdKSx5PWkoW3RbZl1bXy0xXSxlW2ZdW18tMV1dLFt0W2ZdW18tM10sZVtmXVtfLTNdXSxbdFtmXVtfLTRdLGVbZl1bXy00XV0pLHRbZl1bXy0yXT0uNSoodFtmXVtfLTJdK3lbMF0pLGVbZl1bXy0yXT0uNSooZVtmXVtfLTJdK3lbMV0pfXJldHVyblt0LGVdfX0seyIuLi8uLi9saWIiOjcxNywiLi9jYXRtdWxsX3JvbSI6OTA3fV0sOTEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17UkVMQVRJVkVfQ1VMTF9UT0xFUkFOQ0U6MWUtNn19LHt9XSw5MTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZSYmcj9mdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvLHMsbCxjLHUsaDtlfHwoZT1bXSkscio9MyxuKj0zO3ZhciBmPWEqYSxwPTEtYSxkPXAqcCxnPXAqYSoyLHY9LTMqZCxtPTMqKGQtZykseT0zKihnLWYpLHg9MypmLGI9aSppLF89YippLHc9MS1pLGs9dyp3LFQ9ayp3O2ZvcihoPTA7aDx0Lmxlbmd0aDtoKyspbz12Kih1PXRbaF0pW25dW3JdK20qdVtuXVtyKzFdK3kqdVtuXVtyKzJdK3gqdVtuXVtyKzNdLHM9dip1W24rMV1bcl0rbSp1W24rMV1bcisxXSt5KnVbbisxXVtyKzJdK3gqdVtuKzFdW3IrM10sbD12KnVbbisyXVtyXSttKnVbbisyXVtyKzFdK3kqdVtuKzJdW3IrMl0reCp1W24rMl1bciszXSxjPXYqdVtuKzNdW3JdK20qdVtuKzNdW3IrMV0reSp1W24rM11bcisyXSt4KnVbbiszXVtyKzNdLGVbaF09VCpvKzMqKGsqaSpzK3cqYipsKStfKmM7cmV0dXJuIGV9OmU/ZnVuY3Rpb24oZSxyLG4sYSxpKXt2YXIgbyxzLGwsYztlfHwoZT1bXSkscio9Mzt2YXIgdT1hKmEsaD0xLWEsZj1oKmgscD1oKmEqMixkPS0zKmYsZz0zKihmLXApLHY9MyoocC11KSxtPTMqdSx5PTEtaTtmb3IobD0wO2w8dC5sZW5ndGg7bCsrKW89ZCooYz10W2xdKVtuXVtyXStnKmNbbl1bcisxXSt2KmNbbl1bcisyXSttKmNbbl1bciszXSxzPWQqY1tuKzFdW3JdK2cqY1tuKzFdW3IrMV0rdipjW24rMV1bcisyXSttKmNbbisxXVtyKzNdLGVbbF09eSpvK2kqcztyZXR1cm4gZX06cj9mdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvLHMsbCxjLHUsaDtlfHwoZT1bXSksbio9Mzt2YXIgZj1pKmkscD1mKmksZD0xLWksZz1kKmQsdj1nKmQ7Zm9yKHU9MDt1PHQubGVuZ3RoO3UrKylvPShoPXRbdV0pW25dW3IrMV0taFtuXVtyXSxzPWhbbisxXVtyKzFdLWhbbisxXVtyXSxsPWhbbisyXVtyKzFdLWhbbisyXVtyXSxjPWhbbiszXVtyKzFdLWhbbiszXVtyXSxlW3VdPXYqbyszKihnKmkqcytkKmYqbCkrcCpjO3JldHVybiBlfTpmdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvLHMsbCxjO2V8fChlPVtdKTt2YXIgdT0xLWk7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylvPShjPXRbbF0pW25dW3IrMV0tY1tuXVtyXSxzPWNbbisxXVtyKzFdLWNbbisxXVtyXSxlW2xdPXUqbytpKnM7cmV0dXJuIGV9fX0se31dLDkxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlJiZyP2Z1bmN0aW9uKGUscixuLGEsaSl7dmFyIG8scyxsLGMsdSxoO2V8fChlPVtdKSxyKj0zLG4qPTM7dmFyIGY9YSphLHA9ZiphLGQ9MS1hLGc9ZCpkLHY9ZypkLG09aSppLHk9MS1pLHg9eSp5LGI9eSppKjIsXz0tMyp4LHc9MyooeC1iKSxrPTMqKGItbSksVD0zKm07Zm9yKGg9MDtoPHQubGVuZ3RoO2grKylvPV8qKHU9dFtoXSlbbl1bcl0rdyp1W24rMV1bcl0rayp1W24rMl1bcl0rVCp1W24rM11bcl0scz1fKnVbbl1bcisxXSt3KnVbbisxXVtyKzFdK2sqdVtuKzJdW3IrMV0rVCp1W24rM11bcisxXSxsPV8qdVtuXVtyKzJdK3cqdVtuKzFdW3IrMl0rayp1W24rMl1bcisyXStUKnVbbiszXVtyKzJdLGM9Xyp1W25dW3IrM10rdyp1W24rMV1bciszXStrKnVbbisyXVtyKzNdK1QqdVtuKzNdW3IrM10sZVtoXT12Km8rMyooZyphKnMrZCpmKmwpK3AqYztyZXR1cm4gZX06ZT9mdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvLHMsbCxjLHUsaDtlfHwoZT1bXSkscio9Mzt2YXIgZj1pKmkscD1mKmksZD0xLWksZz1kKmQsdj1nKmQ7Zm9yKHU9MDt1PHQubGVuZ3RoO3UrKylvPShoPXRbdV0pW24rMV1bcl0taFtuXVtyXSxzPWhbbisxXVtyKzFdLWhbbl1bcisxXSxsPWhbbisxXVtyKzJdLWhbbl1bcisyXSxjPWhbbisxXVtyKzNdLWhbbl1bciszXSxlW3VdPXYqbyszKihnKmkqcytkKmYqbCkrcCpjO3JldHVybiBlfTpyP2Z1bmN0aW9uKGUscixuLGEsaSl7dmFyIG8scyxsLGM7ZXx8KGU9W10pLG4qPTM7dmFyIHU9MS1hLGg9aSppLGY9MS1pLHA9ZipmLGQ9ZippKjIsZz0tMypwLHY9MyoocC1kKSxtPTMqKGQtaCkseT0zKmg7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylvPWcqKGM9dFtsXSlbbl1bcl0rdipjW24rMV1bcl0rbSpjW24rMl1bcl0reSpjW24rM11bcl0scz1nKmNbbl1bcisxXSt2KmNbbisxXVtyKzFdK20qY1tuKzJdW3IrMV0reSpjW24rM11bcisxXSxlW2xdPXUqbythKnM7cmV0dXJuIGV9OmZ1bmN0aW9uKGUscixuLGEsaSl7dmFyIG8scyxsLGM7ZXx8KGU9W10pO3ZhciB1PTEtYTtmb3IobD0wO2w8dC5sZW5ndGg7bCsrKW89KGM9dFtsXSlbbisxXVtyXS1jW25dW3JdLHM9Y1tuKzFdW3IrMV0tY1tuXVtyKzFdLGVbbF09dSpvK2EqcztyZXR1cm4gZX19fSx7fV0sOTEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPWUtMixvPXItMjtyZXR1cm4gbiYmYT9mdW5jdGlvbihlLHIsbil7dmFyIGEscyxsLGMsdSxoO2V8fChlPVtdKTt2YXIgZj1NYXRoLm1heCgwLE1hdGgubWluKE1hdGguZmxvb3IociksaSkpLHA9TWF0aC5tYXgoMCxNYXRoLm1pbihNYXRoLmZsb29yKG4pLG8pKSxkPU1hdGgubWF4KDAsTWF0aC5taW4oMSxyLWYpKSxnPU1hdGgubWF4KDAsTWF0aC5taW4oMSxuLXApKTtmKj0zLHAqPTM7dmFyIHY9ZCpkLG09dipkLHk9MS1kLHg9eSp5LGI9eCp5LF89ZypnLHc9XypnLGs9MS1nLFQ9ayprLE09VCprO2ZvcihoPTA7aDx0Lmxlbmd0aDtoKyspYT1iKih1PXRbaF0pW3BdW2ZdKzMqKHgqZCp1W3BdW2YrMV0reSp2KnVbcF1bZisyXSkrbSp1W3BdW2YrM10scz1iKnVbcCsxXVtmXSszKih4KmQqdVtwKzFdW2YrMV0reSp2KnVbcCsxXVtmKzJdKSttKnVbcCsxXVtmKzNdLGw9Yip1W3ArMl1bZl0rMyooeCpkKnVbcCsyXVtmKzFdK3kqdip1W3ArMl1bZisyXSkrbSp1W3ArMl1bZiszXSxjPWIqdVtwKzNdW2ZdKzMqKHgqZCp1W3ArM11bZisxXSt5KnYqdVtwKzNdW2YrMl0pK20qdVtwKzNdW2YrM10sZVtoXT1NKmErMyooVCpnKnMraypfKmwpK3cqYztyZXR1cm4gZX06bj9mdW5jdGlvbihlLHIsbil7ZXx8KGU9W10pO3ZhciBhLHMsbCxjLHUsaCxmPU1hdGgubWF4KDAsTWF0aC5taW4oTWF0aC5mbG9vcihyKSxpKSkscD1NYXRoLm1heCgwLE1hdGgubWluKE1hdGguZmxvb3IobiksbykpLGQ9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHItZikpLGc9TWF0aC5tYXgoMCxNYXRoLm1pbigxLG4tcCkpO2YqPTM7dmFyIHY9ZCpkLG09dipkLHk9MS1kLHg9eSp5LGI9eCp5LF89MS1nO2Zvcih1PTA7dTx0Lmxlbmd0aDt1KyspYT1fKihoPXRbdV0pW3BdW2ZdK2cqaFtwKzFdW2ZdLHM9XypoW3BdW2YrMV0rZypoW3ArMV1bZisxXSxsPV8qaFtwXVtmKzJdK2cqaFtwKzFdW2YrMV0sYz1fKmhbcF1bZiszXStnKmhbcCsxXVtmKzFdLGVbdV09YiphKzMqKHgqZCpzK3kqdipsKSttKmM7cmV0dXJuIGV9OmE/ZnVuY3Rpb24oZSxyLG4pe2V8fChlPVtdKTt2YXIgYSxzLGwsYyx1LGgsZj1NYXRoLm1heCgwLE1hdGgubWluKE1hdGguZmxvb3IociksaSkpLHA9TWF0aC5tYXgoMCxNYXRoLm1pbihNYXRoLmZsb29yKG4pLG8pKSxkPU1hdGgubWF4KDAsTWF0aC5taW4oMSxyLWYpKSxnPU1hdGgubWF4KDAsTWF0aC5taW4oMSxuLXApKTtwKj0zO3ZhciB2PWcqZyxtPXYqZyx5PTEtZyx4PXkqeSxiPXgqeSxfPTEtZDtmb3IodT0wO3U8dC5sZW5ndGg7dSsrKWE9XyooaD10W3VdKVtwXVtmXStkKmhbcF1bZisxXSxzPV8qaFtwKzFdW2ZdK2QqaFtwKzFdW2YrMV0sbD1fKmhbcCsyXVtmXStkKmhbcCsyXVtmKzFdLGM9XypoW3ArM11bZl0rZCpoW3ArM11bZisxXSxlW3VdPWIqYSszKih4Kmcqcyt5KnYqbCkrbSpjO3JldHVybiBlfTpmdW5jdGlvbihlLHIsbil7ZXx8KGU9W10pO3ZhciBhLHMsbCxjLHU9TWF0aC5tYXgoMCxNYXRoLm1pbihNYXRoLmZsb29yKHIpLGkpKSxoPU1hdGgubWF4KDAsTWF0aC5taW4oTWF0aC5mbG9vcihuKSxvKSksZj1NYXRoLm1heCgwLE1hdGgubWluKDEsci11KSkscD1NYXRoLm1heCgwLE1hdGgubWluKDEsbi1oKSksZD0xLXAsZz0xLWY7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylhPWcqKGM9dFtsXSlbaF1bdV0rZipjW2hdW3UrMV0scz1nKmNbaCsxXVt1XStmKmNbaCsxXVt1KzFdLGVbbF09ZCphK3AqcztyZXR1cm4gZX19fSx7fV0sOTE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi94eV9kZWZhdWx0cyIpLGk9dCgiLi9hYl9kZWZhdWx0cyIpLG89dCgiLi9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gYyhyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsbyxyLGEpfWUuX2NsaXBQYXRoSWQ9ImNsaXAiK2UudWlkKyJjYXJwZXQiO3ZhciB1PWMoImNvbG9yIixzLmRlZmF1bHRMaW5lKTsobi5jb2VyY2VGb250KGMsImZvbnQiKSxjKCJjYXJwZXQiKSxpKHQsZSxsLGMsdSksZS5hJiZlLmIpPyhlLmEubGVuZ3RoPDMmJihlLmFheGlzLnNtb290aGluZz0wKSxlLmIubGVuZ3RoPDMmJihlLmJheGlzLnNtb290aGluZz0wKSxhKHQsZSxjKXx8KGUudmlzaWJsZT0hMSksZS5fY2hlYXRlciYmYygiY2hlYXRlcnNsb3BlIikpOmUudmlzaWJsZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjo1OTEsIi4uLy4uL2xpYiI6NzE3LCIuL2FiX2RlZmF1bHRzIjo4OTcsIi4vYXR0cmlidXRlcyI6ODk5LCIuL3h5X2RlZmF1bHRzIjo5MjN9XSw5MTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxwbG90OnQoIi4vcGxvdCIpLGNhbGM6dCgiLi9jYWxjIiksYW5pbWF0YWJsZTohMCxpc0NvbnRhaW5lcjohMCxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiY2FycGV0IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwiY2FycGV0IiwiY2FycGV0QXhpcyIsIm5vdExlZ2VuZElzb2xhdGFibGUiLCJub011bHRpQ2F0ZWdvcnkiLCJub0hvdmVyIiwibm9Tb3J0aW5nQnlWYWx1ZSJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Nzc2LCIuL2F0dHJpYnV0ZXMiOjg5OSwiLi9jYWxjIjo5MDMsIi4vZGVmYXVsdHMiOjkxNCwiLi9wbG90Ijo5MjB9XSw5MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49dC5fZnVsbERhdGEubGVuZ3RoLGE9MDthPG47YSsrKXt2YXIgaT10Ll9mdWxsRGF0YVthXTtpZihpLmluZGV4IT09ZS5pbmRleCYmKCJjYXJwZXQiPT09aS50eXBlJiYocnx8KHI9aSksaS5jYXJwZXQ9PT1lLmNhcnBldCkpKXJldHVybiBpfXJldHVybiByfX0se31dLDkxNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4iIjt2YXIgbixhPVtdLGk9cj8zOjE7Zm9yKG49MDtuPHQubGVuZ3RoO24rPWkpYS5wdXNoKHRbbl0rIiwiK2Vbbl0pLHImJm48dC5sZW5ndGgtaSYmKGEucHVzaCgiQyIpLGEucHVzaChbdFtuKzFdKyIsIitlW24rMV0sdFtuKzJdKyIsIitlW24rMl0rIiAiXS5qb2luKCIgIikpKTtyZXR1cm4gYS5qb2luKHI/IiI6IkwiKX19LHt9XSw5MTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIikuaXNBcnJheU9yVHlwZWRBcnJheTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhO2ZvcihuKHQpP3QubGVuZ3RoPmUubGVuZ3RoJiYodD10LnNsaWNlKDAsZS5sZW5ndGgpKTp0PVtdLGE9MDthPGUubGVuZ3RoO2ErKyl0W2FdPXIoZVthXSk7cmV0dXJuIHR9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG89YVswXSp0LmRwZHgoZSkscz1hWzFdKnQuZHBkeShyKSxsPTEsYz0xO2lmKGkpe3ZhciB1PU1hdGguc3FydChhWzBdKmFbMF0rYVsxXSphWzFdKSxoPU1hdGguc3FydChpWzBdKmlbMF0raVsxXSppWzFdKSxmPShhWzBdKmlbMF0rYVsxXSppWzFdKS91L2g7Yz1NYXRoLm1heCgwLGYpfXZhciBwPTE4MCpNYXRoLmF0YW4yKHMsbykvTWF0aC5QSTtyZXR1cm4gcDwtOTA/KHArPTE4MCxsPS1sKTpwPjkwJiYocC09MTgwLGw9LWwpLHthbmdsZTpwLGZsaXA6bCxwOnQuYzJwKG4sZSxyKSxvZmZzZXRNdWx0cGxpZXI6Y319fSx7fV0sOTIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxpPXQoIi4vbWFwXzFkX2FycmF5Iiksbz10KCIuL21ha2VwYXRoIikscz10KCIuL29yaWVudF90ZXh0IiksbD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxjPXQoIi4uLy4uL2xpYiIpLHU9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpO2Z1bmN0aW9uIGgodCxlLHIsYSxzLGwpe3ZhciBjPSJjb25zdC0iK3MrIi1saW5lcyIsdT1yLnNlbGVjdEFsbCgiLiIrYykuZGF0YShsKTt1LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZChjLCEwKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLHUuZWFjaChmdW5jdGlvbihyKXt2YXIgYT1yLHM9YS54LGw9YS55LGM9aShbXSxzLHQuYzJwKSx1PWkoW10sbCxlLmMycCksaD0iTSIrbyhjLHUsYS5zbW9vdGhpbmcpO24uc2VsZWN0KHRoaXMpLmF0dHIoImQiLGgpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGEud2lkdGgpLnN0eWxlKCJzdHJva2UiLGEuY29sb3IpLnN0eWxlKCJmaWxsIiwibm9uZSIpfSksdS5leGl0KCkucmVtb3ZlKCl9ZnVuY3Rpb24gZih0LGUscixpLG8sYyx1LGgpe3ZhciBmPWMuc2VsZWN0QWxsKCJ0ZXh0LiIraCkuZGF0YSh1KTtmLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChoLCEwKTt2YXIgcD0wLGQ9e307cmV0dXJuIGYuZWFjaChmdW5jdGlvbihvLGMpe3ZhciB1O2lmKCJhdXRvIj09PW8uYXhpcy50aWNrYW5nbGUpdT1zKGksZSxyLG8ueHksby5keHkpO2Vsc2V7dmFyIGg9KG8uYXhpcy50aWNrYW5nbGUrMTgwKSpNYXRoLlBJLzE4MDt1PXMoaSxlLHIsby54eSxbTWF0aC5jb3MoaCksTWF0aC5zaW4oaCldKX1jfHwoZD17YW5nbGU6dS5hbmdsZSxmbGlwOnUuZmxpcH0pO3ZhciBmPShvLmVuZEFuY2hvcj8tMToxKSp1LmZsaXAsZz1uLnNlbGVjdCh0aGlzKS5hdHRyKHsidGV4dC1hbmNob3IiOmY+MD8ic3RhcnQiOiJlbmQiLCJkYXRhLW5vdGV4IjoxfSkuY2FsbChhLmZvbnQsby5mb250KS50ZXh0KG8udGV4dCkuY2FsbChsLmNvbnZlcnRUb1RzcGFucyx0KSx2PWEuYkJveCh0aGlzKTtnLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3UucFswXSsiLCIrdS5wWzFdKyIpIHJvdGF0ZSgiK3UuYW5nbGUrIil0cmFuc2xhdGUoIitvLmF4aXMubGFiZWxwYWRkaW5nKmYrIiwiKy4zKnYuaGVpZ2h0KyIpIikscD1NYXRoLm1heChwLHYud2lkdGgrby5heGlzLmxhYmVscGFkZGluZyl9KSxmLmV4aXQoKS5yZW1vdmUoKSxkLm1heEV4dGVudD1wLGR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBsPWUueGF4aXMsdT1lLnlheGlzLHA9dC5fZnVsbExheW91dC5fY2xpcHM7Yy5tYWtlVHJhY2VHcm91cHMoYSxyLCJ0cmFjZSIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9bi5zZWxlY3QodGhpcyksYT1lWzBdLGQ9YS50cmFjZSx2PWQuYWF4aXMsbT1kLmJheGlzLHk9Yy5lbnN1cmVTaW5nbGUociwiZyIsIm1pbm9ybGF5ZXIiKSx4PWMuZW5zdXJlU2luZ2xlKHIsImciLCJtYWpvcmxheWVyIiksYj1jLmVuc3VyZVNpbmdsZShyLCJnIiwiYm91bmRhcnlsYXllciIpLF89Yy5lbnN1cmVTaW5nbGUociwiZyIsImxhYmVsbGF5ZXIiKTtyLnN0eWxlKCJvcGFjaXR5IixkLm9wYWNpdHkpLGgobCx1LHgsdiwiYSIsdi5fZ3JpZGxpbmVzKSxoKGwsdSx4LG0sImIiLG0uX2dyaWRsaW5lcyksaChsLHUseSx2LCJhIix2Ll9taW5vcmdyaWRsaW5lcyksaChsLHUseSxtLCJiIixtLl9taW5vcmdyaWRsaW5lcyksaChsLHUsYix2LCJhLWJvdW5kYXJ5Iix2Ll9ib3VuZGFyeWxpbmVzKSxoKGwsdSxiLG0sImItYm91bmRhcnkiLG0uX2JvdW5kYXJ5bGluZXMpO3ZhciB3PWYodCxsLHUsZCxhLF8sdi5fbGFiZWxzLCJhLWxhYmVsIiksaz1mKHQsbCx1LGQsYSxfLG0uX2xhYmVscywiYi1sYWJlbCIpOyFmdW5jdGlvbih0LGUscixuLGEsaSxvLGwpe3ZhciB1LGgsZixwLGQ9Yy5hZ2dOdW1zKE1hdGgubWluLG51bGwsci5hKSx2PWMuYWdnTnVtcyhNYXRoLm1heCxudWxsLHIuYSksbT1jLmFnZ051bXMoTWF0aC5taW4sbnVsbCxyLmIpLHk9Yy5hZ2dOdW1zKE1hdGgubWF4LG51bGwsci5iKTt1PS41KihkK3YpLGg9bSxmPXIuYWIyeHkodSxoLCEwKSxwPXIuZHh5ZGFfcm91Z2godSxoKSx2b2lkIDA9PT1vLmFuZ2xlJiZjLmV4dGVuZEZsYXQobyxzKHIsYSxpLGYsci5keHlkYl9yb3VnaCh1LGgpKSk7Zyh0LGUscixuLGYscCxyLmFheGlzLGEsaSxvLCJhLXRpdGxlIiksdT1kLGg9LjUqKG0reSksZj1yLmFiMnh5KHUsaCwhMCkscD1yLmR4eWRiX3JvdWdoKHUsaCksdm9pZCAwPT09bC5hbmdsZSYmYy5leHRlbmRGbGF0KGwscyhyLGEsaSxmLHIuZHh5ZGFfcm91Z2godSxoKSkpO2codCxlLHIsbixmLHAsci5iYXhpcyxhLGksbCwiYi10aXRsZSIpfSh0LF8sZCxhLGwsdSx3LGspLGZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIHMsbCx1LGgsZj1yLnNlbGVjdCgiIyIrdC5fY2xpcFBhdGhJZCk7Zi5zaXplKCl8fChmPXIuYXBwZW5kKCJjbGlwUGF0aCIpLmNsYXNzZWQoImNhcnBldGNsaXAiLCEwKSk7dmFyIHA9Yy5lbnN1cmVTaW5nbGUoZiwicGF0aCIsImNhcnBldGJvdW5kYXJ5IiksZD1lLmNsaXBzZWdtZW50cyxnPVtdO2ZvcihoPTA7aDxkLmxlbmd0aDtoKyspcz1kW2hdLGw9aShbXSxzLngsbi5jMnApLHU9aShbXSxzLnksYS5jMnApLGcucHVzaChvKGwsdSxzLmJpY3ViaWMpKTt2YXIgdj0iTSIrZy5qb2luKCJMIikrIloiO2YuYXR0cigiaWQiLHQuX2NsaXBQYXRoSWQpLHAuYXR0cigiZCIsdil9KGQsYSxwLGwsdSl9KX07dmFyIHA9dS5MSU5FX1NQQUNJTkcsZD0oMS11Lk1JRF9TSElGVCkvcCsxO2Z1bmN0aW9uIGcodCxlLHIsaSxvLGMsdSxoLGYsZyx2KXt2YXIgbT1bXTt1LnRpdGxlLnRleHQmJm0ucHVzaCh1LnRpdGxlLnRleHQpO3ZhciB5PWUuc2VsZWN0QWxsKCJ0ZXh0LiIrdikuZGF0YShtKSx4PWcubWF4RXh0ZW50O3kuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKHYsITApLHkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXMocixoLGYsbyxjKTstMT09PVsic3RhcnQiLCJib3RoIl0uaW5kZXhPZih1LnNob3d0aWNrbGFiZWxzKSYmKHg9MCk7dmFyIGk9dS50aXRsZS5mb250LnNpemU7eCs9aSt1LnRpdGxlLm9mZnNldDt2YXIgdj0oZy5hbmdsZSsoZy5mbGlwPDA/MTgwOjApLWUuYW5nbGUrNDUwKSUzNjAsbT12PjkwJiZ2PDI3MCx5PW4uc2VsZWN0KHRoaXMpO3kudGV4dCh1LnRpdGxlLnRleHQpLmNhbGwobC5jb252ZXJ0VG9Uc3BhbnMsdCksbSYmKHg9KC1sLmxpbmVDb3VudCh5KStkKSpwKmkteCkseS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLnBbMF0rIiwiK2UucFsxXSsiKSByb3RhdGUoIitlLmFuZ2xlKyIpIHRyYW5zbGF0ZSgwLCIreCsiKSIpLmNsYXNzZWQoInVzZXItc2VsZWN0LW5vbmUiLCEwKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmNhbGwoYS5mb250LHUudGl0bGUuZm9udCl9KSx5LmV4aXQoKS5yZW1vdmUoKX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjY4NiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuL21ha2VwYXRoIjo5MTcsIi4vbWFwXzFkX2FycmF5Ijo5MTgsIi4vb3JpZW50X3RleHQiOjkxOSxkMzoxNjV9XSw5MjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb25zdGFudHMiKSxhPXQoIi4uLy4uL2xpYi9zZWFyY2giKS5maW5kQmluLGk9dCgiLi9jb21wdXRlX2NvbnRyb2xfcG9pbnRzIiksbz10KCIuL2NyZWF0ZV9zcGxpbmVfZXZhbHVhdG9yIikscz10KCIuL2NyZWF0ZV9pX2Rlcml2YXRpdmVfZXZhbHVhdG9yIiksbD10KCIuL2NyZWF0ZV9qX2Rlcml2YXRpdmVfZXZhbHVhdG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Escj10Ll9iLGM9ZS5sZW5ndGgsdT1yLmxlbmd0aCxoPXQuYWF4aXMsZj10LmJheGlzLHA9ZVswXSxkPWVbYy0xXSxnPXJbMF0sdj1yW3UtMV0sbT1lW2UubGVuZ3RoLTFdLWVbMF0seT1yW3IubGVuZ3RoLTFdLXJbMF0seD1tKm4uUkVMQVRJVkVfQ1VMTF9UT0xFUkFOQ0UsYj15Km4uUkVMQVRJVkVfQ1VMTF9UT0xFUkFOQ0U7cC09eCxkKz14LGctPWIsdis9Yix0LmlzVmlzaWJsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0PnAmJnQ8ZCYmZT5nJiZlPHZ9LHQuaXNPY2NsdWRlZD1mdW5jdGlvbih0LGUpe3JldHVybiB0PHB8fHQ+ZHx8ZTxnfHxlPnZ9LHQuc2V0U2NhbGU9ZnVuY3Rpb24oKXt2YXIgZT10Ll94LHI9dC5feSxuPWkodC5feGN0cmwsdC5feWN0cmwsZSxyLGguc21vb3RoaW5nLGYuc21vb3RoaW5nKTt0Ll94Y3RybD1uWzBdLHQuX3ljdHJsPW5bMV0sdC5ldmFseHk9byhbdC5feGN0cmwsdC5feWN0cmxdLGMsdSxoLnNtb290aGluZyxmLnNtb290aGluZyksdC5keHlkaT1zKFt0Ll94Y3RybCx0Ll95Y3RybF0saC5zbW9vdGhpbmcsZi5zbW9vdGhpbmcpLHQuZHh5ZGo9bChbdC5feGN0cmwsdC5feWN0cmxdLGguc21vb3RoaW5nLGYuc21vb3RoaW5nKX0sdC5pMmE9ZnVuY3Rpb24odCl7dmFyIHI9TWF0aC5tYXgoMCxNYXRoLmZsb29yKHRbMF0pLGMtMiksbj10WzBdLXI7cmV0dXJuKDEtbikqZVtyXStuKmVbcisxXX0sdC5qMmI9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5tYXgoMCxNYXRoLmZsb29yKHRbMV0pLGMtMiksbj10WzFdLWU7cmV0dXJuKDEtbikqcltlXStuKnJbZSsxXX0sdC5pajJhYj1mdW5jdGlvbihlKXtyZXR1cm5bdC5pMmEoZVswXSksdC5qMmIoZVsxXSldfSx0LmEyaT1mdW5jdGlvbih0KXt2YXIgcj1NYXRoLm1heCgwLE1hdGgubWluKGEodCxlKSxjLTIpKSxuPWVbcl0saT1lW3IrMV07cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oYy0xLHIrKHQtbikvKGktbikpKX0sdC5iMmo9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5tYXgoMCxNYXRoLm1pbihhKHQsciksdS0yKSksbj1yW2VdLGk9cltlKzFdO3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKHUtMSxlKyh0LW4pLyhpLW4pKSl9LHQuYWIyaWo9ZnVuY3Rpb24oZSl7cmV0dXJuW3QuYTJpKGVbMF0pLHQuYjJqKGVbMV0pXX0sdC5pMmM9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5ldmFseHkoW10sZSxyKX0sdC5hYjJ4eT1mdW5jdGlvbihuLGEsaSl7aWYoIWkmJihuPGVbMF18fG4+ZVtjLTFdfGE8clswXXx8YT5yW3UtMV0pKXJldHVyblshMSwhMV07dmFyIG89dC5hMmkobikscz10LmIyaihhKSxsPXQuZXZhbHh5KFtdLG8scyk7aWYoaSl7dmFyIGgsZixwLGQsZz0wLHY9MCxtPVtdO248ZVswXT8oaD0wLGY9MCxnPShuLWVbMF0pLyhlWzFdLWVbMF0pKTpuPmVbYy0xXT8oaD1jLTIsZj0xLGc9KG4tZVtjLTFdKS8oZVtjLTFdLWVbYy0yXSkpOmY9by0oaD1NYXRoLm1heCgwLE1hdGgubWluKGMtMixNYXRoLmZsb29yKG8pKSkpLGE8clswXT8ocD0wLGQ9MCx2PShhLXJbMF0pLyhyWzFdLXJbMF0pKTphPnJbdS0xXT8ocD11LTIsZD0xLHY9KGEtclt1LTFdKS8oclt1LTFdLXJbdS0yXSkpOmQ9cy0ocD1NYXRoLm1heCgwLE1hdGgubWluKHUtMixNYXRoLmZsb29yKHMpKSkpLGcmJih0LmR4eWRpKG0saCxwLGYsZCksbFswXSs9bVswXSpnLGxbMV0rPW1bMV0qZyksdiYmKHQuZHh5ZGoobSxoLHAsZixkKSxsWzBdKz1tWzBdKnYsbFsxXSs9bVsxXSp2KX1yZXR1cm4gbH0sdC5jMnA9ZnVuY3Rpb24odCxlLHIpe3JldHVybltlLmMycCh0WzBdKSxyLmMycCh0WzFdKV19LHQucDJ4PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm5bZS5wMmModFswXSksci5wMmModFsxXSldfSx0LmRhZGk9ZnVuY3Rpb24odCl7dmFyIHI9TWF0aC5tYXgoMCxNYXRoLm1pbihlLmxlbmd0aC0yLHQpKTtyZXR1cm4gZVtyKzFdLWVbcl19LHQuZGJkaj1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKHIubGVuZ3RoLTIsdCkpO3JldHVybiByW2UrMV0tcltlXX0sdC5keHlkYT1mdW5jdGlvbihlLHIsbixhKXt2YXIgaT10LmR4eWRpKG51bGwsZSxyLG4sYSksbz10LmRhZGkoZSxuKTtyZXR1cm5baVswXS9vLGlbMV0vb119LHQuZHh5ZGI9ZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGk9dC5keHlkaihudWxsLGUscixuLGEpLG89dC5kYmRqKHIsYSk7cmV0dXJuW2lbMF0vbyxpWzFdL29dfSx0LmR4eWRhX3JvdWdoPWZ1bmN0aW9uKGUscixuKXt2YXIgYT1tKihufHwuMSksaT10LmFiMnh5KGUrYSxyLCEwKSxvPXQuYWIyeHkoZS1hLHIsITApO3JldHVyblsuNSooaVswXS1vWzBdKS9hLC41KihpWzFdLW9bMV0pL2FdfSx0LmR4eWRiX3JvdWdoPWZ1bmN0aW9uKGUscixuKXt2YXIgYT15KihufHwuMSksaT10LmFiMnh5KGUscithLCEwKSxvPXQuYWIyeHkoZSxyLWEsITApO3JldHVyblsuNSooaVswXS1vWzBdKS9hLC41KihpWzFdLW9bMV0pL2FdfSx0LmRwZHg9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX219LHQuZHBkeT1mdW5jdGlvbih0KXtyZXR1cm4gdC5fbX19fSx7Ii4uLy4uL2xpYi9zZWFyY2giOjczNiwiLi9jb21wdXRlX2NvbnRyb2xfcG9pbnRzIjo5MDksIi4vY29uc3RhbnRzIjo5MTAsIi4vY3JlYXRlX2lfZGVyaXZhdGl2ZV9ldmFsdWF0b3IiOjkxMSwiLi9jcmVhdGVfal9kZXJpdmF0aXZlX2V2YWx1YXRvciI6OTEyLCIuL2NyZWF0ZV9zcGxpbmVfZXZhbHVhdG9yIjo5MTN9XSw5MjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxpLG8scz1bXSxsPVtdLGM9dFswXS5sZW5ndGgsdT10Lmxlbmd0aDtmdW5jdGlvbiBoKGUscil7dmFyIG4sYT0wLGk9MDtyZXR1cm4gZT4wJiZ2b2lkIDAhPT0obj10W3JdW2UtMV0pJiYoaSsrLGErPW4pLGU8Yy0xJiZ2b2lkIDAhPT0obj10W3JdW2UrMV0pJiYoaSsrLGErPW4pLHI+MCYmdm9pZCAwIT09KG49dFtyLTFdW2VdKSYmKGkrKyxhKz1uKSxyPHUtMSYmdm9pZCAwIT09KG49dFtyKzFdW2VdKSYmKGkrKyxhKz1uKSxhL01hdGgubWF4KDEsaSl9dmFyIGYscCxkLGcsdixtLHkseCxiLF8sdyxrPTA7Zm9yKGE9MDthPGM7YSsrKWZvcihpPTA7aTx1O2krKyl2b2lkIDA9PT10W2ldW2FdJiYocy5wdXNoKGEpLGwucHVzaChpKSx0W2ldW2FdPWgoYSxpKSksaz1NYXRoLm1heChrLE1hdGguYWJzKHRbaV1bYV0pKTtpZighcy5sZW5ndGgpcmV0dXJuIHQ7dmFyIFQ9MCxNPTAsQT1zLmxlbmd0aDtkb3tmb3IoVD0wLG89MDtvPEE7bysrKXthPXNbb10saT1sW29dO3ZhciBTLEUsTCxDLFAsTyx6PTAsST0wOzA9PT1hPyhMPWVbUD1NYXRoLm1pbihjLTEsMildLEM9ZVsxXSxTPXRbaV1bUF0sSSs9KEU9dFtpXVsxXSkrKEUtUykqKGVbMF0tQykvKEMtTCkseisrKTphPT09Yy0xJiYoTD1lW1A9TWF0aC5tYXgoMCxjLTMpXSxDPWVbYy0yXSxTPXRbaV1bUF0sSSs9KEU9dFtpXVtjLTJdKSsoRS1TKSooZVtjLTFdLUMpLyhDLUwpLHorKyksKDA9PT1hfHxhPT09Yy0xKSYmaT4wJiZpPHUtMSYmKGY9cltpKzFdLXJbaV0sSSs9KChwPXJbaV0tcltpLTFdKSp0W2krMV1bYV0rZip0W2ktMV1bYV0pLyhwK2YpLHorKyksMD09PWk/KEw9cltPPU1hdGgubWluKHUtMSwyKV0sQz1yWzFdLFM9dFtPXVthXSxJKz0oRT10WzFdW2FdKSsoRS1TKSooclswXS1DKS8oQy1MKSx6KyspOmk9PT11LTEmJihMPXJbTz1NYXRoLm1heCgwLHUtMyldLEM9clt1LTJdLFM9dFtPXVthXSxJKz0oRT10W3UtMl1bYV0pKyhFLVMpKihyW3UtMV0tQykvKEMtTCkseisrKSwoMD09PWl8fGk9PT11LTEpJiZhPjAmJmE8Yy0xJiYoZj1lW2ErMV0tZVthXSxJKz0oKHA9ZVthXS1lW2EtMV0pKnRbaV1bYSsxXStmKnRbaV1bYS0xXSkvKHArZikseisrKSx6P0kvPXo6KGQ9ZVthKzFdLWVbYV0sZz1lW2FdLWVbYS0xXSx4PSh2PXJbaSsxXS1yW2ldKSoobT1yW2ldLXJbaS0xXSkqKHYrbSksST0oKHk9ZCpnKihkK2cpKSoobSp0W2krMV1bYV0rdip0W2ktMV1bYV0pK3gqKGcqdFtpXVthKzFdK2QqdFtpXVthLTFdKSkvKHgqKGcrZCkreSoobSt2KSkpLFQrPShfPShiPUktdFtpXVthXSkvaykqXyx3PXo/MDouODUsdFtpXVthXSs9YiooMSt3KX1UPU1hdGguc3FydChUKX13aGlsZShNKys8MTAwJiZUPjFlLTUpO3JldHVybiBuLmxvZygiU21vb3RoZXIgY29udmVyZ2VkIHRvIixULCJhZnRlciIsTSwiaXRlcmF0aW9ucyIpLHR9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTIzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXkxRDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXIoIngiKSxpPWEmJmEubGVuZ3RoLG89cigieSIpLHM9byYmby5sZW5ndGg7aWYoIWkmJiFzKXJldHVybiExO2lmKGUuX2NoZWF0ZXI9IWEsaSYmIW4oYSl8fHMmJiFuKG8pKWUuX2xlbmd0aD1udWxsO2Vsc2V7dmFyIGw9aT9hLmxlbmd0aDoxLzA7cyYmKGw9TWF0aC5taW4obCxvLmxlbmd0aCkpLGUuYSYmZS5hLmxlbmd0aCYmKGw9TWF0aC5taW4obCxlLmEubGVuZ3RoKSksZS5iJiZlLmIubGVuZ3RoJiYobD1NYXRoLm1pbihsLGUuYi5sZW5ndGgpKSxlLl9sZW5ndGg9bH1yZXR1cm4hMH19LHsiLi4vLi4vbGliIjo3MTd9XSw5MjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxhPXQoIi4uL3NjYXR0ZXJnZW8vYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLmRlZmF1bHRMaW5lLGw9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsYz1hLm1hcmtlci5saW5lO2UuZXhwb3J0cz1sKHtsb2NhdGlvbnM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbG9jYXRpb25tb2RlOmEubG9jYXRpb25tb2RlLHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sZ2VvanNvbjpsKHt9LGEuZ2VvanNvbix7fSksZmVhdHVyZWlka2V5OmEuZmVhdHVyZWlka2V5LHRleHQ6bCh7fSxhLnRleHQse30pLGhvdmVydGV4dDpsKHt9LGEuaG92ZXJ0ZXh0LHt9KSxtYXJrZXI6e2xpbmU6e2NvbG9yOmwoe30sYy5jb2xvcix7ZGZsdDpzfSksd2lkdGg6bCh7fSxjLndpZHRoLHtkZmx0OjF9KSxlZGl0VHlwZToiY2FsYyJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsYXJyYXlPazohMCxtaW46MCxtYXg6MSxkZmx0OjEsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6ImNhbGMifSxzZWxlY3RlZDp7bWFya2VyOntvcGFjaXR5OmEuc2VsZWN0ZWQubWFya2VyLm9wYWNpdHksZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LHVuc2VsZWN0ZWQ6e21hcmtlcjp7b3BhY2l0eTphLnVuc2VsZWN0ZWQubWFya2VyLm9wYWNpdHksZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LGhvdmVyaW5mbzpsKHt9LG8uaG92ZXJpbmZvLHtlZGl0VHlwZToiY2FsYyIsZmxhZ3M6WyJsb2NhdGlvbiIsInoiLCJ0ZXh0IiwibmFtZSJdfSksaG92ZXJ0ZW1wbGF0ZTpuKCksc2hvd2xlZ2VuZDpsKHt9LG8uc2hvd2xlZ2VuZCx7ZGZsdDohMX0pfSxpKCIiLHtjTGV0dGVyOiJ6IixlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vc2NhdHRlcmdlby9hdHRyaWJ1dGVzIjoxMTYxfV0sOTI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKSxvPXQoIi4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIikscz10KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIik7ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiB0fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGM9ZS5fbGVuZ3RoLHU9bmV3IEFycmF5KGMpO3I9ZS5nZW9qc29uP2Z1bmN0aW9uKHQpe3JldHVybiBsKHQpfHxuKHQpfTpsO2Zvcih2YXIgaD0wO2g8YztoKyspe3ZhciBmPXVbaF09e30scD1lLmxvY2F0aW9uc1toXSxkPWUueltoXTtyKHApJiZuKGQpPyhmLmxvYz1wLGYuej1kKTooZi5sb2M9bnVsbCxmLno9YSksZi5pbmRleD1ofXJldHVybiBvKHUsZSksaSh0LGUse3ZhbHM6ZS56LGNvbnRhaW5lclN0cjoiIixjTGV0dGVyOiJ6In0pLHModSxlKSx1fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6NjAwLCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIjoxMTE5LCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sOTI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksaT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7ZnVuY3Rpb24gcyhyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaSxyLGEpfXZhciBsPXMoImxvY2F0aW9ucyIpLGM9cygieiIpO2lmKGwmJmwubGVuZ3RoJiZuLmlzQXJyYXlPclR5cGVkQXJyYXkoYykmJmMubGVuZ3RoKXtlLl9sZW5ndGg9TWF0aC5taW4obC5sZW5ndGgsYy5sZW5ndGgpO3ZhciB1LGg9cygiZ2VvanNvbiIpOygic3RyaW5nIj09dHlwZW9mIGgmJiIiIT09aHx8bi5pc1BsYWluT2JqZWN0KGgpKSYmKHU9Imdlb2pzb24taWQiKSwiZ2VvanNvbi1pZCI9PT1zKCJsb2NhdGlvbm1vZGUiLHUpJiZzKCJmZWF0dXJlaWRrZXkiKSxzKCJ0ZXh0IikscygiaG92ZXJ0ZXh0IikscygiaG92ZXJ0ZW1wbGF0ZSIpLHMoIm1hcmtlci5saW5lLndpZHRoIikmJnMoIm1hcmtlci5saW5lLmNvbG9yIikscygibWFya2VyLm9wYWNpdHkiKSxhKHQsZSxvLHMse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0pLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLHMpfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vbGliIjo3MTcsIi4vYXR0cmlidXRlcyI6OTI0fV0sOTI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGEpe3QubG9jYXRpb249ZS5sb2NhdGlvbix0Lno9ZS56O3ZhciBpPW5bYV07cmV0dXJuIGkuZkluJiZpLmZJbi5wcm9wZXJ0aWVzJiYodC5wcm9wZXJ0aWVzPWkuZkluLnByb3BlcnRpZXMpLHQuY3Q9aS5jdCx0fX0se31dLDkyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9saWIiKS5maWxsVGV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvLHMsbCxjLHU9dC5jZCxoPXVbMF0udHJhY2UsZj10LnN1YnBsb3Q7Zm9yKHM9MDtzPHUubGVuZ3RoO3MrKylpZihjPSExLChvPXVbc10pLl9wb2x5Z29ucyl7Zm9yKGw9MDtsPG8uX3BvbHlnb25zLmxlbmd0aDtsKyspby5fcG9seWdvbnNbbF0uY29udGFpbnMoW2Uscl0pJiYoYz0hYyksby5fcG9seWdvbnNbbF0uY29udGFpbnMoW2UrMzYwLHJdKSYmKGM9IWMpO2lmKGMpYnJlYWt9aWYoYyYmbylyZXR1cm4gdC54MD10LngxPXQueGEuYzJwKG8uY3QpLHQueTA9dC55MT10LnlhLmMycChvLmN0KSx0LmluZGV4PW8uaW5kZXgsdC5sb2NhdGlvbj1vLmxvYyx0Lno9by56LHQuekxhYmVsPW4udGlja1RleHQoZi5tb2NrQXhpcyxmLm1vY2tBeGlzLmMybChvLnopLCJob3ZlciIpLnRleHQsdC5ob3ZlcnRlbXBsYXRlPW8uaG92ZXJ0ZW1wbGF0ZSxmdW5jdGlvbih0LGUscil7aWYoZS5ob3ZlcnRlbXBsYXRlKXJldHVybjt2YXIgbj1yLmhpfHxlLmhvdmVyaW5mbyxvPVN0cmluZyhyLmxvYykscz0iYWxsIj09PW4/YS5ob3ZlcmluZm8uZmxhZ3M6bi5zcGxpdCgiKyIpLGw9LTEhPT1zLmluZGV4T2YoIm5hbWUiKSxjPS0xIT09cy5pbmRleE9mKCJsb2NhdGlvbiIpLHU9LTEhPT1zLmluZGV4T2YoInoiKSxoPS0xIT09cy5pbmRleE9mKCJ0ZXh0IiksZj1bXTshbCYmYz90Lm5hbWVPdmVycmlkZT1vOihsJiYodC5uYW1lT3ZlcnJpZGU9ZS5uYW1lKSxjJiZmLnB1c2gobykpO3UmJmYucHVzaCh0LnpMYWJlbCk7aCYmaShyLGUsZik7dC5leHRyYVRleHQ9Zi5qb2luKCI8YnI+Iil9KHQsaCxvLGYubW9ja0F4aXMpLFt0XX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vYXR0cmlidXRlcyI6OTI0fV0sOTI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4vaGVhdG1hcC9jb2xvcmJhciIpLGNhbGM6dCgiLi9jYWxjIiksY2FsY0dlb0pTT046dCgiLi9wbG90IikuY2FsY0dlb0pTT04scGxvdDp0KCIuL3Bsb3QiKS5wbG90LHN0eWxlOnQoIi4vc3R5bGUiKS5zdHlsZSxzdHlsZU9uU2VsZWN0OnQoIi4vc3R5bGUiKS5zdHlsZU9uU2VsZWN0LGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKSxldmVudERhdGE6dCgiLi9ldmVudF9kYXRhIiksc2VsZWN0UG9pbnRzOnQoIi4vc2VsZWN0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImNob3JvcGxldGgiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2dlbyIpLGNhdGVnb3JpZXM6WyJnZW8iLCJub09wYWNpdHkiLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2VvIjo3OTUsIi4uL2hlYXRtYXAvY29sb3JiYXIiOjEwMDMsIi4vYXR0cmlidXRlcyI6OTI0LCIuL2NhbGMiOjkyNSwiLi9kZWZhdWx0cyI6OTI2LCIuL2V2ZW50X2RhdGEiOjkyNywiLi9ob3ZlciI6OTI4LCIuL3Bsb3QiOjkzMCwiLi9zZWxlY3QiOjkzMSwiLi9zdHlsZSI6OTMyfV0sOTMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiKSxvPXQoIi4uLy4uL2xpYi90b3BvanNvbl91dGlscyIpLmdldFRvcG9qc29uRmVhdHVyZXMscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3JhbmdlIikuZmluZEV4dHJlbWVzLGw9dCgiLi9zdHlsZSIpLnN0eWxlO2UuZXhwb3J0cz17Y2FsY0dlb0pTT046ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dFswXS50cmFjZSxuPWVbci5nZW9dLGE9bi5fc3VicGxvdCxsPXIubG9jYXRpb25tb2RlLGM9ci5fbGVuZ3RoLHU9Imdlb2pzb24taWQiPT09bD9pLmV4dHJhY3RUcmFjZUZlYXR1cmUodCk6byhyLGEudG9wb2pzb24pLGg9W10sZj1bXSxwPTA7cDxjO3ArKyl7dmFyIGQ9dFtwXSxnPSJnZW9qc29uLWlkIj09PWw/ZC5mT3V0OmkubG9jYXRpb25Ub0ZlYXR1cmUobCxkLmxvYyx1KTtpZihnKXtkLmdlb2pzb249ZyxkLmN0PWcucHJvcGVydGllcy5jdCxkLl9wb2x5Z29ucz1pLmZlYXR1cmUycG9seWdvbnMoZyk7dmFyIHY9aS5jb21wdXRlQmJveChnKTtoLnB1c2godlswXSx2WzJdKSxmLnB1c2godlsxXSx2WzNdKX1lbHNlIGQuZ2VvanNvbj1udWxsfWlmKCJnZW9qc29uIj09PW4uZml0Ym91bmRzJiYiZ2VvanNvbi1pZCI9PT1sKXt2YXIgbT1pLmNvbXB1dGVCYm94KGkuZ2V0VHJhY2VHZW9qc29uKHIpKTtoPVttWzBdLG1bMl1dLGY9W21bMV0sbVszXV19dmFyIHk9e3BhZGRlZDohMH07ci5fZXh0cmVtZXMubG9uPXMobi5sb25heGlzLl9heCxoLHkpLHIuX2V4dHJlbWVzLmxhdD1zKG4ubGF0YXhpcy5fYXgsZix5KX0scGxvdDpmdW5jdGlvbih0LGUscil7dmFyIGk9ZS5sYXllcnMuYmFja3Bsb3Quc2VsZWN0KCIuY2hvcm9wbGV0aGxheWVyIik7YS5tYWtlVHJhY2VHcm91cHMoaSxyLCJ0cmFjZSBjaG9yb3BsZXRoIikuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGguY2hvcm9wbGV0aGxvY2F0aW9uIikuZGF0YShhLmlkZW50aXR5KTtyLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgiY2hvcm9wbGV0aGxvY2F0aW9uIiwhMCksci5leGl0KCkucmVtb3ZlKCksbCh0LGUpfSl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyI6NzExLCIuLi8uLi9saWIvdG9wb2pzb25fdXRpbHMiOjc0NCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSI6NzY0LCIuL3N0eWxlIjo5MzIsZDM6MTY1fV0sOTMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpLG8scz10LmNkLGw9dC54YXhpcyxjPXQueWF4aXMsdT1bXTtpZighMT09PWUpZm9yKHI9MDtyPHMubGVuZ3RoO3IrKylzW3JdLnNlbGVjdGVkPTA7ZWxzZSBmb3Iocj0wO3I8cy5sZW5ndGg7cisrKShhPShuPXNbcl0pLmN0KSYmKGk9bC5jMnAoYSksbz1jLmMycChhKSxlLmNvbnRhaW5zKFtpLG9dLG51bGwscix0KT8odS5wdXNoKHtwb2ludE51bWJlcjpyLGxvbjphWzBdLGxhdDphWzFdfSksbi5zZWxlY3RlZD0xKTpuLnNlbGVjdGVkPTApO3JldHVybiB1fX0se31dLDkzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKTtmdW5jdGlvbiBzKHQsZSl7dmFyIHI9ZVswXS50cmFjZSxzPWVbMF0ubm9kZTMuc2VsZWN0QWxsKCIuY2hvcm9wbGV0aGxvY2F0aW9uIiksbD1yLm1hcmtlcnx8e30sYz1sLmxpbmV8fHt9LHU9by5tYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2Uocik7cy5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLmF0dHIoImZpbGwiLHUodC56KSkuY2FsbChhLnN0cm9rZSx0Lm1sY3x8Yy5jb2xvcikuY2FsbChpLmRhc2hMaW5lLCIiLHQubWx3fHxjLndpZHRofHwwKS5zdHlsZSgib3BhY2l0eSIsbC5vcGFjaXR5KX0pLGkuc2VsZWN0ZWRQb2ludFN0eWxlKHMscix0KX1lLmV4cG9ydHM9e3N0eWxlOmZ1bmN0aW9uKHQsZSl7ZSYmcyh0LGUpfSxzdHlsZU9uU2VsZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS5ub2RlMyxuPWVbMF0udHJhY2U7bi5zZWxlY3RlZHBvaW50cz9pLnNlbGVjdGVkUG9pbnRTdHlsZShyLnNlbGVjdEFsbCgiLmNob3JvcGxldGhsb2NhdGlvbiIpLG4sdCk6cyh0LGUpfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsZDM6MTY1fV0sOTMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Nob3JvcGxldGgvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9cyh7bG9jYXRpb25zOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sZ2VvanNvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LGZlYXR1cmVpZGtleTpzKHt9LG4uZmVhdHVyZWlka2V5LHt9KSxiZWxvdzp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToicGxvdCJ9LHRleHQ6bi50ZXh0LGhvdmVydGV4dDpuLmhvdmVydGV4dCxtYXJrZXI6e2xpbmU6e2NvbG9yOnMoe30sbi5tYXJrZXIubGluZS5jb2xvcix7ZWRpdFR5cGU6InBsb3QifSksd2lkdGg6cyh7fSxuLm1hcmtlci5saW5lLndpZHRoLHtlZGl0VHlwZToicGxvdCJ9KSxlZGl0VHlwZToiY2FsYyJ9LG9wYWNpdHk6cyh7fSxuLm1hcmtlci5vcGFjaXR5LHtlZGl0VHlwZToicGxvdCJ9KSxlZGl0VHlwZToiY2FsYyJ9LHNlbGVjdGVkOnttYXJrZXI6e29wYWNpdHk6cyh7fSxuLnNlbGVjdGVkLm1hcmtlci5vcGFjaXR5LHtlZGl0VHlwZToicGxvdCJ9KSxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sdW5zZWxlY3RlZDp7bWFya2VyOntvcGFjaXR5OnMoe30sbi51bnNlbGVjdGVkLm1hcmtlci5vcGFjaXR5LHtlZGl0VHlwZToicGxvdCJ9KSxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0saG92ZXJpbmZvOm4uaG92ZXJpbmZvLGhvdmVydGVtcGxhdGU6aSh7fSx7a2V5czpbInByb3BlcnRpZXMiXX0pLHNob3dsZWdlbmQ6cyh7fSxvLnNob3dsZWdlbmQse2RmbHQ6ITF9KX0sYSgiIix7Y0xldHRlcjoieiIsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSl9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vY2hvcm9wbGV0aC9hdHRyaWJ1dGVzIjo5MjR9XSw5MzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxzPXQoIi4uLy4uL2xpYi9nZW9qc29uX3V0aWxzIikubWFrZUJsYW5rLGw9dCgiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyIpO2Z1bmN0aW9uIGModCl7dmFyIGUscj10WzBdLnRyYWNlLG49ci5fb3B0cztpZihyLnNlbGVjdGVkcG9pbnRzKXtmb3IodmFyIGk9by5tYWtlU2VsZWN0ZWRQb2ludFN0eWxlRm5zKHIpLHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGw9dFtzXTtsLmZPdXQmJihsLmZPdXQucHJvcGVydGllcy5tbzI9aS5zZWxlY3RlZE9wYWNpdHlGbihsKSl9ZT17dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJtbzIifX1lbHNlIGU9YS5pc0FycmF5T3JUeXBlZEFycmF5KHIubWFya2VyLm9wYWNpdHkpP3t0eXBlOiJpZGVudGl0eSIscHJvcGVydHk6Im1vIn06ci5tYXJrZXIub3BhY2l0eTtyZXR1cm4gYS5leHRlbmRGbGF0KG4uZmlsbC5wYWludCx7ImZpbGwtb3BhY2l0eSI6ZX0pLGEuZXh0ZW5kRmxhdChuLmxpbmUucGFpbnQseyJsaW5lLW9wYWNpdHkiOmV9KSxufWUuZXhwb3J0cz17Y29udmVydDpmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9ITA9PT1lLnZpc2libGUmJjAhPT1lLl9sZW5ndGgsbz17bGF5b3V0Ont2aXNpYmlsaXR5OiJub25lIn0scGFpbnQ6e319LHU9e2xheW91dDp7dmlzaWJpbGl0eToibm9uZSJ9LHBhaW50Ont9fSxoPWUuX29wdHM9e2ZpbGw6byxsaW5lOnUsZ2VvanNvbjpzKCl9O2lmKCFyKXJldHVybiBoO3ZhciBmPWwuZXh0cmFjdFRyYWNlRmVhdHVyZSh0KTtpZighZilyZXR1cm4gaDt2YXIgcCxkLGcsdj1pLm1ha2VDb2xvclNjYWxlRnVuY0Zyb21UcmFjZShlKSxtPWUubWFya2VyLHk9bS5saW5lfHx7fTthLmlzQXJyYXlPclR5cGVkQXJyYXkobS5vcGFjaXR5KSYmKHA9ZnVuY3Rpb24odCl7dmFyIGU9dC5tbztyZXR1cm4gbihlKT8rYS5jb25zdHJhaW4oZSwwLDEpOjB9KSxhLmlzQXJyYXlPclR5cGVkQXJyYXkoeS5jb2xvcikmJihkPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1sY30pLGEuaXNBcnJheU9yVHlwZWRBcnJheSh5LndpZHRoKSYmKGc9ZnVuY3Rpb24odCl7cmV0dXJuIHQubWx3fSk7Zm9yKHZhciB4PTA7eDx0Lmxlbmd0aDt4Kyspe3ZhciBiPXRbeF0sXz1iLmZPdXQ7aWYoXyl7dmFyIHc9Xy5wcm9wZXJ0aWVzO3cuZmM9dihiLnopLHAmJih3Lm1vPXAoYikpLGQmJih3Lm1sYz1kKGIpKSxnJiYody5tbHc9ZyhiKSksYi5jdD13LmN0LGIuX3BvbHlnb25zPWwuZmVhdHVyZTJwb2x5Z29ucyhfKX19dmFyIGs9cD97dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJtbyJ9Om0ub3BhY2l0eTtyZXR1cm4gYS5leHRlbmRGbGF0KG8ucGFpbnQseyJmaWxsLWNvbG9yIjp7dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJmYyJ9LCJmaWxsLW9wYWNpdHkiOmt9KSxhLmV4dGVuZEZsYXQodS5wYWludCx7ImxpbmUtY29sb3IiOmQ/e3R5cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToibWxjIn06eS5jb2xvciwibGluZS13aWR0aCI6Zz97dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJtbHcifTp5LndpZHRoLCJsaW5lLW9wYWNpdHkiOmt9KSxvLmxheW91dC52aXNpYmlsaXR5PSJ2aXNpYmxlIix1LmxheW91dC52aXNpYmlsaXR5PSJ2aXNpYmxlIixoLmdlb2pzb249e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczpmfSxjKHQpLGh9LGNvbnZlcnRPblNlbGVjdDpjfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ2VvX2xvY2F0aW9uX3V0aWxzIjo3MTEsIi4uLy4uL2xpYi9nZW9qc29uX3V0aWxzIjo3MTIsImZhc3QtaXNudW1lcmljIjoyMjh9XSw5MzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxpPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXtmdW5jdGlvbiBzKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9dmFyIGw9cygibG9jYXRpb25zIiksYz1zKCJ6IiksdT1zKCJnZW9qc29uIik7bi5pc0FycmF5T3JUeXBlZEFycmF5KGwpJiZsLmxlbmd0aCYmbi5pc0FycmF5T3JUeXBlZEFycmF5KGMpJiZjLmxlbmd0aCYmKCJzdHJpbmciPT10eXBlb2YgdSYmIiIhPT11fHxuLmlzUGxhaW5PYmplY3QodSkpPyhzKCJmZWF0dXJlaWRrZXkiKSxlLl9sZW5ndGg9TWF0aC5taW4obC5sZW5ndGgsYy5sZW5ndGgpLHMoImJlbG93IikscygidGV4dCIpLHMoImhvdmVydGV4dCIpLHMoImhvdmVydGVtcGxhdGUiKSxzKCJtYXJrZXIubGluZS53aWR0aCIpJiZzKCJtYXJrZXIubGluZS5jb2xvciIpLHMoIm1hcmtlci5vcGFjaXR5IiksYSh0LGUsbyxzLHtwcmVmaXg6IiIsY0xldHRlcjoieiJ9KSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxzKSk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vbGliIjo3MTcsIi4vYXR0cmlidXRlcyI6OTMzfV0sOTM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4vaGVhdG1hcC9jb2xvcmJhciIpLGNhbGM6dCgiLi4vY2hvcm9wbGV0aC9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxob3ZlclBvaW50czp0KCIuLi9jaG9yb3BsZXRoL2hvdmVyIiksZXZlbnREYXRhOnQoIi4uL2Nob3JvcGxldGgvZXZlbnRfZGF0YSIpLHNlbGVjdFBvaW50czp0KCIuLi9jaG9yb3BsZXRoL3NlbGVjdCIpLHN0eWxlT25TZWxlY3Q6ZnVuY3Rpb24odCxlKXtlJiZlWzBdLnRyYWNlLl9nbFRyYWNlLnVwZGF0ZU9uU2VsZWN0KGUpfSxnZXRCZWxvdzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lLmdldE1hcExheWVycygpLG49ci5sZW5ndGgtMjtuPj0wO24tLSl7dmFyIGE9cltuXS5pZDtpZigic3RyaW5nIj09dHlwZW9mIGEmJjA9PT1hLmluZGV4T2YoIndhdGVyIikpZm9yKHZhciBpPW4rMTtpPHIubGVuZ3RoO2krKylpZigic3RyaW5nIj09dHlwZW9mKGE9cltpXS5pZCkmJi0xPT09YS5pbmRleE9mKCJwbG90bHktIikpcmV0dXJuIGF9fSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiY2hvcm9wbGV0aG1hcGJveCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvbWFwYm94IiksY2F0ZWdvcmllczpbIm1hcGJveCIsImdsIiwibm9PcGFjaXR5Iiwic2hvd0xlZ2VuZCJdLG1ldGE6e2hyX25hbWU6ImNob3JvcGxldGhfbWFwYm94In19fSx7Ii4uLy4uL3Bsb3RzL21hcGJveCI6ODIwLCIuLi9jaG9yb3BsZXRoL2NhbGMiOjkyNSwiLi4vY2hvcm9wbGV0aC9ldmVudF9kYXRhIjo5MjcsIi4uL2Nob3JvcGxldGgvaG92ZXIiOjkyOCwiLi4vY2hvcm9wbGV0aC9zZWxlY3QiOjkzMSwiLi4vaGVhdG1hcC9jb2xvcmJhciI6MTAwMywiLi9hdHRyaWJ1dGVzIjo5MzMsIi4vZGVmYXVsdHMiOjkzNSwiLi9wbG90Ijo5Mzd9XSw5Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb252ZXJ0IikuY29udmVydCxhPXQoIi4vY29udmVydCIpLmNvbnZlcnRPblNlbGVjdCxpPXQoIi4uLy4uL3Bsb3RzL21hcGJveC9jb25zdGFudHMiKS50cmFjZUxheWVyUHJlZml4O2Z1bmN0aW9uIG8odCxlKXt0aGlzLnR5cGU9ImNob3JvcGxldGhtYXBib3giLHRoaXMuc3VicGxvdD10LHRoaXMudWlkPWUsdGhpcy5zb3VyY2VJZD0ic291cmNlLSIrZSx0aGlzLmxheWVyTGlzdD1bWyJmaWxsIixpK2UrIi1maWxsIl0sWyJsaW5lIixpK2UrIi1saW5lIl1dLHRoaXMuYmVsb3c9bnVsbH12YXIgcz1vLnByb3RvdHlwZTtzLnVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLl91cGRhdGUobih0KSl9LHMudXBkYXRlT25TZWxlY3Q9ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlKGEodCkpfSxzLl91cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdWJwbG90LHI9dGhpcy5sYXllckxpc3Qsbj1lLmJlbG93TG9va3VwWyJ0cmFjZS0iK3RoaXMudWlkXTtlLm1hcC5nZXRTb3VyY2UodGhpcy5zb3VyY2VJZCkuc2V0RGF0YSh0Lmdlb2pzb24pLG4hPT10aGlzLmJlbG93JiYodGhpcy5fcmVtb3ZlTGF5ZXJzKCksdGhpcy5fYWRkTGF5ZXJzKHQsbiksdGhpcy5iZWxvdz1uKTtmb3IodmFyIGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGk9clthXSxvPWlbMF0scz1pWzFdLGw9dFtvXTtlLnNldE9wdGlvbnMocywic2V0TGF5b3V0UHJvcGVydHkiLGwubGF5b3V0KSwidmlzaWJsZSI9PT1sLmxheW91dC52aXNpYmlsaXR5JiZlLnNldE9wdGlvbnMocywic2V0UGFpbnRQcm9wZXJ0eSIsbC5wYWludCl9fSxzLl9hZGRMYXllcnM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5zdWJwbG90LG49dGhpcy5sYXllckxpc3QsYT10aGlzLnNvdXJjZUlkLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXSxzPW9bMF0sbD10W3NdO3IuYWRkTGF5ZXIoe3R5cGU6cyxpZDpvWzFdLHNvdXJjZTphLGxheW91dDpsLmxheW91dCxwYWludDpsLnBhaW50fSxlKX19LHMuX3JlbW92ZUxheWVycz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnN1YnBsb3QubWFwLGU9dGhpcy5sYXllckxpc3Qscj1lLmxlbmd0aC0xO3I+PTA7ci0tKXQucmVtb3ZlTGF5ZXIoZVtyXVsxXSl9LHMuZGlzcG9zZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc3VicGxvdC5tYXA7dGhpcy5fcmVtb3ZlTGF5ZXJzKCksdC5yZW1vdmVTb3VyY2UodGhpcy5zb3VyY2VJZCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0udHJhY2UsYT1uZXcgbyh0LHIudWlkKSxpPWEuc291cmNlSWQscz1uKGUpLGw9YS5iZWxvdz10LmJlbG93TG9va3VwWyJ0cmFjZS0iK3IudWlkXTtyZXR1cm4gdC5tYXAuYWRkU291cmNlKGkse3R5cGU6Imdlb2pzb24iLGRhdGE6cy5nZW9qc29ufSksYS5fYWRkTGF5ZXJzKHMsbCksZVswXS50cmFjZS5fZ2xUcmFjZT1hLGF9fSx7Ii4uLy4uL3Bsb3RzL21hcGJveC9jb25zdGFudHMiOjgxOCwiLi9jb252ZXJ0Ijo5MzR9XSw5Mzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi9tZXNoM2QvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsbD17eDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sdTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx2Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHc6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sc2l6ZW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInNjYWxlZCIsImFic29sdXRlIl0sZWRpdFR5cGU6ImNhbGMiLGRmbHQ6InNjYWxlZCJ9LHNpemVyZWY6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMiLG1pbjowfSxhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGVkaXRUeXBlOiJjYWxjIix2YWx1ZXM6WyJ0aXAiLCJ0YWlsIiwiY20iLCJjZW50ZXIiXSxkZmx0OiJjbSJ9LHRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJ0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGVtcGxhdGU6YSh7ZWRpdFR5cGU6ImNhbGMifSx7a2V5czpbIm5vcm0iXX0pLHNob3dsZWdlbmQ6cyh7fSxvLnNob3dsZWdlbmQse2RmbHQ6ITF9KX07cyhsLG4oIiIse2NvbG9yQXR0cjoidS92L3cgbm9ybSIsc2hvd1NjYWxlRGZsdDohMCxlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pKTtbIm9wYWNpdHkiLCJsaWdodHBvc2l0aW9uIiwibGlnaHRpbmciXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2xbdF09aVt0XX0pLGwuaG92ZXJpbmZvPXMoe30sby5ob3ZlcmluZm8se2VkaXRUeXBlOiJjYWxjIixmbGFnczpbIngiLCJ5IiwieiIsInUiLCJ2IiwidyIsIm5vcm0iLCJ0ZXh0IiwibmFtZSJdLGRmbHQ6IngreSt6K25vcm0rdGV4dCtuYW1lIn0pLGwudHJhbnNmb3Jtcz12b2lkIDAsZS5leHBvcnRzPWx9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vbWVzaDNkL2F0dHJpYnV0ZXMiOjEwNjF9XSw5Mzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS51LGE9ZS52LGk9ZS53LG89TWF0aC5taW4oZS54Lmxlbmd0aCxlLnkubGVuZ3RoLGUuei5sZW5ndGgsci5sZW5ndGgsYS5sZW5ndGgsaS5sZW5ndGgpLHM9LTEvMCxsPTEvMCxjPTA7YzxvO2MrKyl7dmFyIHU9cltjXSxoPWFbY10sZj1pW2NdLHA9TWF0aC5zcXJ0KHUqdStoKmgrZipmKTtzPU1hdGgubWF4KHMscCksbD1NYXRoLm1pbihsLHApfWUuX2xlbj1vLGUuX25vcm1NYXg9cyxuKHQsZSx7dmFsczpbbCxzXSxjb250YWluZXJTdHI6IiIsY0xldHRlcjoiYyJ9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjYwMH1dLDk0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC1jb25lM2QiKSxhPXQoImdsLWNvbmUzZCIpLmNyZWF0ZUNvbmVNZXNoLGk9dCgiLi4vLi4vbGliIikuc2ltcGxlTWFwLG89dCgiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLnBhcnNlQ29sb3JTY2FsZSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLmV4dHJhY3RPcHRzLGw9dCgiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIik7ZnVuY3Rpb24gYyh0LGUpe3RoaXMuc2NlbmU9dCx0aGlzLnVpZD1lLHRoaXMubWVzaD1udWxsLHRoaXMuZGF0YT1udWxsfXZhciB1PWMucHJvdG90eXBlO3UuaGFuZGxlUGljaz1mdW5jdGlvbih0KXtpZih0Lm9iamVjdD09PXRoaXMubWVzaCl7dmFyIGU9dC5pbmRleD10LmRhdGEuaW5kZXgscj10aGlzLmRhdGEueFtlXSxuPXRoaXMuZGF0YS55W2VdLGE9dGhpcy5kYXRhLnpbZV0saT10aGlzLmRhdGEudVtlXSxvPXRoaXMuZGF0YS52W2VdLHM9dGhpcy5kYXRhLndbZV07dC50cmFjZUNvb3JkaW5hdGU9W3IsbixhLGksbyxzLE1hdGguc3FydChpKmkrbypvK3MqcyldO3ZhciBsPXRoaXMuZGF0YS5ob3ZlcnRleHR8fHRoaXMuZGF0YS50ZXh0O3JldHVybiBBcnJheS5pc0FycmF5KGwpJiZ2b2lkIDAhPT1sW2VdP3QudGV4dExhYmVsPWxbZV06bCYmKHQudGV4dExhYmVsPWwpLCEwfX07dmFyIGg9e3hheGlzOjAseWF4aXM6MSx6YXhpczoyfSxmPXt0aXA6MSx0YWlsOjAsY206LjI1LGNlbnRlcjouNX0scD17dGlwOjEsdGFpbDoxLGNtOi43NSxjZW50ZXI6LjV9O2Z1bmN0aW9uIGQodCxlKXt2YXIgcj10LmZ1bGxTY2VuZUxheW91dCxhPXQuZGF0YVNjYWxlLGM9e307ZnVuY3Rpb24gdSh0LGUpe3ZhciBuPXJbZV0sbz1hW2hbZV1dO3JldHVybiBpKHQsZnVuY3Rpb24odCl7cmV0dXJuIG4uZDJsKHQpKm99KX1jLnZlY3RvcnM9bCh1KGUudSwieGF4aXMiKSx1KGUudiwieWF4aXMiKSx1KGUudywiemF4aXMiKSxlLl9sZW4pLGMucG9zaXRpb25zPWwodShlLngsInhheGlzIiksdShlLnksInlheGlzIiksdShlLnosInpheGlzIiksZS5fbGVuKTt2YXIgZD1zKGUpO2MuY29sb3JtYXA9byhlKSxjLnZlcnRleEludGVuc2l0eUJvdW5kcz1bZC5taW4vZS5fbm9ybU1heCxkLm1heC9lLl9ub3JtTWF4XSxjLmNvbmVPZmZzZXQ9ZltlLmFuY2hvcl0sInNjYWxlZCI9PT1lLnNpemVtb2RlP2MuY29uZVNpemU9ZS5zaXplcmVmfHwuNTpjLmNvbmVTaXplPWUuc2l6ZXJlZiYmZS5fbm9ybU1heD9lLnNpemVyZWYvZS5fbm9ybU1heDouNTt2YXIgZz1uKGMpLHY9ZS5saWdodHBvc2l0aW9uO3JldHVybiBnLmxpZ2h0UG9zaXRpb249W3YueCx2Lnksdi56XSxnLmFtYmllbnQ9ZS5saWdodGluZy5hbWJpZW50LGcuZGlmZnVzZT1lLmxpZ2h0aW5nLmRpZmZ1c2UsZy5zcGVjdWxhcj1lLmxpZ2h0aW5nLnNwZWN1bGFyLGcucm91Z2huZXNzPWUubGlnaHRpbmcucm91Z2huZXNzLGcuZnJlc25lbD1lLmxpZ2h0aW5nLmZyZXNuZWwsZy5vcGFjaXR5PWUub3BhY2l0eSxlLl9wYWQ9cFtlLmFuY2hvcl0qZy52ZWN0b3JTY2FsZSpnLmNvbmVTY2FsZSplLl9ub3JtTWF4LGd9dS51cGRhdGU9ZnVuY3Rpb24odCl7dGhpcy5kYXRhPXQ7dmFyIGU9ZCh0aGlzLnNjZW5lLHQpO3RoaXMubWVzaC51cGRhdGUoZSl9LHUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLm1lc2gpLHRoaXMubWVzaC5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuZ2xwbG90LmdsLG49ZCh0LGUpLGk9YShyLG4pLG89bmV3IGModCxlLnVpZCk7cmV0dXJuIG8ubWVzaD1pLG8uZGF0YT1lLGkuX3RyYWNlPW8sdC5nbHBsb3QuYWRkKGkpLG99fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciI6NzE0LCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiOjgxNiwiZ2wtY29uZTNkIjoyNDV9XSw5NDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxpPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXtmdW5jdGlvbiBzKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9dmFyIGw9cygidSIpLGM9cygidiIpLHU9cygidyIpLGg9cygieCIpLGY9cygieSIpLHA9cygieiIpO2wmJmwubGVuZ3RoJiZjJiZjLmxlbmd0aCYmdSYmdS5sZW5ndGgmJmgmJmgubGVuZ3RoJiZmJiZmLmxlbmd0aCYmcCYmcC5sZW5ndGg/KHMoInNpemVyZWYiKSxzKCJzaXplbW9kZSIpLHMoImFuY2hvciIpLHMoImxpZ2h0aW5nLmFtYmllbnQiKSxzKCJsaWdodGluZy5kaWZmdXNlIikscygibGlnaHRpbmcuc3BlY3VsYXIiKSxzKCJsaWdodGluZy5yb3VnaG5lc3MiKSxzKCJsaWdodGluZy5mcmVzbmVsIikscygibGlnaHRwb3NpdGlvbi54IikscygibGlnaHRwb3NpdGlvbi55IikscygibGlnaHRwb3NpdGlvbi56IiksYSh0LGUsbyxzLHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSxzKCJ0ZXh0IikscygiaG92ZXJ0ZXh0IikscygiaG92ZXJ0ZW1wbGF0ZSIpLGUuX2xlbmd0aD1udWxsKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1dGVzIjo5Mzh9XSw5NDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiY29uZSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNhdGVnb3JpZXM6WyJnbDNkIiwic2hvd0xlZ2VuZCJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnttaW46ImNtaW4iLG1heDoiY21heCJ9LGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIuL2NvbnZlcnQiKSxldmVudERhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5ub3JtPWUudHJhY2VDb29yZGluYXRlWzZdLHR9LG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dsM2QiOjgwNSwiLi9hdHRyaWJ1dGVzIjo5MzgsIi4vY2FsYyI6OTM5LCIuL2NvbnZlcnQiOjk0MCwiLi9kZWZhdWx0cyI6OTQxfV0sOTQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hlYXRtYXAvYXR0cmlidXRlcyIpLGE9dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiKS5kYXNoLHM9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksbD10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxjPXQoIi4uLy4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIiksdT1jLkNPTVBBUklTT05fT1BTMixoPWMuSU5URVJWQUxfT1BTLGY9KHQoIi4uLy4uL2NvbnN0YW50cy9kb2NzIikuRk9STUFUX0xJTkssYS5saW5lKTtlLmV4cG9ydHM9bCh7ejpuLnoseDpuLngseDA6bi54MCxkeDpuLmR4LHk6bi55LHkwOm4ueTAsZHk6bi5keSx0ZXh0Om4udGV4dCxob3ZlcnRleHQ6bi5ob3ZlcnRleHQsdHJhbnNwb3NlOm4udHJhbnNwb3NlLHh0eXBlOm4ueHR5cGUseXR5cGU6bi55dHlwZSx6aG92ZXJmb3JtYXQ6bi56aG92ZXJmb3JtYXQsaG92ZXJ0ZW1wbGF0ZTpuLmhvdmVydGVtcGxhdGUsaG92ZXJvbmdhcHM6bi5ob3Zlcm9uZ2Fwcyxjb25uZWN0Z2FwczpsKHt9LG4uY29ubmVjdGdhcHMse30pLGZpbGxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJjYWxjIn0sYXV0b2NvbnRvdXI6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMiLGltcGxpZWRFZGl0czp7ImNvbnRvdXJzLnN0YXJ0Ijp2b2lkIDAsImNvbnRvdXJzLmVuZCI6dm9pZCAwLCJjb250b3Vycy5zaXplIjp2b2lkIDB9fSxuY29udG91cnM6e3ZhbFR5cGU6ImludGVnZXIiLGRmbHQ6MTUsbWluOjEsZWRpdFR5cGU6ImNhbGMifSxjb250b3Vyczp7dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGV2ZWxzIiwiY29uc3RyYWludCJdLGRmbHQ6ImxldmVscyIsZWRpdFR5cGU6ImNhbGMifSxzdGFydDp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsZWRpdFR5cGU6InBsb3QiLGltcGxpZWRFZGl0czp7Il5hdXRvY29udG91ciI6ITF9fSxlbmQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b2NvbnRvdXIiOiExfX0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsbWluOjAsZWRpdFR5cGU6InBsb3QiLGltcGxpZWRFZGl0czp7Il5hdXRvY29udG91ciI6ITF9fSxjb2xvcmluZzp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZmlsbCIsImhlYXRtYXAiLCJsaW5lcyIsIm5vbmUiXSxkZmx0OiJmaWxsIixlZGl0VHlwZToiY2FsYyJ9LHNob3dsaW5lczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToicGxvdCJ9LHNob3dsYWJlbHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6InBsb3QifSxsYWJlbGZvbnQ6cyh7ZWRpdFR5cGU6InBsb3QiLGNvbG9yRWRpdFR5cGU6InN0eWxlIn0pLGxhYmVsZm9ybWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InBsb3QifSxvcGVyYXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbXS5jb25jYXQodSkuY29uY2F0KGgpLGRmbHQ6Ij0iLGVkaXRUeXBlOiJjYWxjIn0sdmFsdWU6e3ZhbFR5cGU6ImFueSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMiLGltcGxpZWRFZGl0czp7YXV0b2NvbnRvdXI6ITF9fSxsaW5lOntjb2xvcjpsKHt9LGYuY29sb3Ise2VkaXRUeXBlOiJzdHlsZStjb2xvcmJhcnMifSksd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InN0eWxlK2NvbG9yYmFycyJ9LGRhc2g6byxzbW9vdGhpbmc6bCh7fSxmLnNtb290aGluZyx7fSksZWRpdFR5cGU6InBsb3QifX0saSgiIix7Y0xldHRlcjoieiIsYXV0b0NvbG9yRGZsdDohMSxlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyI6NjEyLCIuLi8uLi9jb25zdGFudHMvZG9jcyI6Njg4LCIuLi8uLi9jb25zdGFudHMvZmlsdGVyX29wcyI6Njg5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiOjFlMywiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwfV0sOTQ0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLGE9dCgiLi4vaGVhdG1hcC9jYWxjIiksaT10KCIuL3NldF9jb250b3VycyIpLG89dCgiLi9lbmRfcGx1cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWEodCxlKSxzPXJbMF0uejtpKGUscyk7dmFyIGwsYz1lLmNvbnRvdXJzLHU9bi5leHRyYWN0T3B0cyhlKTtpZigiaGVhdG1hcCI9PT1jLmNvbG9yaW5nJiZ1LmF1dG8mJiExPT09ZS5hdXRvY29udG91cil7dmFyIGg9Yy5zdGFydCxmPW8oYykscD1jLnNpemV8fDEsZD1NYXRoLmZsb29yKChmLWgpL3ApKzE7aXNGaW5pdGUocCl8fChwPTEsZD0xKTt2YXIgZz1oLXAvMjtsPVtnLGcrZCpwXX1lbHNlIGw9cztyZXR1cm4gbi5jYWxjKHQsZSx7dmFsczpsLGNMZXR0ZXI6InoifSkscn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uL2hlYXRtYXAvY2FsYyI6MTAwMSwiLi9lbmRfcGx1cyI6OTU0LCIuL3NldF9jb250b3VycyI6OTYyfV0sOTQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG49dFswXSxhPW4uejtzd2l0Y2goZS50eXBlKXtjYXNlImxldmVscyI6dmFyIGk9TWF0aC5taW4oYVswXVswXSxhWzBdWzFdKTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdO28ucHJlZml4Qm91bmRhcnk9IW8uZWRnZXBhdGhzLmxlbmd0aCYmKGk+by5sZXZlbHx8by5zdGFydHMubGVuZ3RoJiZpPT09by5sZXZlbCl9YnJlYWs7Y2FzZSJjb25zdHJhaW50IjppZihuLnByZWZpeEJvdW5kYXJ5PSExLG4uZWRnZXBhdGhzLmxlbmd0aClyZXR1cm47dmFyIHM9bi54Lmxlbmd0aCxsPW4ueS5sZW5ndGgsYz0tMS8wLHU9MS8wO2ZvcihyPTA7cjxsO3IrKyl1PU1hdGgubWluKHUsYVtyXVswXSksdT1NYXRoLm1pbih1LGFbcl1bcy0xXSksYz1NYXRoLm1heChjLGFbcl1bMF0pLGM9TWF0aC5tYXgoYyxhW3JdW3MtMV0pO2ZvcihyPTE7cjxzLTE7cisrKXU9TWF0aC5taW4odSxhWzBdW3JdKSx1PU1hdGgubWluKHUsYVtsLTFdW3JdKSxjPU1hdGgubWF4KGMsYVswXVtyXSksYz1NYXRoLm1heChjLGFbbC0xXVtyXSk7dmFyIGgsZixwPWUudmFsdWU7c3dpdGNoKGUuX29wZXJhdGlvbil7Y2FzZSI+IjpwPmMmJihuLnByZWZpeEJvdW5kYXJ5PSEwKTticmVhaztjYXNlIjwiOihwPHV8fG4uc3RhcnRzLmxlbmd0aCYmcD09PXUpJiYobi5wcmVmaXhCb3VuZGFyeT0hMCk7YnJlYWs7Y2FzZSJbXSI6aD1NYXRoLm1pbihwWzBdLHBbMV0pLCgoZj1NYXRoLm1heChwWzBdLHBbMV0pKTx1fHxoPmN8fG4uc3RhcnRzLmxlbmd0aCYmZj09PXUpJiYobi5wcmVmaXhCb3VuZGFyeT0hMCk7YnJlYWs7Y2FzZSJdWyI6aD1NYXRoLm1pbihwWzBdLHBbMV0pLGY9TWF0aC5tYXgocFswXSxwWzFdKSxoPHUmJmY+YyYmKG4ucHJlZml4Qm91bmRhcnk9ITApfX19fSx7fV0sOTQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLGE9dCgiLi9tYWtlX2NvbG9yX21hcCIpLGk9dCgiLi9lbmRfcGx1cyIpO2UuZXhwb3J0cz17bWluOiJ6bWluIixtYXg6InptYXgiLGNhbGM6ZnVuY3Rpb24odCxlLHIpe3ZhciBvPWUuY29udG91cnMscz1lLmxpbmUsbD1vLnNpemV8fDEsYz1vLmNvbG9yaW5nLHU9YShlLHtpc0NvbG9yYmFyOiEwfSk7aWYoImhlYXRtYXAiPT09Yyl7dmFyIGg9bi5leHRyYWN0T3B0cyhlKTtyLl9maWxsZ3JhZGllbnQ9aC5yZXZlcnNlc2NhbGU/bi5mbGlwU2NhbGUoaC5jb2xvcnNjYWxlKTpoLmNvbG9yc2NhbGUsci5fenJhbmdlPVtoLm1pbixoLm1heF19ZWxzZSJmaWxsIj09PWMmJihyLl9maWxsY29sb3I9dSk7ci5fbGluZT17Y29sb3I6ImxpbmVzIj09PWM/dTpzLmNvbG9yLHdpZHRoOiExIT09by5zaG93bGluZXM/cy53aWR0aDowLGRhc2g6cy5kYXNofSxyLl9sZXZlbHM9e3N0YXJ0Om8uc3RhcnQsZW5kOmkobyksc2l6ZTpsfX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuL2VuZF9wbHVzIjo5NTQsIi4vbWFrZV9jb2xvcl9tYXAiOjk1OX1dLDk0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e0JPVFRPTVNUQVJUOlsxLDksMTMsMTA0LDcxM10sVE9QU1RBUlQ6WzQsNiw3LDEwNCw3MTNdLExFRlRTVEFSVDpbOCwxMiwxNCwyMDgsMTExNF0sUklHSFRTVEFSVDpbMiwzLDExLDIwOCwxMTE0XSxORVdERUxUQTpbbnVsbCxbLTEsMF0sWzAsLTFdLFstMSwwXSxbMSwwXSxudWxsLFswLC0xXSxbLTEsMF0sWzAsMV0sWzAsMV0sbnVsbCxbMCwxXSxbMSwwXSxbMSwwXSxbMCwtMV1dLENIT09TRVNBRERMRTp7MTA0Ols0LDFdLDIwODpbMiw4XSw3MTM6WzcsMTNdLDExMTQ6WzExLDE0XX0sU0FERExFUkVNQUlOREVSOnsxOjQsMjo4LDQ6MSw3OjEzLDg6MiwxMToxNCwxMzo3LDE0OjExfSxMQUJFTERJU1RBTkNFOjIsTEFCRUxJTkNSRUFTRToxMCxMQUJFTE1JTjozLExBQkVMTUFYOjEwLExBQkVMT1BUSU1JWkVSOntFREdFQ09TVDoxLEFOR0xFQ09TVDoxLE5FSUdIQk9SQ09TVDo1LFNBTUVMRVZFTEZBQ1RPUjoxMCxTQU1FTEVWRUxESVNUQU5DRTo1LE1BWENPU1Q6MTAwLElOSVRJQUxTRUFSQ0hQT0lOVFM6MTAsSVRFUkFUSU9OUzo1fX19LHt9XSw5NDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4vbGFiZWxfZGVmYXVsdHMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPWkuYWRkT3BhY2l0eSxzPWkub3BhY2l0eSxsPXQoIi4uLy4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIiksYz1sLkNPTlNUUkFJTlRfUkVEVUNUSU9OLHU9bC5DT01QQVJJU09OX09QUzI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksbCxoKXt2YXIgZixwLGQsZz1lLmNvbnRvdXJzLHY9cigiY29udG91cnMub3BlcmF0aW9uIik7KGcuX29wZXJhdGlvbj1jW3ZdLGZ1bmN0aW9uKHQsZSl7dmFyIHI7LTE9PT11LmluZGV4T2YoZS5vcGVyYXRpb24pPyh0KCJjb250b3Vycy52YWx1ZSIsWzAsMV0pLEFycmF5LmlzQXJyYXkoZS52YWx1ZSk/ZS52YWx1ZS5sZW5ndGg+Mj9lLnZhbHVlPWUudmFsdWUuc2xpY2UoMik6MD09PWUubGVuZ3RoP2UudmFsdWU9WzAsMV06ZS5sZW5ndGg8Mj8ocj1wYXJzZUZsb2F0KGUudmFsdWVbMF0pLGUudmFsdWU9W3IscisxXSk6ZS52YWx1ZT1bcGFyc2VGbG9hdChlLnZhbHVlWzBdKSxwYXJzZUZsb2F0KGUudmFsdWVbMV0pXTpuKGUudmFsdWUpJiYocj1wYXJzZUZsb2F0KGUudmFsdWUpLGUudmFsdWU9W3IscisxXSkpOih0KCJjb250b3Vycy52YWx1ZSIsMCksbihlLnZhbHVlKXx8KEFycmF5LmlzQXJyYXkoZS52YWx1ZSk/ZS52YWx1ZT1wYXJzZUZsb2F0KGUudmFsdWVbMF0pOmUudmFsdWU9MCkpfShyLGcpLCI9Ij09PXY/Zj1nLnNob3dsaW5lcz0hMDooZj1yKCJjb250b3Vycy5zaG93bGluZXMiKSxkPXIoImZpbGxjb2xvciIsbygodC5saW5lfHx7fSkuY29sb3J8fGwsLjUpKSksZikmJihwPXIoImxpbmUuY29sb3IiLGQmJnMoZCk/byhlLmZpbGxjb2xvciwxKTpsKSxyKCJsaW5lLndpZHRoIiwyKSxyKCJsaW5lLmRhc2giKSk7cigibGluZS5zbW9vdGhpbmciKSxhKHIsaSxwLGgpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIjo2ODksIi4vbGFiZWxfZGVmYXVsdHMiOjk1OCwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDk0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb25zdGFudHMvZmlsdGVyX29wcyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKTtmdW5jdGlvbiBpKHQsZSl7dmFyIHIsaT1BcnJheS5pc0FycmF5KGUpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIGEodCk/K3Q6bnVsbH1yZXR1cm4tMSE9PW4uQ09NUEFSSVNPTl9PUFMyLmluZGV4T2YodCk/cj1vKGk/ZVswXTplKTotMSE9PW4uSU5URVJWQUxfT1BTLmluZGV4T2YodCk/cj1pP1tvKGVbMF0pLG8oZVsxXSldOltvKGUpLG8oZSldOi0xIT09bi5TRVRfT1BTLmluZGV4T2YodCkmJihyPWk/ZS5tYXAobyk6W28oZSldKSxyfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2U9aSh0LGUpO3ZhciByPU1hdGgubWluKGVbMF0sZVsxXSksbj1NYXRoLm1heChlWzBdLGVbMV0pO3JldHVybntzdGFydDpyLGVuZDpuLHNpemU6bi1yfX19ZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJue3N0YXJ0OmU9aSh0LGUpLGVuZDoxLzAsc2l6ZToxLzB9fX1lLmV4cG9ydHM9eyJbXSI6bygiW10iKSwiXVsiOm8oIl1bIiksIj4iOnMoIj4iKSwiPCI6cygiPCIpLCI9IjpzKCI9Iil9fSx7Ii4uLy4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIjo2ODksImZhc3QtaXNudW1lcmljIjoyMjh9XSw5NTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW4oImNvbnRvdXJzLnN0YXJ0IiksaT1uKCJjb250b3Vycy5lbmQiKSxvPSExPT09YXx8ITE9PT1pLHM9cigiY29udG91cnMuc2l6ZSIpOyEobz9lLmF1dG9jb250b3VyPSEwOnIoImF1dG9jb250b3VyIiwhMSkpJiZzfHxyKCJuY29udG91cnMiKX19LHt9XSw5NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbi5leHRlbmRGbGF0KHt9LHQse2VkZ2VwYXRoczpuLmV4dGVuZERlZXAoW10sdC5lZGdlcGF0aHMpLHBhdGhzOm4uZXh0ZW5kRGVlcChbXSx0LnBhdGhzKSxzdGFydHM6bi5leHRlbmREZWVwKFtdLHQuc3RhcnRzKX0pfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGksbyxzPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJldmVyc2UoKX0sbD1mdW5jdGlvbih0KXtyZXR1cm4gdH07c3dpdGNoKGUpe2Nhc2UiPSI6Y2FzZSI8IjpyZXR1cm4gdDtjYXNlIj4iOmZvcigxIT09dC5sZW5ndGgmJm4ud2FybigiQ29udG91ciBkYXRhIGludmFsaWQgZm9yIHRoZSBzcGVjaWZpZWQgaW5lcXVhbGl0eSBvcGVyYXRpb24uIiksaT10WzBdLHI9MDtyPGkuZWRnZXBhdGhzLmxlbmd0aDtyKyspaS5lZGdlcGF0aHNbcl09cyhpLmVkZ2VwYXRoc1tyXSk7Zm9yKHI9MDtyPGkucGF0aHMubGVuZ3RoO3IrKylpLnBhdGhzW3JdPXMoaS5wYXRoc1tyXSk7Zm9yKHI9MDtyPGkuc3RhcnRzLmxlbmd0aDtyKyspaS5zdGFydHNbcl09cyhpLnN0YXJ0c1tyXSk7cmV0dXJuIHQ7Y2FzZSJdWyI6dmFyIGM9cztzPWwsbD1jO2Nhc2UiW10iOmZvcigyIT09dC5sZW5ndGgmJm4ud2FybigiQ29udG91ciBkYXRhIGludmFsaWQgZm9yIHRoZSBzcGVjaWZpZWQgaW5lcXVhbGl0eSByYW5nZSBvcGVyYXRpb24uIiksaT1hKHRbMF0pLG89YSh0WzFdKSxyPTA7cjxpLmVkZ2VwYXRocy5sZW5ndGg7cisrKWkuZWRnZXBhdGhzW3JdPXMoaS5lZGdlcGF0aHNbcl0pO2ZvcihyPTA7cjxpLnBhdGhzLmxlbmd0aDtyKyspaS5wYXRoc1tyXT1zKGkucGF0aHNbcl0pO2ZvcihyPTA7cjxpLnN0YXJ0cy5sZW5ndGg7cisrKWkuc3RhcnRzW3JdPXMoaS5zdGFydHNbcl0pO2Zvcig7by5lZGdlcGF0aHMubGVuZ3RoOylpLmVkZ2VwYXRocy5wdXNoKGwoby5lZGdlcGF0aHMuc2hpZnQoKSkpO2Zvcig7by5wYXRocy5sZW5ndGg7KWkucGF0aHMucHVzaChsKG8ucGF0aHMuc2hpZnQoKSkpO2Zvcig7by5zdGFydHMubGVuZ3RoOylpLnN0YXJ0cy5wdXNoKGwoby5zdGFydHMuc2hpZnQoKSkpO3JldHVybltpXX19fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vaGVhdG1hcC94eXpfZGVmYXVsdHMiKSxpPXQoIi4vY29uc3RyYWludF9kZWZhdWx0cyIpLG89dCgiLi9jb250b3Vyc19kZWZhdWx0cyIpLHM9dCgiLi9zdHlsZV9kZWZhdWx0cyIpLGw9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMpe2Z1bmN0aW9uIHUocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGwscixhKX1pZihhKHQsZSx1LGMpKXt1KCJ0ZXh0IiksdSgiaG92ZXJ0ZXh0IiksdSgiaG92ZXJ0ZW1wbGF0ZSIpLHUoImhvdmVyb25nYXBzIik7dmFyIGg9ImNvbnN0cmFpbnQiPT09dSgiY29udG91cnMudHlwZSIpO3UoImNvbm5lY3RnYXBzIixuLmlzQXJyYXkxRChlLnopKSxoP2kodCxlLHUsYyxyKToobyh0LGUsdSxmdW5jdGlvbihyKXtyZXR1cm4gbi5jb2VyY2UyKHQsZSxsLHIpfSkscyh0LGUsdSxjKSl9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9oZWF0bWFwL3h5el9kZWZhdWx0cyI6MTAxNCwiLi9hdHRyaWJ1dGVzIjo5NDMsIi4vY29uc3RyYWludF9kZWZhdWx0cyI6OTQ4LCIuL2NvbnRvdXJzX2RlZmF1bHRzIjo5NTAsIi4vc3R5bGVfZGVmYXVsdHMiOjk2NH1dLDk1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vY29uc3RyYWludF9tYXBwaW5nIiksaT10KCIuL2VuZF9wbHVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89ImNvbnN0cmFpbnQiPT09dC50eXBlP2FbdC5fb3BlcmF0aW9uXSh0LnZhbHVlKTp0LHM9by5zaXplLGw9W10sYz1pKG8pLHU9ci50cmFjZS5fY2FycGV0VHJhY2UsaD11P3t4YXhpczp1LmFheGlzLHlheGlzOnUuYmF4aXMseDpyLmEseTpyLmJ9Ont4YXhpczplLnhheGlzLHlheGlzOmUueWF4aXMseDpyLngseTpyLnl9LGY9by5zdGFydDtmPGM7Zis9cylpZihsLnB1c2gobi5leHRlbmRGbGF0KHtsZXZlbDpmLGNyb3NzaW5nczp7fSxzdGFydHM6W10sZWRnZXBhdGhzOltdLHBhdGhzOltdLHo6ci56LHNtb290aGluZzpyLnRyYWNlLmxpbmUuc21vb3RoaW5nfSxoKSksbC5sZW5ndGg+MWUzKXtuLndhcm4oIlRvbyBtYW55IGNvbnRvdXJzLCBjbGlwcGluZyBhdCAxMDAwIix0KTticmVha31yZXR1cm4gbH19LHsiLi4vLi4vbGliIjo3MTcsIi4vY29uc3RyYWludF9tYXBwaW5nIjo5NDksIi4vZW5kX3BsdXMiOjk1NH1dLDk1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZW5kK3Quc2l6ZS8xZTZ9fSx7fV0sOTU1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9jb25zdGFudHMiKTtmdW5jdGlvbiBpKHQsZSxyLG4pe3JldHVybiBNYXRoLmFicyh0WzBdLWVbMF0pPHImJk1hdGguYWJzKHRbMV0tZVsxXSk8bn1mdW5jdGlvbiBvKHQsZSxyLG8sbCl7dmFyIGMsdT1lLmpvaW4oIiwiKSxoPXQuY3Jvc3NpbmdzW3VdLGY9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTAsaT0wO3Q+MjAmJmU/MjA4PT09dHx8MTExND09PXQ/bj0wPT09clswXT8xOi0xOmk9MD09PXJbMV0/MTotMTotMSE9PWEuQk9UVE9NU1RBUlQuaW5kZXhPZih0KT9pPTE6LTEhPT1hLkxFRlRTVEFSVC5pbmRleE9mKHQpP249MTotMSE9PWEuVE9QU1RBUlQuaW5kZXhPZih0KT9pPS0xOm49LTE7cmV0dXJuW24saV19KGgscixlKSxwPVtzKHQsZSxbLWZbMF0sLWZbMV1dKV0sZD10LnoubGVuZ3RoLGc9dC56WzBdLmxlbmd0aCx2PWUuc2xpY2UoKSxtPWYuc2xpY2UoKTtmb3IoYz0wO2M8MWU0O2MrKyl7aWYoaD4yMD8oaD1hLkNIT09TRVNBRERMRVtoXVsoZlswXXx8ZlsxXSk8MD8wOjFdLHQuY3Jvc3NpbmdzW3VdPWEuU0FERExFUkVNQUlOREVSW2hdKTpkZWxldGUgdC5jcm9zc2luZ3NbdV0sIShmPWEuTkVXREVMVEFbaF0pKXtuLmxvZygiRm91bmQgYmFkIG1hcmNoaW5nIGluZGV4OiIsaCxlLHQubGV2ZWwpO2JyZWFrfXAucHVzaChzKHQsZSxmKSksZVswXSs9ZlswXSxlWzFdKz1mWzFdLHU9ZS5qb2luKCIsIiksaShwW3AubGVuZ3RoLTFdLHBbcC5sZW5ndGgtMl0sbyxsKSYmcC5wb3AoKTt2YXIgeT1mWzBdJiYoZVswXTwwfHxlWzBdPmctMil8fGZbMV0mJihlWzFdPDB8fGVbMV0+ZC0yKTtpZihlWzBdPT09dlswXSYmZVsxXT09PXZbMV0mJmZbMF09PT1tWzBdJiZmWzFdPT09bVsxXXx8ciYmeSlicmVhaztoPXQuY3Jvc3NpbmdzW3VdfTFlND09PWMmJm4ubG9nKCJJbmZpbml0ZSBsb29wIGluIGNvbnRvdXI/Iik7dmFyIHgsYixfLHcsayxULE0sQSxTLEUsTCxDLFAsTyx6LEk9aShwWzBdLHBbcC5sZW5ndGgtMV0sbyxsKSxEPTAsUj0uMip0LnNtb290aGluZyxGPVtdLEI9MDtmb3IoYz0xO2M8cC5sZW5ndGg7YysrKUM9cFtjXSxQPXBbYy0xXSxPPXZvaWQgMCx6PXZvaWQgMCxPPUNbMl0tUFsyXSx6PUNbM10tUFszXSxEKz1NPU1hdGguc3FydChPKk8reip6KSxGLnB1c2goTSk7dmFyIE49RC9GLmxlbmd0aCpSO2Z1bmN0aW9uIGoodCl7cmV0dXJuIHBbdCVwLmxlbmd0aF19Zm9yKGM9cC5sZW5ndGgtMjtjPj1CO2MtLSlpZigoeD1GW2NdKTxOKXtmb3IoXz0wLGI9Yy0xO2I+PUImJngrRltiXTxOO2ItLSl4Kz1GW2JdO2lmKEkmJmM9PT1wLmxlbmd0aC0yKWZvcihfPTA7XzxiJiZ4K0ZbX108TjtfKyspeCs9RltfXTtrPWMtYitfKzEsVD1NYXRoLmZsb29yKChjK2IrXysyKS8yKSx3PUl8fGMhPT1wLmxlbmd0aC0yP0l8fC0xIT09Yj9rJTI/aihUKTpbKGooVClbMF0raihUKzEpWzBdKS8yLChqKFQpWzFdK2ooVCsxKVsxXSkvMl06cFswXTpwW3AubGVuZ3RoLTFdLHAuc3BsaWNlKGIrMSxjLWIrMSx3KSxjPWIrMSxfJiYoQj1fKSxJJiYoYz09PXAubGVuZ3RoLTI/cFtfXT1wW3AubGVuZ3RoLTFdOjA9PT1jJiYocFtwLmxlbmd0aC0xXT1wWzBdKSl9Zm9yKHAuc3BsaWNlKDAsQiksYz0wO2M8cC5sZW5ndGg7YysrKXBbY10ubGVuZ3RoPTI7aWYoIShwLmxlbmd0aDwyKSlpZihJKXAucG9wKCksdC5wYXRocy5wdXNoKHApO2Vsc2V7cnx8bi5sb2coIlVuY2xvc2VkIGludGVyaW9yIGNvbnRvdXI/Iix0LmxldmVsLHYuam9pbigiLCIpLHAuam9pbigiTCIpKTt2YXIgVj0hMTtmb3IoQT0wO0E8dC5lZGdlcGF0aHMubGVuZ3RoO0ErKylpZihFPXQuZWRnZXBhdGhzW0FdLCFWJiZpKEVbMF0scFtwLmxlbmd0aC0xXSxvLGwpKXtwLnBvcCgpLFY9ITA7dmFyIFU9ITE7Zm9yKFM9MDtTPHQuZWRnZXBhdGhzLmxlbmd0aDtTKyspaWYoaSgoTD10LmVkZ2VwYXRoc1tTXSlbTC5sZW5ndGgtMV0scFswXSxvLGwpKXtVPSEwLHAuc2hpZnQoKSx0LmVkZ2VwYXRocy5zcGxpY2UoQSwxKSxTPT09QT90LnBhdGhzLnB1c2gocC5jb25jYXQoTCkpOihTPkEmJlMtLSx0LmVkZ2VwYXRoc1tTXT1MLmNvbmNhdChwLEUpKTticmVha31VfHwodC5lZGdlcGF0aHNbQV09cC5jb25jYXQoRSkpfWZvcihBPTA7QTx0LmVkZ2VwYXRocy5sZW5ndGgmJiFWO0ErKylpKChFPXQuZWRnZXBhdGhzW0FdKVtFLmxlbmd0aC0xXSxwWzBdLG8sbCkmJihwLnNoaWZ0KCksdC5lZGdlcGF0aHNbQV09RS5jb25jYXQocCksVj0hMCk7Vnx8dC5lZGdlcGF0aHMucHVzaChwKX19ZnVuY3Rpb24gcyh0LGUscil7dmFyIG49ZVswXStNYXRoLm1heChyWzBdLDApLGE9ZVsxXStNYXRoLm1heChyWzFdLDApLGk9dC56W2FdW25dLG89dC54YXhpcyxzPXQueWF4aXM7aWYoclsxXSl7dmFyIGw9KHQubGV2ZWwtaSkvKHQuelthXVtuKzFdLWkpO3JldHVybltvLmMycCgoMS1sKSp0Lnhbbl0rbCp0LnhbbisxXSwhMCkscy5jMnAodC55W2FdLCEwKSxuK2wsYV19dmFyIGM9KHQubGV2ZWwtaSkvKHQuelthKzFdW25dLWkpO3JldHVybltvLmMycCh0Lnhbbl0sITApLHMuYzJwKCgxLWMpKnQueVthXStjKnQueVthKzFdLCEwKSxuLGErY119ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxpLHMsbDtmb3IoZT1lfHwuMDEscj1yfHwuMDEsaT0wO2k8dC5sZW5ndGg7aSsrKXtmb3Iocz10W2ldLGw9MDtsPHMuc3RhcnRzLmxlbmd0aDtsKyspbyhzLHMuc3RhcnRzW2xdLCJlZGdlIixlLHIpO2ZvcihhPTA7T2JqZWN0LmtleXMocy5jcm9zc2luZ3MpLmxlbmd0aCYmYTwxZTQ7KWErKyxvKHMsT2JqZWN0LmtleXMocy5jcm9zc2luZ3MpWzBdLnNwbGl0KCIsIikubWFwKE51bWJlciksdm9pZCAwLGUscik7MWU0PT09YSYmbi5sb2coIkluZmluaXRlIGxvb3AgaW4gY29udG91cj8iKX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2NvbnN0YW50cyI6OTQ3fV0sOTU2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxhPXQoIi4uL2hlYXRtYXAvaG92ZXIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxvKXt2YXIgcz1hKHQsZSxyLGksbywhMCk7cmV0dXJuIHMmJnMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT10LnRyYWNlOyJjb25zdHJhaW50Ij09PWUuY29udG91cnMudHlwZSYmKGUuZmlsbGNvbG9yJiZuLm9wYWNpdHkoZS5maWxsY29sb3IpP3QuY29sb3I9bi5hZGRPcGFjaXR5KGUuZmlsbGNvbG9yLDEpOmUuY29udG91cnMuc2hvd2xpbmVzJiZuLm9wYWNpdHkoZS5saW5lLmNvbG9yKSYmKHQuY29sb3I9bi5hZGRPcGFjaXR5KGUubGluZS5jb2xvciwxKSkpfSksc319LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi9oZWF0bWFwL2hvdmVyIjoxMDA3fV0sOTU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLnBsb3Qsc3R5bGU6dCgiLi9zdHlsZSIpLGNvbG9yYmFyOnQoIi4vY29sb3JiYXIiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImNvbnRvdXIiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCIyZE1hcCIsImNvbnRvdXIiLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4vYXR0cmlidXRlcyI6OTQzLCIuL2NhbGMiOjk0NCwiLi9jb2xvcmJhciI6OTQ2LCIuL2RlZmF1bHRzIjo5NTIsIi4vaG92ZXIiOjk1NiwiLi9wbG90Ijo5NjEsIi4vc3R5bGUiOjk2M31dLDk1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7aWYoYXx8KGE9e30pLHQoImNvbnRvdXJzLnNob3dsYWJlbHMiKSl7dmFyIGk9ZS5mb250O24uY29lcmNlRm9udCh0LCJjb250b3Vycy5sYWJlbGZvbnQiLHtmYW1pbHk6aS5mYW1pbHksc2l6ZTppLnNpemUsY29sb3I6cn0pLHQoImNvbnRvdXJzLmxhYmVsZm9ybWF0Iil9ITEhPT1hLmhhc0hvdmVyJiZ0KCJ6aG92ZXJmb3JtYXQiKX19LHsiLi4vLi4vbGliIjo3MTd9XSw5NTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLGk9dCgiLi9lbmRfcGx1cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmNvbnRvdXJzLHI9ZS5zdGFydCxvPWkoZSkscz1lLnNpemV8fDEsbD1NYXRoLmZsb29yKChvLXIpL3MpKzEsYz0ibGluZXMiPT09ZS5jb2xvcmluZz8wOjEsdT1hLmV4dHJhY3RPcHRzKHQpO2lzRmluaXRlKHMpfHwocz0xLGw9MSk7dmFyIGgsZixwPXUucmV2ZXJzZXNjYWxlP2EuZmxpcFNjYWxlKHUuY29sb3JzY2FsZSk6dS5jb2xvcnNjYWxlLGQ9cC5sZW5ndGgsZz1uZXcgQXJyYXkoZCksdj1uZXcgQXJyYXkoZCk7aWYoImhlYXRtYXAiPT09ZS5jb2xvcmluZyl7dmFyIG09dS5taW4seT11Lm1heDtmb3IoZj0wO2Y8ZDtmKyspaD1wW2ZdLGdbZl09aFswXSooeS1tKSttLHZbZl09aFsxXTt2YXIgeD1uLmV4dGVudChbbSx5LGUuc3RhcnQsZS5zdGFydCtzKihsLTEpXSksYj14W208eT8wOjFdLF89eFttPHk/MTowXTtiIT09bSYmKGcuc3BsaWNlKDAsMCxiKSx2LnNwbGljZSgwLDAsdlswXSkpLF8hPT15JiYoZy5wdXNoKF8pLHYucHVzaCh2W3YubGVuZ3RoLTFdKSl9ZWxzZSBmb3IoZj0wO2Y8ZDtmKyspaD1wW2ZdLGdbZl09KGhbMF0qKGwrYy0xKS1jLzIpKnMrcix2W2ZdPWhbMV07cmV0dXJuIGEubWFrZUNvbG9yU2NhbGVGdW5jKHtkb21haW46ZyxyYW5nZTp2fSx7bm9OdW1lcmljQ2hlY2s6ITB9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4vZW5kX3BsdXMiOjk1NCxkMzoxNjV9XSw5NjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb25zdGFudHMiKTtmdW5jdGlvbiBhKHQsZSl7dmFyIHI9KGVbMF1bMF0+dD8wOjEpKyhlWzBdWzFdPnQ/MDoyKSsoZVsxXVsxXT50PzA6NCkrKGVbMV1bMF0+dD8wOjgpO3JldHVybiA1PT09cnx8MTA9PT1yP3Q+KGVbMF1bMF0rZVswXVsxXStlWzFdWzBdK2VbMV1bMV0pLzQ/NT09PXI/NzEzOjExMTQ6NT09PXI/MTA0OjIwODoxNT09PXI/MDpyfWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyLGksbyxzLGwsYyx1LGgsZj10WzBdLnoscD1mLmxlbmd0aCxkPWZbMF0ubGVuZ3RoLGc9Mj09PXB8fDI9PT1kO2ZvcihyPTA7cjxwLTE7cisrKWZvcihvPVtdLDA9PT1yJiYobz1vLmNvbmNhdChuLkJPVFRPTVNUQVJUKSkscj09PXAtMiYmKG89by5jb25jYXQobi5UT1BTVEFSVCkpLGU9MDtlPGQtMTtlKyspZm9yKGk9by5zbGljZSgpLDA9PT1lJiYoaT1pLmNvbmNhdChuLkxFRlRTVEFSVCkpLGU9PT1kLTImJihpPWkuY29uY2F0KG4uUklHSFRTVEFSVCkpLHM9ZSsiLCIrcixsPVtbZltyXVtlXSxmW3JdW2UrMV1dLFtmW3IrMV1bZV0sZltyKzFdW2UrMV1dXSxoPTA7aDx0Lmxlbmd0aDtoKyspKGM9YSgodT10W2hdKS5sZXZlbCxsKSkmJih1LmNyb3NzaW5nc1tzXT1jLC0xIT09aS5pbmRleE9mKGMpJiYodS5zdGFydHMucHVzaChbZSxyXSksZyYmLTEhPT1pLmluZGV4T2YoYyxpLmluZGV4T2YoYykrMSkmJnUuc3RhcnRzLnB1c2goW2Uscl0pKSl9fSx7Ii4vY29uc3RhbnRzIjo5NDd9XSw5NjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxzPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGw9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxjPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9zZXRfY29udmVydCIpLHU9dCgiLi4vaGVhdG1hcC9wbG90IiksaD10KCIuL21ha2VfY3Jvc3NpbmdzIiksZj10KCIuL2ZpbmRfYWxsX3BhdGhzIikscD10KCIuL2VtcHR5X3BhdGhpbmZvIiksZD10KCIuL2NvbnZlcnRfdG9fY29uc3RyYWludHMiKSxnPXQoIi4vY2xvc2VfYm91bmRhcmllcyIpLHY9dCgiLi9jb25zdGFudHMiKSxtPXYuTEFCRUxPUFRJTUlaRVI7ZnVuY3Rpb24geSh0LGUpe3ZhciByLG4sbyxzLGwsYyx1LGg9IiIsZj0wLHA9dC5lZGdlcGF0aHMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSxkPSEwO2Z1bmN0aW9uIGcodCl7cmV0dXJuIE1hdGguYWJzKHRbMV0tZVsyXVsxXSk8LjAxfWZ1bmN0aW9uIHYodCl7cmV0dXJuIE1hdGguYWJzKHRbMF0tZVswXVswXSk8LjAxfWZ1bmN0aW9uIG0odCl7cmV0dXJuIE1hdGguYWJzKHRbMF0tZVsyXVswXSk8LjAxfWZvcig7cC5sZW5ndGg7KXtmb3IoYz1pLnNtb290aG9wZW4odC5lZGdlcGF0aHNbZl0sdC5zbW9vdGhpbmcpLGgrPWQ/YzpjLnJlcGxhY2UoL15NLywiTCIpLHAuc3BsaWNlKHAuaW5kZXhPZihmKSwxKSxyPXQuZWRnZXBhdGhzW2ZdW3QuZWRnZXBhdGhzW2ZdLmxlbmd0aC0xXSxzPS0xLG89MDtvPDQ7bysrKXtpZighcil7YS5sb2coIk1pc3NpbmcgZW5kPyIsZix0KTticmVha31mb3IodT1yLE1hdGguYWJzKHVbMV0tZVswXVsxXSk8LjAxJiYhbShyKT9uPWVbMV06dihyKT9uPWVbMF06ZyhyKT9uPWVbM106bShyKSYmKG49ZVsyXSksbD0wO2w8dC5lZGdlcGF0aHMubGVuZ3RoO2wrKyl7dmFyIHk9dC5lZGdlcGF0aHNbbF1bMF07TWF0aC5hYnMoclswXS1uWzBdKTwuMDE/TWF0aC5hYnMoclswXS15WzBdKTwuMDEmJih5WzFdLXJbMV0pKihuWzFdLXlbMV0pPj0wJiYobj15LHM9bCk6TWF0aC5hYnMoclsxXS1uWzFdKTwuMDE/TWF0aC5hYnMoclsxXS15WzFdKTwuMDEmJih5WzBdLXJbMF0pKihuWzBdLXlbMF0pPj0wJiYobj15LHM9bCk6YS5sb2coImVuZHB0IHRvIG5ld2VuZHB0IGlzIG5vdCB2ZXJ0LiBvciBob3J6LiIscixuLHkpfWlmKHI9bixzPj0wKWJyZWFrO2grPSJMIitufWlmKHM9PT10LmVkZ2VwYXRocy5sZW5ndGgpe2EubG9nKCJ1bmNsb3NlZCBwZXJpbWV0ZXIgcGF0aCIpO2JyZWFrfWY9cywoZD0tMT09PXAuaW5kZXhPZihmKSkmJihmPXBbMF0saCs9IloiKX1mb3IoZj0wO2Y8dC5wYXRocy5sZW5ndGg7ZisrKWgrPWkuc21vb3RoY2xvc2VkKHQucGF0aHNbZl0sdC5zbW9vdGhpbmcpO3JldHVybiBofWZ1bmN0aW9uIHgodCxlLHIsbil7dmFyIGk9ZS53aWR0aC8yLG89ZS5oZWlnaHQvMixzPXQueCxsPXQueSxjPXQudGhldGEsdT1NYXRoLmNvcyhjKSppLGg9TWF0aC5zaW4oYykqaSxmPShzPm4uY2VudGVyP24ucmlnaHQtczpzLW4ubGVmdCkvKHUrTWF0aC5hYnMoTWF0aC5zaW4oYykqbykpLHA9KGw+bi5taWRkbGU/bi5ib3R0b20tbDpsLW4udG9wKS8oTWF0aC5hYnMoaCkrTWF0aC5jb3MoYykqbyk7aWYoZjwxfHxwPDEpcmV0dXJuIDEvMDt2YXIgZD1tLkVER0VDT1NUKigxLyhmLTEpKzEvKHAtMSkpO2QrPW0uQU5HTEVDT1NUKmMqYztmb3IodmFyIGc9cy11LHY9bC1oLHk9cyt1LHg9bCtoLGI9MDtiPHIubGVuZ3RoO2IrKyl7dmFyIF89cltiXSx3PU1hdGguY29zKF8udGhldGEpKl8ud2lkdGgvMixrPU1hdGguc2luKF8udGhldGEpKl8ud2lkdGgvMixUPTIqYS5zZWdtZW50RGlzdGFuY2UoZyx2LHkseCxfLngtdyxfLnktayxfLngrdyxfLnkraykvKGUuaGVpZ2h0K18uaGVpZ2h0KSxNPV8ubGV2ZWw9PT1lLmxldmVsLEE9TT9tLlNBTUVMRVZFTERJU1RBTkNFOjE7aWYoVDw9QSlyZXR1cm4gMS8wO2QrPW0uTkVJR0hCT1JDT1NUKihNP20uU0FNRUxFVkVMRkFDVE9SOjEpLyhULUEpfXJldHVybiBkfWZ1bmN0aW9uIGIodCl7dmFyIGUscixuPXQudHJhY2UuX2VtcHR5cG9pbnRzLGE9W10saT10LnoubGVuZ3RoLG89dC56WzBdLmxlbmd0aCxzPVtdO2ZvcihlPTA7ZTxvO2UrKylzLnB1c2goMSk7Zm9yKGU9MDtlPGk7ZSsrKWEucHVzaChzLnNsaWNlKCkpO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspYVsocj1uW2VdKVswXV1bclsxXV09MDtyZXR1cm4gdC56bWFzaz1hLGF9ci5wbG90PWZ1bmN0aW9uKHQsZSxvLHMpe3ZhciBsPWUueGF4aXMsYz1lLnlheGlzO2EubWFrZVRyYWNlR3JvdXBzKHMsbywiY29udG91ciIpLmVhY2goZnVuY3Rpb24obyl7dmFyIHM9bi5zZWxlY3QodGhpcyksbT1vWzBdLHg9bS50cmFjZSxfPW0ueCx3PW0ueSxrPXguY29udG91cnMsVD1wKGssZSxtKSxNPWEuZW5zdXJlU2luZ2xlKHMsImciLCJoZWF0bWFwY29sb3JpbmciKSxBPVtdOyJoZWF0bWFwIj09PWsuY29sb3JpbmcmJihBPVtvXSksdSh0LGUsQSxNKSxoKFQpLGYoVCk7dmFyIFM9bC5jMnAoX1swXSwhMCksRT1sLmMycChfW18ubGVuZ3RoLTFdLCEwKSxMPWMuYzJwKHdbMF0sITApLEM9Yy5jMnAod1t3Lmxlbmd0aC0xXSwhMCksUD1bW1MsQ10sW0UsQ10sW0UsTF0sW1MsTF1dLE89VDsiY29uc3RyYWludCI9PT1rLnR5cGUmJihPPWQoVCxrLl9vcGVyYXRpb24pKSxmdW5jdGlvbih0LGUscil7dmFyIG49YS5lbnN1cmVTaW5nbGUodCwiZyIsImNvbnRvdXJiZyIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEoImZpbGwiPT09ci5jb2xvcmluZz9bMF06W10pO24uZW50ZXIoKS5hcHBlbmQoInBhdGgiKSxuLmV4aXQoKS5yZW1vdmUoKSxuLmF0dHIoImQiLCJNIitlLmpvaW4oIkwiKSsiWiIpLnN0eWxlKCJzdHJva2UiLCJub25lIil9KHMsUCxrKSxmdW5jdGlvbih0LGUscixpKXt2YXIgbz0iZmlsbCI9PT1pLmNvbG9yaW5nfHwiY29uc3RyYWludCI9PT1pLnR5cGUmJiI9IiE9PWkuX29wZXJhdGlvbixzPSJNIityLmpvaW4oIkwiKSsiWiI7byYmZyhlLGkpO3ZhciBsPWEuZW5zdXJlU2luZ2xlKHQsImciLCJjb250b3VyZmlsbCIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEobz9lOltdKTtsLmVudGVyKCkuYXBwZW5kKCJwYXRoIiksbC5leGl0KCkucmVtb3ZlKCksbC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPSh0LnByZWZpeEJvdW5kYXJ5P3M6IiIpK3kodCxyKTtlP24uc2VsZWN0KHRoaXMpLmF0dHIoImQiLGUpLnN0eWxlKCJzdHJva2UiLCJub25lIik6bi5zZWxlY3QodGhpcykucmVtb3ZlKCl9KX0ocyxPLFAsayksZnVuY3Rpb24odCxlLG8scyxsKXt2YXIgYz1hLmVuc3VyZVNpbmdsZSh0LCJnIiwiY29udG91cmxpbmVzIiksdT0hMSE9PWwuc2hvd2xpbmVzLGg9bC5zaG93bGFiZWxzLGY9dSYmaCxwPXIuY3JlYXRlTGluZXMoYyx1fHxoLGUpLGQ9ci5jcmVhdGVMaW5lQ2xpcChjLGYsbyxzLnRyYWNlLnVpZCksZz10LnNlbGVjdEFsbCgiZy5jb250b3VybGFiZWxzIikuZGF0YShoP1swXTpbXSk7aWYoZy5leGl0KCkucmVtb3ZlKCksZy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJsYWJlbHMiLCEwKSxoKXt2YXIgbT1bXSx5PVtdO2EuY2xlYXJMb2NhdGlvbkNhY2hlKCk7dmFyIHg9ci5sYWJlbEZvcm1hdHRlcihvLHMpLGI9aS50ZXN0ZXIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZGF0YS1ub3RleCIsMSkuY2FsbChpLmZvbnQsbC5sYWJlbGZvbnQpLF89ZVswXS54YXhpcyx3PWVbMF0ueWF4aXMsaz1fLl9sZW5ndGgsVD13Ll9sZW5ndGgsTT1fLnJhbmdlLEE9dy5yYW5nZSxTPWEuYWdnTnVtcyhNYXRoLm1pbixudWxsLHMueCksRT1hLmFnZ051bXMoTWF0aC5tYXgsbnVsbCxzLngpLEw9YS5hZ2dOdW1zKE1hdGgubWluLG51bGwscy55KSxDPWEuYWdnTnVtcyhNYXRoLm1heCxudWxsLHMueSksUD1NYXRoLm1heChfLmMycChTLCEwKSwwKSxPPU1hdGgubWluKF8uYzJwKEUsITApLGspLHo9TWF0aC5tYXgody5jMnAoQywhMCksMCksST1NYXRoLm1pbih3LmMycChMLCEwKSxUKSxEPXt9O01bMF08TVsxXT8oRC5sZWZ0PVAsRC5yaWdodD1PKTooRC5sZWZ0PU8sRC5yaWdodD1QKSxBWzBdPEFbMV0/KEQudG9wPXosRC5ib3R0b209SSk6KEQudG9wPUksRC5ib3R0b209eiksRC5taWRkbGU9KEQudG9wK0QuYm90dG9tKS8yLEQuY2VudGVyPShELmxlZnQrRC5yaWdodCkvMixtLnB1c2goW1tELmxlZnQsRC50b3BdLFtELnJpZ2h0LEQudG9wXSxbRC5yaWdodCxELmJvdHRvbV0sW0QubGVmdCxELmJvdHRvbV1dKTt2YXIgUj1NYXRoLnNxcnQoayprK1QqVCksRj12LkxBQkVMRElTVEFOQ0UqUi9NYXRoLm1heCgxLGUubGVuZ3RoL3YuTEFCRUxJTkNSRUFTRSk7cC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXIuY2FsY1RleHRPcHRzKHQubGV2ZWwseCxiLG8pO24uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1hLmdldFZpc2libGVTZWdtZW50KHRoaXMsRCxlLmhlaWdodC8yKTtpZih0JiYhKHQubGVuPChlLndpZHRoK2UuaGVpZ2h0KSp2LkxBQkVMTUlOKSlmb3IodmFyIG49TWF0aC5taW4oTWF0aC5jZWlsKHQubGVuL0YpLHYuTEFCRUxNQVgpLGk9MDtpPG47aSsrKXt2YXIgbz1yLmZpbmRCZXN0VGV4dExvY2F0aW9uKHRoaXMsdCxlLHksRCk7aWYoIW8pYnJlYWs7ci5hZGRMYWJlbERhdGEobyxlLHksbSl9fSl9KSxiLnJlbW92ZSgpLHIuZHJhd0xhYmVscyhnLHksbyxkLGY/bTpudWxsKX1oJiYhdSYmcC5yZW1vdmUoKX0ocyxULHQsbSxrKSxmdW5jdGlvbih0LGUscixuLG8pe3ZhciBzPW4udHJhY2UsbD1yLl9mdWxsTGF5b3V0Ll9jbGlwcyxjPSJjbGlwIitzLnVpZCx1PWwuc2VsZWN0QWxsKCIjIitjKS5kYXRhKHMuY29ubmVjdGdhcHM/W106WzBdKTtpZih1LmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0aCIpLmNsYXNzZWQoImNvbnRvdXJjbGlwIiwhMCkuYXR0cigiaWQiLGMpLHUuZXhpdCgpLnJlbW92ZSgpLCExPT09cy5jb25uZWN0Z2Fwcyl7dmFyIHA9e2xldmVsOi45LGNyb3NzaW5nczp7fSxzdGFydHM6W10sZWRnZXBhdGhzOltdLHBhdGhzOltdLHhheGlzOmUueGF4aXMseWF4aXM6ZS55YXhpcyx4Om4ueCx5Om4ueSx6OmIobiksc21vb3RoaW5nOjB9O2goW3BdKSxmKFtwXSksZyhbcF0se3R5cGU6ImxldmVscyJ9KTt2YXIgZD1hLmVuc3VyZVNpbmdsZSh1LCJwYXRoIiwiIik7ZC5hdHRyKCJkIiwocC5wcmVmaXhCb3VuZGFyeT8iTSIrby5qb2luKCJMIikrIloiOiIiKSt5KHAsbykpfWVsc2UgYz1udWxsO2kuc2V0Q2xpcFVybCh0LGMscil9KHMsZSx0LG0sUCl9KX0sci5jcmVhdGVMaW5lcz1mdW5jdGlvbih0LGUscil7dmFyIG49clswXS5zbW9vdGhpbmcsYT10LnNlbGVjdEFsbCgiZy5jb250b3VybGV2ZWwiKS5kYXRhKGU/cjpbXSk7aWYoYS5leGl0KCkucmVtb3ZlKCksYS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJsZXZlbCIsITApLGUpe3ZhciBvPWEuc2VsZWN0QWxsKCJwYXRoLm9wZW5saW5lIikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5wZWRnZXBhdGhzfHx0LmVkZ2VwYXRoc30pO28uZXhpdCgpLnJlbW92ZSgpLG8uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJvcGVubGluZSIsITApLG8uYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIGkuc21vb3Rob3Blbih0LG4pfSkuc3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwxKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpO3ZhciBzPWEuc2VsZWN0QWxsKCJwYXRoLmNsb3NlZGxpbmUiKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBwYXRoc3x8dC5wYXRoc30pO3MuZXhpdCgpLnJlbW92ZSgpLHMuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJjbG9zZWRsaW5lIiwhMCkscy5hdHRyKCJkIixmdW5jdGlvbih0KXtyZXR1cm4gaS5zbW9vdGhjbG9zZWQodCxuKX0pLnN0eWxlKCJzdHJva2UtbWl0ZXJsaW1pdCIsMSkuc3R5bGUoInZlY3Rvci1lZmZlY3QiLCJub24tc2NhbGluZy1zdHJva2UiKX1yZXR1cm4gYX0sci5jcmVhdGVMaW5lQ2xpcD1mdW5jdGlvbih0LGUscixuKXt2YXIgYT1lPyJjbGlwbGluZSIrbjpudWxsLG89ci5fZnVsbExheW91dC5fY2xpcHMuc2VsZWN0QWxsKCIjIithKS5kYXRhKGU/WzBdOltdKTtyZXR1cm4gby5leGl0KCkucmVtb3ZlKCksby5lbnRlcigpLmFwcGVuZCgiY2xpcFBhdGgiKS5jbGFzc2VkKCJjb250b3VybGluZWNsaXAiLCEwKS5hdHRyKCJpZCIsYSksaS5zZXRDbGlwVXJsKHQsYSxyKSxvfSxyLmxhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dCxuPWUudHJhY2UsYT1uLmNvbnRvdXJzO2lmKGEubGFiZWxmb3JtYXQpcmV0dXJuIHIuX2QzbG9jYWxlLm51bWJlckZvcm1hdChhLmxhYmVsZm9ybWF0KTt2YXIgaSxzPW8uZXh0cmFjdE9wdHMobik7aWYocyYmcy5jb2xvcmJhciYmcy5jb2xvcmJhci5fYXhpcylpPXMuY29sb3JiYXIuX2F4aXM7ZWxzZXtpZihpPXt0eXBlOiJsaW5lYXIiLF9pZDoieWNvbnRvdXIiLHNob3dleHBvbmVudDoiYWxsIixleHBvbmVudGZvcm1hdDoiQiJ9LCJjb25zdHJhaW50Ij09PWEudHlwZSl7dmFyIHU9YS52YWx1ZTtBcnJheS5pc0FycmF5KHUpP2kucmFuZ2U9W3VbMF0sdVt1Lmxlbmd0aC0xXV06aS5yYW5nZT1bdSx1XX1lbHNlIGkucmFuZ2U9W2Euc3RhcnQsYS5lbmRdLGkubnRpY2tzPShhLmVuZC1hLnN0YXJ0KS9hLnNpemU7aS5yYW5nZVswXT09PWkucmFuZ2VbMV0mJihpLnJhbmdlWzFdKz1pLnJhbmdlWzBdfHwxKSxpLm50aWNrc3x8KGkubnRpY2tzPTFlMyksYyhpLHIpLGwucHJlcFRpY2tzKGkpLGkuX3RtaW49bnVsbCxpLl90bWF4PW51bGx9cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBsLnRpY2tUZXh0KGksdCkudGV4dH19LHIuY2FsY1RleHRPcHRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPWUodCk7ci50ZXh0KGEpLmNhbGwocy5jb252ZXJ0VG9Uc3BhbnMsbik7dmFyIG89aS5iQm94KHIubm9kZSgpLCEwKTtyZXR1cm57dGV4dDphLHdpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0LGxldmVsOnQsZHk6KG8udG9wK28uYm90dG9tKS8yfX0sci5maW5kQmVzdFRleHRMb2NhdGlvbj1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBvLHMsbCxjLHUsaD1yLndpZHRoO2UuaXNDbG9zZWQ/KHM9ZS5sZW4vbS5JTklUSUFMU0VBUkNIUE9JTlRTLG89ZS5taW4rcy8yLGw9ZS5tYXgpOihzPShlLmxlbi1oKS8obS5JTklUSUFMU0VBUkNIUE9JTlRTKzEpLG89ZS5taW4rcytoLzIsbD1lLm1heC0ocytoKS8yKTtmb3IodmFyIGY9MS8wLHA9MDtwPG0uSVRFUkFUSU9OUztwKyspe2Zvcih2YXIgZD1vO2Q8bDtkKz1zKXt2YXIgZz1hLmdldFRleHRMb2NhdGlvbih0LGUudG90YWwsZCxoKSx2PXgoZyxyLG4saSk7djxmJiYoZj12LHU9ZyxjPWQpfWlmKGY+MiptLk1BWENPU1QpYnJlYWs7cCYmKHMvPTIpLGw9KG89Yy1zLzIpKzEuNSpzfWlmKGY8PW0uTUFYQ09TVClyZXR1cm4gdX0sci5hZGRMYWJlbERhdGE9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ZS53aWR0aC8yLGk9ZS5oZWlnaHQvMixvPXQueCxzPXQueSxsPXQudGhldGEsYz1NYXRoLnNpbihsKSx1PU1hdGguY29zKGwpLGg9YSp1LGY9aSpjLHA9YSpjLGQ9LWkqdSxnPVtbby1oLWYscy1wLWRdLFtvK2gtZixzK3AtZF0sW28raCtmLHMrcCtkXSxbby1oK2Yscy1wK2RdXTtyLnB1c2goe3RleHQ6ZS50ZXh0LHg6byx5OnMsZHk6ZS5keSx0aGV0YTpsLGxldmVsOmUubGV2ZWwsd2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9KSxuLnB1c2goZyl9LHIuZHJhd0xhYmVscz1mdW5jdGlvbih0LGUscixpLG8pe3ZhciBsPXQuc2VsZWN0QWxsKCJ0ZXh0IikuZGF0YShlLGZ1bmN0aW9uKHQpe3JldHVybiB0LnRleHQrIiwiK3QueCsiLCIrdC55KyIsIit0LnRoZXRhfSk7aWYobC5leGl0KCkucmVtb3ZlKCksbC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoeyJkYXRhLW5vdGV4IjoxLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQueCtNYXRoLnNpbih0LnRoZXRhKSp0LmR5LGE9dC55LU1hdGguY29zKHQudGhldGEpKnQuZHk7bi5zZWxlY3QodGhpcykudGV4dCh0LnRleHQpLmF0dHIoe3g6ZSx5OmEsdHJhbnNmb3JtOiJyb3RhdGUoIisxODAqdC50aGV0YS9NYXRoLlBJKyIgIitlKyIgIithKyIpIn0pLmNhbGwocy5jb252ZXJ0VG9Uc3BhbnMscil9KSxvKXtmb3IodmFyIGM9IiIsdT0wO3U8by5sZW5ndGg7dSsrKWMrPSJNIitvW3VdLmpvaW4oIkwiKSsiWiI7YS5lbnN1cmVTaW5nbGUoaSwicGF0aCIsIiIpLmF0dHIoImQiLGMpfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9zZXRfY29udmVydCI6NzgzLCIuLi9oZWF0bWFwL3Bsb3QiOjEwMTEsIi4vY2xvc2VfYm91bmRhcmllcyI6OTQ1LCIuL2NvbnN0YW50cyI6OTQ3LCIuL2NvbnZlcnRfdG9fY29uc3RyYWludHMiOjk1MSwiLi9lbXB0eV9wYXRoaW5mbyI6OTUzLCIuL2ZpbmRfYWxsX3BhdGhzIjo5NTUsIi4vbWFrZV9jcm9zc2luZ3MiOjk2MCxkMzoxNjV9XSw5NjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL2xpYiIpO2Z1bmN0aW9uIGkodCxlLHIpe3ZhciBhPXt0eXBlOiJsaW5lYXIiLHJhbmdlOlt0LGVdfTtyZXR1cm4gbi5hdXRvVGlja3MoYSwoZS10KS8ocnx8MTUpKSxhfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuY29udG91cnM7aWYodC5hdXRvY29udG91cil7dmFyIG89dC56bWluLHM9dC56bWF4Oyh0LnphdXRvfHx2b2lkIDA9PT1vKSYmKG89YS5hZ2dOdW1zKE1hdGgubWluLG51bGwsZSkpLCh0LnphdXRvfHx2b2lkIDA9PT1zKSYmKHM9YS5hZ2dOdW1zKE1hdGgubWF4LG51bGwsZSkpO3ZhciBsPWkobyxzLHQubmNvbnRvdXJzKTtyLnNpemU9bC5kdGljayxyLnN0YXJ0PW4udGlja0ZpcnN0KGwpLGwucmFuZ2UucmV2ZXJzZSgpLHIuZW5kPW4udGlja0ZpcnN0KGwpLHIuc3RhcnQ9PT1vJiYoci5zdGFydCs9ci5zaXplKSxyLmVuZD09PXMmJihyLmVuZC09ci5zaXplKSxyLnN0YXJ0PnIuZW5kJiYoci5zdGFydD1yLmVuZD0oci5zdGFydCtyLmVuZCkvMiksdC5faW5wdXQuY29udG91cnN8fCh0Ll9pbnB1dC5jb250b3Vycz17fSksYS5leHRlbmRGbGF0KHQuX2lucHV0LmNvbnRvdXJzLHtzdGFydDpyLnN0YXJ0LGVuZDpyLmVuZCxzaXplOnIuc2l6ZX0pLHQuX2lucHV0LmF1dG9jb250b3VyPSEwfWVsc2UgaWYoImNvbnN0cmFpbnQiIT09ci50eXBlKXt2YXIgYyx1PXIuc3RhcnQsaD1yLmVuZCxmPXQuX2lucHV0LmNvbnRvdXJzO2lmKHU+aCYmKHIuc3RhcnQ9Zi5zdGFydD1oLGg9ci5lbmQ9Zi5lbmQ9dSx1PXIuc3RhcnQpLCEoci5zaXplPjApKWM9dT09PWg/MTppKHUsaCx0Lm5jb250b3VycykuZHRpY2ssZi5zaXplPXIuc2l6ZT1jfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjV9XSw5NjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGk9dCgiLi4vaGVhdG1hcC9zdHlsZSIpLG89dCgiLi9tYWtlX2NvbG9yX21hcCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcuY29udG91ciIpO2Uuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNlLm9wYWNpdHl9KSxlLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodGhpcykscj10WzBdLnRyYWNlLGk9ci5jb250b3VycyxzPXIubGluZSxsPWkuc2l6ZXx8MSxjPWkuc3RhcnQsdT0iY29uc3RyYWludCI9PT1pLnR5cGUsaD0hdSYmImxpbmVzIj09PWkuY29sb3JpbmcsZj0hdSYmImZpbGwiPT09aS5jb2xvcmluZyxwPWh8fGY/byhyKTpudWxsO2Uuc2VsZWN0QWxsKCJnLmNvbnRvdXJsZXZlbCIpLmVhY2goZnVuY3Rpb24odCl7bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJwYXRoIikuY2FsbChhLmxpbmVHcm91cFN0eWxlLHMud2lkdGgsaD9wKHQubGV2ZWwpOnMuY29sb3Iscy5kYXNoKX0pO3ZhciBkPWkubGFiZWxmb250O2lmKGUuc2VsZWN0QWxsKCJnLmNvbnRvdXJsYWJlbHMgdGV4dCIpLmVhY2goZnVuY3Rpb24odCl7YS5mb250KG4uc2VsZWN0KHRoaXMpLHtmYW1pbHk6ZC5mYW1pbHksc2l6ZTpkLnNpemUsY29sb3I6ZC5jb2xvcnx8KGg/cCh0LmxldmVsKTpzLmNvbG9yKX0pfSksdSllLnNlbGVjdEFsbCgiZy5jb250b3VyZmlsbCBwYXRoIikuc3R5bGUoImZpbGwiLHIuZmlsbGNvbG9yKTtlbHNlIGlmKGYpe3ZhciBnO2Uuc2VsZWN0QWxsKCJnLmNvbnRvdXJmaWxsIHBhdGgiKS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PWcmJihnPXQubGV2ZWwpLHAodC5sZXZlbCsuNSpsKX0pLHZvaWQgMD09PWcmJihnPWMpLGUuc2VsZWN0QWxsKCJnLmNvbnRvdXJiZyBwYXRoIikuc3R5bGUoImZpbGwiLHAoZy0uNSpsKSl9fSksaSh0KX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uL2hlYXRtYXAvc3R5bGUiOjEwMTIsIi4vbWFrZV9jb2xvcl9tYXAiOjk1OSxkMzoxNjV9XSw5NjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksYT10KCIuL2xhYmVsX2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksbyl7dmFyIHMsbD1yKCJjb250b3Vycy5jb2xvcmluZyIpLGM9IiI7ImZpbGwiPT09bCYmKHM9cigiY29udG91cnMuc2hvd2xpbmVzIikpLCExIT09cyYmKCJsaW5lcyIhPT1sJiYoYz1yKCJsaW5lLmNvbG9yIiwiIzAwMCIpKSxyKCJsaW5lLndpZHRoIiwuNSkscigibGluZS5kYXNoIikpLCJub25lIiE9PWwmJighMCE9PXQuc2hvd2xlZ2VuZCYmKGUuc2hvd2xlZ2VuZD0hMSksZS5fZGZsdFNob3dMZWdlbmQ9ITEsbih0LGUsaSxyLHtwcmVmaXg6IiIsY0xldHRlcjoieiJ9KSkscigibGluZS5zbW9vdGhpbmciKSxhKHIsaSxjLG8pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiOjYwMiwiLi9sYWJlbF9kZWZhdWx0cyI6OTU4fV0sOTY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hlYXRtYXAvYXR0cmlidXRlcyIpLGE9dCgiLi4vY29udG91ci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQscz1hLmNvbnRvdXJzO2UuZXhwb3J0cz1vKHtjYXJwZXQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSx6Om4ueixhOm4ueCxhMDpuLngwLGRhOm4uZHgsYjpuLnksYjA6bi55MCxkYjpuLmR5LHRleHQ6bi50ZXh0LGhvdmVydGV4dDpuLmhvdmVydGV4dCx0cmFuc3Bvc2U6bi50cmFuc3Bvc2UsYXR5cGU6bi54dHlwZSxidHlwZTpuLnl0eXBlLGZpbGxjb2xvcjphLmZpbGxjb2xvcixhdXRvY29udG91cjphLmF1dG9jb250b3VyLG5jb250b3VyczphLm5jb250b3Vycyxjb250b3Vyczp7dHlwZTpzLnR5cGUsc3RhcnQ6cy5zdGFydCxlbmQ6cy5lbmQsc2l6ZTpzLnNpemUsY29sb3Jpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZpbGwiLCJsaW5lcyIsIm5vbmUiXSxkZmx0OiJmaWxsIixlZGl0VHlwZToiY2FsYyJ9LHNob3dsaW5lczpzLnNob3dsaW5lcyxzaG93bGFiZWxzOnMuc2hvd2xhYmVscyxsYWJlbGZvbnQ6cy5sYWJlbGZvbnQsbGFiZWxmb3JtYXQ6cy5sYWJlbGZvcm1hdCxvcGVyYXRpb246cy5vcGVyYXRpb24sdmFsdWU6cy52YWx1ZSxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOnthdXRvY29udG91cjohMX19LGxpbmU6e2NvbG9yOmEubGluZS5jb2xvcix3aWR0aDphLmxpbmUud2lkdGgsZGFzaDphLmxpbmUuZGFzaCxzbW9vdGhpbmc6YS5saW5lLnNtb290aGluZyxlZGl0VHlwZToicGxvdCJ9LHRyYW5zZm9ybXM6dm9pZCAwfSxpKCIiLHtjTGV0dGVyOiJ6IixhdXRvQ29sb3JEZmx0OiExfSkpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vY29udG91ci9hdHRyaWJ1dGVzIjo5NDMsIi4uL2hlYXRtYXAvYXR0cmlidXRlcyI6MWUzfV0sOTY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uL2hlYXRtYXAvY29udmVydF9jb2x1bW5feHl6Iiksbz10KCIuLi9oZWF0bWFwL2NsZWFuXzJkX2FycmF5Iikscz10KCIuLi9oZWF0bWFwL2ludGVycDJkIiksbD10KCIuLi9oZWF0bWFwL2ZpbmRfZW1wdGllcyIpLGM9dCgiLi4vaGVhdG1hcC9tYWtlX2JvdW5kX2FycmF5IiksdT10KCIuL2RlZmF1bHRzIiksaD10KCIuLi9jYXJwZXQvbG9va3VwX2NhcnBldGlkIiksZj10KCIuLi9jb250b3VyL3NldF9jb250b3VycyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWUuX2NhcnBldFRyYWNlPWgodCxlKTtpZihyJiZyLnZpc2libGUmJiJsZWdlbmRvbmx5IiE9PXIudmlzaWJsZSl7aWYoIWUuYXx8IWUuYil7dmFyIHA9dC5kYXRhW3IuaW5kZXhdLGQ9dC5kYXRhW2UuaW5kZXhdO2QuYXx8KGQuYT1wLmEpLGQuYnx8KGQuYj1wLmIpLHUoZCxlLGUuX2RlZmF1bHRDb2xvcix0Ll9mdWxsTGF5b3V0KX12YXIgZz1mdW5jdGlvbih0LGUpe3ZhciByLHUsaCxmLHAsZCxnLHY9ZS5fY2FycGV0VHJhY2UsbT12LmFheGlzLHk9di5iYXhpczttLl9taW5EdGljaz0wLHkuX21pbkR0aWNrPTAsYS5pc0FycmF5MUQoZS56KSYmaShlLG0seSwiYSIsImIiLFsieiJdKTtyPWUuX2E9ZS5fYXx8ZS5hLGY9ZS5fYj1lLl9ifHxlLmIscj1yP20ubWFrZUNhbGNkYXRhKGUsIl9hIik6W10sZj1mP3kubWFrZUNhbGNkYXRhKGUsIl9iIik6W10sdT1lLmEwfHwwLGg9ZS5kYXx8MSxwPWUuYjB8fDAsZD1lLmRifHwxLGc9ZS5fej1vKGUuX3p8fGUueixlLnRyYW5zcG9zZSksZS5fZW1wdHlwb2ludHM9bChnKSxzKGcsZS5fZW1wdHlwb2ludHMpO3ZhciB4PWEubWF4Um93TGVuZ3RoKGcpLGI9InNjYWxlZCI9PT1lLnh0eXBlPyIiOnIsXz1jKGUsYix1LGgseCxtKSx3PSJzY2FsZWQiPT09ZS55dHlwZT8iIjpmLGs9YyhlLHcscCxkLGcubGVuZ3RoLHkpLFQ9e2E6XyxiOmssejpnfTsibGV2ZWxzIj09PWUuY29udG91cnMudHlwZSYmIm5vbmUiIT09ZS5jb250b3Vycy5jb2xvcmluZyYmbih0LGUse3ZhbHM6Zyxjb250YWluZXJTdHI6IiIsY0xldHRlcjoieiJ9KTtyZXR1cm5bVF19KHQsZSk7cmV0dXJuIGYoZSxlLl96KSxnfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjYwMCwiLi4vLi4vbGliIjo3MTcsIi4uL2NhcnBldC9sb29rdXBfY2FycGV0aWQiOjkxNiwiLi4vY29udG91ci9zZXRfY29udG91cnMiOjk2MiwiLi4vaGVhdG1hcC9jbGVhbl8yZF9hcnJheSI6MTAwMiwiLi4vaGVhdG1hcC9jb252ZXJ0X2NvbHVtbl94eXoiOjEwMDQsIi4uL2hlYXRtYXAvZmluZF9lbXB0aWVzIjoxMDA2LCIuLi9oZWF0bWFwL2ludGVycDJkIjoxMDA5LCIuLi9oZWF0bWFwL21ha2VfYm91bmRfYXJyYXkiOjEwMTAsIi4vZGVmYXVsdHMiOjk2N31dLDk2NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uL2hlYXRtYXAveHl6X2RlZmF1bHRzIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL2NvbnRvdXIvY29uc3RyYWludF9kZWZhdWx0cyIpLHM9dCgiLi4vY29udG91ci9jb250b3Vyc19kZWZhdWx0cyIpLGw9dCgiLi4vY29udG91ci9zdHlsZV9kZWZhdWx0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixjKXtmdW5jdGlvbiB1KHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9aWYodSgiY2FycGV0IiksdC5hJiZ0LmIpe2lmKCFhKHQsZSx1LGMsImEiLCJiIikpcmV0dXJuIHZvaWQoZS52aXNpYmxlPSExKTt1KCJ0ZXh0IiksImNvbnN0cmFpbnQiPT09dSgiY29udG91cnMudHlwZSIpP28odCxlLHUsYyxyLHtoYXNIb3ZlcjohMX0pOihzKHQsZSx1LGZ1bmN0aW9uKHIpe3JldHVybiBuLmNvZXJjZTIodCxlLGkscil9KSxsKHQsZSx1LGMse2hhc0hvdmVyOiExfSkpfWVsc2UgZS5fZGVmYXVsdENvbG9yPXIsZS5fbGVuZ3RoPW51bGx9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9jb250b3VyL2NvbnN0cmFpbnRfZGVmYXVsdHMiOjk0OCwiLi4vY29udG91ci9jb250b3Vyc19kZWZhdWx0cyI6OTUwLCIuLi9jb250b3VyL3N0eWxlX2RlZmF1bHRzIjo5NjQsIi4uL2hlYXRtYXAveHl6X2RlZmF1bHRzIjoxMDE0LCIuL2F0dHJpYnV0ZXMiOjk2NX1dLDk2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL2NvbnRvdXIvY29sb3JiYXIiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90Iiksc3R5bGU6dCgiLi4vY29udG91ci9zdHlsZSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJjb250b3VyY2FycGV0IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwiY2FycGV0IiwiY29udG91ciIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwiaGFzTGluZXMiLCJjYXJwZXREZXBlbmRlbnQiLCJub0hvdmVyIiwibm9Tb3J0aW5nQnlWYWx1ZSJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Nzc2LCIuLi9jb250b3VyL2NvbG9yYmFyIjo5NDYsIi4uL2NvbnRvdXIvc3R5bGUiOjk2MywiLi9hdHRyaWJ1dGVzIjo5NjUsIi4vY2FsYyI6OTY2LCIuL2RlZmF1bHRzIjo5NjcsIi4vcGxvdCI6OTY5fV0sOTY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi9jYXJwZXQvbWFwXzFkX2FycmF5IiksaT10KCIuLi9jYXJwZXQvbWFrZXBhdGgiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi9jb250b3VyL21ha2VfY3Jvc3NpbmdzIiksYz10KCIuLi9jb250b3VyL2ZpbmRfYWxsX3BhdGhzIiksdT10KCIuLi9jb250b3VyL3Bsb3QiKSxoPXQoIi4uL2NvbnRvdXIvY29uc3RhbnRzIiksZj10KCIuLi9jb250b3VyL2NvbnZlcnRfdG9fY29uc3RyYWludHMiKSxwPXQoIi4uL2NvbnRvdXIvZW1wdHlfcGF0aGluZm8iKSxkPXQoIi4uL2NvbnRvdXIvY2xvc2VfYm91bmRhcmllcyIpLGc9dCgiLi4vY2FycGV0L2xvb2t1cF9jYXJwZXRpZCIpLHY9dCgiLi4vY2FycGV0L2F4aXNfYWxpZ25lZF9saW5lIik7ZnVuY3Rpb24gbSh0LGUscil7dmFyIG49dC5nZXRQb2ludEF0TGVuZ3RoKGUpLGE9dC5nZXRQb2ludEF0TGVuZ3RoKHIpLGk9YS54LW4ueCxvPWEueS1uLnkscz1NYXRoLnNxcnQoaSppK28qbyk7cmV0dXJuW2kvcyxvL3NdfWZ1bmN0aW9uIHkodCl7dmFyIGU9TWF0aC5zcXJ0KHRbMF0qdFswXSt0WzFdKnRbMV0pO3JldHVyblt0WzBdL2UsdFsxXS9lXX1mdW5jdGlvbiB4KHQsZSl7dmFyIHI9TWF0aC5hYnModFswXSplWzBdK3RbMV0qZVsxXSk7cmV0dXJuIE1hdGguc3FydCgxLXIqcikvcn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYil7dmFyIF89ZS54YXhpcyx3PWUueWF4aXM7cy5tYWtlVHJhY2VHcm91cHMoYixyLCJjb250b3VyIikuZWFjaChmdW5jdGlvbihyKXt2YXIgYj1uLnNlbGVjdCh0aGlzKSxrPXJbMF0sVD1rLnRyYWNlLE09VC5fY2FycGV0VHJhY2U9Zyh0LFQpLEE9dC5jYWxjZGF0YVtNLmluZGV4XVswXTtpZihNLnZpc2libGUmJiJsZWdlbmRvbmx5IiE9PU0udmlzaWJsZSl7dmFyIFM9ay5hLEU9ay5iLEw9VC5jb250b3VycyxDPXAoTCxlLGspLFA9ImNvbnN0cmFpbnQiPT09TC50eXBlLE89TC5fb3BlcmF0aW9uLHo9UD8iPSI9PT1PPyJsaW5lcyI6ImZpbGwiOkwuY29sb3JpbmcsST1bW1NbMF0sRVtFLmxlbmd0aC0xXV0sW1NbUy5sZW5ndGgtMV0sRVtFLmxlbmd0aC0xXV0sW1NbUy5sZW5ndGgtMV0sRVswXV0sW1NbMF0sRVswXV1dO2woQyk7dmFyIEQ9MWUtOCooU1tTLmxlbmd0aC0xXS1TWzBdKSxSPTFlLTgqKEVbRS5sZW5ndGgtMV0tRVswXSk7YyhDLEQsUik7dmFyIEYsQixOLGosVj1DOyJjb25zdHJhaW50Ij09PUwudHlwZSYmKFY9ZihDLE8pKSxmdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpLG8scyxsLGMsdTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXtmb3IoaT10W3JdLG89aS5wZWRnZXBhdGhzPVtdLHM9aS5wcGF0aHM9W10sbj0wO248aS5lZGdlcGF0aHMubGVuZ3RoO24rKyl7Zm9yKHU9aS5lZGdlcGF0aHNbbl0sbD1bXSxhPTA7YTx1Lmxlbmd0aDthKyspbFthXT1lKHVbYV0pO28ucHVzaChsKX1mb3Iobj0wO248aS5wYXRocy5sZW5ndGg7bisrKXtmb3IodT1pLnBhdGhzW25dLGM9W10sYT0wO2E8dS5sZW5ndGg7YSsrKWNbYV09ZSh1W2FdKTtzLnB1c2goYyl9fX0oQyxIKTt2YXIgVT1bXTtmb3Ioaj1BLmNsaXBzZWdtZW50cy5sZW5ndGgtMTtqPj0wO2otLSlGPUEuY2xpcHNlZ21lbnRzW2pdLEI9YShbXSxGLngsXy5jMnApLE49YShbXSxGLnksdy5jMnApLEIucmV2ZXJzZSgpLE4ucmV2ZXJzZSgpLFUucHVzaChpKEIsTixGLmJpY3ViaWMpKTt2YXIgcT0iTSIrVS5qb2luKCJMIikrIloiOyFmdW5jdGlvbih0LGUscixuLG8sbCl7dmFyIGMsdSxoLGYscD1zLmVuc3VyZVNpbmdsZSh0LCJnIiwiY29udG91cmJnIikuc2VsZWN0QWxsKCJwYXRoIikuZGF0YSgiZmlsbCIhPT1sfHxvP1tdOlswXSk7cC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLHAuZXhpdCgpLnJlbW92ZSgpO3ZhciBkPVtdO2ZvcihmPTA7ZjxlLmxlbmd0aDtmKyspYz1lW2ZdLHU9YShbXSxjLngsci5jMnApLGg9YShbXSxjLnksbi5jMnApLGQucHVzaChpKHUsaCxjLmJpY3ViaWMpKTtwLmF0dHIoImQiLCJNIitkLmpvaW4oIkwiKSsiWiIpLnN0eWxlKCJzdHJva2UiLCJub25lIil9KGIsQS5jbGlwc2VnbWVudHMsXyx3LFAseiksZnVuY3Rpb24odCxlLHIsYSxpLGwsYyx1LGgsZixwKXt2YXIgZz0iZmlsbCI9PT1mO2cmJmQoaSx0LmNvbnRvdXJzKTt2YXIgbT1zLmVuc3VyZVNpbmdsZShlLCJnIiwiY29udG91cmZpbGwiKS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKGc/aTpbXSk7bS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLG0uZXhpdCgpLnJlbW92ZSgpLG0uZWFjaChmdW5jdGlvbih0KXt2YXIgZT0odC5wcmVmaXhCb3VuZGFyeT9wOiIiKStmdW5jdGlvbih0LGUscixuLGEsaSxsLGMpe3ZhciB1LGgsZixwLGQsZyxtLHk9IiIseD1lLmVkZ2VwYXRocy5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pLGI9ITAsXz0xZS00Kk1hdGguYWJzKHJbMF1bMF0tclsyXVswXSksdz0xZS00Kk1hdGguYWJzKHJbMF1bMV0tclsyXVsxXSk7ZnVuY3Rpb24gayh0KXtyZXR1cm4gTWF0aC5hYnModFsxXS1yWzBdWzFdKTx3fWZ1bmN0aW9uIFQodCl7cmV0dXJuIE1hdGguYWJzKHRbMV0tclsyXVsxXSk8d31mdW5jdGlvbiBNKHQpe3JldHVybiBNYXRoLmFicyh0WzBdLXJbMF1bMF0pPF99ZnVuY3Rpb24gQSh0KXtyZXR1cm4gTWF0aC5hYnModFswXS1yWzJdWzBdKTxffWZ1bmN0aW9uIFModCxlKXt2YXIgcixuLG8scyx1PSIiO2ZvcihrKHQpJiYhQSh0KXx8VCh0KSYmIU0odCk/KHM9YS5hYXhpcyxvPXYoYSxpLFt0WzBdLGVbMF1dLC41Kih0WzFdK2VbMV0pKSk6KHM9YS5iYXhpcyxvPXYoYSxpLC41Kih0WzBdK2VbMF0pLFt0WzFdLGVbMV1dKSkscj0xO3I8by5sZW5ndGg7cisrKWZvcih1Kz1zLnNtb290aGluZz8iQyI6IkwiLG49MDtuPG9bcl0ubGVuZ3RoO24rKyl7dmFyIGg9b1tyXVtuXTt1Kz1bbC5jMnAoaFswXSksYy5jMnAoaFsxXSldKyIgIn1yZXR1cm4gdX11PTAsaD1udWxsO2Zvcig7eC5sZW5ndGg7KXt2YXIgRT1lLmVkZ2VwYXRoc1t1XVswXTtmb3IoaCYmKHkrPVMoaCxFKSksbT1vLnNtb290aG9wZW4oZS5lZGdlcGF0aHNbdV0ubWFwKG4pLGUuc21vb3RoaW5nKSx5Kz1iP206bS5yZXBsYWNlKC9eTS8sIkwiKSx4LnNwbGljZSh4LmluZGV4T2YodSksMSksaD1lLmVkZ2VwYXRoc1t1XVtlLmVkZ2VwYXRoc1t1XS5sZW5ndGgtMV0sZD0tMSxwPTA7cDw0O3ArKyl7aWYoIWgpe3MubG9nKCJNaXNzaW5nIGVuZD8iLHUsZSk7YnJlYWt9Zm9yKGsoaCkmJiFBKGgpP2Y9clsxXTpNKGgpP2Y9clswXTpUKGgpP2Y9clszXTpBKGgpJiYoZj1yWzJdKSxnPTA7ZzxlLmVkZ2VwYXRocy5sZW5ndGg7ZysrKXt2YXIgTD1lLmVkZ2VwYXRoc1tnXVswXTtNYXRoLmFicyhoWzBdLWZbMF0pPF8/TWF0aC5hYnMoaFswXS1MWzBdKTxfJiYoTFsxXS1oWzFdKSooZlsxXS1MWzFdKT49MCYmKGY9TCxkPWcpOk1hdGguYWJzKGhbMV0tZlsxXSk8dz9NYXRoLmFicyhoWzFdLUxbMV0pPHcmJihMWzBdLWhbMF0pKihmWzBdLUxbMF0pPj0wJiYoZj1MLGQ9Zyk6cy5sb2coImVuZHB0IHRvIG5ld2VuZHB0IGlzIG5vdCB2ZXJ0LiBvciBob3J6LiIsaCxmLEwpfWlmKGQ+PTApYnJlYWs7eSs9UyhoLGYpLGg9Zn1pZihkPT09ZS5lZGdlcGF0aHMubGVuZ3RoKXtzLmxvZygidW5jbG9zZWQgcGVyaW1ldGVyIHBhdGgiKTticmVha311PWQsKGI9LTE9PT14LmluZGV4T2YodSkpJiYodT14WzBdLHkrPVMoaCxmKSsiWiIsaD1udWxsKX1mb3IodT0wO3U8ZS5wYXRocy5sZW5ndGg7dSsrKXkrPW8uc21vb3RoY2xvc2VkKGUucGF0aHNbdV0ubWFwKG4pLGUuc21vb3RoaW5nKTtyZXR1cm4geX0oMCx0LGwsYyx1LGgscixhKTtlP24uc2VsZWN0KHRoaXMpLmF0dHIoImQiLGUpLnN0eWxlKCJzdHJva2UiLCJub25lIik6bi5zZWxlY3QodGhpcykucmVtb3ZlKCl9KX0oVCxiLF8sdyxWLEksSCxNLEEseixxKSxmdW5jdGlvbih0LGUscixhLGksbCxjKXt2YXIgZj1zLmVuc3VyZVNpbmdsZSh0LCJnIiwiY29udG91cmxpbmVzIikscD0hMSE9PWkuc2hvd2xpbmVzLGQ9aS5zaG93bGFiZWxzLGc9cCYmZCx2PXUuY3JlYXRlTGluZXMoZixwfHxkLGUpLGI9dS5jcmVhdGVMaW5lQ2xpcChmLGcscixhLnRyYWNlLnVpZCksXz10LnNlbGVjdEFsbCgiZy5jb250b3VybGFiZWxzIikuZGF0YShkP1swXTpbXSk7aWYoXy5leGl0KCkucmVtb3ZlKCksXy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJsYWJlbHMiLCEwKSxkKXt2YXIgdz1sLnhheGlzLGs9bC55YXhpcyxUPXcuX2xlbmd0aCxNPWsuX2xlbmd0aCxBPVtbWzAsMF0sW1QsMF0sW1QsTV0sWzAsTV1dXSxTPVtdO3MuY2xlYXJMb2NhdGlvbkNhY2hlKCk7dmFyIEU9dS5sYWJlbEZvcm1hdHRlcihyLGEpLEw9by50ZXN0ZXIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZGF0YS1ub3RleCIsMSkuY2FsbChvLmZvbnQsaS5sYWJlbGZvbnQpLEM9e2xlZnQ6MCxyaWdodDpULGNlbnRlcjpULzIsdG9wOjAsYm90dG9tOk0sbWlkZGxlOk0vMn0sUD1NYXRoLnNxcnQoVCpUK00qTSksTz1oLkxBQkVMRElTVEFOQ0UqUC9NYXRoLm1heCgxLGUubGVuZ3RoL2guTEFCRUxJTkNSRUFTRSk7di5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXUuY2FsY1RleHRPcHRzKHQubGV2ZWwsRSxMLHIpO24uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aCIpLmVhY2goZnVuY3Rpb24ocil7dmFyIG49cy5nZXRWaXNpYmxlU2VnbWVudCh0aGlzLEMsZS5oZWlnaHQvMik7aWYobiYmKGZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtmb3IodmFyIG8scz0wO3M8ci5wZWRnZXBhdGhzLmxlbmd0aDtzKyspZT09PXIucGVkZ2VwYXRoc1tzXSYmKG89ci5lZGdlcGF0aHNbc10pO2lmKCFvKXJldHVybjt2YXIgbD1hLmFbMF0sYz1hLmFbYS5hLmxlbmd0aC0xXSx1PWEuYlswXSxoPWEuYlthLmIubGVuZ3RoLTFdO2Z1bmN0aW9uIGYodCxlKXt2YXIgcixuPTA7cmV0dXJuKE1hdGguYWJzKHRbMF0tbCk8LjF8fE1hdGguYWJzKHRbMF0tYyk8LjEpJiYocj15KGEuZHh5ZGJfcm91Z2godFswXSx0WzFdLC4xKSksbj1NYXRoLm1heChuLGkqeChlLHIpLzIpKSwoTWF0aC5hYnModFsxXS11KTwuMXx8TWF0aC5hYnModFsxXS1oKTwuMSkmJihyPXkoYS5keHlkYV9yb3VnaCh0WzBdLHRbMV0sLjEpKSxuPU1hdGgubWF4KG4saSp4KGUscikvMikpLG59dmFyIHA9bSh0LDAsMSksZD1tKHQsbi50b3RhbCxuLnRvdGFsLTEpLGc9ZihvWzBdLHApLHY9bi50b3RhbC1mKG9bby5sZW5ndGgtMV0sZCk7bi5taW48ZyYmKG4ubWluPWcpO24ubWF4PnYmJihuLm1heD12KTtuLmxlbj1uLm1heC1uLm1pbn0odGhpcyxyLHQsbixjLGUuaGVpZ2h0KSwhKG4ubGVuPChlLndpZHRoK2UuaGVpZ2h0KSpoLkxBQkVMTUlOKSkpZm9yKHZhciBhPU1hdGgubWluKE1hdGguY2VpbChuLmxlbi9PKSxoLkxBQkVMTUFYKSxpPTA7aTxhO2krKyl7dmFyIG89dS5maW5kQmVzdFRleHRMb2NhdGlvbih0aGlzLG4sZSxTLEMpO2lmKCFvKWJyZWFrO3UuYWRkTGFiZWxEYXRhKG8sZSxTLEEpfX0pfSksTC5yZW1vdmUoKSx1LmRyYXdMYWJlbHMoXyxTLHIsYixnP0E6bnVsbCl9ZCYmIXAmJnYucmVtb3ZlKCl9KGIsQyx0LGssTCxlLE0pLG8uc2V0Q2xpcFVybChiLE0uX2NsaXBQYXRoSWQsdCl9ZnVuY3Rpb24gSCh0KXt2YXIgZT1NLmFiMnh5KHRbMF0sdFsxXSwhMCk7cmV0dXJuW18uYzJwKGVbMF0pLHcuYzJwKGVbMV0pXX19KX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi9jYXJwZXQvYXhpc19hbGlnbmVkX2xpbmUiOjkwMCwiLi4vY2FycGV0L2xvb2t1cF9jYXJwZXRpZCI6OTE2LCIuLi9jYXJwZXQvbWFrZXBhdGgiOjkxNywiLi4vY2FycGV0L21hcF8xZF9hcnJheSI6OTE4LCIuLi9jb250b3VyL2Nsb3NlX2JvdW5kYXJpZXMiOjk0NSwiLi4vY29udG91ci9jb25zdGFudHMiOjk0NywiLi4vY29udG91ci9jb252ZXJ0X3RvX2NvbnN0cmFpbnRzIjo5NTEsIi4uL2NvbnRvdXIvZW1wdHlfcGF0aGluZm8iOjk1MywiLi4vY29udG91ci9maW5kX2FsbF9wYXRocyI6OTU1LCIuLi9jb250b3VyL21ha2VfY3Jvc3NpbmdzIjo5NjAsIi4uL2NvbnRvdXIvcGxvdCI6OTYxLGQzOjE2NX1dLDk3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxpPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL3NjYXR0ZXJtYXBib3gvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXMoe2xvbjpvLmxvbixsYXQ6by5sYXQsejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxyYWRpdXM6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InBsb3QiLGFycmF5T2s6ITAsbWluOjEsZGZsdDozMH0sYmVsb3c6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6InBsb3QifSx0ZXh0Om8udGV4dCxob3ZlcnRleHQ6by5ob3ZlcnRleHQsaG92ZXJpbmZvOnMoe30saS5ob3ZlcmluZm8se2ZsYWdzOlsibG9uIiwibGF0IiwieiIsInRleHQiLCJuYW1lIl19KSxob3ZlcnRlbXBsYXRlOmEoKSxzaG93bGVnZW5kOnMoe30saS5zaG93bGVnZW5kLHtkZmx0OiExfSl9LG4oIiIse2NMZXR0ZXI6InoiLGVkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL3NjYXR0ZXJtYXBib3gvYXR0cmlidXRlcyI6MTE4NH1dLDk3MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIikuaXNBcnJheU9yVHlwZWRBcnJheSxpPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0sbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLHM9dCgiLi4vLi4vbGliIikuXztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS5fbGVuZ3RoLGw9bmV3IEFycmF5KHIpLGM9ZS56LHU9YShjKSYmYy5sZW5ndGgsaD0wO2g8cjtoKyspe3ZhciBmPWxbaF09e30scD1lLmxvbltoXSxkPWUubGF0W2hdO2lmKGYubG9ubGF0PW4ocCkmJm4oZCk/WytwLCtkXTpbaSxpXSx1KXt2YXIgZz1jW2hdO2Yuej1uKGcpP2c6aX19cmV0dXJuIG8odCxlLHt2YWxzOnU/YzpbMCwxXSxjb250YWluZXJTdHI6IiIsY0xldHRlcjoieiJ9KSxyJiYobFswXS50PXtsYWJlbHM6e2xhdDpzKHQsImxhdDoiKSsiICIsbG9uOnModCwibG9uOiIpKyIgIn19KSxsfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6NjAwLCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sOTcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLHM9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxsPXQoIi4uLy4uL2xpYi9nZW9qc29uX3V0aWxzIikubWFrZUJsYW5rO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9ITA9PT1lLnZpc2libGUmJjAhPT1lLl9sZW5ndGgsYz1lLl9vcHRzPXtoZWF0bWFwOntsYXlvdXQ6e3Zpc2liaWxpdHk6Im5vbmUifSxwYWludDp7fX0sZ2VvanNvbjpsKCl9O2lmKCFyKXJldHVybiBjO3ZhciB1LGg9W10sZj1lLnoscD1lLnJhZGl1cyxkPWEuaXNBcnJheU9yVHlwZWRBcnJheShmKSYmZi5sZW5ndGgsZz1hLmlzQXJyYXlPclR5cGVkQXJyYXkocCk7Zm9yKHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIHY9dFt1XSxtPXYubG9ubGF0O2lmKG1bMF0hPT1zKXt2YXIgeT17fTtpZihkKXt2YXIgeD12Lno7eS56PXghPT1zP3g6MH1nJiYoeS5yPW4ocFt1XSkmJnBbdV0+MD8rcFt1XTowKSxoLnB1c2goe3R5cGU6IkZlYXR1cmUiLGdlb21ldHJ5Ont0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6bX0scHJvcGVydGllczp5fSl9fXZhciBiPW8uZXh0cmFjdE9wdHMoZSksXz1iLnJldmVyc2VzY2FsZT9vLmZsaXBTY2FsZShiLmNvbG9yc2NhbGUpOmIuY29sb3JzY2FsZSx3PV9bMF1bMV0saz1bImludGVycG9sYXRlIixbImxpbmVhciJdLFsiaGVhdG1hcC1kZW5zaXR5Il0sMCxpLm9wYWNpdHkodyk8MT93OmkuYWRkT3BhY2l0eSh3LDApXTtmb3IodT0xO3U8Xy5sZW5ndGg7dSsrKWsucHVzaChfW3VdWzBdLF9bdV1bMV0pO3ZhciBUPVsiaW50ZXJwb2xhdGUiLFsibGluZWFyIl0sWyJnZXQiLCJ6Il0sYi5taW4sMCxiLm1heCwxXTtyZXR1cm4gYS5leHRlbmRGbGF0KGMuaGVhdG1hcC5wYWludCx7ImhlYXRtYXAtd2VpZ2h0IjpkP1Q6MS8oYi5tYXgtYi5taW4pLCJoZWF0bWFwLWNvbG9yIjprLCJoZWF0bWFwLXJhZGl1cyI6Zz97dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJyIn06ZS5yYWRpdXMsImhlYXRtYXAtb3BhY2l0eSI6ZS5vcGFjaXR5fSksYy5nZW9qc29uPXt0eXBlOiJGZWF0dXJlQ29sbGVjdGlvbiIsZmVhdHVyZXM6aH0sYy5oZWF0bWFwLmxheW91dC52aXNpYmlsaXR5PSJ2aXNpYmxlIixjfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ2VvanNvbl91dGlscyI6NzEyLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sOTczOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksaT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7ZnVuY3Rpb24gcyhyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaSxyLGEpfXZhciBsPXMoImxvbiIpfHxbXSxjPXMoImxhdCIpfHxbXSx1PU1hdGgubWluKGwubGVuZ3RoLGMubGVuZ3RoKTt1PyhlLl9sZW5ndGg9dSxzKCJ6IikscygicmFkaXVzIikscygiYmVsb3ciKSxzKCJ0ZXh0IikscygiaG92ZXJ0ZXh0IikscygiaG92ZXJ0ZW1wbGF0ZSIpLGEodCxlLG8scyx7cHJlZml4OiIiLGNMZXR0ZXI6InoifSkpOmUudmlzaWJsZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2MDIsIi4uLy4uL2xpYiI6NzE3LCIuL2F0dHJpYnV0ZXMiOjk3MH1dLDk3NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sb249ZS5sb24sdC5sYXQ9ZS5sYXQsdC56PWUueix0fX0se31dLDk3NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi9zY2F0dGVybWFwYm94L2hvdmVyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1pKHQsZSxyKTtpZihvKXt2YXIgcz1vWzBdLGw9cy5jZCxjPWxbMF0udHJhY2UsdT1sW3MuaW5kZXhdO2lmKGRlbGV0ZSBzLmNvbG9yLCJ6ImluIHUpe3ZhciBoPXMuc3VicGxvdC5tb2NrQXhpcztzLno9dS56LHMuekxhYmVsPWEudGlja1RleHQoaCxoLmMybCh1LnopLCJob3ZlciIpLnRleHR9cmV0dXJuIHMuZXh0cmFUZXh0PWZ1bmN0aW9uKHQsZSxyKXtpZih0LmhvdmVydGVtcGxhdGUpcmV0dXJuO3ZhciBhPShlLmhpfHx0LmhvdmVyaW5mbykuc3BsaXQoIisiKSxpPS0xIT09YS5pbmRleE9mKCJhbGwiKSxvPS0xIT09YS5pbmRleE9mKCJsb24iKSxzPS0xIT09YS5pbmRleE9mKCJsYXQiKSxsPWUubG9ubGF0LGM9W107ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdCsiXHhiMCJ9aXx8byYmcz9jLnB1c2goIigiK3UobFswXSkrIiwgIit1KGxbMV0pKyIpIik6bz9jLnB1c2goci5sb24rdShsWzBdKSk6cyYmYy5wdXNoKHIubGF0K3UobFsxXSkpOyhpfHwtMSE9PWEuaW5kZXhPZigidGV4dCIpKSYmbi5maWxsVGV4dChlLHQsYyk7cmV0dXJuIGMuam9pbigiPGJyPiIpfShjLHUsbFswXS50LmxhYmVscyksW3NdfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL3NjYXR0ZXJtYXBib3gvaG92ZXIiOjExODl9XSw5NzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjb2xvcmJhcjp0KCIuLi9oZWF0bWFwL2NvbG9yYmFyIiksZm9ybWF0TGFiZWxzOnQoIi4uL3NjYXR0ZXJtYXBib3gvZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLGdldEJlbG93OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUuZ2V0TWFwTGF5ZXJzKCksbj0wO248ci5sZW5ndGg7bisrKXt2YXIgYT1yW25dLGk9YS5pZDtpZigic3ltYm9sIj09PWEudHlwZSYmInN0cmluZyI9PXR5cGVvZiBpJiYtMT09PWkuaW5kZXhPZigicGxvdGx5LSIpKXJldHVybiBpfX0sbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImRlbnNpdHltYXBib3giLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL21hcGJveCIpLGNhdGVnb3JpZXM6WyJtYXBib3giLCJnbCIsInNob3dMZWdlbmQiXSxtZXRhOntocl9uYW1lOiJkZW5zaXR5X21hcGJveCJ9fX0seyIuLi8uLi9wbG90cy9tYXBib3giOjgyMCwiLi4vaGVhdG1hcC9jb2xvcmJhciI6MTAwMywiLi4vc2NhdHRlcm1hcGJveC9mb3JtYXRfbGFiZWxzIjoxMTg4LCIuL2F0dHJpYnV0ZXMiOjk3MCwiLi9jYWxjIjo5NzEsIi4vZGVmYXVsdHMiOjk3MywiLi9ldmVudF9kYXRhIjo5NzQsIi4vaG92ZXIiOjk3NSwiLi9wbG90Ijo5Nzd9XSw5Nzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb252ZXJ0IiksYT10KCIuLi8uLi9wbG90cy9tYXBib3gvY29uc3RhbnRzIikudHJhY2VMYXllclByZWZpeDtmdW5jdGlvbiBpKHQsZSl7dGhpcy50eXBlPSJkZW5zaXR5bWFwYm94Iix0aGlzLnN1YnBsb3Q9dCx0aGlzLnVpZD1lLHRoaXMuc291cmNlSWQ9InNvdXJjZS0iK2UsdGhpcy5sYXllckxpc3Q9W1siaGVhdG1hcCIsYStlKyItaGVhdG1hcCJdXSx0aGlzLmJlbG93PW51bGx9dmFyIG89aS5wcm90b3R5cGU7by51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdWJwbG90LHI9dGhpcy5sYXllckxpc3QsYT1uKHQpLGk9ZS5iZWxvd0xvb2t1cFsidHJhY2UtIit0aGlzLnVpZF07ZS5tYXAuZ2V0U291cmNlKHRoaXMuc291cmNlSWQpLnNldERhdGEoYS5nZW9qc29uKSxpIT09dGhpcy5iZWxvdyYmKHRoaXMuX3JlbW92ZUxheWVycygpLHRoaXMuX2FkZExheWVycyhhLGkpLHRoaXMuYmVsb3c9aSk7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBzPXJbb10sbD1zWzBdLGM9c1sxXSx1PWFbbF07ZS5zZXRPcHRpb25zKGMsInNldExheW91dFByb3BlcnR5Iix1LmxheW91dCksInZpc2libGUiPT09dS5sYXlvdXQudmlzaWJpbGl0eSYmZS5zZXRPcHRpb25zKGMsInNldFBhaW50UHJvcGVydHkiLHUucGFpbnQpfX0sby5fYWRkTGF5ZXJzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuc3VicGxvdCxuPXRoaXMubGF5ZXJMaXN0LGE9dGhpcy5zb3VyY2VJZCxpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV0scz1vWzBdLGw9dFtzXTtyLmFkZExheWVyKHt0eXBlOnMsaWQ6b1sxXSxzb3VyY2U6YSxsYXlvdXQ6bC5sYXlvdXQscGFpbnQ6bC5wYWludH0sZSl9fSxvLl9yZW1vdmVMYXllcnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5zdWJwbG90Lm1hcCxlPXRoaXMubGF5ZXJMaXN0LHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSl0LnJlbW92ZUxheWVyKGVbcl1bMV0pfSxvLmRpc3Bvc2U9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN1YnBsb3QubWFwO3RoaXMuX3JlbW92ZUxheWVycygpLHQucmVtb3ZlU291cmNlKHRoaXMuc291cmNlSWQpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLnRyYWNlLGE9bmV3IGkodCxyLnVpZCksbz1hLnNvdXJjZUlkLHM9bihlKSxsPWEuYmVsb3c9dC5iZWxvd0xvb2t1cFsidHJhY2UtIityLnVpZF07cmV0dXJuIHQubWFwLmFkZFNvdXJjZShvLHt0eXBlOiJnZW9qc29uIixkYXRhOnMuZ2VvanNvbn0pLGEuX2FkZExheWVycyhzLGwpLGF9fSx7Ii4uLy4uL3Bsb3RzL21hcGJveC9jb25zdGFudHMiOjgxOCwiLi9jb252ZXJ0Ijo5NzJ9XSw5Nzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5pPXI7bi5tZXJnZUFycmF5KGUudGV4dCx0LCJ0eCIpLG4ubWVyZ2VBcnJheShlLmhvdmVydGV4dCx0LCJodHgiKTt2YXIgYT1lLm1hcmtlcjtpZihhKXtuLm1lcmdlQXJyYXkoYS5vcGFjaXR5LHQsIm1vIiksbi5tZXJnZUFycmF5KGEuY29sb3IsdCwibWMiKTt2YXIgaT1hLmxpbmU7aSYmKG4ubWVyZ2VBcnJheShpLmNvbG9yLHQsIm1sYyIpLG4ubWVyZ2VBcnJheUNhc3RQb3NpdGl2ZShpLndpZHRoLHQsIm1sdyIpKX19fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Jhci9hdHRyaWJ1dGVzIiksYT10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKS5saW5lLGk9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxzPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxsPXQoIi4vY29uc3RhbnRzIiksYz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCx1PXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKTtlLmV4cG9ydHM9e3g6bi54LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHksaG92ZXJ0ZXh0Om4uaG92ZXJ0ZXh0LGhvdmVydGVtcGxhdGU6byh7fSx7a2V5czpsLmV2ZW50RGF0YUtleXN9KSxob3ZlcmluZm86Yyh7fSxpLmhvdmVyaW5mbyx7ZmxhZ3M6WyJuYW1lIiwieCIsInkiLCJ0ZXh0IiwicGVyY2VudCBpbml0aWFsIiwicGVyY2VudCBwcmV2aW91cyIsInBlcmNlbnQgdG90YWwiXX0pLHRleHRpbmZvOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsYWJlbCIsInRleHQiLCJwZXJjZW50IGluaXRpYWwiLCJwZXJjZW50IHByZXZpb3VzIiwicGVyY2VudCB0b3RhbCIsInZhbHVlIl0sZXh0cmFzOlsibm9uZSJdLGVkaXRUeXBlOiJwbG90IixhcnJheU9rOiExfSx0ZXh0dGVtcGxhdGU6cyh7ZWRpdFR5cGU6InBsb3QifSx7a2V5czpsLmV2ZW50RGF0YUtleXMuY29uY2F0KFsibGFiZWwiLCJ2YWx1ZSJdKX0pLHRleHQ6bi50ZXh0LHRleHRwb3NpdGlvbjpjKHt9LG4udGV4dHBvc2l0aW9uLHtkZmx0OiJhdXRvIn0pLGluc2lkZXRleHRhbmNob3I6Yyh7fSxuLmluc2lkZXRleHRhbmNob3Ise2RmbHQ6Im1pZGRsZSJ9KSx0ZXh0YW5nbGU6Yyh7fSxuLnRleHRhbmdsZSx7ZGZsdDowfSksdGV4dGZvbnQ6bi50ZXh0Zm9udCxpbnNpZGV0ZXh0Zm9udDpuLmluc2lkZXRleHRmb250LG91dHNpZGV0ZXh0Zm9udDpuLm91dHNpZGV0ZXh0Zm9udCxjb25zdHJhaW50ZXh0Om4uY29uc3RyYWludGV4dCxjbGlwb25heGlzOm4uY2xpcG9uYXhpcyxvcmllbnRhdGlvbjpjKHt9LG4ub3JpZW50YXRpb24se30pLG9mZnNldDpjKHt9LG4ub2Zmc2V0LHthcnJheU9rOiExfSksd2lkdGg6Yyh7fSxuLndpZHRoLHthcnJheU9rOiExfSksbWFya2VyOm4ubWFya2VyLGNvbm5lY3Rvcjp7ZmlsbGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sbGluZTp7Y29sb3I6Yyh7fSxhLmNvbG9yLHtkZmx0OnUuZGVmYXVsdExpbmV9KSx3aWR0aDpjKHt9LGEud2lkdGgse2RmbHQ6MCxlZGl0VHlwZToicGxvdCJ9KSxkYXNoOmEuZGFzaCxlZGl0VHlwZToic3R5bGUifSx2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSxvZmZzZXRncm91cDpuLm9mZnNldGdyb3VwLGFsaWdubWVudGdyb3VwOm4uYWxpZ25tZW50Z3JvdXB9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vYmFyL2F0dHJpYnV0ZXMiOjg1NiwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwLCIuL2NvbnN0YW50cyI6OTgxfV0sOTgwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuL2FycmF5c190b19jYWxjZGF0YSIpLGk9dCgiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiIpLG89dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtmdW5jdGlvbiBzKHQpe3JldHVybiB0PT09bz8wOnR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbCxjLHUsaD1uLmdldEZyb21JZCh0LGUueGF4aXN8fCJ4IiksZj1uLmdldEZyb21JZCh0LGUueWF4aXN8fCJ5Iik7ImgiPT09ZS5vcmllbnRhdGlvbj8ocj1oLm1ha2VDYWxjZGF0YShlLCJ4IiksbD1mLm1ha2VDYWxjZGF0YShlLCJ5IikpOihyPWYubWFrZUNhbGNkYXRhKGUsInkiKSxsPWgubWFrZUNhbGNkYXRhKGUsIngiKSk7dmFyIHAsZD1NYXRoLm1pbihsLmxlbmd0aCxyLmxlbmd0aCksZz1uZXcgQXJyYXkoZCk7Zm9yKGUuX2Jhc2U9W10sYz0wO2M8ZDtjKyspe3JbY108MCYmKHJbY109byk7dmFyIHY9ITE7cltjXSE9PW8mJmMrMTxkJiZyW2MrMV0hPT1vJiYodj0hMCksdT1nW2NdPXtwOmxbY10sczpyW2NdLGNOZXh0OnZ9LGUuX2Jhc2VbY109LS41KnUucyxlLmlkcyYmKHUuaWQ9U3RyaW5nKGUuaWRzW2NdKSksMD09PWMmJihnWzBdLnZUb3RhbD0wKSxnWzBdLnZUb3RhbCs9cyh1LnMpLHUuYmVnUj1zKHUucykvcyhnWzBdLnMpfWZvcihjPTA7YzxkO2MrKykodT1nW2NdKS5zIT09byYmKHUuc3VtUj11LnMvZ1swXS52VG90YWwsdS5kaWZSPXZvaWQgMCE9PXA/dS5zL3A6MSxwPXUucyk7cmV0dXJuIGEoZyxlKSxpKGcsZSksZ319LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyLCIuL2FycmF5c190b19jYWxjZGF0YSI6OTc4fV0sOTgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17ZXZlbnREYXRhS2V5czpbInBlcmNlbnRJbml0aWFsIiwicGVyY2VudFByZXZpb3VzIiwicGVyY2VudFRvdGFsIl19fSx7fV0sOTgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Jhci9jcm9zc190cmFjZV9jYWxjIikuc2V0R3JvdXBQb3NpdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYSxpPXQuX2Z1bGxMYXlvdXQsbz10Ll9mdWxsRGF0YSxzPXQuY2FsY2RhdGEsbD1lLnhheGlzLGM9ZS55YXhpcyx1PVtdLGg9W10sZj1bXTtmb3IoYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgcD1vW2FdLGQ9ImgiPT09cC5vcmllbnRhdGlvbjshMD09PXAudmlzaWJsZSYmcC54YXhpcz09PWwuX2lkJiZwLnlheGlzPT09Yy5faWQmJiJmdW5uZWwiPT09cC50eXBlJiYocj1zW2FdLGQ/Zi5wdXNoKHIpOmgucHVzaChyKSx1LnB1c2gocikpfXZhciBnPXttb2RlOmkuZnVubmVsbW9kZSxub3JtOmkuZnVubmVsbm9ybSxnYXA6aS5mdW5uZWxnYXAsZ3JvdXBnYXA6aS5mdW5uZWxncm91cGdhcH07Zm9yKG4odCxsLGMsaCxnKSxuKHQsYyxsLGYsZyksYT0wO2E8dS5sZW5ndGg7YSsrKXtyPXVbYV07Zm9yKHZhciB2PTA7djxyLmxlbmd0aDt2KyspdisxPHIubGVuZ3RoJiYoclt2XS5uZXh0UDA9clt2KzFdLnAwLHJbdl0ubmV4dFMwPXJbdisxXS5zMCxyW3ZdLm5leHRQMT1yW3YrMV0ucDEsclt2XS5uZXh0UzE9clt2KzFdLnMxKX19fSx7Ii4uL2Jhci9jcm9zc190cmFjZV9jYWxjIjo4NTl9XSw5ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVHcm91cGluZ0RlZmF1bHRzLGk9dCgiLi4vYmFyL2RlZmF1bHRzIikuaGFuZGxlVGV4dCxvPXQoIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2UuZXhwb3J0cz17c3VwcGx5RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIsYSl7ZnVuY3Rpb24gYyhyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUscyxyLGEpfWlmKG8odCxlLGEsYykpe2MoIm9yaWVudGF0aW9uIixlLnkmJiFlLng/InYiOiJoIiksYygib2Zmc2V0IiksYygid2lkdGgiKTt2YXIgdT1jKCJ0ZXh0Iik7YygiaG92ZXJ0ZXh0IiksYygiaG92ZXJ0ZW1wbGF0ZSIpO3ZhciBoPWMoInRleHRwb3NpdGlvbiIpO2kodCxlLGEsYyxoLHttb2R1bGVIYXNTZWxlY3RlZDohMSxtb2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVsZUhhc0NvbnN0cmFpbjohMCxtb2R1bGVIYXNDbGlwb25heGlzOiEwLG1vZHVsZUhhc1RleHRhbmdsZTohMCxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITB9KSwibm9uZSI9PT1lLnRleHRwb3NpdGlvbnx8ZS50ZXh0dGVtcGxhdGV8fGMoInRleHRpbmZvIixBcnJheS5pc0FycmF5KHUpPyJ0ZXh0K3ZhbHVlIjoidmFsdWUiKTt2YXIgZj1jKCJtYXJrZXIuY29sb3IiLHIpO2MoIm1hcmtlci5saW5lLmNvbG9yIixsLmRlZmF1bHRMaW5lKSxjKCJtYXJrZXIubGluZS53aWR0aCIpLGMoImNvbm5lY3Rvci52aXNpYmxlIikmJihjKCJjb25uZWN0b3IuZmlsbGNvbG9yIixmdW5jdGlvbih0KXt2YXIgZT1uLmlzQXJyYXlPclR5cGVkQXJyYXkodCk/IiMwMDAiOnQ7cmV0dXJuIGwuYWRkT3BhY2l0eShlLC41Kmwub3BhY2l0eShlKSl9KGYpKSxjKCJjb25uZWN0b3IubGluZS53aWR0aCIpJiYoYygiY29ubmVjdG9yLmxpbmUuY29sb3IiKSxjKCJjb25uZWN0b3IubGluZS5kYXNoIikpKX1lbHNlIGUudmlzaWJsZT0hMX0sY3Jvc3NUcmFjZURlZmF1bHRzOmZ1bmN0aW9uKHQsZSl7dmFyIHIsaTtmdW5jdGlvbiBvKHQpe3JldHVybiBuLmNvZXJjZShpLl9pbnB1dCxpLHMsdCl9aWYoImdyb3VwIj09PWUuZnVubmVsbW9kZSlmb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKylyPShpPXRbbF0pLl9pbnB1dCxhKHIsaSxlLG8pfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vYmFyL2RlZmF1bHRzIjo4NjAsIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiOjExNDYsIi4vYXR0cmlidXRlcyI6OTc5fV0sOTg0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0Lng9InhWYWwiaW4gZT9lLnhWYWw6ZS54LHQueT0ieVZhbCJpbiBlP2UueVZhbDplLnksInBlcmNlbnRJbml0aWFsImluIGUmJih0LnBlcmNlbnRJbml0aWFsPWUucGVyY2VudEluaXRpYWwpLCJwZXJjZW50UHJldmlvdXMiaW4gZSYmKHQucGVyY2VudFByZXZpb3VzPWUucGVyY2VudFByZXZpb3VzKSwicGVyY2VudFRvdGFsImluIGUmJih0LnBlcmNlbnRUb3RhbD1lLnBlcmNlbnRUb3RhbCksZS54YSYmKHQueGF4aXM9ZS54YSksZS55YSYmKHQueWF4aXM9ZS55YSksdH19LHt9XSw5ODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLm9wYWNpdHksYT10KCIuLi9iYXIvaG92ZXIiKS5ob3Zlck9uQmFycyxpPXQoIi4uLy4uL2xpYiIpLmZvcm1hdFBlcmNlbnQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzPWEodCxlLHIsbyk7aWYocyl7dmFyIGw9cy5jZCxjPWxbMF0udHJhY2UsdT0iaCI9PT1jLm9yaWVudGF0aW9uLGg9bFtzLmluZGV4XTtzWyh1PyJ4IjoieSIpKyJMYWJlbFZhbCJdPWgucyxzLnBlcmNlbnRJbml0aWFsPWguYmVnUixzLnBlcmNlbnRJbml0aWFsTGFiZWw9aShoLmJlZ1IsMSkscy5wZXJjZW50UHJldmlvdXM9aC5kaWZSLHMucGVyY2VudFByZXZpb3VzTGFiZWw9aShoLmRpZlIsMSkscy5wZXJjZW50VG90YWw9aC5zdW1SLHMucGVyY2VudFRvdGFsTGFiZWw9aShoLnN1bVIsMSk7dmFyIGY9aC5oaXx8Yy5ob3ZlcmluZm8scD1bXTtpZihmJiYibm9uZSIhPT1mJiYic2tpcCIhPT1mKXt2YXIgZD0iYWxsIj09PWYsZz1mLnNwbGl0KCIrIiksdj1mdW5jdGlvbih0KXtyZXR1cm4gZHx8LTEhPT1nLmluZGV4T2YodCl9O3YoInBlcmNlbnQgaW5pdGlhbCIpJiZwLnB1c2gocy5wZXJjZW50SW5pdGlhbExhYmVsKyIgb2YgaW5pdGlhbCIpLHYoInBlcmNlbnQgcHJldmlvdXMiKSYmcC5wdXNoKHMucGVyY2VudFByZXZpb3VzTGFiZWwrIiBvZiBwcmV2aW91cyIpLHYoInBlcmNlbnQgdG90YWwiKSYmcC5wdXNoKHMucGVyY2VudFRvdGFsTGFiZWwrIiBvZiB0b3RhbCIpfXJldHVybiBzLmV4dHJhVGV4dD1wLmpvaW4oIjxicj4iKSxzLmNvbG9yPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5tYXJrZXIsYT1lLm1jfHxyLmNvbG9yLGk9ZS5tbGN8fHIubGluZS5jb2xvcixvPWUubWx3fHxyLmxpbmUud2lkdGg7aWYobihhKSlyZXR1cm4gYTtpZihuKGkpJiZvKXJldHVybiBpfShjLGgpLFtzXX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTcsIi4uL2Jhci9ob3ZlciI6ODYzfV0sOTg2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY3Jvc3NUcmFjZURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKS5jcm9zc1RyYWNlRGVmYXVsdHMsc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLGNyb3NzVHJhY2VDYWxjOnQoIi4vY3Jvc3NfdHJhY2VfY2FsYyIpLHBsb3Q6dCgiLi9wbG90Iiksc3R5bGU6dCgiLi9zdHlsZSIpLnN0eWxlLGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKSxldmVudERhdGE6dCgiLi9ldmVudF9kYXRhIiksc2VsZWN0UG9pbnRzOnQoIi4uL2Jhci9zZWxlY3QiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiZnVubmVsIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiYmFyLWxpa2UiLCJjYXJ0ZXNpYW4iLCJzdmciLCJvcmllbnRlZCIsInNob3dMZWdlbmQiLCJ6b29tU2NhbGUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vYmFyL3NlbGVjdCI6ODY4LCIuL2F0dHJpYnV0ZXMiOjk3OSwiLi9jYWxjIjo5ODAsIi4vY3Jvc3NfdHJhY2VfY2FsYyI6OTgyLCIuL2RlZmF1bHRzIjo5ODMsIi4vZXZlbnRfZGF0YSI6OTg0LCIuL2hvdmVyIjo5ODUsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjk4NywiLi9sYXlvdXRfZGVmYXVsdHMiOjk4OCwiLi9wbG90Ijo5ODksIi4vc3R5bGUiOjk5MH1dLDk4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2Z1bm5lbG1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInN0YWNrIiwiZ3JvdXAiLCJvdmVybGF5Il0sZGZsdDoic3RhY2siLGVkaXRUeXBlOiJjYWxjIn0sZnVubmVsZ2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGVkaXRUeXBlOiJjYWxjIn0sZnVubmVsZ3JvdXBnYXA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn19fSx7fV0sOTg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9ITE7ZnVuY3Rpb24gbyhyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfWZvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgbD1yW3NdO2lmKGwudmlzaWJsZSYmImZ1bm5lbCI9PT1sLnR5cGUpe2k9ITA7YnJlYWt9fWkmJihvKCJmdW5uZWxtb2RlIiksbygiZnVubmVsZ2FwIiwuMiksbygiZnVubmVsZ3JvdXBnYXAiKSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo5ODd9XSw5ODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi9iYXIvcGxvdCIpLHM9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIpLmNsZWFyTWluVGV4dFNpemU7ZnVuY3Rpb24gbCh0LGUscixuKXt2YXIgYT1bXSxpPVtdLG89bj9lOnIscz1uP3I6ZTtyZXR1cm4gYVswXT1vLmMycCh0LnMwLCEwKSxpWzBdPXMuYzJwKHQucDAsITApLGFbMV09by5jMnAodC5zMSwhMCksaVsxXT1zLmMycCh0LnAxLCEwKSxhWzJdPW8uYzJwKHQubmV4dFMwLCEwKSxpWzJdPXMuYzJwKHQubmV4dFAwLCEwKSxhWzNdPW8uYzJwKHQubmV4dFMxLCEwKSxpWzNdPXMuYzJwKHQubmV4dFAxLCEwKSxuP1thLGldOltpLGFdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixjKXt2YXIgdT10Ll9mdWxsTGF5b3V0O3MoImZ1bm5lbCIsdSksZnVuY3Rpb24odCxlLHIsbyl7dmFyIHM9ZS54YXhpcyxjPWUueWF4aXM7YS5tYWtlVHJhY2VHcm91cHMobyxyLCJ0cmFjZSBiYXJzIikuZWFjaChmdW5jdGlvbihyKXt2YXIgbz1uLnNlbGVjdCh0aGlzKSx1PXJbMF0udHJhY2UsaD1hLmVuc3VyZVNpbmdsZShvLCJnIiwicmVnaW9ucyIpO2lmKHUuY29ubmVjdG9yJiZ1LmNvbm5lY3Rvci52aXNpYmxlKXt2YXIgZj0iaCI9PT11Lm9yaWVudGF0aW9uLHA9aC5zZWxlY3RBbGwoImcucmVnaW9uIikuZGF0YShhLmlkZW50aXR5KTtwLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicmVnaW9uIiwhMCkscC5leGl0KCkucmVtb3ZlKCk7dmFyIGQ9cC5zaXplKCk7cC5lYWNoKGZ1bmN0aW9uKHIsbyl7aWYobz09PWQtMXx8ci5jTmV4dCl7dmFyIHU9bChyLHMsYyxmKSxoPXVbMF0scD11WzFdLGc9IiI7dm9pZCAwIT09aFszXSYmdm9pZCAwIT09cFszXSYmKGcrPWY/Ik0iK2hbMF0rIiwiK3BbMV0rIkwiK2hbMl0rIiwiK3BbMl0rIkgiK2hbM10rIkwiK2hbMV0rIiwiK3BbMV0rIloiOiJNIitoWzFdKyIsIitwWzFdKyJMIitoWzJdKyIsIitwWzNdKyJWIitwWzJdKyJMIitoWzFdKyIsIitwWzBdKyJaIiksYS5lbnN1cmVTaW5nbGUobi5zZWxlY3QodGhpcyksInBhdGgiKS5hdHRyKCJkIixnKS5jYWxsKGkuc2V0Q2xpcFVybCxlLmxheWVyQ2xpcElkLHQpfX0pfWVsc2UgaC5yZW1vdmUoKX0pfSh0LGUscixjKSxmdW5jdGlvbih0LGUscixvKXt2YXIgcz1lLnhheGlzLGM9ZS55YXhpczthLm1ha2VUcmFjZUdyb3VwcyhvLHIsInRyYWNlIGJhcnMiKS5lYWNoKGZ1bmN0aW9uKHIpe3ZhciBvPW4uc2VsZWN0KHRoaXMpLHU9clswXS50cmFjZSxoPWEuZW5zdXJlU2luZ2xlKG8sImciLCJsaW5lcyIpO2lmKHUuY29ubmVjdG9yJiZ1LmNvbm5lY3Rvci52aXNpYmxlJiZ1LmNvbm5lY3Rvci5saW5lLndpZHRoKXt2YXIgZj0iaCI9PT11Lm9yaWVudGF0aW9uLHA9aC5zZWxlY3RBbGwoImcubGluZSIpLmRhdGEoYS5pZGVudGl0eSk7cC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxpbmUiLCEwKSxwLmV4aXQoKS5yZW1vdmUoKTt2YXIgZD1wLnNpemUoKTtwLmVhY2goZnVuY3Rpb24ocixvKXtpZihvPT09ZC0xfHxyLmNOZXh0KXt2YXIgdT1sKHIscyxjLGYpLGg9dVswXSxwPXVbMV0sZz0iIjt2b2lkIDAhPT1oWzNdJiZ2b2lkIDAhPT1wWzNdJiYoZj8oZys9Ik0iK2hbMF0rIiwiK3BbMV0rIkwiK2hbMl0rIiwiK3BbMl0sZys9Ik0iK2hbMV0rIiwiK3BbMV0rIkwiK2hbM10rIiwiK3BbMl0pOihnKz0iTSIraFsxXSsiLCIrcFsxXSsiTCIraFsyXSsiLCIrcFszXSxnKz0iTSIraFsxXSsiLCIrcFswXSsiTCIraFsyXSsiLCIrcFsyXSkpLCIiPT09ZyYmKGc9Ik0wLDBaIiksYS5lbnN1cmVTaW5nbGUobi5zZWxlY3QodGhpcyksInBhdGgiKS5hdHRyKCJkIixnKS5jYWxsKGkuc2V0Q2xpcFVybCxlLmxheWVyQ2xpcElkLHQpfX0pfWVsc2UgaC5yZW1vdmUoKX0pfSh0LGUscixjKSxvLnBsb3QodCxlLHIsYyx7bW9kZTp1LmZ1bm5lbG1vZGUsbm9ybTp1LmZ1bm5lbG1vZGUsZ2FwOnUuZnVubmVsZ2FwLGdyb3VwZ2FwOnUuZnVubmVsZ3JvdXBnYXB9KX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi9iYXIvcGxvdCI6ODY3LCIuLi9iYXIvdW5pZm9ybV90ZXh0Ijo4NzIsZDM6MTY1fV0sOTkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiKS5ERVNFTEVDVERJTSxzPXQoIi4uL2Jhci9zdHlsZSIpLGw9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIpLnJlc2l6ZVRleHQsYz1zLnN0eWxlVGV4dFBvaW50cztlLmV4cG9ydHM9e3N0eWxlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgcz1yfHxuLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcuZnVubmVsbGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2UiKTtsKHQscywiZnVubmVsIikscy5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pLHMuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxzPWVbMF0udHJhY2U7ci5zZWxlY3RBbGwoIi5wb2ludCA+IHBhdGgiKS5lYWNoKGZ1bmN0aW9uKHQpe2lmKCF0LmlzQmxhbmspe3ZhciBlPXMubWFya2VyO24uc2VsZWN0KHRoaXMpLmNhbGwoaS5maWxsLHQubWN8fGUuY29sb3IpLmNhbGwoaS5zdHJva2UsdC5tbGN8fGUubGluZS5jb2xvcikuY2FsbChhLmRhc2hMaW5lLGUubGluZS5kYXNoLHQubWx3fHxlLmxpbmUud2lkdGgpLnN0eWxlKCJvcGFjaXR5IixzLnNlbGVjdGVkcG9pbnRzJiYhdC5zZWxlY3RlZD9vOjEpfX0pLGMocixzLHQpLHIuc2VsZWN0QWxsKCIucmVnaW9ucyIpLmVhY2goZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwwKS5jYWxsKGkuZmlsbCxzLmNvbm5lY3Rvci5maWxsY29sb3IpfSksci5zZWxlY3RBbGwoIi5saW5lcyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1zLmNvbm5lY3Rvci5saW5lO2EubGluZUdyb3VwU3R5bGUobi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJwYXRoIiksdC53aWR0aCx0LmNvbG9yLHQuZGFzaCl9KX0pfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyI6NjkyLCIuLi9iYXIvc3R5bGUiOjg3MCwiLi4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLGQzOjE2NX1dLDk5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9waWUvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmlidXRlcyxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMscz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsbD10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e2xhYmVsczpuLmxhYmVscyxsYWJlbDA6bi5sYWJlbDAsZGxhYmVsOm4uZGxhYmVsLHZhbHVlczpuLnZhbHVlcyxtYXJrZXI6e2NvbG9yczpuLm1hcmtlci5jb2xvcnMsbGluZTp7Y29sb3I6bCh7fSxuLm1hcmtlci5saW5lLmNvbG9yLHtkZmx0Om51bGx9KSx3aWR0aDpsKHt9LG4ubWFya2VyLmxpbmUud2lkdGgse2RmbHQ6MX0pLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSx0ZXh0Om4udGV4dCxob3ZlcnRleHQ6bi5ob3ZlcnRleHQsc2NhbGVncm91cDpsKHt9LG4uc2NhbGVncm91cCx7fSksdGV4dGluZm86bCh7fSxuLnRleHRpbmZvLHtmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwicGVyY2VudCJdfSksdGV4dHRlbXBsYXRlOnMoe2VkaXRUeXBlOiJwbG90In0se2tleXM6WyJsYWJlbCIsImNvbG9yIiwidmFsdWUiLCJ0ZXh0IiwicGVyY2VudCJdfSksaG92ZXJpbmZvOmwoe30sYS5ob3ZlcmluZm8se2ZsYWdzOlsibGFiZWwiLCJ0ZXh0IiwidmFsdWUiLCJwZXJjZW50IiwibmFtZSJdfSksaG92ZXJ0ZW1wbGF0ZTpvKHt9LHtrZXlzOlsibGFiZWwiLCJjb2xvciIsInZhbHVlIiwidGV4dCIsInBlcmNlbnQiXX0pLHRleHRwb3NpdGlvbjpsKHt9LG4udGV4dHBvc2l0aW9uLHt2YWx1ZXM6WyJpbnNpZGUiLCJub25lIl0sZGZsdDoiaW5zaWRlIn0pLHRleHRmb250Om4udGV4dGZvbnQsaW5zaWRldGV4dGZvbnQ6bi5pbnNpZGV0ZXh0Zm9udCx0aXRsZTp7dGV4dDpuLnRpdGxlLnRleHQsZm9udDpuLnRpdGxlLmZvbnQscG9zaXRpb246bCh7fSxuLnRpdGxlLnBvc2l0aW9uLHt2YWx1ZXM6WyJ0b3AgbGVmdCIsInRvcCBjZW50ZXIiLCJ0b3AgcmlnaHQiXSxkZmx0OiJ0b3AgY2VudGVyIn0pLGVkaXRUeXBlOiJwbG90In0sZG9tYWluOmkoe25hbWU6ImZ1bm5lbGFyZWEiLHRyYWNlOiEwLGVkaXRUeXBlOiJjYWxjIn0pLGFzcGVjdHJhdGlvOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToicGxvdCJ9LGJhc2VyYXRpbzp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi4zMzMsZWRpdFR5cGU6InBsb3QifX19LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NzkwLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL3BpZS9hdHRyaWJ1dGVzIjoxMDk0fV0sOTkyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIik7ci5uYW1lPSJmdW5uZWxhcmVhIixyLnBsb3Q9ZnVuY3Rpb24odCxlLGEsaSl7bi5wbG90QmFzZVBsb3Qoci5uYW1lLHQsZSxhLGkpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxhLGkpe24uY2xlYW5CYXNlUGxvdChyLm5hbWUsdCxlLGEsaSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo4MjZ9XSw5OTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcGllL2NhbGMiKTtlLmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxjKHQsZSl9LGNyb3NzVHJhY2VDYWxjOmZ1bmN0aW9uKHQpe24uY3Jvc3NUcmFjZUNhbGModCx7dHlwZToiZnVubmVsYXJlYSJ9KX19fSx7Ii4uL3BpZS9jYWxjIjoxMDk2fV0sOTk0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9kb21haW4iKS5kZWZhdWx0cyxvPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZVRleHQscz10KCIuLi9waWUvZGVmYXVsdHMiKS5oYW5kbGVMYWJlbHNBbmRWYWx1ZXM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGwpe2Z1bmN0aW9uIGMocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgdT1jKCJsYWJlbHMiKSxoPWMoInZhbHVlcyIpLGY9cyh1LGgpLHA9Zi5sZW47aWYoZS5faGFzTGFiZWxzPWYuaGFzTGFiZWxzLGUuX2hhc1ZhbHVlcz1mLmhhc1ZhbHVlcywhZS5faGFzTGFiZWxzJiZlLl9oYXNWYWx1ZXMmJihjKCJsYWJlbDAiKSxjKCJkbGFiZWwiKSkscCl7ZS5fbGVuZ3RoPXAsYygibWFya2VyLmxpbmUud2lkdGgiKSYmYygibWFya2VyLmxpbmUuY29sb3IiLGwucGFwZXJfYmdjb2xvciksYygibWFya2VyLmNvbG9ycyIpLGMoInNjYWxlZ3JvdXAiKTt2YXIgZCxnPWMoInRleHQiKSx2PWMoInRleHR0ZW1wbGF0ZSIpO2lmKHZ8fChkPWMoInRleHRpbmZvIixBcnJheS5pc0FycmF5KGcpPyJ0ZXh0K3BlcmNlbnQiOiJwZXJjZW50IikpLGMoImhvdmVydGV4dCIpLGMoImhvdmVydGVtcGxhdGUiKSx2fHxkJiYibm9uZSIhPT1kKXt2YXIgbT1jKCJ0ZXh0cG9zaXRpb24iKTtvKHQsZSxsLGMsbSx7bW9kdWxlSGFzU2VsZWN0ZWQ6ITEsbW9kdWxlSGFzVW5zZWxlY3RlZDohMSxtb2R1bGVIYXNDb25zdHJhaW46ITEsbW9kdWxlSGFzQ2xpcG9uYXhpczohMSxtb2R1bGVIYXNUZXh0YW5nbGU6ITEsbW9kdWxlSGFzSW5zaWRlYW5jaG9yOiExfSl9aShlLGwsYyksYygidGl0bGUudGV4dCIpJiYoYygidGl0bGUucG9zaXRpb24iKSxuLmNvZXJjZUZvbnQoYywidGl0bGUuZm9udCIsbC5mb250KSksYygiYXNwZWN0cmF0aW8iKSxjKCJiYXNlcmF0aW8iKX1lbHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NzkwLCIuLi9iYXIvZGVmYXVsdHMiOjg2MCwiLi4vcGllL2RlZmF1bHRzIjoxMDk3LCIuL2F0dHJpYnV0ZXMiOjk5MX1dLDk5NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJmdW5uZWxhcmVhIixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIpLGNhdGVnb3JpZXM6WyJwaWUtbGlrZSIsImZ1bm5lbGFyZWEiLCJzaG93TGVnZW5kIl0sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi9jYWxjIikuY3Jvc3NUcmFjZUNhbGMscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxlIiksc3R5bGVPbmU6dCgiLi4vcGllL3N0eWxlX29uZSIpLG1ldGE6e319fSx7Ii4uL3BpZS9zdHlsZV9vbmUiOjExMDUsIi4vYXR0cmlidXRlcyI6OTkxLCIuL2Jhc2VfcGxvdCI6OTkyLCIuL2NhbGMiOjk5MywiLi9kZWZhdWx0cyI6OTk0LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo5OTYsIi4vbGF5b3V0X2RlZmF1bHRzIjo5OTcsIi4vcGxvdCI6OTk4LCIuL3N0eWxlIjo5OTl9XSw5OTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcGllL2xheW91dF9hdHRyaWJ1dGVzIikuaGlkZGVubGFiZWxzO2UuZXhwb3J0cz17aGlkZGVubGFiZWxzOm4sZnVubmVsYXJlYWNvbG9yd2F5Ont2YWxUeXBlOiJjb2xvcmxpc3QiLGVkaXRUeXBlOiJjYWxjIn0sZXh0ZW5kZnVubmVsYXJlYWNvbG9yczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9fX0seyIuLi9waWUvbGF5b3V0X2F0dHJpYnV0ZXMiOjExMDF9XSw5OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfXIoImhpZGRlbmxhYmVscyIpLHIoImZ1bm5lbGFyZWFjb2xvcndheSIsZS5jb2xvcndheSkscigiZXh0ZW5kZnVubmVsYXJlYWNvbG9ycyIpfX0seyIuLi8uLi9saWIiOjcxNywiLi9sYXlvdXRfYXR0cmlidXRlcyI6OTk2fV0sOTk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIikscz10KCIuLi9iYXIvcGxvdCIpLnRvTW92ZUluc2lkZUJhcixsPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKSxjPWwucmVjb3JkTWluVGV4dFNpemUsdT1sLmNsZWFyTWluVGV4dFNpemUsaD10KCIuLi9waWUvaGVscGVycyIpLGY9dCgiLi4vcGllL3Bsb3QiKSxwPWYuYXR0YWNoRnhIYW5kbGVycyxkPWYuZGV0ZXJtaW5lSW5zaWRlVGV4dEZvbnQsZz1mLmxheW91dEFyZWFzLHY9Zi5wcmVyZW5kZXJUaXRsZXMsbT1mLnBvc2l0aW9uVGl0bGVPdXRzaWRlLHk9Zi5mb3JtYXRTbGljZUxhYmVsO2Z1bmN0aW9uIHgodCxlKXtyZXR1cm4ibCIrKGVbMF0tdFswXSkrIiwiKyhlWzFdLXRbMV0pfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQ7dSgiZnVubmVsYXJlYSIsciksdihlLHQpLGcoZSxyLl9zaXplKSxpLm1ha2VUcmFjZUdyb3VwcyhyLl9mdW5uZWxhcmVhbGF5ZXIsZSwidHJhY2UiKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBsPW4uc2VsZWN0KHRoaXMpLHU9ZVswXSxmPXUudHJhY2U7IWZ1bmN0aW9uKHQpe2lmKCF0Lmxlbmd0aClyZXR1cm47dmFyIGU9dFswXSxyPWUudHJhY2Usbj1yLmFzcGVjdHJhdGlvLGE9ci5iYXNlcmF0aW87YT4uOTk5JiYoYT0uOTk5KTt2YXIgaSxvPU1hdGgucG93KGEsMikscz1lLnZUb3RhbCxsPXMsYz1zKm8vKDEtbykvcztmdW5jdGlvbiB1KCl7dmFyIHQsZT17eDp0PU1hdGguc3FydChjKSx5Oi10fTtyZXR1cm5bZS54LGUueV19dmFyIGgsZixwPVtdO2ZvcihwLnB1c2godSgpKSxoPXQubGVuZ3RoLTE7aD4tMTtoLS0paWYoIShmPXRbaF0pLmhpZGRlbil7dmFyIGQ9Zi52L2w7Yys9ZCxwLnB1c2godSgpKX12YXIgZz0xLzAsdj0tMS8wO2ZvcihoPTA7aDxwLmxlbmd0aDtoKyspaT1wW2hdLGc9TWF0aC5taW4oZyxpWzFdKSx2PU1hdGgubWF4KHYsaVsxXSk7Zm9yKGg9MDtoPHAubGVuZ3RoO2grKylwW2hdWzFdLT0oditnKS8yO3ZhciBtPXBbcC5sZW5ndGgtMV1bMF0seT1lLnIseD0odi1nKS8yLGI9eS9tLF89eS94Km47Zm9yKGUucj1fKngsaD0wO2g8cC5sZW5ndGg7aCsrKXBbaF1bMF0qPWIscFtoXVsxXSo9Xzt2YXIgdz1bLShpPXBbMF0pWzBdLGlbMV1dLGs9W2lbMF0saVsxXV0sVD0wO2ZvcihoPXQubGVuZ3RoLTE7aD4tMTtoLS0paWYoIShmPXRbaF0pLmhpZGRlbil7dmFyIE09cFtUKz0xXVswXSxBPXBbVF1bMV07Zi5UTD1bLU0sQV0sZi5UUj1bTSxBXSxmLkJMPXcsZi5CUj1rLGYucHhtaWQ9KFM9Zi5UUixFPWYuQlIsWy41KihTWzBdK0VbMF0pLC41KihTWzFdK0VbMV0pXSksdz1mLlRMLGs9Zi5UUn12YXIgUyxFfShlKSxsLmVhY2goZnVuY3Rpb24oKXt2YXIgbD1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuc2xpY2UiKS5kYXRhKGUpO2wuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzbGljZSIsITApLGwuZXhpdCgpLnJlbW92ZSgpLGwuZWFjaChmdW5jdGlvbihsLGcpe2lmKGwuaGlkZGVuKW4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aCxnIikucmVtb3ZlKCk7ZWxzZXtsLnBvaW50TnVtYmVyPWwuaSxsLmN1cnZlTnVtYmVyPWYuaW5kZXg7dmFyIHY9dS5jeCxtPXUuY3ksYj1uLnNlbGVjdCh0aGlzKSxfPWIuc2VsZWN0QWxsKCJwYXRoLnN1cmZhY2UiKS5kYXRhKFtsXSk7Xy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoInN1cmZhY2UiLCEwKS5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjoiYWxsIn0pLGIuY2FsbChwLHQsZSk7dmFyIHc9Ik0iKyh2K2wuVFJbMF0pKyIsIisobStsLlRSWzFdKSt4KGwuVFIsbC5CUikreChsLkJSLGwuQkwpK3gobC5CTCxsLlRMKSsiWiI7Xy5hdHRyKCJkIix3KSx5KHQsbCx1KTt2YXIgaz1oLmNhc3RPcHRpb24oZi50ZXh0cG9zaXRpb24sbC5wdHMpLFQ9Yi5zZWxlY3RBbGwoImcuc2xpY2V0ZXh0IikuZGF0YShsLnRleHQmJiJub25lIiE9PWs/WzBdOltdKTtULmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xpY2V0ZXh0IiwhMCksVC5leGl0KCkucmVtb3ZlKCksVC5lYWNoKGZ1bmN0aW9uKCl7dmFyIHU9aS5lbnN1cmVTaW5nbGUobi5zZWxlY3QodGhpcyksInRleHQiLCIiLGZ1bmN0aW9uKHQpe3QuYXR0cigiZGF0YS1ub3RleCIsMSl9KSxoPWkuZW5zdXJlVW5pZm9ybUZvbnRTaXplKHQsZChmLGwsci5mb250KSk7dS50ZXh0KGwudGV4dCkuYXR0cih7Y2xhc3M6InNsaWNldGV4dCIsdHJhbnNmb3JtOiIiLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9KS5jYWxsKGEuZm9udCxoKS5jYWxsKG8uY29udmVydFRvVHNwYW5zLHQpO3ZhciBwLHkseCxiPWEuYkJveCh1Lm5vZGUoKSksXz1NYXRoLm1pbihsLkJMWzFdLGwuQlJbMV0pK20sdz1NYXRoLm1heChsLlRMWzFdLGwuVFJbMV0pK207eT1NYXRoLm1heChsLlRMWzBdLGwuQkxbMF0pK3YseD1NYXRoLm1pbihsLlRSWzBdLGwuQlJbMF0pK3YsKHA9cyh5LHgsXyx3LGIse2lzSG9yaXpvbnRhbDohMCxjb25zdHJhaW5lZDohMCxhbmdsZTowLGFuY2hvcjoibWlkZGxlIn0pKS5mb250U2l6ZT1oLnNpemUsYyhmLnR5cGUscCxyKSxlW2ddLnRyYW5zZm9ybT1wLHUuYXR0cigidHJhbnNmb3JtIixpLmdldFRleHRUcmFuc2Zvcm0ocCkpfSl9fSk7dmFyIGc9bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLnRpdGxldGV4dCIpLmRhdGEoZi50aXRsZS50ZXh0P1swXTpbXSk7Zy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInRpdGxldGV4dCIsITApLGcuZXhpdCgpLnJlbW92ZSgpLGcuZWFjaChmdW5jdGlvbigpe3ZhciBlPWkuZW5zdXJlU2luZ2xlKG4uc2VsZWN0KHRoaXMpLCJ0ZXh0IiwiIixmdW5jdGlvbih0KXt0LmF0dHIoImRhdGEtbm90ZXgiLDEpfSkscz1mLnRpdGxlLnRleHQ7Zi5fbWV0YSYmKHM9aS50ZW1wbGF0ZVN0cmluZyhzLGYuX21ldGEpKSxlLnRleHQocykuYXR0cih7Y2xhc3M6InRpdGxldGV4dCIsdHJhbnNmb3JtOiIiLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9KS5jYWxsKGEuZm9udCxmLnRpdGxlLmZvbnQpLmNhbGwoby5jb252ZXJ0VG9Uc3BhbnMsdCk7dmFyIGw9bSh1LHIuX3NpemUpO2UuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbC54KyIsIitsLnkrIikiKyhsLnNjYWxlPDE/InNjYWxlKCIrbC5zY2FsZSsiKSI6IiIpKyJ0cmFuc2xhdGUoIitsLnR4KyIsIitsLnR5KyIpIil9KX0pfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uL2Jhci9wbG90Ijo4NjcsIi4uL2Jhci91bmlmb3JtX3RleHQiOjg3MiwiLi4vcGllL2hlbHBlcnMiOjEwOTksIi4uL3BpZS9wbG90IjoxMTAzLGQzOjE2NX1dLDk5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vcGllL3N0eWxlX29uZSIpLGk9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIpLnJlc2l6ZVRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQuX2Z1bm5lbGFyZWFsYXllci5zZWxlY3RBbGwoIi50cmFjZSIpO2kodCxlLCJmdW5uZWxhcmVhIiksZS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1uLnNlbGVjdCh0aGlzKTtyLnN0eWxlKHtvcGFjaXR5OmUub3BhY2l0eX0pLHIuc2VsZWN0QWxsKCJwYXRoLnN1cmZhY2UiKS5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLmNhbGwoYSx0LGUpfSl9KX19LHsiLi4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLCIuLi9waWUvc3R5bGVfb25lIjoxMTA1LGQzOjE2NX1dLDEwMDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxzPSh0KCIuLi8uLi9jb25zdGFudHMvZG9jcyIpLkZPUk1BVF9MSU5LLHQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0KTtlLmV4cG9ydHM9cyh7ejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx4OnMoe30sbi54LHtpbXBsaWVkRWRpdHM6e3h0eXBlOiJhcnJheSJ9fSkseDA6cyh7fSxuLngwLHtpbXBsaWVkRWRpdHM6e3h0eXBlOiJzY2FsZWQifX0pLGR4OnMoe30sbi5keCx7aW1wbGllZEVkaXRzOnt4dHlwZToic2NhbGVkIn19KSx5OnMoe30sbi55LHtpbXBsaWVkRWRpdHM6e3l0eXBlOiJhcnJheSJ9fSkseTA6cyh7fSxuLnkwLHtpbXBsaWVkRWRpdHM6e3l0eXBlOiJzY2FsZWQifX0pLGR5OnMoe30sbi5keSx7aW1wbGllZEVkaXRzOnt5dHlwZToic2NhbGVkIn19KSx0ZXh0Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx0cmFuc3Bvc2U6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSx4dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXJyYXkiLCJzY2FsZWQiXSxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHl0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhcnJheSIsInNjYWxlZCJdLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0senNtb290aDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZmFzdCIsImJlc3QiLCExXSxkZmx0OiExLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJvbmdhcHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6Im5vbmUifSxjb25uZWN0Z2Fwczp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6ImNhbGMifSx4Z2FwOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxtaW46MCxlZGl0VHlwZToicGxvdCJ9LHlnYXA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLG1pbjowLGVkaXRUeXBlOiJwbG90In0semhvdmVyZm9ybWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6Im5vbmUifSxob3ZlcnRlbXBsYXRlOmkoKSxzaG93bGVnZW5kOnMoe30sYS5zaG93bGVnZW5kLHtkZmx0OiExfSl9LHt0cmFuc2Zvcm1zOnZvaWQgMH0sbygiIix7Y0xldHRlcjoieiIsYXV0b0NvbG9yRGZsdDohMX0pKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9jb25zdGFudHMvZG9jcyI6Njg4LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSwxMDAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi9oaXN0b2dyYW0yZC9jYWxjIikscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLGw9dCgiLi9jb252ZXJ0X2NvbHVtbl94eXoiKSxjPXQoIi4vY2xlYW5fMmRfYXJyYXkiKSx1PXQoIi4vaW50ZXJwMmQiKSxoPXQoIi4vZmluZF9lbXB0aWVzIiksZj10KCIuL21ha2VfYm91bmRfYXJyYXkiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixwLGQsZyx2LG0seSx4LGIsXz1pLmdldEZyb21JZCh0LGUueGF4aXN8fCJ4Iiksdz1pLmdldEZyb21JZCh0LGUueWF4aXN8fCJ5Iiksaz1uLnRyYWNlSXMoZSwiY29udG91ciIpLFQ9bi50cmFjZUlzKGUsImhpc3RvZ3JhbSIpLE09bi50cmFjZUlzKGUsImdsMmQiKSxBPWs/ImJlc3QiOmUuenNtb290aDtpZihfLl9taW5EdGljaz0wLHcuX21pbkR0aWNrPTAsVClyPShiPW8odCxlKSkueCxwPWIueDAsZD1iLmR4LGc9Yi55LHY9Yi55MCxtPWIuZHkseT1iLno7ZWxzZXt2YXIgUz1lLno7YS5pc0FycmF5MUQoUyk/KGwoZSxfLHcsIngiLCJ5IixbInoiXSkscj1lLl94LGc9ZS5feSxTPWUuX3opOihyPWUuX3g9ZS54P18ubWFrZUNhbGNkYXRhKGUsIngiKTpbXSxnPWUuX3k9ZS55P3cubWFrZUNhbGNkYXRhKGUsInkiKTpbXSkscD1lLngwLGQ9ZS5keCx2PWUueTAsbT1lLmR5LHk9YyhTLGUsXyx3KSwoa3x8ZS5jb25uZWN0Z2FwcykmJihlLl9lbXB0eXBvaW50cz1oKHkpLHUoeSxlLl9lbXB0eXBvaW50cykpfWZ1bmN0aW9uIEUodCl7QT1lLl9pbnB1dC56c21vb3RoPWUuenNtb290aD0hMSxhLndhcm4oJ2Nhbm5vdCB1c2UgenNtb290aDogImZhc3QiOiAnK3QpfWlmKCJmYXN0Ij09PUEpaWYoImxvZyI9PT1fLnR5cGV8fCJsb2ciPT09dy50eXBlKUUoImxvZyBheGlzIGZvdW5kIik7ZWxzZSBpZighVCl7aWYoci5sZW5ndGgpe3ZhciBMPShyW3IubGVuZ3RoLTFdLXJbMF0pLyhyLmxlbmd0aC0xKSxDPU1hdGguYWJzKEwvMTAwKTtmb3IoeD0wO3g8ci5sZW5ndGgtMTt4KyspaWYoTWF0aC5hYnMoclt4KzFdLXJbeF0tTCk+Qyl7RSgieCBzY2FsZSBpcyBub3QgbGluZWFyIik7YnJlYWt9fWlmKGcubGVuZ3RoJiYiZmFzdCI9PT1BKXt2YXIgUD0oZ1tnLmxlbmd0aC0xXS1nWzBdKS8oZy5sZW5ndGgtMSksTz1NYXRoLmFicyhQLzEwMCk7Zm9yKHg9MDt4PGcubGVuZ3RoLTE7eCsrKWlmKE1hdGguYWJzKGdbeCsxXS1nW3hdLVApPk8pe0UoInkgc2NhbGUgaXMgbm90IGxpbmVhciIpO2JyZWFrfX19dmFyIHo9YS5tYXhSb3dMZW5ndGgoeSksST0ic2NhbGVkIj09PWUueHR5cGU/IiI6cixEPWYoZSxJLHAsZCx6LF8pLFI9InNjYWxlZCI9PT1lLnl0eXBlPyIiOmcsRj1mKGUsUix2LG0seS5sZW5ndGgsdyk7TXx8KGUuX2V4dHJlbWVzW18uX2lkXT1pLmZpbmRFeHRyZW1lcyhfLEQpLGUuX2V4dHJlbWVzW3cuX2lkXT1pLmZpbmRFeHRyZW1lcyh3LEYpKTt2YXIgQj17eDpELHk6Rix6OnksdGV4dDplLl90ZXh0fHxlLnRleHQsaG92ZXJ0ZXh0OmUuX2hvdmVydGV4dHx8ZS5ob3ZlcnRleHR9O2lmKEkmJkkubGVuZ3RoPT09RC5sZW5ndGgtMSYmKEIueENlbnRlcj1JKSxSJiZSLmxlbmd0aD09PUYubGVuZ3RoLTEmJihCLnlDZW50ZXI9UiksVCYmKEIueFJhbmdlcz1iLnhSYW5nZXMsQi55UmFuZ2VzPWIueVJhbmdlcyxCLnB0cz1iLnB0cyksa3x8cyh0LGUse3ZhbHM6eSxjTGV0dGVyOiJ6In0pLGsmJmUuY29udG91cnMmJiJoZWF0bWFwIj09PWUuY29udG91cnMuY29sb3Jpbmcpe3ZhciBOPXt0eXBlOiJjb250b3VyIj09PWUudHlwZT8iaGVhdG1hcCI6Imhpc3RvZ3JhbTJkIix4Y2FsZW5kYXI6ZS54Y2FsZW5kYXIseWNhbGVuZGFyOmUueWNhbGVuZGFyfTtCLnhmaWxsPWYoTixJLHAsZCx6LF8pLEIueWZpbGw9ZihOLFIsdixtLHkubGVuZ3RoLHcpfXJldHVybltCXX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjYwMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2hpc3RvZ3JhbTJkL2NhbGMiOjEwMzIsIi4vY2xlYW5fMmRfYXJyYXkiOjEwMDIsIi4vY29udmVydF9jb2x1bW5feHl6IjoxMDA0LCIuL2ZpbmRfZW1wdGllcyI6MTAwNiwiLi9pbnRlcnAyZCI6MTAwOSwiLi9tYWtlX2JvdW5kX2FycmF5IjoxMDEwfV0sMTAwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXt2YXIgcyxsLGMsdSxoLGY7ZnVuY3Rpb24gcCh0KXtpZihuKHQpKXJldHVybit0fWlmKGUmJmUudHJhbnNwb3NlKXtmb3Iocz0wLGg9MDtoPHQubGVuZ3RoO2grKylzPU1hdGgubWF4KHMsdFtoXS5sZW5ndGgpO2lmKDA9PT1zKXJldHVybiExO2M9ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSx1PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odFtyXXx8W10pW2VdfX1lbHNlIHM9dC5sZW5ndGgsYz1mdW5jdGlvbih0LGUpe3JldHVybiB0W2VdLmxlbmd0aH0sdT1mdW5jdGlvbih0LGUscil7cmV0dXJuKHRbZV18fFtdKVtyXX07dmFyIGQ9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlPT09aXx8cj09PWk/aTp1KHQsZSxyKX07ZnVuY3Rpb24gZyh0KXtpZihlJiYiY2FycGV0IiE9PWUudHlwZSYmImNvbnRvdXJjYXJwZXQiIT09ZS50eXBlJiZ0JiYiY2F0ZWdvcnkiPT09dC50eXBlJiZlWyJfIit0Ll9pZC5jaGFyQXQoMCldLmxlbmd0aCl7dmFyIHI9dC5faWQuY2hhckF0KDApLG49e30sbz1lWyJfIityKyJDYXRlZ29yeU1hcCJdfHxlW3JdO2ZvcihoPTA7aDxvLmxlbmd0aDtoKyspbltvW2hdXT1oO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1uW3QuX2NhdGVnb3JpZXNbZV1dO3JldHVybiByKzE/cjppfX1yZXR1cm4gYS5pZGVudGl0eX12YXIgdj1nKHIpLG09ZyhvKTtvJiYiY2F0ZWdvcnkiPT09by50eXBlJiYocz1vLl9jYXRlZ29yaWVzLmxlbmd0aCk7dmFyIHk9bmV3IEFycmF5KHMpO2ZvcihoPTA7aDxzO2grKylmb3IobD1yJiYiY2F0ZWdvcnkiPT09ci50eXBlP3IuX2NhdGVnb3JpZXMubGVuZ3RoOmModCxoKSx5W2hdPW5ldyBBcnJheShsKSxmPTA7ZjxsO2YrKyl5W2hdW2ZdPXAoZCh0LG0oaCksdihmKSkpO3JldHVybiB5fX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sMTAwMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21pbjoiem1pbiIsbWF4OiJ6bWF4In19LHt9XSwxMDA0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxvLHMpe3ZhciBsLGMsdSxoLGY9dC5fbGVuZ3RoLHA9ZS5tYWtlQ2FsY2RhdGEodCxpKSxkPXIubWFrZUNhbGNkYXRhKHQsbyksZz10LnRleHQsdj12b2lkIDAhPT1nJiZuLmlzQXJyYXkxRChnKSxtPXQuaG92ZXJ0ZXh0LHk9dm9pZCAwIT09bSYmbi5pc0FycmF5MUQobSkseD1uLmRpc3RpbmN0VmFscyhwKSxiPXgudmFscyxfPW4uZGlzdGluY3RWYWxzKGQpLHc9Xy52YWxzLGs9W107Zm9yKGw9MDtsPHMubGVuZ3RoO2wrKylrW2xdPW4uaW5pdDJkQXJyYXkody5sZW5ndGgsYi5sZW5ndGgpO3YmJih1PW4uaW5pdDJkQXJyYXkody5sZW5ndGgsYi5sZW5ndGgpKSx5JiYoaD1uLmluaXQyZEFycmF5KHcubGVuZ3RoLGIubGVuZ3RoKSk7dmFyIFQ9bi5pbml0MmRBcnJheSh3Lmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGw9MDtsPGY7bCsrKWlmKHBbbF0hPT1hJiZkW2xdIT09YSl7dmFyIE09bi5maW5kQmluKHBbbF0reC5taW5EaWZmLzIsYiksQT1uLmZpbmRCaW4oZFtsXStfLm1pbkRpZmYvMix3KTtmb3IoYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgUz10W3NbY11dO2tbY11bQV1bTV09U1tsXSxUW0FdW01dPWx9diYmKHVbQV1bTV09Z1tsXSkseSYmKGhbQV1bTV09bVtsXSl9Zm9yKHRbIl8iK2ldPWIsdFsiXyIrb109dyxjPTA7YzxzLmxlbmd0aDtjKyspdFsiXyIrc1tjXV09a1tjXTt2JiYodC5fdGV4dD11KSx5JiYodC5faG92ZXJ0ZXh0PWgpLGUmJiJjYXRlZ29yeSI9PT1lLnR5cGUmJih0WyJfIitpKyJDYXRlZ29yeU1hcCJdPWIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9jYXRlZ29yaWVzW3RdfSkpLHImJiJjYXRlZ29yeSI9PT1yLnR5cGUmJih0WyJfIitvKyJDYXRlZ29yeU1hcCJdPXcubWFwKGZ1bmN0aW9uKHQpe3JldHVybiByLl9jYXRlZ29yaWVzW3RdfSkpLHQuX2FmdGVyMmJlZm9yZT1UfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3fV0sMTAwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4veHl6X2RlZmF1bHRzIiksaT10KCIuL3N0eWxlX2RlZmF1bHRzIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXtmdW5jdGlvbiBjKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsYSl9YSh0LGUsYyxsKT8oYygidGV4dCIpLGMoImhvdmVydGV4dCIpLGMoImhvdmVydGVtcGxhdGUiKSxpKHQsZSxjLGwpLGMoImhvdmVyb25nYXBzIiksYygiY29ubmVjdGdhcHMiLG4uaXNBcnJheTFEKGUueikmJiExIT09ZS56c21vb3RoKSxvKHQsZSxsLGMse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0pKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1dGVzIjoxZTMsIi4vc3R5bGVfZGVmYXVsdHMiOjEwMTMsIi4veHl6X2RlZmF1bHRzIjoxMDE0fV0sMTAwNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKS5tYXhSb3dMZW5ndGg7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsYSxpLG8scyxsLGMsdT1bXSxoPXt9LGY9W10scD10WzBdLGQ9W10sZz1bMCwwLDBdLHY9bih0KTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKWZvcihlPWQsZD1wLHA9dFtyKzFdfHxbXSxhPTA7YTx2O2ErKyl2b2lkIDA9PT1kW2FdJiYoKHM9KHZvaWQgMCE9PWRbYS0xXT8xOjApKyh2b2lkIDAhPT1kW2ErMV0/MTowKSsodm9pZCAwIT09ZVthXT8xOjApKyh2b2lkIDAhPT1wW2FdPzE6MCkpPygwPT09ciYmcysrLDA9PT1hJiZzKysscj09PXQubGVuZ3RoLTEmJnMrKyxhPT09ZC5sZW5ndGgtMSYmcysrLHM8NCYmKGhbW3IsYV1dPVtyLGEsc10pLHUucHVzaChbcixhLHNdKSk6Zi5wdXNoKFtyLGFdKSk7Zm9yKDtmLmxlbmd0aDspe2ZvcihsPXt9LGM9ITEsbz1mLmxlbmd0aC0xO28+PTA7by0tKShzPSgoaFtbKHI9KGk9ZltvXSlbMF0pLTEsYT1pWzFdXV18fGcpWzJdKyhoW1tyKzEsYV1dfHxnKVsyXSsoaFtbcixhLTFdXXx8ZylbMl0rKGhbW3IsYSsxXV18fGcpWzJdKS8yMCkmJihsW2ldPVtyLGEsc10sZi5zcGxpY2UobywxKSxjPSEwKTtpZighYyl0aHJvdyJmaW5kRW1wdGllcyBpdGVyYXRlZCB3aXRoIG5vIG5ldyBuZWlnaGJvcnMiO2ZvcihpIGluIGwpaFtpXT1sW2ldLHUucHVzaChsW2ldKX1yZXR1cm4gdS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVbMl0tdFsyXX0pfX0seyIuLi8uLi9saWIiOjcxN31dLDEwMDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIikuZXh0cmFjdE9wdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMsbCxjKXt2YXIgdSxoLGYscCxkPXQuY2RbMF0sZz1kLnRyYWNlLHY9dC54YSxtPXQueWEseT1kLngseD1kLnksYj1kLnosXz1kLnhDZW50ZXIsdz1kLnlDZW50ZXIsaz1kLnptYXNrLFQ9Zy56aG92ZXJmb3JtYXQsTT15LEE9eDtpZighMSE9PXQuaW5kZXgpe3RyeXtmPU1hdGgucm91bmQodC5pbmRleFsxXSkscD1NYXRoLnJvdW5kKHQuaW5kZXhbMF0pfWNhdGNoKGUpe3JldHVybiB2b2lkIGEuZXJyb3IoIkVycm9yIGhvdmVyaW5nIG9uIGhlYXRtYXAsIHBvaW50TnVtYmVyIG11c3QgYmUgW3Jvdyxjb2xdLCBmb3VuZDoiLHQuaW5kZXgpfWlmKGY8MHx8Zj49YlswXS5sZW5ndGh8fHA8MHx8cD5iLmxlbmd0aClyZXR1cm59ZWxzZXtpZihuLmluYm94KGUteVswXSxlLXlbeS5sZW5ndGgtMV0sMCk+MHx8bi5pbmJveChyLXhbMF0sci14W3gubGVuZ3RoLTFdLDApPjApcmV0dXJuO2lmKGMpe3ZhciBTO2ZvcihNPVsyKnlbMF0teVsxXV0sUz0xO1M8eS5sZW5ndGg7UysrKU0ucHVzaCgoeVtTXSt5W1MtMV0pLzIpO2ZvcihNLnB1c2goWzIqeVt5Lmxlbmd0aC0xXS15W3kubGVuZ3RoLTJdXSksQT1bMip4WzBdLXhbMV1dLFM9MTtTPHgubGVuZ3RoO1MrKylBLnB1c2goKHhbU10reFtTLTFdKS8yKTtBLnB1c2goWzIqeFt4Lmxlbmd0aC0xXS14W3gubGVuZ3RoLTJdXSl9Zj1NYXRoLm1heCgwLE1hdGgubWluKE0ubGVuZ3RoLTIsYS5maW5kQmluKGUsTSkpKSxwPU1hdGgubWF4KDAsTWF0aC5taW4oQS5sZW5ndGgtMixhLmZpbmRCaW4ocixBKSkpfXZhciBFPXYuYzJwKHlbZl0pLEw9di5jMnAoeVtmKzFdKSxDPW0uYzJwKHhbcF0pLFA9bS5jMnAoeFtwKzFdKTtjPyhMPUUsdT15W2ZdLFA9QyxoPXhbcF0pOih1PV8/X1tmXTooeVtmXSt5W2YrMV0pLzIsaD13P3dbcF06KHhbcF0reFtwKzFdKS8yLHYmJiJjYXRlZ29yeSI9PT12LnR5cGUmJih1PXlbZl0pLG0mJiJjYXRlZ29yeSI9PT1tLnR5cGUmJihoPXhbcF0pLGcuenNtb290aCYmKEU9TD12LmMycCh1KSxDPVA9bS5jMnAoaCkpKTt2YXIgTz1iW3BdW2ZdO2lmKGsmJiFrW3BdW2ZdJiYoTz12b2lkIDApLHZvaWQgMCE9PU98fGcuaG92ZXJvbmdhcHMpe3ZhciB6O0FycmF5LmlzQXJyYXkoZC5ob3ZlcnRleHQpJiZBcnJheS5pc0FycmF5KGQuaG92ZXJ0ZXh0W3BdKT96PWQuaG92ZXJ0ZXh0W3BdW2ZdOkFycmF5LmlzQXJyYXkoZC50ZXh0KSYmQXJyYXkuaXNBcnJheShkLnRleHRbcF0pJiYoej1kLnRleHRbcF1bZl0pO3ZhciBJPW8oZyksRD17dHlwZToibGluZWFyIixyYW5nZTpbSS5taW4sSS5tYXhdLGhvdmVyZm9ybWF0OlQsX3NlcGFyYXRvcnM6di5fc2VwYXJhdG9ycyxfbnVtRm9ybWF0OnYuX251bUZvcm1hdH0sUj1pLnRpY2tUZXh0KEQsTywiaG92ZXIiKS50ZXh0O3JldHVyblthLmV4dGVuZEZsYXQodCx7aW5kZXg6Zy5fYWZ0ZXIyYmVmb3JlP2cuX2FmdGVyMmJlZm9yZVtwXVtmXTpbcCxmXSxkaXN0YW5jZTp0Lm1heEhvdmVyRGlzdGFuY2Usc3Bpa2VEaXN0YW5jZTp0Lm1heFNwaWtlRGlzdGFuY2UseDA6RSx4MTpMLHkwOkMseTE6UCx4TGFiZWxWYWw6dSx5TGFiZWxWYWw6aCx6TGFiZWxWYWw6Tyx6TGFiZWw6Uix0ZXh0Onp9KV19fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDEwMDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksY29sb3JiYXI6dCgiLi9jb2xvcmJhciIpLHN0eWxlOnQoIi4vc3R5bGUiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImhlYXRtYXAiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCIyZE1hcCIsInNob3dMZWdlbmQiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi9hdHRyaWJ1dGVzIjoxZTMsIi4vY2FsYyI6MTAwMSwiLi9jb2xvcmJhciI6MTAwMywiLi9kZWZhdWx0cyI6MTAwNSwiLi9ob3ZlciI6MTAwNywiLi9wbG90IjoxMDExLCIuL3N0eWxlIjoxMDEyfV0sMTAwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPVtbLTEsMF0sWzEsMF0sWzAsLTFdLFswLDFdXTtmdW5jdGlvbiBpKHQpe3JldHVybi41LS4yNSpNYXRoLm1pbigxLC41KnQpfWZ1bmN0aW9uIG8odCxlLHIpe3ZhciBuLGksbyxzLGwsYyx1LGgsZixwLGQsZyx2LG09MDtmb3Iocz0wO3M8ZS5sZW5ndGg7cysrKXtmb3IoaT0obj1lW3NdKVswXSxvPW5bMV0sZD10W2ldW29dLHA9MCxmPTAsbD0wO2w8NDtsKyspKHU9dFtpKyhjPWFbbF0pWzBdXSkmJnZvaWQgMCE9PShoPXVbbytjWzFdXSkmJigwPT09cD9nPXY9aDooZz1NYXRoLm1pbihnLGgpLHY9TWF0aC5tYXgodixoKSksZisrLHArPWgpO2lmKDA9PT1mKXRocm93Iml0ZXJhdGVJbnRlcnAyZCBvcmRlciBpcyB3cm9uZzogbm8gZGVmaW5lZCBuZWlnaGJvcnMiO3RbaV1bb109cC9mLHZvaWQgMD09PWQ/Zjw0JiYobT0xKToodFtpXVtvXT0oMStyKSp0W2ldW29dLXIqZCx2PmcmJihtPU1hdGgubWF4KG0sTWF0aC5hYnModFtpXVtvXS1kKS8odi1nKSkpKX1yZXR1cm4gbX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixhPTE7Zm9yKG8odCxlKSxyPTA7cjxlLmxlbmd0aCYmIShlW3JdWzJdPDQpO3IrKyk7Zm9yKGU9ZS5zbGljZShyKSxyPTA7cjwxMDAmJmE+LjAxO3IrKylhPW8odCxlLGkoYSkpO3JldHVybiBhPi4wMSYmbi5sb2coImludGVycDJkIGRpZG4ndCBjb252ZXJnZSBxdWlja2x5IixhKSx0fX0seyIuLi8uLi9saWIiOjcxN31dLDEwMTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksbyxzKXt2YXIgbCxjLHUsaD1bXSxmPW4udHJhY2VJcyh0LCJjb250b3VyIikscD1uLnRyYWNlSXModCwiaGlzdG9ncmFtIiksZD1uLnRyYWNlSXModCwiZ2wyZCIpO2lmKGEoZSkmJmUubGVuZ3RoPjEmJiFwJiYiY2F0ZWdvcnkiIT09cy50eXBlKXt2YXIgZz1lLmxlbmd0aDtpZighKGc8PW8pKXJldHVybiBmP2Uuc2xpY2UoMCxvKTplLnNsaWNlKDAsbysxKTtpZihmfHxkKWg9ZS5zbGljZSgwLG8pO2Vsc2UgaWYoMT09PW8paD1bZVswXS0uNSxlWzBdKy41XTtlbHNle2ZvcihoPVsxLjUqZVswXS0uNSplWzFdXSx1PTE7dTxnO3UrKyloLnB1c2goLjUqKGVbdS0xXStlW3VdKSk7aC5wdXNoKDEuNSplW2ctMV0tLjUqZVtnLTJdKX1pZihnPG8pe3ZhciB2PWhbaC5sZW5ndGgtMV0sbT12LWhbaC5sZW5ndGgtMl07Zm9yKHU9Zzt1PG87dSsrKXYrPW0saC5wdXNoKHYpfX1lbHNle3ZhciB5PXRbcy5faWQuY2hhckF0KDApKyJjYWxlbmRhciJdO2lmKHApbD1zLnIyYyhyLDAseSk7ZWxzZSBpZihhKGUpJiYxPT09ZS5sZW5ndGgpbD1lWzBdO2Vsc2UgaWYodm9pZCAwPT09cilsPTA7ZWxzZXtsPSgibG9nIj09PXMudHlwZT9zLmQyYzpzLnIyYykociwwLHkpfWZvcihjPWl8fDEsdT1mfHxkPzA6LS41O3U8bzt1KyspaC5wdXNoKGwrYyp1KX1yZXR1cm4gaH19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDZ9XSwxMDExOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJ0aW55Y29sb3IyIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKS5tYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2UsbD10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpO2Z1bmN0aW9uIGModCxlKXt2YXIgcj1lLmxlbmd0aC0yLG49by5jb25zdHJhaW4oby5maW5kQmluKHQsZSksMCxyKSxhPWVbbl0saT1lW24rMV0scz1vLmNvbnN0cmFpbihuKyh0LWEpLyhpLWEpLS41LDAsciksbD1NYXRoLnJvdW5kKHMpLGM9TWF0aC5hYnMocy1sKTtyZXR1cm4gcyYmcyE9PXImJmM/e2JpbjA6bCxmcmFjOmMsYmluMTpNYXRoLnJvdW5kKGwrYy8ocy1sKSl9OntiaW4wOmwsYmluMTpsLGZyYWM6MH19ZnVuY3Rpb24gdSh0LGUpe3ZhciByPWUubGVuZ3RoLTEsbj1vLmNvbnN0cmFpbihvLmZpbmRCaW4odCxlKSwwLHIpLGE9ZVtuXSxpPSh0LWEpLyhlW24rMV0tYSl8fDA7cmV0dXJuIGk8PTA/e2JpbjA6bixiaW4xOm4sZnJhYzowfTppPC41P3tiaW4wOm4sYmluMTpuKzEsZnJhYzppfTp7YmluMDpuKzEsYmluMTpuLGZyYWM6MS1pfX1mdW5jdGlvbiBoKHQsZSxyKXt0W2VdPXJbMF0sdFtlKzFdPXJbMV0sdFtlKzJdPXJbMl0sdFtlKzNdPU1hdGgucm91bmQoMjU1KnJbM10pfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixmKXt2YXIgcD1lLnhheGlzLGQ9ZS55YXhpcztvLm1ha2VUcmFjZUdyb3VwcyhmLHIsImhtIikuZWFjaChmdW5jdGlvbihlKXt2YXIgcixmLGcsdixtLHkseD1uLnNlbGVjdCh0aGlzKSxiPWVbMF0sXz1iLnRyYWNlLHc9Yi56LGs9Yi54LFQ9Yi55LE09Yi54Q2VudGVyLEE9Yi55Q2VudGVyLFM9aS50cmFjZUlzKF8sImNvbnRvdXIiKSxFPVM/ImJlc3QiOl8uenNtb290aCxMPXcubGVuZ3RoLEM9by5tYXhSb3dMZW5ndGgodyksUD0hMSxPPSExO2Zvcih5PTA7dm9pZCAwPT09ciYmeTxrLmxlbmd0aC0xOylyPXAuYzJwKGtbeV0pLHkrKztmb3IoeT1rLmxlbmd0aC0xO3ZvaWQgMD09PWYmJnk+MDspZj1wLmMycChrW3ldKSx5LS07Zm9yKGY8ciYmKGc9ZixmPXIscj1nLFA9ITApLHk9MDt2b2lkIDA9PT12JiZ5PFQubGVuZ3RoLTE7KXY9ZC5jMnAoVFt5XSkseSsrO2Zvcih5PVQubGVuZ3RoLTE7dm9pZCAwPT09bSYmeT4wOyltPWQuYzJwKFRbeV0pLHktLTtpZihtPHYmJihnPXYsdj1tLG09ZyxPPSEwKSxTJiYoTT1rLEE9VCxrPWIueGZpbGwsVD1iLnlmaWxsKSwiZmFzdCIhPT1FKXt2YXIgej0iYmVzdCI9PT1FPzA6LjU7cj1NYXRoLm1heCgteipwLl9sZW5ndGgsciksZj1NYXRoLm1pbigoMSt6KSpwLl9sZW5ndGgsZiksdj1NYXRoLm1heCgteipkLl9sZW5ndGgsdiksbT1NYXRoLm1pbigoMSt6KSpkLl9sZW5ndGgsbSl9dmFyIEk9TWF0aC5yb3VuZChmLXIpLEQ9TWF0aC5yb3VuZChtLXYpO2lmKEk8PTB8fEQ8PTApe3guc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEoW10pLmV4aXQoKS5yZW1vdmUoKX1lbHNle3ZhciBSLEY7ImZhc3QiPT09RT8oUj1DLEY9TCk6KFI9SSxGPUQpO3ZhciBCPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO0Iud2lkdGg9UixCLmhlaWdodD1GO3ZhciBOLGosVj1CLmdldENvbnRleHQoIjJkIiksVT1zKF8se25vTnVtZXJpY0NoZWNrOiEwLHJldHVybkFycmF5OiEwfSk7ImZhc3QiPT09RT8oTj1QP2Z1bmN0aW9uKHQpe3JldHVybiBDLTEtdH06by5pZGVudGl0eSxqPU8/ZnVuY3Rpb24odCl7cmV0dXJuIEwtMS10fTpvLmlkZW50aXR5KTooTj1mdW5jdGlvbih0KXtyZXR1cm4gby5jb25zdHJhaW4oTWF0aC5yb3VuZChwLmMycChrW3RdKS1yKSwwLEkpfSxqPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNvbnN0cmFpbihNYXRoLnJvdW5kKGQuYzJwKFRbdF0pLXYpLDAsRCl9KTt2YXIgcSxILEcsWSxXLFg9aigwKSxaPVtYLFhdLEo9UD8wOjEsSz1PPzA6MSxRPTAsJD0wLHR0PTAsZXQ9MDtpZihFKXt2YXIgcnQsbnQ9MDt0cnl7cnQ9bmV3IFVpbnQ4QXJyYXkoSSpEKjQpfWNhdGNoKHQpe3J0PW5ldyBBcnJheShJKkQqNCl9aWYoImJlc3QiPT09RSl7dmFyIGF0LGl0LG90LHN0PU18fGssbHQ9QXx8VCxjdD1uZXcgQXJyYXkoc3QubGVuZ3RoKSx1dD1uZXcgQXJyYXkobHQubGVuZ3RoKSxodD1uZXcgQXJyYXkoSSksZnQ9TT91OmMscHQ9QT91OmM7Zm9yKHk9MDt5PHN0Lmxlbmd0aDt5KyspY3RbeV09TWF0aC5yb3VuZChwLmMycChzdFt5XSktcik7Zm9yKHk9MDt5PGx0Lmxlbmd0aDt5KyspdXRbeV09TWF0aC5yb3VuZChkLmMycChsdFt5XSktdik7Zm9yKHk9MDt5PEk7eSsrKWh0W3ldPWZ0KHksY3QpO2ZvcihIPTA7SDxEO0grKylmb3IoaXQ9d1soYXQ9cHQoSCx1dCkpLmJpbjBdLG90PXdbYXQuYmluMV0seT0wO3k8STt5KyssbnQrPTQpaChydCxudCxXPVR0KGl0LG90LGh0W3ldLGF0KSl9ZWxzZSBmb3IoSD0wO0g8TDtIKyspZm9yKFk9d1tIXSxaPWooSCkseT0wO3k8STt5KyspVz1rdChZW3ldLDEpLGgocnQsbnQ9NCooWipJK04oeSkpLFcpO3ZhciBkdD1WLmNyZWF0ZUltYWdlRGF0YShJLEQpO3RyeXtkdC5kYXRhLnNldChydCl9Y2F0Y2godCl7dmFyIGd0PWR0LmRhdGEsdnQ9Z3QubGVuZ3RoO2ZvcihIPTA7SDx2dDtIKyspZ3RbSF09cnRbSF19Vi5wdXRJbWFnZURhdGEoZHQsMCwwKX1lbHNle3ZhciBtdD1fLnhnYXAseXQ9Xy55Z2FwLHh0PU1hdGguZmxvb3IobXQvMiksYnQ9TWF0aC5mbG9vcih5dC8yKTtmb3IoSD0wO0g8TDtIKyspaWYoWT13W0hdLFoucmV2ZXJzZSgpLFpbS109aihIKzEpLFpbMF0hPT1aWzFdJiZ2b2lkIDAhPT1aWzBdJiZ2b2lkIDAhPT1aWzFdKWZvcihxPVtHPU4oMCksR10seT0wO3k8Qzt5KyspcS5yZXZlcnNlKCkscVtKXT1OKHkrMSkscVswXSE9PXFbMV0mJnZvaWQgMCE9PXFbMF0mJnZvaWQgMCE9PXFbMV0mJihXPWt0KFlbeV0sKHFbMV0tcVswXSkqKFpbMV0tWlswXSkpLFYuZmlsbFN0eWxlPSJyZ2JhKCIrVy5qb2luKCIsIikrIikiLFYuZmlsbFJlY3QocVswXSt4dCxaWzBdK2J0LHFbMV0tcVswXS1tdCxaWzFdLVpbMF0teXQpKX0kPU1hdGgucm91bmQoJC9RKSx0dD1NYXRoLnJvdW5kKHR0L1EpLGV0PU1hdGgucm91bmQoZXQvUSk7dmFyIF90PWEoInJnYigiKyQrIiwiK3R0KyIsIitldCsiKSIpO3QuX2htcGl4Y291bnQ9KHQuX2htcGl4Y291bnR8fDApK1EsdC5faG1sdW1jb3VudD0odC5faG1sdW1jb3VudHx8MCkrUSpfdC5nZXRMdW1pbmFuY2UoKTt2YXIgd3Q9eC5zZWxlY3RBbGwoImltYWdlIikuZGF0YShlKTt3dC5lbnRlcigpLmFwcGVuZCgic3ZnOmltYWdlIikuYXR0cih7eG1sbnM6bC5zdmcscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KSx3dC5hdHRyKHtoZWlnaHQ6RCx3aWR0aDpJLHg6cix5OnYsInhsaW5rOmhyZWYiOkIudG9EYXRhVVJMKCJpbWFnZS9wbmciKX0pfWZ1bmN0aW9uIGt0KHQsZSl7aWYodm9pZCAwIT09dCl7dmFyIHI9VSh0KTtyZXR1cm4gclswXT1NYXRoLnJvdW5kKHJbMF0pLHJbMV09TWF0aC5yb3VuZChyWzFdKSxyWzJdPU1hdGgucm91bmQoclsyXSksUSs9ZSwkKz1yWzBdKmUsdHQrPXJbMV0qZSxldCs9clsyXSplLHJ9cmV0dXJuWzAsMCwwLDBdfWZ1bmN0aW9uIFR0KHQsZSxyLG4pe3ZhciBhPXRbci5iaW4wXTtpZih2b2lkIDA9PT1hKXJldHVybiBrdCh2b2lkIDAsMSk7dmFyIGksbz10W3IuYmluMV0scz1lW3IuYmluMF0sbD1lW3IuYmluMV0sYz1vLWF8fDAsdT1zLWF8fDA7cmV0dXJuIGk9dm9pZCAwPT09bz92b2lkIDA9PT1sPzA6dm9pZCAwPT09cz8yKihsLWEpOjIqKDIqbC1zLWEpLzM6dm9pZCAwPT09bD92b2lkIDA9PT1zPzA6MiooMiphLW8tcykvMzp2b2lkIDA9PT1zPzIqKDIqbC1vLWEpLzM6bCthLW8tcyxrdChhK3IuZnJhYypjK24uZnJhYyoodStyLmZyYWMqaSkpfX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjY5NCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsZDM6MTY1LHRpbnljb2xvcjI6NTM2fV0sMTAxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtuLnNlbGVjdCh0KS5zZWxlY3RBbGwoIi5obSBpbWFnZSIpLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdC50cmFjZS5vcGFjaXR5fSl9fSx7ZDM6MTY1fV0sMTAxMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpeyExPT09cigienNtb290aCIpJiYocigieGdhcCIpLHIoInlnYXAiKSkscigiemhvdmVyZm9ybWF0Iil9fSx7fV0sMTAxNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpO2Z1bmN0aW9uIG8odCxlKXt2YXIgcj1lKHQpO3JldHVybiJzY2FsZWQiPT09KHI/ZSh0KyJ0eXBlIiwiYXJyYXkiKToic2NhbGVkIikmJihlKHQrIjAiKSxlKCJkIit0KSkscn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscyxsLGMpe3ZhciB1LGgsZj1yKCJ6Iik7aWYobD1sfHwieCIsYz1jfHwieSIsdm9pZCAwPT09Znx8IWYubGVuZ3RoKXJldHVybiAwO2lmKGEuaXNBcnJheTFEKHQueikpe3U9cihsKSxoPXIoYyk7dmFyIHA9YS5taW5Sb3dMZW5ndGgodSksZD1hLm1pblJvd0xlbmd0aChoKTtpZigwPT09cHx8MD09PWQpcmV0dXJuIDA7ZS5fbGVuZ3RoPU1hdGgubWluKHAsZCxmLmxlbmd0aCl9ZWxzZXtpZih1PW8obCxyKSxoPW8oYyxyKSwhZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9ITAsaT0hMSxvPSExLHM9MDtzPHQubGVuZ3RoO3MrKyl7aWYoZT10W3NdLCFhLmlzQXJyYXlPclR5cGVkQXJyYXkoZSkpe3I9ITE7YnJlYWt9ZS5sZW5ndGg+MCYmKGk9ITApO2Zvcih2YXIgbD0wO2w8ZS5sZW5ndGg7bCsrKWlmKG4oZVtsXSkpe289ITA7YnJlYWt9fXJldHVybiByJiZpJiZvfShmKSlyZXR1cm4gMDtyKCJ0cmFuc3Bvc2UiKSxlLl9sZW5ndGg9bnVsbH1yZXR1cm4gaS5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsW2wsY10scyksITB9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sMTAxNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtmb3IodmFyIG49dCgiLi4vaGVhdG1hcC9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsbz10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwscz1bInoiLCJ4IiwieDAiLCJkeCIsInkiLCJ5MCIsImR5IiwidGV4dCIsInRyYW5zcG9zZSIsInh0eXBlIiwieXR5cGUiXSxsPXt9LGM9MDtjPHMubGVuZ3RoO2MrKyl7dmFyIHU9c1tjXTtsW3VdPW5bdV19aShsLGEoIiIse2NMZXR0ZXI6InoiLGF1dG9Db2xvckRmbHQ6ITF9KSksZS5leHBvcnRzPW8obCwiY2FsYyIsIm5lc3RlZCIpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiOjFlM31dLDEwMTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtaGVhdG1hcDJkIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpO2Z1bmN0aW9uIG8odCxlKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9ZSx0aGlzLnR5cGU9ImhlYXRtYXBnbCIsdGhpcy5uYW1lPSIiLHRoaXMuaG92ZXJpbmZvPSJhbGwiLHRoaXMueERhdGE9W10sdGhpcy55RGF0YT1bXSx0aGlzLnpEYXRhPVtdLHRoaXMudGV4dExhYmVscz1bXSx0aGlzLmlkVG9JbmRleD1bXSx0aGlzLmJvdW5kcz1bMCwwLDAsMF0sdGhpcy5vcHRpb25zPXt6OltdLHg6W10seTpbXSxzaGFwZTpbMCwwXSxjb2xvckxldmVsczpbMF0sY29sb3JWYWx1ZXM6WzAsMCwwLDFdfSx0aGlzLmhlYXRtYXA9bih0LmdscGxvdCx0aGlzLm9wdGlvbnMpLHRoaXMuaGVhdG1hcC5fdHJhY2U9dGhpc312YXIgcz1vLnByb3RvdHlwZTtzLmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLHI9ZS5zaGFwZSxuPXQucG9pbnRJZCxhPW4lclswXSxpPU1hdGguZmxvb3Iobi9yWzBdKSxvPW47cmV0dXJue3RyYWNlOnRoaXMsZGF0YUNvb3JkOnQuZGF0YUNvb3JkLHRyYWNlQ29vcmQ6W2UueFthXSxlLnlbaV0sZS56W29dXSx0ZXh0TGFiZWw6dGhpcy50ZXh0TGFiZWxzW25dLG5hbWU6dGhpcy5uYW1lLHBvaW50SW5kZXg6W2ksYV0saG92ZXJpbmZvOnRoaXMuaG92ZXJpbmZvfX0scy51cGRhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3RoaXMuaW5kZXg9dC5pbmRleCx0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaG92ZXJpbmZvPXQuaG92ZXJpbmZvO3ZhciBuPXIuejt0aGlzLm9wdGlvbnMuej1bXS5jb25jYXQuYXBwbHkoW10sbik7dmFyIG89blswXS5sZW5ndGgscz1uLmxlbmd0aDt0aGlzLm9wdGlvbnMuc2hhcGU9W28sc10sdGhpcy5vcHRpb25zLng9ci54LHRoaXMub3B0aW9ucy55PXIueTt2YXIgbD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jb2xvcnNjYWxlLHI9dC56bWluLG49dC56bWF4LGE9ZS5sZW5ndGgsbz1uZXcgQXJyYXkoYSkscz1uZXcgQXJyYXkoNCphKSxsPTA7bDxhO2wrKyl7dmFyIGM9ZVtsXSx1PWkoY1sxXSk7b1tsXT1yK2NbMF0qKG4tcik7Zm9yKHZhciBoPTA7aDw0O2grKylzWzQqbCtoXT11W2hdfXJldHVybntjb2xvckxldmVsczpvLGNvbG9yVmFsdWVzOnN9fSh0KTt0aGlzLm9wdGlvbnMuY29sb3JMZXZlbHM9bC5jb2xvckxldmVscyx0aGlzLm9wdGlvbnMuY29sb3JWYWx1ZXM9bC5jb2xvclZhbHVlcyx0aGlzLnRleHRMYWJlbHM9W10uY29uY2F0LmFwcGx5KFtdLHQudGV4dCksdGhpcy5oZWF0bWFwLnVwZGF0ZSh0aGlzLm9wdGlvbnMpO3ZhciBjPXRoaXMuc2NlbmUueGF4aXMsdT10aGlzLnNjZW5lLnlheGlzO3QuX2V4dHJlbWVzW2MuX2lkXT1hLmZpbmRFeHRyZW1lcyhjLHIueCksdC5fZXh0cmVtZXNbdS5faWRdPWEuZmluZEV4dHJlbWVzKHUsci55KX0scy5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5oZWF0bWFwLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1uZXcgbyh0LGUudWlkKTtyZXR1cm4gbi51cGRhdGUoZSxyKSxufX0seyIuLi8uLi9saWIvc3RyMnJnYmFycmF5Ijo3NDAsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsImdsLWhlYXRtYXAyZCI6MjU0fV0sMTAxNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi4vaGVhdG1hcC9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL2hlYXRtYXAvY29sb3JiYXIiKSxjYWxjOnQoIi4uL2hlYXRtYXAvY2FsYyIpLHBsb3Q6dCgiLi9jb252ZXJ0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImhlYXRtYXBnbCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wyZCIpLGNhdGVnb3JpZXM6WyJnbCIsImdsMmQiLCIyZE1hcCJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dsMmQiOjgwMywiLi4vaGVhdG1hcC9jYWxjIjoxMDAxLCIuLi9oZWF0bWFwL2NvbG9yYmFyIjoxMDAzLCIuLi9oZWF0bWFwL2RlZmF1bHRzIjoxMDA1LCIuL2F0dHJpYnV0ZXMiOjEwMTUsIi4vY29udmVydCI6MTAxNn1dLDEwMTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYmFyL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuL2Jpbl9hdHRyaWJ1dGVzIiksbz10KCIuL2NvbnN0YW50cyIpLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXt4Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sdGV4dDpzKHt9LG4udGV4dCx7fSksaG92ZXJ0ZXh0OnMoe30sbi5ob3ZlcnRleHQse30pLG9yaWVudGF0aW9uOm4ub3JpZW50YXRpb24saGlzdGZ1bmM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNvdW50Iiwic3VtIiwiYXZnIiwibWluIiwibWF4Il0sZGZsdDoiY291bnQiLGVkaXRUeXBlOiJjYWxjIn0saGlzdG5vcm06e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIiIsInBlcmNlbnQiLCJwcm9iYWJpbGl0eSIsImRlbnNpdHkiLCJwcm9iYWJpbGl0eSBkZW5zaXR5Il0sZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LGN1bXVsYXRpdmU6e2VuYWJsZWQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxkaXJlY3Rpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImluY3JlYXNpbmciLCJkZWNyZWFzaW5nIl0sZGZsdDoiaW5jcmVhc2luZyIsZWRpdFR5cGU6ImNhbGMifSxjdXJyZW50YmluOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJpbmNsdWRlIiwiZXhjbHVkZSIsImhhbGYiXSxkZmx0OiJpbmNsdWRlIixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sbmJpbnN4Ont2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSx4YmluczppKCJ4IiwhMCksbmJpbnN5Ont2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSx5YmluczppKCJ5IiwhMCksYXV0b2Jpbng6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6bnVsbCxlZGl0VHlwZToiY2FsYyJ9LGF1dG9iaW55Ont2YWxUeXBlOiJib29sZWFuIixkZmx0Om51bGwsZWRpdFR5cGU6ImNhbGMifSxiaW5ncm91cDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJ0ZW1wbGF0ZTphKHt9LHtrZXlzOm8uZXZlbnREYXRhS2V5c30pLG1hcmtlcjpuLm1hcmtlcixvZmZzZXRncm91cDpuLm9mZnNldGdyb3VwLGFsaWdubWVudGdyb3VwOm4uYWxpZ25tZW50Z3JvdXAsc2VsZWN0ZWQ6bi5zZWxlY3RlZCx1bnNlbGVjdGVkOm4udW5zZWxlY3RlZCxfZGVwcmVjYXRlZDp7YmFyZGlyOm4uX2RlcHJlY2F0ZWQuYmFyZGlyfX19LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL2Jhci9hdHRyaWJ1dGVzIjo4NTYsIi4vYmluX2F0dHJpYnV0ZXMiOjEwMjAsIi4vY29uc3RhbnRzIjoxMDI0fV0sMTAxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj0wLGE9MDthPHI7YSsrKWVbYV0/KHRbYV0vPWVbYV0sbis9dFthXSk6dFthXT1udWxsO3JldHVybiBufX0se31dLDEwMjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3N0YXJ0Ont2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0sZW5kOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0sc2l6ZTp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn19fSx7fV0sMTAyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpO2UuZXhwb3J0cz17Y291bnQ6ZnVuY3Rpb24odCxlLHIpe3JldHVybiByW3RdKyssMX0sc3VtOmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPWFbZV07cmV0dXJuIG4oaSk/KGk9TnVtYmVyKGkpLHJbdF0rPWksaSk6MH0sYXZnOmZ1bmN0aW9uKHQsZSxyLGEsaSl7dmFyIG89YVtlXTtyZXR1cm4gbihvKSYmKG89TnVtYmVyKG8pLHJbdF0rPW8saVt0XSsrKSwwfSxtaW46ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGk9YVtlXTtpZihuKGkpKXtpZihpPU51bWJlcihpKSwhbihyW3RdKSlyZXR1cm4gclt0XT1pLGk7aWYoclt0XT5pKXt2YXIgbz1pLXJbdF07cmV0dXJuIHJbdF09aSxvfX1yZXR1cm4gMH0sbWF4OmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPWFbZV07aWYobihpKSl7aWYoaT1OdW1iZXIoaSksIW4oclt0XSkpcmV0dXJuIHJbdF09aSxpO2lmKHJbdF08aSl7dmFyIG89aS1yW3RdO3JldHVybiByW3RdPWksb319cmV0dXJuIDB9fX0seyJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sMTAyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIiksYT1uLk9ORUFWR1lFQVIsaT1uLk9ORUFWR01PTlRILG89bi5PTkVEQVkscz1uLk9ORUhPVVIsbD1uLk9ORU1JTixjPW4uT05FU0VDLHU9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKS50aWNrSW5jcmVtZW50O2Z1bmN0aW9uIGgodCxlLHIsbil7aWYodCplPD0wKXJldHVybiAxLzA7Zm9yKHZhciBhPU1hdGguYWJzKGUtdCksaT0iZGF0ZSI9PT1yLnR5cGUsbz1mKGEsaSkscz0wO3M8MTA7cysrKXt2YXIgbD1mKDgwKm8saSk7aWYobz09PWwpYnJlYWs7aWYoIXAobCx0LGUsaSxyLG4pKWJyZWFrO289bH1yZXR1cm4gb31mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGUmJnQ+Yz90Pm8/dD4xLjEqYT9hOnQ+MS4xKmk/aTpvOnQ+cz9zOnQ+bD9sOmM6TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMTApKX1mdW5jdGlvbiBwKHQsZSxyLG4saSxzKXtpZihuJiZ0Pm8pe3ZhciBsPWQoZSxpLHMpLGM9ZChyLGkscyksdT10PT09YT8wOjE7cmV0dXJuIGxbdV0hPT1jW3VdfXJldHVybiBNYXRoLmZsb29yKHIvdCktTWF0aC5mbG9vcihlL3QpPi4xfWZ1bmN0aW9uIGQodCxlLHIpe3ZhciBuPWUuYzJkKHQsYSxyKS5zcGxpdCgiLSIpO3JldHVybiIiPT09blswXSYmKG4udW5zaGlmdCgpLG5bMF09Ii0iK25bMF0pLG59ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIHMsbCxjPS0xLjEqZSxmPS0uMSplLHA9dC1mLGQ9clswXSxnPXJbMV0sdj1NYXRoLm1pbihoKGQrZixkK3AsbixpKSxoKGcrZixnK3AsbixpKSksbT1NYXRoLm1pbihoKGQrYyxkK2YsbixpKSxoKGcrYyxnK2YsbixpKSk7aWYodj5tJiZtPE1hdGguYWJzKGctZCkvNGUzPyhzPXYsbD0hMSk6KHM9TWF0aC5taW4odixtKSxsPSEwKSwiZGF0ZSI9PT1uLnR5cGUmJnM+byl7dmFyIHk9cz09PWE/MTo2LHg9cz09PWE/Ik0xMiI6Ik0xIjtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgbz1uLmMyZChlLGEsaSkscz1vLmluZGV4T2YoIi0iLHkpO3M+MCYmKG89by5zdWJzdHIoMCxzKSk7dmFyIGM9bi5kMmMobywwLGkpO2lmKGM8ZSl7dmFyIGg9dShjLHgsITEsaSk7KGMraCkvMjxlK3QmJihjPWgpfXJldHVybiByJiZsP3UoYyx4LCEwLGkpOmN9fXJldHVybiBmdW5jdGlvbihlLHIpe3ZhciBuPXMqTWF0aC5yb3VuZChlL3MpO3JldHVybiBuK3MvMTA8ZSYmbisuOSpzPGUrdCYmKG4rPXMpLHImJmwmJihuLT1zKSxufX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1fV0sMTAyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxzPXQoIi4uL2Jhci9hcnJheXNfdG9fY2FsY2RhdGEiKSxsPXQoIi4vYmluX2Z1bmN0aW9ucyIpLGM9dCgiLi9ub3JtX2Z1bmN0aW9ucyIpLHU9dCgiLi9hdmVyYWdlIiksaD10KCIuL2Jpbl9sYWJlbF92YWxzIik7ZnVuY3Rpb24gZih0LGUscixzLGwpe3ZhciBjLHUsaCxwLGQsZyx2LG09cysiYmlucyIseT10Ll9mdWxsTGF5b3V0LHg9ZVsiXyIrcysiYmluZ3JvdXAiXSxiPXkuX2hpc3RvZ3JhbUJpbk9wdHNbeF0sXz0ib3ZlcmxheSI9PT15LmJhcm1vZGUsdz1mdW5jdGlvbih0KXtyZXR1cm4gci5yMmModCwwLHApfSxrPWZ1bmN0aW9uKHQpe3JldHVybiByLmMycih0LDAscCl9LFQ9ImRhdGUiPT09ci50eXBlP2Z1bmN0aW9uKHQpe3JldHVybiB0fHwwPT09dD9hLmNsZWFuRGF0ZSh0LG51bGwscCk6bnVsbH06ZnVuY3Rpb24odCl7cmV0dXJuIG4odCk/TnVtYmVyKHQpOm51bGx9O2Z1bmN0aW9uIE0odCxlLHIpe2VbdCsiRm91bmQiXT8oZVt0XT1UKGVbdF0pLG51bGw9PT1lW3RdJiYoZVt0XT1yW3RdKSk6KGdbdF09ZVt0XT1yW3RdLGEubmVzdGVkUHJvcGVydHkodVswXSxtKyIuIit0KS5zZXQoclt0XSkpfWlmKGVbIl8iK3MrImF1dG9CaW5GaW5pc2hlZCJdKWRlbGV0ZSBlWyJfIitzKyJhdXRvQmluRmluaXNoZWQiXTtlbHNle3U9Yi50cmFjZXM7dmFyIEE9W10sUz0hMCxFPSExLEw9ITE7Zm9yKGM9MDtjPHUubGVuZ3RoO2MrKylpZigoaD11W2NdKS52aXNpYmxlKXt2YXIgQz1iLmRpcnNbY107ZD1oWyJfIitDKyJwb3MwIl09ci5tYWtlQ2FsY2RhdGEoaCxDKSxBPWEuY29uY2F0KEEsZCksZGVsZXRlIGhbIl8iK3MrImF1dG9CaW5GaW5pc2hlZCJdLCEwPT09ZS52aXNpYmxlJiYoUz9TPSExOihkZWxldGUgaC5fYXV0b0JpbixoWyJfIitzKyJhdXRvQmluRmluaXNoZWQiXT0xKSxpLnRyYWNlSXMoaCwiMmRNYXAiKSYmKEU9ITApLCJoaXN0b2dyYW0yZGNvbnRvdXIiPT09aC50eXBlJiYoTD0hMCkpfXA9dVswXVtzKyJjYWxlbmRhciJdO3ZhciBQPW8uYXV0b0JpbihBLHIsYi5uYmlucyxFLHAsYi5zaXplRm91bmQmJmIuc2l6ZSksTz11WzBdLl9hdXRvQmluPXt9O2lmKGc9T1tiLmRpcnNbMF1dPXt9LEwmJihiLnNpemV8fChQLnN0YXJ0PWsoby50aWNrSW5jcmVtZW50KHcoUC5zdGFydCksUC5zaXplLCEwLHApKSksdm9pZCAwPT09Yi5lbmQmJihQLmVuZD1rKG8udGlja0luY3JlbWVudCh3KFAuZW5kKSxQLnNpemUsITEscCkpKSksXyYmIWkudHJhY2VJcyhlLCIyZE1hcCIpJiYwPT09UC5fZGF0YVNwYW4mJiJjYXRlZ29yeSIhPT1yLnR5cGUmJiJtdWx0aWNhdGVnb3J5IiE9PXIudHlwZSl7aWYobClyZXR1cm5bUCxkLCEwXTtQPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG8scyxsLGM9dC5fZnVsbExheW91dCx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUueGF4aXMsbj1lLnlheGlzLGE9ZS5vcmllbnRhdGlvbixpPVtdLG89dC5fZnVsbERhdGEscz0wO3M8by5sZW5ndGg7cysrKXt2YXIgbD1vW3NdOyJoaXN0b2dyYW0iPT09bC50eXBlJiYhMD09PWwudmlzaWJsZSYmbC5vcmllbnRhdGlvbj09PWEmJmwueGF4aXM9PT1yJiZsLnlheGlzPT09biYmaS5wdXNoKGwpfXJldHVybiBpfSh0LGUpLGg9ITEscD0xLzAsZD1bZV07Zm9yKG89MDtvPHUubGVuZ3RoO28rKylpZigocz11W29dKT09PWUpaD0hMDtlbHNlIGlmKGgpe3ZhciBnPWYodCxzLHIsbiwhMCksdj1nWzBdLG09Z1syXTtzWyJfIituKyJhdXRvQmluRmluaXNoZWQiXT0xLHNbIl8iK24rInBvczAiXT1nWzFdLG0/ZC5wdXNoKHMpOnA9TWF0aC5taW4ocCx2LnNpemUpfWVsc2UgbD1jLl9oaXN0b2dyYW1CaW5PcHRzW3NbIl8iK24rImJpbmdyb3VwIl1dLHA9TWF0aC5taW4ocCxsLnNpemV8fHNbaV0uc2l6ZSk7dmFyIHk9bmV3IEFycmF5KGQubGVuZ3RoKTtmb3Iobz0wO288ZC5sZW5ndGg7bysrKWZvcih2YXIgeD1kW29dWyJfIituKyJwb3MwIl0sYj0wO2I8eC5sZW5ndGg7YisrKWlmKHZvaWQgMCE9PXhbYl0pe3lbb109eFtiXTticmVha31pc0Zpbml0ZShwKXx8KHA9YS5kaXN0aW5jdFZhbHMoeSkubWluRGlmZik7Zm9yKG89MDtvPGQubGVuZ3RoO28rKyl7dmFyIF89KHM9ZFtvXSlbbisiY2FsZW5kYXIiXSx3PXtzdGFydDpyLmMycih5W29dLXAvMiwwLF8pLGVuZDpyLmMycih5W29dK3AvMiwwLF8pLHNpemU6cH07cy5faW5wdXRbaV09c1tpXT13LChsPWMuX2hpc3RvZ3JhbUJpbk9wdHNbc1siXyIrbisiYmluZ3JvdXAiXV0pJiZhLmV4dGVuZEZsYXQobCx3KX1yZXR1cm4gZVtpXX0odCxlLHIscyxtKX0odj1oLmN1bXVsYXRpdmV8fHt9KS5lbmFibGVkJiYiaW5jbHVkZSIhPT12LmN1cnJlbnRiaW4mJigiZGVjcmVhc2luZyI9PT12LmRpcmVjdGlvbj9QLnN0YXJ0PWsoby50aWNrSW5jcmVtZW50KHcoUC5zdGFydCksUC5zaXplLCEwLHApKTpQLmVuZD1rKG8udGlja0luY3JlbWVudCh3KFAuZW5kKSxQLnNpemUsITEscCkpKSxiLnNpemU9UC5zaXplLGIuc2l6ZUZvdW5kfHwoZy5zaXplPVAuc2l6ZSxhLm5lc3RlZFByb3BlcnR5KHVbMF0sbSsiLnNpemUiKS5zZXQoUC5zaXplKSksTSgic3RhcnQiLGIsUCksTSgiZW5kIixiLFApfWQ9ZVsiXyIrcysicG9zMCJdLGRlbGV0ZSBlWyJfIitzKyJwb3MwIl07dmFyIHo9ZS5faW5wdXRbbV18fHt9LEk9YS5leHRlbmRGbGF0KHt9LGIpLEQ9Yi5zdGFydCxSPXIucjJsKHouc3RhcnQpLEY9dm9pZCAwIT09UjtpZigoYi5zdGFydEZvdW5kfHxGKSYmUiE9PXIucjJsKEQpKXt2YXIgQj1GP1I6YS5hZ2dOdW1zKE1hdGgubWluLG51bGwsZCksTj17dHlwZToiY2F0ZWdvcnkiPT09ci50eXBlfHwibXVsdGljYXRlZ29yeSI9PT1yLnR5cGU/ImxpbmVhciI6ci50eXBlLHIybDpyLnIybCxkdGljazpiLnNpemUsdGljazA6RCxjYWxlbmRhcjpwLHJhbmdlOltCLG8udGlja0luY3JlbWVudChCLGIuc2l6ZSwhMSxwKV0ubWFwKHIubDJyKX0saj1vLnRpY2tGaXJzdChOKTtqPnIucjJsKEIpJiYoaj1vLnRpY2tJbmNyZW1lbnQoaixiLnNpemUsITAscCkpLEkuc3RhcnQ9ci5sMnIoaiksRnx8YS5uZXN0ZWRQcm9wZXJ0eShlLG0rIi5zdGFydCIpLnNldChJLnN0YXJ0KX12YXIgVj1iLmVuZCxVPXIucjJsKHouZW5kKSxxPXZvaWQgMCE9PVU7aWYoKGIuZW5kRm91bmR8fHEpJiZVIT09ci5yMmwoVikpe3ZhciBIPXE/VTphLmFnZ051bXMoTWF0aC5tYXgsbnVsbCxkKTtJLmVuZD1yLmwycihIKSxxfHxhLm5lc3RlZFByb3BlcnR5KGUsbSsiLnN0YXJ0Iikuc2V0KEkuZW5kKX12YXIgRz0iYXV0b2JpbiIrcztyZXR1cm4hMT09PWUuX2lucHV0W0ddJiYoZS5faW5wdXRbbV09YS5leHRlbmRGbGF0KHt9LGVbbV18fHt9KSxkZWxldGUgZS5faW5wdXRbR10sZGVsZXRlIGVbR10pLFtJLGRdfWUuZXhwb3J0cz17Y2FsYzpmdW5jdGlvbih0LGUpe3ZhciByLGkscCxkLGc9W10sdj1bXSxtPW8uZ2V0RnJvbUlkKHQsImgiPT09ZS5vcmllbnRhdGlvbj9lLnlheGlzOmUueGF4aXMpLHk9ImgiPT09ZS5vcmllbnRhdGlvbj8ieSI6IngiLHg9e3g6InkiLHk6IngifVt5XSxiPWVbeSsiY2FsZW5kYXIiXSxfPWUuY3VtdWxhdGl2ZSx3PWYodCxlLG0seSksaz13WzBdLFQ9d1sxXSxNPSJzdHJpbmciPT10eXBlb2Ygay5zaXplLEE9W10sUz1NP0E6ayxFPVtdLEw9W10sQz1bXSxQPTAsTz1lLmhpc3Rub3JtLHo9ZS5oaXN0ZnVuYyxJPS0xIT09Ty5pbmRleE9mKCJkZW5zaXR5Iik7Xy5lbmFibGVkJiZJJiYoTz1PLnJlcGxhY2UoLyA/ZGVuc2l0eSQvLCIiKSxJPSExKTt2YXIgRCxSPSJtYXgiPT09enx8Im1pbiI9PT16P251bGw6MCxGPWwuY291bnQsQj1jW09dLE49ITEsaj1mdW5jdGlvbih0KXtyZXR1cm4gbS5yMmModCwwLGIpfTtmb3IoYS5pc0FycmF5T3JUeXBlZEFycmF5KGVbeF0pJiYiY291bnQiIT09eiYmKEQ9ZVt4XSxOPSJhdmciPT09eixGPWxbel0pLHI9aihrLnN0YXJ0KSxwPWooay5lbmQpKyhyLW8udGlja0luY3JlbWVudChyLGsuc2l6ZSwhMSxiKSkvMWU2O3I8cCYmZy5sZW5ndGg8MWU2JiYoaT1vLnRpY2tJbmNyZW1lbnQocixrLnNpemUsITEsYiksZy5wdXNoKChyK2kpLzIpLHYucHVzaChSKSxDLnB1c2goW10pLEEucHVzaChyKSxJJiZFLnB1c2goMS8oaS1yKSksTiYmTC5wdXNoKDApLCEoaTw9cikpOylyPWk7QS5wdXNoKHIpLE18fCJkYXRlIiE9PW0udHlwZXx8KFM9e3N0YXJ0OmooUy5zdGFydCksZW5kOmooUy5lbmQpLHNpemU6Uy5zaXplfSk7dmFyIFYsVT12Lmxlbmd0aCxxPSEwLEg9MS8wLEc9MS8wLFk9e307Zm9yKHI9MDtyPFQubGVuZ3RoO3IrKyl7dmFyIFc9VFtyXTsoZD1hLmZpbmRCaW4oVyxTKSk+PTAmJmQ8VSYmKFArPUYoZCxyLHYsRCxMKSxxJiZDW2RdLmxlbmd0aCYmVyE9PVRbQ1tkXVswXV0mJihxPSExKSxDW2RdLnB1c2gociksWVtyXT1kLEg9TWF0aC5taW4oSCxXLUFbZF0pLEc9TWF0aC5taW4oRyxBW2QrMV0tVykpfXF8fChWPWgoSCxHLEEsbSxiKSksTiYmKFA9dSh2LEwpKSxCJiZCKHYsUCxFKSxfLmVuYWJsZWQmJmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGk7ZnVuY3Rpb24gbyhlKXtpPXRbZV0sdFtlXS89Mn1mdW5jdGlvbiBzKGUpe2E9dFtlXSx0W2VdPWkrYS8yLGkrPWF9aWYoImhhbGYiPT09cilpZigiaW5jcmVhc2luZyI9PT1lKWZvcihvKDApLG49MTtuPHQubGVuZ3RoO24rKylzKG4pO2Vsc2UgZm9yKG8odC5sZW5ndGgtMSksbj10Lmxlbmd0aC0yO24+PTA7bi0tKXMobik7ZWxzZSBpZigiaW5jcmVhc2luZyI9PT1lKXtmb3Iobj0xO248dC5sZW5ndGg7bisrKXRbbl0rPXRbbi0xXTsiZXhjbHVkZSI9PT1yJiYodC51bnNoaWZ0KDApLHQucG9wKCkpfWVsc2V7Zm9yKG49dC5sZW5ndGgtMjtuPj0wO24tLSl0W25dKz10W24rMV07ImV4Y2x1ZGUiPT09ciYmKHQucHVzaCgwKSx0LnNoaWZ0KCkpfX0odixfLmRpcmVjdGlvbixfLmN1cnJlbnRiaW4pO3ZhciBYPU1hdGgubWluKGcubGVuZ3RoLHYubGVuZ3RoKSxaPVtdLEo9MCxLPVgtMTtmb3Iocj0wO3I8WDtyKyspaWYodltyXSl7Sj1yO2JyZWFrfWZvcihyPVgtMTtyPj1KO3ItLSlpZih2W3JdKXtLPXI7YnJlYWt9Zm9yKHI9SjtyPD1LO3IrKylpZihuKGdbcl0pJiZuKHZbcl0pKXt2YXIgUT17cDpnW3JdLHM6dltyXSxiOjB9O18uZW5hYmxlZHx8KFEucHRzPUNbcl0scT9RLnBoMD1RLnBoMT1DW3JdLmxlbmd0aD9UW0Nbcl1bMF1dOmdbcl06KFEucGgwPVYoQVtyXSksUS5waDE9VihBW3IrMV0sITApKSksWi5wdXNoKFEpfXJldHVybiAxPT09Wi5sZW5ndGgmJihaWzBdLndpZHRoMT1vLnRpY2tJbmNyZW1lbnQoWlswXS5wLGsuc2l6ZSwhMSxiKS1aWzBdLnApLHMoWixlKSxhLmlzQXJyYXlPclR5cGVkQXJyYXkoZS5zZWxlY3RlZHBvaW50cykmJmEudGFnU2VsZWN0ZWQoWixlLFkpLFp9LGNhbGNBbGxBdXRvQmluczpmfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vYmFyL2FycmF5c190b19jYWxjZGF0YSI6ODU1LCIuL2F2ZXJhZ2UiOjEwMTksIi4vYmluX2Z1bmN0aW9ucyI6MTAyMSwiLi9iaW5fbGFiZWxfdmFscyI6MTAyMiwiLi9ub3JtX2Z1bmN0aW9ucyI6MTAzMCwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDEwMjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtldmVudERhdGFLZXlzOlsiYmluTnVtYmVyIl19fSx7fV0sMTAyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLGk9dCgiLi4vLi4vcmVnaXN0cnkiKS50cmFjZUlzLG89dCgiLi4vYmFyL2RlZmF1bHRzIikuaGFuZGxlR3JvdXBpbmdEZWZhdWx0cyxzPW4ubmVzdGVkUHJvcGVydHksbD1hLmdldEF4aXNHcm91cCxjPVt7YVN0cjp7eDoieGJpbnMuc3RhcnQiLHk6InliaW5zLnN0YXJ0In0sbmFtZToic3RhcnQifSx7YVN0cjp7eDoieGJpbnMuZW5kIix5OiJ5Ymlucy5lbmQifSxuYW1lOiJlbmQifSx7YVN0cjp7eDoieGJpbnMuc2l6ZSIseToieWJpbnMuc2l6ZSJ9LG5hbWU6InNpemUifSx7YVN0cjp7eDoibmJpbnN4Iix5OiJuYmluc3kifSxuYW1lOiJuYmlucyJ9XSx1PVsieCIsInkiXTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixoLGYscCxkLGcsdixtPWUuX2hpc3RvZ3JhbUJpbk9wdHM9e30seT1bXSx4PXt9LGI9W107ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBuLmNvZXJjZShyLl9pbnB1dCxyLHIuX21vZHVsZS5hdHRyaWJ1dGVzLHQsZSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4idiI9PT10Lm9yaWVudGF0aW9uPyJ4IjoieSJ9ZnVuY3Rpb24gayh0LHIsaSl7dmFyIG89dC51aWQrIl9fIitpO3J8fChyPW8pO3ZhciBzPWZ1bmN0aW9uKHQscil7cmV0dXJuIGEuZ2V0RnJvbVRyYWNlKHtfZnVsbExheW91dDplfSx0LHIpLnR5cGV9KHQsaSksbD10W2krImNhbGVuZGFyIl18fCIiLGM9bVtyXSx1PSEwO2MmJihzPT09Yy5heFR5cGUmJmw9PT1jLmNhbGVuZGFyPyh1PSExLGMudHJhY2VzLnB1c2godCksYy5kaXJzLnB1c2goaSkpOihyPW8scyE9PWMuYXhUeXBlJiZuLndhcm4oWyJBdHRlbXB0ZWQgdG8gZ3JvdXAgdGhlIGJpbnMgb2YgdHJhY2UiLHQuaW5kZXgsInNldCBvbiBhIiwidHlwZToiK3MsImF4aXMiLCJ3aXRoIGJpbnMgb24iLCJ0eXBlOiIrYy5heFR5cGUsImF4aXMuIl0uam9pbigiICIpKSxsIT09Yy5jYWxlbmRhciYmbi53YXJuKFsiQXR0ZW1wdGVkIHRvIGdyb3VwIHRoZSBiaW5zIG9mIHRyYWNlIix0LmluZGV4LCJzZXQgd2l0aCBhIixsLCJjYWxlbmRhciIsIndpdGggYmlucyIsYy5jYWxlbmRhcj8ib24gYSAiK2MuY2FsZW5kYXIrIiBjYWxlbmRhciI6IncvbyBhIHNldCBjYWxlbmRhciJdLmpvaW4oIiAiKSkpKSx1JiYobVtyXT17dHJhY2VzOlt0XSxkaXJzOltpXSxheFR5cGU6cyxjYWxlbmRhcjp0W2krImNhbGVuZGFyIl18fCIifSksdFsiXyIraSsiYmluZ3JvdXAiXT1yfWZvcihkPTA7ZDx0Lmxlbmd0aDtkKyspcj10W2RdLGkociwiaGlzdG9ncmFtIikmJih5LnB1c2gociksZGVsZXRlIHIuX3hhdXRvQmluRmluaXNoZWQsZGVsZXRlIHIuX3lhdXRvQmluRmluaXNoZWQsaShyLCIyZE1hcCIpfHxvKHIuX2lucHV0LHIsZSxfKSk7dmFyIFQ9ZS5fYWxpZ25tZW50T3B0c3x8e307Zm9yKGQ9MDtkPHkubGVuZ3RoO2QrKyl7aWYocj15W2RdLGY9IiIsIWkociwiMmRNYXAiKSl7aWYocD13KHIpLCJncm91cCI9PT1lLmJhcm1vZGUmJnIuYWxpZ25tZW50Z3JvdXApe3ZhciBNPXJbcCsiYXhpcyJdLEE9bChlLE0pK3Iub3JpZW50YXRpb247KFRbQV18fHt9KVtyLmFsaWdubWVudGdyb3VwXSYmKGY9QSl9Znx8Im92ZXJsYXkiPT09ZS5iYXJtb2RlfHwoZj1sKGUsci54YXhpcykrbChlLHIueWF4aXMpK3cocikpfWY/KHhbZl18fCh4W2ZdPVtdKSx4W2ZdLnB1c2gocikpOmIucHVzaChyKX1mb3IoZiBpbiB4KWlmKDEhPT0oaD14W2ZdKS5sZW5ndGgpe3ZhciBTPSExO2ZvcihkPTA7ZDxoLmxlbmd0aDtkKyspe3I9aFtkXSxTPV8oImJpbmdyb3VwIik7YnJlYWt9Zm9yKGY9U3x8ZixkPTA7ZDxoLmxlbmd0aDtkKyspe3ZhciBFPShyPWhbZF0pLl9pbnB1dC5iaW5ncm91cDtFJiZFIT09ZiYmbi53YXJuKFsiVHJhY2UiLHIuaW5kZXgsIm11c3QgbWF0Y2giLCJ3aXRoaW4gYmluZ3JvdXAiLGYrIi4iLCJJZ25vcmluZyBpdHMgYmluZ3JvdXA6IixFLCJzZXR0aW5nLiJdLmpvaW4oIiAiKSksci5iaW5ncm91cD1mLGsocixmLHcocikpfX1lbHNlIGIucHVzaChoWzBdKTtmb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtyPWJbZF07dmFyIEw9XygiYmluZ3JvdXAiKTtpZihpKHIsIjJkTWFwIikpZm9yKHY9MDt2PDI7disrKXt2YXIgQz1fKChwPXVbdl0pKyJiaW5ncm91cCIsTD9MKyJfXyIrcDpudWxsKTtrKHIsQyxwKX1lbHNlIGsocixMLHcocikpfWZvcihmIGluIG0pe3ZhciBQPW1bZl07Zm9yKGg9UC50cmFjZXMsZz0wO2c8Yy5sZW5ndGg7ZysrKXt2YXIgTyx6LEk9Y1tnXSxEPUkubmFtZTtpZigibmJpbnMiIT09RHx8IVAuc2l6ZUZvdW5kKXtmb3IoZD0wO2Q8aC5sZW5ndGg7ZCsrKXtpZihyPWhbZF0scD1QLmRpcnNbZF0sTz1JLmFTdHJbcF0sdm9pZCAwIT09cyhyLl9pbnB1dCxPKS5nZXQoKSl7UFtEXT1fKE8pLFBbRCsiRm91bmQiXT0hMDticmVha30oej0oci5fYXV0b0Jpbnx8e30pW3BdfHx7fSlbRF0mJnMocixPKS5zZXQoeltEXSl9aWYoInN0YXJ0Ij09PUR8fCJlbmQiPT09RClmb3IoO2Q8aC5sZW5ndGg7ZCsrKShyPWhbZF0pWyJfIitwKyJiaW5ncm91cCJdJiZfKE8sKHo9KHIuX2F1dG9CaW58fHt9KVtwXXx8e30pW0RdKTsibmJpbnMiIT09RHx8UC5zaXplRm91bmR8fFAubmJpbnNGb3VuZHx8KHI9aFswXSxQW0RdPV8oTykpfX19fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2Jhci9kZWZhdWx0cyI6ODYwfV0sMTAyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIuLi9iYXIvc3R5bGVfZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXtmdW5jdGlvbiBjKHIsbil7cmV0dXJuIGEuY29lcmNlKHQsZSxzLHIsbil9dmFyIHU9YygieCIpLGg9YygieSIpO2MoImN1bXVsYXRpdmUuZW5hYmxlZCIpJiYoYygiY3VtdWxhdGl2ZS5kaXJlY3Rpb24iKSxjKCJjdW11bGF0aXZlLmN1cnJlbnRiaW4iKSksYygidGV4dCIpLGMoImhvdmVydGV4dCIpLGMoImhvdmVydGVtcGxhdGUiKTt2YXIgZj1jKCJvcmllbnRhdGlvbiIsaCYmIXU/ImgiOiJ2IikscD0idiI9PT1mPyJ4IjoieSIsZD0idiI9PT1mPyJ5IjoieCIsZz11JiZoP01hdGgubWluKGEubWluUm93TGVuZ3RoKHUpJiZhLm1pblJvd0xlbmd0aChoKSk6YS5taW5Sb3dMZW5ndGgoZVtwXXx8W10pO2lmKGcpe2UuX2xlbmd0aD1nLG4uZ2V0Q29tcG9uZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIikodCxlLFsieCIsInkiXSxsKSxlW2RdJiZjKCJoaXN0ZnVuYyIpLGMoImhpc3Rub3JtIiksYygiYXV0b2JpbiIrcCksbyh0LGUsYyxyLGwpLGEuY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLGMpO3ZhciB2PShlLm1hcmtlci5saW5lfHx7fSkuY29sb3IsbT1uLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwic3VwcGx5RGVmYXVsdHMiKTttKHQsZSx2fHxpLmRlZmF1bHRMaW5lLHtheGlzOiJ5In0pLG0odCxlLHZ8fGkuZGVmYXVsdExpbmUse2F4aXM6IngiLGluaGVyaXQ6InkifSl9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2Jhci9zdHlsZV9kZWZhdWx0cyI6ODcxLCIuL2F0dHJpYnV0ZXMiOjEwMTh9XSwxMDI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGEpe2lmKHQueD0ieFZhbCJpbiBlP2UueFZhbDplLngsdC55PSJ5VmFsImluIGU/ZS55VmFsOmUueSwiekxhYmVsVmFsImluIGUmJih0Lno9ZS56TGFiZWxWYWwpLGUueGEmJih0LnhheGlzPWUueGEpLGUueWEmJih0LnlheGlzPWUueWEpLCEoci5jdW11bGF0aXZlfHx7fSkuZW5hYmxlZCl7dmFyIGksbz1BcnJheS5pc0FycmF5KGEpP25bMF0ucHRzW2FbMF1dW2FbMV1dOm5bYV0ucHRzO2lmKHQucG9pbnROdW1iZXJzPW8sdC5iaW5OdW1iZXI9dC5wb2ludE51bWJlcixkZWxldGUgdC5wb2ludE51bWJlcixkZWxldGUgdC5wb2ludEluZGV4LHIuX2luZGV4VG9Qb2ludHMpe2k9W107Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspaT1pLmNvbmNhdChyLl9pbmRleFRvUG9pbnRzW29bc11dKX1lbHNlIGk9bzt0LnBvaW50SW5kaWNlcz1pfXJldHVybiB0fX0se31dLDEwMjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYmFyL2hvdmVyIikuaG92ZXJQb2ludHMsYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLmhvdmVyTGFiZWxUZXh0O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz1uKHQsZSxyLGkpO2lmKG8pe3ZhciBzPSh0PW9bMF0pLmNkW3QuaW5kZXhdLGw9dC5jZFswXS50cmFjZTtpZighbC5jdW11bGF0aXZlLmVuYWJsZWQpe3ZhciBjPSJoIj09PWwub3JpZW50YXRpb24/InkiOiJ4Ijt0W2MrIkxhYmVsIl09YSh0W2MrImEiXSxzLnBoMCxzLnBoMSl9cmV0dXJuIGwuaG92ZXJtcGxhdGUmJih0LmhvdmVydGVtcGxhdGU9bC5ob3ZlcnRlbXBsYXRlKSxvfX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vYmFyL2hvdmVyIjo4NjN9XSwxMDI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4uL2Jhci9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi9jcm9zc190cmFjZV9kZWZhdWx0cyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4uL2Jhci9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi4vYmFyL2Nyb3NzX3RyYWNlX2NhbGMiKS5jcm9zc1RyYWNlQ2FsYyxwbG90OnQoIi4uL2Jhci9wbG90IikucGxvdCxsYXllck5hbWU6ImJhcmxheWVyIixzdHlsZTp0KCIuLi9iYXIvc3R5bGUiKS5zdHlsZSxzdHlsZU9uU2VsZWN0OnQoIi4uL2Jhci9zdHlsZSIpLnN0eWxlT25TZWxlY3QsY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4uL2Jhci9zZWxlY3QiKSxldmVudERhdGE6dCgiLi9ldmVudF9kYXRhIiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6Imhpc3RvZ3JhbSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImJhci1saWtlIiwiY2FydGVzaWFuIiwic3ZnIiwiYmFyIiwiaGlzdG9ncmFtIiwib3JpZW50ZWQiLCJlcnJvckJhcnNPSyIsInNob3dMZWdlbmQiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vYmFyL2Nyb3NzX3RyYWNlX2NhbGMiOjg1OSwiLi4vYmFyL2xheW91dF9hdHRyaWJ1dGVzIjo4NjUsIi4uL2Jhci9sYXlvdXRfZGVmYXVsdHMiOjg2NiwiLi4vYmFyL3Bsb3QiOjg2NywiLi4vYmFyL3NlbGVjdCI6ODY4LCIuLi9iYXIvc3R5bGUiOjg3MCwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4vYXR0cmlidXRlcyI6MTAxOCwiLi9jYWxjIjoxMDIzLCIuL2Nyb3NzX3RyYWNlX2RlZmF1bHRzIjoxMDI1LCIuL2RlZmF1bHRzIjoxMDI2LCIuL2V2ZW50X2RhdGEiOjEwMjcsIi4vaG92ZXIiOjEwMjh9XSwxMDMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17cGVyY2VudDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPTEwMC9lLGE9MDthPHI7YSsrKXRbYV0qPW59LHByb2JhYmlsaXR5OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49MDtuPHI7bisrKXRbbl0vPWV9LGRlbnNpdHk6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dC5sZW5ndGg7bj1ufHwxO2Zvcih2YXIgaT0wO2k8YTtpKyspdFtpXSo9cltpXSpufSwicHJvYmFiaWxpdHkgZGVuc2l0eSI6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dC5sZW5ndGg7biYmKGUvPW4pO2Zvcih2YXIgaT0wO2k8YTtpKyspdFtpXSo9cltpXS9lfX19LHt9XSwxMDMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hpc3RvZ3JhbS9hdHRyaWJ1dGVzIiksYT10KCIuLi9oaXN0b2dyYW0vYmluX2F0dHJpYnV0ZXMiKSxpPXQoIi4uL2hlYXRtYXAvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksYz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9Yyh7eDpuLngseTpuLnksejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxtYXJrZXI6e2NvbG9yOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0saGlzdG5vcm06bi5oaXN0bm9ybSxoaXN0ZnVuYzpuLmhpc3RmdW5jLG5iaW5zeDpuLm5iaW5zeCx4YmluczphKCJ4IiksbmJpbnN5Om4ubmJpbnN5LHliaW5zOmEoInkiKSxhdXRvYmlueDpuLmF1dG9iaW54LGF1dG9iaW55Om4uYXV0b2JpbnksYmluZ3JvdXA6Yyh7fSxuLmJpbmdyb3VwLHt9KSx4YmluZ3JvdXA6Yyh7fSxuLmJpbmdyb3VwLHt9KSx5YmluZ3JvdXA6Yyh7fSxuLmJpbmdyb3VwLHt9KSx4Z2FwOmkueGdhcCx5Z2FwOmkueWdhcCx6c21vb3RoOmkuenNtb290aCx6aG92ZXJmb3JtYXQ6aS56aG92ZXJmb3JtYXQsaG92ZXJ0ZW1wbGF0ZTpzKHt9LHtrZXlzOiJ6In0pLHNob3dsZWdlbmQ6Yyh7fSxvLnNob3dsZWdlbmQse2RmbHQ6ITF9KX0sbCgiIix7Y0xldHRlcjoieiIsYXV0b0NvbG9yRGZsdDohMX0pKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiOjFlMywiLi4vaGlzdG9ncmFtL2F0dHJpYnV0ZXMiOjEwMTgsIi4uL2hpc3RvZ3JhbS9iaW5fYXR0cmlidXRlcyI6MTAyMH1dLDEwMzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vaGlzdG9ncmFtL2Jpbl9mdW5jdGlvbnMiKSxvPXQoIi4uL2hpc3RvZ3JhbS9ub3JtX2Z1bmN0aW9ucyIpLHM9dCgiLi4vaGlzdG9ncmFtL2F2ZXJhZ2UiKSxsPXQoIi4uL2hpc3RvZ3JhbS9iaW5fbGFiZWxfdmFscyIpLGM9dCgiLi4vaGlzdG9ncmFtL2NhbGMiKS5jYWxjQWxsQXV0b0JpbnM7ZnVuY3Rpb24gdSh0LGUscixuKXt2YXIgYSxpPW5ldyBBcnJheSh0KTtpZihuKWZvcihhPTA7YTx0O2ErKylpW2FdPTEvKGVbYSsxXS1lW2FdKTtlbHNle3ZhciBvPTEvcjtmb3IoYT0wO2E8dDthKyspaVthXT1vfXJldHVybiBpfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm57c3RhcnQ6dChlLnN0YXJ0KSxlbmQ6dChlLmVuZCksc2l6ZTplLnNpemV9fWZ1bmN0aW9uIGYodCxlLHIsbixhLGkpe3ZhciBvLHM9dC5sZW5ndGgtMSxjPW5ldyBBcnJheShzKSx1PWwocixuLHQsYSxpKTtmb3Iobz0wO288cztvKyspe3ZhciBoPShlfHxbXSlbb107Y1tvXT12b2lkIDA9PT1oP1t1KHRbb10pLHUodFtvKzFdLCEwKV06W2gsaF19cmV0dXJuIGN9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbCxwLGQsZz1hLmdldEZyb21JZCh0LGUueGF4aXMpLHY9YS5nZXRGcm9tSWQodCxlLnlheGlzKSxtPWUueGNhbGVuZGFyLHk9ZS55Y2FsZW5kYXIseD1mdW5jdGlvbih0KXtyZXR1cm4gZy5yMmModCwwLG0pfSxiPWZ1bmN0aW9uKHQpe3JldHVybiB2LnIyYyh0LDAseSl9LF89Yyh0LGUsZywieCIpLHc9X1swXSxrPV9bMV0sVD1jKHQsZSx2LCJ5IiksTT1UWzBdLEE9VFsxXSxTPWUuX2xlbmd0aDtrLmxlbmd0aD5TJiZrLnNwbGljZShTLGsubGVuZ3RoLVMpLEEubGVuZ3RoPlMmJkEuc3BsaWNlKFMsQS5sZW5ndGgtUyk7dmFyIEU9W10sTD1bXSxDPVtdLFA9InN0cmluZyI9PXR5cGVvZiB3LnNpemUsTz0ic3RyaW5nIj09dHlwZW9mIE0uc2l6ZSx6PVtdLEk9W10sRD1QP3o6dyxSPU8/STpNLEY9MCxCPVtdLE49W10saj1lLmhpc3Rub3JtLFY9ZS5oaXN0ZnVuYyxVPS0xIT09ai5pbmRleE9mKCJkZW5zaXR5IikscT0ibWF4Ij09PVZ8fCJtaW4iPT09Vj9udWxsOjAsSD1pLmNvdW50LEc9b1tqXSxZPSExLFc9W10sWD1bXSxaPSJ6ImluIGU/ZS56OiJtYXJrZXIiaW4gZSYmQXJyYXkuaXNBcnJheShlLm1hcmtlci5jb2xvcik/ZS5tYXJrZXIuY29sb3I6IiI7WiYmImNvdW50IiE9PVYmJihZPSJhdmciPT09VixIPWlbVl0pO3ZhciBKPXcuc2l6ZSxLPXgody5zdGFydCksUT14KHcuZW5kKSsoSy1hLnRpY2tJbmNyZW1lbnQoSyxKLCExLG0pKS8xZTY7Zm9yKHI9SztyPFE7cj1hLnRpY2tJbmNyZW1lbnQocixKLCExLG0pKUwucHVzaChxKSx6LnB1c2gociksWSYmQy5wdXNoKDApO3oucHVzaChyKTt2YXIgJCx0dD1MLmxlbmd0aCxldD0oci1LKS90dCxydD0oJD1LK2V0LzIsZy5jMnIoJCwwLG0pKSxudD1NLnNpemUsYXQ9YihNLnN0YXJ0KSxpdD1iKE0uZW5kKSsoYXQtYS50aWNrSW5jcmVtZW50KGF0LG50LCExLHkpKS8xZTY7Zm9yKHI9YXQ7cjxpdDtyPWEudGlja0luY3JlbWVudChyLG50LCExLHkpKXtFLnB1c2goTC5zbGljZSgpKSxJLnB1c2gocik7dmFyIG90PW5ldyBBcnJheSh0dCk7Zm9yKGw9MDtsPHR0O2wrKylvdFtsXT1bXTtOLnB1c2gob3QpLFkmJkIucHVzaChDLnNsaWNlKCkpfUkucHVzaChyKTt2YXIgc3Q9RS5sZW5ndGgsbHQ9KHItYXQpL3N0LGN0PWZ1bmN0aW9uKHQpe3JldHVybiB2LmMycih0LDAseSl9KGF0K2x0LzIpO1UmJihXPXUoTC5sZW5ndGgsRCxldCxQKSxYPXUoRS5sZW5ndGgsUixsdCxPKSksUHx8ImRhdGUiIT09Zy50eXBlfHwoRD1oKHgsRCkpLE98fCJkYXRlIiE9PXYudHlwZXx8KFI9aChiLFIpKTt2YXIgdXQ9ITAsaHQ9ITAsZnQ9bmV3IEFycmF5KHR0KSxwdD1uZXcgQXJyYXkoc3QpLGR0PTEvMCxndD0xLzAsdnQ9MS8wLG10PTEvMDtmb3Iocj0wO3I8UztyKyspe3ZhciB5dD1rW3JdLHh0PUFbcl07cD1uLmZpbmRCaW4oeXQsRCksZD1uLmZpbmRCaW4oeHQsUikscD49MCYmcDx0dCYmZD49MCYmZDxzdCYmKEYrPUgocCxyLEVbZF0sWixCW2RdKSxOW2RdW3BdLnB1c2gociksdXQmJih2b2lkIDA9PT1mdFtwXT9mdFtwXT15dDpmdFtwXSE9PXl0JiYodXQ9ITEpKSxodCYmKHZvaWQgMD09PXB0W2RdP3B0W2RdPXh0OnB0W2RdIT09eHQmJihodD0hMSkpLGR0PU1hdGgubWluKGR0LHl0LXpbcF0pLGd0PU1hdGgubWluKGd0LHpbcCsxXS15dCksdnQ9TWF0aC5taW4odnQseHQtSVtkXSksbXQ9TWF0aC5taW4obXQsSVtkKzFdLXh0KSl9aWYoWSlmb3IoZD0wO2Q8c3Q7ZCsrKUYrPXMoRVtkXSxCW2RdKTtpZihHKWZvcihkPTA7ZDxzdDtkKyspRyhFW2RdLEYsVyxYW2RdKTtyZXR1cm57eDprLHhSYW5nZXM6Zih6LHV0JiZmdCxkdCxndCxnLG0pLHgwOnJ0LGR4OmV0LHk6QSx5UmFuZ2VzOmYoSSxodCYmcHQsdnQsbXQsdix5KSx5MDpjdCxkeTpsdCx6OkUscHRzOk59fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vaGlzdG9ncmFtL2F2ZXJhZ2UiOjEwMTksIi4uL2hpc3RvZ3JhbS9iaW5fZnVuY3Rpb25zIjoxMDIxLCIuLi9oaXN0b2dyYW0vYmluX2xhYmVsX3ZhbHMiOjEwMjIsIi4uL2hpc3RvZ3JhbS9jYWxjIjoxMDIzLCIuLi9oaXN0b2dyYW0vbm9ybV9mdW5jdGlvbnMiOjEwMzB9XSwxMDMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9zYW1wbGVfZGVmYXVsdHMiKSxpPXQoIi4uL2hlYXRtYXAvc3R5bGVfZGVmYXVsdHMiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLHM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGwpe2Z1bmN0aW9uIGMocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLHMscixhKX1hKHQsZSxjLGwpLCExIT09ZS52aXNpYmxlJiYoaSh0LGUsYyxsKSxvKHQsZSxsLGMse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0pLGMoImhvdmVydGVtcGxhdGUiKSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9saWIiOjcxNywiLi4vaGVhdG1hcC9zdHlsZV9kZWZhdWx0cyI6MTAxMywiLi9hdHRyaWJ1dGVzIjoxMDMxLCIuL3NhbXBsZV9kZWZhdWx0cyI6MTAzNn1dLDEwMzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vaGVhdG1hcC9ob3ZlciIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKS5ob3ZlckxhYmVsVGV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxvLHMpe3ZhciBsPW4odCxlLHIsaSxvLHMpO2lmKGwpe3ZhciBjPSh0PWxbMF0pLmluZGV4LHU9Y1swXSxoPWNbMV0sZj10LmNkWzBdLHA9Zi54UmFuZ2VzW2hdLGQ9Zi55UmFuZ2VzW3VdO3JldHVybiB0LnhMYWJlbD1hKHQueGEscFswXSxwWzFdKSx0LnlMYWJlbD1hKHQueWEsZFswXSxkWzFdKSxsfX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vaGVhdG1hcC9ob3ZlciI6MTAwN31dLDEwMzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi4vaGlzdG9ncmFtL2Nyb3NzX3RyYWNlX2RlZmF1bHRzIiksY2FsYzp0KCIuLi9oZWF0bWFwL2NhbGMiKSxwbG90OnQoIi4uL2hlYXRtYXAvcGxvdCIpLGxheWVyTmFtZToiaGVhdG1hcGxheWVyIixjb2xvcmJhcjp0KCIuLi9oZWF0bWFwL2NvbG9yYmFyIiksc3R5bGU6dCgiLi4vaGVhdG1hcC9zdHlsZSIpLGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKSxldmVudERhdGE6dCgiLi4vaGlzdG9ncmFtL2V2ZW50X2RhdGEiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiaGlzdG9ncmFtMmQiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCIyZE1hcCIsImhpc3RvZ3JhbSIsInNob3dMZWdlbmQiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vaGVhdG1hcC9jYWxjIjoxMDAxLCIuLi9oZWF0bWFwL2NvbG9yYmFyIjoxMDAzLCIuLi9oZWF0bWFwL3Bsb3QiOjEwMTEsIi4uL2hlYXRtYXAvc3R5bGUiOjEwMTIsIi4uL2hpc3RvZ3JhbS9jcm9zc190cmFjZV9kZWZhdWx0cyI6MTAyNSwiLi4vaGlzdG9ncmFtL2V2ZW50X2RhdGEiOjEwMjcsIi4vYXR0cmlidXRlcyI6MTAzMSwiLi9kZWZhdWx0cyI6MTAzMywiLi9ob3ZlciI6MTAzNH1dLDEwMzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz1yKCJ4Iikscz1yKCJ5IiksbD1hLm1pblJvd0xlbmd0aChvKSxjPWEubWluUm93TGVuZ3RoKHMpO2wmJmM/KGUuX2xlbmd0aD1NYXRoLm1pbihsLGMpLG4uZ2V0Q29tcG9uZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIikodCxlLFsieCIsInkiXSxpKSwocigieiIpfHxyKCJtYXJrZXIuY29sb3IiKSkmJnIoImhpc3RmdW5jIikscigiaGlzdG5vcm0iKSxyKCJhdXRvYmlueCIpLHIoImF1dG9iaW55IikpOmUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDZ9XSwxMDM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hpc3RvZ3JhbTJkL2F0dHJpYnV0ZXMiKSxhPXQoIi4uL2NvbnRvdXIvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz1vKHt4Om4ueCx5Om4ueSx6Om4ueixtYXJrZXI6bi5tYXJrZXIsaGlzdG5vcm06bi5oaXN0bm9ybSxoaXN0ZnVuYzpuLmhpc3RmdW5jLG5iaW5zeDpuLm5iaW5zeCx4YmluczpuLnhiaW5zLG5iaW5zeTpuLm5iaW5zeSx5YmluczpuLnliaW5zLGF1dG9iaW54Om4uYXV0b2JpbngsYXV0b2Jpbnk6bi5hdXRvYmlueSxiaW5ncm91cDpuLmJpbmdyb3VwLHhiaW5ncm91cDpuLnhiaW5ncm91cCx5YmluZ3JvdXA6bi55YmluZ3JvdXAsYXV0b2NvbnRvdXI6YS5hdXRvY29udG91cixuY29udG91cnM6YS5uY29udG91cnMsY29udG91cnM6YS5jb250b3VycyxsaW5lOntjb2xvcjphLmxpbmUuY29sb3Isd2lkdGg6byh7fSxhLmxpbmUud2lkdGgse2RmbHQ6LjV9KSxkYXNoOmEubGluZS5kYXNoLHNtb290aGluZzphLmxpbmUuc21vb3RoaW5nLGVkaXRUeXBlOiJwbG90In0semhvdmVyZm9ybWF0Om4uemhvdmVyZm9ybWF0LGhvdmVydGVtcGxhdGU6bi5ob3ZlcnRlbXBsYXRlfSxpKCIiLHtjTGV0dGVyOiJ6IixlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uL2NvbnRvdXIvYXR0cmlidXRlcyI6OTQzLCIuLi9oaXN0b2dyYW0yZC9hdHRyaWJ1dGVzIjoxMDMxfV0sMTAzODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uL2hpc3RvZ3JhbTJkL3NhbXBsZV9kZWZhdWx0cyIpLGk9dCgiLi4vY29udG91ci9jb250b3Vyc19kZWZhdWx0cyIpLG89dCgiLi4vY29udG91ci9zdHlsZV9kZWZhdWx0cyIpLHM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGwpe2Z1bmN0aW9uIGMocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLHMscixhKX1hKHQsZSxjLGwpLCExIT09ZS52aXNpYmxlJiYoaSh0LGUsYyxmdW5jdGlvbihyKXtyZXR1cm4gbi5jb2VyY2UyKHQsZSxzLHIpfSksbyh0LGUsYyxsKSxjKCJob3ZlcnRlbXBsYXRlIikpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vY29udG91ci9jb250b3Vyc19kZWZhdWx0cyI6OTUwLCIuLi9jb250b3VyL3N0eWxlX2RlZmF1bHRzIjo5NjQsIi4uL2hpc3RvZ3JhbTJkL3NhbXBsZV9kZWZhdWx0cyI6MTAzNiwiLi9hdHRyaWJ1dGVzIjoxMDM3fV0sMTAzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNyb3NzVHJhY2VEZWZhdWx0czp0KCIuLi9oaXN0b2dyYW0vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiKSxjYWxjOnQoIi4uL2NvbnRvdXIvY2FsYyIpLHBsb3Q6dCgiLi4vY29udG91ci9wbG90IikucGxvdCxsYXllck5hbWU6ImNvbnRvdXJsYXllciIsc3R5bGU6dCgiLi4vY29udG91ci9zdHlsZSIpLGNvbG9yYmFyOnQoIi4uL2NvbnRvdXIvY29sb3JiYXIiKSxob3ZlclBvaW50czp0KCIuLi9jb250b3VyL2hvdmVyIiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6Imhpc3RvZ3JhbTJkY29udG91ciIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImNhcnRlc2lhbiIsInN2ZyIsIjJkTWFwIiwiY29udG91ciIsImhpc3RvZ3JhbSIsInNob3dMZWdlbmQiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vY29udG91ci9jYWxjIjo5NDQsIi4uL2NvbnRvdXIvY29sb3JiYXIiOjk0NiwiLi4vY29udG91ci9ob3ZlciI6OTU2LCIuLi9jb250b3VyL3Bsb3QiOjk2MSwiLi4vY29udG91ci9zdHlsZSI6OTYzLCIuLi9oaXN0b2dyYW0vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiOjEwMjUsIi4vYXR0cmlidXRlcyI6MTAzNywiLi9kZWZhdWx0cyI6MTAzOH1dLDEwNDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7Zm9yKHZhciBuPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxvPXQoIi4vY29uc3RhbnRzIikuY29sb3Jtb2RlbCxzPVsicmdiIiwicmdiYSIsImhzbCIsImhzbGEiXSxsPVtdLGM9W10sdT0wO3U8cy5sZW5ndGg7dSsrKWwucHVzaCgiRm9yIHRoZSBgIitzW3VdKyJgIGNvbG9ybW9kZWwsIGl0IGlzIFsiK29bc1t1XV0ubWluLmpvaW4oIiwgIikrIl0uIiksYy5wdXNoKCJGb3IgdGhlIGAiK3NbdV0rImAgY29sb3Jtb2RlbCwgaXQgaXMgWyIrb1tzW3VdXS5tYXguam9pbigiLCAiKSsiXS4iKTtlLmV4cG9ydHM9aSh7ejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxjb2xvcm1vZGVsOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6cyxkZmx0OiJyZ2IiLGVkaXRUeXBlOiJjYWxjIn0sem1pbjp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifSx7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn1dLGVkaXRUeXBlOiJjYWxjIn0sem1heDp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifSx7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn1dLGVkaXRUeXBlOiJjYWxjIn0seDA6e3ZhbFR5cGU6ImFueSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0seTA6e3ZhbFR5cGU6ImFueSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sZHg6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sZHk6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6InBsb3QifSxob3ZlcnRleHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJwbG90In0saG92ZXJpbmZvOmkoe30sbi5ob3ZlcmluZm8se2ZsYWdzOlsieCIsInkiLCJ6IiwiY29sb3IiLCJuYW1lIiwidGV4dCJdLGRmbHQ6IngreSt6K3RleHQrbmFtZSJ9KSxob3ZlcnRlbXBsYXRlOmEoe30se2tleXM6WyJ6IiwiY29sb3IiLCJjb2xvcm1vZGVsIl19KSx0cmFuc2Zvcm1zOnZvaWQgMH0pfSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4vY29uc3RhbnRzIjoxMDQyfV0sMTA0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vY29uc3RhbnRzIiksaT10KCJmYXN0LWlzbnVtZXJpYyIpLG89dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxzPXQoIi4uLy4uL2xpYiIpLm1heFJvd0xlbmd0aDtmdW5jdGlvbiBsKHQsZSxyLGEpe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gbi5jb25zdHJhaW4oKGktdCkqZSxyLGEpfX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBuLmNvbnN0cmFpbihyLHQsZSl9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG49by5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLHU9by5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIpLGg9bi5kMmMoZS54MCktZS5keC8yLGY9dS5kMmMoZS55MCktZS5keS8yLHA9ZS56Lmxlbmd0aCxkPXMoZS56KSxnPVtoLGgrZCplLmR4XSx2PVtmLGYrcCplLmR5XTtpZihuJiYibG9nIj09PW4udHlwZSlmb3Iocj0wO3I8ZDtyKyspZy5wdXNoKGgrciplLmR4KTtpZih1JiYibG9nIj09PXUudHlwZSlmb3Iocj0wO3I8cDtyKyspdi5wdXNoKGYrciplLmR5KTtyZXR1cm4gZS5fZXh0cmVtZXNbbi5faWRdPW8uZmluZEV4dHJlbWVzKG4sZyksZS5fZXh0cmVtZXNbdS5faWRdPW8uZmluZEV4dHJlbWVzKHUsdiksZS5fc2NhbGVyPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3Jtb2RlbCxyPWUubGVuZ3RoLG49YS5jb2xvcm1vZGVsW2VdO3QuX3NBcnJheT1bXTtmb3IodmFyIG89MDtvPHI7bysrKW4ubWluW29dIT09dC56bWluW29dfHxuLm1heFtvXSE9PXQuem1heFtvXT90Ll9zQXJyYXkucHVzaChsKHQuem1pbltvXSwobi5tYXhbb10tbi5taW5bb10pLyh0LnptYXhbb10tdC56bWluW29dKSxuLm1pbltvXSxuLm1heFtvXSkpOnQuX3NBcnJheS5wdXNoKGMobi5taW5bb10sbi5tYXhbb10pKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWUuc2xpY2UoMCxyKSxhPTA7YTxyO2ErKyl7dmFyIG89blthXTtpZighaShvKSlyZXR1cm4hMTtuW2FdPXQuX3NBcnJheVthXShvKX1yZXR1cm4gbn19KGUpLFt7eDA6aCx5MDpmLHo6ZS56LHc6ZCxoOnB9XX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vY29uc3RhbnRzIjoxMDQyLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sMTA0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2NvbG9ybW9kZWw6e3JnYjp7bWluOlswLDAsMF0sbWF4OlsyNTUsMjU1LDI1NV0sZm10OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKDAsMyl9LHN1ZmZpeDpbIiIsIiIsIiJdfSxyZ2JhOnttaW46WzAsMCwwLDBdLG1heDpbMjU1LDI1NSwyNTUsMV0sZm10OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKDAsNCl9LHN1ZmZpeDpbIiIsIiIsIiIsIiJdfSxoc2w6e21pbjpbMCwwLDBdLG1heDpbMzYwLDEwMCwxMDBdLGZtdDpmdW5jdGlvbih0KXt2YXIgZT10LnNsaWNlKDAsMyk7cmV0dXJuIGVbMV09ZVsxXSsiJSIsZVsyXT1lWzJdKyIlIixlfSxzdWZmaXg6WyJceGIwIiwiJSIsIiUiXX0saHNsYTp7bWluOlswLDAsMCwwXSxtYXg6WzM2MCwxMDAsMTAwLDFdLGZtdDpmdW5jdGlvbih0KXt2YXIgZT10LnNsaWNlKDAsNCk7cmV0dXJuIGVbMV09ZVsxXSsiJSIsZVsyXT1lWzJdKyIlIixlfSxzdWZmaXg6WyJceGIwIiwiJSIsIiUiLCIiXX19fX0se31dLDEwNDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4vY29uc3RhbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfXZhciBvPXIoInoiKTtpZih2b2lkIDAhPT1vJiZvLmxlbmd0aCYmb1swXSYmb1swXS5sZW5ndGgpe3IoIngwIikscigieTAiKSxyKCJkeCIpLHIoImR5Iik7dmFyIHM9cigiY29sb3Jtb2RlbCIpO3IoInptaW4iLGkuY29sb3Jtb2RlbFtzXS5taW4pLHIoInptYXgiLGkuY29sb3Jtb2RlbFtzXS5tYXgpLHIoInRleHQiKSxyKCJob3ZlcnRleHQiKSxyKCJob3ZlcnRlbXBsYXRlIiksZS5fbGVuZ3RoPW51bGx9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2F0dHJpYnV0ZXMiOjEwNDAsIi4vY29uc3RhbnRzIjoxMDQyfV0sMTA0NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4ieFZhbCJpbiBlJiYodC54PWUueFZhbCksInlWYWwiaW4gZSYmKHQueT1lLnlWYWwpLGUueGEmJih0LnhheGlzPWUueGEpLGUueWEmJih0LnlheGlzPWUueWEpLHQuY29sb3I9ZS5jb2xvcix0LmNvbG9ybW9kZWw9ZS50cmFjZS5jb2xvcm1vZGVsLHR9fSx7fV0sMTA0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4vY29uc3RhbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbz10LmNkWzBdLHM9by50cmFjZSxsPXQueGEsYz10LnlhO2lmKCEobi5pbmJveChlLW8ueDAsZS0oby54MCtvLncqcy5keCksMCk+MHx8bi5pbmJveChyLW8ueTAsci0oby55MCtvLmgqcy5keSksMCk+MCkpe3ZhciB1PU1hdGguZmxvb3IoKGUtby54MCkvcy5keCksaD1NYXRoLmZsb29yKE1hdGguYWJzKHItby55MCkvcy5keSk7aWYoby56W2hdW3VdKXt2YXIgZixwPW8uaGl8fHMuaG92ZXJpbmZvO2lmKHApe3ZhciBkPXAuc3BsaXQoIisiKTstMSE9PWQuaW5kZXhPZigiYWxsIikmJihkPVsiY29sb3IiXSksLTEhPT1kLmluZGV4T2YoImNvbG9yIikmJihmPSEwKX12YXIgZyx2PXMuY29sb3Jtb2RlbCxtPXYubGVuZ3RoLHk9cy5fc2NhbGVyKG8ueltoXVt1XSkseD1pLmNvbG9ybW9kZWxbdl0uc3VmZml4LGI9W107KHMuaG92ZXJ0ZW1wbGF0ZXx8ZikmJihiLnB1c2goIlsiK1t5WzBdK3hbMF0seVsxXSt4WzFdLHlbMl0reFsyXV0uam9pbigiLCAiKSksND09PW0mJmIucHVzaCgiLCAiK3lbM10reFszXSksYi5wdXNoKCJdIiksYj1iLmpvaW4oIiIpLHQuZXh0cmFUZXh0PXYudG9VcHBlckNhc2UoKSsiOiAiK2IpLEFycmF5LmlzQXJyYXkocy5ob3ZlcnRleHQpJiZBcnJheS5pc0FycmF5KHMuaG92ZXJ0ZXh0W2hdKT9nPXMuaG92ZXJ0ZXh0W2hdW3VdOkFycmF5LmlzQXJyYXkocy50ZXh0KSYmQXJyYXkuaXNBcnJheShzLnRleHRbaF0pJiYoZz1zLnRleHRbaF1bdV0pO3ZhciBfPWMuYzJwKG8ueTArKGgrLjUpKnMuZHkpLHc9by54MCsodSsuNSkqcy5keCxrPW8ueTArKGgrLjUpKnMuZHksVD0iWyIrby56W2hdW3VdLnNsaWNlKDAscy5jb2xvcm1vZGVsLmxlbmd0aCkuam9pbigiLCAiKSsiXSI7cmV0dXJuW2EuZXh0ZW5kRmxhdCh0LHtpbmRleDpbaCx1XSx4MDpsLmMycChvLngwK3Uqcy5keCkseDE6bC5jMnAoby54MCsodSsxKSpzLmR4KSx5MDpfLHkxOl8sY29sb3I6eSx4VmFsOncseExhYmVsVmFsOncseVZhbDprLHlMYWJlbFZhbDprLHpMYWJlbFZhbDpULHRleHQ6Zyxob3ZlcnRlbXBsYXRlTGFiZWxzOnt6TGFiZWw6VCxjb2xvckxhYmVsOmIsImNvbG9yWzBdTGFiZWwiOnlbMF0reFswXSwiY29sb3JbMV1MYWJlbCI6eVsxXSt4WzFdLCJjb2xvclsyXUxhYmVsIjp5WzJdK3hbMl0sImNvbG9yWzNdTGFiZWwiOnlbM10reFszXX19KV19fX19LHsiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9saWIiOjcxNywiLi9jb25zdGFudHMiOjEwNDJ9XSwxMDQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJpbWFnZSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImNhcnRlc2lhbiIsInN2ZyIsIjJkTWFwIiwibm9Tb3J0aW5nQnlWYWx1ZSJdLGFuaW1hdGFibGU6ITEsbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4vYXR0cmlidXRlcyI6MTA0MCwiLi9jYWxjIjoxMDQxLCIuL2RlZmF1bHRzIjoxMDQzLCIuL2V2ZW50X2RhdGEiOjEwNDQsIi4vaG92ZXIiOjEwNDUsIi4vcGxvdCI6MTA0NywiLi9zdHlsZSI6MTA0OH1dLDEwNDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxvPXQoIi4vY29uc3RhbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe3ZhciBsPWUueGF4aXMsYz1lLnlheGlzO2EubWFrZVRyYWNlR3JvdXBzKHMsciwiaW0iKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlLHIscyx1LGgsZixwPW4uc2VsZWN0KHRoaXMpLGQ9dFswXSxnPWQudHJhY2Usdj1kLnosbT1kLngwLHk9ZC55MCx4PWQudyxiPWQuaCxfPWcuZHgsdz1nLmR5O2ZvcihmPTA7dm9pZCAwPT09ZSYmZjx4OyllPWwuYzJwKG0rZipfKSxmKys7Zm9yKGY9eDt2b2lkIDA9PT1yJiZmPjA7KXI9bC5jMnAobStmKl8pLGYtLTtmb3IoZj0wO3ZvaWQgMD09PXUmJmY8YjspdT1jLmMycCh5K2YqdyksZisrO2ZvcihmPWI7dm9pZCAwPT09aCYmZj4wOyloPWMuYzJwKHkrZip3KSxmLS07cjxlJiYocz1yLHI9ZSxlPXMpLGg8dSYmKHM9dSx1PWgsaD1zKTtlPU1hdGgubWF4KC0uNSpsLl9sZW5ndGgsZSkscj1NYXRoLm1pbigxLjUqbC5fbGVuZ3RoLHIpLHU9TWF0aC5tYXgoLS41KmMuX2xlbmd0aCx1KSxoPU1hdGgubWluKDEuNSpjLl9sZW5ndGgsaCk7dmFyIGs9TWF0aC5yb3VuZChyLWUpLFQ9TWF0aC5yb3VuZChoLXUpO2lmKGs8PTB8fFQ8PTApe3Auc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEoW10pLmV4aXQoKS5yZW1vdmUoKX1lbHNle3ZhciBNPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO00ud2lkdGg9ayxNLmhlaWdodD1UO3ZhciBBLFM9TS5nZXRDb250ZXh0KCIyZCIpLEU9ZnVuY3Rpb24odCl7cmV0dXJuIGEuY29uc3RyYWluKE1hdGgucm91bmQobC5jMnAobSt0Kl8pLWUpLDAsayl9LEw9ZnVuY3Rpb24odCl7cmV0dXJuIGEuY29uc3RyYWluKE1hdGgucm91bmQoYy5jMnAoeSt0KncpLXUpLDAsVCl9LEM9by5jb2xvcm1vZGVsW2cuY29sb3Jtb2RlbF0uZm10O2ZvcihmPTA7ZjxkLnc7ZisrKXt2YXIgUD1FKGYpLE89RShmKzEpO2lmKE8hPT1QJiYhaXNOYU4oTykmJiFpc05hTihQKSlmb3IodmFyIHo9MDt6PGQuaDt6Kyspe3ZhciBJPUwoeiksRD1MKHorMSk7RD09PUl8fGlzTmFOKEQpfHxpc05hTihJKXx8IXZbel1bZl18fChBPWcuX3NjYWxlcih2W3pdW2ZdKSxTLmZpbGxTdHlsZT1BP2cuY29sb3Jtb2RlbCsiKCIrQyhBKS5qb2luKCIsIikrIikiOiJyZ2JhKDAsMCwwLDApIixTLmZpbGxSZWN0KFAsSSxPLVAsRC1JKSl9fXZhciBSPXAuc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEodCk7Ui5lbnRlcigpLmFwcGVuZCgic3ZnOmltYWdlIikuYXR0cih7eG1sbnM6aS5zdmcscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KSxSLmF0dHIoe2hlaWdodDpULHdpZHRoOmsseDplLHk6dSwieGxpbms6aHJlZiI6TS50b0RhdGFVUkwoImltYWdlL3BuZyIpfSl9fSl9fSx7Ii4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uLy4uL2xpYiI6NzE3LCIuL2NvbnN0YW50cyI6MTA0MixkMzoxNjV9XSwxMDQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe24uc2VsZWN0KHQpLnNlbGVjdEFsbCgiLmltIGltYWdlIikuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyYWNlLm9wYWNpdHl9KX19LHtkMzoxNjV9XSwxMDQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZERlZXAsaT10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsbz10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmlidXRlcyxjPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyIpLHU9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5LGg9dCgiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIiksZj0odCgiLi4vLi4vY29uc3RhbnRzL2RvY3MiKS5GT1JNQVRfTElOSyxvKHtlZGl0VHlwZToicGxvdCIsY29sb3JFZGl0VHlwZToicGxvdCJ9KSkscD17Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToicGxvdCJ9LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpzLmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJwbG90In0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6ImNhbGMifSx0aGlja25lc3M6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6ImNhbGMifSxkPXt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InBsb3QifSx7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToicGxvdCJ9XSxlZGl0VHlwZToicGxvdCJ9LGc9dSgic3RlcCIsYSh7fSxwLHtyYW5nZTpkfSkpO2UuZXhwb3J0cz17bW9kZTp7dmFsVHlwZToiZmxhZ2xpc3QiLGVkaXRUeXBlOiJjYWxjIixmbGFnczpbIm51bWJlciIsImRlbHRhIiwiZ2F1Z2UiXSxkZmx0OiJudW1iZXIifSx2YWx1ZTp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyIsYW5pbTohMH0sYWxpZ246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGVkaXRUeXBlOiJwbG90In0sZG9tYWluOmwoe25hbWU6ImluZGljYXRvciIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSksdGl0bGU6e3RleHQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6InBsb3QifSxhbGlnbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZWRpdFR5cGU6InBsb3QifSxmb250Om4oe30sZix7fSksZWRpdFR5cGU6InBsb3QifSxudW1iZXI6e3ZhbHVlZm9ybWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InBsb3QifSxmb250Om4oe30sZix7fSkscHJlZml4Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InBsb3QifSxzdWZmaXg6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sZGVsdGE6e3JlZmVyZW5jZTp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LHBvc2l0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSxkZmx0OiJib3R0b20iLGVkaXRUeXBlOiJwbG90In0scmVsYXRpdmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJwbG90IixkZmx0OiExfSx2YWx1ZWZvcm1hdDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToicGxvdCJ9LGluY3JlYXNpbmc6e3N5bWJvbDp7dmFsVHlwZToic3RyaW5nIixkZmx0OmguSU5DUkVBU0lORy5TWU1CT0wsZWRpdFR5cGU6InBsb3QifSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aC5JTkNSRUFTSU5HLkNPTE9SLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSxkZWNyZWFzaW5nOntzeW1ib2w6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDpoLkRFQ1JFQVNJTkcuU1lNQk9MLGVkaXRUeXBlOiJwbG90In0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmguREVDUkVBU0lORy5DT0xPUixlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sZm9udDpuKHt9LGYse30pLGVkaXRUeXBlOiJjYWxjIn0sZ2F1Z2U6e3NoYXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIixlZGl0VHlwZToicGxvdCIsZGZsdDoiYW5ndWxhciIsdmFsdWVzOlsiYW5ndWxhciIsImJ1bGxldCJdfSxiYXI6YSh7fSxwLHtjb2xvcjp7ZGZsdDoiZ3JlZW4ifX0pLGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToicGxvdCJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpzLmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJwbG90In0sYm9yZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJwbG90In0sYXhpczppKHtyYW5nZTpkLHZpc2libGU6bih7fSxjLnZpc2libGUse2RmbHQ6ITB9KSx0aWNrbW9kZTpjLnRpY2ttb2RlLG50aWNrczpjLm50aWNrcyx0aWNrMDpjLnRpY2swLGR0aWNrOmMuZHRpY2ssdGlja3ZhbHM6Yy50aWNrdmFscyx0aWNrdGV4dDpjLnRpY2t0ZXh0LHRpY2tzOm4oe30sYy50aWNrcyx7ZGZsdDoib3V0c2lkZSJ9KSx0aWNrbGVuOmMudGlja2xlbix0aWNrd2lkdGg6Yy50aWNrd2lkdGgsdGlja2NvbG9yOmMudGlja2NvbG9yLHNob3d0aWNrbGFiZWxzOmMuc2hvd3RpY2tsYWJlbHMsdGlja2ZvbnQ6byh7fSksdGlja2FuZ2xlOmMudGlja2FuZ2xlLHRpY2tmb3JtYXQ6Yy50aWNrZm9ybWF0LHRpY2tmb3JtYXRzdG9wczpjLnRpY2tmb3JtYXRzdG9wcyx0aWNrcHJlZml4OmMudGlja3ByZWZpeCxzaG93dGlja3ByZWZpeDpjLnNob3d0aWNrcHJlZml4LHRpY2tzdWZmaXg6Yy50aWNrc3VmZml4LHNob3d0aWNrc3VmZml4OmMuc2hvd3RpY2tzdWZmaXgsc2VwYXJhdGV0aG91c2FuZHM6Yy5zZXBhcmF0ZXRob3VzYW5kcyxleHBvbmVudGZvcm1hdDpjLmV4cG9uZW50Zm9ybWF0LHNob3dleHBvbmVudDpjLnNob3dleHBvbmVudCxlZGl0VHlwZToicGxvdCJ9LCJwbG90Iiksc3RlcHM6Zyx0aHJlc2hvbGQ6e2xpbmU6e2NvbG9yOm4oe30scC5saW5lLmNvbG9yLHt9KSx3aWR0aDpuKHt9LHAubGluZS53aWR0aCx7ZGZsdDoxfSksZWRpdFR5cGU6InBsb3QifSx0aGlja25lc3M6bih7fSxwLnRoaWNrbmVzcyx7ZGZsdDouODV9KSx2YWx1ZTp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyIsZGZsdDohMX0sZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIjo2ODcsIi4uLy4uL2NvbnN0YW50cy9kb2NzIjo2ODgsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc3LCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTF9XSwxMDUwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIik7ci5uYW1lPSJpbmRpY2F0b3IiLHIucGxvdD1mdW5jdGlvbih0LGUsYSxpKXtuLnBsb3RCYXNlUGxvdChyLm5hbWUsdCxlLGEsaSl9LHIuY2xlYW49ZnVuY3Rpb24odCxlLGEsaSl7bi5jbGVhbkJhc2VQbG90KHIubmFtZSx0LGUsYSxpKX19LHsiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNn1dLDEwNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjYWxjOmZ1bmN0aW9uKHQsZSl7dmFyIHI9W10sbj1lLnZhbHVlOyJudW1iZXIiIT10eXBlb2YgZS5fbGFzdFZhbHVlJiYoZS5fbGFzdFZhbHVlPWUudmFsdWUpO3ZhciBhPWUuX2xhc3RWYWx1ZSxpPWE7cmV0dXJuIGUuX2hhc0RlbHRhJiYibnVtYmVyIj09dHlwZW9mIGUuZGVsdGEucmVmZXJlbmNlJiYoaT1lLmRlbHRhLnJlZmVyZW5jZSksclswXT17eTpuLGxhc3RZOmEsZGVsdGE6bi1pLHJlbGF0aXZlRGVsdGE6KG4taSkvaX0scn19fSx7fV0sMTA1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2RlZmF1bHROdW1iZXJGb250U2l6ZTo4MCxidWxsZXROdW1iZXJEb21haW5TaXplOi4yNSxidWxsZXRQYWRkaW5nOi4wMjUsaW5uZXJSYWRpdXM6Ljc1LHZhbHVlVGhpY2tuZXNzOi41LHRpdGxlUGFkZGluZzo1LGhvcml6b250YWxQYWRkaW5nOjEwfX0se31dLDEwNTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRlZmF1bHRzLG89dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLHM9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbD10KCIuL2NvbnN0YW50cy5qcyIpLGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiKSx1PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVsdHMiKSxoPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIik7ZnVuY3Rpb24gZih0LGUpe2Z1bmN0aW9uIHIocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEuZ2F1Z2Uuc3RlcHMscixpKX1yKCJjb2xvciIpLHIoImxpbmUuY29sb3IiKSxyKCJsaW5lLndpZHRoIikscigicmFuZ2UiKSxyKCJ0aGlja25lc3MiKX1lLmV4cG9ydHM9e3N1cHBseURlZmF1bHRzOmZ1bmN0aW9uKHQsZSxyLHApe2Z1bmN0aW9uIGQocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX1pKGUscCxkKSxkKCJtb2RlIiksZS5faGFzTnVtYmVyPS0xIT09ZS5tb2RlLmluZGV4T2YoIm51bWJlciIpLGUuX2hhc0RlbHRhPS0xIT09ZS5tb2RlLmluZGV4T2YoImRlbHRhIiksZS5faGFzR2F1Z2U9LTEhPT1lLm1vZGUuaW5kZXhPZigiZ2F1Z2UiKTt2YXIgZz1kKCJ2YWx1ZSIpO2UuX3JhbmdlPVswLCJudW1iZXIiPT10eXBlb2YgZz8xLjUqZzoxXTt2YXIgdixtLHkseCxiLF8sdz1uZXcgQXJyYXkoMik7ZnVuY3Rpb24gayh0LGUpe3JldHVybiBuLmNvZXJjZSh5LHgsYS5nYXVnZSx0LGUpfWZ1bmN0aW9uIFQodCxlKXtyZXR1cm4gbi5jb2VyY2UoYixfLGEuZ2F1Z2UuYXhpcyx0LGUpfWlmKGUuX2hhc051bWJlciYmKGQoIm51bWJlci52YWx1ZWZvcm1hdCIpLGQoIm51bWJlci5mb250LmNvbG9yIixwLmZvbnQuY29sb3IpLGQoIm51bWJlci5mb250LmZhbWlseSIscC5mb250LmZhbWlseSksZCgibnVtYmVyLmZvbnQuc2l6ZSIpLHZvaWQgMD09PWUubnVtYmVyLmZvbnQuc2l6ZSYmKGUubnVtYmVyLmZvbnQuc2l6ZT1sLmRlZmF1bHROdW1iZXJGb250U2l6ZSx3WzBdPSEwKSxkKCJudW1iZXIucHJlZml4IiksZCgibnVtYmVyLnN1ZmZpeCIpLHY9ZS5udW1iZXIuZm9udC5zaXplKSxlLl9oYXNEZWx0YSYmKGQoImRlbHRhLmZvbnQuY29sb3IiLHAuZm9udC5jb2xvciksZCgiZGVsdGEuZm9udC5mYW1pbHkiLHAuZm9udC5mYW1pbHkpLGQoImRlbHRhLmZvbnQuc2l6ZSIpLHZvaWQgMD09PWUuZGVsdGEuZm9udC5zaXplJiYoZS5kZWx0YS5mb250LnNpemU9KGUuX2hhc051bWJlcj8uNToxKSoodnx8bC5kZWZhdWx0TnVtYmVyRm9udFNpemUpLHdbMV09ITApLGQoImRlbHRhLnJlZmVyZW5jZSIsZS52YWx1ZSksZCgiZGVsdGEucmVsYXRpdmUiKSxkKCJkZWx0YS52YWx1ZWZvcm1hdCIsZS5kZWx0YS5yZWxhdGl2ZT8iMiUiOiIiKSxkKCJkZWx0YS5pbmNyZWFzaW5nLnN5bWJvbCIpLGQoImRlbHRhLmluY3JlYXNpbmcuY29sb3IiKSxkKCJkZWx0YS5kZWNyZWFzaW5nLnN5bWJvbCIpLGQoImRlbHRhLmRlY3JlYXNpbmcuY29sb3IiKSxkKCJkZWx0YS5wb3NpdGlvbiIpLG09ZS5kZWx0YS5mb250LnNpemUpLGUuX3NjYWxlTnVtYmVycz0oIWUuX2hhc051bWJlcnx8d1swXSkmJighZS5faGFzRGVsdGF8fHdbMV0pfHwhMSxkKCJ0aXRsZS5mb250LmNvbG9yIixwLmZvbnQuY29sb3IpLGQoInRpdGxlLmZvbnQuZmFtaWx5IixwLmZvbnQuZmFtaWx5KSxkKCJ0aXRsZS5mb250LnNpemUiLC4yNSoodnx8bXx8bC5kZWZhdWx0TnVtYmVyRm9udFNpemUpKSxkKCJ0aXRsZS50ZXh0IiksZS5faGFzR2F1Z2Upeyh5PXQuZ2F1Z2UpfHwoeT17fSkseD1vLm5ld0NvbnRhaW5lcihlLCJnYXVnZSIpLGsoInNoYXBlIiksKGUuX2lzQnVsbGV0PSJidWxsZXQiPT09ZS5nYXVnZS5zaGFwZSl8fGQoInRpdGxlLmFsaWduIiwiY2VudGVyIiksKGUuX2lzQW5ndWxhcj0iYW5ndWxhciI9PT1lLmdhdWdlLnNoYXBlKXx8ZCgiYWxpZ24iLCJjZW50ZXIiKSxrKCJiZ2NvbG9yIixwLnBhcGVyX2JnY29sb3IpLGsoImJvcmRlcndpZHRoIiksaygiYm9yZGVyY29sb3IiKSxrKCJiYXIuY29sb3IiKSxrKCJiYXIubGluZS5jb2xvciIpLGsoImJhci5saW5lLndpZHRoIiksaygiYmFyLnRoaWNrbmVzcyIsbC52YWx1ZVRoaWNrbmVzcyooImJ1bGxldCI9PT1lLmdhdWdlLnNoYXBlPy41OjEpKSxzKHkseCx7bmFtZToic3RlcHMiLGhhbmRsZUl0ZW1EZWZhdWx0czpmfSksaygidGhyZXNob2xkLnZhbHVlIiksaygidGhyZXNob2xkLnRoaWNrbmVzcyIpLGsoInRocmVzaG9sZC5saW5lLndpZHRoIiksaygidGhyZXNob2xkLmxpbmUuY29sb3IiKSxiPXt9LHkmJihiPXkuYXhpc3x8e30pLF89by5uZXdDb250YWluZXIoeCwiYXhpcyIpLFQoInZpc2libGUiKSxlLl9yYW5nZT1UKCJyYW5nZSIsZS5fcmFuZ2UpO3ZhciBNPXtvdXRlclRpY2tzOiEwfTtjKGIsXyxULCJsaW5lYXIiKSxoKGIsXyxULCJsaW5lYXIiLE0pLHUoYixfLFQsTSl9ZWxzZSBkKCJ0aXRsZS5hbGlnbiIsImNlbnRlciIpLGQoImFsaWduIiwiY2VudGVyIiksZS5faXNBbmd1bGFyPWUuX2lzQnVsbGV0PSExO2UuX2xlbmd0aD1udWxsfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIjo3ODQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVsdHMiOjc4NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjc4NiwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4vYXR0cmlidXRlcyI6MTA0OSwiLi9jb25zdGFudHMuanMiOjEwNTJ9XSwxMDU0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImluZGljYXRvciIsYmFzZVBsb3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3QiKSxjYXRlZ29yaWVzOlsic3ZnIiwibm9PcGFjaXR5Iiwibm9Ib3ZlciJdLGFuaW1hdGFibGU6ITAsYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY2FsYzp0KCIuL2NhbGMiKS5jYWxjLHBsb3Q6dCgiLi9wbG90IiksbWV0YTp7fX19LHsiLi9hdHRyaWJ1dGVzIjoxMDQ5LCIuL2Jhc2VfcGxvdCI6MTA1MCwiLi9jYWxjIjoxMDUxLCIuL2RlZmF1bHRzIjoxMDUzLCIuL3Bsb3QiOjEwNTV9XSwxMDU1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxpPWEucmFkMmRlZyxvPXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5NSURfU0hJRlQscz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxsPXQoIi4vY29uc3RhbnRzIiksYz10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSx1PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19kZWZhdWx0cyIpLGY9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Bvc2l0aW9uX2RlZmF1bHRzIikscD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxkPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxnPXtsZWZ0OiJzdGFydCIsY2VudGVyOiJtaWRkbGUiLHJpZ2h0OiJlbmQifSx2PXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9LG09L1t5emFmcG5ceGI1bWtNR1RQRVpZXS87ZnVuY3Rpb24geSh0KXtyZXR1cm4gdCYmdC5kdXJhdGlvbj4wfWZ1bmN0aW9uIHgodCl7dC5lYWNoKGZ1bmN0aW9uKHQpe2Quc3Ryb2tlKG4uc2VsZWN0KHRoaXMpLHQubGluZS5jb2xvcil9KS5lYWNoKGZ1bmN0aW9uKHQpe2QuZmlsbChuLnNlbGVjdCh0aGlzKSx0LmNvbG9yKX0pLnN0eWxlKCJzdHJva2Utd2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmxpbmUud2lkdGh9KX1mdW5jdGlvbiBiKHQsZSxyKXt2YXIgbj10Ll9mdWxsTGF5b3V0LGk9YS5leHRlbmRGbGF0KHt0eXBlOiJsaW5lYXIiLHRpY2tzOiJvdXRzaWRlIixyYW5nZTpyLHNob3dsaW5lOiEwfSxlKSxvPXt0eXBlOiJsaW5lYXIiLF9pZDoieCIrZS5faWR9LHM9e2xldHRlcjoieCIsZm9udDpuLmZvbnQsbm9Ib3ZlcjohMCxub1RpY2tzb246ITB9O2Z1bmN0aW9uIGwodCxlKXtyZXR1cm4gYS5jb2VyY2UoaSxvLHAsdCxlKX1yZXR1cm4gaChpLG8sbCxzLG4pLGYoaSxvLGwscyksb31mdW5jdGlvbiBfKHQsZSl7cmV0dXJuInRyYW5zbGF0ZSgiK3QrIiwiK2UrIikifWZ1bmN0aW9uIHcodCxlLHIpe3JldHVybltNYXRoLm1pbihlL3Qud2lkdGgsci90LmhlaWdodCksdCxlKyJ4IityXX1mdW5jdGlvbiBrKHQsZSxyLGEpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iiksbz1uLnNlbGVjdChpKTtyZXR1cm4gby50ZXh0KHQpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoInRleHQtYW5jaG9yIixyKS5hdHRyKCJkYXRhLXVuZm9ybWF0dGVkIix0KS5jYWxsKGMuY29udmVydFRvVHNwYW5zLGEpLmNhbGwocy5mb250LGUpLHMuYkJveChvLm5vZGUoKSl9ZnVuY3Rpb24gVCh0LGUscixuLGksbyl7dmFyIHM9Il9jYWNoZSIrZTt0W3NdJiZ0W3NdLmtleT09PWl8fCh0W3NdPXtrZXk6aSx2YWx1ZTpyfSk7dmFyIGw9YS5hZ2dOdW1zKG8sbnVsbCxbdFtzXS52YWx1ZSxuXSwyKTtyZXR1cm4gdFtzXS52YWx1ZT1sLGx9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGgpe3ZhciBmLHA9dC5fZnVsbExheW91dDt5KHIpJiZoJiYoZj1oKCkpLGEubWFrZVRyYWNlR3JvdXBzKHAuX2luZGljYXRvcmxheWVyLGUsInRyYWNlIikuZWFjaChmdW5jdGlvbihlKXt2YXIgaCxNLEEsUyxFLEw9ZVswXS50cmFjZSxDPW4uc2VsZWN0KHRoaXMpLFA9TC5faGFzR2F1Z2UsTz1MLl9pc0FuZ3VsYXIsej1MLl9pc0J1bGxldCxJPUwuZG9tYWluLEQ9e3c6cC5fc2l6ZS53KihJLnhbMV0tSS54WzBdKSxoOnAuX3NpemUuaCooSS55WzFdLUkueVswXSksbDpwLl9zaXplLmwrcC5fc2l6ZS53KkkueFswXSxyOnAuX3NpemUucitwLl9zaXplLncqKDEtSS54WzFdKSx0OnAuX3NpemUudCtwLl9zaXplLmgqKDEtSS55WzFdKSxiOnAuX3NpemUuYitwLl9zaXplLmgqSS55WzBdfSxSPUQubCtELncvMixGPUQudCtELmgvMixCPU1hdGgubWluKEQudy8yLEQuaCksTj1sLmlubmVyUmFkaXVzKkIsaj1MLmFsaWdufHwiY2VudGVyIjtpZihNPUYsUCl7aWYoTyYmKGg9UixNPUYrQi8yLEE9ZnVuY3Rpb24odCl7cmV0dXJuIGU9dCxyPS45Kk4sbj1NYXRoLnNxcnQoZS53aWR0aC8yKihlLndpZHRoLzIpK2UuaGVpZ2h0KmUuaGVpZ2h0KSxbci9uLGUscl07dmFyIGUscixufSkseil7dmFyIFY9bC5idWxsZXRQYWRkaW5nLFU9MS1sLmJ1bGxldE51bWJlckRvbWFpblNpemUrVjtoPUQubCsoVSsoMS1VKSp2W2pdKSpELncsQT1mdW5jdGlvbih0KXtyZXR1cm4gdyh0LChsLmJ1bGxldE51bWJlckRvbWFpblNpemUtVikqRC53LEQuaCl9fX1lbHNlIGg9RC5sK3Zbal0qRC53LEE9ZnVuY3Rpb24odCl7cmV0dXJuIHcodCxELncsRC5oKX07IWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvLGwsaCxmPXJbMF0udHJhY2UscD1pLm51bWJlcnNYLHg9aS5udW1iZXJzWSx3PWYuYWxpZ258fCJjZW50ZXIiLE09Z1t3XSxBPWkudHJhbnNpdGlvbk9wdHMsUz1pLm9uQ29tcGxldGUsRT1hLmVuc3VyZVNpbmdsZShlLCJnIiwibnVtYmVycyIpLEw9W107Zi5faGFzTnVtYmVyJiZMLnB1c2goIm51bWJlciIpO2YuX2hhc0RlbHRhJiYoTC5wdXNoKCJkZWx0YSIpLCJsZWZ0Ij09PWYuZGVsdGEucG9zaXRpb24mJkwucmV2ZXJzZSgpKTt2YXIgQz1FLnNlbGVjdEFsbCgidGV4dCIpLmRhdGEoTCk7ZnVuY3Rpb24gUChlLHIsbixhKXtpZighZS5tYXRjaCgicyIpfHxuPj0wPT1hPj0wfHxyKG4pLnNsaWNlKC0xKS5tYXRjaChtKXx8cihhKS5zbGljZSgtMSkubWF0Y2gobSkpcmV0dXJuIHI7dmFyIGk9ZS5zbGljZSgpLnJlcGxhY2UoInMiLCJmIikucmVwbGFjZSgvXGQrLyxmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCktMX0pLG89Yih0LHt0aWNrZm9ybWF0Oml9KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHQpPDE/dS50aWNrVGV4dChvLHQpLnRleHQ6cih0KX19Qy5lbnRlcigpLmFwcGVuZCgidGV4dCIpLEMuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0aW9uKCl7cmV0dXJuIE19KS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuIHR9KS5hdHRyKCJ4IixudWxsKS5hdHRyKCJ5IixudWxsKS5hdHRyKCJkeCIsbnVsbCkuYXR0cigiZHkiLG51bGwpLEMuZXhpdCgpLnJlbW92ZSgpO3ZhciBPLHo9Zi5tb2RlK2YuYWxpZ247Zi5faGFzRGVsdGEmJihPPWZ1bmN0aW9uKCl7dmFyIGU9Yih0LHt0aWNrZm9ybWF0OmYuZGVsdGEudmFsdWVmb3JtYXR9LGYuX3JhbmdlKTtlLnNldFNjYWxlKCksdS5wcmVwVGlja3MoZSk7dmFyIGE9ZnVuY3Rpb24odCl7cmV0dXJuIHUudGlja1RleHQoZSx0KS50ZXh0fSxpPWZ1bmN0aW9uKHQpe3ZhciBlPWYuZGVsdGEucmVsYXRpdmU/dC5yZWxhdGl2ZURlbHRhOnQuZGVsdGE7cmV0dXJuIGV9LG89ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PXR8fCJudW1iZXIiIT10eXBlb2YgdHx8aXNOYU4odCk/Ii0iOih0PjA/Zi5kZWx0YS5pbmNyZWFzaW5nLnN5bWJvbDpmLmRlbHRhLmRlY3JlYXNpbmcuc3ltYm9sKStlKHQpfSxoPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlbHRhPj0wP2YuZGVsdGEuaW5jcmVhc2luZy5jb2xvcjpmLmRlbHRhLmRlY3JlYXNpbmcuY29sb3J9O3ZvaWQgMD09PWYuX2RlbHRhTGFzdFZhbHVlJiYoZi5fZGVsdGFMYXN0VmFsdWU9aShyWzBdKSk7dmFyIHA9RS5zZWxlY3QoInRleHQuZGVsdGEiKTtmdW5jdGlvbiBnKCl7cC50ZXh0KG8oaShyWzBdKSxhKSkuY2FsbChkLmZpbGwsaChyWzBdKSkuY2FsbChjLmNvbnZlcnRUb1RzcGFucyx0KX1wLmNhbGwocy5mb250LGYuZGVsdGEuZm9udCkuY2FsbChkLmZpbGwsaCh7ZGVsdGE6Zi5fZGVsdGFMYXN0VmFsdWV9KSkseShBKT9wLnRyYW5zaXRpb24oKS5kdXJhdGlvbihBLmR1cmF0aW9uKS5lYXNlKEEuZWFzaW5nKS50d2VlbigidGV4dCIsZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxlPWkoclswXSkscz1mLl9kZWx0YUxhc3RWYWx1ZSxsPVAoZi5kZWx0YS52YWx1ZWZvcm1hdCxhLHMsZSksYz1uLmludGVycG9sYXRlTnVtYmVyKHMsZSk7cmV0dXJuIGYuX2RlbHRhTGFzdFZhbHVlPWUsZnVuY3Rpb24oZSl7dC50ZXh0KG8oYyhlKSxsKSksdC5jYWxsKGQuZmlsbCxoKHtkZWx0YTpjKGUpfSkpfX0pLmVhY2goImVuZCIsZnVuY3Rpb24oKXtnKCksUyYmUygpfSkuZWFjaCgiaW50ZXJydXB0IixmdW5jdGlvbigpe2coKSxTJiZTKCl9KTpnKCk7cmV0dXJuIGw9ayhvKGkoclswXSksYSksZi5kZWx0YS5mb250LE0sdCkscH0oKSx6Kz1mLmRlbHRhLnBvc2l0aW9uK2YuZGVsdGEuZm9udC5zaXplK2YuZGVsdGEuZm9udC5mYW1pbHkrZi5kZWx0YS52YWx1ZWZvcm1hdCx6Kz1mLmRlbHRhLmluY3JlYXNpbmcuc3ltYm9sK2YuZGVsdGEuZGVjcmVhc2luZy5zeW1ib2wsaD1sKTtmLl9oYXNOdW1iZXImJighZnVuY3Rpb24oKXt2YXIgZT1iKHQse3RpY2tmb3JtYXQ6Zi5udW1iZXIudmFsdWVmb3JtYXR9LGYuX3JhbmdlKTtlLnNldFNjYWxlKCksdS5wcmVwVGlja3MoZSk7dmFyIGE9ZnVuY3Rpb24odCl7cmV0dXJuIHUudGlja1RleHQoZSx0KS50ZXh0fSxpPWYubnVtYmVyLnN1ZmZpeCxsPWYubnVtYmVyLnByZWZpeCxoPUUuc2VsZWN0KCJ0ZXh0Lm51bWJlciIpO2Z1bmN0aW9uIHAoKXt2YXIgZT0ibnVtYmVyIj09dHlwZW9mIHJbMF0ueT9sK2EoclswXS55KStpOiItIjtoLnRleHQoZSkuY2FsbChzLmZvbnQsZi5udW1iZXIuZm9udCkuY2FsbChjLmNvbnZlcnRUb1RzcGFucyx0KX15KEEpP2gudHJhbnNpdGlvbigpLmR1cmF0aW9uKEEuZHVyYXRpb24pLmVhc2UoQS5lYXNpbmcpLmVhY2goImVuZCIsZnVuY3Rpb24oKXtwKCksUyYmUygpfSkuZWFjaCgiaW50ZXJydXB0IixmdW5jdGlvbigpe3AoKSxTJiZTKCl9KS5hdHRyVHdlZW4oInRleHQiLGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyksZT1uLmludGVycG9sYXRlTnVtYmVyKHJbMF0ubGFzdFksclswXS55KTtmLl9sYXN0VmFsdWU9clswXS55O3ZhciBvPVAoZi5udW1iZXIudmFsdWVmb3JtYXQsYSxyWzBdLmxhc3RZLHJbMF0ueSk7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudGV4dChsK28oZShyKSkraSl9fSk6cCgpO289ayhsK2EoclswXS55KStpLGYubnVtYmVyLmZvbnQsTSx0KX0oKSx6Kz1mLm51bWJlci5mb250LnNpemUrZi5udW1iZXIuZm9udC5mYW1pbHkrZi5udW1iZXIudmFsdWVmb3JtYXQrZi5udW1iZXIuc3VmZml4K2YubnVtYmVyLnByZWZpeCxoPW8pO2lmKGYuX2hhc0RlbHRhJiZmLl9oYXNOdW1iZXIpe3ZhciBJLEQsUj1bKG8ubGVmdCtvLnJpZ2h0KS8yLChvLnRvcCtvLmJvdHRvbSkvMl0sRj1bKGwubGVmdCtsLnJpZ2h0KS8yLChsLnRvcCtsLmJvdHRvbSkvMl0sQj0uNzUqZi5kZWx0YS5mb250LnNpemU7ImxlZnQiPT09Zi5kZWx0YS5wb3NpdGlvbiYmKEk9VChmLCJkZWx0YVBvcyIsMCwtMSooby53aWR0aCp2W2YuYWxpZ25dK2wud2lkdGgqKDEtdltmLmFsaWduXSkrQikseixNYXRoLm1pbiksRD1SWzFdLUZbMV0saD17d2lkdGg6by53aWR0aCtsLndpZHRoK0IsaGVpZ2h0Ok1hdGgubWF4KG8uaGVpZ2h0LGwuaGVpZ2h0KSxsZWZ0OmwubGVmdCtJLHJpZ2h0Om8ucmlnaHQsdG9wOk1hdGgubWluKG8udG9wLGwudG9wK0QpLGJvdHRvbTpNYXRoLm1heChvLmJvdHRvbSxsLmJvdHRvbStEKX0pLCJyaWdodCI9PT1mLmRlbHRhLnBvc2l0aW9uJiYoST1UKGYsImRlbHRhUG9zIiwwLG8ud2lkdGgqKDEtdltmLmFsaWduXSkrbC53aWR0aCp2W2YuYWxpZ25dK0IseixNYXRoLm1heCksRD1SWzFdLUZbMV0saD17d2lkdGg6by53aWR0aCtsLndpZHRoK0IsaGVpZ2h0Ok1hdGgubWF4KG8uaGVpZ2h0LGwuaGVpZ2h0KSxsZWZ0Om8ubGVmdCxyaWdodDpsLnJpZ2h0K0ksdG9wOk1hdGgubWluKG8udG9wLGwudG9wK0QpLGJvdHRvbTpNYXRoLm1heChvLmJvdHRvbSxsLmJvdHRvbStEKX0pLCJib3R0b20iPT09Zi5kZWx0YS5wb3NpdGlvbiYmKEk9bnVsbCxEPWwuaGVpZ2h0LGg9e3dpZHRoOk1hdGgubWF4KG8ud2lkdGgsbC53aWR0aCksaGVpZ2h0Om8uaGVpZ2h0K2wuaGVpZ2h0LGxlZnQ6TWF0aC5taW4oby5sZWZ0LGwubGVmdCkscmlnaHQ6TWF0aC5tYXgoby5yaWdodCxsLnJpZ2h0KSx0b3A6by5ib3R0b20tby5oZWlnaHQsYm90dG9tOm8uYm90dG9tK2wuaGVpZ2h0fSksInRvcCI9PT1mLmRlbHRhLnBvc2l0aW9uJiYoST1udWxsLEQ9by50b3AsaD17d2lkdGg6TWF0aC5tYXgoby53aWR0aCxsLndpZHRoKSxoZWlnaHQ6by5oZWlnaHQrbC5oZWlnaHQsbGVmdDpNYXRoLm1pbihvLmxlZnQsbC5sZWZ0KSxyaWdodDpNYXRoLm1heChvLnJpZ2h0LGwucmlnaHQpLHRvcDpvLmJvdHRvbS1vLmhlaWdodC1sLmhlaWdodCxib3R0b206by5ib3R0b219KSxPLmF0dHIoe2R4OkksZHk6RH0pfShmLl9oYXNOdW1iZXJ8fGYuX2hhc0RlbHRhKSYmRS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKCl7dmFyIHQ9aS5udW1iZXJzU2NhbGVyKGgpO3orPXRbMl07dmFyIGUscj1UKGYsIm51bWJlcnNTY2FsZSIsMSx0WzBdLHosTWF0aC5taW4pO2YuX3NjYWxlTnVtYmVyc3x8KHI9MSksZT1mLl9pc0FuZ3VsYXI/eC1yKmguYm90dG9tOngtciooaC50b3AraC5ib3R0b20pLzIsZi5fbnVtYmVyc1RvcD1yKmgudG9wK2U7dmFyIG49aFt3XTsiY2VudGVyIj09PXcmJihuPShoLmxlZnQraC5yaWdodCkvMik7dmFyIGE9cC1yKm47cmV0dXJuIF8oYT1UKGYsIm51bWJlcnNUcmFuc2xhdGUiLDAsYSx6LE1hdGgubWF4KSxlKSsiIHNjYWxlKCIrcisiKSJ9KX0odCxDLGUse251bWJlcnNYOmgsbnVtYmVyc1k6TSxudW1iZXJzU2NhbGVyOkEsdHJhbnNpdGlvbk9wdHM6cixvbkNvbXBsZXRlOmZ9KSxQJiYoUz17cmFuZ2U6TC5nYXVnZS5heGlzLnJhbmdlLGNvbG9yOkwuZ2F1Z2UuYmdjb2xvcixsaW5lOntjb2xvcjpMLmdhdWdlLmJvcmRlcmNvbG9yLHdpZHRoOjB9LHRoaWNrbmVzczoxfSxFPXtyYW5nZTpMLmdhdWdlLmF4aXMucmFuZ2UsY29sb3I6InJnYmEoMCwgMCwgMCwgMCkiLGxpbmU6e2NvbG9yOkwuZ2F1Z2UuYm9yZGVyY29sb3Isd2lkdGg6TC5nYXVnZS5ib3JkZXJ3aWR0aH0sdGhpY2tuZXNzOjF9KTt2YXIgcT1DLnNlbGVjdEFsbCgiZy5hbmd1bGFyIikuZGF0YShPP2U6W10pO3EuZXhpdCgpLnJlbW92ZSgpO3ZhciBIPUMuc2VsZWN0QWxsKCJnLmFuZ3VsYXJheGlzIikuZGF0YShPP2U6W10pO0guZXhpdCgpLnJlbW92ZSgpLE8mJmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBzLGwsYyxoLGY9clswXS50cmFjZSxwPWEuc2l6ZSxkPWEucmFkaXVzLGc9YS5pbm5lclJhZGl1cyx2PWEuZ2F1Z2VCZyxtPWEuZ2F1Z2VPdXRsaW5lLHc9W3AubCtwLncvMixwLnQrcC5oLzIrZC8yXSxrPWEuZ2F1Z2UsVD1hLmxheWVyLE09YS50cmFuc2l0aW9uT3B0cyxBPWEub25Db21wbGV0ZSxTPU1hdGguUEkvMjtmdW5jdGlvbiBFKHQpe3ZhciBlPWYuZ2F1Z2UuYXhpcy5yYW5nZVswXSxyPWYuZ2F1Z2UuYXhpcy5yYW5nZVsxXSxuPSh0LWUpLyhyLWUpKk1hdGguUEktUztyZXR1cm4gbjwtUz8tUzpuPlM/UzpufWZ1bmN0aW9uIEwodCl7cmV0dXJuIG4uc3ZnLmFyYygpLmlubmVyUmFkaXVzKChnK2QpLzItdC8yKihkLWcpKS5vdXRlclJhZGl1cygoZytkKS8yK3QvMiooZC1nKSkuc3RhcnRBbmdsZSgtUyl9ZnVuY3Rpb24gQyh0KXt0LmF0dHIoImQiLGZ1bmN0aW9uKHQpe3JldHVybiBMKHQudGhpY2tuZXNzKS5zdGFydEFuZ2xlKEUodC5yYW5nZVswXSkpLmVuZEFuZ2xlKEUodC5yYW5nZVsxXSkpKCl9KX1rLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ndWxhciIsITApLGsuYXR0cigidHJhbnNmb3JtIixfKHdbMF0sd1sxXSkpLFQuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJhbmd1bGFyYXhpcyIsITApLmNsYXNzZWQoImNyaXNwIiwhMCksVC5zZWxlY3RBbGwoImcueGFuZ3VsYXJheGlzdGljayxwYXRoLHRleHQiKS5yZW1vdmUoKSwocz1iKHQsZi5nYXVnZS5heGlzKSkudHlwZT0ibGluZWFyIixzLnJhbmdlPWYuZ2F1Z2UuYXhpcy5yYW5nZSxzLl9pZD0ieGFuZ3VsYXJheGlzIixzLnNldFNjYWxlKCk7dmFyIFA9ZnVuY3Rpb24odCl7cmV0dXJuKHMucmFuZ2VbMF0tdC54KS8ocy5yYW5nZVsxXS1zLnJhbmdlWzBdKSpNYXRoLlBJK01hdGguUEl9LE89e30sej11Lm1ha2VMYWJlbEZucyhzLDApLmxhYmVsU3RhbmRvZmY7Ty54Rm49ZnVuY3Rpb24odCl7dmFyIGU9UCh0KTtyZXR1cm4gTWF0aC5jb3MoZSkqen0sTy55Rm49ZnVuY3Rpb24odCl7dmFyIGU9UCh0KSxyPU1hdGguc2luKGUpPjA/LjI6MTtyZXR1cm4tTWF0aC5zaW4oZSkqKHordC5mb250U2l6ZSpyKStNYXRoLmFicyhNYXRoLmNvcyhlKSkqKHQuZm9udFNpemUqbyl9LE8uYW5jaG9yRm49ZnVuY3Rpb24odCl7dmFyIGU9UCh0KSxyPU1hdGguY29zKGUpO3JldHVybiBNYXRoLmFicyhyKTwuMT8ibWlkZGxlIjpyPjA/InN0YXJ0IjoiZW5kIn0sTy5oZWlnaHRGbj1mdW5jdGlvbih0LGUscil7dmFyIG49UCh0KTtyZXR1cm4tLjUqKDErTWF0aC5zaW4obikpKnJ9O3ZhciBJPWZ1bmN0aW9uKHQpe3JldHVybiBfKHdbMF0rZCpNYXRoLmNvcyh0KSx3WzFdLWQqTWF0aC5zaW4odCkpfTtjPWZ1bmN0aW9uKHQpe3JldHVybiBJKFAodCkpfTtpZihsPXUuY2FsY1RpY2tzKHMpLGg9dS5nZXRUaWNrU2lnbnMocylbMl0scy52aXNpYmxlKXtoPSJpbnNpZGUiPT09cy50aWNrcz8tMToxO3ZhciBEPShzLmxpbmV3aWR0aHx8MSkvMjt1LmRyYXdUaWNrcyh0LHMse3ZhbHM6bCxsYXllcjpULHBhdGg6Ik0iK2gqRCsiLDBoIitoKnMudGlja2xlbix0cmFuc0ZuOmZ1bmN0aW9uKHQpe3ZhciBlPVAodCk7cmV0dXJuIEkoZSkrInJvdGF0ZSgiKy1pKGUpKyIpIn19KSx1LmRyYXdMYWJlbHModCxzLHt2YWxzOmwsbGF5ZXI6VCx0cmFuc0ZuOmMsbGFiZWxGbnM6T30pfXZhciBSPVt2XS5jb25jYXQoZi5nYXVnZS5zdGVwcyksRj1rLnNlbGVjdEFsbCgiZy5iZy1hcmMiKS5kYXRhKFIpO0YuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJiZy1hcmMiLCEwKS5hcHBlbmQoInBhdGgiKSxGLnNlbGVjdCgicGF0aCIpLmNhbGwoQykuY2FsbCh4KSxGLmV4aXQoKS5yZW1vdmUoKTt2YXIgQj1MKGYuZ2F1Z2UuYmFyLnRoaWNrbmVzcyksTj1rLnNlbGVjdEFsbCgiZy52YWx1ZS1hcmMiKS5kYXRhKFtmLmdhdWdlLmJhcl0pO04uZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ2YWx1ZS1hcmMiLCEwKS5hcHBlbmQoInBhdGgiKTt2YXIgaj1OLnNlbGVjdCgicGF0aCIpO3koTSk/KGoudHJhbnNpdGlvbigpLmR1cmF0aW9uKE0uZHVyYXRpb24pLmVhc2UoTS5lYXNpbmcpLmVhY2goImVuZCIsZnVuY3Rpb24oKXtBJiZBKCl9KS5lYWNoKCJpbnRlcnJ1cHQiLGZ1bmN0aW9uKCl7QSYmQSgpfSkuYXR0clR3ZWVuKCJkIiwoVj1CLFU9RShyWzBdLmxhc3RZKSxxPUUoclswXS55KSxmdW5jdGlvbigpe3ZhciB0PW4uaW50ZXJwb2xhdGUoVSxxKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIFYuZW5kQW5nbGUodChlKSkoKX19KSksZi5fbGFzdFZhbHVlPXJbMF0ueSk6ai5hdHRyKCJkIiwibnVtYmVyIj09dHlwZW9mIHJbMF0ueT9CLmVuZEFuZ2xlKEUoclswXS55KSk6Ik0wLDBaIik7dmFyIFYsVSxxO2ouY2FsbCh4KSxOLmV4aXQoKS5yZW1vdmUoKSxSPVtdO3ZhciBIPWYuZ2F1Z2UudGhyZXNob2xkLnZhbHVlO0gmJlIucHVzaCh7cmFuZ2U6W0gsSF0sY29sb3I6Zi5nYXVnZS50aHJlc2hvbGQuY29sb3IsbGluZTp7Y29sb3I6Zi5nYXVnZS50aHJlc2hvbGQubGluZS5jb2xvcix3aWR0aDpmLmdhdWdlLnRocmVzaG9sZC5saW5lLndpZHRofSx0aGlja25lc3M6Zi5nYXVnZS50aHJlc2hvbGQudGhpY2tuZXNzfSk7dmFyIEc9ay5zZWxlY3RBbGwoImcudGhyZXNob2xkLWFyYyIpLmRhdGEoUik7Ry5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInRocmVzaG9sZC1hcmMiLCEwKS5hcHBlbmQoInBhdGgiKSxHLnNlbGVjdCgicGF0aCIpLmNhbGwoQykuY2FsbCh4KSxHLmV4aXQoKS5yZW1vdmUoKTt2YXIgWT1rLnNlbGVjdEFsbCgiZy5nYXVnZS1vdXRsaW5lIikuZGF0YShbbV0pO1kuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJnYXVnZS1vdXRsaW5lIiwhMCkuYXBwZW5kKCJwYXRoIiksWS5zZWxlY3QoInBhdGgiKS5jYWxsKEMpLmNhbGwoeCksWS5leGl0KCkucmVtb3ZlKCl9KHQsMCxlLHtyYWRpdXM6Qixpbm5lclJhZGl1czpOLGdhdWdlOnEsbGF5ZXI6SCxzaXplOkQsZ2F1Z2VCZzpTLGdhdWdlT3V0bGluZTpFLHRyYW5zaXRpb25PcHRzOnIsb25Db21wbGV0ZTpmfSk7dmFyIEc9Qy5zZWxlY3RBbGwoImcuYnVsbGV0IikuZGF0YSh6P2U6W10pO0cuZXhpdCgpLnJlbW92ZSgpO3ZhciBZPUMuc2VsZWN0QWxsKCJnLmJ1bGxldGF4aXMiKS5kYXRhKHo/ZTpbXSk7WS5leGl0KCkucmVtb3ZlKCkseiYmZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaSxvLHMsYyxoPXJbMF0udHJhY2UsZj1uLmdhdWdlLHA9bi5sYXllcixnPW4uZ2F1Z2VCZyx2PW4uZ2F1Z2VPdXRsaW5lLG09bi5zaXplLF89aC5kb21haW4sdz1uLnRyYW5zaXRpb25PcHRzLGs9bi5vbkNvbXBsZXRlO2YuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJidWxsZXQiLCEwKSxmLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK20ubCsiLCAiK20udCsiKSIpLHAuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJidWxsZXRheGlzIiwhMCkuY2xhc3NlZCgiY3Jpc3AiLCEwKSxwLnNlbGVjdEFsbCgiZy54YnVsbGV0YXhpc3RpY2sscGF0aCx0ZXh0IikucmVtb3ZlKCk7dmFyIFQ9bS5oLE09aC5nYXVnZS5iYXIudGhpY2tuZXNzKlQsQT1fLnhbMF0sUz1fLnhbMF0rKF8ueFsxXS1fLnhbMF0pKihoLl9oYXNOdW1iZXJ8fGguX2hhc0RlbHRhPzEtbC5idWxsZXROdW1iZXJEb21haW5TaXplOjEpOyhhPWIodCxoLmdhdWdlLmF4aXMpKS5faWQ9InhidWxsZXRheGlzIixhLmRvbWFpbj1bQSxTXSxhLnNldFNjYWxlKCksaT11LmNhbGNUaWNrcyhhKSxvPXUubWFrZVRyYW5zRm4oYSkscz11LmdldFRpY2tTaWducyhhKVsyXSxjPW0udCttLmgsYS52aXNpYmxlJiYodS5kcmF3VGlja3ModCxhLHt2YWxzOiJpbnNpZGUiPT09YS50aWNrcz91LmNsaXBFbmRzKGEsaSk6aSxsYXllcjpwLHBhdGg6dS5tYWtlVGlja1BhdGgoYSxjLHMpLHRyYW5zRm46b30pLHUuZHJhd0xhYmVscyh0LGEse3ZhbHM6aSxsYXllcjpwLHRyYW5zRm46byxsYWJlbEZuczp1Lm1ha2VMYWJlbEZucyhhLGMpfSkpO2Z1bmN0aW9uIEUodCl7dC5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsYS5jMnAodC5yYW5nZVsxXSktYS5jMnAodC5yYW5nZVswXSkpfSkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIGEuYzJwKHQucmFuZ2VbMF0pfSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuLjUqKDEtdC50aGlja25lc3MpKlR9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnRoaWNrbmVzcypUfSl9dmFyIEw9W2ddLmNvbmNhdChoLmdhdWdlLnN0ZXBzKSxDPWYuc2VsZWN0QWxsKCJnLmJnLWJ1bGxldCIpLmRhdGEoTCk7Qy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJnLWJ1bGxldCIsITApLmFwcGVuZCgicmVjdCIpLEMuc2VsZWN0KCJyZWN0IikuY2FsbChFKS5jYWxsKHgpLEMuZXhpdCgpLnJlbW92ZSgpO3ZhciBQPWYuc2VsZWN0QWxsKCJnLnZhbHVlLWJ1bGxldCIpLmRhdGEoW2guZ2F1Z2UuYmFyXSk7UC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInZhbHVlLWJ1bGxldCIsITApLmFwcGVuZCgicmVjdCIpLFAuc2VsZWN0KCJyZWN0IikuYXR0cigiaGVpZ2h0IixNKS5hdHRyKCJ5IiwoVC1NKS8yKS5jYWxsKHgpLHkodyk/UC5zZWxlY3QoInJlY3QiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24ody5kdXJhdGlvbikuZWFzZSh3LmVhc2luZykuZWFjaCgiZW5kIixmdW5jdGlvbigpe2smJmsoKX0pLmVhY2goImludGVycnVwdCIsZnVuY3Rpb24oKXtrJiZrKCl9KS5hdHRyKCJ3aWR0aCIsTWF0aC5tYXgoMCxhLmMycChNYXRoLm1pbihoLmdhdWdlLmF4aXMucmFuZ2VbMV0sclswXS55KSkpKTpQLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIiwibnVtYmVyIj09dHlwZW9mIHJbMF0ueT9NYXRoLm1heCgwLGEuYzJwKE1hdGgubWluKGguZ2F1Z2UuYXhpcy5yYW5nZVsxXSxyWzBdLnkpKSk6MCk7UC5leGl0KCkucmVtb3ZlKCk7dmFyIE89ci5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gaC5nYXVnZS50aHJlc2hvbGQudmFsdWV9KSx6PWYuc2VsZWN0QWxsKCJnLnRocmVzaG9sZC1idWxsZXQiKS5kYXRhKE8pO3ouZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ0aHJlc2hvbGQtYnVsbGV0IiwhMCkuYXBwZW5kKCJsaW5lIiksei5zZWxlY3QoImxpbmUiKS5hdHRyKCJ4MSIsYS5jMnAoaC5nYXVnZS50aHJlc2hvbGQudmFsdWUpKS5hdHRyKCJ4MiIsYS5jMnAoaC5nYXVnZS50aHJlc2hvbGQudmFsdWUpKS5hdHRyKCJ5MSIsKDEtaC5nYXVnZS50aHJlc2hvbGQudGhpY2tuZXNzKS8yKlQpLmF0dHIoInkyIiwoMS0oMS1oLmdhdWdlLnRocmVzaG9sZC50aGlja25lc3MpLzIpKlQpLmNhbGwoZC5zdHJva2UsaC5nYXVnZS50aHJlc2hvbGQubGluZS5jb2xvcikuc3R5bGUoInN0cm9rZS13aWR0aCIsaC5nYXVnZS50aHJlc2hvbGQubGluZS53aWR0aCksei5leGl0KCkucmVtb3ZlKCk7dmFyIEk9Zi5zZWxlY3RBbGwoImcuZ2F1Z2Utb3V0bGluZSIpLmRhdGEoW3ZdKTtJLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiZ2F1Z2Utb3V0bGluZSIsITApLmFwcGVuZCgicmVjdCIpLEkuc2VsZWN0KCJyZWN0IikuY2FsbChFKS5jYWxsKHgpLEkuZXhpdCgpLnJlbW92ZSgpfSh0LDAsZSx7Z2F1Z2U6RyxsYXllcjpZLHNpemU6RCxnYXVnZUJnOlMsZ2F1Z2VPdXRsaW5lOkUsdHJhbnNpdGlvbk9wdHM6cixvbkNvbXBsZXRlOmZ9KTt2YXIgVz1DLnNlbGVjdEFsbCgidGV4dC50aXRsZSIpLmRhdGEoZSk7Vy5leGl0KCkucmVtb3ZlKCksVy5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoInRpdGxlIiwhMCksVy5hdHRyKCJ0ZXh0LWFuY2hvciIsZnVuY3Rpb24oKXtyZXR1cm4gej9nLnJpZ2h0OmdbTC50aXRsZS5hbGlnbl19KS50ZXh0KEwudGl0bGUudGV4dCkuY2FsbChzLmZvbnQsTC50aXRsZS5mb250KS5jYWxsKGMuY29udmVydFRvVHNwYW5zLHQpLFcuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbigpe3ZhciB0LGU9RC5sK0Qudyp2W0wudGl0bGUuYWxpZ25dLHI9bC50aXRsZVBhZGRpbmcsbj1zLmJCb3goVy5ub2RlKCkpO2lmKFApe2lmKE8paWYoTC5nYXVnZS5heGlzLnZpc2libGUpdD1zLmJCb3goSC5ub2RlKCkpLnRvcC1yLW4uYm90dG9tO2Vsc2UgdD1ELnQrRC5oLzItQi8yLW4uYm90dG9tLXI7eiYmKHQ9TS0obi50b3Arbi5ib3R0b20pLzIsZT1ELmwtbC5idWxsZXRQYWRkaW5nKkQudyl9ZWxzZSB0PUwuX251bWJlcnNUb3Atci1uLmJvdHRvbTtyZXR1cm4gXyhlLHQpfSl9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2RlZmF1bHRzIjo3NjcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vcG9zaXRpb25fZGVmYXVsdHMiOjc4MCwiLi9jb25zdGFudHMiOjEwNTIsZDM6MTY1fV0sMTA1NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxpPXQoIi4uL21lc2gzZC9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxsPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbDt2YXIgYz1lLmV4cG9ydHM9bChzKHt4Ont2YWxUeXBlOiJkYXRhX2FycmF5In0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx2YWx1ZTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGlzb21pbjp7dmFsVHlwZToibnVtYmVyIn0saXNvbWF4Ont2YWxUeXBlOiJudW1iZXIifSxzdXJmYWNlOntzaG93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxjb3VudDp7dmFsVHlwZToiaW50ZWdlciIsZGZsdDoyLG1pbjoxfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX0scGF0dGVybjp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsiQSIsIkIiLCJDIiwiRCIsIkUiXSxleHRyYXM6WyJhbGwiLCJvZGQiLCJldmVuIl0sZGZsdDoiYWxsIn19LHNwYWNlZnJhbWU6e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGZpbGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouMTV9fSxzbGljZXM6e3g6e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGxvY2F0aW9uczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0sZmlsbDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9fSx5OntzaG93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsb2NhdGlvbnM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W119LGZpbGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfX0sejp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbG9jYXRpb25zOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX19fSxjYXBzOnt4OntzaG93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX19LHk6e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LGZpbGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfX0sejp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sZmlsbDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9fX0sdGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITB9LGhvdmVydGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITB9LGhvdmVydGVtcGxhdGU6YSgpLHNob3dsZWdlbmQ6cyh7fSxvLnNob3dsZWdlbmQse2RmbHQ6ITF9KX0sbigiIix7Y29sb3JBdHRyOiJgdmFsdWVgIixzaG93U2NhbGVEZmx0OiEwLGVkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkse29wYWNpdHk6aS5vcGFjaXR5LGxpZ2h0cG9zaXRpb246aS5saWdodHBvc2l0aW9uLGxpZ2h0aW5nOmkubGlnaHRpbmcsZmxhdHNoYWRpbmc6aS5mbGF0c2hhZGluZyxjb250b3VyOmkuY29udG91cixob3ZlcmluZm86cyh7fSxvLmhvdmVyaW5mbyl9KSwiY2FsYyIsIm5lc3RlZCIpO2MuZmxhdHNoYWRpbmcuZGZsdD0hMCxjLmxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxvbi5kZmx0PTAsYy54LmVkaXRUeXBlPWMueS5lZGl0VHlwZT1jLnouZWRpdFR5cGU9Yy52YWx1ZS5lZGl0VHlwZT0iY2FsYytjbGVhckF4aXNUeXBlcyIsYy50cmFuc2Zvcm1zPXZvaWQgMH0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL21lc2gzZC9hdHRyaWJ1dGVzIjoxMDYxfV0sMTA1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLGE9dCgiLi4vc3RyZWFtdHViZS9jYWxjIikucHJvY2Vzc0dyaWQsaT10KCIuLi9zdHJlYW10dWJlL2NhbGMiKS5maWx0ZXI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZS5fbGVuPU1hdGgubWluKGUueC5sZW5ndGgsZS55Lmxlbmd0aCxlLnoubGVuZ3RoLGUudmFsdWUubGVuZ3RoKSxlLl94PWkoZS54LGUuX2xlbiksZS5feT1pKGUueSxlLl9sZW4pLGUuX3o9aShlLnosZS5fbGVuKSxlLl92YWx1ZT1pKGUudmFsdWUsZS5fbGVuKTt2YXIgcj1hKGUpO2UuX2dyaWRGaWxsPXIuZmlsbCxlLl9Ycz1yLlhzLGUuX1lzPXIuWXMsZS5fWnM9ci5acyxlLl9sZW49ci5sZW47Zm9yKHZhciBvPTEvMCxzPS0xLzAsbD0wO2w8ZS5fbGVuO2wrKyl7dmFyIGM9ZS5fdmFsdWVbbF07bz1NYXRoLm1pbihvLGMpLHM9TWF0aC5tYXgocyxjKX1lLl9taW5WYWx1ZXM9byxlLl9tYXhWYWx1ZXM9cyxlLl92TWluPXZvaWQgMD09PWUuaXNvbWlufHxudWxsPT09ZS5pc29taW4/bzplLmlzb21pbixlLl92TWF4PXZvaWQgMD09PWUuaXNvbWF4fHxudWxsPT09ZS5pc29taW4/czplLmlzb21heCxuKHQsZSx7dmFsczpbZS5fdk1pbixlLl92TWF4XSxjb250YWluZXJTdHI6IiIsY0xldHRlcjoiYyJ9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjYwMCwiLi4vc3RyZWFtdHViZS9jYWxjIjoxMjI3fV0sMTA1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC1tZXNoM2QiKSxhPXQoIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiKS5wYXJzZUNvbG9yU2NhbGUsaT10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5Iiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKS5leHRyYWN0T3B0cyxzPXQoIi4uLy4uL3Bsb3RzL2dsM2QvemlwMyIpLGw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS5sZW5ndGgtMTtyPjA7ci0tKXt2YXIgbj1NYXRoLm1pbihlW3JdLGVbci0xXSksYT1NYXRoLm1heChlW3JdLGVbci0xXSk7aWYoYT5uJiZuPHQmJnQ8PWEpcmV0dXJue2lkOnIsZGlzdFJhdGlvOihhLXQpLyhhLW4pfX1yZXR1cm57aWQ6MCxkaXN0UmF0aW86MH19O2Z1bmN0aW9uIGModCxlLHIpe3RoaXMuc2NlbmU9dCx0aGlzLnVpZD1yLHRoaXMubWVzaD1lLHRoaXMubmFtZT0iIix0aGlzLmRhdGE9bnVsbCx0aGlzLnNob3dDb250b3VyPSExfXZhciB1PWMucHJvdG90eXBlO3UuaGFuZGxlUGljaz1mdW5jdGlvbih0KXtpZih0Lm9iamVjdD09PXRoaXMubWVzaCl7dmFyIGU9dC5kYXRhLmluZGV4LHI9dGhpcy5kYXRhLl9tZXNoWFtlXSxuPXRoaXMuZGF0YS5fbWVzaFlbZV0sYT10aGlzLmRhdGEuX21lc2haW2VdLGk9dGhpcy5kYXRhLl9Zcy5sZW5ndGgsbz10aGlzLmRhdGEuX1pzLmxlbmd0aCxzPWwocix0aGlzLmRhdGEuX1hzKS5pZCxjPWwobix0aGlzLmRhdGEuX1lzKS5pZCx1PWwoYSx0aGlzLmRhdGEuX1pzKS5pZCxoPXQuaW5kZXg9dStvKmMrbyppKnM7dC50cmFjZUNvb3JkaW5hdGU9W3RoaXMuZGF0YS5fbWVzaFhbaF0sdGhpcy5kYXRhLl9tZXNoWVtoXSx0aGlzLmRhdGEuX21lc2haW2hdLHRoaXMuZGF0YS5fdmFsdWVbaF1dO3ZhciBmPXRoaXMuZGF0YS5ob3ZlcnRleHR8fHRoaXMuZGF0YS50ZXh0O3JldHVybiBBcnJheS5pc0FycmF5KGYpJiZ2b2lkIDAhPT1mW2hdP3QudGV4dExhYmVsPWZbaF06ZiYmKHQudGV4dExhYmVsPWYpLCEwfX0sdS51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zY2VuZSxyPWUuZnVsbFNjZW5lTGF5b3V0O2Z1bmN0aW9uIG4odCxlLHIsbil7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0LmQybChlLDAsbikqcn0pfXRoaXMuZGF0YT1mKHQpO3ZhciBsPXtwb3NpdGlvbnM6cyhuKHIueGF4aXMsdC5fbWVzaFgsZS5kYXRhU2NhbGVbMF0sdC54Y2FsZW5kYXIpLG4oci55YXhpcyx0Ll9tZXNoWSxlLmRhdGFTY2FsZVsxXSx0LnljYWxlbmRhciksbihyLnpheGlzLHQuX21lc2haLGUuZGF0YVNjYWxlWzJdLHQuemNhbGVuZGFyKSksY2VsbHM6cyh0Ll9tZXNoSSx0Ll9tZXNoSix0Ll9tZXNoSyksbGlnaHRQb3NpdGlvbjpbdC5saWdodHBvc2l0aW9uLngsdC5saWdodHBvc2l0aW9uLnksdC5saWdodHBvc2l0aW9uLnpdLGFtYmllbnQ6dC5saWdodGluZy5hbWJpZW50LGRpZmZ1c2U6dC5saWdodGluZy5kaWZmdXNlLHNwZWN1bGFyOnQubGlnaHRpbmcuc3BlY3VsYXIscm91Z2huZXNzOnQubGlnaHRpbmcucm91Z2huZXNzLGZyZXNuZWw6dC5saWdodGluZy5mcmVzbmVsLHZlcnRleE5vcm1hbHNFcHNpbG9uOnQubGlnaHRpbmcudmVydGV4bm9ybWFsc2Vwc2lsb24sZmFjZU5vcm1hbHNFcHNpbG9uOnQubGlnaHRpbmcuZmFjZW5vcm1hbHNlcHNpbG9uLG9wYWNpdHk6dC5vcGFjaXR5LGNvbnRvdXJFbmFibGU6dC5jb250b3VyLnNob3csY29udG91ckNvbG9yOmkodC5jb250b3VyLmNvbG9yKS5zbGljZSgwLDMpLGNvbnRvdXJXaWR0aDp0LmNvbnRvdXIud2lkdGgsdXNlRmFjZXROb3JtYWxzOnQuZmxhdHNoYWRpbmd9LGM9byh0KTtsLnZlcnRleEludGVuc2l0eT10Ll9tZXNoSW50ZW5zaXR5LGwudmVydGV4SW50ZW5zaXR5Qm91bmRzPVtjLm1pbixjLm1heF0sbC5jb2xvcm1hcD1hKHQpLHRoaXMubWVzaC51cGRhdGUobCl9LHUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLm1lc2gpLHRoaXMubWVzaC5kaXNwb3NlKCl9O3ZhciBoPVsieHl6IiwieHp5IiwieXh6IiwieXp4Iiwienh5Iiwienl4Il07ZnVuY3Rpb24gZih0KXt0Ll9tZXNoST1bXSx0Ll9tZXNoSj1bXSx0Ll9tZXNoSz1bXTt2YXIgZSxyLG4sYSxpLG8scyxjPXQuc3VyZmFjZS5zaG93LHU9dC5zcGFjZWZyYW1lLnNob3csZj10LnN1cmZhY2UuZmlsbCxwPXQuc3BhY2VmcmFtZS5maWxsLGQ9ITEsZz0hMSx2PTAsbT10Ll9Ycyx5PXQuX1lzLHg9dC5fWnMsYj1tLmxlbmd0aCxfPXkubGVuZ3RoLHc9eC5sZW5ndGgsaz1oLmluZGV4T2YodC5fZ3JpZEZpbGwucmVwbGFjZSgvLS9nLCIiKS5yZXBsYWNlKC9cKy9nLCIiKSksVD1mdW5jdGlvbih0LGUscil7c3dpdGNoKGspe2Nhc2UgNTpyZXR1cm4gcit3KmUrdypfKnQ7Y2FzZSA0OnJldHVybiByK3cqdCt3KmIqZTtjYXNlIDM6cmV0dXJuIGUrXypyK18qdyp0O2Nhc2UgMjpyZXR1cm4gZStfKnQrXypiKnI7Y2FzZSAxOnJldHVybiB0K2IqcitiKncqZTtkZWZhdWx0OnJldHVybiB0K2IqZStiKl8qcn19LE09dC5fbWluVmFsdWVzLEE9dC5fbWF4VmFsdWVzLFM9dC5fdk1pbixFPXQuX3ZNYXg7ZnVuY3Rpb24gTCh0LGUscyl7Zm9yKHZhciBsPW8ubGVuZ3RoLGM9cjtjPGw7YysrKWlmKHQ9PT1uW2NdJiZlPT09YVtjXSYmcz09PWlbY10pcmV0dXJuIGM7cmV0dXJuLTF9ZnVuY3Rpb24gQygpe3I9ZX1mdW5jdGlvbiBQKCl7bj1bXSxhPVtdLGk9W10sbz1bXSxlPTAsQygpfWZ1bmN0aW9uIE8odCxyLHMsbCl7cmV0dXJuIG4ucHVzaCh0KSxhLnB1c2gociksaS5wdXNoKHMpLG8ucHVzaChsKSwrK2UtMX1mdW5jdGlvbiB6KHQsZSxyKXtmb3IodmFyIG49W10sYT0wO2E8dC5sZW5ndGg7YSsrKW5bYV09dFthXSooMS1yKStyKmVbYV07cmV0dXJuIG59ZnVuY3Rpb24gSSh0KXtzPXR9ZnVuY3Rpb24gRCh0LGUpe3JldHVybiJhbGwiPT09dHx8bnVsbD09PXR8fHQuaW5kZXhPZihlKT4tMX1mdW5jdGlvbiBSKHQsZSl7cmV0dXJuIG51bGw9PT10P2U6dH1mdW5jdGlvbiBGKGUscixuKXtDKCk7dmFyIGEsaSxvLGw9W3JdLGM9W25dO2lmKHM+PTEpbD1bcl0sYz1bbl07ZWxzZSBpZihzPjApe3ZhciB1PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dFswXSxuPXRbMV0sYT10WzJdLGk9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1bXSxhPTA7YTx0Lmxlbmd0aDthKyspblthXT0odFthXStlW2FdK3JbYV0pLzM7cmV0dXJuIG59KHIsbixhKSxvPU1hdGguc3FydCgxLXMpLGw9eihpLHIsbyksYz16KGksbixvKSx1PXooaSxhLG8pLGg9ZVswXSxmPWVbMV0scD1lWzJdO3JldHVybnt4eXp2OltbcixuLGNdLFtjLGwscl0sW24sYSx1XSxbdSxjLG5dLFthLHIsbF0sW2wsdSxhXV0sYWJjOltbaCxmLC0xXSxbLTEsLTEsaF0sW2YscCwtMV0sWy0xLC0xLGZdLFtwLGgsLTFdLFstMSwtMSxwXV19fShyLG4pO2w9dS54eXp2LGM9dS5hYmN9Zm9yKHZhciBoPTA7aDxsLmxlbmd0aDtoKyspe3I9bFtoXSxuPWNbaF07Zm9yKHZhciBmPVtdLHA9MDtwPDM7cCsrKXt2YXIgZD1yW3BdWzBdLGc9cltwXVsxXSxtPXJbcF1bMl0seT1yW3BdWzNdLHg9bltwXT4tMT9uW3BdOkwoZCxnLG0pO2ZbcF09eD4tMT94Ok8oZCxnLG0sUihlLHkpKX1hPWZbMF0saT1mWzFdLG89ZlsyXSx0Ll9tZXNoSS5wdXNoKGEpLHQuX21lc2hKLnB1c2goaSksdC5fbWVzaEsucHVzaChvKSwrK3Z9fWZ1bmN0aW9uIEIodCxlLHIsbil7dmFyIGE9dFszXTthPHImJihhPXIpLGE+biYmKGE9bik7Zm9yKHZhciBpPSh0WzNdLWEpLyh0WzNdLWVbM10rMWUtOSksbz1bXSxzPTA7czw0O3MrKylvW3NdPSgxLWkpKnRbc10raSplW3NdO3JldHVybiBvfWZ1bmN0aW9uIE4odCxlLHIpe3JldHVybiB0Pj1lJiZ0PD1yfWZ1bmN0aW9uIGoodCl7dmFyIGU9LjAwMSooRS1TKTtyZXR1cm4gdD49Uy1lJiZ0PD1FK2V9ZnVuY3Rpb24gVihlKXtmb3IodmFyIHI9W10sbj0wO248NDtuKyspe3ZhciBhPWVbbl07ci5wdXNoKFt0Ll94W2FdLHQuX3lbYV0sdC5felthXSx0Ll92YWx1ZVthXV0pfXJldHVybiByfXZhciBVPTM7ZnVuY3Rpb24gcSh0LGUscixuLGEsaSl7aXx8KGk9MSkscj1bLTEsLTEsLTFdO3ZhciBvPSExLHM9W04oZVswXVszXSxuLGEpLE4oZVsxXVszXSxuLGEpLE4oZVsyXVszXSxuLGEpXTtpZighc1swXSYmIXNbMV0mJiFzWzJdKXJldHVybiExO3ZhciBsPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gaihlWzBdWzNdKSYmaihlWzFdWzNdKSYmaihlWzJdWzNdKT8oRih0LGUsciksITApOmk8VSYmcSh0LGUscixTLEUsKytpKX07aWYoc1swXSYmc1sxXSYmc1syXSlyZXR1cm4gbCh0LGUscil8fG87dmFyIGM9ITE7cmV0dXJuW1swLDEsMl0sWzIsMCwxXSxbMSwyLDBdXS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKHNbaVswXV0mJnNbaVsxXV0mJiFzW2lbMl1dKXt2YXIgdT1lW2lbMF1dLGg9ZVtpWzFdXSxmPWVbaVsyXV0scD1CKGYsdSxuLGEpLGQ9QihmLGgsbixhKTtvPWwodCxbZCxwLHVdLFstMSwtMSxyW2lbMF1dXSl8fG8sbz1sKHQsW3UsaCxkXSxbcltpWzBdXSxyW2lbMV1dLC0xXSl8fG8sYz0hMH19KSxjP286KFtbMCwxLDJdLFsxLDIsMF0sWzIsMCwxXV0uZm9yRWFjaChmdW5jdGlvbihpKXtpZihzW2lbMF1dJiYhc1tpWzFdXSYmIXNbaVsyXV0pe3ZhciB1PWVbaVswXV0saD1lW2lbMV1dLGY9ZVtpWzJdXSxwPUIoaCx1LG4sYSksZD1CKGYsdSxuLGEpO289bCh0LFtkLHAsdV0sWy0xLC0xLHJbaVswXV1dKXx8byxjPSEwfX0pLG8pfWZ1bmN0aW9uIEgodCxlLHIsbil7dmFyIGE9ITEsaT1WKGUpLG89W04oaVswXVszXSxyLG4pLE4oaVsxXVszXSxyLG4pLE4oaVsyXVszXSxyLG4pLE4oaVszXVszXSxyLG4pXTtpZighKG9bMF18fG9bMV18fG9bMl18fG9bM10pKXJldHVybiBhO2lmKG9bMF0mJm9bMV0mJm9bMl0mJm9bM10pcmV0dXJuIGcmJihhPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1mdW5jdGlvbihuLGEsaSl7Rih0LFtlW25dLGVbYV0sZVtpXV0sW3Jbbl0sclthXSxyW2ldXSl9O24oMCwxLDIpLG4oMywwLDEpLG4oMiwzLDApLG4oMSwyLDMpfSh0LGksZSl8fGEpLGE7dmFyIHM9ITE7cmV0dXJuW1swLDEsMiwzXSxbMywwLDEsMl0sWzIsMywwLDFdLFsxLDIsMywwXV0uZm9yRWFjaChmdW5jdGlvbihsKXtpZihvW2xbMF1dJiZvW2xbMV1dJiZvW2xbMl1dJiYhb1tsWzNdXSl7dmFyIGM9aVtsWzBdXSx1PWlbbFsxXV0saD1pW2xbMl1dLGY9aVtsWzNdXTtpZihnKWE9Rih0LFtjLHUsaF0sW2VbbFswXV0sZVtsWzFdXSxlW2xbMl1dXSl8fGE7ZWxzZXt2YXIgcD1CKGYsYyxyLG4pLGQ9QihmLHUscixuKSx2PUIoZixoLHIsbik7YT1GKG51bGwsW3AsZCx2XSxbLTEsLTEsLTFdKXx8YX1zPSEwfX0pLHM/YTooW1swLDEsMiwzXSxbMSwyLDMsMF0sWzIsMywwLDFdLFszLDAsMSwyXSxbMCwyLDMsMV0sWzEsMywyLDBdXS5mb3JFYWNoKGZ1bmN0aW9uKGwpe2lmKG9bbFswXV0mJm9bbFsxXV0mJiFvW2xbMl1dJiYhb1tsWzNdXSl7dmFyIGM9aVtsWzBdXSx1PWlbbFsxXV0saD1pW2xbMl1dLGY9aVtsWzNdXSxwPUIoaCxjLHIsbiksZD1CKGgsdSxyLG4pLHY9QihmLHUscixuKSxtPUIoZixjLHIsbik7Zz8oYT1GKHQsW2MsbSxwXSxbZVtsWzBdXSwtMSwtMV0pfHxhLGE9Rih0LFt1LGQsdl0sW2VbbFsxXV0sLTEsLTFdKXx8YSk6YT1mdW5jdGlvbih0LGUscil7dmFyIG49ZnVuY3Rpb24obixhLGkpe0YodCxbZVtuXSxlW2FdLGVbaV1dLFtyW25dLHJbYV0scltpXV0pfTtuKDAsMSwyKSxuKDIsMywwKX0obnVsbCxbcCxkLHYsbV0sWy0xLC0xLC0xLC0xXSl8fGEscz0hMH19KSxzP2E6KFtbMCwxLDIsM10sWzEsMiwzLDBdLFsyLDMsMCwxXSxbMywwLDEsMl1dLmZvckVhY2goZnVuY3Rpb24obCl7aWYob1tsWzBdXSYmIW9bbFsxXV0mJiFvW2xbMl1dJiYhb1tsWzNdXSl7dmFyIGM9aVtsWzBdXSx1PWlbbFsxXV0saD1pW2xbMl1dLGY9aVtsWzNdXSxwPUIodSxjLHIsbiksZD1CKGgsYyxyLG4pLHY9QihmLGMscixuKTtnPyhhPUYodCxbYyxwLGRdLFtlW2xbMF1dLC0xLC0xXSl8fGEsYT1GKHQsW2MsZCx2XSxbZVtsWzBdXSwtMSwtMV0pfHxhLGE9Rih0LFtjLHYscF0sW2VbbFswXV0sLTEsLTFdKXx8YSk6YT1GKG51bGwsW3AsZCx2XSxbLTEsLTEsLTFdKXx8YSxzPSEwfX0pLGEpKX1mdW5jdGlvbiBHKHQsZSxyLG4sYSxpLG8scyxsLGMsdSl7dmFyIGg9ITE7cmV0dXJuIGQmJihEKHQsIkEiKSYmKGg9SChudWxsLFtlLHIsbixpXSxjLHUpfHxoKSxEKHQsIkIiKSYmKGg9SChudWxsLFtyLG4sYSxsXSxjLHUpfHxoKSxEKHQsIkMiKSYmKGg9SChudWxsLFtyLGksbyxsXSxjLHUpfHxoKSxEKHQsIkQiKSYmKGg9SChudWxsLFtuLGkscyxsXSxjLHUpfHxoKSxEKHQsIkUiKSYmKGg9SChudWxsLFtyLG4saSxsXSxjLHUpfHxoKSksZyYmKGg9SCh0LFtyLG4saSxsXSxjLHUpfHxoKSxofWZ1bmN0aW9uIFkodCxlLHIsbixhLGksbyxzKXtyZXR1cm5bITA9PT1zWzBdfHxxKHQsVihbZSxyLG5dKSxbZSxyLG5dLGksbyksITA9PT1zWzFdfHxxKHQsVihbbixhLGVdKSxbbixhLGVdLGksbyldfWZ1bmN0aW9uIFcodCxlLHIsbixhLGksbyxzLGwpe3JldHVybiBzP1kodCxlLHIsYSxuLGksbyxsKTpZKHQscixhLG4sZSxpLG8sbCl9ZnVuY3Rpb24gWCh0LGUscixuLGEsaSxvKXt2YXIgcyxsLGMsdSxoPSExLGY9ZnVuY3Rpb24oKXtoPXEodCxbcyxsLGNdLFstMSwtMSwtMV0sYSxpKXx8aCxoPXEodCxbYyx1LHNdLFstMSwtMSwtMV0sYSxpKXx8aH0scD1vWzBdLGQ9b1sxXSxnPW9bMl07cmV0dXJuIHAmJihzPXooVihbVChlLHItMCxuLTApXSlbMF0sVihbVChlLTEsci0wLG4tMCldKVswXSxwKSxsPXooVihbVChlLHItMCxuLTEpXSlbMF0sVihbVChlLTEsci0wLG4tMSldKVswXSxwKSxjPXooVihbVChlLHItMSxuLTEpXSlbMF0sVihbVChlLTEsci0xLG4tMSldKVswXSxwKSx1PXooVihbVChlLHItMSxuLTApXSlbMF0sVihbVChlLTEsci0xLG4tMCldKVswXSxwKSxmKCkpLGQmJihzPXooVihbVChlLTAscixuLTApXSlbMF0sVihbVChlLTAsci0xLG4tMCldKVswXSxkKSxsPXooVihbVChlLTAscixuLTEpXSlbMF0sVihbVChlLTAsci0xLG4tMSldKVswXSxkKSxjPXooVihbVChlLTEscixuLTEpXSlbMF0sVihbVChlLTEsci0xLG4tMSldKVswXSxkKSx1PXooVihbVChlLTEscixuLTApXSlbMF0sVihbVChlLTEsci0xLG4tMCldKVswXSxkKSxmKCkpLGcmJihzPXooVihbVChlLTAsci0wLG4pXSlbMF0sVihbVChlLTAsci0wLG4tMSldKVswXSxnKSxsPXooVihbVChlLTAsci0xLG4pXSlbMF0sVihbVChlLTAsci0xLG4tMSldKVswXSxnKSxjPXooVihbVChlLTEsci0xLG4pXSlbMF0sVihbVChlLTEsci0xLG4tMSldKVswXSxnKSx1PXooVihbVChlLTEsci0wLG4pXSlbMF0sVihbVChlLTEsci0wLG4tMSldKVswXSxnKSxmKCkpLGh9ZnVuY3Rpb24gWih0LGUscixuLGEsaSxvLHMsbCxjLHUsaCl7dmFyIGY9dDtyZXR1cm4gaD8oZCYmImV2ZW4iPT09dCYmKGY9bnVsbCksRyhmLGUscixuLGEsaSxvLHMsbCxjLHUpKTooZCYmIm9kZCI9PT10JiYoZj1udWxsKSxHKGYsbCxzLG8saSxhLG4scixlLGMsdSkpfWZ1bmN0aW9uIEoodCxlLHIsbixhKXtmb3IodmFyIGk9W10sbz0wLHM9MDtzPGUubGVuZ3RoO3MrKylmb3IodmFyIGw9ZVtzXSxjPTE7Yzx3O2MrKylmb3IodmFyIHU9MTt1PF87dSsrKWkucHVzaChXKHQsVChsLHUtMSxjLTEpLFQobCx1LTEsYyksVChsLHUsYy0xKSxUKGwsdSxjKSxyLG4sKGwrdStjKSUyLGEmJmFbb10/YVtvXTpbXSkpLG8rKztyZXR1cm4gaX1mdW5jdGlvbiBLKHQsZSxyLG4sYSl7Zm9yKHZhciBpPVtdLG89MCxzPTA7czxlLmxlbmd0aDtzKyspZm9yKHZhciBsPWVbc10sYz0xO2M8YjtjKyspZm9yKHZhciB1PTE7dTx3O3UrKylpLnB1c2goVyh0LFQoYy0xLGwsdS0xKSxUKGMsbCx1LTEpLFQoYy0xLGwsdSksVChjLGwsdSkscixuLChjK2wrdSklMixhJiZhW29dP2Fbb106W10pKSxvKys7cmV0dXJuIGl9ZnVuY3Rpb24gUSh0LGUscixuLGEpe2Zvcih2YXIgaT1bXSxvPTAscz0wO3M8ZS5sZW5ndGg7cysrKWZvcih2YXIgbD1lW3NdLGM9MTtjPF87YysrKWZvcih2YXIgdT0xO3U8Yjt1KyspaS5wdXNoKFcodCxUKHUtMSxjLTEsbCksVCh1LTEsYyxsKSxUKHUsYy0xLGwpLFQodSxjLGwpLHIsbiwodStjK2wpJTIsYSYmYVtvXT9hW29dOltdKSksbysrO3JldHVybiBpfWZ1bmN0aW9uICQodCxlLHIpe2Zvcih2YXIgbj0xO248dztuKyspZm9yKHZhciBhPTE7YTxfO2ErKylmb3IodmFyIGk9MTtpPGI7aSsrKVoodCxUKGktMSxhLTEsbi0xKSxUKGktMSxhLTEsbiksVChpLTEsYSxuLTEpLFQoaS0xLGEsbiksVChpLGEtMSxuLTEpLFQoaSxhLTEsbiksVChpLGEsbi0xKSxUKGksYSxuKSxlLHIsKGkrYStuKSUyKX1mdW5jdGlvbiB0dCh0LGUscil7ZD0hMCwkKHQsZSxyKSxkPSExfWZ1bmN0aW9uIGV0KHQsZSxyLG4sYSxpKXtmb3IodmFyIG89W10scz0wLGw9MDtsPGUubGVuZ3RoO2wrKylmb3IodmFyIGM9ZVtsXSx1PTE7dTx3O3UrKylmb3IodmFyIGg9MTtoPF87aCsrKW8ucHVzaChYKHQsYyxoLHUscixuLGFbbF0saSYmaVtzXSYmaVtzXSkpLHMrKztyZXR1cm4gb31mdW5jdGlvbiBydCh0LGUscixuLGEsaSl7Zm9yKHZhciBvPVtdLHM9MCxsPTA7bDxlLmxlbmd0aDtsKyspZm9yKHZhciBjPWVbbF0sdT0xO3U8Yjt1KyspZm9yKHZhciBoPTE7aDx3O2grKylvLnB1c2goWCh0LHUsYyxoLHIsbixhW2xdLGkmJmlbc10mJmlbc10pKSxzKys7cmV0dXJuIG99ZnVuY3Rpb24gbnQodCxlLHIsbixhLGkpe2Zvcih2YXIgbz1bXSxzPTAsbD0wO2w8ZS5sZW5ndGg7bCsrKWZvcih2YXIgYz1lW2xdLHU9MTt1PF87dSsrKWZvcih2YXIgaD0xO2g8YjtoKyspby5wdXNoKFgodCxoLHUsYyxyLG4sYVtsXSxpJiZpW3NdJiZpW3NdKSkscysrO3JldHVybiBvfWZ1bmN0aW9uIGF0KHQsZSl7Zm9yKHZhciByPVtdLG49dDtuPGU7bisrKXIucHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gZnVuY3Rpb24oKXtpZihQKCksZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGI7ZSsrKWZvcih2YXIgcj0wO3I8XztyKyspZm9yKHZhciBuPTA7bjx3O24rKyl7dmFyIGE9VChlLHIsbik7Tyh0Ll94W2FdLHQuX3lbYV0sdC5felthXSx0Ll92YWx1ZVthXSl9fSgpLHUmJnAmJihJKHApLGc9ITAsJChudWxsLFMsRSksZz0hMSksYyYmZil7SShmKTtmb3IodmFyIGU9dC5zdXJmYWNlLnBhdHRlcm4scj10LnN1cmZhY2UuY291bnQscz0wO3M8cjtzKyspe3ZhciBoPTE9PT1yPy41OnMvKHItMSksZD0oMS1oKSpTK2gqRSxrPU1hdGguYWJzKGQtTSk+TWF0aC5hYnMoZC1BKT9bTSxkXTpbZCxBXTt0dChlLGtbMF0sa1sxXSl9fXZhciBMPVtbTWF0aC5taW4oUyxBKSxNYXRoLm1heChTLEEpXSxbTWF0aC5taW4oTSxFKSxNYXRoLm1heChNLEUpXV07WyJ4IiwieSIsInoiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj1bXSxuPTA7bjxMLmxlbmd0aDtuKyspe3ZhciBhPTAsaT1MW25dWzBdLG89TFtuXVsxXSxzPXQuc2xpY2VzW2VdO2lmKHMuc2hvdyYmcy5maWxsKXtJKHMuZmlsbCk7dmFyIGM9W10sdT1bXSxoPVtdO2lmKHMubG9jYXRpb25zLmxlbmd0aClmb3IodmFyIGY9MDtmPHMubG9jYXRpb25zLmxlbmd0aDtmKyspe3ZhciBwPWwocy5sb2NhdGlvbnNbZl0sIngiPT09ZT9tOiJ5Ij09PWU/eTp4KTswPT09cC5kaXN0UmF0aW8/Yy5wdXNoKHAuaWQpOnAuaWQ+MCYmKHUucHVzaChwLmlkKSwieCI9PT1lP2gucHVzaChbcC5kaXN0UmF0aW8sMCwwXSk6InkiPT09ZT9oLnB1c2goWzAscC5kaXN0UmF0aW8sMF0pOmgucHVzaChbMCwwLHAuZGlzdFJhdGlvXSkpfWVsc2UgYz1hdCgxLCJ4Ij09PWU/Yi0xOiJ5Ij09PWU/Xy0xOnctMSk7dS5sZW5ndGg+MCYmKHJbYV09IngiPT09ZT9ldChudWxsLHUsaSxvLGgsclthXSk6InkiPT09ZT9ydChudWxsLHUsaSxvLGgsclthXSk6bnQobnVsbCx1LGksbyxoLHJbYV0pLGErKyksYy5sZW5ndGg+MCYmKHJbYV09IngiPT09ZT9KKG51bGwsYyxpLG8sclthXSk6InkiPT09ZT9LKG51bGwsYyxpLG8sclthXSk6UShudWxsLGMsaSxvLHJbYV0pLGErKyl9dmFyIGQ9dC5jYXBzW2VdO2Quc2hvdyYmZC5maWxsJiYoSShkLmZpbGwpLHJbYV09IngiPT09ZT9KKG51bGwsWzAsYi0xXSxpLG8sclthXSk6InkiPT09ZT9LKG51bGwsWzAsXy0xXSxpLG8sclthXSk6UShudWxsLFswLHctMV0saSxvLHJbYV0pLGErKyl9fSksMD09PXYmJlAoKSx0Ll9tZXNoWD1uLHQuX21lc2hZPWEsdC5fbWVzaFo9aSx0Ll9tZXNoSW50ZW5zaXR5PW8sdC5fWHM9bSx0Ll9Zcz15LHQuX1pzPXh9KCksdH1lLmV4cG9ydHM9e2ZpbmROZWFyZXN0T25BeGlzOmwsZ2VuZXJhdGVJc29NZXNoZXM6ZixjcmVhdGVJc29zdXJmYWNlVHJhY2U6ZnVuY3Rpb24odCxlKXt2YXIgcj10LmdscGxvdC5nbCxhPW4oe2dsOnJ9KSxpPW5ldyBjKHQsYSxlLnVpZCk7cmV0dXJuIGEuX3RyYWNlPWksaS51cGRhdGUoZSksdC5nbHBsb3QuYWRkKGEpLGl9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciI6NzE0LCIuLi8uLi9saWIvc3RyMnJnYmFycmF5Ijo3NDAsIi4uLy4uL3Bsb3RzL2dsM2QvemlwMyI6ODE2LCJnbC1tZXNoM2QiOjI4M31dLDEwNTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKTtmdW5jdGlvbiBzKHQsZSxyLG4saSl7dmFyIHM9aSgiaXNvbWluIiksbD1pKCJpc29tYXgiKTtudWxsIT1sJiZudWxsIT1zJiZzPmwmJihlLmlzb21pbj1udWxsLGUuaXNvbWF4PW51bGwpO3ZhciBjPWkoIngiKSx1PWkoInkiKSxoPWkoInoiKSxmPWkoInZhbHVlIik7YyYmYy5sZW5ndGgmJnUmJnUubGVuZ3RoJiZoJiZoLmxlbmd0aCYmZiYmZi5sZW5ndGg/KGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIikodCxlLFsieCIsInkiLCJ6Il0sbiksWyJ4IiwieSIsInoiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPSJjYXBzLiIrdDtpKGUrIi5zaG93IikmJmkoZSsiLmZpbGwiKTt2YXIgcj0ic2xpY2VzLiIrdDtpKHIrIi5zaG93IikmJihpKHIrIi5maWxsIiksaShyKyIubG9jYXRpb25zIikpfSksaSgic3BhY2VmcmFtZS5zaG93IikmJmkoInNwYWNlZnJhbWUuZmlsbCIpLGkoInN1cmZhY2Uuc2hvdyIpJiYoaSgic3VyZmFjZS5jb3VudCIpLGkoInN1cmZhY2UuZmlsbCIpLGkoInN1cmZhY2UucGF0dGVybiIpKSxpKCJjb250b3VyLnNob3ciKSYmKGkoImNvbnRvdXIuY29sb3IiKSxpKCJjb250b3VyLndpZHRoIikpLFsidGV4dCIsImhvdmVydGV4dCIsImhvdmVydGVtcGxhdGUiLCJsaWdodGluZy5hbWJpZW50IiwibGlnaHRpbmcuZGlmZnVzZSIsImxpZ2h0aW5nLnNwZWN1bGFyIiwibGlnaHRpbmcucm91Z2huZXNzIiwibGlnaHRpbmcuZnJlc25lbCIsImxpZ2h0aW5nLnZlcnRleG5vcm1hbHNlcHNpbG9uIiwibGlnaHRpbmcuZmFjZW5vcm1hbHNlcHNpbG9uIiwibGlnaHRwb3NpdGlvbi54IiwibGlnaHRwb3NpdGlvbi55IiwibGlnaHRwb3NpdGlvbi56IiwiZmxhdHNoYWRpbmciLCJvcGFjaXR5Il0uZm9yRWFjaChmdW5jdGlvbih0KXtpKHQpfSksbyh0LGUsbixpLHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSxlLl9sZW5ndGg9bnVsbCk6ZS52aXNpYmxlPSExfWUuZXhwb3J0cz17c3VwcGx5RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIsYSl7cyh0LGUsMCxhLGZ1bmN0aW9uKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9KX0sc3VwcGx5SXNvRGVmYXVsdHM6c319LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2MDIsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2F0dHJpYnV0ZXMiOjEwNTZ9XSwxMDYwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY2FsYzp0KCIuL2NhbGMiKSxjb2xvcmJhcjp7bWluOiJjbWluIixtYXg6ImNtYXgifSxwbG90OnQoIi4vY29udmVydCIpLmNyZWF0ZUlzb3N1cmZhY2VUcmFjZSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiaXNvc3VyZmFjZSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNhdGVnb3JpZXM6WyJnbDNkIiwic2hvd0xlZ2VuZCJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dsM2QiOjgwNSwiLi9hdHRyaWJ1dGVzIjoxMDU2LCIuL2NhbGMiOjEwNTcsIi4vY29udmVydCI6MTA1OCwiLi9kZWZhdWx0cyI6MTA1OX1dLDEwNjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi9zdXJmYWNlL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz1zKHt4Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxpOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sazp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSxob3ZlcnRlbXBsYXRlOmEoe2VkaXRUeXBlOiJjYWxjIn0pLGRlbGF1bmF5YXhpczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsieCIsInkiLCJ6Il0sZGZsdDoieiIsZWRpdFR5cGU6ImNhbGMifSxhbHBoYWh1bGw6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDotMSxlZGl0VHlwZToiY2FsYyJ9LGludGVuc2l0eTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxpbnRlbnNpdHltb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ2ZXJ0ZXgiLCJjZWxsIl0sZGZsdDoidmVydGV4IixlZGl0VHlwZToiY2FsYyJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6ImNhbGMifSx2ZXJ0ZXhjb2xvcjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxmYWNlY29sb3I6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdHJhbnNmb3Jtczp2b2lkIDB9LG4oIiIse2NvbG9yQXR0cjoiYGludGVuc2l0eWAiLHNob3dTY2FsZURmbHQ6ITAsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSx7b3BhY2l0eTppLm9wYWNpdHksZmxhdHNoYWRpbmc6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxjb250b3VyOntzaG93OnMoe30saS5jb250b3Vycy54LnNob3cse30pLGNvbG9yOmkuY29udG91cnMueC5jb2xvcix3aWR0aDppLmNvbnRvdXJzLngud2lkdGgsZWRpdFR5cGU6ImNhbGMifSxsaWdodHBvc2l0aW9uOnt4OnMoe30saS5saWdodHBvc2l0aW9uLngse2RmbHQ6MWU1fSkseTpzKHt9LGkubGlnaHRwb3NpdGlvbi55LHtkZmx0OjFlNX0pLHo6cyh7fSxpLmxpZ2h0cG9zaXRpb24ueix7ZGZsdDowfSksZWRpdFR5cGU6ImNhbGMifSxsaWdodGluZzpzKHt2ZXJ0ZXhub3JtYWxzZXBzaWxvbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjFlLTEyLGVkaXRUeXBlOiJjYWxjIn0sZmFjZW5vcm1hbHNlcHNpbG9uOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MWUtNixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0saS5saWdodGluZyksaG92ZXJpbmZvOnMoe30sby5ob3ZlcmluZm8se2VkaXRUeXBlOiJjYWxjIn0pLHNob3dsZWdlbmQ6cyh7fSxvLnNob3dsZWdlbmQse2RmbHQ6ITF9KX0pfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL3N1cmZhY2UvYXR0cmlidXRlcyI6MTI0M31dLDEwNjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlLmludGVuc2l0eSYmbih0LGUse3ZhbHM6ZS5pbnRlbnNpdHksY29udGFpbmVyU3RyOiIiLGNMZXR0ZXI6ImMifSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjo2MDB9XSwxMDYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLW1lc2gzZCIpLGE9dCgiZGVsYXVuYXktdHJpYW5ndWxhdGUiKSxpPXQoImFscGhhLXNoYXBlIiksbz10KCJjb252ZXgtaHVsbCIpLHM9dCgiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLnBhcnNlQ29sb3JTY2FsZSxsPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLmV4dHJhY3RPcHRzLHU9dCgiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIik7ZnVuY3Rpb24gaCh0LGUscil7dGhpcy5zY2VuZT10LHRoaXMudWlkPXIsdGhpcy5tZXNoPWUsdGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9IiNmZmYiLHRoaXMuZGF0YT1udWxsLHRoaXMuc2hvd0NvbnRvdXI9ITF9dmFyIGY9aC5wcm90b3R5cGU7ZnVuY3Rpb24gcCh0KXtmb3IodmFyIGU9W10scj10Lmxlbmd0aCxuPTA7bjxyO24rKyllW25dPWwodFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZCh0LGUscixuKXtmb3IodmFyIGE9W10saT1lLmxlbmd0aCxvPTA7bzxpO28rKylhW29dPXQuZDJsKGVbb10sMCxuKSpyO3JldHVybiBhfWZ1bmN0aW9uIGcodCl7Zm9yKHZhciBlPVtdLHI9dC5sZW5ndGgsbj0wO248cjtuKyspZVtuXT1NYXRoLnJvdW5kKHRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHYodCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj0wO248cjtuKyspaWYodFtuXTw9LS41fHx0W25dPj1lLS41KXJldHVybiExO3JldHVybiEwfWYuaGFuZGxlUGljaz1mdW5jdGlvbih0KXtpZih0Lm9iamVjdD09PXRoaXMubWVzaCl7dmFyIGU9dC5pbmRleD10LmRhdGEuaW5kZXg7dC5kYXRhLl9jZWxsQ2VudGVyP3QudHJhY2VDb29yZGluYXRlPXQuZGF0YS5kYXRhQ29vcmRpbmF0ZTp0LnRyYWNlQ29vcmRpbmF0ZT1bdGhpcy5kYXRhLnhbZV0sdGhpcy5kYXRhLnlbZV0sdGhpcy5kYXRhLnpbZV1dO3ZhciByPXRoaXMuZGF0YS5ob3ZlcnRleHR8fHRoaXMuZGF0YS50ZXh0O3JldHVybiBBcnJheS5pc0FycmF5KHIpJiZ2b2lkIDAhPT1yW2VdP3QudGV4dExhYmVsPXJbZV06ciYmKHQudGV4dExhYmVsPXIpLCEwfX0sZi51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zY2VuZSxyPWUuZnVsbFNjZW5lTGF5b3V0O3RoaXMuZGF0YT10O3ZhciBuLGg9dC54Lmxlbmd0aCxmPXUoZChyLnhheGlzLHQueCxlLmRhdGFTY2FsZVswXSx0LnhjYWxlbmRhciksZChyLnlheGlzLHQueSxlLmRhdGFTY2FsZVsxXSx0LnljYWxlbmRhciksZChyLnpheGlzLHQueixlLmRhdGFTY2FsZVsyXSx0LnpjYWxlbmRhcikpO2lmKHQuaSYmdC5qJiZ0Lmspe2lmKHQuaS5sZW5ndGghPT10LmoubGVuZ3RofHx0LmoubGVuZ3RoIT09dC5rLmxlbmd0aHx8IXYodC5pLGgpfHwhdih0LmosaCl8fCF2KHQuayxoKSlyZXR1cm47bj11KGcodC5pKSxnKHQuaiksZyh0LmspKX1lbHNlIG49MD09PXQuYWxwaGFodWxsP28oZik6dC5hbHBoYWh1bGw+MD9pKHQuYWxwaGFodWxsLGYpOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVsieCIsInkiLCJ6Il0uaW5kZXhPZih0KSxuPVtdLGk9ZS5sZW5ndGgsbz0wO288aTtvKyspbltvXT1bZVtvXVsocisxKSUzXSxlW29dWyhyKzIpJTNdXTtyZXR1cm4gYShuKX0odC5kZWxhdW5heWF4aXMsZik7dmFyIG09e3Bvc2l0aW9uczpmLGNlbGxzOm4sbGlnaHRQb3NpdGlvbjpbdC5saWdodHBvc2l0aW9uLngsdC5saWdodHBvc2l0aW9uLnksdC5saWdodHBvc2l0aW9uLnpdLGFtYmllbnQ6dC5saWdodGluZy5hbWJpZW50LGRpZmZ1c2U6dC5saWdodGluZy5kaWZmdXNlLHNwZWN1bGFyOnQubGlnaHRpbmcuc3BlY3VsYXIscm91Z2huZXNzOnQubGlnaHRpbmcucm91Z2huZXNzLGZyZXNuZWw6dC5saWdodGluZy5mcmVzbmVsLHZlcnRleE5vcm1hbHNFcHNpbG9uOnQubGlnaHRpbmcudmVydGV4bm9ybWFsc2Vwc2lsb24sZmFjZU5vcm1hbHNFcHNpbG9uOnQubGlnaHRpbmcuZmFjZW5vcm1hbHNlcHNpbG9uLG9wYWNpdHk6dC5vcGFjaXR5LGNvbnRvdXJFbmFibGU6dC5jb250b3VyLnNob3csY29udG91ckNvbG9yOmwodC5jb250b3VyLmNvbG9yKS5zbGljZSgwLDMpLGNvbnRvdXJXaWR0aDp0LmNvbnRvdXIud2lkdGgsdXNlRmFjZXROb3JtYWxzOnQuZmxhdHNoYWRpbmd9O2lmKHQuaW50ZW5zaXR5KXt2YXIgeT1jKHQpO3RoaXMuY29sb3I9IiNmZmYiO3ZhciB4PXQuaW50ZW5zaXR5bW9kZTttW3grIkludGVuc2l0eSJdPXQuaW50ZW5zaXR5LG1beCsiSW50ZW5zaXR5Qm91bmRzIl09W3kubWluLHkubWF4XSxtLmNvbG9ybWFwPXModCl9ZWxzZSB0LnZlcnRleGNvbG9yPyh0aGlzLmNvbG9yPXQudmVydGV4Y29sb3JbMF0sbS52ZXJ0ZXhDb2xvcnM9cCh0LnZlcnRleGNvbG9yKSk6dC5mYWNlY29sb3I/KHRoaXMuY29sb3I9dC5mYWNlY29sb3JbMF0sbS5jZWxsQ29sb3JzPXAodC5mYWNlY29sb3IpKToodGhpcy5jb2xvcj10LmNvbG9yLG0ubWVzaENvbG9yPWwodC5jb2xvcikpO3RoaXMubWVzaC51cGRhdGUobSl9LGYuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLm1lc2gpLHRoaXMubWVzaC5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuZ2xwbG90LmdsLGE9bih7Z2w6cn0pLGk9bmV3IGgodCxhLGUudWlkKTtyZXR1cm4gYS5fdHJhY2U9aSxpLnVwZGF0ZShlKSx0LmdscGxvdC5hZGQoYSksaX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjcxNCwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NzQwLCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiOjgxNiwiYWxwaGEtc2hhcGUiOjY3LCJjb252ZXgtaHVsbCI6MTMyLCJkZWxhdW5heS10cmlhbmd1bGF0ZSI6MTY3LCJnbC1tZXNoM2QiOjI4M31dLDEwNjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksbz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscyl7ZnVuY3Rpb24gbChyLG4pe3JldHVybiBhLmNvZXJjZSh0LGUsbyxyLG4pfWZ1bmN0aW9uIGModCl7dmFyIGU9dC5tYXAoZnVuY3Rpb24odCl7dmFyIGU9bCh0KTtyZXR1cm4gZSYmYS5pc0FycmF5T3JUeXBlZEFycmF5KGUpP2U6bnVsbH0pO3JldHVybiBlLmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD09PWVbMF0ubGVuZ3RofSkmJmV9YyhbIngiLCJ5IiwieiJdKT8oYyhbImkiLCJqIiwiayJdKSwoIWUuaXx8ZS5qJiZlLmspJiYoIWUuanx8ZS5rJiZlLmkpJiYoIWUua3x8ZS5pJiZlLmopPyhuLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlVHJhY2VEZWZhdWx0cyIpKHQsZSxbIngiLCJ5IiwieiJdLHMpLFsibGlnaHRpbmcuYW1iaWVudCIsImxpZ2h0aW5nLmRpZmZ1c2UiLCJsaWdodGluZy5zcGVjdWxhciIsImxpZ2h0aW5nLnJvdWdobmVzcyIsImxpZ2h0aW5nLmZyZXNuZWwiLCJsaWdodGluZy52ZXJ0ZXhub3JtYWxzZXBzaWxvbiIsImxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxvbiIsImxpZ2h0cG9zaXRpb24ueCIsImxpZ2h0cG9zaXRpb24ueSIsImxpZ2h0cG9zaXRpb24ueiIsImZsYXRzaGFkaW5nIiwiYWxwaGFodWxsIiwiZGVsYXVuYXlheGlzIiwib3BhY2l0eSJdLmZvckVhY2goZnVuY3Rpb24odCl7bCh0KX0pLGwoImNvbnRvdXIuc2hvdyIpJiYobCgiY29udG91ci5jb2xvciIpLGwoImNvbnRvdXIud2lkdGgiKSksImludGVuc2l0eSJpbiB0PyhsKCJpbnRlbnNpdHkiKSxsKCJpbnRlbnNpdHltb2RlIiksaSh0LGUscyxsLHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSk6KGUuc2hvd3NjYWxlPSExLCJmYWNlY29sb3IiaW4gdD9sKCJmYWNlY29sb3IiKToidmVydGV4Y29sb3IiaW4gdD9sKCJ2ZXJ0ZXhjb2xvciIpOmwoImNvbG9yIixyKSksbCgidGV4dCIpLGwoImhvdmVydGV4dCIpLGwoImhvdmVydGVtcGxhdGUiKSxlLl9sZW5ndGg9bnVsbCk6ZS52aXNpYmxlPSExKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVzIjoxMDYxfV0sMTA2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIiksY29sb3JiYXI6e21pbjoiY21pbiIsbWF4OiJjbWF4In0scGxvdDp0KCIuL2NvbnZlcnQiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToibWVzaDNkIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0ZWdvcmllczpbImdsM2QiLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2wzZCI6ODA1LCIuL2F0dHJpYnV0ZXMiOjEwNjEsIi4vY2FsYyI6MTA2MiwiLi9jb252ZXJ0IjoxMDYzLCIuL2RlZmF1bHRzIjoxMDY0fV0sMTA2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKS5leHRlbmRGbGF0LGE9dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gsbz10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2NvbnN0YW50cy9kZWx0YS5qcyIpLGw9cy5JTkNSRUFTSU5HLkNPTE9SLGM9cy5ERUNSRUFTSU5HLkNPTE9SLHU9YS5saW5lO2Z1bmN0aW9uIGgodCl7cmV0dXJue2xpbmU6e2NvbG9yOm4oe30sdS5jb2xvcix7ZGZsdDp0fSksd2lkdGg6dS53aWR0aCxkYXNoOmksZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn19ZS5leHBvcnRzPXt4Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LG9wZW46e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0saGlnaDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxsb3c6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sY2xvc2U6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbGluZTp7d2lkdGg6bih7fSx1LndpZHRoLHt9KSxkYXNoOm4oe30saSx7fSksZWRpdFR5cGU6InN0eWxlIn0saW5jcmVhc2luZzpoKGwpLGRlY3JlYXNpbmc6aChjKSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSx0aWNrd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4Oi41LGRmbHQ6LjMsZWRpdFR5cGU6ImNhbGMifSxob3ZlcmxhYmVsOm4oe30sby5ob3ZlcmxhYmVsLHtzcGxpdDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToic3R5bGUifX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyI6NjEyLCIuLi8uLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiOjYyMiwiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIjo2ODcsIi4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSwxMDY3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9bi5fLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU07ZnVuY3Rpb24gcyh0LGUscixuKXtyZXR1cm57bzp0LGg6ZSxsOnIsYzpufX1mdW5jdGlvbiBsKHQsZSxyLHMsbCl7Zm9yKHZhciBjPXMubWFrZUNhbGNkYXRhKGUsIm9wZW4iKSx1PXMubWFrZUNhbGNkYXRhKGUsImhpZ2giKSxoPXMubWFrZUNhbGNkYXRhKGUsImxvdyIpLGY9cy5tYWtlQ2FsY2RhdGEoZSwiY2xvc2UiKSxwPUFycmF5LmlzQXJyYXkoZS50ZXh0KSxkPUFycmF5LmlzQXJyYXkoZS5ob3ZlcnRleHQpLGc9ITAsdj1udWxsLG09W10seT0wO3k8ci5sZW5ndGg7eSsrKXt2YXIgeD1yW3ldLGI9Y1t5XSxfPXVbeV0sdz1oW3ldLGs9Zlt5XTtpZih4IT09byYmYiE9PW8mJl8hPT1vJiZ3IT09byYmayE9PW8pe2s9PT1iP251bGwhPT12JiZrIT09diYmKGc9az52KTpnPWs+Yix2PWs7dmFyIFQ9bChiLF8sdyxrKTtULnBvcz14LFQueWM9KGIraykvMixULmk9eSxULmRpcj1nPyJpbmNyZWFzaW5nIjoiZGVjcmVhc2luZyIsVC54PVQucG9zLFQueT1bdyxfXSxwJiYoVC50eD1lLnRleHRbeV0pLGQmJihULmh0eD1lLmhvdmVydGV4dFt5XSksbS5wdXNoKFQpfWVsc2UgbS5wdXNoKHtwb3M6eCxlbXB0eTohMH0pfXJldHVybiBlLl9leHRyZW1lc1tzLl9pZF09aS5maW5kRXh0cmVtZXMocyxuLmNvbmNhdChoLHUpLHtwYWRkZWQ6ITB9KSxtLmxlbmd0aCYmKG1bMF0udD17bGFiZWxzOntvcGVuOmEodCwib3BlbjoiKSsiICIsaGlnaDphKHQsImhpZ2g6IikrIiAiLGxvdzphKHQsImxvdzoiKSsiICIsY2xvc2U6YSh0LCJjbG9zZToiKSsiICJ9fSksbX1lLmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXt2YXIgcj1pLmdldEZyb21JZCh0LGUueGF4aXMpLGE9aS5nZXRGcm9tSWQodCxlLnlheGlzKSxvPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1yLl9taW5EaWZmO2lmKCFhKXt2YXIgaSxvPXQuX2Z1bGxEYXRhLHM9W107Zm9yKGE9MS8wLGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIGw9b1tpXTtpZigib2hsYyI9PT1sLnR5cGUmJiEwPT09bC52aXNpYmxlJiZsLnhheGlzPT09ZS5faWQpe3MucHVzaChsKTt2YXIgYz1lLm1ha2VDYWxjZGF0YShsLCJ4Iik7bC5feGNhbGM9Yzt2YXIgdT1uLmRpc3RpbmN0VmFscyhjKS5taW5EaWZmO3UmJmlzRmluaXRlKHUpJiYoYT1NYXRoLm1pbihhLHUpKX19Zm9yKGE9PT0xLzAmJihhPTEpLGk9MDtpPHMubGVuZ3RoO2krKylzW2ldLl9taW5EaWZmPWF9cmV0dXJuIGEqci50aWNrd2lkdGh9KHQscixlKSxjPWUuX21pbkRpZmY7ZS5fbWluRGlmZj1udWxsO3ZhciB1PWUuX3hjYWxjO2UuX3hjYWxjPW51bGw7dmFyIGg9bCh0LGUsdSxhLHMpO3JldHVybiBlLl9leHRyZW1lc1tyLl9pZF09aS5maW5kRXh0cmVtZXMocix1LHt2cGFkOmMvMn0pLGgubGVuZ3RoPyhuLmV4dGVuZEZsYXQoaFswXS50LHt3SG92ZXI6Yy8yLHRpY2tMZW46b30pLGgpOlt7dDp7ZW1wdHk6ITB9fV19LGNhbGNDb21tb246bH19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDEwNjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL29obGNfZGVmYXVsdHMiKSxpPXQoIi4vYXR0cmlidXRlcyIpO2Z1bmN0aW9uIG8odCxlLHIsbil7cihuKyIubGluZS5jb2xvciIpLHIobisiLmxpbmUud2lkdGgiLGUubGluZS53aWR0aCkscihuKyIubGluZS5kYXNoIixlLmxpbmUuZGFzaCl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe2Z1bmN0aW9uIGwocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX1hKHQsZSxsLHMpPyhsKCJsaW5lLndpZHRoIiksbCgibGluZS5kYXNoIiksbyh0LGUsbCwiaW5jcmVhc2luZyIpLG8odCxlLGwsImRlY3JlYXNpbmciKSxsKCJ0ZXh0IiksbCgiaG92ZXJ0ZXh0IiksbCgidGlja3dpZHRoIikscy5fcmVxdWVzdFJhbmdlc2xpZGVyW2UueGF4aXNdPSEwKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2F0dHJpYnV0ZXMiOjEwNjYsIi4vb2hsY19kZWZhdWx0cyI6MTA3MX1dLDEwNjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLHM9dCgiLi4vLi4vbGliIikuZmlsbFRleHQsbD10KCIuLi8uLi9jb25zdGFudHMvZGVsdGEuanMiKSxjPXtpbmNyZWFzaW5nOmwuSU5DUkVBU0lORy5TWU1CT0wsZGVjcmVhc2luZzpsLkRFQ1JFQVNJTkcuU1lNQk9MfTtmdW5jdGlvbiB1KHQsZSxyLG4pe3ZhciBhLHMsbD10LmNkLGM9dC54YSx1PWxbMF0udHJhY2UsaD1sWzBdLnQsZj11LnR5cGUscD0ib2hsYyI9PT1mPyJsIjoibWluIixkPSJvaGxjIj09PWY/ImgiOiJtYXgiLGc9aC5iUG9zfHwwLHY9ZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zK2ctZX0sbT1oLmJkUG9zfHxoLnRpY2tMZW4seT1oLndIb3Zlcix4PU1hdGgubWluKDEsbS9NYXRoLmFicyhjLnIyYyhjLnJhbmdlWzFdKS1jLnIyYyhjLnJhbmdlWzBdKSkpO2Z1bmN0aW9uIGIodCl7dmFyIGU9dih0KTtyZXR1cm4gaS5pbmJveChlLXksZSt5LGEpfWZ1bmN0aW9uIF8odCl7dmFyIGU9dFtwXSxuPXRbZF07cmV0dXJuIGU9PT1ufHxpLmluYm94KGUtcixuLXIsYSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4oYih0KStfKHQpKS8yfWE9dC5tYXhIb3ZlckRpc3RhbmNlLXgscz10Lm1heFNwaWtlRGlzdGFuY2UteDt2YXIgaz1pLmdldERpc3RhbmNlRnVuY3Rpb24obixiLF8sdyk7aWYoaS5nZXRDbG9zZXN0KGwsayx0KSwhMT09PXQuaW5kZXgpcmV0dXJuIG51bGw7dmFyIFQ9bFt0LmluZGV4XTtpZihULmVtcHR5KXJldHVybiBudWxsO3ZhciBNPXVbVC5kaXJdLEE9TS5saW5lLmNvbG9yO3JldHVybiBvLm9wYWNpdHkoQSkmJk0ubGluZS53aWR0aD90LmNvbG9yPUE6dC5jb2xvcj1NLmZpbGxjb2xvcix0LngwPWMuYzJwKFQucG9zK2ctbSwhMCksdC54MT1jLmMycChULnBvcytnK20sITApLHQueExhYmVsVmFsPVQucG9zLHQuc3Bpa2VEaXN0YW5jZT13KFQpKnMvYSx0LnhTcGlrZT1jLmMycChULnBvcywhMCksdH1mdW5jdGlvbiBoKHQsZSxyLGkpe3ZhciBvPXQuY2Qscz10LnlhLGw9b1swXS50cmFjZSxjPW9bMF0udCxoPVtdLGY9dSh0LGUscixpKTtpZighZilyZXR1cm5bXTt2YXIgcD1vW2YuaW5kZXhdLmhpfHxsLmhvdmVyaW5mbyxkPXAuc3BsaXQoIisiKTtpZighKCJhbGwiPT09cHx8LTEhPT1kLmluZGV4T2YoInkiKSkpcmV0dXJuW107Zm9yKHZhciBnPVsiaGlnaCIsIm9wZW4iLCJjbG9zZSIsImxvdyJdLHY9e30sbT0wO208Zy5sZW5ndGg7bSsrKXt2YXIgeSx4PWdbbV0sYj1sW3hdW2YuaW5kZXhdLF89cy5jMnAoYiwhMCk7YiBpbiB2Pyh5PXZbYl0pLnlMYWJlbCs9Ijxicj4iK2MubGFiZWxzW3hdK24uaG92ZXJMYWJlbFRleHQocyxiKTooKHk9YS5leHRlbmRGbGF0KHt9LGYpKS55MD15LnkxPV8seS55TGFiZWxWYWw9Yix5LnlMYWJlbD1jLmxhYmVsc1t4XStuLmhvdmVyTGFiZWxUZXh0KHMsYikseS5uYW1lPSIiLGgucHVzaCh5KSx2W2JdPXkpfXJldHVybiBofWZ1bmN0aW9uIGYodCxlLHIsYSl7dmFyIGk9dC5jZCxvPXQueWEsbD1pWzBdLnRyYWNlLGg9aVswXS50LGY9dSh0LGUscixhKTtpZighZilyZXR1cm5bXTt2YXIgcD1pW2YuaW5kZXhdLGQ9Zi5pbmRleD1wLmksZz1wLmRpcjtmdW5jdGlvbiB2KHQpe3JldHVybiBoLmxhYmVsc1t0XStuLmhvdmVyTGFiZWxUZXh0KG8sbFt0XVtkXSl9dmFyIG09cC5oaXx8bC5ob3ZlcmluZm8seT1tLnNwbGl0KCIrIikseD0iYWxsIj09PW0sYj14fHwtMSE9PXkuaW5kZXhPZigieSIpLF89eHx8LTEhPT15LmluZGV4T2YoInRleHQiKSx3PWI/W3YoIm9wZW4iKSx2KCJoaWdoIiksdigibG93IiksdigiY2xvc2UiKSsiICAiK2NbZ11dOltdO3JldHVybiBfJiZzKHAsbCx3KSxmLmV4dHJhVGV4dD13LmpvaW4oIjxicj4iKSxmLnkwPWYueTE9by5jMnAocC55YywhMCksW2ZdfWUuZXhwb3J0cz17aG92ZXJQb2ludHM6ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHQuY2RbMF0udHJhY2UuaG92ZXJsYWJlbC5zcGxpdD9oKHQsZSxyLG4pOmYodCxlLHIsbil9LGhvdmVyU3BsaXQ6aCxob3Zlck9uUG9pbnRzOmZ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9jb25zdGFudHMvZGVsdGEuanMiOjY4NywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjV9XSwxMDcwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6Im9obGMiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCJzaG93TGVnZW5kIl0sbWV0YTp7fSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLmNhbGMscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxlIiksaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi9hdHRyaWJ1dGVzIjoxMDY2LCIuL2NhbGMiOjEwNjcsIi4vZGVmYXVsdHMiOjEwNjgsIi4vaG92ZXIiOjEwNjksIi4vcGxvdCI6MTA3MiwiLi9zZWxlY3QiOjEwNzMsIi4vc3R5bGUiOjEwNzR9XSwxMDcxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89cigieCIpLHM9cigib3BlbiIpLGw9cigiaGlnaCIpLGM9cigibG93IiksdT1yKCJjbG9zZSIpO2lmKHIoImhvdmVybGFiZWwuc3BsaXQiKSxuLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlVHJhY2VEZWZhdWx0cyIpKHQsZSxbIngiXSxpKSxzJiZsJiZjJiZ1KXt2YXIgaD1NYXRoLm1pbihzLmxlbmd0aCxsLmxlbmd0aCxjLmxlbmd0aCx1Lmxlbmd0aCk7cmV0dXJuIG8mJihoPU1hdGgubWluKGgsYS5taW5Sb3dMZW5ndGgobykpKSxlLl9sZW5ndGg9aCxofX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDZ9XSwxMDcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89ZS54YXhpcyxzPWUueWF4aXM7YS5tYWtlVHJhY2VHcm91cHMoaSxyLCJ0cmFjZSBvaGxjIikuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxyPXRbMF0saT1yLnQ7aWYoITAhPT1yLnRyYWNlLnZpc2libGV8fGkuZW1wdHkpZS5yZW1vdmUoKTtlbHNle3ZhciBsPWkudGlja0xlbixjPWUuc2VsZWN0QWxsKCJwYXRoIikuZGF0YShhLmlkZW50aXR5KTtjLmVudGVyKCkuYXBwZW5kKCJwYXRoIiksYy5leGl0KCkucmVtb3ZlKCksYy5hdHRyKCJkIixmdW5jdGlvbih0KXtpZih0LmVtcHR5KXJldHVybiJNMCwwWiI7dmFyIGU9by5jMnAodC5wb3MsITApLHI9by5jMnAodC5wb3MtbCwhMCksbj1vLmMycCh0LnBvcytsLCEwKTtyZXR1cm4iTSIrcisiLCIrcy5jMnAodC5vLCEwKSsiSCIrZSsiTSIrZSsiLCIrcy5jMnAodC5oLCEwKSsiViIrcy5jMnAodC5sLCEwKSsiTSIrbisiLCIrcy5jMnAodC5jLCEwKSsiSCIrZX0pfX0pfX0seyIuLi8uLi9saWIiOjcxNyxkMzoxNjV9XSwxMDczOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG49dC5jZCxhPXQueGF4aXMsaT10LnlheGlzLG89W10scz1uWzBdLnQuYlBvc3x8MDtpZighMT09PWUpZm9yKHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdLnNlbGVjdGVkPTA7ZWxzZSBmb3Iocj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbD1uW3JdO2UuY29udGFpbnMoW2EuYzJwKGwucG9zK3MpLGkuYzJwKGwueWMpXSxudWxsLGwuaSx0KT8oby5wdXNoKHtwb2ludE51bWJlcjpsLmkseDphLmMyZChsLnBvcykseTppLmMyZChsLnljKX0pLGwuc2VsZWN0ZWQ9MSk6bC5zZWxlY3RlZD0wfXJldHVybiBvfX0se31dLDEwNzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG89cnx8bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLm9obGNsYXllciIpLnNlbGVjdEFsbCgiZy50cmFjZSIpO28uc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNlLm9wYWNpdHl9KSxvLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZTtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgiKS5lYWNoKGZ1bmN0aW9uKHQpe2lmKCF0LmVtcHR5KXt2YXIgcj1lW3QuZGlyXS5saW5lO24uc2VsZWN0KHRoaXMpLnN0eWxlKCJmaWxsIiwibm9uZSIpLmNhbGwoaS5zdHJva2Usci5jb2xvcikuY2FsbChhLmRhc2hMaW5lLHIuZGFzaCxyLndpZHRoKS5zdHlsZSgib3BhY2l0eSIsZS5zZWxlY3RlZHBvaW50cyYmIXQuc2VsZWN0ZWQ/LjM6MSl9fSl9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMyxkMzoxNjV9XSwxMDc1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGE9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxsPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsYz1uKHtlZGl0VHlwZToiY2FsYyJ9LG8oImxpbmUiLHtlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pLHtzaGFwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGluZWFyIiwiaHNwbGluZSJdLGRmbHQ6ImxpbmVhciIsZWRpdFR5cGU6InBsb3QifSxob3ZlcnRlbXBsYXRlOnMoe2VkaXRUeXBlOiJwbG90IixhcnJheU9rOiExfSx7a2V5czpbImNvdW50IiwicHJvYmFiaWxpdHkiXX0pfSk7ZS5leHBvcnRzPXtkb21haW46bCh7bmFtZToicGFyY2F0cyIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSksaG92ZXJpbmZvOm4oe30sYS5ob3ZlcmluZm8se2ZsYWdzOlsiY291bnQiLCJwcm9iYWJpbGl0eSJdLGVkaXRUeXBlOiJwbG90IixhcnJheU9rOiExfSksaG92ZXJvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY2F0ZWdvcnkiLCJjb2xvciIsImRpbWVuc2lvbiJdLGRmbHQ6ImNhdGVnb3J5IixlZGl0VHlwZToicGxvdCJ9LGhvdmVydGVtcGxhdGU6cyh7ZWRpdFR5cGU6InBsb3QiLGFycmF5T2s6ITF9LHtrZXlzOlsiY291bnQiLCJwcm9iYWJpbGl0eSIsImNhdGVnb3J5IiwiY2F0ZWdvcnljb3VudCIsImNvbG9yY291bnQiLCJiYW5kY29sb3Jjb3VudCJdfSksYXJyYW5nZW1lbnQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInBlcnBlbmRpY3VsYXIiLCJmcmVlZm9ybSIsImZpeGVkIl0sZGZsdDoicGVycGVuZGljdWxhciIsZWRpdFR5cGU6InBsb3QifSxidW5kbGVjb2xvcnM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSxzb3J0cGF0aHM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZvcndhcmQiLCJiYWNrd2FyZCJdLGRmbHQ6ImZvcndhcmQiLGVkaXRUeXBlOiJwbG90In0sbGFiZWxmb250Omkoe2VkaXRUeXBlOiJjYWxjIn0pLHRpY2tmb250Omkoe2VkaXRUeXBlOiJjYWxjIn0pLGRpbWVuc2lvbnM6e19pc0xpbmtlZFRvQXJyYXk6ImRpbWVuc2lvbiIsbGFiZWw6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSxjYXRlZ29yeW9yZGVyOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0cmFjZSIsImNhdGVnb3J5IGFzY2VuZGluZyIsImNhdGVnb3J5IGRlc2NlbmRpbmciLCJhcnJheSJdLGRmbHQ6InRyYWNlIixlZGl0VHlwZToiY2FsYyJ9LGNhdGVnb3J5YXJyYXk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdGlja3RleHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdLGVkaXRUeXBlOiJjYWxjIn0sZGlzcGxheWluZGV4Ont2YWxUeXBlOiJpbnRlZ2VyIixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIix2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn19LGxpbmU6Yyxjb3VudHM6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSxjdXN0b21kYXRhOnZvaWQgMCxob3ZlcmxhYmVsOnZvaWQgMCxpZHM6dm9pZCAwLGxlZ2VuZGdyb3VwOnZvaWQgMCxvcGFjaXR5OnZvaWQgMCxzZWxlY3RlZHBvaW50czp2b2lkIDAsc2hvd2xlZ2VuZDp2b2lkIDB9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MX1dLDEwNzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiKS5nZXRNb2R1bGVDYWxjRGF0YSxhPXQoIi4vcGxvdCIpO3IubmFtZT0icGFyY2F0cyIsci5wbG90PWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPW4odC5jYWxjZGF0YSwicGFyY2F0cyIpO2lmKG8ubGVuZ3RoKXt2YXIgcz1vWzBdO2EodCxzLHIsaSl9fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW4uX2hhcyYmbi5faGFzKCJwYXJjYXRzIiksaT1lLl9oYXMmJmUuX2hhcygicGFyY2F0cyIpO2EmJiFpJiZuLl9wYXBlcmRpdi5zZWxlY3RBbGwoIi5wYXJjYXRzIikucmVtb3ZlKCl9fSx7Ii4uLy4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4vcGxvdCI6MTA4MX1dLDEwNzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL2d1cCIpLndyYXAsYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLG89dCgiLi4vLi4vbGliL2ZpbHRlcl91bmlxdWUuanMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGw9dCgiLi4vLi4vbGliIik7ZnVuY3Rpb24gYyh0LGUscil7dC52YWx1ZUluZHMucHVzaChlKSx0LmNvdW50Kz1yfWZ1bmN0aW9uIHUodCxlLHIpe3JldHVybntjYXRlZ29yeUluZHM6dCxjb2xvcjplLHJhd0NvbG9yOnIsdmFsdWVJbmRzOltdLGNvdW50OjB9fWZ1bmN0aW9uIGgodCxlLHIpe3QudmFsdWVJbmRzLnB1c2goZSksdC5jb3VudCs9cn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1sLmZpbHRlclZpc2libGUoZS5kaW1lbnNpb25zKTtpZigwPT09ci5sZW5ndGgpcmV0dXJuW107dmFyIGYscCxkLGc9ci5tYXAoZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuInRyYWNlIj09PXQuY2F0ZWdvcnlvcmRlcj9lPW51bGw6ImFycmF5Ij09PXQuY2F0ZWdvcnlvcmRlcj9lPXQuY2F0ZWdvcnlhcnJheTooZT1vKHQudmFsdWVzKS5zb3J0KCksImNhdGVnb3J5IGRlc2NlbmRpbmciPT09dC5jYXRlZ29yeW9yZGVyJiYoZT1lLnJldmVyc2UoKSkpLGZ1bmN0aW9uKHQsZSl7ZT1udWxsPT1lP1tdOmUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0fSk7dmFyIHI9e30sbj17fSxhPVtdO2UuZm9yRWFjaChmdW5jdGlvbih0LGUpe3JbdF09MCxuW3RdPWV9KTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG8scz10W2ldO3ZvaWQgMD09PXJbc10/KHJbc109MSxvPWUucHVzaChzKS0xLG5bc109byk6KHJbc10rKyxvPW5bc10pLGEucHVzaChvKX12YXIgbD1lLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gclt0XX0pO3JldHVybnt1bmlxdWVWYWx1ZXM6ZSx1bmlxdWVDb3VudHM6bCxpbmRzOmF9fSh0LnZhbHVlcyxlKX0pO2Y9bC5pc0FycmF5T3JUeXBlZEFycmF5KGUuY291bnRzKT9lLmNvdW50czpbZS5jb3VudHNdLGZ1bmN0aW9uKHQpe3ZhciBlO2lmKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9MDtyPHQubGVuZ3RoO3IrKyl7aWYodFtyXTwwfHx0W3JdPj10Lmxlbmd0aClyZXR1cm4hMTtpZih2b2lkIDAhPT1lW3Rbcl1dKXJldHVybiExO2VbdFtyXV09ITB9cmV0dXJuITB9KHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3BsYXlpbmRleH0pKSlmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uX2Rpc3BsYXlpbmRleD10W2VdLmRpc3BsYXlpbmRleDtlbHNlIGZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5fZGlzcGxheWluZGV4PWV9KHIpLHIuZm9yRWFjaChmdW5jdGlvbih0LGUpeyFmdW5jdGlvbih0LGUpe3QuX2NhdGVnb3J5YXJyYXk9ZS51bmlxdWVWYWx1ZXMsbnVsbD09PXQudGlja3RleHR8fHZvaWQgMD09PXQudGlja3RleHQ/dC5fdGlja3RleHQ9W106dC5fdGlja3RleHQ9dC50aWNrdGV4dC5zbGljZSgpO2Zvcih2YXIgcj10Ll90aWNrdGV4dC5sZW5ndGg7cjxlLnVuaXF1ZVZhbHVlcy5sZW5ndGg7cisrKXQuX3RpY2t0ZXh0LnB1c2goZS51bmlxdWVWYWx1ZXNbcl0pfSh0LGdbZV0pfSk7dmFyIHYsbT1lLmxpbmU7bT8oYShlLCJsaW5lIikmJmkodCxlLHt2YWxzOmUubGluZS5jb2xvcixjb250YWluZXJTdHI6ImxpbmUiLGNMZXR0ZXI6ImMifSksdj1zLnRyeUNvbG9yc2NhbGUobSkpOnY9bC5pZGVudGl0eTt2YXIgeSx4LGIsXyx3LGs9clswXS52YWx1ZXMubGVuZ3RoLFQ9e30sTT1nLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbmRzfSk7Zm9yKGQ9MCx5PTA7eTxrO3krKyl7dmFyIEE9W107Zm9yKHg9MDt4PE0ubGVuZ3RoO3grKylBLnB1c2goTVt4XVt5XSk7cD1mW3klZi5sZW5ndGhdLGQrPXA7dmFyIFM9KGI9eSxfPXZvaWQgMCx3PXZvaWQgMCxsLmlzQXJyYXlPclR5cGVkQXJyYXkobS5jb2xvcik/dz1fPW0uY29sb3JbYiVtLmNvbG9yLmxlbmd0aF06Xz1tLmNvbG9yLHtjb2xvcjp2KF8pLHJhd0NvbG9yOnd9KSxFPUErIi0iK1MucmF3Q29sb3I7dm9pZCAwPT09VFtFXSYmKFRbRV09dShBLFMuY29sb3IsUy5yYXdDb2xvcikpLGgoVFtFXSx5LHApfXZhciBMLEM9ci5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gcj1lLG49dC5faW5kZXgsYT10Ll9kaXNwbGF5aW5kZXgsaT10LmxhYmVsLHtkaW1lbnNpb25JbmQ6cixjb250YWluZXJJbmQ6bixkaXNwbGF5SW5kOmEsZGltZW5zaW9uTGFiZWw6aSxjb3VudDpkLGNhdGVnb3JpZXM6W10sZHJhZ1g6bnVsbH07dmFyIHIsbixhLGl9KTtmb3IoeT0wO3k8azt5KyspZm9yKHA9Zlt5JWYubGVuZ3RoXSx4PTA7eDxDLmxlbmd0aDt4Kyspe3ZhciBQPUNbeF0uY29udGFpbmVySW5kLE89Z1t4XS5pbmRzW3ldLHo9Q1t4XS5jYXRlZ29yaWVzO2lmKHZvaWQgMD09PXpbT10pe3ZhciBJPWUuZGltZW5zaW9uc1tQXS5fY2F0ZWdvcnlhcnJheVtPXSxEPWUuZGltZW5zaW9uc1tQXS5fdGlja3RleHRbT107eltPXT17ZGltZW5zaW9uSW5kOngsY2F0ZWdvcnlJbmQ6TD1PLGNhdGVnb3J5VmFsdWU6SSxkaXNwbGF5SW5kOkwsY2F0ZWdvcnlMYWJlbDpELHZhbHVlSW5kczpbXSxjb3VudDowLGRyYWdZOm51bGx9fWMoeltPXSx5LHApfXJldHVybiBuKGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRlZ29yaWVzLmxlbmd0aH0pLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSk7cmV0dXJue2RpbWVuc2lvbnM6dCxwYXRoczplLHRyYWNlOnZvaWQgMCxtYXhDYXRzOm4sY291bnQ6cn19KEMsVCxkKSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjo2MDAsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2ZpbHRlcl91bmlxdWUuanMiOjcwOSwiLi4vLi4vbGliL2d1cCI6NzE1fV0sMTA3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuZGVmYXVsdHMscz10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxsPXQoIi4vYXR0cmlidXRlcyIpLGM9dCgiLi4vcGFyY29vcmRzL21lcmdlX2xlbmd0aCIpO2Z1bmN0aW9uIHUodCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxsLmRpbWVuc2lvbnMscixhKX12YXIgYT1yKCJ2YWx1ZXMiKSxpPXIoInZpc2libGUiKTtpZihhJiZhLmxlbmd0aHx8KGk9ZS52aXNpYmxlPSExKSxpKXtyKCJsYWJlbCIpLHIoImRpc3BsYXlpbmRleCIsZS5faW5kZXgpO3ZhciBvLHM9dC5jYXRlZ29yeWFycmF5LGM9QXJyYXkuaXNBcnJheShzKSYmcy5sZW5ndGg+MDtjJiYobz0iYXJyYXkiKTt2YXIgdT1yKCJjYXRlZ29yeW9yZGVyIixvKTsiYXJyYXkiPT09dT8ocigiY2F0ZWdvcnlhcnJheSIpLHIoInRpY2t0ZXh0IikpOihkZWxldGUgdC5jYXRlZ29yeWFycmF5LGRlbGV0ZSB0LnRpY2t0ZXh0KSxjfHwiYXJyYXkiIT09dXx8KGUuY2F0ZWdvcnlvcmRlcj0idHJhY2UiKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGgpe2Z1bmN0aW9uIGYocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGwscixhKX12YXIgcD1zKHQsZSx7bmFtZToiZGltZW5zaW9ucyIsaGFuZGxlSXRlbURlZmF1bHRzOnV9KSxkPWZ1bmN0aW9uKHQsZSxyLG8scyl7cygibGluZS5zaGFwZSIpLHMoImxpbmUuaG92ZXJ0ZW1wbGF0ZSIpO3ZhciBsPXMoImxpbmUuY29sb3IiLG8uY29sb3J3YXlbMF0pO2lmKGEodCwibGluZSIpJiZuLmlzQXJyYXlPclR5cGVkQXJyYXkobCkpe2lmKGwubGVuZ3RoKXJldHVybiBzKCJsaW5lLmNvbG9yc2NhbGUiKSxpKHQsZSxvLHMse3ByZWZpeDoibGluZS4iLGNMZXR0ZXI6ImMifSksbC5sZW5ndGg7ZS5saW5lLmNvbG9yPXJ9cmV0dXJuIDEvMH0odCxlLHIsaCxmKTtvKGUsaCxmKSxBcnJheS5pc0FycmF5KHApJiZwLmxlbmd0aHx8KGUudmlzaWJsZT0hMSksYyhlLHAsInZhbHVlcyIsZCksZigiaG92ZXJvbiIpLGYoImhvdmVydGVtcGxhdGUiKSxmKCJhcnJhbmdlbWVudCIpLGYoImJ1bmRsZWNvbG9ycyIpLGYoInNvcnRwYXRocyIpLGYoImNvdW50cyIpO3ZhciBnPXtmYW1pbHk6aC5mb250LmZhbWlseSxzaXplOk1hdGgucm91bmQoaC5mb250LnNpemUpLGNvbG9yOmguZm9udC5jb2xvcn07bi5jb2VyY2VGb250KGYsImxhYmVsZm9udCIsZyk7dmFyIHY9e2ZhbWlseTpoLmZvbnQuZmFtaWx5LHNpemU6TWF0aC5yb3VuZChoLmZvbnQuc2l6ZS8xLjIpLGNvbG9yOmguZm9udC5jb2xvcn07bi5jb2VyY2VGb250KGYsInRpY2tmb250Iix2KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2MDIsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uL3BhcmNvb3Jkcy9tZXJnZV9sZW5ndGgiOjEwOTEsIi4vYXR0cmlidXRlcyI6MTA3NX1dLDEwNzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksY29sb3JiYXI6e2NvbnRhaW5lcjoibGluZSIsbWluOiJjbWluIixtYXg6ImNtYXgifSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToicGFyY2F0cyIsYmFzZVBsb3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3QiKSxjYXRlZ29yaWVzOlsibm9PcGFjaXR5Il0sbWV0YTp7fX19LHsiLi9hdHRyaWJ1dGVzIjoxMDc1LCIuL2Jhc2VfcGxvdCI6MTA3NiwiLi9jYWxjIjoxMDc3LCIuL2RlZmF1bHRzIjoxMDc4LCIuL3Bsb3QiOjEwODF9XSwxMDgwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9wbG90X2FwaS9wbG90X2FwaSIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxsPXQoInRpbnljb2xvcjIiKSxjPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpO2Z1bmN0aW9uIHUodCxlLHIsYSl7dmFyIGk9dC5tYXAoZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE9clswXSxpPWUubWFyZ2lufHx7bDo4MCxyOjgwLHQ6MTAwLGI6ODB9LG89YS50cmFjZSxzPW8uZG9tYWluLGw9ZS53aWR0aCxjPWUuaGVpZ2h0LHU9TWF0aC5mbG9vcihsKihzLnhbMV0tcy54WzBdKSksaD1NYXRoLmZsb29yKGMqKHMueVsxXS1zLnlbMF0pKSxmPXMueFswXSpsK2kubCxwPWUuaGVpZ2h0LXMueVsxXSplLmhlaWdodCtpLnQsZD1vLmxpbmUuc2hhcGU7bj0iYWxsIj09PW8uaG92ZXJpbmZvP1siY291bnQiLCJwcm9iYWJpbGl0eSJdOihvLmhvdmVyaW5mb3x8IiIpLnNwbGl0KCIrIik7dmFyIGc9e3RyYWNlOm8sa2V5Om8udWlkLG1vZGVsOmEseDpmLHk6cCx3aWR0aDp1LGhlaWdodDpoLGhvdmVyb246by5ob3Zlcm9uLGhvdmVyaW5mb0l0ZW1zOm4sYXJyYW5nZW1lbnQ6by5hcnJhbmdlbWVudCxidW5kbGVjb2xvcnM6by5idW5kbGVjb2xvcnMsc29ydHBhdGhzOm8uc29ydHBhdGhzLGxhYmVsZm9udDpvLmxhYmVsZm9udCxjYXRlZ29yeWxhYmVsZm9udDpvLnRpY2tmb250LHBhdGhTaGFwZTpkLGRyYWdEaW1lbnNpb246bnVsbCxtYXJnaW46aSxwYXRoczpbXSxkaW1lbnNpb25zOltdLGdyYXBoRGl2OnQsdHJhY2VTZWxlY3Rpb246bnVsbCxwYXRoU2VsZWN0aW9uOm51bGwsZGltZW5zaW9uU2VsZWN0aW9uOm51bGx9O2EuZGltZW5zaW9ucyYmKEYoZyksUihnKSk7cmV0dXJuIGd9LmJpbmQoMCxlLHIpKSxsPWEuc2VsZWN0QWxsKCJnLnBhcmNhdHNsYXllciIpLmRhdGEoW251bGxdKTtsLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJwYXJjYXRzbGF5ZXIiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKTt2YXIgdT1sLnNlbGVjdEFsbCgiZy50cmFjZS5wYXJjYXRzIikuZGF0YShpLGgpLHY9dS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidHJhY2UgcGFyY2F0cyIpO3UuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdC54KyIsICIrdC55KyIpIn0pLHYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJwYXRocyIpO3ZhciBtPXUuc2VsZWN0KCJnLnBhdGhzIikuc2VsZWN0QWxsKCJwYXRoLnBhdGgiKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBhdGhzfSxoKTttLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsLmNvbG9yfSk7dmFyIGI9bS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwicGF0aCIpLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwwKS5hdHRyKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC5jb2xvcn0pLmF0dHIoImZpbGwtb3BhY2l0eSIsMCk7eChiKSxtLmF0dHIoImQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnN2Z0R9KSxiLmVtcHR5KCl8fG0uc29ydChwKSxtLmV4aXQoKS5yZW1vdmUoKSxtLm9uKCJtb3VzZW92ZXIiLGQpLm9uKCJtb3VzZW91dCIsZykub24oImNsaWNrIix5KSx2LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZGltZW5zaW9ucyIpO3ZhciBrPXUuc2VsZWN0KCJnLmRpbWVuc2lvbnMiKS5zZWxlY3RBbGwoImcuZGltZW5zaW9uIikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5kaW1lbnNpb25zfSxoKTtrLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJkaW1lbnNpb24iKSxrLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QueCsiLCAwKSJ9KSxrLmV4aXQoKS5yZW1vdmUoKTt2YXIgVD1rLnNlbGVjdEFsbCgiZy5jYXRlZ29yeSIpLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0ZWdvcmllc30saCksTT1ULmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJjYXRlZ29yeSIpO1QuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKDAsICIrdC55KyIpIn0pLE0uYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJjYXRyZWN0IikuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksVC5zZWxlY3QoInJlY3QuY2F0cmVjdCIpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigid2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0LndpZHRofSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR9KSxfKE0pO3ZhciBBPVQuc2VsZWN0QWxsKCJyZWN0LmJhbmRyZWN0IikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5iYW5kc30saCk7QS5lYWNoKGZ1bmN0aW9uKCl7by5yYWlzZVRvVG9wKHRoaXMpfSksQS5hdHRyKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2xvcn0pO3ZhciBPPUEuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImJhbmRyZWN0IikuYXR0cigic3Ryb2tlLW9wYWNpdHkiLDApLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSkuYXR0cigiZmlsbC1vcGFjaXR5IiwwKTtBLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0LndpZHRofSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR9KS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdC55fSkuYXR0cigiY3Vyc29yIixmdW5jdGlvbih0KXtyZXR1cm4iZml4ZWQiPT09dC5wYXJjYXRzVmlld01vZGVsLmFycmFuZ2VtZW50PyJkZWZhdWx0IjoicGVycGVuZGljdWxhciI9PT10LnBhcmNhdHNWaWV3TW9kZWwuYXJyYW5nZW1lbnQ/Im5zLXJlc2l6ZSI6Im1vdmUifSksdyhPKSxBLmV4aXQoKS5yZW1vdmUoKSxNLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiY2F0bGFiZWwiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKTt2YXIgej1lLl9mdWxsTGF5b3V0LnBhcGVyX2JnY29sb3I7VC5zZWxlY3QoInRleHQuY2F0bGFiZWwiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsZnVuY3Rpb24odCl7cmV0dXJuIGYodCk/InN0YXJ0IjoiZW5kIn0pLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLnN0eWxlKCJ0ZXh0LXNoYWRvdyIseisiIC0xcHggIDFweCAycHgsICIreisiIDFweCAgMXB4IDJweCwgIit6KyIgIDFweCAtMXB4IDJweCwgIit6KyIgLTFweCAtMXB4IDJweCIpLnN0eWxlKCJmaWxsIiwicmdiKDAsIDAsIDApIikuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIGYodCk/dC53aWR0aCs1Oi01fSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0LzJ9KS50ZXh0KGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsLmNhdGVnb3J5TGFiZWx9KS5lYWNoKGZ1bmN0aW9uKHQpe3MuZm9udChuLnNlbGVjdCh0aGlzKSx0LnBhcmNhdHNWaWV3TW9kZWwuY2F0ZWdvcnlsYWJlbGZvbnQpLGMuY29udmVydFRvVHNwYW5zKG4uc2VsZWN0KHRoaXMpLGUpfSksTS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImRpbWxhYmVsIiksVC5zZWxlY3QoInRleHQuZGltbGFiZWwiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsImJhc2VsaW5lIikuYXR0cigiY3Vyc29yIixmdW5jdGlvbih0KXtyZXR1cm4iZml4ZWQiPT09dC5wYXJjYXRzVmlld01vZGVsLmFycmFuZ2VtZW50PyJkZWZhdWx0IjoiZXctcmVzaXplIn0pLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0LndpZHRoLzJ9KS5hdHRyKCJ5IiwtNSkudGV4dChmdW5jdGlvbih0LGUpe3JldHVybiAwPT09ZT90LnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuZGltZW5zaW9uc1t0Lm1vZGVsLmRpbWVuc2lvbkluZF0uZGltZW5zaW9uTGFiZWw6bnVsbH0pLmVhY2goZnVuY3Rpb24odCl7cy5mb250KG4uc2VsZWN0KHRoaXMpLHQucGFyY2F0c1ZpZXdNb2RlbC5sYWJlbGZvbnQpfSksVC5zZWxlY3RBbGwoInJlY3QuYmFuZHJlY3QiKS5vbigibW91c2VvdmVyIixTKS5vbigibW91c2VvdXQiLEUpLFQuZXhpdCgpLnJlbW92ZSgpLGsuY2FsbChuLmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4oZnVuY3Rpb24odCl7cmV0dXJue3g6dC54LHk6MH19KS5vbigiZHJhZ3N0YXJ0IixMKS5vbigiZHJhZyIsQykub24oImRyYWdlbmQiLFApKSx1LmVhY2goZnVuY3Rpb24odCl7dC50cmFjZVNlbGVjdGlvbj1uLnNlbGVjdCh0aGlzKSx0LnBhdGhTZWxlY3Rpb249bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLnBhdGhzIikuc2VsZWN0QWxsKCJwYXRoLnBhdGgiKSx0LmRpbWVuc2lvblNlbGVjdGlvbj1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuZGltZW5zaW9ucyIpLnNlbGVjdEFsbCgiZy5kaW1lbnNpb24iKX0pLHUuZXhpdCgpLnJlbW92ZSgpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQua2V5fWZ1bmN0aW9uIGYodCl7dmFyIGU9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnMubGVuZ3RoLHI9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnNbZS0xXS5tb2RlbC5kaW1lbnNpb25JbmQ7cmV0dXJuIHQubW9kZWwuZGltZW5zaW9uSW5kPT09cn1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuIHQubW9kZWwucmF3Q29sb3I+ZS5tb2RlbC5yYXdDb2xvcj8xOnQubW9kZWwucmF3Q29sb3I8ZS5tb2RlbC5yYXdDb2xvcj8tMTowfWZ1bmN0aW9uIGQodCl7aWYoIXQucGFyY2F0c1ZpZXdNb2RlbC5kcmFnRGltZW5zaW9uJiYtMT09PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJza2lwIikpe28ucmFpc2VUb1RvcCh0aGlzKSxiKG4uc2VsZWN0KHRoaXMpKTt2YXIgZT12KHQpLHI9bSh0KTtpZih0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X2hvdmVyIix7cG9pbnRzOmUsZXZlbnQ6bi5ldmVudCxjb25zdHJhaW50czpyfSksLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5kZXhPZigibm9uZSIpKXt2YXIgYSxzLGMsdT1uLm1vdXNlKHRoaXMpWzBdLGg9dC5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2LGY9dC5wYXJjYXRzVmlld01vZGVsLnRyYWNlLHA9aC5fZnVsbExheW91dCxkPXAuX3BhcGVyZGl2Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxnPXQucGFyY2F0c1ZpZXdNb2RlbC5ncmFwaERpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtmb3IoYz0wO2M8dC5sZWZ0WHMubGVuZ3RoLTE7YysrKWlmKHQubGVmdFhzW2NdK3QuZGltV2lkdGhzW2NdLTI8PXUmJnU8PXQubGVmdFhzW2MrMV0rMil7dmFyIHk9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnNbY10seD10LnBhcmNhdHNWaWV3TW9kZWwuZGltZW5zaW9uc1tjKzFdO2E9KHkueCt5LndpZHRoK3gueCkvMixzPSh0LnRvcFlzW2NdK3QudG9wWXNbYysxXSt0LmhlaWdodCkvMjticmVha312YXIgXz10LnBhcmNhdHNWaWV3TW9kZWwueCthLHc9dC5wYXJjYXRzVmlld01vZGVsLnkrcyxrPWwubW9zdFJlYWRhYmxlKHQubW9kZWwuY29sb3IsWyJibGFjayIsIndoaXRlIl0pLFQ9dC5tb2RlbC5jb3VudCxNPVQvdC5wYXJjYXRzVmlld01vZGVsLm1vZGVsLmNvdW50LEE9e2NvdW50TGFiZWw6VCxwcm9iYWJpbGl0eUxhYmVsOk0udG9GaXhlZCgzKX0sUz1bXTstMSE9PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJjb3VudCIpJiZTLnB1c2goWyJDb3VudDoiLEEuY291bnRMYWJlbF0uam9pbigiICIpKSwtMSE9PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJwcm9iYWJpbGl0eSIpJiZTLnB1c2goWyJQOiIsQS5wcm9iYWJpbGl0eUxhYmVsXS5qb2luKCIgIikpO3ZhciBFPVMuam9pbigiPGJyPiIpLEw9bi5tb3VzZShoKVswXTtpLmxvbmVIb3Zlcih7dHJhY2U6Zix4Ol8tZC5sZWZ0K2cubGVmdCx5OnctZC50b3ArZy50b3AsdGV4dDpFLGNvbG9yOnQubW9kZWwuY29sb3IsYm9yZGVyQ29sb3I6ImJsYWNrIixmb250RmFtaWx5OidNb25hY28sICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZScsZm9udFNpemU6MTAsZm9udENvbG9yOmssaWRlYWxBbGlnbjpMPF8/InJpZ2h0IjoibGVmdCIsaG92ZXJ0ZW1wbGF0ZTooZi5saW5lfHx7fSkuaG92ZXJ0ZW1wbGF0ZSxob3ZlcnRlbXBsYXRlTGFiZWxzOkEsZXZlbnREYXRhOlt7ZGF0YTpmLl9pbnB1dCxmdWxsRGF0YTpmLGNvdW50OlQscHJvYmFiaWxpdHk6TX1dfSx7Y29udGFpbmVyOnAuX2hvdmVybGF5ZXIubm9kZSgpLG91dGVyQ29udGFpbmVyOnAuX3BhcGVyLm5vZGUoKSxnZDpofSl9fX1mdW5jdGlvbiBnKHQpe2lmKCF0LnBhcmNhdHNWaWV3TW9kZWwuZHJhZ0RpbWVuc2lvbiYmKHgobi5zZWxlY3QodGhpcykpLGkubG9uZVVuaG92ZXIodC5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2Ll9mdWxsTGF5b3V0Ll9ob3ZlcmxheWVyLm5vZGUoKSksdC5wYXJjYXRzVmlld01vZGVsLnBhdGhTZWxlY3Rpb24uc29ydChwKSwtMT09PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJza2lwIikpKXt2YXIgZT12KHQpLHI9bSh0KTt0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtwb2ludHM6ZSxldmVudDpuLmV2ZW50LGNvbnN0cmFpbnRzOnJ9KX19ZnVuY3Rpb24gdih0KXtmb3IodmFyIGU9W10scj1PKHQucGFyY2F0c1ZpZXdNb2RlbCksbj0wO248dC5tb2RlbC52YWx1ZUluZHMubGVuZ3RoO24rKyl7dmFyIGE9dC5tb2RlbC52YWx1ZUluZHNbbl07ZS5wdXNoKHtjdXJ2ZU51bWJlcjpyLHBvaW50TnVtYmVyOmF9KX1yZXR1cm4gZX1mdW5jdGlvbiBtKHQpe2Zvcih2YXIgZT17fSxyPXQucGFyY2F0c1ZpZXdNb2RlbC5tb2RlbC5kaW1lbnNpb25zLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGE9cltuXSxpPWEuY2F0ZWdvcmllc1t0Lm1vZGVsLmNhdGVnb3J5SW5kc1tuXV07ZVthLmNvbnRhaW5lckluZF09aS5jYXRlZ29yeVZhbHVlfXJldHVybiB2b2lkIDAhPT10Lm1vZGVsLnJhd0NvbG9yJiYoZS5jb2xvcj10Lm1vZGVsLnJhd0NvbG9yKSxlfWZ1bmN0aW9uIHkodCl7aWYoLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5kZXhPZigic2tpcCIpKXt2YXIgZT12KHQpLHI9bSh0KTt0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X2NsaWNrIix7cG9pbnRzOmUsZXZlbnQ6bi5ldmVudCxjb25zdHJhaW50czpyfSl9fWZ1bmN0aW9uIHgodCl7dC5hdHRyKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC5jb2xvcn0pLmF0dHIoImZpbGwtb3BhY2l0eSIsLjYpLmF0dHIoInN0cm9rZSIsImxpZ2h0Z3JheSIpLmF0dHIoInN0cm9rZS13aWR0aCIsLjIpLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwxKX1mdW5jdGlvbiBiKHQpe3QuYXR0cigiZmlsbC1vcGFjaXR5IiwuOCkuYXR0cigic3Ryb2tlIixmdW5jdGlvbih0KXtyZXR1cm4gbC5tb3N0UmVhZGFibGUodC5tb2RlbC5jb2xvcixbImJsYWNrIiwid2hpdGUiXSl9KS5hdHRyKCJzdHJva2Utd2lkdGgiLC4zKX1mdW5jdGlvbiBfKHQpe3Quc2VsZWN0KCJyZWN0LmNhdHJlY3QiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS13aWR0aCIsMSkuYXR0cigic3Ryb2tlLW9wYWNpdHkiLDEpfWZ1bmN0aW9uIHcodCl7dC5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS13aWR0aCIsLjIpLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwxKS5hdHRyKCJmaWxsLW9wYWNpdHkiLDEpfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5wYXJjYXRzVmlld01vZGVsLnBhdGhTZWxlY3Rpb24scj10LmNhdGVnb3J5Vmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbkluZCxuPXQuY2F0ZWdvcnlWaWV3TW9kZWwubW9kZWwuY2F0ZWdvcnlJbmQ7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1vZGVsLmNhdGVnb3J5SW5kc1tyXT09PW4mJmUubW9kZWwuY29sb3I9PT10LmNvbG9yfSl9ZnVuY3Rpb24gVCh0LGUscil7dmFyIGE9bi5zZWxlY3QodCkuZGF0dW0oKSxpPWEuY2F0ZWdvcnlWaWV3TW9kZWwubW9kZWwsbz1hLnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYscz1uLnNlbGVjdCh0LnBhcmVudE5vZGUpLnNlbGVjdEFsbCgicmVjdC5iYW5kcmVjdCIpLGw9W107cy5lYWNoKGZ1bmN0aW9uKHQpe2sodCkuZWFjaChmdW5jdGlvbih0KXtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShsLHYodCkpfSl9KTt2YXIgYz17fTtjW2kuZGltZW5zaW9uSW5kXT1pLmNhdGVnb3J5VmFsdWUsby5lbWl0KGUse3BvaW50czpsLGV2ZW50OnIsY29uc3RyYWludHM6Y30pfWZ1bmN0aW9uIE0odCxlLHIpe3ZhciBhPW4uc2VsZWN0KHQpLmRhdHVtKCksaT1hLmNhdGVnb3J5Vmlld01vZGVsLm1vZGVsLG89YS5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2LHM9ayhhKSxsPVtdO3MuZWFjaChmdW5jdGlvbih0KXtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShsLHYodCkpfSk7dmFyIGM9e307Y1tpLmRpbWVuc2lvbkluZF09aS5jYXRlZ29yeVZhbHVlLHZvaWQgMCE9PWEucmF3Q29sb3ImJihjLmNvbG9yPWEucmF3Q29sb3IpLG8uZW1pdChlLHtwb2ludHM6bCxldmVudDpyLGNvbnN0cmFpbnRzOmN9KX1mdW5jdGlvbiBBKHQsZSl7dmFyIHIsYSxpPW4uc2VsZWN0KGUucGFyZW50Tm9kZSkuc2VsZWN0KCJyZWN0LmNhdHJlY3QiKSxvPWkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9aS5kYXR1bSgpLGw9cy5wYXJjYXRzVmlld01vZGVsLGM9bC5tb2RlbC5kaW1lbnNpb25zW3MubW9kZWwuZGltZW5zaW9uSW5kXSx1PWwudHJhY2UsaD1vLnRvcCtvLmhlaWdodC8yO2wuZGltZW5zaW9ucy5sZW5ndGg+MSYmYy5kaXNwbGF5SW5kPT09bC5kaW1lbnNpb25zLmxlbmd0aC0xPyhyPW8ubGVmdCxhPSJsZWZ0Iik6KHI9by5sZWZ0K28ud2lkdGgsYT0icmlnaHQiKTt2YXIgZj1zLm1vZGVsLmNvdW50LHA9cy5tb2RlbC5jYXRlZ29yeUxhYmVsLGQ9Zi9zLnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuY291bnQsZz17Y291bnRMYWJlbDpmLGNhdGVnb3J5TGFiZWw6cCxwcm9iYWJpbGl0eUxhYmVsOmQudG9GaXhlZCgzKX0sdj1bXTstMSE9PXMucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJjb3VudCIpJiZ2LnB1c2goWyJDb3VudDoiLGcuY291bnRMYWJlbF0uam9pbigiICIpKSwtMSE9PXMucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJwcm9iYWJpbGl0eSIpJiZ2LnB1c2goWyJQKCIrZy5jYXRlZ29yeUxhYmVsKyIpOiIsZy5wcm9iYWJpbGl0eUxhYmVsXS5qb2luKCIgIikpO3ZhciBtPXYuam9pbigiPGJyPiIpO3JldHVybnt0cmFjZTp1LHg6ci10LmxlZnQseTpoLXQudG9wLHRleHQ6bSxjb2xvcjoibGlnaHRncmF5Iixib3JkZXJDb2xvcjoiYmxhY2siLGZvbnRGYW1pbHk6J01vbmFjbywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlJyxmb250U2l6ZToxMixmb250Q29sb3I6ImJsYWNrIixpZGVhbEFsaWduOmEsaG92ZXJ0ZW1wbGF0ZTp1LmhvdmVydGVtcGxhdGUsaG92ZXJ0ZW1wbGF0ZUxhYmVsczpnLGV2ZW50RGF0YTpbe2RhdGE6dS5faW5wdXQsZnVsbERhdGE6dSxjb3VudDpmLGNhdGVnb3J5OnAscHJvYmFiaWxpdHk6ZH1dfX1mdW5jdGlvbiBTKHQpe2lmKCF0LnBhcmNhdHNWaWV3TW9kZWwuZHJhZ0RpbWVuc2lvbiYmLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5kZXhPZigic2tpcCIpKXtpZihuLm1vdXNlKHRoaXMpWzFdPC0xKXJldHVybjt2YXIgZSxyPXQucGFyY2F0c1ZpZXdNb2RlbC5ncmFwaERpdixhPXIuX2Z1bGxMYXlvdXQscz1hLl9wYXBlcmRpdi5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJvbjtpZigiY29sb3IiPT09Yz8oIWZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHQpLmRhdHVtKCkscj1rKGUpO2Iociksci5lYWNoKGZ1bmN0aW9uKCl7by5yYWlzZVRvVG9wKHRoaXMpfSksbi5zZWxlY3QodC5wYXJlbnROb2RlKS5zZWxlY3RBbGwoInJlY3QuYmFuZHJlY3QiKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sb3I9PT1lLmNvbG9yfSkuZWFjaChmdW5jdGlvbigpe28ucmFpc2VUb1RvcCh0aGlzKSxuLnNlbGVjdCh0aGlzKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS13aWR0aCIsMS41KX0pfSh0aGlzKSxNKHRoaXMsInBsb3RseV9ob3ZlciIsbi5ldmVudCkpOighZnVuY3Rpb24odCl7bi5zZWxlY3QodC5wYXJlbnROb2RlKS5zZWxlY3RBbGwoInJlY3QuYmFuZHJlY3QiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWsodCk7YihlKSxlLmVhY2goZnVuY3Rpb24oKXtvLnJhaXNlVG9Ub3AodGhpcyl9KX0pLG4uc2VsZWN0KHQucGFyZW50Tm9kZSkuc2VsZWN0KCJyZWN0LmNhdHJlY3QiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS13aWR0aCIsMi41KX0odGhpcyksVCh0aGlzLCJwbG90bHlfaG92ZXIiLG4uZXZlbnQpKSwtMT09PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJub25lIikpImNhdGVnb3J5Ij09PWM/ZT1BKHMsdGhpcyk6ImNvbG9yIj09PWM/ZT1mdW5jdGlvbih0LGUpe3ZhciByLGEsaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89bi5zZWxlY3QoZSkuZGF0dW0oKSxzPW8uY2F0ZWdvcnlWaWV3TW9kZWwsYz1zLnBhcmNhdHNWaWV3TW9kZWwsdT1jLm1vZGVsLmRpbWVuc2lvbnNbcy5tb2RlbC5kaW1lbnNpb25JbmRdLGg9Yy50cmFjZSxmPWkueStpLmhlaWdodC8yO2MuZGltZW5zaW9ucy5sZW5ndGg+MSYmdS5kaXNwbGF5SW5kPT09Yy5kaW1lbnNpb25zLmxlbmd0aC0xPyhyPWkubGVmdCxhPSJsZWZ0Iik6KHI9aS5sZWZ0K2kud2lkdGgsYT0icmlnaHQiKTt2YXIgcD1zLm1vZGVsLmNhdGVnb3J5TGFiZWwsZD1vLnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuY291bnQsZz0wO28uY2F0ZWdvcnlWaWV3TW9kZWwuYmFuZHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNvbG9yPT09by5jb2xvciYmKGcrPXQuY291bnQpfSk7dmFyIHY9cy5tb2RlbC5jb3VudCxtPTA7Yy5wYXRoU2VsZWN0aW9uLmVhY2goZnVuY3Rpb24odCl7dC5tb2RlbC5jb2xvcj09PW8uY29sb3ImJihtKz10Lm1vZGVsLmNvdW50KX0pO3ZhciB5PWcvZCx4PWcvbSxiPWcvdixfPXtjb3VudExhYmVsOmQsY2F0ZWdvcnlMYWJlbDpwLHByb2JhYmlsaXR5TGFiZWw6eS50b0ZpeGVkKDMpfSx3PVtdOy0xIT09cy5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5mb0l0ZW1zLmluZGV4T2YoImNvdW50IikmJncucHVzaChbIkNvdW50OiIsXy5jb3VudExhYmVsXS5qb2luKCIgIikpLC0xIT09cy5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5mb0l0ZW1zLmluZGV4T2YoInByb2JhYmlsaXR5IikmJih3LnB1c2goIlAoY29sb3IgXHUyMjI5ICIrcCsiKTogIitfLnByb2JhYmlsaXR5TGFiZWwpLHcucHVzaCgiUCgiK3ArIiB8IGNvbG9yKTogIit4LnRvRml4ZWQoMykpLHcucHVzaCgiUChjb2xvciB8ICIrcCsiKTogIitiLnRvRml4ZWQoMykpKTt2YXIgaz13LmpvaW4oIjxicj4iKSxUPWwubW9zdFJlYWRhYmxlKG8uY29sb3IsWyJibGFjayIsIndoaXRlIl0pO3JldHVybnt0cmFjZTpoLHg6ci10LmxlZnQseTpmLXQudG9wLHRleHQ6ayxjb2xvcjpvLmNvbG9yLGJvcmRlckNvbG9yOiJibGFjayIsZm9udEZhbWlseTonTW9uYWNvLCAiQ291cmllciBOZXciLCBtb25vc3BhY2UnLGZvbnRDb2xvcjpULGZvbnRTaXplOjEwLGlkZWFsQWxpZ246YSxob3ZlcnRlbXBsYXRlOmguaG92ZXJ0ZW1wbGF0ZSxob3ZlcnRlbXBsYXRlTGFiZWxzOl8sZXZlbnREYXRhOlt7ZGF0YTpoLl9pbnB1dCxmdWxsRGF0YTpoLGNhdGVnb3J5OnAsY291bnQ6ZCxwcm9iYWJpbGl0eTp5LGNhdGVnb3J5Y291bnQ6dixjb2xvcmNvdW50Om0sYmFuZGNvbG9yY291bnQ6Z31dfX0ocyx0aGlzKToiZGltZW5zaW9uIj09PWMmJihlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W107cmV0dXJuIG4uc2VsZWN0KGUucGFyZW50Tm9kZS5wYXJlbnROb2RlKS5zZWxlY3RBbGwoImcuY2F0ZWdvcnkiKS5zZWxlY3QoInJlY3QuY2F0cmVjdCIpLmVhY2goZnVuY3Rpb24oKXtyLnB1c2goQSh0LHRoaXMpKX0pLHJ9KHMsdGhpcykpLGUmJmkubG9uZUhvdmVyKGUse2NvbnRhaW5lcjphLl9ob3ZlcmxheWVyLm5vZGUoKSxvdXRlckNvbnRhaW5lcjphLl9wYXBlci5ub2RlKCksZ2Q6cn0pfX1mdW5jdGlvbiBFKHQpe3ZhciBlPXQucGFyY2F0c1ZpZXdNb2RlbDtpZighZS5kcmFnRGltZW5zaW9uJiYoeChlLnBhdGhTZWxlY3Rpb24pLF8oZS5kaW1lbnNpb25TZWxlY3Rpb24uc2VsZWN0QWxsKCJnLmNhdGVnb3J5IikpLHcoZS5kaW1lbnNpb25TZWxlY3Rpb24uc2VsZWN0QWxsKCJnLmNhdGVnb3J5Iikuc2VsZWN0QWxsKCJyZWN0LmJhbmRyZWN0IikpLGkubG9uZVVuaG92ZXIoZS5ncmFwaERpdi5fZnVsbExheW91dC5faG92ZXJsYXllci5ub2RlKCkpLGUucGF0aFNlbGVjdGlvbi5zb3J0KHApLC0xPT09ZS5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJza2lwIikpKXsiY29sb3IiPT09dC5wYXJjYXRzVmlld01vZGVsLmhvdmVyb24/TSh0aGlzLCJwbG90bHlfdW5ob3ZlciIsbi5ldmVudCk6VCh0aGlzLCJwbG90bHlfdW5ob3ZlciIsbi5ldmVudCl9fWZ1bmN0aW9uIEwodCl7ImZpeGVkIiE9PXQucGFyY2F0c1ZpZXdNb2RlbC5hcnJhbmdlbWVudCYmKHQuZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmQ9dC5tb2RlbC5kaXNwbGF5SW5kLHQuaW5pdGlhbERyYWdEaW1lbnNpb25EaXNwbGF5SW5kcz10LnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuZGltZW5zaW9ucy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGlzcGxheUluZH0pLHQuZHJhZ0hhc01vdmVkPSExLHQuZHJhZ0NhdGVnb3J5RGlzcGxheUluZD1udWxsLG4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5jYXRlZ29yeSIpLnNlbGVjdCgicmVjdC5jYXRyZWN0IikuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLm1vdXNlKHRoaXMpWzBdLGE9bi5tb3VzZSh0aGlzKVsxXTstMjw9ciYmcjw9ZS53aWR0aCsyJiYtMjw9YSYmYTw9ZS5oZWlnaHQrMiYmKHQuZHJhZ0NhdGVnb3J5RGlzcGxheUluZD1lLm1vZGVsLmRpc3BsYXlJbmQsdC5pbml0aWFsRHJhZ0NhdGVnb3J5RGlzcGxheUluZHM9dC5tb2RlbC5jYXRlZ29yaWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5kaXNwbGF5SW5kfSksZS5tb2RlbC5kcmFnWT1lLnksby5yYWlzZVRvVG9wKHRoaXMucGFyZW50Tm9kZSksbi5zZWxlY3QodGhpcy5wYXJlbnROb2RlKS5zZWxlY3RBbGwoInJlY3QuYmFuZHJlY3QiKS5lYWNoKGZ1bmN0aW9uKGUpe2UueTxhJiZhPD1lLnkrZS5oZWlnaHQmJih0LnBvdGVudGlhbENsaWNrQmFuZD10aGlzKX0pKX0pLHQucGFyY2F0c1ZpZXdNb2RlbC5kcmFnRGltZW5zaW9uPXQsaS5sb25lVW5ob3Zlcih0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQuX2hvdmVybGF5ZXIubm9kZSgpKSl9ZnVuY3Rpb24gQyh0KXtpZigiZml4ZWQiIT09dC5wYXJjYXRzVmlld01vZGVsLmFycmFuZ2VtZW50JiYodC5kcmFnSGFzTW92ZWQ9ITAsbnVsbCE9PXQuZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmQpKXt2YXIgZT10LmRyYWdEaW1lbnNpb25EaXNwbGF5SW5kLHI9ZS0xLGE9ZSsxLGk9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnNbZV07aWYobnVsbCE9PXQuZHJhZ0NhdGVnb3J5RGlzcGxheUluZCl7dmFyIG89aS5jYXRlZ29yaWVzW3QuZHJhZ0NhdGVnb3J5RGlzcGxheUluZF07by5tb2RlbC5kcmFnWSs9bi5ldmVudC5keTt2YXIgcz1vLm1vZGVsLmRyYWdZLGw9by5tb2RlbC5kaXNwbGF5SW5kLGM9aS5jYXRlZ29yaWVzLHU9Y1tsLTFdLGg9Y1tsKzFdO3ZvaWQgMCE9PXUmJnM8dS55K3UuaGVpZ2h0LzImJihvLm1vZGVsLmRpc3BsYXlJbmQ9dS5tb2RlbC5kaXNwbGF5SW5kLHUubW9kZWwuZGlzcGxheUluZD1sKSx2b2lkIDAhPT1oJiZzK28uaGVpZ2h0PmgueStoLmhlaWdodC8yJiYoby5tb2RlbC5kaXNwbGF5SW5kPWgubW9kZWwuZGlzcGxheUluZCxoLm1vZGVsLmRpc3BsYXlJbmQ9bCksdC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kPW8ubW9kZWwuZGlzcGxheUluZH1pZihudWxsPT09dC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kfHwiZnJlZWZvcm0iPT09dC5wYXJjYXRzVmlld01vZGVsLmFycmFuZ2VtZW50KXtpLm1vZGVsLmRyYWdYPW4uZXZlbnQueDt2YXIgZj10LnBhcmNhdHNWaWV3TW9kZWwuZGltZW5zaW9uc1tyXSxwPXQucGFyY2F0c1ZpZXdNb2RlbC5kaW1lbnNpb25zW2FdO3ZvaWQgMCE9PWYmJmkubW9kZWwuZHJhZ1g8Zi54K2Yud2lkdGgmJihpLm1vZGVsLmRpc3BsYXlJbmQ9Zi5tb2RlbC5kaXNwbGF5SW5kLGYubW9kZWwuZGlzcGxheUluZD1lKSx2b2lkIDAhPT1wJiZpLm1vZGVsLmRyYWdYK2kud2lkdGg+cC54JiYoaS5tb2RlbC5kaXNwbGF5SW5kPXAubW9kZWwuZGlzcGxheUluZCxwLm1vZGVsLmRpc3BsYXlJbmQ9dC5kcmFnRGltZW5zaW9uRGlzcGxheUluZCksdC5kcmFnRGltZW5zaW9uRGlzcGxheUluZD1pLm1vZGVsLmRpc3BsYXlJbmR9Rih0LnBhcmNhdHNWaWV3TW9kZWwpLFIodC5wYXJjYXRzVmlld01vZGVsKSxJKHQucGFyY2F0c1ZpZXdNb2RlbCkseih0LnBhcmNhdHNWaWV3TW9kZWwpfX1mdW5jdGlvbiBQKHQpe2lmKCJmaXhlZCIhPT10LnBhcmNhdHNWaWV3TW9kZWwuYXJyYW5nZW1lbnQmJm51bGwhPT10LmRyYWdEaW1lbnNpb25EaXNwbGF5SW5kKXtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJmb250LXdlaWdodCIsIm5vcm1hbCIpO3ZhciBlPXt9LHI9Tyh0LnBhcmNhdHNWaWV3TW9kZWwpLGk9dC5wYXJjYXRzVmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbnMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3BsYXlJbmR9KSxvPXQuaW5pdGlhbERyYWdEaW1lbnNpb25EaXNwbGF5SW5kcy5zb21lKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQhPT1pW2VdfSk7byYmaS5mb3JFYWNoKGZ1bmN0aW9uKHIsbil7dmFyIGE9dC5wYXJjYXRzVmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbnNbbl0uY29udGFpbmVySW5kO2VbImRpbWVuc2lvbnNbIithKyJdLmRpc3BsYXlpbmRleCJdPXJ9KTt2YXIgcz0hMTtpZihudWxsIT09dC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kKXt2YXIgbD10Lm1vZGVsLmNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3BsYXlJbmR9KTtpZihzPXQuaW5pdGlhbERyYWdDYXRlZ29yeURpc3BsYXlJbmRzLnNvbWUoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCE9PWxbZV19KSl7dmFyIGM9dC5tb2RlbC5jYXRlZ29yaWVzLnNsaWNlKCkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LmRpc3BsYXlJbmQtZS5kaXNwbGF5SW5kfSksdT1jLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRlZ29yeVZhbHVlfSksaD1jLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRlZ29yeUxhYmVsfSk7ZVsiZGltZW5zaW9uc1siK3QubW9kZWwuY29udGFpbmVySW5kKyJdLmNhdGVnb3J5YXJyYXkiXT1bdV0sZVsiZGltZW5zaW9uc1siK3QubW9kZWwuY29udGFpbmVySW5kKyJdLnRpY2t0ZXh0Il09W2hdLGVbImRpbWVuc2lvbnNbIit0Lm1vZGVsLmNvbnRhaW5lckluZCsiXS5jYXRlZ29yeW9yZGVyIl09ImFycmF5In19aWYoLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5kZXhPZigic2tpcCIpJiYhdC5kcmFnSGFzTW92ZWQmJnQucG90ZW50aWFsQ2xpY2tCYW5kJiYoImNvbG9yIj09PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3Zlcm9uP00odC5wb3RlbnRpYWxDbGlja0JhbmQsInBsb3RseV9jbGljayIsbi5ldmVudC5zb3VyY2VFdmVudCk6VCh0LnBvdGVudGlhbENsaWNrQmFuZCwicGxvdGx5X2NsaWNrIixuLmV2ZW50LnNvdXJjZUV2ZW50KSksdC5tb2RlbC5kcmFnWD1udWxsLG51bGwhPT10LmRyYWdDYXRlZ29yeURpc3BsYXlJbmQpdC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnNbdC5kcmFnRGltZW5zaW9uRGlzcGxheUluZF0uY2F0ZWdvcmllc1t0LmRyYWdDYXRlZ29yeURpc3BsYXlJbmRdLm1vZGVsLmRyYWdZPW51bGwsdC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kPW51bGw7dC5kcmFnRGltZW5zaW9uRGlzcGxheUluZD1udWxsLHQucGFyY2F0c1ZpZXdNb2RlbC5kcmFnRGltZW5zaW9uPW51bGwsdC5kcmFnSGFzTW92ZWQ9bnVsbCx0LnBvdGVudGlhbENsaWNrQmFuZD1udWxsLEYodC5wYXJjYXRzVmlld01vZGVsKSxSKHQucGFyY2F0c1ZpZXdNb2RlbCksbi50cmFuc2l0aW9uKCkuZHVyYXRpb24oMzAwKS5lYXNlKCJjdWJpYy1pbi1vdXQiKS5lYWNoKGZ1bmN0aW9uKCl7SSh0LnBhcmNhdHNWaWV3TW9kZWwsITApLHoodC5wYXJjYXRzVmlld01vZGVsLCEwKX0pLmVhY2goImVuZCIsZnVuY3Rpb24oKXsob3x8cykmJmEucmVzdHlsZSh0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYsZSxbcl0pfSl9fWZ1bmN0aW9uIE8odCl7Zm9yKHZhciBlLHI9dC5ncmFwaERpdi5fZnVsbERhdGEsbj0wO248ci5sZW5ndGg7bisrKWlmKHQua2V5PT09cltuXS51aWQpe2U9bjticmVha31yZXR1cm4gZX1mdW5jdGlvbiB6KHQsZSl7dmFyIHI7dm9pZCAwPT09ZSYmKGU9ITEpLHQucGF0aFNlbGVjdGlvbi5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBhdGhzfSxoKSwocj10LnBhdGhTZWxlY3Rpb24sZT9yLnRyYW5zaXRpb24oKTpyKS5hdHRyKCJkIixmdW5jdGlvbih0KXtyZXR1cm4gdC5zdmdEfSl9ZnVuY3Rpb24gSSh0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIGU/dC50cmFuc2l0aW9uKCk6dH12b2lkIDA9PT1lJiYoZT0hMSksdC5kaW1lbnNpb25TZWxlY3Rpb24uZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5kaW1lbnNpb25zfSxoKTt2YXIgYT10LmRpbWVuc2lvblNlbGVjdGlvbi5zZWxlY3RBbGwoImcuY2F0ZWdvcnkiKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNhdGVnb3JpZXN9LGgpO3IodC5kaW1lbnNpb25TZWxlY3Rpb24pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QueCsiLCAwKSJ9KSxyKGEpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgwLCAiK3QueSsiKSJ9KSxhLnNlbGVjdCgiLmRpbWxhYmVsIikudGV4dChmdW5jdGlvbih0LGUpe3JldHVybiAwPT09ZT90LnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuZGltZW5zaW9uc1t0Lm1vZGVsLmRpbWVuc2lvbkluZF0uZGltZW5zaW9uTGFiZWw6bnVsbH0pLGEuc2VsZWN0KCIuY2F0bGFiZWwiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsZnVuY3Rpb24odCl7cmV0dXJuIGYodCk/InN0YXJ0IjoiZW5kIn0pLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiBmKHQpP3Qud2lkdGgrNTotNX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIGUscjtmKHQpPyhlPXQud2lkdGgrNSxyPSJzdGFydCIpOihlPS01LHI9ImVuZCIpLG4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgidHNwYW4iKS5hdHRyKCJ4IixlKS5hdHRyKCJ0ZXh0LWFuY2hvciIscil9KTt2YXIgaT1hLnNlbGVjdEFsbCgicmVjdC5iYW5kcmVjdCIpLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmFuZHN9LGgpLHM9aS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiYmFuZHJlY3QiKS5hdHRyKCJjdXJzb3IiLCJtb3ZlIikuYXR0cigic3Ryb2tlLW9wYWNpdHkiLDApLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSkuYXR0cigiZmlsbC1vcGFjaXR5IiwwKTtpLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0LndpZHRofSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR9KS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdC55fSksdyhzKSxpLmVhY2goZnVuY3Rpb24oKXtvLnJhaXNlVG9Ub3AodGhpcyl9KSxpLmV4aXQoKS5yZW1vdmUoKX1mdW5jdGlvbiBEKHQsZSxyLGEsaSl7dmFyIG8scyxsPVtdLGM9W107Zm9yKHM9MDtzPHIubGVuZ3RoLTE7cysrKW89bi5pbnRlcnBvbGF0ZU51bWJlcihyW3NdK3Rbc10sdFtzKzFdKSxsLnB1c2gobyhpKSksYy5wdXNoKG8oMS1pKSk7dmFyIHU9Ik0gIit0WzBdKyIsIitlWzBdO2Zvcih1Kz0ibCIrclswXSsiLDAgIixzPTE7czxyLmxlbmd0aDtzKyspdSs9IkMiK2xbcy0xXSsiLCIrZVtzLTFdKyIgIitjW3MtMV0rIiwiK2Vbc10rIiAiK3Rbc10rIiwiK2Vbc10sdSs9ImwiK3Jbc10rIiwwICI7Zm9yKHUrPSJsMCwiK2ErIiAiLHUrPSJsIC0iK3Jbci5sZW5ndGgtMV0rIiwwICIscz1yLmxlbmd0aC0yO3M+PTA7cy0tKXUrPSJDIitjW3NdKyIsIisoZVtzKzFdK2EpKyIgIitsW3NdKyIsIisoZVtzXSthKSsiICIrKHRbc10rcltzXSkrIiwiKyhlW3NdK2EpLHUrPSJsLSIrcltzXSsiLDAgIjtyZXR1cm4gdSs9IloifWZ1bmN0aW9uIFIodCl7dmFyIGU9dC5kaW1lbnNpb25zLHI9dC5tb2RlbCxuPWUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KX0pLGE9dC5tb2RlbC5kaW1lbnNpb25zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRlZ29yaWVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5kaXNwbGF5SW5kfSl9KSxpPXQubW9kZWwuZGltZW5zaW9ucy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGlzcGxheUluZH0pLG89dC5kaW1lbnNpb25zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC5kaW1lbnNpb25JbmR9KSxzPWUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSxsPWUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LndpZHRofSksYz1bXTtmb3IodmFyIHUgaW4gci5wYXRocylyLnBhdGhzLmhhc093blByb3BlcnR5KHUpJiZjLnB1c2goci5wYXRoc1t1XSk7ZnVuY3Rpb24gaCh0KXt2YXIgZT10LmNhdGVnb3J5SW5kcy5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gYVtlXVt0XX0pO3JldHVybiBvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWMuc29ydChmdW5jdGlvbihlLHIpe3ZhciBuPWgoZSksYT1oKHIpO3JldHVybiJiYWNrd2FyZCI9PT10LnNvcnRwYXRocyYmKG4ucmV2ZXJzZSgpLGEucmV2ZXJzZSgpKSxuLnB1c2goZS52YWx1ZUluZHNbMF0pLGEucHVzaChyLnZhbHVlSW5kc1swXSksdC5idW5kbGVjb2xvcnMmJihuLnVuc2hpZnQoZS5yYXdDb2xvciksYS51bnNoaWZ0KHIucmF3Q29sb3IpKSxuPGE/LTE6bj5hPzE6MH0pO2Zvcih2YXIgZj1uZXcgQXJyYXkoYy5sZW5ndGgpLHA9ZVswXS5tb2RlbC5jb3VudCxkPWVbMF0uY2F0ZWdvcmllcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLGc9MDtnPGMubGVuZ3RoO2crKyl7dmFyIHYsbT1jW2ddO3Y9cD4wP2QqKG0uY291bnQvcCk6MDtmb3IodmFyIHkseD1uZXcgQXJyYXkobi5sZW5ndGgpLGI9MDtiPG0uY2F0ZWdvcnlJbmRzLmxlbmd0aDtiKyspe3ZhciBfPW0uY2F0ZWdvcnlJbmRzW2JdLHc9YVtiXVtfXSxrPWlbYl07eFtrXT1uW2tdW3ddLG5ba11bd10rPXY7dmFyIFQ9dC5kaW1lbnNpb25zW2tdLmNhdGVnb3JpZXNbd10sTT1ULmJhbmRzLmxlbmd0aCxBPVQuYmFuZHNbTS0xXTtpZih2b2lkIDA9PT1BfHxtLnJhd0NvbG9yIT09QS5yYXdDb2xvcil7dmFyIFM9dm9pZCAwPT09QT8wOkEueStBLmhlaWdodDtULmJhbmRzLnB1c2goe2tleTpTLGNvbG9yOm0uY29sb3IscmF3Q29sb3I6bS5yYXdDb2xvcixoZWlnaHQ6dix3aWR0aDpULndpZHRoLGNvdW50Om0uY291bnQseTpTLGNhdGVnb3J5Vmlld01vZGVsOlQscGFyY2F0c1ZpZXdNb2RlbDp0fSl9ZWxzZXt2YXIgRT1ULmJhbmRzW00tMV07RS5oZWlnaHQrPXYsRS5jb3VudCs9bS5jb3VudH19eT0iaHNwbGluZSI9PT10LnBhdGhTaGFwZT9EKHMseCxsLHYsLjUpOkQocyx4LGwsdiwwKSxmW2ddPXtrZXk6bS52YWx1ZUluZHNbMF0sbW9kZWw6bSxoZWlnaHQ6dixsZWZ0WHM6cyx0b3BZczp4LGRpbVdpZHRoczpsLHN2Z0Q6eSxwYXJjYXRzVmlld01vZGVsOnR9fXQucGF0aHM9Zn1mdW5jdGlvbiBGKHQpe3ZhciBlPXQubW9kZWwuZGltZW5zaW9ucy5tYXAoZnVuY3Rpb24odCl7cmV0dXJue2Rpc3BsYXlJbmQ6dC5kaXNwbGF5SW5kLGRpbWVuc2lvbkluZDp0LmRpbWVuc2lvbkluZH19KTtlLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXNwbGF5SW5kLWUuZGlzcGxheUluZH0pO3ZhciByPVtdO2Zvcih2YXIgbiBpbiBlKXt2YXIgYT1lW25dLmRpbWVuc2lvbkluZCxpPXQubW9kZWwuZGltZW5zaW9uc1thXTtyLnB1c2goQih0LGkpKX10LmRpbWVuc2lvbnM9cn1mdW5jdGlvbiBCKHQsZSl7dmFyIHIsbj10Lm1vZGVsLmRpbWVuc2lvbnMubGVuZ3RoLGE9ZS5kaXNwbGF5SW5kO3I9NDArKG4+MT8odC53aWR0aC04MC0xNikvKG4tMSk6MCkqYTt2YXIgaSxvLHMsbCxjLHU9W10saD10Lm1vZGVsLm1heENhdHMsZj1lLmNhdGVnb3JpZXMubGVuZ3RoLHA9ZS5jb3VudCxkPXQuaGVpZ2h0LTgqKGgtMSksZz04KihoLWYpLzIsdj1lLmNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybntkaXNwbGF5SW5kOnQuZGlzcGxheUluZCxjYXRlZ29yeUluZDp0LmNhdGVnb3J5SW5kfX0pO2Zvcih2LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXNwbGF5SW5kLWUuZGlzcGxheUluZH0pLGM9MDtjPGY7YysrKWw9dltjXS5jYXRlZ29yeUluZCxvPWUuY2F0ZWdvcmllc1tsXSxpPXA+MD9vLmNvdW50L3AqZDowLHM9e2tleTpvLnZhbHVlSW5kc1swXSxtb2RlbDpvLHdpZHRoOjE2LGhlaWdodDppLHk6bnVsbCE9PW8uZHJhZ1k/by5kcmFnWTpnLGJhbmRzOltdLHBhcmNhdHNWaWV3TW9kZWw6dH0sZz1nK2krOCx1LnB1c2gocyk7cmV0dXJue2tleTplLmRpbWVuc2lvbkluZCx4Om51bGwhPT1lLmRyYWdYP2UuZHJhZ1g6cix5OjAsd2lkdGg6MTYsbW9kZWw6ZSxjYXRlZ29yaWVzOnUscGFyY2F0c1ZpZXdNb2RlbDp0LGRyYWdDYXRlZ29yeURpc3BsYXlJbmQ6bnVsbCxkcmFnRGltZW5zaW9uRGlzcGxheUluZDpudWxsLGluaXRpYWxEcmFnRGltZW5zaW9uRGlzcGxheUluZHM6bnVsbCxpbml0aWFsRHJhZ0NhdGVnb3J5RGlzcGxheUluZHM6bnVsbCxkcmFnSGFzTW92ZWQ6bnVsbCxwb3RlbnRpYWxDbGlja0JhbmQ6bnVsbH19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3Uocix0LG4sZSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdF9hcGkvcGxvdF9hcGkiOjc1MixkMzoxNjUsdGlueWNvbG9yMjo1MzZ9XSwxMDgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vcGFyY2F0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXt2YXIgaT10Ll9mdWxsTGF5b3V0LG89aS5fcGFwZXIscz1pLl9zaXplO24odCxvLGUse3dpZHRoOnMudyxoZWlnaHQ6cy5oLG1hcmdpbjp7dDpzLnQscjpzLnIsYjpzLmIsbDpzLmx9fSxyLGEpfX0seyIuL3BhcmNhdHMiOjEwODB9XSwxMDgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmlidXRlcyxzPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGw9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5O2UuZXhwb3J0cz17ZG9tYWluOm8oe25hbWU6InBhcmNvb3JkcyIsdHJhY2U6ITAsZWRpdFR5cGU6InBsb3QifSksbGFiZWxhbmdsZTp7dmFsVHlwZToiYW5nbGUiLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9LGxhYmVsc2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9wIiwiYm90dG9tIl0sZGZsdDoidG9wIixlZGl0VHlwZToicGxvdCJ9LGxhYmVsZm9udDppKHtlZGl0VHlwZToicGxvdCJ9KSx0aWNrZm9udDppKHtlZGl0VHlwZToicGxvdCJ9KSxyYW5nZWZvbnQ6aSh7ZWRpdFR5cGU6InBsb3QifSksZGltZW5zaW9uczpsKCJkaW1lbnNpb24iLHtsYWJlbDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToicGxvdCJ9LHRpY2t2YWxzOnMoe30sYS50aWNrdmFscyx7ZWRpdFR5cGU6InBsb3QifSksdGlja3RleHQ6cyh7fSxhLnRpY2t0ZXh0LHtlZGl0VHlwZToicGxvdCJ9KSx0aWNrZm9ybWF0OnMoe30sYS50aWNrZm9ybWF0LHtlZGl0VHlwZToicGxvdCJ9KSx2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJwbG90In0scmFuZ2U6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToicGxvdCJ9LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJwbG90In1dLGVkaXRUeXBlOiJwbG90In0sY29uc3RyYWludHJhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGRpbWVuc2lvbnM6IjEtMiIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJwbG90In0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InBsb3QifV0sZWRpdFR5cGU6InBsb3QifSxtdWx0aXNlbGVjdDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToicGxvdCJ9LHZhbHVlczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9KSxsaW5lOnMoe2VkaXRUeXBlOiJjYWxjIn0sbigibGluZSIse2NvbG9yc2NhbGVEZmx0OiJWaXJpZGlzIixhdXRvQ29sb3JEZmx0OiExLGVkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIjo3NzcsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NzkwLCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MX1dLDEwODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb25zdGFudHMiKSxhPXQoImQzIiksaT10KCIuLi8uLi9saWIvZ3VwIikua2V5RnVuLG89dCgiLi4vLi4vbGliL2d1cCIpLnJlcGVhdCxzPXQoIi4uLy4uL2xpYiIpLnNvcnRlckFzYyxsPW4uYmFyLnNuYXBSYXRpbztmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQqKDEtbCkrZSpsfXZhciB1PW4uYmFyLnNuYXBDbG9zZTtmdW5jdGlvbiBoKHQsZSl7cmV0dXJuIHQqKDEtdSkrZSp1fWZ1bmN0aW9uIGYodCxlLHIsbil7aWYoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKylpZih0Pj1lW3JdWzBdJiZ0PD1lW3JdWzFdKXJldHVybiEwO3JldHVybiExfShyLG4pKXJldHVybiByO3ZhciBhPXQ/LTE6MSxpPTAsbz1lLmxlbmd0aC0xO2lmKGE8MCl7dmFyIHM9aTtpPW8sbz1zfWZvcih2YXIgbD1lW2ldLHU9bCxmPWk7YSpmPGEqbztmKz1hKXt2YXIgcD1mK2EsZD1lW3BdO2lmKGEqcjxhKmgobCxkKSlyZXR1cm4gYyhsLHUpO2lmKGEqcjxhKmR8fHA9PT1vKXJldHVybiBjKGQsbCk7dT1sLGw9ZH19ZnVuY3Rpb24gcCh0KXt0LmF0dHIoIngiLC1uLmJhci5jYXB0dXJlV2lkdGgvMikuYXR0cigid2lkdGgiLG4uYmFyLmNhcHR1cmVXaWR0aCl9ZnVuY3Rpb24gZCh0KXt0LmF0dHIoInZpc2liaWxpdHkiLCJ2aXNpYmxlIikuc3R5bGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIikuYXR0cigiZmlsbCIsInllbGxvdyIpLmF0dHIoIm9wYWNpdHkiLDApfWZ1bmN0aW9uIGcodCl7aWYoIXQuYnJ1c2guZmlsdGVyU3BlY2lmaWVkKXJldHVybiIwLCIrdC5oZWlnaHQ7Zm9yKHZhciBlLHIsbixhPXYodC5icnVzaC5maWx0ZXIuZ2V0Q29uc29saWRhdGVkKCksdC5oZWlnaHQpLGk9WzBdLG89YS5sZW5ndGg/YVswXVswXTpudWxsLHM9MDtzPGEubGVuZ3RoO3MrKylyPShlPWFbc10pWzFdLWVbMF0saS5wdXNoKG8pLGkucHVzaChyKSwobj1zKzEpPGEubGVuZ3RoJiYobz1hW25dWzBdLWVbMV0pO3JldHVybiBpLnB1c2godC5oZWlnaHQpLGl9ZnVuY3Rpb24gdih0LGUpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsdCplKX0pLnNvcnQocyl9KX1mdW5jdGlvbiBtKCl7YS5zZWxlY3QoZG9jdW1lbnQuYm9keSkuc3R5bGUoImN1cnNvciIsbnVsbCl9ZnVuY3Rpb24geSh0KXt0LmF0dHIoInN0cm9rZS1kYXNoYXJyYXkiLGcpfWZ1bmN0aW9uIHgodCxlKXt2YXIgcj1hLnNlbGVjdCh0KS5zZWxlY3RBbGwoIi5oaWdobGlnaHQsIC5oaWdobGlnaHQtc2hhZG93Iik7eShlP3IudHJhbnNpdGlvbigpLmR1cmF0aW9uKG4uYmFyLnNuYXBEdXJhdGlvbikuZWFjaCgiZW5kIixlKTpyKX1mdW5jdGlvbiBiKHQsZSl7dmFyIHIsYT10LmJydXNoLGk9TmFOLG89e307aWYoYS5maWx0ZXJTcGVjaWZpZWQpe3ZhciBzPXQuaGVpZ2h0LGw9YS5maWx0ZXIuZ2V0Q29uc29saWRhdGVkKCksYz12KGwscyksdT1OYU4saD1OYU4sZj1OYU47Zm9yKHI9MDtyPD1jLmxlbmd0aDtyKyspe3ZhciBwPWNbcl07aWYocCYmcFswXTw9ZSYmZTw9cFsxXSl7dT1yO2JyZWFrfWlmKGg9cj9yLTE6TmFOLHAmJnBbMF0+ZSl7Zj1yO2JyZWFrfX1pZihpPXUsaXNOYU4oaSkmJihpPWlzTmFOKGgpfHxpc05hTihmKT9pc05hTihoKT9mOmg6ZS1jW2hdWzFdPGNbZl1bMF0tZT9oOmYpLCFpc05hTihpKSl7dmFyIGQ9Y1tpXSxnPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5iYXIuaGFuZGxlSGVpZ2h0O2lmKCEoZT50WzFdK3J8fGU8dFswXS1yKSlyZXR1cm4gZT49LjkqdFsxXSsuMSp0WzBdPyJuIjplPD0uOSp0WzBdKy4xKnRbMV0/InMiOiJucyJ9KGQsZSk7ZyYmKG8uaW50ZXJ2YWw9bFtpXSxvLmludGVydmFsUGl4PWQsby5yZWdpb249Zyl9fWlmKHQub3JkaW5hbCYmIW8ucmVnaW9uKXt2YXIgbT10LnVuaXRUaWNrdmFscyx5PXQudW5pdFRvUGFkZGVkUHguaW52ZXJ0KGUpO2ZvcihyPTA7cjxtLmxlbmd0aDtyKyspe3ZhciB4PVsuMjUqbVtNYXRoLm1heChyLTEsMCldKy43NSptW3JdLC4yNSptW01hdGgubWluKHIrMSxtLmxlbmd0aC0xKV0rLjc1Km1bcl1dO2lmKHk+PXhbMF0mJnk8PXhbMV0pe28uY2xpY2thYmxlT3JkaW5hbFJhbmdlPXg7YnJlYWt9fX1yZXR1cm4gb31mdW5jdGlvbiBfKHQsZSl7YS5ldmVudC5zb3VyY2VFdmVudC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgcj1lLmhlaWdodC1hLm1vdXNlKHQpWzFdLTIqbi52ZXJ0aWNhbFBhZGRpbmcsaT1lLmJydXNoLnN2Z0JydXNoO2kud2FzRHJhZ2dlZD0hMCxpLl9kcmFnZ2luZz0hMCxpLmdyYWJiaW5nQmFyP2kubmV3RXh0ZW50PVtyLWkuZ3JhYlBvaW50LHIraS5iYXJMZW5ndGgtaS5ncmFiUG9pbnRdLm1hcChlLnVuaXRUb1BhZGRlZFB4LmludmVydCk6aS5uZXdFeHRlbnQ9W2kuc3RhcnRFeHRlbnQsZS51bml0VG9QYWRkZWRQeC5pbnZlcnQocildLnNvcnQocyksZS5icnVzaC5maWx0ZXJTcGVjaWZpZWQ9ITAsaS5leHRlbnQ9aS5zdGF5aW5nSW50ZXJ2YWxzLmNvbmNhdChbaS5uZXdFeHRlbnRdKSxpLmJydXNoQ2FsbGJhY2soZSkseCh0LnBhcmVudE5vZGUpfWZ1bmN0aW9uIHcodCxlKXt2YXIgcj1iKGUsZS5oZWlnaHQtYS5tb3VzZSh0KVsxXS0yKm4udmVydGljYWxQYWRkaW5nKSxpPSJjcm9zc2hhaXIiO3IuY2xpY2thYmxlT3JkaW5hbFJhbmdlP2k9InBvaW50ZXIiOnIucmVnaW9uJiYoaT1yLnJlZ2lvbisiLXJlc2l6ZSIpLGEuc2VsZWN0KGRvY3VtZW50LmJvZHkpLnN0eWxlKCJjdXJzb3IiLGkpfWZ1bmN0aW9uIGsodCl7dC5vbigibW91c2Vtb3ZlIixmdW5jdGlvbih0KXthLmV2ZW50LnByZXZlbnREZWZhdWx0KCksdC5wYXJlbnQuaW5CcnVzaERyYWd8fHcodGhpcyx0KX0pLm9uKCJtb3VzZWxlYXZlIixmdW5jdGlvbih0KXt0LnBhcmVudC5pbkJydXNoRHJhZ3x8bSgpfSkuY2FsbChhLmJlaGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlKXthLmV2ZW50LnNvdXJjZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO3ZhciByPWUuaGVpZ2h0LWEubW91c2UodClbMV0tMipuLnZlcnRpY2FsUGFkZGluZyxpPWUudW5pdFRvUGFkZGVkUHguaW52ZXJ0KHIpLG89ZS5icnVzaCxzPWIoZSxyKSxsPXMuaW50ZXJ2YWwsYz1vLnN2Z0JydXNoO2lmKGMud2FzRHJhZ2dlZD0hMSxjLmdyYWJiaW5nQmFyPSJucyI9PT1zLnJlZ2lvbixjLmdyYWJiaW5nQmFyKXt2YXIgdT1sLm1hcChlLnVuaXRUb1BhZGRlZFB4KTtjLmdyYWJQb2ludD1yLXVbMF0tbi52ZXJ0aWNhbFBhZGRpbmcsYy5iYXJMZW5ndGg9dVsxXS11WzBdfWMuY2xpY2thYmxlT3JkaW5hbFJhbmdlPXMuY2xpY2thYmxlT3JkaW5hbFJhbmdlLGMuc3RheWluZ0ludGVydmFscz1lLm11bHRpc2VsZWN0JiZvLmZpbHRlclNwZWNpZmllZD9vLmZpbHRlci5nZXRDb25zb2xpZGF0ZWQoKTpbXSxsJiYoYy5zdGF5aW5nSW50ZXJ2YWxzPWMuc3RheWluZ0ludGVydmFscy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0hPT1sWzBdJiZ0WzFdIT09bFsxXX0pKSxjLnN0YXJ0RXh0ZW50PXMucmVnaW9uP2xbInMiPT09cy5yZWdpb24/MTowXTppLGUucGFyZW50LmluQnJ1c2hEcmFnPSEwLGMuYnJ1c2hTdGFydENhbGxiYWNrKCl9KHRoaXMsdCl9KS5vbigiZHJhZyIsZnVuY3Rpb24odCl7Xyh0aGlzLHQpfSkub24oImRyYWdlbmQiLGZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUpe3ZhciByPWUuYnJ1c2gsbj1yLmZpbHRlcixpPXIuc3ZnQnJ1c2g7aS5fZHJhZ2dpbmd8fCh3KHQsZSksXyh0LGUpLGUuYnJ1c2guc3ZnQnJ1c2gud2FzRHJhZ2dlZD0hMSksaS5fZHJhZ2dpbmc9ITEsYS5ldmVudC5zb3VyY2VFdmVudC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgbz1pLmdyYWJiaW5nQmFyO2lmKGkuZ3JhYmJpbmdCYXI9ITEsaS5ncmFiTG9jYXRpb249dm9pZCAwLGUucGFyZW50LmluQnJ1c2hEcmFnPSExLG0oKSwhaS53YXNEcmFnZ2VkKXJldHVybiBpLndhc0RyYWdnZWQ9dm9pZCAwLGkuY2xpY2thYmxlT3JkaW5hbFJhbmdlP3IuZmlsdGVyU3BlY2lmaWVkJiZlLm11bHRpc2VsZWN0P2kuZXh0ZW50LnB1c2goaS5jbGlja2FibGVPcmRpbmFsUmFuZ2UpOihpLmV4dGVudD1baS5jbGlja2FibGVPcmRpbmFsUmFuZ2VdLHIuZmlsdGVyU3BlY2lmaWVkPSEwKTpvPyhpLmV4dGVudD1pLnN0YXlpbmdJbnRlcnZhbHMsMD09PWkuZXh0ZW50Lmxlbmd0aCYmTShyKSk6TShyKSxpLmJydXNoQ2FsbGJhY2soZSkseCh0LnBhcmVudE5vZGUpLHZvaWQgaS5icnVzaEVuZENhbGxiYWNrKHIuZmlsdGVyU3BlY2lmaWVkP24uZ2V0Q29uc29saWRhdGVkKCk6W10pO3ZhciBzPWZ1bmN0aW9uKCl7bi5zZXQobi5nZXRDb25zb2xpZGF0ZWQoKSl9O2lmKGUub3JkaW5hbCl7dmFyIGw9ZS51bml0VGlja3ZhbHM7bFtsLmxlbmd0aC0xXTxsWzBdJiZsLnJldmVyc2UoKSxpLm5ld0V4dGVudD1bZigwLGwsaS5uZXdFeHRlbnRbMF0saS5zdGF5aW5nSW50ZXJ2YWxzKSxmKDEsbCxpLm5ld0V4dGVudFsxXSxpLnN0YXlpbmdJbnRlcnZhbHMpXTt2YXIgYz1pLm5ld0V4dGVudFsxXT5pLm5ld0V4dGVudFswXTtpLmV4dGVudD1pLnN0YXlpbmdJbnRlcnZhbHMuY29uY2F0KGM/W2kubmV3RXh0ZW50XTpbXSksaS5leHRlbnQubGVuZ3RofHxNKHIpLGkuYnJ1c2hDYWxsYmFjayhlKSxjP3godC5wYXJlbnROb2RlLHMpOihzKCkseCh0LnBhcmVudE5vZGUpKX1lbHNlIHMoKTtpLmJydXNoRW5kQ2FsbGJhY2soci5maWx0ZXJTcGVjaWZpZWQ/bi5nZXRDb25zb2xpZGF0ZWQoKTpbXSl9KHRoaXMsdCl9KSl9ZnVuY3Rpb24gVCh0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24gTSh0KXt0LmZpbHRlclNwZWNpZmllZD0hMSx0LnN2Z0JydXNoLmV4dGVudD1bWy0xLzAsMS8wXV19ZnVuY3Rpb24gQSh0KXtmb3IodmFyIGUscj10LnNsaWNlKCksbj1bXSxhPXIuc2hpZnQoKTthOyl7Zm9yKGU9YS5zbGljZSgpOyhhPXIuc2hpZnQoKSkmJmFbMF08PWVbMV07KWVbMV09TWF0aC5tYXgoZVsxXSxhWzFdKTtuLnB1c2goZSl9cmV0dXJuIG59ZS5leHBvcnRzPXttYWtlQnJ1c2g6ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvLGw9ZnVuY3Rpb24oKXt2YXIgdCxlLHI9W107cmV0dXJue3NldDpmdW5jdGlvbihuKXsxPT09KHI9bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoKS5zb3J0KHMpfSkuc29ydChUKSkubGVuZ3RoJiZyWzBdWzBdPT09LTEvMCYmclswXVsxXT09PTEvMCYmKHI9W1swLC0xXV0pLHQ9QShyKSxlPXIucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW01hdGgubWluKHRbMF0sZVswXSksTWF0aC5tYXgodFsxXSxlWzFdKV19LFsxLzAsLTEvMF0pfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5zbGljZSgpfSxnZXRDb25zb2xpZGF0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIGV9fX0oKTtyZXR1cm4gbC5zZXQocikse2ZpbHRlcjpsLGZpbHRlclNwZWNpZmllZDplLHN2Z0JydXNoOntleHRlbnQ6W10sYnJ1c2hTdGFydENhbGxiYWNrOm4sYnJ1c2hDYWxsYmFjazoobz1hLGZ1bmN0aW9uKHQpe3ZhciBlPXQuYnJ1c2gscj1mdW5jdGlvbih0KXtyZXR1cm4gdC5zdmdCcnVzaC5leHRlbnQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKCl9KX0oZSkuc2xpY2UoKTtlLmZpbHRlci5zZXQociksbygpfSksYnJ1c2hFbmRDYWxsYmFjazppfX19LGVuc3VyZUF4aXNCcnVzaDpmdW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdEFsbCgiLiIrbi5jbi5heGlzQnJ1c2gpLmRhdGEobyxpKTtlLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLmF4aXNCcnVzaCwhMCksZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi5iYWNrZ3JvdW5kIikuZGF0YShvKTtlLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgiYmFja2dyb3VuZCIsITApLmNhbGwocCkuY2FsbChkKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhdXRvIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAgIituLnZlcnRpY2FsUGFkZGluZysiKSIpLGUuY2FsbChrKS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdodC1uLnZlcnRpY2FsUGFkZGluZ30pO3ZhciByPXQuc2VsZWN0QWxsKCIuaGlnaGxpZ2h0LXNoYWRvdyIpLmRhdGEobyk7ci5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImhpZ2hsaWdodC1zaGFkb3ciLCEwKS5hdHRyKCJ4Iiwtbi5iYXIud2lkdGgvMikuYXR0cigic3Ryb2tlLXdpZHRoIixuLmJhci53aWR0aCtuLmJhci5zdHJva2VXaWR0aCkuYXR0cigic3Ryb2tlIixuLmJhci5zdHJva2VDb2xvcikuYXR0cigib3BhY2l0eSIsbi5iYXIuc3Ryb2tlT3BhY2l0eSkuYXR0cigic3Ryb2tlLWxpbmVjYXAiLCJidXR0Iiksci5hdHRyKCJ5MSIsZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkuY2FsbCh5KTt2YXIgYT10LnNlbGVjdEFsbCgiLmhpZ2hsaWdodCIpLmRhdGEobyk7YS5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImhpZ2hsaWdodCIsITApLmF0dHIoIngiLC1uLmJhci53aWR0aC8yKS5hdHRyKCJzdHJva2Utd2lkdGgiLG4uYmFyLndpZHRoLW4uYmFyLnN0cm9rZVdpZHRoKS5hdHRyKCJzdHJva2UiLG4uYmFyLmZpbGxDb2xvcikuYXR0cigib3BhY2l0eSIsbi5iYXIuZmlsbE9wYWNpdHkpLmF0dHIoInN0cm9rZS1saW5lY2FwIiwiYnV0dCIpLGEuYXR0cigieTEiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdodH0pLmNhbGwoeSl9KGUpfSxjbGVhblJhbmdlczpmdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodFswXSk/KHQ9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuc29ydChzKX0pLHQ9ZS5tdWx0aXNlbGVjdD9BKHQuc29ydChUKSk6W3RbMF1dKTp0PVt0LnNvcnQocyldLGUudGlja3ZhbHMpe3ZhciByPWUudGlja3ZhbHMuc2xpY2UoKS5zb3J0KHMpO2lmKCEodD10Lm1hcChmdW5jdGlvbih0KXt2YXIgZT1bZigwLHIsdFswXSxbXSksZigxLHIsdFsxXSxbXSldO2lmKGVbMV0+ZVswXSlyZXR1cm4gZX0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdH0pKS5sZW5ndGgpcmV0dXJufXJldHVybiB0Lmxlbmd0aD4xP3Q6dFswXX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ3VwIjo3MTUsIi4vY29uc3RhbnRzIjoxMDg2LGQzOjE2NX1dLDEwODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL3Bsb3RzL2dldF9kYXRhIikuZ2V0TW9kdWxlQ2FsY0RhdGEsaT10KCIuL3Bsb3QiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIik7ci5uYW1lPSJwYXJjb29yZHMiLHIucGxvdD1mdW5jdGlvbih0KXt2YXIgZT1hKHQuY2FsY2RhdGEsInBhcmNvb3JkcyIpWzBdO2UubGVuZ3RoJiZpKHQsZSl9LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9bi5faGFzJiZuLl9oYXMoInBhcmNvb3JkcyIpLGk9ZS5faGFzJiZlLl9oYXMoInBhcmNvb3JkcyIpO2EmJiFpJiYobi5fcGFwZXJkaXYuc2VsZWN0QWxsKCIucGFyY29vcmRzIikucmVtb3ZlKCksbi5fZ2xpbWFnZXMuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCkpfSxyLnRvU1ZHPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQuX2dsaW1hZ2VzLHI9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCIuc3ZnLWNvbnRhaW5lciIpO3IuZmlsdGVyKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9PT1yLnNpemUoKS0xfSkuc2VsZWN0QWxsKCIuZ2wtY2FudmFzLWNvbnRleHQsIC5nbC1jYW52YXMtZm9jdXMiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50b0RhdGFVUkwoImltYWdlL3BuZyIpO2UuYXBwZW5kKCJzdmc6aW1hZ2UiKS5hdHRyKHt4bWxuczpvLnN2ZywieGxpbms6aHJlZiI6dCxwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIix4OjAseTowLHdpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSl9KSx3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe24uc2VsZWN0QWxsKCIjZmlsdGVyQmFyUGF0dGVybiIpLmF0dHIoImlkIiwiZmlsdGVyQmFyUGF0dGVybiIpfSw2MCl9fSx7Ii4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uLy4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4vcGxvdCI6MTA5MyxkMzoxNjV9XSwxMDg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxpPXQoIi4uLy4uL2xpYi9ndXAiKS53cmFwO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG87cmV0dXJuIGEuaGFzQ29sb3JzY2FsZShlLCJsaW5lIikmJm4oZS5saW5lLmNvbG9yKT8ocj1lLmxpbmUuY29sb3Isbz1hLmV4dHJhY3RPcHRzKGUubGluZSkuY29sb3JzY2FsZSxhLmNhbGModCxlLHt2YWxzOnIsY29udGFpbmVyU3RyOiJsaW5lIixjTGV0dGVyOiJjIn0pKToocj1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09LjU7cmV0dXJuIGV9KGUuX2xlbmd0aCksbz1bWzAsZS5saW5lLmNvbG9yXSxbMSxlLmxpbmUuY29sb3JdXSksaSh7bGluZUNvbG9yOnIsY3NjYWxlOm99KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ3VwIjo3MTV9XSwxMDg2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bWF4RGltZW5zaW9uQ291bnQ6NjAsb3ZlcmRyYWc6NDUsdmVydGljYWxQYWRkaW5nOjIsdGlja0Rpc3RhbmNlOjUwLGNhbnZhc1BpeGVsUmF0aW86MSxibG9ja0xpbmVDb3VudDo1ZTMsbGF5ZXJzOlsiY29udGV4dExpbmVMYXllciIsImZvY3VzTGluZUxheWVyIiwicGlja0xpbmVMYXllciJdLGF4aXNUaXRsZU9mZnNldDoyOCxheGlzRXh0ZW50T2Zmc2V0OjEwLGRlc2VsZWN0ZWRMaW5lQ29sb3I6IiM3NzciLGJhcjp7d2lkdGg6NCxjYXB0dXJlV2lkdGg6MTAsZmlsbENvbG9yOiJtYWdlbnRhIixmaWxsT3BhY2l0eToxLHNuYXBEdXJhdGlvbjoxNTAsc25hcFJhdGlvOi4yNSxzbmFwQ2xvc2U6LjAxLHN0cm9rZUNvbG9yOiJ3aGl0ZSIsc3Ryb2tlT3BhY2l0eToxLHN0cm9rZVdpZHRoOjEsaGFuZGxlSGVpZ2h0OjgsaGFuZGxlT3BhY2l0eToxLGhhbmRsZU92ZXJsYXA6MH0sY246e2F4aXNFeHRlbnRUZXh0OiJheGlzLWV4dGVudC10ZXh0IixwYXJjb29yZHNMaW5lTGF5ZXJzOiJwYXJjb29yZHMtbGluZS1sYXllcnMiLHBhcmNvb3Jkc0xpbmVMYXllcjoicGFyY29vcmRzLWxpbmVzIixwYXJjb29yZHM6InBhcmNvb3JkcyIscGFyY29vcmRzQ29udHJvbFZpZXc6InBhcmNvb3Jkcy1jb250cm9sLXZpZXciLHlBeGlzOiJ5LWF4aXMiLGF4aXNPdmVybGF5czoiYXhpcy1vdmVybGF5cyIsYXhpczoiYXhpcyIsYXhpc0hlYWRpbmc6ImF4aXMtaGVhZGluZyIsYXhpc1RpdGxlOiJheGlzLXRpdGxlIixheGlzRXh0ZW50OiJheGlzLWV4dGVudCIsYXhpc0V4dGVudFRvcDoiYXhpcy1leHRlbnQtdG9wIixheGlzRXh0ZW50VG9wVGV4dDoiYXhpcy1leHRlbnQtdG9wLXRleHQiLGF4aXNFeHRlbnRCb3R0b206ImF4aXMtZXh0ZW50LWJvdHRvbSIsYXhpc0V4dGVudEJvdHRvbVRleHQ6ImF4aXMtZXh0ZW50LWJvdHRvbS10ZXh0IixheGlzQnJ1c2g6ImF4aXMtYnJ1c2gifSxpZDp7ZmlsdGVyQmFyUGF0dGVybjoiZmlsdGVyLWJhci1wYXR0ZXJuIn19fSx7fV0sMTA4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuZGVmYXVsdHMscz10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxsPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYz10KCIuL2F0dHJpYnV0ZXMiKSx1PXQoIi4vYXhpc2JydXNoIiksaD10KCIuL2NvbnN0YW50cyIpLm1heERpbWVuc2lvbkNvdW50LGY9dCgiLi9tZXJnZV9sZW5ndGgiKTtmdW5jdGlvbiBwKHQsZSxyLGEpe2Z1bmN0aW9uIGkocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGMuZGltZW5zaW9ucyxyLGEpfXZhciBvPWkoInZhbHVlcyIpLHM9aSgidmlzaWJsZSIpO2lmKG8mJm8ubGVuZ3RofHwocz1lLnZpc2libGU9ITEpLHMpe2koImxhYmVsIiksaSgidGlja3ZhbHMiKSxpKCJ0aWNrdGV4dCIpLGkoInRpY2tmb3JtYXQiKTt2YXIgaD1pKCJyYW5nZSIpO2UuX2F4PXtfaWQ6InkiLHR5cGU6ImxpbmVhciIsc2hvd2V4cG9uZW50OiJhbGwiLGV4cG9uZW50Zm9ybWF0OiJCIixyYW5nZTpofSxsLnNldENvbnZlcnQoZS5fYXgsYS5sYXlvdXQpLGkoIm11bHRpc2VsZWN0Iik7dmFyIGY9aSgiY29uc3RyYWludHJhbmdlIik7ZiYmKGUuY29uc3RyYWludHJhbmdlPXUuY2xlYW5SYW5nZXMoZixlKSl9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXtmdW5jdGlvbiB1KHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxjLHIsYSl9dmFyIGQ9dC5kaW1lbnNpb25zO0FycmF5LmlzQXJyYXkoZCkmJmQubGVuZ3RoPmgmJihuLmxvZygicGFyY29vcmRzIHRyYWNlcyBzdXBwb3J0IHVwIHRvICIraCsiIGRpbWVuc2lvbnMgYXQgdGhlIG1vbWVudCIpLGQuc3BsaWNlKGgpKTt2YXIgZz1zKHQsZSx7bmFtZToiZGltZW5zaW9ucyIsbGF5b3V0OmwsaGFuZGxlSXRlbURlZmF1bHRzOnB9KSx2PWZ1bmN0aW9uKHQsZSxyLG8scyl7dmFyIGw9cygibGluZS5jb2xvciIscik7aWYoYSh0LCJsaW5lIikmJm4uaXNBcnJheU9yVHlwZWRBcnJheShsKSl7aWYobC5sZW5ndGgpcmV0dXJuIHMoImxpbmUuY29sb3JzY2FsZSIpLGkodCxlLG8scyx7cHJlZml4OiJsaW5lLiIsY0xldHRlcjoiYyJ9KSxsLmxlbmd0aDtlLmxpbmUuY29sb3I9cn1yZXR1cm4gMS8wfSh0LGUscixsLHUpO28oZSxsLHUpLEFycmF5LmlzQXJyYXkoZykmJmcubGVuZ3RofHwoZS52aXNpYmxlPSExKSxmKGUsZywidmFsdWVzIix2KTt2YXIgbT17ZmFtaWx5OmwuZm9udC5mYW1pbHksc2l6ZTpNYXRoLnJvdW5kKGwuZm9udC5zaXplLzEuMiksY29sb3I6bC5mb250LmNvbG9yfTtuLmNvZXJjZUZvbnQodSwibGFiZWxmb250IixtKSxuLmNvZXJjZUZvbnQodSwidGlja2ZvbnQiLG0pLG4uY29lcmNlRm9udCh1LCJyYW5nZWZvbnQiLG0pLHUoImxhYmVsYW5nbGUiKSx1KCJsYWJlbHNpZGUiKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2MDIsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4vYXR0cmlidXRlcyI6MTA4MiwiLi9heGlzYnJ1c2giOjEwODMsIi4vY29uc3RhbnRzIjoxMDg2LCIuL21lcmdlX2xlbmd0aCI6MTA5MX1dLDEwODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIikuaXNUeXBlZEFycmF5O3IuY29udmVydFR5cGVkQXJyYXk9ZnVuY3Rpb24odCl7cmV0dXJuIG4odCk/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCk6dH0sci5pc09yZGluYWw9ZnVuY3Rpb24odCl7cmV0dXJuISF0LnRpY2t2YWxzfSxyLmlzVmlzaWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gdC52aXNpYmxlfHwhKCJ2aXNpYmxlImluIHQpfX0seyIuLi8uLi9saWIiOjcxN31dLDEwODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksY29sb3JiYXI6e2NvbnRhaW5lcjoibGluZSIsbWluOiJjbWluIixtYXg6ImNtYXgifSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToicGFyY29vcmRzIixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIpLGNhdGVnb3JpZXM6WyJnbCIsInJlZ2wiLCJub09wYWNpdHkiLCJub0hvdmVyIl0sbWV0YTp7fX19LHsiLi9hdHRyaWJ1dGVzIjoxMDgyLCIuL2Jhc2VfcGxvdCI6MTA4NCwiLi9jYWxjIjoxMDg1LCIuL2RlZmF1bHRzIjoxMDg3LCIuL3Bsb3QiOjEwOTN9XSwxMDkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsc2xpZnkiKSxhPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG5hdHRyaWJ1dGUgdmVjNCBwMDFfMDQsIHAwNV8wOCwgcDA5XzEyLCBwMTNfMTYsXG4gICAgICAgICAgICAgICBwMTdfMjAsIHAyMV8yNCwgcDI1XzI4LCBwMjlfMzIsXG4gICAgICAgICAgICAgICBwMzNfMzYsIHAzN180MCwgcDQxXzQ0LCBwNDVfNDgsXG4gICAgICAgICAgICAgICBwNDlfNTIsIHA1M181NiwgcDU3XzYwLCBjb2xvcnM7XG5cbnVuaWZvcm0gbWF0NCBkaW0wQSwgZGltMUEsIGRpbTBCLCBkaW0xQiwgZGltMEMsIGRpbTFDLCBkaW0wRCwgZGltMUQsXG4gICAgICAgICAgICAgbG9BLCBoaUEsIGxvQiwgaGlCLCBsb0MsIGhpQywgbG9ELCBoaUQ7XG5cbnVuaWZvcm0gdmVjMiByZXNvbHV0aW9uLCB2aWV3Qm94UG9zLCB2aWV3Qm94U2l6ZTtcbnVuaWZvcm0gc2FtcGxlcjJEIG1hc2ssIHBhbGV0dGU7XG51bmlmb3JtIGZsb2F0IG1hc2tIZWlnaHQ7XG51bmlmb3JtIGZsb2F0IGRyd0xheWVyOyAvLyAwOiBjb250ZXh0LCAxOiBmb2N1cywgMjogcGlja1xudW5pZm9ybSB2ZWM0IGNvbnRleHRDb2xvcjtcblxuYm9vbCBpc1BpY2sgICAgPSAoZHJ3TGF5ZXIgPiAxLjUpO1xuYm9vbCBpc0NvbnRleHQgPSAoZHJ3TGF5ZXIgPCAwLjUpO1xuXG5jb25zdCB2ZWM0IFpFUk9TID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApO1xuY29uc3QgdmVjNCBVTklUUyA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTtcblxuZmxvYXQgdmFsKG1hdDQgcCwgbWF0NCB2KSB7XG4gICAgcmV0dXJuIGRvdChtYXRyaXhDb21wTXVsdChwLCB2KSAqIFVOSVRTLCBVTklUUyk7XG59XG5cbmZsb2F0IGF4aXNZKGZsb2F0IHJhdGlvLCBtYXQ0IEEsIG1hdDQgQiwgbWF0NCBDLCBtYXQ0IEQpIHtcbiAgICBmbG9hdCB5MSA9IHZhbChBLCBkaW0wQSkgKyB2YWwoQiwgZGltMEIpICsgdmFsKEMsIGRpbTBDKSArIHZhbChELCBkaW0wRCk7XG4gICAgZmxvYXQgeTIgPSB2YWwoQSwgZGltMUEpICsgdmFsKEIsIGRpbTFCKSArIHZhbChDLCBkaW0xQykgKyB2YWwoRCwgZGltMUQpO1xuICAgIHJldHVybiB5MSAqICgxLjAgLSByYXRpbykgKyB5MiAqIHJhdGlvO1xufVxuXG5pbnQgaU1vZChpbnQgYSwgaW50IGIpIHtcbiAgICByZXR1cm4gYSAtIGIgKiAoYSAvIGIpO1xufVxuXG5ib29sIGZPdXRzaWRlKGZsb2F0IHAsIGZsb2F0IGxvLCBmbG9hdCBoaSkge1xuICAgIHJldHVybiAobG8gPCBoaSkgJiYgKGxvID4gcCB8fCBwID4gaGkpO1xufVxuXG5ib29sIHZPdXRzaWRlKHZlYzQgcCwgdmVjNCBsbywgdmVjNCBoaSkge1xuICAgIHJldHVybiAoXG4gICAgICAgIGZPdXRzaWRlKHBbMF0sIGxvWzBdLCBoaVswXSkgfHxcbiAgICAgICAgZk91dHNpZGUocFsxXSwgbG9bMV0sIGhpWzFdKSB8fFxuICAgICAgICBmT3V0c2lkZShwWzJdLCBsb1syXSwgaGlbMl0pIHx8XG4gICAgICAgIGZPdXRzaWRlKHBbM10sIGxvWzNdLCBoaVszXSlcbiAgICApO1xufVxuXG5ib29sIG1PdXRzaWRlKG1hdDQgcCwgbWF0NCBsbywgbWF0NCBoaSkge1xuICAgIHJldHVybiAoXG4gICAgICAgIHZPdXRzaWRlKHBbMF0sIGxvWzBdLCBoaVswXSkgfHxcbiAgICAgICAgdk91dHNpZGUocFsxXSwgbG9bMV0sIGhpWzFdKSB8fFxuICAgICAgICB2T3V0c2lkZShwWzJdLCBsb1syXSwgaGlbMl0pIHx8XG4gICAgICAgIHZPdXRzaWRlKHBbM10sIGxvWzNdLCBoaVszXSlcbiAgICApO1xufVxuXG5ib29sIG91dHNpZGVCb3VuZGluZ0JveChtYXQ0IEEsIG1hdDQgQiwgbWF0NCBDLCBtYXQ0IEQpIHtcbiAgICByZXR1cm4gbU91dHNpZGUoQSwgbG9BLCBoaUEpIHx8XG4gICAgICAgICAgIG1PdXRzaWRlKEIsIGxvQiwgaGlCKSB8fFxuICAgICAgICAgICBtT3V0c2lkZShDLCBsb0MsIGhpQykgfHxcbiAgICAgICAgICAgbU91dHNpZGUoRCwgbG9ELCBoaUQpO1xufVxuXG5ib29sIG91dHNpZGVSYXN0ZXJNYXNrKG1hdDQgQSwgbWF0NCBCLCBtYXQ0IEMsIG1hdDQgRCkge1xuICAgIG1hdDQgcG50c1s0XTtcbiAgICBwbnRzWzBdID0gQTtcbiAgICBwbnRzWzFdID0gQjtcbiAgICBwbnRzWzJdID0gQztcbiAgICBwbnRzWzNdID0gRDtcblxuICAgIGZvcihpbnQgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IDQ7ICsraikge1xuICAgICAgICAgICAgZm9yKGludCBrID0gMDsgayA8IDQ7ICsraykge1xuICAgICAgICAgICAgICAgIGlmKDAgPT0gaU1vZChcbiAgICAgICAgICAgICAgICAgICAgaW50KDI1NS4wICogdGV4dHVyZTJEKG1hc2ssXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZWMyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdChpICogMiArIGogLyAyKSArIDAuNSkgLyA4LjAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBudHNbaV1bal1ba10gKiAobWFza0hlaWdodCAtIDEuMCkgKyAxLjApIC8gbWFza0hlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgKSlbM11cbiAgICAgICAgICAgICAgICAgICAgKSAvIGludChwb3coMi4wLCBmbG9hdChpTW9kKGogKiA0ICsgaywgOCkpKSksXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbnZlYzQgcG9zaXRpb24oYm9vbCBpc0NvbnRleHQsIGZsb2F0IHYsIG1hdDQgQSwgbWF0NCBCLCBtYXQ0IEMsIG1hdDQgRCkge1xuICAgIGZsb2F0IHggPSAwLjUgKiBzaWduKHYpICsgMC41O1xuICAgIGZsb2F0IHkgPSBheGlzWSh4LCBBLCBCLCBDLCBEKTtcbiAgICBmbG9hdCB6ID0gMS4wIC0gYWJzKHYpO1xuXG4gICAgeiArPSBpc0NvbnRleHQgPyAwLjAgOiAyLjAgKiBmbG9hdChcbiAgICAgICAgb3V0c2lkZUJvdW5kaW5nQm94KEEsIEIsIEMsIEQpIHx8XG4gICAgICAgIG91dHNpZGVSYXN0ZXJNYXNrKEEsIEIsIEMsIEQpXG4gICAgKTtcblxuICAgIHJldHVybiB2ZWM0KFxuICAgICAgICAyLjAgKiAodmVjMih4LCB5KSAqIHZpZXdCb3hTaXplICsgdmlld0JveFBvcykgLyByZXNvbHV0aW9uIC0gMS4wLFxuICAgICAgICB6LFxuICAgICAgICAxLjBcbiAgICApO1xufVxuXG52b2lkIG1haW4oKSB7XG4gICAgbWF0NCBBID0gbWF0NChwMDFfMDQsIHAwNV8wOCwgcDA5XzEyLCBwMTNfMTYpO1xuICAgIG1hdDQgQiA9IG1hdDQocDE3XzIwLCBwMjFfMjQsIHAyNV8yOCwgcDI5XzMyKTtcbiAgICBtYXQ0IEMgPSBtYXQ0KHAzM18zNiwgcDM3XzQwLCBwNDFfNDQsIHA0NV80OCk7XG4gICAgbWF0NCBEID0gbWF0NChwNDlfNTIsIHA1M181NiwgcDU3XzYwLCBaRVJPUyk7XG5cbiAgICBmbG9hdCB2ID0gY29sb3JzWzNdO1xuXG4gICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbihpc0NvbnRleHQsIHYsIEEsIEIsIEMsIEQpO1xuXG4gICAgZnJhZ0NvbG9yID1cbiAgICAgICAgaXNDb250ZXh0ID8gdmVjNChjb250ZXh0Q29sb3IpIDpcbiAgICAgICAgaXNQaWNrID8gdmVjNChjb2xvcnMucmdiLCAxLjApIDogdGV4dHVyZTJEKHBhbGV0dGUsIHZlYzIoYWJzKHYpLCAwLjUpKTtcbn1cbiJdKSxpPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gICAgZ2xfRnJhZ0NvbG9yID0gZnJhZ0NvbG9yO1xufVxuIl0pLG89dCgiLi9jb25zdGFudHMiKS5tYXhEaW1lbnNpb25Db3VudCxzPXQoIi4uLy4uL2xpYiIpLGw9MWUtNixjPTIwNDgsdT1uZXcgVWludDhBcnJheSg0KSxoPW5ldyBVaW50OEFycmF5KDQpLGY9e3NoYXBlOlsyNTYsMV0sZm9ybWF0OiJyZ2JhIix0eXBlOiJ1aW50OCIsbWFnOiJuZWFyZXN0IixtaW46Im5lYXJlc3QifTtmdW5jdGlvbiBwKHQsZSxyLG4sYSl7dmFyIGk9dC5fZ2w7aS5lbmFibGUoaS5TQ0lTU09SX1RFU1QpLGkuc2Npc3NvcihlLHIsbixhKSx0LmNsZWFyKHtjb2xvcjpbMCwwLDAsMF0sZGVwdGg6MX0pfWZ1bmN0aW9uIGQodCxlLHIsbixhLGkpe3ZhciBvPWkua2V5O3IuZHJhd0NvbXBsZXRlZHx8KCFmdW5jdGlvbih0KXt0LnJlYWQoe3g6MCx5OjAsd2lkdGg6MSxoZWlnaHQ6MSxkYXRhOnV9KX0odCksci5kcmF3Q29tcGxldGVkPSEwKSxmdW5jdGlvbiBzKGwpe3ZhciBjPU1hdGgubWluKG4sYS1sKm4pOzA9PT1sJiYod2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHIuY3VycmVudFJhZnNbb10pLGRlbGV0ZSByLmN1cnJlbnRSYWZzW29dLHAodCxpLnNjaXNzb3JYLGkuc2Npc3NvclksaS5zY2lzc29yV2lkdGgsaS52aWV3Qm94U2l6ZVsxXSkpLHIuY2xlYXJPbmx5fHwoaS5jb3VudD0yKmMsaS5vZmZzZXQ9MipsKm4sZShpKSxsKm4rYzxhJiYoci5jdXJyZW50UmFmc1tvXT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cyhsKzEpfSkpLHIuZHJhd0NvbXBsZXRlZD0hMSl9KDApfWZ1bmN0aW9uIGcodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KDI1Niksbj0wO248MjU2O24rKylyW25dPXQobi8yNTUpLmNvbmNhdChlKTtyZXR1cm4gcn1mdW5jdGlvbiB2KHQsZSl7cmV0dXJuKHQ+Pj44KmUpJTI1Ni8yNTV9ZnVuY3Rpb24gbSh0LGUscil7Zm9yKHZhciBuPW5ldyBBcnJheSg4KmUpLGE9MCxpPTA7aTxlO2krKylmb3IodmFyIG89MDtvPDI7bysrKWZvcih2YXIgcz0wO3M8NDtzKyspe3ZhciBsPTQqdCtzLGM9cls2NCppK2xdOzYzPT09bCYmMD09PW8mJihjKj0tMSksblthKytdPWN9cmV0dXJuIG59ZnVuY3Rpb24geSh0KXt2YXIgZT0iMCIrdDtyZXR1cm4gZS5zdWJzdHIoZS5sZW5ndGgtMil9ZnVuY3Rpb24geCh0KXtyZXR1cm4gdDxvPyJwIit5KHQrMSkrIl8iK3kodCs0KToiY29sb3JzIn1mdW5jdGlvbiBiKHQsZSxyLG4sYSxpLG8sbCxjLHUsaCxmLHApe2Zvcih2YXIgZD1bW10sW11dLGc9MDtnPDY0O2crKylkWzBdW2ddPWc9PT1hPzE6MCxkWzFdW2ddPWc9PT1pPzE6MDt2YXIgdj10LmxpbmVzLmNhbnZhc092ZXJkcmFnLG09dC5kb21haW4seT10LmNhbnZhc1dpZHRoLHg9dC5jYW52YXNIZWlnaHQsYj10LmRlc2VsZWN0ZWRMaW5lcy5jb2xvcjtyZXR1cm4gcy5leHRlbmRGbGF0KHtrZXk6aCxyZXNvbHV0aW9uOlt5LHhdLHZpZXdCb3hQb3M6W28rdixsXSx2aWV3Qm94U2l6ZTpbYyx1XSxpMDphLGkxOmksZGltMEE6ZFswXS5zbGljZSgwLDE2KSxkaW0wQjpkWzBdLnNsaWNlKDE2LDMyKSxkaW0wQzpkWzBdLnNsaWNlKDMyLDQ4KSxkaW0wRDpkWzBdLnNsaWNlKDQ4LDY0KSxkaW0xQTpkWzFdLnNsaWNlKDAsMTYpLGRpbTFCOmRbMV0uc2xpY2UoMTYsMzIpLGRpbTFDOmRbMV0uc2xpY2UoMzIsNDgpLGRpbTFEOmRbMV0uc2xpY2UoNDgsNjQpLGRyd0xheWVyOmYsY29udGV4dENvbG9yOltiWzBdLzI1NSxiWzFdLzI1NSxiWzJdLzI1NSxiWzNdPDE/YlszXTpNYXRoLm1heCgxLzI1NSxNYXRoLnBvdygxL3QubGluZXMuY29sb3IubGVuZ3RoLDEvMykpXSxzY2lzc29yWDoobj09PWU/MDpvK3YpKyh0LnBhZC5sLXYpK3QubGF5b3V0V2lkdGgqbS54WzBdLHNjaXNzb3JXaWR0aDoobj09PXI/eS1vK3Y6YysuNSkrKG49PT1lP28rdjowKSxzY2lzc29yWTpsK3QucGFkLmIrdC5sYXlvdXRIZWlnaHQqbS55WzBdLHNjaXNzb3JIZWlnaHQ6dSx2aWV3cG9ydFg6dC5wYWQubC12K3QubGF5b3V0V2lkdGgqbS54WzBdLHZpZXdwb3J0WTp0LnBhZC5iK3QubGF5b3V0SGVpZ2h0Km0ueVswXSx2aWV3cG9ydFdpZHRoOnksdmlld3BvcnRIZWlnaHQ6eH0scCl9ZnVuY3Rpb24gXyh0KXt2YXIgZT1jLTEscj1NYXRoLm1heCgwLE1hdGguZmxvb3IodFswXSplKSwwKSxuPU1hdGgubWluKGUsTWF0aC5jZWlsKHRbMV0qZSksZSk7cmV0dXJuW01hdGgubWluKHIsbiksTWF0aC5tYXgocixuKV19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbix1LHksdyxrPWUuY29udGV4dCxUPWUucGljayxNPWUucmVnbCxBPXtjdXJyZW50UmFmczp7fSxkcmF3Q29tcGxldGVkOiEwLGNsZWFyT25seTohMX0sUz1mdW5jdGlvbih0KXtmb3IodmFyIGU9e30scj0wO3I8PW87cis9NCllW3gocildPXQuYnVmZmVyKHt1c2FnZToiZHluYW1pYyIsdHlwZToiZmxvYXQiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9KTtyZXR1cm4gZX0oTSksRT1NLnRleHR1cmUoZiksTD1bXTtQKGUpO3ZhciBDPU0oe3Byb2ZpbGU6ITEsYmxlbmQ6e2VuYWJsZTprLGZ1bmM6e3NyY1JHQjoic3JjIGFscGhhIixkc3RSR0I6Im9uZSBtaW51cyBzcmMgYWxwaGEiLHNyY0FscGhhOjEsZHN0QWxwaGE6MX0sZXF1YXRpb246e3JnYjoiYWRkIixhbHBoYToiYWRkIn0sY29sb3I6WzAsMCwwLDBdfSxkZXB0aDp7ZW5hYmxlOiFrLG1hc2s6ITAsZnVuYzoibGVzcyIscmFuZ2U6WzAsMV19LGN1bGw6e2VuYWJsZTohMCxmYWNlOiJiYWNrIn0sc2Npc3Nvcjp7ZW5hYmxlOiEwLGJveDp7eDpNLnByb3AoInNjaXNzb3JYIikseTpNLnByb3AoInNjaXNzb3JZIiksd2lkdGg6TS5wcm9wKCJzY2lzc29yV2lkdGgiKSxoZWlnaHQ6TS5wcm9wKCJzY2lzc29ySGVpZ2h0Iil9fSx2aWV3cG9ydDp7eDpNLnByb3AoInZpZXdwb3J0WCIpLHk6TS5wcm9wKCJ2aWV3cG9ydFkiKSx3aWR0aDpNLnByb3AoInZpZXdwb3J0V2lkdGgiKSxoZWlnaHQ6TS5wcm9wKCJ2aWV3cG9ydEhlaWdodCIpfSxkaXRoZXI6ITEsdmVydDphLGZyYWc6aSxwcmltaXRpdmU6ImxpbmVzIixsaW5lV2lkdGg6MSxhdHRyaWJ1dGVzOlMsdW5pZm9ybXM6e3Jlc29sdXRpb246TS5wcm9wKCJyZXNvbHV0aW9uIiksdmlld0JveFBvczpNLnByb3AoInZpZXdCb3hQb3MiKSx2aWV3Qm94U2l6ZTpNLnByb3AoInZpZXdCb3hTaXplIiksZGltMEE6TS5wcm9wKCJkaW0wQSIpLGRpbTFBOk0ucHJvcCgiZGltMUEiKSxkaW0wQjpNLnByb3AoImRpbTBCIiksZGltMUI6TS5wcm9wKCJkaW0xQiIpLGRpbTBDOk0ucHJvcCgiZGltMEMiKSxkaW0xQzpNLnByb3AoImRpbTFDIiksZGltMEQ6TS5wcm9wKCJkaW0wRCIpLGRpbTFEOk0ucHJvcCgiZGltMUQiKSxsb0E6TS5wcm9wKCJsb0EiKSxoaUE6TS5wcm9wKCJoaUEiKSxsb0I6TS5wcm9wKCJsb0IiKSxoaUI6TS5wcm9wKCJoaUIiKSxsb0M6TS5wcm9wKCJsb0MiKSxoaUM6TS5wcm9wKCJoaUMiKSxsb0Q6TS5wcm9wKCJsb0QiKSxoaUQ6TS5wcm9wKCJoaUQiKSxwYWxldHRlOkUsY29udGV4dENvbG9yOk0ucHJvcCgiY29udGV4dENvbG9yIiksbWFzazpNLnByb3AoIm1hc2tUZXh0dXJlIiksZHJ3TGF5ZXI6TS5wcm9wKCJkcndMYXllciIpLG1hc2tIZWlnaHQ6TS5wcm9wKCJtYXNrSGVpZ2h0Iil9LG9mZnNldDpNLnByb3AoIm9mZnNldCIpLGNvdW50Ok0ucHJvcCgiY291bnQiKX0pO2Z1bmN0aW9uIFAodCl7cj10Lm1vZGVsLG49dC52aWV3TW9kZWwsdT1uLmRpbWVuc2lvbnMuc2xpY2UoKSx5PXVbMF0/dVswXS52YWx1ZXMubGVuZ3RoOjA7dmFyIGU9ci5saW5lcyxhPVQ/ZS5jb2xvci5tYXAoZnVuY3Rpb24odCxyKXtyZXR1cm4gci9lLmNvbG9yLmxlbmd0aH0pOmUuY29sb3IsaT1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuLGE9bmV3IEFycmF5KHQqKG8rNCkpLGk9MCxzPTA7czx0O3MrKyl7Zm9yKHZhciBjPTA7YzxvO2MrKylhW2krK109YzxlLmxlbmd0aD9lW2NdLnBhZGRlZFVuaXRWYWx1ZXNbc106LjU7YVtpKytdPXYocywyKSxhW2krK109dihzLDEpLGFbaSsrXT12KHMsMCksYVtpKytdPShuPXJbc10sTWF0aC5tYXgobCxNYXRoLm1pbigxLWwsbikpKX1yZXR1cm4gYX0oeSx1LGEpOyFmdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTA7bjw9bztuKz00KXRbeChuKV0obShuLzQsZSxyKSl9KFMseSxpKSxrfHxUfHwoRT1NLnRleHR1cmUocy5leHRlbmRGbGF0KHtkYXRhOmcoci51bml0VG9Db2xvciwyNTUpfSxmKSkpfXJldHVybntyZW5kZXI6ZnVuY3Rpb24odCxlLG4pe3ZhciBhLGksbyxzPXQubGVuZ3RoLGw9MS8wLGg9LTEvMDtmb3IoYT0wO2E8czthKyspdFthXS5kaW0wLmNhbnZhc1g8bCYmKGw9dFthXS5kaW0wLmNhbnZhc1gsaT1hKSx0W2FdLmRpbTEuY2FudmFzWD5oJiYoaD10W2FdLmRpbTEuY2FudmFzWCxvPWEpOzA9PT1zJiZwKE0sMCwwLHIuY2FudmFzV2lkdGgsci5jYW52YXNIZWlnaHQpO3ZhciBmPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhPVtbXSxbXV07Zm9yKG49MDtuPDY0O24rKyl7dmFyIGk9IXQmJm48dS5sZW5ndGg/dVtuXS5icnVzaC5maWx0ZXIuZ2V0Qm91bmRzKCk6Wy0xLzAsMS8wXTthWzBdW25dPWlbMF0sYVsxXVtuXT1pWzFdfXZhciBvPTgqYyxzPW5ldyBBcnJheShvKTtmb3IoZT0wO2U8bztlKyspc1tlXT0yNTU7aWYoIXQpZm9yKGU9MDtlPHUubGVuZ3RoO2UrKyl7dmFyIGw9ZSU4LGg9KGUtbCkvOCxmPU1hdGgucG93KDIsbCkscD11W2VdLmJydXNoLmZpbHRlci5nZXQoKTtpZighKHAubGVuZ3RoPDIpKXt2YXIgZD1fKHBbMF0pWzFdO2ZvcihyPTE7cjxwLmxlbmd0aDtyKyspe3ZhciBnPV8ocFtyXSk7Zm9yKG49ZCsxO248Z1swXTtuKyspc1s4Km4raF0mPX5mO2Q9TWF0aC5tYXgoZCxnWzFdKX19fXZhciB2PXtzaGFwZTpbOCxjXSxmb3JtYXQ6ImFscGhhIix0eXBlOiJ1aW50OCIsbWFnOiJuZWFyZXN0IixtaW46Im5lYXJlc3QiLGRhdGE6c307cmV0dXJuIHc/dyh2KTp3PU0udGV4dHVyZSh2KSx7bWFza1RleHR1cmU6dyxtYXNrSGVpZ2h0OmMsbG9BOmFbMF0uc2xpY2UoMCwxNiksbG9COmFbMF0uc2xpY2UoMTYsMzIpLGxvQzphWzBdLnNsaWNlKDMyLDQ4KSxsb0Q6YVswXS5zbGljZSg0OCw2NCksaGlBOmFbMV0uc2xpY2UoMCwxNiksaGlCOmFbMV0uc2xpY2UoMTYsMzIpLGhpQzphWzFdLnNsaWNlKDMyLDQ4KSxoaUQ6YVsxXS5zbGljZSg0OCw2NCl9fShrKTtmb3IoYT0wO2E8czthKyspe3ZhciBnPXRbYV0sdj1nLmRpbTAuY3Jvc3NmaWx0ZXJEaW1lbnNpb25JbmRleCxtPWcuZGltMS5jcm9zc2ZpbHRlckRpbWVuc2lvbkluZGV4LHg9Zy5jYW52YXNYLFM9Zy5jYW52YXNZLEU9eCtnLnBhbmVsU2l6ZVg7aWYoZXx8IUxbdl18fExbdl1bMF0hPT14fHxMW3ZdWzFdIT09RSl7TFt2XT1beCxFXTt2YXIgUD1iKHIsaSxvLGEsdixtLHgsUyxnLnBhbmVsU2l6ZVgsZy5wYW5lbFNpemVZLGcuZGltMC5jcm9zc2ZpbHRlckRpbWVuc2lvbkluZGV4LGs/MDpUPzI6MSxmKTtBLmNsZWFyT25seT1uO3ZhciBPPWU/ci5saW5lcy5ibG9ja0xpbmVDb3VudDp5O2QoTSxDLEEsTyx5LFApfX19LHJlYWRQaXhlbDpmdW5jdGlvbih0LGUpe3JldHVybiBNLnJlYWQoe3g6dCx5OmUsd2lkdGg6MSxoZWlnaHQ6MSxkYXRhOmh9KSxofSxyZWFkUGl4ZWxzOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW5ldyBVaW50OEFycmF5KDQqcipuKTtyZXR1cm4gTS5yZWFkKHt4OnQseTplLHdpZHRoOnIsaGVpZ2h0Om4sZGF0YTphfSksYX0sZGVzdHJveTpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0LnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIixFLmRlc3Ryb3koKSx3JiZ3LmRlc3Ryb3koKSxTKVNbZV0uZGVzdHJveSgpfSx1cGRhdGU6UH19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2NvbnN0YW50cyI6MTA4NixnbHNsaWZ5OjQxMX1dLDEwOTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGk7Zm9yKG58fChuPTEvMCksYT0wO2E8ZS5sZW5ndGg7YSsrKShpPWVbYV0pLnZpc2libGUmJihuPU1hdGgubWluKG4saVtyXS5sZW5ndGgpKTtmb3Iobj09PTEvMCYmKG49MCksdC5fbGVuZ3RoPW4sYT0wO2E8ZS5sZW5ndGg7YSsrKShpPWVbYV0pLnZpc2libGUmJihpLl9sZW5ndGg9bik7cmV0dXJuIG59fSx7fV0sMTA5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiY29sb3ItcmdiYSIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksbD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLHU9dCgiLi4vLi4vbGliL2d1cCIpLGg9dS5rZXlGdW4sZj11LnJlcGVhdCxwPXUudW53cmFwLGQ9dCgiLi9oZWxwZXJzIiksZz10KCIuL2NvbnN0YW50cyIpLHY9dCgiLi9heGlzYnJ1c2giKSxtPXQoIi4vbGluZXMiKTtmdW5jdGlvbiB5KHQsZSxyKXtyZXR1cm4gby5hZ2dOdW1zKHQsbnVsbCxlLHIpfWZ1bmN0aW9uIHgodCxlKXtyZXR1cm4gXyh5KE1hdGgubWluLHQsZSkseShNYXRoLm1heCx0LGUpKX1mdW5jdGlvbiBiKHQpe3ZhciBlPXQucmFuZ2U7cmV0dXJuIGU/XyhlWzBdLGVbMV0pOngodC52YWx1ZXMsdC5fbGVuZ3RoKX1mdW5jdGlvbiBfKHQsZSl7cmV0dXJuIWlzTmFOKHQpJiZpc0Zpbml0ZSh0KXx8KHQ9MCksIWlzTmFOKGUpJiZpc0Zpbml0ZShlKXx8KGU9MCksdD09PWUmJigwPT09dD8odC09MSxlKz0xKToodCo9LjksZSo9MS4xKSksW3QsZV19ZnVuY3Rpb24gdyh0LGUscixhLGkpe3ZhciBvLHMsbD1iKHIpO3JldHVybiBhP24uc2NhbGUub3JkaW5hbCgpLmRvbWFpbihhLm1hcCgobz1uLmZvcm1hdChyLnRpY2tmb3JtYXQpLHM9aSxzP2Z1bmN0aW9uKHQsZSl7dmFyIHI9c1tlXTtyZXR1cm4gbnVsbD09cj9vKHQpOnJ9Om8pKSkucmFuZ2UoYS5tYXAoZnVuY3Rpb24ocil7dmFyIG49KHItbFswXSkvKGxbMV0tbFswXSk7cmV0dXJuIHQtZStuKigyKmUtdCl9KSk6bi5zY2FsZS5saW5lYXIoKS5kb21haW4obCkucmFuZ2UoW3QtZSxlXSl9ZnVuY3Rpb24gayh0KXtpZih0LnRpY2t2YWxzKXt2YXIgZT1iKHQpO3JldHVybiBuLnNjYWxlLm9yZGluYWwoKS5kb21haW4odC50aWNrdmFscykucmFuZ2UodC50aWNrdmFscy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuKHQtZVswXSkvKGVbMV0tZVswXSl9KSl9fWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF19KSxyPXQubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPWEodFsxXSk7cmV0dXJuIG4ucmdiKCJyZ2IoIitlWzBdKyIsIitlWzFdKyIsIitlWzJdKyIpIil9KSxpPSJyZ2IiLnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG4uc2NhbGUubGluZWFyKCkuY2xhbXAoITApLmRvbWFpbihlKS5yYW5nZShyLm1hcCgoYT10LGZ1bmN0aW9uKHQpe3JldHVybiB0W2FdfSkpKTt2YXIgYX0pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX19ZnVuY3Rpb24gTSh0KXtyZXR1cm4gdC5kaW1lbnNpb25zLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQuYnJ1c2guZmlsdGVyU3BlY2lmaWVkfSl9ZnVuY3Rpb24gQSh0LGUscil7dmFyIGE9ci53aWR0aCxpPXIuaGVpZ2h0LHM9ci5kaW1lbnNpb25zLGw9ci5jYW52YXNQaXhlbFJhdGlvLGM9ZnVuY3Rpb24odCl7cmV0dXJuIGEqdC9NYXRoLm1heCgxLHIuY29sQ291bnQtMSl9LHU9Zy52ZXJ0aWNhbFBhZGRpbmcvaSxoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2NhbGUubGluZWFyKCkucmFuZ2UoW2UsdC1lXSl9KGksZy52ZXJ0aWNhbFBhZGRpbmcpLGY9e2tleTpyLmtleSx4U2NhbGU6Yyxtb2RlbDpyLGluQnJ1c2hEcmFnOiExfSxwPXt9O3JldHVybiBmLmRpbWVuc2lvbnM9cy5maWx0ZXIoZC5pc1Zpc2libGUpLm1hcChmdW5jdGlvbihhLHMpe3ZhciBtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2NhbGUubGluZWFyKCkuZG9tYWluKGIodCkpLnJhbmdlKFtlLDEtZV0pfShhLHUpLHk9cFthLmxhYmVsXTtwW2EubGFiZWxdPSh5fHwwKSsxO3ZhciB4PWEubGFiZWwrKHk/Il9fIit5OiIiKSxfPWEuY29uc3RyYWludHJhbmdlLFQ9XyYmXy5sZW5ndGg7VCYmIUFycmF5LmlzQXJyYXkoX1swXSkmJihfPVtfXSk7dmFyIEE9VD9fLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAobSl9KTpbWy0xLzAsMS8wXV0sUz1hLnZhbHVlcztTLmxlbmd0aD5hLl9sZW5ndGgmJihTPVMuc2xpY2UoMCxhLl9sZW5ndGgpKTt2YXIgRSxMPWEudGlja3ZhbHM7ZnVuY3Rpb24gQyh0LGUpe3JldHVybnt2YWw6dCx0ZXh0OkVbZV19fWZ1bmN0aW9uIFAodCxlKXtyZXR1cm4gdC52YWwtZS52YWx9aWYoQXJyYXkuaXNBcnJheShMKSYmTC5sZW5ndGgpe0U9YS50aWNrdGV4dCxBcnJheS5pc0FycmF5KEUpJiZFLmxlbmd0aD9FLmxlbmd0aD5MLmxlbmd0aD9FPUUuc2xpY2UoMCxMLmxlbmd0aCk6TC5sZW5ndGg+RS5sZW5ndGgmJihMPUwuc2xpY2UoMCxFLmxlbmd0aCkpOkU9TC5tYXAobi5mb3JtYXQoYS50aWNrZm9ybWF0KSk7Zm9yKHZhciBPPTE7TzxMLmxlbmd0aDtPKyspaWYoTFtPXTxMW08tMV0pe2Zvcih2YXIgej1MLm1hcChDKS5zb3J0KFApLEk9MDtJPEwubGVuZ3RoO0krKylMW0ldPXpbSV0udmFsLEVbSV09eltJXS50ZXh0O2JyZWFrfX1lbHNlIEw9dm9pZCAwO3JldHVybiBTPWQuY29udmVydFR5cGVkQXJyYXkoUykse2tleTp4LGxhYmVsOmEubGFiZWwsdGlja0Zvcm1hdDphLnRpY2tmb3JtYXQsdGlja3ZhbHM6TCx0aWNrdGV4dDpFLG9yZGluYWw6ZC5pc09yZGluYWwoYSksbXVsdGlzZWxlY3Q6YS5tdWx0aXNlbGVjdCx4SW5kZXg6cyxjcm9zc2ZpbHRlckRpbWVuc2lvbkluZGV4OnMsdmlzaWJsZUluZGV4OmEuX2luZGV4LGhlaWdodDppLHZhbHVlczpTLHBhZGRlZFVuaXRWYWx1ZXM6Uy5tYXAobSksdW5pdFRpY2t2YWxzOkwmJkwubWFwKG0pLHhTY2FsZTpjLHg6YyhzKSxjYW52YXNYOmMocykqbCx1bml0VG9QYWRkZWRQeDpoLGRvbWFpblNjYWxlOncoaSxnLnZlcnRpY2FsUGFkZGluZyxhLEwsRSksb3JkaW5hbFNjYWxlOmsoYSkscGFyZW50OmYsbW9kZWw6cixicnVzaDp2Lm1ha2VCcnVzaCh0LFQsQSxmdW5jdGlvbigpe3QubGluZVBpY2tBY3RpdmUoITEpfSxmdW5jdGlvbigpe3ZhciBlPWY7ZS5mb2N1c0xheWVyJiZlLmZvY3VzTGF5ZXIucmVuZGVyKGUucGFuZWxzLCEwKTt2YXIgcj1NKGUpOyF0LmNvbnRleHRTaG93bigpJiZyPyhlLmNvbnRleHRMYXllciYmZS5jb250ZXh0TGF5ZXIucmVuZGVyKGUucGFuZWxzLCEwKSx0LmNvbnRleHRTaG93bighMCkpOnQuY29udGV4dFNob3duKCkmJiFyJiYoZS5jb250ZXh0TGF5ZXImJmUuY29udGV4dExheWVyLnJlbmRlcihlLnBhbmVscywhMCwhMCksdC5jb250ZXh0U2hvd24oITEpKX0sZnVuY3Rpb24ocil7aWYoZi5mb2N1c0xheWVyLnJlbmRlcihmLnBhbmVscywhMCksZi5waWNrTGF5ZXImJmYucGlja0xheWVyLnJlbmRlcihmLnBhbmVscywhMCksdC5saW5lUGlja0FjdGl2ZSghMCksZSYmZS5maWx0ZXJDaGFuZ2VkKXt2YXIgbj1tLmludmVydCxpPXIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChuKS5zb3J0KG8uc29ydGVyQXNjKX0pLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXS1lWzBdfSk7ZS5maWx0ZXJDaGFuZ2VkKGYua2V5LGEuX2luZGV4LGkpfX0pfX0pLGZ9ZnVuY3Rpb24gUyh0KXt0LmNsYXNzZWQoZy5jbi5heGlzRXh0ZW50VGV4dCwhMCkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5zdHlsZSgiY3Vyc29yIiwiZGVmYXVsdCIpLnN0eWxlKCJ1c2VyLXNlbGVjdCIsIm5vbmUiKX1mdW5jdGlvbiBFKHQsZSl7dmFyIHI9InRvcCI9PT1lPzE6LTEsbj10Kk1hdGguUEkvMTgwO3JldHVybntkaXI6cixkeDpNYXRoLnNpbihuKSxkeTpNYXRoLmNvcyhuKSxkZWdyZWVzOnR9fWZ1bmN0aW9uIEwodCxlKXtmb3IodmFyIHI9ZS5wYW5lbHN8fChlLnBhbmVscz1bXSksbj10LmRhdGEoKSxhPTA7YTxuLmxlbmd0aC0xO2ErKyl7dmFyIGk9clthXXx8KHJbYV09e30pLG89blthXSxzPW5bYSsxXTtpLmRpbTA9byxpLmRpbTE9cyxpLmNhbnZhc1g9by5jYW52YXNYLGkucGFuZWxTaXplWD1zLmNhbnZhc1gtby5jYW52YXNYLGkucGFuZWxTaXplWT1lLm1vZGVsLmNhbnZhc0hlaWdodCxpLnk9MCxpLmNhbnZhc1k9MH19ZnVuY3Rpb24gQyh0LGUpe3JldHVybiBpLnRpY2tUZXh0KHQuX2F4LGUsITEpLnRleHR9ZnVuY3Rpb24gUCh0LGUpe2lmKHQub3JkaW5hbClyZXR1cm4iIjt2YXIgcj10LmRvbWFpblNjYWxlLmRvbWFpbigpLG49cltlP3IubGVuZ3RoLTE6MF07cmV0dXJuIEModC5tb2RlbC5kaW1lbnNpb25zW3QudmlzaWJsZUluZGV4XSxuKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsdSl7dmFyIHk9dC5fZnVsbExheW91dCx3PXkuX3RvcHBhcGVyLGs9eS5fZ2xjb250YWluZXI7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWZvcih2YXIgcj0wO3I8dFtlXS5sZW5ndGg7cisrKWZvcih2YXIgbj10W2VdW3JdLnRyYWNlLGE9bi5kaW1lbnNpb25zLG89MDtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXS52YWx1ZXMsbD1hW29dLl9heDtsJiYobC5yYW5nZT9sLnJhbmdlPV8obC5yYW5nZVswXSxsLnJhbmdlWzFdKTpsLnJhbmdlPXgocyxuLl9sZW5ndGgpLGwuZHRpY2t8fChsLmR0aWNrPS4wMSooTWF0aC5hYnMobC5yYW5nZVsxXS1sLnJhbmdlWzBdKXx8MSkpLGwudGlja2Zvcm1hdD1hW29dLnRpY2tmb3JtYXQsaS5jYWxjVGlja3MobCksbC5jbGVhblJhbmdlKCkpfX0oZSk7dmFyIE8seixJPShPPSEwLHo9ITEse2xpbmVQaWNrQWN0aXZlOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP089ISF0Ok99LGNvbnRleHRTaG93bjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD96PSEhdDp6fX0pLEQ9ZS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHAodCkudHJhY2UudmlzaWJsZX0pLm1hcChmdW5jdGlvbih0LGUscil7dmFyIGk9cChlKSxzPWkudHJhY2UsbD1kLmNvbnZlcnRUeXBlZEFycmF5KGkubGluZUNvbG9yKSx1PXMubGluZSxoPXtjb2xvcjphKGcuZGVzZWxlY3RlZExpbmVDb2xvcil9LGY9Yy5leHRyYWN0T3B0cyh1KSx2PWYucmV2ZXJzZXNjYWxlP2MuZmxpcFNjYWxlKGkuY3NjYWxlKTppLmNzY2FsZSxtPXMuZG9tYWluLHk9cy5kaW1lbnNpb25zLHg9dC53aWR0aCxfPXMubGFiZWxhbmdsZSx3PXMubGFiZWxzaWRlLGs9cy5sYWJlbGZvbnQsTT1zLnRpY2tmb250LEE9cy5yYW5nZWZvbnQsUz1vLmV4dGVuZERlZXBOb0FycmF5cyh7fSx1LHtjb2xvcjpsLm1hcChuLnNjYWxlLmxpbmVhcigpLmRvbWFpbihiKHt2YWx1ZXM6bCxyYW5nZTpbZi5taW4sZi5tYXhdLF9sZW5ndGg6cy5fbGVuZ3RofSkpKSxibG9ja0xpbmVDb3VudDpnLmJsb2NrTGluZUNvdW50LGNhbnZhc092ZXJkcmFnOmcub3ZlcmRyYWcqZy5jYW52YXNQaXhlbFJhdGlvfSksRT1NYXRoLmZsb29yKHgqKG0ueFsxXS1tLnhbMF0pKSxMPU1hdGguZmxvb3IodC5oZWlnaHQqKG0ueVsxXS1tLnlbMF0pKSxDPXQubWFyZ2lufHx7bDo4MCxyOjgwLHQ6MTAwLGI6ODB9LFA9RSxPPUw7cmV0dXJue2tleTpyLGNvbENvdW50OnkuZmlsdGVyKGQuaXNWaXNpYmxlKS5sZW5ndGgsZGltZW5zaW9uczp5LHRpY2tEaXN0YW5jZTpnLnRpY2tEaXN0YW5jZSx1bml0VG9Db2xvcjpUKHYpLGxpbmVzOlMsZGVzZWxlY3RlZExpbmVzOmgsbGFiZWxBbmdsZTpfLGxhYmVsU2lkZTp3LGxhYmVsRm9udDprLHRpY2tGb250Ok0scmFuZ2VGb250OkEsbGF5b3V0V2lkdGg6eCxsYXlvdXRIZWlnaHQ6dC5oZWlnaHQsZG9tYWluOm0sdHJhbnNsYXRlWDptLnhbMF0qeCx0cmFuc2xhdGVZOnQuaGVpZ2h0LW0ueVsxXSp0LmhlaWdodCxwYWQ6QyxjYW52YXNXaWR0aDpQKmcuY2FudmFzUGl4ZWxSYXRpbysyKlMuY2FudmFzT3ZlcmRyYWcsY2FudmFzSGVpZ2h0Ok8qZy5jYW52YXNQaXhlbFJhdGlvLHdpZHRoOlAsaGVpZ2h0Ok8sY2FudmFzUGl4ZWxSYXRpbzpnLmNhbnZhc1BpeGVsUmF0aW99fS5iaW5kKDAscikpLm1hcChBLmJpbmQoMCxJLHUpKTtrLmVhY2goZnVuY3Rpb24odCxlKXtyZXR1cm4gby5leHRlbmRGbGF0KHQsRFtlXSl9KTt2YXIgUj1rLnNlbGVjdEFsbCgiLmdsLWNhbnZhcyIpLmVhY2goZnVuY3Rpb24odCl7dC52aWV3TW9kZWw9RFswXSx0Lm1vZGVsPXQudmlld01vZGVsP3Qudmlld01vZGVsLm1vZGVsOm51bGx9KSxGPW51bGw7Ui5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQucGlja30pLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImF1dG8iKS5vbigibW91c2Vtb3ZlIixmdW5jdGlvbih0KXtpZihJLmxpbmVQaWNrQWN0aXZlKCkmJnQubGluZUxheWVyJiZ1JiZ1LmhvdmVyKXt2YXIgZT1uLmV2ZW50LHI9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LGk9bi5tb3VzZSh0aGlzKSxvPWlbMF0scz1pWzFdO2lmKG88MHx8czwwfHxvPj1yfHxzPj1hKXJldHVybjt2YXIgbD10LmxpbmVMYXllci5yZWFkUGl4ZWwobyxhLTEtcyksYz0wIT09bFszXSxoPWM/bFsyXSsyNTYqKGxbMV0rMjU2KmxbMF0pOm51bGwsZj17eDpvLHk6cyxjbGllbnRYOmUuY2xpZW50WCxjbGllbnRZOmUuY2xpZW50WSxkYXRhSW5kZXg6dC5tb2RlbC5rZXksY3VydmVOdW1iZXI6aH07aCE9PUYmJihjP3UuaG92ZXIoZik6dS51bmhvdmVyJiZ1LnVuaG92ZXIoZiksRj1oKX19KSxSLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdC5waWNrPzA6MX0pLHcuc3R5bGUoImJhY2tncm91bmQiLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIik7dmFyIEI9dy5zZWxlY3RBbGwoIi4iK2cuY24ucGFyY29vcmRzKS5kYXRhKEQsaCk7Qi5leGl0KCkucmVtb3ZlKCksQi5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZy5jbi5wYXJjb29yZHMsITApLnN0eWxlKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLEIuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdC5tb2RlbC50cmFuc2xhdGVYKyIsIit0Lm1vZGVsLnRyYW5zbGF0ZVkrIikifSk7dmFyIE49Qi5zZWxlY3RBbGwoIi4iK2cuY24ucGFyY29vcmRzQ29udHJvbFZpZXcpLmRhdGEoZixoKTtOLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChnLmNuLnBhcmNvb3Jkc0NvbnRyb2xWaWV3LCEwKSxOLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QubW9kZWwucGFkLmwrIiwiK3QubW9kZWwucGFkLnQrIikifSk7dmFyIGo9Ti5zZWxlY3RBbGwoIi4iK2cuY24ueUF4aXMpLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGltZW5zaW9uc30saCk7ai5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZy5jbi55QXhpcywhMCksTi5lYWNoKGZ1bmN0aW9uKHQpe0woaix0KX0pLFIuZWFjaChmdW5jdGlvbih0KXtpZih0LnZpZXdNb2RlbCl7IXQubGluZUxheWVyfHx1P3QubGluZUxheWVyPW0odGhpcyx0KTp0LmxpbmVMYXllci51cGRhdGUodCksKHQua2V5fHwwPT09dC5rZXkpJiYodC52aWV3TW9kZWxbdC5rZXldPXQubGluZUxheWVyKTt2YXIgZT0hdC5jb250ZXh0fHx1O3QubGluZUxheWVyLnJlbmRlcih0LnZpZXdNb2RlbC5wYW5lbHMsZSl9fSksai5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0LnhTY2FsZSh0LnhJbmRleCkrIiwgMCkifSksai5jYWxsKG4uYmVoYXZpb3IuZHJhZygpLm9yaWdpbihmdW5jdGlvbih0KXtyZXR1cm4gdH0pLm9uKCJkcmFnIixmdW5jdGlvbih0KXt2YXIgZT10LnBhcmVudDtJLmxpbmVQaWNrQWN0aXZlKCExKSx0Lng9TWF0aC5tYXgoLWcub3ZlcmRyYWcsTWF0aC5taW4odC5tb2RlbC53aWR0aCtnLm92ZXJkcmFnLG4uZXZlbnQueCkpLHQuY2FudmFzWD10LngqdC5tb2RlbC5jYW52YXNQaXhlbFJhdGlvLGouc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LngtZS54fSkuZWFjaChmdW5jdGlvbihlLHIpe2UueEluZGV4PXIsZS54PXQ9PT1lP2UueDplLnhTY2FsZShlLnhJbmRleCksZS5jYW52YXNYPWUueCplLm1vZGVsLmNhbnZhc1BpeGVsUmF0aW99KSxMKGosZSksai5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT1NYXRoLmFicyh0LnhJbmRleC1lLnhJbmRleCl9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0LnhTY2FsZSh0LnhJbmRleCkrIiwgMCkifSksbi5zZWxlY3QodGhpcykuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC54KyIsIDApIiksai5lYWNoKGZ1bmN0aW9uKHIsbixhKXthPT09dC5wYXJlbnQua2V5JiYoZS5kaW1lbnNpb25zW25dPXIpfSksZS5jb250ZXh0TGF5ZXImJmUuY29udGV4dExheWVyLnJlbmRlcihlLnBhbmVscywhMSwhTShlKSksZS5mb2N1c0xheWVyLnJlbmRlciYmZS5mb2N1c0xheWVyLnJlbmRlcihlLnBhbmVscyl9KS5vbigiZHJhZ2VuZCIsZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJlbnQ7dC54PXQueFNjYWxlKHQueEluZGV4KSx0LmNhbnZhc1g9dC54KnQubW9kZWwuY2FudmFzUGl4ZWxSYXRpbyxMKGosZSksbi5zZWxlY3QodGhpcykuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdC54KyIsIDApIn0pLGUuY29udGV4dExheWVyJiZlLmNvbnRleHRMYXllci5yZW5kZXIoZS5wYW5lbHMsITEsIU0oZSkpLGUuZm9jdXNMYXllciYmZS5mb2N1c0xheWVyLnJlbmRlcihlLnBhbmVscyksZS5waWNrTGF5ZXImJmUucGlja0xheWVyLnJlbmRlcihlLnBhbmVscywhMCksSS5saW5lUGlja0FjdGl2ZSghMCksdSYmdS5heGVzTW92ZWQmJnUuYXhlc01vdmVkKGUua2V5LGUuZGltZW5zaW9ucy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY3Jvc3NmaWx0ZXJEaW1lbnNpb25JbmRleH0pKX0pKSxqLmV4aXQoKS5yZW1vdmUoKTt2YXIgVj1qLnNlbGVjdEFsbCgiLiIrZy5jbi5heGlzT3ZlcmxheXMpLmRhdGEoZixoKTtWLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChnLmNuLmF4aXNPdmVybGF5cywhMCksVi5zZWxlY3RBbGwoIi4iK2cuY24uYXhpcykucmVtb3ZlKCk7dmFyIFU9Vi5zZWxlY3RBbGwoIi4iK2cuY24uYXhpcykuZGF0YShmLGgpO1UuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKGcuY24uYXhpcywhMCksVS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQubW9kZWwuaGVpZ2h0L3QubW9kZWwudGlja0Rpc3RhbmNlLHI9dC5kb21haW5TY2FsZSxhPXIuZG9tYWluKCk7bi5zZWxlY3QodGhpcykuY2FsbChuLnN2Zy5heGlzKCkub3JpZW50KCJsZWZ0IikudGlja1NpemUoNCkub3V0ZXJUaWNrU2l6ZSgyKS50aWNrcyhlLHQudGlja0Zvcm1hdCkudGlja1ZhbHVlcyh0Lm9yZGluYWw/YTpudWxsKS50aWNrRm9ybWF0KGZ1bmN0aW9uKGUpe3JldHVybiBkLmlzT3JkaW5hbCh0KT9lOkModC5tb2RlbC5kaW1lbnNpb25zW3QudmlzaWJsZUluZGV4XSxlKX0pLnNjYWxlKHIpKSxsLmZvbnQoVS5zZWxlY3RBbGwoInRleHQiKSx0Lm1vZGVsLnRpY2tGb250KX0pLFUuc2VsZWN0QWxsKCIuZG9tYWluLCAudGljaz5saW5lIikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwuMjUpLmF0dHIoInN0cm9rZS13aWR0aCIsIjFweCIpLFUuc2VsZWN0QWxsKCJ0ZXh0Iikuc3R5bGUoInRleHQtc2hhZG93IiwiMXB4IDFweCAxcHggI2ZmZiwgLTFweCAtMXB4IDFweCAjZmZmLCAxcHggLTFweCAxcHggI2ZmZiwgLTFweCAxcHggMXB4ICNmZmYiKS5zdHlsZSgiY3Vyc29yIiwiZGVmYXVsdCIpLnN0eWxlKCJ1c2VyLXNlbGVjdCIsIm5vbmUiKTt2YXIgcT1WLnNlbGVjdEFsbCgiLiIrZy5jbi5heGlzSGVhZGluZykuZGF0YShmLGgpO3EuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKGcuY24uYXhpc0hlYWRpbmcsITApO3ZhciBIPXEuc2VsZWN0QWxsKCIuIitnLmNuLmF4aXNUaXRsZSkuZGF0YShmLGgpO0guZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKGcuY24uYXhpc1RpdGxlLCEwKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnN0eWxlKCJjdXJzb3IiLCJldy1yZXNpemUiKS5zdHlsZSgidXNlci1zZWxlY3QiLCJub25lIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYXV0byIpLEgudGV4dChmdW5jdGlvbih0KXtyZXR1cm4gdC5sYWJlbH0pLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9bi5zZWxlY3QodGhpcyk7bC5mb250KHIsZS5tb2RlbC5sYWJlbEZvbnQpLHMuY29udmVydFRvVHNwYW5zKHIsdCl9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3ZhciBlPUUodC5tb2RlbC5sYWJlbEFuZ2xlLHQubW9kZWwubGFiZWxTaWRlKSxyPWcuYXhpc1RpdGxlT2Zmc2V0O3JldHVybihlLmRpcj4wPyIiOiJ0cmFuc2xhdGUoMCwiKygyKnIrdC5tb2RlbC5oZWlnaHQpKyIpIikrInJvdGF0ZSgiK2UuZGVncmVlcysiKXRyYW5zbGF0ZSgiKy1yKmUuZHgrIiwiKy1yKmUuZHkrIikifSkuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0aW9uKHQpe3ZhciBlPUUodC5tb2RlbC5sYWJlbEFuZ2xlLHQubW9kZWwubGFiZWxTaWRlKTtyZXR1cm4gMipNYXRoLmFicyhlLmR4KT5NYXRoLmFicyhlLmR5KT9lLmRpciplLmR4PDA/InN0YXJ0IjoiZW5kIjoibWlkZGxlIn0pO3ZhciBHPVYuc2VsZWN0QWxsKCIuIitnLmNuLmF4aXNFeHRlbnQpLmRhdGEoZixoKTtHLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChnLmNuLmF4aXNFeHRlbnQsITApO3ZhciBZPUcuc2VsZWN0QWxsKCIuIitnLmNuLmF4aXNFeHRlbnRUb3ApLmRhdGEoZixoKTtZLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChnLmNuLmF4aXNFeHRlbnRUb3AsITApLFkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIistZy5heGlzRXh0ZW50T2Zmc2V0KyIpIik7dmFyIFc9WS5zZWxlY3RBbGwoIi4iK2cuY24uYXhpc0V4dGVudFRvcFRleHQpLmRhdGEoZixoKTtXLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChnLmNuLmF4aXNFeHRlbnRUb3BUZXh0LCEwKS5jYWxsKFMpLFcudGV4dChmdW5jdGlvbih0KXtyZXR1cm4gUCh0LCEwKX0pLmVhY2goZnVuY3Rpb24odCl7bC5mb250KG4uc2VsZWN0KHRoaXMpLHQubW9kZWwucmFuZ2VGb250KX0pO3ZhciBYPUcuc2VsZWN0QWxsKCIuIitnLmNuLmF4aXNFeHRlbnRCb3R0b20pLmRhdGEoZixoKTtYLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChnLmNuLmF4aXNFeHRlbnRCb3R0b20sITApLFguYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodC5tb2RlbC5oZWlnaHQrZy5heGlzRXh0ZW50T2Zmc2V0KSsiKSJ9KTt2YXIgWj1YLnNlbGVjdEFsbCgiLiIrZy5jbi5heGlzRXh0ZW50Qm90dG9tVGV4dCkuZGF0YShmLGgpO1ouZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKGcuY24uYXhpc0V4dGVudEJvdHRvbVRleHQsITApLmF0dHIoImR5IiwiMC43NWVtIikuY2FsbChTKSxaLnRleHQoZnVuY3Rpb24odCl7cmV0dXJuIFAodCwhMSl9KS5lYWNoKGZ1bmN0aW9uKHQpe2wuZm9udChuLnNlbGVjdCh0aGlzKSx0Lm1vZGVsLnJhbmdlRm9udCl9KSx2LmVuc3VyZUF4aXNCcnVzaChWKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2d1cCI6NzE1LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi9heGlzYnJ1c2giOjEwODMsIi4vY29uc3RhbnRzIjoxMDg2LCIuL2hlbHBlcnMiOjEwODgsIi4vbGluZXMiOjEwOTAsImNvbG9yLXJnYmEiOjEyNCxkMzoxNjV9XSwxMDkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vcGFyY29vcmRzIiksYT10KCIuLi8uLi9saWIvcHJlcGFyZV9yZWdsIiksaT10KCIuL2hlbHBlcnMiKS5pc1Zpc2libGU7ZnVuY3Rpb24gbyh0LGUscil7dmFyIG49ZS5pbmRleE9mKHIpLGE9dC5pbmRleE9mKG4pO3JldHVybi0xPT09YSYmKGErPWUubGVuZ3RoKSxhfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQ7aWYoYSh0KSl7dmFyIHM9e30sbD17fSxjPXt9LHU9e30saD1yLl9zaXplO2UuZm9yRWFjaChmdW5jdGlvbihlLHIpe3ZhciBuPWVbMF0udHJhY2U7Y1tyXT1uLmluZGV4O3ZhciBhPXVbcl09bi5fZnVsbElucHV0LmluZGV4O3Nbcl09dC5kYXRhW2FdLmRpbWVuc2lvbnMsbFtyXT10LmRhdGFbYV0uZGltZW5zaW9ucy5zbGljZSgpfSk7bih0LGUse3dpZHRoOmgudyxoZWlnaHQ6aC5oLG1hcmdpbjp7dDpoLnQscjpoLnIsYjpoLmIsbDpoLmx9fSx7ZmlsdGVyQ2hhbmdlZDpmdW5jdGlvbihlLG4sYSl7dmFyIGk9bFtlXVtuXSxvPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKCl9KSxzPSJkaW1lbnNpb25zWyIrbisiXS5jb25zdHJhaW50cmFuZ2UiLGg9ci5fdHJhY2VQcmVHVUlbdC5fZnVsbERhdGFbY1tlXV0uX2Z1bGxJbnB1dC51aWRdO2lmKHZvaWQgMD09PWhbc10pe3ZhciBmPWkuY29uc3RyYWludHJhbmdlO2hbc109Znx8bnVsbH12YXIgcD10Ll9mdWxsRGF0YVtjW2VdXS5kaW1lbnNpb25zW25dO28ubGVuZ3RoPygxPT09by5sZW5ndGgmJihvPW9bMF0pLGkuY29uc3RyYWludHJhbmdlPW8scC5jb25zdHJhaW50cmFuZ2U9by5zbGljZSgpLG89W29dKTooZGVsZXRlIGkuY29uc3RyYWludHJhbmdlLGRlbGV0ZSBwLmNvbnN0cmFpbnRyYW5nZSxvPW51bGwpO3ZhciBkPXt9O2Rbc109byx0LmVtaXQoInBsb3RseV9yZXN0eWxlIixbZCxbdVtlXV1dKX0saG92ZXI6ZnVuY3Rpb24oZSl7dC5lbWl0KCJwbG90bHlfaG92ZXIiLGUpfSx1bmhvdmVyOmZ1bmN0aW9uKGUpe3QuZW1pdCgicGxvdGx5X3VuaG92ZXIiLGUpfSxheGVzTW92ZWQ6ZnVuY3Rpb24oZSxyKXt2YXIgbj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiBvKHQsZSxyKS1vKHQsZSxuKX19KHIsbFtlXS5maWx0ZXIoaSkpO3NbZV0uc29ydChuKSxsW2VdLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4haSh0KX0pLnNvcnQoZnVuY3Rpb24odCl7cmV0dXJuIGxbZV0uaW5kZXhPZih0KX0pLmZvckVhY2goZnVuY3Rpb24odCl7c1tlXS5zcGxpY2Uoc1tlXS5pbmRleE9mKHQpLDEpLHNbZV0uc3BsaWNlKGxbZV0uaW5kZXhPZih0KSwwLHQpfSksdC5lbWl0KCJwbG90bHlfcmVzdHlsZSIsW3tkaW1lbnNpb25zOltzW2VdXX0sW3VbZV1dXSl9fSl9fX0seyIuLi8uLi9saWIvcHJlcGFyZV9yZWdsIjo3MzAsIi4vaGVscGVycyI6MTA4OCwiLi9wYXJjb29yZHMiOjEwOTJ9XSwxMDk0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsaT10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxsPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxjPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHU9aSh7ZWRpdFR5cGU6InBsb3QiLGFycmF5T2s6ITAsY29sb3JFZGl0VHlwZToicGxvdCJ9KTtlLmV4cG9ydHM9e2xhYmVsczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxsYWJlbDA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sZGxhYmVsOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LHZhbHVlczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxtYXJrZXI6e2NvbG9yczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6by5kZWZhdWx0TGluZSxhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSx0ZXh0Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToicGxvdCJ9LGhvdmVydGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6InN0eWxlIn0sc2NhbGVncm91cDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sdGV4dGluZm86e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwicGVyY2VudCJdLGV4dHJhczpbIm5vbmUiXSxlZGl0VHlwZToiY2FsYyJ9LGhvdmVyaW5mbzpjKHt9LG4uaG92ZXJpbmZvLHtmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwicGVyY2VudCIsIm5hbWUiXX0pLGhvdmVydGVtcGxhdGU6cyh7fSx7a2V5czpbImxhYmVsIiwiY29sb3IiLCJ2YWx1ZSIsInBlcmNlbnQiLCJ0ZXh0Il19KSx0ZXh0dGVtcGxhdGU6bCh7ZWRpdFR5cGU6InBsb3QifSx7a2V5czpbImxhYmVsIiwiY29sb3IiLCJ2YWx1ZSIsInBlcmNlbnQiLCJ0ZXh0Il19KSx0ZXh0cG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImluc2lkZSIsIm91dHNpZGUiLCJhdXRvIiwibm9uZSJdLGRmbHQ6ImF1dG8iLGFycmF5T2s6ITAsZWRpdFR5cGU6InBsb3QifSx0ZXh0Zm9udDpjKHt9LHUse30pLGluc2lkZXRleHRvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaG9yaXpvbnRhbCIsInJhZGlhbCIsInRhbmdlbnRpYWwiLCJhdXRvIl0sZGZsdDoiYXV0byIsZWRpdFR5cGU6InBsb3QifSxpbnNpZGV0ZXh0Zm9udDpjKHt9LHUse30pLG91dHNpZGV0ZXh0Zm9udDpjKHt9LHUse30pLGF1dG9tYXJnaW46e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6InBsb3QifSx0aXRsZTp7dGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJwbG90In0sZm9udDpjKHt9LHUse30pLHBvc2l0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AgbGVmdCIsInRvcCBjZW50ZXIiLCJ0b3AgcmlnaHQiLCJtaWRkbGUgY2VudGVyIiwiYm90dG9tIGxlZnQiLCJib3R0b20gY2VudGVyIiwiYm90dG9tIHJpZ2h0Il0sZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LGRvbWFpbjphKHtuYW1lOiJwaWUiLHRyYWNlOiEwLGVkaXRUeXBlOiJjYWxjIn0pLGhvbGU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sc29ydDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LGRpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY2xvY2t3aXNlIiwiY291bnRlcmNsb2Nrd2lzZSJdLGRmbHQ6ImNvdW50ZXJjbG9ja3dpc2UiLGVkaXRUeXBlOiJjYWxjIn0scm90YXRpb246e3ZhbFR5cGU6Im51bWJlciIsbWluOi0zNjAsbWF4OjM2MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxwdWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MCxhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0sX2RlcHJlY2F0ZWQ6e3RpdGxlOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSx0aXRsZWZvbnQ6Yyh7fSx1LHt9KSx0aXRsZXBvc2l0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AgbGVmdCIsInRvcCBjZW50ZXIiLCJ0b3AgcmlnaHQiLCJtaWRkbGUgY2VudGVyIiwiYm90dG9tIGxlZnQiLCJib3R0b20gY2VudGVyIiwiYm90dG9tIHJpZ2h0Il0sZWRpdFR5cGU6ImNhbGMifX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6NTkxLCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDF9XSwxMDk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIik7ci5uYW1lPSJwaWUiLHIucGxvdD1mdW5jdGlvbih0LGUsYSxpKXtuLnBsb3RCYXNlUGxvdChyLm5hbWUsdCxlLGEsaSl9LHIuY2xlYW49ZnVuY3Rpb24odCxlLGEsaSl7bi5jbGVhbkJhc2VQbG90KHIubmFtZSx0LGUsYSxpKX19LHsiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNn1dLDEwOTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoInRpbnljb2xvcjIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXt9O2Z1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuISFlJiYoISEoZT1hKGUpKS5pc1ZhbGlkKCkmJihlPWkuYWRkT3BhY2l0eShlLGUuZ2V0QWxwaGEoKSksdFtyXXx8KHRbcl09ZSksZSkpfX1mdW5jdGlvbiBsKHQsZSl7dmFyIHIsbj1KU09OLnN0cmluZ2lmeSh0KSxpPWVbbl07aWYoIWkpe2ZvcihpPXQuc2xpY2UoKSxyPTA7cjx0Lmxlbmd0aDtyKyspaS5wdXNoKGEodFtyXSkubGlnaHRlbigyMCkudG9IZXhTdHJpbmcoKSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylpLnB1c2goYSh0W3JdKS5kYXJrZW4oMjApLnRvSGV4U3RyaW5nKCkpO2Vbbl09aX1yZXR1cm4gaX1lLmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXt2YXIgcixhLGk9W10sbz10Ll9mdWxsTGF5b3V0LGw9by5oaWRkZW5sYWJlbHN8fFtdLGM9ZS5sYWJlbHMsdT1lLm1hcmtlci5jb2xvcnN8fFtdLGg9ZS52YWx1ZXMsZj1lLl9sZW5ndGgscD1lLl9oYXNWYWx1ZXMmJmY7aWYoZS5kbGFiZWwpZm9yKGM9bmV3IEFycmF5KGYpLHI9MDtyPGY7cisrKWNbcl09U3RyaW5nKGUubGFiZWwwK3IqZS5kbGFiZWwpO3ZhciBkPXt9LGc9cyhvWyJfIitlLnR5cGUrImNvbG9ybWFwIl0pLHY9MCxtPSExO2ZvcihyPTA7cjxmO3IrKyl7dmFyIHkseCxiO2lmKHApe2lmKHk9aFtyXSwhbih5KSljb250aW51ZTtpZigoeT0reSk8MCljb250aW51ZX1lbHNlIHk9MTt2b2lkIDAhPT0oeD1jW3JdKSYmIiIhPT14fHwoeD1yKTt2YXIgXz1kW3g9U3RyaW5nKHgpXTt2b2lkIDA9PT1fPyhkW3hdPWkubGVuZ3RoLChiPS0xIT09bC5pbmRleE9mKHgpKXx8KHYrPXkpLGkucHVzaCh7djp5LGxhYmVsOngsY29sb3I6Zyh1W3JdLHgpLGk6cixwdHM6W3JdLGhpZGRlbjpifSkpOihtPSEwLChhPWlbX10pLnYrPXksYS5wdHMucHVzaChyKSxhLmhpZGRlbnx8KHYrPXkpLCExPT09YS5jb2xvciYmdVtyXSYmKGEuY29sb3I9Zyh1W3JdLHgpKSl9cmV0dXJuKCJmdW5uZWxhcmVhIj09PWUudHlwZT9tOmUuc29ydCkmJmkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLnYtdC52fSksaVswXSYmKGlbMF0udlRvdGFsPXYpLGl9LGNyb3NzVHJhY2VDYWxjOmZ1bmN0aW9uKHQsZSl7dmFyIHI9KGV8fHt9KS50eXBlO3J8fChyPSJwaWUiKTt2YXIgbj10Ll9mdWxsTGF5b3V0LGE9dC5jYWxjZGF0YSxpPW5bcisiY29sb3J3YXkiXSxzPW5bIl8iK3IrImNvbG9ybWFwIl07blsiZXh0ZW5kIityKyJjb2xvcnMiXSYmKGk9bChpLG8pKTtmb3IodmFyIGM9MCx1PTA7dTxhLmxlbmd0aDt1Kyspe3ZhciBoPWFbdV07aWYoaFswXS50cmFjZS50eXBlPT09cilmb3IodmFyIGY9MDtmPGgubGVuZ3RoO2YrKyl7dmFyIHA9aFtmXTshMT09PXAuY29sb3ImJihzW3AubGFiZWxdP3AuY29sb3I9c1twLmxhYmVsXTooc1twLmxhYmVsXT1wLmNvbG9yPWlbYyVpLmxlbmd0aF0sYysrKSl9fX0sbWFrZVB1bGxDb2xvckZuOnMsZ2VuZXJhdGVFeHRlbmRlZENvbG9yczpsfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsImZhc3QtaXNudW1lcmljIjoyMjgsdGlueWNvbG9yMjo1MzZ9XSwxMDk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4vYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuZGVmYXVsdHMscz10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVUZXh0O2Z1bmN0aW9uIGwodCxlKXt2YXIgcj1BcnJheS5pc0FycmF5KHQpLGk9YS5pc0FycmF5T3JUeXBlZEFycmF5KGUpLG89TWF0aC5taW4ocj90Lmxlbmd0aDoxLzAsaT9lLmxlbmd0aDoxLzApO2lmKGlzRmluaXRlKG8pfHwobz0wKSxvJiZpKXtmb3IodmFyIHMsbD0wO2w8bztsKyspe3ZhciBjPWVbbF07aWYobihjKSYmYz4wKXtzPSEwO2JyZWFrfX1zfHwobz0wKX1yZXR1cm57aGFzTGFiZWxzOnIsaGFzVmFsdWVzOmksbGVuOm99fWUuZXhwb3J0cz17aGFuZGxlTGFiZWxzQW5kVmFsdWVzOmwsc3VwcGx5RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIsbil7ZnVuY3Rpb24gYyhyLG4pe3JldHVybiBhLmNvZXJjZSh0LGUsaSxyLG4pfXZhciB1PWwoYygibGFiZWxzIiksYygidmFsdWVzIikpLGg9dS5sZW47aWYoZS5faGFzTGFiZWxzPXUuaGFzTGFiZWxzLGUuX2hhc1ZhbHVlcz11Lmhhc1ZhbHVlcywhZS5faGFzTGFiZWxzJiZlLl9oYXNWYWx1ZXMmJihjKCJsYWJlbDAiKSxjKCJkbGFiZWwiKSksaCl7ZS5fbGVuZ3RoPWgsYygibWFya2VyLmxpbmUud2lkdGgiKSYmYygibWFya2VyLmxpbmUuY29sb3IiKSxjKCJtYXJrZXIuY29sb3JzIiksYygic2NhbGVncm91cCIpO3ZhciBmLHA9YygidGV4dCIpLGQ9YygidGV4dHRlbXBsYXRlIik7aWYoZHx8KGY9YygidGV4dGluZm8iLEFycmF5LmlzQXJyYXkocCk/InRleHQrcGVyY2VudCI6InBlcmNlbnQiKSksYygiaG92ZXJ0ZXh0IiksYygiaG92ZXJ0ZW1wbGF0ZSIpLGR8fGYmJiJub25lIiE9PWYpe3ZhciBnPWMoInRleHRwb3NpdGlvbiIpO3ModCxlLG4sYyxnLHttb2R1bGVIYXNTZWxlY3RlZDohMSxtb2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVsZUhhc0NvbnN0cmFpbjohMSxtb2R1bGVIYXNDbGlwb25heGlzOiExLG1vZHVsZUhhc1RleHRhbmdsZTohMSxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITF9KSwoQXJyYXkuaXNBcnJheShnKXx8ImF1dG8iPT09Z3x8Im91dHNpZGUiPT09ZykmJmMoImF1dG9tYXJnaW4iKSwoImluc2lkZSI9PT1nfHwiYXV0byI9PT1nfHxBcnJheS5pc0FycmF5KGcpKSYmYygiaW5zaWRldGV4dG9yaWVudGF0aW9uIil9byhlLG4sYyk7dmFyIHY9YygiaG9sZSIpO2lmKGMoInRpdGxlLnRleHQiKSl7dmFyIG09YygidGl0bGUucG9zaXRpb24iLHY/Im1pZGRsZSBjZW50ZXIiOiJ0b3AgY2VudGVyIik7dnx8Im1pZGRsZSBjZW50ZXIiIT09bXx8KGUudGl0bGUucG9zaXRpb249InRvcCBjZW50ZXIiKSxhLmNvZXJjZUZvbnQoYywidGl0bGUuZm9udCIsbi5mb250KX1jKCJzb3J0IiksYygiZGlyZWN0aW9uIiksYygicm90YXRpb24iKSxjKCJwdWxsIil9ZWxzZSBlLnZpc2libGU9ITF9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uL2Jhci9kZWZhdWx0cyI6ODYwLCIuL2F0dHJpYnV0ZXMiOjEwOTQsImZhc3QtaXNudW1lcmljIjoyMjh9XSwxMDk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyIpLmFwcGVuZEFycmF5TXVsdGlQb2ludFZhbHVlcztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj17Y3VydmVOdW1iZXI6ZS5pbmRleCxwb2ludE51bWJlcnM6dC5wdHMsZGF0YTplLl9pbnB1dCxmdWxsRGF0YTplLGxhYmVsOnQubGFiZWwsY29sb3I6dC5jb2xvcix2YWx1ZTp0LnYscGVyY2VudDp0LnBlcmNlbnQsdGV4dDp0LnRleHQsdjp0LnZ9O3JldHVybiAxPT09dC5wdHMubGVuZ3RoJiYoci5wb2ludE51bWJlcj1yLmk9dC5wdHNbMF0pLG4ocixlLHQucHRzKSwiZnVubmVsYXJlYSI9PT1lLnR5cGUmJihkZWxldGUgci52LGRlbGV0ZSByLmkpLHJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyI6NjI3fV0sMTA5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtyLmZvcm1hdFBpZVBlcmNlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0oMTAwKnQpLnRvUHJlY2lzaW9uKDMpO3JldHVybi0xIT09ci5sYXN0SW5kZXhPZigiLiIpJiYocj1yLnJlcGxhY2UoL1suXT8wKyQvLCIiKSksbi5udW1TZXBhcmF0ZShyLGUpKyIlIn0sci5mb3JtYXRQaWVWYWx1ZT1mdW5jdGlvbih0LGUpe3ZhciByPXQudG9QcmVjaXNpb24oMTApO3JldHVybi0xIT09ci5sYXN0SW5kZXhPZigiLiIpJiYocj1yLnJlcGxhY2UoL1suXT8wKyQvLCIiKSksbi5udW1TZXBhcmF0ZShyLGUpfSxyLmdldEZpcnN0RmlsbGVkPWZ1bmN0aW9uKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49dFtlW3JdXTtpZihufHwwPT09bnx8IiI9PT1uKXJldHVybiBufX0sci5jYXN0T3B0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ci5nZXRGaXJzdEZpbGxlZCh0LGUpOnR8fHZvaWQgMH19LHsiLi4vLi4vbGliIjo3MTd9XSwxMTAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxjYWxjOnQoIi4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi9jYWxjIikuY3Jvc3NUcmFjZUNhbGMscGxvdDp0KCIuL3Bsb3QiKS5wbG90LHN0eWxlOnQoIi4vc3R5bGUiKSxzdHlsZU9uZTp0KCIuL3N0eWxlX29uZSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJwaWUiLGJhc2VQbG90TW9kdWxlOnQoIi4vYmFzZV9wbG90IiksY2F0ZWdvcmllczpbInBpZS1saWtlIiwicGllIiwic2hvd0xlZ2VuZCJdLG1ldGE6e319fSx7Ii4vYXR0cmlidXRlcyI6MTA5NCwiLi9iYXNlX3Bsb3QiOjEwOTUsIi4vY2FsYyI6MTA5NiwiLi9kZWZhdWx0cyI6MTA5NywiLi9sYXlvdXRfYXR0cmlidXRlcyI6MTEwMSwiLi9sYXlvdXRfZGVmYXVsdHMiOjExMDIsIi4vcGxvdCI6MTEwMywiLi9zdHlsZSI6MTEwNCwiLi9zdHlsZV9vbmUiOjExMDV9XSwxMTAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17aGlkZGVubGFiZWxzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHBpZWNvbG9yd2F5Ont2YWxUeXBlOiJjb2xvcmxpc3QiLGVkaXRUeXBlOiJjYWxjIn0sZXh0ZW5kcGllY29sb3JzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn19fSx7fV0sMTEwMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9cigiaGlkZGVubGFiZWxzIikscigicGllY29sb3J3YXkiLGUuY29sb3J3YXkpLHIoImV4dGVuZHBpZWNvbG9ycyIpfX0seyIuLi8uLi9saWIiOjcxNywiLi9sYXlvdXRfYXR0cmlidXRlcyI6MTEwMX1dLDExMDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Z4Iiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIikscz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxsPXQoIi4uLy4uL2xpYiIpLGM9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksdT10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IiksaD11LnJlY29yZE1pblRleHRTaXplLGY9dS5jbGVhck1pblRleHRTaXplLHA9dCgiLi9oZWxwZXJzIiksZD10KCIuL2V2ZW50X2RhdGEiKSxnPXQoIi4uLy4uL2xpYiIpLmlzVmFsaWRUZXh0VmFsdWU7ZnVuY3Rpb24gdih0LGUscil7dmFyIGE9clswXSxvPWEudHJhY2Uscz1hLmN4LGM9YS5jeTsiX2hhc0hvdmVyTGFiZWwiaW4gb3x8KG8uX2hhc0hvdmVyTGFiZWw9ITEpLCJfaGFzSG92ZXJFdmVudCJpbiBvfHwoby5faGFzSG92ZXJFdmVudD0hMSksdC5vbigibW91c2VvdmVyIixmdW5jdGlvbih0KXt2YXIgcj1lLl9mdWxsTGF5b3V0LHU9ZS5fZnVsbERhdGFbby5pbmRleF07aWYoIWUuX2RyYWdnaW5nJiYhMSE9PXIuaG92ZXJtb2RlKXt2YXIgaD11LmhvdmVyaW5mbztpZihBcnJheS5pc0FycmF5KGgpJiYoaD1pLmNhc3RIb3ZlcmluZm8oe2hvdmVyaW5mbzpbcC5jYXN0T3B0aW9uKGgsdC5wdHMpXSxfbW9kdWxlOm8uX21vZHVsZX0sciwwKSksImFsbCI9PT1oJiYoaD0ibGFiZWwrdGV4dCt2YWx1ZStwZXJjZW50K25hbWUiKSx1LmhvdmVydGVtcGxhdGV8fCJub25lIiE9PWgmJiJza2lwIiE9PWgmJmgpe3ZhciBmPXQuckluc2NyaWJlZHx8MCxnPXMrdC5weG1pZFswXSooMS1mKSx2PWMrdC5weG1pZFsxXSooMS1mKSxtPXIuc2VwYXJhdG9ycyx5PVtdO2lmKGgmJi0xIT09aC5pbmRleE9mKCJsYWJlbCIpJiZ5LnB1c2godC5sYWJlbCksdC50ZXh0PXAuY2FzdE9wdGlvbih1LmhvdmVydGV4dHx8dS50ZXh0LHQucHRzKSxoJiYtMSE9PWguaW5kZXhPZigidGV4dCIpKXt2YXIgeD10LnRleHQ7bC5pc1ZhbGlkVGV4dFZhbHVlKHgpJiZ5LnB1c2goeCl9dC52YWx1ZT10LnYsdC52YWx1ZUxhYmVsPXAuZm9ybWF0UGllVmFsdWUodC52LG0pLGgmJi0xIT09aC5pbmRleE9mKCJ2YWx1ZSIpJiZ5LnB1c2godC52YWx1ZUxhYmVsKSx0LnBlcmNlbnQ9dC52L2EudlRvdGFsLHQucGVyY2VudExhYmVsPXAuZm9ybWF0UGllUGVyY2VudCh0LnBlcmNlbnQsbSksaCYmLTEhPT1oLmluZGV4T2YoInBlcmNlbnQiKSYmeS5wdXNoKHQucGVyY2VudExhYmVsKTt2YXIgYj11LmhvdmVybGFiZWwsXz1iLmZvbnQ7aS5sb25lSG92ZXIoe3RyYWNlOm8seDA6Zy1mKmEucix4MTpnK2YqYS5yLHk6dix0ZXh0Onkuam9pbigiPGJyPiIpLG5hbWU6dS5ob3ZlcnRlbXBsYXRlfHwtMSE9PWguaW5kZXhPZigibmFtZSIpP3UubmFtZTp2b2lkIDAsaWRlYWxBbGlnbjp0LnB4bWlkWzBdPDA/ImxlZnQiOiJyaWdodCIsY29sb3I6cC5jYXN0T3B0aW9uKGIuYmdjb2xvcix0LnB0cyl8fHQuY29sb3IsYm9yZGVyQ29sb3I6cC5jYXN0T3B0aW9uKGIuYm9yZGVyY29sb3IsdC5wdHMpLGZvbnRGYW1pbHk6cC5jYXN0T3B0aW9uKF8uZmFtaWx5LHQucHRzKSxmb250U2l6ZTpwLmNhc3RPcHRpb24oXy5zaXplLHQucHRzKSxmb250Q29sb3I6cC5jYXN0T3B0aW9uKF8uY29sb3IsdC5wdHMpLG5hbWVMZW5ndGg6cC5jYXN0T3B0aW9uKGIubmFtZWxlbmd0aCx0LnB0cyksdGV4dEFsaWduOnAuY2FzdE9wdGlvbihiLmFsaWduLHQucHRzKSxob3ZlcnRlbXBsYXRlOnAuY2FzdE9wdGlvbih1LmhvdmVydGVtcGxhdGUsdC5wdHMpLGhvdmVydGVtcGxhdGVMYWJlbHM6dCxldmVudERhdGE6W2QodCx1KV19LHtjb250YWluZXI6ci5faG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWluZXI6ci5fcGFwZXIubm9kZSgpLGdkOmV9KSxvLl9oYXNIb3ZlckxhYmVsPSEwfW8uX2hhc0hvdmVyRXZlbnQ9ITAsZS5lbWl0KCJwbG90bHlfaG92ZXIiLHtwb2ludHM6W2QodCx1KV0sZXZlbnQ6bi5ldmVudH0pfX0pLHQub24oIm1vdXNlb3V0IixmdW5jdGlvbih0KXt2YXIgcj1lLl9mdWxsTGF5b3V0LGE9ZS5fZnVsbERhdGFbby5pbmRleF0scz1uLnNlbGVjdCh0aGlzKS5kYXR1bSgpO28uX2hhc0hvdmVyRXZlbnQmJih0Lm9yaWdpbmFsRXZlbnQ9bi5ldmVudCxlLmVtaXQoInBsb3RseV91bmhvdmVyIix7cG9pbnRzOltkKHMsYSldLGV2ZW50Om4uZXZlbnR9KSxvLl9oYXNIb3ZlckV2ZW50PSExKSxvLl9oYXNIb3ZlckxhYmVsJiYoaS5sb25lVW5ob3ZlcihyLl9ob3ZlcmxheWVyLm5vZGUoKSksby5faGFzSG92ZXJMYWJlbD0hMSl9KSx0Lm9uKCJjbGljayIsZnVuY3Rpb24odCl7dmFyIHI9ZS5fZnVsbExheW91dCxhPWUuX2Z1bGxEYXRhW28uaW5kZXhdO2UuX2RyYWdnaW5nfHwhMT09PXIuaG92ZXJtb2RlfHwoZS5faG92ZXJkYXRhPVtkKHQsYSldLGkuY2xpY2soZSxuLmV2ZW50KSl9KX1mdW5jdGlvbiBtKHQsZSxyKXt2YXIgbj1wLmNhc3RPcHRpb24odC5pbnNpZGV0ZXh0Zm9udC5jb2xvcixlLnB0cyk7IW4mJnQuX2lucHV0LnRleHRmb250JiYobj1wLmNhc3RPcHRpb24odC5faW5wdXQudGV4dGZvbnQuY29sb3IsZS5wdHMpKTt2YXIgYT1wLmNhc3RPcHRpb24odC5pbnNpZGV0ZXh0Zm9udC5mYW1pbHksZS5wdHMpfHxwLmNhc3RPcHRpb24odC50ZXh0Zm9udC5mYW1pbHksZS5wdHMpfHxyLmZhbWlseSxpPXAuY2FzdE9wdGlvbih0Lmluc2lkZXRleHRmb250LnNpemUsZS5wdHMpfHxwLmNhc3RPcHRpb24odC50ZXh0Zm9udC5zaXplLGUucHRzKXx8ci5zaXplO3JldHVybntjb2xvcjpufHxvLmNvbnRyYXN0KGUuY29sb3IpLGZhbWlseTphLHNpemU6aX19ZnVuY3Rpb24geSh0LGUpe2Zvcih2YXIgcixuLGE9MDthPHQubGVuZ3RoO2ErKylpZigobj0ocj10W2FdWzBdKS50cmFjZSkudGl0bGUudGV4dCl7dmFyIGk9bi50aXRsZS50ZXh0O24uX21ldGEmJihpPWwudGVtcGxhdGVTdHJpbmcoaSxuLl9tZXRhKSk7dmFyIG89cy50ZXN0ZXIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZGF0YS1ub3RleCIsMSkudGV4dChpKS5jYWxsKHMuZm9udCxuLnRpdGxlLmZvbnQpLmNhbGwoYy5jb252ZXJ0VG9Uc3BhbnMsZSksdT1zLmJCb3goby5ub2RlKCksITApO3IudGl0bGVCb3g9e3dpZHRoOnUud2lkdGgsaGVpZ2h0OnUuaGVpZ2h0fSxvLnJlbW92ZSgpfX1mdW5jdGlvbiB4KHQsZSxyKXt2YXIgbixhPU1hdGguc3FydCh0LndpZHRoKnQud2lkdGgrdC5oZWlnaHQqdC5oZWlnaHQpLGk9ZS5oYWxmYW5nbGUsbz1lLm1pZGFuZ2xlLHM9ZS5yaW5nLGw9ZS5ySW5zY3JpYmVkLGM9ci5yfHxlLnJweDEsdT1yLnRyYWNlLmluc2lkZXRleHRvcmllbnRhdGlvbixoPSJob3Jpem9udGFsIj09PXUsZj0idGFuZ2VudGlhbCI9PT11LHA9InJhZGlhbCI9PT11LGQ9ImF1dG8iPT09dSxnPTE9PT1zJiZNYXRoLmFicyhlLnN0YXJ0YW5nbGUtZS5zdG9wYW5nbGUpPT09MipNYXRoLlBJLHY9W107aWYoIWQpe3ZhciBtLHk9ZnVuY3Rpb24ocixhKXtpZihmdW5jdGlvbih0LGUpe3ZhciByPXQuc3RhcnRhbmdsZSxuPXQuc3RvcGFuZ2xlO3JldHVybiByPmUmJmU+bnx8cjxlJiZlPG59KGUscikpe3ZhciBpPU1hdGguYWJzKHItZS5zdGFydGFuZ2xlKSxvPU1hdGguYWJzKHItZS5zdG9wYW5nbGUpLGw9aTxvP2k6bzsobj0idGFuIj09PWE/Xyh0LGMscyxsLDApOmIodCxjLHMsbCxNYXRoLlBJLzIpKS50ZXh0UG9zQW5nbGU9cix2LnB1c2gobil9fTtpZihofHxmKXtmb3IobT00O20+PS00O20tPTIpeShNYXRoLlBJKm0sInRhbiIpO2ZvcihtPTQ7bT49LTQ7bS09Mil5KE1hdGguUEkqKG0rMSksInRhbiIpfWlmKGh8fHApe2ZvcihtPTQ7bT49LTQ7bS09Mil5KE1hdGguUEkqKG0rMS41KSwicmFkIik7Zm9yKG09NDttPj0tNDttLT0yKXkoTWF0aC5QSSoobSsuNSksInJhZCIpfX1pZihnfHxkfHxoKXtpZigobj17c2NhbGU6bCpjKjIvYSxyQ2VudGVyOjEtbCxyb3RhdGU6MH0pLnRleHRQb3NBbmdsZT0oZS5zdGFydGFuZ2xlK2Uuc3RvcGFuZ2xlKS8yLG4uc2NhbGU+PTEpcmV0dXJuIG47di5wdXNoKG4pfShkfHxwKSYmKChuPWIodCxjLHMsaSxvKSkudGV4dFBvc0FuZ2xlPShlLnN0YXJ0YW5nbGUrZS5zdG9wYW5nbGUpLzIsdi5wdXNoKG4pKSwoZHx8ZikmJigobj1fKHQsYyxzLGksbykpLnRleHRQb3NBbmdsZT0oZS5zdGFydGFuZ2xlK2Uuc3RvcGFuZ2xlKS8yLHYucHVzaChuKSk7Zm9yKHZhciB4PTAsdz0wLGs9MDtrPHYubGVuZ3RoO2srKyl7dmFyIFQ9dltrXS5zY2FsZTtpZih3PFQmJih3PVQseD1rKSwhZCYmdz49MSlicmVha31yZXR1cm4gdlt4XX1mdW5jdGlvbiBiKHQsZSxyLG4sYSl7dmFyIGk9dC53aWR0aC90LmhlaWdodCxvPVQoaSxuLGUscik7cmV0dXJue3NjYWxlOjIqby90LmhlaWdodCxyQ2VudGVyOncoaSxvL2UpLHJvdGF0ZTprKGEpfX1mdW5jdGlvbiBfKHQsZSxyLG4sYSl7dmFyIGk9dC5oZWlnaHQvdC53aWR0aCxvPVQoaSxuLGUscik7cmV0dXJue3NjYWxlOjIqby90LndpZHRoLHJDZW50ZXI6dyhpLG8vZSkscm90YXRlOmsoYStNYXRoLlBJLzIpfX1mdW5jdGlvbiB3KHQsZSl7cmV0dXJuIE1hdGguY29zKGUpLXQqZX1mdW5jdGlvbiBrKHQpe3JldHVybigxODAvTWF0aC5QSSp0KzcyMCklMTgwLTkwfWZ1bmN0aW9uIFQodCxlLHIsbil7dmFyIGE9dCsxLygyKk1hdGgudGFuKGUpKTtyZXR1cm4gcipNYXRoLm1pbigxLyhNYXRoLnNxcnQoYSphKy41KSthKSxuLyhNYXRoLnNxcnQodCp0K24vMikrdCkpfWZ1bmN0aW9uIE0odCxlKXtyZXR1cm4gdC52IT09ZS52VG90YWx8fGUudHJhY2UuaG9sZT9NYXRoLm1pbigxLygxKzEvTWF0aC5zaW4odC5oYWxmYW5nbGUpKSx0LnJpbmcvMik6MX1mdW5jdGlvbiBBKHQsZSl7dmFyIHI9ZS5weG1pZFswXSxuPWUucHhtaWRbMV0sYT10LndpZHRoLzIsaT10LmhlaWdodC8yO3JldHVybiByPDAmJihhKj0tMSksbjwwJiYoaSo9LTEpLHtzY2FsZToxLHJDZW50ZXI6MSxyb3RhdGU6MCx4OmErTWF0aC5hYnMoaSkqKGE+MD8xOi0xKS8yLHk6aS8oMStyKnIvKG4qbikpLG91dHNpZGU6ITB9fWZ1bmN0aW9uIFModCxlKXt2YXIgcixuLGEsaT10LnRyYWNlLG89e3g6dC5jeCx5OnQuY3l9LHM9e3R4OjAsdHk6MH07cy50eSs9aS50aXRsZS5mb250LnNpemUsYT1MKGkpLC0xIT09aS50aXRsZS5wb3NpdGlvbi5pbmRleE9mKCJ0b3AiKT8oby55LT0oMSthKSp0LnIscy50eS09dC50aXRsZUJveC5oZWlnaHQpOi0xIT09aS50aXRsZS5wb3NpdGlvbi5pbmRleE9mKCJib3R0b20iKSYmKG8ueSs9KDErYSkqdC5yKTt2YXIgbCxjLHU9KGw9dC5yLGM9dC50cmFjZS5hc3BlY3RyYXRpbyxsLyh2b2lkIDA9PT1jPzE6YykpLGg9ZS53KihpLmRvbWFpbi54WzFdLWkuZG9tYWluLnhbMF0pLzI7cmV0dXJuLTEhPT1pLnRpdGxlLnBvc2l0aW9uLmluZGV4T2YoImxlZnQiKT8oaCs9dSxvLngtPSgxK2EpKnUscy50eCs9dC50aXRsZUJveC53aWR0aC8yKTotMSE9PWkudGl0bGUucG9zaXRpb24uaW5kZXhPZigiY2VudGVyIik/aCo9MjotMSE9PWkudGl0bGUucG9zaXRpb24uaW5kZXhPZigicmlnaHQiKSYmKGgrPXUsby54Kz0oMSthKSp1LHMudHgtPXQudGl0bGVCb3gud2lkdGgvMikscj1oL3QudGl0bGVCb3gud2lkdGgsbj1FKHQsZSkvdC50aXRsZUJveC5oZWlnaHQse3g6by54LHk6by55LHNjYWxlOk1hdGgubWluKHIsbiksdHg6cy50eCx0eTpzLnR5fX1mdW5jdGlvbiBFKHQsZSl7dmFyIHI9dC50cmFjZSxuPWUuaCooci5kb21haW4ueVsxXS1yLmRvbWFpbi55WzBdKTtyZXR1cm4gTWF0aC5taW4odC50aXRsZUJveC5oZWlnaHQsbi8yKX1mdW5jdGlvbiBMKHQpe3ZhciBlLHI9dC5wdWxsO2lmKCFyKXJldHVybiAwO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHI9MCxlPTA7ZTx0LnB1bGwubGVuZ3RoO2UrKyl0LnB1bGxbZV0+ciYmKHI9dC5wdWxsW2VdKTtyZXR1cm4gcn1mdW5jdGlvbiBDKHQsZSl7Zm9yKHZhciByPVtdLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGE9dFtuXVswXSxpPWEudHJhY2Usbz1pLmRvbWFpbixzPWUudyooby54WzFdLW8ueFswXSksbD1lLmgqKG8ueVsxXS1vLnlbMF0pO2kudGl0bGUudGV4dCYmIm1pZGRsZSBjZW50ZXIiIT09aS50aXRsZS5wb3NpdGlvbiYmKGwtPUUoYSxlKSk7dmFyIGM9cy8yLHU9bC8yOyJmdW5uZWxhcmVhIiE9PWkudHlwZXx8aS5zY2FsZWdyb3VwfHwodS89aS5hc3BlY3RyYXRpbyksYS5yPU1hdGgubWluKGMsdSkvKDErTChpKSksYS5jeD1lLmwrZS53KihpLmRvbWFpbi54WzFdK2kuZG9tYWluLnhbMF0pLzIsYS5jeT1lLnQrZS5oKigxLWkuZG9tYWluLnlbMF0pLWwvMixpLnRpdGxlLnRleHQmJi0xIT09aS50aXRsZS5wb3NpdGlvbi5pbmRleE9mKCJib3R0b20iKSYmKGEuY3ktPUUoYSxlKSksaS5zY2FsZWdyb3VwJiYtMT09PXIuaW5kZXhPZihpLnNjYWxlZ3JvdXApJiZyLnB1c2goaS5zY2FsZWdyb3VwKX0hZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbixhLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89MS8wLHM9ZVtpXTtmb3Iobj0wO248dC5sZW5ndGg7bisrKWlmKHI9dFtuXVswXSwoYT1yLnRyYWNlKS5zY2FsZWdyb3VwPT09cyl7dmFyIGw7aWYoInBpZSI9PT1hLnR5cGUpbD1yLnIqci5yO2Vsc2UgaWYoImZ1bm5lbGFyZWEiPT09YS50eXBlKXt2YXIgYyx1O2EuYXNwZWN0cmF0aW8+MT8oYz1yLnIsdT1jL2EuYXNwZWN0cmF0aW8pOih1PXIucixjPXUqYS5hc3BlY3RyYXRpbyksYyo9KDErYS5iYXNlcmF0aW8pLzIsbD1jKnV9bz1NYXRoLm1pbihvLGwvci52VG90YWwpfWZvcihuPTA7bjx0Lmxlbmd0aDtuKyspaWYocj10W25dWzBdLChhPXIudHJhY2UpLnNjYWxlZ3JvdXA9PT1zKXt2YXIgaD1vKnIudlRvdGFsOyJmdW5uZWxhcmVhIj09PWEudHlwZSYmKGgvPSgxK2EuYmFzZXJhdGlvKS8yLGgvPWEuYXNwZWN0cmF0aW8pLHIucj1NYXRoLnNxcnQoaCl9fX0odCxyKX1mdW5jdGlvbiBQKHQsZSl7cmV0dXJuW3QqTWF0aC5zaW4oZSksLXQqTWF0aC5jb3MoZSldfWZ1bmN0aW9uIE8odCxlLHIpe3ZhciBuPXQuX2Z1bGxMYXlvdXQsYT1yLnRyYWNlLGk9YS50ZXh0dGVtcGxhdGUsbz1hLnRleHRpbmZvO2lmKCFpJiZvJiYibm9uZSIhPT1vKXt2YXIgcyxjPW8uc3BsaXQoIisiKSx1PWZ1bmN0aW9uKHQpe3JldHVybi0xIT09Yy5pbmRleE9mKHQpfSxoPXUoImxhYmVsIiksZj11KCJ0ZXh0IiksZD11KCJ2YWx1ZSIpLHY9dSgicGVyY2VudCIpLG09bi5zZXBhcmF0b3JzO2lmKHM9aD9bZS5sYWJlbF06W10sZil7dmFyIHk9cC5nZXRGaXJzdEZpbGxlZChhLnRleHQsZS5wdHMpO2coeSkmJnMucHVzaCh5KX1kJiZzLnB1c2gocC5mb3JtYXRQaWVWYWx1ZShlLnYsbSkpLHYmJnMucHVzaChwLmZvcm1hdFBpZVBlcmNlbnQoZS52L3IudlRvdGFsLG0pKSxlLnRleHQ9cy5qb2luKCI8YnI+Iil9aWYoaSl7dmFyIHg9bC5jYXN0T3B0aW9uKGEsZS5pLCJ0ZXh0dGVtcGxhdGUiKTtpZih4KXt2YXIgYj1mdW5jdGlvbih0KXtyZXR1cm57bGFiZWw6dC5sYWJlbCx2YWx1ZTp0LnYsdmFsdWVMYWJlbDpwLmZvcm1hdFBpZVZhbHVlKHQudixuLnNlcGFyYXRvcnMpLHBlcmNlbnQ6dC52L3IudlRvdGFsLHBlcmNlbnRMYWJlbDpwLmZvcm1hdFBpZVBlcmNlbnQodC52L3IudlRvdGFsLG4uc2VwYXJhdG9ycyksY29sb3I6dC5jb2xvcix0ZXh0OnQudGV4dCxjdXN0b21kYXRhOmwuY2FzdE9wdGlvbihhLHQuaSwiY3VzdG9tZGF0YSIpfX0oZSksXz1wLmdldEZpcnN0RmlsbGVkKGEudGV4dCxlLnB0cyk7KGcoXyl8fCIiPT09XykmJihiLnRleHQ9XyksZS50ZXh0PWwudGV4dHRlbXBsYXRlU3RyaW5nKHgsYix0Ll9mdWxsTGF5b3V0Ll9kM2xvY2FsZSxiLGEuX21ldGF8fHt9KX1lbHNlIGUudGV4dD0iIn19ZnVuY3Rpb24geih0LGUpe3ZhciByPXQucm90YXRlLG49dC5zY2FsZTtuPjEmJihuPTEpO3ZhciBhPXIqTWF0aC5QSS8xODAsaT1NYXRoLmNvcyhhKSxvPU1hdGguc2luKGEpLHM9KGUubGVmdCtlLnJpZ2h0KS8yLGw9KGUudG9wK2UuYm90dG9tKS8yO3QudGV4dFg9cyppLWwqbyx0LnRleHRZPXMqbytsKmksdC5ub0NlbnRlcj0hMH1lLmV4cG9ydHM9e3Bsb3Q6ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LGk9ci5fc2l6ZTtmKCJwaWUiLHIpLHkoZSx0KSxDKGUsaSk7dmFyIHU9bC5tYWtlVHJhY2VHcm91cHMoci5fcGllbGF5ZXIsZSwidHJhY2UiKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB1PW4uc2VsZWN0KHRoaXMpLGY9ZVswXSxkPWYudHJhY2U7IWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhPXRbMF0saT1hLnIsbz1hLnRyYWNlLHM9by5yb3RhdGlvbipNYXRoLlBJLzE4MCxsPTIqTWF0aC5QSS9hLnZUb3RhbCxjPSJweDAiLHU9InB4MSI7aWYoImNvdW50ZXJjbG9ja3dpc2UiPT09by5kaXJlY3Rpb24pe2ZvcihlPTA7ZTx0Lmxlbmd0aCYmdFtlXS5oaWRkZW47ZSsrKTtpZihlPT09dC5sZW5ndGgpcmV0dXJuO3MrPWwqdFtlXS52LGwqPS0xLGM9InB4MSIsdT0icHgwIn1mb3Iobj1QKGkscyksZT0wO2U8dC5sZW5ndGg7ZSsrKShyPXRbZV0pLmhpZGRlbnx8KHJbY109bixyLnN0YXJ0YW5nbGU9cyxzKz1sKnIudi8yLHIucHhtaWQ9UChpLHMpLHIubWlkYW5nbGU9cyxzKz1sKnIudi8yLG49UChpLHMpLHIuc3RvcGFuZ2xlPXMsclt1XT1uLHIubGFyZ2VBcmM9ci52PmEudlRvdGFsLzI/MTowLHIuaGFsZmFuZ2xlPU1hdGguUEkqTWF0aC5taW4oci52L2EudlRvdGFsLC41KSxyLnJpbmc9MS1vLmhvbGUsci5ySW5zY3JpYmVkPU0ocixhKSl9KGUpLHUuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKSx1LmVhY2goZnVuY3Rpb24oKXt2YXIgZz1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuc2xpY2UiKS5kYXRhKGUpO2cuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzbGljZSIsITApLGcuZXhpdCgpLnJlbW92ZSgpO3ZhciB5PVtbW10sW11dLFtbXSxbXV1dLGI9ITE7Zy5lYWNoKGZ1bmN0aW9uKGEsaSl7aWYoYS5oaWRkZW4pbi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJwYXRoLGciKS5yZW1vdmUoKTtlbHNle2EucG9pbnROdW1iZXI9YS5pLGEuY3VydmVOdW1iZXI9ZC5pbmRleCx5W2EucHhtaWRbMV08MD8wOjFdW2EucHhtaWRbMF08MD8wOjFdLnB1c2goYSk7dmFyIG89Zi5jeCx1PWYuY3ksZz1uLnNlbGVjdCh0aGlzKSxfPWcuc2VsZWN0QWxsKCJwYXRoLnN1cmZhY2UiKS5kYXRhKFthXSk7aWYoXy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoInN1cmZhY2UiLCEwKS5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjoiYWxsIn0pLGcuY2FsbCh2LHQsZSksZC5wdWxsKXt2YXIgdz0rcC5jYXN0T3B0aW9uKGQucHVsbCxhLnB0cyl8fDA7dz4wJiYobys9dyphLnB4bWlkWzBdLHUrPXcqYS5weG1pZFsxXSl9YS5jeEZpbmFsPW8sYS5jeUZpbmFsPXU7dmFyIGs9ZC5ob2xlO2lmKGEudj09PWYudlRvdGFsKXt2YXIgVD0iTSIrKG8rYS5weDBbMF0pKyIsIisodSthLnB4MFsxXSkrQyhhLnB4MCxhLnB4bWlkLCEwLDEpK0MoYS5weG1pZCxhLnB4MCwhMCwxKSsiWiI7az9fLmF0dHIoImQiLCJNIisobytrKmEucHgwWzBdKSsiLCIrKHUrayphLnB4MFsxXSkrQyhhLnB4MCxhLnB4bWlkLCExLGspK0MoYS5weG1pZCxhLnB4MCwhMSxrKSsiWiIrVCk6Xy5hdHRyKCJkIixUKX1lbHNle3ZhciBNPUMoYS5weDAsYS5weDEsITAsMSk7aWYoayl7dmFyIFM9MS1rO18uYXR0cigiZCIsIk0iKyhvK2sqYS5weDFbMF0pKyIsIisodStrKmEucHgxWzFdKStDKGEucHgxLGEucHgwLCExLGspKyJsIitTKmEucHgwWzBdKyIsIitTKmEucHgwWzFdK00rIloiKX1lbHNlIF8uYXR0cigiZCIsIk0iK28rIiwiK3UrImwiK2EucHgwWzBdKyIsIithLnB4MFsxXStNKyJaIil9Tyh0LGEsZik7dmFyIEU9cC5jYXN0T3B0aW9uKGQudGV4dHBvc2l0aW9uLGEucHRzKSxMPWcuc2VsZWN0QWxsKCJnLnNsaWNldGV4dCIpLmRhdGEoYS50ZXh0JiYibm9uZSIhPT1FP1swXTpbXSk7TC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNsaWNldGV4dCIsITApLEwuZXhpdCgpLnJlbW92ZSgpLEwuZWFjaChmdW5jdGlvbigpe3ZhciBnPWwuZW5zdXJlU2luZ2xlKG4uc2VsZWN0KHRoaXMpLCJ0ZXh0IiwiIixmdW5jdGlvbih0KXt0LmF0dHIoImRhdGEtbm90ZXgiLDEpfSksdj1sLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0LCJvdXRzaWRlIj09PUU/ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXAuY2FzdE9wdGlvbih0Lm91dHNpZGV0ZXh0Zm9udC5jb2xvcixlLnB0cyl8fHAuY2FzdE9wdGlvbih0LnRleHRmb250LmNvbG9yLGUucHRzKXx8ci5jb2xvcixhPXAuY2FzdE9wdGlvbih0Lm91dHNpZGV0ZXh0Zm9udC5mYW1pbHksZS5wdHMpfHxwLmNhc3RPcHRpb24odC50ZXh0Zm9udC5mYW1pbHksZS5wdHMpfHxyLmZhbWlseSxpPXAuY2FzdE9wdGlvbih0Lm91dHNpZGV0ZXh0Zm9udC5zaXplLGUucHRzKXx8cC5jYXN0T3B0aW9uKHQudGV4dGZvbnQuc2l6ZSxlLnB0cyl8fHIuc2l6ZTtyZXR1cm57Y29sb3I6bixmYW1pbHk6YSxzaXplOml9fShkLGEsci5mb250KTptKGQsYSxyLmZvbnQpKTtnLnRleHQoYS50ZXh0KS5hdHRyKHtjbGFzczoic2xpY2V0ZXh0Iix0cmFuc2Zvcm06IiIsInRleHQtYW5jaG9yIjoibWlkZGxlIn0pLmNhbGwocy5mb250LHYpLmNhbGwoYy5jb252ZXJ0VG9Uc3BhbnMsdCk7dmFyIHksXz1zLmJCb3goZy5ub2RlKCkpO2lmKCJvdXRzaWRlIj09PUUpeT1BKF8sYSk7ZWxzZSBpZih5PXgoXyxhLGYpLCJhdXRvIj09PUUmJnkuc2NhbGU8MSl7dmFyIHc9bC5lbnN1cmVVbmlmb3JtRm9udFNpemUodCxkLm91dHNpZGV0ZXh0Zm9udCk7Zy5jYWxsKHMuZm9udCx3KSx5PUEoXz1zLmJCb3goZy5ub2RlKCkpLGEpfXZhciBrPXkudGV4dFBvc0FuZ2xlLFQ9dm9pZCAwPT09az9hLnB4bWlkOlAoZi5yLGspO2lmKHkudGFyZ2V0WD1vK1RbMF0qeS5yQ2VudGVyKyh5Lnh8fDApLHkudGFyZ2V0WT11K1RbMV0qeS5yQ2VudGVyKyh5Lnl8fDApLHooeSxfKSx5Lm91dHNpZGUpe3ZhciBNPXkudGFyZ2V0WTthLnlMYWJlbE1pbj1NLV8uaGVpZ2h0LzIsYS55TGFiZWxNaWQ9TSxhLnlMYWJlbE1heD1NK18uaGVpZ2h0LzIsYS5sYWJlbEV4dHJhWD0wLGEubGFiZWxFeHRyYVk9MCxiPSEwfXkuZm9udFNpemU9di5zaXplLGgoZC50eXBlLHksciksZVtpXS50cmFuc2Zvcm09eSxnLmF0dHIoInRyYW5zZm9ybSIsbC5nZXRUZXh0VHJhbnNmb3JtKHkpKX0pfWZ1bmN0aW9uIEModCxlLHIsbil7dmFyIGk9biooZVswXS10WzBdKSxvPW4qKGVbMV0tdFsxXSk7cmV0dXJuImEiK24qZi5yKyIsIituKmYucisiIDAgIithLmxhcmdlQXJjKyhyPyIgMSAiOiIgMCAiKStpKyIsIitvfX0pO3ZhciBfPW4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy50aXRsZXRleHQiKS5kYXRhKGQudGl0bGUudGV4dD9bMF06W10pO2lmKF8uZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ0aXRsZXRleHQiLCEwKSxfLmV4aXQoKS5yZW1vdmUoKSxfLmVhY2goZnVuY3Rpb24oKXt2YXIgZSxyPWwuZW5zdXJlU2luZ2xlKG4uc2VsZWN0KHRoaXMpLCJ0ZXh0IiwiIixmdW5jdGlvbih0KXt0LmF0dHIoImRhdGEtbm90ZXgiLDEpfSksYT1kLnRpdGxlLnRleHQ7ZC5fbWV0YSYmKGE9bC50ZW1wbGF0ZVN0cmluZyhhLGQuX21ldGEpKSxyLnRleHQoYSkuYXR0cih7Y2xhc3M6InRpdGxldGV4dCIsdHJhbnNmb3JtOiIiLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9KS5jYWxsKHMuZm9udCxkLnRpdGxlLmZvbnQpLmNhbGwoYy5jb252ZXJ0VG9Uc3BhbnMsdCksZT0ibWlkZGxlIGNlbnRlciI9PT1kLnRpdGxlLnBvc2l0aW9uP2Z1bmN0aW9uKHQpe3ZhciBlPU1hdGguc3FydCh0LnRpdGxlQm94LndpZHRoKnQudGl0bGVCb3gud2lkdGgrdC50aXRsZUJveC5oZWlnaHQqdC50aXRsZUJveC5oZWlnaHQpO3JldHVybnt4OnQuY3gseTp0LmN5LHNjYWxlOnQudHJhY2UuaG9sZSp0LnIqMi9lLHR4OjAsdHk6LXQudGl0bGVCb3guaGVpZ2h0LzIrdC50cmFjZS50aXRsZS5mb250LnNpemV9fShmKTpTKGYsaSksci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLngrIiwiK2UueSsiKSIrKGUuc2NhbGU8MT8ic2NhbGUoIitlLnNjYWxlKyIpIjoiIikrInRyYW5zbGF0ZSgiK2UudHgrIiwiK2UudHkrIikiKX0pLGImJmZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhLGksbyxzLGwsYyx1LGgsZixkLGc7ZnVuY3Rpb24gdih0LGUpe3JldHVybiB0LnB4bWlkWzFdLWUucHhtaWRbMV19ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBlLnB4bWlkWzFdLXQucHhtaWRbMV19ZnVuY3Rpb24geSh0LHIpe3J8fChyPXt9KTt2YXIgYSxjLHUsZixkLGcsdj1yLmxhYmVsRXh0cmFZKyhuP3IueUxhYmVsTWF4OnIueUxhYmVsTWluKSxtPW4/dC55TGFiZWxNaW46dC55TGFiZWxNYXgseT1uP3QueUxhYmVsTWF4OnQueUxhYmVsTWluLHg9dC5jeUZpbmFsK28odC5weDBbMV0sdC5weDFbMV0pLGI9di1tO2lmKGIqbD4wJiYodC5sYWJlbEV4dHJhWT1iKSxBcnJheS5pc0FycmF5KGUucHVsbCkpZm9yKGM9MDtjPGgubGVuZ3RoO2MrKykodT1oW2NdKT09PXR8fChwLmNhc3RPcHRpb24oZS5wdWxsLHQucHRzKXx8MCk+PShwLmNhc3RPcHRpb24oZS5wdWxsLHUucHRzKXx8MCl8fCgodC5weG1pZFsxXS11LnB4bWlkWzFdKSpsPjA/KGY9dS5jeUZpbmFsK28odS5weDBbMV0sdS5weDFbMV0pLChiPWYtbS10LmxhYmVsRXh0cmFZKSpsPjAmJih0LmxhYmVsRXh0cmFZKz1iKSk6KHkrdC5sYWJlbEV4dHJhWS14KSpsPjAmJihhPTMqcypNYXRoLmFicyhjLWguaW5kZXhPZih0KSksZD11LmN4RmluYWwraSh1LnB4MFswXSx1LnB4MVswXSksKGc9ZCthLSh0LmN4RmluYWwrdC5weG1pZFswXSktdC5sYWJlbEV4dHJhWCkqcz4wJiYodC5sYWJlbEV4dHJhWCs9ZykpKX1mb3Iobj0wO248MjtuKyspZm9yKGE9bj92Om0sbz1uP01hdGgubWF4Ok1hdGgubWluLGw9bj8xOi0xLHI9MDtyPDI7cisrKXtmb3IoaT1yP01hdGgubWF4Ok1hdGgubWluLHM9cj8xOi0xLChjPXRbbl1bcl0pLnNvcnQoYSksdT10WzEtbl1bcl0saD11LmNvbmNhdChjKSxkPVtdLGY9MDtmPGMubGVuZ3RoO2YrKyl2b2lkIDAhPT1jW2ZdLnlMYWJlbE1pZCYmZC5wdXNoKGNbZl0pO2ZvcihnPSExLGY9MDtuJiZmPHUubGVuZ3RoO2YrKylpZih2b2lkIDAhPT11W2ZdLnlMYWJlbE1pZCl7Zz11W2ZdO2JyZWFrfWZvcihmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciB4PWYmJmRbZi0xXTtnJiYhZiYmKHg9ZykseShkW2ZdLHgpfX19KHksZCksZnVuY3Rpb24odCxlKXt0LmVhY2goZnVuY3Rpb24odCl7dmFyIHI9bi5zZWxlY3QodGhpcyk7aWYodC5sYWJlbEV4dHJhWHx8dC5sYWJlbEV4dHJhWSl7dmFyIGE9ci5zZWxlY3QoImcuc2xpY2V0ZXh0IHRleHQiKTt0LnRyYW5zZm9ybS50YXJnZXRYKz10LmxhYmVsRXh0cmFYLHQudHJhbnNmb3JtLnRhcmdldFkrPXQubGFiZWxFeHRyYVksYS5hdHRyKCJ0cmFuc2Zvcm0iLGwuZ2V0VGV4dFRyYW5zZm9ybSh0LnRyYW5zZm9ybSkpO3ZhciBpPXQuY3hGaW5hbCt0LnB4bWlkWzBdLHM9dC5jeUZpbmFsK3QucHhtaWRbMV0sYz0iTSIraSsiLCIrcyx1PSh0LnlMYWJlbE1heC10LnlMYWJlbE1pbikqKHQucHhtaWRbMF08MD8tMToxKS80O2lmKHQubGFiZWxFeHRyYVgpe3ZhciBoPXQubGFiZWxFeHRyYVgqdC5weG1pZFsxXS90LnB4bWlkWzBdLGY9dC55TGFiZWxNaWQrdC5sYWJlbEV4dHJhWS0odC5jeUZpbmFsK3QucHhtaWRbMV0pO01hdGguYWJzKGgpPk1hdGguYWJzKGYpP2MrPSJsIitmKnQucHhtaWRbMF0vdC5weG1pZFsxXSsiLCIrZisiSCIrKGkrdC5sYWJlbEV4dHJhWCt1KTpjKz0ibCIrdC5sYWJlbEV4dHJhWCsiLCIraCsidiIrKGYtaCkrImgiK3V9ZWxzZSBjKz0iViIrKHQueUxhYmVsTWlkK3QubGFiZWxFeHRyYVkpKyJoIit1O2wuZW5zdXJlU2luZ2xlKHIsInBhdGgiLCJ0ZXh0bGluZSIpLmNhbGwoby5zdHJva2UsZS5vdXRzaWRldGV4dGZvbnQuY29sb3IpLmF0dHIoeyJzdHJva2Utd2lkdGgiOk1hdGgubWluKDIsZS5vdXRzaWRldGV4dGZvbnQuc2l6ZS84KSxkOmMsZmlsbDoibm9uZSJ9KX1lbHNlIHIuc2VsZWN0KCJwYXRoLnRleHRsaW5lIikucmVtb3ZlKCl9KX0oZyxkKSxiJiZkLmF1dG9tYXJnaW4pe3ZhciB3PXMuYkJveCh1Lm5vZGUoKSksaz1kLmRvbWFpbixUPWkudyooay54WzFdLWsueFswXSksTT1pLmgqKGsueVsxXS1rLnlbMF0pLEU9KC41KlQtZi5yKS9pLncsTD0oLjUqTS1mLnIpL2kuaDthLmF1dG9NYXJnaW4odCwicGllLiIrZC51aWQrIi5hdXRvbWFyZ2luIix7eGw6ay54WzBdLUUseHI6ay54WzFdK0UseWI6ay55WzBdLUwseXQ6ay55WzFdK0wsbDpNYXRoLm1heChmLmN4LWYuci13LmxlZnQsMCkscjpNYXRoLm1heCh3LnJpZ2h0LShmLmN4K2YuciksMCksYjpNYXRoLm1heCh3LmJvdHRvbS0oZi5jeStmLnIpLDApLHQ6TWF0aC5tYXgoZi5jeS1mLnItdy50b3AsMCkscGFkOjV9KX19KX0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt1LnNlbGVjdEFsbCgidHNwYW4iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyk7dC5hdHRyKCJkeSIpJiZ0LmF0dHIoImR5Iix0LmF0dHIoImR5IikpfSl9LDApfSxmb3JtYXRTbGljZUxhYmVsOk8sdHJhbnNmb3JtSW5zaWRlVGV4dDp4LGRldGVybWluZUluc2lkZVRleHRGb250Om0scG9zaXRpb25UaXRsZU91dHNpZGU6UyxwcmVyZW5kZXJUaXRsZXM6eSxsYXlvdXRBcmVhczpDLGF0dGFjaEZ4SGFuZGxlcnM6dixjb21wdXRlVHJhbnNmb3JtOnp9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90cy9wbG90cyI6ODI2LCIuLi9iYXIvdW5pZm9ybV90ZXh0Ijo4NzIsIi4vZXZlbnRfZGF0YSI6MTA5OCwiLi9oZWxwZXJzIjoxMDk5LGQzOjE2NX1dLDExMDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4vc3R5bGVfb25lIiksaT10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikucmVzaXplVGV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5fcGllbGF5ZXIuc2VsZWN0QWxsKCIudHJhY2UiKTtpKHQsZSwicGllIiksZS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1uLnNlbGVjdCh0aGlzKTtyLnN0eWxlKHtvcGFjaXR5OmUub3BhY2l0eX0pLHIuc2VsZWN0QWxsKCJwYXRoLnN1cmZhY2UiKS5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLmNhbGwoYSx0LGUpfSl9KX19LHsiLi4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLCIuL3N0eWxlX29uZSI6MTEwNSxkMzoxNjV9XSwxMTA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxhPXQoIi4vaGVscGVycyIpLmNhc3RPcHRpb247ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1yLm1hcmtlci5saW5lLG89YShpLmNvbG9yLGUucHRzKXx8bi5kZWZhdWx0TGluZSxzPWEoaS53aWR0aCxlLnB0cyl8fDA7dC5zdHlsZSgic3Ryb2tlLXdpZHRoIixzKS5jYWxsKG4uZmlsbCxlLmNvbG9yKS5jYWxsKG4uc3Ryb2tlLG8pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4vaGVscGVycyI6MTA5OX1dLDExMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPXt4Om4ueCx5Om4ueSx4eTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxpbmRpY2VzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHhib3VuZHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0seWJvdW5kczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx0ZXh0Om4udGV4dCxtYXJrZXI6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMSxlZGl0VHlwZToiY2FsYyJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxLGFycmF5T2s6ITEsZWRpdFR5cGU6ImNhbGMifSxibGVuZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDpudWxsLGVkaXRUeXBlOiJjYWxjIn0sc2l6ZW1pbjp7dmFsVHlwZToibnVtYmVyIixtaW46LjEsbWF4OjIsZGZsdDouNSxlZGl0VHlwZToiY2FsYyJ9LHNpemVtYXg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi4xLGRmbHQ6MjAsZWRpdFR5cGU6ImNhbGMifSxib3JkZXI6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMSxlZGl0VHlwZToiY2FsYyJ9LGFyZWFyYXRpbzp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sdHJhbnNmb3Jtczp2b2lkIDB9fSx7Ii4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMH1dLDExMDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtcG9pbnRjbG91ZDJkIiksYT10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3JhbmdlIikuZmluZEV4dHJlbWVzLG89dCgiLi4vc2NhdHRlci9nZXRfdHJhY2VfY29sb3IiKTtmdW5jdGlvbiBzKHQsZSl7dGhpcy5zY2VuZT10LHRoaXMudWlkPWUsdGhpcy50eXBlPSJwb2ludGNsb3VkIix0aGlzLnBpY2tYRGF0YT1bXSx0aGlzLnBpY2tZRGF0YT1bXSx0aGlzLnhEYXRhPVtdLHRoaXMueURhdGE9W10sdGhpcy50ZXh0TGFiZWxzPVtdLHRoaXMuY29sb3I9InJnYigwLCAwLCAwKSIsdGhpcy5uYW1lPSIiLHRoaXMuaG92ZXJpbmZvPSJhbGwiLHRoaXMuaWRUb0luZGV4PW5ldyBJbnQzMkFycmF5KDApLHRoaXMuYm91bmRzPVswLDAsMCwwXSx0aGlzLnBvaW50Y2xvdWRPcHRpb25zPXtwb3NpdGlvbnM6bmV3IEZsb2F0MzJBcnJheSgwKSxpZFRvSW5kZXg6dGhpcy5pZFRvSW5kZXgsc2l6ZW1pbjouNSxzaXplbWF4OjEyLGNvbG9yOlswLDAsMCwxXSxhcmVhUmF0aW86MSxib3JkZXJDb2xvcjpbMCwwLDAsMV19LHRoaXMucG9pbnRjbG91ZD1uKHQuZ2xwbG90LHRoaXMucG9pbnRjbG91ZE9wdGlvbnMpLHRoaXMucG9pbnRjbG91ZC5fdHJhY2U9dGhpc312YXIgbD1zLnByb3RvdHlwZTtsLmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pZFRvSW5kZXhbdC5wb2ludElkXTtyZXR1cm57dHJhY2U6dGhpcyxkYXRhQ29vcmQ6dC5kYXRhQ29vcmQsdHJhY2VDb29yZDp0aGlzLnBpY2tYWURhdGE/W3RoaXMucGlja1hZRGF0YVsyKmVdLHRoaXMucGlja1hZRGF0YVsyKmUrMV1dOlt0aGlzLnBpY2tYRGF0YVtlXSx0aGlzLnBpY2tZRGF0YVtlXV0sdGV4dExhYmVsOkFycmF5LmlzQXJyYXkodGhpcy50ZXh0TGFiZWxzKT90aGlzLnRleHRMYWJlbHNbZV06dGhpcy50ZXh0TGFiZWxzLGNvbG9yOnRoaXMuY29sb3IsbmFtZTp0aGlzLm5hbWUscG9pbnRJbmRleDplLGhvdmVyaW5mbzp0aGlzLmhvdmVyaW5mb319LGwudXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuaW5kZXg9dC5pbmRleCx0aGlzLnRleHRMYWJlbHM9dC50ZXh0LHRoaXMubmFtZT10Lm5hbWUsdGhpcy5ob3ZlcmluZm89dC5ob3ZlcmluZm8sdGhpcy5ib3VuZHM9WzEvMCwxLzAsLTEvMCwtMS8wXSx0aGlzLnVwZGF0ZUZhc3QodCksdGhpcy5jb2xvcj1vKHQse30pfSxsLnVwZGF0ZUZhc3Q9ZnVuY3Rpb24odCl7dmFyIGUscixuLG8scyxsLGM9dGhpcy54RGF0YT10aGlzLnBpY2tYRGF0YT10LngsdT10aGlzLnlEYXRhPXRoaXMucGlja1lEYXRhPXQueSxoPXRoaXMucGlja1hZRGF0YT10Lnh5LGY9dC54Ym91bmRzJiZ0Lnlib3VuZHMscD10LmluZGljZXMsZD10aGlzLmJvdW5kcztpZihoKXtpZihuPWgsZT1oLmxlbmd0aD4+PjEsZilkWzBdPXQueGJvdW5kc1swXSxkWzJdPXQueGJvdW5kc1sxXSxkWzFdPXQueWJvdW5kc1swXSxkWzNdPXQueWJvdW5kc1sxXTtlbHNlIGZvcihsPTA7bDxlO2wrKylvPW5bMipsXSxzPW5bMipsKzFdLG88ZFswXSYmKGRbMF09byksbz5kWzJdJiYoZFsyXT1vKSxzPGRbMV0mJihkWzFdPXMpLHM+ZFszXSYmKGRbM109cyk7aWYocClyPXA7ZWxzZSBmb3Iocj1uZXcgSW50MzJBcnJheShlKSxsPTA7bDxlO2wrKylyW2xdPWx9ZWxzZSBmb3IoZT1jLmxlbmd0aCxuPW5ldyBGbG9hdDMyQXJyYXkoMiplKSxyPW5ldyBJbnQzMkFycmF5KGUpLGw9MDtsPGU7bCsrKW89Y1tsXSxzPXVbbF0scltsXT1sLG5bMipsXT1vLG5bMipsKzFdPXMsbzxkWzBdJiYoZFswXT1vKSxvPmRbMl0mJihkWzJdPW8pLHM8ZFsxXSYmKGRbMV09cykscz5kWzNdJiYoZFszXT1zKTt0aGlzLmlkVG9JbmRleD1yLHRoaXMucG9pbnRjbG91ZE9wdGlvbnMuaWRUb0luZGV4PXIsdGhpcy5wb2ludGNsb3VkT3B0aW9ucy5wb3NpdGlvbnM9bjt2YXIgZz1hKHQubWFya2VyLmNvbG9yKSx2PWEodC5tYXJrZXIuYm9yZGVyLmNvbG9yKSxtPXQub3BhY2l0eSp0Lm1hcmtlci5vcGFjaXR5O2dbM10qPW0sdGhpcy5wb2ludGNsb3VkT3B0aW9ucy5jb2xvcj1nO3ZhciB5PXQubWFya2VyLmJsZW5kO2lmKG51bGw9PT15KXt5PWMubGVuZ3RoPDEwMHx8dS5sZW5ndGg8MTAwfXRoaXMucG9pbnRjbG91ZE9wdGlvbnMuYmxlbmQ9eSx2WzNdKj1tLHRoaXMucG9pbnRjbG91ZE9wdGlvbnMuYm9yZGVyQ29sb3I9djt2YXIgeD10Lm1hcmtlci5zaXplbWluLGI9TWF0aC5tYXgodC5tYXJrZXIuc2l6ZW1heCx0Lm1hcmtlci5zaXplbWluKTt0aGlzLnBvaW50Y2xvdWRPcHRpb25zLnNpemVNaW49eCx0aGlzLnBvaW50Y2xvdWRPcHRpb25zLnNpemVNYXg9Yix0aGlzLnBvaW50Y2xvdWRPcHRpb25zLmFyZWFSYXRpbz10Lm1hcmtlci5ib3JkZXIuYXJlYXJhdGlvLHRoaXMucG9pbnRjbG91ZC51cGRhdGUodGhpcy5wb2ludGNsb3VkT3B0aW9ucyk7dmFyIF89dGhpcy5zY2VuZS54YXhpcyx3PXRoaXMuc2NlbmUueWF4aXMsaz1iLzJ8fC41O3QuX2V4dHJlbWVzW18uX2lkXT1pKF8sW2RbMF0sZFsyXV0se3BwYWQ6a30pLHQuX2V4dHJlbWVzW3cuX2lkXT1pKHcsW2RbMV0sZFszXV0se3BwYWQ6a30pfSxsLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnBvaW50Y2xvdWQuZGlzcG9zZSgpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgcyh0LGUudWlkKTtyZXR1cm4gci51cGRhdGUoZSkscn19LHsiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NzQwLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3JhbmdlIjo3NjQsIi4uL3NjYXR0ZXIvZ2V0X3RyYWNlX2NvbG9yIjoxMTMwLCJnbC1wb2ludGNsb3VkMmQiOjI5NX1dLDExMDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIGkocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX1pKCJ4IiksaSgieSIpLGkoInhib3VuZHMiKSxpKCJ5Ym91bmRzIiksdC54eSYmdC54eSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSYmKGUueHk9dC54eSksdC5pbmRpY2VzJiZ0LmluZGljZXMgaW5zdGFuY2VvZiBJbnQzMkFycmF5JiYoZS5pbmRpY2VzPXQuaW5kaWNlcyksaSgidGV4dCIpLGkoIm1hcmtlci5jb2xvciIsciksaSgibWFya2VyLm9wYWNpdHkiKSxpKCJtYXJrZXIuYmxlbmQiKSxpKCJtYXJrZXIuc2l6ZW1pbiIpLGkoIm1hcmtlci5zaXplbWF4IiksaSgibWFya2VyLmJvcmRlci5jb2xvciIsciksaSgibWFya2VyLmJvcmRlci5hcmVhcmF0aW8iKSxlLl9sZW5ndGg9bnVsbH19LHsiLi4vLi4vbGliIjo3MTcsIi4vYXR0cmlidXRlcyI6MTEwNn1dLDExMDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4uL3NjYXR0ZXIzZC9jYWxjIikscGxvdDp0KCIuL2NvbnZlcnQiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToicG9pbnRjbG91ZCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wyZCIpLGNhdGVnb3JpZXM6WyJnbCIsImdsMmQiLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2wyZCI6ODAzLCIuLi9zY2F0dGVyM2QvY2FsYyI6MTE0OCwiLi9hdHRyaWJ1dGVzIjoxMTA2LCIuL2NvbnZlcnQiOjExMDcsIi4vZGVmYXVsdHMiOjExMDh9XSwxMTEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbD10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSx1PXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSxoPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGY9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsO3QoIi4uLy4uL2NvbnN0YW50cy9kb2NzIikuRk9STUFUX0xJTks7KGUuZXhwb3J0cz1mKHtob3ZlcmluZm86aCh7fSxhLmhvdmVyaW5mbyx7ZmxhZ3M6W10sYXJyYXlPazohMX0pLGhvdmVybGFiZWw6by5ob3ZlcmxhYmVsLGRvbWFpbjpzKHtuYW1lOiJzYW5rZXkiLHRyYWNlOiEwfSksb3JpZW50YXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInYiLCJoIl0sZGZsdDoiaCJ9LHZhbHVlZm9ybWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6Ii4zcyJ9LHZhbHVlc3VmZml4Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiJ9LGFycmFuZ2VtZW50Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzbmFwIiwicGVycGVuZGljdWxhciIsImZyZWVmb3JtIiwiZml4ZWQiXSxkZmx0OiJzbmFwIn0sdGV4dGZvbnQ6bih7fSksbm9kZTp7bGFiZWw6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W119LGdyb3Vwczp7dmFsVHlwZToiaW5mb19hcnJheSIsaW1wbGllZEVkaXRzOnt4OltdLHk6W119LGRpbWVuc2lvbnM6MixmcmVlTGVuZ3RoOiEwLGRmbHQ6W10saXRlbXM6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifX0seDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0seTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixhcnJheU9rOiEwfSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aS5kZWZhdWx0TGluZSxhcnJheU9rOiEwfSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0Oi41LGFycmF5T2s6ITB9fSxwYWQ6e3ZhbFR5cGU6Im51bWJlciIsYXJyYXlPazohMSxtaW46MCxkZmx0OjIwfSx0aGlja25lc3M6e3ZhbFR5cGU6Im51bWJlciIsYXJyYXlPazohMSxtaW46MSxkZmx0OjIwfSxob3ZlcmluZm86e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsIm5vbmUiLCJza2lwIl0sZGZsdDoiYWxsIn0saG92ZXJsYWJlbDpvLmhvdmVybGFiZWwsaG92ZXJ0ZW1wbGF0ZTpsKHt9LHtrZXlzOlsidmFsdWUiLCJsYWJlbCJdfSl9LGxpbms6e2xhYmVsOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGFycmF5T2s6ITB9LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDppLmRlZmF1bHRMaW5lLGFycmF5T2s6ITB9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxhcnJheU9rOiEwfX0sc291cmNlOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSx0YXJnZXQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W119LHZhbHVlOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxob3ZlcmluZm86e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsIm5vbmUiLCJza2lwIl0sZGZsdDoiYWxsIn0saG92ZXJsYWJlbDpvLmhvdmVybGFiZWwsaG92ZXJ0ZW1wbGF0ZTpsKHt9LHtrZXlzOlsidmFsdWUiLCJsYWJlbCJdfSksY29sb3JzY2FsZXM6dSgiY29uY2VudHJhdGlvbnNjYWxlcyIse2VkaXRUeXBlOiJjYWxjIixsYWJlbDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyIsZGZsdDoiIn0sY21heDp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyIsZGZsdDoxfSxjbWluOnt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIixkZmx0OjB9LGNvbG9yc2NhbGU6aChjKCkuY29sb3JzY2FsZSx7ZGZsdDpbWzAsIndoaXRlIl0sWzEsImJsYWNrIl1dfSl9KX19LCJjYWxjIiwibmVzdGVkIikpLnRyYW5zZm9ybXM9dm9pZCAwfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6NTkxLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiOjYyMiwiLi4vLi4vY29uc3RhbnRzL2RvY3MiOjY4OCwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MX1dLDExMTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGE9dCgiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiKS5nZXRNb2R1bGVDYWxjRGF0YSxpPXQoIi4vcGxvdCIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9meC9sYXlvdXRfYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vbGliL3NldGN1cnNvciIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCIpLGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3NlbGVjdCIpLnByZXBTZWxlY3QsdT10KCIuLi8uLi9saWIiKSxoPXQoIi4uLy4uL3JlZ2lzdHJ5Iik7ZnVuY3Rpb24gZih0LGUpe3ZhciByPXQuX2Z1bGxEYXRhW2VdLG49dC5fZnVsbExheW91dCxhPW4uZHJhZ21vZGUsaT0icGFuIj09PW4uZHJhZ21vZGU/Im1vdmUiOiJjcm9zc2hhaXIiLG89ci5fYmdSZWN0O2lmKCJwYW4iIT09YSYmInpvb20iIT09YSl7cyhvLGkpO3ZhciBmPXtfaWQ6IngiLGMycDp1LmlkZW50aXR5LF9vZmZzZXQ6ci5fc2Fua2V5LnRyYW5zbGF0ZVgsX2xlbmd0aDpyLl9zYW5rZXkud2lkdGh9LHA9e19pZDoieSIsYzJwOnUuaWRlbnRpdHksX29mZnNldDpyLl9zYW5rZXkudHJhbnNsYXRlWSxfbGVuZ3RoOnIuX3NhbmtleS5oZWlnaHR9LGQ9e2dkOnQsZWxlbWVudDpvLm5vZGUoKSxwbG90aW5mbzp7aWQ6ZSx4YXhpczpmLHlheGlzOnAsZmlsbFJhbmdlSXRlbXM6dS5ub29wfSxzdWJwbG90OmUseGF4ZXM6W2ZdLHlheGVzOltwXSxkb25lRm5Db21wbGV0ZWQ6ZnVuY3Rpb24ocil7dmFyIG4sYT10Ll9mdWxsRGF0YVtlXSxpPWEubm9kZS5ncm91cHMuc2xpY2UoKSxvPVtdO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBlPWEuX3NhbmtleS5ncmFwaC5ub2RlcyxyPTA7cjxlLmxlbmd0aDtyKyspaWYoZVtyXS5wb2ludE51bWJlcj09PXQpcmV0dXJuIGVbcl19Zm9yKHZhciBsPTA7bDxyLmxlbmd0aDtsKyspe3ZhciBjPXMocltsXS5wb2ludE51bWJlcik7aWYoYylpZihjLmdyb3VwKXtmb3IodmFyIHU9MDt1PGMuY2hpbGRyZW5Ob2Rlcy5sZW5ndGg7dSsrKW8ucHVzaChjLmNoaWxkcmVuTm9kZXNbdV0ucG9pbnROdW1iZXIpO2lbYy5wb2ludE51bWJlci1hLm5vZGUuX2NvdW50XT0hMX1lbHNlIG8ucHVzaChjLnBvaW50TnVtYmVyKX1uPWkuZmlsdGVyKEJvb2xlYW4pLmNvbmNhdChbb10pLGguY2FsbCgiX2d1aVJlc3R5bGUiLHQseyJub2RlLmdyb3VwcyI6W25dfSxlKX0scHJlcEZuOmZ1bmN0aW9uKHQsZSxyKXtjKHQsZSxyLGQsYSl9fTtsLmluaXQoZCl9fXIubmFtZT0ic2Fua2V5IixyLmJhc2VMYXlvdXRBdHRyT3ZlcnJpZGVzPW4oe2hvdmVybGFiZWw6by5ob3ZlcmxhYmVsfSwicGxvdCIsIm5lc3RlZCIpLHIucGxvdD1mdW5jdGlvbih0KXt2YXIgZT1hKHQuY2FsY2RhdGEsInNhbmtleSIpWzBdO2kodCxlKSxyLnVwZGF0ZUZ4KHQpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW4uX2hhcyYmbi5faGFzKCJzYW5rZXkiKSxpPWUuX2hhcyYmZS5faGFzKCJzYW5rZXkiKTthJiYhaSYmKG4uX3BhcGVyZGl2LnNlbGVjdEFsbCgiLnNhbmtleSIpLnJlbW92ZSgpLG4uX3BhcGVyZGl2LnNlbGVjdEFsbCgiLmJnc2Fua2V5IikucmVtb3ZlKCkpfSxyLnVwZGF0ZUZ4PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5fZnVsbERhdGEubGVuZ3RoO2UrKylmKHQsZSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiOjYxMCwiLi4vLi4vY29tcG9uZW50cy9meC9sYXlvdXRfYXR0cmlidXRlcyI6NjMxLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3NldGN1cnNvciI6NzM3LCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9zZWxlY3QiOjc4MiwiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiOjgwMCwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9wbG90IjoxMTE2fV0sMTExMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJzdHJvbmdseS1jb25uZWN0ZWQtY29tcG9uZW50cyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9saWIvZ3VwIikud3JhcCxvPWEuaXNBcnJheU9yVHlwZWRBcnJheSxzPWEuaXNJbmRleCxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpO2Z1bmN0aW9uIGModCl7dmFyIGUscj10Lm5vZGUsaT10LmxpbmssYz1bXSx1PW8oaS5jb2xvciksaD17fSxmPXt9LHA9aS5jb2xvcnNjYWxlcy5sZW5ndGg7Zm9yKGU9MDtlPHA7ZSsrKXt2YXIgZD1pLmNvbG9yc2NhbGVzW2VdLGc9bC5leHRyYWN0U2NhbGUoZCx7Y0xldHRlcjoiYyJ9KSx2PWwubWFrZUNvbG9yU2NhbGVGdW5jKGcpO2ZbZC5sYWJlbF09dn12YXIgbT0wO2ZvcihlPTA7ZTxpLnZhbHVlLmxlbmd0aDtlKyspaS5zb3VyY2VbZV0+bSYmKG09aS5zb3VyY2VbZV0pLGkudGFyZ2V0W2VdPm0mJihtPWkudGFyZ2V0W2VdKTt2YXIgeSx4PW0rMTt0Lm5vZGUuX2NvdW50PXg7dmFyIGI9dC5ub2RlLmdyb3VwcyxfPXt9O2ZvcihlPTA7ZTxiLmxlbmd0aDtlKyspe3ZhciB3PWJbZV07Zm9yKHk9MDt5PHcubGVuZ3RoO3krKyl7dmFyIGs9d1t5XSxUPXgrZTtfLmhhc093blByb3BlcnR5KGspP2Eud2FybigiTm9kZSAiK2srIiBpcyBhbHJlYWR5IHBhcnQgb2YgYSBncm91cC4iKTpfW2tdPVR9fXZhciBNPXtzb3VyY2U6W10sdGFyZ2V0OltdfTtmb3IoZT0wO2U8aS52YWx1ZS5sZW5ndGg7ZSsrKXt2YXIgQT1pLnZhbHVlW2VdLFM9aS5zb3VyY2VbZV0sRT1pLnRhcmdldFtlXTtpZihBPjAmJnMoUyx4KSYmcyhFLHgpJiYoIV8uaGFzT3duUHJvcGVydHkoUyl8fCFfLmhhc093blByb3BlcnR5KEUpfHxfW1NdIT09X1tFXSkpe18uaGFzT3duUHJvcGVydHkoRSkmJihFPV9bRV0pLF8uaGFzT3duUHJvcGVydHkoUykmJihTPV9bU10pLEU9K0UsaFtTPStTXT1oW0VdPSEwO3ZhciBMPSIiO2kubGFiZWwmJmkubGFiZWxbZV0mJihMPWkubGFiZWxbZV0pO3ZhciBDPW51bGw7TCYmZi5oYXNPd25Qcm9wZXJ0eShMKSYmKEM9ZltMXSksYy5wdXNoKHtwb2ludE51bWJlcjplLGxhYmVsOkwsY29sb3I6dT9pLmNvbG9yW2VdOmkuY29sb3IsY29uY2VudHJhdGlvbnNjYWxlOkMsc291cmNlOlMsdGFyZ2V0OkUsdmFsdWU6K0F9KSxNLnNvdXJjZS5wdXNoKFMpLE0udGFyZ2V0LnB1c2goRSl9fXZhciBQPXgrYi5sZW5ndGgsTz1vKHIuY29sb3IpLHo9W107Zm9yKGU9MDtlPFA7ZSsrKWlmKGhbZV0pe3ZhciBJPXIubGFiZWxbZV07ei5wdXNoKHtncm91cDplPngtMSxjaGlsZHJlbk5vZGVzOltdLHBvaW50TnVtYmVyOmUsbGFiZWw6SSxjb2xvcjpPP3IuY29sb3JbZV06ci5jb2xvcn0pfXZhciBEPSExO3JldHVybiBmdW5jdGlvbih0LGUscil7Zm9yKHZhciBpPWEuaW5pdDJkQXJyYXkodCwwKSxvPTA7bzxNYXRoLm1pbihlLmxlbmd0aCxyLmxlbmd0aCk7bysrKWlmKGEuaXNJbmRleChlW29dLHQpJiZhLmlzSW5kZXgocltvXSx0KSl7aWYoZVtvXT09PXJbb10pcmV0dXJuITA7aVtlW29dXS5wdXNoKHJbb10pfXJldHVybiBuKGkpLmNvbXBvbmVudHMuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MX0pfShQLE0uc291cmNlLE0udGFyZ2V0KSYmKEQ9ITApLHtjaXJjdWxhcjpELGxpbmtzOmMsbm9kZXM6eixncm91cHM6Yixncm91cExvb2t1cDpffX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1jKGUpO3JldHVybiBpKHtjaXJjdWxhcjpyLmNpcmN1bGFyLF9ub2RlczpyLm5vZGVzLF9saW5rczpyLmxpbmtzLF9ncm91cHM6ci5ncm91cHMsX2dyb3VwTG9va3VwOnIuZ3JvdXBMb29rdXB9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ3VwIjo3MTUsInN0cm9uZ2x5LWNvbm5lY3RlZC1jb21wb25lbnRzIjo1Mjl9XSwxMTEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bm9kZVRleHRPZmZzZXRIb3Jpem9udGFsOjQsbm9kZVRleHRPZmZzZXRWZXJ0aWNhbDozLG5vZGVQYWRBY3Jvc3M6MTAsc2Fua2V5SXRlcmF0aW9uczo1MCxmb3JjZUl0ZXJhdGlvbnM6NSxmb3JjZVRpY2tzUGVyRnJhbWU6MTAsZHVyYXRpb246NTAwLGVhc2U6ImxpbmVhciIsY246e3NhbmtleToic2Fua2V5IixzYW5rZXlMaW5rczoic2Fua2V5LWxpbmtzIixzYW5rZXlMaW5rOiJzYW5rZXktbGluayIsc2Fua2V5Tm9kZVNldDoic2Fua2V5LW5vZGUtc2V0IixzYW5rZXlOb2RlOiJzYW5rZXktbm9kZSIsbm9kZVJlY3Q6Im5vZGUtcmVjdCIsbm9kZUNhcHR1cmU6Im5vZGUtY2FwdHVyZSIsbm9kZUNlbnRlcmVkOiJub2RlLWVudGVyZWQiLG5vZGVMYWJlbEd1aWRlOiJub2RlLWxhYmVsLWd1aWRlIixub2RlTGFiZWw6Im5vZGUtbGFiZWwiLG5vZGVMYWJlbFRleHRQYXRoOiJub2RlLWxhYmVsLXRleHQtcGF0aCJ9fX0se31dLDExMTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoInRpbnljb2xvcjIiKSxzPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRlZmF1bHRzLGw9dCgiLi4vLi4vY29tcG9uZW50cy9meC9ob3ZlcmxhYmVsX2RlZmF1bHRzIiksYz10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksdT10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKTtmdW5jdGlvbiBoKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYS5saW5rLmNvbG9yc2NhbGVzLHIsaSl9cigibGFiZWwiKSxyKCJjbWluIikscigiY21heCIpLHIoImNvbG9yc2NhbGUiKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsZil7ZnVuY3Rpb24gcChyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfXZhciBkPW4uZXh0ZW5kRGVlcChmLmhvdmVybGFiZWwsdC5ob3ZlcmxhYmVsKSxnPXQubm9kZSx2PWMubmV3Q29udGFpbmVyKGUsIm5vZGUiKTtmdW5jdGlvbiBtKHQsZSl7cmV0dXJuIG4uY29lcmNlKGcsdixhLm5vZGUsdCxlKX1tKCJsYWJlbCIpLG0oImdyb3VwcyIpLG0oIngiKSxtKCJ5IiksbSgicGFkIiksbSgidGhpY2tuZXNzIiksbSgibGluZS5jb2xvciIpLG0oImxpbmUud2lkdGgiKSxtKCJob3ZlcmluZm8iLHQuaG92ZXJpbmZvKSxsKGcsdixtLGQpLG0oImhvdmVydGVtcGxhdGUiKTt2YXIgeT1mLmNvbG9yd2F5O20oImNvbG9yIix2LmxhYmVsLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBpLmFkZE9wYWNpdHkoZnVuY3Rpb24odCl7cmV0dXJuIHlbdCV5Lmxlbmd0aF19KGUpLC44KX0pKTt2YXIgeD10Lmxpbmt8fHt9LGI9Yy5uZXdDb250YWluZXIoZSwibGluayIpO2Z1bmN0aW9uIF8odCxlKXtyZXR1cm4gbi5jb2VyY2UoeCxiLGEubGluayx0LGUpfV8oImxhYmVsIiksXygic291cmNlIiksXygidGFyZ2V0IiksXygidmFsdWUiKSxfKCJsaW5lLmNvbG9yIiksXygibGluZS53aWR0aCIpLF8oImhvdmVyaW5mbyIsdC5ob3ZlcmluZm8pLGwoeCxiLF8sZCksXygiaG92ZXJ0ZW1wbGF0ZSIpO3ZhciB3LGs9byhmLnBhcGVyX2JnY29sb3IpLmdldEx1bWluYW5jZSgpPC4zMzM/InJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KSI6InJnYmEoMCwgMCwgMCwgMC4yKSI7XygiY29sb3IiLG4ucmVwZWF0KGssYi52YWx1ZS5sZW5ndGgpKSx1KHgsYix7bmFtZToiY29sb3JzY2FsZXMiLGhhbmRsZUl0ZW1EZWZhdWx0czpofSkscyhlLGYscCkscCgib3JpZW50YXRpb24iKSxwKCJ2YWx1ZWZvcm1hdCIpLHAoInZhbHVlc3VmZml4Iiksdi54Lmxlbmd0aCYmdi55Lmxlbmd0aCYmKHc9ImZyZWVmb3JtIikscCgiYXJyYW5nZW1lbnQiLHcpLG4uY29lcmNlRm9udChwLCJ0ZXh0Zm9udCIsbi5leHRlbmRGbGF0KHt9LGYuZm9udCkpLGUuX2xlbmd0aD1udWxsfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZngvaG92ZXJsYWJlbF9kZWZhdWx0cyI6NjI5LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4vYXR0cmlidXRlcyI6MTExMCx0aW55Y29sb3IyOjUzNn1dLDExMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InNhbmtleSIsYmFzZVBsb3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3QiKSxzZWxlY3RQb2ludHM6dCgiLi9zZWxlY3QuanMiKSxjYXRlZ29yaWVzOlsibm9PcGFjaXR5Il0sbWV0YTp7fX19LHsiLi9hdHRyaWJ1dGVzIjoxMTEwLCIuL2Jhc2VfcGxvdCI6MTExMSwiLi9jYWxjIjoxMTEyLCIuL2RlZmF1bHRzIjoxMTE0LCIuL3Bsb3QiOjExMTYsIi4vc2VsZWN0LmpzIjoxMTE4fV0sMTExNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi9yZW5kZXIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgiLi9jb25zdGFudHMiKS5jbixjPXMuXztmdW5jdGlvbiB1KHQpe3JldHVybiIiIT09dH1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleT09PWUudHJhY2VJZH0pfWZ1bmN0aW9uIGYodCxlKXtuLnNlbGVjdCh0KS5zZWxlY3QoInBhdGgiKS5zdHlsZSgiZmlsbC1vcGFjaXR5IixlKSxuLnNlbGVjdCh0KS5zZWxlY3QoInJlY3QiKS5zdHlsZSgiZmlsbC1vcGFjaXR5IixlKX1mdW5jdGlvbiBwKHQpe24uc2VsZWN0KHQpLnNlbGVjdCgidGV4dC5uYW1lIikuc3R5bGUoImZpbGwiLCJibGFjayIpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi0xIT09dC5ub2RlLnNvdXJjZUxpbmtzLmluZGV4T2YoZS5saW5rKXx8LTEhPT10Lm5vZGUudGFyZ2V0TGlua3MuaW5kZXhPZihlLmxpbmspfX1mdW5jdGlvbiBnKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWUubm9kZS5zb3VyY2VMaW5rcy5pbmRleE9mKHQubGluayl8fC0xIT09ZS5ub2RlLnRhcmdldExpbmtzLmluZGV4T2YodC5saW5rKX19ZnVuY3Rpb24gdih0LGUscil7ZSYmciYmaChyLGUpLnNlbGVjdEFsbCgiLiIrbC5zYW5rZXlMaW5rKS5maWx0ZXIoZChlKSkuY2FsbCh5LmJpbmQoMCxlLHIsITEpKX1mdW5jdGlvbiBtKHQsZSxyKXtlJiZyJiZoKHIsZSkuc2VsZWN0QWxsKCIuIitsLnNhbmtleUxpbmspLmZpbHRlcihkKGUpKS5jYWxsKHguYmluZCgwLGUsciwhMSkpfWZ1bmN0aW9uIHkodCxlLHIsbil7dmFyIGE9bi5kYXR1bSgpLmxpbmsubGFiZWw7bi5zdHlsZSgiZmlsbC1vcGFjaXR5IixmdW5jdGlvbih0KXtpZighdC5saW5rLmNvbmNlbnRyYXRpb25zY2FsZSlyZXR1cm4uNH0pLGEmJmgoZSx0KS5zZWxlY3RBbGwoIi4iK2wuc2Fua2V5TGluaykuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmxpbmsubGFiZWw9PT1hfSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsZnVuY3Rpb24odCl7aWYoIXQubGluay5jb25jZW50cmF0aW9uc2NhbGUpcmV0dXJuLjR9KSxyJiZoKGUsdCkuc2VsZWN0QWxsKCIuIitsLnNhbmtleU5vZGUpLmZpbHRlcihnKHQpKS5jYWxsKHYpfWZ1bmN0aW9uIHgodCxlLHIsbil7dmFyIGE9bi5kYXR1bSgpLmxpbmsubGFiZWw7bi5zdHlsZSgiZmlsbC1vcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdC50aW55Q29sb3JBbHBoYX0pLGEmJmgoZSx0KS5zZWxlY3RBbGwoIi4iK2wuc2Fua2V5TGluaykuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmxpbmsubGFiZWw9PT1hfSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQudGlueUNvbG9yQWxwaGF9KSxyJiZoKGUsdCkuc2VsZWN0QWxsKGwuc2Fua2V5Tm9kZSkuZmlsdGVyKGcodCkpLmNhbGwobSl9ZnVuY3Rpb24gYih0LGUpe3ZhciByPXQuaG92ZXJsYWJlbHx8e30sbj1zLm5lc3RlZFByb3BlcnR5KHIsZSkuZ2V0KCk7cmV0dXJuIUFycmF5LmlzQXJyYXkobikmJm59ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuX2Z1bGxMYXlvdXQscz1yLl9wYXBlcixoPXIuX3NpemUsZD0wO2Q8dC5fZnVsbERhdGEubGVuZ3RoO2QrKylpZih0Ll9mdWxsRGF0YVtkXS52aXNpYmxlJiZ0Ll9mdWxsRGF0YVtkXS50eXBlPT09bC5zYW5rZXkmJiF0Ll9mdWxsRGF0YVtkXS5fdmlld0luaXRpYWwpe3ZhciBnPXQuX2Z1bGxEYXRhW2RdLm5vZGU7dC5fZnVsbERhdGFbZF0uX3ZpZXdJbml0aWFsPXtub2RlOntncm91cHM6Zy5ncm91cHMuc2xpY2UoKSx4OmcueC5zbGljZSgpLHk6Zy55LnNsaWNlKCl9fX12YXIgXz1jKHQsInNvdXJjZToiKSsiICIsdz1jKHQsInRhcmdldDoiKSsiICIsaz1jKHQsImNvbmNlbnRyYXRpb246IikrIiAiLFQ9Yyh0LCJpbmNvbWluZyBmbG93IGNvdW50OiIpKyIgIixNPWModCwib3V0Z29pbmcgZmxvdyBjb3VudDoiKSsiICI7YSh0LHMsZSx7d2lkdGg6aC53LGhlaWdodDpoLmgsbWFyZ2luOnt0OmgudCxyOmgucixiOmguYixsOmgubH19LHtsaW5rRXZlbnRzOntob3ZlcjpmdW5jdGlvbihlLHIsYSl7ITEhPT10Ll9mdWxsTGF5b3V0LmhvdmVybW9kZSYmKG4uc2VsZWN0KGUpLmNhbGwoeS5iaW5kKDAscixhLCEwKSksInNraXAiIT09ci5saW5rLnRyYWNlLmxpbmsuaG92ZXJpbmZvJiYoci5saW5rLmZ1bGxEYXRhPXIubGluay50cmFjZSx0LmVtaXQoInBsb3RseV9ob3ZlciIse2V2ZW50Om4uZXZlbnQscG9pbnRzOltyLmxpbmtdfSkpKX0sZm9sbG93OmZ1bmN0aW9uKGUsYSl7aWYoITEhPT10Ll9mdWxsTGF5b3V0LmhvdmVybW9kZSl7dmFyIHM9YS5saW5rLnRyYWNlLmxpbms7aWYoIm5vbmUiIT09cy5ob3ZlcmluZm8mJiJza2lwIiE9PXMuaG92ZXJpbmZvKXtmb3IodmFyIGw9W10sYz0wLGg9MDtoPGEuZmxvdy5saW5rcy5sZW5ndGg7aCsrKXt2YXIgZD1hLmZsb3cubGlua3NbaF07aWYoImNsb3Nlc3QiIT09dC5fZnVsbExheW91dC5ob3Zlcm1vZGV8fGEubGluay5wb2ludE51bWJlcj09PWQucG9pbnROdW1iZXIpe2EubGluay5wb2ludE51bWJlcj09PWQucG9pbnROdW1iZXImJihjPWgpLGQuZnVsbERhdGE9ZC50cmFjZSxzPWEubGluay50cmFjZS5saW5rO3ZhciBnPW0oZCksdj17dmFsdWVMYWJlbDpuLmZvcm1hdChhLnZhbHVlRm9ybWF0KShkLnZhbHVlKSthLnZhbHVlU3VmZml4fTtsLnB1c2goe3g6Z1swXSx5OmdbMV0sbmFtZTp2LnZhbHVlTGFiZWwsdGV4dDpbZC5sYWJlbHx8IiIsXytkLnNvdXJjZS5sYWJlbCx3K2QudGFyZ2V0LmxhYmVsLGQuY29uY2VudHJhdGlvbnNjYWxlP2srbi5mb3JtYXQoIiUwLjJmIikoZC5mbG93LmxhYmVsQ29uY2VudHJhdGlvbik6IiJdLmZpbHRlcih1KS5qb2luKCI8YnI+IiksY29sb3I6YihzLCJiZ2NvbG9yIil8fG8uYWRkT3BhY2l0eShkLmNvbG9yLDEpLGJvcmRlckNvbG9yOmIocywiYm9yZGVyY29sb3IiKSxmb250RmFtaWx5OmIocywiZm9udC5mYW1pbHkiKSxmb250U2l6ZTpiKHMsImZvbnQuc2l6ZSIpLGZvbnRDb2xvcjpiKHMsImZvbnQuY29sb3IiKSxuYW1lTGVuZ3RoOmIocywibmFtZWxlbmd0aCIpLHRleHRBbGlnbjpiKHMsImFsaWduIiksaWRlYWxBbGlnbjpuLmV2ZW50Lng8Z1swXT8icmlnaHQiOiJsZWZ0Iixob3ZlcnRlbXBsYXRlOnMuaG92ZXJ0ZW1wbGF0ZSxob3ZlcnRlbXBsYXRlTGFiZWxzOnYsZXZlbnREYXRhOltkXX0pfX1pLmxvbmVIb3ZlcihsLHtjb250YWluZXI6ci5faG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWluZXI6ci5fcGFwZXIubm9kZSgpLGdkOnQsYW5jaG9ySW5kZXg6Y30pLmVhY2goZnVuY3Rpb24oKXthLmxpbmsuY29uY2VudHJhdGlvbnNjYWxlfHxmKHRoaXMsLjY1KSxwKHRoaXMpfSl9fWZ1bmN0aW9uIG0odCl7dmFyIGUscjt0LmNpcmN1bGFyPyhlPSh0LmNpcmN1bGFyUGF0aERhdGEubGVmdElubmVyRXh0ZW50K3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodElubmVyRXh0ZW50KS8yLHI9dC5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudCk6KGU9KHQuc291cmNlLngxK3QudGFyZ2V0LngwKS8yLHI9KHQueTArdC55MSkvMik7dmFyIG49W2Uscl07cmV0dXJuInYiPT09dC50cmFjZS5vcmllbnRhdGlvbiYmbi5yZXZlcnNlKCksblswXSs9YS5wYXJlbnQudHJhbnNsYXRlWCxuWzFdKz1hLnBhcmVudC50cmFuc2xhdGVZLG59fSx1bmhvdmVyOmZ1bmN0aW9uKGUsYSxvKXshMSE9PXQuX2Z1bGxMYXlvdXQuaG92ZXJtb2RlJiYobi5zZWxlY3QoZSkuY2FsbCh4LmJpbmQoMCxhLG8sITApKSwic2tpcCIhPT1hLmxpbmsudHJhY2UubGluay5ob3ZlcmluZm8mJihhLmxpbmsuZnVsbERhdGE9YS5saW5rLnRyYWNlLHQuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtldmVudDpuLmV2ZW50LHBvaW50czpbYS5saW5rXX0pKSxpLmxvbmVVbmhvdmVyKHIuX2hvdmVybGF5ZXIubm9kZSgpKSl9LHNlbGVjdDpmdW5jdGlvbihlLHIpe3ZhciBhPXIubGluazthLm9yaWdpbmFsRXZlbnQ9bi5ldmVudCx0Ll9ob3ZlcmRhdGE9W2FdLGkuY2xpY2sodCx7dGFyZ2V0OiEwfSl9fSxub2RlRXZlbnRzOntob3ZlcjpmdW5jdGlvbihlLHIsYSl7ITEhPT10Ll9mdWxsTGF5b3V0LmhvdmVybW9kZSYmKG4uc2VsZWN0KGUpLmNhbGwodixyLGEpLCJza2lwIiE9PXIubm9kZS50cmFjZS5ub2RlLmhvdmVyaW5mbyYmKHIubm9kZS5mdWxsRGF0YT1yLm5vZGUudHJhY2UsdC5lbWl0KCJwbG90bHlfaG92ZXIiLHtldmVudDpuLmV2ZW50LHBvaW50czpbci5ub2RlXX0pKSl9LGZvbGxvdzpmdW5jdGlvbihlLGEpe2lmKCExIT09dC5fZnVsbExheW91dC5ob3Zlcm1vZGUpe3ZhciBvPWEubm9kZS50cmFjZS5ub2RlO2lmKCJub25lIiE9PW8uaG92ZXJpbmZvJiYic2tpcCIhPT1vLmhvdmVyaW5mbyl7dmFyIHM9bi5zZWxlY3QoZSkuc2VsZWN0KCIuIitsLm5vZGVSZWN0KSxjPXQuX2Z1bGxMYXlvdXQuX3BhcGVyZGl2Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoPXMubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQ9aC5sZWZ0LTItYy5sZWZ0LGc9aC5yaWdodCsyLWMubGVmdCx2PWgudG9wK2guaGVpZ2h0LzQtYy50b3AsbT17dmFsdWVMYWJlbDpuLmZvcm1hdChhLnZhbHVlRm9ybWF0KShhLm5vZGUudmFsdWUpK2EudmFsdWVTdWZmaXh9O2Eubm9kZS5mdWxsRGF0YT1hLm5vZGUudHJhY2U7dmFyIHk9aS5sb25lSG92ZXIoe3gwOmQseDE6Zyx5OnYsbmFtZTpuLmZvcm1hdChhLnZhbHVlRm9ybWF0KShhLm5vZGUudmFsdWUpK2EudmFsdWVTdWZmaXgsdGV4dDpbYS5ub2RlLmxhYmVsLFQrYS5ub2RlLnRhcmdldExpbmtzLmxlbmd0aCxNK2Eubm9kZS5zb3VyY2VMaW5rcy5sZW5ndGhdLmZpbHRlcih1KS5qb2luKCI8YnI+IiksY29sb3I6YihvLCJiZ2NvbG9yIil8fGEudGlueUNvbG9ySHVlLGJvcmRlckNvbG9yOmIobywiYm9yZGVyY29sb3IiKSxmb250RmFtaWx5OmIobywiZm9udC5mYW1pbHkiKSxmb250U2l6ZTpiKG8sImZvbnQuc2l6ZSIpLGZvbnRDb2xvcjpiKG8sImZvbnQuY29sb3IiKSxuYW1lTGVuZ3RoOmIobywibmFtZWxlbmd0aCIpLHRleHRBbGlnbjpiKG8sImFsaWduIiksaWRlYWxBbGlnbjoibGVmdCIsaG92ZXJ0ZW1wbGF0ZTpvLmhvdmVydGVtcGxhdGUsaG92ZXJ0ZW1wbGF0ZUxhYmVsczptLGV2ZW50RGF0YTpbYS5ub2RlXX0se2NvbnRhaW5lcjpyLl9ob3ZlcmxheWVyLm5vZGUoKSxvdXRlckNvbnRhaW5lcjpyLl9wYXBlci5ub2RlKCksZ2Q6dH0pO2YoeSwuODUpLHAoeSl9fX0sdW5ob3ZlcjpmdW5jdGlvbihlLGEsbyl7ITEhPT10Ll9mdWxsTGF5b3V0LmhvdmVybW9kZSYmKG4uc2VsZWN0KGUpLmNhbGwobSxhLG8pLCJza2lwIiE9PWEubm9kZS50cmFjZS5ub2RlLmhvdmVyaW5mbyYmKGEubm9kZS5mdWxsRGF0YT1hLm5vZGUudHJhY2UsdC5lbWl0KCJwbG90bHlfdW5ob3ZlciIse2V2ZW50Om4uZXZlbnQscG9pbnRzOlthLm5vZGVdfSkpLGkubG9uZVVuaG92ZXIoci5faG92ZXJsYXllci5ub2RlKCkpKX0sc2VsZWN0OmZ1bmN0aW9uKGUscixhKXt2YXIgbz1yLm5vZGU7by5vcmlnaW5hbEV2ZW50PW4uZXZlbnQsdC5faG92ZXJkYXRhPVtvXSxuLnNlbGVjdChlKS5jYWxsKG0scixhKSxpLmNsaWNrKHQse3RhcmdldDohMH0pfX19KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2xpYiI6NzE3LCIuL2NvbnN0YW50cyI6MTExMywiLi9yZW5kZXIiOjExMTcsZDM6MTY1fV0sMTExNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpLGE9dCgiZDMiKSxpPXQoInRpbnljb2xvcjIiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGw9dCgiQHBsb3RseS9kMy1zYW5rZXkiKSxjPXQoIkBwbG90bHkvZDMtc2Fua2V5LWNpcmN1bGFyIiksdT10KCJkMy1mb3JjZSIpLGg9dCgiLi4vLi4vbGliIiksZj10KCIuLi8uLi9saWIvZ3VwIikscD1mLmtleUZ1bixkPWYucmVwZWF0LGc9Zi51bndyYXAsdj10KCJkMy1pbnRlcnBvbGF0ZSIpLmludGVycG9sYXRlTnVtYmVyLG09dCgiLi4vLi4vcmVnaXN0cnkiKTtmdW5jdGlvbiB5KCl7dmFyIHQ9LjU7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKGUubGluay5jaXJjdWxhcilyZXR1cm4gcj1lLmxpbmssbj1yLndpZHRoLzIsYT1yLmNpcmN1bGFyUGF0aERhdGEsInRvcCI9PT1yLmNpcmN1bGFyTGlua1R5cGU/Ik0gIithLnRhcmdldFgrIiAiKyhhLnRhcmdldFkrbikrIiBMIithLnJpZ2h0SW5uZXJFeHRlbnQrIiAiKyhhLnRhcmdldFkrbikrIkEiKyhhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMrbikrIiAiKyhhLnJpZ2h0U21hbGxBcmNSYWRpdXMrbikrIiAwIDAgMSAiKyhhLnJpZ2h0RnVsbEV4dGVudC1uKSsiICIrKGEudGFyZ2V0WS1hLnJpZ2h0U21hbGxBcmNSYWRpdXMpKyJMIisoYS5yaWdodEZ1bGxFeHRlbnQtbikrIiAiK2EudmVydGljYWxSaWdodElubmVyRXh0ZW50KyJBIisoYS5yaWdodExhcmdlQXJjUmFkaXVzK24pKyIgIisoYS5yaWdodExhcmdlQXJjUmFkaXVzK24pKyIgMCAwIDEgIithLnJpZ2h0SW5uZXJFeHRlbnQrIiAiKyhhLnZlcnRpY2FsRnVsbEV4dGVudC1uKSsiTCIrYS5sZWZ0SW5uZXJFeHRlbnQrIiAiKyhhLnZlcnRpY2FsRnVsbEV4dGVudC1uKSsiQSIrKGEubGVmdExhcmdlQXJjUmFkaXVzK24pKyIgIisoYS5sZWZ0TGFyZ2VBcmNSYWRpdXMrbikrIiAwIDAgMSAiKyhhLmxlZnRGdWxsRXh0ZW50K24pKyIgIithLnZlcnRpY2FsTGVmdElubmVyRXh0ZW50KyJMIisoYS5sZWZ0RnVsbEV4dGVudCtuKSsiICIrKGEuc291cmNlWS1hLmxlZnRTbWFsbEFyY1JhZGl1cykrIkEiKyhhLmxlZnRMYXJnZUFyY1JhZGl1cytuKSsiICIrKGEubGVmdFNtYWxsQXJjUmFkaXVzK24pKyIgMCAwIDEgIithLmxlZnRJbm5lckV4dGVudCsiICIrKGEuc291cmNlWStuKSsiTCIrYS5zb3VyY2VYKyIgIisoYS5zb3VyY2VZK24pKyJMIithLnNvdXJjZVgrIiAiKyhhLnNvdXJjZVktbikrIkwiK2EubGVmdElubmVyRXh0ZW50KyIgIisoYS5zb3VyY2VZLW4pKyJBIisoYS5sZWZ0TGFyZ2VBcmNSYWRpdXMtbikrIiAiKyhhLmxlZnRTbWFsbEFyY1JhZGl1cy1uKSsiIDAgMCAwICIrKGEubGVmdEZ1bGxFeHRlbnQtbikrIiAiKyhhLnNvdXJjZVktYS5sZWZ0U21hbGxBcmNSYWRpdXMpKyJMIisoYS5sZWZ0RnVsbEV4dGVudC1uKSsiICIrYS52ZXJ0aWNhbExlZnRJbm5lckV4dGVudCsiQSIrKGEubGVmdExhcmdlQXJjUmFkaXVzLW4pKyIgIisoYS5sZWZ0TGFyZ2VBcmNSYWRpdXMtbikrIiAwIDAgMCAiK2EubGVmdElubmVyRXh0ZW50KyIgIisoYS52ZXJ0aWNhbEZ1bGxFeHRlbnQrbikrIkwiK2EucmlnaHRJbm5lckV4dGVudCsiICIrKGEudmVydGljYWxGdWxsRXh0ZW50K24pKyJBIisoYS5yaWdodExhcmdlQXJjUmFkaXVzLW4pKyIgIisoYS5yaWdodExhcmdlQXJjUmFkaXVzLW4pKyIgMCAwIDAgIisoYS5yaWdodEZ1bGxFeHRlbnQrbikrIiAiK2EudmVydGljYWxSaWdodElubmVyRXh0ZW50KyJMIisoYS5yaWdodEZ1bGxFeHRlbnQrbikrIiAiKyhhLnRhcmdldFktYS5yaWdodFNtYWxsQXJjUmFkaXVzKSsiQSIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cy1uKSsiICIrKGEucmlnaHRTbWFsbEFyY1JhZGl1cy1uKSsiIDAgMCAwICIrYS5yaWdodElubmVyRXh0ZW50KyIgIisoYS50YXJnZXRZLW4pKyJMIithLnRhcmdldFgrIiAiKyhhLnRhcmdldFktbikrIloiOiJNICIrYS50YXJnZXRYKyIgIisoYS50YXJnZXRZLW4pKyIgTCIrYS5yaWdodElubmVyRXh0ZW50KyIgIisoYS50YXJnZXRZLW4pKyJBIisoYS5yaWdodExhcmdlQXJjUmFkaXVzK24pKyIgIisoYS5yaWdodFNtYWxsQXJjUmFkaXVzK24pKyIgMCAwIDAgIisoYS5yaWdodEZ1bGxFeHRlbnQtbikrIiAiKyhhLnRhcmdldFkrYS5yaWdodFNtYWxsQXJjUmFkaXVzKSsiTCIrKGEucmlnaHRGdWxsRXh0ZW50LW4pKyIgIithLnZlcnRpY2FsUmlnaHRJbm5lckV4dGVudCsiQSIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cytuKSsiICIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cytuKSsiIDAgMCAwICIrYS5yaWdodElubmVyRXh0ZW50KyIgIisoYS52ZXJ0aWNhbEZ1bGxFeHRlbnQrbikrIkwiK2EubGVmdElubmVyRXh0ZW50KyIgIisoYS52ZXJ0aWNhbEZ1bGxFeHRlbnQrbikrIkEiKyhhLmxlZnRMYXJnZUFyY1JhZGl1cytuKSsiICIrKGEubGVmdExhcmdlQXJjUmFkaXVzK24pKyIgMCAwIDAgIisoYS5sZWZ0RnVsbEV4dGVudCtuKSsiICIrYS52ZXJ0aWNhbExlZnRJbm5lckV4dGVudCsiTCIrKGEubGVmdEZ1bGxFeHRlbnQrbikrIiAiKyhhLnNvdXJjZVkrYS5sZWZ0U21hbGxBcmNSYWRpdXMpKyJBIisoYS5sZWZ0TGFyZ2VBcmNSYWRpdXMrbikrIiAiKyhhLmxlZnRTbWFsbEFyY1JhZGl1cytuKSsiIDAgMCAwICIrYS5sZWZ0SW5uZXJFeHRlbnQrIiAiKyhhLnNvdXJjZVktbikrIkwiK2Euc291cmNlWCsiICIrKGEuc291cmNlWS1uKSsiTCIrYS5zb3VyY2VYKyIgIisoYS5zb3VyY2VZK24pKyJMIithLmxlZnRJbm5lckV4dGVudCsiICIrKGEuc291cmNlWStuKSsiQSIrKGEubGVmdExhcmdlQXJjUmFkaXVzLW4pKyIgIisoYS5sZWZ0U21hbGxBcmNSYWRpdXMtbikrIiAwIDAgMSAiKyhhLmxlZnRGdWxsRXh0ZW50LW4pKyIgIisoYS5zb3VyY2VZK2EubGVmdFNtYWxsQXJjUmFkaXVzKSsiTCIrKGEubGVmdEZ1bGxFeHRlbnQtbikrIiAiK2EudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQrIkEiKyhhLmxlZnRMYXJnZUFyY1JhZGl1cy1uKSsiICIrKGEubGVmdExhcmdlQXJjUmFkaXVzLW4pKyIgMCAwIDEgIithLmxlZnRJbm5lckV4dGVudCsiICIrKGEudmVydGljYWxGdWxsRXh0ZW50LW4pKyJMIithLnJpZ2h0SW5uZXJFeHRlbnQrIiAiKyhhLnZlcnRpY2FsRnVsbEV4dGVudC1uKSsiQSIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cy1uKSsiICIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cy1uKSsiIDAgMCAxICIrKGEucmlnaHRGdWxsRXh0ZW50K24pKyIgIithLnZlcnRpY2FsUmlnaHRJbm5lckV4dGVudCsiTCIrKGEucmlnaHRGdWxsRXh0ZW50K24pKyIgIisoYS50YXJnZXRZK2EucmlnaHRTbWFsbEFyY1JhZGl1cykrIkEiKyhhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMtbikrIiAiKyhhLnJpZ2h0U21hbGxBcmNSYWRpdXMtbikrIiAwIDAgMSAiK2EucmlnaHRJbm5lckV4dGVudCsiICIrKGEudGFyZ2V0WStuKSsiTCIrYS50YXJnZXRYKyIgIisoYS50YXJnZXRZK24pKyJaIjt2YXIgcixuLGEsaT1lLmxpbmsuc291cmNlLngxLG89ZS5saW5rLnRhcmdldC54MCxzPXYoaSxvKSxsPXModCksYz1zKDEtdCksdT1lLmxpbmsueTAtZS5saW5rLndpZHRoLzIsaD1lLmxpbmsueTArZS5saW5rLndpZHRoLzIsZj1lLmxpbmsueTEtZS5saW5rLndpZHRoLzIscD1lLmxpbmsueTErZS5saW5rLndpZHRoLzI7cmV0dXJuIk0iK2krIiwiK3UrIkMiK2wrIiwiK3UrIiAiK2MrIiwiK2YrIiAiK28rIiwiK2YrIkwiK28rIiwiK3ArIkMiK2MrIiwiK3ArIiAiK2wrIiwiK2grIiAiK2krIiwiK2grIloifX1mdW5jdGlvbiB4KHQpe3QuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdC5ub2RlLngwLnRvRml4ZWQoMykrIiwgIit0Lm5vZGUueTAudG9GaXhlZCgzKSsiKSJ9KX1mdW5jdGlvbiBiKHQpe3QuY2FsbCh4KX1mdW5jdGlvbiBfKHQsZSl7dC5jYWxsKGIpLGUuYXR0cigiZCIseSgpKX1mdW5jdGlvbiB3KHQpe3QuYXR0cigid2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGUueDEtdC5ub2RlLngwfSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0KXtyZXR1cm4gdC52aXNpYmxlSGVpZ2h0fSl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gdC5saW5rLndpZHRoPjF8fHQubGlua0xpbmVXaWR0aD4wfWZ1bmN0aW9uIFQodCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QudHJhbnNsYXRlWCsiLCIrdC50cmFuc2xhdGVZKyIpIisodC5ob3Jpem9udGFsPyJtYXRyaXgoMSAwIDAgMSAwIDApIjoibWF0cml4KDAgMSAxIDAgMCAwKSIpfWZ1bmN0aW9uIE0odCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Lmhvcml6b250YWw/MDp0LmxhYmVsWSkrIiAiKyh0Lmhvcml6b250YWw/dC5sYWJlbFk6MCkrIikifWZ1bmN0aW9uIEEodCl7cmV0dXJuIGEuc3ZnLmxpbmUoKShbW3QuaG9yaXpvbnRhbD90LmxlZnQ/LXQuc2l6ZUFjcm9zczp0LnZpc2libGVXaWR0aCtuLm5vZGVUZXh0T2Zmc2V0SG9yaXpvbnRhbDpuLm5vZGVUZXh0T2Zmc2V0SG9yaXpvbnRhbCwwXSxbdC5ob3Jpem9udGFsP3QubGVmdD8tbi5ub2RlVGV4dE9mZnNldEhvcml6b250YWw6dC5zaXplQWNyb3NzOnQudmlzaWJsZUhlaWdodC1uLm5vZGVUZXh0T2Zmc2V0SG9yaXpvbnRhbCwwXV0pfWZ1bmN0aW9uIFModCl7cmV0dXJuIHQuaG9yaXpvbnRhbD8ibWF0cml4KDEgMCAwIDEgMCAwKSI6Im1hdHJpeCgwIDEgMSAwIDAgMCkifWZ1bmN0aW9uIEUodCl7cmV0dXJuIHQuaG9yaXpvbnRhbD8ic2NhbGUoMSAxKSI6InNjYWxlKC0xIDEpIn1mdW5jdGlvbiBMKHQpe3JldHVybiB0LmRhcmtCYWNrZ3JvdW5kJiYhdC5ob3Jpem9udGFsPyJyZ2IoMjU1LDI1NSwyNTUpIjoicmdiKDAsMCwwKSJ9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gdC5ob3Jpem9udGFsJiZ0LmxlZnQ/IjEwMCUiOiIwJSJ9ZnVuY3Rpb24gUCh0LGUscil7dC5vbigiLmJhc2ljIixudWxsKS5vbigibW91c2VvdmVyLmJhc2ljIixmdW5jdGlvbih0KXt0LmludGVyYWN0aW9uU3RhdGUuZHJhZ0luUHJvZ3Jlc3N8fHQucGFydE9mR3JvdXB8fChyLmhvdmVyKHRoaXMsdCxlKSx0LmludGVyYWN0aW9uU3RhdGUuaG92ZXJlZD1bdGhpcyx0XSl9KS5vbigibW91c2Vtb3ZlLmJhc2ljIixmdW5jdGlvbih0KXt0LmludGVyYWN0aW9uU3RhdGUuZHJhZ0luUHJvZ3Jlc3N8fHQucGFydE9mR3JvdXB8fChyLmZvbGxvdyh0aGlzLHQpLHQuaW50ZXJhY3Rpb25TdGF0ZS5ob3ZlcmVkPVt0aGlzLHRdKX0pLm9uKCJtb3VzZW91dC5iYXNpYyIsZnVuY3Rpb24odCl7dC5pbnRlcmFjdGlvblN0YXRlLmRyYWdJblByb2dyZXNzfHx0LnBhcnRPZkdyb3VwfHwoci51bmhvdmVyKHRoaXMsdCxlKSx0LmludGVyYWN0aW9uU3RhdGUuaG92ZXJlZD0hMSl9KS5vbigiY2xpY2suYmFzaWMiLGZ1bmN0aW9uKHQpe3QuaW50ZXJhY3Rpb25TdGF0ZS5ob3ZlcmVkJiYoci51bmhvdmVyKHRoaXMsdCxlKSx0LmludGVyYWN0aW9uU3RhdGUuaG92ZXJlZD0hMSksdC5pbnRlcmFjdGlvblN0YXRlLmRyYWdJblByb2dyZXNzfHx0LnBhcnRPZkdyb3VwfHxyLnNlbGVjdCh0aGlzLHQsZSl9KX1mdW5jdGlvbiBPKHQsZSxyLGkpe3ZhciBvPWEuYmVoYXZpb3IuZHJhZygpLm9yaWdpbihmdW5jdGlvbih0KXtyZXR1cm57eDp0Lm5vZGUueDArdC52aXNpYmxlV2lkdGgvMix5OnQubm9kZS55MCt0LnZpc2libGVIZWlnaHQvMn19KS5vbigiZHJhZ3N0YXJ0IixmdW5jdGlvbihhKXtpZigiZml4ZWQiIT09YS5hcnJhbmdlbWVudCYmKGguZW5zdXJlU2luZ2xlKGkuX2Z1bGxMYXlvdXQuX2luZm9sYXllciwiZyIsImRyYWdjb3ZlciIsZnVuY3Rpb24odCl7aS5fZnVsbExheW91dC5fZHJhZ0NvdmVyPXR9KSxoLnJhaXNlVG9Ub3AodGhpcyksYS5pbnRlcmFjdGlvblN0YXRlLmRyYWdJblByb2dyZXNzPWEubm9kZSxJKGEubm9kZSksYS5pbnRlcmFjdGlvblN0YXRlLmhvdmVyZWQmJihyLm5vZGVFdmVudHMudW5ob3Zlci5hcHBseSgwLGEuaW50ZXJhY3Rpb25TdGF0ZS5ob3ZlcmVkKSxhLmludGVyYWN0aW9uU3RhdGUuaG92ZXJlZD0hMSksInNuYXAiPT09YS5hcnJhbmdlbWVudCkpe3ZhciBvPWEudHJhY2VJZCsifCIrYS5rZXk7YS5mb3JjZUxheW91dHNbb10/YS5mb3JjZUxheW91dHNbb10uYWxwaGEoMSk6ZnVuY3Rpb24odCxlLHIsYSl7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ueT0odFtlXS55MCt0W2VdLnkxKS8yLHRbZV0ueD0odFtlXS54MCt0W2VdLngxKS8yfShyLmdyYXBoLm5vZGVzKTt2YXIgaT1yLmdyYXBoLm5vZGVzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5vcmlnaW5hbFg9PT1yLm5vZGUub3JpZ2luYWxYfSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiF0LnBhcnRPZkdyb3VwfSk7ci5mb3JjZUxheW91dHNbZV09dS5mb3JjZVNpbXVsYXRpb24oaSkuYWxwaGFEZWNheSgwKS5mb3JjZSgiY29sbGlkZSIsdS5mb3JjZUNvbGxpZGUoKS5yYWRpdXMoZnVuY3Rpb24odCl7cmV0dXJuIHQuZHkvMityLm5vZGVQYWQvMn0pLnN0cmVuZ3RoKDEpLml0ZXJhdGlvbnMobi5mb3JjZUl0ZXJhdGlvbnMpKS5mb3JjZSgiY29uc3RyYWluIixmdW5jdGlvbih0LGUscixhKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV07bz09PWEuaW50ZXJhY3Rpb25TdGF0ZS5kcmFnSW5Qcm9ncmVzcz8oby54PW8ubGFzdERyYWdnZWRYLG8ueT1vLmxhc3REcmFnZ2VkWSk6KG8udng9KG8ub3JpZ2luYWxYLW8ueCkvbi5mb3JjZVRpY2tzUGVyRnJhbWUsby55PU1hdGgubWluKGEuc2l6ZS1vLmR5LzIsTWF0aC5tYXgoby5keS8yLG8ueSkpKSx0PU1hdGgubWF4KHQsTWF0aC5hYnMoby52eCksTWF0aC5hYnMoby52eSkpfSFhLmludGVyYWN0aW9uU3RhdGUuZHJhZ0luUHJvZ3Jlc3MmJnQ8LjEmJmEuZm9yY2VMYXlvdXRzW2VdLmFscGhhKCk+MCYmYS5mb3JjZUxheW91dHNbZV0uYWxwaGEoMCl9fSgwLGUsaSxyKSkuc3RvcCgpfSgwLG8sYSksZnVuY3Rpb24odCxlLHIsYSxpKXt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uIG8oKXt2YXIgcztmb3Iocz0wO3M8bi5mb3JjZVRpY2tzUGVyRnJhbWU7cysrKXIuZm9yY2VMYXlvdXRzW2FdLnRpY2soKTt2YXIgbD1yLmdyYXBoLm5vZGVzO2lmKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ueTA9dFtlXS55LXRbZV0uZHkvMix0W2VdLnkxPXRbZV0ueTArdFtlXS5keSx0W2VdLngwPXRbZV0ueC10W2VdLmR4LzIsdFtlXS54MT10W2VdLngwK3RbZV0uZHh9KGwpLHIuc2Fua2V5LnVwZGF0ZShyLmdyYXBoKSxfKHQuZmlsdGVyKEQocikpLGUpLHIuZm9yY2VMYXlvdXRzW2FdLmFscGhhKCk+MCl3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG8pO2Vsc2V7dmFyIGM9ci5ub2RlLm9yaWdpbmFsWDtyLm5vZGUueDA9Yy1yLnZpc2libGVXaWR0aC8yLHIubm9kZS54MT1jK3IudmlzaWJsZVdpZHRoLzIseihyLGkpfX0pfSh0LGUsYSxvLGkpfX0pLm9uKCJkcmFnIixmdW5jdGlvbihyKXtpZigiZml4ZWQiIT09ci5hcnJhbmdlbWVudCl7dmFyIG49YS5ldmVudC54LGk9YS5ldmVudC55OyJzbmFwIj09PXIuYXJyYW5nZW1lbnQ/KHIubm9kZS54MD1uLXIudmlzaWJsZVdpZHRoLzIsci5ub2RlLngxPW4rci52aXNpYmxlV2lkdGgvMixyLm5vZGUueTA9aS1yLnZpc2libGVIZWlnaHQvMixyLm5vZGUueTE9aStyLnZpc2libGVIZWlnaHQvMik6KCJmcmVlZm9ybSI9PT1yLmFycmFuZ2VtZW50JiYoci5ub2RlLngwPW4tci52aXNpYmxlV2lkdGgvMixyLm5vZGUueDE9bityLnZpc2libGVXaWR0aC8yKSxpPU1hdGgubWF4KDAsTWF0aC5taW4oci5zaXplLXIudmlzaWJsZUhlaWdodC8yLGkpKSxyLm5vZGUueTA9aS1yLnZpc2libGVIZWlnaHQvMixyLm5vZGUueTE9aStyLnZpc2libGVIZWlnaHQvMiksSShyLm5vZGUpLCJzbmFwIiE9PXIuYXJyYW5nZW1lbnQmJihyLnNhbmtleS51cGRhdGUoci5ncmFwaCksXyh0LmZpbHRlcihEKHIpKSxlKSl9fSkub24oImRyYWdlbmQiLGZ1bmN0aW9uKHQpe2lmKCJmaXhlZCIhPT10LmFycmFuZ2VtZW50KXt0LmludGVyYWN0aW9uU3RhdGUuZHJhZ0luUHJvZ3Jlc3M9ITE7Zm9yKHZhciBlPTA7ZTx0Lm5vZGUuY2hpbGRyZW5Ob2Rlcy5sZW5ndGg7ZSsrKXQubm9kZS5jaGlsZHJlbk5vZGVzW2VdLng9dC5ub2RlLngsdC5ub2RlLmNoaWxkcmVuTm9kZXNbZV0ueT10Lm5vZGUueTsic25hcCIhPT10LmFycmFuZ2VtZW50JiZ6KHQsaSl9fSk7dC5vbigiLmRyYWciLG51bGwpLmNhbGwobyl9ZnVuY3Rpb24geih0LGUpe2Zvcih2YXIgcj1bXSxuPVtdLGE9MDthPHQuZ3JhcGgubm9kZXMubGVuZ3RoO2ErKyl7dmFyIGk9KHQuZ3JhcGgubm9kZXNbYV0ueDArdC5ncmFwaC5ub2Rlc1thXS54MSkvMixvPSh0LmdyYXBoLm5vZGVzW2FdLnkwK3QuZ3JhcGgubm9kZXNbYV0ueTEpLzI7ci5wdXNoKGkvdC5maWd1cmUud2lkdGgpLG4ucHVzaChvL3QuZmlndXJlLmhlaWdodCl9bS5jYWxsKCJfZ3VpUmVzdHlsZSIsZSx7Im5vZGUueCI6W3JdLCJub2RlLnkiOltuXX0sdC50cmFjZS5pbmRleCkudGhlbihmdW5jdGlvbigpe2UuX2Z1bGxMYXlvdXQuX2RyYWdDb3ZlciYmZS5fZnVsbExheW91dC5fZHJhZ0NvdmVyLnJlbW92ZSgpfSl9ZnVuY3Rpb24gSSh0KXt0Lmxhc3REcmFnZ2VkWD10LngwK3QuZHgvMix0Lmxhc3REcmFnZ2VkWT10LnkwK3QuZHkvMn1mdW5jdGlvbiBEKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlLm9yaWdpbmFsWD09PXQubm9kZS5vcmlnaW5hbFh9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscix1LGYpe3ZhciB2PSExO2guZW5zdXJlU2luZ2xlKHQuX2Z1bGxMYXlvdXQuX2luZm9sYXllciwiZyIsImZpcnN0LXJlbmRlciIsZnVuY3Rpb24oKXt2PSEwfSk7dmFyIG09dC5fZnVsbExheW91dC5fZHJhZ0NvdmVyLGI9ci5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGcodCkudHJhY2UudmlzaWJsZX0pLm1hcChmdW5jdGlvbih0LGUscil7dmFyIGEsbz1nKGUpLHM9by50cmFjZSx1PXMuZG9tYWluLGY9ImgiPT09cy5vcmllbnRhdGlvbixwPXMubm9kZS5wYWQsZD1zLm5vZGUudGhpY2tuZXNzLHY9dC53aWR0aCoodS54WzFdLXUueFswXSksbT10LmhlaWdodCoodS55WzFdLXUueVswXSkseT1vLl9ub2Rlcyx4PW8uX2xpbmtzLGI9by5jaXJjdWxhcjsoYT1iP2Muc2Fua2V5Q2lyY3VsYXIoKS5jaXJjdWxhckxpbmtHYXAoMCk6bC5zYW5rZXkoKSkuaXRlcmF0aW9ucyhuLnNhbmtleUl0ZXJhdGlvbnMpLnNpemUoZj9bdixtXTpbbSx2XSkubm9kZVdpZHRoKGQpLm5vZGVQYWRkaW5nKHApLm5vZGVJZChmdW5jdGlvbih0KXtyZXR1cm4gdC5wb2ludE51bWJlcn0pLm5vZGVzKHkpLmxpbmtzKHgpO3ZhciBfLHcsayxUPWEoKTtmb3IodmFyIE0gaW4gYS5ub2RlUGFkZGluZygpPHAmJmgud2Fybigibm9kZS5wYWQgd2FzIHJlZHVjZWQgdG8gIixhLm5vZGVQYWRkaW5nKCksIiB0byBmaXQgd2l0aGluIHRoZSBmaWd1cmUuIiksby5fZ3JvdXBMb29rdXApe3ZhciBBLFM9cGFyc2VJbnQoby5fZ3JvdXBMb29rdXBbTV0pO2ZvcihfPTA7XzxULm5vZGVzLmxlbmd0aDtfKyspaWYoVC5ub2Rlc1tfXS5wb2ludE51bWJlcj09PVMpe0E9VC5ub2Rlc1tfXTticmVha31pZihBKXt2YXIgRT17cG9pbnROdW1iZXI6cGFyc2VJbnQoTSkseDA6QS54MCx4MTpBLngxLHkwOkEueTAseTE6QS55MSxwYXJ0T2ZHcm91cDohMCxzb3VyY2VMaW5rczpbXSx0YXJnZXRMaW5rczpbXX07VC5ub2Rlcy51bnNoaWZ0KEUpLEEuY2hpbGRyZW5Ob2Rlcy51bnNoaWZ0KEUpfX1pZihmdW5jdGlvbigpe2ZvcihfPTA7XzxULm5vZGVzLmxlbmd0aDtfKyspe3ZhciB0LGUscj1ULm5vZGVzW19dLG49e307Zm9yKHc9MDt3PHIudGFyZ2V0TGlua3MubGVuZ3RoO3crKyl0PShlPXIudGFyZ2V0TGlua3Nbd10pLnNvdXJjZS5wb2ludE51bWJlcisiOiIrZS50YXJnZXQucG9pbnROdW1iZXIsbi5oYXNPd25Qcm9wZXJ0eSh0KXx8KG5bdF09W10pLG5bdF0ucHVzaChlKTt2YXIgYT1PYmplY3Qua2V5cyhuKTtmb3Iodz0wO3c8YS5sZW5ndGg7dysrKXt2YXIgbz1uW3Q9YVt3XV0scz0wLGw9e307Zm9yKGs9MDtrPG8ubGVuZ3RoO2srKylsWyhlPW9ba10pLmxhYmVsXXx8KGxbZS5sYWJlbF09MCksbFtlLmxhYmVsXSs9ZS52YWx1ZSxzKz1lLnZhbHVlO2ZvcihrPTA7azxvLmxlbmd0aDtrKyspKGU9b1trXSkuZmxvdz17dmFsdWU6cyxsYWJlbENvbmNlbnRyYXRpb246bFtlLmxhYmVsXS9zLGNvbmNlbnRyYXRpb246ZS52YWx1ZS9zLGxpbmtzOm99LGUuY29uY2VudHJhdGlvbnNjYWxlJiYoZS5jb2xvcj1pKGUuY29uY2VudHJhdGlvbnNjYWxlKGUuZmxvdy5sYWJlbENvbmNlbnRyYXRpb24pKSl9dmFyIGM9MDtmb3Iodz0wO3c8ci5zb3VyY2VMaW5rcy5sZW5ndGg7dysrKWMrPXIuc291cmNlTGlua3Nbd10udmFsdWU7Zm9yKHc9MDt3PHIuc291cmNlTGlua3MubGVuZ3RoO3crKykoZT1yLnNvdXJjZUxpbmtzW3ddKS5jb25jZW50cmF0aW9uT3V0PWUudmFsdWUvYzt2YXIgdT0wO2Zvcih3PTA7dzxyLnRhcmdldExpbmtzLmxlbmd0aDt3KyspdSs9ci50YXJnZXRMaW5rc1t3XS52YWx1ZTtmb3Iodz0wO3c8ci50YXJnZXRMaW5rcy5sZW5ndGg7dysrKShlPXIudGFyZ2V0TGlua3Nbd10pLmNvbmNlbnJhdGlvbkluPWUudmFsdWUvdX19KCkscy5ub2RlLngubGVuZ3RoJiZzLm5vZGUueS5sZW5ndGgpe2ZvcihfPTA7XzxNYXRoLm1pbihzLm5vZGUueC5sZW5ndGgscy5ub2RlLnkubGVuZ3RoLFQubm9kZXMubGVuZ3RoKTtfKyspaWYocy5ub2RlLnhbX10mJnMubm9kZS55W19dKXt2YXIgTD1bcy5ub2RlLnhbX10qdixzLm5vZGUueVtfXSptXTtULm5vZGVzW19dLngwPUxbMF0tZC8yLFQubm9kZXNbX10ueDE9TFswXStkLzI7dmFyIEM9VC5ub2Rlc1tfXS55MS1ULm5vZGVzW19dLnkwO1Qubm9kZXNbX10ueTA9TFsxXS1DLzIsVC5ub2Rlc1tfXS55MT1MWzFdK0MvMn0ic25hcCI9PT1zLmFycmFuZ2VtZW50JiZmdW5jdGlvbih0KXt0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGUscixuLGE9MCxpPXQubGVuZ3RoO2Zvcih0LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC55MC1lLnkwfSksbj0wO248aTsrK24pKGU9dFtuXSkueTA+PWF8fChyPWEtZS55MCk+MWUtNiYmKGUueTArPXIsZS55MSs9ciksYT1lLnkxK3B9KX0oZnVuY3Rpb24odCl7dmFyIGUscixuPXQubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3gwOnQueDAsaW5kZXg6ZX19KS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueDAtZS54MH0pLGE9W10saT0tMSxvPS0xLzA7Zm9yKF89MDtfPG4ubGVuZ3RoO18rKyl7dmFyIHM9dFtuW19dLmluZGV4XTtzLngwPm8rZCYmKGkrPTEsZT1zLngwKSxvPXMueDAsYVtpXXx8KGFbaV09W10pLGFbaV0ucHVzaChzKSxyPWUtcy54MCxzLngwKz1yLHMueDErPXJ9cmV0dXJuIGF9KHk9VC5ub2RlcykpLGEudXBkYXRlKFQpfXJldHVybntjaXJjdWxhcjpiLGtleTpyLHRyYWNlOnMsZ3VpZDpoLnJhbmRzdHIoKSxob3Jpem9udGFsOmYsd2lkdGg6dixoZWlnaHQ6bSxub2RlUGFkOnMubm9kZS5wYWQsbm9kZUxpbmVDb2xvcjpzLm5vZGUubGluZS5jb2xvcixub2RlTGluZVdpZHRoOnMubm9kZS5saW5lLndpZHRoLGxpbmtMaW5lQ29sb3I6cy5saW5rLmxpbmUuY29sb3IsbGlua0xpbmVXaWR0aDpzLmxpbmsubGluZS53aWR0aCx2YWx1ZUZvcm1hdDpzLnZhbHVlZm9ybWF0LHZhbHVlU3VmZml4OnMudmFsdWVzdWZmaXgsdGV4dEZvbnQ6cy50ZXh0Zm9udCx0cmFuc2xhdGVYOnUueFswXSp0LndpZHRoK3QubWFyZ2luLmwsdHJhbnNsYXRlWTp0LmhlaWdodC11LnlbMV0qdC5oZWlnaHQrdC5tYXJnaW4udCxkcmFnUGFyYWxsZWw6Zj9tOnYsZHJhZ1BlcnBlbmRpY3VsYXI6Zj92Om0sYXJyYW5nZW1lbnQ6cy5hcnJhbmdlbWVudCxzYW5rZXk6YSxncmFwaDpULGZvcmNlTGF5b3V0czp7fSxpbnRlcmFjdGlvblN0YXRlOntkcmFnSW5Qcm9ncmVzczohMSxob3ZlcmVkOiExfX19LmJpbmQobnVsbCx1KSksXz1lLnNlbGVjdEFsbCgiLiIrbi5jbi5zYW5rZXkpLmRhdGEoYixwKTtfLmV4aXQoKS5yZW1vdmUoKSxfLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnNhbmtleSwhMCkuc3R5bGUoImJveC1zaXppbmciLCJjb250ZW50LWJveCIpLnN0eWxlKCJwb3NpdGlvbiIsImFic29sdXRlIikuc3R5bGUoImxlZnQiLDApLnN0eWxlKCJzaGFwZS1yZW5kZXJpbmciLCJnZW9tZXRyaWNQcmVjaXNpb24iKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhdXRvIikuYXR0cigidHJhbnNmb3JtIixUKSxfLmVhY2goZnVuY3Rpb24oZSxyKXt0Ll9mdWxsRGF0YVtyXS5fc2Fua2V5PWU7dmFyIG49ImJnc2Fua2V5LSIrZS50cmFjZS51aWQrIi0iK3I7aC5lbnN1cmVTaW5nbGUodC5fZnVsbExheW91dC5fZHJhZ2dlcnMsInJlY3QiLG4pLHQuX2Z1bGxEYXRhW3JdLl9iZ1JlY3Q9YS5zZWxlY3QoIi4iK24pLHQuX2Z1bGxEYXRhW3JdLl9iZ1JlY3Quc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigid2lkdGgiLGUud2lkdGgpLmF0dHIoImhlaWdodCIsZS5oZWlnaHQpLmF0dHIoIngiLGUudHJhbnNsYXRlWCkuYXR0cigieSIsZS50cmFuc2xhdGVZKS5jbGFzc2VkKCJiZ3NhbmtleSIsITApLnN0eWxlKHtmaWxsOiJ0cmFuc3BhcmVudCIsInN0cm9rZS13aWR0aCI6MH0pfSksXy50cmFuc2l0aW9uKCkuZWFzZShuLmVhc2UpLmR1cmF0aW9uKG4uZHVyYXRpb24pLmF0dHIoInRyYW5zZm9ybSIsVCk7dmFyIHo9Xy5zZWxlY3RBbGwoIi4iK24uY24uc2Fua2V5TGlua3MpLmRhdGEoZCxwKTt6LmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnNhbmtleUxpbmtzLCEwKS5zdHlsZSgiZmlsbCIsIm5vbmUiKTt2YXIgST16LnNlbGVjdEFsbCgiLiIrbi5jbi5zYW5rZXlMaW5rKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdyYXBoLmxpbmtzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pLm1hcChmdW5jdGlvbih0LGUscil7dmFyIG49aShlLmNvbG9yKSxhPWUuc291cmNlLmxhYmVsKyJ8IitlLnRhcmdldC5sYWJlbCsiX18iK3I7cmV0dXJuIGUudHJhY2U9dC50cmFjZSxlLmN1cnZlTnVtYmVyPXQudHJhY2UuaW5kZXgse2NpcmN1bGFyOnQuY2lyY3VsYXIsa2V5OmEsdHJhY2VJZDp0LmtleSxwb2ludE51bWJlcjplLnBvaW50TnVtYmVyLGxpbms6ZSx0aW55Q29sb3JIdWU6by50aW55UkdCKG4pLHRpbnlDb2xvckFscGhhOm4uZ2V0QWxwaGEoKSxsaW5rUGF0aDp5LGxpbmtMaW5lQ29sb3I6dC5saW5rTGluZUNvbG9yLGxpbmtMaW5lV2lkdGg6dC5saW5rTGluZVdpZHRoLHZhbHVlRm9ybWF0OnQudmFsdWVGb3JtYXQsdmFsdWVTdWZmaXg6dC52YWx1ZVN1ZmZpeCxzYW5rZXk6dC5zYW5rZXkscGFyZW50OnQsaW50ZXJhY3Rpb25TdGF0ZTp0LmludGVyYWN0aW9uU3RhdGUsZmxvdzplLmZsb3d9fS5iaW5kKG51bGwsdCkpfSxwKTtJLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZChuLmNuLnNhbmtleUxpbmssITApLmNhbGwoUCxfLGYubGlua0V2ZW50cyksSS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbih0KXtyZXR1cm4gayh0KT9vLnRpbnlSR0IoaSh0LmxpbmtMaW5lQ29sb3IpKTp0LnRpbnlDb2xvckh1ZX0pLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIGsodCk/by5vcGFjaXR5KHQubGlua0xpbmVDb2xvcik6dC50aW55Q29sb3JBbHBoYX0pLnN0eWxlKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4gdC50aW55Q29sb3JIdWV9KS5zdHlsZSgiZmlsbC1vcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdC50aW55Q29sb3JBbHBoYX0pLnN0eWxlKCJzdHJva2Utd2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiBrKHQpP3QubGlua0xpbmVXaWR0aDoxfSkuYXR0cigiZCIseSgpKSxJLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbigpe3JldHVybiB0Ll9jb250ZXh0LnN0YXRpY1Bsb3R8fHZ8fG0/MTowfSkudHJhbnNpdGlvbigpLmVhc2Uobi5lYXNlKS5kdXJhdGlvbihuLmR1cmF0aW9uKS5zdHlsZSgib3BhY2l0eSIsMSksSS5leGl0KCkudHJhbnNpdGlvbigpLmVhc2Uobi5lYXNlKS5kdXJhdGlvbihuLmR1cmF0aW9uKS5zdHlsZSgib3BhY2l0eSIsMCkucmVtb3ZlKCk7dmFyIEQ9Xy5zZWxlY3RBbGwoIi4iK24uY24uc2Fua2V5Tm9kZVNldCkuZGF0YShkLHApO0QuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24uc2Fua2V5Tm9kZVNldCwhMCksRC5zdHlsZSgiY3Vyc29yIixmdW5jdGlvbih0KXtzd2l0Y2godC5hcnJhbmdlbWVudCl7Y2FzZSJmaXhlZCI6cmV0dXJuImRlZmF1bHQiO2Nhc2UicGVycGVuZGljdWxhciI6cmV0dXJuIm5zLXJlc2l6ZSI7ZGVmYXVsdDpyZXR1cm4ibW92ZSJ9fSk7dmFyIFI9RC5zZWxlY3RBbGwoIi4iK24uY24uc2Fua2V5Tm9kZSkuZGF0YShmdW5jdGlvbih0KXt2YXIgZT10LmdyYXBoLm5vZGVzO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZSxyPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5vcmlnaW5hbFg9KHRbZV0ueDArdFtlXS54MSkvMix0W2VdLm9yaWdpbmFsWT0odFtlXS55MCt0W2VdLnkxKS8yLC0xPT09ci5pbmRleE9mKHRbZV0ub3JpZ2luYWxYKSYmci5wdXNoKHRbZV0ub3JpZ2luYWxYKTtmb3Ioci5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pLGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLm9yaWdpbmFsTGF5ZXJJbmRleD1yLmluZGV4T2YodFtlXS5vcmlnaW5hbFgpLHRbZV0ub3JpZ2luYWxMYXllcj10W2VdLm9yaWdpbmFsTGF5ZXJJbmRleC8oci5sZW5ndGgtMSl9KGUpLGUubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIHI9aShlLmNvbG9yKSxhPW4ubm9kZVBhZEFjcm9zcyxzPXQubm9kZVBhZC8yO2UuZHg9ZS54MS1lLngwLGUuZHk9ZS55MS1lLnkwO3ZhciBsPWUuZHgsYz1NYXRoLm1heCguNSxlLmR5KSx1PSJub2RlXyIrZS5wb2ludE51bWJlcjtyZXR1cm4gZS5ncm91cCYmKHU9aC5yYW5kc3RyKCkpLGUudHJhY2U9dC50cmFjZSxlLmN1cnZlTnVtYmVyPXQudHJhY2UuaW5kZXgse2luZGV4OmUucG9pbnROdW1iZXIsa2V5OnUscGFydE9mR3JvdXA6ZS5wYXJ0T2ZHcm91cHx8ITEsZ3JvdXA6ZS5ncm91cCx0cmFjZUlkOnQua2V5LHRyYWNlOnQudHJhY2Usbm9kZTplLG5vZGVQYWQ6dC5ub2RlUGFkLG5vZGVMaW5lQ29sb3I6dC5ub2RlTGluZUNvbG9yLG5vZGVMaW5lV2lkdGg6dC5ub2RlTGluZVdpZHRoLHRleHRGb250OnQudGV4dEZvbnQsc2l6ZTp0Lmhvcml6b250YWw/dC5oZWlnaHQ6dC53aWR0aCx2aXNpYmxlV2lkdGg6TWF0aC5jZWlsKGwpLHZpc2libGVIZWlnaHQ6Yyx6b25lWDotYSx6b25lWTotcyx6b25lV2lkdGg6bCsyKmEsem9uZUhlaWdodDpjKzIqcyxsYWJlbFk6dC5ob3Jpem9udGFsP2UuZHkvMisxOmUuZHgvMisxLGxlZnQ6MT09PWUub3JpZ2luYWxMYXllcixzaXplQWNyb3NzOnQud2lkdGgsZm9yY2VMYXlvdXRzOnQuZm9yY2VMYXlvdXRzLGhvcml6b250YWw6dC5ob3Jpem9udGFsLGRhcmtCYWNrZ3JvdW5kOnIuZ2V0QnJpZ2h0bmVzcygpPD0xMjgsdGlueUNvbG9ySHVlOm8udGlueVJHQihyKSx0aW55Q29sb3JBbHBoYTpyLmdldEFscGhhKCksdmFsdWVGb3JtYXQ6dC52YWx1ZUZvcm1hdCx2YWx1ZVN1ZmZpeDp0LnZhbHVlU3VmZml4LHNhbmtleTp0LnNhbmtleSxncmFwaDp0LmdyYXBoLGFycmFuZ2VtZW50OnQuYXJyYW5nZW1lbnQsdW5pcXVlTm9kZUxhYmVsUGF0aElkOlt0Lmd1aWQsdC5rZXksdV0uam9pbigiXyIpLGludGVyYWN0aW9uU3RhdGU6dC5pbnRlcmFjdGlvblN0YXRlLGZpZ3VyZTp0fX0uYmluZChudWxsLHQpKX0scCk7Ui5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5zYW5rZXlOb2RlLCEwKS5jYWxsKHgpLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbihlKXtyZXR1cm4hdC5fY29udGV4dC5zdGF0aWNQbG90JiYhdnx8ZS5wYXJ0T2ZHcm91cD8wOjF9KSxSLmNhbGwoUCxfLGYubm9kZUV2ZW50cykuY2FsbChPLEksZix0KSxSLnRyYW5zaXRpb24oKS5lYXNlKG4uZWFzZSkuZHVyYXRpb24obi5kdXJhdGlvbikuY2FsbCh4KS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQucGFydE9mR3JvdXA/MDoxfSksUi5leGl0KCkudHJhbnNpdGlvbigpLmVhc2Uobi5lYXNlKS5kdXJhdGlvbihuLmR1cmF0aW9uKS5zdHlsZSgib3BhY2l0eSIsMCkucmVtb3ZlKCk7dmFyIEY9Ui5zZWxlY3RBbGwoIi4iK24uY24ubm9kZVJlY3QpLmRhdGEoZCk7Ri5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQobi5jbi5ub2RlUmVjdCwhMCkuY2FsbCh3KSxGLnN0eWxlKCJzdHJva2Utd2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVMaW5lV2lkdGh9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbih0KXtyZXR1cm4gby50aW55UkdCKGkodC5ub2RlTGluZUNvbG9yKSl9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiBvLm9wYWNpdHkodC5ub2RlTGluZUNvbG9yKX0pLnN0eWxlKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4gdC50aW55Q29sb3JIdWV9KS5zdHlsZSgiZmlsbC1vcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdC50aW55Q29sb3JBbHBoYX0pLEYudHJhbnNpdGlvbigpLmVhc2Uobi5lYXNlKS5kdXJhdGlvbihuLmR1cmF0aW9uKS5jYWxsKHcpO3ZhciBCPVIuc2VsZWN0QWxsKCIuIituLmNuLm5vZGVDYXB0dXJlKS5kYXRhKGQpO0IuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKG4uY24ubm9kZUNhcHR1cmUsITApLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDApLEIuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuem9uZVh9KS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdC56b25lWX0pLmF0dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gdC56b25lV2lkdGh9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnpvbmVIZWlnaHR9KTt2YXIgTj1SLnNlbGVjdEFsbCgiLiIrbi5jbi5ub2RlQ2VudGVyZWQpLmRhdGEoZCk7Ti5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5ub2RlQ2VudGVyZWQsITApLmF0dHIoInRyYW5zZm9ybSIsTSksTi50cmFuc2l0aW9uKCkuZWFzZShuLmVhc2UpLmR1cmF0aW9uKG4uZHVyYXRpb24pLmF0dHIoInRyYW5zZm9ybSIsTSk7dmFyIGo9Ti5zZWxlY3RBbGwoIi4iK24uY24ubm9kZUxhYmVsR3VpZGUpLmRhdGEoZCk7ai5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQobi5jbi5ub2RlTGFiZWxHdWlkZSwhMCkuYXR0cigiaWQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnVuaXF1ZU5vZGVMYWJlbFBhdGhJZH0pLmF0dHIoImQiLEEpLmF0dHIoInRyYW5zZm9ybSIsUyksai50cmFuc2l0aW9uKCkuZWFzZShuLmVhc2UpLmR1cmF0aW9uKG4uZHVyYXRpb24pLmF0dHIoImQiLEEpLmF0dHIoInRyYW5zZm9ybSIsUyk7dmFyIFY9Ti5zZWxlY3RBbGwoIi4iK24uY24ubm9kZUxhYmVsKS5kYXRhKGQpO1YuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKG4uY24ubm9kZUxhYmVsLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLEUpLnN0eWxlKCJ1c2VyLXNlbGVjdCIsIm5vbmUiKS5zdHlsZSgiY3Vyc29yIiwiZGVmYXVsdCIpLnN0eWxlKCJmaWxsIiwiYmxhY2siKSxWLnN0eWxlKCJ0ZXh0LXNoYWRvdyIsZnVuY3Rpb24odCl7cmV0dXJuIHQuaG9yaXpvbnRhbD8iLTFweCAxcHggMXB4ICNmZmYsIDFweCAxcHggMXB4ICNmZmYsIDFweCAtMXB4IDFweCAjZmZmLCAtMXB4IC0xcHggMXB4ICNmZmYiOiJub25lIn0pLmVhY2goZnVuY3Rpb24odCl7cy5mb250KFYsdC50ZXh0Rm9udCl9KSxWLnRyYW5zaXRpb24oKS5lYXNlKG4uZWFzZSkuZHVyYXRpb24obi5kdXJhdGlvbikuYXR0cigidHJhbnNmb3JtIixFKTt2YXIgVT1WLnNlbGVjdEFsbCgiLiIrbi5jbi5ub2RlTGFiZWxUZXh0UGF0aCkuZGF0YShkKTtVLmVudGVyKCkuYXBwZW5kKCJ0ZXh0UGF0aCIpLmNsYXNzZWQobi5jbi5ub2RlTGFiZWxUZXh0UGF0aCwhMCkuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigieGxpbms6aHJlZiIsZnVuY3Rpb24odCl7cmV0dXJuIiMiK3QudW5pcXVlTm9kZUxhYmVsUGF0aElkfSkuYXR0cigic3RhcnRPZmZzZXQiLEMpLnN0eWxlKCJmaWxsIixMKSxVLnRleHQoZnVuY3Rpb24odCl7cmV0dXJuIHQuaG9yaXpvbnRhbHx8dC5ub2RlLmR5PjU/dC5ub2RlLmxhYmVsOiIifSkuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0aW9uKHQpe3JldHVybiB0Lmhvcml6b250YWwmJnQubGVmdD8iZW5kIjoic3RhcnQifSksVS50cmFuc2l0aW9uKCkuZWFzZShuLmVhc2UpLmR1cmF0aW9uKG4uZHVyYXRpb24pLmF0dHIoInN0YXJ0T2Zmc2V0IixDKS5zdHlsZSgiZmlsbCIsTCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ3VwIjo3MTUsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vY29uc3RhbnRzIjoxMTEzLCJAcGxvdGx5L2QzLXNhbmtleSI6NTYsIkBwbG90bHkvZDMtc2Fua2V5LWNpcmN1bGFyIjo1NSxkMzoxNjUsImQzLWZvcmNlIjoxNTgsImQzLWludGVycG9sYXRlIjoxNjAsdGlueWNvbG9yMjo1MzZ9XSwxMTE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPXQuY2RbMF0udHJhY2UsYT1uLl9zYW5rZXkuZ3JhcGgubm9kZXMsaT0wO2k8YS5sZW5ndGg7aSsrKXt2YXIgbz1hW2ldO2lmKCFvLnBhcnRPZkdyb3VwKXt2YXIgcz1bKG8ueDArby54MSkvMiwoby55MCtvLnkxKS8yXTsidiI9PT1uLm9yaWVudGF0aW9uJiZzLnJldmVyc2UoKSxlJiZlLmNvbnRhaW5zKHMsITEsaSx0KSYmci5wdXNoKHtwb2ludE51bWJlcjpvLnBvaW50TnVtYmVyfSl9fXJldHVybiByfX0se31dLDExMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5pPXI7bi5tZXJnZUFycmF5KGUudGV4dCx0LCJ0eCIpLG4ubWVyZ2VBcnJheShlLnRleHR0ZW1wbGF0ZSx0LCJ0eHQiKSxuLm1lcmdlQXJyYXkoZS5ob3ZlcnRleHQsdCwiaHR4Iiksbi5tZXJnZUFycmF5KGUuY3VzdG9tZGF0YSx0LCJkYXRhIiksbi5tZXJnZUFycmF5KGUudGV4dHBvc2l0aW9uLHQsInRwIiksZS50ZXh0Zm9udCYmKG4ubWVyZ2VBcnJheUNhc3RQb3NpdGl2ZShlLnRleHRmb250LnNpemUsdCwidHMiKSxuLm1lcmdlQXJyYXkoZS50ZXh0Zm9udC5jb2xvcix0LCJ0YyIpLG4ubWVyZ2VBcnJheShlLnRleHRmb250LmZhbWlseSx0LCJ0ZiIpKTt2YXIgYT1lLm1hcmtlcjtpZihhKXtuLm1lcmdlQXJyYXlDYXN0UG9zaXRpdmUoYS5zaXplLHQsIm1zIiksbi5tZXJnZUFycmF5Q2FzdFBvc2l0aXZlKGEub3BhY2l0eSx0LCJtbyIpLG4ubWVyZ2VBcnJheShhLnN5bWJvbCx0LCJteCIpLG4ubWVyZ2VBcnJheShhLmNvbG9yLHQsIm1jIik7dmFyIGk9YS5saW5lO2EubGluZSYmKG4ubWVyZ2VBcnJheShpLmNvbG9yLHQsIm1sYyIpLG4ubWVyZ2VBcnJheUNhc3RQb3NpdGl2ZShpLndpZHRoLHQsIm1sdyIpKTt2YXIgbz1hLmdyYWRpZW50O28mJiJub25lIiE9PW8udHlwZSYmKG4ubWVyZ2VBcnJheShvLnR5cGUsdCwibWd0Iiksbi5tZXJnZUFycmF5KG8uY29sb3IsdCwibWdjIikpfX19LHsiLi4vLi4vbGliIjo3MTd9XSwxMTIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gsbD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxjPXQoIi4vY29uc3RhbnRzIiksdT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e3g6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIixhbmltOiEwfSx4MDp7dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMiLGFuaW06ITB9LGR4Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyIsYW5pbTohMH0seTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMiLGFuaW06ITB9LHkwOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyIsYW5pbTohMH0sZHk6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIixhbmltOiEwfSxzdGFja2dyb3VwOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidiIsImgiXSxlZGl0VHlwZToiY2FsYyJ9LGdyb3Vwbm9ybTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiIiwiZnJhY3Rpb24iLCJwZXJjZW50Il0sZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LHN0YWNrZ2Fwczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5mZXIgemVybyIsImludGVycG9sYXRlIl0sZGZsdDoiaW5mZXIgemVybyIsZWRpdFR5cGU6ImNhbGMifSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LHRleHR0ZW1wbGF0ZTpuKHt9LHt9KSxob3ZlcnRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LG1vZGU6e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbImxpbmVzIiwibWFya2VycyIsInRleHQiXSxleHRyYXM6WyJub25lIl0sZWRpdFR5cGU6ImNhbGMifSxob3Zlcm9uOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJwb2ludHMiLCJmaWxscyJdLGVkaXRUeXBlOiJzdHlsZSJ9LGhvdmVydGVtcGxhdGU6YSh7fSx7a2V5czpjLmV2ZW50RGF0YUtleXN9KSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSIsYW5pbTohMH0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoyLGVkaXRUeXBlOiJzdHlsZSIsYW5pbTohMH0sc2hhcGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxpbmVhciIsInNwbGluZSIsImh2IiwidmgiLCJodmgiLCJ2aHYiXSxkZmx0OiJsaW5lYXIiLGVkaXRUeXBlOiJwbG90In0sc21vb3RoaW5nOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLjMsZGZsdDoxLGVkaXRUeXBlOiJwbG90In0sZGFzaDp1KHt9LHMse2VkaXRUeXBlOiJzdHlsZSJ9KSxzaW1wbGlmeTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sY29ubmVjdGdhcHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxjbGlwb25heGlzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJwbG90In0sZmlsbDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9uZSIsInRvemVyb3kiLCJ0b3plcm94IiwidG9uZXh0eSIsInRvbmV4dHgiLCJ0b3NlbGYiLCJ0b25leHQiXSxlZGl0VHlwZToiY2FsYyJ9LGZpbGxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSIsYW5pbTohMH0sbWFya2VyOnUoe3N5bWJvbDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOmwuc3ltYm9sTGlzdCxkZmx0OiJjaXJjbGUiLGFycmF5T2s6ITAsZWRpdFR5cGU6InN0eWxlIn0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSIsYW5pbTohMH0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjYsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyIsYW5pbTohMH0sbWF4ZGlzcGxheWVkOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9LHNpemVyZWY6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sc2l6ZW1pbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxzaXplbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZGlhbWV0ZXIiLCJhcmVhIl0sZGZsdDoiZGlhbWV0ZXIiLGVkaXRUeXBlOiJjYWxjIn0sbGluZTp1KHt3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSIsYW5pbTohMH0sZWRpdFR5cGU6ImNhbGMifSxpKCJtYXJrZXIubGluZSIse2FuaW06ITB9KSksZ3JhZGllbnQ6e3R5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInJhZGlhbCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsIm5vbmUiXSxhcnJheU9rOiEwLGRmbHQ6Im5vbmUiLGVkaXRUeXBlOiJjYWxjIn0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LGkoIm1hcmtlciIse2FuaW06ITB9KSksc2VsZWN0ZWQ6e21hcmtlcjp7b3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToic3R5bGUifSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9LHNpemU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0sdGV4dGZvbnQ6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0sdW5zZWxlY3RlZDp7bWFya2VyOntvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGVkaXRUeXBlOiJzdHlsZSJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSx0ZXh0Zm9udDp7Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSx0ZXh0cG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCBsZWZ0IiwidG9wIGNlbnRlciIsInRvcCByaWdodCIsIm1pZGRsZSBsZWZ0IiwibWlkZGxlIGNlbnRlciIsIm1pZGRsZSByaWdodCIsImJvdHRvbSBsZWZ0IiwiYm90dG9tIGNlbnRlciIsImJvdHRvbSByaWdodCJdLGRmbHQ6Im1pZGRsZSBjZW50ZXIiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSx0ZXh0Zm9udDpvKHtlZGl0VHlwZToiY2FsYyIsY29sb3JFZGl0VHlwZToic3R5bGUiLGFycmF5T2s6ITB9KSxyOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyI6NjEyLCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4vY29uc3RhbnRzIjoxMTI0fV0sMTEyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxzPXQoIi4vc3VidHlwZXMiKSxsPXQoIi4vY29sb3JzY2FsZV9jYWxjIiksYz10KCIuL2FycmF5c190b19jYWxjZGF0YSIpLHU9dCgiLi9jYWxjX3NlbGVjdGlvbiIpO2Z1bmN0aW9uIGgodCxlLHIsbixhLG8sbCl7dmFyIGM9ZS5fbGVuZ3RoLHU9dC5fZnVsbExheW91dCxoPXIuX2lkLGY9bi5faWQscD11Ll9maXJzdFNjYXR0ZXJbZChlKV09PT1lLnVpZCx2PShnKGUsdSxyLG4pfHx7fSkub3JpZW50YXRpb24sbT1lLmZpbGw7ci5fbWluRHRpY2s9MCxuLl9taW5EdGljaz0wO3ZhciB5PXtwYWRkZWQ6ITB9LHg9e3BhZGRlZDohMH07bCYmKHkucHBhZD14LnBwYWQ9bCk7dmFyIGI9YzwyfHxhWzBdIT09YVtjLTFdfHxvWzBdIT09b1tjLTFdO2ImJigidG96ZXJveCI9PT1tfHwidG9uZXh0eCI9PT1tJiYocHx8ImgiPT09dikpP3kudG96ZXJvPSEwOihlLmVycm9yX3l8fHt9KS52aXNpYmxlfHwidG9uZXh0eSIhPT1tJiYidG96ZXJveSIhPT1tJiYocy5oYXNNYXJrZXJzKGUpfHxzLmhhc1RleHQoZSkpfHwoeS5wYWRkZWQ9ITEseS5wcGFkPTApLGImJigidG96ZXJveSI9PT1tfHwidG9uZXh0eSI9PT1tJiYocHx8InYiPT09dikpP3gudG96ZXJvPSEwOiJ0b25leHR4IiE9PW0mJiJ0b3plcm94IiE9PW18fCh4LnBhZGRlZD0hMSksaCYmKGUuX2V4dHJlbWVzW2hdPWkuZmluZEV4dHJlbWVzKHIsYSx5KSksZiYmKGUuX2V4dHJlbWVzW2ZdPWkuZmluZEV4dHJlbWVzKG4sbyx4KSl9ZnVuY3Rpb24gZih0LGUpe2lmKHMuaGFzTWFya2Vycyh0KSl7dmFyIHIsbj10Lm1hcmtlcixvPTEuNioodC5tYXJrZXIuc2l6ZXJlZnx8MSk7aWYocj0iYXJlYSI9PT10Lm1hcmtlci5zaXplbW9kZT9mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5zcXJ0KCh0fHwwKS9vKSwzKX06ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KCh0fHwwKS9vLDMpfSxhLmlzQXJyYXlPclR5cGVkQXJyYXkobi5zaXplKSl7dmFyIGw9e3R5cGU6ImxpbmVhciJ9O2kuc2V0Q29udmVydChsKTtmb3IodmFyIGM9bC5tYWtlQ2FsY2RhdGEodC5tYXJrZXIsInNpemUiKSx1PW5ldyBBcnJheShlKSxoPTA7aDxlO2grKyl1W2hdPXIoY1toXSk7cmV0dXJuIHV9cmV0dXJuIHIobi5zaXplKX19ZnVuY3Rpb24gcCh0LGUpe3ZhciByPWQoZSksbj10Ll9maXJzdFNjYXR0ZXI7bltyXXx8KG5bcl09ZS51aWQpfWZ1bmN0aW9uIGQodCl7dmFyIGU9dC5zdGFja2dyb3VwO3JldHVybiB0LnhheGlzK3QueWF4aXMrdC50eXBlKyhlPyItIitlOiIiKX1mdW5jdGlvbiBnKHQsZSxyLG4pe3ZhciBhPXQuc3RhY2tncm91cDtpZihhKXt2YXIgaT1lLl9zY2F0dGVyU3RhY2tPcHRzW3IuX2lkK24uX2lkXVthXSxvPSJ2Ij09PWkub3JpZW50YXRpb24/bjpyO3JldHVybiJsaW5lYXIiPT09by50eXBlfHwibG9nIj09PW8udHlwZT9pOnZvaWQgMH19ZS5leHBvcnRzPXtjYWxjOmZ1bmN0aW9uKHQsZSl7dmFyIHIscyxkLHYsbSx5LHg9dC5fZnVsbExheW91dCxiPWkuZ2V0RnJvbUlkKHQsZS54YXhpc3x8IngiKSxfPWkuZ2V0RnJvbUlkKHQsZS55YXhpc3x8InkiKSx3PWIubWFrZUNhbGNkYXRhKGUsIngiKSxrPV8ubWFrZUNhbGNkYXRhKGUsInkiKSxUPWUuX2xlbmd0aCxNPW5ldyBBcnJheShUKSxBPWUuaWRzLFM9ZyhlLHgsYixfKSxFPSExO3AoeCxlKTt2YXIgTCxDPSJ4IixQPSJ5Ijtmb3IoUz8oYS5wdXNoVW5pcXVlKFMudHJhY2VJbmRpY2VzLGUuX2V4cGFuZGVkSW5kZXgpLChyPSJ2Ij09PVMub3JpZW50YXRpb24pPyhQPSJzIixMPSJ4Iik6KEM9InMiLEw9InkiKSxtPSJpbnRlcnBvbGF0ZSI9PT1TLnN0YWNrZ2Fwcyk6aCh0LGUsYixfLHcsayxmKGUsVCkpLHM9MDtzPFQ7cysrKXt2YXIgTz1NW3NdPXt9LHo9bih3W3NdKSxJPW4oa1tzXSk7eiYmST8oT1tDXT13W3NdLE9bUF09a1tzXSk6UyYmKHI/ejpJKT8oT1tMXT1yP3dbc106a1tzXSxPLmdhcD0hMCxtPyhPLnM9byxFPSEwKTpPLnM9MCk6T1tDXT1PW1BdPW8sQSYmKE8uaWQ9U3RyaW5nKEFbc10pKX1pZihjKE0sZSksbCh0LGUpLHUoTSxlKSxTKXtmb3Iocz0wO3M8TS5sZW5ndGg7KU1bc11bTF09PT1vP00uc3BsaWNlKHMsMSk6cysrO2lmKGEuc29ydChNLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbTF0tZVtMXXx8dC5pLWUuaX0pLEUpe2ZvcihzPTA7czxNLmxlbmd0aC0xJiZNW3NdLmdhcDspcysrO2ZvcigoeT1NW3NdLnMpfHwoeT1NW3NdLnM9MCksZD0wO2Q8cztkKyspTVtkXS5zPXk7Zm9yKHY9TS5sZW5ndGgtMTt2PnMmJk1bdl0uZ2FwOyl2LS07Zm9yKHk9TVt2XS5zLGQ9TS5sZW5ndGgtMTtkPnY7ZC0tKU1bZF0ucz15O2Zvcig7czx2OylpZihNWysrc10uZ2FwKXtmb3IoZD1zKzE7TVtkXS5nYXA7KWQrKztmb3IodmFyIEQ9TVtzLTFdW0xdLFI9TVtzLTFdLnMsRj0oTVtkXS5zLVIpLyhNW2RdW0xdLUQpO3M8ZDspTVtzXS5zPVIrKE1bc11bTF0tRCkqRixzKyt9fX1yZXR1cm4gTX0sY2FsY01hcmtlclNpemU6ZixjYWxjQXhpc0V4cGFuc2lvbjpoLHNldEZpcnN0U2NhdHRlcjpwLGdldFN0YWNrT3B0czpnfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuL2FycmF5c190b19jYWxjZGF0YSI6MTExOSwiLi9jYWxjX3NlbGVjdGlvbiI6MTEyMiwiLi9jb2xvcnNjYWxlX2NhbGMiOjExMjMsIi4vc3VidHlwZXMiOjExNDQsImZhc3QtaXNudW1lcmljIjoyMjh9XSwxMTIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe24uaXNBcnJheU9yVHlwZWRBcnJheShlLnNlbGVjdGVkcG9pbnRzKSYmbi50YWdTZWxlY3RlZCh0LGUpfX0seyIuLi8uLi9saWIiOjcxN31dLDExMjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hlbHBlcnMiKS5oYXNDb2xvcnNjYWxlLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKSxpPXQoIi4vc3VidHlwZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpLmhhc0xpbmVzKGUpJiZuKGUsImxpbmUiKSYmYSh0LGUse3ZhbHM6ZS5saW5lLmNvbG9yLGNvbnRhaW5lclN0cjoibGluZSIsY0xldHRlcjoiYyJ9KSxpLmhhc01hcmtlcnMoZSkmJihuKGUsIm1hcmtlciIpJiZhKHQsZSx7dmFsczplLm1hcmtlci5jb2xvcixjb250YWluZXJTdHI6Im1hcmtlciIsY0xldHRlcjoiYyJ9KSxuKGUsIm1hcmtlci5saW5lIikmJmEodCxlLHt2YWxzOmUubWFya2VyLmxpbmUuY29sb3IsY29udGFpbmVyU3RyOiJtYXJrZXIubGluZSIsY0xldHRlcjoiYyJ9KSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjo2MDAsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4vc3VidHlwZXMiOjExNDR9XSwxMTI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17UFRTX0xJTkVTT05MWToyMCxtaW5Ub2xlcmFuY2U6LjIsdG9sZXJhbmNlR3Jvd3RoOjEwLG1heFNjcmVlbnNBd2F5OjIwLGV2ZW50RGF0YUtleXM6W119fSx7fV0sMTEyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NhbGMiKTtmdW5jdGlvbiBhKHQsZSxyLG4sYSxpLG8pe2Fbbl09ITA7dmFyIHM9e2k6bnVsbCxnYXA6ITAsczowfTtpZihzW29dPXIsdC5zcGxpY2UoZSwwLHMpLGUmJnI9PT10W2UtMV1bb10pe3ZhciBsPXRbZS0xXTtzLnM9bC5zLHMuaT1sLmkscy5nYXA9bC5nYXB9ZWxzZSBpJiYocy5zPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRbZS0xXSxpPXRbZSsxXTtyZXR1cm4gaT9hP2EucysoaS5zLWEucykqKHItYVtuXSkvKGlbbl0tYVtuXSk6aS5zOmEuc30odCxlLHIsbykpO2V8fCh0WzBdLnQ9dFsxXS50LHRbMF0udHJhY2U9dFsxXS50cmFjZSxkZWxldGUgdFsxXS50LGRlbGV0ZSB0WzFdLnRyYWNlKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnhheGlzLGk9ZS55YXhpcyxvPXIuX2lkK2kuX2lkLHM9dC5fZnVsbExheW91dC5fc2NhdHRlclN0YWNrT3B0c1tvXTtpZihzKXt2YXIgbCxjLHUsaCxmLHAsZCxnLHYsbSx5LHgsYixfLHcsaz10LmNhbGNkYXRhO2Zvcih2YXIgVCBpbiBzKXt2YXIgTT0obT1zW1RdKS50cmFjZUluZGljZXM7aWYoTS5sZW5ndGgpe2Zvcih5PSJpbnRlcnBvbGF0ZSI9PT1tLnN0YWNrZ2Fwcyx4PW0uZ3JvdXBub3JtLCJ2Ij09PW0ub3JpZW50YXRpb24/KGI9IngiLF89InkiKTooYj0ieSIsXz0ieCIpLHc9bmV3IEFycmF5KE0ubGVuZ3RoKSxsPTA7bDx3Lmxlbmd0aDtsKyspd1tsXT0hMTtwPWtbTVswXV07dmFyIEE9bmV3IEFycmF5KHAubGVuZ3RoKTtmb3IobD0wO2w8cC5sZW5ndGg7bCsrKUFbbF09cFtsXVtiXTtmb3IobD0xO2w8TS5sZW5ndGg7bCsrKXtmb3IoZj1rW01bbF1dLGM9dT0wO2M8Zi5sZW5ndGg7YysrKXtmb3IoZD1mW2NdW2JdO2Q+QVt1XSYmdTxBLmxlbmd0aDt1KyspYShmLGMsQVt1XSxsLHcseSxiKSxjKys7aWYoZCE9PUFbdV0pe2ZvcihoPTA7aDxsO2grKylhKGtbTVtoXV0sdSxkLGgsdyx5LGIpO0Euc3BsaWNlKHUsMCxkKX11Kyt9Zm9yKDt1PEEubGVuZ3RoO3UrKylhKGYsYyxBW3VdLGwsdyx5LGIpLGMrK312YXIgUz1BLmxlbmd0aDtmb3IoYz0wO2M8cC5sZW5ndGg7YysrKXtmb3IoZz1wW2NdW19dPXBbY10ucyxsPTE7bDxNLmxlbmd0aDtsKyspKGY9a1tNW2xdXSlbMF0udHJhY2UuX3Jhd0xlbmd0aD1mWzBdLnRyYWNlLl9sZW5ndGgsZlswXS50cmFjZS5fbGVuZ3RoPVMsZys9ZltjXS5zLGZbY11bX109ZztpZih4KWZvcih2PSgiZnJhY3Rpb24iPT09eD9nOmcvMTAwKXx8MSxsPTA7bDxNLmxlbmd0aDtsKyspe3ZhciBFPWtbTVtsXV1bY107RVtfXS89dixFLnNOb3JtPUUucy92fX1mb3IobD0wO2w8TS5sZW5ndGg7bCsrKXt2YXIgTD0oZj1rW01bbF1dKVswXS50cmFjZSxDPW4uY2FsY01hcmtlclNpemUoTCxMLl9yYXdMZW5ndGgpLFA9QXJyYXkuaXNBcnJheShDKTtpZihDJiZ3W2xdfHxQKXt2YXIgTz1DO2ZvcihDPW5ldyBBcnJheShTKSxjPTA7YzxTO2MrKylDW2NdPWZbY10uZ2FwPzA6UD9PW2ZbY10uaV06T312YXIgej1uZXcgQXJyYXkoUyksST1uZXcgQXJyYXkoUyk7Zm9yKGM9MDtjPFM7YysrKXpbY109ZltjXS54LElbY109ZltjXS55O24uY2FsY0F4aXNFeHBhbnNpb24odCxMLHIsaSx6LEksQyksZlswXS50Lm9yaWVudGF0aW9uPW0ub3JpZW50YXRpb259fX19fX0seyIuL2NhbGMiOjExMjF9XSwxMTI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dFtlXTtpZigic2NhdHRlciI9PT1yLnR5cGUpe3ZhciBuPXIuZmlsbDtpZigibm9uZSIhPT1uJiYidG9zZWxmIiE9PW4mJihyLm9wYWNpdHk9dm9pZCAwLCJ0b25leHR5Ij09PW58fCJ0b25leHR4Ij09PW4pKWZvcih2YXIgYT1lLTE7YT49MDthLS0pe3ZhciBpPXRbYV07aWYoInNjYXR0ZXIiPT09aS50eXBlJiZpLnhheGlzPT09ci54YXhpcyYmaS55YXhpcz09PXIueWF4aXMpe2kub3BhY2l0eT12b2lkIDA7YnJlYWt9fX19fX0se31dLDExMjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi9hdHRyaWJ1dGVzIiksbz10KCIuL2NvbnN0YW50cyIpLHM9dCgiLi9zdWJ0eXBlcyIpLGw9dCgiLi94eV9kZWZhdWx0cyIpLGM9dCgiLi9zdGFja19kZWZhdWx0cyIpLHU9dCgiLi9tYXJrZXJfZGVmYXVsdHMiKSxoPXQoIi4vbGluZV9kZWZhdWx0cyIpLGY9dCgiLi9saW5lX3NoYXBlX2RlZmF1bHRzIikscD10KCIuL3RleHRfZGVmYXVsdHMiKSxkPXQoIi4vZmlsbGNvbG9yX2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGcpe2Z1bmN0aW9uIHYocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX12YXIgbT1sKHQsZSxnLHYpO2lmKG18fChlLnZpc2libGU9ITEpLGUudmlzaWJsZSl7dmFyIHk9Yyh0LGUsZyx2KSx4PSF5JiZtPG8uUFRTX0xJTkVTT05MWT8ibGluZXMrbWFya2VycyI6ImxpbmVzIjt2KCJ0ZXh0IiksdigiaG92ZXJ0ZXh0IiksdigibW9kZSIseCkscy5oYXNMaW5lcyhlKSYmKGgodCxlLHIsZyx2KSxmKHQsZSx2KSx2KCJjb25uZWN0Z2FwcyIpLHYoImxpbmUuc2ltcGxpZnkiKSkscy5oYXNNYXJrZXJzKGUpJiZ1KHQsZSxyLGcsdix7Z3JhZGllbnQ6ITB9KSxzLmhhc1RleHQoZSkmJih2KCJ0ZXh0dGVtcGxhdGUiKSxwKHQsZSxnLHYpKTt2YXIgYj1bXTsocy5oYXNNYXJrZXJzKGUpfHxzLmhhc1RleHQoZSkpJiYodigiY2xpcG9uYXhpcyIpLHYoIm1hcmtlci5tYXhkaXNwbGF5ZWQiKSxiLnB1c2goInBvaW50cyIpKSx2KCJmaWxsIix5P3kuZmlsbERmbHQ6Im5vbmUiKSwibm9uZSIhPT1lLmZpbGwmJihkKHQsZSxyLHYpLHMuaGFzTGluZXMoZSl8fGYodCxlLHYpKTt2YXIgXz0oZS5saW5lfHx7fSkuY29sb3Isdz0oZS5tYXJrZXJ8fHt9KS5jb2xvcjsidG9uZXh0IiE9PWUuZmlsbCYmInRvc2VsZiIhPT1lLmZpbGx8fGIucHVzaCgiZmlsbHMiKSx2KCJob3Zlcm9uIixiLmpvaW4oIisiKXx8InBvaW50cyIpLCJmaWxscyIhPT1lLmhvdmVyb24mJnYoImhvdmVydGVtcGxhdGUiKTt2YXIgaz1hLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwic3VwcGx5RGVmYXVsdHMiKTtrKHQsZSxffHx3fHxyLHtheGlzOiJ5In0pLGsodCxlLF98fHd8fHIse2F4aXM6IngiLGluaGVyaXQ6InkifSksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUsdil9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVzIjoxMTIwLCIuL2NvbnN0YW50cyI6MTEyNCwiLi9maWxsY29sb3JfZGVmYXVsdHMiOjExMjgsIi4vbGluZV9kZWZhdWx0cyI6MTEzMywiLi9saW5lX3NoYXBlX2RlZmF1bHRzIjoxMTM1LCIuL21hcmtlcl9kZWZhdWx0cyI6MTEzOSwiLi9zdGFja19kZWZhdWx0cyI6MTE0MiwiLi9zdWJ0eXBlcyI6MTE0NCwiLi90ZXh0X2RlZmF1bHRzIjoxMTQ1LCIuL3h5X2RlZmF1bHRzIjoxMTQ2fV0sMTEyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksYT10KCIuLi8uLi9saWIiKS5pc0FycmF5T3JUeXBlZEFycmF5O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz0hMTtpZihlLm1hcmtlcil7dmFyIHM9ZS5tYXJrZXIuY29sb3IsbD0oZS5tYXJrZXIubGluZXx8e30pLmNvbG9yO3MmJiFhKHMpP289czpsJiYhYShsKSYmKG89bCl9aSgiZmlsbGNvbG9yIixuLmFkZE9wYWNpdHkoKGUubGluZXx8e30pLmNvbG9yfHxvfHxyLC41KSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTd9XSwxMTI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT17fSxpPXtfZnVsbExheW91dDpyfSxvPW4uZ2V0RnJvbVRyYWNlKGksZSwieCIpLHM9bi5nZXRGcm9tVHJhY2UoaSxlLCJ5Iik7cmV0dXJuIGEueExhYmVsPW4udGlja1RleHQobyx0LngsITApLnRleHQsYS55TGFiZWw9bi50aWNrVGV4dChzLHQueSwhMCkudGV4dCxhfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1fV0sMTEzMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksYT10KCIuL3N1YnR5cGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsaTtpZigibGluZXMiPT09dC5tb2RlKXJldHVybihyPXQubGluZS5jb2xvcikmJm4ub3BhY2l0eShyKT9yOnQuZmlsbGNvbG9yO2lmKCJub25lIj09PXQubW9kZSlyZXR1cm4gdC5maWxsP3QuZmlsbGNvbG9yOiIiO3ZhciBvPWUubWNjfHwodC5tYXJrZXJ8fHt9KS5jb2xvcixzPWUubWxjY3x8KCh0Lm1hcmtlcnx8e30pLmxpbmV8fHt9KS5jb2xvcjtyZXR1cm4oaT1vJiZuLm9wYWNpdHkobyk/bzpzJiZuLm9wYWNpdHkocykmJihlLm1sd3x8KCh0Lm1hcmtlcnx8e30pLmxpbmV8fHt9KS53aWR0aCk/czoiIik/bi5vcGFjaXR5KGkpPC4zP24uYWRkT3BhY2l0eShpLC4zKTppOihyPSh0LmxpbmV8fHt9KS5jb2xvcikmJm4ub3BhY2l0eShyKSYmYS5oYXNMaW5lcyh0KSYmdC5saW5lLndpZHRoP3I6dC5maWxsY29sb3J9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi9zdWJ0eXBlcyI6MTE0NH1dLDExMzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgiLi9nZXRfdHJhY2VfY29sb3IiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxsPW4uZmlsbFRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMpe3ZhciB1PXQuY2QsaD11WzBdLnRyYWNlLGY9dC54YSxwPXQueWEsZD1mLmMycChlKSxnPXAuYzJwKHIpLHY9W2QsZ10sbT1oLmhvdmVyb258fCIiLHk9LTEhPT1oLm1vZGUuaW5kZXhPZigibWFya2VycyIpPzM6LjU7aWYoLTEhPT1tLmluZGV4T2YoInBvaW50cyIpKXt2YXIgeD1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCh5LHQubXJjfHwwKSxyPWYuYzJwKHQueCktZCxuPXAuYzJwKHQueSktZztyZXR1cm4gTWF0aC5tYXgoTWF0aC5zcXJ0KHIqcituKm4pLWUsMS15L2UpfSxiPWEuZ2V0RGlzdGFuY2VGdW5jdGlvbihjLGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDMsdC5tcmN8fDApLHI9MS0xL2Usbj1NYXRoLmFicyhmLmMycCh0LngpLWQpO3JldHVybiBuPGU/cipuL2U6bi1lK3J9LGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDMsdC5tcmN8fDApLHI9MS0xL2Usbj1NYXRoLmFicyhwLmMycCh0LnkpLWcpO3JldHVybiBuPGU/cipuL2U6bi1lK3J9LHgpO2lmKGEuZ2V0Q2xvc2VzdCh1LGIsdCksITEhPT10LmluZGV4KXt2YXIgXz11W3QuaW5kZXhdLHc9Zi5jMnAoXy54LCEwKSxrPXAuYzJwKF8ueSwhMCksVD1fLm1yY3x8MTt0LmluZGV4PV8uaTt2YXIgTT11WzBdLnQub3JpZW50YXRpb24sQT1NJiYoXy5zTm9ybXx8Xy5zKSxTPSJoIj09PU0/QTpfLngsRT0idiI9PT1NP0E6Xy55O3JldHVybiBuLmV4dGVuZEZsYXQodCx7Y29sb3I6byhoLF8pLHgwOnctVCx4MTp3K1QseExhYmVsVmFsOlMseTA6ay1ULHkxOmsrVCx5TGFiZWxWYWw6RSxzcGlrZURpc3RhbmNlOngoXyksaG92ZXJ0ZW1wbGF0ZTpoLmhvdmVydGVtcGxhdGV9KSxsKF8saCx0KSxpLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwiaG92ZXJJbmZvIikoXyxoLHQpLFt0XX19aWYoLTEhPT1tLmluZGV4T2YoImZpbGxzIikmJmguX3BvbHlnb25zKXt2YXIgTCxDLFAsTyx6LEksRCxSLEYsQj1oLl9wb2x5Z29ucyxOPVtdLGo9ITEsVj0xLzAsVT0tMS8wLHE9MS8wLEg9LTEvMDtmb3IoTD0wO0w8Qi5sZW5ndGg7TCsrKShQPUJbTF0pLmNvbnRhaW5zKHYpJiYoaj0haixOLnB1c2goUCkscT1NYXRoLm1pbihxLFAueW1pbiksSD1NYXRoLm1heChILFAueW1heCkpO2lmKGope3ZhciBHPSgocT1NYXRoLm1heChxLDApKSsoSD1NYXRoLm1pbihILHAuX2xlbmd0aCkpKS8yO2ZvcihMPTA7TDxOLmxlbmd0aDtMKyspZm9yKE89TltMXS5wdHMsQz0xO0M8Ty5sZW5ndGg7QysrKShSPU9bQy0xXVsxXSk+RyE9KEY9T1tDXVsxXSk+PUcmJihJPU9bQy0xXVswXSxEPU9bQ11bMF0sRi1SJiYoej1JKyhELUkpKihHLVIpLyhGLVIpLFY9TWF0aC5taW4oVix6KSxVPU1hdGgubWF4KFUseikpKTtWPU1hdGgubWF4KFYsMCksVT1NYXRoLm1pbihVLGYuX2xlbmd0aCk7dmFyIFk9cy5kZWZhdWx0TGluZTtyZXR1cm4gcy5vcGFjaXR5KGguZmlsbGNvbG9yKT9ZPWguZmlsbGNvbG9yOnMub3BhY2l0eSgoaC5saW5lfHx7fSkuY29sb3IpJiYoWT1oLmxpbmUuY29sb3IpLG4uZXh0ZW5kRmxhdCh0LHtkaXN0YW5jZTp0Lm1heEhvdmVyRGlzdGFuY2UseDA6Vix4MTpVLHkwOkcseTE6Ryxjb2xvcjpZLGhvdmVydGVtcGxhdGU6ITF9KSxkZWxldGUgdC5pbmRleCxoLnRleHQmJiFBcnJheS5pc0FycmF5KGgudGV4dCk/dC50ZXh0PVN0cmluZyhoLnRleHQpOnQudGV4dD1oLm5hbWUsW3RdfX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9nZXRfdHJhY2VfY29sb3IiOjExMzB9XSwxMTMyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vc3VidHlwZXMiKTtlLmV4cG9ydHM9e2hhc0xpbmVzOm4uaGFzTGluZXMsaGFzTWFya2VyczpuLmhhc01hcmtlcnMsaGFzVGV4dDpuLmhhc1RleHQsaXNCdWJibGU6bi5pc0J1YmJsZSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi9jcm9zc190cmFjZV9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIikuY2FsYyxjcm9zc1RyYWNlQ2FsYzp0KCIuL2Nyb3NzX3RyYWNlX2NhbGMiKSxhcnJheXNUb0NhbGNkYXRhOnQoIi4vYXJyYXlzX3RvX2NhbGNkYXRhIikscGxvdDp0KCIuL3Bsb3QiKSxjb2xvcmJhcjp0KCIuL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIuL2Zvcm1hdF9sYWJlbHMiKSxzdHlsZTp0KCIuL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4vc2VsZWN0IiksYW5pbWF0YWJsZTohMCxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlciIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImNhcnRlc2lhbiIsInN2ZyIsInN5bWJvbHMiLCJlcnJvckJhcnNPSyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiLCJ6b29tU2NhbGUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi9hcnJheXNfdG9fY2FsY2RhdGEiOjExMTksIi4vYXR0cmlidXRlcyI6MTEyMCwiLi9jYWxjIjoxMTIxLCIuL2Nyb3NzX3RyYWNlX2NhbGMiOjExMjUsIi4vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiOjExMjYsIi4vZGVmYXVsdHMiOjExMjcsIi4vZm9ybWF0X2xhYmVscyI6MTEyOSwiLi9ob3ZlciI6MTEzMSwiLi9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4vcGxvdCI6MTE0MCwiLi9zZWxlY3QiOjExNDEsIi4vc3R5bGUiOjExNDMsIi4vc3VidHlwZXMiOjExNDR9XSwxMTMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyxzLGwpe3ZhciBjPSh0Lm1hcmtlcnx8e30pLmNvbG9yOyhzKCJsaW5lLmNvbG9yIixyKSxhKHQsImxpbmUiKSk/aSh0LGUsbyxzLHtwcmVmaXg6ImxpbmUuIixjTGV0dGVyOiJjIn0pOnMoImxpbmUuY29sb3IiLCFuKGMpJiZjfHxyKTtzKCJsaW5lLndpZHRoIiksKGx8fHt9KS5ub0Rhc2h8fHMoImxpbmUuZGFzaCIpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hlbHBlcnMiOjYwMywiLi4vLi4vbGliIjo3MTd9XSwxMTM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKSxhPW4uQkFETlVNLGk9bi5MT0dfQ0xJUCxvPWkrLjUscz1pLS41LGw9dCgiLi4vLi4vbGliIiksYz1sLnNlZ21lbnRzSW50ZXJzZWN0LHU9bC5jb25zdHJhaW4saD10KCIuL2NvbnN0YW50cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG4saSxmLHAsZCxnLHYsbSx5LHgsYixfLHcsayxULE0sQSxTPWUueGF4aXMsRT1lLnlheGlzLEw9ImxvZyI9PT1TLnR5cGUsQz0ibG9nIj09PUUudHlwZSxQPVMuX2xlbmd0aCxPPUUuX2xlbmd0aCx6PWUuY29ubmVjdEdhcHMsST1lLmJhc2VUb2xlcmFuY2UsRD1lLnNoYXBlLFI9ImxpbmVhciI9PT1ELEY9ZS5maWxsJiYibm9uZSIhPT1lLmZpbGwsQj1bXSxOPWgubWluVG9sZXJhbmNlLGo9dC5sZW5ndGgsVj1uZXcgQXJyYXkoaiksVT0wO2Z1bmN0aW9uIHEocil7dmFyIG49dFtyXTtpZighbilyZXR1cm4hMTt2YXIgaT1lLmxpbmVhcml6ZWQ/Uy5sMnAobi54KTpTLmMycChuLngpLGw9ZS5saW5lYXJpemVkP0UubDJwKG4ueSk6RS5jMnAobi55KTtpZihpPT09YSl7aWYoTCYmKGk9Uy5jMnAobi54LCEwKSksaT09PWEpcmV0dXJuITE7QyYmbD09PWEmJihpKj1NYXRoLmFicyhTLl9tKk8qKFMuX20+MD9vOnMpLyhFLl9tKlAqKEUuX20+MD9vOnMpKSkpLGkqPTFlM31pZihsPT09YSl7aWYoQyYmKGw9RS5jMnAobi55LCEwKSksbD09PWEpcmV0dXJuITE7bCo9MWUzfXJldHVybltpLGxdfWZ1bmN0aW9uIEgodCxlLHIsbil7dmFyIGE9ci10LGk9bi1lLG89LjUtdCxzPS41LWUsbD1hKmEraSppLGM9YSpvK2kqcztpZihjPjAmJmM8bCl7dmFyIHU9byppLXMqYTtpZih1KnU8bClyZXR1cm4hMH19ZnVuY3Rpb24gRyh0LGUpe3ZhciByPXRbMF0vUCxuPXRbMV0vTyxhPU1hdGgubWF4KDAsLXIsci0xLC1uLG4tMSk7cmV0dXJuIGEmJnZvaWQgMCE9PU0mJkgocixuLE0sQSkmJihhPTApLGEmJmUmJkgocixuLGVbMF0vUCxlWzFdL08pJiYoYT0wKSwoMStoLnRvbGVyYW5jZUdyb3d0aCphKSpJfWZ1bmN0aW9uIFkodCxlKXt2YXIgcj10WzBdLWVbMF0sbj10WzFdLWVbMV07cmV0dXJuIE1hdGguc3FydChyKnIrbipuKX12YXIgVyxYLFosSixLLFEsJCx0dD1oLm1heFNjcmVlbnNBd2F5LGV0PS1QKnR0LHJ0PVAqKDErdHQpLG50PS1PKnR0LGF0PU8qKDErdHQpLGl0PVtbZXQsbnQscnQsbnRdLFtydCxudCxydCxhdF0sW3J0LGF0LGV0LGF0XSxbZXQsYXQsZXQsbnRdXTtmdW5jdGlvbiBvdCh0KXtpZih0WzBdPGV0fHx0WzBdPnJ0fHx0WzFdPG50fHx0WzFdPmF0KXJldHVyblt1KHRbMF0sZXQscnQpLHUodFsxXSxudCxhdCldfWZ1bmN0aW9uIHN0KHQsZSl7cmV0dXJuIHRbMF09PT1lWzBdJiYodFswXT09PWV0fHx0WzBdPT09cnQpfHwodFsxXT09PWVbMV0mJih0WzFdPT09bnR8fHRbMV09PT1hdCl8fHZvaWQgMCl9ZnVuY3Rpb24gbHQodCxlLHIpe3JldHVybiBmdW5jdGlvbihuLGEpe3ZhciBpPW90KG4pLG89b3QoYSkscz1bXTtpZihpJiZvJiZzdChpLG8pKXJldHVybiBzO2kmJnMucHVzaChpKSxvJiZzLnB1c2gobyk7dmFyIGM9MipsLmNvbnN0cmFpbigoblt0XSthW3RdKS8yLGUsciktKChpfHxuKVt0XSsob3x8YSlbdF0pO2MmJigoaSYmbz9jPjA9PWlbdF0+b1t0XT9pOm86aXx8bylbdF0rPWMpO3JldHVybiBzfX1mdW5jdGlvbiBjdCh0KXt2YXIgZT10WzBdLHI9dFsxXSxuPWU9PT1WW1UtMV1bMF0sYT1yPT09VltVLTFdWzFdO2lmKCFufHwhYSlpZihVPjEpe3ZhciBpPWU9PT1WW1UtMl1bMF0sbz1yPT09VltVLTJdWzFdO24mJihlPT09ZXR8fGU9PT1ydCkmJmk/bz9VLS06VltVLTFdPXQ6YSYmKHI9PT1udHx8cj09PWF0KSYmbz9pP1UtLTpWW1UtMV09dDpWW1UrK109dH1lbHNlIFZbVSsrXT10fWZ1bmN0aW9uIHV0KHQpe1ZbVS0xXVswXSE9PXRbMF0mJlZbVS0xXVsxXSE9PXRbMV0mJmN0KFtaLEpdKSxjdCh0KSxLPW51bGwsWj1KPTB9ZnVuY3Rpb24gaHQodCl7aWYoTT10WzBdL1AsQT10WzFdL08sVz10WzBdPGV0P2V0OnRbMF0+cnQ/cnQ6MCxYPXRbMV08bnQ/bnQ6dFsxXT5hdD9hdDowLFd8fFgpe2lmKFUpaWYoSyl7dmFyIGU9JChLLHQpO2UubGVuZ3RoPjEmJih1dChlWzBdKSxWW1UrK109ZVsxXSl9ZWxzZSBRPSQoVltVLTFdLHQpWzBdLFZbVSsrXT1RO2Vsc2UgVltVKytdPVtXfHx0WzBdLFh8fHRbMV1dO3ZhciByPVZbVS0xXTtXJiZYJiYoclswXSE9PVd8fHJbMV0hPT1YKT8oSyYmKFohPT1XJiZKIT09WD9jdChaJiZKPyhuPUssaT0oYT10KVswXS1uWzBdLG89KGFbMV0tblsxXSkvaSwoblsxXSphWzBdLWFbMV0qblswXSkvaT4wP1tvPjA/ZXQ6cnQsYXRdOltvPjA/cnQ6ZXQsbnRdKTpbWnx8VyxKfHxYXSk6WiYmSiYmY3QoW1osSl0pKSxjdChbVyxYXSkpOlotVyYmSi1YJiZjdChbV3x8WixYfHxKXSksSz10LFo9VyxKPVh9ZWxzZSBLJiZ1dCgkKEssdClbMF0pLFZbVSsrXT10O3ZhciBuLGEsaSxvfWZvcigibGluZWFyIj09PUR8fCJzcGxpbmUiPT09RD8kPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLG49MCxhPTA7YTw0O2ErKyl7dmFyIGk9aXRbYV0sbz1jKHRbMF0sdFsxXSxlWzBdLGVbMV0saVswXSxpWzFdLGlbMl0saVszXSk7byYmKCFufHxNYXRoLmFicyhvLngtclswXVswXSk+MXx8TWF0aC5hYnMoby55LXJbMF1bMV0pPjEpJiYobz1bby54LG8ueV0sbiYmWShvLHQpPFkoclswXSx0KT9yLnVuc2hpZnQobyk6ci5wdXNoKG8pLG4rKyl9cmV0dXJuIHJ9OiJodiI9PT1EfHwidmgiPT09RD8kPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W10sbj1vdCh0KSxhPW90KGUpO3JldHVybiBuJiZhJiZzdChuLGEpP3I6KG4mJnIucHVzaChuKSxhJiZyLnB1c2goYSkscil9OiJodmgiPT09RD8kPWx0KDAsZXQscnQpOiJ2aHYiPT09RCYmKCQ9bHQoMSxudCxhdCkpLHI9MDtyPGo7cisrKWlmKG49cShyKSl7Zm9yKFU9MCxLPW51bGwsaHQobikscisrO3I8ajtyKyspe2lmKCEoZj1xKHIpKSl7aWYoeiljb250aW51ZTticmVha31pZihSJiZlLnNpbXBsaWZ5KXt2YXIgZnQ9cShyKzEpO2lmKHk9WShmLG4pLEYmJigwPT09VXx8VT09PWotMSl8fCEoeTxHKGYsZnQpKk4pKXtmb3Iodj1bKGZbMF0tblswXSkveSwoZlsxXS1uWzFdKS95XSxwPW4seD15LGI9dz1rPTAsZz0hMSxpPWYscisrO3I8dC5sZW5ndGg7cisrKXtpZihkPWZ0LGZ0PXEocisxKSwhZCl7aWYoeiljb250aW51ZTticmVha31pZihUPShtPVtkWzBdLW5bMF0sZFsxXS1uWzFdXSlbMF0qdlsxXS1tWzFdKnZbMF0sdz1NYXRoLm1pbih3LFQpLChrPU1hdGgubWF4KGssVCkpLXc+RyhkLGZ0KSlicmVhaztpPWQsKF89bVswXSp2WzBdK21bMV0qdlsxXSk+eD8oeD1fLGY9ZCxnPSExKTpfPGImJihiPV8scD1kLGc9ITApfWlmKGc/KGh0KGYpLGkhPT1wJiZodChwKSk6KHAhPT1uJiZodChwKSxpIT09ZiYmaHQoZikpLGh0KGkpLHI+PXQubGVuZ3RofHwhZClicmVhaztodChkKSxuPWR9fWVsc2UgaHQoZil9SyYmY3QoW1p8fEtbMF0sSnx8S1sxXV0pLEIucHVzaChWLnNsaWNlKDAsVSkpfXJldHVybiBCfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuL2NvbnN0YW50cyI6MTEyNH1dLDExMzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXsic3BsaW5lIj09PXIoImxpbmUuc2hhcGUiKSYmcigibGluZS5zbW9vdGhpbmciKX19LHt9XSwxMTM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt0b25leHR4OjEsdG9uZXh0eToxLHRvbmV4dDoxfTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhLGksbyxzLGwsYz17fSx1PSExLGg9LTEsZj0wLHA9LTE7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKykobz0oYT1yW2ldWzBdLnRyYWNlKS5zdGFja2dyb3VwfHwiIik/byBpbiBjP2w9Y1tvXToobD1jW29dPWYsZisrKTphLmZpbGwgaW4gbiYmcD49MD9sPXA6KGw9cD1mLGYrKyksbDxoJiYodT0hMCksYS5fZ3JvdXBJbmRleD1oPWw7dmFyIGQ9ci5zbGljZSgpO3UmJmQuc29ydChmdW5jdGlvbih0LGUpe3ZhciByPXRbMF0udHJhY2Usbj1lWzBdLnRyYWNlO3JldHVybiByLl9ncm91cEluZGV4LW4uX2dyb3VwSW5kZXh8fHIuaW5kZXgtbi5pbmRleH0pO3ZhciBnPXt9O2ZvcihpPTA7aTxkLmxlbmd0aDtpKyspbz0oYT1kW2ldWzBdLnRyYWNlKS5zdGFja2dyb3VwfHwiIiwhMD09PWEudmlzaWJsZT8oYS5fbmV4dHRyYWNlPW51bGwsYS5maWxsIGluIG4mJihzPWdbb10sYS5fcHJldnRyYWNlPXN8fG51bGwscyYmKHMuX25leHR0cmFjZT1hKSksYS5fb3duZmlsbD1hLmZpbGwmJigidG96ZXJvIj09PWEuZmlsbC5zdWJzdHIoMCw2KXx8InRvc2VsZiI9PT1hLmZpbGx8fCJ0byI9PT1hLmZpbGwuc3Vic3RyKDAsMikmJiFhLl9wcmV2dHJhY2UpLGdbb109YSk6YS5fcHJldnRyYWNlPWEuX25leHR0cmFjZT1hLl9vd25maWxsPW51bGw7cmV0dXJuIGR9fSx7fV0sMTEzNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Lm1hcmtlcixyPWUuc2l6ZXJlZnx8MSxhPWUuc2l6ZW1pbnx8MCxpPSJhcmVhIj09PWUuc2l6ZW1vZGU/ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh0L3IpfTpmdW5jdGlvbih0KXtyZXR1cm4gdC9yfTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9aSh0LzIpO3JldHVybiBuKGUpJiZlPjA/TWF0aC5tYXgoZSxhKTowfX19LHsiZmFzdC1pc251bWVyaWMiOjIyOH1dLDExMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjb250YWluZXI6Im1hcmtlciIsbWluOiJjbWluIixtYXg6ImNtYXgifX0se31dLDExMzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hlbHBlcnMiKS5oYXNDb2xvcnNjYWxlLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksbz10KCIuL3N1YnR5cGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMsbCxjKXt2YXIgdT1vLmlzQnViYmxlKHQpLGg9KHQubGluZXx8e30pLmNvbG9yOyhjPWN8fHt9LGgmJihyPWgpLGwoIm1hcmtlci5zeW1ib2wiKSxsKCJtYXJrZXIub3BhY2l0eSIsdT8uNzoxKSxsKCJtYXJrZXIuc2l6ZSIpLGwoIm1hcmtlci5jb2xvciIsciksYSh0LCJtYXJrZXIiKSYmaSh0LGUscyxsLHtwcmVmaXg6Im1hcmtlci4iLGNMZXR0ZXI6ImMifSksYy5ub1NlbGVjdHx8KGwoInNlbGVjdGVkLm1hcmtlci5jb2xvciIpLGwoInVuc2VsZWN0ZWQubWFya2VyLmNvbG9yIiksbCgic2VsZWN0ZWQubWFya2VyLnNpemUiKSxsKCJ1bnNlbGVjdGVkLm1hcmtlci5zaXplIikpLGMubm9MaW5lfHwobCgibWFya2VyLmxpbmUuY29sb3IiLGgmJiFBcnJheS5pc0FycmF5KGgpJiZlLm1hcmtlci5jb2xvciE9PWg/aDp1P24uYmFja2dyb3VuZDpuLmRlZmF1bHRMaW5lKSxhKHQsIm1hcmtlci5saW5lIikmJmkodCxlLHMsbCx7cHJlZml4OiJtYXJrZXIubGluZS4iLGNMZXR0ZXI6ImMifSksbCgibWFya2VyLmxpbmUud2lkdGgiLHU/MTowKSksdSYmKGwoIm1hcmtlci5zaXplcmVmIiksbCgibWFya2VyLnNpemVtaW4iKSxsKCJtYXJrZXIuc2l6ZW1vZGUiKSksYy5ncmFkaWVudCkmJigibm9uZSIhPT1sKCJtYXJrZXIuZ3JhZGllbnQudHlwZSIpJiZsKCJtYXJrZXIuZ3JhZGllbnQuY29sb3IiKSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2MDIsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMsIi4vc3VidHlwZXMiOjExNDR9XSwxMTQwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliIiksbz1pLmVuc3VyZVNpbmdsZSxzPWkuaWRlbnRpdHksbD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxjPXQoIi4vc3VidHlwZXMiKSx1PXQoIi4vbGluZV9wb2ludHMiKSxoPXQoIi4vbGlua190cmFjZXMiKSxmPXQoIi4uLy4uL2xpYi9wb2x5Z29uIikudGVzdGVyO2Z1bmN0aW9uIHAodCxlLHIsaCxwLGQsZyl7dmFyIHY7IWZ1bmN0aW9uKHQsZSxyLGEsbyl7dmFyIHM9ci54YXhpcyxsPXIueWF4aXMsdT1uLmV4dGVudChpLnNpbXBsZU1hcChzLnJhbmdlLHMucjJjKSksaD1uLmV4dGVudChpLnNpbXBsZU1hcChsLnJhbmdlLGwucjJjKSksZj1hWzBdLnRyYWNlO2lmKCFjLmhhc01hcmtlcnMoZikpcmV0dXJuO3ZhciBwPWYubWFya2VyLm1heGRpc3BsYXllZDtpZigwPT09cClyZXR1cm47dmFyIGQ9YS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQueD49dVswXSYmdC54PD11WzFdJiZ0Lnk+PWhbMF0mJnQueTw9aFsxXX0pLGc9TWF0aC5jZWlsKGQubGVuZ3RoL3ApLHY9MDtvLmZvckVhY2goZnVuY3Rpb24odCxyKXt2YXIgbj10WzBdLnRyYWNlO2MuaGFzTWFya2VycyhuKSYmbi5tYXJrZXIubWF4ZGlzcGxheWVkPjAmJnI8ZSYmdisrfSk7dmFyIG09TWF0aC5yb3VuZCh2KmcvMytNYXRoLmZsb29yKHYvMykqZy83LjEpO2EuZm9yRWFjaChmdW5jdGlvbih0KXtkZWxldGUgdC52aXN9KSxkLmZvckVhY2goZnVuY3Rpb24odCxlKXswPT09TWF0aC5yb3VuZCgoZSttKSVnKSYmKHQudmlzPSEwKX0pfSgwLGUscixoLHApO3ZhciBtPSEhZyYmZy5kdXJhdGlvbj4wO2Z1bmN0aW9uIHkodCl7cmV0dXJuIG0/dC50cmFuc2l0aW9uKCk6dH12YXIgeD1yLnhheGlzLGI9ci55YXhpcyxfPWhbMF0udHJhY2Usdz1fLmxpbmUsaz1uLnNlbGVjdChkKSxUPW8oaywiZyIsImVycm9yYmFycyIpLE09byhrLCJnIiwibGluZXMiKSxBPW8oaywiZyIsInBvaW50cyIpLFM9byhrLCJnIiwidGV4dCIpO2lmKGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJwbG90IikodCxULHIsZyksITA9PT1fLnZpc2libGUpe3ZhciBFLEw7eShrKS5zdHlsZSgib3BhY2l0eSIsXy5vcGFjaXR5KTt2YXIgQz1fLmZpbGwuY2hhckF0KF8uZmlsbC5sZW5ndGgtMSk7IngiIT09QyYmInkiIT09QyYmKEM9IiIpLGhbMF1bci5pc1JhbmdlUGxvdD8ibm9kZVJhbmdlUGxvdDMiOiJub2RlMyJdPWs7dmFyIFAsTyx6PSIiLEk9W10sRD1fLl9wcmV2dHJhY2U7RCYmKHo9RC5fcHJldlJldnBhdGh8fCIiLEw9RC5fbmV4dEZpbGwsST1ELl9wb2x5Z29ucyk7dmFyIFIsRixCLE4saixWLFUscT0iIixIPSIiLEc9W10sWT1pLm5vb3A7aWYoRT1fLl9vd25GaWxsLGMuaGFzTGluZXMoXyl8fCJub25lIiE9PV8uZmlsbCl7Zm9yKEwmJkwuZGF0dW0oaCksLTEhPT1bImh2IiwidmgiLCJodmgiLCJ2aHYiXS5pbmRleE9mKHcuc2hhcGUpPyhSPWwuc3RlcHMody5zaGFwZSksRj1sLnN0ZXBzKHcuc2hhcGUuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKSkpOlI9Rj0ic3BsaW5lIj09PXcuc2hhcGU/ZnVuY3Rpb24odCl7dmFyIGU9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdC5sZW5ndGg+MSYmdFswXVswXT09PWVbMF0mJnRbMF1bMV09PT1lWzFdP2wuc21vb3RoY2xvc2VkKHQuc2xpY2UoMSksdy5zbW9vdGhpbmcpOmwuc21vb3Rob3Blbih0LHcuc21vb3RoaW5nKX06ZnVuY3Rpb24odCl7cmV0dXJuIk0iK3Quam9pbigiTCIpfSxCPWZ1bmN0aW9uKHQpe3JldHVybiBGKHQucmV2ZXJzZSgpKX0sRz11KGgse3hheGlzOngseWF4aXM6Yixjb25uZWN0R2FwczpfLmNvbm5lY3RnYXBzLGJhc2VUb2xlcmFuY2U6TWF0aC5tYXgody53aWR0aHx8MSwzKS80LHNoYXBlOncuc2hhcGUsc2ltcGxpZnk6dy5zaW1wbGlmeSxmaWxsOl8uZmlsbH0pLFU9Xy5fcG9seWdvbnM9bmV3IEFycmF5KEcubGVuZ3RoKSx2PTA7djxHLmxlbmd0aDt2KyspXy5fcG9seWdvbnNbdl09ZihHW3ZdKTtHLmxlbmd0aCYmKE49R1swXVswXSxWPShqPUdbRy5sZW5ndGgtMV0pW2oubGVuZ3RoLTFdKSxZPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihQPVIoZSksTz1CKGUpLHE/Qz8ocSs9IkwiK1Auc3Vic3RyKDEpLEg9TysiTCIrSC5zdWJzdHIoMSkpOihxKz0iWiIrUCxIPU8rIloiK0gpOihxPVAsSD1PKSxjLmhhc0xpbmVzKF8pJiZlLmxlbmd0aD4xKXt2YXIgcj1uLnNlbGVjdCh0aGlzKTtpZihyLmRhdHVtKGgpLHQpeShyLnN0eWxlKCJvcGFjaXR5IiwwKS5hdHRyKCJkIixQKS5jYWxsKGwubGluZUdyb3VwU3R5bGUpKS5zdHlsZSgib3BhY2l0eSIsMSk7ZWxzZXt2YXIgYT15KHIpO2EuYXR0cigiZCIsUCksbC5zaW5nbGVMaW5lU3R5bGUoaCxhKX19fX19dmFyIFc9TS5zZWxlY3RBbGwoIi5qcy1saW5lIikuZGF0YShHKTt5KFcuZXhpdCgpKS5zdHlsZSgib3BhY2l0eSIsMCkucmVtb3ZlKCksVy5lYWNoKFkoITEpKSxXLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgianMtbGluZSIsITApLnN0eWxlKCJ2ZWN0b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIikuY2FsbChsLmxpbmVHcm91cFN0eWxlKS5lYWNoKFkoITApKSxsLnNldENsaXBVcmwoVyxyLmxheWVyQ2xpcElkLHQpLEcubGVuZ3RoPyhFPyhFLmRhdHVtKGgpLE4mJlYmJihDPygieSI9PT1DP05bMV09VlsxXT1iLmMycCgwLCEwKToieCI9PT1DJiYoTlswXT1WWzBdPXguYzJwKDAsITApKSx5KEUpLmF0dHIoImQiLCJNIitWKyJMIitOKyJMIitxLnN1YnN0cigxKSkuY2FsbChsLnNpbmdsZUZpbGxTdHlsZSkpOnkoRSkuYXR0cigiZCIscSsiWiIpLmNhbGwobC5zaW5nbGVGaWxsU3R5bGUpKSk6TCYmKCJ0b25leHQiPT09Xy5maWxsLnN1YnN0cigwLDYpJiZxJiZ6PygidG9uZXh0Ij09PV8uZmlsbD95KEwpLmF0dHIoImQiLHErIloiK3orIloiKS5jYWxsKGwuc2luZ2xlRmlsbFN0eWxlKTp5KEwpLmF0dHIoImQiLHErIkwiK3ouc3Vic3RyKDEpKyJaIikuY2FsbChsLnNpbmdsZUZpbGxTdHlsZSksXy5fcG9seWdvbnM9Xy5fcG9seWdvbnMuY29uY2F0KEkpKTooWihMKSxfLl9wb2x5Z29ucz1udWxsKSksXy5fcHJldlJldnBhdGg9SCxfLl9wcmV2UG9seWdvbnM9VSk6KEU/WihFKTpMJiZaKEwpLF8uX3BvbHlnb25zPV8uX3ByZXZSZXZwYXRoPV8uX3ByZXZQb2x5Z29ucz1udWxsKSxBLmRhdHVtKGgpLFMuZGF0dW0oaCksZnVuY3Rpb24oZSxhLGkpe3ZhciBvLHU9aVswXS50cmFjZSxoPWMuaGFzTWFya2Vycyh1KSxmPWMuaGFzVGV4dCh1KSxwPXR0KHUpLGQ9ZXQsZz1ldDtpZihofHxmKXt2YXIgdj1zLF89dS5zdGFja2dyb3VwLHc9XyYmImluZmVyIHplcm8iPT09dC5fZnVsbExheW91dC5fc2NhdHRlclN0YWNrT3B0c1t4Ll9pZCtiLl9pZF1bX10uc3RhY2tnYXBzO3UubWFya2VyLm1heGRpc3BsYXllZHx8dS5fbmVlZHNDdWxsP3Y9dz9LOko6XyYmIXcmJih2PVEpLGgmJihkPXYpLGYmJihnPXYpfXZhciBrLFQ9KG89ZS5zZWxlY3RBbGwoInBhdGgucG9pbnQiKS5kYXRhKGQscCkpLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgicG9pbnQiLCEwKTttJiZULmNhbGwobC5wb2ludFN0eWxlLHUsdCkuY2FsbChsLnRyYW5zbGF0ZVBvaW50cyx4LGIpLnN0eWxlKCJvcGFjaXR5IiwwKS50cmFuc2l0aW9uKCkuc3R5bGUoIm9wYWNpdHkiLDEpLG8ub3JkZXIoKSxoJiYoaz1sLm1ha2VQb2ludFN0eWxlRm5zKHUpKSxvLmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9bi5zZWxlY3QodGhpcyksaT15KGEpO2wudHJhbnNsYXRlUG9pbnQoZSxpLHgsYik/KGwuc2luZ2xlUG9pbnRTdHlsZShlLGksdSxrLHQpLHIubGF5ZXJDbGlwSWQmJmwuaGlkZU91dHNpZGVSYW5nZVBvaW50KGUsaSx4LGIsdS54Y2FsZW5kYXIsdS55Y2FsZW5kYXIpLHUuY3VzdG9tZGF0YSYmYS5jbGFzc2VkKCJwbG90bHktY3VzdG9tZGF0YSIsbnVsbCE9PWUuZGF0YSYmdm9pZCAwIT09ZS5kYXRhKSk6aS5yZW1vdmUoKX0pLG0/by5leGl0KCkudHJhbnNpdGlvbigpLnN0eWxlKCJvcGFjaXR5IiwwKS5yZW1vdmUoKTpvLmV4aXQoKS5yZW1vdmUoKSwobz1hLnNlbGVjdEFsbCgiZyIpLmRhdGEoZyxwKSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ0ZXh0cG9pbnQiLCEwKS5hcHBlbmQoInRleHQiKSxvLm9yZGVyKCksby5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLGE9eShlLnNlbGVjdCgidGV4dCIpKTtsLnRyYW5zbGF0ZVBvaW50KHQsYSx4LGIpP3IubGF5ZXJDbGlwSWQmJmwuaGlkZU91dHNpZGVSYW5nZVBvaW50KHQsZSx4LGIsdS54Y2FsZW5kYXIsdS55Y2FsZW5kYXIpOmUucmVtb3ZlKCl9KSxvLnNlbGVjdEFsbCgidGV4dCIpLmNhbGwobC50ZXh0UG9pbnRTdHlsZSx1LHQpLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9eC5jMnAodC54KSxyPWIuYzJwKHQueSk7bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuZWFjaChmdW5jdGlvbigpe3kobi5zZWxlY3QodGhpcykpLmF0dHIoe3g6ZSx5OnJ9KX0pfSksby5leGl0KCkucmVtb3ZlKCl9KEEsUyxoKTt2YXIgWD0hMT09PV8uY2xpcG9uYXhpcz9udWxsOnIubGF5ZXJDbGlwSWQ7bC5zZXRDbGlwVXJsKEEsWCx0KSxsLnNldENsaXBVcmwoUyxYLHQpfWZ1bmN0aW9uIFoodCl7eSh0KS5hdHRyKCJkIiwiTTAsMFoiKX1mdW5jdGlvbiBKKHQpe3JldHVybiB0LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hdC5nYXAmJnQudmlzfSl9ZnVuY3Rpb24gSyh0KXtyZXR1cm4gdC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQudmlzfSl9ZnVuY3Rpb24gUSh0KXtyZXR1cm4gdC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIXQuZ2FwfSl9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiB0dCh0KXtpZih0LmlkcylyZXR1cm4gJH1mdW5jdGlvbiBldCgpe3JldHVybiExfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSxpLGMpe3ZhciB1LGYsZD0haSxnPSEhaSYmaS5kdXJhdGlvbj4wLHY9aCh0LGUscik7KCh1PWEuc2VsZWN0QWxsKCJnLnRyYWNlIikuZGF0YSh2LGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNlLnVpZH0pKS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbih0KXtyZXR1cm4idHJhY2Ugc2NhdHRlciB0cmFjZSIrdFswXS50cmFjZS51aWR9KS5zdHlsZSgic3Ryb2tlLW1pdGVybGltaXQiLDIpLHUub3JkZXIoKSxmdW5jdGlvbih0LGUscil7ZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPW8obi5zZWxlY3QodGhpcyksImciLCJmaWxscyIpO2wuc2V0Q2xpcFVybChhLHIubGF5ZXJDbGlwSWQsdCk7dmFyIGk9ZVswXS50cmFjZSxjPVtdO2kuX293bmZpbGwmJmMucHVzaCgiX293bkZpbGwiKSxpLl9uZXh0dHJhY2UmJmMucHVzaCgiX25leHRGaWxsIik7dmFyIHU9YS5zZWxlY3RBbGwoImciKS5kYXRhKGMscyk7dS5lbnRlcigpLmFwcGVuZCgiZyIpLHUuZXhpdCgpLmVhY2goZnVuY3Rpb24odCl7aVt0XT1udWxsfSkucmVtb3ZlKCksdS5vcmRlcigpLmVhY2goZnVuY3Rpb24odCl7aVt0XT1vKG4uc2VsZWN0KHRoaXMpLCJwYXRoIiwianMtZmlsbCIpfSl9KX0odCx1LGUpLGcpPyhjJiYoZj1jKCkpLG4udHJhbnNpdGlvbigpLmR1cmF0aW9uKGkuZHVyYXRpb24pLmVhc2UoaS5lYXNpbmcpLmVhY2goImVuZCIsZnVuY3Rpb24oKXtmJiZmKCl9KS5lYWNoKCJpbnRlcnJ1cHQiLGZ1bmN0aW9uKCl7ZiYmZigpfSkuZWFjaChmdW5jdGlvbigpe2Euc2VsZWN0QWxsKCJnLnRyYWNlIikuZWFjaChmdW5jdGlvbihyLG4pe3AodCxuLGUscix2LHRoaXMsaSl9KX0pKTp1LmVhY2goZnVuY3Rpb24ocixuKXtwKHQsbixlLHIsdix0aGlzLGkpfSk7ZCYmdS5leGl0KCkucmVtb3ZlKCksYS5zZWxlY3RBbGwoInBhdGg6bm90KFtkXSkiKS5yZW1vdmUoKX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvcG9seWdvbiI6NzI5LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2xpbmVfcG9pbnRzIjoxMTM0LCIuL2xpbmtfdHJhY2VzIjoxMTM2LCIuL3N1YnR5cGVzIjoxMTQ0LGQzOjE2NX1dLDExNDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9zdWJ0eXBlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGEsaSxvLHM9dC5jZCxsPXQueGF4aXMsYz10LnlheGlzLHU9W10saD1zWzBdLnRyYWNlO2lmKCFuLmhhc01hcmtlcnMoaCkmJiFuLmhhc1RleHQoaCkpcmV0dXJuW107aWYoITE9PT1lKWZvcihyPTA7cjxzLmxlbmd0aDtyKyspc1tyXS5zZWxlY3RlZD0wO2Vsc2UgZm9yKHI9MDtyPHMubGVuZ3RoO3IrKylhPXNbcl0saT1sLmMycChhLngpLG89Yy5jMnAoYS55KSxudWxsIT09YS5pJiZlLmNvbnRhaW5zKFtpLG9dLCExLHIsdCk/KHUucHVzaCh7cG9pbnROdW1iZXI6YS5pLHg6bC5jMmQoYS54KSx5OmMuYzJkKGEueSl9KSxhLnNlbGVjdGVkPTEpOmEuc2VsZWN0ZWQ9MDtyZXR1cm4gdX19LHsiLi9zdWJ0eXBlcyI6MTE0NH1dLDExNDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49WyJvcmllbnRhdGlvbiIsImdyb3Vwbm9ybSIsInN0YWNrZ2FwcyJdO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXt2YXIgaT1yLl9zY2F0dGVyU3RhY2tPcHRzLG89YSgic3RhY2tncm91cCIpO2lmKG8pe3ZhciBzPWUueGF4aXMrZS55YXhpcyxsPWlbc107bHx8KGw9aVtzXT17fSk7dmFyIGM9bFtvXSx1PSExO2M/Yy50cmFjZXMucHVzaChlKTooYz1sW29dPXt0cmFjZUluZGljZXM6W10sdHJhY2VzOltlXX0sdT0hMCk7Zm9yKHZhciBoPXtvcmllbnRhdGlvbjplLngmJiFlLnk/ImgiOiJ2In0sZj0wO2Y8bi5sZW5ndGg7ZisrKXt2YXIgcD1uW2ZdLGQ9cCsiRm91bmQiO2lmKCFjW2RdKXt2YXIgZz12b2lkIDAhPT10W3BdLHY9Im9yaWVudGF0aW9uIj09PXA7aWYoKGd8fHUpJiYoY1twXT1hKHAsaFtwXSksdiYmKGMuZmlsbERmbHQ9ImgiPT09Y1twXT8idG9uZXh0eCI6InRvbmV4dHkiKSxnJiYoY1tkXT0hMCwhdSYmKGRlbGV0ZSBjLnRyYWNlc1swXVtwXSx2KSkpKWZvcih2YXIgbT0wO208Yy50cmFjZXMubGVuZ3RoLTE7bSsrKXt2YXIgeT1jLnRyYWNlc1ttXTt5Ll9pbnB1dC5maWxsIT09eS5maWxsJiYoeS5maWxsPWMuZmlsbERmbHQpfX19cmV0dXJuIGN9fX0se31dLDExNDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGk9dCgiLi4vLi4vcmVnaXN0cnkiKTtmdW5jdGlvbiBvKHQsZSxyKXthLnBvaW50U3R5bGUodC5zZWxlY3RBbGwoInBhdGgucG9pbnQiKSxlLHIpfWZ1bmN0aW9uIHModCxlLHIpe2EudGV4dFBvaW50U3R5bGUodC5zZWxlY3RBbGwoInRleHQiKSxlLHIpfWUuZXhwb3J0cz17c3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLnRyYWNlLnNjYXR0ZXIiKTtlLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS5vcGFjaXR5fSksZS5zZWxlY3RBbGwoImcucG9pbnRzIikuZWFjaChmdW5jdGlvbihlKXtvKG4uc2VsZWN0KHRoaXMpLGUudHJhY2V8fGVbMF0udHJhY2UsdCl9KSxlLnNlbGVjdEFsbCgiZy50ZXh0IikuZWFjaChmdW5jdGlvbihlKXtzKG4uc2VsZWN0KHRoaXMpLGUudHJhY2V8fGVbMF0udHJhY2UsdCl9KSxlLnNlbGVjdEFsbCgiZy50cmFjZSBwYXRoLmpzLWxpbmUiKS5jYWxsKGEubGluZUdyb3VwU3R5bGUpLGUuc2VsZWN0QWxsKCJnLnRyYWNlIHBhdGguanMtZmlsbCIpLmNhbGwoYS5maWxsR3JvdXBTdHlsZSksaS5nZXRDb21wb25lbnRNZXRob2QoImVycm9yYmFycyIsInN0eWxlIikoZSl9LHN0eWxlUG9pbnRzOm8sc3R5bGVUZXh0OnMsc3R5bGVPblNlbGVjdDpmdW5jdGlvbih0LGUscil7dmFyIG49ZVswXS50cmFjZTtuLnNlbGVjdGVkcG9pbnRzPyhhLnNlbGVjdGVkUG9pbnRTdHlsZShyLnNlbGVjdEFsbCgicGF0aC5wb2ludCIpLG4pLGEuc2VsZWN0ZWRUZXh0U3R5bGUoci5zZWxlY3RBbGwoInRleHQiKSxuKSk6KG8ocixuLHQpLHMocixuLHQpKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9yZWdpc3RyeSI6ODQ2LGQzOjE2NX1dLDExNDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPXtoYXNMaW5lczpmdW5jdGlvbih0KXtyZXR1cm4gdC52aXNpYmxlJiZ0Lm1vZGUmJi0xIT09dC5tb2RlLmluZGV4T2YoImxpbmVzIil9LGhhc01hcmtlcnM6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlzaWJsZSYmKHQubW9kZSYmLTEhPT10Lm1vZGUuaW5kZXhPZigibWFya2VycyIpfHwic3Bsb20iPT09dC50eXBlKX0saGFzVGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdC52aXNpYmxlJiZ0Lm1vZGUmJi0xIT09dC5tb2RlLmluZGV4T2YoInRleHQiKX0saXNCdWJibGU6ZnVuY3Rpb24odCl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdCh0Lm1hcmtlcikmJm4uaXNBcnJheU9yVHlwZWRBcnJheSh0Lm1hcmtlci5zaXplKX19fSx7Ii4uLy4uL2xpYiI6NzE3fV0sMTE0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSxpKXtpPWl8fHt9LGEoInRleHRwb3NpdGlvbiIpLG4uY29lcmNlRm9udChhLCJ0ZXh0Zm9udCIsci5mb250KSxpLm5vU2VsZWN0fHwoYSgic2VsZWN0ZWQudGV4dGZvbnQuY29sb3IiKSxhKCJ1bnNlbGVjdGVkLnRleHRmb250LmNvbG9yIikpfX0seyIuLi8uLi9saWIiOjcxN31dLDExNDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbyxzPWkoIngiKSxsPWkoInkiKTtpZihhLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlVHJhY2VEZWZhdWx0cyIpKHQsZSxbIngiLCJ5Il0scikscyl7dmFyIGM9bi5taW5Sb3dMZW5ndGgocyk7bD9vPU1hdGgubWluKGMsbi5taW5Sb3dMZW5ndGgobCkpOihvPWMsaSgieTAiKSxpKCJkeSIpKX1lbHNle2lmKCFsKXJldHVybiAwO289bi5taW5Sb3dMZW5ndGgobCksaSgieDAiKSxpKCJkeCIpfXJldHVybiBlLl9sZW5ndGg9byxvfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0Nn1dLDExNDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxzPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL2NvbnN0YW50cy9nbDNkX2Rhc2hlcyIpLGM9dCgiLi4vLi4vY29uc3RhbnRzL2dsM2RfbWFya2VycyIpLHU9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsaD10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsZj1uLmxpbmUscD1uLm1hcmtlcixkPXAubGluZSxnPXUoe3dpZHRoOmYud2lkdGgsZGFzaDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOk9iamVjdC5rZXlzKGwpLGRmbHQ6InNvbGlkIn19LGEoImxpbmUiKSk7dmFyIHY9ZS5leHBvcnRzPWgoe3g6bi54LHk6bi55LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx0ZXh0OnUoe30sbi50ZXh0LHt9KSx0ZXh0dGVtcGxhdGU6byh7fSx7fSksaG92ZXJ0ZXh0OnUoe30sbi5ob3ZlcnRleHQse30pLGhvdmVydGVtcGxhdGU6aSgpLG1vZGU6dSh7fSxuLm1vZGUse2RmbHQ6ImxpbmVzK21hcmtlcnMifSksc3VyZmFjZWF4aXM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbLTEsMCwxLDJdLGRmbHQ6LTF9LHN1cmZhY2Vjb2xvcjp7dmFsVHlwZToiY29sb3IifSxwcm9qZWN0aW9uOnt4OntzaG93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX0sc2NhbGU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEwLGRmbHQ6Mi8zfX0seTp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9LHNjYWxlOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxMCxkZmx0OjIvM319LHo6e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfSxzY2FsZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MTAsZGZsdDoyLzN9fX0sY29ubmVjdGdhcHM6bi5jb25uZWN0Z2FwcyxsaW5lOmcsbWFya2VyOnUoe3N5bWJvbDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOk9iamVjdC5rZXlzKGMpLGRmbHQ6ImNpcmNsZSIsYXJyYXlPazohMH0sc2l6ZTp1KHt9LHAuc2l6ZSx7ZGZsdDo4fSksc2l6ZXJlZjpwLnNpemVyZWYsc2l6ZW1pbjpwLnNpemVtaW4sc2l6ZW1vZGU6cC5zaXplbW9kZSxvcGFjaXR5OnUoe30scC5vcGFjaXR5LHthcnJheU9rOiExfSksY29sb3JiYXI6cC5jb2xvcmJhcixsaW5lOnUoe3dpZHRoOnUoe30sZC53aWR0aCx7YXJyYXlPazohMX0pfSxhKCJtYXJrZXIubGluZSIpKX0sYSgibWFya2VyIikpLHRleHRwb3NpdGlvbjp1KHt9LG4udGV4dHBvc2l0aW9uLHtkZmx0OiJ0b3AgY2VudGVyIn0pLHRleHRmb250Ontjb2xvcjpuLnRleHRmb250LmNvbG9yLHNpemU6bi50ZXh0Zm9udC5zaXplLGZhbWlseTp1KHt9LG4udGV4dGZvbnQuZmFtaWx5LHthcnJheU9rOiExfSl9LGhvdmVyaW5mbzp1KHt9LHMuaG92ZXJpbmZvKX0sImNhbGMiLCJuZXN0ZWQiKTt2LnguZWRpdFR5cGU9di55LmVkaXRUeXBlPXYuei5lZGl0VHlwZT0iY2FsYytjbGVhckF4aXNUeXBlcyJ9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vY29uc3RhbnRzL2dsM2RfZGFzaGVzIjo2OTAsIi4uLy4uL2NvbnN0YW50cy9nbDNkX21hcmtlcnMiOjY5MSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSwxMTQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIiksYT10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPVt7eDohMSx5OiExLHRyYWNlOmUsdDp7fX1dO3JldHVybiBuKHIsZSksYSh0LGUpLHJ9fSx7Ii4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIjoxMTE5LCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyI6MTEyM31dLDExNDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKTtmdW5jdGlvbiBhKHQsZSxyLGEpe2lmKCFlfHwhZS52aXNpYmxlKXJldHVybiBudWxsO2Zvcih2YXIgaT1uLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwibWFrZUNvbXB1dGVFcnJvciIpKGUpLG89bmV3IEFycmF5KHQubGVuZ3RoKSxzPTA7czx0Lmxlbmd0aDtzKyspe3ZhciBsPWkoK3Rbc10scyk7aWYoImxvZyI9PT1hLnR5cGUpe3ZhciBjPWEuYzJsKHRbc10pLHU9dFtzXS1sWzBdLGg9dFtzXStsWzFdO2lmKG9bc109WyhhLmMybCh1LCEwKS1jKSpyLChhLmMybChoLCEwKS1jKSpyXSx1PjApe3ZhciBmPWEuYzJsKHUpO2EuX2xvd2VyTG9nRXJyb3JCb3VuZHx8KGEuX2xvd2VyTG9nRXJyb3JCb3VuZD1mKSxhLl9sb3dlckVycm9yQm91bmQ9TWF0aC5taW4oYS5fbG93ZXJMb2dFcnJvckJvdW5kLGYpfX1lbHNlIG9bc109Wy1sWzBdKnIsbFsxXSpyXX1yZXR1cm4gb31lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVthKHQueCx0LmVycm9yX3gsZVswXSxyLnhheGlzKSxhKHQueSx0LmVycm9yX3ksZVsxXSxyLnlheGlzKSxhKHQueix0LmVycm9yX3osZVsyXSxyLnpheGlzKV0saT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdKXJldHVybiB0W2VdLmxlbmd0aDtyZXR1cm4gMH0obik7aWYoMD09PWkpcmV0dXJuIG51bGw7Zm9yKHZhciBvPW5ldyBBcnJheShpKSxzPTA7czxpO3MrKyl7Zm9yKHZhciBsPVtbMCwwLDBdLFswLDAsMF1dLGM9MDtjPDM7YysrKWlmKG5bY10pZm9yKHZhciB1PTA7dTwyO3UrKylsW3VdW2NdPW5bY11bc11bdV07b1tzXT1sfXJldHVybiBvfX0seyIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0sMTE1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC1saW5lM2QiKSxhPXQoImdsLXNjYXR0ZXIzZCIpLGk9dCgiZ2wtZXJyb3IzZCIpLG89dCgiZ2wtbWVzaDNkIikscz10KCJkZWxhdW5heS10cmlhbmd1bGF0ZSIpLGw9dCgiLi4vLi4vbGliIiksYz10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IiksdT10KCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIikuZm9ybWF0Q29sb3IsaD10KCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyIpLGY9dCgiLi4vLi4vY29uc3RhbnRzL2dsM2RfZGFzaGVzIikscD10KCIuLi8uLi9jb25zdGFudHMvZ2wzZF9tYXJrZXJzIiksZD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGc9dCgiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIikuYXBwZW5kQXJyYXlQb2ludFZhbHVlLHY9dCgiLi9jYWxjX2Vycm9ycyIpO2Z1bmN0aW9uIG0odCxlKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9ZSx0aGlzLmxpbmVQbG90PW51bGwsdGhpcy5zY2F0dGVyUGxvdD1udWxsLHRoaXMuZXJyb3JCYXJzPW51bGwsdGhpcy50ZXh0TWFya2Vycz1udWxsLHRoaXMuZGVsYXVuYXlNZXNoPW51bGwsdGhpcy5jb2xvcj1udWxsLHRoaXMubW9kZT0iIix0aGlzLmRhdGFQb2ludHM9W10sdGhpcy5heGVzQm91bmRzPVtbLTEvMCwtMS8wLC0xLzBdLFsxLzAsMS8wLDEvMF1dLHRoaXMudGV4dExhYmVscz1udWxsLHRoaXMuZGF0YT1udWxsfXZhciB5PW0ucHJvdG90eXBlO2Z1bmN0aW9uIHgodCl7cmV0dXJuIG51bGw9PXQ/MDp0LmluZGV4T2YoImxlZnQiKT4tMT8tMTp0LmluZGV4T2YoInJpZ2h0Iik+LTE/MTowfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGw9PXQ/MDp0LmluZGV4T2YoInRvcCIpPi0xPy0xOnQuaW5kZXhPZigiYm90dG9tIik+LTE/MTowfWZ1bmN0aW9uIF8odCxlKXtyZXR1cm4gZSg0KnQpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIHBbdF19ZnVuY3Rpb24gayh0LGUscixuLGEpe3ZhciBpPW51bGw7aWYobC5pc0FycmF5T3JUeXBlZEFycmF5KHQpKXtpPVtdO2Zvcih2YXIgbz0wO288ZTtvKyspdm9pZCAwPT09dFtvXT9pW29dPW46aVtvXT1yKHRbb10sYSl9ZWxzZSBpPXIodCxsLmlkZW50aXR5KTtyZXR1cm4gaX1mdW5jdGlvbiBUKHQsZSl7dmFyIHIsbixhLGksbyxzLGY9W10scD10LmZ1bGxTY2VuZUxheW91dCxtPXQuZGF0YVNjYWxlLHk9cC54YXhpcyxUPXAueWF4aXMsTT1wLnpheGlzLEE9ZS5tYXJrZXIsUz1lLmxpbmUsRT1lLnh8fFtdLEw9ZS55fHxbXSxDPWUuenx8W10sUD1FLmxlbmd0aCxPPWUueGNhbGVuZGFyLHo9ZS55Y2FsZW5kYXIsST1lLnpjYWxlbmRhcjtmb3Iobz0wO288UDtvKyspcj15LmQybChFW29dLDAsTykqbVswXSxuPVQuZDJsKExbb10sMCx6KSptWzFdLGE9TS5kMmwoQ1tvXSwwLEkpKm1bMl0sZltvXT1bcixuLGFdO2lmKEFycmF5LmlzQXJyYXkoZS50ZXh0KSlzPWUudGV4dDtlbHNlIGlmKHZvaWQgMCE9PWUudGV4dClmb3Iocz1uZXcgQXJyYXkoUCksbz0wO288UDtvKyspc1tvXT1lLnRleHQ7ZnVuY3Rpb24gRCh0LGUpe3ZhciByPXBbdF07cmV0dXJuIGQudGlja1RleHQocixyLmQybChlKSwhMCkudGV4dH12YXIgUj1lLnRleHR0ZW1wbGF0ZTtpZihSKXt2YXIgRj10LmZ1bGxMYXlvdXQuX2QzbG9jYWxlLEI9QXJyYXkuaXNBcnJheShSKSxOPUI/TWF0aC5taW4oUi5sZW5ndGgsUCk6UCxqPUI/ZnVuY3Rpb24odCl7cmV0dXJuIFJbdF19OmZ1bmN0aW9uKCl7cmV0dXJuIFJ9O2ZvcihzPW5ldyBBcnJheShOKSxvPTA7bzxOO28rKyl7dmFyIFY9e3g6RVtvXSx5Okxbb10sejpDW29dfSxVPXt4TGFiZWw6RCgieGF4aXMiLEVbb10pLHlMYWJlbDpEKCJ5YXhpcyIsTFtvXSksekxhYmVsOkQoInpheGlzIixDW29dKX0scT17fTtnKHEsZSxvKTt2YXIgSD1lLl9tZXRhfHx7fTtzW29dPWwudGV4dHRlbXBsYXRlU3RyaW5nKGoobyksVSxGLHEsVixIKX19aWYoaT17cG9zaXRpb246Zixtb2RlOmUubW9kZSx0ZXh0OnN9LCJsaW5lImluIGUmJihpLmxpbmVDb2xvcj11KFMsMSxQKSxpLmxpbmVXaWR0aD1TLndpZHRoLGkubGluZURhc2hlcz1TLmRhc2gpLCJtYXJrZXIiaW4gZSl7dmFyIEc9aChlKTtpLnNjYXR0ZXJDb2xvcj11KEEsMSxQKSxpLnNjYXR0ZXJTaXplPWsoQS5zaXplLFAsXywyMCxHKSxpLnNjYXR0ZXJNYXJrZXI9ayhBLnN5bWJvbCxQLHcsIlx1MjVjZiIpLGkuc2NhdHRlckxpbmVXaWR0aD1BLmxpbmUud2lkdGgsaS5zY2F0dGVyTGluZUNvbG9yPXUoQS5saW5lLDEsUCksaS5zY2F0dGVyQW5nbGU9MH0idGV4dHBvc2l0aW9uImluIGUmJihpLnRleHRPZmZzZXQ9ZnVuY3Rpb24odCl7dmFyIGU9WzAsMF07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllW3JdPVswLDBdLHRbcl0mJihlW3JdWzBdPXgodFtyXSksZVtyXVsxXT1iKHRbcl0pKTtlbHNlIGVbMF09eCh0KSxlWzFdPWIodCk7cmV0dXJuIGV9KGUudGV4dHBvc2l0aW9uKSxpLnRleHRDb2xvcj11KGUudGV4dGZvbnQsMSxQKSxpLnRleHRTaXplPWsoZS50ZXh0Zm9udC5zaXplLFAsbC5pZGVudGl0eSwxMiksaS50ZXh0Rm9udD1lLnRleHRmb250LmZhbWlseSxpLnRleHRBbmdsZT0wKTt2YXIgWT1bIngiLCJ5IiwieiJdO2ZvcihpLnByb2plY3Q9WyExLCExLCExXSxpLnByb2plY3RTY2FsZT1bMSwxLDFdLGkucHJvamVjdE9wYWNpdHk9WzEsMSwxXSxvPTA7bzwzOysrbyl7dmFyIFc9ZS5wcm9qZWN0aW9uW1lbb11dOyhpLnByb2plY3Rbb109Vy5zaG93KSYmKGkucHJvamVjdE9wYWNpdHlbb109Vy5vcGFjaXR5LGkucHJvamVjdFNjYWxlW29dPVcuc2NhbGUpfWkuZXJyb3JCb3VuZHM9dihlLG0scCk7dmFyIFg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVswLDAsMF0scj1bWzAsMCwwXSxbMCwwLDBdLFswLDAsMF1dLG49WzEsMSwxXSxhPTA7YTwzO2ErKyl7dmFyIGk9dFthXTtpJiYhMSE9PWkuY29weV96c3R5bGUmJiExIT09dFsyXS52aXNpYmxlJiYoaT10WzJdKSxpJiZpLnZpc2libGUmJihlW2FdPWkud2lkdGgvMixyW2FdPWMoaS5jb2xvciksblthXT1pLnRoaWNrbmVzcyl9cmV0dXJue2NhcFNpemU6ZSxjb2xvcjpyLGxpbmVXaWR0aDpufX0oW2UuZXJyb3JfeCxlLmVycm9yX3ksZS5lcnJvcl96XSk7cmV0dXJuIGkuZXJyb3JDb2xvcj1YLmNvbG9yLGkuZXJyb3JMaW5lV2lkdGg9WC5saW5lV2lkdGgsaS5lcnJvckNhcFNpemU9WC5jYXBTaXplLGkuZGVsYXVuYXlBeGlzPWUuc3VyZmFjZWF4aXMsaS5kZWxhdW5heUNvbG9yPWMoZS5zdXJmYWNlY29sb3IpLGl9ZnVuY3Rpb24gTSh0KXtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgZT10WzBdO3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYodD1lKSwicmdiKCIrdC5zbGljZSgwLDMpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUqdCl9KSsiKSJ9cmV0dXJuIG51bGx9eS5oYW5kbGVQaWNrPWZ1bmN0aW9uKHQpe2lmKHQub2JqZWN0JiYodC5vYmplY3Q9PT10aGlzLmxpbmVQbG90fHx0Lm9iamVjdD09PXRoaXMuZGVsYXVuYXlNZXNofHx0Lm9iamVjdD09PXRoaXMudGV4dE1hcmtlcnN8fHQub2JqZWN0PT09dGhpcy5zY2F0dGVyUGxvdCkpe3ZhciBlPXQuaW5kZXg9dC5kYXRhLmluZGV4O3JldHVybiB0Lm9iamVjdC5oaWdobGlnaHQmJnQub2JqZWN0LmhpZ2hsaWdodChudWxsKSx0aGlzLnNjYXR0ZXJQbG90JiYodC5vYmplY3Q9dGhpcy5zY2F0dGVyUGxvdCx0aGlzLnNjYXR0ZXJQbG90LmhpZ2hsaWdodCh0LmRhdGEpKSx0LnRleHRMYWJlbD0iIix0aGlzLnRleHRMYWJlbHMmJihBcnJheS5pc0FycmF5KHRoaXMudGV4dExhYmVscyk/KHRoaXMudGV4dExhYmVsc1tlXXx8MD09PXRoaXMudGV4dExhYmVsc1tlXSkmJih0LnRleHRMYWJlbD10aGlzLnRleHRMYWJlbHNbZV0pOnQudGV4dExhYmVsPXRoaXMudGV4dExhYmVscyksdC50cmFjZUNvb3JkaW5hdGU9W3RoaXMuZGF0YS54W2VdLHRoaXMuZGF0YS55W2VdLHRoaXMuZGF0YS56W2VdXSwhMH19LHkudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbCxjLHU9dGhpcy5zY2VuZS5nbHBsb3QuZ2wsaD1mLnNvbGlkO3RoaXMuZGF0YT10O3ZhciBwPVQodGhpcy5zY2VuZSx0KTsibW9kZSJpbiBwJiYodGhpcy5tb2RlPXAubW9kZSksImxpbmVEYXNoZXMiaW4gcCYmcC5saW5lRGFzaGVzIGluIGYmJihoPWZbcC5saW5lRGFzaGVzXSksdGhpcy5jb2xvcj1NKHAuc2NhdHRlckNvbG9yKXx8TShwLmxpbmVDb2xvciksdGhpcy5kYXRhUG9pbnRzPXAucG9zaXRpb24sZT17Z2w6dGhpcy5zY2VuZS5nbHBsb3QuZ2wscG9zaXRpb246cC5wb3NpdGlvbixjb2xvcjpwLmxpbmVDb2xvcixsaW5lV2lkdGg6cC5saW5lV2lkdGh8fDEsZGFzaGVzOmhbMF0sZGFzaFNjYWxlOmhbMV0sb3BhY2l0eTp0Lm9wYWNpdHksY29ubmVjdEdhcHM6dC5jb25uZWN0Z2Fwc30sLTEhPT10aGlzLm1vZGUuaW5kZXhPZigibGluZXMiKT90aGlzLmxpbmVQbG90P3RoaXMubGluZVBsb3QudXBkYXRlKGUpOih0aGlzLmxpbmVQbG90PW4oZSksdGhpcy5saW5lUGxvdC5fdHJhY2U9dGhpcyx0aGlzLnNjZW5lLmdscGxvdC5hZGQodGhpcy5saW5lUGxvdCkpOnRoaXMubGluZVBsb3QmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5saW5lUGxvdCksdGhpcy5saW5lUGxvdC5kaXNwb3NlKCksdGhpcy5saW5lUGxvdD1udWxsKTt2YXIgZD10Lm9wYWNpdHk7aWYodC5tYXJrZXImJnQubWFya2VyLm9wYWNpdHkmJihkKj10Lm1hcmtlci5vcGFjaXR5KSxyPXtnbDp0aGlzLnNjZW5lLmdscGxvdC5nbCxwb3NpdGlvbjpwLnBvc2l0aW9uLGNvbG9yOnAuc2NhdHRlckNvbG9yLHNpemU6cC5zY2F0dGVyU2l6ZSxnbHlwaDpwLnNjYXR0ZXJNYXJrZXIsb3BhY2l0eTpkLG9ydGhvZ3JhcGhpYzohMCxsaW5lV2lkdGg6cC5zY2F0dGVyTGluZVdpZHRoLGxpbmVDb2xvcjpwLnNjYXR0ZXJMaW5lQ29sb3IscHJvamVjdDpwLnByb2plY3QscHJvamVjdFNjYWxlOnAucHJvamVjdFNjYWxlLHByb2plY3RPcGFjaXR5OnAucHJvamVjdE9wYWNpdHl9LC0xIT09dGhpcy5tb2RlLmluZGV4T2YoIm1hcmtlcnMiKT90aGlzLnNjYXR0ZXJQbG90P3RoaXMuc2NhdHRlclBsb3QudXBkYXRlKHIpOih0aGlzLnNjYXR0ZXJQbG90PWEociksdGhpcy5zY2F0dGVyUGxvdC5fdHJhY2U9dGhpcyx0aGlzLnNjYXR0ZXJQbG90LmhpZ2hsaWdodFNjYWxlPTEsdGhpcy5zY2VuZS5nbHBsb3QuYWRkKHRoaXMuc2NhdHRlclBsb3QpKTp0aGlzLnNjYXR0ZXJQbG90JiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMuc2NhdHRlclBsb3QpLHRoaXMuc2NhdHRlclBsb3QuZGlzcG9zZSgpLHRoaXMuc2NhdHRlclBsb3Q9bnVsbCksYz17Z2w6dGhpcy5zY2VuZS5nbHBsb3QuZ2wscG9zaXRpb246cC5wb3NpdGlvbixnbHlwaDpwLnRleHQsY29sb3I6cC50ZXh0Q29sb3Isc2l6ZTpwLnRleHRTaXplLGFuZ2xlOnAudGV4dEFuZ2xlLGFsaWdubWVudDpwLnRleHRPZmZzZXQsZm9udDpwLnRleHRGb250LG9ydGhvZ3JhcGhpYzohMCxsaW5lV2lkdGg6MCxwcm9qZWN0OiExLG9wYWNpdHk6dC5vcGFjaXR5fSx0aGlzLnRleHRMYWJlbHM9dC5ob3ZlcnRleHR8fHQudGV4dCwtMSE9PXRoaXMubW9kZS5pbmRleE9mKCJ0ZXh0Iik/dGhpcy50ZXh0TWFya2Vycz90aGlzLnRleHRNYXJrZXJzLnVwZGF0ZShjKToodGhpcy50ZXh0TWFya2Vycz1hKGMpLHRoaXMudGV4dE1hcmtlcnMuX3RyYWNlPXRoaXMsdGhpcy50ZXh0TWFya2Vycy5oaWdobGlnaHRTY2FsZT0xLHRoaXMuc2NlbmUuZ2xwbG90LmFkZCh0aGlzLnRleHRNYXJrZXJzKSk6dGhpcy50ZXh0TWFya2VycyYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLnRleHRNYXJrZXJzKSx0aGlzLnRleHRNYXJrZXJzLmRpc3Bvc2UoKSx0aGlzLnRleHRNYXJrZXJzPW51bGwpLGw9e2dsOnRoaXMuc2NlbmUuZ2xwbG90LmdsLHBvc2l0aW9uOnAucG9zaXRpb24sY29sb3I6cC5lcnJvckNvbG9yLGVycm9yOnAuZXJyb3JCb3VuZHMsbGluZVdpZHRoOnAuZXJyb3JMaW5lV2lkdGgsY2FwU2l6ZTpwLmVycm9yQ2FwU2l6ZSxvcGFjaXR5OnQub3BhY2l0eX0sdGhpcy5lcnJvckJhcnM/cC5lcnJvckJvdW5kcz90aGlzLmVycm9yQmFycy51cGRhdGUobCk6KHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLmVycm9yQmFycyksdGhpcy5lcnJvckJhcnMuZGlzcG9zZSgpLHRoaXMuZXJyb3JCYXJzPW51bGwpOnAuZXJyb3JCb3VuZHMmJih0aGlzLmVycm9yQmFycz1pKGwpLHRoaXMuZXJyb3JCYXJzLl90cmFjZT10aGlzLHRoaXMuc2NlbmUuZ2xwbG90LmFkZCh0aGlzLmVycm9yQmFycykpLHAuZGVsYXVuYXlBeGlzPj0wKXt2YXIgZz1mdW5jdGlvbih0LGUscil7dmFyIG4sYT0ocisxKSUzLGk9KHIrMiklMyxvPVtdLGw9W107Zm9yKG49MDtuPHQubGVuZ3RoOysrbil7dmFyIGM9dFtuXTshaXNOYU4oY1thXSkmJmlzRmluaXRlKGNbYV0pJiYhaXNOYU4oY1tpXSkmJmlzRmluaXRlKGNbaV0pJiYoby5wdXNoKFtjW2FdLGNbaV1dKSxsLnB1c2gobikpfXZhciB1PXMobyk7Zm9yKG49MDtuPHUubGVuZ3RoOysrbilmb3IodmFyIGg9dVtuXSxmPTA7ZjxoLmxlbmd0aDsrK2YpaFtmXT1sW2hbZl1dO3JldHVybntwb3NpdGlvbnM6dCxjZWxsczp1LG1lc2hDb2xvcjplfX0ocC5wb3NpdGlvbixwLmRlbGF1bmF5Q29sb3IscC5kZWxhdW5heUF4aXMpO2cub3BhY2l0eT10Lm9wYWNpdHksdGhpcy5kZWxhdW5heU1lc2g/dGhpcy5kZWxhdW5heU1lc2gudXBkYXRlKGcpOihnLmdsPXUsdGhpcy5kZWxhdW5heU1lc2g9byhnKSx0aGlzLmRlbGF1bmF5TWVzaC5fdHJhY2U9dGhpcyx0aGlzLnNjZW5lLmdscGxvdC5hZGQodGhpcy5kZWxhdW5heU1lc2gpKX1lbHNlIHRoaXMuZGVsYXVuYXlNZXNoJiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMuZGVsYXVuYXlNZXNoKSx0aGlzLmRlbGF1bmF5TWVzaC5kaXNwb3NlKCksdGhpcy5kZWxhdW5heU1lc2g9bnVsbCl9LHkuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMubGluZVBsb3QmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5saW5lUGxvdCksdGhpcy5saW5lUGxvdC5kaXNwb3NlKCkpLHRoaXMuc2NhdHRlclBsb3QmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5zY2F0dGVyUGxvdCksdGhpcy5zY2F0dGVyUGxvdC5kaXNwb3NlKCkpLHRoaXMuZXJyb3JCYXJzJiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMuZXJyb3JCYXJzKSx0aGlzLmVycm9yQmFycy5kaXNwb3NlKCkpLHRoaXMudGV4dE1hcmtlcnMmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy50ZXh0TWFya2VycyksdGhpcy50ZXh0TWFya2Vycy5kaXNwb3NlKCkpLHRoaXMuZGVsYXVuYXlNZXNoJiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMuZGVsYXVuYXlNZXNoKSx0aGlzLmRlbGF1bmF5TWVzaC5kaXNwb3NlKCkpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgbSh0LGUudWlkKTtyZXR1cm4gci51cGRhdGUoZSkscn19LHsiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIjo2MjcsIi4uLy4uL2NvbnN0YW50cy9nbDNkX2Rhc2hlcyI6NjkwLCIuLi8uLi9jb25zdGFudHMvZ2wzZF9tYXJrZXJzIjo2OTEsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIjo3MTQsIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjc0MCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vc2NhdHRlci9tYWtlX2J1YmJsZV9zaXplX2Z1bmMiOjExMzcsIi4vY2FsY19lcnJvcnMiOjExNDksImRlbGF1bmF5LXRyaWFuZ3VsYXRlIjoxNjcsImdsLWVycm9yM2QiOjI1MCwiZ2wtbGluZTNkIjoyNTgsImdsLW1lc2gzZCI6MjgzLCJnbC1zY2F0dGVyM2QiOjMwMH1dLDExNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLG89dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxzPXQoIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLGw9dCgiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIiksYz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsdSl7ZnVuY3Rpb24gaChyLG4pe3JldHVybiBhLmNvZXJjZSh0LGUsYyxyLG4pfWlmKGZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPTAsbz1yKCJ4Iikscz1yKCJ5IiksbD1yKCJ6Iik7bi5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsWyJ4IiwieSIsInoiXSxhKSxvJiZzJiZsJiYoaT1NYXRoLm1pbihvLmxlbmd0aCxzLmxlbmd0aCxsLmxlbmd0aCksZS5fbGVuZ3RoPWUuX3hsZW5ndGg9ZS5feWxlbmd0aD1lLl96bGVuZ3RoPWkpO3JldHVybiBpfSh0LGUsaCx1KSl7aCgidGV4dCIpLGgoImhvdmVydGV4dCIpLGgoImhvdmVydGVtcGxhdGUiKSxoKCJtb2RlIiksaS5oYXNMaW5lcyhlKSYmKGgoImNvbm5lY3RnYXBzIikscyh0LGUscix1LGgpKSxpLmhhc01hcmtlcnMoZSkmJm8odCxlLHIsdSxoLHtub1NlbGVjdDohMH0pLGkuaGFzVGV4dChlKSYmKGgoInRleHR0ZW1wbGF0ZSIpLGwodCxlLHUsaCx7bm9TZWxlY3Q6ITB9KSk7dmFyIGY9KGUubGluZXx8e30pLmNvbG9yLHA9KGUubWFya2VyfHx7fSkuY29sb3I7aCgic3VyZmFjZWF4aXMiKT49MCYmaCgic3VyZmFjZWNvbG9yIixmfHxwKTtmb3IodmFyIGQ9WyJ4IiwieSIsInoiXSxnPTA7ZzwzOysrZyl7dmFyIHY9InByb2plY3Rpb24uIitkW2ddO2godisiLnNob3ciKSYmKGgodisiLm9wYWNpdHkiKSxoKHYrIi5zY2FsZSIpKX12YXIgbT1uLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwic3VwcGx5RGVmYXVsdHMiKTttKHQsZSxmfHxwfHxyLHtheGlzOiJ6In0pLG0odCxlLGZ8fHB8fHIse2F4aXM6InkiLGluaGVyaXQ6InoifSksbSh0LGUsZnx8cHx8cix7YXhpczoieCIsaW5oZXJpdDoieiJ9KX1lbHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6MTEzMywiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6MTE0NSwiLi9hdHRyaWJ1dGVzIjoxMTQ3fV0sMTE1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3Bsb3Q6dCgiLi9jb252ZXJ0IiksYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxtYXJrZXJTeW1ib2xzOnQoIi4uLy4uL2NvbnN0YW50cy9nbDNkX21hcmtlcnMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6W3tjb250YWluZXI6Im1hcmtlciIsbWluOiJjbWluIixtYXg6ImNtYXgifSx7Y29udGFpbmVyOiJsaW5lIixtaW46ImNtaW4iLG1heDoiY21heCJ9XSxjYWxjOnQoIi4vY2FsYyIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzY2F0dGVyM2QiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2dsM2QiKSxjYXRlZ29yaWVzOlsiZ2wzZCIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwic2NhdHRlci1saWtlIl0sbWV0YTp7fX19LHsiLi4vLi4vY29uc3RhbnRzL2dsM2RfbWFya2VycyI6NjkxLCIuLi8uLi9wbG90cy9nbDNkIjo4MDUsIi4vYXR0cmlidXRlcyI6MTE0NywiLi9jYWxjIjoxMTQ4LCIuL2NvbnZlcnQiOjExNTAsIi4vZGVmYXVsdHMiOjExNTF9XSwxMTUzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksbD10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxjPW4ubWFya2VyLHU9bi5saW5lLGg9Yy5saW5lO2UuZXhwb3J0cz17Y2FycGV0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjIn0sYTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxiOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LG1vZGU6bCh7fSxuLm1vZGUse2RmbHQ6Im1hcmtlcnMifSksdGV4dDpsKHt9LG4udGV4dCx7fSksdGV4dHRlbXBsYXRlOm8oe2VkaXRUeXBlOiJwbG90In0se2tleXM6WyJhIiwiYiIsInRleHQiXX0pLGhvdmVydGV4dDpsKHt9LG4uaG92ZXJ0ZXh0LHt9KSxsaW5lOntjb2xvcjp1LmNvbG9yLHdpZHRoOnUud2lkdGgsZGFzaDp1LmRhc2gsc2hhcGU6bCh7fSx1LnNoYXBlLHt2YWx1ZXM6WyJsaW5lYXIiLCJzcGxpbmUiXX0pLHNtb290aGluZzp1LnNtb290aGluZyxlZGl0VHlwZToiY2FsYyJ9LGNvbm5lY3RnYXBzOm4uY29ubmVjdGdhcHMsZmlsbDpsKHt9LG4uZmlsbCx7dmFsdWVzOlsibm9uZSIsInRvc2VsZiIsInRvbmV4dCJdLGRmbHQ6Im5vbmUifSksZmlsbGNvbG9yOm4uZmlsbGNvbG9yLG1hcmtlcjpsKHtzeW1ib2w6Yy5zeW1ib2wsb3BhY2l0eTpjLm9wYWNpdHksbWF4ZGlzcGxheWVkOmMubWF4ZGlzcGxheWVkLHNpemU6Yy5zaXplLHNpemVyZWY6Yy5zaXplcmVmLHNpemVtaW46Yy5zaXplbWluLHNpemVtb2RlOmMuc2l6ZW1vZGUsbGluZTpsKHt3aWR0aDpoLndpZHRoLGVkaXRUeXBlOiJjYWxjIn0scygibWFya2VyLmxpbmUiKSksZ3JhZGllbnQ6Yy5ncmFkaWVudCxlZGl0VHlwZToiY2FsYyJ9LHMoIm1hcmtlciIpKSx0ZXh0Zm9udDpuLnRleHRmb250LHRleHRwb3NpdGlvbjpuLnRleHRwb3NpdGlvbixzZWxlY3RlZDpuLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6bi51bnNlbGVjdGVkLGhvdmVyaW5mbzpsKHt9LGEuaG92ZXJpbmZvLHtmbGFnczpbImEiLCJiIiwidGV4dCIsIm5hbWUiXX0pLGhvdmVyb246bi5ob3Zlcm9uLGhvdmVydGVtcGxhdGU6aSgpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSwxMTU0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGk9dCgiLi4vc2NhdHRlci9hcnJheXNfdG9fY2FsY2RhdGEiKSxvPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxzPXQoIi4uL3NjYXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXplLGw9dCgiLi4vY2FycGV0L2xvb2t1cF9jYXJwZXRpZCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWUuX2NhcnBldFRyYWNlPWwodCxlKTtpZihyJiZyLnZpc2libGUmJiJsZWdlbmRvbmx5IiE9PXIudmlzaWJsZSl7dmFyIGM7ZS54YXhpcz1yLnhheGlzLGUueWF4aXM9ci55YXhpczt2YXIgdSxoLGY9ZS5fbGVuZ3RoLHA9bmV3IEFycmF5KGYpLGQ9ITE7Zm9yKGM9MDtjPGY7YysrKWlmKHU9ZS5hW2NdLGg9ZS5iW2NdLG4odSkmJm4oaCkpe3ZhciBnPXIuYWIyeHkoK3UsK2gsITApLHY9ci5pc1Zpc2libGUoK3UsK2gpO3Z8fChkPSEwKSxwW2NdPXt4OmdbMF0seTpnWzFdLGE6dSxiOmgsdmlzOnZ9fWVsc2UgcFtjXT17eDohMSx5OiExfTtyZXR1cm4gZS5fbmVlZHNDdWxsPWQscFswXS5jYXJwZXQ9cixwWzBdLnRyYWNlPWUscyhlLGYpLGEodCxlKSxpKHAsZSksbyhwLGUpLHB9fX0seyIuLi9jYXJwZXQvbG9va3VwX2NhcnBldGlkIjo5MTYsIi4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIjoxMTE5LCIuLi9zY2F0dGVyL2NhbGMiOjExMjEsIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iOjExMjIsIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIjoxMTIzLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sMTE1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uL3NjYXR0ZXIvY29uc3RhbnRzIiksaT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksbz10KCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIiksbD10KCIuLi9zY2F0dGVyL2xpbmVfc2hhcGVfZGVmYXVsdHMiKSxjPXQoIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyIpLHU9dCgiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiKSxoPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixmKXtmdW5jdGlvbiBwKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxoLHIsYSl9cCgiY2FycGV0IiksZS54YXhpcz0ieCIsZS55YXhpcz0ieSI7dmFyIGQ9cCgiYSIpLGc9cCgiYiIpLHY9TWF0aC5taW4oZC5sZW5ndGgsZy5sZW5ndGgpO2lmKHYpe2UuX2xlbmd0aD12LHAoInRleHQiKSxwKCJ0ZXh0dGVtcGxhdGUiKSxwKCJob3ZlcnRleHQiKSxwKCJtb2RlIix2PGEuUFRTX0xJTkVTT05MWT8ibGluZXMrbWFya2VycyI6ImxpbmVzIiksaS5oYXNMaW5lcyhlKSYmKHModCxlLHIsZixwKSxsKHQsZSxwKSxwKCJjb25uZWN0Z2FwcyIpKSxpLmhhc01hcmtlcnMoZSkmJm8odCxlLHIsZixwLHtncmFkaWVudDohMH0pLGkuaGFzVGV4dChlKSYmYyh0LGUsZixwKTt2YXIgbT1bXTsoaS5oYXNNYXJrZXJzKGUpfHxpLmhhc1RleHQoZSkpJiYocCgibWFya2VyLm1heGRpc3BsYXllZCIpLG0ucHVzaCgicG9pbnRzIikpLHAoImZpbGwiKSwibm9uZSIhPT1lLmZpbGwmJih1KHQsZSxyLHApLGkuaGFzTGluZXMoZSl8fGwodCxlLHApKSwidG9uZXh0IiE9PWUuZmlsbCYmInRvc2VsZiIhPT1lLmZpbGx8fG0ucHVzaCgiZmlsbHMiKSwiZmlsbHMiIT09cCgiaG92ZXJvbiIsbS5qb2luKCIrIil8fCJwb2ludHMiKSYmcCgiaG92ZXJ0ZW1wbGF0ZSIpLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLHApfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9jb25zdGFudHMiOjExMjQsIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIjoxMTI4LCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiOjExMzMsIi4uL3NjYXR0ZXIvbGluZV9zaGFwZV9kZWZhdWx0cyI6MTEzNSwiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6MTE0NSwiLi9hdHRyaWJ1dGVzIjoxMTUzfV0sMTE1NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT1uW2FdO3JldHVybiB0LmE9aS5hLHQuYj1pLmIsdC55PWkueSx0fX0se31dLDExNTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e30sbj1lLl9jYXJwZXQsYT1uLmFiMmlqKFt0LmEsdC5iXSksaT1NYXRoLmZsb29yKGFbMF0pLG89YVswXS1pLHM9TWF0aC5mbG9vcihhWzFdKSxsPWFbMV0tcyxjPW4uZXZhbHh5KFtdLGkscyxvLGwpO3JldHVybiByLnlMYWJlbD1jWzFdLnRvRml4ZWQoMykscn19LHt9XSwxMTU4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvaG92ZXIiKSxhPXQoIi4uLy4uL2xpYiIpLmZpbGxUZXh0O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz1uKHQsZSxyLGkpO2lmKG8mJiExIT09b1swXS5pbmRleCl7dmFyIHM9b1swXTtpZih2b2lkIDA9PT1zLmluZGV4KXt2YXIgbD0xLXMueTAvdC55YS5fbGVuZ3RoLGM9dC54YS5fbGVuZ3RoLHU9YypsLzIsaD1jLXU7cmV0dXJuIHMueDA9TWF0aC5tYXgoTWF0aC5taW4ocy54MCxoKSx1KSxzLngxPU1hdGgubWF4KE1hdGgubWluKHMueDEsaCksdSksb312YXIgZj1zLmNkW3MuaW5kZXhdO3MuYT1mLmEscy5iPWYuYixzLnhMYWJlbFZhbD12b2lkIDAscy55TGFiZWxWYWw9dm9pZCAwO3ZhciBwPXMudHJhY2UsZD1wLl9jYXJwZXQsZz1wLl9tb2R1bGUuZm9ybWF0TGFiZWxzKGYscCk7cy55TGFiZWw9Zy55TGFiZWwsZGVsZXRlIHMudGV4dDt2YXIgdj1bXTtpZighcC5ob3ZlcnRlbXBsYXRlKXt2YXIgbT0oZi5oaXx8cC5ob3ZlcmluZm8pLnNwbGl0KCIrIik7LTEhPT1tLmluZGV4T2YoImFsbCIpJiYobT1bImEiLCJiIiwidGV4dCJdKSwtMSE9PW0uaW5kZXhPZigiYSIpJiZ5KGQuYWF4aXMsZi5hKSwtMSE9PW0uaW5kZXhPZigiYiIpJiZ5KGQuYmF4aXMsZi5iKSx2LnB1c2goInk6ICIrcy55TGFiZWwpLC0xIT09bS5pbmRleE9mKCJ0ZXh0IikmJmEoZixwLHYpLHMuZXh0cmFUZXh0PXYuam9pbigiPGJyPiIpfXJldHVybiBvfWZ1bmN0aW9uIHkodCxlKXt2YXIgcjtyPXQubGFiZWxwcmVmaXgmJnQubGFiZWxwcmVmaXgubGVuZ3RoPjA/dC5sYWJlbHByZWZpeC5yZXBsYWNlKC8gPSAkLywiIik6dC5faG92ZXJ0aXRsZSx2LnB1c2gocisiOiAiK2UudG9GaXhlZCgzKSt0LmxhYmVsc3VmZml4KX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0dGVyL2hvdmVyIjoxMTMxfV0sMTE1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksZm9ybWF0TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4uL3NjYXR0ZXIvc2VsZWN0IiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzY2F0dGVyY2FycGV0IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsic3ZnIiwiY2FycGV0Iiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJjYXJwZXREZXBlbmRlbnQiLCJ6b29tU2NhbGUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4uL3NjYXR0ZXIvc2VsZWN0IjoxMTQxLCIuLi9zY2F0dGVyL3N0eWxlIjoxMTQzLCIuL2F0dHJpYnV0ZXMiOjExNTMsIi4vY2FsYyI6MTE1NCwiLi9kZWZhdWx0cyI6MTE1NSwiLi9ldmVudF9kYXRhIjoxMTU2LCIuL2Zvcm1hdF9sYWJlbHMiOjExNTcsIi4vaG92ZXIiOjExNTgsIi4vcGxvdCI6MTE2MH1dLDExNjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9wbG90IiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzLGwsYyx1PXJbMF1bMF0uY2FycGV0LGg9e3hheGlzOmEuZ2V0RnJvbUlkKHQsdS54YXhpc3x8IngiKSx5YXhpczphLmdldEZyb21JZCh0LHUueWF4aXN8fCJ5IikscGxvdDplLnBsb3R9O2ZvcihuKHQsaCxyLG8pLHM9MDtzPHIubGVuZ3RoO3MrKylsPXJbc11bMF0udHJhY2UsYz1vLnNlbGVjdEFsbCgiZy50cmFjZSIrbC51aWQrIiAuanMtbGluZSIpLGkuc2V0Q2xpcFVybChjLHJbc11bMF0uY2FycGV0Ll9jbGlwUGF0aElkLHQpfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vc2NhdHRlci9wbG90IjoxMTQwfV0sMTE2MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiKS5kYXNoLGM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsdT10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsaD1pLm1hcmtlcixmPWkubGluZSxwPWgubGluZTtlLmV4cG9ydHM9dSh7bG9uOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sbGF0Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sbG9jYXRpb25zOnt2YWxUeXBlOiJkYXRhX2FycmF5In0sbG9jYXRpb25tb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJJU08tMyIsIlVTQS1zdGF0ZXMiLCJjb3VudHJ5IG5hbWVzIiwiZ2VvanNvbi1pZCJdLGRmbHQ6IklTTy0zIn0sZ2VvanNvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LGZlYXR1cmVpZGtleTp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyIsZGZsdDoiaWQifSxtb2RlOmMoe30saS5tb2RlLHtkZmx0OiJtYXJrZXJzIn0pLHRleHQ6Yyh7fSxpLnRleHQse30pLHRleHR0ZW1wbGF0ZTphKHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOlsibGF0IiwibG9uIiwibG9jYXRpb24iLCJ0ZXh0Il19KSxob3ZlcnRleHQ6Yyh7fSxpLmhvdmVydGV4dCx7fSksdGV4dGZvbnQ6aS50ZXh0Zm9udCx0ZXh0cG9zaXRpb246aS50ZXh0cG9zaXRpb24sbGluZTp7Y29sb3I6Zi5jb2xvcix3aWR0aDpmLndpZHRoLGRhc2g6bH0sY29ubmVjdGdhcHM6aS5jb25uZWN0Z2FwcyxtYXJrZXI6Yyh7c3ltYm9sOmguc3ltYm9sLG9wYWNpdHk6aC5vcGFjaXR5LHNpemU6aC5zaXplLHNpemVyZWY6aC5zaXplcmVmLHNpemVtaW46aC5zaXplbWluLHNpemVtb2RlOmguc2l6ZW1vZGUsY29sb3JiYXI6aC5jb2xvcmJhcixsaW5lOmMoe3dpZHRoOnAud2lkdGh9LHMoIm1hcmtlci5saW5lIikpLGdyYWRpZW50OmguZ3JhZGllbnR9LHMoIm1hcmtlciIpKSxmaWxsOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJub25lIiwidG9zZWxmIl0sZGZsdDoibm9uZSJ9LGZpbGxjb2xvcjppLmZpbGxjb2xvcixzZWxlY3RlZDppLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6aS51bnNlbGVjdGVkLGhvdmVyaW5mbzpjKHt9LG8uaG92ZXJpbmZvLHtmbGFnczpbImxvbiIsImxhdCIsImxvY2F0aW9uIiwidGV4dCIsIm5hbWUiXX0pLGhvdmVydGVtcGxhdGU6bigpfSwiY2FsYyIsIm5lc3RlZCIpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9hdHRyaWJ1dGVzIjo2MTIsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwfV0sMTE2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxpPXQoIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIiksbz10KCIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSIpLHM9dCgiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiIpLGw9dCgiLi4vLi4vbGliIikuXztmdW5jdGlvbiBjKHQpe3JldHVybiB0JiYic3RyaW5nIj09dHlwZW9mIHR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsdT1BcnJheS5pc0FycmF5KGUubG9jYXRpb25zKSxoPXU/ZS5sb2NhdGlvbnMubGVuZ3RoOmUuX2xlbmd0aCxmPW5ldyBBcnJheShoKTtyPWUuZ2VvanNvbj9mdW5jdGlvbih0KXtyZXR1cm4gYyh0KXx8bih0KX06Yztmb3IodmFyIHA9MDtwPGg7cCsrKXt2YXIgZD1mW3BdPXt9O2lmKHUpe3ZhciBnPWUubG9jYXRpb25zW3BdO2QubG9jPXIoZyk/ZzpudWxsfWVsc2V7dmFyIHY9ZS5sb25bcF0sbT1lLmxhdFtwXTtuKHYpJiZuKG0pP2QubG9ubGF0PVsrdiwrbV06ZC5sb25sYXQ9W2EsYV19fXJldHVybiBvKGYsZSksaSh0LGUpLHMoZixlKSxoJiYoZlswXS50PXtsYWJlbHM6e2xhdDpsKHQsImxhdDoiKSsiICIsbG9uOmwodCwibG9uOiIpKyIgIn19KSxmfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSI6MTExOSwiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiI6MTEyMiwiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjExMjMsImZhc3QtaXNudW1lcmljIjoyMjh9XSwxMTYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGk9dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxvPXQoIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIiksbD10KCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyIpLGM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHUpe2Z1bmN0aW9uIGgocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGMscixhKX12YXIgZixwPWgoImxvY2F0aW9ucyIpO2lmKHAmJnAubGVuZ3RoKXt2YXIgZCxnPWgoImdlb2pzb24iKTsoInN0cmluZyI9PXR5cGVvZiBnJiYiIiE9PWd8fG4uaXNQbGFpbk9iamVjdChnKSkmJihkPSJnZW9qc29uLWlkIiksImdlb2pzb24taWQiPT09aCgibG9jYXRpb25tb2RlIixkKSYmaCgiZmVhdHVyZWlka2V5IiksZj1wLmxlbmd0aH1lbHNle3ZhciB2PWgoImxvbiIpfHxbXSxtPWgoImxhdCIpfHxbXTtmPU1hdGgubWluKHYubGVuZ3RoLG0ubGVuZ3RoKX1mPyhlLl9sZW5ndGg9ZixoKCJ0ZXh0IiksaCgiaG92ZXJ0ZXh0IiksaCgiaG92ZXJ0ZW1wbGF0ZSIpLGgoIm1vZGUiKSxhLmhhc0xpbmVzKGUpJiYobyh0LGUscix1LGgpLGgoImNvbm5lY3RnYXBzIikpLGEuaGFzTWFya2VycyhlKSYmaSh0LGUscix1LGgse2dyYWRpZW50OiEwfSksYS5oYXNUZXh0KGUpJiYoaCgidGV4dHRlbXBsYXRlIikscyh0LGUsdSxoKSksaCgiZmlsbCIpLCJub25lIiE9PWUuZmlsbCYmbCh0LGUscixoKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxoKSk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjExMjgsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6MTEzMywiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6MTE0NSwiLi9hdHRyaWJ1dGVzIjoxMTYxfV0sMTE2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhKXt0Lmxvbj1lLmxvbix0LmxhdD1lLmxhdCx0LmxvY2F0aW9uPWUubG9jP2UubG9jOm51bGw7dmFyIGk9blthXTtyZXR1cm4gaS5mSW4mJmkuZkluLnByb3BlcnRpZXMmJih0LnByb3BlcnRpZXM9aS5mSW4ucHJvcGVydGllcyksdH19LHt9XSwxMTY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT17fSxpPXJbZS5nZW9dLl9zdWJwbG90Lm1vY2tBeGlzLG89dC5sb25sYXQ7cmV0dXJuIGEubG9uTGFiZWw9bi50aWNrVGV4dChpLGkuYzJsKG9bMF0pLCEwKS50ZXh0LGEubGF0TGFiZWw9bi50aWNrVGV4dChpLGkuYzJsKG9bMV0pLCEwKS50ZXh0LGF9fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjV9XSwxMTY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxhPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0saT10KCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciIpLG89dCgiLi4vLi4vbGliIikuZmlsbFRleHQscz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBsPXQuY2QsYz1sWzBdLnRyYWNlLHU9dC54YSxoPXQueWEsZj10LnN1YnBsb3QscD1mLnByb2plY3Rpb24uaXNMb25MYXRPdmVyRWRnZXMsZD1mLnByb2plY3Q7aWYobi5nZXRDbG9zZXN0KGwsZnVuY3Rpb24odCl7dmFyIG49dC5sb25sYXQ7aWYoblswXT09PWEpcmV0dXJuIDEvMDtpZihwKG4pKXJldHVybiAxLzA7dmFyIGk9ZChuKSxvPWQoW2Uscl0pLHM9TWF0aC5hYnMoaVswXS1vWzBdKSxsPU1hdGguYWJzKGlbMV0tb1sxXSksYz1NYXRoLm1heCgzLHQubXJjfHwwKTtyZXR1cm4gTWF0aC5tYXgoTWF0aC5zcXJ0KHMqcytsKmwpLWMsMS0zL2MpfSx0KSwhMSE9PXQuaW5kZXgpe3ZhciBnPWxbdC5pbmRleF0sdj1nLmxvbmxhdCxtPVt1LmMycCh2KSxoLmMycCh2KV0seT1nLm1yY3x8MTt0LngwPW1bMF0teSx0LngxPW1bMF0reSx0LnkwPW1bMV0teSx0LnkxPW1bMV0reSx0LmxvYz1nLmxvYyx0Lmxvbj12WzBdLHQubGF0PXZbMV07dmFyIHg9e307eFtjLmdlb109e19zdWJwbG90OmZ9O3ZhciBiPWMuX21vZHVsZS5mb3JtYXRMYWJlbHMoZyxjLHgpO3JldHVybiB0LmxvbkxhYmVsPWIubG9uTGFiZWwsdC5sYXRMYWJlbD1iLmxhdExhYmVsLHQuY29sb3I9aShjLGcpLHQuZXh0cmFUZXh0PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQuaG92ZXJ0ZW1wbGF0ZSlyZXR1cm47dmFyIGE9ZS5oaXx8dC5ob3ZlcmluZm8saT0iYWxsIj09PWE/cy5ob3ZlcmluZm8uZmxhZ3M6YS5zcGxpdCgiKyIpLGw9LTEhPT1pLmluZGV4T2YoImxvY2F0aW9uIikmJkFycmF5LmlzQXJyYXkodC5sb2NhdGlvbnMpLGM9LTEhPT1pLmluZGV4T2YoImxvbiIpLHU9LTEhPT1pLmluZGV4T2YoImxhdCIpLGg9LTEhPT1pLmluZGV4T2YoInRleHQiKSxmPVtdO2Z1bmN0aW9uIHAodCl7cmV0dXJuIHQrIlx4YjAifWw/Zi5wdXNoKGUubG9jKTpjJiZ1P2YucHVzaCgiKCIrcChyLmxvbkxhYmVsKSsiLCAiK3Aoci5sYXRMYWJlbCkrIikiKTpjP2YucHVzaChuLmxvbitwKHIubG9uTGFiZWwpKTp1JiZmLnB1c2gobi5sYXQrcChyLmxhdExhYmVsKSk7aCYmbyhlLHQsZik7cmV0dXJuIGYuam9pbigiPGJyPiIpfShjLGcsdCxsWzBdLnQubGFiZWxzKSx0LmhvdmVydGVtcGxhdGU9Yy5ob3ZlcnRlbXBsYXRlLFt0XX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9nZXRfdHJhY2VfY29sb3IiOjExMzAsIi4vYXR0cmlidXRlcyI6MTE2MX1dLDExNjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjb2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIuL2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLGNhbGNHZW9KU09OOnQoIi4vcGxvdCIpLmNhbGNHZW9KU09OLHBsb3Q6dCgiLi9wbG90IikucGxvdCxzdHlsZTp0KCIuL3N0eWxlIiksc3R5bGVPblNlbGVjdDp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzY2F0dGVyZ2VvIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nZW8iKSxjYXRlZ29yaWVzOlsiZ2VvIiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9nZW8iOjc5NSwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4uL3NjYXR0ZXIvc3R5bGUiOjExNDMsIi4vYXR0cmlidXRlcyI6MTE2MSwiLi9jYWxjIjoxMTYyLCIuL2RlZmF1bHRzIjoxMTYzLCIuL2V2ZW50X2RhdGEiOjExNjQsIi4vZm9ybWF0X2xhYmVscyI6MTE2NSwiLi9ob3ZlciI6MTE2NiwiLi9wbG90IjoxMTY4LCIuL3NlbGVjdCI6MTE2OSwiLi9zdHlsZSI6MTE3MH1dLDExNjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vbGliL3RvcG9qc29uX3V0aWxzIikuZ2V0VG9wb2pzb25GZWF0dXJlcyxvPXQoIi4uLy4uL2xpYi9nZW9qc29uX3V0aWxzIikscz10KCIuLi8uLi9saWIvZ2VvX2xvY2F0aW9uX3V0aWxzIiksbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3JhbmdlIikuZmluZEV4dHJlbWVzLGM9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSx1PXQoIi4uL3NjYXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXplLGg9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGY9dCgiLi9zdHlsZSIpO2UuZXhwb3J0cz17Y2FsY0dlb0pTT046ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9dFswXS50cmFjZSxvPWVbYS5nZW9dLGg9by5fc3VicGxvdCxmPWEuX2xlbmd0aDtpZihBcnJheS5pc0FycmF5KGEubG9jYXRpb25zKSl7dmFyIHA9YS5sb2NhdGlvbm1vZGUsZD0iZ2VvanNvbi1pZCI9PT1wP3MuZXh0cmFjdFRyYWNlRmVhdHVyZSh0KTppKGEsaC50b3BvanNvbik7Zm9yKHI9MDtyPGY7cisrKXtuPXRbcl07dmFyIGc9Imdlb2pzb24taWQiPT09cD9uLmZPdXQ6cy5sb2NhdGlvblRvRmVhdHVyZShwLG4ubG9jLGQpO24ubG9ubGF0PWc/Zy5wcm9wZXJ0aWVzLmN0OltjLGNdfX12YXIgdixtLHk9e3BhZGRlZDohMH07aWYoImdlb2pzb24iPT09by5maXRib3VuZHMmJiJnZW9qc29uLWlkIj09PWEubG9jYXRpb25tb2RlKXt2YXIgeD1zLmNvbXB1dGVCYm94KHMuZ2V0VHJhY2VHZW9qc29uKGEpKTt2PVt4WzBdLHhbMl1dLG09W3hbMV0seFszXV19ZWxzZXtmb3Iodj1uZXcgQXJyYXkoZiksbT1uZXcgQXJyYXkoZikscj0wO3I8ZjtyKyspbj10W3JdLHZbcl09bi5sb25sYXRbMF0sbVtyXT1uLmxvbmxhdFsxXTt5LnBwYWQ9dShhLGYpfWEuX2V4dHJlbWVzLmxvbj1sKG8ubG9uYXhpcy5fYXgsdix5KSxhLl9leHRyZW1lcy5sYXQ9bChvLmxhdGF4aXMuX2F4LG0seSl9LHBsb3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPWUubGF5ZXJzLmZyb250cGxvdC5zZWxlY3QoIi5zY2F0dGVybGF5ZXIiKSxzPWEubWFrZVRyYWNlR3JvdXBzKGksciwidHJhY2Ugc2NhdHRlcmdlbyIpO2Z1bmN0aW9uIGwodCxlKXt0LmxvbmxhdFswXT09PWMmJm4uc2VsZWN0KGUpLnJlbW92ZSgpfXMuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCkscy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0KHRoaXMpLGk9ZVswXS50cmFjZTtpZihoLmhhc0xpbmVzKGkpfHwibm9uZSIhPT1pLmZpbGwpe3ZhciBzPW8uY2FsY1RyYWNlVG9MaW5lQ29vcmRzKGUpLGM9Im5vbmUiIT09aS5maWxsP28ubWFrZVBvbHlnb24ocyk6by5tYWtlTGluZShzKTtyLnNlbGVjdEFsbCgicGF0aC5qcy1saW5lIikuZGF0YShbe2dlb2pzb246Yyx0cmFjZTppfV0pLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgianMtbGluZSIsITApLnN0eWxlKCJzdHJva2UtbWl0ZXJsaW1pdCIsMil9aC5oYXNNYXJrZXJzKGkpJiZyLnNlbGVjdEFsbCgicGF0aC5wb2ludCIpLmRhdGEoYS5pZGVudGl0eSkuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJwb2ludCIsITApLmVhY2goZnVuY3Rpb24odCl7bCh0LHRoaXMpfSksaC5oYXNUZXh0KGkpJiZyLnNlbGVjdEFsbCgiZyIpLmRhdGEoYS5pZGVudGl0eSkuZW50ZXIoKS5hcHBlbmQoImciKS5hcHBlbmQoInRleHQiKS5lYWNoKGZ1bmN0aW9uKHQpe2wodCx0aGlzKX0pLGYodCxlKX0pfX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyI6NzExLCIuLi8uLi9saWIvZ2VvanNvbl91dGlscyI6NzEyLCIuLi8uLi9saWIvdG9wb2pzb25fdXRpbHMiOjc0NCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSI6NzY0LCIuLi9zY2F0dGVyL2NhbGMiOjExMjEsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4vc3R5bGUiOjExNzAsZDM6MTY1fV0sMTE2OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksYT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGksbyxzLGwsYz10LmNkLHU9dC54YXhpcyxoPXQueWF4aXMsZj1bXSxwPWNbMF0udHJhY2U7aWYoIW4uaGFzTWFya2VycyhwKSYmIW4uaGFzVGV4dChwKSlyZXR1cm5bXTtpZighMT09PWUpZm9yKGw9MDtsPGMubGVuZ3RoO2wrKyljW2xdLnNlbGVjdGVkPTA7ZWxzZSBmb3IobD0wO2w8Yy5sZW5ndGg7bCsrKShpPShyPWNbbF0pLmxvbmxhdClbMF0hPT1hJiYobz11LmMycChpKSxzPWguYzJwKGkpLGUuY29udGFpbnMoW28sc10sbnVsbCxsLHQpPyhmLnB1c2goe3BvaW50TnVtYmVyOmwsbG9uOmlbMF0sbGF0OmlbMV19KSxyLnNlbGVjdGVkPTEpOnIuc2VsZWN0ZWQ9MCk7cmV0dXJuIGZ9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NH1dLDExNzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89dCgiLi4vc2NhdHRlci9zdHlsZSIpLHM9by5zdHlsZVBvaW50cyxsPW8uc3R5bGVUZXh0O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2UmJmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS50cmFjZSxvPWVbMF0ubm9kZTM7by5zdHlsZSgib3BhY2l0eSIsZVswXS50cmFjZS5vcGFjaXR5KSxzKG8scix0KSxsKG8scix0KSxvLnNlbGVjdEFsbCgicGF0aC5qcy1saW5lIikuc3R5bGUoImZpbGwiLCJub25lIikuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxyPXQudHJhY2Usbz1yLmxpbmV8fHt9O2UuY2FsbChpLnN0cm9rZSxvLmNvbG9yKS5jYWxsKGEuZGFzaExpbmUsby5kYXNofHwiIixvLndpZHRofHwwKSwibm9uZSIhPT1yLmZpbGwmJmUuY2FsbChpLmZpbGwsci5maWxsY29sb3IpfSl9KHQsZSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uL3NjYXR0ZXIvc3R5bGUiOjExNDMsZDM6MTY1fV0sMTE3MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksYT10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxzPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxsPXQoIi4vY29uc3RhbnRzIikuREFTSEVTLGM9YS5saW5lLHU9YS5tYXJrZXIsaD11LmxpbmUsZj1lLmV4cG9ydHM9cyh7eDphLngseDA6YS54MCxkeDphLmR4LHk6YS55LHkwOmEueTAsZHk6YS5keSx0ZXh0OmEudGV4dCxob3ZlcnRleHQ6YS5ob3ZlcnRleHQsdGV4dHBvc2l0aW9uOmEudGV4dHBvc2l0aW9uLHRleHRmb250OmEudGV4dGZvbnQsbW9kZTp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsibGluZXMiLCJtYXJrZXJzIiwidGV4dCJdLGV4dHJhczpbIm5vbmUiXX0sbGluZTp7Y29sb3I6Yy5jb2xvcix3aWR0aDpjLndpZHRoLHNoYXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsaW5lYXIiLCJodiIsInZoIiwiaHZoIiwidmh2Il0sZGZsdDoibGluZWFyIixlZGl0VHlwZToicGxvdCJ9LGRhc2g6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5cyhsKSxkZmx0OiJzb2xpZCJ9fSxtYXJrZXI6byh7fSxpKCJtYXJrZXIiKSx7c3ltYm9sOnUuc3ltYm9sLHNpemU6dS5zaXplLHNpemVyZWY6dS5zaXplcmVmLHNpemVtaW46dS5zaXplbWluLHNpemVtb2RlOnUuc2l6ZW1vZGUsb3BhY2l0eTp1Lm9wYWNpdHksY29sb3JiYXI6dS5jb2xvcmJhcixsaW5lOm8oe30saSgibWFya2VyLmxpbmUiKSx7d2lkdGg6aC53aWR0aH0pfSksY29ubmVjdGdhcHM6YS5jb25uZWN0Z2FwcyxmaWxsOm8oe30sYS5maWxsLHtkZmx0OiJub25lIn0pLGZpbGxjb2xvcjphLmZpbGxjb2xvcixzZWxlY3RlZDp7bWFya2VyOmEuc2VsZWN0ZWQubWFya2VyLHRleHRmb250OmEuc2VsZWN0ZWQudGV4dGZvbnR9LHVuc2VsZWN0ZWQ6e21hcmtlcjphLnVuc2VsZWN0ZWQubWFya2VyLHRleHRmb250OmEudW5zZWxlY3RlZC50ZXh0Zm9udH0sb3BhY2l0eTpuLm9wYWNpdHl9LCJjYWxjIiwibmVzdGVkIik7Zi54LmVkaXRUeXBlPWYueS5lZGl0VHlwZT1mLngwLmVkaXRUeXBlPWYueTAuZWRpdFR5cGU9ImNhbGMrY2xlYXJBeGlzVHlwZXMiLGYuaG92ZXJ0ZW1wbGF0ZT1hLmhvdmVydGVtcGxhdGUsZi50ZXh0dGVtcGxhdGU9YS50ZXh0dGVtcGxhdGV9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwLCIuL2NvbnN0YW50cyI6MTE3M31dLDExNzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicG9pbnQtY2x1c3RlciIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxvPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFuZ2UiKS5maW5kRXh0cmVtZXMscz10KCIuLi9zY2F0dGVyL2NhbGMiKSxsPXMuY2FsY01hcmtlclNpemUsYz1zLmNhbGNBeGlzRXhwYW5zaW9uLHU9cy5zZXRGaXJzdFNjYXR0ZXIsaD10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGY9dCgiLi9jb252ZXJ0IikscD10KCIuL3NjZW5lX3VwZGF0ZSIpLGQ9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxnPXQoIi4vY29uc3RhbnRzIikuVE9PX01BTllfUE9JTlRTO2Z1bmN0aW9uIHYodCxlLHIpe3ZhciBuPXQuX2V4dHJlbWVzW2UuX2lkXSxhPW8oZSxyLl9ibmRzLHtwYWRkZWQ6ITB9KTtuLm1pbj1uLm1pbi5jb25jYXQoYS5taW4pLG4ubWF4PW4ubWF4LmNvbmNhdChhLm1heCl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbyxzLG09dC5fZnVsbExheW91dCx5PWkuZ2V0RnJvbUlkKHQsZS54YXhpcykseD1pLmdldEZyb21JZCh0LGUueWF4aXMpLGI9bS5fcGxvdHNbZS54YXhpcytlLnlheGlzXSxfPWUuX2xlbmd0aCx3PV8+PWcsaz0yKl8sVD17fSxNPWUuX3g9eS5tYWtlQ2FsY2RhdGEoZSwieCIpLEE9ZS5feT14Lm1ha2VDYWxjZGF0YShlLCJ5IiksUz1uZXcgQXJyYXkoayk7Zm9yKHI9MDtyPF87cisrKW89TVtyXSxzPUFbcl0sU1syKnJdPW89PT1kP05hTjpvLFNbMipyKzFdPXM9PT1kP05hTjpzO2lmKCJsb2ciPT09eS50eXBlKWZvcihyPTA7cjxrO3IrPTIpU1tyXT15LmMybChTW3JdKTtpZigibG9nIj09PXgudHlwZSlmb3Iocj0xO3I8aztyKz0yKVNbcl09eC5jMmwoU1tyXSk7aWYodyYmImxvZyIhPT15LnR5cGUmJiJsb2ciIT09eC50eXBlKVQudHJlZT1uKFMpO2Vsc2V7dmFyIEU9VC5pZHM9bmV3IEFycmF5KF8pO2ZvcihyPTA7cjxfO3IrKylFW3JdPXJ9aCh0LGUpO3ZhciBMLEM9ZnVuY3Rpb24odCxlLHIsbixpLG8pe3ZhciBzPWYuc3R5bGUodCxyKTtzLm1hcmtlciYmKHMubWFya2VyLnBvc2l0aW9ucz1uKTtzLmxpbmUmJm4ubGVuZ3RoPjEmJmEuZXh0ZW5kRmxhdChzLmxpbmUsZi5saW5lUG9zaXRpb25zKHQscixuKSk7aWYocy5lcnJvclh8fHMuZXJyb3JZKXt2YXIgbD1mLmVycm9yQmFyUG9zaXRpb25zKHQscixuLGksbyk7cy5lcnJvclgmJmEuZXh0ZW5kRmxhdChzLmVycm9yWCxsLngpLHMuZXJyb3JZJiZhLmV4dGVuZEZsYXQocy5lcnJvclksbC55KX1zLnRleHQmJihhLmV4dGVuZEZsYXQocy50ZXh0LHtwb3NpdGlvbnM6bn0sZi50ZXh0UG9zaXRpb24odCxyLHMudGV4dCxzLm1hcmtlcikpLGEuZXh0ZW5kRmxhdChzLnRleHRTZWwse3Bvc2l0aW9uczpufSxmLnRleHRQb3NpdGlvbih0LHIscy50ZXh0LHMubWFya2VyU2VsKSksYS5leHRlbmRGbGF0KHMudGV4dFVuc2VsLHtwb3NpdGlvbnM6bn0sZi50ZXh0UG9zaXRpb24odCxyLHMudGV4dCxzLm1hcmtlclVuc2VsKSkpO3JldHVybiBzfSh0LDAsZSxTLE0sQSksUD1wKHQsYik7cmV0dXJuIHUobSxlKSx3P0MubWFya2VyJiYoTD0yKihDLm1hcmtlci5zaXplQXZnfHxNYXRoLm1heChDLm1hcmtlci5zaXplLDMpKSk6TD1sKGUsXyksYyh0LGUseSx4LE0sQSxMKSxDLmVycm9yWCYmdihlLHksQy5lcnJvclgpLEMuZXJyb3JZJiZ2KGUseCxDLmVycm9yWSksQy5maWxsJiYhUC5maWxsMmQmJihQLmZpbGwyZD0hMCksQy5tYXJrZXImJiFQLnNjYXR0ZXIyZCYmKFAuc2NhdHRlcjJkPSEwKSxDLmxpbmUmJiFQLmxpbmUyZCYmKFAubGluZTJkPSEwKSwhQy5lcnJvclgmJiFDLmVycm9yWXx8UC5lcnJvcjJkfHwoUC5lcnJvcjJkPSEwKSxDLnRleHQmJiFQLmdsVGV4dCYmKFAuZ2xUZXh0PSEwKSxDLm1hcmtlciYmKEMubWFya2VyLnNuYXA9XyksUC5saW5lT3B0aW9ucy5wdXNoKEMubGluZSksUC5lcnJvclhPcHRpb25zLnB1c2goQy5lcnJvclgpLFAuZXJyb3JZT3B0aW9ucy5wdXNoKEMuZXJyb3JZKSxQLmZpbGxPcHRpb25zLnB1c2goQy5maWxsKSxQLm1hcmtlck9wdGlvbnMucHVzaChDLm1hcmtlciksUC5tYXJrZXJTZWxlY3RlZE9wdGlvbnMucHVzaChDLm1hcmtlclNlbCksUC5tYXJrZXJVbnNlbGVjdGVkT3B0aW9ucy5wdXNoKEMubWFya2VyVW5zZWwpLFAudGV4dE9wdGlvbnMucHVzaChDLnRleHQpLFAudGV4dFNlbGVjdGVkT3B0aW9ucy5wdXNoKEMudGV4dFNlbCksUC50ZXh0VW5zZWxlY3RlZE9wdGlvbnMucHVzaChDLnRleHRVbnNlbCksUC5zZWxlY3RCYXRjaC5wdXNoKFtdKSxQLnVuc2VsZWN0QmF0Y2gucHVzaChbXSksVC5fc2NlbmU9UCxULmluZGV4PVAuY291bnQsVC54PU0sVC55PUEsVC5wb3NpdGlvbnM9UyxQLmNvdW50KyssW3t4OiExLHk6ITEsdDpULHRyYWNlOmV9XX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSI6NzY0LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi4vc2NhdHRlci9jYWxjIjoxMTIxLCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyI6MTEyMywiLi9jb25zdGFudHMiOjExNzMsIi4vY29udmVydCI6MTE3NCwiLi9zY2VuZV91cGRhdGUiOjExODIsInBvaW50LWNsdXN0ZXIiOjQ3MX1dLDExNzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtUT09fTUFOWV9QT0lOVFM6MWU1LFNZTUJPTF9TREZfU0laRToyMDAsU1lNQk9MX1NJWkU6MjAsU1lNQk9MX1NUUk9LRToxLERPVF9SRTovLWRvdC8sT1BFTl9SRTovLW9wZW4vLERBU0hFUzp7c29saWQ6WzFdLGRvdDpbMSwxXSxkYXNoOls0LDFdLGxvbmdkYXNoOls4LDFdLGRhc2hkb3Q6WzQsMSwxLDFdLGxvbmdkYXNoZG90Ols4LDEsMSwxXX19fSx7fV0sMTE3NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgic3ZnLXBhdGgtc2RmIiksaT10KCJjb2xvci1ub3JtYWxpemUiKSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIiksdT10KCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIikuZm9ybWF0Q29sb3IsaD10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksZj10KCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyIpLHA9dCgiLi9oZWxwZXJzIiksZD10KCIuL2NvbnN0YW50cyIpLGc9dCgiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyIpLkRFU0VMRUNURElNLHY9e3N0YXJ0OjEsbGVmdDoxLGVuZDotMSxyaWdodDotMSxtaWRkbGU6MCxjZW50ZXI6MCxib3R0b206MSx0b3A6LTF9LG09dCgiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIikuYXBwZW5kQXJyYXlQb2ludFZhbHVlO2Z1bmN0aW9uIHkodCxlKXt2YXIgcixhPXQuX2Z1bGxMYXlvdXQsaT1lLl9sZW5ndGgsbz1lLnRleHRmb250LGw9ZS50ZXh0cG9zaXRpb24sYz1BcnJheS5pc0FycmF5KGwpP2w6W2xdLHU9by5jb2xvcixoPW8uc2l6ZSxmPW8uZmFtaWx5LHA9e30sZD1lLnRleHR0ZW1wbGF0ZTtpZihkKXtwLnRleHQ9W107dmFyIGc9YS5fZDNsb2NhbGUsdj1BcnJheS5pc0FycmF5KGQpLHk9dj9NYXRoLm1pbihkLmxlbmd0aCxpKTppLHg9dj9mdW5jdGlvbih0KXtyZXR1cm4gZFt0XX06ZnVuY3Rpb24oKXtyZXR1cm4gZH07Zm9yKHI9MDtyPHk7cisrKXt2YXIgYj17aTpyfSxfPWUuX21vZHVsZS5mb3JtYXRMYWJlbHMoYixlLGEpLHc9e307bSh3LGUscik7dmFyIGs9ZS5fbWV0YXx8e307cC50ZXh0LnB1c2gocy50ZXh0dGVtcGxhdGVTdHJpbmcoeChyKSxfLGcsdyxiLGspKX19ZWxzZSBBcnJheS5pc0FycmF5KGUudGV4dCkmJmUudGV4dC5sZW5ndGg8aT9wLnRleHQ9ZS50ZXh0LnNsaWNlKCk6cC50ZXh0PWUudGV4dDtpZihBcnJheS5pc0FycmF5KHAudGV4dCkpZm9yKHI9cC50ZXh0Lmxlbmd0aDtyPGk7cisrKXAudGV4dFtyXT0iIjtmb3IocC5vcGFjaXR5PWUub3BhY2l0eSxwLmZvbnQ9e30scC5hbGlnbj1bXSxwLmJhc2VsaW5lPVtdLHI9MDtyPGMubGVuZ3RoO3IrKyl7dmFyIFQ9Y1tyXS5zcGxpdCgvXHMrLyk7c3dpdGNoKFRbMV0pe2Nhc2UibGVmdCI6cC5hbGlnbi5wdXNoKCJyaWdodCIpO2JyZWFrO2Nhc2UicmlnaHQiOnAuYWxpZ24ucHVzaCgibGVmdCIpO2JyZWFrO2RlZmF1bHQ6cC5hbGlnbi5wdXNoKFRbMV0pfXN3aXRjaChUWzBdKXtjYXNlInRvcCI6cC5iYXNlbGluZS5wdXNoKCJib3R0b20iKTticmVhaztjYXNlImJvdHRvbSI6cC5iYXNlbGluZS5wdXNoKCJ0b3AiKTticmVhaztkZWZhdWx0OnAuYmFzZWxpbmUucHVzaChUWzBdKX19aWYoQXJyYXkuaXNBcnJheSh1KSlmb3IocC5jb2xvcj1uZXcgQXJyYXkoaSkscj0wO3I8aTtyKyspcC5jb2xvcltyXT11W3JdO2Vsc2UgcC5jb2xvcj11O2lmKHMuaXNBcnJheU9yVHlwZWRBcnJheShoKXx8QXJyYXkuaXNBcnJheShmKSlmb3IocC5mb250PW5ldyBBcnJheShpKSxyPTA7cjxpO3IrKyl7dmFyIE09cC5mb250W3JdPXt9O00uc2l6ZT1zLmlzVHlwZWRBcnJheShoKT9oW3JdOkFycmF5LmlzQXJyYXkoaCk/bihoW3JdKT9oW3JdOjA6aCxNLmZhbWlseT1BcnJheS5pc0FycmF5KGYpP2Zbcl06Zn1lbHNlIHAuZm9udD17c2l6ZTpoLGZhbWlseTpmfTtyZXR1cm4gcH1mdW5jdGlvbiB4KHQpe3ZhciBlLHIsbj10Ll9sZW5ndGgsYT10Lm1hcmtlcixvPXt9LGw9cy5pc0FycmF5T3JUeXBlZEFycmF5KGEuc3ltYm9sKSxjPXMuaXNBcnJheU9yVHlwZWRBcnJheShhLmNvbG9yKSxoPXMuaXNBcnJheU9yVHlwZWRBcnJheShhLmxpbmUuY29sb3IpLGQ9cy5pc0FycmF5T3JUeXBlZEFycmF5KGEub3BhY2l0eSksZz1zLmlzQXJyYXlPclR5cGVkQXJyYXkoYS5zaXplKSx2PXMuaXNBcnJheU9yVHlwZWRBcnJheShhLmxpbmUud2lkdGgpO2lmKGx8fChyPXAuaXNPcGVuU3ltYm9sKGEuc3ltYm9sKSksbHx8Y3x8aHx8ZCl7by5jb2xvcnM9bmV3IEFycmF5KG4pLG8uYm9yZGVyQ29sb3JzPW5ldyBBcnJheShuKTt2YXIgbT11KGEsYS5vcGFjaXR5LG4pLHk9dShhLmxpbmUsYS5vcGFjaXR5LG4pO2lmKCFBcnJheS5pc0FycmF5KHlbMF0pKXt2YXIgeD15O2Zvcih5PUFycmF5KG4pLGU9MDtlPG47ZSsrKXlbZV09eH1pZighQXJyYXkuaXNBcnJheShtWzBdKSl7dmFyIGI9bTtmb3IobT1BcnJheShuKSxlPTA7ZTxuO2UrKyltW2VdPWJ9Zm9yKG8uY29sb3JzPW0sby5ib3JkZXJDb2xvcnM9eSxlPTA7ZTxuO2UrKyl7aWYobCl7dmFyIF89YS5zeW1ib2xbZV07cj1wLmlzT3BlblN5bWJvbChfKX1yJiYoeVtlXT1tW2VdLnNsaWNlKCksbVtlXT1tW2VdLnNsaWNlKCksbVtlXVszXT0wKX1vLm9wYWNpdHk9dC5vcGFjaXR5fWVsc2Ugcj8oby5jb2xvcj1pKGEuY29sb3IsInVpbnQ4Iiksby5jb2xvclszXT0wLG8uYm9yZGVyQ29sb3I9aShhLmNvbG9yLCJ1aW50OCIpKTooby5jb2xvcj1pKGEuY29sb3IsInVpbnQ4Iiksby5ib3JkZXJDb2xvcj1pKGEubGluZS5jb2xvciwidWludDgiKSksby5vcGFjaXR5PXQub3BhY2l0eSphLm9wYWNpdHk7aWYobClmb3Ioby5tYXJrZXJzPW5ldyBBcnJheShuKSxlPTA7ZTxuO2UrKylvLm1hcmtlcnNbZV09RShhLnN5bWJvbFtlXSk7ZWxzZSBvLm1hcmtlcj1FKGEuc3ltYm9sKTt2YXIgdyxrPWYodCk7aWYoZ3x8dil7dmFyIFQsTT1vLnNpemVzPW5ldyBBcnJheShuKSxBPW8uYm9yZGVyU2l6ZXM9bmV3IEFycmF5KG4pLFM9MDtpZihnKXtmb3IoZT0wO2U8bjtlKyspTVtlXT1rKGEuc2l6ZVtlXSksUys9TVtlXTtUPVMvbn1lbHNlIGZvcih3PWsoYS5zaXplKSxlPTA7ZTxuO2UrKylNW2VdPXc7aWYodilmb3IoZT0wO2U8bjtlKyspQVtlXT1hLmxpbmUud2lkdGhbZV0vMjtlbHNlIGZvcih3PWEubGluZS53aWR0aC8yLGU9MDtlPG47ZSsrKUFbZV09dztvLnNpemVBdmc9VH1lbHNlIG8uc2l6ZT1rKGEmJmEuc2l6ZXx8MTApLG8uYm9yZGVyU2l6ZXM9ayhhLmxpbmUud2lkdGgpO3JldHVybiBvfWZ1bmN0aW9uIGIodCxlKXt2YXIgcj10Lm1hcmtlcixuPXt9O3JldHVybiBlPyhlLm1hcmtlciYmZS5tYXJrZXIuc3ltYm9sP249eChzLmV4dGVuZEZsYXQoe30scixlLm1hcmtlcikpOmUubWFya2VyJiYoZS5tYXJrZXIuc2l6ZSYmKG4uc2l6ZT1lLm1hcmtlci5zaXplLzIpLGUubWFya2VyLmNvbG9yJiYobi5jb2xvcnM9ZS5tYXJrZXIuY29sb3IpLHZvaWQgMCE9PWUubWFya2VyLm9wYWNpdHkmJihuLm9wYWNpdHk9ZS5tYXJrZXIub3BhY2l0eSkpLG4pOm59ZnVuY3Rpb24gXyh0LGUscil7dmFyIG49e307aWYoIXIpcmV0dXJuIG47aWYoci50ZXh0Zm9udCl7dmFyIGE9e29wYWNpdHk6MSx0ZXh0OmUudGV4dCx0ZXh0dGVtcGxhdGU6ZS50ZXh0dGVtcGxhdGUsdGV4dHBvc2l0aW9uOmUudGV4dHBvc2l0aW9uLHRleHRmb250OnMuZXh0ZW5kRmxhdCh7fSxlLnRleHRmb250KX07ci50ZXh0Zm9udCYmcy5leHRlbmRGbGF0KGEudGV4dGZvbnQsci50ZXh0Zm9udCksbj15KHQsYSl9cmV0dXJuIG59ZnVuY3Rpb24gdyh0LGUpe3ZhciByPXtjYXBTaXplOjIqZS53aWR0aCxsaW5lV2lkdGg6ZS50aGlja25lc3MsY29sb3I6ZS5jb2xvcn07cmV0dXJuIGUuY29weV95c3R5bGUmJihyPXQuZXJyb3JfeSkscn12YXIgaz1kLlNZTUJPTF9TREZfU0laRSxUPWQuU1lNQk9MX1NJWkUsTT1kLlNZTUJPTF9TVFJPS0UsQT17fSxTPWwuc3ltYm9sRnVuY3NbMF0oLjA1KlQpO2Z1bmN0aW9uIEUodCl7aWYoImNpcmNsZSI9PT10KXJldHVybiBudWxsO3ZhciBlLHIsbj1sLnN5bWJvbE51bWJlcih0KSxpPWwuc3ltYm9sRnVuY3NbbiUxMDBdLG89ISFsLnN5bWJvbE5vRG90W24lMTAwXSxzPSEhbC5zeW1ib2xOb0ZpbGxbbiUxMDBdLGM9cC5pc0RvdFN5bWJvbCh0KTtyZXR1cm4gQVt0XT9BW3RdOihlPWMmJiFvP2koMS4xKlQpK1M6aShUKSxyPWEoZSx7dzprLGg6ayx2aWV3Qm94OlstVCwtVCxULFRdLHN0cm9rZTpzP006LU19KSxBW3RdPXIscnx8bnVsbCl9ZS5leHBvcnRzPXtzdHlsZTpmdW5jdGlvbih0LGUpe3ZhciByLG49e21hcmtlcjp2b2lkIDAsbWFya2VyU2VsOnZvaWQgMCxtYXJrZXJVbnNlbDp2b2lkIDAsbGluZTp2b2lkIDAsZmlsbDp2b2lkIDAsZXJyb3JYOnZvaWQgMCxlcnJvclk6dm9pZCAwLHRleHQ6dm9pZCAwLHRleHRTZWw6dm9pZCAwLHRleHRVbnNlbDp2b2lkIDB9O2lmKCEwIT09ZS52aXNpYmxlKXJldHVybiBuO2lmKGguaGFzVGV4dChlKSYmKG4udGV4dD15KHQsZSksbi50ZXh0U2VsPV8odCxlLGUuc2VsZWN0ZWQpLG4udGV4dFVuc2VsPV8odCxlLGUudW5zZWxlY3RlZCkpLGguaGFzTWFya2VycyhlKSYmKG4ubWFya2VyPXgoZSksbi5tYXJrZXJTZWw9YihlLGUuc2VsZWN0ZWQpLG4ubWFya2VyVW5zZWw9YihlLGUudW5zZWxlY3RlZCksIWUudW5zZWxlY3RlZCYmcy5pc0FycmF5T3JUeXBlZEFycmF5KGUubWFya2VyLm9wYWNpdHkpKSl7dmFyIGE9ZS5tYXJrZXIub3BhY2l0eTtmb3Iobi5tYXJrZXJVbnNlbC5vcGFjaXR5PW5ldyBBcnJheShhLmxlbmd0aCkscj0wO3I8YS5sZW5ndGg7cisrKW4ubWFya2VyVW5zZWwub3BhY2l0eVtyXT1nKmFbcl19aWYoaC5oYXNMaW5lcyhlKSl7bi5saW5lPXtvdmVybGF5OiEwLHRoaWNrbmVzczplLmxpbmUud2lkdGgsY29sb3I6ZS5saW5lLmNvbG9yLG9wYWNpdHk6ZS5vcGFjaXR5fTt2YXIgaT0oZC5EQVNIRVNbZS5saW5lLmRhc2hdfHxbMV0pLnNsaWNlKCk7Zm9yKHI9MDtyPGkubGVuZ3RoOysrcilpW3JdKj1lLmxpbmUud2lkdGg7bi5saW5lLmRhc2hlcz1pfXJldHVybiBlLmVycm9yX3gmJmUuZXJyb3JfeC52aXNpYmxlJiYobi5lcnJvclg9dyhlLGUuZXJyb3JfeCkpLGUuZXJyb3JfeSYmZS5lcnJvcl95LnZpc2libGUmJihuLmVycm9yWT13KGUsZS5lcnJvcl95KSksZS5maWxsJiYibm9uZSIhPT1lLmZpbGwmJihuLmZpbGw9e2Nsb3NlZDohMCxmaWxsOmUuZmlsbGNvbG9yLHRoaWNrbmVzczowfSksbn0sbWFya2VyU3R5bGU6eCxtYXJrZXJTZWxlY3Rpb246YixsaW5lUG9zaXRpb25zOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGk9ci5sZW5ndGgsbz1pLzI7aWYoaC5oYXNMaW5lcyhlKSYmbylpZigiaHYiPT09ZS5saW5lLnNoYXBlKXtmb3Iobj1bXSxhPTA7YTxvLTE7YSsrKWlzTmFOKHJbMiphXSl8fGlzTmFOKHJbMiphKzFdKT9uLnB1c2goTmFOLE5hTixOYU4sTmFOKToobi5wdXNoKHJbMiphXSxyWzIqYSsxXSksaXNOYU4oclsyKmErMl0pfHxpc05hTihyWzIqYSszXSk/bi5wdXNoKE5hTixOYU4pOm4ucHVzaChyWzIqYSsyXSxyWzIqYSsxXSkpO24ucHVzaChyW2ktMl0scltpLTFdKX1lbHNlIGlmKCJodmgiPT09ZS5saW5lLnNoYXBlKXtmb3Iobj1bXSxhPTA7YTxvLTE7YSsrKWlmKGlzTmFOKHJbMiphXSl8fGlzTmFOKHJbMiphKzFdKXx8aXNOYU4oclsyKmErMl0pfHxpc05hTihyWzIqYSszXSkpaXNOYU4oclsyKmFdKXx8aXNOYU4oclsyKmErMV0pP24ucHVzaChOYU4sTmFOKTpuLnB1c2goclsyKmFdLHJbMiphKzFdKSxuLnB1c2goTmFOLE5hTik7ZWxzZXt2YXIgcz0oclsyKmFdK3JbMiphKzJdKS8yO24ucHVzaChyWzIqYV0sclsyKmErMV0scyxyWzIqYSsxXSxzLHJbMiphKzNdKX1uLnB1c2gocltpLTJdLHJbaS0xXSl9ZWxzZSBpZigidmh2Ij09PWUubGluZS5zaGFwZSl7Zm9yKG49W10sYT0wO2E8by0xO2ErKylpZihpc05hTihyWzIqYV0pfHxpc05hTihyWzIqYSsxXSl8fGlzTmFOKHJbMiphKzJdKXx8aXNOYU4oclsyKmErM10pKWlzTmFOKHJbMiphXSl8fGlzTmFOKHJbMiphKzFdKT9uLnB1c2goTmFOLE5hTik6bi5wdXNoKHJbMiphXSxyWzIqYSsxXSksbi5wdXNoKE5hTixOYU4pO2Vsc2V7dmFyIGw9KHJbMiphKzFdK3JbMiphKzNdKS8yO24ucHVzaChyWzIqYV0sclsyKmErMV0sclsyKmFdLGwsclsyKmErMl0sbCl9bi5wdXNoKHJbaS0yXSxyW2ktMV0pfWVsc2UgaWYoInZoIj09PWUubGluZS5zaGFwZSl7Zm9yKG49W10sYT0wO2E8by0xO2ErKylpc05hTihyWzIqYV0pfHxpc05hTihyWzIqYSsxXSk/bi5wdXNoKE5hTixOYU4sTmFOLE5hTik6KG4ucHVzaChyWzIqYV0sclsyKmErMV0pLGlzTmFOKHJbMiphKzJdKXx8aXNOYU4oclsyKmErM10pP24ucHVzaChOYU4sTmFOKTpuLnB1c2goclsyKmFdLHJbMiphKzNdKSk7bi5wdXNoKHJbaS0yXSxyW2ktMV0pfWVsc2Ugbj1yO3ZhciBjPSExO2ZvcihhPTA7YTxuLmxlbmd0aDthKyspaWYoaXNOYU4oblthXSkpe2M9ITA7YnJlYWt9dmFyIHU9Y3x8bi5sZW5ndGg+ZC5UT09fTUFOWV9QT0lOVFM/InJlY3QiOmguaGFzTWFya2VycyhlKT8icmVjdCI6InJvdW5kIjtpZihjJiZlLmNvbm5lY3RnYXBzKXt2YXIgZj1uWzBdLHA9blsxXTtmb3IoYT0wO2E8bi5sZW5ndGg7YSs9Milpc05hTihuW2FdKXx8aXNOYU4oblthKzFdKT8oblthXT1mLG5bYSsxXT1wKTooZj1uW2FdLHA9blthKzFdKX1yZXR1cm57am9pbjp1LHBvc2l0aW9uczpufX0sZXJyb3JCYXJQb3NpdGlvbnM6ZnVuY3Rpb24odCxlLHIsYSxpKXt2YXIgcz1vLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwibWFrZUNvbXB1dGVFcnJvciIpLGw9Yy5nZXRGcm9tSWQodCxlLnhheGlzKSx1PWMuZ2V0RnJvbUlkKHQsZS55YXhpcyksaD1yLmxlbmd0aC8yLGY9e307ZnVuY3Rpb24gcCh0LGEpe3ZhciBpPWEuX2lkLmNoYXJBdCgwKSxvPWVbImVycm9yXyIraV07aWYobyYmby52aXNpYmxlJiYoImxpbmVhciI9PT1hLnR5cGV8fCJsb2ciPT09YS50eXBlKSl7Zm9yKHZhciBsPXMobyksYz17eDowLHk6MX1baV0sdT17eDpbMCwxLDIsM10seTpbMiwzLDAsMV19W2ldLHA9bmV3IEZsb2F0NjRBcnJheSg0KmgpLGQ9MS8wLGc9LTEvMCx2PTAsbT0wO3Y8aDt2KyssbSs9NCl7dmFyIHk9dFt2XTtpZihuKHkpKXt2YXIgeD1yWzIqditjXSxiPWwoeSx2KSxfPWJbMF0sdz1iWzFdO2lmKG4oXykmJm4odykpe3ZhciBrPXktXyxUPXkrdztwW20rdVswXV09eC1hLmMybChrKSxwW20rdVsxXV09YS5jMmwoVCkteCxwW20rdVsyXV09MCxwW20rdVszXV09MCxkPU1hdGgubWluKGQseS1fKSxnPU1hdGgubWF4KGcseSt3KX19fWZbaV09e3Bvc2l0aW9uczpyLGVycm9yczpwLF9ibmRzOltkLGddfX19cmV0dXJuIHAoYSxsKSxwKGksdSksZn0sdGV4dFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGk9ZS5fbGVuZ3RoLG89e307aWYoaC5oYXNNYXJrZXJzKGUpKXt2YXIgcz1yLmZvbnQsbD1yLmFsaWduLGM9ci5iYXNlbGluZTtmb3Ioby5vZmZzZXQ9bmV3IEFycmF5KGkpLGE9MDthPGk7YSsrKXt2YXIgdT1uLnNpemVzP24uc2l6ZXNbYV06bi5zaXplLGY9QXJyYXkuaXNBcnJheShzKT9zW2FdLnNpemU6cy5zaXplLHA9QXJyYXkuaXNBcnJheShsKT9sLmxlbmd0aD4xP2xbYV06bFswXTpsLGQ9QXJyYXkuaXNBcnJheShjKT9jLmxlbmd0aD4xP2NbYV06Y1swXTpjLGc9dltwXSxtPXZbZF0seT11P3UvLjgrMTowLHg9LW0qeS0uNSptO28ub2Zmc2V0W2FdPVtnKnkvZix4L2ZdfX1yZXR1cm4gb319fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiOjYyNywiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyI6NjkyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciI6NzE0LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vc2NhdHRlci9tYWtlX2J1YmJsZV9zaXplX2Z1bmMiOjExMzcsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4vY29uc3RhbnRzIjoxMTczLCIuL2hlbHBlcnMiOjExNzgsImNvbG9yLW5vcm1hbGl6ZSI6MTIyLCJmYXN0LWlzbnVtZXJpYyI6MjI4LCJzdmctcGF0aC1zZGYiOjUzNH1dLDExNzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi9oZWxwZXJzIiksbz10KCIuL2F0dHJpYnV0ZXMiKSxzPXQoIi4uL3NjYXR0ZXIvY29uc3RhbnRzIiksbD10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksYz10KCIuLi9zY2F0dGVyL3h5X2RlZmF1bHRzIiksdT10KCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyIpLGg9dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIiksZj10KCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyIpLHA9dCgiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGQpe2Z1bmN0aW9uIGcocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixhKX12YXIgdj0hIXQubWFya2VyJiZpLmlzT3BlblN5bWJvbCh0Lm1hcmtlci5zeW1ib2wpLG09bC5pc0J1YmJsZSh0KSx5PWModCxlLGQsZyk7aWYoeSl7dmFyIHg9eTxzLlBUU19MSU5FU09OTFk/ImxpbmVzK21hcmtlcnMiOiJsaW5lcyI7ZygidGV4dCIpLGcoImhvdmVydGV4dCIpLGcoImhvdmVydGVtcGxhdGUiKSxnKCJtb2RlIix4KSxsLmhhc0xpbmVzKGUpJiYoZygiY29ubmVjdGdhcHMiKSxoKHQsZSxyLGQsZyksZygibGluZS5zaGFwZSIpKSxsLmhhc01hcmtlcnMoZSkmJih1KHQsZSxyLGQsZyksZygibWFya2VyLmxpbmUud2lkdGgiLHZ8fG0/MTowKSksbC5oYXNUZXh0KGUpJiYoZygidGV4dHRlbXBsYXRlIikscCh0LGUsZCxnKSk7dmFyIGI9KGUubGluZXx8e30pLmNvbG9yLF89KGUubWFya2VyfHx7fSkuY29sb3I7ZygiZmlsbCIpLCJub25lIiE9PWUuZmlsbCYmZih0LGUscixnKTt2YXIgdz1hLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwic3VwcGx5RGVmYXVsdHMiKTt3KHQsZSxifHxffHxyLHtheGlzOiJ5In0pLHcodCxlLGJ8fF98fHIse2F4aXM6IngiLGluaGVyaXQ6InkifSksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUsZyl9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9zY2F0dGVyL2NvbnN0YW50cyI6MTEyNCwiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjExMjgsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6MTEzMywiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6MTE0NSwiLi4vc2NhdHRlci94eV9kZWZhdWx0cyI6MTE0NiwiLi9hdHRyaWJ1dGVzIjoxMTcxLCIuL2hlbHBlcnMiOjExNzh9XSwxMTc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyIpLkRFU0VMRUNURElNO2UuZXhwb3J0cz17c3R5bGVUZXh0U2VsZWN0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbz10WzBdLHM9by50cmFjZSxsPW8udCxjPWwuX3NjZW5lLHU9bC5pbmRleCxoPWMuc2VsZWN0QmF0Y2hbdV0sZj1jLnVuc2VsZWN0QmF0Y2hbdV0scD1jLnRleHRPcHRpb25zW3VdLGQ9Yy50ZXh0U2VsZWN0ZWRPcHRpb25zW3VdfHx7fSxnPWMudGV4dFVuc2VsZWN0ZWRPcHRpb25zW3VdfHx7fSx2PW4uZXh0ZW5kRmxhdCh7fSxwKTtpZihoLmxlbmd0aHx8Zi5sZW5ndGgpe3ZhciBtPWQuY29sb3IseT1nLmNvbG9yLHg9cC5jb2xvcixiPUFycmF5LmlzQXJyYXkoeCk7Zm9yKHYuY29sb3I9bmV3IEFycmF5KHMuX2xlbmd0aCksZT0wO2U8aC5sZW5ndGg7ZSsrKXI9aFtlXSx2LmNvbG9yW3JdPW18fChiP3hbcl06eCk7Zm9yKGU9MDtlPGYubGVuZ3RoO2UrKyl7cj1mW2VdO3ZhciBfPWI/eFtyXTp4O3YuY29sb3Jbcl09eXx8KG0/XzphLmFkZE9wYWNpdHkoXyxpKSl9fWMuZ2xUZXh0W3VdLnVwZGF0ZSh2KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyI6NjkyLCIuLi8uLi9saWIiOjcxN31dLDExNzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9mb3JtYXRfbGFiZWxzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10Lmk7cmV0dXJuIngiaW4gdHx8KHQueD1lLl94W2FdKSwieSJpbiB0fHwodC55PWUuX3lbYV0pLG4odCxlLHIpfX0seyIuLi9zY2F0dGVyL2Zvcm1hdF9sYWJlbHMiOjExMjl9XSwxMTc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIik7ci5pc09wZW5TeW1ib2w9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P24uT1BFTl9SRS50ZXN0KHQpOnQlMjAwPjEwMH0sci5pc0RvdFN5bWJvbD1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bi5ET1RfUkUudGVzdCh0KTp0PjIwMH19LHsiLi9jb25zdGFudHMiOjExNzN9XSwxMTc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uL3NjYXR0ZXIvZ2V0X3RyYWNlX2NvbG9yIik7ZnVuY3Rpb24gbyh0LGUscixvKXt2YXIgcz10LnhhLGw9dC55YSxjPXQuZGlzdGFuY2UsdT10LmR4eSxoPXQuaW5kZXgsZj17cG9pbnROdW1iZXI6aCx4OmVbaF0seTpyW2hdfTtmLnR4PUFycmF5LmlzQXJyYXkoby50ZXh0KT9vLnRleHRbaF06by50ZXh0LGYuaHR4PUFycmF5LmlzQXJyYXkoby5ob3ZlcnRleHQpP28uaG92ZXJ0ZXh0W2hdOm8uaG92ZXJ0ZXh0LGYuZGF0YT1BcnJheS5pc0FycmF5KG8uY3VzdG9tZGF0YSk/by5jdXN0b21kYXRhW2hdOm8uY3VzdG9tZGF0YSxmLnRwPUFycmF5LmlzQXJyYXkoby50ZXh0cG9zaXRpb24pP28udGV4dHBvc2l0aW9uW2hdOm8udGV4dHBvc2l0aW9uO3ZhciBwPW8udGV4dGZvbnQ7cCYmKGYudHM9YS5pc0FycmF5T3JUeXBlZEFycmF5KHAuc2l6ZSk/cC5zaXplW2hdOnAuc2l6ZSxmLnRjPUFycmF5LmlzQXJyYXkocC5jb2xvcik/cC5jb2xvcltoXTpwLmNvbG9yLGYudGY9QXJyYXkuaXNBcnJheShwLmZhbWlseSk/cC5mYW1pbHlbaF06cC5mYW1pbHkpO3ZhciBkPW8ubWFya2VyO2QmJihmLm1zPWEuaXNBcnJheU9yVHlwZWRBcnJheShkLnNpemUpP2Quc2l6ZVtoXTpkLnNpemUsZi5tbz1hLmlzQXJyYXlPclR5cGVkQXJyYXkoZC5vcGFjaXR5KT9kLm9wYWNpdHlbaF06ZC5vcGFjaXR5LGYubXg9YS5pc0FycmF5T3JUeXBlZEFycmF5KGQuc3ltYm9sKT9kLnN5bWJvbFtoXTpkLnN5bWJvbCxmLm1jPWEuaXNBcnJheU9yVHlwZWRBcnJheShkLmNvbG9yKT9kLmNvbG9yW2hdOmQuY29sb3IpO3ZhciBnPWQmJmQubGluZTtnJiYoZi5tbGM9QXJyYXkuaXNBcnJheShnLmNvbG9yKT9nLmNvbG9yW2hdOmcuY29sb3IsZi5tbHc9YS5pc0FycmF5T3JUeXBlZEFycmF5KGcud2lkdGgpP2cud2lkdGhbaF06Zy53aWR0aCk7dmFyIHY9ZCYmZC5ncmFkaWVudDt2JiYibm9uZSIhPT12LnR5cGUmJihmLm1ndD1BcnJheS5pc0FycmF5KHYudHlwZSk/di50eXBlW2hdOnYudHlwZSxmLm1nYz1BcnJheS5pc0FycmF5KHYuY29sb3IpP3YuY29sb3JbaF06di5jb2xvcik7dmFyIG09cy5jMnAoZi54LCEwKSx5PWwuYzJwKGYueSwhMCkseD1mLm1yY3x8MSxiPW8uaG92ZXJsYWJlbDtiJiYoZi5oYmc9QXJyYXkuaXNBcnJheShiLmJnY29sb3IpP2IuYmdjb2xvcltoXTpiLmJnY29sb3IsZi5oYmM9QXJyYXkuaXNBcnJheShiLmJvcmRlcmNvbG9yKT9iLmJvcmRlcmNvbG9yW2hdOmIuYm9yZGVyY29sb3IsZi5odHM9YS5pc0FycmF5T3JUeXBlZEFycmF5KGIuZm9udC5zaXplKT9iLmZvbnQuc2l6ZVtoXTpiLmZvbnQuc2l6ZSxmLmh0Yz1BcnJheS5pc0FycmF5KGIuZm9udC5jb2xvcik/Yi5mb250LmNvbG9yW2hdOmIuZm9udC5jb2xvcixmLmh0Zj1BcnJheS5pc0FycmF5KGIuZm9udC5mYW1pbHkpP2IuZm9udC5mYW1pbHlbaF06Yi5mb250LmZhbWlseSxmLmhubD1hLmlzQXJyYXlPclR5cGVkQXJyYXkoYi5uYW1lbGVuZ3RoKT9iLm5hbWVsZW5ndGhbaF06Yi5uYW1lbGVuZ3RoKTt2YXIgXz1vLmhvdmVyaW5mbztfJiYoZi5oaT1BcnJheS5pc0FycmF5KF8pP19baF06Xyk7dmFyIHc9by5ob3ZlcnRlbXBsYXRlO3cmJihmLmh0PUFycmF5LmlzQXJyYXkodyk/d1toXTp3KTt2YXIgaz17fTtrW3QuaW5kZXhdPWY7dmFyIFQ9YS5leHRlbmRGbGF0KHt9LHQse2NvbG9yOmkobyxmKSx4MDptLXgseDE6bSt4LHhMYWJlbFZhbDpmLngseTA6eS14LHkxOnkreCx5TGFiZWxWYWw6Zi55LGNkOmssZGlzdGFuY2U6YyxzcGlrZURpc3RhbmNlOnUsaG92ZXJ0ZW1wbGF0ZTpmLmh0fSk7cmV0dXJuIGYuaHR4P1QudGV4dD1mLmh0eDpmLnR4P1QudGV4dD1mLnR4Om8udGV4dCYmKFQudGV4dD1vLnRleHQpLGEuZmlsbFRleHQoZixvLFQpLG4uZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJob3ZlckluZm8iKShmLG8sVCksVH1lLmV4cG9ydHM9e2hvdmVyUG9pbnRzOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGkscyxsLGMsdSxoLGYscCxkPXQuY2QsZz1kWzBdLnQsdj1kWzBdLnRyYWNlLG09dC54YSx5PXQueWEseD1nLngsYj1nLnksXz1tLmMycChlKSx3PXkuYzJwKHIpLGs9dC5kaXN0YW5jZTtpZihnLnRyZWUpe3ZhciBUPW0ucDJjKF8tayksTT1tLnAyYyhfK2spLEE9eS5wMmMody1rKSxTPXkucDJjKHcrayk7YT0ieCI9PT1uP2cudHJlZS5yYW5nZShNYXRoLm1pbihULE0pLE1hdGgubWluKHkuX3JsWzBdLHkuX3JsWzFdKSxNYXRoLm1heChULE0pLE1hdGgubWF4KHkuX3JsWzBdLHkuX3JsWzFdKSk6Zy50cmVlLnJhbmdlKE1hdGgubWluKFQsTSksTWF0aC5taW4oQSxTKSxNYXRoLm1heChULE0pLE1hdGgubWF4KEEsUykpfWVsc2UgYT1nLmlkczt2YXIgRT1rO2lmKCJ4Ij09PW4pZm9yKGM9MDtjPGEubGVuZ3RoO2MrKylzPXhbYVtjXV0sKHU9TWF0aC5hYnMobS5jMnAocyktXykpPEUmJihFPXUsaD15LmMycChiW2FbY11dKS13LHA9TWF0aC5zcXJ0KHUqdStoKmgpLGk9YVtjXSk7ZWxzZSBmb3IoYz1hLmxlbmd0aC0xO2M+LTE7Yy0tKXM9eFthW2NdXSxsPWJbYVtjXV0sdT1tLmMycChzKS1fLGg9eS5jMnAobCktdywoZj1NYXRoLnNxcnQodSp1K2gqaCkpPEUmJihFPXA9ZixpPWFbY10pO3JldHVybiB0LmluZGV4PWksdC5kaXN0YW5jZT1FLHQuZHh5PXAsdm9pZCAwPT09aT9bdF06W28odCx4LGIsdildfSxjYWxjSG92ZXI6b319LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL3NjYXR0ZXIvZ2V0X3RyYWNlX2NvbG9yIjoxMTMwfV0sMTE4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2hvdmVyIik7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcmdsIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiZ2wiLCJyZWdsIiwiY2FydGVzaWFuIiwic3ltYm9scyIsImVycm9yQmFyc09LIiwic2hvd0xlZ2VuZCIsInNjYXR0ZXItbGlrZSJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNyb3NzVHJhY2VEZWZhdWx0czp0KCIuLi9zY2F0dGVyL2Nyb3NzX3RyYWNlX2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiKSxmb3JtYXRMYWJlbHM6dCgiLi9mb3JtYXRfbGFiZWxzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLGhvdmVyUG9pbnRzOm4uaG92ZXJQb2ludHMsc2VsZWN0UG9pbnRzOnQoIi4vc2VsZWN0IiksbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4uL3NjYXR0ZXIvY3Jvc3NfdHJhY2VfZGVmYXVsdHMiOjExMjYsIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjoxMTM4LCIuL2F0dHJpYnV0ZXMiOjExNzEsIi4vY2FsYyI6MTE3MiwiLi9kZWZhdWx0cyI6MTE3NSwiLi9mb3JtYXRfbGFiZWxzIjoxMTc3LCIuL2hvdmVyIjoxMTc5LCIuL3Bsb3QiOjExODEsIi4vc2VsZWN0IjoxMTgzfV0sMTE4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJyZWdsLXNjYXR0ZXIyZCIpLGE9dCgicmVnbC1saW5lMmQiKSxpPXQoInJlZ2wtZXJyb3IyZCIpLG89dCgiZ2wtdGV4dCIpLHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi8uLi9saWIvcHJlcGFyZV9yZWdsIiksYz10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksdT10KCIuLi9zY2F0dGVyL2xpbmtfdHJhY2VzIiksaD10KCIuL2VkaXRfc3R5bGUiKS5zdHlsZVRleHRTZWxlY3Rpb247ZnVuY3Rpb24gZih0LGUscil7dmFyIG49dC5fc2l6ZSxhPXQud2lkdGgsaT10LmhlaWdodDtyZXR1cm5bbi5sK2UuZG9tYWluWzBdKm4udyxuLmIrci5kb21haW5bMF0qbi5oLGEtbi5yLSgxLWUuZG9tYWluWzFdKSpuLncsaS1uLnQtKDEtci5kb21haW5bMV0pKm4uaF19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZihyLmxlbmd0aCl7dmFyIHAsZCxnPXQuX2Z1bGxMYXlvdXQsdj1lLl9zY2VuZSxtPWUueGF4aXMseT1lLnlheGlzO2lmKHYpaWYobCh0LFsiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIsIk9FU19lbGVtZW50X2luZGV4X3VpbnQiXSkpe3ZhciB4PXYuY291bnQsYj1nLl9nbGNhbnZhcy5kYXRhKClbMF0ucmVnbDtpZih1KHQsZSxyKSx2LmRpcnR5KXtpZighMD09PXYuZXJyb3IyZCYmKHYuZXJyb3IyZD1pKGIpKSwhMD09PXYubGluZTJkJiYodi5saW5lMmQ9YShiKSksITA9PT12LnNjYXR0ZXIyZCYmKHYuc2NhdHRlcjJkPW4oYikpLCEwPT09di5maWxsMmQmJih2LmZpbGwyZD1hKGIpKSwhMD09PXYuZ2xUZXh0KWZvcih2LmdsVGV4dD1uZXcgQXJyYXkoeCkscD0wO3A8eDtwKyspdi5nbFRleHRbcF09bmV3IG8oYik7aWYodi5nbFRleHQpe2lmKHg+di5nbFRleHQubGVuZ3RoKXt2YXIgXz14LXYuZ2xUZXh0Lmxlbmd0aDtmb3IocD0wO3A8XztwKyspdi5nbFRleHQucHVzaChuZXcgbyhiKSl9ZWxzZSBpZih4PHYuZ2xUZXh0Lmxlbmd0aCl7dmFyIHc9di5nbFRleHQubGVuZ3RoLXg7di5nbFRleHQuc3BsaWNlKHgsdykuZm9yRWFjaChmdW5jdGlvbih0KXt0LmRlc3Ryb3koKX0pfWZvcihwPTA7cDx4O3ArKyl2LmdsVGV4dFtwXS51cGRhdGUodi50ZXh0T3B0aW9uc1twXSl9aWYodi5saW5lMmQmJih2LmxpbmUyZC51cGRhdGUodi5saW5lT3B0aW9ucyksdi5saW5lT3B0aW9ucz12LmxpbmVPcHRpb25zLm1hcChmdW5jdGlvbih0KXtpZih0JiZ0LnBvc2l0aW9ucyl7Zm9yKHZhciBlPXQucG9zaXRpb25zLHI9MDtyPGUubGVuZ3RoJiYoaXNOYU4oZVtyXSl8fGlzTmFOKGVbcisxXSkpOylyKz0yO2Zvcih2YXIgbj1lLmxlbmd0aC0yO24+ciYmKGlzTmFOKGVbbl0pfHxpc05hTihlW24rMV0pKTspbi09Mjt0LnBvc2l0aW9ucz1lLnNsaWNlKHIsbisyKX1yZXR1cm4gdH0pLHYubGluZTJkLnVwZGF0ZSh2LmxpbmVPcHRpb25zKSksdi5lcnJvcjJkKXt2YXIgaz0odi5lcnJvclhPcHRpb25zfHxbXSkuY29uY2F0KHYuZXJyb3JZT3B0aW9uc3x8W10pO3YuZXJyb3IyZC51cGRhdGUoayl9di5zY2F0dGVyMmQmJnYuc2NhdHRlcjJkLnVwZGF0ZSh2Lm1hcmtlck9wdGlvbnMpLHYuZmlsbE9yZGVyPXMucmVwZWF0KG51bGwseCksdi5maWxsMmQmJih2LmZpbGxPcHRpb25zPXYuZmlsbE9wdGlvbnMubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIG49cltlXTtpZih0JiZuJiZuWzBdJiZuWzBdLnRyYWNlKXt2YXIgYSxpLG89blswXSxzPW8udHJhY2UsbD1vLnQsYz12LmxpbmVPcHRpb25zW2VdLHU9W107cy5fb3duZmlsbCYmdS5wdXNoKGUpLHMuX25leHR0cmFjZSYmdS5wdXNoKGUrMSksdS5sZW5ndGgmJih2LmZpbGxPcmRlcltlXT11KTt2YXIgaCxmLHA9W10sZD1jJiZjLnBvc2l0aW9uc3x8bC5wb3NpdGlvbnM7aWYoInRvemVyb3kiPT09cy5maWxsKXtmb3IoaD0wO2g8ZC5sZW5ndGgmJmlzTmFOKGRbaCsxXSk7KWgrPTI7Zm9yKGY9ZC5sZW5ndGgtMjtmPmgmJmlzTmFOKGRbZisxXSk7KWYtPTI7MCE9PWRbaCsxXSYmKHA9W2RbaF0sMF0pLHA9cC5jb25jYXQoZC5zbGljZShoLGYrMikpLDAhPT1kW2YrMV0mJihwPXAuY29uY2F0KFtkW2ZdLDBdKSl9ZWxzZSBpZigidG96ZXJveCI9PT1zLmZpbGwpe2ZvcihoPTA7aDxkLmxlbmd0aCYmaXNOYU4oZFtoXSk7KWgrPTI7Zm9yKGY9ZC5sZW5ndGgtMjtmPmgmJmlzTmFOKGRbZl0pOylmLT0yOzAhPT1kW2hdJiYocD1bMCxkW2grMV1dKSxwPXAuY29uY2F0KGQuc2xpY2UoaCxmKzIpKSwwIT09ZFtmXSYmKHA9cC5jb25jYXQoWzAsZFtmKzFdXSkpfWVsc2UgaWYoInRvc2VsZiI9PT1zLmZpbGx8fCJ0b25leHQiPT09cy5maWxsKXtmb3IocD1bXSxhPTAsaT0wO2k8ZC5sZW5ndGg7aSs9MikoaXNOYU4oZFtpXSl8fGlzTmFOKGRbaSsxXSkpJiYoKHA9cC5jb25jYXQoZC5zbGljZShhLGkpKSkucHVzaChkW2FdLGRbYSsxXSksYT1pKzIpO3A9cC5jb25jYXQoZC5zbGljZShhKSksYSYmcC5wdXNoKGRbYV0sZFthKzFdKX1lbHNle3ZhciBnPXMuX25leHR0cmFjZTtpZihnKXt2YXIgbT12LmxpbmVPcHRpb25zW2UrMV07aWYobSl7dmFyIHk9bS5wb3NpdGlvbnM7aWYoInRvbmV4dHkiPT09cy5maWxsKXtmb3IocD1kLnNsaWNlKCksZT1NYXRoLmZsb29yKHkubGVuZ3RoLzIpO2UtLTspe3ZhciB4PXlbMiplXSxiPXlbMiplKzFdO2lzTmFOKHgpfHxpc05hTihiKXx8cC5wdXNoKHgsYil9dC5maWxsPWcuZmlsbGNvbG9yfX19fWlmKHMuX3ByZXZ0cmFjZSYmInRvbmV4dCI9PT1zLl9wcmV2dHJhY2UuZmlsbCl7dmFyIF89di5saW5lT3B0aW9uc1tlLTFdLnBvc2l0aW9ucyx3PXAubGVuZ3RoLzIsaz1bYT13XTtmb3IoaT0wO2k8Xy5sZW5ndGg7aSs9MikoaXNOYU4oX1tpXSl8fGlzTmFOKF9baSsxXSkpJiYoay5wdXNoKGkvMit3KzEpLGE9aSsyKTtwPXAuY29uY2F0KF8pLHQuaG9sZT1rfXJldHVybiB0LmZpbGxtb2RlPXMuZmlsbCx0Lm9wYWNpdHk9cy5vcGFjaXR5LHQucG9zaXRpb25zPXAsdH19KSx2LmZpbGwyZC51cGRhdGUodi5maWxsT3B0aW9ucykpfXZhciBUPWcuZHJhZ21vZGUsTT0ibGFzc28iPT09VHx8InNlbGVjdCI9PT1ULEE9Zy5jbGlja21vZGUuaW5kZXhPZigic2VsZWN0Iik+LTE7Zm9yKHA9MDtwPHg7cCsrKXt2YXIgUz1yW3BdWzBdLEU9Uy50cmFjZSxMPVMudCxDPUwuaW5kZXgsUD1FLl9sZW5ndGgsTz1MLngsej1MLnk7aWYoRS5zZWxlY3RlZHBvaW50c3x8TXx8QSl7aWYoTXx8KE09ITApLEUuc2VsZWN0ZWRwb2ludHMpe3ZhciBJPXYuc2VsZWN0QmF0Y2hbQ109cy5zZWxJbmRpY2VzMnNlbFBvaW50cyhFKSxEPXt9O2ZvcihkPTA7ZDxJLmxlbmd0aDtkKyspRFtJW2RdXT0xO3ZhciBSPVtdO2ZvcihkPTA7ZDxQO2QrKylEW2RdfHxSLnB1c2goZCk7di51bnNlbGVjdEJhdGNoW0NdPVJ9dmFyIEY9TC54cHg9bmV3IEFycmF5KFApLEI9TC55cHg9bmV3IEFycmF5KFApO2ZvcihkPTA7ZDxQO2QrKylGW2RdPW0uYzJwKE9bZF0pLEJbZF09eS5jMnAoeltkXSl9ZWxzZSBMLnhweD1MLnlweD1udWxsfWlmKE0pe2lmKHYuc2VsZWN0MmR8fCh2LnNlbGVjdDJkPW4oZy5fZ2xjYW52YXMuZGF0YSgpWzFdLnJlZ2wpKSx2LnNjYXR0ZXIyZCl7dmFyIE49bmV3IEFycmF5KHgpO2ZvcihwPTA7cDx4O3ArKylOW3BdPXYuc2VsZWN0QmF0Y2hbcF0ubGVuZ3RofHx2LnVuc2VsZWN0QmF0Y2hbcF0ubGVuZ3RoP3YubWFya2VyVW5zZWxlY3RlZE9wdGlvbnNbcF06e307di5zY2F0dGVyMmQudXBkYXRlKE4pfXYuc2VsZWN0MmQmJih2LnNlbGVjdDJkLnVwZGF0ZSh2Lm1hcmtlck9wdGlvbnMpLHYuc2VsZWN0MmQudXBkYXRlKHYubWFya2VyU2VsZWN0ZWRPcHRpb25zKSksdi5nbFRleHQmJnIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0oKHR8fFtdKVswXXx8e30pLnRyYWNlfHx7fTtjLmhhc1RleHQoZSkmJmgodCl9KX1lbHNlIHYuc2NhdHRlcjJkJiZ2LnNjYXR0ZXIyZC51cGRhdGUodi5tYXJrZXJPcHRpb25zKTt2YXIgaj17dmlld3BvcnQ6ZihnLG0seSkscmFuZ2U6WyhtLl9ybHx8bS5yYW5nZSlbMF0sKHkuX3JsfHx5LnJhbmdlKVswXSwobS5fcmx8fG0ucmFuZ2UpWzFdLCh5Ll9ybHx8eS5yYW5nZSlbMV1dfSxWPXMucmVwZWF0KGosdi5jb3VudCk7di5maWxsMmQmJnYuZmlsbDJkLnVwZGF0ZShWKSx2LmxpbmUyZCYmdi5saW5lMmQudXBkYXRlKFYpLHYuZXJyb3IyZCYmdi5lcnJvcjJkLnVwZGF0ZShWLmNvbmNhdChWKSksdi5zY2F0dGVyMmQmJnYuc2NhdHRlcjJkLnVwZGF0ZShWKSx2LnNlbGVjdDJkJiZ2LnNlbGVjdDJkLnVwZGF0ZShWKSx2LmdsVGV4dCYmdi5nbFRleHQuZm9yRWFjaChmdW5jdGlvbih0KXt0LnVwZGF0ZShqKX0pfWVsc2Ugdi5pbml0KCl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3ByZXBhcmVfcmVnbCI6NzMwLCIuLi9zY2F0dGVyL2xpbmtfdHJhY2VzIjoxMTM2LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuL2VkaXRfc3R5bGUiOjExNzYsImdsLXRleHQiOjMxOSwicmVnbC1lcnJvcjJkIjo0OTIsInJlZ2wtbGluZTJkIjo0OTMsInJlZ2wtc2NhdHRlcjJkIjo0OTl9XSwxMTgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWUuX3NjZW5lLGE9e2NvdW50OjAsZGlydHk6ITAsbGluZU9wdGlvbnM6W10sZmlsbE9wdGlvbnM6W10sbWFya2VyT3B0aW9uczpbXSxtYXJrZXJTZWxlY3RlZE9wdGlvbnM6W10sbWFya2VyVW5zZWxlY3RlZE9wdGlvbnM6W10sZXJyb3JYT3B0aW9uczpbXSxlcnJvcllPcHRpb25zOltdLHRleHRPcHRpb25zOltdLHRleHRTZWxlY3RlZE9wdGlvbnM6W10sdGV4dFVuc2VsZWN0ZWRPcHRpb25zOltdLHNlbGVjdEJhdGNoOltdLHVuc2VsZWN0QmF0Y2g6W119LGk9e2ZpbGwyZDohMSxzY2F0dGVyMmQ6ITEsZXJyb3IyZDohMSxsaW5lMmQ6ITEsZ2xUZXh0OiExLHNlbGVjdDJkOiExfTtyZXR1cm4gZS5fc2NlbmV8fCgocj1lLl9zY2VuZT17fSkuaW5pdD1mdW5jdGlvbigpe24uZXh0ZW5kRmxhdChyLGksYSl9LHIuaW5pdCgpLHIudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPW4ucmVwZWF0KHQsci5jb3VudCk7aWYoci5maWxsMmQmJnIuZmlsbDJkLnVwZGF0ZShlKSxyLnNjYXR0ZXIyZCYmci5zY2F0dGVyMmQudXBkYXRlKGUpLHIubGluZTJkJiZyLmxpbmUyZC51cGRhdGUoZSksci5lcnJvcjJkJiZyLmVycm9yMmQudXBkYXRlKGUuY29uY2F0KGUpKSxyLnNlbGVjdDJkJiZyLnNlbGVjdDJkLnVwZGF0ZShlKSxyLmdsVGV4dClmb3IodmFyIGE9MDthPHIuY291bnQ7YSsrKXIuZ2xUZXh0W2FdLnVwZGF0ZSh0KX0sci5kcmF3PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXIuY291bnQsZT1yLmZpbGwyZCxhPXIuZXJyb3IyZCxpPXIubGluZTJkLG89ci5zY2F0dGVyMmQscz1yLmdsVGV4dCxsPXIuc2VsZWN0MmQsYz1yLnNlbGVjdEJhdGNoLHU9ci51bnNlbGVjdEJhdGNoLGg9MDtoPHQ7aCsrKXtpZihlJiZyLmZpbGxPcmRlcltoXSYmZS5kcmF3KHIuZmlsbE9yZGVyW2hdKSxpJiZyLmxpbmVPcHRpb25zW2hdJiZpLmRyYXcoaCksYSYmKHIuZXJyb3JYT3B0aW9uc1toXSYmYS5kcmF3KGgpLHIuZXJyb3JZT3B0aW9uc1toXSYmYS5kcmF3KGgrdCkpLG8mJnIubWFya2VyT3B0aW9uc1toXSlpZih1W2hdLmxlbmd0aCl7dmFyIGY9bi5yZXBlYXQoW10sci5jb3VudCk7ZltoXT11W2hdLG8uZHJhdyhmKX1lbHNlIGNbaF0ubGVuZ3RofHxvLmRyYXcoaCk7c1toXSYmci50ZXh0T3B0aW9uc1toXSYmc1toXS5yZW5kZXIoKX1sJiZsLmRyYXcoYyksci5kaXJ0eT0hMX0sci5kZXN0cm95PWZ1bmN0aW9uKCl7ci5maWxsMmQmJnIuZmlsbDJkLmRlc3Ryb3kmJnIuZmlsbDJkLmRlc3Ryb3koKSxyLnNjYXR0ZXIyZCYmci5zY2F0dGVyMmQuZGVzdHJveSYmci5zY2F0dGVyMmQuZGVzdHJveSgpLHIuZXJyb3IyZCYmci5lcnJvcjJkLmRlc3Ryb3kmJnIuZXJyb3IyZC5kZXN0cm95KCksci5saW5lMmQmJnIubGluZTJkLmRlc3Ryb3kmJnIubGluZTJkLmRlc3Ryb3koKSxyLnNlbGVjdDJkJiZyLnNlbGVjdDJkLmRlc3Ryb3kmJnIuc2VsZWN0MmQuZGVzdHJveSgpLHIuZ2xUZXh0JiZyLmdsVGV4dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZGVzdHJveSYmdC5kZXN0cm95KCl9KSxyLmxpbmVPcHRpb25zPW51bGwsci5maWxsT3B0aW9ucz1udWxsLHIubWFya2VyT3B0aW9ucz1udWxsLHIubWFya2VyU2VsZWN0ZWRPcHRpb25zPW51bGwsci5tYXJrZXJVbnNlbGVjdGVkT3B0aW9ucz1udWxsLHIuZXJyb3JYT3B0aW9ucz1udWxsLHIuZXJyb3JZT3B0aW9ucz1udWxsLHIudGV4dE9wdGlvbnM9bnVsbCxyLnRleHRTZWxlY3RlZE9wdGlvbnM9bnVsbCxyLnRleHRVbnNlbGVjdGVkT3B0aW9ucz1udWxsLHIuc2VsZWN0QmF0Y2g9bnVsbCxyLnVuc2VsZWN0QmF0Y2g9bnVsbCxlLl9zY2VuZT1udWxsfSksci5kaXJ0eXx8bi5leHRlbmRGbGF0KHIsYSkscn19LHsiLi4vLi4vbGliIjo3MTd9XSwxMTgzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxhPXQoIi4vZWRpdF9zdHlsZSIpLnN0eWxlVGV4dFNlbGVjdGlvbjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmNkLGk9W10sbz1yWzBdLnRyYWNlLHM9clswXS50LGw9by5fbGVuZ3RoLGM9cy54LHU9cy55LGg9cy5fc2NlbmUsZj1zLmluZGV4O2lmKCFoKXJldHVybiBpO3ZhciBwPW4uaGFzVGV4dChvKSxkPW4uaGFzTWFya2VycyhvKSxnPSFkJiYhcDtpZighMCE9PW8udmlzaWJsZXx8ZylyZXR1cm4gaTt2YXIgdj1bXSxtPVtdO2lmKCExIT09ZSYmIWUuZGVnZW5lcmF0ZSlmb3IodmFyIHk9MDt5PGw7eSsrKWUuY29udGFpbnMoW3MueHB4W3ldLHMueXB4W3ldXSwhMSx5LHQpPyh2LnB1c2goeSksaS5wdXNoKHtwb2ludE51bWJlcjp5LHg6Y1t5XSx5OnVbeV19KSk6bS5wdXNoKHkpO2lmKGQpe3ZhciB4PWguc2NhdHRlcjJkO2lmKHYubGVuZ3RofHxtLmxlbmd0aCl7aWYoIWguc2VsZWN0QmF0Y2hbZl0ubGVuZ3RoJiYhaC51bnNlbGVjdEJhdGNoW2ZdLmxlbmd0aCl7dmFyIGI9bmV3IEFycmF5KGguY291bnQpO2JbZl09aC5tYXJrZXJVbnNlbGVjdGVkT3B0aW9uc1tmXSx4LnVwZGF0ZS5hcHBseSh4LGIpfX1lbHNle3ZhciBfPW5ldyBBcnJheShoLmNvdW50KTtfW2ZdPWgubWFya2VyT3B0aW9uc1tmXSx4LnVwZGF0ZS5hcHBseSh4LF8pfX1yZXR1cm4gaC5zZWxlY3RCYXRjaFtmXT12LGgudW5zZWxlY3RCYXRjaFtmXT1tLHAmJmEociksaX19LHsiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiLi9lZGl0X3N0eWxlIjoxMTc2fV0sMTE4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vc2NhdHRlcmdlby9hdHRyaWJ1dGVzIiksbz10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL21hcGJveC9sYXlvdXRfYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSx1PXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGg9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGY9aS5saW5lLHA9aS5tYXJrZXI7ZS5leHBvcnRzPWgoe2xvbjppLmxvbixsYXQ6aS5sYXQsbW9kZTp1KHt9LG8ubW9kZSx7ZGZsdDoibWFya2VycyJ9KSx0ZXh0OnUoe30sby50ZXh0LHt9KSx0ZXh0dGVtcGxhdGU6YSh7ZWRpdFR5cGU6InBsb3QifSx7a2V5czpbImxhdCIsImxvbiIsInRleHQiXX0pLGhvdmVydGV4dDp1KHt9LG8uaG92ZXJ0ZXh0LHt9KSxsaW5lOntjb2xvcjpmLmNvbG9yLHdpZHRoOmYud2lkdGh9LGNvbm5lY3RnYXBzOm8uY29ubmVjdGdhcHMsbWFya2VyOnUoe3N5bWJvbDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiJjaXJjbGUiLGFycmF5T2s6ITB9LG9wYWNpdHk6cC5vcGFjaXR5LHNpemU6cC5zaXplLHNpemVyZWY6cC5zaXplcmVmLHNpemVtaW46cC5zaXplbWluLHNpemVtb2RlOnAuc2l6ZW1vZGV9LGMoIm1hcmtlciIpKSxmaWxsOmkuZmlsbCxmaWxsY29sb3I6by5maWxsY29sb3IsdGV4dGZvbnQ6cy5sYXllcnMuc3ltYm9sLnRleHRmb250LHRleHRwb3NpdGlvbjpzLmxheWVycy5zeW1ib2wudGV4dHBvc2l0aW9uLGJlbG93Ont2YWxUeXBlOiJzdHJpbmcifSxzZWxlY3RlZDp7bWFya2VyOm8uc2VsZWN0ZWQubWFya2VyfSx1bnNlbGVjdGVkOnttYXJrZXI6by51bnNlbGVjdGVkLm1hcmtlcn0saG92ZXJpbmZvOnUoe30sbC5ob3ZlcmluZm8se2ZsYWdzOlsibG9uIiwibGF0IiwidGV4dCIsIm5hbWUiXX0pLGhvdmVydGVtcGxhdGU6bigpfSwiY2FsYyIsIm5lc3RlZCIpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL21hcGJveC9sYXlvdXRfYXR0cmlidXRlcyI6ODIyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMCwiLi4vc2NhdHRlcmdlby9hdHRyaWJ1dGVzIjoxMTYxfV0sMTE4NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLG89dCgiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksYz10KCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyIpLHU9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGg9dCgiLi4vLi4vcGxvdHMvbWFwYm94L2NvbnZlcnRfdGV4dF9vcHRzIiksZj10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiKS5hcHBlbmRBcnJheVBvaW50VmFsdWUscD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKS5ORVdMSU5FUyxkPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLkJSX1RBR19BTEw7ZnVuY3Rpb24gZygpe3JldHVybntnZW9qc29uOm8ubWFrZUJsYW5rKCksbGF5b3V0Ont2aXNpYmlsaXR5OiJub25lIn0scGFpbnQ6e319fWZ1bmN0aW9uIHYodCl7cmV0dXJuIGEuaXNBcnJheU9yVHlwZWRBcnJheSh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdH06dD9mdW5jdGlvbigpe3JldHVybiB0fTptfWZ1bmN0aW9uIG0oKXtyZXR1cm4iIn1mdW5jdGlvbiB5KHQpe3JldHVybiB0WzBdPT09aX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixpPWVbMF0udHJhY2UseD0hMD09PWkudmlzaWJsZSYmMCE9PWkuX2xlbmd0aCxiPSJub25lIiE9PWkuZmlsbCxfPXUuaGFzTGluZXMoaSksdz11Lmhhc01hcmtlcnMoaSksaz11Lmhhc1RleHQoaSksVD13JiYiY2lyY2xlIj09PWkubWFya2VyLnN5bWJvbCxNPXcmJiJjaXJjbGUiIT09aS5tYXJrZXIuc3ltYm9sLEE9ZygpLFM9ZygpLEU9ZygpLEw9ZygpLEM9e2ZpbGw6QSxsaW5lOlMsY2lyY2xlOkUsc3ltYm9sOkx9O2lmKCF4KXJldHVybiBDO2lmKChifHxfKSYmKHI9by5jYWxjVHJhY2VUb0xpbmVDb29yZHMoZSkpLGImJihBLmdlb2pzb249by5tYWtlUG9seWdvbihyKSxBLmxheW91dC52aXNpYmlsaXR5PSJ2aXNpYmxlIixhLmV4dGVuZEZsYXQoQS5wYWludCx7ImZpbGwtY29sb3IiOmkuZmlsbGNvbG9yfSkpLF8mJihTLmdlb2pzb249by5tYWtlTGluZShyKSxTLmxheW91dC52aXNpYmlsaXR5PSJ2aXNpYmxlIixhLmV4dGVuZEZsYXQoUy5wYWludCx7ImxpbmUtd2lkdGgiOmkubGluZS53aWR0aCwibGluZS1jb2xvciI6aS5saW5lLmNvbG9yLCJsaW5lLW9wYWNpdHkiOmkub3BhY2l0eX0pKSxUKXt2YXIgUD1mdW5jdGlvbih0KXt2YXIgZSxyLGksbyx1PXRbMF0udHJhY2UsaD11Lm1hcmtlcixmPXUuc2VsZWN0ZWRwb2ludHMscD1hLmlzQXJyYXlPclR5cGVkQXJyYXkoaC5jb2xvciksZD1hLmlzQXJyYXlPclR5cGVkQXJyYXkoaC5zaXplKSxnPWEuaXNBcnJheU9yVHlwZWRBcnJheShoLm9wYWNpdHkpO2Z1bmN0aW9uIHYodCl7cmV0dXJuIHUub3BhY2l0eSp0fXAmJihyPXMuaGFzQ29sb3JzY2FsZSh1LCJtYXJrZXIiKT9zLm1ha2VDb2xvclNjYWxlRnVuY0Zyb21UcmFjZShoKTphLmlkZW50aXR5KTtkJiYoaT1jKHUpKTtnJiYobz1mdW5jdGlvbih0KXt2YXIgZT1uKHQpPythLmNvbnN0cmFpbih0LDAsMSk6MDtyZXR1cm4gdihlKX0pO3ZhciBtLHg9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGI9dFtlXSxfPWIubG9ubGF0O2lmKCF5KF8pKXt2YXIgdz17fTtyJiYody5tY2M9Yi5tY2M9cihiLm1jKSksaSYmKHcubXJjPWIubXJjPWkoYi5tcykpLG8mJih3Lm1vPW8oYi5tbykpLGYmJih3LnNlbGVjdGVkPWIuc2VsZWN0ZWR8fDApLHgucHVzaCh7dHlwZToiRmVhdHVyZSIsZ2VvbWV0cnk6e3R5cGU6IlBvaW50Iixjb29yZGluYXRlczpffSxwcm9wZXJ0aWVzOnd9KX19aWYoZilmb3IobT1sLm1ha2VTZWxlY3RlZFBvaW50U3R5bGVGbnModSksZT0wO2U8eC5sZW5ndGg7ZSsrKXt2YXIgaz14W2VdLnByb3BlcnRpZXM7bS5zZWxlY3RlZE9wYWNpdHlGbiYmKGsubW89dihtLnNlbGVjdGVkT3BhY2l0eUZuKGspKSksbS5zZWxlY3RlZENvbG9yRm4mJihrLm1jYz1tLnNlbGVjdGVkQ29sb3JGbihrKSksbS5zZWxlY3RlZFNpemVGbiYmKGsubXJjPW0uc2VsZWN0ZWRTaXplRm4oaykpfXJldHVybntnZW9qc29uOnt0eXBlOiJGZWF0dXJlQ29sbGVjdGlvbiIsZmVhdHVyZXM6eH0sbWNjOnB8fG0mJm0uc2VsZWN0ZWRDb2xvckZuP3t0eXBlOiJpZGVudGl0eSIscHJvcGVydHk6Im1jYyJ9OmguY29sb3IsbXJjOmR8fG0mJm0uc2VsZWN0ZWRTaXplRm4/e3R5cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToibXJjIn06KFQ9aC5zaXplLFQvMiksbW86Z3x8bSYmbS5zZWxlY3RlZE9wYWNpdHlGbj97dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJtbyJ9OnYoaC5vcGFjaXR5KX07dmFyIFR9KGUpO0UuZ2VvanNvbj1QLmdlb2pzb24sRS5sYXlvdXQudmlzaWJpbGl0eT0idmlzaWJsZSIsYS5leHRlbmRGbGF0KEUucGFpbnQseyJjaXJjbGUtY29sb3IiOlAubWNjLCJjaXJjbGUtcmFkaXVzIjpQLm1yYywiY2lyY2xlLW9wYWNpdHkiOlAubW99KX1pZigoTXx8aykmJihMLmdlb2pzb249ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS5fZnVsbExheW91dCxuPXRbMF0udHJhY2UsaT0obi5tYXJrZXJ8fHt9KS5zeW1ib2wsbz0iY2lyY2xlIiE9PWk/dihpKTptLHM9dS5oYXNUZXh0KG4pP3Yobi50ZXh0KTptLGw9W10sYz0wO2M8dC5sZW5ndGg7YysrKXt2YXIgaD10W2NdO2lmKCF5KGgubG9ubGF0KSl7dmFyIGcseD1uLnRleHR0ZW1wbGF0ZTtpZih4KXt2YXIgYj1BcnJheS5pc0FycmF5KHgpP3hbY118fCIiOngsXz1uLl9tb2R1bGUuZm9ybWF0TGFiZWxzKGgsbixyKSx3PXt9O2YodyxuLGguaSk7dmFyIGs9bi5fbWV0YXx8e307Zz1hLnRleHR0ZW1wbGF0ZVN0cmluZyhiLF8sci5fZDNsb2NhbGUsdyxoLGspfWVsc2UgZz1zKGgudHgpO2cmJihnPWcucmVwbGFjZShwLCIiKS5yZXBsYWNlKGQsIlxuIikpLGwucHVzaCh7dHlwZToiRmVhdHVyZSIsZ2VvbWV0cnk6e3R5cGU6IlBvaW50Iixjb29yZGluYXRlczpoLmxvbmxhdH0scHJvcGVydGllczp7c3ltYm9sOm8oaC5teCksdGV4dDpnfX0pfX1yZXR1cm57dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOmx9fShlLHQpLGEuZXh0ZW5kRmxhdChMLmxheW91dCx7dmlzaWJpbGl0eToidmlzaWJsZSIsImljb24taW1hZ2UiOiJ7c3ltYm9sfS0xNSIsInRleHQtZmllbGQiOiJ7dGV4dH0ifSksTSYmKGEuZXh0ZW5kRmxhdChMLmxheW91dCx7Imljb24tc2l6ZSI6aS5tYXJrZXIuc2l6ZS8xMH0pLGEuZXh0ZW5kRmxhdChMLnBhaW50LHsiaWNvbi1vcGFjaXR5IjppLm9wYWNpdHkqaS5tYXJrZXIub3BhY2l0eSwiaWNvbi1jb2xvciI6aS5tYXJrZXIuY29sb3J9KSksaykpe3ZhciBPPShpLm1hcmtlcnx8e30pLnNpemUsej1oKGkudGV4dHBvc2l0aW9uLE8pO2EuZXh0ZW5kRmxhdChMLmxheW91dCx7InRleHQtc2l6ZSI6aS50ZXh0Zm9udC5zaXplLCJ0ZXh0LWFuY2hvciI6ei5hbmNob3IsInRleHQtb2Zmc2V0Ijp6Lm9mZnNldH0pLGEuZXh0ZW5kRmxhdChMLnBhaW50LHsidGV4dC1jb2xvciI6aS50ZXh0Zm9udC5jb2xvciwidGV4dC1vcGFjaXR5IjppLm9wYWNpdHl9KX1yZXR1cm4gQ319LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiOjYyNywiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMiOjcxMiwiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3RzL21hcGJveC9jb252ZXJ0X3RleHRfb3B0cyI6ODE5LCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyI6MTEzNywiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDExODY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksaT10KCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyIpLG89dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIikscz10KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIiksYz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsdSl7ZnVuY3Rpb24gaChyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsYyxyLGEpfWlmKGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKCJsb24iKXx8W10sYT1yKCJsYXQiKXx8W10saT1NYXRoLm1pbihuLmxlbmd0aCxhLmxlbmd0aCk7cmV0dXJuIGUuX2xlbmd0aD1pLGl9KDAsZSxoKSl7aWYoaCgidGV4dCIpLGgoInRleHR0ZW1wbGF0ZSIpLGgoImhvdmVydGV4dCIpLGgoImhvdmVydGVtcGxhdGUiKSxoKCJtb2RlIiksaCgiYmVsb3ciKSxhLmhhc0xpbmVzKGUpJiYobyh0LGUscix1LGgse25vRGFzaDohMH0pLGgoImNvbm5lY3RnYXBzIikpLGEuaGFzTWFya2VycyhlKSl7aSh0LGUscix1LGgse25vTGluZTohMH0pO3ZhciBmPWUubWFya2VyOyJjaXJjbGUiIT09Zi5zeW1ib2wmJihuLmlzQXJyYXlPclR5cGVkQXJyYXkoZi5zaXplKSYmKGYuc2l6ZT1mLnNpemVbMF0pLG4uaXNBcnJheU9yVHlwZWRBcnJheShmLmNvbG9yKSYmKGYuY29sb3I9Zi5jb2xvclswXSkpfWEuaGFzVGV4dChlKSYmcyh0LGUsdSxoLHtub1NlbGVjdDohMH0pLGgoImZpbGwiKSwibm9uZSIhPT1lLmZpbGwmJmwodCxlLHIsaCksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUsaCl9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyI6MTEyOCwiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjoxMTMzLCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyI6MTEzOSwiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjoxMTQ1LCIuL2F0dHJpYnV0ZXMiOjExODR9XSwxMTg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0Lmxvbj1lLmxvbix0LmxhdD1lLmxhdCx0fX0se31dLDExODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXt9LGk9cltlLnN1YnBsb3RdLl9zdWJwbG90Lm1vY2tBeGlzLG89dC5sb25sYXQ7cmV0dXJuIGEubG9uTGFiZWw9bi50aWNrVGV4dChpLGkuYzJsKG9bMF0pLCEwKS50ZXh0LGEubGF0TGFiZWw9bi50aWNrVGV4dChpLGkuYzJsKG9bMV0pLCEwKS50ZXh0LGF9fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjV9XSwxMTg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vc2NhdHRlci9nZXRfdHJhY2VfY29sb3IiKSxvPWEuZmlsbFRleHQscz10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGw9dC5jZCxjPWxbMF0udHJhY2UsdT10LnhhLGg9dC55YSxmPXQuc3VicGxvdCxwPTM2MCooZT49MD9NYXRoLmZsb29yKChlKzE4MCkvMzYwKTpNYXRoLmNlaWwoKGUtMTgwKS8zNjApKSxkPWUtcDtpZihuLmdldENsb3Nlc3QobCxmdW5jdGlvbih0KXt2YXIgZT10LmxvbmxhdDtpZihlWzBdPT09cylyZXR1cm4gMS8wO3ZhciBuPWEubW9kSGFsZihlWzBdLDM2MCksaT1lWzFdLG89Zi5wcm9qZWN0KFtuLGldKSxsPW8ueC11LmMycChbZCxpXSksYz1vLnktaC5jMnAoW24scl0pLHA9TWF0aC5tYXgoMyx0Lm1yY3x8MCk7cmV0dXJuIE1hdGgubWF4KE1hdGguc3FydChsKmwrYypjKS1wLDEtMy9wKX0sdCksITEhPT10LmluZGV4KXt2YXIgZz1sW3QuaW5kZXhdLHY9Zy5sb25sYXQsbT1bYS5tb2RIYWxmKHZbMF0sMzYwKStwLHZbMV1dLHk9dS5jMnAobSkseD1oLmMycChtKSxiPWcubXJjfHwxO3QueDA9eS1iLHQueDE9eStiLHQueTA9eC1iLHQueTE9eCtiO3ZhciBfPXt9O19bYy5zdWJwbG90XT17X3N1YnBsb3Q6Zn07dmFyIHc9Yy5fbW9kdWxlLmZvcm1hdExhYmVscyhnLGMsXyk7cmV0dXJuIHQubG9uTGFiZWw9dy5sb25MYWJlbCx0LmxhdExhYmVsPXcubGF0TGFiZWwsdC5jb2xvcj1pKGMsZyksdC5leHRyYVRleHQ9ZnVuY3Rpb24odCxlLHIpe2lmKHQuaG92ZXJ0ZW1wbGF0ZSlyZXR1cm47dmFyIG49KGUuaGl8fHQuaG92ZXJpbmZvKS5zcGxpdCgiKyIpLGE9LTEhPT1uLmluZGV4T2YoImFsbCIpLGk9LTEhPT1uLmluZGV4T2YoImxvbiIpLHM9LTEhPT1uLmluZGV4T2YoImxhdCIpLGw9ZS5sb25sYXQsYz1bXTtmdW5jdGlvbiB1KHQpe3JldHVybiB0KyJceGIwIn1hfHxpJiZzP2MucHVzaCgiKCIrdShsWzBdKSsiLCAiK3UobFsxXSkrIikiKTppP2MucHVzaChyLmxvbit1KGxbMF0pKTpzJiZjLnB1c2goci5sYXQrdShsWzFdKSk7KGF8fC0xIT09bi5pbmRleE9mKCJ0ZXh0IikpJiZvKGUsdCxjKTtyZXR1cm4gYy5qb2luKCI8YnI+Iil9KGMsZyxsWzBdLnQubGFiZWxzKSx0LmhvdmVydGVtcGxhdGU9Yy5ob3ZlcnRlbXBsYXRlLFt0XX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9nZXRfdHJhY2VfY29sb3IiOjExMzB9XSwxMTkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiKSxmb3JtYXRMYWJlbHM6dCgiLi9mb3JtYXRfbGFiZWxzIiksY2FsYzp0KCIuLi9zY2F0dGVyZ2VvL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKSxldmVudERhdGE6dCgiLi9ldmVudF9kYXRhIiksc2VsZWN0UG9pbnRzOnQoIi4vc2VsZWN0Iiksc3R5bGVPblNlbGVjdDpmdW5jdGlvbih0LGUpe2UmJmVbMF0udHJhY2UuX2dsVHJhY2UudXBkYXRlKGUpfSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcm1hcGJveCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvbWFwYm94IiksY2F0ZWdvcmllczpbIm1hcGJveCIsImdsIiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9tYXBib3giOjgyMCwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4uL3NjYXR0ZXJnZW8vY2FsYyI6MTE2MiwiLi9hdHRyaWJ1dGVzIjoxMTg0LCIuL2RlZmF1bHRzIjoxMTg2LCIuL2V2ZW50X2RhdGEiOjExODcsIi4vZm9ybWF0X2xhYmVscyI6MTE4OCwiLi9ob3ZlciI6MTE4OSwiLi9wbG90IjoxMTkxLCIuL3NlbGVjdCI6MTE5Mn1dLDExOTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb252ZXJ0IiksYT10KCIuLi8uLi9wbG90cy9tYXBib3gvY29uc3RhbnRzIikudHJhY2VMYXllclByZWZpeCxpPVsiZmlsbCIsImxpbmUiLCJjaXJjbGUiLCJzeW1ib2wiXTtmdW5jdGlvbiBvKHQsZSl7dGhpcy50eXBlPSJzY2F0dGVybWFwYm94Iix0aGlzLnN1YnBsb3Q9dCx0aGlzLnVpZD1lLHRoaXMuc291cmNlSWRzPXtmaWxsOiJzb3VyY2UtIitlKyItZmlsbCIsbGluZToic291cmNlLSIrZSsiLWxpbmUiLGNpcmNsZToic291cmNlLSIrZSsiLWNpcmNsZSIsc3ltYm9sOiJzb3VyY2UtIitlKyItc3ltYm9sIn0sdGhpcy5sYXllcklkcz17ZmlsbDphK2UrIi1maWxsIixsaW5lOmErZSsiLWxpbmUiLGNpcmNsZTphK2UrIi1jaXJjbGUiLHN5bWJvbDphK2UrIi1zeW1ib2wifSx0aGlzLmJlbG93PW51bGx9dmFyIHM9by5wcm90b3R5cGU7cy5hZGRTb3VyY2U9ZnVuY3Rpb24odCxlKXt0aGlzLnN1YnBsb3QubWFwLmFkZFNvdXJjZSh0aGlzLnNvdXJjZUlkc1t0XSx7dHlwZToiZ2VvanNvbiIsZGF0YTplLmdlb2pzb259KX0scy5zZXRTb3VyY2VEYXRhPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdWJwbG90Lm1hcC5nZXRTb3VyY2UodGhpcy5zb3VyY2VJZHNbdF0pLnNldERhdGEoZS5nZW9qc29uKX0scy5hZGRMYXllcj1mdW5jdGlvbih0LGUscil7dGhpcy5zdWJwbG90LmFkZExheWVyKHt0eXBlOnQsaWQ6dGhpcy5sYXllcklkc1t0XSxzb3VyY2U6dGhpcy5zb3VyY2VJZHNbdF0sbGF5b3V0OmUubGF5b3V0LHBhaW50OmUucGFpbnR9LHIpfSxzLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZSxyLGEsbz10aGlzLnN1YnBsb3Qscz1vLm1hcCxsPW4oby5nZCx0KSxjPW8uYmVsb3dMb29rdXBbInRyYWNlLSIrdGhpcy51aWRdO2lmKGMhPT10aGlzLmJlbG93KXtmb3IoZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKXI9aVtlXSxzLnJlbW92ZUxheWVyKHRoaXMubGF5ZXJJZHNbcl0pO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspYT1sW3I9aVtlXV0sdGhpcy5hZGRMYXllcihyLGEsYyk7dGhpcy5iZWxvdz1jfWZvcihlPTA7ZTxpLmxlbmd0aDtlKyspYT1sW3I9aVtlXV0sby5zZXRPcHRpb25zKHRoaXMubGF5ZXJJZHNbcl0sInNldExheW91dFByb3BlcnR5IixhLmxheW91dCksInZpc2libGUiPT09YS5sYXlvdXQudmlzaWJpbGl0eSYmKHRoaXMuc2V0U291cmNlRGF0YShyLGEpLG8uc2V0T3B0aW9ucyh0aGlzLmxheWVySWRzW3JdLCJzZXRQYWludFByb3BlcnR5IixhLnBhaW50KSk7dFswXS50cmFjZS5fZ2xUcmFjZT10aGlzfSxzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5zdWJwbG90Lm1hcCxlPWkubGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciByPWlbZV07dC5yZW1vdmVMYXllcih0aGlzLmxheWVySWRzW3JdKSx0LnJlbW92ZVNvdXJjZSh0aGlzLnNvdXJjZUlkc1tyXSl9fSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZVswXS50cmFjZSxhPW5ldyBvKHQsci51aWQpLHM9bih0LmdkLGUpLGw9YS5iZWxvdz10LmJlbG93TG9va3VwWyJ0cmFjZS0iK3IudWlkXSxjPTA7YzxpLmxlbmd0aDtjKyspe3ZhciB1PWlbY10saD1zW3VdO2EuYWRkU291cmNlKHUsaCksYS5hZGRMYXllcih1LGgsbCl9cmV0dXJuIGVbMF0udHJhY2UuX2dsVHJhY2U9YSxhfX0seyIuLi8uLi9wbG90cy9tYXBib3gvY29uc3RhbnRzIjo4MTgsIi4vY29udmVydCI6MTE4NX1dLDExOTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksaT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG89dC5jZCxzPXQueGF4aXMsbD10LnlheGlzLGM9W10sdT1vWzBdLnRyYWNlO2lmKCFhLmhhc01hcmtlcnModSkpcmV0dXJuW107aWYoITE9PT1lKWZvcihyPTA7cjxvLmxlbmd0aDtyKyspb1tyXS5zZWxlY3RlZD0wO2Vsc2UgZm9yKHI9MDtyPG8ubGVuZ3RoO3IrKyl7dmFyIGg9b1tyXSxmPWgubG9ubGF0O2lmKGZbMF0hPT1pKXt2YXIgcD1bbi5tb2RIYWxmKGZbMF0sMzYwKSxmWzFdXSxkPVtzLmMycChwKSxsLmMycChwKV07ZS5jb250YWlucyhkLG51bGwscix0KT8oYy5wdXNoKHtwb2ludE51bWJlcjpyLGxvbjpmWzBdLGxhdDpmWzFdfSksaC5zZWxlY3RlZD0xKTpoLnNlbGVjdGVkPTB9fXJldHVybiBjfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0fV0sMTE5MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsbz10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxsPW8ubGluZTtlLmV4cG9ydHM9e21vZGU6by5tb2RlLHI6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sdGhldGE6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0scjA6e3ZhbFR5cGU6ImFueSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sZHI6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxjIn0sdGhldGEwOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LGR0aGV0YTp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LHRoZXRhdW5pdDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicmFkaWFucyIsImRlZ3JlZXMiLCJncmFkaWFucyJdLGRmbHQ6ImRlZ3JlZXMiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sdGV4dDpvLnRleHQsdGV4dHRlbXBsYXRlOmEoe2VkaXRUeXBlOiJwbG90In0se2tleXM6WyJyIiwidGhldGEiLCJ0ZXh0Il19KSxob3ZlcnRleHQ6by5ob3ZlcnRleHQsbGluZTp7Y29sb3I6bC5jb2xvcix3aWR0aDpsLndpZHRoLGRhc2g6bC5kYXNoLHNoYXBlOmkoe30sbC5zaGFwZSx7dmFsdWVzOlsibGluZWFyIiwic3BsaW5lIl19KSxzbW9vdGhpbmc6bC5zbW9vdGhpbmcsZWRpdFR5cGU6ImNhbGMifSxjb25uZWN0Z2FwczpvLmNvbm5lY3RnYXBzLG1hcmtlcjpvLm1hcmtlcixjbGlwb25heGlzOmkoe30sby5jbGlwb25heGlzLHtkZmx0OiExfSksdGV4dHBvc2l0aW9uOm8udGV4dHBvc2l0aW9uLHRleHRmb250Om8udGV4dGZvbnQsZmlsbDppKHt9LG8uZmlsbCx7dmFsdWVzOlsibm9uZSIsInRvc2VsZiIsInRvbmV4dCJdLGRmbHQ6Im5vbmUifSksZmlsbGNvbG9yOm8uZmlsbGNvbG9yLGhvdmVyaW5mbzppKHt9LHMuaG92ZXJpbmZvLHtmbGFnczpbInIiLCJ0aGV0YSIsInRleHQiLCJuYW1lIl19KSxob3Zlcm9uOm8uaG92ZXJvbixob3ZlcnRlbXBsYXRlOm4oKSxzZWxlY3RlZDpvLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6by51bnNlbGVjdGVkfX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSwxMTk0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxvPXQoIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIikscz10KCIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSIpLGw9dCgiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiIpLGM9dCgiLi4vc2NhdHRlci9jYWxjIikuY2FsY01hcmtlclNpemU7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuX2Z1bGxMYXlvdXQsdT1lLnN1YnBsb3QsaD1yW3VdLnJhZGlhbGF4aXMsZj1yW3VdLmFuZ3VsYXJheGlzLHA9aC5tYWtlQ2FsY2RhdGEoZSwiciIpLGQ9Zi5tYWtlQ2FsY2RhdGEoZSwidGhldGEiKSxnPWUuX2xlbmd0aCx2PW5ldyBBcnJheShnKSxtPTA7bTxnO20rKyl7dmFyIHk9cFttXSx4PWRbbV0sYj12W21dPXt9O24oeSkmJm4oeCk/KGIucj15LGIudGhldGE9eCk6Yi5yPWF9dmFyIF89YyhlLGcpO3JldHVybiBlLl9leHRyZW1lcy54PWkuZmluZEV4dHJlbWVzKGgscCx7cHBhZDpffSksbyh0LGUpLHModixlKSxsKHYsZSksdn19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSI6MTExOSwiLi4vc2NhdHRlci9jYWxjIjoxMTIxLCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyLCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyI6MTEyMywiZmFzdC1pc251bWVyaWMiOjIyOH1dLDExOTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksaT10KCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyIpLG89dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIikscz10KCIuLi9zY2F0dGVyL2xpbmVfc2hhcGVfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyIpLGM9dCgiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiKSx1PXQoIi4uL3NjYXR0ZXIvY29uc3RhbnRzIikuUFRTX0xJTkVTT05MWSxoPXQoIi4vYXR0cmlidXRlcyIpO2Z1bmN0aW9uIGYodCxlLHIsbil7dmFyIGEsaT1uKCJyIiksbz1uKCJ0aGV0YSIpO2lmKGkpbz9hPU1hdGgubWluKGkubGVuZ3RoLG8ubGVuZ3RoKTooYT1pLmxlbmd0aCxuKCJ0aGV0YTAiKSxuKCJkdGhldGEiKSk7ZWxzZXtpZighbylyZXR1cm4gMDthPWUudGhldGEubGVuZ3RoLG4oInIwIiksbigiZHIiKX1yZXR1cm4gZS5fbGVuZ3RoPWEsYX1lLmV4cG9ydHM9e2hhbmRsZVJUaGV0YURlZmF1bHRzOmYsc3VwcGx5RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIscCl7ZnVuY3Rpb24gZChyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaCxyLGEpfXZhciBnPWYoMCxlLDAsZCk7aWYoZyl7ZCgidGhldGF1bml0IiksZCgibW9kZSIsZzx1PyJsaW5lcyttYXJrZXJzIjoibGluZXMiKSxkKCJ0ZXh0IiksZCgiaG92ZXJ0ZXh0IiksImZpbGxzIiE9PWUuaG92ZXJvbiYmZCgiaG92ZXJ0ZW1wbGF0ZSIpLGEuaGFzTGluZXMoZSkmJihvKHQsZSxyLHAsZCkscyh0LGUsZCksZCgiY29ubmVjdGdhcHMiKSksYS5oYXNNYXJrZXJzKGUpJiZpKHQsZSxyLHAsZCx7Z3JhZGllbnQ6ITB9KSxhLmhhc1RleHQoZSkmJihkKCJ0ZXh0dGVtcGxhdGUiKSxsKHQsZSxwLGQpKTt2YXIgdj1bXTsoYS5oYXNNYXJrZXJzKGUpfHxhLmhhc1RleHQoZSkpJiYoZCgiY2xpcG9uYXhpcyIpLGQoIm1hcmtlci5tYXhkaXNwbGF5ZWQiKSx2LnB1c2goInBvaW50cyIpKSxkKCJmaWxsIiksIm5vbmUiIT09ZS5maWxsJiYoYyh0LGUscixkKSxhLmhhc0xpbmVzKGUpfHxzKHQsZSxkKSksInRvbmV4dCIhPT1lLmZpbGwmJiJ0b3NlbGYiIT09ZS5maWxsfHx2LnB1c2goImZpbGxzIiksZCgiaG92ZXJvbiIsdi5qb2luKCIrIil8fCJwb2ludHMiKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxkKX1lbHNlIGUudmlzaWJsZT0hMX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0dGVyL2NvbnN0YW50cyI6MTEyNCwiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjExMjgsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6MTEzMywiLi4vc2NhdHRlci9saW5lX3NoYXBlX2RlZmF1bHRzIjoxMTM1LCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyI6MTEzOSwiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjoxMTQ1LCIuL2F0dHJpYnV0ZXMiOjExOTN9XSwxMTk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBpLG8scz17fSxsPXJbZS5zdWJwbG90XS5fc3VicGxvdDtsPyhpPWwucmFkaWFsQXhpcyxvPWwuYW5ndWxhckF4aXMpOihpPShsPXJbZS5zdWJwbG90XSkucmFkaWFsYXhpcyxvPWwuYW5ndWxhcmF4aXMpO3ZhciBjPWkuYzJsKHQucik7cy5yTGFiZWw9YS50aWNrVGV4dChpLGMsITApLnRleHQ7dmFyIHU9ImRlZ3JlZXMiPT09by50aGV0YXVuaXQ/bi5yYWQyZGVnKHQudGhldGEpOnQudGhldGE7cmV0dXJuIHMudGhldGFMYWJlbD1hLnRpY2tUZXh0KG8sdSwhMCkudGV4dCxzfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDExOTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9ob3ZlciIpO2Z1bmN0aW9uIGEodCxlLHIsbil7dmFyIGE9ci5yYWRpYWxBeGlzLGk9ci5hbmd1bGFyQXhpczthLl9ob3ZlcnRpdGxlPSJyIixpLl9ob3ZlcnRpdGxlPSJcdTAzYjgiO3ZhciBvPXt9O29bZS5zdWJwbG90XT17X3N1YnBsb3Q6cn07dmFyIHM9ZS5fbW9kdWxlLmZvcm1hdExhYmVscyh0LGUsbyk7bi5yTGFiZWw9cy5yTGFiZWwsbi50aGV0YUxhYmVsPXMudGhldGFMYWJlbDt2YXIgbD10LmhpfHxlLmhvdmVyaW5mbyxjPVtdO2Z1bmN0aW9uIHUodCxlKXtjLnB1c2godC5faG92ZXJ0aXRsZSsiOiAiK2UpfWlmKCFlLmhvdmVydGVtcGxhdGUpe3ZhciBoPWwuc3BsaXQoIisiKTstMSE9PWguaW5kZXhPZigiYWxsIikmJihoPVsiciIsInRoZXRhIiwidGV4dCJdKSwtMSE9PWguaW5kZXhPZigiciIpJiZ1KGEsbi5yTGFiZWwpLC0xIT09aC5pbmRleE9mKCJ0aGV0YSIpJiZ1KGksbi50aGV0YUxhYmVsKSwtMSE9PWguaW5kZXhPZigidGV4dCIpJiZuLnRleHQmJihjLnB1c2gobi50ZXh0KSxkZWxldGUgbi50ZXh0KSxuLmV4dHJhVGV4dD1jLmpvaW4oIjxicj4iKX19ZS5leHBvcnRzPXtob3ZlclBvaW50czpmdW5jdGlvbih0LGUscixpKXt2YXIgbz1uKHQsZSxyLGkpO2lmKG8mJiExIT09b1swXS5pbmRleCl7dmFyIHM9b1swXTtpZih2b2lkIDA9PT1zLmluZGV4KXJldHVybiBvO3ZhciBsPXQuc3VicGxvdCxjPXMuY2Rbcy5pbmRleF0sdT1zLnRyYWNlO2lmKGwuaXNQdEluc2lkZShjKSlyZXR1cm4gcy54TGFiZWxWYWw9dm9pZCAwLHMueUxhYmVsVmFsPXZvaWQgMCxhKGMsdSxsLHMpLHMuaG92ZXJ0ZW1wbGF0ZT11LmhvdmVydGVtcGxhdGUsb319LG1ha2VIb3ZlclBvaW50VGV4dDphfX0seyIuLi9zY2F0dGVyL2hvdmVyIjoxMTMxfV0sMTE5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzY2F0dGVycG9sYXIiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL3BvbGFyIiksY2F0ZWdvcmllczpbInBvbGFyIiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKS5zdXBwbHlEZWZhdWx0cyxjb2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIuL2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90Iiksc3R5bGU6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlT25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuLi9zY2F0dGVyL3NlbGVjdCIpLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL3BvbGFyIjo4MjksIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjoxMTM4LCIuLi9zY2F0dGVyL3NlbGVjdCI6MTE0MSwiLi4vc2NhdHRlci9zdHlsZSI6MTE0MywiLi9hdHRyaWJ1dGVzIjoxMTkzLCIuL2NhbGMiOjExOTQsIi4vZGVmYXVsdHMiOjExOTUsIi4vZm9ybWF0X2xhYmVscyI6MTE5NiwiLi9ob3ZlciI6MTE5NywiLi9wbG90IjoxMTk5fV0sMTE5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL3Bsb3QiKSxhPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIGk9ZS5sYXllcnMuZnJvbnRwbG90LnNlbGVjdCgiZy5zY2F0dGVybGF5ZXIiKSxvPXt4YXhpczplLnhheGlzLHlheGlzOmUueWF4aXMscGxvdDplLmZyYW1ld29yayxsYXllckNsaXBJZDplLl9oYXNDbGlwT25BeGlzRmFsc2U/ZS5jbGlwSWRzLmZvclRyYWNlczpudWxsfSxzPWUucmFkaWFsQXhpcyxsPWUuYW5ndWxhckF4aXMsYz0wO2M8ci5sZW5ndGg7YysrKWZvcih2YXIgdT1yW2NdLGg9MDtoPHUubGVuZ3RoO2grKyl7dmFyIGY9dVtoXSxwPWYucjtpZihwPT09YSlmLng9Zi55PWE7ZWxzZXt2YXIgZD1zLmMyZyhwKSxnPWwuYzJnKGYudGhldGEpO2YueD1kKk1hdGguY29zKGcpLGYueT1kKk1hdGguc2luKGcpfX1uKHQsbyxyLGkpfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uL3NjYXR0ZXIvcGxvdCI6MTE0MH1dLDEyMDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlcnBvbGFyL2F0dHJpYnV0ZXMiKSxhPXQoIi4uL3NjYXR0ZXJnbC9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnM7ZS5leHBvcnRzPXttb2RlOm4ubW9kZSxyOm4ucix0aGV0YTpuLnRoZXRhLHIwOm4ucjAsZHI6bi5kcix0aGV0YTA6bi50aGV0YTAsZHRoZXRhOm4uZHRoZXRhLHRoZXRhdW5pdDpuLnRoZXRhdW5pdCx0ZXh0Om4udGV4dCx0ZXh0dGVtcGxhdGU6aSh7ZWRpdFR5cGU6InBsb3QifSx7a2V5czpbInIiLCJ0aGV0YSIsInRleHQiXX0pLGhvdmVydGV4dDpuLmhvdmVydGV4dCxob3ZlcnRlbXBsYXRlOm4uaG92ZXJ0ZW1wbGF0ZSxsaW5lOmEubGluZSxjb25uZWN0Z2FwczphLmNvbm5lY3RnYXBzLG1hcmtlcjphLm1hcmtlcixmaWxsOmEuZmlsbCxmaWxsY29sb3I6YS5maWxsY29sb3IsdGV4dHBvc2l0aW9uOmEudGV4dHBvc2l0aW9uLHRleHRmb250OmEudGV4dGZvbnQsaG92ZXJpbmZvOm4uaG92ZXJpbmZvLHNlbGVjdGVkOm4uc2VsZWN0ZWQsdW5zZWxlY3RlZDpuLnVuc2VsZWN0ZWR9fSx7Ii4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vc2NhdHRlcmdsL2F0dHJpYnV0ZXMiOjExNzEsIi4uL3NjYXR0ZXJwb2xhci9hdHRyaWJ1dGVzIjoxMTkzfV0sMTIwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGE9dCgiLi4vc2NhdHRlci9jYWxjIikuY2FsY01hcmtlclNpemUsaT10KCIuLi9zY2F0dGVyZ2wvY29udmVydCIpLG89dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxzPXQoIi4uL3NjYXR0ZXJnbC9jb25zdGFudHMiKS5UT09fTUFOWV9QT0lOVFM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dCxsPWUuc3VicGxvdCxjPXJbbF0ucmFkaWFsYXhpcyx1PXJbbF0uYW5ndWxhcmF4aXMsaD1lLl9yPWMubWFrZUNhbGNkYXRhKGUsInIiKSxmPWUuX3RoZXRhPXUubWFrZUNhbGNkYXRhKGUsInRoZXRhIikscD1lLl9sZW5ndGgsZD17fTtwPGgubGVuZ3RoJiYoaD1oLnNsaWNlKDAscCkpLHA8Zi5sZW5ndGgmJihmPWYuc2xpY2UoMCxwKSksZC5yPWgsZC50aGV0YT1mLG4odCxlKTt2YXIgZyx2PWQub3B0cz1pLnN0eWxlKHQsZSk7cmV0dXJuIHA8cz9nPWEoZSxwKTp2Lm1hcmtlciYmKGc9Mioodi5tYXJrZXIuc2l6ZUF2Z3x8TWF0aC5tYXgodi5tYXJrZXIuc2l6ZSwzKSkpLGUuX2V4dHJlbWVzLng9by5maW5kRXh0cmVtZXMoYyxoLHtwcGFkOmd9KSxbe3g6ITEseTohMSx0OmQsdHJhY2U6ZX1dfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9zY2F0dGVyL2NhbGMiOjExMjEsIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIjoxMTIzLCIuLi9zY2F0dGVyZ2wvY29uc3RhbnRzIjoxMTczLCIuLi9zY2F0dGVyZ2wvY29udmVydCI6MTE3NH1dLDEyMDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksaT10KCIuLi9zY2F0dGVycG9sYXIvZGVmYXVsdHMiKS5oYW5kbGVSVGhldGFEZWZhdWx0cyxvPXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIikscz10KCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyIpLGM9dCgiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiKSx1PXQoIi4uL3NjYXR0ZXIvY29uc3RhbnRzIikuUFRTX0xJTkVTT05MWSxoPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixmKXtmdW5jdGlvbiBwKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxoLHIsYSl9dmFyIGQ9aSh0LGUsZixwKTtkPyhwKCJ0aGV0YXVuaXQiKSxwKCJtb2RlIixkPHU/ImxpbmVzK21hcmtlcnMiOiJsaW5lcyIpLHAoInRleHQiKSxwKCJob3ZlcnRleHQiKSwiZmlsbHMiIT09ZS5ob3Zlcm9uJiZwKCJob3ZlcnRlbXBsYXRlIiksYS5oYXNMaW5lcyhlKSYmKHModCxlLHIsZixwKSxwKCJjb25uZWN0Z2FwcyIpKSxhLmhhc01hcmtlcnMoZSkmJm8odCxlLHIsZixwKSxhLmhhc1RleHQoZSkmJihwKCJ0ZXh0dGVtcGxhdGUiKSxsKHQsZSxmLHApKSxwKCJmaWxsIiksIm5vbmUiIT09ZS5maWxsJiZjKHQsZSxyLHApLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLHApKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0dGVyL2NvbnN0YW50cyI6MTEyNCwiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjExMjgsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6MTEzMywiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6MTE0NSwiLi4vc2NhdHRlcnBvbGFyL2RlZmF1bHRzIjoxMTk1LCIuL2F0dHJpYnV0ZXMiOjEyMDB9XSwxMjAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXJwb2xhci9mb3JtYXRfbGFiZWxzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10Lmk7cmV0dXJuInIiaW4gdHx8KHQucj1lLl9yW2FdKSwidGhldGEiaW4gdHx8KHQudGhldGE9ZS5fdGhldGFbYV0pLG4odCxlLHIpfX0seyIuLi9zY2F0dGVycG9sYXIvZm9ybWF0X2xhYmVscyI6MTE5Nn1dLDEyMDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlcmdsL2hvdmVyIiksYT10KCIuLi9zY2F0dGVycG9sYXIvaG92ZXIiKS5tYWtlSG92ZXJQb2ludFRleHQ7ZS5leHBvcnRzPXtob3ZlclBvaW50czpmdW5jdGlvbih0LGUscixpKXt2YXIgbz10LmNkWzBdLnQscz1vLnIsbD1vLnRoZXRhLGM9bi5ob3ZlclBvaW50cyh0LGUscixpKTtpZihjJiYhMSE9PWNbMF0uaW5kZXgpe3ZhciB1PWNbMF07aWYodm9pZCAwPT09dS5pbmRleClyZXR1cm4gYzt2YXIgaD10LnN1YnBsb3QsZj11LmNkW3UuaW5kZXhdLHA9dS50cmFjZTtpZihmLnI9c1t1LmluZGV4XSxmLnRoZXRhPWxbdS5pbmRleF0saC5pc1B0SW5zaWRlKGYpKXJldHVybiB1LnhMYWJlbFZhbD12b2lkIDAsdS55TGFiZWxWYWw9dm9pZCAwLGEoZixwLGgsdSksY319fX0seyIuLi9zY2F0dGVyZ2wvaG92ZXIiOjExNzksIi4uL3NjYXR0ZXJwb2xhci9ob3ZlciI6MTE5N31dLDEyMDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcnBvbGFyZ2wiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL3BvbGFyIiksY2F0ZWdvcmllczpbImdsIiwicmVnbCIsInBvbGFyIiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjb2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIuL2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuLi9zY2F0dGVyZ2wvc2VsZWN0IiksbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvcG9sYXIiOjgyOSwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4uL3NjYXR0ZXJnbC9zZWxlY3QiOjExODMsIi4vYXR0cmlidXRlcyI6MTIwMCwiLi9jYWxjIjoxMjAxLCIuL2RlZmF1bHRzIjoxMjAyLCIuL2Zvcm1hdF9sYWJlbHMiOjEyMDMsIi4vaG92ZXIiOjEyMDQsIi4vcGxvdCI6MTIwNn1dLDEyMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicG9pbnQtY2x1c3RlciIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uL3NjYXR0ZXJnbC9wbG90Iiksbz10KCIuLi9zY2F0dGVyZ2wvc2NlbmVfdXBkYXRlIikscz10KCIuLi9zY2F0dGVyZ2wvY29udmVydCIpLGw9dCgiLi4vLi4vbGliIiksYz10KCIuLi9zY2F0dGVyZ2wvY29uc3RhbnRzIikuVE9PX01BTllfUE9JTlRTO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYoci5sZW5ndGgpe3ZhciB1PWUucmFkaWFsQXhpcyxoPWUuYW5ndWxhckF4aXMsZj1vKHQsZSk7cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihyKXtpZihyJiZyWzBdJiZyWzBdLnRyYWNlKXt2YXIgaSxvPXJbMF0scD1vLnRyYWNlLGQ9by50LGc9cC5fbGVuZ3RoLHY9ZC5yLG09ZC50aGV0YSx5PWQub3B0cyx4PXYuc2xpY2UoKSxiPW0uc2xpY2UoKTtmb3IoaT0wO2k8di5sZW5ndGg7aSsrKWUuaXNQdEluc2lkZSh7cjp2W2ldLHRoZXRhOm1baV19KXx8KHhbaV09TmFOLGJbaV09TmFOKTt2YXIgXz1uZXcgQXJyYXkoMipnKSx3PUFycmF5KGcpLGs9QXJyYXkoZyk7Zm9yKGk9MDtpPGc7aSsrKXt2YXIgVCxNLEE9eFtpXTtpZihhKEEpKXt2YXIgUz11LmMyZyhBKSxFPWguYzJnKGJbaV0scC50aGV0YXVuaXQpO1Q9UypNYXRoLmNvcyhFKSxNPVMqTWF0aC5zaW4oRSl9ZWxzZSBUPU09TmFOO3dbaV09X1syKmldPVQsa1tpXT1fWzIqaSsxXT1NfWQudHJlZT1uKF8pLHkubWFya2VyJiZnPj1jJiYoeS5tYXJrZXIuY2x1c3Rlcj1kLnRyZWUpLHkubWFya2VyJiYoeS5tYXJrZXJTZWwucG9zaXRpb25zPXkubWFya2VyVW5zZWwucG9zaXRpb25zPXkubWFya2VyLnBvc2l0aW9ucz1fKSx5LmxpbmUmJl8ubGVuZ3RoPjEmJmwuZXh0ZW5kRmxhdCh5LmxpbmUscy5saW5lUG9zaXRpb25zKHQscCxfKSkseS50ZXh0JiYobC5leHRlbmRGbGF0KHkudGV4dCx7cG9zaXRpb25zOl99LHMudGV4dFBvc2l0aW9uKHQscCx5LnRleHQseS5tYXJrZXIpKSxsLmV4dGVuZEZsYXQoeS50ZXh0U2VsLHtwb3NpdGlvbnM6X30scy50ZXh0UG9zaXRpb24odCxwLHkudGV4dCx5Lm1hcmtlclNlbCkpLGwuZXh0ZW5kRmxhdCh5LnRleHRVbnNlbCx7cG9zaXRpb25zOl99LHMudGV4dFBvc2l0aW9uKHQscCx5LnRleHQseS5tYXJrZXJVbnNlbCkpKSx5LmZpbGwmJiFmLmZpbGwyZCYmKGYuZmlsbDJkPSEwKSx5Lm1hcmtlciYmIWYuc2NhdHRlcjJkJiYoZi5zY2F0dGVyMmQ9ITApLHkubGluZSYmIWYubGluZTJkJiYoZi5saW5lMmQ9ITApLHkudGV4dCYmIWYuZ2xUZXh0JiYoZi5nbFRleHQ9ITApLGYubGluZU9wdGlvbnMucHVzaCh5LmxpbmUpLGYuZmlsbE9wdGlvbnMucHVzaCh5LmZpbGwpLGYubWFya2VyT3B0aW9ucy5wdXNoKHkubWFya2VyKSxmLm1hcmtlclNlbGVjdGVkT3B0aW9ucy5wdXNoKHkubWFya2VyU2VsKSxmLm1hcmtlclVuc2VsZWN0ZWRPcHRpb25zLnB1c2goeS5tYXJrZXJVbnNlbCksZi50ZXh0T3B0aW9ucy5wdXNoKHkudGV4dCksZi50ZXh0U2VsZWN0ZWRPcHRpb25zLnB1c2goeS50ZXh0U2VsKSxmLnRleHRVbnNlbGVjdGVkT3B0aW9ucy5wdXNoKHkudGV4dFVuc2VsKSxmLnNlbGVjdEJhdGNoLnB1c2goW10pLGYudW5zZWxlY3RCYXRjaC5wdXNoKFtdKSxkLng9dyxkLnk9ayxkLnJhd3g9dyxkLnJhd3k9ayxkLnI9dixkLnRoZXRhPW0sZC5wb3NpdGlvbnM9XyxkLl9zY2VuZT1mLGQuaW5kZXg9Zi5jb3VudCxmLmNvdW50Kyt9fSksaSh0LGUscil9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlcmdsL2NvbnN0YW50cyI6MTE3MywiLi4vc2NhdHRlcmdsL2NvbnZlcnQiOjExNzQsIi4uL3NjYXR0ZXJnbC9wbG90IjoxMTgxLCIuLi9zY2F0dGVyZ2wvc2NlbmVfdXBkYXRlIjoxMTgyLCJmYXN0LWlzbnVtZXJpYyI6MjI4LCJwb2ludC1jbHVzdGVyIjo0NzF9XSwxMjA3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsaT10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksbD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gsYz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCx1PWkubWFya2VyLGg9aS5saW5lLGY9dS5saW5lO2UuZXhwb3J0cz17YTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxiOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sc3VtOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxtaW46MCxlZGl0VHlwZToiY2FsYyJ9LG1vZGU6Yyh7fSxpLm1vZGUse2RmbHQ6Im1hcmtlcnMifSksdGV4dDpjKHt9LGkudGV4dCx7fSksdGV4dHRlbXBsYXRlOmEoe2VkaXRUeXBlOiJwbG90In0se2tleXM6WyJhIiwiYiIsImMiLCJ0ZXh0Il19KSxob3ZlcnRleHQ6Yyh7fSxpLmhvdmVydGV4dCx7fSksbGluZTp7Y29sb3I6aC5jb2xvcix3aWR0aDpoLndpZHRoLGRhc2g6bCxzaGFwZTpjKHt9LGguc2hhcGUse3ZhbHVlczpbImxpbmVhciIsInNwbGluZSJdfSksc21vb3RoaW5nOmguc21vb3RoaW5nLGVkaXRUeXBlOiJjYWxjIn0sY29ubmVjdGdhcHM6aS5jb25uZWN0Z2FwcyxjbGlwb25heGlzOmkuY2xpcG9uYXhpcyxmaWxsOmMoe30saS5maWxsLHt2YWx1ZXM6WyJub25lIiwidG9zZWxmIiwidG9uZXh0Il0sZGZsdDoibm9uZSJ9KSxmaWxsY29sb3I6aS5maWxsY29sb3IsbWFya2VyOmMoe3N5bWJvbDp1LnN5bWJvbCxvcGFjaXR5OnUub3BhY2l0eSxtYXhkaXNwbGF5ZWQ6dS5tYXhkaXNwbGF5ZWQsc2l6ZTp1LnNpemUsc2l6ZXJlZjp1LnNpemVyZWYsc2l6ZW1pbjp1LnNpemVtaW4sc2l6ZW1vZGU6dS5zaXplbW9kZSxsaW5lOmMoe3dpZHRoOmYud2lkdGgsZWRpdFR5cGU6ImNhbGMifSxzKCJtYXJrZXIubGluZSIpKSxncmFkaWVudDp1LmdyYWRpZW50LGVkaXRUeXBlOiJjYWxjIn0scygibWFya2VyIikpLHRleHRmb250OmkudGV4dGZvbnQsdGV4dHBvc2l0aW9uOmkudGV4dHBvc2l0aW9uLHNlbGVjdGVkOmkuc2VsZWN0ZWQsdW5zZWxlY3RlZDppLnVuc2VsZWN0ZWQsaG92ZXJpbmZvOmMoe30sby5ob3ZlcmluZm8se2ZsYWdzOlsiYSIsImIiLCJjIiwidGV4dCIsIm5hbWUiXX0pLGhvdmVyb246aS5ob3Zlcm9uLGhvdmVydGVtcGxhdGU6bigpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyI6NjEyLCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSwxMjA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGk9dCgiLi4vc2NhdHRlci9hcnJheXNfdG9fY2FsY2RhdGEiKSxvPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxzPXQoIi4uL3NjYXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXplLGw9WyJhIiwiYiIsImMiXSxjPXthOlsiYiIsImMiXSxiOlsiYSIsImMiXSxjOlsiYSIsImIiXX07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsdSxoLGYscCxkLGc9dC5fZnVsbExheW91dFtlLnN1YnBsb3RdLnN1bSx2PWUuc3VtfHxnLG09e2E6ZS5hLGI6ZS5iLGM6ZS5jfTtmb3Iocj0wO3I8bC5sZW5ndGg7cisrKWlmKCFtW2g9bFtyXV0pe2ZvcihwPW1bY1toXVswXV0sZD1tW2NbaF1bMV1dLGY9bmV3IEFycmF5KHAubGVuZ3RoKSx1PTA7dTxwLmxlbmd0aDt1KyspZlt1XT12LXBbdV0tZFt1XTttW2hdPWZ9dmFyIHkseCxiLF8sdyxrLFQ9ZS5fbGVuZ3RoLE09bmV3IEFycmF5KFQpO2ZvcihyPTA7cjxUO3IrKyl5PW0uYVtyXSx4PW0uYltyXSxiPW0uY1tyXSxuKHkpJiZuKHgpJiZuKGIpPygxIT09KF89Zy8oKHk9K3kpKyh4PSt4KSsoYj0rYikpKSYmKHkqPV8seCo9XyxiKj1fKSxrPXksdz1iLXgsTVtyXT17eDp3LHk6ayxhOnksYjp4LGM6Yn0pOk1bcl09e3g6ITEseTohMX07cmV0dXJuIHMoZSxUKSxhKHQsZSksaShNLGUpLG8oTSxlKSxNfX0seyIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSI6MTExOSwiLi4vc2NhdHRlci9jYWxjIjoxMTIxLCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyLCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyI6MTEyMywiZmFzdC1pc251bWVyaWMiOjIyOH1dLDEyMDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL2NvbnN0YW50cyIpLGk9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLG89dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxzPXQoIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLGw9dCgiLi4vc2NhdHRlci9saW5lX3NoYXBlX2RlZmF1bHRzIiksYz10KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKSx1PXQoIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIiksaD10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsZil7ZnVuY3Rpb24gcChyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaCxyLGEpfXZhciBkLGc9cCgiYSIpLHY9cCgiYiIpLG09cCgiYyIpO2lmKGc/KGQ9Zy5sZW5ndGgsdj8oZD1NYXRoLm1pbihkLHYubGVuZ3RoKSxtJiYoZD1NYXRoLm1pbihkLG0ubGVuZ3RoKSkpOmQ9bT9NYXRoLm1pbihkLG0ubGVuZ3RoKTowKTp2JiZtJiYoZD1NYXRoLm1pbih2Lmxlbmd0aCxtLmxlbmd0aCkpLGQpe2UuX2xlbmd0aD1kLHAoInN1bSIpLHAoInRleHQiKSxwKCJob3ZlcnRleHQiKSwiZmlsbHMiIT09ZS5ob3Zlcm9uJiZwKCJob3ZlcnRlbXBsYXRlIikscCgibW9kZSIsZDxhLlBUU19MSU5FU09OTFk/ImxpbmVzK21hcmtlcnMiOiJsaW5lcyIpLGkuaGFzTGluZXMoZSkmJihzKHQsZSxyLGYscCksbCh0LGUscCkscCgiY29ubmVjdGdhcHMiKSksaS5oYXNNYXJrZXJzKGUpJiZvKHQsZSxyLGYscCx7Z3JhZGllbnQ6ITB9KSxpLmhhc1RleHQoZSkmJihwKCJ0ZXh0dGVtcGxhdGUiKSxjKHQsZSxmLHApKTt2YXIgeT1bXTsoaS5oYXNNYXJrZXJzKGUpfHxpLmhhc1RleHQoZSkpJiYocCgiY2xpcG9uYXhpcyIpLHAoIm1hcmtlci5tYXhkaXNwbGF5ZWQiKSx5LnB1c2goInBvaW50cyIpKSxwKCJmaWxsIiksIm5vbmUiIT09ZS5maWxsJiYodSh0LGUscixwKSxpLmhhc0xpbmVzKGUpfHxsKHQsZSxwKSksInRvbmV4dCIhPT1lLmZpbGwmJiJ0b3NlbGYiIT09ZS5maWxsfHx5LnB1c2goImZpbGxzIikscCgiaG92ZXJvbiIseS5qb2luKCIrIil8fCJwb2ludHMiKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxwKX1lbHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL3NjYXR0ZXIvY29uc3RhbnRzIjoxMTI0LCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyI6MTEyOCwiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjoxMTMzLCIuLi9zY2F0dGVyL2xpbmVfc2hhcGVfZGVmYXVsdHMiOjExMzUsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIjoxMTM5LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiOjExNDUsIi4vYXR0cmlidXRlcyI6MTIwN31dLDEyMTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7aWYoZS54YSYmKHQueGF4aXM9ZS54YSksZS55YSYmKHQueWF4aXM9ZS55YSksblthXSl7dmFyIGk9blthXTt0LmE9aS5hLHQuYj1pLmIsdC5jPWkuY31lbHNlIHQuYT1lLmEsdC5iPWUuYix0LmM9ZS5jO3JldHVybiB0fX0se31dLDEyMTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXt9LGk9cltlLnN1YnBsb3RdLl9zdWJwbG90O3JldHVybiBhLmFMYWJlbD1uLnRpY2tUZXh0KGkuYWF4aXMsdC5hLCEwKS50ZXh0LGEuYkxhYmVsPW4udGlja1RleHQoaS5iYXhpcyx0LmIsITApLnRleHQsYS5jTGFiZWw9bi50aWNrVGV4dChpLmNheGlzLHQuYywhMCkudGV4dCxhfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1fV0sMTIxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL2hvdmVyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPW4odCxlLHIsYSk7aWYoaSYmITEhPT1pWzBdLmluZGV4KXt2YXIgbz1pWzBdO2lmKHZvaWQgMD09PW8uaW5kZXgpe3ZhciBzPTEtby55MC90LnlhLl9sZW5ndGgsbD10LnhhLl9sZW5ndGgsYz1sKnMvMix1PWwtYztyZXR1cm4gby54MD1NYXRoLm1heChNYXRoLm1pbihvLngwLHUpLGMpLG8ueDE9TWF0aC5tYXgoTWF0aC5taW4oby54MSx1KSxjKSxpfXZhciBoPW8uY2Rbby5pbmRleF0sZj1vLnRyYWNlLHA9by5zdWJwbG90O28uYT1oLmEsby5iPWguYixvLmM9aC5jLG8ueExhYmVsVmFsPXZvaWQgMCxvLnlMYWJlbFZhbD12b2lkIDA7dmFyIGQ9e307ZFtmLnN1YnBsb3RdPXtfc3VicGxvdDpwfTt2YXIgZz1mLl9tb2R1bGUuZm9ybWF0TGFiZWxzKGgsZixkKTtvLmFMYWJlbD1nLmFMYWJlbCxvLmJMYWJlbD1nLmJMYWJlbCxvLmNMYWJlbD1nLmNMYWJlbDt2YXIgdj1oLmhpfHxmLmhvdmVyaW5mbyxtPVtdO2lmKCFmLmhvdmVydGVtcGxhdGUpe3ZhciB5PXYuc3BsaXQoIisiKTstMSE9PXkuaW5kZXhPZigiYWxsIikmJih5PVsiYSIsImIiLCJjIl0pLC0xIT09eS5pbmRleE9mKCJhIikmJngocC5hYXhpcyxvLmFMYWJlbCksLTEhPT15LmluZGV4T2YoImIiKSYmeChwLmJheGlzLG8uYkxhYmVsKSwtMSE9PXkuaW5kZXhPZigiYyIpJiZ4KHAuY2F4aXMsby5jTGFiZWwpfXJldHVybiBvLmV4dHJhVGV4dD1tLmpvaW4oIjxicj4iKSxvLmhvdmVydGVtcGxhdGU9Zi5ob3ZlcnRlbXBsYXRlLGl9ZnVuY3Rpb24geCh0LGUpe20ucHVzaCh0Ll9ob3ZlcnRpdGxlKyI6ICIrZSl9fX0seyIuLi9zY2F0dGVyL2hvdmVyIjoxMTMxfV0sMTIxMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksZm9ybWF0TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4uL3NjYXR0ZXIvc2VsZWN0IiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzY2F0dGVydGVybmFyeSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvdGVybmFyeSIpLGNhdGVnb3JpZXM6WyJ0ZXJuYXJ5Iiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy90ZXJuYXJ5Ijo4NDIsIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjoxMTM4LCIuLi9zY2F0dGVyL3NlbGVjdCI6MTE0MSwiLi4vc2NhdHRlci9zdHlsZSI6MTE0MywiLi9hdHRyaWJ1dGVzIjoxMjA3LCIuL2NhbGMiOjEyMDgsIi4vZGVmYXVsdHMiOjEyMDksIi4vZXZlbnRfZGF0YSI6MTIxMCwiLi9mb3JtYXRfbGFiZWxzIjoxMjExLCIuL2hvdmVyIjoxMjEyLCIuL3Bsb3QiOjEyMTR9XSwxMjE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvcGxvdCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGE9ZS5wbG90Q29udGFpbmVyO2Euc2VsZWN0KCIuc2NhdHRlcmxheWVyIikuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7dmFyIGk9e3hheGlzOmUueGF4aXMseWF4aXM6ZS55YXhpcyxwbG90OmEsbGF5ZXJDbGlwSWQ6ZS5faGFzQ2xpcE9uQXhpc0ZhbHNlP2UuY2xpcElkUmVsYXRpdmU6bnVsbH0sbz1lLmxheWVycy5mcm9udHBsb3Quc2VsZWN0KCJnLnNjYXR0ZXJsYXllciIpO24odCxpLHIsbyl9fSx7Ii4uL3NjYXR0ZXIvcGxvdCI6MTE0MH1dLDEyMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxvPXQoIi4uL3NjYXR0ZXJnbC9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIikuaWRSZWdleCxsPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSxjPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHU9bi5tYXJrZXIsaD11LmxpbmUsZj1jKGEoIm1hcmtlci5saW5lIix7ZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSx7d2lkdGg6Yyh7fSxoLndpZHRoLHtlZGl0VHlwZToiY2FsYyJ9KSxlZGl0VHlwZToiY2FsYyJ9KSxwPWMoYSgibWFya2VyIikse3N5bWJvbDp1LnN5bWJvbCxzaXplOmMoe30sdS5zaXplLHtlZGl0VHlwZToibWFya2VyU2l6ZSJ9KSxzaXplcmVmOnUuc2l6ZXJlZixzaXplbWluOnUuc2l6ZW1pbixzaXplbW9kZTp1LnNpemVtb2RlLG9wYWNpdHk6dS5vcGFjaXR5LGNvbG9yYmFyOnUuY29sb3JiYXIsbGluZTpmLGVkaXRUeXBlOiJjYWxjIn0pO2Z1bmN0aW9uIGQodCl7cmV0dXJue3ZhbFR5cGU6ImluZm9fYXJyYXkiLGZyZWVMZW5ndGg6ITAsZWRpdFR5cGU6ImNhbGMiLGl0ZW1zOnt2YWxUeXBlOiJzdWJwbG90aWQiLHJlZ2V4OnNbdF0sZWRpdFR5cGU6InBsb3QifX19cC5jb2xvci5lZGl0VHlwZT1wLmNtaW4uZWRpdFR5cGU9cC5jbWF4LmVkaXRUeXBlPSJzdHlsZSIsZS5leHBvcnRzPXtkaW1lbnNpb25zOmwoImRpbWVuc2lvbiIse3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxsYWJlbDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9LHZhbHVlczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxheGlzOnt0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsaW5lYXIiLCJsb2ciLCJkYXRlIiwiY2F0ZWdvcnkiXSxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LG1hdGNoZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0pLHRleHQ6Yyh7fSxvLnRleHQse30pLGhvdmVydGV4dDpjKHt9LG8uaG92ZXJ0ZXh0LHt9KSxob3ZlcnRlbXBsYXRlOmkoKSxtYXJrZXI6cCx4YXhlczpkKCJ4IikseWF4ZXM6ZCgieSIpLGRpYWdvbmFsOnt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxzaG93dXBwZXJoYWxmOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sc2hvd2xvd2VyaGFsZjp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LHNlbGVjdGVkOnttYXJrZXI6by5zZWxlY3RlZC5tYXJrZXIsZWRpdFR5cGU6ImNhbGMifSx1bnNlbGVjdGVkOnttYXJrZXI6by51bnNlbGVjdGVkLm1hcmtlcixlZGl0VHlwZToiY2FsYyJ9LG9wYWNpdHk6by5vcGFjaXR5fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyI6NzcxLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMCwiLi4vc2NhdHRlcmdsL2F0dHJpYnV0ZXMiOjExNzF9XSwxMjE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInJlZ2wtbGluZTJkIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliL3ByZXBhcmVfcmVnbCIpLG89dCgiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiKS5nZXRNb2R1bGVDYWxjRGF0YSxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGw9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIikuZ2V0RnJvbUlkLGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKS5zaG91bGRTaG93WmVyb0xpbmUsdT0ic3Bsb20iO2Z1bmN0aW9uIGgodCxlLHIpe2Zvcih2YXIgbj1yLm1hdHJpeE9wdGlvbnMuZGF0YS5sZW5ndGgsYT1lLl92aXNpYmxlRGltcyxpPXIudmlld09wdHMucmFuZ2VzPW5ldyBBcnJheShuKSxvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb10sYz1pW29dPW5ldyBBcnJheSg0KSx1PWwodCxlLl9kaWFnW3NdWzBdKTt1JiYoY1swXT11LnIybCh1LnJhbmdlWzBdKSxjWzJdPXUucjJsKHUucmFuZ2VbMV0pKTt2YXIgaD1sKHQsZS5fZGlhZ1tzXVsxXSk7aCYmKGNbMV09aC5yMmwoaC5yYW5nZVswXSksY1szXT1oLnIybChoLnJhbmdlWzFdKSl9ci5zZWxlY3RCYXRjaC5sZW5ndGh8fHIudW5zZWxlY3RCYXRjaC5sZW5ndGg/ci5tYXRyaXgudXBkYXRlKHtyYW5nZXM6aX0se3JhbmdlczppfSk6ci5tYXRyaXgudXBkYXRlKHtyYW5nZXM6aX0pfWZ1bmN0aW9uIGYodCl7dmFyIGU9dC5fZnVsbExheW91dCxyPWUuX2dsY2FudmFzLmRhdGEoKVswXS5yZWdsLGE9ZS5fc3Bsb21HcmlkO2F8fChhPWUuX3NwbG9tR3JpZD1uKHIpKSxhLnVwZGF0ZShmdW5jdGlvbih0KXt2YXIgZSxyPXQuX2Z1bGxMYXlvdXQsbj1yLl9zaXplLGE9WzAsMCxyLndpZHRoLHIuaGVpZ2h0XSxpPXt9O2Z1bmN0aW9uIG8odCxlLHIsbixvLHMpe3ZhciBsPWVbdCsiY29sb3IiXSxjPWVbdCsid2lkdGgiXSx1PVN0cmluZyhsK2MpO3UgaW4gaT9pW3VdLmRhdGEucHVzaChOYU4sTmFOLHIsbixvLHMpOmlbdV09e2RhdGE6W3IsbixvLHNdLGpvaW46InJlY3QiLHRoaWNrbmVzczpjLGNvbG9yOmwsdmlld3BvcnQ6YSxyYW5nZTphLG92ZXJsYXk6ITF9fWZvcihlIGluIHIuX3NwbG9tU3VicGxvdHMpe3ZhciBzLGwsdT1yLl9wbG90c1tlXSxoPXUueGF4aXMsZj11LnlheGlzLHA9aC5fZ3JpZFZhbHMsZD1mLl9ncmlkVmFscyxnPW4uYitmLmRvbWFpblswXSpuLmgsdj0tZi5fbSxtPS12KmYucjJsKGYucmFuZ2VbMF0sZi5jYWxlbmRhcik7aWYoaC5zaG93Z3JpZClmb3IoZT0wO2U8cC5sZW5ndGg7ZSsrKXM9aC5fb2Zmc2V0K2gubDJwKHBbZV0ueCksbygiZ3JpZCIsaCxzLGcscyxnK2YuX2xlbmd0aCk7aWYoZi5zaG93Z3JpZClmb3IoZT0wO2U8ZC5sZW5ndGg7ZSsrKWw9ZyttK3YqZFtlXS54LG8oImdyaWQiLGYsaC5fb2Zmc2V0LGwsaC5fb2Zmc2V0K2guX2xlbmd0aCxsKTtjKHQsaCxmKSYmKHM9aC5fb2Zmc2V0K2gubDJwKDApLG8oInplcm9saW5lIixoLHMsZyxzLGcrZi5fbGVuZ3RoKSksYyh0LGYsaCkmJihsPWcrbSswLG8oInplcm9saW5lIixmLGguX29mZnNldCxsLGguX29mZnNldCtoLl9sZW5ndGgsbCkpfXZhciB5PVtdO2ZvcihlIGluIGkpeS5wdXNoKGlbZV0pO3JldHVybiB5fSh0KSl9ZS5leHBvcnRzPXtuYW1lOnUsYXR0cjpzLmF0dHIsYXR0clJlZ2V4OnMuYXR0clJlZ2V4LGxheW91dEF0dHJpYnV0ZXM6cy5sYXlvdXRBdHRyaWJ1dGVzLHN1cHBseUxheW91dERlZmF1bHRzOnMuc3VwcGx5TGF5b3V0RGVmYXVsdHMsZHJhd0ZyYW1ld29yazpzLmRyYXdGcmFtZXdvcmsscGxvdDpmdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9YS5nZXRNb2R1bGUodSksbj1vKHQuY2FsY2RhdGEscilbMF07aSh0LFsiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIsIk9FU19lbGVtZW50X2luZGV4X3VpbnQiXSkmJihlLl9oYXNPbmx5TGFyZ2VTcGxvbXMmJmYodCksci5wbG90KHQse30sbikpfSxkcmFnOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2FsY2RhdGEscj10Ll9mdWxsTGF5b3V0O3IuX2hhc09ubHlMYXJnZVNwbG9tcyYmZih0KTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGE9ZVtuXVswXS50cmFjZSxpPXIuX3NwbG9tU2NlbmVzW2EudWlkXTsic3Bsb20iPT09YS50eXBlJiZpJiZpLm1hdHJpeCYmaCh0LGEsaSl9fSx1cGRhdGVHcmlkOmYsY2xlYW46ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaT17fTtpZihuLl9zcGxvbVNjZW5lcyl7Zm9yKGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIG89dFthXTsic3Bsb20iPT09by50eXBlJiYoaVtvLnVpZF09MSl9Zm9yKGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGw9clthXTtpZighaVtsLnVpZF0pe3ZhciBjPW4uX3NwbG9tU2NlbmVzW2wudWlkXTtjJiZjLmRlc3Ryb3kmJmMuZGVzdHJveSgpLG4uX3NwbG9tU2NlbmVzW2wudWlkXT1udWxsLGRlbGV0ZSBuLl9zcGxvbVNjZW5lc1tsLnVpZF19fX0wPT09T2JqZWN0LmtleXMobi5fc3Bsb21TY2VuZXN8fHt9KS5sZW5ndGgmJmRlbGV0ZSBuLl9zcGxvbVNjZW5lcyxuLl9zcGxvbUdyaWQmJiFlLl9oYXNPbmx5TGFyZ2VTcGxvbXMmJm4uX2hhc09ubHlMYXJnZVNwbG9tcyYmKG4uX3NwbG9tR3JpZC5kZXN0cm95KCksbi5fc3Bsb21HcmlkPW51bGwsZGVsZXRlIG4uX3NwbG9tR3JpZCkscy5jbGVhbih0LGUscixuKX0sdXBkYXRlRng6cy51cGRhdGVGeCx0b1NWRzpzLnRvU1ZHfX0seyIuLi8uLi9saWIvcHJlcGFyZV9yZWdsIjo3MzAsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Nzc2LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiOjgwMCwiLi4vLi4vcmVnaXN0cnkiOjg0NiwicmVnbC1saW5lMmQiOjQ5M31dLDEyMTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxpPXQoIi4uL3NjYXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXplLG89dCgiLi4vc2NhdHRlci9jYWxjIikuY2FsY0F4aXNFeHBhbnNpb24scz10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGw9dCgiLi4vc2NhdHRlcmdsL2NvbnZlcnQiKS5tYXJrZXJTZWxlY3Rpb24sYz10KCIuLi9zY2F0dGVyZ2wvY29udmVydCIpLm1hcmtlclN0eWxlLHU9dCgiLi9zY2VuZV91cGRhdGUiKSxoPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0sZj10KCIuLi9zY2F0dGVyZ2wvY29uc3RhbnRzIikuVE9PX01BTllfUE9JTlRTO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLHAsZCxnLHYsbSx5PWUuZGltZW5zaW9ucyx4PWUuX2xlbmd0aCxiPXt9LF89Yi5jZGF0YT1bXSx3PWIuZGF0YT1bXSxrPWUuX3Zpc2libGVEaW1zPVtdO2Z1bmN0aW9uIFQodCxyKXtmb3IodmFyIGE9dC5tYWtlQ2FsY2RhdGEoe3Y6ci52YWx1ZXMsdmNhbGVuZGFyOmUuY2FsZW5kYXJ9LCJ2IiksaT0wO2k8YS5sZW5ndGg7aSsrKWFbaV09YVtpXT09PWg/TmFOOmFbaV07Xy5wdXNoKGEpLHcucHVzaCgibG9nIj09PXQudHlwZT9uLnNpbXBsZU1hcChhLHQuYzJsKTphKX1mb3Iocj0wO3I8eS5sZW5ndGg7cisrKWlmKChkPXlbcl0pLnZpc2libGUpe2lmKGc9YS5nZXRGcm9tSWQodCxlLl9kaWFnW3JdWzBdKSx2PWEuZ2V0RnJvbUlkKHQsZS5fZGlhZ1tyXVsxXSksZyYmdiYmZy50eXBlIT09di50eXBlKXtuLmxvZygiU2tpcHBpbmcgc3Bsb20gZGltZW5zaW9uICIrcisiIHdpdGggY29uZmxpY3RpbmcgYXhpcyB0eXBlcyIpO2NvbnRpbnVlfWc/KFQoZyxkKSx2JiYiY2F0ZWdvcnkiPT09di50eXBlJiYodi5fY2F0ZWdvcmllcz1nLl9jYXRlZ29yaWVzLnNsaWNlKCkpKTpUKHYsZCksay5wdXNoKHIpfWZvcihzKHQsZSksbi5leHRlbmRGbGF0KGIsYyhlKSksbT1fLmxlbmd0aCp4PmY/MiooYi5zaXplQXZnfHxNYXRoLm1heChiLnNpemUsMykpOmkoZSx4KSxwPTA7cDxrLmxlbmd0aDtwKyspZD15W3I9a1twXV0sZz1hLmdldEZyb21JZCh0LGUuX2RpYWdbcl1bMF0pfHx7fSx2PWEuZ2V0RnJvbUlkKHQsZS5fZGlhZ1tyXVsxXSl8fHt9LG8odCxlLGcsdixfW3BdLF9bcF0sbSk7dmFyIE09dSh0LGUpO3JldHVybiBNLm1hdHJpeHx8KE0ubWF0cml4PSEwKSxNLm1hdHJpeE9wdGlvbnM9YixNLnNlbGVjdGVkT3B0aW9ucz1sKGUsZS5zZWxlY3RlZCksTS51bnNlbGVjdGVkT3B0aW9ucz1sKGUsZS51bnNlbGVjdGVkKSxbe3g6ITEseTohMSx0Ont9LHRyYWNlOmV9XX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uL3NjYXR0ZXIvY2FsYyI6MTEyMSwiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjExMjMsIi4uL3NjYXR0ZXJnbC9jb25zdGFudHMiOjExNzMsIi4uL3NjYXR0ZXJnbC9jb252ZXJ0IjoxMTc0LCIuL3NjZW5lX3VwZGF0ZSI6MTIyNH1dLDEyMTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxpPXQoIi4vYXR0cmlidXRlcyIpLG89dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLHM9dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxsPXQoIi4uL3BhcmNvb3Jkcy9tZXJnZV9sZW5ndGgiKSxjPXQoIi4uL3NjYXR0ZXJnbC9oZWxwZXJzIikuaXNPcGVuU3ltYm9sO2Z1bmN0aW9uIHUodCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLmRpbWVuc2lvbnMscixhKX1yKCJsYWJlbCIpO3ZhciBhPXIoInZhbHVlcyIpO2EmJmEubGVuZ3RoP3IoInZpc2libGUiKTplLnZpc2libGU9ITEscigiYXhpcy50eXBlIikscigiYXhpcy5tYXRjaGVzIil9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGgpe2Z1bmN0aW9uIGYocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX12YXIgcD1hKHQsZSx7bmFtZToiZGltZW5zaW9ucyIsaGFuZGxlSXRlbURlZmF1bHRzOnV9KSxkPWYoImRpYWdvbmFsLnZpc2libGUiKSxnPWYoInNob3d1cHBlcmhhbGYiKSx2PWYoInNob3dsb3dlcmhhbGYiKTtpZihsKGUscCwidmFsdWVzIikmJihkfHxnfHx2KSl7ZigidGV4dCIpLGYoImhvdmVydGV4dCIpLGYoImhvdmVydGVtcGxhdGUiKSxzKHQsZSxyLGgsZik7dmFyIG09YyhlLm1hcmtlci5zeW1ib2wpLHk9by5pc0J1YmJsZShlKTtmKCJtYXJrZXIubGluZS53aWR0aCIsbXx8eT8xOjApLGZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGksbz1lLmRpbWVuc2lvbnMscz1vLmxlbmd0aCxsPWUuc2hvd3VwcGVyaGFsZixjPWUuc2hvd2xvd2VyaGFsZix1PWUuZGlhZ29uYWwudmlzaWJsZSxoPW5ldyBBcnJheShzKSxmPW5ldyBBcnJheShzKTtmb3IoYT0wO2E8czthKyspe3ZhciBwPWE/YSsxOiIiO2hbYV09IngiK3AsZlthXT0ieSIrcH12YXIgZD1uKCJ4YXhlcyIsaCksZz1uKCJ5YXhlcyIsZiksdj1lLl9kaWFnPW5ldyBBcnJheShzKTtlLl94YXhlcz17fSxlLl95YXhlcz17fTt2YXIgbT1bXSx5PVtdO2Z1bmN0aW9uIHgodCxuLGEsaSl7aWYodCl7dmFyIG89dC5jaGFyQXQoMCkscz1yLl9zcGxvbUF4ZXNbb107aWYoZVsiXyIrbysiYXhlcyJdW3RdPTEsaS5wdXNoKHQpLCEodCBpbiBzKSl7dmFyIGw9c1t0XT17fTthJiYobC5sYWJlbD1hLmxhYmVsfHwiIixhLnZpc2libGUmJmEuYXhpcyYmKGEuYXhpcy50eXBlJiYobC50eXBlPWEuYXhpcy50eXBlKSxhLmF4aXMubWF0Y2hlcyYmKGwubWF0Y2hlcz1uKSkpfX19dmFyIGI9IXUmJiFjLF89IXUmJiFsO2ZvcihlLl9heGVzRGltPXt9LGE9MDthPHM7YSsrKXt2YXIgdz1vW2FdLGs9MD09PWEsVD1hPT09cy0xLE09ayYmYnx8VCYmXz92b2lkIDA6ZFthXSxBPWsmJl98fFQmJmI/dm9pZCAwOmdbYV07eChNLEEsdyxtKSx4KEEsTSx3LHkpLHZbYV09W00sQV0sZS5fYXhlc0RpbVtNXT1hLGUuX2F4ZXNEaW1bQV09YX1mb3IoYT0wO2E8bS5sZW5ndGg7YSsrKWZvcihpPTA7aTx5Lmxlbmd0aDtpKyspe3ZhciBTPW1bYV0reVtpXTthPmkmJmw/ci5fc3Bsb21TdWJwbG90c1tTXT0xOmE8aSYmYz9yLl9zcGxvbVN1YnBsb3RzW1NdPTE6YSE9PWl8fCF1JiZjJiZsfHwoci5fc3Bsb21TdWJwbG90c1tTXT0xKX0oIWN8fCF1JiZsJiZjKSYmKHIuX3NwbG9tR3JpZERmbHQueHNpZGU9ImJvdHRvbSIsci5fc3Bsb21HcmlkRGZsdC55c2lkZT0ibGVmdCIpfSgwLGUsaCxmKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxmKX1lbHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NzYxLCIuLi9wYXJjb29yZHMvbWVyZ2VfbGVuZ3RoIjoxMDkxLCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyI6MTEzOSwiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiLi4vc2NhdHRlcmdsL2hlbHBlcnMiOjExNzgsIi4vYXR0cmlidXRlcyI6MTIxNX1dLDEyMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGk9dCgiLi4vc2NhdHRlcmdsL2NvbnZlcnQiKS5tYXJrZXJTdHlsZTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnRyYWNlLG89dC5fZnVsbExheW91dC5fc3Bsb21TY2VuZXNbci51aWRdO2lmKG8pe2EodCxyKSxuLmV4dGVuZEZsYXQoby5tYXRyaXhPcHRpb25zLGkocikpO3ZhciBzPW4uZXh0ZW5kRmxhdCh7fSxvLm1hdHJpeE9wdGlvbnMsby52aWV3T3B0cyk7by5tYXRyaXgudXBkYXRlKHMsbnVsbCl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjExMjMsIi4uL3NjYXR0ZXJnbC9jb252ZXJ0IjoxMTc0fV0sMTIyMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLmdldERpbUluZGV4PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUuX2lkLG49e3g6MCx5OjF9W3IuY2hhckF0KDApXSxhPXQuX3Zpc2libGVEaW1zLGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIG89YVtpXTtpZih0Ll9kaWFnW29dW25dPT09cilyZXR1cm4gaX1yZXR1cm4hMX19LHt9XSwxMjIxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vaGVscGVycyIpLGE9dCgiLi4vc2NhdHRlcmdsL2hvdmVyIikuY2FsY0hvdmVyO2UuZXhwb3J0cz17aG92ZXJQb2ludHM6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXQuY2RbMF0udHJhY2Usbz10LnNjZW5lLm1hdHJpeE9wdGlvbnMuY2RhdGEscz10LnhhLGw9dC55YSxjPXMuYzJwKGUpLHU9bC5jMnAociksaD10LmRpc3RhbmNlLGY9bi5nZXREaW1JbmRleChpLHMpLHA9bi5nZXREaW1JbmRleChpLGwpO2lmKCExPT09Znx8ITE9PT1wKXJldHVyblt0XTtmb3IodmFyIGQsZyx2PW9bZl0sbT1vW3BdLHk9aCx4PTA7eDx2Lmxlbmd0aDt4Kyspe3ZhciBiPXZbeF0sXz1tW3hdLHc9cy5jMnAoYiktYyxrPWwuYzJwKF8pLXUsVD1NYXRoLnNxcnQodyp3K2sqayk7VDx5JiYoeT1nPVQsZD14KX1yZXR1cm4gdC5pbmRleD1kLHQuZGlzdGFuY2U9eSx0LmR4eT1nLHZvaWQgMD09PWQ/W3RdOlthKHQsdixtLGkpXX19fSx7Ii4uL3NjYXR0ZXJnbC9ob3ZlciI6MTE3OSwiLi9oZWxwZXJzIjoxMjIwfV0sMTIyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9ncmlkIik7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic3Bsb20iLGJhc2VQbG90TW9kdWxlOnQoIi4vYmFzZV9wbG90IiksY2F0ZWdvcmllczpbImdsIiwicmVnbCIsImNhcnRlc2lhbiIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwic2NhdHRlci1saWtlIl0sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLGVkaXRTdHlsZTp0KCIuL2VkaXRfc3R5bGUiKSxtZXRhOnt9fSxuLnJlZ2lzdGVyKGEpfSx7Ii4uLy4uL2NvbXBvbmVudHMvZ3JpZCI6NjM0LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciI6MTEzOCwiLi9hdHRyaWJ1dGVzIjoxMjE1LCIuL2Jhc2VfcGxvdCI6MTIxNiwiLi9jYWxjIjoxMjE3LCIuL2RlZmF1bHRzIjoxMjE4LCIuL2VkaXRfc3R5bGUiOjEyMTksIi4vaG92ZXIiOjEyMjEsIi4vcGxvdCI6MTIyMywiLi9zZWxlY3QiOjEyMjV9XSwxMjIzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInJlZ2wtc3Bsb20iKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIik7ZnVuY3Rpb24gbyh0LGUpe3ZhciByLG8scyxsLGMsdT10Ll9mdWxsTGF5b3V0LGg9dS5fc2l6ZSxmPWUudHJhY2UscD1lLnQsZD11Ll9zcGxvbVNjZW5lc1tmLnVpZF0sZz1kLm1hdHJpeE9wdGlvbnMsdj1nLmNkYXRhLG09dS5fZ2xjYW52YXMuZGF0YSgpWzBdLnJlZ2wseT11LmRyYWdtb2RlO2lmKDAhPT12Lmxlbmd0aCl7Zy5sb3dlcj1mLnNob3d1cHBlcmhhbGYsZy51cHBlcj1mLnNob3dsb3dlcmhhbGYsZy5kaWFnb25hbD1mLmRpYWdvbmFsLnZpc2libGU7dmFyIHg9Zi5fdmlzaWJsZURpbXMsYj12Lmxlbmd0aCxfPWQudmlld09wdHM9e307Zm9yKF8ucmFuZ2VzPW5ldyBBcnJheShiKSxfLmRvbWFpbnM9bmV3IEFycmF5KGIpLGM9MDtjPHgubGVuZ3RoO2MrKyl7cz14W2NdO3ZhciB3PV8ucmFuZ2VzW2NdPW5ldyBBcnJheSg0KSxrPV8uZG9tYWluc1tjXT1uZXcgQXJyYXkoNCk7KHI9aS5nZXRGcm9tSWQodCxmLl9kaWFnW3NdWzBdKSkmJih3WzBdPXIuX3JsWzBdLHdbMl09ci5fcmxbMV0sa1swXT1yLmRvbWFpblswXSxrWzJdPXIuZG9tYWluWzFdKSwobz1pLmdldEZyb21JZCh0LGYuX2RpYWdbc11bMV0pKSYmKHdbMV09by5fcmxbMF0sd1szXT1vLl9ybFsxXSxrWzFdPW8uZG9tYWluWzBdLGtbM109by5kb21haW5bMV0pfV8udmlld3BvcnQ9W2gubCxoLmIsaC53K2gubCxoLmgraC5iXSwhMD09PWQubWF0cml4JiYoZC5tYXRyaXg9bihtKSk7dmFyIFQ9dS5jbGlja21vZGUuaW5kZXhPZigic2VsZWN0Iik+LTEsTT0hMDtpZigibGFzc28iPT09eXx8InNlbGVjdCI9PT15fHwhIWYuc2VsZWN0ZWRwb2ludHN8fFQpe3ZhciBBPWYuX2xlbmd0aDtpZihmLnNlbGVjdGVkcG9pbnRzKXtkLnNlbGVjdEJhdGNoPWYuc2VsZWN0ZWRwb2ludHM7dmFyIFM9Zi5zZWxlY3RlZHBvaW50cyxFPXt9O2ZvcihzPTA7czxTLmxlbmd0aDtzKyspRVtTW3NdXT0hMDt2YXIgTD1bXTtmb3Iocz0wO3M8QTtzKyspRVtzXXx8TC5wdXNoKHMpO2QudW5zZWxlY3RCYXRjaD1MfXZhciBDPXAueHB4PW5ldyBBcnJheShiKSxQPXAueXB4PW5ldyBBcnJheShiKTtmb3IoYz0wO2M8eC5sZW5ndGg7YysrKXtpZihzPXhbY10scj1pLmdldEZyb21JZCh0LGYuX2RpYWdbc11bMF0pKWZvcihDW2NdPW5ldyBBcnJheShBKSxsPTA7bDxBO2wrKylDW2NdW2xdPXIuYzJwKHZbY11bbF0pO2lmKG89aS5nZXRGcm9tSWQodCxmLl9kaWFnW3NdWzFdKSlmb3IoUFtjXT1uZXcgQXJyYXkoQSksbD0wO2w8QTtsKyspUFtjXVtsXT1vLmMycCh2W2NdW2xdKX1pZihkLnNlbGVjdEJhdGNoLmxlbmd0aHx8ZC51bnNlbGVjdEJhdGNoLmxlbmd0aCl7dmFyIE89YS5leHRlbmRGbGF0KHt9LGcsZC51bnNlbGVjdGVkT3B0aW9ucyxfKSx6PWEuZXh0ZW5kRmxhdCh7fSxnLGQuc2VsZWN0ZWRPcHRpb25zLF8pO2QubWF0cml4LnVwZGF0ZShPLHopLE09ITF9fWVsc2UgcC54cHg9cC55cHg9bnVsbDtpZihNKXt2YXIgST1hLmV4dGVuZEZsYXQoe30sZyxfKTtkLm1hdHJpeC51cGRhdGUoSSxudWxsKX19fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYoci5sZW5ndGgpZm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspbyh0LHJbbl1bMF0pfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsInJlZ2wtc3Bsb20iOjUwMH1dLDEyMjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dCxhPWUudWlkLGk9ci5fc3Bsb21TY2VuZXM7aXx8KGk9ci5fc3Bsb21TY2VuZXM9e30pO3ZhciBvPXtkaXJ0eTohMH0scz1pW2UudWlkXTtyZXR1cm4gc3x8KChzPWlbYV09bi5leHRlbmRGbGF0KHt9LG8se21hdHJpeDohMSxzZWxlY3RCYXRjaDpbXSx1bnNlbGVjdEJhdGNoOltdfSkpLmRyYXc9ZnVuY3Rpb24oKXtzLm1hdHJpeCYmcy5tYXRyaXguZHJhdyYmKHMuc2VsZWN0QmF0Y2gubGVuZ3RofHxzLnVuc2VsZWN0QmF0Y2gubGVuZ3RoP3MubWF0cml4LmRyYXcocy51bnNlbGVjdEJhdGNoLHMuc2VsZWN0QmF0Y2gpOnMubWF0cml4LmRyYXcoKSkscy5kaXJ0eT0hMX0scy5kZXN0cm95PWZ1bmN0aW9uKCl7cy5tYXRyaXgmJnMubWF0cml4LmRlc3Ryb3kmJnMubWF0cml4LmRlc3Ryb3koKSxzLm1hdHJpeE9wdGlvbnM9bnVsbCxzLnNlbGVjdEJhdGNoPW51bGwscy51bnNlbGVjdEJhdGNoPW51bGwscz1udWxsfSkscy5kaXJ0eXx8bi5leHRlbmRGbGF0KHMsbyksc319LHsiLi4vLi4vbGliIjo3MTd9XSwxMjI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGk9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5jZCxvPXJbMF0udHJhY2Uscz1yWzBdLnQsbD10LnNjZW5lLGM9bC5tYXRyaXhPcHRpb25zLmNkYXRhLHU9dC54YXhpcyxoPXQueWF4aXMsZj1bXTtpZighbClyZXR1cm4gZjt2YXIgcD0hYS5oYXNNYXJrZXJzKG8pJiYhYS5oYXNUZXh0KG8pO2lmKCEwIT09by52aXNpYmxlfHxwKXJldHVybiBmO3ZhciBkPWkuZ2V0RGltSW5kZXgobyx1KSxnPWkuZ2V0RGltSW5kZXgobyxoKTtpZighMT09PWR8fCExPT09ZylyZXR1cm4gZjt2YXIgdj1zLnhweFtkXSxtPXMueXB4W2ddLHk9Y1tkXSx4PWNbZ10sYj1bXSxfPVtdO2lmKCExIT09ZSYmIWUuZGVnZW5lcmF0ZSlmb3IodmFyIHc9MDt3PHkubGVuZ3RoO3crKyllLmNvbnRhaW5zKFt2W3ddLG1bd11dLG51bGwsdyx0KT8oYi5wdXNoKHcpLGYucHVzaCh7cG9pbnROdW1iZXI6dyx4Onlbd10seTp4W3ddfSkpOl8ucHVzaCh3KTt2YXIgaz1sLm1hdHJpeE9wdGlvbnM7cmV0dXJuIGIubGVuZ3RofHxfLmxlbmd0aD9sLnNlbGVjdEJhdGNoLmxlbmd0aHx8bC51bnNlbGVjdEJhdGNoLmxlbmd0aHx8bC5tYXRyaXgudXBkYXRlKGwudW5zZWxlY3RlZE9wdGlvbnMsbi5leHRlbmRGbGF0KHt9LGssbC5zZWxlY3RlZE9wdGlvbnMsbC52aWV3T3B0cykpOmwubWF0cml4LnVwZGF0ZShrLG51bGwpLGwuc2VsZWN0QmF0Y2g9YixsLnVuc2VsZWN0QmF0Y2g9XyxmfX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiLi9oZWxwZXJzIjoxMjIwfV0sMTIyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxpPXQoIi4uL21lc2gzZC9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxsPXt4Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx1Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHY6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdzp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxzdGFydHM6e3g6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0seTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx6Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sbWF4ZGlzcGxheWVkOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjFlMyxlZGl0VHlwZToiY2FsYyJ9LHNpemVyZWY6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMiLG1pbjowLGRmbHQ6MX0sdGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJ0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxob3ZlcnRlbXBsYXRlOmEoe2VkaXRUeXBlOiJjYWxjIn0se2tleXM6WyJ0dWJleCIsInR1YmV5IiwidHViZXoiLCJ0dWJldSIsInR1YmV2IiwidHViZXciLCJub3JtIiwiZGl2ZXJnZW5jZSJdfSksc2hvd2xlZ2VuZDpzKHt9LG8uc2hvd2xlZ2VuZCx7ZGZsdDohMX0pfTtzKGwsbigiIix7Y29sb3JBdHRyOiJ1L3YvdyBub3JtIixzaG93U2NhbGVEZmx0OiEwLGVkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkpO1sib3BhY2l0eSIsImxpZ2h0cG9zaXRpb24iLCJsaWdodGluZyJdLmZvckVhY2goZnVuY3Rpb24odCl7bFt0XT1pW3RdfSksbC5ob3ZlcmluZm89cyh7fSxvLmhvdmVyaW5mbyx7ZWRpdFR5cGU6ImNhbGMiLGZsYWdzOlsieCIsInkiLCJ6IiwidSIsInYiLCJ3Iiwibm9ybSIsImRpdmVyZ2VuY2UiLCJ0ZXh0IiwibmFtZSJdLGRmbHQ6IngreSt6K25vcm0rdGV4dCtuYW1lIn0pLGwudHJhbnNmb3Jtcz12b2lkIDAsZS5leHBvcnRzPWx9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vbWVzaDNkL2F0dHJpYnV0ZXMiOjEwNjF9XSwxMjI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKTtmdW5jdGlvbiBpKHQpe3ZhciBlLHIsYSxpLHMsbCxjLHUsaCxmLHAsZCxnPXQuX3gsdj10Ll95LG09dC5feix5PXQuX2xlbix4PS0xLzAsYj0xLzAsXz0tMS8wLHc9MS8wLGs9LTEvMCxUPTEvMCxNPSIiO2Zvcih5JiYoYz1nWzBdLGg9dlswXSxwPW1bMF0pLHk+MSYmKHU9Z1t5LTFdLGY9dlt5LTFdLGQ9bVt5LTFdKSxlPTA7ZTx5O2UrKyl4PU1hdGgubWF4KHgsZ1tlXSksYj1NYXRoLm1pbihiLGdbZV0pLF89TWF0aC5tYXgoXyx2W2VdKSx3PU1hdGgubWluKHcsdltlXSksaz1NYXRoLm1heChrLG1bZV0pLFQ9TWF0aC5taW4oVCxtW2VdKSxpfHxnW2VdPT09Y3x8KGk9ITAsTSs9IngiKSxzfHx2W2VdPT09aHx8KHM9ITAsTSs9InkiKSxsfHxtW2VdPT09cHx8KGw9ITAsTSs9InoiKTtpfHwoTSs9IngiKSxzfHwoTSs9InkiKSxsfHwoTSs9InoiKTt2YXIgQT1vKHQuX3gpLFM9byh0Ll95KSxFPW8odC5feik7TT0oTT0oTT1NLnJlcGxhY2UoIngiLChjPnU/Ii0iOiIrIikrIngiKSkucmVwbGFjZSgieSIsKGg+Zj8iLSI6IisiKSsieSIpKS5yZXBsYWNlKCJ6IiwocD5kPyItIjoiKyIpKyJ6Iik7dmFyIEw9ZnVuY3Rpb24oKXt5PTAsQT1bXSxTPVtdLEU9W119OygheXx8eTxBLmxlbmd0aCpTLmxlbmd0aCpFLmxlbmd0aCkmJkwoKTt2YXIgQz1mdW5jdGlvbih0KXtyZXR1cm4ieCI9PT10P2c6InkiPT09dD92Om19LFA9ZnVuY3Rpb24odCl7cmV0dXJuIngiPT09dD9BOiJ5Ij09PXQ/UzpFfSxPPWZ1bmN0aW9uKHQpe3JldHVybiB0W3ktMV08dFswXT8tMToxfSx6PUMoTVsxXSksST1DKE1bM10pLEQ9QyhNWzVdKSxSPVAoTVsxXSkubGVuZ3RoLEY9UChNWzNdKS5sZW5ndGgsQj1QKE1bNV0pLmxlbmd0aCxOPSExLGo9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBSKihGKnQrZSkrcn0sVj1PKEMoTVsxXSkpLFU9TyhDKE1bM10pKSxxPU8oQyhNWzVdKSk7Zm9yKGU9MDtlPEItMTtlKyspe2ZvcihyPTA7cjxGLTE7cisrKXtmb3IoYT0wO2E8Ui0xO2ErKyl7dmFyIEg9aihlLHIsYSksRz1qKGUscixhKzEpLFk9aihlLHIrMSxhKSxXPWooZSsxLHIsYSk7aWYoeltIXSpWPHpbR10qViYmSVtIXSpVPElbWV0qVSYmRFtIXSpxPERbV10qcXx8KE49ITApLE4pYnJlYWt9aWYoTilicmVha31pZihOKWJyZWFrfXJldHVybiBOJiYobi53YXJuKCJFbmNvdW50ZXJlZCBhcmJpdHJhcnkgY29vcmRpbmF0ZXMhIFVuYWJsZSB0byBpbnB1dCBkYXRhIGdyaWQuIiksTCgpKSx7eE1pbjpiLHlNaW46dyx6TWluOlQseE1heDp4LHlNYXg6Xyx6TWF4OmssWHM6QSxZczpTLFpzOkUsbGVuOnksZmlsbDpNfX1mdW5jdGlvbiBvKHQpe3JldHVybiBuLmRpc3RpbmN0VmFscyh0KS52YWxzfWZ1bmN0aW9uIHModCxlKXtpZih2b2lkIDA9PT1lJiYoZT10Lmxlbmd0aCksbi5pc1R5cGVkQXJyYXkodCkpcmV0dXJuIHQuc3ViYXJyYXkoMCxlKTtmb3IodmFyIHI9W10sYT0wO2E8ZTthKyspclthXT0rdFthXTtyZXR1cm4gcn1lLmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXtlLl9sZW49TWF0aC5taW4oZS51Lmxlbmd0aCxlLnYubGVuZ3RoLGUudy5sZW5ndGgsZS54Lmxlbmd0aCxlLnkubGVuZ3RoLGUuei5sZW5ndGgpLGUuX3U9cyhlLnUsZS5fbGVuKSxlLl92PXMoZS52LGUuX2xlbiksZS5fdz1zKGUudyxlLl9sZW4pLGUuX3g9cyhlLngsZS5fbGVuKSxlLl95PXMoZS55LGUuX2xlbiksZS5fej1zKGUueixlLl9sZW4pO3ZhciByPWkoZSk7ZS5fZ3JpZEZpbGw9ci5maWxsLGUuX1hzPXIuWHMsZS5fWXM9ci5ZcyxlLl9acz1yLlpzLGUuX2xlbj1yLmxlbjt2YXIgbixvLGwsYz0wO2Uuc3RhcnRzJiYobj1zKGUuc3RhcnRzLnh8fFtdKSxvPXMoZS5zdGFydHMueXx8W10pLGw9cyhlLnN0YXJ0cy56fHxbXSksYz1NYXRoLm1pbihuLmxlbmd0aCxvLmxlbmd0aCxsLmxlbmd0aCkpLGUuX3N0YXJ0c1g9bnx8W10sZS5fc3RhcnRzWT1vfHxbXSxlLl9zdGFydHNaPWx8fFtdO3ZhciB1LGg9MCxmPTEvMDtmb3IodT0wO3U8ZS5fbGVuO3UrKyl7dmFyIHA9ZS5fdVt1XSxkPWUuX3ZbdV0sZz1lLl93W3VdLHY9TWF0aC5zcXJ0KHAqcCtkKmQrZypnKTtoPU1hdGgubWF4KGgsdiksZj1NYXRoLm1pbihmLHYpfWZvcihhKHQsZSx7dmFsczpbZixoXSxjb250YWluZXJTdHI6IiIsY0xldHRlcjoiYyJ9KSx1PTA7dTxjO3UrKyl7dmFyIG09blt1XTtyLnhNYXg9TWF0aC5tYXgoci54TWF4LG0pLHIueE1pbj1NYXRoLm1pbihyLnhNaW4sbSk7dmFyIHk9b1t1XTtyLnlNYXg9TWF0aC5tYXgoci55TWF4LHkpLHIueU1pbj1NYXRoLm1pbihyLnlNaW4seSk7dmFyIHg9bFt1XTtyLnpNYXg9TWF0aC5tYXgoci56TWF4LHgpLHIuek1pbj1NYXRoLm1pbihyLnpNaW4seCl9ZS5fc2xlbj1jLGUuX25vcm1NYXg9aCxlLl94Ym5kcz1bci54TWluLHIueE1heF0sZS5feWJuZHM9W3IueU1pbixyLnlNYXhdLGUuX3pibmRzPVtyLnpNaW4sci56TWF4XX0sZmlsdGVyOnMscHJvY2Vzc0dyaWQ6aX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjYwMCwiLi4vLi4vbGliIjo3MTd9XSwxMjI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLXN0cmVhbXR1YmUzZCIpLGE9bi5jcmVhdGVUdWJlTWVzaCxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLnBhcnNlQ29sb3JTY2FsZSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLmV4dHJhY3RPcHRzLGw9dCgiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIiksYz17eGF4aXM6MCx5YXhpczoxLHpheGlzOjJ9O2Z1bmN0aW9uIHUodCxlKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9ZSx0aGlzLm1lc2g9bnVsbCx0aGlzLmRhdGE9bnVsbH12YXIgaD11LnByb3RvdHlwZTtmdW5jdGlvbiBmKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBlPjI/dC5zbGljZSgxLGUtMSk6Mj09PWU/Wyh0WzBdK3RbMV0pLzJdOnR9ZnVuY3Rpb24gcCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gMT09PWU/Wy41LC41XTpbdFsxXS10WzBdLHRbZS0xXS10W2UtMl1dfWZ1bmN0aW9uIGQodCxlKXt2YXIgcj10LmZ1bGxTY2VuZUxheW91dCxhPXQuZGF0YVNjYWxlLHU9ZS5fbGVuLGg9e307ZnVuY3Rpb24gZCh0LGUpe3ZhciBuPXJbZV0sbz1hW2NbZV1dO3JldHVybiBpLnNpbXBsZU1hcCh0LGZ1bmN0aW9uKHQpe3JldHVybiBuLmQybCh0KSpvfSl9aWYoaC52ZWN0b3JzPWwoZChlLl91LCJ4YXhpcyIpLGQoZS5fdiwieWF4aXMiKSxkKGUuX3csInpheGlzIiksdSksIXUpcmV0dXJue3Bvc2l0aW9uczpbXSxjZWxsczpbXX07dmFyIGc9ZChlLl9YcywieGF4aXMiKSx2PWQoZS5fWXMsInlheGlzIiksbT1kKGUuX1pzLCJ6YXhpcyIpO2lmKGgubWVzaGdyaWQ9W2csdixtXSxoLmdyaWRGaWxsPWUuX2dyaWRGaWxsLGUuX3NsZW4paC5zdGFydGluZ1Bvc2l0aW9ucz1sKGQoZS5fc3RhcnRzWCwieGF4aXMiKSxkKGUuX3N0YXJ0c1ksInlheGlzIiksZChlLl9zdGFydHNaLCJ6YXhpcyIpKTtlbHNle2Zvcih2YXIgeT12WzBdLHg9ZihnKSxiPWYobSksXz1uZXcgQXJyYXkoeC5sZW5ndGgqYi5sZW5ndGgpLHc9MCxrPTA7azx4Lmxlbmd0aDtrKyspZm9yKHZhciBUPTA7VDxiLmxlbmd0aDtUKyspX1t3KytdPVt4W2tdLHksYltUXV07aC5zdGFydGluZ1Bvc2l0aW9ucz1ffWguY29sb3JtYXA9byhlKSxoLnR1YmVTaXplPWUuc2l6ZXJlZixoLm1heExlbmd0aD1lLm1heGRpc3BsYXllZDt2YXIgTT1kKGUuX3hibmRzLCJ4YXhpcyIpLEE9ZChlLl95Ym5kcywieWF4aXMiKSxTPWQoZS5femJuZHMsInpheGlzIiksRT1wKGcpLEw9cCh2KSxDPXAobSksUD1bW01bMF0tRVswXSxBWzBdLUxbMF0sU1swXS1DWzBdXSxbTVsxXStFWzFdLEFbMV0rTFsxXSxTWzFdK0NbMV1dXSxPPW4oaCxQKSx6PXMoZSk7Ty52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHM9W3oubWluL2UuX25vcm1NYXgsei5tYXgvZS5fbm9ybU1heF07dmFyIEk9ZS5saWdodHBvc2l0aW9uO3JldHVybiBPLmxpZ2h0UG9zaXRpb249W0kueCxJLnksSS56XSxPLmFtYmllbnQ9ZS5saWdodGluZy5hbWJpZW50LE8uZGlmZnVzZT1lLmxpZ2h0aW5nLmRpZmZ1c2UsTy5zcGVjdWxhcj1lLmxpZ2h0aW5nLnNwZWN1bGFyLE8ucm91Z2huZXNzPWUubGlnaHRpbmcucm91Z2huZXNzLE8uZnJlc25lbD1lLmxpZ2h0aW5nLmZyZXNuZWwsTy5vcGFjaXR5PWUub3BhY2l0eSxlLl9wYWQ9Ty50dWJlU2NhbGUqZS5zaXplcmVmKjIsT31oLmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zY2VuZS5mdWxsU2NlbmVMYXlvdXQscj10aGlzLnNjZW5lLmRhdGFTY2FsZTtmdW5jdGlvbiBuKHQsbil7dmFyIGE9ZVtuXSxpPXJbY1tuXV07cmV0dXJuIGEubDJjKHQpL2l9aWYodC5vYmplY3Q9PT10aGlzLm1lc2gpe3ZhciBhPXQuZGF0YS5wb3NpdGlvbixpPXQuZGF0YS52ZWxvY2l0eTtyZXR1cm4gdC50cmFjZUNvb3JkaW5hdGU9W24oYVswXSwieGF4aXMiKSxuKGFbMV0sInlheGlzIiksbihhWzJdLCJ6YXhpcyIpLG4oaVswXSwieGF4aXMiKSxuKGlbMV0sInlheGlzIiksbihpWzJdLCJ6YXhpcyIpLHQuZGF0YS5pbnRlbnNpdHkqdGhpcy5kYXRhLl9ub3JtTWF4LHQuZGF0YS5kaXZlcmdlbmNlXSx0LnRleHRMYWJlbD10aGlzLmRhdGEuaG92ZXJ0ZXh0fHx0aGlzLmRhdGEudGV4dCwhMH19LGgudXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuZGF0YT10O3ZhciBlPWQodGhpcy5zY2VuZSx0KTt0aGlzLm1lc2gudXBkYXRlKGUpfSxoLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5tZXNoKSx0aGlzLm1lc2guZGlzcG9zZSgpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmdscGxvdC5nbCxuPWQodCxlKSxpPWEocixuKSxvPW5ldyB1KHQsZS51aWQpO3JldHVybiBvLm1lc2g9aSxvLmRhdGE9ZSxpLl90cmFjZT1vLHQuZ2xwbG90LmFkZChpKSxvfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjcxNCwiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIjo4MTYsImdsLXN0cmVhbXR1YmUzZCI6MzE1fV0sMTIyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLGk9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe2Z1bmN0aW9uIHMocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX12YXIgbD1zKCJ1IiksYz1zKCJ2IiksdT1zKCJ3IiksaD1zKCJ4IiksZj1zKCJ5IikscD1zKCJ6Iik7bCYmbC5sZW5ndGgmJmMmJmMubGVuZ3RoJiZ1JiZ1Lmxlbmd0aCYmaCYmaC5sZW5ndGgmJmYmJmYubGVuZ3RoJiZwJiZwLmxlbmd0aD8ocygic3RhcnRzLngiKSxzKCJzdGFydHMueSIpLHMoInN0YXJ0cy56IikscygibWF4ZGlzcGxheWVkIikscygic2l6ZXJlZiIpLHMoImxpZ2h0aW5nLmFtYmllbnQiKSxzKCJsaWdodGluZy5kaWZmdXNlIikscygibGlnaHRpbmcuc3BlY3VsYXIiKSxzKCJsaWdodGluZy5yb3VnaG5lc3MiKSxzKCJsaWdodGluZy5mcmVzbmVsIikscygibGlnaHRwb3NpdGlvbi54IikscygibGlnaHRwb3NpdGlvbi55IikscygibGlnaHRwb3NpdGlvbi56IiksYSh0LGUsbyxzLHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSxzKCJ0ZXh0IikscygiaG92ZXJ0ZXh0IikscygiaG92ZXJ0ZW1wbGF0ZSIpLGUuX2xlbmd0aD1udWxsKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1dGVzIjoxMjI2fV0sMTIzMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzdHJlYW10dWJlIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0ZWdvcmllczpbImdsM2QiLCJzaG93TGVnZW5kIl0sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6e21pbjoiY21pbiIsbWF4OiJjbWF4In0sY2FsYzp0KCIuL2NhbGMiKS5jYWxjLHBsb3Q6dCgiLi9jb252ZXJ0IiksZXZlbnREYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudHViZXg9dC54LHQudHViZXk9dC55LHQudHViZXo9dC56LHQudHViZXU9ZS50cmFjZUNvb3JkaW5hdGVbM10sdC50dWJldj1lLnRyYWNlQ29vcmRpbmF0ZVs0XSx0LnR1YmV3PWUudHJhY2VDb29yZGluYXRlWzVdLHQubm9ybT1lLnRyYWNlQ29vcmRpbmF0ZVs2XSx0LmRpdmVyZ2VuY2U9ZS50cmFjZUNvb3JkaW5hdGVbN10sZGVsZXRlIHQueCxkZWxldGUgdC55LGRlbGV0ZSB0LnosdH0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2wzZCI6ODA1LCIuL2F0dHJpYnV0ZXMiOjEyMjYsIi4vY2FsYyI6MTIyNywiLi9jb252ZXJ0IjoxMjI4LCIuL2RlZmF1bHRzIjoxMjI5fV0sMTIzMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbD10KCIuLi9waWUvYXR0cmlidXRlcyIpLGM9dCgiLi9jb25zdGFudHMiKSx1PXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17bGFiZWxzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHBhcmVudHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGJyYW5jaHZhbHVlczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicmVtYWluZGVyIiwidG90YWwiXSxkZmx0OiJyZW1haW5kZXIiLGVkaXRUeXBlOiJjYWxjIn0sY291bnQ6e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbImJyYW5jaGVzIiwibGVhdmVzIl0sZGZsdDoibGVhdmVzIixlZGl0VHlwZToiY2FsYyJ9LGxldmVsOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90IixhbmltOiEwfSxtYXhkZXB0aDp7dmFsVHlwZToiaW50ZWdlciIsZWRpdFR5cGU6InBsb3QiLGRmbHQ6LTF9LG1hcmtlcjp1KHtjb2xvcnM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbGluZTp7Y29sb3I6dSh7fSxsLm1hcmtlci5saW5lLmNvbG9yLHtkZmx0Om51bGx9KSx3aWR0aDp1KHt9LGwubWFya2VyLmxpbmUud2lkdGgse2RmbHQ6MX0pLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxvKCJtYXJrZXIiLHtjb2xvckF0dHI6ImNvbG9ycyIsYW5pbTohMX0pKSxsZWFmOntvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJzdHlsZSIsbWluOjAsbWF4OjF9LGVkaXRUeXBlOiJwbG90In0sdGV4dDpsLnRleHQsdGV4dGluZm86e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwiY3VycmVudCBwYXRoIiwicGVyY2VudCByb290IiwicGVyY2VudCBlbnRyeSIsInBlcmNlbnQgcGFyZW50Il0sZXh0cmFzOlsibm9uZSJdLGVkaXRUeXBlOiJwbG90In0sdGV4dHRlbXBsYXRlOmkoe2VkaXRUeXBlOiJwbG90In0se2tleXM6Yy5ldmVudERhdGFLZXlzLmNvbmNhdChbImxhYmVsIiwidmFsdWUiXSl9KSxob3ZlcnRleHQ6bC5ob3ZlcnRleHQsaG92ZXJpbmZvOnUoe30sbi5ob3ZlcmluZm8se2ZsYWdzOlsibGFiZWwiLCJ0ZXh0IiwidmFsdWUiLCJuYW1lIiwiY3VycmVudCBwYXRoIiwicGVyY2VudCByb290IiwicGVyY2VudCBlbnRyeSIsInBlcmNlbnQgcGFyZW50Il0sZGZsdDoibGFiZWwrdGV4dCt2YWx1ZStuYW1lIn0pLGhvdmVydGVtcGxhdGU6YSh7fSx7a2V5czpjLmV2ZW50RGF0YUtleXN9KSx0ZXh0Zm9udDpsLnRleHRmb250LGluc2lkZXRleHRvcmllbnRhdGlvbjpsLmluc2lkZXRleHRvcmllbnRhdGlvbixpbnNpZGV0ZXh0Zm9udDpsLmluc2lkZXRleHRmb250LG91dHNpZGV0ZXh0Zm9udDp1KHt9LGwub3V0c2lkZXRleHRmb250LHt9KSxkb21haW46cyh7bmFtZToic3VuYnVyc3QiLHRyYWNlOiEwLGVkaXRUeXBlOiJjYWxjIn0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vcGllL2F0dHJpYnV0ZXMiOjEwOTQsIi4vY29uc3RhbnRzIjoxMjM0fV0sMTIzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9wbG90cyIpO3IubmFtZT0ic3VuYnVyc3QiLHIucGxvdD1mdW5jdGlvbih0LGUsYSxpKXtuLnBsb3RCYXNlUGxvdChyLm5hbWUsdCxlLGEsaSl9LHIuY2xlYW49ZnVuY3Rpb24odCxlLGEsaSl7bi5jbGVhbkJhc2VQbG90KHIubmFtZSx0LGUsYSxpKX19LHsiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNn1dLDEyMzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMtaGllcmFyY2h5IiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKS5tYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2Uscz10KCIuLi9waWUvY2FsYyIpLm1ha2VQdWxsQ29sb3JGbixsPXQoIi4uL3BpZS9jYWxjIikuZ2VuZXJhdGVFeHRlbmRlZENvbG9ycyxjPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLmNhbGMsdT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQUxNT1NUX0VRVUFMLGg9e30sZj17fTtyLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgcixsLGgsZixwLGQsZz10Ll9mdWxsTGF5b3V0LHY9ZS5pZHMsbT1pLmlzQXJyYXlPclR5cGVkQXJyYXkodikseT1lLmxhYmVscyx4PWUucGFyZW50cyxiPWUudmFsdWVzLF89aS5pc0FycmF5T3JUeXBlZEFycmF5KGIpLHc9W10saz17fSxUPXt9LE09ZnVuY3Rpb24odCl7cmV0dXJuIHR8fCJudW1iZXIiPT10eXBlb2YgdH0sQT1mdW5jdGlvbih0KXtyZXR1cm4hX3x8YShiW3RdKSYmYlt0XT49MH07bT8ocj1NYXRoLm1pbih2Lmxlbmd0aCx4Lmxlbmd0aCksbD1mdW5jdGlvbih0KXtyZXR1cm4gTSh2W3RdKSYmQSh0KX0saD1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHZbdF0pfSk6KHI9TWF0aC5taW4oeS5sZW5ndGgseC5sZW5ndGgpLGw9ZnVuY3Rpb24odCl7cmV0dXJuIE0oeVt0XSkmJkEodCl9LGg9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh5W3RdKX0pLF8mJihyPU1hdGgubWluKHIsYi5sZW5ndGgpKTtmb3IodmFyIFM9MDtTPHI7UysrKWlmKGwoUykpe3ZhciBFPWgoUyksTD1NKHhbU10pP1N0cmluZyh4W1NdKToiIixDPXtpOlMsaWQ6RSxwaWQ6TCxsYWJlbDpNKHlbU10pP1N0cmluZyh5W1NdKToiIn07XyYmKEMudj0rYltTXSksdy5wdXNoKEMpLHA9RSxrW2Y9TF0/a1tmXS5wdXNoKHApOmtbZl09W3BdLFRbcF09MX1pZihrWyIiXSl7aWYoa1siIl0ubGVuZ3RoPjEpe2Zvcih2YXIgUD1pLnJhbmRzdHIoKSxPPTA7Tzx3Lmxlbmd0aDtPKyspIiI9PT13W09dLnBpZCYmKHdbT10ucGlkPVApO3cudW5zaGlmdCh7aGFzTXVsdGlwbGVSb290czohMCxpZDpQLHBpZDoiIixsYWJlbDoiIn0pfX1lbHNle3ZhciB6LEk9W107Zm9yKHogaW4gaylUW3pdfHxJLnB1c2goeik7aWYoMSE9PUkubGVuZ3RoKXJldHVybiBpLndhcm4oIk11bHRpcGxlIGltcGxpZWQgcm9vdHMsIGNhbm5vdCBidWlsZCAiK2UudHlwZSsiIGhpZXJhcmNoeS4iKTt6PUlbMF0sdy51bnNoaWZ0KHtoYXNJbXBsaWVkUm9vdDohMCxpZDp6LHBpZDoiIixsYWJlbDp6fSl9dHJ5e2Q9bi5zdHJhdGlmeSgpLmlkKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSkucGFyZW50SWQoZnVuY3Rpb24odCl7cmV0dXJuIHQucGlkfSkodyl9Y2F0Y2godCl7cmV0dXJuIGkud2FybigiRmFpbGVkIHRvIGJ1aWxkICIrZS50eXBlKyIgaGllcmFyY2h5LiBFcnJvcjogIit0Lm1lc3NhZ2UpfXZhciBEPW4uaGllcmFyY2h5KGQpLFI9ITE7aWYoXylzd2l0Y2goZS5icmFuY2h2YWx1ZXMpe2Nhc2UicmVtYWluZGVyIjpELnN1bShmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhLnZ9KTticmVhaztjYXNlInRvdGFsIjpELmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRhLmRhdGEscj1lLnY7aWYodC5jaGlsZHJlbil7dmFyIG49dC5jaGlsZHJlbi5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmRhdGEuZGF0YS52fSwwKTtpZigoZS5oYXNJbXBsaWVkUm9vdHx8ZS5oYXNNdWx0aXBsZVJvb3RzKSYmKHI9bikscjxuKnUpcmV0dXJuIFI9ITAsaS53YXJuKFsiVG90YWwgdmFsdWUgZm9yIG5vZGUiLHQuZGF0YS5kYXRhLmlkLCJpcyBzbWFsbGVyIHRoYW4gdGhlIHN1bSBvZiBpdHMgY2hpbGRyZW4uIiwiXG5wYXJlbnQgdmFsdWUgPSIsciwiXG5jaGlsZHJlbiBzdW0gPSIsbl0uam9pbigiICIpKX10LnZhbHVlPXJ9KX1lbHNlIWZ1bmN0aW9uIHQoZSxyLG4pe3ZhciBhPTA7dmFyIGk9ZS5jaGlsZHJlbjtpZihpKXtmb3IodmFyIG89aS5sZW5ndGgscz0wO3M8bztzKyspYSs9dChpW3NdLHIsbik7bi5icmFuY2hlcyYmYSsrfWVsc2Ugbi5sZWF2ZXMmJmErKztlLnZhbHVlPWUuZGF0YS5kYXRhLnZhbHVlPWE7ci5fdmFsdWVzfHwoci5fdmFsdWVzPVtdKTtyLl92YWx1ZXNbZS5kYXRhLmRhdGEuaV09YTtyZXR1cm4gYX0oRCxlLHticmFuY2hlczotMSE9PWUuY291bnQuaW5kZXhPZigiYnJhbmNoZXMiKSxsZWF2ZXM6LTEhPT1lLmNvdW50LmluZGV4T2YoImxlYXZlcyIpfSk7aWYoIVIpe3ZhciBGLEI7RC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudmFsdWUtdC52YWx1ZX0pO3ZhciBOPWUubWFya2VyLmNvbG9yc3x8W10saj0hIU4ubGVuZ3RoO3JldHVybiBlLl9oYXNDb2xvcnNjYWxlPyhqfHwoTj1fP2UudmFsdWVzOmUuX3ZhbHVlcyksYyh0LGUse3ZhbHM6Tixjb250YWluZXJTdHI6Im1hcmtlciIsY0xldHRlcjoiYyJ9KSxCPW8oZS5tYXJrZXIpKTpGPXMoZ1siXyIrZS50eXBlKyJjb2xvcm1hcCJdKSxELmVhY2goZnVuY3Rpb24odCl7dmFyIHI9dC5kYXRhLmRhdGE7ci5jb2xvcj1lLl9oYXNDb2xvcnNjYWxlP0IoTltyLmldKTpGKE5bci5pXSxyLmlkKX0pLHdbMF0uaGllcmFyY2h5PUQsd319LHIuX3J1bkNyb3NzVHJhY2VDYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5fZnVsbExheW91dCxuPWUuY2FsY2RhdGEsYT1yW3QrImNvbG9yd2F5Il0saT1yWyJfIit0KyJjb2xvcm1hcCJdO3JbImV4dGVuZCIrdCsiY29sb3JzIl0mJihhPWwoYSwidHJlZW1hcCI9PT10P2Y6aCkpO3ZhciBvPTA7ZnVuY3Rpb24gcyh0KXt2YXIgZT10LmRhdGEuZGF0YSxyPWUuaWQ7ITE9PT1lLmNvbG9yJiYoaVtyXT9lLmNvbG9yPWlbcl06dC5wYXJlbnQ/dC5wYXJlbnQucGFyZW50P2UuY29sb3I9dC5wYXJlbnQuZGF0YS5kYXRhLmNvbG9yOihpW3JdPWUuY29sb3I9YVtvJWEubGVuZ3RoXSxvKyspOmUuY29sb3I9InJnYmEoMCwwLDAsMCkiKX1mb3IodmFyIGM9MDtjPG4ubGVuZ3RoO2MrKyl7dmFyIHU9bltjXVswXTt1LnRyYWNlLnR5cGU9PT10JiZ1LmhpZXJhcmNoeSYmdS5oaWVyYXJjaHkuZWFjaChzKX19LHIuY3Jvc3NUcmFjZUNhbGM9ZnVuY3Rpb24odCl7cmV0dXJuIHIuX3J1bkNyb3NzVHJhY2VDYWxjKCJzdW5idXJzdCIsdCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi9waWUvY2FsYyI6MTA5NiwiZDMtaGllcmFyY2h5IjoxNTksImZhc3QtaXNudW1lcmljIjoyMjh9XSwxMjM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Q0xJQ0tfVFJBTlNJVElPTl9USU1FOjc1MCxDTElDS19UUkFOU0lUSU9OX0VBU0lORzoibGluZWFyIixldmVudERhdGFLZXlzOlsiY3VycmVudFBhdGgiLCJyb290IiwiZW50cnkiLCJwZXJjZW50Um9vdCIsInBlcmNlbnRFbnRyeSIsInBlcmNlbnRQYXJlbnQiXX19LHt9XSwxMjM1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9kb21haW4iKS5kZWZhdWx0cyxvPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZVRleHQscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxsPXMuaGFzQ29sb3JzY2FsZSxjPXMuaGFuZGxlRGVmYXVsdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe2Z1bmN0aW9uIHUocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgaD11KCJsYWJlbHMiKSxmPXUoInBhcmVudHMiKTtpZihoJiZoLmxlbmd0aCYmZiYmZi5sZW5ndGgpe3ZhciBwPXUoInZhbHVlcyIpO3AmJnAubGVuZ3RoP3UoImJyYW5jaHZhbHVlcyIpOnUoImNvdW50IiksdSgibGV2ZWwiKSx1KCJtYXhkZXB0aCIpLHUoIm1hcmtlci5saW5lLndpZHRoIikmJnUoIm1hcmtlci5saW5lLmNvbG9yIixzLnBhcGVyX2JnY29sb3IpLHUoIm1hcmtlci5jb2xvcnMiKTt2YXIgZD1lLl9oYXNDb2xvcnNjYWxlPWwodCwibWFya2VyIiwiY29sb3JzIil8fCh0Lm1hcmtlcnx8e30pLmNvbG9yYXhpcztkJiZjKHQsZSxzLHUse3ByZWZpeDoibWFya2VyLiIsY0xldHRlcjoiYyJ9KSx1KCJsZWFmLm9wYWNpdHkiLGQ/MTouNyk7dmFyIGc9dSgidGV4dCIpO3UoInRleHR0ZW1wbGF0ZSIpLGUudGV4dHRlbXBsYXRlfHx1KCJ0ZXh0aW5mbyIsQXJyYXkuaXNBcnJheShnKT8idGV4dCtsYWJlbCI6ImxhYmVsIiksdSgiaG92ZXJ0ZXh0IiksdSgiaG92ZXJ0ZW1wbGF0ZSIpO28odCxlLHMsdSwiYXV0byIse21vZHVsZUhhc1NlbGVjdGVkOiExLG1vZHVsZUhhc1Vuc2VsZWN0ZWQ6ITEsbW9kdWxlSGFzQ29uc3RyYWluOiExLG1vZHVsZUhhc0NsaXBvbmF4aXM6ITEsbW9kdWxlSGFzVGV4dGFuZ2xlOiExLG1vZHVsZUhhc0luc2lkZWFuY2hvcjohMX0pLHUoImluc2lkZXRleHRvcmllbnRhdGlvbiIpLGkoZSxzLHUpLGUuX2xlbmd0aD1udWxsfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NzkwLCIuLi9iYXIvZGVmYXVsdHMiOjg2MCwiLi9hdHRyaWJ1dGVzIjoxMjMxfV0sMTIzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyIpLmFwcGVuZEFycmF5UG9pbnRWYWx1ZSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgiLi4vLi4vbGliL2V2ZW50cyIpLGM9dCgiLi9oZWxwZXJzIiksdT10KCIuLi9waWUvaGVscGVycyIpLmZvcm1hdFBpZVZhbHVlO2Z1bmN0aW9uIGgodCxlLHIpe2Zvcih2YXIgbj10LmRhdGEuZGF0YSxhPXtjdXJ2ZU51bWJlcjplLmluZGV4LHBvaW50TnVtYmVyOm4uaSxkYXRhOmUuX2lucHV0LGZ1bGxEYXRhOmV9LG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIHM9cltvXTtzIGluIHQmJihhW3NdPXRbc10pfXJldHVybiJwYXJlbnRTdHJpbmciaW4gdCYmIWMuaXNIaWVyYXJjaHlSb290KHQpJiYoYS5wYXJlbnQ9dC5wYXJlbnRTdHJpbmcpLGkoYSxlLG4uaSksYX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxmKXt2YXIgcD1pWzBdLGQ9cC50cmFjZSxnPXAuaGllcmFyY2h5LHY9InN1bmJ1cnN0Ij09PWQudHlwZSxtPSJ0cmVlbWFwIj09PWQudHlwZTsiX2hhc0hvdmVyTGFiZWwiaW4gZHx8KGQuX2hhc0hvdmVyTGFiZWw9ITEpLCJfaGFzSG92ZXJFdmVudCJpbiBkfHwoZC5faGFzSG92ZXJFdmVudD0hMSk7dC5vbigibW91c2VvdmVyIixmdW5jdGlvbihhKXt2YXIgaT1yLl9mdWxsTGF5b3V0O2lmKCFyLl9kcmFnZ2luZyYmITEhPT1pLmhvdmVybW9kZSl7dmFyIGw9ci5fZnVsbERhdGFbZC5pbmRleF0seT1hLmRhdGEuZGF0YSx4PXkuaSxiPWMuaXNIaWVyYXJjaHlSb290KGEpLF89Yy5nZXRQYXJlbnQoZyxhKSx3PWMuZ2V0VmFsdWUoYSksaz1mdW5jdGlvbih0KXtyZXR1cm4gcy5jYXN0T3B0aW9uKGwseCx0KX0sVD1rKCJob3ZlcnRlbXBsYXRlIiksTT1vLmNhc3RIb3ZlcmluZm8obCxpLHgpLEE9aS5zZXBhcmF0b3JzO2lmKFR8fE0mJiJub25lIiE9PU0mJiJza2lwIiE9PU0pe3ZhciBTLEU7diYmKFM9cC5jeCthLnB4bWlkWzBdKigxLWEuckluc2NyaWJlZCksRT1wLmN5K2EucHhtaWRbMV0qKDEtYS5ySW5zY3JpYmVkKSksbSYmKFM9YS5faG92ZXJYLEU9YS5faG92ZXJZKTt2YXIgTCxDPXt9LFA9W10sTz1bXSx6PWZ1bmN0aW9uKHQpe3JldHVybi0xIT09UC5pbmRleE9mKHQpfTtNJiYoUD0iYWxsIj09PU0/bC5fbW9kdWxlLmF0dHJpYnV0ZXMuaG92ZXJpbmZvLmZsYWdzOk0uc3BsaXQoIisiKSksQy5sYWJlbD15LmxhYmVsLHooImxhYmVsIikmJkMubGFiZWwmJk8ucHVzaChDLmxhYmVsKSx5Lmhhc093blByb3BlcnR5KCJ2IikmJihDLnZhbHVlPXkudixDLnZhbHVlTGFiZWw9dShDLnZhbHVlLEEpLHooInZhbHVlIikmJk8ucHVzaChDLnZhbHVlTGFiZWwpKSxDLmN1cnJlbnRQYXRoPWEuY3VycmVudFBhdGg9Yy5nZXRQYXRoKGEuZGF0YSkseigiY3VycmVudCBwYXRoIikmJiFiJiZPLnB1c2goQy5jdXJyZW50UGF0aCk7dmFyIEk9W10sRD1mdW5jdGlvbigpey0xPT09SS5pbmRleE9mKEwpJiYoTy5wdXNoKEwpLEkucHVzaChMKSl9O0MucGVyY2VudFBhcmVudD1hLnBlcmNlbnRQYXJlbnQ9dy9jLmdldFZhbHVlKF8pLEMucGFyZW50PWEucGFyZW50U3RyaW5nPWMuZ2V0UHRMYWJlbChfKSx6KCJwZXJjZW50IHBhcmVudCIpJiYoTD1jLmZvcm1hdFBlcmNlbnQoQy5wZXJjZW50UGFyZW50LEEpKyIgb2YgIitDLnBhcmVudCxEKCkpLEMucGVyY2VudEVudHJ5PWEucGVyY2VudEVudHJ5PXcvYy5nZXRWYWx1ZShlKSxDLmVudHJ5PWEuZW50cnk9Yy5nZXRQdExhYmVsKGUpLCF6KCJwZXJjZW50IGVudHJ5Iil8fGJ8fGEub25QYXRoYmFyfHwoTD1jLmZvcm1hdFBlcmNlbnQoQy5wZXJjZW50RW50cnksQSkrIiBvZiAiK0MuZW50cnksRCgpKSxDLnBlcmNlbnRSb290PWEucGVyY2VudFJvb3Q9dy9jLmdldFZhbHVlKGcpLEMucm9vdD1hLnJvb3Q9Yy5nZXRQdExhYmVsKGcpLHooInBlcmNlbnQgcm9vdCIpJiYhYiYmKEw9Yy5mb3JtYXRQZXJjZW50KEMucGVyY2VudFJvb3QsQSkrIiBvZiAiK0Mucm9vdCxEKCkpLEMudGV4dD1rKCJob3ZlcnRleHQiKXx8aygidGV4dCIpLHooInRleHQiKSYmKEw9Qy50ZXh0LHMuaXNWYWxpZFRleHRWYWx1ZShMKSYmTy5wdXNoKEwpKTt2YXIgUj17dHJhY2U6bCx5OkUsdGV4dDpPLmpvaW4oIjxicj4iKSxuYW1lOlR8fHooIm5hbWUiKT9sLm5hbWU6dm9pZCAwLGNvbG9yOmsoImhvdmVybGFiZWwuYmdjb2xvciIpfHx5LmNvbG9yLGJvcmRlckNvbG9yOmsoImhvdmVybGFiZWwuYm9yZGVyY29sb3IiKSxmb250RmFtaWx5OmsoImhvdmVybGFiZWwuZm9udC5mYW1pbHkiKSxmb250U2l6ZTprKCJob3ZlcmxhYmVsLmZvbnQuc2l6ZSIpLGZvbnRDb2xvcjprKCJob3ZlcmxhYmVsLmZvbnQuY29sb3IiKSxuYW1lTGVuZ3RoOmsoImhvdmVybGFiZWwubmFtZWxlbmd0aCIpLHRleHRBbGlnbjprKCJob3ZlcmxhYmVsLmFsaWduIiksaG92ZXJ0ZW1wbGF0ZTpULGhvdmVydGVtcGxhdGVMYWJlbHM6QyxldmVudERhdGE6W2goYSxsLGYuZXZlbnREYXRhS2V5cyldfTt2JiYoUi54MD1TLWEuckluc2NyaWJlZCphLnJweDEsUi54MT1TK2Euckluc2NyaWJlZCphLnJweDEsUi5pZGVhbEFsaWduPWEucHhtaWRbMF08MD8ibGVmdCI6InJpZ2h0IiksbSYmKFIueD1TLFIuaWRlYWxBbGlnbj1TPDA/ImxlZnQiOiJyaWdodCIpLG8ubG9uZUhvdmVyKFIse2NvbnRhaW5lcjppLl9ob3ZlcmxheWVyLm5vZGUoKSxvdXRlckNvbnRhaW5lcjppLl9wYXBlci5ub2RlKCksZ2Q6cn0pLGQuX2hhc0hvdmVyTGFiZWw9ITB9aWYobSl7dmFyIEY9dC5zZWxlY3QoInBhdGguc3VyZmFjZSIpO2Yuc3R5bGVPbmUoRixhLGwse2hvdmVyZWQ6ITB9KX1kLl9oYXNIb3ZlckV2ZW50PSEwLHIuZW1pdCgicGxvdGx5X2hvdmVyIix7cG9pbnRzOltoKGEsbCxmLmV2ZW50RGF0YUtleXMpXSxldmVudDpuLmV2ZW50fSl9fSksdC5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUpe3ZhciBhPXIuX2Z1bGxMYXlvdXQsaT1yLl9mdWxsRGF0YVtkLmluZGV4XSxzPW4uc2VsZWN0KHRoaXMpLmRhdHVtKCk7aWYoZC5faGFzSG92ZXJFdmVudCYmKGUub3JpZ2luYWxFdmVudD1uLmV2ZW50LHIuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtwb2ludHM6W2gocyxpLGYuZXZlbnREYXRhS2V5cyldLGV2ZW50Om4uZXZlbnR9KSxkLl9oYXNIb3ZlckV2ZW50PSExKSxkLl9oYXNIb3ZlckxhYmVsJiYoby5sb25lVW5ob3ZlcihhLl9ob3ZlcmxheWVyLm5vZGUoKSksZC5faGFzSG92ZXJMYWJlbD0hMSksbSl7dmFyIGw9dC5zZWxlY3QoInBhdGguc3VyZmFjZSIpO2Yuc3R5bGVPbmUobCxzLGkse2hvdmVyZWQ6ITF9KX19KSx0Lm9uKCJjbGljayIsZnVuY3Rpb24odCl7dmFyIGU9ci5fZnVsbExheW91dCxpPXIuX2Z1bGxEYXRhW2QuaW5kZXhdLHM9diYmKGMuaXNIaWVyYXJjaHlSb290KHQpfHxjLmlzTGVhZih0KSksdT1jLmdldFB0SWQodCkscD1jLmlzRW50cnkodCk/Yy5maW5kRW50cnlXaXRoQ2hpbGQoZyx1KTpjLmZpbmRFbnRyeVdpdGhMZXZlbChnLHUpLG09Yy5nZXRQdElkKHApLHk9e3BvaW50czpbaCh0LGksZi5ldmVudERhdGFLZXlzKV0sZXZlbnQ6bi5ldmVudH07c3x8KHkubmV4dExldmVsPW0pO3ZhciB4PWwudHJpZ2dlckhhbmRsZXIociwicGxvdGx5XyIrZC50eXBlKyJjbGljayIseSk7aWYoITEhPT14JiZlLmhvdmVybW9kZSYmKHIuX2hvdmVyZGF0YT1baCh0LGksZi5ldmVudERhdGFLZXlzKV0sby5jbGljayhyLG4uZXZlbnQpKSwhcyYmITEhPT14JiYhci5fZHJhZ2dpbmcmJiFyLl90cmFuc2l0aW9uaW5nKXthLmNhbGwoIl9zdG9yZURpcmVjdEdVSUVkaXQiLGksZS5fdHJhY2VQcmVHVUlbaS51aWRdLHtsZXZlbDppLmxldmVsfSk7dmFyIGI9e2RhdGE6W3tsZXZlbDptfV0sdHJhY2VzOltkLmluZGV4XX0sXz17ZnJhbWU6e3JlZHJhdzohMSxkdXJhdGlvbjpmLnRyYW5zaXRpb25UaW1lfSx0cmFuc2l0aW9uOntkdXJhdGlvbjpmLnRyYW5zaXRpb25UaW1lLGVhc2luZzpmLnRyYW5zaXRpb25FYXNpbmd9LG1vZGU6ImltbWVkaWF0ZSIsZnJvbWN1cnJlbnQ6ITB9O28ubG9uZVVuaG92ZXIoZS5faG92ZXJsYXllci5ub2RlKCkpLGEuY2FsbCgiYW5pbWF0ZSIscixiLF8pfX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyI6NjI3LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2V2ZW50cyI6NzA3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9waWUvaGVscGVycyI6MTA5OSwiLi9oZWxwZXJzIjoxMjM3LGQzOjE2NX1dLDEyMzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIiksbz10KCIuLi9waWUvaGVscGVycyIpO2Z1bmN0aW9uIHModCl7cmV0dXJuIHQuZGF0YS5kYXRhLnBpZH1yLmZpbmRFbnRyeVdpdGhMZXZlbD1mdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiBlJiZ0LmVhY2hBZnRlcihmdW5jdGlvbih0KXtpZihyLmdldFB0SWQodCk9PT1lKXJldHVybiBuPXQuY29weSgpfSksbnx8dH0sci5maW5kRW50cnlXaXRoQ2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gdC5lYWNoQWZ0ZXIoZnVuY3Rpb24odCl7Zm9yKHZhciBhPXQuY2hpbGRyZW58fFtdLGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIG89YVtpXTtpZihyLmdldFB0SWQobyk9PT1lKXJldHVybiBuPXQuY29weSgpfX0pLG58fHR9LHIuaXNFbnRyeT1mdW5jdGlvbih0KXtyZXR1cm4hdC5wYXJlbnR9LHIuaXNMZWFmPWZ1bmN0aW9uKHQpe3JldHVybiF0LmNoaWxkcmVufSxyLmdldFB0SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YS5kYXRhLmlkfSxyLmdldFB0TGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YS5kYXRhLmxhYmVsfSxyLmdldFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSxyLmlzSGllcmFyY2h5Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4iIj09PXModCl9LHIuc2V0U2xpY2VDdXJzb3I9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPW4uaXNUcmFuc2l0aW9uaW5nO2lmKCFhKXt2YXIgbz10LmRhdHVtKCk7YT1uLmhpZGVPblJvb3QmJnIuaXNIaWVyYXJjaHlSb290KG8pfHxuLmhpZGVPbkxlYXZlcyYmci5pc0xlYWYobyl9aSh0LGE/bnVsbDoicG9pbnRlciIpfSxyLmdldEluc2lkZVRleHRGb250S2V5PWZ1bmN0aW9uKHQsZSxyLGEsaSl7dmFyIG89KGl8fHt9KS5vblBhdGhiYXI/InBhdGhiYXIudGV4dGZvbnQiOiJpbnNpZGV0ZXh0Zm9udCIscz1yLmRhdGEuZGF0YS5pO3JldHVybiBuLmNhc3RPcHRpb24oZSxzLG8rIi4iK3QpfHxuLmNhc3RPcHRpb24oZSxzLCJ0ZXh0Zm9udC4iK3QpfHxhLnNpemV9LHIuZ2V0T3V0c2lkZVRleHRGb250S2V5PWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPXIuZGF0YS5kYXRhLmk7cmV0dXJuIG4uY2FzdE9wdGlvbihlLGksIm91dHNpZGV0ZXh0Zm9udC4iK3QpfHxuLmNhc3RPcHRpb24oZSxpLCJ0ZXh0Zm9udC4iK3QpfHxhLnNpemV9LHIuaXNPdXRzaWRlVGV4dD1mdW5jdGlvbih0LGUpe3JldHVybiF0Ll9oYXNDb2xvcnNjYWxlJiZyLmlzSGllcmFyY2h5Um9vdChlKX0sci5kZXRlcm1pbmVUZXh0Rm9udD1mdW5jdGlvbih0LGUsaSxvKXtyZXR1cm4gci5pc091dHNpZGVUZXh0KHQsZSk/ZnVuY3Rpb24odCxlLG4pe3JldHVybntjb2xvcjpyLmdldE91dHNpZGVUZXh0Rm9udEtleSgiY29sb3IiLHQsZSxuKSxmYW1pbHk6ci5nZXRPdXRzaWRlVGV4dEZvbnRLZXkoImZhbWlseSIsdCxlLG4pLHNpemU6ci5nZXRPdXRzaWRlVGV4dEZvbnRLZXkoInNpemUiLHQsZSxuKX19KHQsZSxpKTpmdW5jdGlvbih0LGUsaSxvKXt2YXIgcz0ob3x8e30pLm9uUGF0aGJhcixsPWUuZGF0YS5kYXRhLGM9bC5pLHU9bi5jYXN0T3B0aW9uKHQsYywocz8icGF0aGJhci50ZXh0Zm9udCI6Imluc2lkZXRleHRmb250IikrIi5jb2xvciIpO3JldHVybiF1JiZ0Ll9pbnB1dC50ZXh0Zm9udCYmKHU9bi5jYXN0T3B0aW9uKHQuX2lucHV0LGMsInRleHRmb250LmNvbG9yIikpLHtjb2xvcjp1fHxhLmNvbnRyYXN0KGwuY29sb3IpLGZhbWlseTpyLmdldEluc2lkZVRleHRGb250S2V5KCJmYW1pbHkiLHQsZSxpLG8pLHNpemU6ci5nZXRJbnNpZGVUZXh0Rm9udEtleSgic2l6ZSIsdCxlLGksbyl9fSh0LGUsaSxvKX0sci5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiEhKHQmJnQuZHVyYXRpb24+MCl9LHIuZ2V0TWF4RGVwdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHQubWF4ZGVwdGg+PTA/dC5tYXhkZXB0aDoxLzB9LHIuaXNIZWFkZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKHIuaXNMZWFmKHQpfHx0LmRlcHRoPT09ZS5fbWF4RGVwdGgtMSl9LHIuZ2V0UGFyZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZmluZEVudHJ5V2l0aExldmVsKHQscyhlKSl9LHIubGlzdFBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj10LnBhcmVudDtpZighbilyZXR1cm5bXTt2YXIgYT1lP1tuLmRhdGFbZV1dOltuXTtyZXR1cm4gci5saXN0UGF0aChuLGUpLmNvbmNhdChhKX0sci5nZXRQYXRoPWZ1bmN0aW9uKHQpe3JldHVybiByLmxpc3RQYXRoKHQsImxhYmVsIikuam9pbigiLyIpKyIvIn0sci5mb3JtYXRWYWx1ZT1vLmZvcm1hdFBpZVZhbHVlLHIuZm9ybWF0UGVyY2VudD1mdW5jdGlvbih0LGUpe3ZhciByPW4uZm9ybWF0UGVyY2VudCh0LDApO3JldHVybiIwJSI9PT1yJiYocj1vLmZvcm1hdFBpZVBlcmNlbnQodCxlKSkscn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3NldGN1cnNvciI6NzM3LCIuLi9waWUvaGVscGVycyI6MTA5OX1dLDEyMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic3VuYnVyc3QiLGJhc2VQbG90TW9kdWxlOnQoIi4vYmFzZV9wbG90IiksY2F0ZWdvcmllczpbXSxhbmltYXRhYmxlOiEwLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKS5jYWxjLGNyb3NzVHJhY2VDYWxjOnQoIi4vY2FsYyIpLmNyb3NzVHJhY2VDYWxjLHBsb3Q6dCgiLi9wbG90IikucGxvdCxzdHlsZTp0KCIuL3N0eWxlIikuc3R5bGUsY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiKSxtZXRhOnt9fX0seyIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciI6MTEzOCwiLi9hdHRyaWJ1dGVzIjoxMjMxLCIuL2Jhc2VfcGxvdCI6MTIzMiwiLi9jYWxjIjoxMjMzLCIuL2RlZmF1bHRzIjoxMjM1LCIuL2xheW91dF9hdHRyaWJ1dGVzIjoxMjM5LCIuL2xheW91dF9kZWZhdWx0cyI6MTI0MCwiLi9wbG90IjoxMjQxLCIuL3N0eWxlIjoxMjQyfV0sMTIzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3N1bmJ1cnN0Y29sb3J3YXk6e3ZhbFR5cGU6ImNvbG9ybGlzdCIsZWRpdFR5cGU6ImNhbGMifSxleHRlbmRzdW5idXJzdGNvbG9yczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDEyNDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfXIoInN1bmJ1cnN0Y29sb3J3YXkiLGUuY29sb3J3YXkpLHIoImV4dGVuZHN1bmJ1cnN0Y29sb3JzIil9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2xheW91dF9hdHRyaWJ1dGVzIjoxMjM5fV0sMTI0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiZDMtaGllcmFyY2h5IiksaT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksbD10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IiksYz1sLnJlY29yZE1pblRleHRTaXplLHU9bC5jbGVhck1pblRleHRTaXplLGg9dCgiLi4vcGllL3Bsb3QiKSxmPWguY29tcHV0ZVRyYW5zZm9ybSxwPWgudHJhbnNmb3JtSW5zaWRlVGV4dCxkPXQoIi4vc3R5bGUiKS5zdHlsZU9uZSxnPXQoIi4uL2Jhci9zdHlsZSIpLnJlc2l6ZVRleHQsdj10KCIuL2Z4IiksbT10KCIuL2NvbnN0YW50cyIpLHk9dCgiLi9oZWxwZXJzIik7ZnVuY3Rpb24geCh0LGUsbCx1KXt2YXIgaD10Ll9mdWxsTGF5b3V0LGc9IWgudW5pZm9ybXRleHQubW9kZSYmeS5oYXNUcmFuc2l0aW9uKHUpLHg9bi5zZWxlY3QobCkuc2VsZWN0QWxsKCJnLnNsaWNlIiksXz1lWzBdLHc9Xy50cmFjZSxrPV8uaGllcmFyY2h5LFQ9eS5maW5kRW50cnlXaXRoTGV2ZWwoayx3LmxldmVsKSxNPXkuZ2V0TWF4RGVwdGgodyksQT1oLl9zaXplLFM9dy5kb21haW4sRT1BLncqKFMueFsxXS1TLnhbMF0pLEw9QS5oKihTLnlbMV0tUy55WzBdKSxDPS41Kk1hdGgubWluKEUsTCksUD1fLmN4PUEubCtBLncqKFMueFsxXStTLnhbMF0pLzIsTz1fLmN5PUEudCtBLmgqKDEtUy55WzBdKS1MLzI7aWYoIVQpcmV0dXJuIHgucmVtb3ZlKCk7dmFyIHo9bnVsbCxJPXt9O2cmJnguZWFjaChmdW5jdGlvbih0KXtJW3kuZ2V0UHRJZCh0KV09e3JweDA6dC5ycHgwLHJweDE6dC5ycHgxLHgwOnQueDAseDE6dC54MSx0cmFuc2Zvcm06dC50cmFuc2Zvcm19LCF6JiZ5LmlzRW50cnkodCkmJih6PXQpfSk7dmFyIEQ9ZnVuY3Rpb24odCl7cmV0dXJuIGEucGFydGl0aW9uKCkuc2l6ZShbMipNYXRoLlBJLHQuaGVpZ2h0KzFdKSh0KX0oVCkuZGVzY2VuZGFudHMoKSxSPVQuaGVpZ2h0KzEsRj0wLEI9TTtfLmhhc011bHRpcGxlUm9vdHMmJnkuaXNIaWVyYXJjaHlSb290KFQpJiYoRD1ELnNsaWNlKDEpLFItPTEsRj0xLEIrPTEpLEQ9RC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQueTE8PUJ9KTt2YXIgTj1NYXRoLm1pbihSLE0pLGo9ZnVuY3Rpb24odCl7cmV0dXJuKHQtRikvTipDfSxWPWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QqTWF0aC5jb3MoZSksLXQqTWF0aC5zaW4oZSldfSxVPWZ1bmN0aW9uKHQpe3JldHVybiBvLnBhdGhBbm51bHVzKHQucnB4MCx0LnJweDEsdC54MCx0LngxLFAsTyl9LHE9ZnVuY3Rpb24odCl7cmV0dXJuIFArYih0KVswXSoodC50cmFuc2Zvcm0uckNlbnRlcnx8MCkrKHQudHJhbnNmb3JtLnh8fDApfSxIPWZ1bmN0aW9uKHQpe3JldHVybiBPK2IodClbMV0qKHQudHJhbnNmb3JtLnJDZW50ZXJ8fDApKyh0LnRyYW5zZm9ybS55fHwwKX07KHg9eC5kYXRhKEQseS5nZXRQdElkKSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzbGljZSIsITApLGc/eC5leGl0KCkudHJhbnNpdGlvbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKTt0LnNlbGVjdCgicGF0aC5zdXJmYWNlIikudHJhbnNpdGlvbigpLmF0dHJUd2VlbigiZCIsZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGUscj15LmdldFB0SWQodCksYT1JW3JdLGk9SVt5LmdldFB0SWQoVCldO2lmKGkpe3ZhciBvPXQueDE+aS54MT8yKk1hdGguUEk6MDtlPXQucnB4MTxpLnJweDE/e3JweDA6MCxycHgxOjB9Ont4MDpvLHgxOm99fWVsc2V7dmFyIHMsbD15LmdldFB0SWQodC5wYXJlbnQpO3guZWFjaChmdW5jdGlvbih0KXtpZih5LmdldFB0SWQodCk9PT1sKXJldHVybiBzPXR9KTt2YXIgYyx1PXMuY2hpbGRyZW47dS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7aWYoeS5nZXRQdElkKHQpPT09cilyZXR1cm4gYz1lfSk7dmFyIGg9dS5sZW5ndGgsZj1uLmludGVycG9sYXRlKHMueDAscy54MSk7ZT17cnB4MDpDLHJweDE6Qyx4MDpmKGMvaCkseDE6ZigoYysxKS9oKX19cmV0dXJuIG4uaW50ZXJwb2xhdGUoYSxlKX0odCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVKGUodCkpfX0pLHQuc2VsZWN0KCJnLnNsaWNldGV4dCIpLmF0dHIoIm9wYWNpdHkiLDApfSkucmVtb3ZlKCk6eC5leGl0KCkucmVtb3ZlKCkseC5vcmRlcigpO3ZhciBHPW51bGw7aWYoZyYmeil7dmFyIFk9eS5nZXRQdElkKHopO3guZWFjaChmdW5jdGlvbih0KXtudWxsPT09RyYmeS5nZXRQdElkKHQpPT09WSYmKEc9dC54MSl9KX12YXIgVz14O2Z1bmN0aW9uIFgodCl7dmFyIGU9dC5wYXJlbnQscj1JW3kuZ2V0UHRJZChlKV0sYT17fTtpZihyKXt2YXIgaT1lLmNoaWxkcmVuLG89aS5pbmRleE9mKHQpLHM9aS5sZW5ndGgsbD1uLmludGVycG9sYXRlKHIueDAsci54MSk7YS54MD1sKG8vcyksYS54MT1sKG8vcyl9ZWxzZSBhLngwPWEueDE9MDtyZXR1cm4gYX1nJiYoVz1XLnRyYW5zaXRpb24oKS5lYWNoKCJlbmQiLGZ1bmN0aW9uKCl7dmFyIGU9bi5zZWxlY3QodGhpcyk7eS5zZXRTbGljZUN1cnNvcihlLHQse2hpZGVPblJvb3Q6ITAsaGlkZU9uTGVhdmVzOiEwLGlzVHJhbnNpdGlvbmluZzohMX0pfSkpLFcuZWFjaChmdW5jdGlvbihhKXt2YXIgbD1uLnNlbGVjdCh0aGlzKSx1PW8uZW5zdXJlU2luZ2xlKGwsInBhdGgiLCJzdXJmYWNlIixmdW5jdGlvbih0KXt0LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSk7YS5ycHgwPWooYS55MCksYS5ycHgxPWooYS55MSksYS54bWlkPShhLngwK2EueDEpLzIsYS5weG1pZD1WKGEucnB4MSxhLnhtaWQpLGEubWlkYW5nbGU9LShhLnhtaWQtTWF0aC5QSS8yKSxhLnN0YXJ0YW5nbGU9LShhLngwLU1hdGguUEkvMiksYS5zdG9wYW5nbGU9LShhLngxLU1hdGguUEkvMiksYS5oYWxmYW5nbGU9LjUqTWF0aC5taW4oby5hbmdsZURlbHRhKGEueDAsYS54MSl8fE1hdGguUEksTWF0aC5QSSksYS5yaW5nPTEtYS5ycHgwL2EucnB4MSxhLnJJbnNjcmliZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LnJweDAmJm8uaXNGdWxsQ2lyY2xlKFt0LngwLHQueDFdKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMS8oMSsxL01hdGguc2luKHQuaGFsZmFuZ2xlKSksdC5yaW5nLzIpKX0oYSksZz91LnRyYW5zaXRpb24oKS5hdHRyVHdlZW4oImQiLGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe3ZhciBlLHI9SVt5LmdldFB0SWQodCldLGE9e3gwOnQueDAseDE6dC54MSxycHgwOnQucnB4MCxycHgxOnQucnB4MX07aWYocillPXI7ZWxzZSBpZih6KWlmKHQucGFyZW50KWlmKEcpe3ZhciBpPXQueDE+Rz8yKk1hdGguUEk6MDtlPXt4MDppLHgxOml9fWVsc2UgZT17cnB4MDpDLHJweDE6Q30sby5leHRlbmRGbGF0KGUsWCh0KSk7ZWxzZSBlPXtycHgwOjAscnB4MTowfTtlbHNlIGU9e3gwOjAseDE6MH07cmV0dXJuIG4uaW50ZXJwb2xhdGUoZSxhKX0odCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVKGUodCkpfX0pOnUuYXR0cigiZCIsVSksbC5jYWxsKHYsVCx0LGUse2V2ZW50RGF0YUtleXM6bS5ldmVudERhdGFLZXlzLHRyYW5zaXRpb25UaW1lOm0uQ0xJQ0tfVFJBTlNJVElPTl9USU1FLHRyYW5zaXRpb25FYXNpbmc6bS5DTElDS19UUkFOU0lUSU9OX0VBU0lOR30pLmNhbGwoeS5zZXRTbGljZUN1cnNvcix0LHtoaWRlT25Sb290OiEwLGhpZGVPbkxlYXZlczohMCxpc1RyYW5zaXRpb25pbmc6dC5fdHJhbnNpdGlvbmluZ30pLHUuY2FsbChkLGEsdyk7dmFyIHg9by5lbnN1cmVTaW5nbGUobCwiZyIsInNsaWNldGV4dCIpLGI9by5lbnN1cmVTaW5nbGUoeCwidGV4dCIsIiIsZnVuY3Rpb24odCl7dC5hdHRyKCJkYXRhLW5vdGV4IiwxKX0pLGs9by5lbnN1cmVVbmlmb3JtRm9udFNpemUodCx5LmRldGVybWluZVRleHRGb250KHcsYSxoLmZvbnQpKTtiLnRleHQoci5mb3JtYXRTbGljZUxhYmVsKGEsVCx3LGUsaCkpLmNsYXNzZWQoInNsaWNldGV4dCIsITApLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuY2FsbChpLmZvbnQsaykuY2FsbChzLmNvbnZlcnRUb1RzcGFucyx0KTt2YXIgTT1pLmJCb3goYi5ub2RlKCkpO2EudHJhbnNmb3JtPXAoTSxhLF8pLGEudHJhbnNmb3JtLnRhcmdldFg9cShhKSxhLnRyYW5zZm9ybS50YXJnZXRZPUgoYSk7dmFyIEE9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnRyYW5zZm9ybTtyZXR1cm4gZihyLGUpLHIuZm9udFNpemU9ay5zaXplLGMody50eXBlLHIsaCksby5nZXRUZXh0VHJhbnNmb3JtKHIpfTtnP2IudHJhbnNpdGlvbigpLmF0dHJUd2VlbigidHJhbnNmb3JtIixmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZSxyPUlbeS5nZXRQdElkKHQpXSxhPXQudHJhbnNmb3JtO2lmKHIpZT1yO2Vsc2UgaWYoZT17cnB4MTp0LnJweDEsdHJhbnNmb3JtOnt0ZXh0UG9zQW5nbGU6YS50ZXh0UG9zQW5nbGUsc2NhbGU6MCxyb3RhdGU6YS5yb3RhdGUsckNlbnRlcjphLnJDZW50ZXIseDphLngseTphLnl9fSx6KWlmKHQucGFyZW50KWlmKEcpe3ZhciBpPXQueDE+Rz8yKk1hdGguUEk6MDtlLngwPWUueDE9aX1lbHNlIG8uZXh0ZW5kRmxhdChlLFgodCkpO2Vsc2UgZS54MD1lLngxPTA7ZWxzZSBlLngwPWUueDE9MDt2YXIgcz1uLmludGVycG9sYXRlKGUudHJhbnNmb3JtLnRleHRQb3NBbmdsZSx0LnRyYW5zZm9ybS50ZXh0UG9zQW5nbGUpLGw9bi5pbnRlcnBvbGF0ZShlLnJweDEsdC5ycHgxKSx1PW4uaW50ZXJwb2xhdGUoZS54MCx0LngwKSxmPW4uaW50ZXJwb2xhdGUoZS54MSx0LngxKSxwPW4uaW50ZXJwb2xhdGUoZS50cmFuc2Zvcm0uc2NhbGUsYS5zY2FsZSksZD1uLmludGVycG9sYXRlKGUudHJhbnNmb3JtLnJvdGF0ZSxhLnJvdGF0ZSksZz0wPT09YS5yQ2VudGVyPzM6MD09PWUudHJhbnNmb3JtLnJDZW50ZXI/MS8zOjEsdj1uLmludGVycG9sYXRlKGUudHJhbnNmb3JtLnJDZW50ZXIsYS5yQ2VudGVyKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bCh0KSxyPXUodCksbj1mKHQpLGk9ZnVuY3Rpb24odCl7cmV0dXJuIHYoTWF0aC5wb3codCxnKSl9KHQpLG89VihlLChyK24pLzIpLG09cyh0KSx5PXtweG1pZDpvLHJweDE6ZSx0cmFuc2Zvcm06e3RleHRQb3NBbmdsZTptLHJDZW50ZXI6aSx4OmEueCx5OmEueX19O3JldHVybiBjKHcudHlwZSxhLGgpLHt0cmFuc2Zvcm06e3RhcmdldFg6cSh5KSx0YXJnZXRZOkgoeSksc2NhbGU6cCh0KSxyb3RhdGU6ZCh0KSxyQ2VudGVyOml9fX19KHQpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQShlKHQpLE0pfX0pOmIuYXR0cigidHJhbnNmb3JtIixBKGEsTSkpfSl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gZT10LnJweDEscj10LnRyYW5zZm9ybS50ZXh0UG9zQW5nbGUsW2UqTWF0aC5zaW4ociksLWUqTWF0aC5jb3MocildO3ZhciBlLHJ9ci5wbG90PWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpLG8scz10Ll9mdWxsTGF5b3V0LGw9cy5fc3VuYnVyc3RsYXllcixjPSFyLGg9IXMudW5pZm9ybXRleHQubW9kZSYmeS5oYXNUcmFuc2l0aW9uKHIpOyh1KCJzdW5idXJzdCIscyksKGk9bC5zZWxlY3RBbGwoImcudHJhY2Uuc3VuYnVyc3QiKS5kYXRhKGUsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2UudWlkfSkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgidHJhY2UiLCEwKS5jbGFzc2VkKCJzdW5idXJzdCIsITApLmF0dHIoInN0cm9rZS1saW5lam9pbiIsInJvdW5kIiksaS5vcmRlcigpLGgpPyhhJiYobz1hKCkpLG4udHJhbnNpdGlvbigpLmR1cmF0aW9uKHIuZHVyYXRpb24pLmVhc2Uoci5lYXNpbmcpLmVhY2goImVuZCIsZnVuY3Rpb24oKXtvJiZvKCl9KS5lYWNoKCJpbnRlcnJ1cHQiLGZ1bmN0aW9uKCl7byYmbygpfSkuZWFjaChmdW5jdGlvbigpe2wuc2VsZWN0QWxsKCJnLnRyYWNlIikuZWFjaChmdW5jdGlvbihlKXt4KHQsZSx0aGlzLHIpfSl9KSk6KGkuZWFjaChmdW5jdGlvbihlKXt4KHQsZSx0aGlzLHIpfSkscy51bmlmb3JtdGV4dC5tb2RlJiZnKHQscy5fc3VuYnVyc3RsYXllci5zZWxlY3RBbGwoIi50cmFjZSIpLCJzdW5idXJzdCIpKTtjJiZpLmV4aXQoKS5yZW1vdmUoKX0sci5mb3JtYXRTbGljZUxhYmVsPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9ci50ZXh0dGVtcGxhdGUscz1yLnRleHRpbmZvO2lmKCEoaXx8cyYmIm5vbmUiIT09cykpcmV0dXJuIiI7dmFyIGw9YS5zZXBhcmF0b3JzLGM9blswXSx1PXQuZGF0YS5kYXRhLGg9Yy5oaWVyYXJjaHksZj15LmlzSGllcmFyY2h5Um9vdCh0KSxwPXkuZ2V0UGFyZW50KGgsdCksZD15LmdldFZhbHVlKHQpO2lmKCFpKXt2YXIgZyx2PXMuc3BsaXQoIisiKSxtPWZ1bmN0aW9uKHQpe3JldHVybi0xIT09di5pbmRleE9mKHQpfSx4PVtdO2lmKG0oImxhYmVsIikmJnUubGFiZWwmJngucHVzaCh1LmxhYmVsKSx1Lmhhc093blByb3BlcnR5KCJ2IikmJm0oInZhbHVlIikmJngucHVzaCh5LmZvcm1hdFZhbHVlKHUudixsKSksIWYpe20oImN1cnJlbnQgcGF0aCIpJiZ4LnB1c2goeS5nZXRQYXRoKHQuZGF0YSkpO3ZhciBiPTA7bSgicGVyY2VudCBwYXJlbnQiKSYmYisrLG0oInBlcmNlbnQgZW50cnkiKSYmYisrLG0oInBlcmNlbnQgcm9vdCIpJiZiKys7dmFyIF89Yj4xO2lmKGIpe3ZhciB3LGs9ZnVuY3Rpb24odCl7Zz15LmZvcm1hdFBlcmNlbnQodyxsKSxfJiYoZys9IiBvZiAiK3QpLHgucHVzaChnKX07bSgicGVyY2VudCBwYXJlbnQiKSYmIWYmJih3PWQveS5nZXRWYWx1ZShwKSxrKCJwYXJlbnQiKSksbSgicGVyY2VudCBlbnRyeSIpJiYodz1kL3kuZ2V0VmFsdWUoZSksaygiZW50cnkiKSksbSgicGVyY2VudCByb290IikmJih3PWQveS5nZXRWYWx1ZShoKSxrKCJyb290IikpfX1yZXR1cm4gbSgidGV4dCIpJiYoZz1vLmNhc3RPcHRpb24ocix1LmksInRleHQiKSxvLmlzVmFsaWRUZXh0VmFsdWUoZykmJngucHVzaChnKSkseC5qb2luKCI8YnI+Iil9dmFyIFQ9by5jYXN0T3B0aW9uKHIsdS5pLCJ0ZXh0dGVtcGxhdGUiKTtpZighVClyZXR1cm4iIjt2YXIgTT17fTt1LmxhYmVsJiYoTS5sYWJlbD11LmxhYmVsKSx1Lmhhc093blByb3BlcnR5KCJ2IikmJihNLnZhbHVlPXUudixNLnZhbHVlTGFiZWw9eS5mb3JtYXRWYWx1ZSh1LnYsbCkpLE0uY3VycmVudFBhdGg9eS5nZXRQYXRoKHQuZGF0YSksZnx8KE0ucGVyY2VudFBhcmVudD1kL3kuZ2V0VmFsdWUocCksTS5wZXJjZW50UGFyZW50TGFiZWw9eS5mb3JtYXRQZXJjZW50KE0ucGVyY2VudFBhcmVudCxsKSxNLnBhcmVudD15LmdldFB0TGFiZWwocCkpLE0ucGVyY2VudEVudHJ5PWQveS5nZXRWYWx1ZShlKSxNLnBlcmNlbnRFbnRyeUxhYmVsPXkuZm9ybWF0UGVyY2VudChNLnBlcmNlbnRFbnRyeSxsKSxNLmVudHJ5PXkuZ2V0UHRMYWJlbChlKSxNLnBlcmNlbnRSb290PWQveS5nZXRWYWx1ZShoKSxNLnBlcmNlbnRSb290TGFiZWw9eS5mb3JtYXRQZXJjZW50KE0ucGVyY2VudFJvb3QsbCksTS5yb290PXkuZ2V0UHRMYWJlbChoKSx1Lmhhc093blByb3BlcnR5KCJjb2xvciIpJiYoTS5jb2xvcj11LmNvbG9yKTt2YXIgQT1vLmNhc3RPcHRpb24ocix1LmksInRleHQiKTtyZXR1cm4oby5pc1ZhbGlkVGV4dFZhbHVlKEEpfHwiIj09PUEpJiYoTS50ZXh0PUEpLE0uY3VzdG9tZGF0YT1vLmNhc3RPcHRpb24ocix1LmksImN1c3RvbWRhdGEiKSxvLnRleHR0ZW1wbGF0ZVN0cmluZyhULE0sYS5fZDNsb2NhbGUsTSxyLl9tZXRhfHx7fSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uL2Jhci9zdHlsZSI6ODcwLCIuLi9iYXIvdW5pZm9ybV90ZXh0Ijo4NzIsIi4uL3BpZS9wbG90IjoxMTAzLCIuL2NvbnN0YW50cyI6MTIzNCwiLi9meCI6MTIzNiwiLi9oZWxwZXJzIjoxMjM3LCIuL3N0eWxlIjoxMjQyLGQzOjE2NSwiZDMtaGllcmFyY2h5IjoxNTl9XSwxMjQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKS5yZXNpemVUZXh0O2Z1bmN0aW9uIHModCxlLHIpe3ZhciBuPWUuZGF0YS5kYXRhLG89IWUuY2hpbGRyZW4scz1uLmksbD1pLmNhc3RPcHRpb24ocixzLCJtYXJrZXIubGluZS5jb2xvciIpfHxhLmRlZmF1bHRMaW5lLGM9aS5jYXN0T3B0aW9uKHIscywibWFya2VyLmxpbmUud2lkdGgiKXx8MDt0LnN0eWxlKCJzdHJva2Utd2lkdGgiLGMpLmNhbGwoYS5maWxsLG4uY29sb3IpLmNhbGwoYS5zdHJva2UsbCkuc3R5bGUoIm9wYWNpdHkiLG8/ci5sZWFmLm9wYWNpdHk6bnVsbCl9ZS5leHBvcnRzPXtzdHlsZTpmdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0Ll9zdW5idXJzdGxheWVyLnNlbGVjdEFsbCgiLnRyYWNlIik7byh0LGUsInN1bmJ1cnN0IiksZS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLHI9dFswXS50cmFjZTtlLnN0eWxlKCJvcGFjaXR5IixyLm9wYWNpdHkpLGUuc2VsZWN0QWxsKCJwYXRoLnN1cmZhY2UiKS5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLmNhbGwocyx0LHIpfSl9KX0sc3R5bGVPbmU6c319LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLGQzOjE2NX1dLDEyNDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxsPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbDtmdW5jdGlvbiBjKHQpe3JldHVybntzaG93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxzdGFydDp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsZWRpdFR5cGU6InBsb3QifSxlbmQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGVkaXRUeXBlOiJwbG90In0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsbWluOjAsZWRpdFR5cGU6InBsb3QifSxwcm9qZWN0Ont4Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSx5Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSx6Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfX0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om4uZGVmYXVsdExpbmV9LHVzZWNvbG9ybWFwOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MSxtYXg6MTYsZGZsdDoyfSxoaWdobGlnaHQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LGhpZ2hsaWdodGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxoaWdobGlnaHR3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MSxtYXg6MTYsZGZsdDoyfX19dmFyIHU9ZS5leHBvcnRzPWwocyh7ejp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHg6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sdGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITB9LGhvdmVydGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITB9LGhvdmVydGVtcGxhdGU6aSgpLGNvbm5lY3RnYXBzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJjYWxjIn0sc3VyZmFjZWNvbG9yOnt2YWxUeXBlOiJkYXRhX2FycmF5In19LGEoIiIse2NvbG9yQXR0cjoieiBvciBzdXJmYWNlY29sb3IiLHNob3dTY2FsZURmbHQ6ITAsYXV0b0NvbG9yRGZsdDohMSxlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pLHtjb250b3Vyczp7eDpjKCkseTpjKCksejpjKCl9LGhpZGVzdXJmYWNlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsaWdodHBvc2l0aW9uOnt4Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMWU1LG1heDoxZTUsZGZsdDoxMH0seTp7dmFsVHlwZToibnVtYmVyIixtaW46LTFlNSxtYXg6MWU1LGRmbHQ6MWU0fSx6Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMWU1LG1heDoxZTUsZGZsdDowfX0sbGlnaHRpbmc6e2FtYmllbnQ6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouOH0sZGlmZnVzZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi44fSxzcGVjdWxhcjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MixkZmx0Oi4wNX0scm91Z2huZXNzOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6LjV9LGZyZXNuZWw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjUsZGZsdDouMn19LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfSxfZGVwcmVjYXRlZDp7emF1dG86cyh7fSxhLnphdXRvLHt9KSx6bWluOnMoe30sYS56bWluLHt9KSx6bWF4OnMoe30sYS56bWF4LHt9KX0saG92ZXJpbmZvOnMoe30sby5ob3ZlcmluZm8pLHNob3dsZWdlbmQ6cyh7fSxvLnNob3dsZWdlbmQse2RmbHQ6ITF9KX0pLCJjYWxjIiwibmVzdGVkIik7dS54LmVkaXRUeXBlPXUueS5lZGl0VHlwZT11LnouZWRpdFR5cGU9ImNhbGMrY2xlYXJBeGlzVHlwZXMiLHUudHJhbnNmb3Jtcz12b2lkIDB9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDF9XSwxMjQ0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZS5zdXJmYWNlY29sb3I/bih0LGUse3ZhbHM6ZS5zdXJmYWNlY29sb3IsY29udGFpbmVyU3RyOiIiLGNMZXR0ZXI6ImMifSk6bih0LGUse3ZhbHM6ZS56LGNvbnRhaW5lclN0cjoiIixjTGV0dGVyOiJjIn0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6NjAwfV0sMTI0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC1zdXJmYWNlM2QiKSxhPXQoIm5kYXJyYXkiKSxpPXQoIm5kYXJyYXktaG9tb2dyYXBoeSIpLG89dCgibmRhcnJheS1maWxsIikscz10KCIuLi8uLi9saWIiKS5pc0FycmF5T3JUeXBlZEFycmF5LGw9dCgiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLnBhcnNlQ29sb3JTY2FsZSxjPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSx1PXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLmV4dHJhY3RPcHRzLGg9dCgiLi4vaGVhdG1hcC9pbnRlcnAyZCIpLGY9dCgiLi4vaGVhdG1hcC9maW5kX2VtcHRpZXMiKTtmdW5jdGlvbiBwKHQsZSxyKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9cix0aGlzLnN1cmZhY2U9ZSx0aGlzLmRhdGE9bnVsbCx0aGlzLnNob3dDb250b3VyPVshMSwhMSwhMV0sdGhpcy5jb250b3VyU3RhcnQ9W251bGwsbnVsbCxudWxsXSx0aGlzLmNvbnRvdXJFbmQ9W251bGwsbnVsbCxudWxsXSx0aGlzLmNvbnRvdXJTaXplPVswLDAsMF0sdGhpcy5taW5WYWx1ZXM9WzEvMCwxLzAsMS8wXSx0aGlzLm1heFZhbHVlcz1bLTEvMCwtMS8wLC0xLzBdLHRoaXMuZGF0YVNjYWxlWD0xLHRoaXMuZGF0YVNjYWxlWT0xLHRoaXMucmVmaW5lRGF0YT0hMCx0aGlzLm9iamVjdE9mZnNldD1bMCwwLDBdfXZhciBkPXAucHJvdG90eXBlO2QuZ2V0WGF0PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXModGhpcy5kYXRhLngpP3ModGhpcy5kYXRhLnhbMF0pP3RoaXMuZGF0YS54W2VdW3RdOnRoaXMuZGF0YS54W3RdOnQ7cmV0dXJuIHZvaWQgMD09PXI/YTpuLmQybChhLDAscil9LGQuZ2V0WWF0PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXModGhpcy5kYXRhLnkpP3ModGhpcy5kYXRhLnlbMF0pP3RoaXMuZGF0YS55W2VdW3RdOnRoaXMuZGF0YS55W2VdOmU7cmV0dXJuIHZvaWQgMD09PXI/YTpuLmQybChhLDAscil9LGQuZ2V0WmF0PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMuZGF0YS56W2VdW3RdO3JldHVybiBudWxsPT09YSYmdGhpcy5kYXRhLmNvbm5lY3RnYXBzJiZ0aGlzLmRhdGEuX2ludGVycG9sYXRlZFomJihhPXRoaXMuZGF0YS5faW50ZXJwb2xhdGVkWltlXVt0XSksdm9pZCAwPT09cj9hOm4uZDJsKGEsMCxyKX0sZC5oYW5kbGVQaWNrPWZ1bmN0aW9uKHQpe2lmKHQub2JqZWN0PT09dGhpcy5zdXJmYWNlKXt2YXIgZT0odC5kYXRhLmluZGV4WzBdLTEpL3RoaXMuZGF0YVNjYWxlWC0xLHI9KHQuZGF0YS5pbmRleFsxXS0xKS90aGlzLmRhdGFTY2FsZVktMSxuPU1hdGgubWF4KE1hdGgubWluKE1hdGgucm91bmQoZSksdGhpcy5kYXRhLnpbMF0ubGVuZ3RoLTEpLDApLGE9TWF0aC5tYXgoTWF0aC5taW4oTWF0aC5yb3VuZChyKSx0aGlzLmRhdGEuX3lsZW5ndGgtMSksMCk7dC5pbmRleD1bbixhXSx0LnRyYWNlQ29vcmRpbmF0ZT1bdGhpcy5nZXRYYXQobixhKSx0aGlzLmdldFlhdChuLGEpLHRoaXMuZ2V0WmF0KG4sYSldLHQuZGF0YUNvb3JkaW5hdGU9W3RoaXMuZ2V0WGF0KG4sYSx0aGlzLmRhdGEueGNhbGVuZGFyLHRoaXMuc2NlbmUuZnVsbFNjZW5lTGF5b3V0LnhheGlzKSx0aGlzLmdldFlhdChuLGEsdGhpcy5kYXRhLnljYWxlbmRhcix0aGlzLnNjZW5lLmZ1bGxTY2VuZUxheW91dC55YXhpcyksdGhpcy5nZXRaYXQobixhLHRoaXMuZGF0YS56Y2FsZW5kYXIsdGhpcy5zY2VuZS5mdWxsU2NlbmVMYXlvdXQuemF4aXMpXTtmb3IodmFyIGk9MDtpPDM7aSsrKXt2YXIgbz10LmRhdGFDb29yZGluYXRlW2ldO251bGwhPW8mJih0LmRhdGFDb29yZGluYXRlW2ldKj10aGlzLnNjZW5lLmRhdGFTY2FsZVtpXSl9dmFyIHM9dGhpcy5kYXRhLmhvdmVydGV4dHx8dGhpcy5kYXRhLnRleHQ7cmV0dXJuIEFycmF5LmlzQXJyYXkocykmJnNbYV0mJnZvaWQgMCE9PXNbYV1bbl0/dC50ZXh0TGFiZWw9c1thXVtuXTp0LnRleHRMYWJlbD1zfHwiIix0LmRhdGEuZGF0YUNvb3JkaW5hdGU9dC5kYXRhQ29vcmRpbmF0ZS5zbGljZSgpLHRoaXMuc3VyZmFjZS5oaWdobGlnaHQodC5kYXRhKSx0aGlzLnNjZW5lLmdscGxvdC5zcGlrZXMucG9zaXRpb249dC5kYXRhQ29vcmRpbmF0ZSwhMH19O3ZhciBnPVsyLDMsNSw3LDExLDEzLDE3LDE5LDIzLDI5LDMxLDM3LDQxLDQzLDQ3LDUzLDU5LDYxLDY3LDcxLDczLDc5LDgzLDg5LDk3LDEwMSwxMDMsMTA3LDEwOSwxMTMsMTI3LDEzMSwxMzcsMTM5LDE0OSwxNTEsMTU3LDE2MywxNjcsMTczLDE3OSwxODEsMTkxLDE5MywxOTcsMTk5LDIxMSwyMjMsMjI3LDIyOSwyMzMsMjM5LDI0MSwyNTEsMjU3LDI2MywyNjksMjcxLDI3NywyODEsMjgzLDI5MywzMDcsMzExLDMxMywzMTcsMzMxLDMzNywzNDcsMzQ5LDM1MywzNTksMzY3LDM3MywzNzksMzgzLDM4OSwzOTcsNDAxLDQwOSw0MTksNDIxLDQzMSw0MzMsNDM5LDQ0Myw0NDksNDU3LDQ2MSw0NjMsNDY3LDQ3OSw0ODcsNDkxLDQ5OSw1MDMsNTA5LDUyMSw1MjMsNTQxLDU0Nyw1NTcsNTYzLDU2OSw1NzEsNTc3LDU4Nyw1OTMsNTk5LDYwMSw2MDcsNjEzLDYxNyw2MTksNjMxLDY0MSw2NDMsNjQ3LDY1Myw2NTksNjYxLDY3Myw2NzcsNjgzLDY5MSw3MDEsNzA5LDcxOSw3MjcsNzMzLDczOSw3NDMsNzUxLDc1Nyw3NjEsNzY5LDc3Myw3ODcsNzk3LDgwOSw4MTEsODIxLDgyMyw4MjcsODI5LDgzOSw4NTMsODU3LDg1OSw4NjMsODc3LDg4MSw4ODMsODg3LDkwNyw5MTEsOTE5LDkyOSw5MzcsOTQxLDk0Nyw5NTMsOTY3LDk3MSw5NzcsOTgzLDk5MSw5OTcsMTAwOSwxMDEzLDEwMTksMTAyMSwxMDMxLDEwMzMsMTAzOSwxMDQ5LDEwNTEsMTA2MSwxMDYzLDEwNjksMTA4NywxMDkxLDEwOTMsMTA5NywxMTAzLDExMDksMTExNywxMTIzLDExMjksMTE1MSwxMTUzLDExNjMsMTE3MSwxMTgxLDExODcsMTE5MywxMjAxLDEyMTMsMTIxNywxMjIzLDEyMjksMTIzMSwxMjM3LDEyNDksMTI1OSwxMjc3LDEyNzksMTI4MywxMjg5LDEyOTEsMTI5NywxMzAxLDEzMDMsMTMwNywxMzE5LDEzMjEsMTMyNywxMzYxLDEzNjcsMTM3MywxMzgxLDEzOTksMTQwOSwxNDIzLDE0MjcsMTQyOSwxNDMzLDE0MzksMTQ0NywxNDUxLDE0NTMsMTQ1OSwxNDcxLDE0ODEsMTQ4MywxNDg3LDE0ODksMTQ5MywxNDk5LDE1MTEsMTUyMywxNTMxLDE1NDMsMTU0OSwxNTUzLDE1NTksMTU2NywxNTcxLDE1NzksMTU4MywxNTk3LDE2MDEsMTYwNywxNjA5LDE2MTMsMTYxOSwxNjIxLDE2MjcsMTYzNywxNjU3LDE2NjMsMTY2NywxNjY5LDE2OTMsMTY5NywxNjk5LDE3MDksMTcyMSwxNzIzLDE3MzMsMTc0MSwxNzQ3LDE3NTMsMTc1OSwxNzc3LDE3ODMsMTc4NywxNzg5LDE4MDEsMTgxMSwxODIzLDE4MzEsMTg0NywxODYxLDE4NjcsMTg3MSwxODczLDE4NzcsMTg3OSwxODg5LDE5MDEsMTkwNywxOTEzLDE5MzEsMTkzMywxOTQ5LDE5NTEsMTk3MywxOTc5LDE5ODcsMTk5MywxOTk3LDE5OTksMjAwMywyMDExLDIwMTcsMjAyNywyMDI5LDIwMzksMjA1MywyMDYzLDIwNjksMjA4MSwyMDgzLDIwODcsMjA4OSwyMDk5LDIxMTEsMjExMywyMTI5LDIxMzEsMjEzNywyMTQxLDIxNDMsMjE1MywyMTYxLDIxNzksMjIwMywyMjA3LDIyMTMsMjIyMSwyMjM3LDIyMzksMjI0MywyMjUxLDIyNjcsMjI2OSwyMjczLDIyODEsMjI4NywyMjkzLDIyOTcsMjMwOSwyMzExLDIzMzMsMjMzOSwyMzQxLDIzNDcsMjM1MSwyMzU3LDIzNzEsMjM3NywyMzgxLDIzODMsMjM4OSwyMzkzLDIzOTksMjQxMSwyNDE3LDI0MjMsMjQzNywyNDQxLDI0NDcsMjQ1OSwyNDY3LDI0NzMsMjQ3NywyNTAzLDI1MjEsMjUzMSwyNTM5LDI1NDMsMjU0OSwyNTUxLDI1NTcsMjU3OSwyNTkxLDI1OTMsMjYwOSwyNjE3LDI2MjEsMjYzMywyNjQ3LDI2NTcsMjY1OSwyNjYzLDI2NzEsMjY3NywyNjgzLDI2ODcsMjY4OSwyNjkzLDI2OTksMjcwNywyNzExLDI3MTMsMjcxOSwyNzI5LDI3MzEsMjc0MSwyNzQ5LDI3NTMsMjc2NywyNzc3LDI3ODksMjc5MSwyNzk3LDI4MDEsMjgwMywyODE5LDI4MzMsMjgzNywyODQzLDI4NTEsMjg1NywyODYxLDI4NzksMjg4NywyODk3LDI5MDMsMjkwOSwyOTE3LDI5MjcsMjkzOSwyOTUzLDI5NTcsMjk2MywyOTY5LDI5NzEsMjk5OV07ZnVuY3Rpb24gdih0LGUpe2lmKHQ8ZSlyZXR1cm4gMDtmb3IodmFyIHI9MDswPT09TWF0aC5mbG9vcih0JWUpOyl0Lz1lLHIrKztyZXR1cm4gcn1mdW5jdGlvbiBtKHQpe2Zvcih2YXIgZT1bXSxyPTA7cjxnLmxlbmd0aDtyKyspe3ZhciBuPWdbcl07ZS5wdXNoKHYodCxuKSl9cmV0dXJuIGV9ZnVuY3Rpb24geSh0KXtmb3IodmFyIGU9bSh0KSxyPXQsbj0wO248Zy5sZW5ndGg7bisrKWlmKGVbbl0+MCl7cj1nW25dO2JyZWFrfXJldHVybiByfWZ1bmN0aW9uIHgodCxlKXtpZighKHQ8MXx8ZTwxKSl7Zm9yKHZhciByPW0odCksbj1tKGUpLGE9MSxpPTA7aTxnLmxlbmd0aDtpKyspYSo9TWF0aC5wb3coZ1tpXSxNYXRoLm1heChyW2ldLG5baV0pKTtyZXR1cm4gYX19ZC5jYWxjWG51bXM9ZnVuY3Rpb24odCl7dmFyIGUscj1bXTtmb3IoZT0xO2U8dDtlKyspe3ZhciBuPXRoaXMuZ2V0WGF0KGUtMSwwKSxhPXRoaXMuZ2V0WGF0KGUsMCk7cltlLTFdPWEhPT1uJiZudWxsIT1uJiZudWxsIT1hP01hdGguYWJzKGEtbik6MH12YXIgaT0wO2ZvcihlPTE7ZTx0O2UrKylpKz1yW2UtMV07Zm9yKGU9MTtlPHQ7ZSsrKTA9PT1yW2UtMV0/cltlLTFdPTE6cltlLTFdPU1hdGgucm91bmQoaS9yW2UtMV0pO3JldHVybiByfSxkLmNhbGNZbnVtcz1mdW5jdGlvbih0KXt2YXIgZSxyPVtdO2ZvcihlPTE7ZTx0O2UrKyl7dmFyIG49dGhpcy5nZXRZYXQoMCxlLTEpLGE9dGhpcy5nZXRZYXQoMCxlKTtyW2UtMV09YSE9PW4mJm51bGwhPW4mJm51bGwhPWE/TWF0aC5hYnMoYS1uKTowfXZhciBpPTA7Zm9yKGU9MTtlPHQ7ZSsrKWkrPXJbZS0xXTtmb3IoZT0xO2U8dDtlKyspMD09PXJbZS0xXT9yW2UtMV09MTpyW2UtMV09TWF0aC5yb3VuZChpL3JbZS0xXSk7cmV0dXJuIHJ9O3ZhciBiPVsxLDIsNCw2LDEyLDI0LDM2LDQ4LDYwLDEyMCwxODAsMjQwLDM2MCw3MjAsODQwLDEyNjBdLF89Yls5XSx3PWJbMTNdO2Z1bmN0aW9uIGsodCxlKXtmb3IodmFyIHI9ITEsbj0wO248dC5sZW5ndGg7bisrKWlmKGU9PT10W25dKXtyPSEwO2JyZWFrfSExPT09ciYmdC5wdXNoKGUpfWQuZXN0aW1hdGVTY2FsZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0xK2Z1bmN0aW9uKHQpe2lmKDAhPT10Lmxlbmd0aCl7Zm9yKHZhciBlPTEscj0wO3I8dC5sZW5ndGg7cisrKWU9eChlLHRbcl0pO3JldHVybiBlfX0oMD09PWU/dGhpcy5jYWxjWG51bXModCk6dGhpcy5jYWxjWW51bXModCkpO3I8Xzspcio9Mjtmb3IoO3I+dzspci0tLHIvPXkociksKytyPF8mJihyPXcpO3ZhciBuPU1hdGgucm91bmQoci90KTtyZXR1cm4gbj4xP246MX0sZC5yZWZpbmVDb29yZHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuZGF0YVNjYWxlWCxyPXRoaXMuZGF0YVNjYWxlWSxuPXRbMF0uc2hhcGVbMF0sbz10WzBdLnNoYXBlWzFdLHM9MHxNYXRoLmZsb29yKHRbMF0uc2hhcGVbMF0qZSsxKSxsPTB8TWF0aC5mbG9vcih0WzBdLnNoYXBlWzFdKnIrMSksYz0xK24rMSx1PTErbysxLGg9YShuZXcgRmxvYXQzMkFycmF5KGMqdSksW2MsdV0pLGY9MDtmPHQubGVuZ3RoOysrZil7dGhpcy5zdXJmYWNlLnBhZEZpZWxkKGgsdFtmXSk7dmFyIHA9YShuZXcgRmxvYXQzMkFycmF5KHMqbCksW3MsbF0pO2kocCxoLFtlLDAsMCwwLHIsMCwwLDAsMV0pLHRbZl09cH19LGQuc2V0Q29udG91ckxldmVscz1mdW5jdGlvbigpe3ZhciB0LGUscixuPVtbXSxbXSxbXV0sYT1bITEsITEsITFdLGk9ITE7Zm9yKHQ9MDt0PDM7Kyt0KWlmKHRoaXMuc2hvd0NvbnRvdXJbdF0mJihpPSEwLHRoaXMuY29udG91clNpemVbdF0+MCYmbnVsbCE9PXRoaXMuY29udG91clN0YXJ0W3RdJiZudWxsIT09dGhpcy5jb250b3VyRW5kW3RdJiZ0aGlzLmNvbnRvdXJFbmRbdF0+dGhpcy5jb250b3VyU3RhcnRbdF0pKWZvcihhW3RdPSEwLGU9dGhpcy5jb250b3VyU3RhcnRbdF07ZTx0aGlzLmNvbnRvdXJFbmRbdF07ZSs9dGhpcy5jb250b3VyU2l6ZVt0XSlyPWUqdGhpcy5zY2VuZS5kYXRhU2NhbGVbdF0sayhuW3RdLHIpO2lmKGkpe3ZhciBvPVtbXSxbXSxbXV07Zm9yKHQ9MDt0PDM7Kyt0KXRoaXMuc2hvd0NvbnRvdXJbdF0mJihvW3RdPWFbdF0/blt0XTp0aGlzLnNjZW5lLmNvbnRvdXJMZXZlbHNbdF0pO3RoaXMuc3VyZmFjZS51cGRhdGUoe2xldmVsczpvfSl9fSxkLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxzPXRoaXMuc2NlbmUscD1zLmZ1bGxTY2VuZUxheW91dCxkPXRoaXMuc3VyZmFjZSxnPXQub3BhY2l0eSx2PWwodCxnKSxtPXMuZGF0YVNjYWxlLHk9dC56WzBdLmxlbmd0aCx4PXQuX3lsZW5ndGgsYj1zLmNvbnRvdXJMZXZlbHM7dGhpcy5kYXRhPXQ7dmFyIF89W107Zm9yKGU9MDtlPDM7ZSsrKWZvcihfW2VdPVtdLHI9MDtyPHk7cisrKV9bZV1bcl09W107Zm9yKHI9MDtyPHk7cisrKWZvcihuPTA7bjx4O24rKylfWzBdW3JdW25dPXRoaXMuZ2V0WGF0KHIsbix0LnhjYWxlbmRhcixwLnhheGlzKSxfWzFdW3JdW25dPXRoaXMuZ2V0WWF0KHIsbix0LnljYWxlbmRhcixwLnlheGlzKSxfWzJdW3JdW25dPXRoaXMuZ2V0WmF0KHIsbix0LnpjYWxlbmRhcixwLnpheGlzKTtpZih0LmNvbm5lY3RnYXBzKWZvcih0Ll9lbXB0eXBvaW50cz1mKF9bMl0pLGgoX1syXSx0Ll9lbXB0eXBvaW50cyksdC5faW50ZXJwb2xhdGVkWj1bXSxyPTA7cjx5O3IrKylmb3IodC5faW50ZXJwb2xhdGVkWltyXT1bXSxuPTA7bjx4O24rKyl0Ll9pbnRlcnBvbGF0ZWRaW3JdW25dPV9bMl1bcl1bbl07Zm9yKGU9MDtlPDM7ZSsrKWZvcihyPTA7cjx5O3IrKylmb3Iobj0wO248eDtuKyspbnVsbD09KGk9X1tlXVtyXVtuXSk/X1tlXVtyXVtuXT1OYU46aT1fW2VdW3JdW25dKj1tW2VdO2ZvcihlPTA7ZTwzO2UrKylmb3Iocj0wO3I8eTtyKyspZm9yKG49MDtuPHg7bisrKW51bGwhPShpPV9bZV1bcl1bbl0pJiYodGhpcy5taW5WYWx1ZXNbZV0+aSYmKHRoaXMubWluVmFsdWVzW2VdPWkpLHRoaXMubWF4VmFsdWVzW2VdPGkmJih0aGlzLm1heFZhbHVlc1tlXT1pKSk7Zm9yKGU9MDtlPDM7ZSsrKXRoaXMub2JqZWN0T2Zmc2V0W2VdPS41Kih0aGlzLm1pblZhbHVlc1tlXSt0aGlzLm1heFZhbHVlc1tlXSk7Zm9yKGU9MDtlPDM7ZSsrKWZvcihyPTA7cjx5O3IrKylmb3Iobj0wO248eDtuKyspbnVsbCE9KGk9X1tlXVtyXVtuXSkmJihfW2VdW3JdW25dLT10aGlzLm9iamVjdE9mZnNldFtlXSk7dmFyIGs9W2EobmV3IEZsb2F0MzJBcnJheSh5KngpLFt5LHhdKSxhKG5ldyBGbG9hdDMyQXJyYXkoeSp4KSxbeSx4XSksYShuZXcgRmxvYXQzMkFycmF5KHkqeCksW3kseF0pXTtvKGtbMF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gX1swXVt0XVtlXX0pLG8oa1sxXSxmdW5jdGlvbih0LGUpe3JldHVybiBfWzFdW3RdW2VdfSksbyhrWzJdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIF9bMl1bdF1bZV19KSxfPVtdO3ZhciBUPXtjb2xvcm1hcDp2LGxldmVsczpbW10sW10sW11dLHNob3dDb250b3VyOlshMCwhMCwhMF0sc2hvd1N1cmZhY2U6IXQuaGlkZXN1cmZhY2UsY29udG91clByb2plY3Q6W1shMSwhMSwhMV0sWyExLCExLCExXSxbITEsITEsITFdXSxjb250b3VyV2lkdGg6WzEsMSwxXSxjb250b3VyQ29sb3I6W1sxLDEsMSwxXSxbMSwxLDEsMV0sWzEsMSwxLDFdXSxjb250b3VyVGludDpbMSwxLDFdLGR5bmFtaWNDb2xvcjpbWzEsMSwxLDFdLFsxLDEsMSwxXSxbMSwxLDEsMV1dLGR5bmFtaWNXaWR0aDpbMSwxLDFdLGR5bmFtaWNUaW50OlsxLDEsMV0sb3BhY2l0eTp0Lm9wYWNpdHl9LE09dSh0KTtpZihULmludGVuc2l0eUJvdW5kcz1bTS5taW4sTS5tYXhdLHQuc3VyZmFjZWNvbG9yKXt2YXIgQT1hKG5ldyBGbG9hdDMyQXJyYXkoeSp4KSxbeSx4XSk7byhBLGZ1bmN0aW9uKGUscil7cmV0dXJuIHQuc3VyZmFjZWNvbG9yW3JdW2VdfSksay5wdXNoKEEpfWVsc2UgVC5pbnRlbnNpdHlCb3VuZHNbMF0qPW1bMl0sVC5pbnRlbnNpdHlCb3VuZHNbMV0qPW1bMl07KHc8a1swXS5zaGFwZVswXXx8dzxrWzBdLnNoYXBlWzFdKSYmKHRoaXMucmVmaW5lRGF0YT0hMSksITA9PT10aGlzLnJlZmluZURhdGEmJih0aGlzLmRhdGFTY2FsZVg9dGhpcy5lc3RpbWF0ZVNjYWxlKGtbMF0uc2hhcGVbMF0sMCksdGhpcy5kYXRhU2NhbGVZPXRoaXMuZXN0aW1hdGVTY2FsZShrWzBdLnNoYXBlWzFdLDEpLDE9PT10aGlzLmRhdGFTY2FsZVgmJjE9PT10aGlzLmRhdGFTY2FsZVl8fHRoaXMucmVmaW5lQ29vcmRzKGspKSx0LnN1cmZhY2Vjb2xvciYmKFQuaW50ZW5zaXR5PWsucG9wKCkpO3ZhciBTPVshMCwhMCwhMF0sRT1bIngiLCJ5IiwieiJdO2ZvcihlPTA7ZTwzOysrZSl7dmFyIEw9dC5jb250b3Vyc1tFW2VdXTtTW2VdPUwuaGlnaGxpZ2h0LFQuc2hvd0NvbnRvdXJbZV09TC5zaG93fHxMLmhpZ2hsaWdodCxULnNob3dDb250b3VyW2VdJiYoVC5jb250b3VyUHJvamVjdFtlXT1bTC5wcm9qZWN0LngsTC5wcm9qZWN0LnksTC5wcm9qZWN0LnpdLEwuc2hvdz8odGhpcy5zaG93Q29udG91cltlXT0hMCxULmxldmVsc1tlXT1iW2VdLGQuaGlnaGxpZ2h0Q29sb3JbZV09VC5jb250b3VyQ29sb3JbZV09YyhMLmNvbG9yKSxMLnVzZWNvbG9ybWFwP2QuaGlnaGxpZ2h0VGludFtlXT1ULmNvbnRvdXJUaW50W2VdPTA6ZC5oaWdobGlnaHRUaW50W2VdPVQuY29udG91clRpbnRbZV09MSxULmNvbnRvdXJXaWR0aFtlXT1MLndpZHRoLHRoaXMuY29udG91clN0YXJ0W2VdPUwuc3RhcnQsdGhpcy5jb250b3VyRW5kW2VdPUwuZW5kLHRoaXMuY29udG91clNpemVbZV09TC5zaXplKToodGhpcy5zaG93Q29udG91cltlXT0hMSx0aGlzLmNvbnRvdXJTdGFydFtlXT1udWxsLHRoaXMuY29udG91ckVuZFtlXT1udWxsLHRoaXMuY29udG91clNpemVbZV09MCksTC5oaWdobGlnaHQmJihULmR5bmFtaWNDb2xvcltlXT1jKEwuaGlnaGxpZ2h0Y29sb3IpLFQuZHluYW1pY1dpZHRoW2VdPUwuaGlnaGxpZ2h0d2lkdGgpKX0oZnVuY3Rpb24odCl7dmFyIGU9dFswXS5yZ2Iscj10W3QubGVuZ3RoLTFdLnJnYjtyZXR1cm4gZVswXT09PXJbMF0mJmVbMV09PT1yWzFdJiZlWzJdPT09clsyXSYmZVszXT09PXJbM119KSh2KSYmKFQudmVydGV4Q29sb3I9ITApLFQub2JqZWN0T2Zmc2V0PXRoaXMub2JqZWN0T2Zmc2V0LFQuY29vcmRzPWssZC51cGRhdGUoVCksZC52aXNpYmxlPXQudmlzaWJsZSxkLmVuYWJsZUR5bmFtaWM9UyxkLmVuYWJsZUhpZ2hsaWdodD1TLGQuc25hcFRvRGF0YT0hMCwibGlnaHRpbmciaW4gdCYmKGQuYW1iaWVudExpZ2h0PXQubGlnaHRpbmcuYW1iaWVudCxkLmRpZmZ1c2VMaWdodD10LmxpZ2h0aW5nLmRpZmZ1c2UsZC5zcGVjdWxhckxpZ2h0PXQubGlnaHRpbmcuc3BlY3VsYXIsZC5yb3VnaG5lc3M9dC5saWdodGluZy5yb3VnaG5lc3MsZC5mcmVzbmVsPXQubGlnaHRpbmcuZnJlc25lbCksImxpZ2h0cG9zaXRpb24iaW4gdCYmKGQubGlnaHRQb3NpdGlvbj1bdC5saWdodHBvc2l0aW9uLngsdC5saWdodHBvc2l0aW9uLnksdC5saWdodHBvc2l0aW9uLnpdKSxnJiZnPDEmJihkLnN1cHBvcnRzVHJhbnNwYXJlbmN5PSEwKX0sZC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMuc3VyZmFjZSksdGhpcy5zdXJmYWNlLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5nbHBsb3QuZ2wsYT1uKHtnbDpyfSksaT1uZXcgcCh0LGEsZS51aWQpO3JldHVybiBhLl90cmFjZT1pLGkudXBkYXRlKGUpLHQuZ2xwbG90LmFkZChhKSxpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjcxNCwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NzQwLCIuLi9oZWF0bWFwL2ZpbmRfZW1wdGllcyI6MTAwNiwiLi4vaGVhdG1hcC9pbnRlcnAyZCI6MTAwOSwiZ2wtc3VyZmFjZTNkIjozMTgsbmRhcnJheTo0NTIsIm5kYXJyYXktZmlsbCI6NDQyLCJuZGFycmF5LWhvbW9ncmFwaHkiOjQ0NH1dLDEyNDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksbz10KCIuL2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBzKHQsZSxyKXtlIGluIHQmJiEociBpbiB0KSYmKHRbcl09dFtlXSl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGwpe3ZhciBjLHU7ZnVuY3Rpb24gaChyLG4pe3JldHVybiBhLmNvZXJjZSh0LGUsbyxyLG4pfXZhciBmPWgoIngiKSxwPWgoInkiKSxkPWgoInoiKTtpZighZHx8IWQubGVuZ3RofHxmJiZmLmxlbmd0aDwxfHxwJiZwLmxlbmd0aDwxKWUudmlzaWJsZT0hMTtlbHNle2UuX3hsZW5ndGg9QXJyYXkuaXNBcnJheShmKSYmYS5pc0FycmF5T3JUeXBlZEFycmF5KGZbMF0pP2QubGVuZ3RoOmRbMF0ubGVuZ3RoLGUuX3lsZW5ndGg9ZC5sZW5ndGgsbi5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsWyJ4IiwieSIsInoiXSxsKSxoKCJ0ZXh0IiksaCgiaG92ZXJ0ZXh0IiksaCgiaG92ZXJ0ZW1wbGF0ZSIpLFsibGlnaHRpbmcuYW1iaWVudCIsImxpZ2h0aW5nLmRpZmZ1c2UiLCJsaWdodGluZy5zcGVjdWxhciIsImxpZ2h0aW5nLnJvdWdobmVzcyIsImxpZ2h0aW5nLmZyZXNuZWwiLCJsaWdodHBvc2l0aW9uLngiLCJsaWdodHBvc2l0aW9uLnkiLCJsaWdodHBvc2l0aW9uLnoiLCJoaWRlc3VyZmFjZSIsImNvbm5lY3RnYXBzIiwib3BhY2l0eSJdLmZvckVhY2goZnVuY3Rpb24odCl7aCh0KX0pO3ZhciBnPWgoInN1cmZhY2Vjb2xvciIpLHY9WyJ4IiwieSIsInoiXTtmb3IoYz0wO2M8MzsrK2Mpe3ZhciBtPSJjb250b3Vycy4iK3ZbY10seT1oKG0rIi5zaG93IikseD1oKG0rIi5oaWdobGlnaHQiKTtpZih5fHx4KWZvcih1PTA7dTwzOysrdSloKG0rIi5wcm9qZWN0LiIrdlt1XSk7eSYmKGgobSsiLmNvbG9yIiksaChtKyIud2lkdGgiKSxoKG0rIi51c2Vjb2xvcm1hcCIpKSx4JiYoaChtKyIuaGlnaGxpZ2h0Y29sb3IiKSxoKG0rIi5oaWdobGlnaHR3aWR0aCIpKSxoKG0rIi5zdGFydCIpLGgobSsiLmVuZCIpLGgobSsiLnNpemUiKX1nfHwocyh0LCJ6bWluIiwiY21pbiIpLHModCwiem1heCIsImNtYXgiKSxzKHQsInphdXRvIiwiY2F1dG8iKSksaSh0LGUsbCxoLHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSxlLl9sZW5ndGg9bnVsbH19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVzIjoxMjQzfV0sMTI0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnttaW46ImNtaW4iLG1heDoiY21heCJ9LGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIuL2NvbnZlcnQiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic3VyZmFjZSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNhdGVnb3JpZXM6WyJnbDNkIiwiMmRNYXAiLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2wzZCI6ODA1LCIuL2F0dHJpYnV0ZXMiOjEyNDMsIi4vY2FsYyI6MTI0NCwiLi9jb252ZXJ0IjoxMjQ1LCIuL2RlZmF1bHRzIjoxMjQ2fV0sMTI0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2Fubm90YXRpb25zL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGk9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLG89dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9kb21haW4iKS5hdHRyaWJ1dGVzO3QoIi4uLy4uL2NvbnN0YW50cy9kb2NzIikuRk9STUFUX0xJTks7KGUuZXhwb3J0cz1pKHtkb21haW46cyh7bmFtZToidGFibGUiLHRyYWNlOiEwfSksY29sdW1ud2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsYXJyYXlPazohMCxkZmx0Om51bGx9LGNvbHVtbm9yZGVyOnt2YWxUeXBlOiJkYXRhX2FycmF5In0saGVhZGVyOnt2YWx1ZXM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W119LGZvcm1hdDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0scHJlZml4Ont2YWxUeXBlOiJzdHJpbmciLGFycmF5T2s6ITAsZGZsdDpudWxsfSxzdWZmaXg6e3ZhbFR5cGU6InN0cmluZyIsYXJyYXlPazohMCxkZmx0Om51bGx9LGhlaWdodDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjI4fSxhbGlnbjphKHt9LG4uYWxpZ24se2FycmF5T2s6ITB9KSxsaW5lOnt3aWR0aDp7dmFsVHlwZToibnVtYmVyIixhcnJheU9rOiEwLGRmbHQ6MX0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixhcnJheU9rOiEwLGRmbHQ6ImdyZXkifX0sZmlsbDp7Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixhcnJheU9rOiEwLGRmbHQ6IndoaXRlIn19LGZvbnQ6YSh7fSxvKHthcnJheU9rOiEwfSkpfSxjZWxsczp7dmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxmb3JtYXQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W119LHByZWZpeDp7dmFsVHlwZToic3RyaW5nIixhcnJheU9rOiEwLGRmbHQ6bnVsbH0sc3VmZml4Ont2YWxUeXBlOiJzdHJpbmciLGFycmF5T2s6ITAsZGZsdDpudWxsfSxoZWlnaHQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoyMH0sYWxpZ246YSh7fSxuLmFsaWduLHthcnJheU9rOiEwfSksbGluZTp7d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsYXJyYXlPazohMCxkZmx0OjF9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMCxkZmx0OiJncmV5In19LGZpbGw6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMCxkZmx0OiJ3aGl0ZSJ9fSxmb250OmEoe30sbyh7YXJyYXlPazohMH0pKX19LCJjYWxjIiwiZnJvbS1yb290IikpLnRyYW5zZm9ybXM9dm9pZCAwfSx7Ii4uLy4uL2NvbXBvbmVudHMvYW5ub3RhdGlvbnMvYXR0cmlidXRlcyI6NTc1LCIuLi8uLi9jb25zdGFudHMvZG9jcyI6Njg4LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxfV0sMTI0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9nZXRfZGF0YSIpLmdldE1vZHVsZUNhbGNEYXRhLGE9dCgiLi9wbG90Iik7ci5uYW1lPSJ0YWJsZSIsci5wbG90PWZ1bmN0aW9uKHQpe3ZhciBlPW4odC5jYWxjZGF0YSwidGFibGUiKVswXTtlLmxlbmd0aCYmYSh0LGUpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW4uX2hhcyYmbi5faGFzKCJ0YWJsZSIpLGk9ZS5faGFzJiZlLl9oYXMoInRhYmxlIik7YSYmIWkmJm4uX3BhcGVyZGl2LnNlbGVjdEFsbCgiLnRhYmxlIikucmVtb3ZlKCl9fSx7Ii4uLy4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4vcGxvdCI6MTI1Nn1dLDEyNTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL2d1cCIpLndyYXA7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIG4oe30pfX0seyIuLi8uLi9saWIvZ3VwIjo3MTV9XSwxMjUxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Y2VsbFBhZDo4LGNvbHVtbkV4dGVudE9mZnNldDoxMCxjb2x1bW5UaXRsZU9mZnNldDoyOCxlbXB0eUhlYWRlckhlaWdodDoxNixsYXRleENoZWNrOi9eXCQuKlwkJC8sZ29sZGVuUmF0aW86MS42MTgsbGluZUJyZWFrZXI6Ijxicj4iLG1heERpbWVuc2lvbkNvdW50OjYwLG92ZXJkcmFnOjQ1LHJlbGVhc2VUcmFuc2l0aW9uRHVyYXRpb246MTIwLHJlbGVhc2VUcmFuc2l0aW9uRWFzZToiY3ViaWMtb3V0IixzY3JvbGxiYXJDYXB0dXJlV2lkdGg6MTgsc2Nyb2xsYmFySGlkZURlbGF5OjFlMyxzY3JvbGxiYXJIaWRlRHVyYXRpb246MWUzLHNjcm9sbGJhck9mZnNldDo1LHNjcm9sbGJhcldpZHRoOjgsdHJhbnNpdGlvbkR1cmF0aW9uOjEwMCx0cmFuc2l0aW9uRWFzZToiY3ViaWMtb3V0Iix1cGxpZnQ6NSx3cmFwU3BhY2VyOiIgIix3cmFwU3BsaXRDaGFyYWN0ZXI6IiAiLGNuOnt0YWJsZToidGFibGUiLHRhYmxlQ29udHJvbFZpZXc6InRhYmxlLWNvbnRyb2wtdmlldyIsc2Nyb2xsQmFja2dyb3VuZDoic2Nyb2xsLWJhY2tncm91bmQiLHlDb2x1bW46InktY29sdW1uIixjb2x1bW5CbG9jazoiY29sdW1uLWJsb2NrIixzY3JvbGxBcmVhQ2xpcDoic2Nyb2xsLWFyZWEtY2xpcCIsc2Nyb2xsQXJlYUNsaXBSZWN0OiJzY3JvbGwtYXJlYS1jbGlwLXJlY3QiLGNvbHVtbkJvdW5kYXJ5OiJjb2x1bW4tYm91bmRhcnkiLGNvbHVtbkJvdW5kYXJ5Q2xpcHBhdGg6ImNvbHVtbi1ib3VuZGFyeS1jbGlwcGF0aCIsY29sdW1uQm91bmRhcnlSZWN0OiJjb2x1bW4tYm91bmRhcnktcmVjdCIsY29sdW1uQ2VsbHM6ImNvbHVtbi1jZWxscyIsY29sdW1uQ2VsbDoiY29sdW1uLWNlbGwiLGNlbGxSZWN0OiJjZWxsLXJlY3QiLGNlbGxUZXh0OiJjZWxsLXRleHQiLGNlbGxUZXh0SG9sZGVyOiJjZWxsLXRleHQtaG9sZGVyIixzY3JvbGxiYXJLaXQ6InNjcm9sbGJhci1raXQiLHNjcm9sbGJhcjoic2Nyb2xsYmFyIixzY3JvbGxiYXJTbGlkZXI6InNjcm9sbGJhci1zbGlkZXIiLHNjcm9sbGJhckdseXBoOiJzY3JvbGxiYXItZ2x5cGgiLHNjcm9sbGJhckNhcHR1cmVab25lOiJzY3JvbGxiYXItY2FwdHVyZS16b25lIn19fSx7fV0sMTI1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsaT10KCJmYXN0LWlzbnVtZXJpYyIpO2Z1bmN0aW9uIG8odCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBlPTAscj0wO3I8dC5sZW5ndGg7cisrKWU9TWF0aC5tYXgoZSxvKHRbcl0pKTtyZXR1cm4gZX1yZXR1cm4gdH1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIHQrZX1mdW5jdGlvbiBsKHQpe3ZhciBlLHI9dC5zbGljZSgpLG49MS8wLGE9MDtmb3IoZT0wO2U8ci5sZW5ndGg7ZSsrKUFycmF5LmlzQXJyYXkocltlXSl8fChyW2VdPVtyW2VdXSksbj1NYXRoLm1pbihuLHJbZV0ubGVuZ3RoKSxhPU1hdGgubWF4KGEscltlXS5sZW5ndGgpO2lmKG4hPT1hKWZvcihlPTA7ZTxyLmxlbmd0aDtlKyspe3ZhciBpPWEtcltlXS5sZW5ndGg7aSYmKHJbZV09cltlXS5jb25jYXQoYyhpKSkpfXJldHVybiByfWZ1bmN0aW9uIGModCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyllW3JdPSIiO3JldHVybiBlfWZ1bmN0aW9uIHUodCl7cmV0dXJuIHQuY2FsY2RhdGEuY29sdW1ucy5yZWR1Y2UoZnVuY3Rpb24oZSxyKXtyZXR1cm4gci54SW5kZXg8dC54SW5kZXg/ZStyLmNvbHVtbldpZHRoOmV9LDApfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gT2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBhKHt9LHRbcl0se2F1eGlsaWFyeUJsb2NrczplfSl9KX1mdW5jdGlvbiBmKHQsZSl7Zm9yKHZhciByLG49e30sYT0wLGk9MCxvPXtmaXJzdFJvd0luZGV4Om51bGwsbGFzdFJvd0luZGV4Om51bGwscm93czpbXX0scz0wLGw9MCxjPTA7Yzx0Lmxlbmd0aDtjKyspcj10W2NdLG8ucm93cy5wdXNoKHtyb3dJbmRleDpjLHJvd0hlaWdodDpyfSksKChpKz1yKT49ZXx8Yz09PXQubGVuZ3RoLTEpJiYoblthXT1vLG8ua2V5PWwrKyxvLmZpcnN0Um93SW5kZXg9cyxvLmxhc3RSb3dJbmRleD1jLG89e2ZpcnN0Um93SW5kZXg6bnVsbCxsYXN0Um93SW5kZXg6bnVsbCxyb3dzOltdfSxhKz1pLHM9YysxLGk9MCk7cmV0dXJuIG59ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bChlLmNlbGxzLnZhbHVlcykscD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZShlLmhlYWRlci52YWx1ZXMubGVuZ3RoLHQubGVuZ3RoKX0sZD1sKGUuaGVhZGVyLnZhbHVlcyk7ZC5sZW5ndGgmJiFkWzBdLmxlbmd0aCYmKGRbMF09WyIiXSxkPWwoZCkpO3ZhciBnPWQuY29uY2F0KHAocikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGMoKGRbMF18fFsiIl0pLmxlbmd0aCl9KSksdj1lLmRvbWFpbixtPU1hdGguZmxvb3IodC5fZnVsbExheW91dC5fc2l6ZS53Kih2LnhbMV0tdi54WzBdKSkseT1NYXRoLmZsb29yKHQuX2Z1bGxMYXlvdXQuX3NpemUuaCoodi55WzFdLXYueVswXSkpLHg9ZS5oZWFkZXIudmFsdWVzLmxlbmd0aD9nWzBdLm1hcChmdW5jdGlvbigpe3JldHVybiBlLmhlYWRlci5oZWlnaHR9KTpbbi5lbXB0eUhlYWRlckhlaWdodF0sYj1yLmxlbmd0aD9yWzBdLm1hcChmdW5jdGlvbigpe3JldHVybiBlLmNlbGxzLmhlaWdodH0pOltdLF89eC5yZWR1Y2UocywwKSx3PWYoYix5LV8rbi51cGxpZnQpLGs9aChmKHgsXyksW10pLFQ9aCh3LGspLE09e30sQT1lLl9mdWxsSW5wdXQuY29sdW1ub3JkZXIuY29uY2F0KHAoci5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKSksUz1nLm1hcChmdW5jdGlvbih0LHIpe3ZhciBuPUFycmF5LmlzQXJyYXkoZS5jb2x1bW53aWR0aCk/ZS5jb2x1bW53aWR0aFtNYXRoLm1pbihyLGUuY29sdW1ud2lkdGgubGVuZ3RoLTEpXTplLmNvbHVtbndpZHRoO3JldHVybiBpKG4pP051bWJlcihuKToxfSksRT1TLnJlZHVjZShzLDApO1M9Uy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQvRSptfSk7dmFyIEw9TWF0aC5tYXgobyhlLmhlYWRlci5saW5lLndpZHRoKSxvKGUuY2VsbHMubGluZS53aWR0aCkpLEM9e2tleTplLnVpZCt0Ll9jb250ZXh0LnN0YXRpY1Bsb3QsdHJhbnNsYXRlWDp2LnhbMF0qdC5fZnVsbExheW91dC5fc2l6ZS53LHRyYW5zbGF0ZVk6dC5fZnVsbExheW91dC5fc2l6ZS5oKigxLXYueVsxXSksc2l6ZTp0Ll9mdWxsTGF5b3V0Ll9zaXplLHdpZHRoOm0sbWF4TGluZVdpZHRoOkwsaGVpZ2h0OnksY29sdW1uT3JkZXI6QSxncm91cEhlaWdodDp5LHJvd0Jsb2NrczpULGhlYWRlclJvd0Jsb2NrczprLHNjcm9sbFk6MCxjZWxsczphKHt9LGUuY2VsbHMse3ZhbHVlczpyfSksaGVhZGVyQ2VsbHM6YSh7fSxlLmhlYWRlcix7dmFsdWVzOmd9KSxnZENvbHVtbnM6Zy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF19KSxnZENvbHVtbnNPcmlnaW5hbE9yZGVyOmcubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdfSkscHJldlBhZ2VzOlswLDBdLHNjcm9sbGJhclN0YXRlOntzY3JvbGxiYXJTY3JvbGxJblByb2dyZXNzOiExfSxjb2x1bW5zOmcubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIHI9TVt0XTtyZXR1cm4gTVt0XT0ocnx8MCkrMSx7a2V5OnQrIl9fIitNW3RdLGxhYmVsOnQsc3BlY0luZGV4OmUseEluZGV4OkFbZV0seFNjYWxlOnUseDp2b2lkIDAsY2FsY2RhdGE6dm9pZCAwLGNvbHVtbldpZHRoOlNbZV19fSl9O3JldHVybiBDLmNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNhbGNkYXRhPUMsdC54PXUodCl9KSxDfX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4vY29uc3RhbnRzIjoxMjUxLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sMTI1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtyLnNwbGl0VG9QYW5lbHM9ZnVuY3Rpb24odCl7dmFyIGU9WzAsMF0scj1uKHt9LHQse2tleToiaGVhZGVyIix0eXBlOiJoZWFkZXIiLHBhZ2U6MCxwcmV2UGFnZXM6ZSxjdXJyZW50UmVwYWludDpbbnVsbCxudWxsXSxkcmFnSGFuZGxlOiEwLHZhbHVlczp0LmNhbGNkYXRhLmhlYWRlckNlbGxzLnZhbHVlc1t0LnNwZWNJbmRleF0scm93QmxvY2tzOnQuY2FsY2RhdGEuaGVhZGVyUm93QmxvY2tzLGNhbGNkYXRhOm4oe30sdC5jYWxjZGF0YSx7Y2VsbHM6dC5jYWxjZGF0YS5oZWFkZXJDZWxsc30pfSk7cmV0dXJuW24oe30sdCx7a2V5OiJjZWxsczEiLHR5cGU6ImNlbGxzIixwYWdlOjAscHJldlBhZ2VzOmUsY3VycmVudFJlcGFpbnQ6W251bGwsbnVsbF0sZHJhZ0hhbmRsZTohMSx2YWx1ZXM6dC5jYWxjZGF0YS5jZWxscy52YWx1ZXNbdC5zcGVjSW5kZXhdLHJvd0Jsb2Nrczp0LmNhbGNkYXRhLnJvd0Jsb2Nrc30pLG4oe30sdCx7a2V5OiJjZWxsczIiLHR5cGU6ImNlbGxzIixwYWdlOjEscHJldlBhZ2VzOmUsY3VycmVudFJlcGFpbnQ6W251bGwsbnVsbF0sZHJhZ0hhbmRsZTohMSx2YWx1ZXM6dC5jYWxjZGF0YS5jZWxscy52YWx1ZXNbdC5zcGVjSW5kZXhdLHJvd0Jsb2Nrczp0LmNhbGNkYXRhLnJvd0Jsb2Nrc30pLHJdfSxyLnNwbGl0VG9DZWxscz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZT10LnJvd0Jsb2Nrc1t0LnBhZ2VdLHI9ZT9lLnJvd3NbMF0ucm93SW5kZXg6MCxuPWU/citlLnJvd3MubGVuZ3RoOjA7cmV0dXJuW3Isbl19KHQpO3JldHVybih0LnZhbHVlc3x8W10pLnNsaWNlKGVbMF0sZVsxXSkubWFwKGZ1bmN0aW9uKHIsbil7cmV0dXJue2tleVdpdGhpbkJsb2NrOm4rKCJzdHJpbmciPT10eXBlb2YgciYmci5tYXRjaCgvWzwkJj4gXS8pPyJfa2V5YnVzdGVyXyIrTWF0aC5yYW5kb20oKToiIiksa2V5OmVbMF0rbixjb2x1bW46dCxjYWxjZGF0YTp0LmNhbGNkYXRhLHBhZ2U6dC5wYWdlLHJvd0Jsb2Nrczp0LnJvd0Jsb2Nrcyx2YWx1ZTpyfX0pfX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDh9XSwxMjU0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9kb21haW4iKS5kZWZhdWx0cztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7ZnVuY3Rpb24gcyhyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfWkoZSxvLHMpLHMoImNvbHVtbndpZHRoIikscygiaGVhZGVyLnZhbHVlcyIpLHMoImhlYWRlci5mb3JtYXQiKSxzKCJoZWFkZXIuYWxpZ24iKSxzKCJoZWFkZXIucHJlZml4IikscygiaGVhZGVyLnN1ZmZpeCIpLHMoImhlYWRlci5oZWlnaHQiKSxzKCJoZWFkZXIubGluZS53aWR0aCIpLHMoImhlYWRlci5saW5lLmNvbG9yIikscygiaGVhZGVyLmZpbGwuY29sb3IiKSxuLmNvZXJjZUZvbnQocywiaGVhZGVyLmZvbnQiLG4uZXh0ZW5kRmxhdCh7fSxvLmZvbnQpKSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmNvbHVtbm9yZGVyfHxbXSxuPXQuaGVhZGVyLnZhbHVlcy5sZW5ndGgsYT1yLnNsaWNlKDAsbiksaT1hLnNsaWNlKCkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSxvPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBpLmluZGV4T2YodCl9KSxzPW8ubGVuZ3RoO3M8bjtzKyspby5wdXNoKHMpO2UoImNvbHVtbm9yZGVyIixvKX0oZSxzKSxzKCJjZWxscy52YWx1ZXMiKSxzKCJjZWxscy5mb3JtYXQiKSxzKCJjZWxscy5hbGlnbiIpLHMoImNlbGxzLnByZWZpeCIpLHMoImNlbGxzLnN1ZmZpeCIpLHMoImNlbGxzLmhlaWdodCIpLHMoImNlbGxzLmxpbmUud2lkdGgiKSxzKCJjZWxscy5saW5lLmNvbG9yIikscygiY2VsbHMuZmlsbC5jb2xvciIpLG4uY29lcmNlRm9udChzLCJjZWxscy5mb250IixuLmV4dGVuZEZsYXQoe30sby5mb250KSksZS5fbGVuZ3RoPW51bGx9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi9hdHRyaWJ1dGVzIjoxMjQ4fV0sMTI1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToidGFibGUiLGJhc2VQbG90TW9kdWxlOnQoIi4vYmFzZV9wbG90IiksY2F0ZWdvcmllczpbIm5vT3BhY2l0eSJdLG1ldGE6e319fSx7Ii4vYXR0cmlidXRlcyI6MTI0OCwiLi9iYXNlX3Bsb3QiOjEyNDksIi4vY2FsYyI6MTI1MCwiLi9kZWZhdWx0cyI6MTI1NCwiLi9wbG90IjoxMjU2fV0sMTI1NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpLGE9dCgiZDMiKSxpPXQoIi4uLy4uL2xpYi9ndXAiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHM9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksbD10KCIuLi8uLi9saWIiKS5yYWlzZVRvVG9wLGM9dCgiLi4vLi4vbGliIikuY2FuY2VsVHJhbnNpdGlvbix1PXQoIi4vZGF0YV9wcmVwYXJhdGlvbl9oZWxwZXIiKSxoPXQoIi4vZGF0YV9zcGxpdF9oZWxwZXJzIiksZj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIik7ZnVuY3Rpb24gcCh0KXtyZXR1cm4gTWF0aC5jZWlsKHQuY2FsY2RhdGEubWF4TGluZVdpZHRoLzIpfWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4iY2xpcCIrdC5fZnVsbExheW91dC5fdWlkKyJfc2Nyb2xsQXJlYUJvdHRvbUNsaXBfIitlLmtleX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuImNsaXAiK3QuX2Z1bGxMYXlvdXQuX3VpZCsiX2NvbHVtbkJvdW5kYXJ5Q2xpcHBhdGhfIitlLmNhbGNkYXRhLmtleSsiXyIrZS5zcGVjSW5kZXh9ZnVuY3Rpb24gdih0KXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fZGF0YV9ffSl9ZnVuY3Rpb24gbSh0LGUscil7dmFyIG89dC5zZWxlY3RBbGwoIi4iK24uY24uc2Nyb2xsYmFyS2l0KS5kYXRhKGkucmVwZWF0LGkua2V5RnVuKTtvLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnNjcm9sbGJhcktpdCwhMCkuc3R5bGUoInNoYXBlLXJlbmRlcmluZyIsImdlb21ldHJpY1ByZWNpc2lvbiIpLG8uZWFjaChmdW5jdGlvbih0KXt2YXIgZT10LnNjcm9sbGJhclN0YXRlO2UudG90YWxIZWlnaHQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5yb3dCbG9ja3M7cmV0dXJuIHooZSxlLmxlbmd0aC0xKSsoZS5sZW5ndGg/SShlW2UubGVuZ3RoLTFdLDEvMCk6MSl9KHQpLGUuc2Nyb2xsYWJsZUFyZWFIZWlnaHQ9dC5ncm91cEhlaWdodC1NKHQpLGUuY3VycmVudGx5VmlzaWJsZUhlaWdodD1NYXRoLm1pbihlLnRvdGFsSGVpZ2h0LGUuc2Nyb2xsYWJsZUFyZWFIZWlnaHQpLGUucmF0aW89ZS5jdXJyZW50bHlWaXNpYmxlSGVpZ2h0L2UudG90YWxIZWlnaHQsZS5iYXJMZW5ndGg9TWF0aC5tYXgoZS5yYXRpbyplLmN1cnJlbnRseVZpc2libGVIZWlnaHQsbi5nb2xkZW5SYXRpbypuLnNjcm9sbGJhcldpZHRoKSxlLmJhcldpZ2dsZVJvb209ZS5jdXJyZW50bHlWaXNpYmxlSGVpZ2h0LWUuYmFyTGVuZ3RoLGUud2lnZ2xlUm9vbT1NYXRoLm1heCgwLGUudG90YWxIZWlnaHQtZS5zY3JvbGxhYmxlQXJlYUhlaWdodCksZS50b3BZPTA9PT1lLmJhcldpZ2dsZVJvb20/MDp0LnNjcm9sbFkvZS53aWdnbGVSb29tKmUuYmFyV2lnZ2xlUm9vbSxlLmJvdHRvbVk9ZS50b3BZK2UuYmFyTGVuZ3RoLGUuZHJhZ011bHRpcGxpZXI9ZS53aWdnbGVSb29tL2UuYmFyV2lnZ2xlUm9vbX0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0LndpZHRoK24uc2Nyb2xsYmFyV2lkdGgvMituLnNjcm9sbGJhck9mZnNldCkrIiAiK00odCkrIikifSk7dmFyIHM9by5zZWxlY3RBbGwoIi4iK24uY24uc2Nyb2xsYmFyKS5kYXRhKGkucmVwZWF0LGkua2V5RnVuKTtzLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnNjcm9sbGJhciwhMCk7dmFyIGw9cy5zZWxlY3RBbGwoIi4iK24uY24uc2Nyb2xsYmFyU2xpZGVyKS5kYXRhKGkucmVwZWF0LGkua2V5RnVuKTtsLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnNjcm9sbGJhclNsaWRlciwhMCksbC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoMCAiKyh0LnNjcm9sbGJhclN0YXRlLnRvcFl8fDApKyIpIn0pO3ZhciBjPWwuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbGJhckdseXBoKS5kYXRhKGkucmVwZWF0LGkua2V5RnVuKTtjLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChuLmNuLnNjcm9sbGJhckdseXBoLCEwKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS13aWR0aCIsbi5zY3JvbGxiYXJXaWR0aCkuYXR0cigic3Ryb2tlLWxpbmVjYXAiLCJyb3VuZCIpLmF0dHIoInkxIixuLnNjcm9sbGJhcldpZHRoLzIpLGMuYXR0cigieTIiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnNjcm9sbGJhclN0YXRlLmJhckxlbmd0aC1uLnNjcm9sbGJhcldpZHRoLzJ9KS5hdHRyKCJzdHJva2Utb3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1uRHJhZ0luUHJvZ3Jlc3N8fCF0LnNjcm9sbGJhclN0YXRlLmJhcldpZ2dsZVJvb218fHI/MDouNH0pLGMudHJhbnNpdGlvbigpLmRlbGF5KDApLmR1cmF0aW9uKDApLGMudHJhbnNpdGlvbigpLmRlbGF5KG4uc2Nyb2xsYmFySGlkZURlbGF5KS5kdXJhdGlvbihuLnNjcm9sbGJhckhpZGVEdXJhdGlvbikuYXR0cigic3Ryb2tlLW9wYWNpdHkiLDApO3ZhciB1PXMuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbGJhckNhcHR1cmVab25lKS5kYXRhKGkucmVwZWF0LGkua2V5RnVuKTt1LmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChuLmNuLnNjcm9sbGJhckNhcHR1cmVab25lLCEwKS5hdHRyKCJzdHJva2UiLCJ3aGl0ZSIpLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwuMDEpLmF0dHIoInN0cm9rZS13aWR0aCIsbi5zY3JvbGxiYXJDYXB0dXJlV2lkdGgpLmF0dHIoInN0cm9rZS1saW5lY2FwIiwiYnV0dCIpLmF0dHIoInkxIiwwKS5vbigibW91c2Vkb3duIixmdW5jdGlvbihyKXt2YXIgbj1hLmV2ZW50LnksaT10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89ci5zY3JvbGxiYXJTdGF0ZSxzPW4taS50b3AsbD1hLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCxvLnNjcm9sbGFibGVBcmVhSGVpZ2h0XSkucmFuZ2UoWzAsby50b3RhbEhlaWdodF0pLmNsYW1wKCEwKTtvLnRvcFk8PXMmJnM8PW8uYm90dG9tWXx8UyhlLHQsbnVsbCxsKHMtby5iYXJMZW5ndGgvMikpKHIpfSkuY2FsbChhLmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4oZnVuY3Rpb24odCl7cmV0dXJuIGEuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCksdC5zY3JvbGxiYXJTdGF0ZS5zY3JvbGxiYXJTY3JvbGxJblByb2dyZXNzPSEwLHR9KS5vbigiZHJhZyIsUyhlLHQpKS5vbigiZHJhZ2VuZCIsZnVuY3Rpb24oKXt9KSksdS5hdHRyKCJ5MiIsZnVuY3Rpb24odCl7cmV0dXJuIHQuc2Nyb2xsYmFyU3RhdGUuc2Nyb2xsYWJsZUFyZWFIZWlnaHR9KSxlLl9jb250ZXh0LnN0YXRpY1Bsb3QmJihjLnJlbW92ZSgpLHUucmVtb3ZlKCkpfWZ1bmN0aW9uIHkodCxlLHIscyl7dmFyIGw9ZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4iK24uY24uY29sdW1uQ2VsbCkuZGF0YShoLnNwbGl0VG9DZWxscyxmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXlXaXRoaW5CbG9ja30pO3JldHVybiBlLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLmNvbHVtbkNlbGwsITApLGUuZXhpdCgpLnJlbW92ZSgpLGV9KGZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VsZWN0QWxsKCIuIituLmNuLmNvbHVtbkNlbGxzKS5kYXRhKGkucmVwZWF0LGkua2V5RnVuKTtyZXR1cm4gZS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5jb2x1bW5DZWxscywhMCksZS5leGl0KCkucmVtb3ZlKCksZX0ocikpOyFmdW5jdGlvbih0KXt0LmVhY2goZnVuY3Rpb24odCxlKXt2YXIgcj10LmNhbGNkYXRhLmNlbGxzLmZvbnQsbj10LmNvbHVtbi5zcGVjSW5kZXgsYT17c2l6ZTpfKHIuc2l6ZSxuLGUpLGNvbG9yOl8oci5jb2xvcixuLGUpLGZhbWlseTpfKHIuZmFtaWx5LG4sZSl9O3Qucm93TnVtYmVyPXQua2V5LHQuYWxpZ249Xyh0LmNhbGNkYXRhLmNlbGxzLmFsaWduLG4sZSksdC5jZWxsQm9yZGVyV2lkdGg9Xyh0LmNhbGNkYXRhLmNlbGxzLmxpbmUud2lkdGgsbixlKSx0LmZvbnQ9YX0pfShsKSxmdW5jdGlvbih0KXt0LmF0dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2x1bW4uY29sdW1uV2lkdGh9KS5hdHRyKCJzdHJva2Utd2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmNlbGxCb3JkZXJXaWR0aH0pLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9YS5zZWxlY3QodGhpcyk7Zi5zdHJva2UoZSxfKHQuY2FsY2RhdGEuY2VsbHMubGluZS5jb2xvcix0LmNvbHVtbi5zcGVjSW5kZXgsdC5yb3dOdW1iZXIpKSxmLmZpbGwoZSxfKHQuY2FsY2RhdGEuY2VsbHMuZmlsbC5jb2xvcix0LmNvbHVtbi5zcGVjSW5kZXgsdC5yb3dOdW1iZXIpKX0pfShmdW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdEFsbCgiLiIrbi5jbi5jZWxsUmVjdCkuZGF0YShpLnJlcGVhdCxmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXlXaXRoaW5CbG9ja30pO3JldHVybiBlLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZChuLmNuLmNlbGxSZWN0LCEwKSxlfShsKSk7dmFyIGM9ZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4iK24uY24uY2VsbFRleHQpLmRhdGEoaS5yZXBlYXQsZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5V2l0aGluQmxvY2t9KTtyZXR1cm4gZS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQobi5jbi5jZWxsVGV4dCwhMCkuc3R5bGUoImN1cnNvciIsZnVuY3Rpb24oKXtyZXR1cm4iYXV0byJ9KS5vbigibW91c2Vkb3duIixmdW5jdGlvbigpe2EuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KSxlfShmdW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdEFsbCgiLiIrbi5jbi5jZWxsVGV4dEhvbGRlcikuZGF0YShpLnJlcGVhdCxmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXlXaXRoaW5CbG9ja30pO3JldHVybiBlLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLmNlbGxUZXh0SG9sZGVyLCEwKS5zdHlsZSgic2hhcGUtcmVuZGVyaW5nIiwiZ2VvbWV0cmljUHJlY2lzaW9uIiksZX0obCkpOyFmdW5jdGlvbih0KXt0LmVhY2goZnVuY3Rpb24odCl7by5mb250KGEuc2VsZWN0KHRoaXMpLHQuZm9udCl9KX0oYykseChjLGUscyx0KSxPKGwpfWZ1bmN0aW9uIHgodCxlLHIsaSl7dC50ZXh0KGZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sdW1uLnNwZWNJbmRleCxyPXQucm93TnVtYmVyLGk9dC52YWx1ZSxvPSJzdHJpbmciPT10eXBlb2YgaSxzPW8mJmkubWF0Y2goLzxicj4vaSksbD0hb3x8czt0Lm1heUhhdmVNYXJrdXA9byYmaS5tYXRjaCgvWzwmPl0vKTt2YXIgYyx1PSJzdHJpbmciPT10eXBlb2YoYz1pKSYmYy5tYXRjaChuLmxhdGV4Q2hlY2spO3QubGF0ZXg9dTt2YXIgaCxmLHA9dT8iIjpfKHQuY2FsY2RhdGEuY2VsbHMucHJlZml4LGUscil8fCIiLGQ9dT8iIjpfKHQuY2FsY2RhdGEuY2VsbHMuc3VmZml4LGUscil8fCIiLGc9dT9udWxsOl8odC5jYWxjZGF0YS5jZWxscy5mb3JtYXQsZSxyKXx8bnVsbCx2PXArKGc/YS5mb3JtYXQoZykodC52YWx1ZSk6dC52YWx1ZSkrZDtpZih0LndyYXBwaW5nTmVlZGVkPSF0LndyYXBwZWQmJiFsJiYhdSYmKGg9Yih2KSksdC5jZWxsSGVpZ2h0TWF5SW5jcmVhc2U9c3x8dXx8dC5tYXlIYXZlTWFya3VwfHwodm9pZCAwPT09aD9iKHYpOmgpLHQubmVlZHNDb252ZXJ0VG9Uc3BhbnM9dC5tYXlIYXZlTWFya3VwfHx0LndyYXBwaW5nTmVlZGVkfHx0LmxhdGV4LHQud3JhcHBpbmdOZWVkZWQpe3ZhciBtPSgiICI9PT1uLndyYXBTcGxpdENoYXJhY3Rlcj92LnJlcGxhY2UoLzxhIGhyZWY9L2dpLCI8YV9ocmVmPSIpOnYpLnNwbGl0KG4ud3JhcFNwbGl0Q2hhcmFjdGVyKSx5PSIgIj09PW4ud3JhcFNwbGl0Q2hhcmFjdGVyP20ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoLzxhX2hyZWY9L2dpLCI8YSBocmVmPSIpfSk6bTt0LmZyYWdtZW50cz15Lm1hcChmdW5jdGlvbih0KXtyZXR1cm57dGV4dDp0LHdpZHRoOm51bGx9fSksdC5mcmFnbWVudHMucHVzaCh7ZnJhZ21lbnQ6bi53cmFwU3BhY2VyLHdpZHRoOm51bGx9KSxmPXkuam9pbihuLmxpbmVCcmVha2VyKStuLmxpbmVCcmVha2VyK24ud3JhcFNwYWNlcn1lbHNlIGRlbGV0ZSB0LmZyYWdtZW50cyxmPXY7cmV0dXJuIGZ9KS5hdHRyKCJkeSIsZnVuY3Rpb24odCl7cmV0dXJuIHQubmVlZHNDb252ZXJ0VG9Uc3BhbnM/MDoiMC43NWVtIn0pLmVhY2goZnVuY3Rpb24odCl7dmFyIG89YS5zZWxlY3QodGhpcyksbD10LndyYXBwaW5nTmVlZGVkP0w6Qzt0Lm5lZWRzQ29udmVydFRvVHNwYW5zP3MuY29udmVydFRvVHNwYW5zKG8saSxsKHIsdGhpcyxlLGksdCkpOmEuc2VsZWN0KHRoaXMucGFyZW50Tm9kZSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrUCh0KSsiICIrbi5jZWxsUGFkKyIpIn0pLmF0dHIoInRleHQtYW5jaG9yIixmdW5jdGlvbih0KXtyZXR1cm57bGVmdDoic3RhcnQiLGNlbnRlcjoibWlkZGxlIixyaWdodDoiZW5kIn1bdC5hbGlnbl19KX0pfWZ1bmN0aW9uIGIodCl7cmV0dXJuLTEhPT10LmluZGV4T2Yobi53cmFwU3BsaXRDaGFyYWN0ZXIpfWZ1bmN0aW9uIF8odCxlLHIpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbTWF0aC5taW4oZSx0Lmxlbmd0aC0xKV07cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bltNYXRoLm1pbihyLG4ubGVuZ3RoLTEpXTpufXJldHVybiB0fWZ1bmN0aW9uIHcodCxlLHIpe3QudHJhbnNpdGlvbigpLmVhc2Uobi5yZWxlYXNlVHJhbnNpdGlvbkVhc2UpLmR1cmF0aW9uKG4ucmVsZWFzZVRyYW5zaXRpb25EdXJhdGlvbikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZS54KyIgIityKyIpIil9ZnVuY3Rpb24gayh0KXtyZXR1cm4iY2VsbHMiPT09dC50eXBlfWZ1bmN0aW9uIFQodCl7cmV0dXJuImhlYWRlciI9PT10LnR5cGV9ZnVuY3Rpb24gTSh0KXtyZXR1cm4odC5yb3dCbG9ja3MubGVuZ3RoP3Qucm93QmxvY2tzWzBdLmF1eGlsaWFyeUJsb2NrczpbXSkucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrSShlLDEvMCl9LDApfWZ1bmN0aW9uIEEodCxlLHIpe3ZhciBuPXYoZSlbMF07aWYodm9pZCAwIT09bil7dmFyIGE9bi5yb3dCbG9ja3MsaT1uLmNhbGNkYXRhLG89eihhLGEubGVuZ3RoKSxzPW4uY2FsY2RhdGEuZ3JvdXBIZWlnaHQtTShuKSxsPWkuc2Nyb2xsWT1NYXRoLm1heCgwLE1hdGgubWluKG8tcyxpLnNjcm9sbFkpKSxjPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49W10sYT0wLGk9MDtpPHQubGVuZ3RoO2krKyl7Zm9yKHZhciBvPXRbaV0scz1vLnJvd3MsbD0wLGM9MDtjPHMubGVuZ3RoO2MrKylsKz1zW2NdLnJvd0hlaWdodDtvLmFsbFJvd3NIZWlnaHQ9bCxlPGErbCYmZStyPmEmJm4ucHVzaChpKSxhKz1sfXJldHVybiBufShhLGwscyk7MT09PWMubGVuZ3RoJiYoY1swXT09PWEubGVuZ3RoLTE/Yy51bnNoaWZ0KGNbMF0tMSk6Yy5wdXNoKGNbMF0rMSkpLGNbMF0lMiYmYy5yZXZlcnNlKCksZS5lYWNoKGZ1bmN0aW9uKHQsZSl7dC5wYWdlPWNbZV0sdC5zY3JvbGxZPWx9KSxlLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgwICIrKHoodC5yb3dCbG9ja3MsdC5wYWdlKS10LnNjcm9sbFkpKyIpIn0pLHQmJihFKHQscixlLGMsbi5wcmV2UGFnZXMsbiwwKSxFKHQscixlLGMsbi5wcmV2UGFnZXMsbiwxKSxtKHIsdCkpfX1mdW5jdGlvbiBTKHQsZSxyLGkpe3JldHVybiBmdW5jdGlvbihvKXt2YXIgcz1vLmNhbGNkYXRhP28uY2FsY2RhdGE6byxsPWUuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBzLmtleT09PXQua2V5fSksYz1yfHxzLnNjcm9sbGJhclN0YXRlLmRyYWdNdWx0aXBsaWVyLHU9cy5zY3JvbGxZO3Muc2Nyb2xsWT12b2lkIDA9PT1pP3Muc2Nyb2xsWStjKmEuZXZlbnQuZHk6aTt2YXIgaD1sLnNlbGVjdEFsbCgiLiIrbi5jbi55Q29sdW1uKS5zZWxlY3RBbGwoIi4iK24uY24uY29sdW1uQmxvY2spLmZpbHRlcihrKTtyZXR1cm4gQSh0LGgsbCkscy5zY3JvbGxZPT09dX19ZnVuY3Rpb24gRSh0LGUscixuLGEsaSxvKXtuW29dIT09YVtvXSYmKGNsZWFyVGltZW91dChpLmN1cnJlbnRSZXBhaW50W29dKSxpLmN1cnJlbnRSZXBhaW50W29dPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaT1yLmZpbHRlcihmdW5jdGlvbih0LGUpe3JldHVybiBlPT09byYmbltlXSE9PWFbZV19KTt5KHQsZSxpLHIpLGFbb109bltvXX0pKX1mdW5jdGlvbiBMKHQsZSxyLGkpe3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWEuc2VsZWN0KGUucGFyZW50Tm9kZSk7by5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZnJhZ21lbnRzO28uc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuZWFjaChmdW5jdGlvbih0LHIpe2Vbcl0ud2lkdGg9dGhpcy5nZXRDb21wdXRlZFRleHRMZW5ndGgoKX0pO3ZhciByLGEsaT1lW2UubGVuZ3RoLTFdLndpZHRoLHM9ZS5zbGljZSgwLC0xKSxsPVtdLGM9MCx1PXQuY29sdW1uLmNvbHVtbldpZHRoLTIqbi5jZWxsUGFkO2Zvcih0LnZhbHVlPSIiO3MubGVuZ3RoOyljKyhhPShyPXMuc2hpZnQoKSkud2lkdGgraSk+dSYmKHQudmFsdWUrPWwuam9pbihuLndyYXBTcGFjZXIpK24ubGluZUJyZWFrZXIsbD1bXSxjPTApLGwucHVzaChyLnRleHQpLGMrPWE7YyYmKHQudmFsdWUrPWwuam9pbihuLndyYXBTcGFjZXIpKSx0LndyYXBwZWQ9ITB9KSxvLnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLnJlbW92ZSgpLHgoby5zZWxlY3QoIi4iK24uY24uY2VsbFRleHQpLHIsdCxpKSxhLnNlbGVjdChlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkuY2FsbChPKX19ZnVuY3Rpb24gQyh0LGUscixpLG8pe3JldHVybiBmdW5jdGlvbigpe2lmKCFvLnNldHRsZWRZKXt2YXIgcz1hLnNlbGVjdChlLnBhcmVudE5vZGUpLGw9UihvKSxjPW8ua2V5LWwuZmlyc3RSb3dJbmRleCx1PWwucm93c1tjXS5yb3dIZWlnaHQsaD1vLmNlbGxIZWlnaHRNYXlJbmNyZWFzZT9lLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KzIqbi5jZWxsUGFkOnUsZj1NYXRoLm1heChoLHUpO2YtbC5yb3dzW2NdLnJvd0hlaWdodCYmKGwucm93c1tjXS5yb3dIZWlnaHQ9Zix0LnNlbGVjdEFsbCgiLiIrbi5jbi5jb2x1bW5DZWxsKS5jYWxsKE8pLEEobnVsbCx0LmZpbHRlcihrKSwwKSxtKHIsaSwhMCkpLHMuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPWEuc2VsZWN0KHRoaXMucGFyZW50Tm9kZSkuc2VsZWN0KCIuIituLmNuLmNlbGxSZWN0KS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10aGlzLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCksaT1lLnRvcC10LnRvcCsocj9yLm1hdHJpeC5mOm4uY2VsbFBhZCk7cmV0dXJuInRyYW5zbGF0ZSgiK1AobyxhLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLnNlbGVjdCgiLiIrbi5jbi5jZWxsVGV4dEhvbGRlcikubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKSsiICIraSsiKSJ9KSxvLnNldHRsZWRZPSEwfX19ZnVuY3Rpb24gUCh0LGUpe3N3aXRjaCh0LmFsaWduKXtjYXNlImxlZnQiOnJldHVybiBuLmNlbGxQYWQ7Y2FzZSJyaWdodCI6cmV0dXJuIHQuY29sdW1uLmNvbHVtbldpZHRoLShlfHwwKS1uLmNlbGxQYWQ7Y2FzZSJjZW50ZXIiOnJldHVybih0LmNvbHVtbi5jb2x1bW5XaWR0aC0oZXx8MCkpLzI7ZGVmYXVsdDpyZXR1cm4gbi5jZWxsUGFkfX1mdW5jdGlvbiBPKHQpe3QuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXt2YXIgZT10LnJvd0Jsb2Nrc1swXS5hdXhpbGlhcnlCbG9ja3MucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrSShlLDEvMCl9LDApO3JldHVybiJ0cmFuc2xhdGUoMCAiKyhJKFIodCksdC5rZXkpK2UpKyIpIn0pLnNlbGVjdEFsbCgiLiIrbi5jbi5jZWxsUmVjdCkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0KXtyZXR1cm4oZT1SKHQpLHI9dC5rZXksZS5yb3dzW3ItZS5maXJzdFJvd0luZGV4XSkucm93SGVpZ2h0O3ZhciBlLHJ9KX1mdW5jdGlvbiB6KHQsZSl7Zm9yKHZhciByPTAsbj1lLTE7bj49MDtuLS0pcis9RCh0W25dKTtyZXR1cm4gcn1mdW5jdGlvbiBJKHQsZSl7Zm9yKHZhciByPTAsbj0wO248dC5yb3dzLmxlbmd0aCYmdC5yb3dzW25dLnJvd0luZGV4PGU7bisrKXIrPXQucm93c1tuXS5yb3dIZWlnaHQ7cmV0dXJuIHJ9ZnVuY3Rpb24gRCh0KXt2YXIgZT10LmFsbFJvd3NIZWlnaHQ7aWYodm9pZCAwIT09ZSlyZXR1cm4gZTtmb3IodmFyIHI9MCxuPTA7bjx0LnJvd3MubGVuZ3RoO24rKylyKz10LnJvd3Nbbl0ucm93SGVpZ2h0O3JldHVybiB0LmFsbFJvd3NIZWlnaHQ9cixyfWZ1bmN0aW9uIFIodCl7cmV0dXJuIHQucm93QmxvY2tzW3QucGFnZV19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9IXQuX2NvbnRleHQuc3RhdGljUGxvdCxzPXQuX2Z1bGxMYXlvdXQuX3BhcGVyLnNlbGVjdEFsbCgiLiIrbi5jbi50YWJsZSkuZGF0YShlLm1hcChmdW5jdGlvbihlKXt2YXIgcj1pLnVud3JhcChlKS50cmFjZTtyZXR1cm4gdSh0LHIpfSksaS5rZXlGdW4pO3MuZXhpdCgpLnJlbW92ZSgpLHMuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24udGFibGUsITApLmF0dHIoIm92ZXJmbG93IiwidmlzaWJsZSIpLnN0eWxlKCJib3gtc2l6aW5nIiwiY29udGVudC1ib3giKS5zdHlsZSgicG9zaXRpb24iLCJhYnNvbHV0ZSIpLnN0eWxlKCJsZWZ0IiwwKS5zdHlsZSgib3ZlcmZsb3ciLCJ2aXNpYmxlIikuc3R5bGUoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKSxzLmF0dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gdC53aWR0aCt0LnNpemUubCt0LnNpemUucn0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0K3Quc2l6ZS50K3Quc2l6ZS5ifSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdC50cmFuc2xhdGVYKyIsIit0LnRyYW5zbGF0ZVkrIikifSk7dmFyIGY9cy5zZWxlY3RBbGwoIi4iK24uY24udGFibGVDb250cm9sVmlldykuZGF0YShpLnJlcGVhdCxpLmtleUZ1bikseD1mLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnRhYmxlQ29udHJvbFZpZXcsITApLnN0eWxlKCJib3gtc2l6aW5nIiwiY29udGVudC1ib3giKTtyJiZ4Lm9uKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGUpe2YuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBlPT09dH0pLmNhbGwobSx0KX0pLm9uKCJtb3VzZXdoZWVsIixmdW5jdGlvbihlKXtpZighZS5zY3JvbGxiYXJTdGF0ZS53aGVlbGluZyl7ZS5zY3JvbGxiYXJTdGF0ZS53aGVlbGluZz0hMDt2YXIgcj1lLnNjcm9sbFkrYS5ldmVudC5kZWx0YVk7Uyh0LGYsbnVsbCxyKShlKXx8KGEuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCksYS5ldmVudC5wcmV2ZW50RGVmYXVsdCgpKSxlLnNjcm9sbGJhclN0YXRlLndoZWVsaW5nPSExfX0pLmNhbGwobSx0LCEwKSxmLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3Quc2l6ZS5sKyIgIit0LnNpemUudCsiKSJ9KTt2YXIgYj1mLnNlbGVjdEFsbCgiLiIrbi5jbi5zY3JvbGxCYWNrZ3JvdW5kKS5kYXRhKGkucmVwZWF0LGkua2V5RnVuKTtiLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZChuLmNuLnNjcm9sbEJhY2tncm91bmQsITApLmF0dHIoImZpbGwiLCJub25lIiksYi5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIHQud2lkdGh9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdodH0pLGYuZWFjaChmdW5jdGlvbihlKXtvLnNldENsaXBVcmwoYS5zZWxlY3QodGhpcyksZCh0LGUpLHQpfSk7dmFyIF89Zi5zZWxlY3RBbGwoIi4iK24uY24ueUNvbHVtbikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2x1bW5zfSxpLmtleUZ1bik7Xy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi55Q29sdW1uLCEwKSxfLmV4aXQoKS5yZW1vdmUoKSxfLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QueCsiIDApIn0pLHImJl8uY2FsbChhLmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4oZnVuY3Rpb24oZSl7cmV0dXJuIHcoYS5zZWxlY3QodGhpcyksZSwtbi51cGxpZnQpLGwodGhpcyksZS5jYWxjZGF0YS5jb2x1bW5EcmFnSW5Qcm9ncmVzcz0hMCxtKGYuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNhbGNkYXRhLmtleT09PXQua2V5fSksdCksZX0pLm9uKCJkcmFnIixmdW5jdGlvbih0KXt2YXIgZT1hLnNlbGVjdCh0aGlzKSxyPWZ1bmN0aW9uKGUpe3JldHVybih0PT09ZT9hLmV2ZW50Lng6ZS54KStlLmNvbHVtbldpZHRoLzJ9O3QueD1NYXRoLm1heCgtbi5vdmVyZHJhZyxNYXRoLm1pbih0LmNhbGNkYXRhLndpZHRoK24ub3ZlcmRyYWctdC5jb2x1bW5XaWR0aCxhLmV2ZW50LngpKSx2KF8pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jYWxjZGF0YS5rZXk9PT10LmNhbGNkYXRhLmtleX0pLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gcih0KS1yKGUpfSkuZm9yRWFjaChmdW5jdGlvbihlLHIpe2UueEluZGV4PXIsZS54PXQ9PT1lP2UueDplLnhTY2FsZShlKX0pLF8uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB0IT09ZX0pLnRyYW5zaXRpb24oKS5lYXNlKG4udHJhbnNpdGlvbkVhc2UpLmR1cmF0aW9uKG4udHJhbnNpdGlvbkR1cmF0aW9uKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0LngrIiAwKSJ9KSxlLmNhbGwoYykuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC54KyIgLSIrbi51cGxpZnQrIiApIil9KS5vbigiZHJhZ2VuZCIsZnVuY3Rpb24oZSl7dmFyIHI9YS5zZWxlY3QodGhpcyksbj1lLmNhbGNkYXRhO2UueD1lLnhTY2FsZShlKSxlLmNhbGNkYXRhLmNvbHVtbkRyYWdJblByb2dyZXNzPSExLHcocixlLDApLGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLmdkQ29sdW1uc09yaWdpbmFsT3JkZXI7ZS5nZENvbHVtbnMuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiByW24uaW5kZXhPZih0KV0tcltuLmluZGV4T2YoZSldfSksZS5jb2x1bW5vcmRlcj1yLHQuZW1pdCgicGxvdGx5X3Jlc3R5bGUiKX0odCxuLG4uY29sdW1ucy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQueEluZGV4fSkpfSkpLF8uZWFjaChmdW5jdGlvbihlKXtvLnNldENsaXBVcmwoYS5zZWxlY3QodGhpcyksZyh0LGUpLHQpfSk7dmFyIE09Xy5zZWxlY3RBbGwoIi4iK24uY24uY29sdW1uQmxvY2spLmRhdGEoaC5zcGxpdFRvUGFuZWxzLGkua2V5RnVuKTtNLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLmNvbHVtbkJsb2NrLCEwKS5hdHRyKCJpZCIsZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSksTS5zdHlsZSgiY3Vyc29yIixmdW5jdGlvbih0KXtyZXR1cm4gdC5kcmFnSGFuZGxlPyJldy1yZXNpemUiOnQuY2FsY2RhdGEuc2Nyb2xsYmFyU3RhdGUuYmFyV2lnZ2xlUm9vbT8ibnMtcmVzaXplIjoiZGVmYXVsdCJ9KTt2YXIgRT1NLmZpbHRlcihUKSxMPU0uZmlsdGVyKGspO3ImJkwuY2FsbChhLmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4oZnVuY3Rpb24odCl7cmV0dXJuIGEuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCksdH0pLm9uKCJkcmFnIixTKHQsZiwtMSkpLm9uKCJkcmFnZW5kIixmdW5jdGlvbigpe30pKSx5KHQsZixFLE0pLHkodCxmLEwsTSk7dmFyIEM9Zi5zZWxlY3RBbGwoIi4iK24uY24uc2Nyb2xsQXJlYUNsaXApLmRhdGEoaS5yZXBlYXQsaS5rZXlGdW4pO0MuZW50ZXIoKS5hcHBlbmQoImNsaXBQYXRoIikuY2xhc3NlZChuLmNuLnNjcm9sbEFyZWFDbGlwLCEwKS5hdHRyKCJpZCIsZnVuY3Rpb24oZSl7cmV0dXJuIGQodCxlKX0pO3ZhciBQPUMuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbEFyZWFDbGlwUmVjdCkuZGF0YShpLnJlcGVhdCxpLmtleUZ1bik7UC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQobi5jbi5zY3JvbGxBcmVhQ2xpcFJlY3QsITApLmF0dHIoIngiLC1uLm92ZXJkcmFnKS5hdHRyKCJ5Iiwtbi51cGxpZnQpLmF0dHIoImZpbGwiLCJub25lIiksUC5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIHQud2lkdGgrMipuLm92ZXJkcmFnfSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHQrbi51cGxpZnR9KSxfLnNlbGVjdEFsbCgiLiIrbi5jbi5jb2x1bW5Cb3VuZGFyeSkuZGF0YShpLnJlcGVhdCxpLmtleUZ1bikuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24uY29sdW1uQm91bmRhcnksITApO3ZhciBPPV8uc2VsZWN0QWxsKCIuIituLmNuLmNvbHVtbkJvdW5kYXJ5Q2xpcHBhdGgpLmRhdGEoaS5yZXBlYXQsaS5rZXlGdW4pO08uZW50ZXIoKS5hcHBlbmQoImNsaXBQYXRoIikuY2xhc3NlZChuLmNuLmNvbHVtbkJvdW5kYXJ5Q2xpcHBhdGgsITApLE8uYXR0cigiaWQiLGZ1bmN0aW9uKGUpe3JldHVybiBnKHQsZSl9KTt2YXIgej1PLnNlbGVjdEFsbCgiLiIrbi5jbi5jb2x1bW5Cb3VuZGFyeVJlY3QpLmRhdGEoaS5yZXBlYXQsaS5rZXlGdW4pO3ouZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKG4uY24uY29sdW1uQm91bmRhcnlSZWN0LCEwKS5hdHRyKCJmaWxsIiwibm9uZSIpLHouYXR0cigid2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbHVtbldpZHRoKzIqcCh0KX0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuY2FsY2RhdGEuaGVpZ2h0KzIqcCh0KStuLnVwbGlmdH0pLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybi1wKHQpfSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuLXAodCl9KSxBKG51bGwsTCxmKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9ndXAiOjcxNSwiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4vY29uc3RhbnRzIjoxMjUxLCIuL2RhdGFfcHJlcGFyYXRpb25faGVscGVyIjoxMjUyLCIuL2RhdGFfc3BsaXRfaGVscGVycyI6MTI1MyxkMzoxNjV9XSwxMjU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmlidXRlcyxzPXQoIi4uL3BpZS9hdHRyaWJ1dGVzIiksbD10KCIuLi9zdW5idXJzdC9hdHRyaWJ1dGVzIiksYz10KCIuL2NvbnN0YW50cyIpLHU9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXtsYWJlbHM6bC5sYWJlbHMscGFyZW50czpsLnBhcmVudHMsdmFsdWVzOmwudmFsdWVzLGJyYW5jaHZhbHVlczpsLmJyYW5jaHZhbHVlcyxjb3VudDpsLmNvdW50LGxldmVsOmwubGV2ZWwsbWF4ZGVwdGg6bC5tYXhkZXB0aCx0aWxpbmc6e3BhY2tpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInNxdWFyaWZ5IiwiYmluYXJ5IiwiZGljZSIsInNsaWNlIiwic2xpY2UtZGljZSIsImRpY2Utc2xpY2UiXSxkZmx0OiJzcXVhcmlmeSIsZWRpdFR5cGU6InBsb3QifSxzcXVhcmlmeXJhdGlvOnt2YWxUeXBlOiJudW1iZXIiLG1pbjoxLGRmbHQ6MSxlZGl0VHlwZToicGxvdCJ9LGZsaXA6e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbIngiLCJ5Il0sZGZsdDoiIixlZGl0VHlwZToicGxvdCJ9LHBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjMsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToiY2FsYyJ9LG1hcmtlcjp1KHtwYWQ6e3Q6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InBsb3QifSxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJwbG90In0scjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToicGxvdCJ9LGI6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToiY2FsYyJ9LGNvbG9yczpsLm1hcmtlci5jb2xvcnMsZGVwdGhmYWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCExLCJyZXZlcnNlZCJdLGVkaXRUeXBlOiJzdHlsZSJ9LGxpbmU6bC5tYXJrZXIubGluZSxlZGl0VHlwZToiY2FsYyJ9LGkoIm1hcmtlciIse2NvbG9yQXR0cjoiY29sb3JzIixhbmltOiExfSkpLHBhdGhiYXI6e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSxzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJib3R0b20iXSxkZmx0OiJ0b3AiLGVkaXRUeXBlOiJwbG90In0sZWRnZXNoYXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyI+IiwiPCIsInwiLCIvIiwiXFwiXSxkZmx0OiI+IixlZGl0VHlwZToicGxvdCJ9LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MTIsZWRpdFR5cGU6InBsb3QifSx0ZXh0Zm9udDp1KHt9LHMudGV4dGZvbnQse30pLGVkaXRUeXBlOiJjYWxjIn0sdGV4dDpzLnRleHQsdGV4dGluZm86bC50ZXh0aW5mbyx0ZXh0dGVtcGxhdGU6YSh7ZWRpdFR5cGU6InBsb3QifSx7a2V5czpjLmV2ZW50RGF0YUtleXMuY29uY2F0KFsibGFiZWwiLCJ2YWx1ZSJdKX0pLGhvdmVydGV4dDpzLmhvdmVydGV4dCxob3ZlcmluZm86bC5ob3ZlcmluZm8saG92ZXJ0ZW1wbGF0ZTpuKHt9LHtrZXlzOmMuZXZlbnREYXRhS2V5c30pLHRleHRmb250OnMudGV4dGZvbnQsaW5zaWRldGV4dGZvbnQ6cy5pbnNpZGV0ZXh0Zm9udCxvdXRzaWRldGV4dGZvbnQ6dSh7fSxzLm91dHNpZGV0ZXh0Zm9udCx7fSksdGV4dHBvc2l0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AgbGVmdCIsInRvcCBjZW50ZXIiLCJ0b3AgcmlnaHQiLCJtaWRkbGUgbGVmdCIsIm1pZGRsZSBjZW50ZXIiLCJtaWRkbGUgcmlnaHQiLCJib3R0b20gbGVmdCIsImJvdHRvbSBjZW50ZXIiLCJib3R0b20gcmlnaHQiXSxkZmx0OiJ0b3AgbGVmdCIsZWRpdFR5cGU6InBsb3QifSxkb21haW46byh7bmFtZToidHJlZW1hcCIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vcGllL2F0dHJpYnV0ZXMiOjEwOTQsIi4uL3N1bmJ1cnN0L2F0dHJpYnV0ZXMiOjEyMzEsIi4vY29uc3RhbnRzIjoxMjYwfV0sMTI1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9wbG90cyIpO3IubmFtZT0idHJlZW1hcCIsci5wbG90PWZ1bmN0aW9uKHQsZSxhLGkpe24ucGxvdEJhc2VQbG90KHIubmFtZSx0LGUsYSxpKX0sci5jbGVhbj1mdW5jdGlvbih0LGUsYSxpKXtuLmNsZWFuQmFzZVBsb3Qoci5uYW1lLHQsZSxhLGkpfX0seyIuLi8uLi9wbG90cy9wbG90cyI6ODI2fV0sMTI1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zdW5idXJzdC9jYWxjIik7ci5jYWxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uY2FsYyh0LGUpfSxyLmNyb3NzVHJhY2VDYWxjPWZ1bmN0aW9uKHQpe3JldHVybiBuLl9ydW5Dcm9zc1RyYWNlQ2FsYygidHJlZW1hcCIsdCl9fSx7Ii4uL3N1bmJ1cnN0L2NhbGMiOjEyMzN9XSwxMjYwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Q0xJQ0tfVFJBTlNJVElPTl9USU1FOjc1MCxDTElDS19UUkFOU0lUSU9OX0VBU0lORzoicG9seSIsZXZlbnREYXRhS2V5czpbImN1cnJlbnRQYXRoIiwicm9vdCIsImVudHJ5IiwicGVyY2VudFJvb3QiLCJwZXJjZW50RW50cnkiLCJwZXJjZW50UGFyZW50Il0sZ2FwV2l0aFBhdGhiYXI6MX19LHt9XSwxMjYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIuLi8uLi9wbG90cy9kb21haW4iKS5kZWZhdWx0cyxzPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZVRleHQsbD10KCIuLi9iYXIvY29uc3RhbnRzIikuVEVYVFBBRCxjPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLHU9Yy5oYXNDb2xvcnNjYWxlLGg9Yy5oYW5kbGVEZWZhdWx0cztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYyl7ZnVuY3Rpb24gZihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfXZhciBwPWYoImxhYmVscyIpLGQ9ZigicGFyZW50cyIpO2lmKHAmJnAubGVuZ3RoJiZkJiZkLmxlbmd0aCl7dmFyIGc9ZigidmFsdWVzIik7ZyYmZy5sZW5ndGg/ZigiYnJhbmNodmFsdWVzIik6ZigiY291bnQiKSxmKCJsZXZlbCIpLGYoIm1heGRlcHRoIiksInNxdWFyaWZ5Ij09PWYoInRpbGluZy5wYWNraW5nIikmJmYoInRpbGluZy5zcXVhcmlmeXJhdGlvIiksZigidGlsaW5nLmZsaXAiKSxmKCJ0aWxpbmcucGFkIik7dmFyIHY9ZigidGV4dCIpO2YoInRleHR0ZW1wbGF0ZSIpLGUudGV4dHRlbXBsYXRlfHxmKCJ0ZXh0aW5mbyIsQXJyYXkuaXNBcnJheSh2KT8idGV4dCtsYWJlbCI6ImxhYmVsIiksZigiaG92ZXJ0ZXh0IiksZigiaG92ZXJ0ZW1wbGF0ZSIpO3ZhciBtPWYoInBhdGhiYXIudmlzaWJsZSIpO3ModCxlLGMsZiwiYXV0byIse2hhc1BhdGhiYXI6bSxtb2R1bGVIYXNTZWxlY3RlZDohMSxtb2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVsZUhhc0NvbnN0cmFpbjohMSxtb2R1bGVIYXNDbGlwb25heGlzOiExLG1vZHVsZUhhc1RleHRhbmdsZTohMSxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITF9KSxmKCJ0ZXh0cG9zaXRpb24iKTt2YXIgeT0tMSE9PWUudGV4dHBvc2l0aW9uLmluZGV4T2YoImJvdHRvbSIpO2YoIm1hcmtlci5saW5lLndpZHRoIikmJmYoIm1hcmtlci5saW5lLmNvbG9yIixjLnBhcGVyX2JnY29sb3IpO3ZhciB4PWYoIm1hcmtlci5jb2xvcnMiKSxiPWUuX2hhc0NvbG9yc2NhbGU9dSh0LCJtYXJrZXIiLCJjb2xvcnMiKXx8KHQubWFya2VyfHx7fSkuY29sb3JheGlzO2I/aCh0LGUsYyxmLHtwcmVmaXg6Im1hcmtlci4iLGNMZXR0ZXI6ImMifSk6ZigibWFya2VyLmRlcHRoZmFkZSIsISh4fHxbXSkubGVuZ3RoKTt2YXIgXz0yKmUudGV4dGZvbnQuc2l6ZTtmKCJtYXJrZXIucGFkLnQiLHk/Xy80Ol8pLGYoIm1hcmtlci5wYWQubCIsXy80KSxmKCJtYXJrZXIucGFkLnIiLF8vNCksZigibWFya2VyLnBhZC5iIix5P186Xy80KSxiJiZoKHQsZSxjLGYse3ByZWZpeDoibWFya2VyLiIsY0xldHRlcjoiYyJ9KSxlLl9ob3ZlcmVkPXttYXJrZXI6e2xpbmU6e3dpZHRoOjIsY29sb3I6aS5jb250cmFzdChjLnBhcGVyX2JnY29sb3IpfX19LG0mJihmKCJwYXRoYmFyLnRoaWNrbmVzcyIsZS5wYXRoYmFyLnRleHRmb250LnNpemUrMipsKSxmKCJwYXRoYmFyLnNpZGUiKSxmKCJwYXRoYmFyLmVkZ2VzaGFwZSIpKSxvKGUsYyxmKSxlLl9sZW5ndGg9bnVsbH1lbHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NzkwLCIuLi9iYXIvY29uc3RhbnRzIjo4NTgsIi4uL2Jhci9kZWZhdWx0cyI6ODYwLCIuL2F0dHJpYnV0ZXMiOjEyNTd9XSwxMjYyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIikscz10KCIuL3BhcnRpdGlvbiIpLGw9dCgiLi9zdHlsZSIpLnN0eWxlT25lLGM9dCgiLi9jb25zdGFudHMiKSx1PXQoIi4uL3N1bmJ1cnN0L2hlbHBlcnMiKSxoPXQoIi4uL3N1bmJ1cnN0L2Z4Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGYscCl7dmFyIGQ9cC5iYXJEaWZZLGc9cC53aWR0aCx2PXAuaGVpZ2h0LG09cC52aWV3WCx5PXAudmlld1kseD1wLnBhdGhTbGljZSxiPXAudG9Nb3ZlSW5zaWRlU2xpY2UsXz1wLnN0clRyYW5zZm9ybSx3PXAuaGFzVHJhbnNpdGlvbixrPXAuaGFuZGxlU2xpY2VzRXhpdCxUPXAubWFrZVVwZGF0ZVNsaWNlSW50ZXJwb2xhdG9yLE09cC5tYWtlVXBkYXRlVGV4dEludGVycG9sYXRvcixBPXt9LFM9dC5fZnVsbExheW91dCxFPWVbMF0sTD1FLnRyYWNlLEM9RS5oaWVyYXJjaHksUD1nL0wuX2VudHJ5RGVwdGgsTz11Lmxpc3RQYXRoKHIuZGF0YSwiaWQiKSx6PXMoQy5jb3B5KCksW2csdl0se3BhY2tpbmc6ImRpY2UiLHBhZDp7aW5uZXI6MCx0b3A6MCxsZWZ0OjAscmlnaHQ6MCxib3R0b206MH19KS5kZXNjZW5kYW50cygpOyh6PXouZmlsdGVyKGZ1bmN0aW9uKHQpe3ZhciBlPU8uaW5kZXhPZih0LmRhdGEuaWQpO3JldHVybi0xIT09ZSYmKHQueDA9UCplLHQueDE9UCooZSsxKSx0LnkwPWQsdC55MT1kK3YsdC5vblBhdGhiYXI9ITAsITApfSkpLnJldmVyc2UoKSwoZj1mLmRhdGEoeix1LmdldFB0SWQpKS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInBhdGhiYXIiLCEwKSxrKGYsITAsQSxbZyx2XSx4KSxmLm9yZGVyKCk7dmFyIEk9Zjt3JiYoST1JLnRyYW5zaXRpb24oKS5lYWNoKCJlbmQiLGZ1bmN0aW9uKCl7dmFyIGU9bi5zZWxlY3QodGhpcyk7dS5zZXRTbGljZUN1cnNvcihlLHQse2hpZGVPblJvb3Q6ITEsaGlkZU9uTGVhdmVzOiExLGlzVHJhbnNpdGlvbmluZzohMX0pfSkpLEkuZWFjaChmdW5jdGlvbihzKXtzLl9ob3Zlclg9bShzLngxLU1hdGgubWluKGcsdikvMikscy5faG92ZXJZPXkocy55MS12LzIpO3ZhciBmPW4uc2VsZWN0KHRoaXMpLHA9YS5lbnN1cmVTaW5nbGUoZiwicGF0aCIsInN1cmZhY2UiLGZ1bmN0aW9uKHQpe3Quc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIil9KTt3P3AudHJhbnNpdGlvbigpLmF0dHJUd2VlbigiZCIsZnVuY3Rpb24odCl7dmFyIGU9VCh0LCEwLEEsW2csdl0pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4geChlKHQpKX19KTpwLmF0dHIoImQiLHgpLGYuY2FsbChoLHIsdCxlLHtzdHlsZU9uZTpsLGV2ZW50RGF0YUtleXM6Yy5ldmVudERhdGFLZXlzLHRyYW5zaXRpb25UaW1lOmMuQ0xJQ0tfVFJBTlNJVElPTl9USU1FLHRyYW5zaXRpb25FYXNpbmc6Yy5DTElDS19UUkFOU0lUSU9OX0VBU0lOR30pLmNhbGwodS5zZXRTbGljZUN1cnNvcix0LHtoaWRlT25Sb290OiExLGhpZGVPbkxlYXZlczohMSxpc1RyYW5zaXRpb25pbmc6dC5fdHJhbnNpdGlvbmluZ30pLHAuY2FsbChsLHMsTCx7aG92ZXJlZDohMX0pLHMuX3RleHQ9KHUuZ2V0UHRMYWJlbChzKXx8IiIpLnNwbGl0KCI8YnI+Iikuam9pbigiICIpfHwiIjt2YXIgZD1hLmVuc3VyZVNpbmdsZShmLCJnIiwic2xpY2V0ZXh0Iiksaz1hLmVuc3VyZVNpbmdsZShkLCJ0ZXh0IiwiIixmdW5jdGlvbih0KXt0LmF0dHIoImRhdGEtbm90ZXgiLDEpfSksRT1hLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0LHUuZGV0ZXJtaW5lVGV4dEZvbnQoTCxzLFMuZm9udCx7b25QYXRoYmFyOiEwfSkpO2sudGV4dChzLl90ZXh0fHwiICIpLmNsYXNzZWQoInNsaWNldGV4dCIsITApLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKS5jYWxsKGkuZm9udCxFKS5jYWxsKG8uY29udmVydFRvVHNwYW5zLHQpLHMudGV4dEJCPWkuYkJveChrLm5vZGUoKSkscy50cmFuc2Zvcm09YihzLHtmb250U2l6ZTpFLnNpemUsb25QYXRoYmFyOiEwfSkscy50cmFuc2Zvcm0uZm9udFNpemU9RS5zaXplLHc/ay50cmFuc2l0aW9uKCkuYXR0clR3ZWVuKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3ZhciBlPU0odCwhMCxBLFtnLHZdKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIF8oZSh0KSl9fSk6ay5hdHRyKCJ0cmFuc2Zvcm0iLF8ocykpfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uL3N1bmJ1cnN0L2Z4IjoxMjM2LCIuLi9zdW5idXJzdC9oZWxwZXJzIjoxMjM3LCIuL2NvbnN0YW50cyI6MTI2MCwiLi9wYXJ0aXRpb24iOjEyNjcsIi4vc3R5bGUiOjEyNjksZDM6MTY1fV0sMTI2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxvPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLHM9dCgiLi9wYXJ0aXRpb24iKSxsPXQoIi4vc3R5bGUiKS5zdHlsZU9uZSxjPXQoIi4vY29uc3RhbnRzIiksdT10KCIuLi9zdW5idXJzdC9oZWxwZXJzIiksaD10KCIuLi9zdW5idXJzdC9meCIpLGY9dCgiLi4vc3VuYnVyc3QvcGxvdCIpLmZvcm1hdFNsaWNlTGFiZWw7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHAsZCl7dmFyIGc9ZC53aWR0aCx2PWQuaGVpZ2h0LG09ZC52aWV3WCx5PWQudmlld1kseD1kLnBhdGhTbGljZSxiPWQudG9Nb3ZlSW5zaWRlU2xpY2UsXz1kLnN0clRyYW5zZm9ybSx3PWQuaGFzVHJhbnNpdGlvbixrPWQuaGFuZGxlU2xpY2VzRXhpdCxUPWQubWFrZVVwZGF0ZVNsaWNlSW50ZXJwb2xhdG9yLE09ZC5tYWtlVXBkYXRlVGV4dEludGVycG9sYXRvcixBPWQucHJldkVudHJ5LFM9dC5fZnVsbExheW91dCxFPWVbMF0udHJhY2UsTD0tMSE9PUUudGV4dHBvc2l0aW9uLmluZGV4T2YoImxlZnQiKSxDPS0xIT09RS50ZXh0cG9zaXRpb24uaW5kZXhPZigicmlnaHQiKSxQPS0xIT09RS50ZXh0cG9zaXRpb24uaW5kZXhPZigiYm90dG9tIiksTz0hUCYmIUUubWFya2VyLnBhZC50fHxQJiYhRS5tYXJrZXIucGFkLmIsej1zKHIsW2csdl0se3BhY2tpbmc6RS50aWxpbmcucGFja2luZyxzcXVhcmlmeXJhdGlvOkUudGlsaW5nLnNxdWFyaWZ5cmF0aW8sZmxpcFg6RS50aWxpbmcuZmxpcC5pbmRleE9mKCJ4Iik+LTEsZmxpcFk6RS50aWxpbmcuZmxpcC5pbmRleE9mKCJ5Iik+LTEscGFkOntpbm5lcjpFLnRpbGluZy5wYWQsdG9wOkUubWFya2VyLnBhZC50LGxlZnQ6RS5tYXJrZXIucGFkLmwscmlnaHQ6RS5tYXJrZXIucGFkLnIsYm90dG9tOkUubWFya2VyLnBhZC5ifX0pLmRlc2NlbmRhbnRzKCksST0xLzAsRD0tMS8wO3ouZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT10LmRlcHRoO2U+PUUuX21heERlcHRoPyh0LngwPXQueDE9KHQueDArdC54MSkvMix0LnkwPXQueTE9KHQueTArdC55MSkvMik6KEk9TWF0aC5taW4oSSxlKSxEPU1hdGgubWF4KEQsZSkpfSkscD1wLmRhdGEoeix1LmdldFB0SWQpLEUuX21heFZpc2libGVMYXllcnM9aXNGaW5pdGUoRCk/RC1JKzE6MCxwLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xpY2UiLCEwKSxrKHAsITEse30sW2csdl0seCkscC5vcmRlcigpO3ZhciBSPW51bGw7aWYodyYmQSl7dmFyIEY9dS5nZXRQdElkKEEpO3AuZWFjaChmdW5jdGlvbih0KXtudWxsPT09UiYmdS5nZXRQdElkKHQpPT09RiYmKFI9e3gwOnQueDAseDE6dC54MSx5MDp0LnkwLHkxOnQueTF9KX0pfXZhciBCPWZ1bmN0aW9uKCl7cmV0dXJuIFJ8fHt4MDowLHgxOmcseTA6MCx5MTp2fX0sTj1wO3JldHVybiB3JiYoTj1OLnRyYW5zaXRpb24oKS5lYWNoKCJlbmQiLGZ1bmN0aW9uKCl7dmFyIGU9bi5zZWxlY3QodGhpcyk7dS5zZXRTbGljZUN1cnNvcihlLHQse2hpZGVPblJvb3Q6ITAsaGlkZU9uTGVhdmVzOiExLGlzVHJhbnNpdGlvbmluZzohMX0pfSkpLE4uZWFjaChmdW5jdGlvbihzKXt2YXIgcD11LmlzSGVhZGVyKHMsRSk7cy5faG92ZXJYPW0ocy54MS1FLm1hcmtlci5wYWQucikscy5faG92ZXJZPXkoUD9zLnkxLUUubWFya2VyLnBhZC5iLzI6cy55MCtFLm1hcmtlci5wYWQudC8yKTt2YXIgZD1uLnNlbGVjdCh0aGlzKSxrPWEuZW5zdXJlU2luZ2xlKGQsInBhdGgiLCJzdXJmYWNlIixmdW5jdGlvbih0KXt0LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSk7dz9rLnRyYW5zaXRpb24oKS5hdHRyVHdlZW4oImQiLGZ1bmN0aW9uKHQpe3ZhciBlPVQodCwhMSxCKCksW2csdl0pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4geChlKHQpKX19KTprLmF0dHIoImQiLHgpLGQuY2FsbChoLHIsdCxlLHtzdHlsZU9uZTpsLGV2ZW50RGF0YUtleXM6Yy5ldmVudERhdGFLZXlzLHRyYW5zaXRpb25UaW1lOmMuQ0xJQ0tfVFJBTlNJVElPTl9USU1FLHRyYW5zaXRpb25FYXNpbmc6Yy5DTElDS19UUkFOU0lUSU9OX0VBU0lOR30pLmNhbGwodS5zZXRTbGljZUN1cnNvcix0LHtpc1RyYW5zaXRpb25pbmc6dC5fdHJhbnNpdGlvbmluZ30pLGsuY2FsbChsLHMsRSx7aG92ZXJlZDohMX0pLHMueDA9PT1zLngxfHxzLnkwPT09cy55MT9zLl90ZXh0PSIiOnMuX3RleHQ9cD9PPyIiOnUuZ2V0UHRMYWJlbChzKXx8IiI6ZihzLHIsRSxlLFMpfHwiIjt2YXIgQT1hLmVuc3VyZVNpbmdsZShkLCJnIiwic2xpY2V0ZXh0Iiksej1hLmVuc3VyZVNpbmdsZShBLCJ0ZXh0IiwiIixmdW5jdGlvbih0KXt0LmF0dHIoImRhdGEtbm90ZXgiLDEpfSksST1hLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0LHUuZGV0ZXJtaW5lVGV4dEZvbnQoRSxzLFMuZm9udCkpO3oudGV4dChzLl90ZXh0fHwiICIpLmNsYXNzZWQoInNsaWNldGV4dCIsITApLmF0dHIoInRleHQtYW5jaG9yIixDPyJlbmQiOkx8fHA/InN0YXJ0IjoibWlkZGxlIikuY2FsbChpLmZvbnQsSSkuY2FsbChvLmNvbnZlcnRUb1RzcGFucyx0KSxzLnRleHRCQj1pLmJCb3goei5ub2RlKCkpLHMudHJhbnNmb3JtPWIocyx7Zm9udFNpemU6SS5zaXplLGlzSGVhZGVyOnB9KSxzLnRyYW5zZm9ybS5mb250U2l6ZT1JLnNpemUsdz96LnRyYW5zaXRpb24oKS5hdHRyVHdlZW4oInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7dmFyIGU9TSh0LCExLEIoKSxbZyx2XSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBfKGUodCkpfX0pOnouYXR0cigidHJhbnNmb3JtIixfKHMpKX0pLFJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uL3N1bmJ1cnN0L2Z4IjoxMjM2LCIuLi9zdW5idXJzdC9oZWxwZXJzIjoxMjM3LCIuLi9zdW5idXJzdC9wbG90IjoxMjQxLCIuL2NvbnN0YW50cyI6MTI2MCwiLi9wYXJ0aXRpb24iOjEyNjcsIi4vc3R5bGUiOjEyNjksZDM6MTY1fV0sMTI2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJ0cmVlbWFwIixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIpLGNhdGVnb3JpZXM6W10sYW5pbWF0YWJsZTohMCxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIikuY2FsYyxjcm9zc1RyYWNlQ2FsYzp0KCIuL2NhbGMiKS5jcm9zc1RyYWNlQ2FsYyxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKS5zdHlsZSxjb2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLG1ldGE6e319fSx7Ii4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjoxMTM4LCIuL2F0dHJpYnV0ZXMiOjEyNTcsIi4vYmFzZV9wbG90IjoxMjU4LCIuL2NhbGMiOjEyNTksIi4vZGVmYXVsdHMiOjEyNjEsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjEyNjUsIi4vbGF5b3V0X2RlZmF1bHRzIjoxMjY2LCIuL3Bsb3QiOjEyNjgsIi4vc3R5bGUiOjEyNjl9XSwxMjY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17dHJlZW1hcGNvbG9yd2F5Ont2YWxUeXBlOiJjb2xvcmxpc3QiLGVkaXRUeXBlOiJjYWxjIn0sZXh0ZW5kdHJlZW1hcGNvbG9yczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDEyNjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfXIoInRyZWVtYXBjb2xvcndheSIsZS5jb2xvcndheSkscigiZXh0ZW5kdHJlZW1hcGNvbG9ycyIpfX0seyIuLi8uLi9saWIiOjcxNywiLi9sYXlvdXRfYXR0cmlidXRlcyI6MTI2NX1dLDEyNjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMtaGllcmFyY2h5Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxpPXIuZmxpcFgsbz1yLmZsaXBZLHM9ImRpY2Utc2xpY2UiPT09ci5wYWNraW5nLGw9ci5wYWRbbz8iYm90dG9tIjoidG9wIl0sYz1yLnBhZFtpPyJyaWdodCI6ImxlZnQiXSx1PXIucGFkW2k/ImxlZnQiOiJyaWdodCJdLGg9ci5wYWRbbz8idG9wIjoiYm90dG9tIl07cyYmKGE9YyxjPWwsbD1hLGE9dSx1PWgsaD1hKTt2YXIgZj1uLnRyZWVtYXAoKS50aWxlKGZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQpe2Nhc2Uic3F1YXJpZnkiOnJldHVybiBuLnRyZWVtYXBTcXVhcmlmeS5yYXRpbyhlKTtjYXNlImJpbmFyeSI6cmV0dXJuIG4udHJlZW1hcEJpbmFyeTtjYXNlImRpY2UiOnJldHVybiBuLnRyZWVtYXBEaWNlO2Nhc2Uic2xpY2UiOnJldHVybiBuLnRyZWVtYXBTbGljZTtkZWZhdWx0OnJldHVybiBuLnRyZWVtYXBTbGljZURpY2V9fShyLnBhY2tpbmcsci5zcXVhcmlmeXJhdGlvKSkucGFkZGluZ0lubmVyKHIucGFkLmlubmVyKS5wYWRkaW5nTGVmdChjKS5wYWRkaW5nUmlnaHQodSkucGFkZGluZ1RvcChsKS5wYWRkaW5nQm90dG9tKGgpLnNpemUocz9bZVsxXSxlWzBdXTplKSh0KTtyZXR1cm4oc3x8aXx8bykmJmZ1bmN0aW9uIHQoZSxyLG4pe3ZhciBhO24uc3dhcFhZJiYoYT1lLngwLGUueDA9ZS55MCxlLnkwPWEsYT1lLngxLGUueDE9ZS55MSxlLnkxPWEpO24uZmxpcFgmJihhPWUueDAsZS54MD1yWzBdLWUueDEsZS54MT1yWzBdLWEpO24uZmxpcFkmJihhPWUueTAsZS55MD1yWzFdLWUueTEsZS55MT1yWzFdLWEpO3ZhciBpPWUuY2hpbGRyZW47aWYoaSlmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyl0KGlbb10scixuKX0oZixlLHtzd2FwWFk6cyxmbGlwWDppLGZsaXBZOm99KSxmfX0seyJkMy1oaWVyYXJjaHkiOjE1OX1dLDEyNjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uL3N1bmJ1cnN0L2hlbHBlcnMiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vYmFyL2NvbnN0YW50cyIpLlRFWFRQQUQscz10KCIuLi9iYXIvcGxvdCIpLnRvTW92ZUluc2lkZUJhcixsPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKSxjPWwucmVjb3JkTWluVGV4dFNpemUsdT1sLmNsZWFyTWluVGV4dFNpemUsaD10KCIuLi9iYXIvc3R5bGUiKS5yZXNpemVUZXh0LGY9dCgiLi9jb25zdGFudHMiKSxwPXQoIi4vZHJhd19kZXNjZW5kYW50cyIpLGQ9dCgiLi9kcmF3X2FuY2VzdG9ycyIpO2Z1bmN0aW9uIGcodCl7cmV0dXJuIGEuaXNIaWVyYXJjaHlSb290KHQpPyIiOmEuZ2V0UHRJZCh0KX1mdW5jdGlvbiB2KHQsZSxyLGwpe3ZhciB1PXQuX2Z1bGxMYXlvdXQsaD1lWzBdLHY9aC50cmFjZSxtPWguaGllcmFyY2h5LHk9YS5maW5kRW50cnlXaXRoTGV2ZWwobSx2LmxldmVsKSx4PW4uc2VsZWN0KHIpLGI9eC5zZWxlY3RBbGwoImcucGF0aGJhciIpLF89eC5zZWxlY3RBbGwoImcuc2xpY2UiKTtpZigheSlyZXR1cm4gYi5yZW1vdmUoKSx2b2lkIF8ucmVtb3ZlKCk7dmFyIHc9YS5pc0hpZXJhcmNoeVJvb3QoeSksaz0hdS51bmlmb3JtdGV4dC5tb2RlJiZhLmhhc1RyYW5zaXRpb24obCksVD1hLmdldE1heERlcHRoKHYpLE09dS5fc2l6ZSxBPXYuZG9tYWluLFM9TS53KihBLnhbMV0tQS54WzBdKSxFPU0uaCooQS55WzFdLUEueVswXSksTD1TLEM9di5wYXRoYmFyLnRoaWNrbmVzcyxQPXYubWFya2VyLmxpbmUud2lkdGgrZi5nYXBXaXRoUGF0aGJhcixPPXYucGF0aGJhci52aXNpYmxlP3YucGF0aGJhci5zaWRlLmluZGV4T2YoImJvdHRvbSIpPi0xP0UrUDotKEMrUCk6MCx6PXt4MDpMLHgxOkwseTA6Tyx5MTpPK0N9LEk9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXYudGlsaW5nLnBhZCxhPWZ1bmN0aW9uKHQpe3JldHVybiB0LW48PWUueDB9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQrbj49ZS54MX0sbz1mdW5jdGlvbih0KXtyZXR1cm4gdC1uPD1lLnkwfSxzPWZ1bmN0aW9uKHQpe3JldHVybiB0K24+PWUueTF9O3JldHVybnt4MDphKHQueDAtbik/MDppKHQueDAtbik/clswXTp0LngwLHgxOmEodC54MStuKT8wOmkodC54MStuKT9yWzBdOnQueDEseTA6byh0LnkwLW4pPzA6cyh0LnkwLW4pP3JbMV06dC55MCx5MTpvKHQueTErbik/MDpzKHQueTErbik/clsxXTp0LnkxfX0sRD1udWxsLFI9e30sRj17fSxCPW51bGwsTj1mdW5jdGlvbih0LGUpe3JldHVybiBlP1JbZyh0KV06RltnKHQpXX0saj1mdW5jdGlvbih0LGUscixuKXtpZihlKXJldHVybiBSW2cobSldfHx6O3ZhciBhPUZbdi5sZXZlbF18fHI7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGEuZGVwdGgteS5kYXRhLmRlcHRoPFR9KHQpP0kodCxhLG4pOnt9fTtoLmhhc011bHRpcGxlUm9vdHMmJncmJlQrKyx2Ll9tYXhEZXB0aD1ULHYuX2JhY2tncm91bmRDb2xvcj11LnBhcGVyX2JnY29sb3Isdi5fZW50cnlEZXB0aD15LmRhdGEuZGVwdGgsdi5fYXRSb290TGV2ZWw9dzt2YXIgVj0tUy8yK00ubCtNLncqKEEueFsxXStBLnhbMF0pLzIsVT0tRS8yK00udCtNLmgqKDEtKEEueVsxXStBLnlbMF0pLzIpLHE9ZnVuY3Rpb24odCl7cmV0dXJuIFYrdH0sSD1mdW5jdGlvbih0KXtyZXR1cm4gVSt0fSxHPUgoMCksWT1xKDApLFc9ZnVuY3Rpb24odCl7cmV0dXJuIFkrdH0sWD1mdW5jdGlvbih0KXtyZXR1cm4gRyt0fTtmdW5jdGlvbiBaKHQsZSl7cmV0dXJuIHQrIiwiK2V9dmFyIEo9VygwKSxLPWZ1bmN0aW9uKHQpe3QueD1NYXRoLm1heChKLHQueCl9LFE9di5wYXRoYmFyLmVkZ2VzaGFwZSwkPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54MCxuPXQueDEsYT10LnkwLGk9dC55MSxsPXQudGV4dEJCLGg9ZnVuY3Rpb24odCl7cmV0dXJuLTEhPT12LnRleHRwb3NpdGlvbi5pbmRleE9mKHQpfSxmPWgoImJvdHRvbSIpLHA9aCgidG9wIil8fGUuaXNIZWFkZXImJiFmPyJzdGFydCI6Zj8iZW5kIjoibWlkZGxlIixkPWgoInJpZ2h0IiksZz1oKCJsZWZ0Iil8fGUub25QYXRoYmFyPy0xOmQ/MTowLG09di5tYXJrZXIucGFkO2lmKGUuaXNIZWFkZXIpe2lmKChyKz1tLmwtbyk+PShuLT1tLnItbykpe3ZhciB5PShyK24pLzI7cj15LG49eX12YXIgeDtmP2E8KHg9aS1tLmIpJiZ4PGkmJihhPXgpOmE8KHg9YSttLnQpJiZ4PGkmJihpPXgpfXZhciBiPXMocixuLGEsaSxsLHtpc0hvcml6b250YWw6ITEsY29uc3RyYWluZWQ6ITAsYW5nbGU6MCxhbmNob3I6cCxsZWZ0VG9SaWdodDpnfSk7cmV0dXJuIGIuZm9udFNpemU9ZS5mb250U2l6ZSxiLnRhcmdldFg9cShiLnRhcmdldFgpLGIudGFyZ2V0WT1IKGIudGFyZ2V0WSksaXNOYU4oYi50YXJnZXRYKXx8aXNOYU4oYi50YXJnZXRZKT97fToociE9PW4mJmEhPT1pJiZjKHYudHlwZSxiLHUpLHtzY2FsZTpiLnNjYWxlLHJvdGF0ZTpiLnJvdGF0ZSx0ZXh0WDpiLnRleHRYLHRleHRZOmIudGV4dFksYW5jaG9yWDpiLmFuY2hvclgsYW5jaG9yWTpiLmFuY2hvclksdGFyZ2V0WDpiLnRhcmdldFgsdGFyZ2V0WTpiLnRhcmdldFl9KX0sdHQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbj0wLGE9dDshciYmbjxUOyluKyssKGE9YS5wYXJlbnQpP3I9TihhLGUpOm49VDtyZXR1cm4gcnx8e319LGV0PWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBvLHM9Tih0LGUpO2lmKHMpbz1zO2Vsc2UgaWYoZSlvPXo7ZWxzZSBpZihEKWlmKHQucGFyZW50KXt2YXIgbD1CfHxyO2wmJiFlP289SSh0LGwsYSk6KG89e30saS5leHRlbmRGbGF0KG8sdHQodCxlKSkpfWVsc2Ugbz10O2Vsc2Ugbz17fTtyZXR1cm4gbi5pbnRlcnBvbGF0ZShvLHt4MDp0LngwLHgxOnQueDEseTA6dC55MCx5MTp0LnkxfSl9LHJ0PWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzPU4odCxlKSxsPXt9LGg9aih0LGUscixvKTtpLmV4dGVuZEZsYXQobCx7dHJhbnNmb3JtOiQoe3gwOmgueDAseDE6aC54MSx5MDpoLnkwLHkxOmgueTEsdGV4dEJCOnQudGV4dEJCLF90ZXh0OnQuX3RleHR9LHtpc0hlYWRlcjphLmlzSGVhZGVyKHQsdil9KX0pLHM/bD1zOnQucGFyZW50JiZpLmV4dGVuZEZsYXQobCx0dCh0LGUpKTt2YXIgZj10LnRyYW5zZm9ybTtyZXR1cm4gdC54MCE9PXQueDEmJnQueTAhPT10LnkxJiZjKHYudHlwZSxmLHUpLG4uaW50ZXJwb2xhdGUobCx7dHJhbnNmb3JtOntzY2FsZTpmLnNjYWxlLHJvdGF0ZTpmLnJvdGF0ZSx0ZXh0WDpmLnRleHRYLHRleHRZOmYudGV4dFksYW5jaG9yWDpmLmFuY2hvclgsYW5jaG9yWTpmLmFuY2hvclksdGFyZ2V0WDpmLnRhcmdldFgsdGFyZ2V0WTpmLnRhcmdldFl9fSl9LG50PWZ1bmN0aW9uKHQsZSxyLGEsaSl7dmFyIG89YVswXSxzPWFbMV07az90LmV4aXQoKS50cmFuc2l0aW9uKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpO3Quc2VsZWN0KCJwYXRoLnN1cmZhY2UiKS50cmFuc2l0aW9uKCkuYXR0clR3ZWVuKCJkIixmdW5jdGlvbih0KXt2YXIgcj1mdW5jdGlvbih0LGUscixhKXt2YXIgaSxvPU4odCxlKTtpZihlKWk9ejtlbHNle3ZhciBzPU4oeSxlKTtpPXM/SSh0LHMsYSk6e319cmV0dXJuIG4uaW50ZXJwb2xhdGUobyxpKX0odCxlLDAsW28sc10pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShyKHQpKX19KSx0LnNlbGVjdCgiZy5zbGljZXRleHQiKS5hdHRyKCJvcGFjaXR5IiwwKX0pLnJlbW92ZSgpOnQuZXhpdCgpLnJlbW92ZSgpfSxhdD1mdW5jdGlvbih0KXt2YXIgZT10LnRyYW5zZm9ybTtyZXR1cm4gdC54MCE9PXQueDEmJnQueTAhPT10LnkxJiZjKHYudHlwZSxlLHUpLGkuZ2V0VGV4dFRyYW5zZm9ybSh7dGV4dFg6ZS50ZXh0WCx0ZXh0WTplLnRleHRZLGFuY2hvclg6ZS5hbmNob3JYLGFuY2hvclk6ZS5hbmNob3JZLHRhcmdldFg6ZS50YXJnZXRYLHRhcmdldFk6ZS50YXJnZXRZLHNjYWxlOmUuc2NhbGUscm90YXRlOmUucm90YXRlfSl9O2smJihiLmVhY2goZnVuY3Rpb24odCl7UltnKHQpXT17eDA6dC54MCx4MTp0LngxLHkwOnQueTAseTE6dC55MX0sdC50cmFuc2Zvcm0mJihSW2codCldLnRyYW5zZm9ybT17dGV4dFg6dC50cmFuc2Zvcm0udGV4dFgsdGV4dFk6dC50cmFuc2Zvcm0udGV4dFksYW5jaG9yWDp0LnRyYW5zZm9ybS5hbmNob3JYLGFuY2hvclk6dC50cmFuc2Zvcm0uYW5jaG9yWSx0YXJnZXRYOnQudHJhbnNmb3JtLnRhcmdldFgsdGFyZ2V0WTp0LnRyYW5zZm9ybS50YXJnZXRZLHNjYWxlOnQudHJhbnNmb3JtLnNjYWxlLHJvdGF0ZTp0LnRyYW5zZm9ybS5yb3RhdGV9KX0pLF8uZWFjaChmdW5jdGlvbih0KXtGW2codCldPXt4MDp0LngwLHgxOnQueDEseTA6dC55MCx5MTp0LnkxfSx0LnRyYW5zZm9ybSYmKEZbZyh0KV0udHJhbnNmb3JtPXt0ZXh0WDp0LnRyYW5zZm9ybS50ZXh0WCx0ZXh0WTp0LnRyYW5zZm9ybS50ZXh0WSxhbmNob3JYOnQudHJhbnNmb3JtLmFuY2hvclgsYW5jaG9yWTp0LnRyYW5zZm9ybS5hbmNob3JZLHRhcmdldFg6dC50cmFuc2Zvcm0udGFyZ2V0WCx0YXJnZXRZOnQudHJhbnNmb3JtLnRhcmdldFksc2NhbGU6dC50cmFuc2Zvcm0uc2NhbGUscm90YXRlOnQudHJhbnNmb3JtLnJvdGF0ZX0pLCFEJiZhLmlzRW50cnkodCkmJihEPXQpfSkpLEI9cCh0LGUseSxfLHt3aWR0aDpTLGhlaWdodDpFLHZpZXdYOnEsdmlld1k6SCxwYXRoU2xpY2U6ZnVuY3Rpb24odCl7dmFyIGU9cSh0LngwKSxyPXEodC54MSksbj1IKHQueTApLGE9SCh0LnkxKSxpPXItZSxvPWEtbjtpZighaXx8IW8pcmV0dXJuIiI7cmV0dXJuIk0iK1ooZSxuKzApKyJMIitaKHItMCxuKSsiTCIrWihyLGEtMCkrIkwiK1ooZSswLGEpKyJaIn0sdG9Nb3ZlSW5zaWRlU2xpY2U6JCxwcmV2RW50cnk6RCxtYWtlVXBkYXRlU2xpY2VJbnRlcnBvbGF0b3I6ZXQsbWFrZVVwZGF0ZVRleHRJbnRlcnBvbGF0b3I6cnQsaGFuZGxlU2xpY2VzRXhpdDpudCxoYXNUcmFuc2l0aW9uOmssc3RyVHJhbnNmb3JtOmF0fSksdi5wYXRoYmFyLnZpc2libGU/ZCh0LGUseSxiLHtiYXJEaWZZOk8sd2lkdGg6TCxoZWlnaHQ6Qyx2aWV3WDpXLHZpZXdZOlgscGF0aFNsaWNlOmZ1bmN0aW9uKHQpe3ZhciBlPVcoTWF0aC5tYXgoTWF0aC5taW4odC54MCx0LngwKSwwKSkscj1XKE1hdGgubWluKE1hdGgubWF4KHQueDEsdC54MSksTCkpLG49WCh0LnkwKSxhPVgodC55MSksaT1DLzIsbz17fSxzPXt9O28ueD1lLHMueD1yLG8ueT1zLnk9KG4rYSkvMjt2YXIgbD17eDplLHk6bn0sYz17eDpyLHk6bn0sdT17eDpyLHk6YX0saD17eDplLHk6YX07cmV0dXJuIj4iPT09UT8obC54LT1pLGMueC09aSx1LngtPWksaC54LT1pKToiLyI9PT1RPyh1LngtPWksaC54LT1pLG8ueC09aS8yLHMueC09aS8yKToiXFwiPT09UT8obC54LT1pLGMueC09aSxvLngtPWkvMixzLngtPWkvMik6IjwiPT09USYmKG8ueC09aSxzLngtPWkpLEsobCksSyhoKSxLKG8pLEsoYyksSyh1KSxLKHMpLCJNIitaKGwueCxsLnkpKyJMIitaKGMueCxjLnkpKyJMIitaKHMueCxzLnkpKyJMIitaKHUueCx1LnkpKyJMIitaKGgueCxoLnkpKyJMIitaKG8ueCxvLnkpKyJaIn0sdG9Nb3ZlSW5zaWRlU2xpY2U6JCxtYWtlVXBkYXRlU2xpY2VJbnRlcnBvbGF0b3I6ZXQsbWFrZVVwZGF0ZVRleHRJbnRlcnBvbGF0b3I6cnQsaGFuZGxlU2xpY2VzRXhpdDpudCxoYXNUcmFuc2l0aW9uOmssc3RyVHJhbnNmb3JtOmF0fSk6Yi5yZW1vdmUoKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG8scyxsPXQuX2Z1bGxMYXlvdXQsYz1sLl90cmVlbWFwbGF5ZXIsZj0hcjsodSgidHJlZW1hcCIsbCksKG89Yy5zZWxlY3RBbGwoImcudHJhY2UudHJlZW1hcCIpLmRhdGEoZSxmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS51aWR9KSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ0cmFjZSIsITApLmNsYXNzZWQoInRyZWVtYXAiLCEwKSxvLm9yZGVyKCksIWwudW5pZm9ybXRleHQubW9kZSYmYS5oYXNUcmFuc2l0aW9uKHIpKT8oaSYmKHM9aSgpKSxuLnRyYW5zaXRpb24oKS5kdXJhdGlvbihyLmR1cmF0aW9uKS5lYXNlKHIuZWFzaW5nKS5lYWNoKCJlbmQiLGZ1bmN0aW9uKCl7cyYmcygpfSkuZWFjaCgiaW50ZXJydXB0IixmdW5jdGlvbigpe3MmJnMoKX0pLmVhY2goZnVuY3Rpb24oKXtjLnNlbGVjdEFsbCgiZy50cmFjZSIpLmVhY2goZnVuY3Rpb24oZSl7dih0LGUsdGhpcyxyKX0pfSkpOihvLmVhY2goZnVuY3Rpb24oZSl7dih0LGUsdGhpcyxyKX0pLGwudW5pZm9ybXRleHQubW9kZSYmaCh0LGwuX3RyZWVtYXBsYXllci5zZWxlY3RBbGwoIi50cmFjZSIpLCJ0cmVlbWFwIikpO2YmJm8uZXhpdCgpLnJlbW92ZSgpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vYmFyL2NvbnN0YW50cyI6ODU4LCIuLi9iYXIvcGxvdCI6ODY3LCIuLi9iYXIvc3R5bGUiOjg3MCwiLi4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLCIuLi9zdW5idXJzdC9oZWxwZXJzIjoxMjM3LCIuL2NvbnN0YW50cyI6MTI2MCwiLi9kcmF3X2FuY2VzdG9ycyI6MTI2MiwiLi9kcmF3X2Rlc2NlbmRhbnRzIjoxMjYzLGQzOjE2NX1dLDEyNjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vc3VuYnVyc3QvaGVscGVycyIpLHM9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIpLnJlc2l6ZVRleHQ7ZnVuY3Rpb24gbCh0LGUscixuKXt2YXIgcyxsLGM9KG58fHt9KS5ob3ZlcmVkLHU9ZS5kYXRhLmRhdGEsaD11LmksZj11LmNvbG9yLHA9by5pc0hpZXJhcmNoeVJvb3QoZSksZD0xO2lmKGMpcz1yLl9ob3ZlcmVkLm1hcmtlci5saW5lLmNvbG9yLGw9ci5faG92ZXJlZC5tYXJrZXIubGluZS53aWR0aDtlbHNlIGlmKHAmJiJyZ2JhKDAsMCwwLDApIj09PWYpZD0wLHM9InJnYmEoMCwwLDAsMCkiLGw9MDtlbHNlIGlmKHM9aS5jYXN0T3B0aW9uKHIsaCwibWFya2VyLmxpbmUuY29sb3IiKXx8YS5kZWZhdWx0TGluZSxsPWkuY2FzdE9wdGlvbihyLGgsIm1hcmtlci5saW5lLndpZHRoIil8fDAsIXIuX2hhc0NvbG9yc2NhbGUmJiFlLm9uUGF0aGJhcil7dmFyIGc9ci5tYXJrZXIuZGVwdGhmYWRlO2lmKGcpe3ZhciB2LG09YS5jb21iaW5lKGEuYWRkT3BhY2l0eShyLl9iYWNrZ3JvdW5kQ29sb3IsLjc1KSxmKTtpZighMD09PWcpe3ZhciB5PW8uZ2V0TWF4RGVwdGgocik7dj1pc0Zpbml0ZSh5KT9vLmlzTGVhZihlKT8wOnIuX21heFZpc2libGVMYXllcnMtKGUuZGF0YS5kZXB0aC1yLl9lbnRyeURlcHRoKTplLmRhdGEuaGVpZ2h0KzF9ZWxzZSB2PWUuZGF0YS5kZXB0aC1yLl9lbnRyeURlcHRoLHIuX2F0Um9vdExldmVsfHx2Kys7aWYodj4wKWZvcih2YXIgeD0wO3g8djt4Kyspe3ZhciBiPS41KngvdjtmPWEuY29tYmluZShhLmFkZE9wYWNpdHkobSxiKSxmKX19fXQuc3R5bGUoInN0cm9rZS13aWR0aCIsbCkuY2FsbChhLmZpbGwsZikuY2FsbChhLnN0cm9rZSxzKS5zdHlsZSgib3BhY2l0eSIsZCl9ZS5leHBvcnRzPXtzdHlsZTpmdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0Ll90cmVlbWFwbGF5ZXIuc2VsZWN0QWxsKCIudHJhY2UiKTtzKHQsZSwidHJlZW1hcCIpLGUuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxyPXRbMF0udHJhY2U7ZS5zdHlsZSgib3BhY2l0eSIsci5vcGFjaXR5KSxlLnNlbGVjdEFsbCgicGF0aC5zdXJmYWNlIikuZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5jYWxsKGwsdCxyLHtob3ZlcmVkOiExfSl9KX0pfSxzdHlsZU9uZTpsfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi9iYXIvdW5pZm9ybV90ZXh0Ijo4NzIsIi4uL3N1bmJ1cnN0L2hlbHBlcnMiOjEyMzcsZDM6MTY1fV0sMTI3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9ib3gvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXt5Om4ueSx4Om4ueCx4MDpuLngwLHkwOm4ueTAsbmFtZTphKHt9LG4ubmFtZSx7fSksb3JpZW50YXRpb246YSh7fSxuLm9yaWVudGF0aW9uLHt9KSxiYW5kd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6ImNhbGMifSxzY2FsZWdyb3VwOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxzY2FsZW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIndpZHRoIiwiY291bnQiXSxkZmx0OiJ3aWR0aCIsZWRpdFR5cGU6ImNhbGMifSxzcGFubW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsic29mdCIsImhhcmQiLCJtYW51YWwiXSxkZmx0OiJzb2Z0IixlZGl0VHlwZToiY2FsYyJ9LHNwYW46e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LHt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn1dLGVkaXRUeXBlOiJjYWxjIn0sbGluZTp7Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToic3R5bGUifSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjIsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InBsb3QifSxmaWxsY29sb3I6bi5maWxsY29sb3IscG9pbnRzOmEoe30sbi5ib3hwb2ludHMse30pLGppdHRlcjphKHt9LG4uaml0dGVyLHt9KSxwb2ludHBvczphKHt9LG4ucG9pbnRwb3Mse30pLHdpZHRoOmEoe30sbi53aWR0aCx7fSksbWFya2VyOm4ubWFya2VyLHRleHQ6bi50ZXh0LGhvdmVydGV4dDpuLmhvdmVydGV4dCxob3ZlcnRlbXBsYXRlOm4uaG92ZXJ0ZW1wbGF0ZSxib3g6e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6InBsb3QifSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi4yNSxlZGl0VHlwZToicGxvdCJ9LGZpbGxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InBsb3QifSxtZWFubGluZTp7dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToicGxvdCJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InBsb3QifSxzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJib3RoIiwicG9zaXRpdmUiLCJuZWdhdGl2ZSJdLGRmbHQ6ImJvdGgiLGVkaXRUeXBlOiJjYWxjIn0sb2Zmc2V0Z3JvdXA6bi5vZmZzZXRncm91cCxhbGlnbm1lbnRncm91cDpuLmFsaWdubWVudGdyb3VwLHNlbGVjdGVkOm4uc2VsZWN0ZWQsdW5zZWxlY3RlZDpuLnVuc2VsZWN0ZWQsaG92ZXJvbjp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsidmlvbGlucyIsInBvaW50cyIsImtkZSJdLGRmbHQ6InZpb2xpbnMrcG9pbnRzK2tkZSIsZXh0cmFzOlsiYWxsIl0sZWRpdFR5cGU6InN0eWxlIn19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vYm94L2F0dHJpYnV0ZXMiOjg4MX1dLDEyNzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vYm94L2NhbGMiKSxvPXQoIi4vaGVscGVycyIpLHM9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtmdW5jdGlvbiBsKHQsZSxyKXt2YXIgYT1lLm1heC1lLm1pbjtpZighYSlyZXR1cm4gdC5iYW5kd2lkdGg/dC5iYW5kd2lkdGg6MDtpZih0LmJhbmR3aWR0aClyZXR1cm4gTWF0aC5tYXgodC5iYW5kd2lkdGgsYS8xZTQpO3ZhciBpPXIubGVuZ3RoLG89bi5zdGRldihyLGktMSxlLm1lYW4pO3JldHVybiBNYXRoLm1heChmdW5jdGlvbih0LGUscil7cmV0dXJuIDEuMDU5Kk1hdGgubWluKGUsci8xLjM0OSkqTWF0aC5wb3codCwtLjIpfShpLG8sZS5xMy1lLnExKSxhLzEwMCl9ZnVuY3Rpb24gYyh0LGUscixuKXt2YXIgaSxvPXQuc3Bhbm1vZGUsbD10LnNwYW58fFtdLGM9W2UubWluLGUubWF4XSx1PVtlLm1pbi0yKm4sZS5tYXgrMipuXTtmdW5jdGlvbiBoKG4pe3ZhciBhPWxbbl0saT0ibXVsdGljYXRlZ29yeSI9PT1yLnR5cGU/ci5yMmMoYSk6ci5kMmMoYSwwLHRbZS52YWxMZXR0ZXIrImNhbGVuZGFyIl0pO3JldHVybiBpPT09cz91W25dOml9dmFyIGY9e3R5cGU6ImxpbmVhciIscmFuZ2U6aT0ic29mdCI9PT1vP3U6ImhhcmQiPT09bz9jOltoKDApLGgoMSldfTtyZXR1cm4gYS5zZXRDb252ZXJ0KGYpLGYuY2xlYW5SYW5nZSgpLGl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9aSh0LGUpO2lmKHJbMF0udC5lbXB0eSlyZXR1cm4gcjtmb3IodmFyIHM9dC5fZnVsbExheW91dCx1PWEuZ2V0RnJvbUlkKHQsZVsiaCI9PT1lLm9yaWVudGF0aW9uPyJ4YXhpcyI6InlheGlzIl0pLGg9MS8wLGY9LTEvMCxwPTAsZD0wLGc9MDtnPHIubGVuZ3RoO2crKyl7dmFyIHY9cltnXSxtPXYucHRzLm1hcChvLmV4dHJhY3RWYWwpLHk9di5iYW5kd2lkdGg9bChlLHYsbSkseD12LnNwYW49YyhlLHYsdSx5KTtpZih2Lm1pbj09PXYubWF4JiYwPT09eSl4PXYuc3Bhbj1bdi5taW4sdi5tYXhdLHYuZGVuc2l0eT1be3Y6MSx0OnhbMF19XSx2LmJhbmR3aWR0aD15LHA9TWF0aC5tYXgocCwxKTtlbHNle3ZhciBiPXhbMV0teFswXSxfPU1hdGguY2VpbChiLyh5LzMpKSx3PWIvXztpZighaXNGaW5pdGUodyl8fCFpc0Zpbml0ZShfKSlyZXR1cm4gbi5lcnJvcigiU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBjb21wdXRpbmcgdGhlIHZpb2xpbiBzcGFuIiksclswXS50LmVtcHR5PSEwLHI7dmFyIGs9by5tYWtlS0RFKHYsZSxtKTt2LmRlbnNpdHk9bmV3IEFycmF5KF8pO2Zvcih2YXIgVD0wLE09eFswXTtNPHhbMV0rdy8yO1QrKyxNKz13KXt2YXIgQT1rKE0pO3YuZGVuc2l0eVtUXT17djpBLHQ6TX0scD1NYXRoLm1heChwLEEpfX1kPU1hdGgubWF4KGQsbS5sZW5ndGgpLGg9TWF0aC5taW4oaCx4WzBdKSxmPU1hdGgubWF4KGYseFsxXSl9dmFyIFM9YS5maW5kRXh0cmVtZXModSxbaCxmXSx7cGFkZGVkOiEwfSk7aWYoZS5fZXh0cmVtZXNbdS5faWRdPVMsZS53aWR0aClyWzBdLnQubWF4S0RFPXA7ZWxzZXt2YXIgRT1zLl92aW9saW5TY2FsZUdyb3VwU3RhdHMsTD1lLnNjYWxlZ3JvdXAsQz1FW0xdO0M/KEMubWF4S0RFPU1hdGgubWF4KEMubWF4S0RFLHApLEMubWF4Q291bnQ9TWF0aC5tYXgoQy5tYXhDb3VudCxkKSk6RVtMXT17bWF4S0RFOnAsbWF4Q291bnQ6ZH19cmV0dXJuIHJbMF0udC5sYWJlbHMua2RlPW4uXyh0LCJrZGU6Iikscn19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vYm94L2NhbGMiOjg4MiwiLi9oZWxwZXJzIjoxMjc0fV0sMTI3MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9ib3gvY3Jvc3NfdHJhY2VfY2FsYyIpLnNldFBvc2l0aW9uT2Zmc2V0LGE9WyJ2IiwiaCJdO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmNhbGNkYXRhLGk9ZS54YXhpcyxvPWUueWF4aXMscz0wO3M8YS5sZW5ndGg7cysrKXtmb3IodmFyIGw9YVtzXSxjPSJoIj09PWw/bzppLHU9W10saD0wO2g8ci5sZW5ndGg7aCsrKXt2YXIgZj1yW2hdLHA9ZlswXS50LGQ9ZlswXS50cmFjZTshMCE9PWQudmlzaWJsZXx8InZpb2xpbiIhPT1kLnR5cGV8fHAuZW1wdHl8fGQub3JpZW50YXRpb24hPT1sfHxkLnhheGlzIT09aS5faWR8fGQueWF4aXMhPT1vLl9pZHx8dS5wdXNoKGgpfW4oInZpb2xpbiIsdCx1LGMpfX19LHsiLi4vYm94L2Nyb3NzX3RyYWNlX2NhbGMiOjg4M31dLDEyNzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi9ib3gvZGVmYXVsdHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtmdW5jdGlvbiBsKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsYSl9ZnVuY3Rpb24gYyhyLGEpe3JldHVybiBuLmNvZXJjZTIodCxlLG8scixhKX1pZihpLmhhbmRsZVNhbXBsZURlZmF1bHRzKHQsZSxsLHMpLCExIT09ZS52aXNpYmxlKXtsKCJiYW5kd2lkdGgiKSxsKCJzaWRlIiksbCgid2lkdGgiKXx8KGwoInNjYWxlZ3JvdXAiLGUubmFtZSksbCgic2NhbGVtb2RlIikpO3ZhciB1LGg9bCgic3BhbiIpO0FycmF5LmlzQXJyYXkoaCkmJih1PSJtYW51YWwiKSxsKCJzcGFubW9kZSIsdSk7dmFyIGY9bCgibGluZS5jb2xvciIsKHQubWFya2VyfHx7fSkuY29sb3J8fHIpLHA9bCgibGluZS53aWR0aCIpLGQ9bCgiZmlsbGNvbG9yIixhLmFkZE9wYWNpdHkoZS5saW5lLmNvbG9yLC41KSk7aS5oYW5kbGVQb2ludHNEZWZhdWx0cyh0LGUsbCx7cHJlZml4OiIifSk7dmFyIGc9YygiYm94LndpZHRoIiksdj1jKCJib3guZmlsbGNvbG9yIixkKSxtPWMoImJveC5saW5lLmNvbG9yIixmKSx5PWMoImJveC5saW5lLndpZHRoIixwKTtsKCJib3gudmlzaWJsZSIsQm9vbGVhbihnfHx2fHxtfHx5KSl8fChlLmJveD17dmlzaWJsZTohMX0pO3ZhciB4PWMoIm1lYW5saW5lLmNvbG9yIixmKSxiPWMoIm1lYW5saW5lLndpZHRoIixwKTtsKCJtZWFubGluZS52aXNpYmxlIixCb29sZWFuKHh8fGIpKXx8KGUubWVhbmxpbmU9e3Zpc2libGU6ITF9KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTcsIi4uL2JveC9kZWZhdWx0cyI6ODg0LCIuL2F0dHJpYnV0ZXMiOjEyNzB9XSwxMjc0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIDEvTWF0aC5zcXJ0KDIqTWF0aC5QSSkqTWF0aC5leHAoLS41KnQqdCl9O3IubWFrZUtERT1mdW5jdGlvbih0LGUscil7dmFyIG49ci5sZW5ndGgsaT1hLG89dC5iYW5kd2lkdGgscz0xLyhuKm8pO3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxhPTA7YTxuO2ErKyllKz1pKCh0LXJbYV0pL28pO3JldHVybiBzKmV9fSxyLmdldFBvc2l0aW9uT25LZGVQYXRoPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxpOyJoIj09PWUub3JpZW50YXRpb24/KGE9InkiLGk9IngiKTooYT0ieCIsaT0ieSIpO3ZhciBvPW4uZmluZFBvaW50T25QYXRoKHQucGF0aCxyLGkse3BhdGhMZW5ndGg6dC5wYXRoTGVuZ3RofSkscz10LnBvc0NlbnRlclB4LGw9b1thXTtyZXR1cm5bbCwiYm90aCI9PT1lLnNpZGU/MipzLWw6c119LHIuZ2V0S2RlVmFsdWU9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPXQucHRzLm1hcChyLmV4dHJhY3RWYWwpO3JldHVybiByLm1ha2VLREUodCxlLGEpKG4pL3QucG9zRGVuc2l0eVNjYWxlfSxyLmV4dHJhY3RWYWw9ZnVuY3Rpb24odCl7cmV0dXJuIHQudn19LHsiLi4vLi4vbGliIjo3MTd9XSwxMjc1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4uL2JveC9ob3ZlciIpLG89dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMsbCl7dmFyIGMsdSxoPXQuY2QsZj1oWzBdLnRyYWNlLHA9Zi5ob3Zlcm9uLGQ9LTEhPT1wLmluZGV4T2YoInZpb2xpbnMiKSxnPS0xIT09cC5pbmRleE9mKCJrZGUiKSx2PVtdO2lmKGR8fGcpe3ZhciBtPWkuaG92ZXJPbkJveGVzKHQsZSxyLHMpO2lmKGcmJm0ubGVuZ3RoPjApe3ZhciB5LHgsYixfLHcsaz10LnhhLFQ9dC55YTsiaCI9PT1mLm9yaWVudGF0aW9uPyh3PWUseT0ieSIsYj1ULHg9IngiLF89ayk6KHc9cix5PSJ4IixiPWsseD0ieSIsXz1UKTt2YXIgTT1oW3QuaW5kZXhdO2lmKHc+PU0uc3BhblswXSYmdzw9TS5zcGFuWzFdKXt2YXIgQT1uLmV4dGVuZEZsYXQoe30sdCksUz1fLmMycCh3LCEwKSxFPW8uZ2V0S2RlVmFsdWUoTSxmLHcpLEw9by5nZXRQb3NpdGlvbk9uS2RlUGF0aChNLGYsUyksQz1iLl9vZmZzZXQsUD1iLl9sZW5ndGg7QVt5KyIwIl09TFswXSxBW3krIjEiXT1MWzFdLEFbeCsiMCJdPUFbeCsiMSJdPVMsQVt4KyJMYWJlbCJdPXgrIjogIithLmhvdmVyTGFiZWxUZXh0KF8sdykrIiwgIitoWzBdLnQubGFiZWxzLmtkZSsiICIrRS50b0ZpeGVkKDMpLEEuc3Bpa2VEaXN0YW5jZT1tWzBdLnNwaWtlRGlzdGFuY2U7dmFyIE89eSsiU3Bpa2UiO0FbT109bVswXVtPXSxtWzBdLnNwaWtlRGlzdGFuY2U9dm9pZCAwLG1bMF1bT109dm9pZCAwLEEuaG92ZXJ0ZW1wbGF0ZT0hMSx2LnB1c2goQSksKHU9e3N0cm9rZTp0LmNvbG9yfSlbeSsiMSJdPW4uY29uc3RyYWluKEMrTFswXSxDLEMrUCksdVt5KyIyIl09bi5jb25zdHJhaW4oQytMWzFdLEMsQytQKSx1W3grIjEiXT11W3grIjIiXT1fLl9vZmZzZXQrU319ZCYmKHY9di5jb25jYXQobSkpfS0xIT09cC5pbmRleE9mKCJwb2ludHMiKSYmKGM9aS5ob3Zlck9uUG9pbnRzKHQsZSxyKSk7dmFyIHo9bC5zZWxlY3RBbGwoIi52aW9saW5saW5lLSIrZi51aWQpLmRhdGEodT9bMF06W10pO3JldHVybiB6LmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZCgidmlvbGlubGluZS0iK2YudWlkLCEwKS5hdHRyKCJzdHJva2Utd2lkdGgiLDEuNSksei5leGl0KCkucmVtb3ZlKCksei5hdHRyKHUpLCJjbG9zZXN0Ij09PXM/Yz9bY106djpjPyh2LnB1c2goYyksdik6dn19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL2JveC9ob3ZlciI6ODg2LCIuL2hlbHBlcnMiOjEyNzR9XSwxMjc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY3Jvc3NUcmFjZURlZmF1bHRzOnQoIi4uL2JveC9kZWZhdWx0cyIpLmNyb3NzVHJhY2VEZWZhdWx0cyxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIiksY3Jvc3NUcmFjZUNhbGM6dCgiLi9jcm9zc190cmFjZV9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxlIiksc3R5bGVPblNlbGVjdDp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4uL2JveC9zZWxlY3QiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToidmlvbGluIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwic3ltYm9scyIsIm9yaWVudGVkIiwiYm94LXZpb2xpbiIsInNob3dMZWdlbmQiLCJ2aW9saW5MYXlvdXQiLCJ6b29tU2NhbGUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vYm94L2RlZmF1bHRzIjo4ODQsIi4uL2JveC9zZWxlY3QiOjg5MSwiLi4vc2NhdHRlci9zdHlsZSI6MTE0MywiLi9hdHRyaWJ1dGVzIjoxMjcwLCIuL2NhbGMiOjEyNzEsIi4vY3Jvc3NfdHJhY2VfY2FsYyI6MTI3MiwiLi9kZWZhdWx0cyI6MTI3MywiLi9ob3ZlciI6MTI3NSwiLi9sYXlvdXRfYXR0cmlidXRlcyI6MTI3NywiLi9sYXlvdXRfZGVmYXVsdHMiOjEyNzgsIi4vcGxvdCI6MTI3OSwiLi9zdHlsZSI6MTI4MH1dLDEyNzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYm94L2xheW91dF9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9saWIiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17dmlvbGlubW9kZTphKHt9LG4uYm94bW9kZSx7fSksdmlvbGluZ2FwOmEoe30sbi5ib3hnYXAse30pLHZpb2xpbmdyb3VwZ2FwOmEoe30sbi5ib3hncm91cGdhcCx7fSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9ib3gvbGF5b3V0X2F0dHJpYnV0ZXMiOjg4OH1dLDEyNzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksaT10KCIuLi9ib3gvbGF5b3V0X2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpLl9zdXBwbHkodCxlLHIsZnVuY3Rpb24ocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX0sInZpb2xpbiIpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vYm94L2xheW91dF9kZWZhdWx0cyI6ODg5LCIuL2xheW91dF9hdHRyaWJ1dGVzIjoxMjc3fV0sMTI3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxvPXQoIi4uL2JveC9wbG90Iikscz10KCIuLi9zY2F0dGVyL2xpbmVfcG9pbnRzIiksbD10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYyl7dmFyIHU9dC5fZnVsbExheW91dCxoPWUueGF4aXMsZj1lLnlheGlzO2Z1bmN0aW9uIHAodCl7dmFyIGU9cyh0LHt4YXhpczpoLHlheGlzOmYsY29ubmVjdEdhcHM6ITAsYmFzZVRvbGVyYW5jZTouNzUsc2hhcGU6InNwbGluZSIsc2ltcGxpZnk6ITAsbGluZWFyaXplZDohMH0pO3JldHVybiBpLnNtb290aG9wZW4oZVswXSwxKX1hLm1ha2VUcmFjZUdyb3VwcyhjLHIsInRyYWNlIHZpb2xpbnMiKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByPW4uc2VsZWN0KHRoaXMpLGk9dFswXSxzPWkudCxjPWkudHJhY2U7aWYoITAhPT1jLnZpc2libGV8fHMuZW1wdHkpci5yZW1vdmUoKTtlbHNle3ZhciBkPXMuYlBvcyxnPXMuYmRQb3Msdj1lW3MudmFsTGV0dGVyKyJheGlzIl0sbT1lW3MucG9zTGV0dGVyKyJheGlzIl0seT0iYm90aCI9PT1jLnNpZGUseD15fHwicG9zaXRpdmUiPT09Yy5zaWRlLGI9eXx8Im5lZ2F0aXZlIj09PWMuc2lkZSxfPXIuc2VsZWN0QWxsKCJwYXRoLnZpb2xpbiIpLmRhdGEoYS5pZGVudGl0eSk7Xy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLnN0eWxlKCJ2ZWN0b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIikuYXR0cigiY2xhc3MiLCJ2aW9saW4iKSxfLmV4aXQoKS5yZW1vdmUoKSxfLmVhY2goZnVuY3Rpb24odCl7dmFyIGUscixhLGksbyxsLGgsZixfPW4uc2VsZWN0KHRoaXMpLHc9dC5kZW5zaXR5LGs9dy5sZW5ndGgsVD1tLmMybCh0LnBvcytkLCEwKSxNPW0ubDJwKFQpO2lmKGMud2lkdGgpZT1zLm1heEtERS9nO2Vsc2V7dmFyIEE9dS5fdmlvbGluU2NhbGVHcm91cFN0YXRzW2Muc2NhbGVncm91cF07ZT0iY291bnQiPT09Yy5zY2FsZW1vZGU/QS5tYXhLREUvZyooQS5tYXhDb3VudC90LnB0cy5sZW5ndGgpOkEubWF4S0RFL2d9aWYoeCl7Zm9yKGg9bmV3IEFycmF5KGspLG89MDtvPGs7bysrKShmPWhbb109e30pW3MucG9zTGV0dGVyXT1UK3dbb10udi9lLGZbcy52YWxMZXR0ZXJdPXYuYzJsKHdbb10udCwhMCk7cj1wKGgpfWlmKGIpe2ZvcihoPW5ldyBBcnJheShrKSxsPTAsbz1rLTE7bDxrO2wrKyxvLS0pKGY9aFtsXT17fSlbcy5wb3NMZXR0ZXJdPVQtd1tvXS52L2UsZltzLnZhbExldHRlcl09di5jMmwod1tvXS50LCEwKTthPXAoaCl9aWYoeSlpPXIrIkwiK2Euc3Vic3RyKDEpKyJaIjtlbHNle3ZhciBTPVtNLHYuYzJwKHdbMF0udCldLEU9W00sdi5jMnAod1trLTFdLnQpXTsiaCI9PT1jLm9yaWVudGF0aW9uJiYoUy5yZXZlcnNlKCksRS5yZXZlcnNlKCkpLGk9eD8iTSIrUysiTCIrci5zdWJzdHIoMSkrIkwiK0U6Ik0iK0UrIkwiK2Euc3Vic3RyKDEpKyJMIitTfV8uYXR0cigiZCIsaSksdC5wb3NDZW50ZXJQeD1NLHQucG9zRGVuc2l0eVNjYWxlPWUqZyx0LnBhdGg9Xy5ub2RlKCksdC5wYXRoTGVuZ3RoPXQucGF0aC5nZXRUb3RhbExlbmd0aCgpLyh5PzI6MSl9KTt2YXIgdyxrLFQsTT1jLmJveCxBPU0ud2lkdGgsUz0oTS5saW5lfHx7fSkud2lkdGg7eT8odz1nKkEsaz0wKTp4Pyh3PVswLGcqQS8yXSxrPVMqe3g6MSx5Oi0xfVtzLnBvc0xldHRlcl0pOih3PVtnKkEvMiwwXSxrPVMqe3g6LTEseToxfVtzLnBvc0xldHRlcl0pLG8ucGxvdEJveEFuZFdoaXNrZXJzKHIse3BvczptLHZhbDp2fSxjLHtiUG9zOmQsYmRQb3M6dyxiUG9zUHhPZmZzZXQ6a30pLG8ucGxvdEJveE1lYW4ocix7cG9zOm0sdmFsOnZ9LGMse2JQb3M6ZCxiZFBvczp3LGJQb3NQeE9mZnNldDprfSksIWMuYm94LnZpc2libGUmJmMubWVhbmxpbmUudmlzaWJsZSYmKFQ9YS5pZGVudGl0eSk7dmFyIEU9ci5zZWxlY3RBbGwoInBhdGgubWVhbmxpbmUiKS5kYXRhKFR8fFtdKTtFLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJtZWFubGluZSIpLnN0eWxlKCJmaWxsIiwibm9uZSIpLnN0eWxlKCJ2ZWN0b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIiksRS5leGl0KCkucmVtb3ZlKCksRS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXYuYzJwKHQubWVhbiwhMCkscj1sLmdldFBvc2l0aW9uT25LZGVQYXRoKHQsYyxlKTtuLnNlbGVjdCh0aGlzKS5hdHRyKCJkIiwiaCI9PT1jLm9yaWVudGF0aW9uPyJNIitlKyIsIityWzBdKyJWIityWzFdOiJNIityWzBdKyIsIitlKyJIIityWzFdKX0pLG8ucGxvdFBvaW50cyhyLHt4OmgseTpmfSxjLHMpfX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uL2JveC9wbG90Ijo4OTAsIi4uL3NjYXR0ZXIvbGluZV9wb2ludHMiOjExMzQsIi4vaGVscGVycyI6MTI3NCxkMzoxNjV9XSwxMjgwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVQb2ludHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiZy50cmFjZS52aW9saW5zIik7ZS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pLGUuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1lWzBdLnRyYWNlLG89bi5zZWxlY3QodGhpcykscz1yLmJveHx8e30sbD1zLmxpbmV8fHt9LGM9ci5tZWFubGluZXx8e30sdT1jLndpZHRoO28uc2VsZWN0QWxsKCJwYXRoLnZpb2xpbiIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLHIubGluZS53aWR0aCsicHgiKS5jYWxsKGEuc3Ryb2tlLHIubGluZS5jb2xvcikuY2FsbChhLmZpbGwsci5maWxsY29sb3IpLG8uc2VsZWN0QWxsKCJwYXRoLmJveCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGwud2lkdGgrInB4IikuY2FsbChhLnN0cm9rZSxsLmNvbG9yKS5jYWxsKGEuZmlsbCxzLmZpbGxjb2xvcik7dmFyIGg9eyJzdHJva2Utd2lkdGgiOnUrInB4Iiwic3Ryb2tlLWRhc2hhcnJheSI6Mip1KyJweCwiK3UrInB4In07by5zZWxlY3RBbGwoInBhdGgubWVhbiIpLnN0eWxlKGgpLmNhbGwoYS5zdHJva2UsYy5jb2xvciksby5zZWxlY3RBbGwoInBhdGgubWVhbmxpbmUiKS5zdHlsZShoKS5jYWxsKGEuc3Ryb2tlLGMuY29sb3IpLGkobyxyLHQpfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vc2NhdHRlci9zdHlsZSI6MTE0MyxkMzoxNjV9XSwxMjgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksYT10KCIuLi9pc29zdXJmYWNlL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHM9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGw9ZS5leHBvcnRzPXMobyh7eDphLngseTphLnksejphLnosdmFsdWU6YS52YWx1ZSxpc29taW46YS5pc29taW4saXNvbWF4OmEuaXNvbWF4LHN1cmZhY2U6YS5zdXJmYWNlLHNwYWNlZnJhbWU6e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGZpbGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfX0sc2xpY2VzOmEuc2xpY2VzLGNhcHM6YS5jYXBzLHRleHQ6YS50ZXh0LGhvdmVydGV4dDphLmhvdmVydGV4dCxob3ZlcnRlbXBsYXRlOmEuaG92ZXJ0ZW1wbGF0ZX0sbigiIix7Y29sb3JBdHRyOiJgdmFsdWVgIixzaG93U2NhbGVEZmx0OiEwLGVkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkse2NvbG9yYmFyOmEuY29sb3JiYXIsb3BhY2l0eTphLm9wYWNpdHksb3BhY2l0eXNjYWxlOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0sbGlnaHRwb3NpdGlvbjphLmxpZ2h0cG9zaXRpb24sbGlnaHRpbmc6YS5saWdodGluZyxmbGF0c2hhZGluZzphLmZsYXRzaGFkaW5nLGNvbnRvdXI6YS5jb250b3VyLGhvdmVyaW5mbzpvKHt9LGkuaG92ZXJpbmZvKSxzaG93bGVnZW5kOm8oe30saS5zaG93bGVnZW5kLHtkZmx0OiExfSl9KSwiY2FsYyIsIm5lc3RlZCIpO2wueC5lZGl0VHlwZT1sLnkuZWRpdFR5cGU9bC56LmVkaXRUeXBlPWwudmFsdWUuZWRpdFR5cGU9ImNhbGMrY2xlYXJBeGlzVHlwZXMiLGwudHJhbnNmb3Jtcz12b2lkIDB9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vaXNvc3VyZmFjZS9hdHRyaWJ1dGVzIjoxMDU2fV0sMTI4MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC1tZXNoM2QiKSxhPXQoIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiKS5wYXJzZUNvbG9yU2NhbGUsaT10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5Iiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKS5leHRyYWN0T3B0cyxzPXQoIi4uLy4uL3Bsb3RzL2dsM2QvemlwMyIpLGw9dCgiLi4vaXNvc3VyZmFjZS9jb252ZXJ0IikuZmluZE5lYXJlc3RPbkF4aXMsYz10KCIuLi9pc29zdXJmYWNlL2NvbnZlcnQiKS5nZW5lcmF0ZUlzb01lc2hlcztmdW5jdGlvbiB1KHQsZSxyKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9cix0aGlzLm1lc2g9ZSx0aGlzLm5hbWU9IiIsdGhpcy5kYXRhPW51bGwsdGhpcy5zaG93Q29udG91cj0hMX12YXIgaD11LnByb3RvdHlwZTtoLmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7aWYodC5vYmplY3Q9PT10aGlzLm1lc2gpe3ZhciBlPXQuZGF0YS5pbmRleCxyPXRoaXMuZGF0YS5fbWVzaFhbZV0sbj10aGlzLmRhdGEuX21lc2hZW2VdLGE9dGhpcy5kYXRhLl9tZXNoWltlXSxpPXRoaXMuZGF0YS5fWXMubGVuZ3RoLG89dGhpcy5kYXRhLl9acy5sZW5ndGgscz1sKHIsdGhpcy5kYXRhLl9YcykuaWQsYz1sKG4sdGhpcy5kYXRhLl9ZcykuaWQsdT1sKGEsdGhpcy5kYXRhLl9acykuaWQsaD10LmluZGV4PXUrbypjK28qaSpzO3QudHJhY2VDb29yZGluYXRlPVt0aGlzLmRhdGEuX21lc2hYW2hdLHRoaXMuZGF0YS5fbWVzaFlbaF0sdGhpcy5kYXRhLl9tZXNoWltoXSx0aGlzLmRhdGEuX3ZhbHVlW2hdXTt2YXIgZj10aGlzLmRhdGEuaG92ZXJ0ZXh0fHx0aGlzLmRhdGEudGV4dDtyZXR1cm4gQXJyYXkuaXNBcnJheShmKSYmdm9pZCAwIT09ZltoXT90LnRleHRMYWJlbD1mW2hdOmYmJih0LnRleHRMYWJlbD1mKSwhMH19LGgudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2NlbmUscj1lLmZ1bGxTY2VuZUxheW91dDtmdW5jdGlvbiBuKHQsZSxyLG4pe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdC5kMmwoZSwwLG4pKnJ9KX10aGlzLmRhdGE9Yyh0KTt2YXIgbD17cG9zaXRpb25zOnMobihyLnhheGlzLHQuX21lc2hYLGUuZGF0YVNjYWxlWzBdLHQueGNhbGVuZGFyKSxuKHIueWF4aXMsdC5fbWVzaFksZS5kYXRhU2NhbGVbMV0sdC55Y2FsZW5kYXIpLG4oci56YXhpcyx0Ll9tZXNoWixlLmRhdGFTY2FsZVsyXSx0LnpjYWxlbmRhcikpLGNlbGxzOnModC5fbWVzaEksdC5fbWVzaEosdC5fbWVzaEspLGxpZ2h0UG9zaXRpb246W3QubGlnaHRwb3NpdGlvbi54LHQubGlnaHRwb3NpdGlvbi55LHQubGlnaHRwb3NpdGlvbi56XSxhbWJpZW50OnQubGlnaHRpbmcuYW1iaWVudCxkaWZmdXNlOnQubGlnaHRpbmcuZGlmZnVzZSxzcGVjdWxhcjp0LmxpZ2h0aW5nLnNwZWN1bGFyLHJvdWdobmVzczp0LmxpZ2h0aW5nLnJvdWdobmVzcyxmcmVzbmVsOnQubGlnaHRpbmcuZnJlc25lbCx2ZXJ0ZXhOb3JtYWxzRXBzaWxvbjp0LmxpZ2h0aW5nLnZlcnRleG5vcm1hbHNlcHNpbG9uLGZhY2VOb3JtYWxzRXBzaWxvbjp0LmxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxvbixvcGFjaXR5OnQub3BhY2l0eSxvcGFjaXR5c2NhbGU6dC5vcGFjaXR5c2NhbGUsY29udG91ckVuYWJsZTp0LmNvbnRvdXIuc2hvdyxjb250b3VyQ29sb3I6aSh0LmNvbnRvdXIuY29sb3IpLnNsaWNlKDAsMyksY29udG91cldpZHRoOnQuY29udG91ci53aWR0aCx1c2VGYWNldE5vcm1hbHM6dC5mbGF0c2hhZGluZ30sdT1vKHQpO2wudmVydGV4SW50ZW5zaXR5PXQuX21lc2hJbnRlbnNpdHksbC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHM9W3UubWluLHUubWF4XSxsLmNvbG9ybWFwPWEodCksdGhpcy5tZXNoLnVwZGF0ZShsKX0saC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMubWVzaCksdGhpcy5tZXNoLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5nbHBsb3QuZ2wsYT1uKHtnbDpyfSksaT1uZXcgdSh0LGEsZS51aWQpO3JldHVybiBhLl90cmFjZT1pLGkudXBkYXRlKGUpLHQuZ2xwbG90LmFkZChhKSxpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciI6NzE0LCIuLi8uLi9saWIvc3RyMnJnYmFycmF5Ijo3NDAsIi4uLy4uL3Bsb3RzL2dsM2QvemlwMyI6ODE2LCIuLi9pc29zdXJmYWNlL2NvbnZlcnQiOjEwNTgsImdsLW1lc2gzZCI6MjgzfV0sMTI4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vYXR0cmlidXRlcyIpLGk9dCgiLi4vaXNvc3VyZmFjZS9kZWZhdWx0cyIpLnN1cHBseUlzb0RlZmF1bHRzO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXtmdW5jdGlvbiBzKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9aSh0LGUscixvLHMpO3ZhciBsPXMoIm9wYWNpdHlzY2FsZSIpOyJtYXgiPT09bD9lLm9wYWNpdHlzY2FsZT1bWzAsLjFdLFsxLDFdXToibWluIj09PWw/ZS5vcGFjaXR5c2NhbGU9W1swLDFdLFsxLC4xXV06ImV4dHJlbWVzIj09PWw/ZS5vcGFjaXR5c2NhbGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sbj0wO248MzI7bisrKXt2YXIgYT1uLzMxLGk9ZSsoMS1lKSooMS1NYXRoLnBvdyhNYXRoLnNpbih0KmEqTWF0aC5QSSksMikpO3IucHVzaChbYSxNYXRoLm1heCgxLE1hdGgubWluKDAsaSkpXSl9cmV0dXJuIHJ9KDEsLjEpOmZ1bmN0aW9uKHQpe3ZhciBlPTA7aWYoIUFycmF5LmlzQXJyYXkodCl8fHQubGVuZ3RoPDIpcmV0dXJuITE7aWYoIXRbMF18fCF0W3QubGVuZ3RoLTFdKXJldHVybiExO2lmKDAhPSt0WzBdWzBdfHwxIT0rdFt0Lmxlbmd0aC0xXVswXSlyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtpZigyIT09bi5sZW5ndGh8fCtuWzBdPGUpcmV0dXJuITE7ZT0rblswXX1yZXR1cm4hMH0obCl8fChlLm9wYWNpdHlzY2FsZT12b2lkIDApfX0seyIuLi8uLi9saWIiOjcxNywiLi4vaXNvc3VyZmFjZS9kZWZhdWx0cyI6MTA1OSwiLi9hdHRyaWJ1dGVzIjoxMjgxfV0sMTI4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGM6dCgiLi4vaXNvc3VyZmFjZS9jYWxjIiksY29sb3JiYXI6e21pbjoiY21pbiIsbWF4OiJjbWF4In0scGxvdDp0KCIuL2NvbnZlcnQiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToidm9sdW1lIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0ZWdvcmllczpbImdsM2QiLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2wzZCI6ODA1LCIuLi9pc29zdXJmYWNlL2NhbGMiOjEwNTcsIi4vYXR0cmlidXRlcyI6MTI4MSwiLi9jb252ZXJ0IjoxMjgyLCIuL2RlZmF1bHRzIjoxMjgzfV0sMTI4NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9iYXIvYXR0cmlidXRlcyIpLGE9dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIikubGluZSxpPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMscz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsbD10KCIuL2NvbnN0YW50cyIpLGM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsdT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIik7ZnVuY3Rpb24gaCh0KXtyZXR1cm57bWFya2VyOntjb2xvcjpjKHt9LG4ubWFya2VyLmNvbG9yLHthcnJheU9rOiExLGVkaXRUeXBlOiJzdHlsZSJ9KSxsaW5lOntjb2xvcjpjKHt9LG4ubWFya2VyLmxpbmUuY29sb3Ise2FycmF5T2s6ITEsZWRpdFR5cGU6InN0eWxlIn0pLHdpZHRoOmMoe30sbi5tYXJrZXIubGluZS53aWR0aCx7YXJyYXlPazohMSxlZGl0VHlwZToic3R5bGUifSksZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn19ZS5leHBvcnRzPXttZWFzdXJlOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdLGVkaXRUeXBlOiJjYWxjIn0sYmFzZTp7dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsYXJyYXlPazohMSxlZGl0VHlwZToiY2FsYyJ9LHg6bi54LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHksaG92ZXJ0ZXh0Om4uaG92ZXJ0ZXh0LGhvdmVydGVtcGxhdGU6byh7fSx7a2V5czpsLmV2ZW50RGF0YUtleXN9KSxob3ZlcmluZm86Yyh7fSxpLmhvdmVyaW5mbyx7ZmxhZ3M6WyJuYW1lIiwieCIsInkiLCJ0ZXh0IiwiaW5pdGlhbCIsImRlbHRhIiwiZmluYWwiXX0pLHRleHRpbmZvOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsYWJlbCIsInRleHQiLCJpbml0aWFsIiwiZGVsdGEiLCJmaW5hbCJdLGV4dHJhczpbIm5vbmUiXSxlZGl0VHlwZToicGxvdCIsYXJyYXlPazohMX0sdGV4dHRlbXBsYXRlOnMoe2VkaXRUeXBlOiJwbG90In0se2tleXM6bC5ldmVudERhdGFLZXlzLmNvbmNhdChbImxhYmVsIl0pfSksdGV4dDpuLnRleHQsdGV4dHBvc2l0aW9uOm4udGV4dHBvc2l0aW9uLGluc2lkZXRleHRhbmNob3I6bi5pbnNpZGV0ZXh0YW5jaG9yLHRleHRhbmdsZTpuLnRleHRhbmdsZSx0ZXh0Zm9udDpuLnRleHRmb250LGluc2lkZXRleHRmb250Om4uaW5zaWRldGV4dGZvbnQsb3V0c2lkZXRleHRmb250Om4ub3V0c2lkZXRleHRmb250LGNvbnN0cmFpbnRleHQ6bi5jb25zdHJhaW50ZXh0LGNsaXBvbmF4aXM6bi5jbGlwb25heGlzLG9yaWVudGF0aW9uOm4ub3JpZW50YXRpb24sb2Zmc2V0Om4ub2Zmc2V0LHdpZHRoOm4ud2lkdGgsaW5jcmVhc2luZzpoKCksZGVjcmVhc2luZzpoKCksdG90YWxzOmgoKSxjb25uZWN0b3I6e2xpbmU6e2NvbG9yOmMoe30sYS5jb2xvcix7ZGZsdDp1LmRlZmF1bHRMaW5lfSksd2lkdGg6Yyh7fSxhLndpZHRoLHtlZGl0VHlwZToicGxvdCJ9KSxkYXNoOmEuZGFzaCxlZGl0VHlwZToicGxvdCJ9LG1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInNwYW5uaW5nIiwiYmV0d2VlbiJdLGRmbHQ6ImJldHdlZW4iLGVkaXRUeXBlOiJwbG90In0sdmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sb2Zmc2V0Z3JvdXA6bi5vZmZzZXRncm91cCxhbGlnbm1lbnRncm91cDpuLmFsaWdubWVudGdyb3VwfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL2Jhci9hdHRyaWJ1dGVzIjo4NTYsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMCwiLi9jb25zdGFudHMiOjEyODd9XSwxMjg2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi8uLi9saWIiKS5tZXJnZUFycmF5LGk9dCgiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiIpLG89dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtmdW5jdGlvbiBzKHQpe3JldHVybiJhIj09PXR8fCJhYnNvbHV0ZSI9PT10fWZ1bmN0aW9uIGwodCl7cmV0dXJuInQiPT09dHx8InRvdGFsIj09PXR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYyx1PW4uZ2V0RnJvbUlkKHQsZS54YXhpc3x8IngiKSxoPW4uZ2V0RnJvbUlkKHQsZS55YXhpc3x8InkiKTsiaCI9PT1lLm9yaWVudGF0aW9uPyhyPXUubWFrZUNhbGNkYXRhKGUsIngiKSxjPWgubWFrZUNhbGNkYXRhKGUsInkiKSk6KHI9aC5tYWtlQ2FsY2RhdGEoZSwieSIpLGM9dS5tYWtlQ2FsY2RhdGEoZSwieCIpKTtmb3IodmFyIGYscD1NYXRoLm1pbihjLmxlbmd0aCxyLmxlbmd0aCksZD1uZXcgQXJyYXkocCksZz0wLHY9ITEsbT0wO208cDttKyspe3ZhciB5PXJbbV18fDAseD0hMTsoclttXSE9PW98fGwoZS5tZWFzdXJlW21dKXx8cyhlLm1lYXN1cmVbbV0pKSYmbSsxPHAmJihyW20rMV0hPT1vfHxsKGUubWVhc3VyZVttKzFdKXx8cyhlLm1lYXN1cmVbbSsxXSkpJiYoeD0hMCk7dmFyIGI9ZFttXT17aTptLHA6Y1ttXSxzOnkscmF3Uzp5LGNOZXh0Onh9O3MoZS5tZWFzdXJlW21dKT8oZz1iLnMsYi5pc1N1bT0hMCxiLmRpcj0idG90YWxzIixiLnM9Zyk6bChlLm1lYXN1cmVbbV0pPyhiLmlzU3VtPSEwLGIuZGlyPSJ0b3RhbHMiLGIucz1nKTooYi5pc1N1bT0hMSxiLmRpcj1iLnJhd1M8MD8iZGVjcmVhc2luZyI6ImluY3JlYXNpbmciLGY9Yi5zLGIucz1nK2YsZys9ZiksInRvdGFscyI9PT1iLmRpciYmKHY9ITApLGUuaWRzJiYoYi5pZD1TdHJpbmcoZS5pZHNbbV0pKSxiLnY9KGUuYmFzZXx8MCkrZ31yZXR1cm4gZC5sZW5ndGgmJihkWzBdLmhhc1RvdGFscz12KSxhKGUudGV4dCxkLCJ0eCIpLGEoZS5ob3ZlcnRleHQsZCwiaHR4IiksaShkLGUpLGR9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iOjExMjJ9XSwxMjg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17ZXZlbnREYXRhS2V5czpbImluaXRpYWwiLCJkZWx0YSIsImZpbmFsIl19fSx7fV0sMTI4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9iYXIvY3Jvc3NfdHJhY2VfY2FsYyIpLnNldEdyb3VwUG9zaXRpb25zO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGEsaT10Ll9mdWxsTGF5b3V0LG89dC5fZnVsbERhdGEscz10LmNhbGNkYXRhLGw9ZS54YXhpcyxjPWUueWF4aXMsdT1bXSxoPVtdLGY9W107Zm9yKGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIHA9b1thXTshMD09PXAudmlzaWJsZSYmcC54YXhpcz09PWwuX2lkJiZwLnlheGlzPT09Yy5faWQmJiJ3YXRlcmZhbGwiPT09cC50eXBlJiYocj1zW2FdLCJoIj09PXAub3JpZW50YXRpb24/Zi5wdXNoKHIpOmgucHVzaChyKSx1LnB1c2gocikpfXZhciBkPXttb2RlOmkud2F0ZXJmYWxsbW9kZSxub3JtOmkud2F0ZXJmYWxsbm9ybSxnYXA6aS53YXRlcmZhbGxnYXAsZ3JvdXBnYXA6aS53YXRlcmZhbGxncm91cGdhcH07Zm9yKG4odCxsLGMsaCxkKSxuKHQsYyxsLGYsZCksYT0wO2E8dS5sZW5ndGg7YSsrKXtyPXVbYV07Zm9yKHZhciBnPTA7ZzxyLmxlbmd0aDtnKyspe3ZhciB2PXJbZ107ITE9PT12LmlzU3VtJiYodi5zMCs9MD09PWc/MDpyW2ctMV0ucyksZysxPHIubGVuZ3RoJiYocltnXS5uZXh0UDA9cltnKzFdLnAwLHJbZ10ubmV4dFMwPXJbZysxXS5zMCl9fX19LHsiLi4vYmFyL2Nyb3NzX3RyYWNlX2NhbGMiOjg1OX1dLDEyODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVHcm91cGluZ0RlZmF1bHRzLGk9dCgiLi4vYmFyL2RlZmF1bHRzIikuaGFuZGxlVGV4dCxvPXQoIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGM9dCgiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIiksdT1jLklOQ1JFQVNJTkcuQ09MT1IsaD1jLkRFQ1JFQVNJTkcuQ09MT1IsZj0iIzQ0OTlGRiI7ZnVuY3Rpb24gcCh0LGUscil7dChlKyIubWFya2VyLmNvbG9yIixyKSx0KGUrIi5tYXJrZXIubGluZS5jb2xvciIsbC5kZWZhdWx0TGluZSksdChlKyIubWFya2VyLmxpbmUud2lkdGgiKX1lLmV4cG9ydHM9e3N1cHBseURlZmF1bHRzOmZ1bmN0aW9uKHQsZSxyLGEpe2Z1bmN0aW9uIGwocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLHMscixhKX1pZihvKHQsZSxhLGwpKXtsKCJtZWFzdXJlIiksbCgib3JpZW50YXRpb24iLGUueCYmIWUueT8iaCI6InYiKSxsKCJiYXNlIiksbCgib2Zmc2V0IiksbCgid2lkdGgiKSxsKCJ0ZXh0IiksbCgiaG92ZXJ0ZXh0IiksbCgiaG92ZXJ0ZW1wbGF0ZSIpO3ZhciBjPWwoInRleHRwb3NpdGlvbiIpO2kodCxlLGEsbCxjLHttb2R1bGVIYXNTZWxlY3RlZDohMSxtb2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVsZUhhc0NvbnN0cmFpbjohMCxtb2R1bGVIYXNDbGlwb25heGlzOiEwLG1vZHVsZUhhc1RleHRhbmdsZTohMCxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITB9KSwibm9uZSIhPT1lLnRleHRwb3NpdGlvbiYmKGwoInRleHR0ZW1wbGF0ZSIpLGUudGV4dHRlbXBsYXRlfHxsKCJ0ZXh0aW5mbyIpKSxwKGwsImluY3JlYXNpbmciLHUpLHAobCwiZGVjcmVhc2luZyIsaCkscChsLCJ0b3RhbHMiLGYpLGwoImNvbm5lY3Rvci52aXNpYmxlIikmJihsKCJjb25uZWN0b3IubW9kZSIpLGwoImNvbm5lY3Rvci5saW5lLndpZHRoIikmJihsKCJjb25uZWN0b3IubGluZS5jb2xvciIpLGwoImNvbm5lY3Rvci5saW5lLmRhc2giKSkpfWVsc2UgZS52aXNpYmxlPSExfSxjcm9zc1RyYWNlRGVmYXVsdHM6ZnVuY3Rpb24odCxlKXt2YXIgcixpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIG4uY29lcmNlKGkuX2lucHV0LGkscyx0KX1pZigiZ3JvdXAiPT09ZS53YXRlcmZhbGxtb2RlKWZvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKXI9KGk9dFtsXSkuX2lucHV0LGEocixpLGUsbyl9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbnN0YW50cy9kZWx0YS5qcyI6Njg3LCIuLi8uLi9saWIiOjcxNywiLi4vYmFyL2RlZmF1bHRzIjo4NjAsIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiOjExNDYsIi4vYXR0cmlidXRlcyI6MTI4NX1dLDEyOTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueD0ieFZhbCJpbiBlP2UueFZhbDplLngsdC55PSJ5VmFsImluIGU/ZS55VmFsOmUueSwiaW5pdGlhbCJpbiBlJiYodC5pbml0aWFsPWUuaW5pdGlhbCksImRlbHRhImluIGUmJih0LmRlbHRhPWUuZGVsdGEpLCJmaW5hbCJpbiBlJiYodC5maW5hbD1lLmZpbmFsKSxlLnhhJiYodC54YXhpcz1lLnhhKSxlLnlhJiYodC55YXhpcz1lLnlhKSx0fX0se31dLDEyOTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKS5ob3ZlckxhYmVsVGV4dCxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKS5vcGFjaXR5LGk9dCgiLi4vYmFyL2hvdmVyIikuaG92ZXJPbkJhcnMsbz10KCIuLi8uLi9jb25zdGFudHMvZGVsdGEuanMiKSxzPW8uSU5DUkVBU0lORy5TWU1CT0wsbD1vLkRFQ1JFQVNJTkcuU1lNQk9MO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXt2YXIgYz1pKHQsZSxyLG8pO2lmKGMpe3ZhciB1PWMuY2QsaD11WzBdLnRyYWNlLGY9ImgiPT09aC5vcmllbnRhdGlvbixwPWY/dC54YTp0LnlhLGQ9dVtjLmluZGV4XSxnPWQuaXNTdW0/ZC5iK2QuczpkLnJhd1M7aWYoIWQuaXNTdW0pe2MuaW5pdGlhbD1kLmIrZC5zLWcsYy5kZWx0YT1nLGMuZmluYWw9Yy5pbml0aWFsK2MuZGVsdGE7dmFyIHY9dyhNYXRoLmFicyhjLmRlbHRhKSk7Yy5kZWx0YUxhYmVsPWc8MD8iKCIrdisiKSI6dixjLmZpbmFsTGFiZWw9dyhjLmZpbmFsKSxjLmluaXRpYWxMYWJlbD13KGMuaW5pdGlhbCl9dmFyIG09ZC5oaXx8aC5ob3ZlcmluZm8seT1bXTtpZihtJiYibm9uZSIhPT1tJiYic2tpcCIhPT1tKXt2YXIgeD0iYWxsIj09PW0sYj1tLnNwbGl0KCIrIiksXz1mdW5jdGlvbih0KXtyZXR1cm4geHx8LTEhPT1iLmluZGV4T2YodCl9O2QuaXNTdW18fCghXygiZmluYWwiKXx8XyhmPyJ4IjoieSIpfHx5LnB1c2goYy5maW5hbExhYmVsKSxfKCJkZWx0YSIpJiYoZzwwP3kucHVzaChjLmRlbHRhTGFiZWwrIiAiK2wpOnkucHVzaChjLmRlbHRhTGFiZWwrIiAiK3MpKSxfKCJpbml0aWFsIikmJnkucHVzaCgiSW5pdGlhbDogIitjLmluaXRpYWxMYWJlbCkpfXJldHVybiB5Lmxlbmd0aCYmKGMuZXh0cmFUZXh0PXkuam9pbigiPGJyPiIpKSxjLmNvbG9yPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dFtlLmRpcl0ubWFya2VyLG49ci5jb2xvcixpPXIubGluZS5jb2xvcixvPXIubGluZS53aWR0aDtpZihhKG4pKXJldHVybiBuO2lmKGEoaSkmJm8pcmV0dXJuIGl9KGgsZCksW2NdfWZ1bmN0aW9uIHcodCl7cmV0dXJuIG4ocCx0KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIjo2ODcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL2Jhci9ob3ZlciI6ODYzfV0sMTI5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLnN1cHBseURlZmF1bHRzLGNyb3NzVHJhY2VEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuY3Jvc3NUcmFjZURlZmF1bHRzLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxjcm9zc1RyYWNlQ2FsYzp0KCIuL2Nyb3NzX3RyYWNlX2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKS5zdHlsZSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLHNlbGVjdFBvaW50czp0KCIuLi9iYXIvc2VsZWN0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6IndhdGVyZmFsbCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImJhci1saWtlIiwiY2FydGVzaWFuIiwic3ZnIiwib3JpZW50ZWQiLCJzaG93TGVnZW5kIiwiem9vbVNjYWxlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4uL2Jhci9zZWxlY3QiOjg2OCwiLi9hdHRyaWJ1dGVzIjoxMjg1LCIuL2NhbGMiOjEyODYsIi4vY3Jvc3NfdHJhY2VfY2FsYyI6MTI4OCwiLi9kZWZhdWx0cyI6MTI4OSwiLi9ldmVudF9kYXRhIjoxMjkwLCIuL2hvdmVyIjoxMjkxLCIuL2xheW91dF9hdHRyaWJ1dGVzIjoxMjkzLCIuL2xheW91dF9kZWZhdWx0cyI6MTI5NCwiLi9wbG90IjoxMjk1LCIuL3N0eWxlIjoxMjk2fV0sMTI5MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3dhdGVyZmFsbG1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImdyb3VwIiwib3ZlcmxheSJdLGRmbHQ6Imdyb3VwIixlZGl0VHlwZToiY2FsYyJ9LHdhdGVyZmFsbGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToiY2FsYyJ9LHdhdGVyZmFsbGdyb3VwZ2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDEyOTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT0hMTtmdW5jdGlvbiBvKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9Zm9yKHZhciBzPTA7czxyLmxlbmd0aDtzKyspe3ZhciBsPXJbc107aWYobC52aXNpYmxlJiYid2F0ZXJmYWxsIj09PWwudHlwZSl7aT0hMDticmVha319aSYmKG8oIndhdGVyZmFsbG1vZGUiKSxvKCJ3YXRlcmZhbGxnYXAiLC4yKSxvKCJ3YXRlcmZhbGxncm91cGdhcCIpKX19LHsiLi4vLi4vbGliIjo3MTcsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjEyOTN9XSwxMjk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vYmFyL3Bsb3QiKSxzPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKS5jbGVhck1pblRleHRTaXplO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXt2YXIgYz10Ll9mdWxsTGF5b3V0O3MoIndhdGVyZmFsbCIsYyksby5wbG90KHQsZSxyLGwse21vZGU6Yy53YXRlcmZhbGxtb2RlLG5vcm06Yy53YXRlcmZhbGxtb2RlLGdhcDpjLndhdGVyZmFsbGdhcCxncm91cGdhcDpjLndhdGVyZmFsbGdyb3VwZ2FwfSksZnVuY3Rpb24odCxlLHIsbyl7dmFyIHM9ZS54YXhpcyxsPWUueWF4aXM7YS5tYWtlVHJhY2VHcm91cHMobyxyLCJ0cmFjZSBiYXJzIikuZWFjaChmdW5jdGlvbihyKXt2YXIgbz1uLnNlbGVjdCh0aGlzKSxjPXJbMF0udHJhY2UsdT1hLmVuc3VyZVNpbmdsZShvLCJnIiwibGluZXMiKTtpZihjLmNvbm5lY3RvciYmYy5jb25uZWN0b3IudmlzaWJsZSl7dmFyIGg9ImgiPT09Yy5vcmllbnRhdGlvbixmPWMuY29ubmVjdG9yLm1vZGUscD11LnNlbGVjdEFsbCgiZy5saW5lIikuZGF0YShhLmlkZW50aXR5KTtwLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibGluZSIsITApLHAuZXhpdCgpLnJlbW92ZSgpO3ZhciBkPXAuc2l6ZSgpO3AuZWFjaChmdW5jdGlvbihyLG8pe2lmKG89PT1kLTF8fHIuY05leHQpe3ZhciBjPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPVtdLGk9W10sbz1uP2U6cixzPW4/cjplO3JldHVybiBhWzBdPW8uYzJwKHQuczAsITApLGlbMF09cy5jMnAodC5wMCwhMCksYVsxXT1vLmMycCh0LnMxLCEwKSxpWzFdPXMuYzJwKHQucDEsITApLGFbMl09by5jMnAodC5uZXh0UzAsITApLGlbMl09cy5jMnAodC5uZXh0UDAsITApLG4/W2EsaV06W2ksYV19KHIscyxsLGgpLHU9Y1swXSxwPWNbMV0sZz0iIjsic3Bhbm5pbmciPT09ZiYmIXIuaXNTdW0mJm8+MCYmKGcrPWg/Ik0iK3VbMF0rIiwiK3BbMV0rIlYiK3BbMF06Ik0iK3VbMV0rIiwiK3BbMF0rIkgiK3VbMF0pLCJiZXR3ZWVuIiE9PWYmJihyLmlzU3VtfHxvPGQtMSkmJihnKz1oPyJNIit1WzFdKyIsIitwWzBdKyJWIitwWzFdOiJNIit1WzBdKyIsIitwWzFdKyJIIit1WzFdKSx2b2lkIDAhPT11WzJdJiZ2b2lkIDAhPT1wWzJdJiYoZys9aD8iTSIrdVsxXSsiLCIrcFsxXSsiViIrcFsyXToiTSIrdVsxXSsiLCIrcFsxXSsiSCIrdVsyXSksIiI9PT1nJiYoZz0iTTAsMFoiKSxhLmVuc3VyZVNpbmdsZShuLnNlbGVjdCh0aGlzKSwicGF0aCIpLmF0dHIoImQiLGcpLmNhbGwoaS5zZXRDbGlwVXJsLGUubGF5ZXJDbGlwSWQsdCl9fSl9ZWxzZSB1LnJlbW92ZSgpfSl9KHQsZSxyLGwpfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uL2Jhci9wbG90Ijo4NjcsIi4uL2Jhci91bmlmb3JtX3RleHQiOjg3MixkMzoxNjV9XSwxMjk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiKS5ERVNFTEVDVERJTSxzPXQoIi4uL2Jhci9zdHlsZSIpLGw9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIpLnJlc2l6ZVRleHQsYz1zLnN0eWxlVGV4dFBvaW50cztlLmV4cG9ydHM9e3N0eWxlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgcz1yfHxuLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcud2F0ZXJmYWxsbGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2UiKTtsKHQscywid2F0ZXJmYWxsIikscy5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pLHMuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxzPWVbMF0udHJhY2U7ci5zZWxlY3RBbGwoIi5wb2ludCA+IHBhdGgiKS5lYWNoKGZ1bmN0aW9uKHQpe2lmKCF0LmlzQmxhbmspe3ZhciBlPXNbdC5kaXJdLm1hcmtlcjtuLnNlbGVjdCh0aGlzKS5jYWxsKGkuZmlsbCxlLmNvbG9yKS5jYWxsKGkuc3Ryb2tlLGUubGluZS5jb2xvcikuY2FsbChhLmRhc2hMaW5lLGUubGluZS5kYXNoLGUubGluZS53aWR0aCkuc3R5bGUoIm9wYWNpdHkiLHMuc2VsZWN0ZWRwb2ludHMmJiF0LnNlbGVjdGVkP286MSl9fSksYyhyLHMsdCksci5zZWxlY3RBbGwoIi5saW5lcyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1zLmNvbm5lY3Rvci5saW5lO2EubGluZUdyb3VwU3R5bGUobi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJwYXRoIiksdC53aWR0aCx0LmNvbG9yLHQuZGFzaCl9KX0pfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyI6NjkyLCIuLi9iYXIvc3R5bGUiOjg3MCwiLi4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLGQzOjE2NX1dLDEyOTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uL2xpYiIpLGk9dCgiLi4vcGxvdF9hcGkvcGxvdF9zY2hlbWEiKSxvPXQoIi4vaGVscGVycyIpLnBvaW50c0FjY2Vzc29yRnVuY3Rpb24scz10KCIuLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO3IubW9kdWxlVHlwZT0idHJhbnNmb3JtIixyLm5hbWU9ImFnZ3JlZ2F0ZSI7dmFyIGw9ci5hdHRyaWJ1dGVzPXtlbmFibGVkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sZ3JvdXBzOnt2YWxUeXBlOiJzdHJpbmciLHN0cmljdDohMCxub0JsYW5rOiEwLGFycmF5T2s6ITAsZGZsdDoieCIsZWRpdFR5cGU6ImNhbGMifSxhZ2dyZWdhdGlvbnM6e19pc0xpbmtlZFRvQXJyYXk6ImFnZ3JlZ2F0aW9uIix0YXJnZXQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSxmdW5jOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjb3VudCIsInN1bSIsImF2ZyIsIm1lZGlhbiIsIm1vZGUiLCJybXMiLCJzdGRkZXYiLCJtaW4iLCJtYXgiLCJmaXJzdCIsImxhc3QiLCJjaGFuZ2UiLCJyYW5nZSJdLGRmbHQ6ImZpcnN0IixlZGl0VHlwZToiY2FsYyJ9LGZ1bmNtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzYW1wbGUiLCJwb3B1bGF0aW9uIl0sZGZsdDoic2FtcGxlIixlZGl0VHlwZToiY2FsYyJ9LGVuYWJsZWQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sYz1sLmFnZ3JlZ2F0aW9ucztmdW5jdGlvbiB1KHQsZSxyLGkpe2lmKGkuZW5hYmxlZCl7Zm9yKHZhciBvPWkudGFyZ2V0LGw9YS5uZXN0ZWRQcm9wZXJ0eShlLG8pLGM9bC5nZXQoKSx1PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5mdW5jLG49ZS5kMmMsYT1lLmMyZDtzd2l0Y2gocil7Y2FzZSJjb3VudCI6cmV0dXJuIGg7Y2FzZSJmaXJzdCI6cmV0dXJuIGY7Y2FzZSJsYXN0IjpyZXR1cm4gcDtjYXNlInN1bSI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1uKHRbZVtpXV0pO28hPT1zJiYocis9byl9cmV0dXJuIGEocil9O2Nhc2UiYXZnIjpyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxpPTAsbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgbD1uKHRbZVtvXV0pO2whPT1zJiYocis9bCxpKyspfXJldHVybiBpP2Eoci9pKTpzfTtjYXNlIm1pbiI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTEvMCxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPW4odFtlW2ldXSk7byE9PXMmJihyPU1hdGgubWluKHIsbykpfXJldHVybiByPT09MS8wP3M6YShyKX07Y2FzZSJtYXgiOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMS8wLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89bih0W2VbaV1dKTtvIT09cyYmKHI9TWF0aC5tYXgocixvKSl9cmV0dXJuIHI9PT0tMS8wP3M6YShyKX07Y2FzZSJyYW5nZSI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTEvMCxpPS0xLzAsbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgbD1uKHRbZVtvXV0pO2whPT1zJiYocj1NYXRoLm1pbihyLGwpLGk9TWF0aC5tYXgoaSxsKSl9cmV0dXJuIGk9PT0tMS8wfHxyPT09MS8wP3M6YShpLXIpfTtjYXNlImNoYW5nZSI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0W2VbMF1dKSxpPW4odFtlW2UubGVuZ3RoLTFdXSk7cmV0dXJuIHI9PT1zfHxpPT09cz9zOmEoaS1yKX07Y2FzZSJtZWRpYW4iOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPW4odFtlW2ldXSk7byE9PXMmJnIucHVzaChvKX1pZighci5sZW5ndGgpcmV0dXJuIHM7ci5zb3J0KCk7dmFyIGw9KHIubGVuZ3RoLTEpLzI7cmV0dXJuIGEoKHJbTWF0aC5mbG9vcihsKV0rcltNYXRoLmNlaWwobCldKS8yKX07Y2FzZSJtb2RlIjpyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9e30saT0wLG89cyxsPTA7bDxlLmxlbmd0aDtsKyspe3ZhciBjPW4odFtlW2xdXSk7aWYoYyE9PXMpe3ZhciB1PXJbY109KHJbY118fDApKzE7dT5pJiYoaT11LG89Yyl9fXJldHVybiBpP2Eobyk6c307Y2FzZSJybXMiOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLGk9MCxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBsPW4odFtlW29dXSk7bCE9PXMmJihyKz1sKmwsaSsrKX1yZXR1cm4gaT9hKE1hdGguc3FydChyL2kpKTpzfTtjYXNlInN0ZGRldiI6cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIGEsaT0wLG89MCxsPTEsYz1zO2ZvcihhPTA7YTxyLmxlbmd0aCYmYz09PXM7YSsrKWM9bihlW3JbYV1dKTtpZihjPT09cylyZXR1cm4gcztmb3IoO2E8ci5sZW5ndGg7YSsrKXt2YXIgdT1uKGVbclthXV0pO2lmKHUhPT1zKXt2YXIgaD11LWM7aSs9aCxvKz1oKmgsbCsrfX12YXIgZj0ic2FtcGxlIj09PXQuZnVuY21vZGU/bC0xOmw7cmV0dXJuIGY/TWF0aC5zcXJ0KChvLWkqaS9sKS9mKTowfX19KGksbi5nZXREYXRhQ29udmVyc2lvbnModCxlLG8sYykpLGQ9bmV3IEFycmF5KHIubGVuZ3RoKSxnPTA7ZzxyLmxlbmd0aDtnKyspZFtnXT11KGMscltnXSk7bC5zZXQoZCksImNvdW50Ij09PWkuZnVuYyYmYS5wdXNoVW5pcXVlKGUuX2FycmF5QXR0cnMsbyl9fWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gZS5sZW5ndGh9ZnVuY3Rpb24gZih0LGUpe3JldHVybiB0W2VbMF1dfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gdFtlW2UubGVuZ3RoLTFdXX1yLnN1cHBseURlZmF1bHRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj17fTtmdW5jdGlvbiBvKGUscil7cmV0dXJuIGEuY29lcmNlKHQsbixsLGUscil9aWYoIW8oImVuYWJsZWQiKSlyZXR1cm4gbjt2YXIgcz1pLmZpbmRBcnJheUF0dHJpYnV0ZXMoZSksdT17fTtmb3Iocj0wO3I8cy5sZW5ndGg7cisrKXVbc1tyXV09MTt2YXIgaD1vKCJncm91cHMiKTtpZighQXJyYXkuaXNBcnJheShoKSl7aWYoIXVbaF0pcmV0dXJuIG4uZW5hYmxlZD0hMSxuO3VbaF09MH12YXIgZixwPXQuYWdncmVnYXRpb25zfHxbXSxkPW4uYWdncmVnYXRpb25zPW5ldyBBcnJheShwLmxlbmd0aCk7ZnVuY3Rpb24gZyh0LGUpe3JldHVybiBhLmNvZXJjZShwW3JdLGYsYyx0LGUpfWZvcihyPTA7cjxwLmxlbmd0aDtyKyspe2Y9e19pbmRleDpyfTt2YXIgdj1nKCJ0YXJnZXQiKSxtPWcoImZ1bmMiKTtnKCJlbmFibGVkIikmJnYmJih1W3ZdfHwiY291bnQiPT09bSYmdm9pZCAwPT09dVt2XSk/KCJzdGRkZXYiPT09bSYmZygiZnVuY21vZGUiKSx1W3ZdPTAsZFtyXT1mKTpkW3JdPXtlbmFibGVkOiExLF9pbmRleDpyfX1mb3Iocj0wO3I8cy5sZW5ndGg7cisrKXVbc1tyXV0mJmQucHVzaCh7dGFyZ2V0OnNbcl0sZnVuYzpjLmZ1bmMuZGZsdCxlbmFibGVkOiEwLF9pbmRleDotMX0pO3JldHVybiBufSxyLmNhbGNUcmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe2lmKHIuZW5hYmxlZCl7dmFyIG49ci5ncm91cHMsaT1hLmdldFRhcmdldEFycmF5KGUse3RhcmdldDpufSk7aWYoaSl7dmFyIHMsbCxjLGgsZj17fSxwPXt9LGQ9W10sZz1vKGUudHJhbnNmb3JtcyxyKSx2PWkubGVuZ3RoO2ZvcihlLl9sZW5ndGgmJih2PU1hdGgubWluKHYsZS5fbGVuZ3RoKSkscz0wO3M8djtzKyspdm9pZCAwPT09KGM9ZltsPWlbc11dKT8oZltsXT1kLmxlbmd0aCxoPVtzXSxkLnB1c2goaCkscFtmW2xdXT1nKHMpKTooZFtjXS5wdXNoKHMpLHBbZltsXV09KHBbZltsXV18fFtdKS5jb25jYXQoZyhzKSkpO3IuX2luZGV4VG9Qb2ludHM9cDt2YXIgbT1yLmFnZ3JlZ2F0aW9ucztmb3Iocz0wO3M8bS5sZW5ndGg7cysrKXUodCxlLGQsbVtzXSk7InN0cmluZyI9PXR5cGVvZiBuJiZ1KHQsZSxkLHt0YXJnZXQ6bixmdW5jOiJmaXJzdCIsZW5hYmxlZDohMH0pLGUuX2xlbmd0aD1kLmxlbmd0aH19fX0seyIuLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uL2xpYiI6NzE3LCIuLi9wbG90X2FwaS9wbG90X3NjaGVtYSI6NzU0LCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuL2hlbHBlcnMiOjEzMDB9XSwxMjk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGE9dCgiLi4vcmVnaXN0cnkiKSxpPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuL2hlbHBlcnMiKS5wb2ludHNBY2Nlc3NvckZ1bmN0aW9uLHM9dCgiLi4vY29uc3RhbnRzL2ZpbHRlcl9vcHMiKSxsPXMuQ09NUEFSSVNPTl9PUFMsYz1zLklOVEVSVkFMX09QUyx1PXMuU0VUX09QUztyLm1vZHVsZVR5cGU9InRyYW5zZm9ybSIsci5uYW1lPSJmaWx0ZXIiLHIuYXR0cmlidXRlcz17ZW5hYmxlZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LHRhcmdldDp7dmFsVHlwZToic3RyaW5nIixzdHJpY3Q6ITAsbm9CbGFuazohMCxhcnJheU9rOiEwLGRmbHQ6IngiLGVkaXRUeXBlOiJjYWxjIn0sb3BlcmF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6W10uY29uY2F0KGwpLmNvbmNhdChjKS5jb25jYXQodSksZGZsdDoiPSIsZWRpdFR5cGU6ImNhbGMifSx2YWx1ZTp7dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxwcmVzZXJ2ZWdhcHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LHIuc3VwcGx5RGVmYXVsdHM9ZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gaShhLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsci5hdHRyaWJ1dGVzLGEsaSl9aWYoaSgiZW5hYmxlZCIpKXt2YXIgbz1pKCJ0YXJnZXQiKTtpZihuLmlzQXJyYXlPclR5cGVkQXJyYXkobykmJjA9PT1vLmxlbmd0aClyZXR1cm4gZS5lbmFibGVkPSExLGU7aSgicHJlc2VydmVnYXBzIiksaSgib3BlcmF0aW9uIiksaSgidmFsdWUiKTt2YXIgcz1hLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlRGVmYXVsdHMiKTtzKHQsZSwidmFsdWVjYWxlbmRhciIsbnVsbCkscyh0LGUsInRhcmdldGNhbGVuZGFyIixudWxsKX1yZXR1cm4gZX0sci5jYWxjVHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXtpZihyLmVuYWJsZWQpe3ZhciBhPW4uZ2V0VGFyZ2V0QXJyYXkoZSxyKTtpZihhKXt2YXIgcz1yLnRhcmdldCxoPWEubGVuZ3RoO2UuX2xlbmd0aCYmKGg9TWF0aC5taW4oaCxlLl9sZW5ndGgpKTt2YXIgZj1yLnRhcmdldGNhbGVuZGFyLHA9ZS5fYXJyYXlBdHRycyxkPXIucHJlc2VydmVnYXBzO2lmKCJzdHJpbmciPT10eXBlb2Ygcyl7dmFyIGc9bi5uZXN0ZWRQcm9wZXJ0eShlLHMrImNhbGVuZGFyIikuZ2V0KCk7ZyYmKGY9Zyl9dmFyIHYsbSx5PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Lm9wZXJhdGlvbixhPXQudmFsdWUsaT1BcnJheS5pc0FycmF5KGEpO2Z1bmN0aW9uIG8odCl7cmV0dXJuLTEhPT10LmluZGV4T2Yobil9dmFyIHMsaD1mdW5jdGlvbihyKXtyZXR1cm4gZShyLDAsdC52YWx1ZWNhbGVuZGFyKX0sZj1mdW5jdGlvbih0KXtyZXR1cm4gZSh0LDAscil9O28obCk/cz1oKGk/YVswXTphKTpvKGMpP3M9aT9baChhWzBdKSxoKGFbMV0pXTpbaChhKSxoKGEpXTpvKHUpJiYocz1pP2EubWFwKGgpOltoKGEpXSk7c3dpdGNoKG4pe2Nhc2UiPSI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmKHQpPT09c307Y2FzZSIhPSI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmKHQpIT09c307Y2FzZSI8IjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGYodCk8c307Y2FzZSI8PSI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmKHQpPD1zfTtjYXNlIj4iOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZih0KT5zfTtjYXNlIj49IjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGYodCk+PXN9O2Nhc2UiW10iOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1mKHQpO3JldHVybiBlPj1zWzBdJiZlPD1zWzFdfTtjYXNlIigpIjpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9Zih0KTtyZXR1cm4gZT5zWzBdJiZlPHNbMV19O2Nhc2UiWykiOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1mKHQpO3JldHVybiBlPj1zWzBdJiZlPHNbMV19O2Nhc2UiKF0iOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1mKHQpO3JldHVybiBlPnNbMF0mJmU8PXNbMV19O2Nhc2UiXVsiOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1mKHQpO3JldHVybiBlPD1zWzBdfHxlPj1zWzFdfTtjYXNlIikoIjpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9Zih0KTtyZXR1cm4gZTxzWzBdfHxlPnNbMV19O2Nhc2UiXSgiOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1mKHQpO3JldHVybiBlPD1zWzBdfHxlPnNbMV19O2Nhc2UiKVsiOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1mKHQpO3JldHVybiBlPHNbMF18fGU+PXNbMV19O2Nhc2Uie30iOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXMuaW5kZXhPZihmKHQpKX07Y2FzZSJ9eyI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybi0xPT09cy5pbmRleE9mKGYodCkpfX19KHIsaS5nZXREYXRhVG9Db29yZEZ1bmModCxlLHMsYSksZikseD17fSxiPXt9LF89MDtkPyh2PWZ1bmN0aW9uKHQpe3hbdC5hc3RyXT1uLmV4dGVuZERlZXAoW10sdC5nZXQoKSksdC5zZXQobmV3IEFycmF5KGgpKX0sbT1mdW5jdGlvbih0LGUpe3ZhciByPXhbdC5hc3RyXVtlXTt0LmdldCgpW2VdPXJ9KToodj1mdW5jdGlvbih0KXt4W3QuYXN0cl09bi5leHRlbmREZWVwKFtdLHQuZ2V0KCkpLHQuc2V0KFtdKX0sbT1mdW5jdGlvbih0LGUpe3ZhciByPXhbdC5hc3RyXVtlXTt0LmdldCgpLnB1c2gocil9KSxUKHYpO2Zvcih2YXIgdz1vKGUudHJhbnNmb3JtcyxyKSxrPTA7azxoO2srKyl7eShhW2tdKT8oVChtLGspLGJbXysrXT13KGspKTpkJiZfKyt9ci5faW5kZXhUb1BvaW50cz1iLGUuX2xlbmd0aD1ffX1mdW5jdGlvbiBUKHQscil7Zm9yKHZhciBhPTA7YTxwLmxlbmd0aDthKyspe3Qobi5uZXN0ZWRQcm9wZXJ0eShlLHBbYV0pLHIpfX19fSx7Ii4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIjo2ODksIi4uL2xpYiI6NzE3LCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9yZWdpc3RyeSI6ODQ2LCIuL2hlbHBlcnMiOjEzMDB9XSwxMjk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGE9dCgiLi4vcGxvdF9hcGkvcGxvdF9zY2hlbWEiKSxpPXQoIi4uL3Bsb3RzL3Bsb3RzIiksbz10KCIuL2hlbHBlcnMiKS5wb2ludHNBY2Nlc3NvckZ1bmN0aW9uO2Z1bmN0aW9uIHModCxlKXt2YXIgcixzLGwsYyx1LGgsZixwLGQsZyx2PWUudHJhbnNmb3JtLG09ZS50cmFuc2Zvcm1JbmRleCx5PXQudHJhbnNmb3Jtc1ttXS5ncm91cHMseD1vKHQudHJhbnNmb3Jtcyx2KTtpZighbi5pc0FycmF5T3JUeXBlZEFycmF5KHkpfHwwPT09eS5sZW5ndGgpcmV0dXJuW3RdO3ZhciBiPW4uZmlsdGVyVW5pcXVlKHkpLF89bmV3IEFycmF5KGIubGVuZ3RoKSx3PXkubGVuZ3RoLGs9YS5maW5kQXJyYXlBdHRyaWJ1dGVzKHQpLFQ9di5zdHlsZXN8fFtdLE09e307Zm9yKHI9MDtyPFQubGVuZ3RoO3IrKylNW1Rbcl0udGFyZ2V0XT1UW3JdLnZhbHVlO3Yuc3R5bGVzJiYoZz1uLmtleWVkQ29udGFpbmVyKHYsInN0eWxlcyIsInRhcmdldCIsInZhbHVlLm5hbWUiKSk7dmFyIEE9e30sUz17fTtmb3Iocj0wO3I8Yi5sZW5ndGg7cisrKXtBW2g9YltyXV09cixTW2hdPTAsKGY9X1tyXT1uLmV4dGVuZERlZXBOb0FycmF5cyh7fSx0KSkuX2dyb3VwPWgsZi50cmFuc2Zvcm1zW21dLl9pbmRleFRvUG9pbnRzPXt9O3ZhciBFPW51bGw7Zm9yKGcmJihFPWcuZ2V0KGgpKSxmLm5hbWU9RXx8IiI9PT1FP0U6bi50ZW1wbGF0ZVN0cmluZyh2Lm5hbWVmb3JtYXQse3RyYWNlOnQubmFtZSxncm91cDpofSkscD1mLnRyYW5zZm9ybXMsZi50cmFuc2Zvcm1zPVtdLHM9MDtzPHAubGVuZ3RoO3MrKylmLnRyYW5zZm9ybXNbc109bi5leHRlbmREZWVwTm9BcnJheXMoe30scFtzXSk7Zm9yKHM9MDtzPGsubGVuZ3RoO3MrKyluLm5lc3RlZFByb3BlcnR5KGYsa1tzXSkuc2V0KFtdKX1mb3IobD0wO2w8ay5sZW5ndGg7bCsrKXtmb3IoYz1rW2xdLHM9MCxkPVtdO3M8Yi5sZW5ndGg7cysrKWRbc109bi5uZXN0ZWRQcm9wZXJ0eShfW3NdLGMpLmdldCgpO2Zvcih1PW4ubmVzdGVkUHJvcGVydHkodCxjKS5nZXQoKSxzPTA7czx3O3MrKylkW0FbeVtzXV1dLnB1c2godVtzXSl9Zm9yKHM9MDtzPHc7cysrKXsoZj1fW0FbeVtzXV1dKS50cmFuc2Zvcm1zW21dLl9pbmRleFRvUG9pbnRzW1NbeVtzXV1dPXgocyksU1t5W3NdXSsrfWZvcihyPTA7cjxiLmxlbmd0aDtyKyspaD1iW3JdLGY9X1tyXSxpLmNsZWFyRXhwYW5kZWRUcmFjZURlZmF1bHRDb2xvcnMoZiksZj1uLmV4dGVuZERlZXBOb0FycmF5cyhmLE1baF18fHt9KTtyZXR1cm4gX31yLm1vZHVsZVR5cGU9InRyYW5zZm9ybSIsci5uYW1lPSJncm91cGJ5IixyLmF0dHJpYnV0ZXM9e2VuYWJsZWQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxncm91cHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W10sZWRpdFR5cGU6ImNhbGMifSxuYW1lZm9ybWF0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjIn0sc3R5bGVzOntfaXNMaW5rZWRUb0FycmF5OiJzdHlsZSIsdGFyZ2V0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjIn0sdmFsdWU6e3ZhbFR5cGU6ImFueSIsZGZsdDp7fSxlZGl0VHlwZToiY2FsYyIsX2NvbXBhcmVBc0pTT046ITB9LGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxyLnN1cHBseURlZmF1bHRzPWZ1bmN0aW9uKHQsZSxhKXt2YXIgaSxvPXt9O2Z1bmN0aW9uIHMoZSxhKXtyZXR1cm4gbi5jb2VyY2UodCxvLHIuYXR0cmlidXRlcyxlLGEpfWlmKCFzKCJlbmFibGVkIikpcmV0dXJuIG87cygiZ3JvdXBzIikscygibmFtZWZvcm1hdCIsYS5fZGF0YUxlbmd0aD4xPyIle2dyb3VwfSAoJXt0cmFjZX0pIjoiJXtncm91cH0iKTt2YXIgbD10LnN0eWxlcyxjPW8uc3R5bGVzPVtdO2lmKGwpZm9yKGk9MDtpPGwubGVuZ3RoO2krKyl7dmFyIHU9Y1tpXT17fTtuLmNvZXJjZShsW2ldLGNbaV0sci5hdHRyaWJ1dGVzLnN0eWxlcywidGFyZ2V0Iik7dmFyIGg9bi5jb2VyY2UobFtpXSxjW2ldLHIuYXR0cmlidXRlcy5zdHlsZXMsInZhbHVlIik7bi5pc1BsYWluT2JqZWN0KGgpP3UudmFsdWU9bi5leHRlbmREZWVwKHt9LGgpOmgmJmRlbGV0ZSB1LnZhbHVlfXJldHVybiBvfSxyLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpPVtdO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspZm9yKHI9cyh0W25dLGUpLGE9MDthPHIubGVuZ3RoO2ErKylpLnB1c2goclthXSk7cmV0dXJuIGl9fSx7Ii4uL2xpYiI6NzE3LCIuLi9wbG90X2FwaS9wbG90X3NjaGVtYSI6NzU0LCIuLi9wbG90cy9wbG90cyI6ODI2LCIuL2hlbHBlcnMiOjEzMDB9XSwxMzAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IucG9pbnRzQWNjZXNzb3JGdW5jdGlvbj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGE9MDthPHQubGVuZ3RoJiYocj10W2FdKSE9PWU7YSsrKXIuX2luZGV4VG9Qb2ludHMmJiExIT09ci5lbmFibGVkJiYobj1yLl9pbmRleFRvUG9pbnRzKTtyZXR1cm4gbj9mdW5jdGlvbih0KXtyZXR1cm4gblt0XX06ZnVuY3Rpb24odCl7cmV0dXJuW3RdfX19LHt9XSwxMzAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGE9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4vaGVscGVycyIpLnBvaW50c0FjY2Vzc29yRnVuY3Rpb247ci5tb2R1bGVUeXBlPSJ0cmFuc2Zvcm0iLHIubmFtZT0ic29ydCIsci5hdHRyaWJ1dGVzPXtlbmFibGVkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sdGFyZ2V0Ont2YWxUeXBlOiJzdHJpbmciLHN0cmljdDohMCxub0JsYW5rOiEwLGFycmF5T2s6ITAsZGZsdDoieCIsZWRpdFR5cGU6ImNhbGMifSxvcmRlcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyJdLGRmbHQ6ImFzY2VuZGluZyIsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LHIuc3VwcGx5RGVmYXVsdHM9ZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gYShhLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsci5hdHRyaWJ1dGVzLGEsaSl9cmV0dXJuIGEoImVuYWJsZWQiKSYmKGEoInRhcmdldCIpLGEoIm9yZGVyIikpLGV9LHIuY2FsY1RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7aWYoci5lbmFibGVkKXt2YXIgbz1uLmdldFRhcmdldEFycmF5KGUscik7aWYobyl7dmFyIHM9ci50YXJnZXQsbD1vLmxlbmd0aDtlLl9sZW5ndGgmJihsPU1hdGgubWluKGwsZS5fbGVuZ3RoKSk7dmFyIGMsdSxoPWUuX2FycmF5QXR0cnMsZj1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKTtmb3IoYT0wO2E8bjthKyspaVthXT17djplW2FdLGk6YX07Zm9yKGkuc29ydChmdW5jdGlvbih0LGUpe3N3aXRjaCh0Lm9yZGVyKXtjYXNlImFzY2VuZGluZyI6cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodC52KS1lKHIudil9O2Nhc2UiZGVzY2VuZGluZyI6cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUoci52KS1lKHQudil9fX0odCxyKSksYT0wO2E8bjthKyspb1thXT1pW2FdLmk7cmV0dXJuIG99KHIsbyxhLmdldERhdGFUb0Nvb3JkRnVuYyh0LGUscyxvKSxsKSxwPWkoZS50cmFuc2Zvcm1zLHIpLGQ9e307Zm9yKGM9MDtjPGgubGVuZ3RoO2MrKyl7dmFyIGc9bi5uZXN0ZWRQcm9wZXJ0eShlLGhbY10pLHY9Zy5nZXQoKSxtPW5ldyBBcnJheShsKTtmb3IodT0wO3U8bDt1KyspbVt1XT12W2ZbdV1dO2cuc2V0KG0pfWZvcih1PTA7dTxsO3UrKylkW3VdPXAoZlt1XSk7ci5faW5kZXhUb1BvaW50cz1kLGUuX2xlbmd0aD1sfX19fSx7Ii4uL2xpYiI6NzE3LCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuL2hlbHBlcnMiOjEzMDB9XX0se30sWzI2XSkoMjYpfSk7"></script>
-
-<style type="text/css">code{white-space: pre;}</style>
-<style type="text/css">
-  pre:not([class]) {
-    background-color: white;
-  }
-</style>
-<script type="text/javascript">
-if (window.hljs) {
-  hljs.configure({languages: []});
-  hljs.initHighlightingOnLoad();
-  if (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>
-
-
-
-
-<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%;
-}
-.tabbed-pane {
-  padding-top: 12px;
-}
-.html-widget {
-  margin-bottom: 20px;
-}
-button.code-folding-btn:focus {
-  outline: none;
-}
-summary {
-  display: list-item;
-}
-</style>
-
-
-
-<!-- tabsets -->
-
-<style type="text/css">
-.tabset-dropdown > .nav-tabs {
-  display: inline-table;
-  max-height: 500px;
-  min-height: 44px;
-  overflow-y: auto;
-  background: white;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-}
-
-.tabset-dropdown > .nav-tabs > li.active:before {
-  content: "";
-  font-family: 'Glyphicons Halflings';
-  display: inline-block;
-  padding: 10px;
-  border-right: 1px solid #ddd;
-}
-
-.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
-  content: "";
-  border: none;
-}
-
-.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
-  content: "";
-  font-family: 'Glyphicons Halflings';
-  display: inline-block;
-  padding: 10px;
-  border-right: 1px solid #ddd;
-}
-
-.tabset-dropdown > .nav-tabs > li.active {
-  display: block;
-}
-
-.tabset-dropdown > .nav-tabs > li > a,
-.tabset-dropdown > .nav-tabs > li > a:focus,
-.tabset-dropdown > .nav-tabs > li > a:hover {
-  border: none;
-  display: inline-block;
-  border-radius: 4px;
-  background-color: transparent;
-}
-
-.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
-  display: block;
-  float: none;
-}
-
-.tabset-dropdown > .nav-tabs > li {
-  display: none;
-}
-</style>
-
-<!-- code folding -->
-
-
-
-
-</head>
-
-<body>
-
-
-<div class="container-fluid main-container">
-
-
-
-
-<div class="fluid-row" id="header">
-
-
-
-<h1 class="title toc-ignore">Eclipse mailing lists</h1>
-<h3 class="subtitle">R Analysis document</h3>
-<h4 class="author">Boris Baldassari -- Castalia Solutions</h4>
-
-</div>
-
-<div id="TOC">
-<ul>
-<li><a href="#introduction">Introduction</a><ul>
-<li><a href="#about-this-dataset">About this dataset</a></li>
-<li><a href="#basic-summary">Basic summary</a></li>
-<li><a href="#privacy-concerns">Privacy concerns</a></li>
-<li><a href="#about-this-document">About this document</a></li>
-</ul></li>
-<li><a href="#structure-of-data">Structure of data</a><ul>
-<li><a href="#list">list</a></li>
-<li><a href="#message_id">messageId</a></li>
-<li><a href="#subject">Subject</a></li>
-<li><a href="#sent_at">Sent at</a></li>
-<li><a href="#sender-name">Sender name</a></li>
-<li><a href="#sender-address">Sender address</a></li>
-</ul></li>
-<li><a href="#using-the-dataset">Using the dataset</a><ul>
-<li><a href="#reading-csv-file">Reading CSV file</a></li>
-<li><a href="#using-time-series-xts">Using time series (xts)</a></li>
-<li><a href="#plotting-number-of-monthly-posts">Plotting number of monthly posts</a></li>
-<li><a href="#plotting-number-of-monthly-reporters">Plotting number of monthly reporters</a></li>
-<li><a href="#plotting-activity-of-authors">Plotting activity of authors</a></li>
-<li><a href="#posts-by-company">Posts by Company</a></li>
-</ul></li>
-</ul>
-</div>
-
-<div id="introduction" class="section level1">
-<h1>Introduction</h1>
-<div id="about-this-dataset" class="section level2">
-<h2>About this dataset</h2>
-<p>The <a href="https://eclipse.org">Eclipse Foundation</a> provides individuals and organizations with a commercially focused environment for open source software innovation. It includes git repositories, reviews, issues management, continuous integration, forums and mailing lists among other services. Many well-known and widely used projects are hosted on the forge, including the Eclipse IDE itself, The new Java working group,</p>
-<p>This dataset is a dump of all posts sent on all mailing lists hosted at the Eclipse Forge. Although this is public data (the mailing lists can be browsed on the <a href="https://accounts.eclipse.org/mailing-list">official mailman page</a>) all data has been anonymised to prevent any misuse. The privacy issues identified, along with the anonymisation process, have been covered in a <a href="../../docs/datasets_privacy.html">dedicated document</a>.</p>
-<p>These files are published under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons BY-Attribution-Share Alike 4.0 (International) licence</a>.</p>
-<p>The dataset is composed of two parts:</p>
-<ul>
-<li><strong>eclipse_mls_full.csv</strong> contains an extract of all the messages exchanged on the various mailing lists. The present document uses this CSV as input data.</li>
-<li>The <strong>full list of mboxes</strong>, one file per mailing list. They can be downloaded directly from the <a href="mboxes/">mboxes subdirectory</a>.</li>
-</ul>
-<p>All of them are updated weekly at 2am on Sunday.</p>
-</div>
-<div id="basic-summary" class="section level2">
-<h2>Basic summary</h2>
-<ul>
-<li><strong>Generated date</strong>: Wed Oct 21 19:42:25 2020</li>
-<li><strong>First date</strong>: 2001-11-05 19:14:59</li>
-<li><strong>Last date</strong>: 2020-01-11 21:03:13</li>
-<li><strong>Number of posts</strong>: 542582</li>
-<li><strong>Number of attributes</strong>: 7</li>
-</ul>
-</div>
-<div id="privacy-concerns" class="section level2">
-<h2>Privacy concerns</h2>
-<p>We value privacy and intend to make everything we can to prevent misuse of the dataset. If you think we failed somewhere in the process, please <a href="https://www.crossminer.org/contact">let us know</a> so we can do better.</p>
-<p>All personally identifiable information has been scrambled using the <a href="https://github.com/borisbaldassari/data-anonymiser">data anonymiser</a> Perl module. As a result there is <strong>no clear email address</strong> in this dataset, <strong>nor any UUID or name</strong>. However all identical information produces the same encrypted string, which means that one can still identify identical data without knowing what it actually is. As an example email addresses are split (name, company) and encoded separately, which enables one to e.g. identify posters from the same company without knowing the company.</p>
-<p>The anonymisation technique used basically encrypts information and then throws away the private key. Please refer to the <a href="https://github.com/borisbaldassari/data-anonymiser">documentation published on github</a> for more details.</p>
-</div>
-<div id="about-this-document" class="section level2">
-<h2>About this document</h2>
-<p>This document is a <a href="http://rmarkdown.rstudio.com">R Markdown document</a> and is composed of both text (like this one) and dynamically computed information (mostly in the sections below) executed on the data itself. This ensures that the documentation is always synchronised with the data, and serves as a test suite for the dataset.</p>
-</div>
-</div>
-<div id="structure-of-data" class="section level1">
-<h1>Structure of data</h1>
-<p>This dataset is composed of a single big CSV file. Attributes are: <code>list, messageid, subject, sent_at, sender_name, sender_addr</code>.</p>
-<p>Examples are provided at the end of this file to demonstrate how to use it in R.</p>
-<div id="list" class="section level2">
-<h2>list</h2>
-<ul>
-<li>Description: The mailing list and project of the post.</li>
-<li>Type: String</li>
-</ul>
-Examples:
-<table>
-<caption>
-Sample of list names
-</caption>
-<thead>
-<tr>
-<th style="text-align:left;">
-Project list names
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left;">
-efm-dev
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-examples-dev
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-photran
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-albireo-dev
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-cdt-cppunit-inbox
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div id="message_id" class="section level2">
-<h2>messageId</h2>
-<ul>
-<li>Description: A unique identifier for the post.</li>
-<li>Type: String (Scrambled Base64)</li>
-</ul>
-Examples:
-<table>
-<caption>
-Sample of message IDs
-</caption>
-<thead>
-<tr>
-<th style="text-align:left;">
-Message ID
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:gOYg08laSRqLbJOP@WnmnzvrHzwAvJXp9">gOYg08laSRqLbJOP@WnmnzvrHzwAvJXp9</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:UhCKR33IOQ3ySr2i@Fyrj2e/PIDk43Eoe">UhCKR33IOQ3ySr2i@Fyrj2e/PIDk43Eoe</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:x5kLGeUNSf9w4n/2@b+1DCz3TO5Y1sT4M">x5kLGeUNSf9w4n/2@b+1DCz3TO5Y1sT4M</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:QPBlvZiaR4FWrcrh@Y51EfXjyLG2CrDdr">QPBlvZiaR4FWrcrh@Y51EfXjyLG2CrDdr</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:lrpXDb6b8zSrWoqw@ZJth9VVq7yAhCltq">lrpXDb6b8zSrWoqw@ZJth9VVq7yAhCltq</a>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div id="subject" class="section level2">
-<h2>Subject</h2>
-<ul>
-<li>Description: The subject of the post as sent on the mailing list.</li>
-<li>Type: String</li>
-</ul>
-Examples:
-<table>
-<caption>
-Sample of email subjects
-</caption>
-<thead>
-<tr>
-<th style="text-align:left;">
-Subject
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left;">
-[rt-pmc] [CQ 4293] snaps modular web applications
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-Re: [platform-releng-dev] [eclipse-build]Build I20050919-1200 (Timestamp: 200509191200):Build is complete. Automated JUnit testing is starting.
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-[dsdp-dd-dev] FW: hardware breakpoints
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-Re: [cosmos-dev] Request for approval for 219737 and 219721
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-[rt-pmc] PMC approval needed for committer vote for mx
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div id="sent_at" class="section level2">
-<h2>Sent at</h2>
-<ul>
-<li>Description: The time of sending for the post.</li>
-<li>Type: Date (ISO 8601)</li>
-</ul>
-<p>Main characteristics:</p>
-<ul>
-<li><strong>First date</strong>: 2001-11-05 19:14:59</li>
-<li><strong>Last date</strong>: 2020-01-11 21:03:13</li>
-</ul>
-Examples:
-<table>
-<caption>
-Sample of sent dates
-</caption>
-<thead>
-<tr>
-<th style="text-align:left;">
-Sent date
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left;">
-2011-10-04 20:30:10
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-2012-07-17 14:34:25
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-2006-09-04 01:43:14
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-2017-06-23 04:36:21
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-2011-03-03 21:56:20
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div id="sender-name" class="section level2">
-<h2>Sender name</h2>
-<ul>
-<li>Description: The name of the sender of the post.</li>
-<li>Type: String (Scrambled Base64)</li>
-<li>Number of unique entries: 19642</li>
-</ul>
-Examples:
-<table>
-<caption>
-Sample of sender names
-</caption>
-<thead>
-<tr>
-<th style="text-align:left;">
-Sender names
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left;">
-ZsviVvJNN3VaRiLM
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-MkpcL3u8go4gyD8b
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-XkPWQ/YIWC0zXXOD
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-R9x3LmTJfizjWtoX
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-jB66zdbnXxQdhe6L
-</td>
-</tr>
-</tbody>
-</table>
-<p>Note: A single name repeated several times will always result in the same scrambled ID. This way it is possible to identify same-author posts without actually knowing the name of the sender.</p>
-</div>
-<div id="sender-address" class="section level2">
-<h2>Sender address</h2>
-<ul>
-<li>Description: The email address of the sender, encoded.</li>
-<li>Type: String (Scrambled Base64)</li>
-<li>Number of unique entries: 19869</li>
-</ul>
-Examples:
-<table>
-<caption>
-Sample of sender addresses
-</caption>
-<thead>
-<tr>
-<th style="text-align:left;">
-Sender addresses
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:MtMxuEb656lGDesL@Xcf2yOhSvGTg465c">MtMxuEb656lGDesL@Xcf2yOhSvGTg465c</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:gO57kNAqL7Y70OH+@J7oMeA+Al9Hb/vYm">gO57kNAqL7Y70OH+@J7oMeA+Al9Hb/vYm</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:TIWRSJ5ffuc1L550@Xcf2yOhSvGTg465c">TIWRSJ5ffuc1L550@Xcf2yOhSvGTg465c</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:Nu8T/ewuPhrOkReB@pI/KMoIOnNVyXSZy">Nu8T/ewuPhrOkReB@pI/KMoIOnNVyXSZy</a>
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:Y/jrxOf43lAj9w2p@J7oMeA+Al9Hb/vYm">Y/jrxOf43lAj9w2p@J7oMeA+Al9Hb/vYm</a>
-</td>
-</tr>
-</tbody>
-</table>
-<p>Note: A single email address repeated several times will always result in the same scrambled email address. Furthermore both parts of the email (name, company) are individually scrambled, which means that one can identify email addresses from the same company without actually knowing the real company or name of the sender.</p>
-</div>
-</div>
-<div id="using-the-dataset" class="section level1">
-<h1>Using the dataset</h1>
-<div id="reading-csv-file" class="section level2">
-<h2>Reading CSV file</h2>
-<p>Reading file from eclipse_mls_full.csv.</p>
-<pre class="r"><code>project.csv &lt;- read.csv(file.in, header=T)</code></pre>
-<p>We add a column for the Company, which we extract from the email address (i.e. the domain name):</p>
-<pre class="r"><code>project.csv$Company &lt;- substr(x = project.csv$sender_addr, 18, 33)</code></pre>
-<p>Number of columns in this dataset:</p>
-<pre class="r"><code>ncol(project.csv)</code></pre>
-<pre><code>## [1] 7</code></pre>
-<p>Number of entries in this dataset:</p>
-<pre class="r"><code>nrow(project.csv)</code></pre>
-<pre><code>## [1] 542582</code></pre>
-<p>Names of columns:</p>
-<pre class="r"><code>names(project.csv)</code></pre>
-<pre><code>## [1] &quot;list&quot;        &quot;messageid&quot;   &quot;subject&quot;     &quot;sent_at&quot;     &quot;sender_name&quot;
-## [6] &quot;sender_addr&quot; &quot;Company&quot;</code></pre>
-</div>
-<div id="using-time-series-xts" class="section level2">
-<h2>Using time series (xts)</h2>
-<p>The dataset needs to be converted to a <code>xts</code> object. We can use the <code>sent_at</code> attribute as a time index.</p>
-<pre class="r"><code>require(xts)
-project.xts &lt;- xts(x = project.csv, order.by = parse_iso_8601(project.csv$sent_at))</code></pre>
-</div>
-<div id="plotting-number-of-monthly-posts" class="section level2">
-<h2>Plotting number of monthly posts</h2>
-<p>When considering the timeline of the dataset, it can be misleading when there several submissions on a short period of time, compared to sparse time ranges. We'll use the <code>apply.monthly</code> function from <code>xts</code> to normalise the total number of monthly submissions.</p>
-<pre class="r"><code>project.monthly &lt;- apply.monthly(x=project.xts$sent_at, FUN=nrow)
-
-autoplot(project.monthly, geom='line') + 
-  theme_minimal() + ylab(&quot;Number of posts&quot;) + xlab(&quot;Time&quot;) + ggtitle(&quot;Number of monthly posts&quot;)</code></pre>
-<p><img src="data:image/png;base64,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" width="672" /></p>
-</div>
-<div id="plotting-number-of-monthly-reporters" class="section level2">
-<h2>Plotting number of monthly reporters</h2>
-<p>One author can post several emails on the mailing list. Let's plot the monthly number of distinct authors on the mailing list. For this we need to count the number of unique occurrences of the email address (attribute <code>sender_attr</code>).</p>
-<pre class="r"><code>count_unique &lt;- function(x) { length(unique(x)) }
-project.monthly &lt;- apply.monthly(x=project.xts$sender_addr, FUN=count_unique)
-
-autoplot(project.monthly, geom='line') + 
-  theme_minimal() + ylab(&quot;Number of authors&quot;) + xlab(&quot;Time&quot;) + ggtitle(&quot;Number of monthly distinct authors&quot;)</code></pre>
-<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAPACAIAAAB7BESOAAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nOzdd2ATdf8H8M9dZvdetJRRNsgsIFMEBLGIIIgDnIh7oD4IqDge8OdGnweUx4GCshwookxZsrcyZK+W0r3TpmnG3e+PLz3SNCnZo7xff12Ty+WbG2ne912cKIoEAAAAAAAAAP6N93UBAAAAAAAAAODaEOABAAAAAAAAAgACPAAAAAAAAEAAQIAHAAAAAAAACAAI8AAAAAAAAAABAAEeAAAAAAAAIAAgwAMAAAAAAAAEAAR4AAAAAAAAgACAAA8AAAAAAAAQABDgAQAAAAAAAAIAAjwAAAAAAABAAECABwAAAAAAAAgACPAAAAAAAAAAAQABHgAAAAAAACAAIMA7qWbF3cE8x3Ecxys7vLS90o6XaJaMDuI4juPUw7/IFz1eQqcJl+bdrOI4jlN2+/dRk69L43VCycEvnx15Y/vkiODQuJb3Lyv040PlG8b9M9opOI7j1CMWOLp39Osnx8s4juOCxn2v9UzxHGI88lZXBcdxnGrwp9nC1cerf7griOM4ThY3aZ3ew2Xw5ntdb1w5VwEAAAD8kdzXBQh8ouHkp8+8M37P272DfF0UcJWYv/LRvncvPK+/8ls/J7fc4NsSAQAAAAAAXIEA7wZizdE5T78/dscb3dW+Lgq4xHDgkxnfndeLRJwysevQQZ2bprcL9nWhfKOmLL9UJxInC46KC1f6ujSBL1D2Z6CU01wglhkAAADASWhC7xai7tAHz/znGNq/BjbThc2bzxmJiI8ft/CvA6uXLfzfS4MiOV8XyxdqfnuseVJSUlKTrtN3XI+ntaxJ9xEZGRkZtw3rEueOL8mG9qe738sVgXjcA7HMAAAAAM5CDbyrOI4nEkSxas/bz3w2euOUttilAUsoyCsUiIgUPW69JcHXWQp8SNl/xs+/N8L3AgAAAIDAhpDiKkXPBx7uGsQRiZrtbz375bnrb9S3RsRkYoePCwoOui4r3gEAAAAAwI8hwLtM3W3qp1NuUHFEQtmmmVMWZQrXfg0AAAAAAACAY9De2w2Ce70y7+mVQz4+YRCK18x4cdnwHyck++zOSE3uoU1bDp27XFStik5ulT5kSPdEldnTpvKzOzZuP55VUMFFN2vVpn23np2Tg69Z2SxqL+3fvO3IhZyiamVUYtN2vW/u1zbKrnPHUHJy15/7T13KKzWEJbdMa9W+a/d2cfaPMyVqL+5cs+nA2UJZt7ufGt5CZvcL2ZsXn9q1bd+pS3nFWnlEfGKzjn0HpjcLc3AjznL/gXD94+gLDm/d+te57IIqVWLLNm06du3WNk517Zddm6jN3r/5zyMXcot0QYkt0lq369K9Y5I/NWIQNBf3bt157GJOsU4dm9zihv4390oNcal8YnXh2RMnzp47fy6zwBiR0qJFy7R2HdunePj0cuoIitU5h7ZuO3z+coGGi0hIbtFlwE3dmnj06BjLL/69e+/Ri3lFpdWyqKSmKU2btmjfpYNfnBJOnquuXn0NfZX55lwCAACAACWCU3Q/jWe/+ZQD/5NpEoWyjU+3knNERHyT+37ME6y8pGLxHWyUetWwz6+uIBQuGKEiIpK3eXmvwfqb1ax+OIYnIi7i/lU68ycM+6a3lROR/IbX/zYIFYcXTOoRqzD/KcopEwZM/S1LL4qiqLvw+8xbm9X9pcqpmw+f8dOpKvONmrLmDlISESm6vnXEYMzb+u7YdhGyui9TxqU/8MnWy/oG9pD23O+z7uoco6z7y5gLajrg0Q9Xn6m09hL9lmeayohI0fOdE0ZRKNry72FN1RwRERf1wG86ay+xTqg8s+rf4zpFKyx+lnPqxN4Pfbz5kuWmpENjSTVk/mVrx9KSRw6E0x+nfpFEoeLwl4/2TlLXfdOQtNtmLD9abvYJDYff7GL1zgyfMHl9Td0tk+rWrwoEQ+7W98a2C7c4QdRNBz3zxd5Ck2WpatY9ygZqU49dfuXDGk+911tBRMRFjFtWYmtv6/e/0l5ORMTHTfyl3I5DUstUcuibZwc1DebrHA4+LO221367oJM+r/LmeZfMSqv7dWI4R0R87CNrayy2KFSeXfvhIzcmKi0PBx/aYuiU7xzen7bey7kjWLeoFf8sn3prWpjF0ZGFthj6/KK/S69+YHvKaQ+h4p8fXr+rS4y8XiDmlPE97nlj6V/F9c4JZ78DPX2u1pbOmavP3q8yR84lAAAAAFEURQR4J1kEeFEUilc/2pzVmMhSH1pVWP+Hl0cD/Mwtm2akh1mtRuKU7Z/flHv004wkmfXn5c0e/tWsvGYB/vXViyc0t/zhevV1ybd/ethqEjfmrn2hR7jtSi0+ZsAb24rq7SKzX73Hi7e/2vPqFhwJ8Ka89f/qGWG7CQQnix/67p4y83d3Y4B344Fw+uNYFOn1Q3kbp/awtQk+6qYPD0v71sFQNH/vd/c0s3mChKa/vsfiloSVAC8aT79/o5IjIi7yruU2EnzNrn+1lhER8U0eXWv1nLNKf+H7h9qqbZ2IfOywOUumd3YowJtyVz/TuaG6ez6y76y9Gkf2px0B3oEjaPb6rJ8f62i7VQenav3gD5kG+8t5TabctS+mN3CqEhEX0mXq5lKLY+ydAO/wuSqKzl99dn2VOXguAQAAAIgiArzT6gV4URQKfr4/5UqEb/n4estfqZ4M8Hx8u3ZxPHFhN0x4Z8n6g2czzxza9O2MYU1V3JVfmVGx0TKOuJB24//97dr9ZzLPHtr83StXn1f2eveEsXajUoDno5KbhHBEnCKx98RX5y39de2aX5bMe+2Bvk1q64s4WYvJa4otP2jVvjfSa3MDH9ll3Itvz1++duPqxf+Z+fiwVrVPcGHpM3dZJDHpV2+Plz56pKWcI+Jk4S3SBw0fNf6xLw7b2DmW++rIu31Da988vMPolz5Zunrz9m1//Lrw3SeHtqit9ubj7liYdTWv6U+v/WL+/PnzXhwUzRMRKbpO+mT+/Pnz53/x2z/WK8UteORAOP1x6hRJ3uGhl+5I4omPuOHu1z77/o9D57LO/vXnTx880DXySqU0F56xoPY2hVC8/4fP58+fP3dyDwURER8xcMq8+fPnz//fwq21AVcKRbKk5qlqjpPH3/jI7K9+3nr4fNbZv7YsnT2he8yVOxRc8JBPM+uUy1qAF01nPuxzJcGP/77edSOKoqjb+iy7OyZr/uzWanuOiCiKYuWu6Z1VteebKrnfgzM/XbpyzZqVS+a+MqFXgoIj4uRh4eyMtC/AC7nL7royPQGnSrrxgTfmL1u1cdufG3757uMpt7W+cqA4Vfd/156t9uzPawZ4h46g9OF3Tu985dYFF9J6xPMfLf5987bNvy2d/9aDPWOvVJBzQd3fOFBtbzmvQchbOu7KNHicLLLDHS99vOin1Zu3/7nh12Wfz3r05uZXkiqn6DTzYN1r2cnvQE+fq65cfXZ8lTl8LgEAAACIIgK806wEeFEUcpaNT+SJiDh5m+e2VNR9iQcDPBGRrMmoz47Wqa0xnPig39UKOD5u+EcH67TINJz6eCD7ncipb/2qoPYpKcCzl0X1m7m1oE6oNJXs+/DW2p+e8lZTtmnr7Jl9r11JTXz0jS/+cq5O3BJK988dl3alLamqy+sH61Tu1f7qZYPA83E3TfvpWGmdt74W48mP+rOgwClbPbD0bN2sJ1T89d/a6m8+fvzyfIvMo9/6bKqMiEh95zL7a3lF0UMHwrWPU1skjuM5TpZ0+/x/6hwmUdTue63blSMRMmZJad0ndT/epSYi4ps8ucmyAtb8w3LK1g/9lGlx3upOzhvO7oRwwWOW1GnvbjXAi6azH/VlCT7q7h8sSiKKoqjd8Di7NSZv+/KehvptmNMfeqMLOxE5WeKIOfvr3hkw5m95rW/k1apVuwK86cInA1UcEXGKVo+szKkb2oSSjc+2Z7e25O1n7K+7Txran9cK8M4cQd2+V29gZeETM+Ye1tT97Hlrnmx35dmosUvNm8I0VM6GmbLmDrpy3ccO//REvX4HJVundmMXgaL77GN1rmqXvgM9d666cvVd+6vM+XMJAAAArm8Yhd6duKTxH74zMpYnEo1n/vfMrF1VXntrPuaO9794olOo+WPydo9NuT3iSk1OxPD/+2pK9zrN2uVtJv/rzhieiERTYX6RtdHz+YQ7P/3xzZvi6oymxEf1fPH7pU+1lnNEovH84vlrSsXa58TS3z/+/FiNSCRLvufzXz4Y3bJO23QuMv2ZJb/O6hfGEYk1R//3yboKK+8qVmt1ym7Tf/v93bEdIx0ZyEm3+/P5u6tEIk7Vdcb3X9ybVrdhPBfW9ZnFX09qJiMioXDVvCXn3T9jgDsPhFs+jigKXMK4T758vENQ3SeCer78xjj2rvrcy4VOzX8ob/3kl3PHplo0ZFa1fWTKmDieiERjUWHJtXcy32L0uF5Kjkgs3/DzxnLLpys3L/s1x0RE8g733MdqW6+tcuOnXx6tEYk4RZtnl3//QnpknbbKsvhBb/04b3ScQ9+AhuN//2MQiUiR/viM25PqvpaLuvnFx1lvfuOFf06679p3/AiKZas/+eIfvUgkS3ng82+f7hxa97MnjPjgy2fayIlIKNv0259uKarhyMEjepGIFN1emPN4O8uBKrmogS8/c5OSiMiUm53rg9k2HT1X3XP12fwq8825BAAAAIEPAd69+Kb3fzJ7WBRPJOqP//fpd/dXe+l9ozMeGp1QrzdlcMtWyTIiIi582EN3pdQ72upWbZuxX5Umo9HKZhWdn3r9riQrJwkXfvNrr44I44hIKFn/6/bajykW/7ZoVZFAxCl7Pv/GmERr55ey45NvTkyVEZFQtH7VLp3Vz5Nw95tTe4Vae6oB+r0/rLhgIiI+evQrz3ezNjo3Fzls2nN9VByRqNv348oL7k7w7jwQ7vo4srSJz1spE1Fwu04tr7yryalEpUif/Ex/a0dJmdIsiW1ZFEUrz1vim48e20vJEQnlG37eaHFTp+KPZb8VCEScssd993ayc+IM3fafVuUJRMRFZLz2ysAwa2/a5O7Xn7J3e4zBYBCJiMRqbXX9fc03e+yX85cuXbp06eyCMdbe0VkOHkGxbPXi34oEIlJ0ffLljGgrLwy5ccK4NnIiEquOH7vgljidMvTZV1599dXX3pgxtq21u25caFQk64JuNPogvzt6rrrr6rP5VeajcwkAAAACHQK8u8laTPrvmzeFc0RizeGPnplzuMYr79qqUzsrw7BxCiX7ySxv0am9tR+vCmVD9ZmKjnfe2cFGwOHiR90zJIQjIqHiwN4TV1JnzcHt+6pFIpJ3G3NHmq3K85B+o4fF8UQklB7+y1p64MIGjhwUaSV3NMh0ce++XBMRcaFDxg6PsvFyvvmo0awW13Bs78FKB9/jWtx4INz1cfiYAYO7WZ25j1MobA3qZRd5i4EDmls/yDKZY1Ng8c1Gj+ut5IiEMosEL5auXbamWCDiVH3uu7u1nZs1nty9r1QgIi7slntHxdn4lPKOY8bYOsGtrt+6fWs5EZHh8IcPv/DjSY3FzQkuKCY5JSUlJSU5NsSNX62OHkHDXzv3VYlEpOg46vY21veYvMvLf5w8c+bMmRO/PmXvTm2QqsuEN2fPnj171qvW8zvVnPjreI09d3M8wtFz1V1Xn82vMh+dSwAAABDw8MvA/eStn5z3Wt9Qjkis3v/u0/89bvD8e7Kulg1QBwc19LRVfHjX7q1s/rbnwrv3YhN7mS5nZrMUbrp05FiJQER8RMcbmtmOBcqWbVqwl2ZfzLYS4OVpN3QIcbi8prMnz5qIiOTtenQJtrka37Rrl1ieiETdmZOZbq4LdOOBcNfHkaW2amFns3MH8U2aNnHXNwifese4G1UckVC6fsWmqwleLPp92foykYgLvmnCuGb2vp0p83yWiYhI0bF3D9stOeRtunexPmWAVbJ29z81nLVZ1xycd3fn5h2G3P/yR9+t3X++zJMXuYNHUMg5eqxQICIu9IZuNi9gWXiTtFatWrVKaxZrfQYGtxD1FTmn9m/86ct/Txo88r0jXvgqtMHRc9VdV5/NrzIfnUsAAAAQ8BDgPUHR4bl509KDOCKxctfsZ+afsdY83f/xsQnxDVRPyhKbJMiIiMSastIq1hq0tJh1hxeKvr5Nzdkkaz11t56ISCwvLrHyc5WLjHa4/p1IX1ZaJRARyeIT4xuoVJQlJLGnhbLScvf3gncXd30cLjSsoamqXMCpg2xO0eYwvukd4/qwBL/h582aK4+K+auWbdSIRFz4LRNHJ9n7bmJlSSmr7eXjE+Mb+JaTxyfGOvAlyKc+vPC3j+7pGM4TkWgoObl58Qf/euC2Xq1io5p0GT7pjS/XHi1wf5MbB4+gUFZcyk6cuKR4z9y6aYC+6PimJR9Oe+yejIHdWyeFh0Ymt+t1y12PvfH1rhy9z+rfHT9X3Xb12fwq8825BAAAAAEPAd4zVF1f+vSlLiqOSKz4883nFrinl6m3yeQNtq1VKK806+V4GRuNWdRWaR36kS4KNTp9/Yc5pUrpcDIUa2pqE4KywZ4BpFKzOkex2sHiepP7Pg7HeSa/uxmfcse4viqOSChZV5vghcu/LNuqFYn46NsmjrTVEt7axmonWLvGScwpFHKH9g4X02fKskP/bPrftImD28XUnqWiqSr3yIav//3YbV1adh77/pYc91aiOnYExarKK+eBOsiDlev1VZ9d+VpG+2adhk6c+v6X36/Z/tfZvErWz5tTRLUdOnFkJ1VAnInkxquvoa8yn5xLAAAAEOgcGsEJHBDUc/q8Z3+++aPjBqF0w2tTvrvt5zud3pYo2jcUmJtJNXk2ni698jQXFBXFfsRy4RFseHVZ0uDHJw+wI3DJW3W2NjyUM7iQiHAFRzUiiZpyjUg2Ky1FTQXrcMqFR4b7baJoZB/HDnzyqHH9/rVlU7VQsu7nLZV3jAoVMlcs36ETifj4OyYOj7R/U1xwRISSoxpRZGdpsK07lUJpSZnjjTCUKYMef3fQ4+8aS0/v2rTpz23bt23ftvtoTpVJJLHq9M/Th/114sfdX1sdds4L+LAI1i1ArNJUee17w3j+uwcHP/LTJaNIRBwfnNChZ7++fXt1v6Fjhw4d2rdpFhtkWDnh19XHnKxU9vJ3oPeuPv8+lwAAAMD/IMB7Tki/mfOe+HXYvDNGoej3GS/90Od2Z7dkrNR4aTT7OoSi4//kCkNs9Ts2/PP3cSMRkbxZq+bsROLjEtm8XFxY+oMz3+zl3dNLFpcQy1OliYznTp0zUqKtirPqc6cvmYiIZLEJce4Yv8szGtnHsQPfZNS4fi9t3lgtFK9dsaVy1G25Py3fwyZDGzthsENzEsiaNm8qo+NGMh7/65iBkm3cJRJyjx8vdr4XhTyqzcBxbQaOe5JI1F7e/+v/3nzlw3UXdaLxwuLX5j47cnZ3n3y/8rEJsTIiIwl5Fy5qqW+E9dVMOk2lziQSJw8KC1W52BZLLPv9jakrLhlFIj5+wJQ5/3nlnm4x7jwZvf0d6PWrzz/PJQAAAPA/aELvSeGD3pr7SHMZEQl5P099eWWBc1HBlHXuotEXTb0NB9dsyLNVZu2OVRuKBCLio9N7XRnHmk/s3qOpjIhMl479U9ZAkWvKC/Lz8vLy8st07vtg8k7pXdQcEZkubd92zmanhep9W3ZXiUQki+/Wvan/XgGN7OPYg08aNa6/miMSitf9vLX85A/LD+pFIlnL8RP6O9YYXN6+V3c2y2HRhl932Ip+Qu761Qftb6Gsu3xk144dO3bs3H2qXurngpN73Ttr5a8zurHZu8/s2m3z0vEwLr5bj2ZyIhJ1B3YcsDpNIxFp1zzeIjoqKio68Z5lDV2q9ilf+x37epO1mLTwlw8nuDe9++A70NNXX4CcSwAAAOB/Avv3vt/jooa9/clEFmkvr/p5t5Xu3hLReGVeYEtC7p9bjvtkGDxRu2XuvANW04/p3MJ3l2abiIhPyBjTt7aCU9Fl8E1xPJGo+3PREps/ezUbX+jaJDEpKanpLR+fct/oAFxEv8E9VBwRGf7+dsFe66lNLFj1xYrLJiLiIwcM7m51ci7/0Mg+jl34pFF3DQziiISitd/P+/r7IwYikre/576ejn6yoP4jh0bxRGTKXvbewvNWz7LqA5/O22r/KAhi5frpgwcMGDCg/00PfWN9i8p2vbpF8kREoq7aVnT2OPkNgwfG8URkuvzLN2tLrH7Aym2rNpYKRCRr1qmjyz0vTNlnL9SIRMTHDxs/JMbq5sSKouJrDGPnR9+BHr76AuZcAgAAAL+DAO9hXOzt7354V5Lt/czJ5WwAOCHv1OlSK79edX99/r8/3VhP7QhRf+yTSS+vs2w5IJZuf3PiK5vLBCJO3vbBx4eGSU+FDJ38QGs5kVi1/c1H3j9gZWZksWTbrJcXZpqIOHm70aM7urFlKN/87knDwjkiMp767LlZu8rr7TVT9oqXpq9gVYWp906+zUbrYv/QyD6OXbjEkeMGBnNEQsEPs+YdMxKRout993Z2+CzhYkZOHp8iIyKhbNOMif/eaVnLLOSvnTrpk2MOjIzORbRp20RGRGQ8vOKnU9Zq7jX7N+5m088HN2uR6LNv1+CbJz/QRk5EQv7302fUu36JtHvfmbE4l503t43s4vo1qKgd6U0wmazv0cq9//3fdut3MP3yO9CzV1/gnEsAAADgb/CzwOO4xHEfvHeH7amsghOTIngiEqs3vDt7a0Xdn4li0cZXJn10xHq1lIdxwZGRKqo+9unonrdN+2bLiXxNja48559NX0/P6DHs7T3lAhEnbzn5k2l1akeVvV+YPT5FRiSU7Xht2E2T52/LulrHWXN5xxePDxv10V/VIhEfP+aVJ7u6tWcnlzD+jRfTgzkiUXvwvVHDn/v2UFHtb2NRm7V5zr1DHlxy0UREfPzIN6beZO+U7D7iDx/HYPDuINhSghf1NXqRiFP1nnB3W2faY4cMef29sYk8EQnlu2fd0mPUKwu3HM+t0NVo8k5s/mbabb3GfHasmoLiEyLs/RZUpI/KSJERkVi9998jR8/85VTl1QvTUHT4p1dGj/34uJGI+LiR44dYnf7bO/tT2XPKrPHJMiLRePqre26Z9PnuPGnwON2F1W+NG//hYZ1IxIX2f+7JPtZqjh0rpyy5beswnoiEorXfrqrX3lssPzRv4vh3D7FvAtFosGgN76bvQPfuW89efe44lwAAAOC6hADvBXzKhI/fvjXaxr5W3pgxLJYnItF45tM7Bz708epD5wo15ZeP/vnL/6bd3nvUJ4dr4ocM7+71+ZyJb/Lg3P/cnsiLNVnr339kcIfEcHVQZHKnoZPeW3tBJxIRHzfkne/fH2YxzTGXOPY/Xz/XJZQjUSg99NVTg1okpHToOeDmAentmya2HPj4lwfLBSJO3fbRL+febffE3vZSd5/29XvDE2UckVC8d96D6SlN2qQPuHlQn87NkloOfenH01qRiFO3feTzzx5I9f+z33cfh2NTlwmlu1dvydbqdeWFpd5pxssljLxrkDToNxc0cOK45s59Mj5p/LzvXkwP44hIrD7/+zsPD+7YJCJIHZ7UYcgj76/PqiFZyrjPvphk/45T3/SvN26LY1HzwprZd7aPCk9s3a3/oAHpHZonpHS7653N+QIRJ2sy5sO3R9W9Lry8P7nEsZ8sePqGEI5IqDiy8Il+qUktu/cbNCC9TVJcm9vfXJulF4n42CGzP32idZ27I06WM+Tme+9IYl2Flj824qEPVx08X6DRlmUd3f77dx88NaRz/+d+zabgEDVHRGLF1kULdl4s1xlqg76L34Ge2rcevfpcOJcAAADg+iaCU/Q73r1zZEZGRsYd01YVCNde33j2u6dHjczIyMjIyBj92tpS85cYz3xxm80aei6029TNl5ePUxMRF3H/Kp35Vg37preVExEpb553yWTlXY+81VVBRKS48YMzRivPn/ngRvZ817eO1D4vFP42fXRGRsbtjy44YdCeWv50elS9wnGKpIFTlh2vtPVxhaJt797RysbcS5wqdfgbGy7XL49+yzNNZUREqlu/smen2qI9vujR7tEyq+/OqVNvmbk+x8rOEEX91mdTZURE6juX2fxoVnnkQLj2ca5VJFEUTec+6qckIlL0fOdE3U0Y9k5rW6dxBJ8weX3NlcKeXvj4qIyMjIzRr68vt74/TFnfT7kjIyMj446pK/PMj6Th4H/uG5mRkZEx5u1tOuuvFYX8b0aGXpnGPXzUonwXzgRRFIr3fvpQt/p7j+Njbnxhxblq4/nFT4/KyMgYPeP3QrM30v06MZwjIj72kbU1dbZXtvuDjGZqm1N7y2N7PbnkRLVlMRran7bey7UjKIqiKX/zv2+1UVZOnTb2v/tKLfdtQ+VsmOnSDxObK2zsF46P7T997dGFo0OvrlDnVHf+O9Bz5yrj3NVn11eZk+cSAAAAXN840RcTjIMFUXP8h9kvzZi3/oL5kFqcPLrr/e8v/M8jnYNOrvhwxQkjp75h/At3mNWYCTmbP1+4q1ggWfNbn5nA6hrrbLdg+1df/ZkvkCxl6OMP3hhd7/mSPYs+35htIj7hpkcfHRBv/aekqezUph+W/bb7RFZumSk0Pjmt6+BRYzP6NA+9RqWTLnPrkm+W/LJm2+ELuYUaLjo1rVWr1u17DB3/0L2D00KtvJeQuW7e4gMVIsnTRj53b9fghjffMFPRoRVff/vT6k37T2fnF2tl4XGJzTv1H37HvQ8/cIutOwtC7s6lq45WiiRvOfShYa0caN3v8QPh+Me5VpGISCzb++38Py6ZSNZk8GMP960z9piQt3LygHu/OVvb85hPmLw264thXhklz3RsVs/ur/9lID56/PKzy++KcnmMtdJTW3/7Zc22oxdyi7TyyMSm7fuNuveuIW0jbTbNN53+dc6PR2tELrjrPc+PTKu7nlhxesOShT9s+uvsxczMrKy8KnV8al+MlfUAACAASURBVPMWLVq27nLTmPvvu7VDlJXNNrA/bb2Xi0fwyhpVZzcsWrDkl3U7j2fmFVZSSExSWtd+t4x56In7BzULqr++K8fdmL/7q9dfeOPrfQVXm8hzXFBy/wdeeefNR/slKip3vjpw+Dt/scnpFV3fOnjg9RtqP66z34EultkuTlx99n6VOXMuAQAAwHUNAd6PVGcf+HP3kdOnz2aVy6ISm7bvlzGiV7KV39gA3iBWnd/806+7Tl6ukEclNWnZd8zdN3plLC3T8f/r3fW1gwaRT3hw5ZmFt4dd+yUBwVf701GulVOoyj117J+Tp89klnCRCant+wzs2czsVp8ua9fqjYcu10Sktu3cu2+XJIvZAZ39DgyUfQsAAADgKgR4APAnhn3TO/d776SRZE2fWHdq/lA/H2kQAAAAAMB7UEkBAH5Es+nLJWeMRCRrPm7iQKR3AAAAAICrEOABwNcEvU4vEonVF36Z9vKSyyYiTtn1oUd6e6XLPQAAAABAoHDrLNwAAI4TLn8xou3Uv4NVurIKnYlNUTh2+pMd8fUEAAAAAGAOv5ABwA+YdGXFV2bv5kI6P7Po4zutjKkOAAAAAHBdQxN6APAxLrRtnxvTYoJVoYlt+tz16uIdWz6+NQHfTQAAAAAAFjAKPQAAAAAAAEAAQC0XAAAAAAAAQABAgAcAAAAAAAAIAAjwAAAAAAAAAAEAAR4AAAAAAAAgACDAAwAAAAAAAAQABHgAAAAAAACAAIAADwAAAAAAABAAEOABAAAAAAAAAgACPAAAAAAAAEAAQIAHAAAAAAAACAAI8AAAAAAAAAABAAEeAAAAAAAAIAAgwAMAAAAAAAAEALmvCwABr7KykuO4kJAQXxcEXKXT6XQ6HREFBwcrlUpfFwdcpdFoZDJZcHCwrwsCrqqurq6pqSGikJAQhULh6+KAqyoqKhQKRVBQkK8LAq7SarV6vZ6IQkND5XL8qA545eXlKpVKrVb7uiDgqqqqKoPBQERhYWEymczXxXEzfNeAq0wmE8+jKUdjIAiC0WgkIlEUfV0WcAOTycRxnK9LAW6Aa7ORMZlMje8H5fUJ12YjYzKZBEHwdSnADRr3tYncBQAAAAAAABAAEOABAAAAAAAAAgACPAAAAAAAAEAAQIAHAAAAAAAACAAI8AAAAAAAAAABAAEeAAAAAAAAIAAgwAMAAAAAAAAEAAR4AAAAAAAAgACAAA8AAAAAAAAQABDgAQAAAAAAAAIAAjwAAAAAAABAAECABwAAAAAAAAgACPAAAAAAAAAAAQABHgAAAAAAACAAIMADAAAAAAAABAAEeAAAAAAAAIAAgAAPAAAAAAAAEAAQ4AEAAAAAAAACAAI8AAAAAAAAQABAgAcAAAAAAAAIAAjwAAAAAAAAAAEAAR4AAAAAAAAgACDAAwAAAAAAAAQABHgAAAAAAACAAIAADwAAAAAAABAAEOABAAAAAAAAAgACPAAAAAAAAEAAQIAHAAAAAAAACAAI8AAAAAAAAAABAAEeAAAAAAAAIAAgwAMAAAAAAAAEAAR4AAAAAAAAgACAAA8AAAAAAAAQADhRFH1dhgBTWVmJnWbOYDBwHCeXy31dEHCV0Wg0mUxEpFAoeB539wKeXq/neR7Xptf8+eefiYmJbdu2dfuWcW02Mrg2Gw1cm42MXq+XyWQymczXBQFXBdy1qVarFQqFnSvjn4fDBEFAgDfH9oYgCL4uCLhKOrFxNBsNURRxNL1j/vz5M2bMUKlU27dvb9OmjXs3Ll2bOKCNBg5l44Brs/HBoWwcAu7adChdogYeXFVeXs7zfFhYmK8LAq7SarVarZaIwsLCVCqVr4sDriorK5PL5aGhob4uSONXXl7esmXLkpISIpowYcLixYvdu/2qqqrq6moiCg8PVyqV7t04eF9paalSqQwJCfF1QcBVlZWVOp2OiCIiIuyvPQO/VVJSolarg4ODfV0QcJVGo6mpqSGiyMjIxtfcKQBaFAAAAPiz999/n6V3Ilq+fPmpU6d8Wx4AAABorBDgAQAAnFdQUDB37lzpT5PJ9O677/qwPAAAANCIIcADAAA4b9asWRqNhohGjBjBGl4uXrz43Llzvi4XAAAANEII8AAAAE66ePHil19+SUQKhWLu3LmPPfYYERmNRlTCAwAAgCcgwAMAADhp5syZbJicxx57LC0tbdq0aUFBQUS0aNGiCxcu+Lp0AAAA0NggwAMAADjj2LFjS5cuJaKQkJDXXnuNiBITEydNmkREBoPh/fff93H5AAAAoNFBgAcAAHDGK6+8wmaXnTJlSmJiIntw2rRpbBbGBQsWZGZm+rJ8AAAA0OggwAMAADhs3759v//+OxFFRka+9NJL0uMpKSkPP/wwERkMhg8//NBn5QMAAIDGCAEeAADAYV999ZUoikQ0ffr0qKgo86emT5+uUCjYOjk5Ob4pHwAAADRGCPAAAAAOy8rKYgvjxo2zeKpZs2YPPvggEel0OtZJHgAAAMAtEOABAAAcVlBQwBbi4+PrPyul+osXL3qtSAAAANDoIcADAAA4LC8vj4iCg4PDwsLqP9ukSRO2kJub69ViAQAAQKOGAA8AAOAYURSLioqIKCEhweoKUoBHH3gAAABwIwR4AADwX0VFRQsXLmTV3f6jtLTUYDCQjfbzRBQdHa1UKqm2oh4AAADALRDgAQDAf40ZM+bhhx/OyMjwdUHqyM/PZwu2AjzHcWxm+NzcXDZYPQAAAIDrEOABAMBPFRQU7Ny5k4gOHz5sMpl8XZyrGh7BjklKSiKimpqakpISLxULAAAAGjsEeAAA8Krs7Ozs7Gx71tyyZQurvjaZTFKltz+QArytPvCEcewAAADAAxDgAQDAew4ePJiWlpaWlrZr165rrrx582Zp2a9Gg7tmE3qqrYEnBHgAAABwHwR4AADwnu3bt+v1er1eP3PmzGuu7LcB3p4aeAR4AAAAcDsEeAAA8J7S0lK2sHnz5u3btzewZlZW1tmzZ6U/L1++7NmSOUKqgUeABwAAAG9CgAcAAO8pLy+XlmfPnt3Amps2bTL/069iMJrQAwAAgE8gwAMAgPeYB/gNGzawQeat2rJli/mfaEIPAAAAgAAPAADeU1FRYf7n22+/bWtN8w7w5GdN6FmAl8lk0dHRttZBgAcAAAC3Q4AHAADvkWrgg4KCiGjt2rX79++vv9qpU6dYYu/UqRN7xA9r4GNjY3ne5r/R+Ph4uVxOCPAAAADgPgjwAADgPdIgdlOmTGELVnvCSx3gb7/99sjISPKnAK/VajUaDRElJiY2sBrP86yHvP+UHAAAAAIdAjwAAHgPq4GXyWQzZsyIjY0lolWrVh04cMBiNan9/ODBg5OTk4mouLhYp9N5t7DW2TOCHcNa0Wu1WouOAwAAAADOQYAHAADvYQE+PDw8LCzs2WefZQ/+3//9n/k6giD8+eefRKRUKvv27dukSRMiEkUxLy/P6+W1wp4R7BhWckIlPAAAALgJAjwAAHgPq4uOiIggoueff541j1+5cuWRI0ekdQ4fPlxUVEREffr0CQ4OlmKwn4xjV1hYyBbi4uIaXhPj2AEAAIB7IcADAICXaLVavV5PtQE+IiLiueeeIyJRFB9//HH2FJm1nx8yZAj5Xz22o03oCQEeAAAA3AQBHgAAvEQagp4FeCKaMmUKa4i+Z88eFuapbgd48r8Ab38TegR4AAAAcC8EeAAA8JKysjK2wFrOE1FUVNSKFSsUCgURff7551999ZXRaNyxYwcRhYaG9urVi/wvwEtd8RHgAQAAwMsQ4AEAwEvq18ATUb9+/d577z22/NRTT82ZM4f1kx84cCAL9v4W4FEDDwAAAL6CAA8AAF5iNcAT0QsvvHDvvfcSkcFgmDZtGnvw5ptvZgtsGjnyvwCPQewAAADAyxDgAQDAS6QALzWhlyxYsKB79+7mj7AR7IgoMTGR53nymwBv/yB2/lZyAAAACHQI8AAA4CVSgA8PD7d4Kigo6Mcff4yOjmZ/RkdHd+nShS0rFApW1+1X08hFRESo1eqG15TL5bGxsYQaeAAAAHATBHgAAPASW03omZYtWy5dulQmkxHRsGHDWN01w7rBazQajUbjlZLaZDKZ2Bz116x+Z1gr+oqKiqqqKs+WDAAAAK4DCPAAAOAlDQd4Iho+fPgvv/zy4osvzpkzx/xx/xnHrqioSBAEsjvASyVHJTwAAAC4DgEeAAC8RJpGLioqytY6t99++0cffSQN/8b4zzh20hxyiYmJ9qyPcewAAADAjRDgAQDAS65ZA2+LFIN9HuClIegdakJPCPAAAADgDgjwAADgJVINvKMBXmqI7vNx7Owfgp5BgAcAAAA3QoAHAAAvcboGXmpC7/MYLNXAJyQk2LM+AjwAAAC4EQI8AAB4SQPzwDfMfwaxQxN6AAAA8CEEeAAA8JKKigoiUigUQUFBDr3QJ03o161bl5GRsWbNGvMHEeABAADAh+S+LgAAAFwvWA28o+3niSguLk6hUBgMBq/VwGdnZ48fP16j0fz999/mdw2cCPAcx4mi6PO2AwAAANAIoAYeAAC8QRRFpwM8z/Ns2rbc3FxRFN1fuHqef/55jUZDRDk5ORcvXpQed7QPvEqlYnPmoQYeAAAAXIcADwAA3qDRaEwmEzneAZ5h49jpdLqSkhI3l6yedevW/fzzz9Kf+/fvl5bZPPAqlcr+2xCsFX1paalOp3NrMQEAAOC6gwAPAADe4PQQ9IzXxrGrrq5++umnzR8xD/CFhYVEFB8fz3GcnRtkAV4URRb+AQAAAJyGAA8AAN7ARrAjlwO8p8exmzVr1vnz54moadOm7JEDBw6whfLyclaLbmcHeEYqOVrRAwAAgIsQ4AEAwBvKysrYgnNN6L1TA3/69Ok5c+YQEc/zy5cvDw8PJ6IDBw4IgkBE+fn5bDU7O8AzGIgeAAAA3AUBHgAAvEEK8H7bhF4UxSeffLKmpoaInnzyyb59+3bv3p2INBrNqVOnyPER7BgEeAAAAHAXBHgAAPAG/+8D/+23327evJmIEhISZs+eTUQ9e/ZkT7Fu8FINvENN6BHgAQAAwF0Q4AEAwBukPvCsXbqjPB3gq6urp06dypbnzJnD2vlbBHg2gh0RxcXF2b9lBHgAAABwFwR4AADwBj9vQn/8+HGWz/v163ffffexB23VwKMJPQAAAPgEAjwAAHiD1IQ+KirKiZdHRUWFhISQxwJ8VlYWW+jTp4/0YPPmzVlr+cOHD+v1eucCvNcmwAMAAIBGDwEeAAC8wcUaeKqtys7LyzOZTG4rVq1Lly6xBWn2OCY9PZ2IdDrdsWPHnBvELjg4mPUaQA08AAAAuAgBHgAAvMHFQeyotirbZDJJNeFuZCvAm7eid24QO6q99VBUVGQwGFwtKAAAAFzHEOABAMAb3BXgyTNt0e0J8KwGnuf52NhYhzbOArwgCJ649QAAAADXDwR4AADwBhdHoSdrAf7IkSM9evR48MEHBUFwsXjZ2dlsISUlxfxx1oSeiPbv389GuYuOjpbL5Q5tXCo5WtEDAACAKxDgAQDAG6QaeDZDmxMsArxWqx0/fvyhQ4e+/fbbLVu2uFg8NoidSqWyaB6fkJCQmppKRMePH2fd+B1tP08YiB4AAADcBAEeAAC8gQV4tVqtUqmc24JFgJ8xY8apU6fYI+vXr3elbCaTiUXr5ORknrf8z8ha0RuNRlEUCQEeAAAAfAcBHgAAvKG0tJRcqH4nouTkZLaQk5OzefPmefPmSU/98ccfrpQtJyfHaDQSEatstyB1g2cSExMd3T4CPAAAALgFAjwAAHicIAiVlZXkQgd4MquBP3ny5KRJk1i/d47jiOjw4cOujA8njWBn0QGesQjwcXFxjm4fAR4AAADcAgEeAAA8rqKigrU/d6UGXgrwO3fuvHjxIhF17dp10qRJRCSKoiuV8LaGoGd69Ohh3q7eoUngGQR4AAAAcAsEeAAA8Dg2/Bu5MIccEQUHB5vnf5VKtWjRottuu4396UqAZyPYkY0m9BEREa1bt5b+dCLAS5X2xcXFThUQAAAAgAgBHgAAvMD1IegZqRKeiN58883OnTsPGTJEoVAQ0YYNG1glvxOkGnirAZ7qtqJ3YhC7yMhI1tSfDQQAAAAA4BwEeAAA8DgpwLvSB57MAnyfPn2mTp3KNti7d28iysvLO3r0qHObtTUJvMTFAC+TydgHR4AHAAAAVyDAAwCAx7mrBr5Xr15EFBISsnDhQplMxh685ZZb2MKGDRuc22zDfeDJ5QBPRFFRUYQADwAAAK5BgAcAAI9zVw38m2++uXz58gMHDrRp00Z6cNiwYWzBxQAfGhrKYnZ9Xbt2ZQ31yak+8FQb4GtqarRarXOFBAAAAECABwAAj3PLIHZEpFAo7r777nbt2pk/2LNnTxaPt2/fXl1d7eg2a2pqCgoKyHb1OxEFBQWxyv/U1NSQkBCHy10b4ImopKTEiZcDAAAAEAI8AAB4gVQD72KAt0omkw0ZMoSIdDrd9u3bHX15dnY2G/2ugQBPREuXLn3rrbfWrFnjXCGlAI9W9AAAAOA0BHgAAPA4qQbeVht1F0nd4J2YTK7hOeQkqampr7/+eseOHZ0oHiHAAwAAgDsgwAMAgMd5tAaeiIYPH84WnOgGf80R7NwiOjqaLSDAAwAAgNMQ4AEAwOPcNQq9Lc2aNWPD2h09ejQ3N9eh10o18B4N8KiBBwAAANchwAMAgMd5ugaeaseiF0XR0Vb03qmBR4AHAAAA1yHAAwCAx1VUVLAFF6eRa4DTk8llZ2ezhZSUFDeXyYzXAnxFRcWIESMGDBhw+fJlj74RAAAAeB8CPAAAeJy7ppFrwKBBg9hU7X/88QcbVd5OjawG/rffflu3bt2OHTsWL17s0TcCAAAA70OABwAAj2MBPjQ0VC6Xe+gtwsLC+vTpQ0QFBQWHDx+2/4WsD3xMTIxzE7zbyWsBXmpQUFxc7NE3AgAAAO9DgAcAAI9jTeg9136ekVrRb9u2zc6XaDQa1j/fo+3nyYsBvqCggC1I4w4AAABAo4EADwAAnmU0GquqqshjQ9BLOnXqxBakgeWvSWo/3/Ak8K6TAnxJSYlH3ygvL48tIMADAAA0PgjwAADgWVIHeE8H+CZNmrCFnJwcO18iRX1PB/jIyEie58nzNfDSLHoI8AAAAI0PAjwAAHiWF+aQY6QAb/9U8N4ZwY6IeJ5nPQg8HeBRAw8AANCIIcADAIBneWEIeiYxMVEmk5EjNfBeC/BU24re0wE+Pz+fLSDAAwAAND4I8AAA4Fleq4GXyWTx8fFEZP8U6N4P8AaDobKy0kNvUVNTI90gQIAHAABofBDgAQDAs6Qk6ek+8FTbir6qqoqNe39NUh94LwT46OhotuC5Svj8/HxRFNmy1PABAAAAGg0EeAAAsFRWVrZnzx4pCrpICvBhYWFu2WADkpKS2IKdrehZXT3P81L/ec/xwkxyUvt5ItJqtUaj0UNvBAAAAD6BAA8AAHXo9foePXr06dPn9ddfd8sGvV8DT3YHeNaEPiEhQalUerBYROSVAC+NYEdEoija2QwBAAAAAgUCPAAA1HH69Onz588T0datW92yQa/1gScHA3xRUZFWqyWvtJ8nr9fAE7rBAwAANDoI8AAAUMeZM2fYQlFRkVs26LV54MnBAO+1SeAZKcCXlJR46C0s5s9DgAcAAGhkEOABAKCOs2fPsgV3BXifNKG3Zyp4bw5BT6iBBwAAAJchwAMAQB1SgC8pKTGZTK5v0JtN6B0axM7LAd4Lo9Cb94EnBHgAAIBGBwEeAADqkAK8IAhuiZpSE3p/6wMvBXgvN6FHgAcAAADnIMADAEAdUoAnN7Wi92YNfHx8vEKhIL+sgUeABwAAABchwAMAwFU1NTXZ2dnSn24M8DzPe2EeeJ7nExISiCgnJ+ea89gjwAMAAEBgQYAHAGiENmzYMG7cuJ9++snRF547d04QBOlPtwR4Nht5aGgoz3vjnw5rRa/T6a6Zk1ktvVwuZ5nf0zwd4KuqqqqqqswfQYAHAABoZBDgAQAaG6PR+NBDD23atOm55567Zi20BfP28+TWGngvDEHP2D8QPStYRESEd+4shIeHy2Qy8liAl6rf1Wo1W0CABwAAaGTkvi7ANemy96xa8fu2w+cKtKq4Zm17jLjv3puaBXF1VxKrzm/58fs1O//JLNWrY1t0HjDqnrF9m6ot1rJ3NQCAgPbbb7+x7KrRaIqKiuLi4ux/rdsDvE6n0+l05JUO8Iz5OHYdO3ZsYE3WNCA8PNwbxSLieT4iIqKkpMTTAb5169ZHjx6lRh3gdTrd22+/HRQUNG3aNHZbBAAA4Hrg3wFeLD3w5Vsfrj6vJV4ZEiIvzz6x+9LJQwePT539ZK8o7upaez979YMN2XrilaGhcm3uye3fnzxwcOzrs+7vGMKRg6sBAAS6r776SlrOyspyJcAXFxe7WBhvjmDH2DkQvU6nMxgMROSFnvmSqKgoFuBFUeQ4N//rkQJ8mzZtGn2Anzt37uzZs4moffv2Y8aM8XVxAAAAvMSfm9ALues++Xj1BV1U+oOzFyxbumTZss+mjWip0l/aMP/b/ZW1jULFit0LPt2QbQhpP+6NL5cuWbxs8WcvDU9V6M7+Mnf58RppY3auBgAQ4LKystavX2/+p0Mvd3sNvPcDvJ1TwbPqd/JiDTzVdoM3Go0ajcbtG8/Pz2cLbdu2ZQuNNcCLovjFF1+w5fPnz/u2MAAAAN7kxwFed/iXnw5ruMQRL/zrzhtiFEScOrnf5OfHtJCJJTvX761gCV7I2fjzrnJS3zDhhYnd45REXFDywMemjE6VCbl//LKz/ErOt3M1AIBAt2DBApPJJP3p8wAvTQLvb33gfRjgyWy3uJH0edu1a8cWGmuA37x5s3SiWgy8DwAA0Lj5b4DXHd6ys0iUtxkxqnPw1VaG8mYDb0lv2iSuMi9HICISCw/sO2+ioG7DBiZc/SyKtKFD2sjE6mN7/2I19XauBgAQ2Ewm0zfffGP+iEMBXq/Xs/WlnBmINfBSgL98+XIDq0l14N5sQh8dHc0WSkpKzB+vqKhYvHixPXPXN0CqgU9OTg4ODqbGG+C//PJLaVn61AAAANcDvw3wxtN/Ha0U+dQe3RLqdBLkkzNenTf/0/cmtJcREdWcPXneJMpadGoXar4aF9exQ4JM1J05dVFwYDUAgMC2bt06Nre51O/doQB/4cIFVnufnp7OBgYL6ADfcB72SYC3NZPc/ffff//99w8aNMiVjUt10YmJiWxvN8oAX1RUtHLlSulPBHgAALiu+GuAF8uzL5WLnCq1eVJDRRQKL+cZRC44KTm67lhAfFLTJJ6E8pycStHu1QAAApxUMzlt2jS24FCAl5olt2nTJiYmhgIzwMfExKhUKvLvJvQWAX7Xrl1EdObMGVea1ktRVgrwVVVVRqPR6Q36p0WLFtXUXB27BgEeAACuK/46Cr1QmFcoEB8dG01lJ//4dc32oxeK9SGJLdM69B6R0Sflygy3JJaVlovER0SFW4zly6kjI4M4qiovKxMpws7V7BsPuPH9GHKRKIqiKGK3NAKCcKUlislkwgENRDk5OatXryaiyMjIyZMnz5w5s7q6Oisry/6jefr0abbQsmXLmJiYgoKC8vLy6upqhULhdKmkpBoWFua18yoxMTEzMzM3N9dgMNga7F2KyiEhIV4rmHQXo7i4WHrTsrIy6UbJpUuXQkNDLV5l57XJauBVKlVYWBi7KyGKYklJidRuvxEQRVG6S8VxnCiK+fn5Afd9JYqiIAgBV2yoz/zadPu8EuATuDYbB1G8UjdrPiqQP+N5nuftrVn31wAv6qp1IpGseOu7U9YcLDGxY3Dp4vH9WzZuGfTYtKeHNFUSkVhTUyMSqdQqyy9NTqlWcVRVo6sR7V7NPuXl5dI5ARK9Xu/rIoDbaLVarVbr61KAwz7//HP2s2Ps2LF6vT4lJeXMmTP5+fkFBQVKpdKeLRw/fpwtSFW4oiheuHAhPj7e6VJduHCBLQQHB3ti5Dar4uPjMzMz9Xr9+fPnWVOC+qSaW4VC4bWCsaYBRJSTkyO96d9//y2tcPr0aWkU/fqqqqpsPSWKIgvwsbGx5eXlISEh7PHs7Gz7fxP4v927d586dYqIOnTooNVqL168WFhYWFxcHHBTwdfU1Ji3I4BAV1lZ6esigHvodDqdTufrUoDbeGLOF08IDQ1Vq9XXXo+I/LgJvb5GT2TK3PL7QUOLW5+ePe+bZcsWzpv15NDmQbqsrZ+9v/yUnohIFIwmIrL244TnOSLRYDDavxoAQMASRXHp0qVseeLEiUSUnJzMHrd/aLRz586xhRYtWsTGxrJlF6eCl7aZlpbmynYckpiYyBYaGKLcJ33gpaH4zW8ZmE+E1nCz/waUlpayG6kJCQlk9qEC5beLnb799lu28MADD7CBHkwmk0V/BAAAgEbMX2vgOV4mIyJOlnjbtLcf7xxEREQhXUY8+5a68plP9mStW7n3zpcHhHIKlZKoxkpTF9FgMIrEqZRKIrJzNfuo1WrUwJvT6/Ucx7nSwhb8hNFoZBeJQqEIuOos2LRp08WLF4moR48e6enpRJSSksKeKigokOYVaxjbAs/zbdq0kQJ8ZWWl/XeF62PplOf5du3aubIdh0ifvbi42NabSnUsUVFRXiuYNLigRqOR3pSNO8gUFRXVL4zBYGCNAJVKpa3qdGmsgcTERLVaLXW2r66u9tqn87Ty8vI1a9YQUVBQ0IQJE9jAAURUVlYmHfGAUFNTI5PJ5HJ//Q0GdrPn2oQAgmuz0Qi4a9OhH97+eoJyKrWKqFLe8Y6xNwSZPx7Vf+SA7/atKT5+9KxpQFcuODiIo4qqSq1loha0lVoiCgoJ4ojIztXsIrVLBKa8vJzn+fqdNiHgaLVaFuDVarXU0BcCxZIlS9jCE088wa7HwMi5RwAAIABJREFUpk2bskcKCgrsuUINBgNLkqmpqTExMVJD7qqqKqcvcKPRyG4KNG3aVMquXpCamsoWSktLbRVeasAcFxfntW8waYT8yspK6U0tAnz9wlRVVVVXVxORWq221RtCasGbnJwcGhoq7W29Xt9ovp8XLFjAeveMHz8+JSWFtTEhIo1GE1if0WAwKBQK/JxoBCorK1lICAoKQk1GI6DX65VKJZuGEwKaRqNh12ZwcHDjuyPjrzckuKiYKJ4oLDk50iJZyxOTE3gSq0rLDER8fGK8jMTyomJD3bXE8uJSo8gp4hJieLtXAwAITCaTidVMhoaG3nPPPexBqU7SzoHoMzMz2R2cVq1aEZFUA+/KQPQXLlwwGAxE1KZNG6c34gQpJzfQIt1/RqGXehnQtaa+a4D5HHJk9qEa00xy0vB1kydPptrOAoSB6AEA4Hrir7GVj0tJVnOkq9RatnoXa3Q1InHyoCA5EReemhrFi4asC9l1Rxg0ZJ2/ZCK+SfNUJdm9GgBAYDp27Bgb3qxfv35SVaQU4LOzs+3ZyJkzZ9hC69atiUga+82VAM/GGyOitm3bOr0RJ0jNBxrIwz4J8NKA8OYBXtrzRHT58mXntizdqmABXhruvtEE+J07d/7zzz9E1L59+759+xICPAAAXJf8NcCTsn3XjiqqPrbnb02dZu9Cwd+HsgSSNW/VXE5EsrQuncI4U86hQ5cFs7UMpw8e0Yh8fJcuyTzZvxoAQEDat28fW+jVq5f0oBTgMzMz7dmINAk8G21OaoPtyiB2FjcFvEaqgW8gwPtkELuwsDDWlk8K8JWVleb50+ka+IKCArbAYm3jC/BsikQieuyxx9h8XQjwAABwHfLb3MqF9xraJ5LKti1atK9IqjbXZ2/46sfjegrqfHPfeI6ISN31loEJvOnCup/2ltcmfVPexp+2FIrylkOGtL4yHoCdqwEABKK9e/eyBfMAn5yczHKOnU3opQDvxib00sTyvmpC728BnuM4NhC9FOCl3c7k5eU5N2mtRRN6KcBLDQ0CndTRoH///mzBnrkGAAAAGhn/7dPPhfa6577uhz47+Me7L17sN6h3mxgh//iOzXsyqyi084RHhsRe6Ruv7HDn/f12fbT9z/+8zuWM6d9MVXLijxUr/9LKkjMezGgqBXM7VwMACEB79uxhC+YBXqVSxcfH5+fnOxrg3diE3lcBPioqKjg4WKvV+lsTeiKKiooqKioqKysTBIHnefP280RkNBoLCgoamAreFltN6L02xb2nSZPttWzZki2gBh4AAK5D/hvgifikYS++UvWfOUv3n9628vQ2IiKOC04deP+Up25LvVpwLqb/06+WGd9ftGfLojlb2ENBzYc+Oe2hLiFmA+DZuRoAQIDRaDQnT54kopYtW8bHx5s/lZKSkp+fr9Vqi4qKpBp1W1iA53m+RYsW5NYaeJVK1axZM6c34pykpKRz587l5+ebTCars7OwGniVSmVrXHcPYePYmUwmjUYTEREhVSzzPC8IAhHl5OQ4EeClEGvRhL7R1MCz6QzCw8OlcQQQ4AEA4DrkzwGeiAtrf+dr8wef//vQiUtlxtDEFmmtWzWLC7b8IcYFt7p9xqf9zxw6ePJymVEd26xTjy6pYfV+rtm5GgBAQNm/fz9rdN27d2+Lp5o2bXrw4EEiysrKajjAm0wmFpBSUlKCgoKIKCIiQqlU6vV6pwN8VVUVG5ItLS3NoQlO3aJJkybnzp1roEKbJVsvV79T3YHozQN8p06djhw5QkSXL1/u0aOHo5tlzcjDwsLYKIaNrAZeo9Gw85DdXWJCQkJCQ0MtBhEAAABo3Pw7wBMRkTyyZfrglunXWk0R1br30GsPkmTnagAAgUIawc5qgGcLWVlZ3bt3b2AjmZmZer2eajvAMzExMbm5uU4H+NOnT4uiSF5vP8+Yd4O3GuBZDbxvA3zz5s2lngs33XQTC/BOjGNnMpnYYZK6hTeyQewuXLjAFswDPBElJCRUVlYWFhbaamcBAADQyPjtIHYAAGAXKcD37NnT4qnk5GS2UL8b/M8///zDDz9If1oMQc+wSvvKykqdTudEwaTe3b4N8FangtdqtWzSe2+OYMdIAb6kpIRq97xSqZTuvzgxkxxLsEQk9aFoZE3oGwjwZHb/AgAAoNFDgAcACGxsCHqFQlG/jl2qgb906ZL54+vWrRs7duzdd9/9zjvvsEcshqBnXOwG76sR7JiGp4L3yRD0jHkNfHV1NYvrLVq0kA6WEzXwFkPQE5FCoQgODqbGXgMvfV60ogcAgOsEAjwAQADLzs5mea9z585qtdriWfMm9OaPr127li3MnDlz/fr1dK0A79xU8L4N8A3PJOerIeipboA/d+4c62XQqlUrqbmEEzXwUnyVAi3VVsI3jj7wDdfAEwI8AABcNxDgAQACmDSB3I033lj/2ZSUFLZgEeC3b9/OFkwm07333nvu3DmLOeQYKcAXFhY6UTY/CfBWm9D7MMBLg6iXlpaa73Z75q63xWIOOYYF+KqqKtZZIKDVn0OOQYAHAIDrDQI8AEAA279/P1swnwFeEhsby9pRmwf4iooKNlgaU1paOm7cuOPHjxMRx3H1+8CTazXwERERUsryJikPW63Q9pMm9NIQ9GlpaUFBQSzbu1IDb76rWYAXRbERdINnUyRwHGcxHyECPAAAXG8Q4AEAAhjrAE82AjzHcawVfV5eHhtknoh2797NBjwbOnQoS7l///03S5JJSUks8DOu9IEvLCwsLS0lH1W/07Vq4P0kwFv0XGBlZn3jHdpm/T7w1IgGohdFkTWhj4+PDwkJMX8KAR4AAK43CPAAAIHKZDKxad4jIyPbtm1rdR0W4AVByM7OZo/s3LmTLYwZM2bFihUqlUpa2bz9PBHFxMSwBSea0J86dYot2CqYp4WFhbFw7s994K0GeFEUrd50aIAU4M0nzGs0A9EXFBRUVVVRvfbzZHbDQtoDAAAAjRsCPABAoPrnn38qKyuJqGfPnhzHWV1HanKcmZnJFnbs2MEW+vfvf+ONN37yySfSyuYj2BFRXFwcW3CiCb00h5zFTQFvYmm2oKCgfidwv6qBl8vl7DA5PY5dA03oKfDHsZNGsGvevLnFU6iBBwCA6w0CPABAoJLaz0tTiNdnMRC9wWBgr4qMjOzUqRMRPfHEEw8//DBbp0OHDuavdaUJvW9HsGNYhbYgCPWrZ/2hBj4vL49N79esWTOFQkHXGjm/AewDchxnNcAHehN6W0PQEwI8AABcf+S+LgAAADhp3759bKGBAJ+amsoWWIA/dOiQVqslor59+/L8lXu4n332WUhIiEajmTRpkvlrpSb0AR3giSgnJ0cakJ/xYQ18aGioQqEwGAwnTpxggxFIDR+croFnAT4qKkqpVEoPSvcmGnGADwkJCQ0NraysRIAHAIDrBAI8AECgkuaQszqCHSPVwLM+8Obt56V11Gr13Llz67/WLTXwPmxC30CFtg9r4DmOi4yMLCwslBr2S7vIuRr4mpoa1kjevAM8EUVGRrKFQO8DLwX4+n3giSghIaGysrKwsNBkMslkMu8WDQAAwNvQhB4AICBpNJoTJ04QUcuWLePj422tZlEDbzXA2xISEhIUFESOB3hBEFjv7iZNmni/ilsiBVq/CvBk1oqekabuc64GPi8vTxRFqjsEPV0fTeipthW9yWRybrJDAACAwIIADwAQkA4ePMgaYDdQ/U5EqampbHy7zMxMURR37dpFRCqVKj093Z53YZXwjgb4rKwsnU5HPm0/Tw3OJOfDJvRExOZ7l0gB3rkaeKn1uMV9nEbWhF4ul0vNScxJ3eAxED0AAFwPEOABAAKS1H6+gQ7wRKRWq9lg8pcuXTp16lRBQQERpaf/P3vnHSdFff//9+zt7nWuw1Xujt4FRFAUpSgWwPi1RNEY0RCxtxRNVPI1JpqiMRb0p2JUEsGoBBAr6KmgKNIROEA4OI5+ve9t/f3xDp/vOLs7O9tnd1/PP3h8mJ2d+WyZvXl9Xu8yjq11n7CAt1gsXO5eI1HvIccIQeveBk9XDrwIoe/Tp4/RaCQ/HXixPCH0PyNC6GNawDscDi71V1ZWxm+OAhF3gDR4AAAAiQAEPAAAxCRaKtgx3KKso6Pj3Xff5S1a4ueZwNLg9ZAAT7I2eO6Tj64DLxfwBoNBRIYnJSWxn+yXAy+cZ3kJeoqXNnJ1dXU2m428xM8TCtEDAABIMCDgAQAgJmEBbzKZRo8erb6nSINfsmQJD84++2yNZxEC3q8EY9EEProh9GLy7g68fgR8WVlZcnKy+C+76N3d3c3NzRqPxlEV5F3Ax3QRO/UEeIKABwAAkGBAwAMAQOxRW1vLUdajRo3yGQwvBPzWrVuJSJKkAAR8YA581AU85/97C6FPSUnhBuwRRi7gRQ85JoA6dlzLkOK0iB0EPAAAACAHAh4AAGKPDz/8kAfnnnuuz50Vpb+GDRumKKKmQjAC3mg0euz7FTFMJhOLWG8h9FFJgCdVAe9vHbuDBw++8847RJSSkjJmzBj5QxDwAAAAQPwBAQ8AAOHCarUuXrx4586dIT/ye++9x4MZM2b43Fk48Iz2BHgKSMBbLBZuWVdZWRkVf1sOp8E3NTU5nU6x0eVysYCPVos7uYAXJegZfx34xx9/nFPE586dK3L+GZPJlJaWRgkj4FGFHgAAQCIAAQ8AAOFi/vz511133Zlnnqk9n1kLXV1dVVVVRJSVlaXFgVcIeO3x8xSQgN+/fz/3t4tu/DzD83c4HE1NTWJjV1cXzzDWHfhDhw699tprRJScnHz//fe778AmfHwLeFShBwAAkFBAwAMAQLjYsmULEXV0dKxZsyaEh/3000+7u7uJaPr06Vos7gg78DpJgGeEKS1PgxdF3fTgwAeTA/+nP/3JarUS0U033VRaWuq+Awv4jo4OXrCIRVjAp6WlKUr0CdLT0zMyMggCHgAAQGIAAQ8AAOFCKIr169eH8LAifn7WrFla9u/du7codFdSUuLNyfRIXl4eD7QLeNEEXlcCXj5/IeBFlniEETUIJElShNBrd+APHz78j3/8g4hMJpNH+51OhRi4XK4YLUTf3d3NgfEVFRVcj9AjrO3r6+tjd50CAAAA0AgEPAAAhAvR3yuEAt7lcn3wwQdEZDAYLrzwQi1PkSRJ2LOTJk3y63QBOPA66SHHeOwkF90eciRz4IuLizlNXaDdgf/Tn/7U09NDRDfddFN5ebnHfWK9jt2BAwdcLhd5j59nWMA7HA6/mh0CAAAAsQgEPAAAhAWXyyVE74YNGwLwBnt6elihydm6devhw4eJ6Mwzz+zdu7fGQ4ko+okTJ/o1hwAEfG1tLQ+iW4Ke8RhCH3UB37t3b9btp512muKh7OxsfkjdgT969Ogrr7xCRCaT6YEHHvC2W3Z2Ng9iVMAfPHiQB1oEPCGKHgAAQAIAAQ8AAGGhubmZy4MTUXt7+65du/x6+u7du4uKikpKShRP9Kv+vGDw4ME8mDx5sl/TSE5OZpWrXcALEaVoSx4VPC5ARD0H3mw2L1u27K677nr22WfdH+Uo+hMnTtjtdm9H+Mtf/mKxWIjopz/9aUVFhbfd4sCB54G6gBffNBSiBwAAEPcYoz0BAACIT0T8PLN+/fqRI0dqf/rHH3/Mtet//vOfr1271mD473qrEPAzZ87UfrSHHnrIarWOHj3arzkw+fn57e3tjY2NLpdLJQ9ZwC88KysrJSXF33OFHHUHPlpV6Ilo+vTp06dP9/hQSUnJvn37HA7HiRMnRES9nE2bNr300ktEZDQaf/vb36qcJdYFfE1NDQ/gwAMAAAAMHHgAAAgLCgH/zTff+PV00fZs3bp1XKuMiI4fP75x40Yi6tu376hRo7Qfraio6OWXX7799tv9mgPDJrbNZtMiAh0OB3vd2sP7w4p6EbsoCngV1OvYLVmyZNKkSdyG4Prrr1fPUxAvsKWlJdTTjAQaHXgIeAAAAIkDBDwAAIQFdwfer6fLW8fff//9bCB/8MEHTqeT/LTfg8SvNPj6+nqeobemXxFGn0Xs1PFWx87hcDz44IPXXXcdq/fhw4c/9thj6oeKdQceAh4AAABQAAEPAABhQaEldu3a5VcrL7mAb2pq+vWvf03+N5ALCX4JePGqdSLg1fvAx5AD39HRceONNz7xxBNclf2SSy756quvfFYZEEXsYrSNHBexy83NVW/4BwEPAAAgcYCABwCAsCAUI/dgdzqdHP2uERHzzNnvr7/++urVq1evXk1E6enp/taiCwYh4LX06BJxBzoJoc/IyOBUfPnqQ8w58N9///0FF1zw4YcfEpEkSQ8//PDKlSu1NLEXKxSx6MA3NTXxVaBuvxMEPAAAgEQCAh4AAMKCkLLTpk3jgV9p8MKBv/POO4nI5XJdddVVHR0dfMBI1ofLy8vjgRYHXm8Cnk6Z8LHrwH/44YeTJ0/et28fEaWnp7/99tu///3vRVFDdWI6hF5j/DyhCj0AAIBEAgIeAADCgpCyItzdrzR49h4lSfrjH/84ZMgQkmmwSCbAU4yH0NOp+VssFl7+oJhy4P/85z/PmjWLP/q+fft+8cUXV1xxhfZDxZaA3759+w033LBgwQL+gLQL+PT09IyMDIIDDwAAIAGAgAcAgLAgBPyFF16YnJxMfgp4duAzMjLS09MXLFgg+rdJkuRXB/jgiXUB754Gr3MHvqioiD/uTz/99IEHHnA4HER0zjnnrF692t8ugLEl4O+8885FixbdcccdJSUld9xxR1VVFW9Xr7TP8PdN1FAEAAAA4hUIeAAACAss4A0GQ0lJyejRo4noxIkTwlT0CQt4LkI2derU6667jrePHTtWhFhHBr8EvG5D6Ek2f5078CkpKbm5uUQktOgtt9zy9ttv80a/iC0BX1tby4P29vYFCxa88MIL/F+fDjydEvCiiyEAAAAQr0DAAwBAWGApm5ubazQaJ0yYwBs1mvA9PT3cKiwnJ4e3PPHEE5zoO3fu3LBM1zux7sC7d5ITDrw+BTzJouiTk5MXLlz4xBNPGI3GAI4TWwKev2Amk0nxYrULePIeRV9TU/PUU08dPnw46GkCAAAA0QQCHgAAQo/VauUkdjaizzzzTN6uUcCLCnZCwPfp02fXrl3V1dW33HJL6KerStw48ELAswOflpYWmCqOANxloLCwsKqq6mc/+1nAxzGbzdwEQf8Cvru7u7Ozk4iGDh168ODBhx9+mFesKisr+/fv7/PpQsB7q2N36aWX3nfffVdddVXopgwAAABEAQh4AAAIPfX19dyvm3Wsvw68EPCijzcR5eTkcDW7CJOfn89C99ixYz53Zv8zJSVFS5OzyOC+AMEOvG7tdyJ68skn16xZs3PnzokTJwZ5KP4K6V/Ai0+noKCgpKTk97//fW1t7Zo1azZs2JCUlOTz6eoOfENDw86dO4lo27ZtfGECAAAAMQoEPAAAhB5FJHm/fv14sHnz5p6eHp9PFwI+gLTnkJOUlMSTP3LkiLr4cblc7MDrJ36e3Bx4l8vF5ej1WcGOMRqNkyZNCsmnzy+zo6PDbrcHf7TwIWI3xOdlNpsnTZokuhiqIzrJeRTw3333HQ+6u7vlDQUBAACAmAMCHgAAQo8QCUKNjB8/noh6enq2bdvm8+kcfk8/dOCjSGlpKRFZLJampiaV3VpaWqxWK+kpfp7cHPiOjg4uDqdnBz6E8FfI5XKJ0n36pLGxkQcaFbsCdQdeCHgiOnjwYADHBwAAAHQCBDwAAIQe91Rwv6LoPYbQRxF5Z3KV3XRYwY7cHHihY/XswIeQWKljJ0LoxYKLX5SXl/Ng9+7d7o/u2LFDjA8dOhTA8QEAAACdAAEPAAChR1TSchfw33zzjc+n6yqEnmQCXr2ItxDwIp5ZDyjayOm8CXzIES9T5wLePYTeL0aMGJGcnExEGzZscH9UHvYimtUBAAAAsQgEPAAAhB4RQi8X8AaDgfx04EUV+ujirwOvqxD63NxcroLGH0qiCfhYceBFCH1gAt5sNo8cOZKIjh8/rlhmcjqdu3btEv+FAw8AACCmgYAHAIDQI+xEEUyemZk5dOhQItq/f7941Bt6C6HnHHiKzRB6g8HA6yCKEPoEyYGPFQEv1rwCC6EnojPOOIMHChP+wIEDXLaQgQMPAAAgpoGABwCA0ONexI6Ixo0bxwPuaKWC0Fo6EfAaHXiPr1oP8HxaW1ttNhsEvD4Jsogdya6vjRs3yrfLK9gRBDwAAIAYxxjtCQAAQBziXsSOiPr27csDnw3VdRtCrzEHXlcOPBEVFBRUV1e7XK6GhgYRQp9oAn7btm02m23jxo0bN248evToggULLr300ujOTY68D3xgRxACXuHAQ8ADAACIJyDgAQAg9LCAT05OFvKJiIqKinggStx5Q28h9BodeI/LFnpA3kkuYavQP/HEE/Lt8+fP15WAF+EbATvww4YNS0tL6+rq2rRpk8vlkiSJt4sS9CaTyWazNTc3t7e3J8jyDQAAgPgDIfQAABB6WMoqdKyoze7TgRd94HXiwKelpXE9/FjMgacfdpJLNAfemx7evn27z1oMkYQd+F69enEx+QAwGo1jxowhoqamppqaGrGdHXhJkiZOnMhbYMIDAACIXSDgAQAgxLS1tVksFnIT8MKB1xhCn5KSkpqaGp45+g2b8E1NTV1dXd72YUFoNBoDNlHDhLyTXKI58JMnTz7rrLMKCwunT5/+29/+9j//+c/s2bOJyOVyVVVVRXt2/8XlcnEOfMAV7Bj3OnYWi+X7778novLyci5TTxDwAAAAYhmE0AMAQIjxZkQLB95nCH1TUxPpxn5nSkpK2Mk8evTogAEDPO7Dr6ugoIAb5ukHIQvlDnyCCPjMzMx169bJt9jt9iVLlhDRp59+es0110RpXj+gubnZbrdT0MkX8jp2/NJ27drFRx41apQoQoFOcgAAAGIXfd1jAQBAHOCtHXpRURHn5ao78Ha7nbte6U3A88BbHbvOzs7Ozk7SX/w8/TCEPtGq0LszdepUXmFZvXp1tOfyX4LvIce4O/Cigt3IkSPLy8t5DAEPAAAgdoGABwCAEOOtlltycjIXpVMX8C0tLS6Xi3Qm4H22gve2bKEH5EXsEs2BdycvL2/06NFEVFtbu3///mhPh0hWgj5IAT9w4EC+xDZv3uxwOMiLgEcIPQAAgNgFAh4AAEKMEPDuDbE4Db65uZmT5D2itxL0jM9C9LqtYEeJXcTOI+effz4PPvnkk+jOhAm+hxwjSdLYsWOJqKOjY8+ePfRDAS9C6CHgAQAAxC4Q8AAAEGKEgHeXsiINXshdd/RWgp6JDwGfgEXsPDJt2jQefPrpp9GdCSMEfPDlDxVR9Nu3byei5OTkgQMHFhYWpqSkEELoAQAAxDIQ8AAAEGJEQq97MLmWQvTCgdengPeWA6/bJvDkyYGXJCkjIyOqk4omkyZNYilbVVXldDqjPZ3/u2SCdODph3XsGhoauLDi0KFDTSaTJEmcCXL06FGr1RrkiQAAAICoAAEPAAAhRkXKxq6A154Dr0MHPjk5meW6KGKXnp6elJQU7XlFjdTU1LPOOouIGhsbt27dGu3pEPeQo6Bz4OmHDrw8fp4HnAbvdDq9fY0BAAAAnQMBDwAAIUYlB15LJ7nW1lYeZGVlhWF2AZKbm8uerTfloxJ3oAf4s2hsbGQHPpET4BldpcGHMIS+vLycP+tt27Zt3ryZN44YMUI8yoODBw8GeSIAAAAgKkDAAwBAiGEpK0mStyJ2FIMOvCRJHEV//Phxru+tQM9V6OmUgLfZbNyiDwJepMHrSsAH78DTKRPeYrFwu3tyc+Ap4mnwhw4d4nb0AAAAQJBAwAMAQIhhBz4rKys5OVnxkBYHXp8Cnk6lwdvtdo+T13MIPbkpw0SuYMeMGzeO2xx8+eWXKj0RIkOoqtAzIg1+06ZNPBACPiqF6B944IHy8vLJkydH7IwAAADiGAh4AAAIJXa7nRN6PRrRfjnwumojR77S4HnZwmPcgR5QzAoOfFJSEkvK7u7ur7/+OrqT4aAVo9EYku+8SINncnJyxFc38g58R0fHggULiOirr74SyTUAAABAwEDAAwBAKKmvr+ey3h6NaL8EfG5ubhgmGDjqneTYls/NzTWbzRGdljYUAh4OPOmpmRwL+Ly8PIMhBLclCgE/atQoMY68A//2229z1kYkTwoAACCOgYAHAIBQot5NLTs7OzU1lWI5hJ48dZKzWq3cvl6fCfCEEHpP6KSOndVq5dYAIUmAJ6I+ffoIy51k8fNEVFZWxmsEEXPgX331VTGGgAcAABA8EPAAABBKfLZDZ2f+xIkT3vpv61/AuzvwJ0+edLlcpNcEeIID74khQ4aw0N24caP41kWehoYG/vKEMPlCbsLLBbzZbOY6FIcOHeKThpUDBw58+eWX4r8ofQ8AACB4IOABAMArzc3NF1544bRp00SPNJ+IPb2pEY6it9vtonCXAm4jZzQa09PT/Z5xOFHJgfe5bBF1FO4ut4UHHEXvcDi++OKLaM0hhD3kBKKOHcl6yDEVFRVEZLFYRNnF8PGPf/xDvkwABx4AAEDwQMADAIBX3nzzzVWrVlVVVb355psan+JTyvpMg2cvNDs7W5Ik/6YbZtQdeB7oVsDDgfeIHqLoQ9tDjhEOvCRJCgEffBq81Wq98cYbZ8yYcfToUZXdnE7n66+/Lt8CAQ8AACB4IOABAMArO3fu5IH6nbocn1JWvZOcy+XiZHK9laAnoqKiIs4fdhfwOu8hR27iEFXomalTp/Jg7dq10ZpDOAT86aefzutf5eXlisWa4AvRr169+rXXXvvggw9mz57tLRGGiD755JO6ujoiOu2003gLQugBAAAEDwQ8AAB4ZdeuXTzQHm0bpAPf3t7ucDhIfwnwRGQ0GlmfuxexE69atwIeDrxHiouLOTNiz549drvy/5LsAAAgAElEQVQ9KnMIbRN4Jjc3d+7cuSaT6e6771Y8FLwDL77/a9as+ctf/uJtt9dee40Ht99+O2cHwIEHAAAQPBDwAADgFeHAByDgvUlZ4cB7FPBNTU080FsPOYaj6Lu6uhQ1z0Q0gW4FfFZWlry/HQS8YOjQoUTU09Ozf//+qExAXDIhFPBE9NJLL1mt1nvuuUexPXgHXv5rMH/+/A0bNrjv09raunz5ciJKTU296qqreNWgra2N42sAAACAgIGABwAAzzQ2NgppoV3Aiz19OvAeQ+jF/b0OQ+jJex07/YfQS5Ikr5GGEHrBsGHDeCDiTSJMOELoVQjegZf/GthsthtuuKG7u1uxz+LFi3njlVdemZ2dzZXzgjkpAAAAwEDAAwCAZ+R6Rih5n3AVepPJ5C0GXj2EXucC3lsreJ+19/WAfG4Q8IKoC/jGxkYehLAKvQrCgQ9YS4tve1ZWFhFVV1fff//9in1E/PycOXPkJ0UaPAAAgCCBgAcAAM+I+HkiOnHihMau0ezOFRQUeKshr17ELiZC6MnNgRevRbw6HSI3eBFCL+AQeiKqrq6OygSEHo5MC4NevXrx6ljAIfTi2/6vf/3LZDIR0XPPPff++++LHXbt2vXtt98SUUVFxeTJkykUqwYAAAAAAwEPAEhorFbrypUrPWb/yvWM1WrVkrza2dnZ1dVFqkZ07969uZa7ugPP5p7e8CbgWYNlZGSkpaVFYVragAPvkeHDh/Mg6iH0kXHg6VQr+Obm5ra2tgCezt92SZIuvPDCBx98kIhcLtfPf/7zl07x0EMP8Z433HADX+wihB4OPAAAgCAxRnsCAAAQNdauXTtv3rzq6uqcnJyDBw8qXFmFnjlx4oTPyvBa2qEbjcaCgoITJ06o58DrsAo9ecmBdzqdLGl02wSegQPvkdzc3MLCwuPHj+/evdvpdLLgjCQs4NPS0iK2+tO3b9+tW7cSUW1t7ciRI/19OkfZ5ObmmkymBx988OOPP/7666+PHTs2b948+W6SJN1www08hgMPAAAgVMCBBwAkIs3NzTfffPN5553HNntzc/OaNWsU+7gLeJ+H1SLg6VQafEdHR3t7u/vEeKBPAe/RgW9sbOQOZLqtYMcIB16SpIyMjOhORldwGnx3d/eBAwcif3YW8JGpYMcEU4heBOPwt91oNC5atMjj12n69OmVlZWKM3oU8NXV1e6tGQEAAACPwIEHACQcb7755r333qswwL/66quZM2eK/7a0tBw9elS+g5Y6dtoFPBuAx48fV8RyCwEfQ0XsNL7qqCMkYkZGRuR9Zj0zdOjQqqoqItq1a1f//v0jeer29vaenh6KbPlDj4Xo9+/fX1RU5DMK4OTJk1wOQ3zbBwwYsG7dug8//FBeJiMlJeUnP/mJ+G9ubm5mZmZ7e7u7gP/4448vueSSlJSUbdu2DRgwIIiXBQAAICGAgAcAJBZ/+MMfHn74YR4nJyfPmTPnxRdfJKIvv/xSvptIgJckie/LQ+jAy1vBDxw4UP6QzkPoMzIysrKyWltb5Q68/nvIMUIiIgFegbwQ/axZsyJ5alHBLooOvMPhuO+++5555pnKysodO3aoa3iP3/aRI0f6DMUvLy/fsWNHQ0NDR0eHfPvbb7/tdDq7urrefPNNkTwPAAAAeAMWBAAgsVi5ciUPzjvvvG3btr3wwgusHDZs2MBOICPi50WN7pCH0JOnOnY6D6GnU2nwjY2NFouFt4hXHSsCHgnwCoSAj3wh+gg3gWfkAe2tra0zZ8585plniOjAgQM+34GA4028xe1v3LiRBx988IFfBwQAAJCYQMADABILDoxPTU397LPPBg8eLEnS2WefTUQ9PT0bNmwQuwkBP2XKFB6Ew4F3r2On8xB6OhVF73K5RIqBeGdiJYQeDryCKLaCj4qAFyH0W7ZsmThx4kcffSQe8tlsIuB4E4+F6Lu7u0W7ym+//Va8GwAAAIA3IOABAAmEw+FgzVxcXCz6tLOApx9G0YdVwKs48KwfJEnSuYAnWRq8eBU6d+BLSkr4Q9f5QkPk6d27N+vn6upqeSJ3BBCSNZI58H369ElJSSGiPXv2KNYsWltb1Z8bcLyJxzp2W7Zs4QKQRORwOD7++GO/jglii9ra2v79+/fv3z+A6okAACCAgAcAJBAnT57k2+Xi4mKx8ZxzzuHBV199JTbybb3ZbBbyPpIOfK9evZKSknyeLiooCtHv3buXiwiQrMmcPsnNzX3qqadmzJjxyCOPRHsuuoNTRTo6OiIsLaLiwEuSJEx4IiorK5s9ezaPfQr4gONNPAp4ET/PfPjhh34dE8QW7777bk1NTU1NjcjkAgCAAICABwAkECLqWy7gTz/99NTUVCJat26d0+kkovb29rq6OiIaMGBAnz59TCYThboKPQ+85cDr1n6nH7aCb2lpufTSSzlqYPLkyRMmTIjq1Hxz9913v/fee6effnq0J6I7ohVFH5UidkTUr18/HowfP379+vViFS98IfRaBPzHH3/scDj8OiyIIRobG3mAXAkAQDBAwAMAEgiPAt5sNo8fP56ImpqaWL2IQOJhw4ZJksTBvVoceD5+ZmameiFrIeAVDnx3dzcX0tNtBTuSOfCHDh2aPXv2nj17iKiysvLtt99Gb7bYJVoCPioOPBH96le/GjZs2M9//vPPP/+8qKhILJlpD6EPoQMvSdLYsWOJqKGh4dtvv/XrsCCGaGpqUgwAACAAcLMFAEggPAp4kkXRcxq80DCsathq6+rqam9vVzl4Q0MDqxFFZzh30tLSuBC6woHXfwl6kgn4l19+mat/ZWRkrFixIsICDISWaBWij5aAnzp16s6dO1966SWOvsnKyuLt2kPo/XXg+/Tpw+cSAr6trY3Xv/r373/ttdfyRtSij2PELzwEPAAgGCDgAQAJhDcBLxLdOQ3eo4AnXya84lnqsAnf2Nhos9nERv2XoCeZgOc2cgaD4Z///KfPJthA50TGgd+5c+f111//xhtviC0ihD6SRezc0S7g2YHPyMhQj7JxRyTeHz9+nANtNm/ezDk748aNu+SSS3g3CPg4RvzCi1h6AAAIAAh4AEACwXXXSKZCmYkTJ3L4t4oDTyEV8FzHzul0yo8p8m/17MAXFBQkJyeL/z7yyCOXXXZZFOcDQkJxcTEvG4VVwP/iF7/417/+deONN4qvPTvwBoMhNzc3fOf1iVgyU8+BdzqdvOIQWMMFjqJ3Op3cwUEkwI8bN27o0KGVlZVEtGXLFvfSGCA+QAg9ACAkQMADABIIbw58VlYWe8gHDx48fPgwaxij0Tho0CCS3ayr17ELwIGnH0bRx0QIvSRJYvnjxz/+8YMPPhjd+YBQwYXoW1tbxTpXyOH4fJvNtmLFCt7CAj47O9toNIbppFrQ6MA3NjZykblgBDydasG4YcMG/u8ZZ5xBRGzCu1wueV96EE/Ebgh9fX39//7v/6JLAgA6AQIeAJBAeBPwJEuDX7VqFSep9u/fn61mUa1K3YEXycPaHXj6YR27mAihJ6IZM2YQ0YQJE1599VXurA7igHBH0ff09LBwJaJly5YRkcPh4O981AsoaCxiF3APOUYIeG5ywQ68wWAYM2YMEV188cX8KKLo45XYdeDvv//+Rx555Ec/+hHq5wOgByDgAQAJBAv4rKys9PR0xUMiDX7hwoWcmCr0jF8h9CkpKaJDlQoeHfiYCKEnoqeffnrnzp1r1qzxNw0Y6JlwC/gDBw7wlUVEVVVVra2tTU1NvCW6CfBElJGRkZSURL5C6EUMTpAOfF1dXVNT04EDB4hoyJAhmZmZRDRlyhSucrd69Wp5aQwQN4gl2paWFnEtxAT8m2Cz2XjtCQAQXSDgAQCJgtVqZffA3X4nmQP/9ddf88AvAd/S0sKrA4MHD2YloI7HTnIxEUJPRJIkDRs2zGw2R3siIJSEuxD9/v37xdhqtb7//vvRagLvjiRJ3BgirA58RUUFDw4dOrRlyxbuVTlu3DjemJaWNnnyZJ7DunXrAjg+0DPt7e1iXcbhcPgsl6grROxMzMUOABCXQMADABKFY8eO8R2zooIdU1ZWJvwxxi8BL0xLTiT2iQihj7kceBCvhMSBP3jwYFVVlceH5AKeiJYtWxatHnIe4Sh6jQI+eAd+06ZNPOYEeAa16OMY8fPOxJASttvtYqE5hqYNQBwDAQ8ASBRUEuAZYcIzgQl4LQnw5KuInc5z4EFcUlZWxrHcAQv4kydPjho1atq0aU8//bT7owoB/9FHH4lwXD0IeK5jZ7PZOjs7ve0jQugDc+CLi4tNJhMR1dXVbdmyhTcKB54g4OMahfSNoU5yR48e5dqNBAEPgD6AgAcAJAqitrY3AS/S4IkoKSlp8ODBPM7Pz+eoeJUq9P4KeI9F7GIlBx7EJZIkDRkyhIgaGxvVyz14Y/Pmze3t7US0evVq90eFgOezdHR0LFmyhLdEPQeetBWiD9KBT0pKKi0tJaJjx45xCXqTyTR69GixQ79+/fhnZ8eOHYcOHQrgFEC3xK4DL897j6FpAxDHQMADABIFvxz4iooKLihFRElJSXl5eaTqwPtVgp6I8vLyOIccIfRAPwQZRS9u9D0+nQW8JEn33nsvbxH90vTgwGspRB+kA0+nouhFTPKIESNSUlLkOwgTHi274ozYFfAiAZ7cXgUAICpAwAMAEgWfAn748OFCOSt0OBtubW1t3d3dHp/LisVsNg8YMEDLZCRJ4mOeOHGCM/MJIfQg2oRKwNfW1nZ1dckfcjqdXHS9uLj4qquu4khyEZerBwEvHHiVQvRBOvAkS4Nn5PHzzPTp03mwfv36wE7hFxaLRXwKIKwoFHsMCXg48ADoDQh4AECi4FPAGwyGiRMn8tijgCcvJnx7ezvf4gwcOJCViRY4Db6np0fcErFySEtL4/7zAESYIAvRi6hvp9O5e/du+UOHDx/u6ekhov79++fk5EyZMkX+qK4EvE8H3mw2B7zEJgrRM/IKdszIkSN5oHgDw8HatWsLCgoGDx7c1tYW7nOB+HDgY2jaAMQxxmhPIPawWq3CLgNExL1M+c4MxDR2u50H8dqCWNyFFBQUePvGnnXWWe+//z4RDRs2TL6PEBiHDx8W9ecE27Zt45+FIUOGaL8WRBTuoUOHMjIy6NQdXlZWVkguKJfL5XA4cG3GAcIjtdlsYf0DJOJHduzYEcA35+DBg2K8ffv24cOHi//u2bOHBxUVFT09PbNmzVq1apV4NFTf+WDgAn5E1NDQ4G0yvH5XUFBgtVoDO4uiBcaoUaMU58rLy+vVq1dbW1t1dXW435PHHnuso6Ojo6NjxYoVP/7xj8N6rnhFfm2qt3YXTRPFf6P+nddIbW2tGKtcHfEB/m7GDeJ6tFqtMRFnZDQatTQh/u/OYZ1KXNLe3g4Br8DhcMSr5EtMLBaLxWKJ9ixCDwt4SZLS0tK41JY711xzzfbt21NSUqZNmybfR4TW19bWcgkuOVu3buVBv379vB3ZHc6rJ6KampqysjKbzdbR0UFEWVlZ2g+iDq7NOMNbBkeoyM3NTU1N7e7u3rlzZ3Nzs9Ho302CvO7atm3bZs6cKf4rYvJLS0vb29unTJliMBjEDVZycnKovvMBwzUpiOjEiRMeJ9PW1sY/jPn5+QHPVh5rkJyc3LdvX/dDDRgwYPPmzS0tLfv37w842d4nx48fF7UGN2/efPHFFyt2sNls1113XU1NzcKFC+WV9oBHFDkj7ihqoJ48eTLq33mNyK/rhoaGWJl2wPT09EDAxxM+r02dkJGRAQEfRpCbqqC9vd1gMKSnp0d7IiBYuru7+fY0PT1d3MvGE8I9U8lfzcnJWbx4sfv2srIyHnR2drpXmBMGxZgxY7TXnxPZsLfffnt6eroQM3l5eSEpYtfW1mY0GtPS0oI/FIgu4trMyMjQnqMRGMOGDdu0aVNDQ8N999332muvab+fcLlcIkuFiGpqauRfY9FtgStN5OTkTJgw4euvv6ZTOjZ0ryBARGSNzWbzeAGKrvVFRUUBX6HyqITRo0d71OcjRozYvHkzER07dkz0wgg5CxcuFK7Uvn373F/RqlWrPvvsMyJ68803FSkPQNDV1cViLzMzU33BS9GesL29PVaKlcorrba1tcXKtAOjtbU1OTlZUVoSxCKdnZ0cKtWrVy/tf8iiiMHgR2I7BLzfxMSXIJJIkiRJEt6WOED8dhgMhvj7QDs6OjjPs7i4OIBXJ27u6+vr3Z8uEoZHjBih/eBCtCjy6gsKCkLy/uPajBskSeJBBK7NBx544Oqrr3Y6nUuWLDEaja+99prGu4rjx4/Lbavq6mr5VGtqangwcOBA3n755ZezgM/Ly9PDt1TIkvb2do/zEQK+sLAw4AlXVFSI0IMzzjjD43GGDh3Kg717906bNi2wE/lk0aJFYrxjxw73mYhO9fv379fDB6RPtF+biuKIzc3NMfGu2mw2+V+oWJl2MODvZnwQyb+bkQdF7AAACYHPCnbqqBex4/Bgo9E4aNAg7cecNWvWuHHjcn5IaWnprbfeGsAMAQgJV1555cKFC1m0//Of/5w7d656Zq9A0be8pqZGnokjmsD379+fB5dddhkPAq7oHlp8FrELvoccEZnNZrEa6F6CnhECPrBSglr45ptv5Aevra11f9UcBUCyxRcQDDFaxO7IkSPyX4Curq64zLADILaAgAcAJAThE/BdXV0cQt+/f3+/qsf37t17w4YNTT+krq5O9JECICrceOONL774ItsXr7766rx587RUfpH3miIih8Oxd+9e8V8W8Dk5Obm5ubxlwIABN910U0pKyrx580I5+0Dx2Qc++B5yTGVlJQ+8CXhRZSN8hehfe+01HnC2lMvl2rFjh2KfTZs28UB0EADBwIrdbDbzJRArAl5egp6JlZkDEMdAwAMAEgIh4BVVoDWiIuB3797NBoWi8xwAscvcuXOff/551vALFy684447fD5FOPC9evXigShc19jYyPHD/fr1kz/llVde6e7u1omA99kHXjjwQQr4OXPmGI3GKVOmePvF6N+/P+vqMDnw3d3d//73v4nIZDKJN/+7776T79PU1CRKezidzgMHDoRjJgkFO/BiDau5uTkmKiIrFuYIAh4AHQABDwBICIJ04AsKCljMKCoJk0ylQMCDeOKWW2559tln+Wv//PPPb9iwQX1/caMv0rbFpeEeP69DfIbQi8W7ICvD/+xnP6utrV25cqVI0VRgNBq5n9+RI0fCUfF7+fLlvEhx8cUXiw9LIeA3b94sl5fiEwSB4XA4+HslBLzYonPEdS3KZ0LAAxB1IOABAAnBkSNHeBCYgDebzVzjyt2BFypFZK4CEB/cfvvtv/jFL3j85Zdfqu8sHPiLLrqIB7El4CMWQk9Eqamp6jvwj4nL5QpHFL2In58zZ86oUaN47C7g5f9FGnyQtLS08IJIbm6uaCAaE0pYhNCLhggxMW0A4hsIeABAQhCkA0+n7tqbm5u5MYkADjyIYy688EIeiJrk3hBO3fTp09lbFhHgMSHgU1JSuIaFzxD68PVmF4QqDd7lcr355psrV64UW+rq6j755BMiKigomDFjRkVFRWZmJhF99913cstdIeDhwAeJEL3yMhCNjY3Rm5FWxHUt1noU1fgAAJEHAh4AkBCESsC7XC5FFD0LeIPBIO65AYgbxowZw4OtW7eq78kOfFpaWkVFBbdI/P777202G8WIgKdTUfTqDrzBYCgoKAj3TMSPSZBp8IsXL549e/all146a9Ys7ua9aNEirtlx3XXXmc1mSZJGjBhBRC0tLfJsZwj40CJEr1zAx4SVLRz40047jQcxMW0A4hsIeABAQsAC3mQyBeyeeaxjZ7FYOLi0srLSZ1gsADFHXl4eq/Hq6mqV9lE9PT18XfDOHAFus9m+//57ih0Bz1H07e3tHjvn8cpdZLrWi3ycIB34PXv28OC9994bMWLEG2+88frrr/OWOXPm8GDkyJE8EFH0ra2t+/btI6Ly8nIOpvAYQt/a2rpy5crOzs5gZpggCNGbm5sbWwKel3UyMjJEBcqYmDYA8Q0EPAAg/nG5XCzg+/Tpww2uA0AIeLkDv3fvXofDQYifB/HL6NGjichut7t3GhMcPnyYA7BZwIvLgeNTWMCnpKQE1gMiYrAD73Q629raFA9ZLBZ25iPTtX7w4MGKNITAkNfAa2pq+slPfsJLKmPGjBGGqruA37JlC3+aZ599dmFhIRHV1NS4L2rMmDHj0ksvveaaa4KZYYIQow58T08P/70rLS2NoWkDEPdAwAMA4p/m5mY2D4PRD8K6lzvwSIAHcY+IoldJgxcV7MrKyuiHAr6rq4uDtysrKwNePosMKnXsIpkAT0QZGRn8Tu7fv5/TEAJDCHhRgYwR9jt5EvAifn7s2LEcNGGxWEQWEtPU1LRu3Toi+vbbbwOeXuIgBHxsOfBHjhzhpZyysrIYmjYAcY+u/5QCAEBICLIEPeMxhB4CHsQ97MBTQAK+urr6wIEDrAF0Hj9Pqq3gQ1iCXiOcBm+z2TiaPTCEgF+yZMkLL7yQkZFBRGlpaddee63YR4uAJ7coetFnLlb6mUcXj0Xs9K+ERQI8HHgAdAUEPAAg/gm+gh35EvDoIQfiFS117ET9M3kOPBHt2rUrVhLgSbUVvHDgIybgQ5IGLwR8r169brnllu3bt8+fP//999/Pz88X++Tm5paWlhLRnj17uMUGC3hJksaMGSMynxV17ITIt9ls4WhWH2fIQ+hjqI2cuK7lDjyq0AMQdSDgAQDxT7gFvCRJEPAgXikvL+d79+3bt3PFB3cUAj47O5uvtb1794o6avoX8Coh9OKqj0wIPYWoEL2Q1twrrrKy8pFHHpk8ebJiNzbhrVbr7t27Ozo6+CPr379/dna2+NS8CXiKBSEadTwWsdN/GzlxXZeWlmZkZJjNZsLHDYAOgIAHAMQ/YRLwGzdu5Hvrfv36cWwqAHEJR9F3dnZyCTR3FCH0dCqK3mKxrF69mrfoX8D36tWLB3oIoQ+tA88C3hvyKPqtW7dyvbqxY8eS7FNThNBv2rRJjGNL0dXU1PTv379v376R7I0Xo0XsRAg9X9c8c/1PG4C4BwIeABD/hETAC+dNBNM++uijPLjpppuCmB0AesdnHTsW8JIkKQQ8EX3xxRc80L+A108ROwqRA9/R0UFERqNRvcmlXMDLE+CJyGMIfWtrq/y/MaTo7Hb7T37yk5qamrq6uhUrVkTsvPIidtnZ2VzNUf/vm9yBJ6KcnBwiamtrs9vt0ZwWAAkPBDwAIP4RAj6YKvSpqals0LEXt3Xr1pUrVxJRTk7OHXfcEYppAqBTfAp4vtEvKCgQQlEIeE6rNhgMFRUV4Z5nkKjkwEfege/Tpw8bnnv27Am4Shw78D7jg1QEfO/evfl3T67YRZ85Rv9CVPCHP/zh66+/5nFDQ0PEzisvYpeUlMTfNP2/bx4deJfLpUiDb2homDJlynnnnSfvsQoACB8Q8ACA+CckVejp1L17Q0ODw+F49NFH+Rb2nnvuEZG3AMQlohC9xzp2zc3NLBSF/U5ufRnKysqSk5PDOccQoKWIXcQceDplwre3twsd5S/8uajHzxPR0KFDTSYTeRLwdMqEb2xsFG+LPH6eYkGIMt98880f//hH8d9IpqCz4hVp5KyE9V/AnxfmMjMz+dLwFvz/1ltvff7552vWrHnjjTciP0kAEhAIeABA/MMOfGpqKkcABgwLeKfTWVVVtWzZMiLKysq66667QjJJAHTL4MGD2Vr36MCLBHiuYMcoyjqKSGw9o6WIXcQceAo6Dd5ut3d3d5MGAW82m7lRfF1dHRfmrKioEMXS3evYySvYUYwI+I6Ojuuvv14e+x1JAc9vkfgDxErYbre3tbWpPOu5556bMWPG+vXrIzBDdywWCwcpiIU5b4XoDxw4wIMdO3ZEcIIAJC4Q8ACAOMfhcPDNd5D2O8nu3e+77z52Tu68805x0w9AvGI0GjnKuqGhwd0NVpSgZ/Lz8+Vm9YABA8I/zWBR6QPPDnxWVlZKSkrE5hNkGrzGCnaMiKLnRgPCfidPafAKAR8TfcXuueeeffv20al0borguoPFYuGVFCGAtXSSa21tvfvuuz/44IOHHnooApN05/Dhw/xnTrxj3hx4sYSX4AJ+8eLF1157rbc8IwBCCAQ8ACDOOXnyJLsuIRTwfJuSmZl57733BnlMAGIClTR49xL0jDyKPiYceG8h9A6Hg63ISMbPkxcHftWqVbfddtv27dt9Pj0wAc/IBbyiEH1HR8fevXuJSJIk3q5/B37ZsmWvvPIKEZnN5rfeeos3RsyBlyfA80BLJ7m6ujpuByBquEQYRQI8yeav+MRra2t5sGvXLp0nBYQPi8Vy4403Llmy5Je//GW05wLiHwh4AECcE5IKdozi9v32228X92EAxDcqAl448CoCXv8l6Ml7CH19fT1LqUjGz5MnB37p0qUzZ8584YUXLrnkEp++d8gFPDvwW7Zs4XdjxIgRvF3nAv7o0aM333wzjx999NGzzjorPT2dIijg5T3keKClk5wo3RLJYnty3K9rb9MWAr6jo0OME43m5mYu2BmtBReQUEDAAwDinJD0kGPkt+/p6en33XdfkAcEIFZQqWPnMQeeYlDA9+rVi11lRQh9VCrYEVFFRQVH7LMDv3z58tmzZ9tsNiI6cuTInXfeqf70UAl4RQi9iJ8///zzeaBzAf/nP/+ZNfDkyZPZHY1wP3NxIiGAtQh48ZerqakpKra2cODVQ+gtFouoEEEJHEXPLRspRjJKQKwDAQ8AiHPCJOBvvfXWgoKCIA8IQKwwatSopKQkUg2hVwh4eR27mBDwRqORvVmFA+8tRyDcJCUlDRo0iIiOHz++aNGiq6++mtU788YbbyxdulTl6UJR+GwjR0R9+/YVAQglJSXy37q+fftyjXoOoY85AWOjstYAACAASURBVP/999/z4Omnn+YG7JyC3t3d3dXV5fPpR48efeaZZ4IxloN04O12u3tRhgig0YGvq6uTry/s3LkzUhPUF2K9DAIeRAAIeABAnBOqHnIkE/BpaWnIcwMJRWpqKkd019bWKu5Q+UbfZDIVFhbKtwsHPj8/X6SX6xwWsQoBL4psR76VvVgEmTNnDgfozpgx489//jNvvPXWW1U6b/vlwEuSJELiTz/9dPlDRqOxvLyciOrq6qxWKwt4SZLOPPNMXhrQuYAXa7hiFUnUkNMSRX/VVVfdfffdU6dO5fc/AMT1EpgDT1GKohcC3t2Bl/8CKJY24MBbrVYxBiBMQMADAOKcEDrwQ4cO5VvhO+64I8LZsABEHY6id7lc8ih6h8PBa2SlpaVsbwoKCwtZf06aNCmyMw0cXmjo6uqSqzUh4CsrKyM8H5EGzybnRRddtHTp0l/+8peTJ08movr6+nnz5nl7rl8CnmRR9PL4eYaj6B0Ox65duzghv6KiIjc3N8Kx6IHBfwKysrI4vIL8FPD8ba+pqXnxxRcDm4BKETstDrzGeYYc9yJ2Hqct4lOYhHXg5aIdJjwINxDwAIA4J4QCPicnZ+PGjStXrnzssceCnhcAMYbHOnZHjx7lLg+K+Hnms88+W7p06aJFiyIzw+DxWIj+4MGDPIiiA09E06dPX7ZsWXJyssFgePXVV1mWL1++/J///KfH5/or4M8991weTJkyRfGQ8K6XLVsm7zPHis5isWiJRY8KVquV7Wv5778W/cw0NDSIl/bHP/4xMGfV3YHX0kZOJw58VlaW+P54rEKvcOB3797N35BEQ1xuBAEPwg8EPAAgzgmhgCeiQYMGzZw5k5OBAUgoPNax81aCnunTp8/ll1+uJQdbJ3gsRB9FB/6MM87guIZp06YtX75cdKGvqKh48skneXzXXXcJs1SOvwL+mmuuWb58+apVq4SSFwgB//bbb/OAw+y1K+FocezYMQ5ekP/+a3fgxdebiE6cOPH3v/89gDkE1kZOLuAj78B3dXXxSeXXdXZ2Nn8bPQp4vsy7u7u52GGiAQceRBIIeABAnMO3QdnZ2SJ+EgAQAB4deG8V7GIU4cDLy4axgM/Ly+vVq1eE59OvX7+PP/54wYIF7733XmpqqvyhuXPnXnzxxTxVjxXp/RXwRPSjH/3oggsu8DgNHoiGdnIHnnQs4D0u4AYm4InoiSeeCEBLB1DEzm63y0u7R96Bdy9BT0QGg4FXuDyG0E+bNo0HiRlFDwceRBIIeABAPNPd3c23PsE3gQcgwcnNzeViZrt37+7u7uaN0arQHibcQ+ibm5t5HPn4eeb888+/7bbbhPcukCRp4cKFaWlpRLR27Vr3JwYg4L3h3kQgVgT8sWPHeBBYCL34evP739ra+qc//cnfObiH0Ofk5HDDQm8TOHHihDwQPfIOvHsCPMMvoaWlRVSeZwfeaDROnz6dtyRmHTs48CCSQMADAOKZQ4cO8X0GCw8AQDBwFL3dbl+3bh1vERZlfDjwIoReOPBRjJ/3SXFxMevS1tZW91bhIRTw/fr1Y8HJlJWVcRNNj2XJdUWoHPgHH3yQM6cWLFjgMWFBBfcQ+qSkJF4q8ibg5RXsKBoOvHsJeoY/cbvd3tbWRkROp5PfjeLiYpFiAwdet+tZIG6AgAcAxDNRrD4FQPwxbtw4HsyePZtv0+NMwLs78Dr/DeEVB7vd7l5fza8+8OpkZGT07t1b/Ff0mfNY1UxXhErAX3DBBXPmzCGi7u7u3//+937NgVc3hGhnWAk3Nze7r7zQDxPgKaoh9B4deDr1iR87doz7NZSXlw8fPpxXeRJTwMOBB5EEAh4AEM+I+jpw4AEInltvvZXrotfX10+bNq26ujruQ+j17MCTp5ABQQgdePphFL3oM6f/EHqhhIuKisTGAAR8375958+fz4H0r7766t69e7XPgd+crKwseZ9FfutsNpvcuRUoHPjIh9B7K06pWLKR/4XNyspiu37v3r02my1yc9UHEPAgkkDAAwDiGZ27ZwDEFnl5eZ9++ungwYOJ6MSJE9OmTdu3bx8RZWVlyd3F2AUC3huxLuADy4FnHWs2m/v06dO3b9/bbruNiOx2+8MPP6xxAi6Xiz8acVJGvZNc1B149RB6chPwHIAzfPhwIrJarX4tcMQHKGIHIgkEPAAgnoEDD0BoKSoqqqqqGjhwIBEdO3aMb1vjI36ePLWR0/kiYMQEvChETzEo4CVJkjvwOTk5bIarO9sOh4Od8JKSEt7/N7/5Db+Zy5Yts9vtWibQ1tbGewrvmlHvJKcQ8HorYkenPnERgMN/YUeMGMH/TcAo+tA68Hv37p0yZcrcuXOdTmeQhwJxCQQ8ACCe0fnNNwCxSHFxcVVVldySjY/4efLURo4deEmS9Pkb4lPAm83m5OTk4E8kPu7i4mIhhmNFwOfm5srL+CclJfH7pi6Mjx07xtpbfL3z8/NPO+00IrLZbBpfsnsJesV/PR5HhNDzZ9fY2OgxVT588Np3Tk6Oov2qFgeeErIQfWgd+Keeeurzzz9/5ZVXPvnkkyAPBeISCHgAQDzDAj41NVVegQkAECSlpaVVVVUiqjxuIlwUIfQul4t/QwoLCxVt2HWCTwEfEvudiDjmgmT2O+lewHd3d7OUksfPM6KGnIrD6bFAo/b8eca9Cbx8AqQaQi9J0pAhQ4jIbre7f77h49ixY/z9Fx+6QN2BFwIeDnyQR6uurubB6tWrgzwUiEvCKeBtJ7atevuV5196c9Wmg62aAo0AACCE9PT0HD9+nIjKy8vlPZAAAMHTt2/fqqqqoUOHZmZmXnvttdGeTmhQhNCfPHmyq6uLdBzCEzEBP3bs2PHjx6empt58881iY7QE/CeffDJnzpzNmzer7+axCTzDOtzhcIhcCXc8FnLz9yW795DTchx24PPy8kpKSnhLJKPod+/ezQOuWClH0ThQ4cAPGzaMcw3gwAd5tD179vDg008/DfJQIC4xhuAYrrZdKxa+/sE3O1KuevXpq3pLRESOuuX3Xv6zBZuanC4iIil90FV//fcrt44OtpMJAABopq6ujt2VuLEHAdAVFRUVO3bssNlsIQnS1gOKEHqdV7Aj7wK+p6eH+3uFSsCbzeZvvvmmp6dHHouelpaWkpJisVgiLOCvvvrqpqamzz//fM+ePSrfPY8l6Bm5ka6Q1oKQCPgAQui7urr40ywuLhbzbGhoGDBggJYzBo+wf9n/l+OxCn1+fj5H2qenp1dUVNTU1Ozfv99isci/KnGPwoF3uVwB2wYtLS3sPRDRtm3b6uvrCwoKQjBFEEcE7cA7j6645cxxl//iLy+//cnOehtn6DhrX7/t5ws2/le9E5Grc+9bd86ct/RERDN4AACJDRLgAQg3BoMhbtQ7EWVkZCQlJdEpB17/vyFCwCtMvxA2gRdIkuQuyUQseqjO4pPOzk6hHl944QWVPT2WoGe0RMJ7FPD+htAH4MCLBPiSkpL8/Hy/ThcStDjwTU1Nzc3NbDvLl8g5it7hcIiDJAhyAW+32z12B9SIsN+JyOl0VlVVBTUzEI8EKeBdTSt+PW9hdbeLJHNORWXvZImIyL715b991OCUjBVXPP3pjuqN7z42s9QoOY689fDfNyZcY0gAQNRACXoAgF9IksQmPAv42HXgQ1uCXgVWdO3t7Wz4a+c///nPm2++GUBtNrmUfeyxx1SUkoqA12KkiwTvcDjwKm3k5NMWAj6SneRUHHj5y/f4F1YUok+oKHqr1drT0yPfEsySllzAE6LogSeCE/CuxpWvLj/pJEPRrOc21e1ZeGW+RET27f9ZvsdOhpz/+dOLd04dPuT0Wb9Z/NKc4iSyf79s6RYkwwMAIoT+3TMAgN5gAc96WPyGQMB7Q5EUrZGPPvroiiuumD179jvvvOPvGeWKt76+/m9/+5u3PWPCgXc/jnza8hB6LacLCWyem81meacJxqOAlxf5S8w6dnL7nQmhgEcheuBOcALevnPTNouLjCNufvTmEaf6TDgOVn26105SxtQrLsr7b/pH5tRrZhUayH5w6/YmRNEDACIDHHgAgL+wgLfb7Z2dncKB1+0ioJCF0RLwiqRojWzatIkH+/bt8/eMCsX75JNP1tfXe9zTZxE796PJYQGfkZEhN88DduBjJYS+vb2dJzBgwACjUVkqy2Qy8TcKDrwc9zCQkAh4zn85cOBATU1NwEcDcUlwAt7Z3NjkJMk8aNgAcYm7Wr9e+52dJPPpk8/+vz8axqKywiQiZ2N9k9d+HQAAEFLgwAMA/EVeiJ4FfFJSktxj1BX6ceD9EvBiZcTduvSJOBFXK2hvb3/sscc87qklhN6bMO7p6Tl58iT90H6nINrIKULoc3JyuMiZegh95B343bt3c16DewI8I6oeKHrIMYMHD2bZDwc+4KNxBIQkSddddx1vgQkPFAQn4KXklBSJXI6urh7hq3d//dk33S5KGnzuOYX/d3RXR2u7i4iSktB5HgAQIVjAJycnFxYWRnsuAIDYQBSib25uZg+2tLTUZDJFdVJeSUtL4yKCinZoERPwKrncKghHkbv0+YWQsvPmzWOt+Pzzz4sVATnsJBsMBvc/AT6nXVdXxzpWsXbj74KF0PkKAW80Gnv16uXxOIcPH+ZBaWlp5B14kQCvLuAtFovYUy7gU1JSOPD+4MGDwRRyiy1C6MA7HI79+/cTUXFx8WWXXcYbkQYPFAQnp5Mq+pcnEdm2fbn+1NJT+xfLVjU4KanywouG/V/gjbNu3dcHHSQZC/rkQ8EDACKAzWZjH6Nv377cmRYAAHwiBPzOnTu5MJXOQ3h4wgrBoPMQeiHgA3DgxSsdP378jTfeSERWq/XRRx9135ND6PPz893XX3wa6SIBvrS01K8nKhCREe7N6lgJu79vIvK/qKgomCJ27e3tAbT3E9Xj3SvYMeKFbN26lQeKNQ6Oone5XELhxz3iayxacgQs4A8ePGixWIho8ODB5557Lh+wqqqKe+ICwAQp4Aecf0F/IzmPLv71L/+9u83ec+Sjh3/zxlEnJZXPuHSs+LW01Cx58Kl1VhcZh4w/PSvArogAAOAPhw8fdjgchAR4AIA/iKB0oU90W8GO4Qm3tbXJK7rrOYTearUKk7mzs9PfMwrlnJeXN3/+/NTUVCJatGjRrl275Lt1dHS0tbWRp/h58kfAK0Lo09LSuJeextfLuyUnJ6elpSke4rfOZrMp/FsOHDCZTL17987NzeVIe38F/IEDB/r27VtcXLxu3Tq/nqhSgl4+bToV6p+eni5WGZgErGMnBLz4tgQs4EUC/ODBg9PS0s466ywiamhoED9HAFDQbeRM4275xfRcg6t7x0vXDMtNzeh7ydPbLC4p/azb5p1pJiJX0+r//dH4waOuX3LIQVL6xBtmD00KybwBAEAdJMADAAJAOPDijlnnvyEs4B0OB+tVJhx94D0SgIA/dOgQr65ScDnwubm5paWld9xxBxE5HI7f/e538t1UEuC1TFsIePfyB96cc4+wkFPEzzMew/hdLhc78IWFhQaDwWw2c6S9vyH0n3zySUtLS09Pz0cffeTXE0UCtk8Bz7i/P4MGDeKB+Csc94glGCHgA4h9YOQCnojOP/98/i+i6IGcYMNKDeU3vfKve8ZlG4hcDrvd6SLJWHT+H567Y4iRiMjVUf3ZRxsOdbpISiq+5K/P3zIA+h0AEBFQgh4AEABCwG/bto0HMeHA0w/r2OnZgZeX1A7AgZcLeCK6//77WeKuXLlS3otepQQ9EWVmZprNZvLfgadTwrujo0PR+tsdu93OH4R7/Dx5KaTX1NTEEdRi2ny6xsZGeYSFT8RfQL+se5vNxgnYZWVl6enpHvdRCHj3v7DixSrqMsQxYh1KLGeExIEnomnTpvF/UccOyAk+L9RQePGTX1VvfO/1vz109+33/e7JN77c+uE9pyWfetiYWTLinJk//fULn234z63DktWOBAAAoQMOPAAgAISAFxauzn9DEk3Ay0Po+d/zzjuPiHp6euRhxuoOPMmEscdHRYl1dwGv/SU3Nzez6vbowHs8jryHHA84QN1ut/ulh8X8/RLw+/bts9ls5L2CHWkQ8OIKirqAdzqdV155ZXFx8fvvvx/WE7k78AELeEUNgjPOOIMv8C+//NLnghFIHJQNHgPDXDhmxk/HzPip2wOGvre9V3NbSM4BAAD+AAceABAAQn4I4MCrIOScdsUirxgfsAMvSZJwesePH79y5Uoi+vbbb8ePH88bfQr43NzcY8eOtbe3W61WduPl+HTgiaixsVH97fXWBF5MQP6KvE1bXsdOfNY+EX8B/Yq995kATxpC6PUj4Pfs2bN06VIievHFF2fMmBG+E4XcgU9NTeVDJSUlTZ48efny5V1dXevWrZsyZUoo5gtinuAceMf+j/7fc889t+CVqlrURgQARIx777339NNP37Bhg8o+cOABAAGg0Ehms1l4ofokugI+gCr0cgc+gBx4VqRZWVncQ46IJkyYwIP169eL3YQSLioq8ngc9U5yLODz8/O9FZ/z9kQ5YgftAt7dgQ+sFXxgDrywf1UceMVr0bMDL24DAs5I14i43IqKivhrGZiAb21tPX78OBENHDhQdM9RRNE7HI4VK1bMnDlz0qRJiVNlACgIzoG3b33tF3f9u4syry25bmp5SojmBAAAKlRVVf39738nor/+9a9vvfWWt934D5vJZPJmvwAAgDsKB17/fSijK+B79eplNBrtdntkQuhdLpd7WbgzzjhDkiSXy/Xtt9+KjRpD6ImosbFR0Si+ra2Nxae7/U7+dJITKs5jCH1BQQEPOO3c27QDaAXvcDhEnf/ABLx2B17PAl6sYoR7JmIdqlevXtnZ2Q0NDYEJeEUCPCPq2L3//vvJyckvv/yy+HBffPHFxx9/PPB5g5gl2DZyg/snEbksB/YdhgUPAIgITz/9NA9OnjzpbR+Hw8E+RllZWVISimcCALSicOB1Hj9P0RbwIpRdu4APJoS+vb2dk7SFiiai7OxsFjzff/+9mIaWEHoeuAtjlQR4Cp0DP3HiRB4sX75cbBTTDsaBP3r0qN1u53FgIfTac+DdQ+gzMzN5zSvqAl7kEcgvjXAgb/rAn3VLS4tfRQcZjwJ+yJAhpaWlRLRt27bf/e53Qr2TrFIjSDSCE/DGUbc+eEWRgewbX1/4rd9ZTAAA4C81NTXvvfcej1XuS44cOcI3eUiABwD4hcKBj1EBH7E2cnRK0bW2tormcCo0NzfLzcnu7m6n0w8LSPzsK2Qkp767XC6RWsVKOCkpqU+fPh4PpRJCr5IAr/5EBeoOfL9+/caOHUtE+/btE+X3RAh9MA68EK5E1NPTo+gz7w2Xy8UOfG5ubu/evb3tJn8tRqPRPcFEkiTuCxB1AR8xB16+XsYCXtHWUSMiAkIu4EkWRc+MGTOGB/X19QHMFsQBQUaFSYVXL3z/b5cU084nrrjq8c+OoDwiACCsPPfcc+JuT+XmCQnwAIDAUAh4/f+GqDjwKSkpJpMp3BNgRed0OrX4nPL4eSJyuVx+mfCKHnIC9zR4Nif79OnjLQhLJRJeXcCrWPfeZuvRgSeiK6+8kgfvvPMOD9wDBwJw4IVw9euJhw8f5nUfFfudfvjOl5aWenx7+SKKuoAXCxkdHR1aVpcCxt2Bp4AS74UDr0hhmDt3bmpqanZ29p133rljx46qqireDgGfsASXA+88sfXTLScG3/b4/c6H/vrRb6cNfHbUOZPPHNG3ICsj2dPPpXHYFb+6fCiiWQEAAdHe3v6Pf/xD/FflryNK0AMAAiMlJSUlJYV7cVPMOvAs4MMdP8/IQ8rlke0eUQh4Iurs7NQ+T0UPOYEoPs9p8K2trbwuoFIDJWABH4AD703AX3HFFb/97W+JaOnSpX/4wx/olAOfkZEhFpLkVejVTyeQO/D8RC1fYy0J8ESUlpYmLhD3+HmGJ2+1Wru7u1NTUzVOO+SI98HlcrW2tnqMgwgJ7g48ETU3N/v768ECXpKkQYMGybefc845jY2NRqOR1+NcLpfZbLZarRDwCUtwAt629rFLr3rbIv7ffWzb6iXbVnvdP+WqIfdCwAMAAuT111+Xr+hbLJbOzs709HT3PeHAAwACJisrSwh4/f+G6ErA+9xZngDPhMSBP+2001hVsoD3WYKeVI10IeA9CtQAHHhv0nHQoEGjRo3avn377t27d+zYMXjwYK7tIl93CCCEXuHAa3yilgR4JicnhwMcvC2Ry+vYRUvA22w28TXgmYRPwLMDbzAY0tLS5ALer4M4HI59+/YRUVFREecgyJG/jZIkFRQUHDlyRKUSEIhvggyhN5iS/cKk60KuAAAd43Q6n332WR77NEDgwAMAAkYeRR+LDnx3dzfXMNOhgBcOvJi2XwLemwNvMpk4Mbi+vr6mpsZnBTsKIgde++sV0/CWh09EV1xxBQ/eeeed48ePc46YPLE8gBB6dwdey7M0OvAkewd8CvgA8sBDxZEjR+Rh82GN52cBn56ebjAYxJvjr4Cvra3ldUNFArxHuIVBV1eXv2UgQXwQnKBOvvyNFosftLxxeXKIJg4ASDA+/PDDvXv3EtGYMWOmTp3KG70ZC3DgAQABI+RHamqqSjUvneAu4CNWgp7xK+lXCPgRI0bwICQCnmRp8N9++617N3V3VELoWQAnJSV5fLp2S5yPYzAYVKZx9dVX82Dp0qUep52fny9JkpbTKc4r0Cjgd+3axQOfDrxPAS8M5CgKeMWbENZC9PwyuWBkwA689gUUkvUgRBR9YgJHHAAQGwj7/a677vLpwLOANxqN3HwFAAC0IyRxZWUlayc9k5qampycTNET8OIHWYtiYQGflJQ0bNgw3iIKgGlBJShdpMGvX79etNdSCaH3JuBdLhcL6cLCQqPRQ6qp2Wzm1C2fCxZ8nD59+pjNZm/7DB48mN+KHTt2fPbZZ+7TNplM/DkGXMROo/LnBOzU1FSfC9/izfeWA+8xrSPCKN6E8DnwLperq6uLghbwHnvIeQMCPsGBgAcAxADV1dWrVq0iot69e19zzTXqEYxOp5MDIEtKSjzefgEAgArCgdd//DzDeilaAt7bD3J1dbVCNTkcDpZVpaWlgYXQqwh4uQOvJYTeWyp7fX29eoU2OiX+1YVxY2Mj6zqPcfhyRBT9888/zwOFY8+ef1NTk5bW4k1NTbwmItaetCj/5ubm48ePE9GgQYO4i7sKbNGbTKaRI0d63EGeA+/z1GEiYg58Z2cnJz7w5RZhAY80+MQkdALecuSbJX/9xY0/Onf04MqS3rm5BSWVQ8ZOvuLmBxe8t6s5jK0bAAAJwLPPPss3LvPmzUtJSVEJfSSiY8eOWa1WQgI8ACAghLaMlRwcnnBbWxsLiUg2gScvIfTPPPPMsGHDRo0axSKWqaurs9lsRNSvXz8xt1AJ+H79+rGq2bx5sxBvKgLebDaz4lKsO6gnwMvPbrFY5K9OgXCAfQp40Uzu8OHDHqfNAt5ms2nRw+K19+/fnwdaBLyoYKclfnv+/PkLFiyoqqryFuAgQuj1I+DDNxPF5RYZAS9Se+DAJyYhEfDd3y/99ZT+/SZe++u/vfbu2m17Dx6tb25uOHpwz5Yv/vPyY3dcOrL8tOue/abBGYpzAQASjra2tkWLFhGR2Wy+5ZZbyFcNISTAAwCCIUYdeKfTybm4enDg//WvfxHRoUOHPvzwQ7FRJMD369dPNBAJVQ48nYqit1gsIhZdRcCTFyNdi/DWkjWgZSGAGTVqlKJtmMKB96uOnRCuY8eO5YGWEHqRgO0zAZ6IUlNTb7vttnPOOcfbDnpw4CMWQq+43IIU8CkpKVq8B4TQJzjBC/ie6hd/fN7VT3x+1OoiklLz+486a9qsq396/Y9nTD5jWFm2SSKXs33n4rsvuOg3nzf5jvwBAAAFW7du5Tu8WbNm8d2Yeg48StADAIJB1M7QImb0gCLlOOoCvqOjY8uWLTxesWKF2FP0kKusrBQCPoAceIPBIF6yHJEGzwsZJpNJFJxTmbnVahXvGPnjwJNqGrx2AU+yKHrGowNP2qS4EK5CwGuR/X5VUPOJHgR81B14LTUdBa2trVy4YeDAgT5TGAgCPuEJNjvUvvu5m3/x/jGHy5A96sf3/fbXt14xJl92TFd37WevPvH7x15ac6Rj05M3PXj+1hcuUHY2BAAAVUSKl/Ao1NvwwoEHAATD3Llza2trc3JyLrroomjPRRN6E/Bff/0197Ejog8++MBut3M5ErkDL1p8BeDA5+TkeBQ5Ig2eKSwsVNdC8rVg8V75JeBD4sAT0ZVXXvn444/zWJIkRWi6Xw68EPCDBg3KyMjo6OjwK4Q+JItWUW8j53K5FA58+HLghYAPxoEX8fMaF1CQA5/gBOnA93z1/LNfd7qk9PEPfbR28cNX/0C9E5GUWj71tmdXf/ny5cVJ5Di46Mm3jsOEBwD4h1hgFn+x1N0POPAAgGDIyMh46qmn5s+fr8UK0wPRFfDZ2dn8Rokf5LVr14pHGxsbv/zySx7LBXwAOfBOp5NfoHsCPHPGGWfIuwaox8+Tl0L0Qnj7LGJHoXPgx44d269fPx7n5+dzWwGBXw68/C8gP1HLs7hLq8FgUATzB0bUHfj6+vru7m4iEoEeEQih5690ZmamyWSiQAW8lgR4Qg58whPcXyZ79aefHXFQUtkNjz0woZfXRiumip/89ddnp0iu7nWr1vgRKAUAAORJwKsXsRPr7hDwAIBEILoCPikpiQWbULNCsTPvvvsuD0QIvTwHXnsIfWtrK/v2HhPgiSg3N3fgwIHiv0EK+Eg68CSLonefthDwfjnwffv25SdarVZ1J9zhcHDkWmlpaUpKipbZqhN1AS9WMUSd/IiF0NMpEz6sAh4h9AlOcALeefTwMSdJ5tPPGZ+qfpqySZP6JZGr53DdSdSy/ud2wgAAIABJREFUAwD4hYgQE0vOOTk5bLN4dD+4Fw4RFRYWRmSCAAAQTaIr4OmUoG1ubna5XFardf369USUnp7OP9QiDZ4d+MzMzIKCggCK2AmZ7c2BJ1kaPGkQ8B6zsVgAJycni7847mh34E0mk0ovejlCwLs7/wEUsUtPT8/Pz9f4xLq6Om7dIqIAgkSHAj58IfTulxsL+NbWVu4KoQV/BXxWVpbZbCYI+EQlyNgwl5aOlAAAEAzuDrzJZPLY/odhAZ+enh6ZFkoAABBddCLg7XZ7W1vbpk2buLna1KlTx4wZQ0Q1NTU7duxob2/nH3Ou7R+AgFfpISeQp8Frd+DFke12O9cSKy0tlUfjK/DpwDudziNHjhBRSUmJxkSMCRMmzJ07d+jQoffcc4/iIe0h9N3d3bzkzasAGp+4f/9+HojOc0ESdQEvwhBGjBjB73/kHXin06n9pFxEUJIkjQJekiT+cCHgE5PgBLyhpKwkiVzWjWvWe+2DSUREziNffVnjIMlcUto7NvLJAAC6wV3A06kbL3cB73Q6eX/Y7wCABEEh4CPcB55+KGhFAvykSZN+9KMf8XjFihXyBHj53AJw4L2F0NMPHXif1rd7CP3evXs5Sl+9Bqp6GhcRHT9+nDvea4yfZ15++eVdu3ZNnTrV2+l8OvB1dXVsrXEGmcbY+5AL+MzMzHDLZnWEA19ZWcnLWJF34ElzFL3NZuMaBKWlpb16aS32zREinZ2dfpWBBPFBcGraOOyCqaVJ5Di86Dd/XNfq1Yu31S759Z+/tLiklIkXTIIhBgDwD48C3mP7HyJqaGjg268+ffpEcI4AABA1ou7Ay1tnCQF/zjnnXHrppTx+99135T3kKGwO/OjRo0UFuABC6EW6/llnnaXlid4Umr8J8Opod+CFcGUHXqPyF2sroRLwBoOBv3tRd+DLy8s5HCDyDjxp7iS3d+9eTmEYPny49vMiDT6RCdION591291nZ0iuro1/uvjsH//vm5vr7T943NV18NMFd15w9k1vH3FQUvn1911d5DUeCQAAPMIBgVlZWfLCvN4K0YsEeAh4AECCEHUBL36QGxoa1q1bR0RpaWmnn3766NGj2QresGGDqGzHDnwARey0OPBms3n06NE8LikpUT+gewj9smXLePA///M/fj1RQWgFvHYHXlHDNVoOPJ2Koo+6A19eXs5XR09Pj8ViCce5VAS8Rgd+x44dPBgxYoT280LAJzLBxrMbB9328t8vKzVKzrad7zwye1zfov6jzpo26+qfXHfFReeOG1pWNOiCO5774ojVJWWMuWfhY9OzoN8BAP7gdDr5pk1uv5P3CMYTJ07wACH0AIAEQT8Cfu3ataxpJ0yYwEW22IR3uVyvvPIK7yMEPCeZh9aBJ6Kf/vSnRDRs2DCfHdEUf0cOHz68YcMGIqqoqODsfW+IQqqRceDNZjNHVmsX8NHNgadTAt5isfT09ITqmNphAZ91Ct4Ypij64EPoIeCBvwSfkG4e9LPFXyy9f1qJWSJyWRpqvvum6r233lj8n4/Xbtp9pM3mIsnQa/i1T69e9ZdpeZDvAAD/aGpq4pB4hYD35sALAQ8HHgCQIHgU8JIkRT4HXhScnzRpEg9EGryQTyzgDQZDamoqBSTgVRx4IrrtttuOHj26ZcsWXkFQQSHgly9fzgnkl112mUoFO5IVUo2MgKdTUrypqUm9erTceSbN1j0L+Ly8PPFFCh6Ryx15E769vZ2/KvwmhLuiXvAO/M6dO3kQWAi96NQDEgdjKA6S0u/Sxz+Zfuf65W+8/fHa9Vv2HG5oae8xpGfl9qkcMW7ilFmzr5k+JDspFGcCACQa4i+TRgceIfQAgETDo4BPS0tLSorQzZcQ8N999x0PhIA/99xzs7OzhXo3GAyiPlx6enpXV1do28gxGju3ZWVlJSUlORwOPrLG+HkmLy+vra0tYgI+Ly+vpqbGZrO1traqyGxFDryWEPr6+nruEh+qHnKMXDarNOQLB4o8AsXVEXLcHXifJRIUsANvMBiGDRum/bziXYUDn4CERMATEVFK8YRrfjXhml+F7IAAACAT8ApB7jMHXuMNHAAAxDopKSkpKSkWi4UlCuuxiMXPk5uiNhqNop2byWS65JJLFi9ezP8tLi5OSUnhcVpaGgVUhV7o0iAxGAw5OTkNDQ2NjY2NjY1r1qwhot69e5999tk+n5ubm3vgwAGr1drR0eEe6aAQ0sEjD4b3KeCNRiPn/2sJoRfx8wMGDAjJVBnhwPO3MZIowhDC7cAHGULf3d3NRQT79evHV4RGEEKfyKCnGwBA1wjfQHHH5k3AC8Ef4SV/AACIIizqWlpaXC4XS+IoCvgxY8bIzy5q0dOpEvQM696enh7uuOYT8WsvBFLwcDBXa2vr8uXL7XY7z1ZL5IKIAvMo0g4fPkxEaWlp6tH+2tHipYvm88XFxUajkbSF0AsBH1oHPty+t6ChoWHt2rWcascoVk/ETPQZQl9dXc2T9yt+niDgE5tQOfD29iN7d+2v73aqZeaQoffwc4YVYNEAAKAZjz3kCCH0AAAgIzs7+/jx421tbe3t7U6nk/4/e/cdGFWVtgH8vdPTCyEJpFKSkEBAQESJiICKLgoqsoL1sy2r6K6IsIoFy6qoawGxN0RdCyhYUEEQRYmitNBLICSkkV4nmUy53x9Hz16n5U6mZMrz++syuclcQsLMc9/3vKdXAzzvn2cuuugijUbDNsqSBnjpTnJyVl+zAK9SqeTvld0tduUWi+Xtt99mj8jpn6c/t0lb9cl3dXWxaSypqameuk45Ubyqqop9k1nlmYi0Wm1UVFRra6ucAO/BCXbk/bo3YzQax44de/z48Xnz5j377LPsQasWev7T4qVbCSzAazQaPnPBpQDfswl2hAAf2twP8ObarUtvu2nxp0fanId3IiLdzFVNH1+h7e40AIA/OFoD3+0QO0yhB4DQwQKwKIqs9kuSeqAPOA/w0dHR55577oYNG+jPZV5+hTIDPLtdGx8f73zCnEt4MN66dSu71MmTJ7v0ibY7yVVUVLB7KJ5aAE/ymuGtWsf5J7a2ttbX14uiaPf75vFN4BnfDLErKipi179y5cqnnnqK9R30SgVeer/MNwGetxliiF0Icrca3rnj3xddcPfqwzLSOwCA6/itZauWeEdvnliAj4qKcmktGQBAQOMphQd4X1bgpT3tgiDYriGfMWMGO8jPz+cPSivw3T6F2WxmAazbCXYusWpx/8tf/qLVyio08cuwret6fIIdyavAW+0hJ/1Eo9HoaC26l1rofVOB3759OzvgIwzIpgLvmzXw0vtl/NfB9uaOrZ6NoCeimJgYVvO3W4HnxQwISm5W4JvW/eeFXXqRBO2Aaf968IZzc9PjtE7uiipiB3SzowcAwJ84aqHnb56k5Qiz2cze3KD8DgAhhQd4nh59GeA1Gg1r1SaiIUOGWP13TUQ33HBDfX29RqPhu8qRJMDzVcRONDY2sh3UPLWqnLH6ajL758npGnj+T+CpCXbkYgVe+rzSxfM8ykqxAB8WFsbm3nmKbwL8b7/9xo/XrFkzadIk+uP7oNVq2Uo6r1bgjUYj2+heGuAjIiLYmhH5FXi1Wp2Tk+PSUwuCkJCQUFlZaRvgp0+f/vnnnz/44IMPP/ywS18TAoV7Ad64Z0thk4WEmClLN38yJwM7xQGApzkK8HFxcQqFwmKxSO9w19bWsmEwWAAPACGldwM8EcXFxbEAb9U/z6jV6nvvvdfqQZcq8PL3kHOJ9KvpdLqLLrrI1U90EuA9uAZezhA7q8qz1SfW19fbNsnr9Xo2OGbAgAEeXJhAkgDv1Sn0vAJPRGvXrl22bJnJZKqqqiKitLQ0hUIhvRJvrIG3HUHPxMfHV1dXdxvgW1pa2E9LVlYWX0IvX9++fSsrK9vb2/V6Pe86bGho+Pzzz4noww8/RIAPVu610Fsa6hotJMRM/ds1SO8A4A28DcyqhV6pVLIldtJyBJ9ghwo8AIQU3rXLU5yPAzyvSNsN8Hb1LMB7ag85RlqBP//88+V/05wEeLtB2k2O5rZKOVoDzw7sJv9jx46xvgbPLoAnn1Tg9Xr9gQMH+B/Ly8u3b99+8uRJdh+ffxO8WoHnzSNWPznsSVtaWtjWBo7s27ePff+lS0vkszvHji+qx9r4IOZegBdiYqMFUiam9sdgOgDwCvaeg6/1kmJvaHhfJUnSPirwABBSeF7qlTXwJLnHKj/A865jOS303thDjv4c4C+99NIefKJtgOf/BL1VgbddA+/oE700wY58EuB37drF4jGbXUdEa9assb174tUr4RV4q5mR7P6OKIrOn7THC+AZu3Ps+Ndsbm5muxJA8HEvwKvzTj8tXDBXHTnajBl2AOBxFouFVRtsV1TSHy+QJpOJd+ghwANAaOr1FvpFixadddZZDz74oPyys0sVeB7gvTTETqlUXnLJJfI/UU4LvY+H2LEKfEJCAv/GUneL5720hxz5JMDz/vnrr7+eHaxZs8Z2EIBXW+htN4FnZA6i7/EIesZuBZ4HeFEUscNcsHKzAp946dzZGYq29cte3NXhoSsCAPhDfX0964WzG+BtWwoR4AEgNNkGeF9uI0dE55xzTmFhoUtrbnvWQu/ZIXb8xWX8+PF2X2gc6XaIXWxsrAfvoWg0GttVY1JNTU3sXrbV5LxuW+jZgS8D/KefflpQUPDBBx+4+RR8gt3s2bNZC/qhQ4fWr1/PHuQ3ksLDw1kHny9b6GUGeDcr8M5b6Ald9MHLzW3khLgLn3rnnjGaHY9ecsmij/c2WjxzVQAARI73kGNst4LHGngACE08wPMw7OMKfA9I94Hv9mQvVeDz8vKmTZuWkpJy//33u/SJsbGxbEaaVUJrb29nGduD5XeGvQ7W1dV1dnbaftTuAnjqrnTvpT3kiCg6OppNxbMdYjd//vzCwsIbbrihuLjYnadgFXhBEEaPHs23D1i9ejU7kN7IYHcTvDrEzp0KfFhYWM9uoPAAb7eFnhzsMAdBwJUp9OaDnz79yQHbWQzaCZOz963Z9MSska9kjSsYlTNoQGpCuN2Zdqq8GQsuz8W4OwCQx9EIesZ2K3hU4AEgNPEAz/l/gO9ZC71nK/BKpfKzzz7r2SfGxsY2NDRYJTRv9M8zw4YNKy4uNplMv/32m+2gAbt7yJG8FnqlUjlgwADPXq1SqYyMjGxtbbWqe5vNZjYjwGAw/POf/1y3bl3Pvn5zc/ORI0eIKCsrKzY29rLLLnvkkUeIyGg0shOkNzJiYmJqa2tbWlpEUfTssP1uW+idbAVfV1fH3rQMGTJEqexJOuK1Df5mqbq6WnqnBhX4YOVKgDft//DhB1bZuev3B3PjkR+/PPKj4xN0M4fMQ4AHALn4a4/zCjx/X4IKPACEJtsAzzqu/ZlLAZ7HEs8GeHfEx8c3NDQ0NTVZLP/rQPXGJvBMQUHB2rVriWjr1q1OArxVBd5JC73ZbGaflZqa2oM9zLoVHR1tG+Crqqr4YPavvvrq888/nzZtWg+++Pbt29n82jFjxhDRaaedNnDgQD6TT6FQSG+gsN8Oi8XS2trq2d8LR9vIyanA7927lx30bAQ92Wuhl/bPEwJ88HKphV6pi3CTDuEdAORzXoG3baF3tOccAEBwsw3wPl4D3wM8wMuZQs+DkGen0LuDvQaZzWae4sg7m8AzZ599NjvYunWr7Ud5dpXfQl9aWsrq1R5fAM+wn0m9Xs+r4kRUWVkpPWfevHl2VwR0a8eOHexg9OjR7EC6iUBycrL0loT35ti5M8TOzQXwZC/AS/vnCS30wcuVAK+9bGVdm1vqVl6G/eYAQDaZLfRWQ+xiYmLCwsJ8coEAAH4hEFvoXVoD76Uhdu6wO8fOey30o0aNYi9thYWF0po/s2XLFnZw2mmnSR93Mv3Oe3vIMXbn2PE99vg1PPXUUz344nyCHavAExFfBk82dzHkjMSvqalZt27d8uXLrYrYzjkaYudkkwLOBwEeFfhg5eYQOwAAL3KpAm8ymdgbFCyAB4BQo9VqrW5c+n+A78EaeK1W6z+dBXZDmvcCvEajOeOMM4iooaHhwIED0g/V19fv3r2biDIzM23H0bEu+vr6etZzznlvgh1jNzZXVFSwgyuvvJItR1+yZMmJEydc/eJsgp1SqRw5ciR7ZNy4cfzV3yrA89tbVhX4+vr6Z5999sorrxwwYEBSUtLFF1+8ePHiiy66iG1/I4c7Q+zc3EOOiGJjY9VqNUmCOirwIcK9AG8+8sXz//nP858dMnZ3ptiy88Pn/vPMsi+Pyv2VAABwKcDX1NSwogQWwANACLIqwgdQgJfTQs/uz3p2BL2bfFyBJ0kX/U8//SR9/LvvvmMvf5MnT3Z0nUaj0ar+7L095BjnFfiZM2ey/ds7OjrmzZvn0leura1lmT8vL4//FCkUCr6cXmYFfvbs2fPnz//444+ldxAaGhrk5173W+ijo6N7PC5BEAT27ohdsCiK7Gtqtb83PKMCH6zcC/CmPe/eu2DBvSt3d3V3pmDZ9/6iBXcvXP5Dg9jduQAAjPMhdlYt9BhBDwChTBrgFQoFDzZ+S34Fvquri5U6/SrAO6nAC4Lg8TXwRFRQUMAOrJbBb9y4kR2cd955tp/laI5drwR4XoFPSUlZsmQJO2ft2rXffPON/K/Myu9EdPrpp0sfv/rqq1lVf+zYsd1eCRH9+uuv7ECpVA4fPpz/k9md2G9Xj4fYVVRUsA/l5eW5MxifBfj29na9Xl9eXs7+gqNGjbKqzEOQ8U0LvWio2b23zExkqaupw17xACATvwvO339IWVXg+Qh6BHgACEHSAB8REeHZ7bK8Qf4aeJ6C/CrAO6nAJyYm6nQ6jz/juHHj2ObzVhX4TZs2EZEgCJMmTbL9LEc7yfVugE9NTU1KSnr44YfZH+fPny//K9sugGcmTJiwefPmr7/+WroenhwMsaurq2MXNmLEiObm5qKiogsvvJB9SH6A73EF3v3+eUa6DJ5/zfz8fPaPjhb6YOXKNnKM4fObBt342e8DI7vaDES07m8ZCbc7+xxje2Nrp0UkIaxvUnyP7xmYyz97YP5bh4fc9uZDU2L//Kokth/fvOqjr7buL23s0iUMGD5+2qwZ49J01i9dMk8DAD/BXntiYmJ4P5hUbGysUqk0m80swPMKPFroASAESQO8//fPE5FOp1MoFBaLpdsA74cT7MheBb6xsZElOm/0zxNRTExMfn5+UVHRiRMnysvLWcW4pKSERfHhw4c771azqsCzIXYJCQk833oW37DNtoVeqVSyV+q5c+e+8MILx44dO3DgQFNTk+0sRrscVeCJaMKECbbn8y8rvRI+w2/IkCGsGcR2Mm63HFXgw8LCoqOjW1paysrK7H6ixwN8TU2NdCretm3bqqqq2tra9Hp9eHi4O08BfqgHabqrtZ5rNYhEokHyiF0tnRaRSFBnXH375Yk9jMvmyq9f+WB/h50GfLFx20sLFi799OejtZ0anUJfdejHj566e9G7+9vFHpwGAH7CYrGwF1G7C+CJSKFQsFdltNADAARcgBcEgQWnbtfA871C/bwC79UF8IztMnhWficH/fPkoIW+pqaGhU8vld/JaQU+KSlJpVIRkUql4mPzS0pK7H6dxsZGq63mWIDXaDTDhw/v8ZXYzvDrQYB3VIEnouzsbHK8op6PIezxCHqG37KRVuCHDRsmDfbufH3wT65X4JV5M+9bnGciIiLzgdVLVu2n3BkL/zpM7fSzBGVEUt7Eyy89Pa5n+d1SveHV9/fq7cX3lp/ffHFDuTEi94q77541qq+6o+LHt55YtqF4zQsfjl5601CtS6cBgN+or69nk2CdbOoeHx9fX1/f1NRksVjQQg8AoSzgAjwRRUREtLa2Bk0FnkdQ7wX4goKCF198kYi2bt06a9Ys6m4BPDloofd2/zzZi8319fUdHR1EJB0QkJmZyQ5OnDjBR8pzmzZtmjp1anx8/Lfffsuybnl5eVVVFRENHz7cbneeLecVeP4d4P+grgZ4fitKKicnh91oOHz4sG0d4tChQ+xgyJAhMp/LLmkLvbQCLw32/DsMQcP1AK/Km3n/QzPZsWH1gf+s2k+5Vyx6aJY3R6VYaja+9t5uu5VyS+XGTwubSZd/9bxrRvVVEFFYyjl/u7Ps0IJVZd+u2XpF3qQYQf5pAOA/nI+gZ/r06XP06FGz2dzc3IwWegAIZQEa4EnGGnj/rMBbBXiDwbB48WL2SFZWlpee1KoCb7FYvvvuOyLSaDTjx4+3+yl2W+h9GeBbWlrYgXSCHT9NGuBtv8jq1asNBkNVVdXkyZM3b96cm5vrpH++2yuRroHnAd6dCjzrYoiIiGCzCaRycnLYweHDh/m/Gnfw4EEiioqKkn4reoC/QTp16hSr6vft2zcpKYkHeFTgg5J7Q+yUA8+/ec6cmy8Y5Pp9ABeIdZtfW7mjPeGcScM1Nqvaa7f/etxMYSMvOCfpf38X9aDzJmcrxY5923a1iS6cBgB+RE6Al94vRws9AIQyPjeLAifAs8Zjs9ls1SNtxT8r8FYt9Pfff39RURERZWRkXHfddV560rS0NLZH2t69e1taWvbs2cNeK8866yxH+w7YbaH39ibwZK8CL51gx09zHuB5zD516tTkyZOPHDniaIKdS1dCHm2ht+2fJ0lpnRfbuerqavYzM2TIEDeHTfI3SL/++qter6c/evLRQh/c3AvwqlG3vPDKKy/MGePFBnSx/ofXV/zWFn/OzdePibb5qKH40HGzqBwwbEik9Odf6Ds0L0kpdh49fMLiwmkA4Ef4q46cAN/Q0MBa6AVBQIAHgBAUuBV46m4ZvH9W4GNiYthC7sbGxs2bNz/77LNEpFAoVq5cyee3eQPbTM5sNv/888/d9s+TP7XQ803g5VfgpQvjq6qqJk2atG7dOvZH+RV4/qthW4HXaDT8bgIP8PznzTlRFNnPrd1fN2kF3upDPNLn5ubK+xs4xN8g/fDDD+yABXhpC72bTwF+yL3SudheXVLVJj/7KiL7DUiOcOVOk9j405tv/9ISW3D3DWfGHvzR+sOW2opqoyhE9EuJ//NXVfRL66egiubKyjYxP0aUdxqa6AH8CX/VcbIGXnq/nFXgY2NjZS6KAwAIJtIAb7ck6IekW8Hb3S6U4YHKryrwgiDExsbW1dXV1tbedNNNFouFiBYuXHjOOed49XkLCgr++9//EtHWrVv5TuaTJ092dH6vt9DbVuBlBniz2VxaWkpEiYmJUVFRx44dq6ioYF8kPDw8Ly+vx1diMBjY18nMzFQqlexBVyvwer2e/aPb/XXLyspimyzYBnjWP09uL4AnyRsk/o/Lxtr3uAJfXV09e/ZsrVb74YcfytwUAHzPvQDf9fU/hs5c5azp6c90M1c1fXyF/LfWYlPhW28VNkWP/eeNZ8cJJnsnNDaLpIiJi7YK34IuNjZMoPbmpiaRYmSeJi/ANzc3iyI67v+HjRmT3tSEAMVeh4hIr9ezMTO9i4/zjYiIcPQDxjdHKSkpYe/wEhIS8NPImM1mi8WC70YQ4L+b7e3trEkSAprFYjEYDEaj0bNfllWDGY1GExC/+/x+a3V1tZPNzPiMUrVa7Vd/Lxbg29raWCV2xIgR8+bN8/YVjhgxgh2sX79+7969RBQdHZ2VleXoeVUqlSAIoiieOnWKn1NcXExEYWFhYWFhXrpg/m6ZzZolSTk9NjZW+qQJCQl1dXUlJSVWV3Ly5Mmuri4iys7Ofvnlly+++GKW54koPz+/280LpCIiItrb2xsbG9lTHD16lP2/mp6ezp9UoVCwb1RNTY2c7wnPxo6+h6mpqWVlZcePH6+trVWr/zfumy21sHr2ntFoNFaPZGRkNDU18XdHFRUVLj3F448//v333xPRu+++e+2117pzbb2LxRMiam1tdXOdgm+Eh4fb/ms64tXF624Sm7etePPHhojRc2+emGD/Gy8aDAaRSKvTWn9c0Oi0ArUbOtlGd7JOk8dkMiHA2zKZ7NxggQDF/9frXbwCHxsb6+gHjLcpHjp0iP1i9u3bFz+NnCiKPPtBEPCT301wnzd+N6VlwPDw8ID4nzAsLIwdtLS0OLlgXoGPioryq7+XdO5AWFjYSy+9pFAovH2FWVlZMTExzc3NvPw+btw4cvxOTBCEqKiolpaWhoYGds62bdvYK2xmZqb3/lfhGZL/4/IW+sTEROnVpqWl1dXVtba21tTUSFdJ8DaB9PT05OTkNWvWTJ8+nd3cHzFihEvf5+jo6Pb29ubmZvZZ/CtnZGTwr2P7jXKO1/Md/boNGjSorKzMZDIVFxdL5xrymvygQYPc/GmJiIhQq9XSu4GDBw82mUz8J7Ompkb+U3R1dbHmDiIqKSnxq9+1HguU102XXhHcC/Dqgns+/eI6+98Wc0dDRUnx0aLvVn1SWGGMGfPPt9+/f2JKlOzyu9i6/Z03vq8PGzHnb+c53DtetJjMRGQ7+pFIoRCIRKPRJP80APAnLg2x4y+HTvrtAQCCmLSCHSgt9DzjOR9E759r4OnPAX7x4sVs629vUygUY8aM4avfiWjChAnOPyU+Pr6lpaWxsVEURZPJtGDBAnbL+7LLLvPedapUqvDwcL1ez6fQs+3fiKhfv37SM9PS0nbt2kVEJ0+elP4T83o7a7NPS0tbs2bNVVdd1dDQcPXVV7t0MdHR0VVVVR0dHUajUa1W83Z9NhGQi4uLa2lpaWpqEkWx27It/6F19Os2ePDgzZs3E5FVgD969CgRaTQaq2fvAUEQ4uPjpbvwsJ9Ju+smuvX111/z5QO8CxL8kHsBXtFv1EUXj3J+zsOPP77xub9f/+DzV81Ur9+yxP4OFzbEtl0rX/uuVjfspjlTkh1P2hPUWg2Rwc4dItFoNIkkaDUa+afJ41frr/xBc3OzQqEIlHk54IRer2fduVFRUf6wjJx7BJTCAAAgAElEQVS/5GdlZTlaG8lf/KT36Z0spAwpTU1NKpUqUN7HgxPt7e1sVUt0dLT8FjvwW42NjRqNxtHM8B6TtgcmJycHxP+E/D2VSqVycsHs5SAsLEw6vdwf8PvLF1544cKFC33WqTtx4kRpgJ8+fbrzf+7ExMQTJ06YTCaVSrVixQq2Bjs7O/vBBx/06st9bGysXq9vbW1ll8dyZnx8fFpamvQ0Pu+tqalJ+hfh9/GHDh3KHk9ISLBdUi4H/0lTq9UJCQk88Q4fPlz6jPHx8aWlpUajUaPROFnTwUgXz9v9/p922mnsoKqqip/Q2tpaWVlJRIMHD7a6kdEzycnJtn+dhIQEnU7X2dnZ2Ngo/7+CDz/8kB9XV1cHxP8hjrS2thoMBiKKjY2VLi8KDu5NoZdDCMs4f9HHH9yebdzz7E0PFxpkfZL58KrXNtZohvx1ztQUpbMvHh4eJpDY3qa37mm36Nv0RBQWESbIPg0A/Al75RYEwfk+8OyAr6zDCHoACE3SvBEod9WlQ+ycnMaqgn5YQZk6dapSqUxNTX3ttdd8uc5Wuq94SkpKt8PMeRLbuXPnww8/zI5ffPFFb9+sZz+T7e3tJpNJr9ezTgrbnc8dzbGz3ardzSuhP2Y2OfrK0r1pu/2afBG+oxvldgfRHz58mN1rc3+CHSN9j8RG0DOsIVH+ELtjx45t2rSJ/9HupgDgJ3x0QyLq7FuuGf7SA7s/WLnlsYLzdd2eb6o9VWcWuw6uuP2yFdYf2/XiddNfJGXK5U8u/7+sxOREJVU319UbiaRJX2yubzSJgrpvUh8FkSjvNADwJyzAOy858tdavnYoOTnZB9cGAOBvWFWfJeFACfA8+TgJ8J2dnaw7zN/654nokksuOXDgQEREhI9Xb40ZM0ar1bICo5P58xwP8HPmzGHf6tmzZzvZec5TpOPf+ToI2zaKAQMGsAPvBXg+UJ0tXGdde4IgOAnw3T5pa2srO3D062Z3K3g+gt79PeQYaYBnI+j542VlZQaDobm5udtuAiJ64403pF08lZWVXV1d6PnyT76Krcq0zFQlWeqPHK6Vs0Jf0ITHxNqI0AhEgjo8JjY2NiYqTEUkRKenxylEY1lJ+Z9X4hvLjp80k6J/ZrqGZJ8GAH7DbDaz+9/O3xXZvp9DBR4AQhZPKYES4OVU4P1zDzkuPj7e94vOwsLCRo8ezY7l5HD+rWPBNSYmhu1a723SAG93E3jGeQU+MjLS/fsj0gq8KIqsay8pKclqJQsfauCRCnz//v3Zh6QVeB7mfVOBJ3lbwRuNxhUrVhCRIAhsub7FYsEyeL/lqyUBprKSk2Yiam9rlzPAXTP2H2+OtX7QWPjU7Cd/Eofd8MJDU2L/aFMaNGJY1JffVe7cWXH14HR+O8J4ZMeeVlGRNGJEioKISCnvNADwFw0NDWxwqJP+eSKKiYlRqVTS+RYI8AAQsmJjY9nu1oEy/ILHJ0dbgrW3tz/00EPs2A8r8L1o+vTphYWFUVFRU6ZM6fZkq8XMjz32mG+61aQBnm8Cb1uBz8jIYPu38dVwRNTa2sqSp/vld6srqa6uZj0dtl/ZpRb6bivwgiDk5OTs2LGjvr6+rq6O/St4vALPg7ogCHl5ebaP19TUDB482PkX+eKLL9hmjRMnThw0aBAbs1daWjpo0CCPXCR4lm9yq6n840dfLjKSoO6fmuTZp9Sddv45SQpzyTertzX/cWvAXL1x9eZaUTVw8uQspUunAYCfkDOCnogEQZAOASa00ANACAuyCvyWLVtGjBjx+uuvsz+OHDnSd1fm9xYsWLBhw4aioiI51WlpgB8zZsytt97qzUv7H7sB3rYCHx4ezv4WfOw8SUbb8AZ7T10Jn3prm049uwae7C2DZwGeZXuZF+8cf5uUkZEh/cXnj8tZBs9/y2655RY+HhjL4P2WexV4y8nCT7aWOd1dz9RaeWjr6jfe/+WUhYSIgosmxHh4xIcm7/JrCwqf+fGHpQ8KlZednaFtOPjtJ2t36ZUpU6+fmqZ08TQA8A/89cZ5gCei+Ph4nvYFQcA2cgAQsnJzc7du3RodHW2bkfyTozXwHR0dixYtWrZsGZtvolarFy1adM899/TCJforQRDOP/98mSfzFnqlUvnyyy/b21fZK2S20BNRZmbmqVOn2traamtr2eu+BxfAk+TeVlNTk5Ov3LMWeif3y6QBvqCgwGg0stsHaWlpnmqT4W+TpP3z5EoLfWlp6YYNG4goISHhsssuW716NX/cI1cIHudegDdue/662as65Z0sRI1Z8Og1aR7/L0Poc/bc+5pMT73zy+Z3nt3MHgrLPO/Wf/3fiAjB5dMAwC/w15tuA7l0VWR8fDwGrgBAyHruuedGjRp19tlnh4WF9fa1yOKohX7mzJnr1q1jx/n5+StWrBg1qptti8GJnJwc1qM+d+5cvnjeB6Kjo9mB8xZ6IsrMzNy2bRsRnThxwhsBXnorgQ2it/uVe9ZCL78CX1xcbDQayXML4NmXYv+4Z511lvRx+RX4N998k90pu+6667RaLSrw/s8Xa+AFZXhi1plX3Lt0ybXD3NnzVD1u4erPFtp7gvDBl9z74tlHd+44VNFk0iVkDBs9Ij3Kpqou8zQA8AMyW+jpz6sisQAeAEJZZGSkz7qjPcJuC70oimyTc5VKtWDBgsWLF/t+SlyQGTZs2Nq1a48fP+7jHw/5FXjpIPoxY8aQNwN8XV0dO/Z9Cz2fYOepBfDsS3322WfFxcW33Xab9HHpGngnn24ymd566y12fPPNN5NkpiAq8H7LvQCvveS1E1XLnE+lEwRNVEJ8uNdzsjoua+x5WZ46DQB6l/wAL63AI8ADAAQQuwG+pqaGbZB2xhlnPP74471zZUFn2rRpvn9S2zXw4eHhdocR2g6i52vgPdtC39zc7KkW+m6H2BFRdna2QqGwWCwswHt8gh1zySWX2D4os4V+3bp17J9m/Pjx7Kr69++v0Wi6urpQgfdbblbgtbFJmBcFAJ7Hbxh320IvfSuACXYAAAHE7hr4srIydpCWltYL1wSewwN8Q0PDqVOnyEH5nSQBnud2FrMVCgX/kEeupKmpia1CDw8Pt33P4Nlt5NizpKWllZaWHjt2zGg0enwPOSfktNBbLJbFixez41tuuYUdKBSKtLS0Y8eOVVRUmEwmlcpXe5aBbD7bPc20+6X/u+yyq5/b1uWrZwSAAIYADwAQ9OxW4HmA52txIUDx2Hzo0CG2NazdBfAk+bdmbdsWi4WVf/v376/T6dy/El6Br6ioYG8wBg4cKAjWU7AiIyPZeg1PVeCJKDs7m4iMRmNJSYmXKvB2yanAr1y5sqioiIgGDhx45ZVX8sfZP4fJZOKTC8Cv+CrAdx7b9PHHn61d9fGPzofWAwAQEfElala719qSttBjBD0AQACxO8Tu5MmT7MBR2INAwQP8gQMH2IGTCjyL06wCX1lZ2dnZSR7aQ056JXv37hVFkRx35rMivKcq8CQpth88eJA10sfHx/vg7UpYWBi7s+CoAt/Z2cnL708++aR0BrDtigbwKx5oihDbj3zxyiuf/vBbUXFdh8XugnhRX1NS3mgUSaPVajDyHQC6xW4YC4Lg0hA7VOABAAKIRqNRq9VGo1FagecBHi30gY7HZt5V4SjA63S65OTkqqqq0tJSURQ9O8GOiCIjI5VKpdls7ujocP6V4+Pjq6ur29raDAaD8+mJLMBrNBrnp/E5dps2bWJFex+U35m+ffu2trbW1dVZLBbbvQOXLVvG/l3OPPPMGTNmSD9k1RAB/sbtAG/Y8+zUiQt/aLDIOFcRN+HKi1J81rUPAIGL3TCOiYnpdls4TKEHAAhckZGRjY2NdgN8enp6L10UeAYP8KzoTY4DPBENGDCgqqpKr9fX1NR4doIdEQmCEBMT09DQwB+xHUHP8La+hoaGfv36OfmaLI13u507D/CfffYZO/DBAngmMTHx+PHjJpOpsbFR2q5IRPX19U888QQ7fuqpp6xWE6AC7+fcTNOWivfueWRLg4WEsJTTL7nm5huuOCtVI5Cgy7no5jlz5syZc/PVl4zNiBBI0ORc89L3uz+/dTC2bQOAbpjNZvYq2235nTCFHgAgkLEuegyxC0o8wHNOlkVIQyOvwHuqhd72YpxU4NlBt130rAIvP8DzH2yfVeCd7CT32GOPNTU1EdH06dPHjx9v9dEeV+DffPPNqVOnFhYW9uRyQTb3KvBi7derv28VSTnwhg8LX5+WpCAy7nlk7OkP7VWcNmf546eriIjEll3Lrpo6/5vvNpXSHOsfEAAAGw0NDWzajZwAjxZ6AIDAxQK8Xq/nXb6sAh8eHt7tDBTwc2q1Ojw8XK/X80ecVOClg+g93kJPNgHeUQVeZoA3Go1slb7zCXZElJqaGhERIb1F5bMKvHQQvfSuQUlJyUsvvUREKpVqyZIltp/Yswp8a2vr3LlzDQZDW1vbDz/80NOrhu65V4E3HdpzoEsk1dBr//GXJPal1HkXXTBQaTr287bq37vqheiR/1jx4lVJ1WsW3PtprfNN4wEAXBlBT5IKvEKhkBP4AQDAf7AAL4oiW5zc1dVVXV1NRGlpabZDwiHgREdHS//opKtCWvX1RoDng+jJ6e50MgM8n2DXbYAXBIENoufy8vK6u1jPcDSIftGiRQaDgYhuvvlmu3cTUlJS2O5xLlXgd+7cyb6snBGA4A73Arylsb7RQoJ6UM5AXspXZQ/LUQum4oNH/zduXki4+B/X5yhOrV72/gk5i+UBIKTxVxo5gTwqKoqtk+/Tp49arfbulQEAgEdZDaKvqKiwWCyE/vlgIY3NKpXKyX153i3PK/B2t2rvMWkFPiUlxdHkOV4VkBngu22hpz+X3MPCwny2P6LdFvrt27d/9NFHRBQZGcmn0FtRqVSsV+LkyZPs91GOXbt2sQO+wR54iZtr4NUaNREptFrJm+bwgVn9FZaagwdrJP/e6mFjR0WQcfumLU2owQOAcy4FeCK68MILiWjq1KlevCYAAPACnn9YjzEWwAcZaWxOTk5WKh0Ow+Il8QMHDpw6dYqIBgwY4MEuDOmtBEf98yS7As8zqpwAz5fBE1F2drbtQHgvkbbQ8weXLFnCZgrOnz/fyf0R9s/R1dVVWVkp8+l27tzJDqTrBcAb3PsBUiYm91WS2HXkwLH/ldtVA7MGqMhUtG1np/SJwsJ1gmg6VVWDEjwAOMdfaWQG+E8//XTfvn1vvvmmNy8KAAA8j1fgrQI8RtAHB2mAdzLBjojS09NZst22bRtLmB6cYGd1JU468z3eQk9/DvA+m2BH9lrou7q6NmzYQEQRERF33323k8/lbQLyl8HzAM+/OeAl7gV4Vd6ZY6IVZCx669mveDAX4rOz+yosTd999n0LP9N8YveeBgsJujAd1jMBgHP81UJmBUapVA4dOtRnt7QBAMBTrFrosQl8kLFqXHdyplar7d+/PxF1dXWxRzy4AN7qSnqxAu+zCXZkrwJfWFjIrvzcc891fuW8IULmMni9Xn/o0CF2bDAYjEZjjy4ZZHHz/W7E5OtmpirJXPL2X8eed8vDnxWbiUhz+uTxMYK54v17Fq0rNxGR2Lb3tQVLtxtJ0XfYsH54iw0Azh09epQdZGVl9e6VAACAV1lV4BHgg4z8AE+S0Mh4L8A7+coy18DzSGy1v7pd2dnZfC1A71bgv/nmG3bA1h464WoFvqioiO0fxKCL3qvcTdORkx94ZnamShA7T2x+Y8n7u01ERFEX/O2aQUqxc+9L07KSBw3NTU8ZPffzSrOgzrnm+rPtT4wAAOBYgBcEwck9cgAACAJWa+B5gEcLfXCQ30JPXg7w0jXw7rfQV1RUsINu/1JEFBERwU/zcQWe3TjgtxvWr1/PDqZMmeL8c12twPP+eQZd9F7ldjlckXLFmz9teOb6gkF9w/lYisgJi19fODZWIVo6648fOFTeYhQFbfpfnlx5/1jkdwBwymKxsPGz/fv355UZAAAISlYt9BhiF2Sk28j5TwXeSXkgNjaWhV7nAb68vJwddPuXYs444wx2Db4M8Gq1mt22YAG+urq6qKiIiAYOHNhth6OrFXgEeF9SdX9KtzQpE+et+GkeWQwG8+/5XOhz7uPf7Zz0zqv/3bSnXB+ZMXTUxFl/mzU6Hu3zANCNkydPdnZ2EvrnAQBCgN0hdn369MEN3ODQ4wq8IAheGmIXExPjpO9dpVLFxsY2NjbKDPByKvBE9PLLL48bN27ChAls41ufSUxMbGxsbGxsNJlM69evZ9MBu+2fJ6K0tDSFQmGxWFCB90OeCPB/UGi10oAePuC8W5ecd6sHnwAAQgAWwAMAhA5pgG9paWlubib0zwcRaQXepQCfnJwcHh7uwSvhLfTdrs6Lj49vbGxsaGiwWCyO5uPyAC+zVaRv37533XWX7Iv1mMTExMOHD1sslrq6OvkL4IlIo9H079+/vLy8rKxMFEXn+/kZDIb9+/dLH8EaeK9CSRwA/AsCPABA6JCugUf/fPDhdW9BENiQeSekAd6z5Xci6t+/P0uheXl5zs9MSEggIrPZzG4n2cXWwOt0Or5m3j/xQfTV1dUbN24kIo1GM3HiRDmfy/45Ojs7q6urnZ+5d+9eq7HzqMB7FQI8APgXBHgAgNAhrcBjBH3w4QG+T58+Op3O+cnp6elK5e8jtTy7AJ6IUlJSXnrppeuvv/6RRx5xfma3c+zMZjPLtCkpKc5L072OD6L/6quv6urqiKigoEDO1nckWQbfbRc975/Xan9fTY0A71UI8ADgXxDgAQBCh3SIHSrwwYcHeDnD3tRqNT/N4wGeiP7+97+vWLGi29p+tzvJVVdXm0wmkr0AvhfxAP/ee++xAzn98wxviOh2jh0P8GxWHyHAexkCPAD4l+LiYiJSKBTeePEGAAC/YrcCjzXwQYO3cPNyrnM8NHq8hV6+bgO8qxPsehH//h88eJAddLuBHCe/Ar9jxw52cM4557ADrIH3KgR4APAjZrOZ7SGXmpoaFhbW25cDAADeJV0Djxb64JORkXHHHXfk5+fffffdcs7nE+Z6sQuPB/iGhga7J7i6h1wv4hV4pl+/fsOHD5f5uTIr8Eajcd++fUSUnJzM/9VQgfcqT06hBwBwU2lpaVdXF6F/HgAgNEgr8Gy3akIFPrgsW7ZM/slz5sz5/vvvhw4dypuxfa/bCjybYEcBVYFnpkyZIn/RvswK/P79+9nuv6NGjeL34xDgvQoBHgD8CBbAAwCEFGmAZ2vglUplt+PKIViNHTuWNeL1om4DPG8V8f8Ab1WBl78AnojS09MFQRBF0XmA5/3zo0ePlv46u3il4AK00AOAH0GABwAIKfwdf2trKytspqSkqFSoMEGvCaY18NIAr1QqzzvvPPmfq9PpkpKSqLsW+l27drEDaQUeAd6rXAnw5pK1j951511L1pVbfn/EVLRiwZ13LnhrZ5c3rg0AQg4CPABASOEB/vjx4waDgQIhFEFw6zbAV1ZWsgP/XwMfHx/Pd+YbM2YM/6vJxJbB6/V6vrzFFh9BP3LkSB7gW1tbe3C1IJMrAd60b82zzy9d9vp3pebfHzEf/Wr50qXL1x0xeuPaACDkIMADAIQUpVLJtgdvbGxkj8gcVw7gJTJb6FUqFStQ+zOlUsn/OvLnz3N8jp2jLnqz2VxUVEREffr0ycjIQAu9b7gS4AWtViOQpezLtz872tJlMplMJrNIRGQxm+QxW0Qv/T0AICiwPeSUSmUv7h8DAAC+xKt2DCrw0LucB3hRFFkFvl+/fry47c94F30PAjy/m+aoi/7QoUN6vZ6IRo0aRURRUVHscQyx8ypXArx69IXnJSpE05E3Z2bHaNVqtTpy1upOos6118SqZYmc9YnBa38VAAhwRqORvUKkp6drtdrevhwAAPAFXrVjsIcc9K6IiAjWFWI3wNfW1gbWWo+CggIiGjx4cA8G+3dbgef98yzA899lBHivcqkC3+fSx5fdmB+NwXcA4A0nTpwwGo2E/nkAgFBiFeCxhxz0OlaEtxvgA2gPOeaFF17YvHnzL7/80oN+gW4r8LYBnm1ThwDvVa4N+VRkzHz917Pn/vRz0bGqVqNIpt1vLXxzF434vyU3j9bIebbBIzFVFAAcwAJ4AIAQZNVCjwo89Lo+ffpUVFS0t7d3dnayajzHR9D7/wQ7Rq1Wn3vuuT373CFDhrCD7du32z3BKsArFIrw8PD29nYEeK9yPU/r+p123uWnsT0IDKu33PvmLho0Zc7tsyK6+TwAAOcQ4AEAQlB4eLj0jxhiB70uPj6eHdTX11sFdb4JfCjcaRowYEC/fv2qqqp27typ1+utflUtFgvbQy4mJmbQoEHswYiIiPb2dgyx8yr32uFV+Vc9+sQTj14zQk75HQDAKR7gBw8e3LtXAgAAPiOtwIeHh7u60xWAxyUkJLAD2y76ANpDziPYEnqj0bht2zarDxUXF7Pt4kaOHMk65+mPX2dU4L3KvQCvzLn07nvuufuyXLWHLgcAQhgbQU+owAMAhBJpgA+Fqib4PyeD6AOuhd5NLMAT0U8//WT1oa1bt7KD008/nT/Ifp1NJlNnZ6dPLjAUeW5JemfFL2v+u2rDT7/tOnSytrG5QwyL6ZOUMfT0gknTrr7qory4ANhmAQB61ZEjR4hIpVJhDzkAgNAh7cvFBDvwB3ICfIjcbDr77LPZAY/r3A8//MAOxo8fzx+UbgVvNT4APMUjE+U7jn6ycOKggeOuWvjsis9/LDpyorK2sbGu8sThXT98+vrjt0/Lzxhx9Qu/1Fk88VwAEJDmzZun0Wgee+wxRyd0dXWVlZURUWZmplqNrh4AgFCBCjz4GycBnk2hVygU/fr18/Vl9YbTTjuN/Yb+/PPPZrNZ+iEW4BUKhTTA819ndNF7j/sB3nDw1b9OuPI/31d2iURCWMKg4WdNvuTK667969Rzx+SlxaoFEi2t+//7z/MvvPf7BtEDlwwAAeiVV14xGo3PP/+8oxOOHz/OXhjQPw8AEFKk28ghwIM/kA6xs/oQq8D37dtXowmJGWAqlerMM88kopaWlj179vDHS0tL2d5yw4cPj4uL448jwPuAuwHedGj53+avqzKLitjhsx75cEdZVXFR4cbPP3xn5Udfbv51f2nl0Y0v3j4hRSOIbTueufG+jS0euWoACCgtLS1sKVRdXV11dbXdczCCHgAgNEkDPFrowR84GmLX1NTEcmlI3Wmyuwye989PmDBBejIP8BhE7z1uBnjD1pde+LldFCLOuP+bH//7wJUjE/68qF4Iy5h02wvf/vT65f2VZD6x8pmPq1GEBwg5dXV1/Hjv3r12z0GABwAITQjw4G8ctdDzBfCpqam+vqbeY3cZvKMAz3+dUYH3HvcCvOngps0VZlKmXf/4PWOjBUenqTOveXphgU4QOwo3bMG/JUDIkb7+IcADAIAUAjz4GwR4qbPOOkulUhHRjz/+yB/8/vvviUgQBOkCeEILvU+4F+AtleVVFhI0o88+I8z506SNHz9QSaKh/GQNZtkBhBppBX7fvn12z0GABwAITdIhdiGVi8BvdRvgQ2QPOSYiIuK0004josrKypKSEiIqLy8/fvw4EQ0bNowvN+AnswMEeO9xs4VeFEW0xANAN+RX4DUaDcovAAAhhb/jT0hIkG4pB9Bb4uLiFAoFIcD/gXfRs2XwrPxOROeee67VmVgD7wPuBXhFSlqKksSu7Vu26Z2eaKnY+tNxMwmalNREj+xcBwABRPr6t3//fqttSIjIYDCwF8UBAwawNi0AAAgRPMDjBi74CYVCERsbSzYBnu0hR6HXKsLn2LFl8I4WwBNa6H3CvTStyjt/UqqSzOUr732ssNlhLd5Y+sHCJ3/qFAXduPPHRzo6CwCClfT1r6Oj49ixY1YnFBcXWywWQv88AEDo4e/4Q2qyN/g51kXf1NTE3p8wlZWV7CDEK/BbtmwhewvgCQHeJ9wsh2vOuu2fBZGCqN++5KKCvz704c5a058+LupPbHrxjvMLblxVYSZlxrV3XdnP4ag7AAhWVjewbbvo+QL4wYMH++iaAADAP+Tm5iYlJRHRlClTevtaAH7HArzZbG5qauIPhmwLfXJyMnuHduDAgX379h05coSIcnNzExMTrc5EgPcBd1tVVdm3vf78lsl/X1vesn/1w7M/efKOAVmDMzPS+0Wb6k6Wlh4/eqyyxSgSkRA58s43Hr8gBvkdIPTYBvgZM2ZIH2GvBIQKPABA6ImOjj5w4MCpU6dyc3N7+1oAfiedYxcfH8+OWYCPi4uTbp0QIs4+++zi4mJRFJ944gn2iG3/PGENvE+4v9ZUk33Tf3/o+/Dfbnv2u4ousbPu+N6643t/kZ4hKKLzZv37jaVzz+yD+A4QiqwCvO0getaRRUQjRozw0TUBAIDfiI+P5xkJwB/wAF9VVcWqC3q9vqGhgUJvATxTUFCwYsUKIvroo4/YI3YDPKbQ+4BHhkXpBk57YuMFd2xb+/6q9T9u23W4vK6p1aCIiIlPGjDs9HETL5k964IhsUpPPBMABCK+jZwgCKIoWrXQm0wmtpgqIiJizJgxvXB9AAAAABK8H+Tdd98955xzKIQn2DF8GTwbRSwIgvMKPAK893hu2rOu/9hZC8bOWuCxLwgAwYIF+LCwsH79+h0/fvzYsWN6vZ7vFbR9+/bm5mYiGj9+vEaj6c0LBQAAACC68cYbH3744c7OznfffffRRx9NTk4+efIk+1BoTlvMycnp27dvbW0t/2NycrLtabwCjxZ678GebgDgdayFPiEhIT8/n4jMZvPBgwf5R7/77jt2MGnSpF65PAAAAACpxMTEq6++mogMBsPLL79MITzBjhEEYdy4cfyPdsvvhAq8TyDAA4B3tbe3d3R0EFGfPn2GDRvGHpR20fMAP3nyZN9fHgAAAICtBQsWKBQKIlq+fGt6YcgAACAASURBVHl7e3uIB3iS7AZPMgI8KvDegwAPAN7FJ9jxCjxJ5th1dnYWFhYSUWxsLCbYAQAAgJ/IyclhWxs2NDS89957Ib4GniTL4ImIzQWwFRYWplQqCRV4b0KABwDvYiNbiSg+Pp4HeF6B//nnn1l9ftKkSex/fAAAAAB/MH/+fHbw3HPPoQI/evRoVmDPyclx9E0QBIEtg0eA9x4EeADwLj6Cvk+fPtnZ2VqtliQBftOmTewAC+ABAADAr0yePJm1Bx4+fHjDhg3swZCtwGs0mrfeeuviiy9+9dVXnZyGAO9tCPAA4F08wPft21elUg0ZMoSIqqqq2CBTLIAHAAAAv3XXXXexg87OTiKKiIiIjY3t1SvqTTNnzvziiy8cLYBnWJW+vb1dFEVfXVdoQYAHAO+SVuCJiHfR79+/v7W1dfv27UTUr18/FuwBAAAA/Mfs2bOlJffQ3EPOJSzAWywWtkYSPA4BHgC8iw+xswrwe/fu/eGHH4xGI6H8DgAAAH5JrVbPnTuX/zFk++fl41vBo4veS9wL8OZj37yyfPnyF9/8rtTioQsCgCAjnUJPfw7w2AEeAAAA/NycOXP47mgI8N3CVvDepnLrs027V8z/x0d6iroq5epJGToPXRMABBPpFHr6c4DnvVUI8AAAAOCf4uLibrjhhhdeeIFCeAS9fAjw3uZeBV45OGeQkkjsLCkuRwkeAOyxWgOfmpoaFxdHREVFRXv27CGiQYMGZWRk9OIVAgAAADhx9913JyUlRURETJ8+vbevxd8hwHubewFeNfzW+2b0U5Bp+ztv/NruoUsCgKBi1UJPRMOGDSOijo4ONp4UC+ABAADAn6Wnp5eVldXV1Y0ZM6a3r8Xf8QDf3o546BVuDrETkq98Y92zf+lP+/8zY+YTmysMnrkqAAgebLs4jUYTFRXFHmEBnkP/PAAAAPg5jUaj02HFcPcwxM7b3FsDbzm1e9OuUzm3PfEvy/1Pf7NoctYLw88+98xh6X1jIrVKe8+WN2PB5bn2PgIAwYpV4Pv06SMIAnuEL4MnIkEQzj333F65MAAAAADwLB7gUYH3EvcCvPHHx6fNXNXJ/9xRVfTtB0XfOjxfN3PIPAR4gBBiMBjY/VfeP09/DvD5+flJSUm9cGUAAAAA4GlYA+9t7gV4Uqi1Wq0o+3StGvvOA4QUq03gmfz8fEEQ2AJ49M8DAAAABA0EeG9zL8BrL3+/qfN9D10KAAQfHuDZHnJMTExMWlpaWVkZIcADAAAABBEEeG9DRRwAvMh2BD1z1llnEVF4ePiECRN64bIAAAAAwAsQ4L3NzRZ6hywmE6lUuD0AEOLsttAT0dKlS3NzcydNmhQdHd0b1wUAAAAAnodt5LzNYxG74/iGl+7722Xjh6b1jY3UqVTRV31qILKUffb0knd/ON5q8dTzAEAgYXvIkU0FPikpafHixePHj++NiwIAAAAAr8AUem/zRIC31G5+7OJh+RfOffz1tT8dKK9rbjeYRTbZTmwu+u+D103MSjvjH2tLjR54LgAIKA0NDezAqgIPAAAAAMGHV+BbW1ulj7/xxhsajeYvf/mLXq/vjesKHm4HeLF122OXXfbguuN6kYTwfvnjL77kjOT/bRQXFherE0RL847lM8fNeP0wMjxAaHHUQg8AAAAAwcfRGvg333zTaDR+/fXXM2bM6Orq6o1LCxLuBvjObf++4ZHCZosQlnX5k98ePrFny2dLZw/mAV45+I71h394Znq6mkyVXy64c8VJ9NIDhJK6ujp2gAAPAAAAEPQcrYFn2w8R0TfffDNr1iyTyeTrKwsWbgb4tm9fWXHYJCoSpr6w4aOFk1M1tqdo+o2/66OvHjkzTBCbN73+/hGze88IAP6oq6tr1qxZBQUFJ06ckD7uaAo9AAAAAAQfvgZeWoE3Go2nTp3if1yzZs0NN9xgsaC02xPuBXjjvi1b6y2kyrrx/usynQy01w699a5psQoy7ftpW5Po1lMCgD/asmXLRx99VFhYuHz5cunjaKEHAAAACB1arVatVtOfA3xVVZXZbCaixMREpVJJRO+9995tt90mioiGLnMvwFuqK09ZSNAMPz1f7fzMyNxhmUoSTTVVtbjTAhB8+JySXbt2SR9nLfRKpTI2NrYXLgsAAAAAfIt10Utb6E+ePMkOLrzwwtdff10QBCJ69dVX//Wvf/XKFQY09wK8EBEVIZBo6ejobg6BpbmpxUIk6MJ0gltPCQD+iA8j2bt3r/RxVoGPj49XKDy2aSUAAAAA+C3WRS+twJeXl7OD1NTUG264YenSpeyPTz/99E8//eT7Kwxo7r2lVg3KHqgi6vrt2++dd8abDm36rsxMisiMzES8iwcIPgaDgR3U1tZWV1ezY5PJ1NTUROifBwAAAAgZrALf0dHB2uZJUoFPS0sjojvuuOO+++5jjyxYsACN9C5xL00rMi6+dJRWsNSsuu/BjXUOe+MNh15Z8HyRkYToyRefE+bWMwKAX+IBniRF+IaGBvY/MibYAQAAAIQIVoEXRZFv+W4V4Ino/vvvz8jIIKJffvnlk08+6Y3LDFRulsOVWX975IYBSjIcWH7JqAvv+3hXlf7PU+a7qratnD/l3Ds3NFgE7Yh/3HNpHDroAYKQdD9PHuD5HnII8AAAAAAhwnYreNsAr9PpHn30UXb8r3/9CzvDy+duP7sQc/7Tq5ZM6qsQDSe/ffzKUSlxiQVP7DISGX94cMLIIWlJmWdd/+wPp8yk7Df1+ffvHaX1yFUDgJ+xW4HHCHoAAACAUGMb4KVr4PlpV1999ejRo4no+PHjr776qm+vMYB5YEF65Ki71/36+QNTB0UqBBK7mqpq2kUic83BbbsPlzd1iSREDPzL/Z//vPrveTr3nw0A/JH0vumePXvYAa/AI8ADAAAAhAge4PkgelaBDw8Pj4+P56cpFIqnn36aHT/yyCPNzc2+vcxA5WTzdhdoM6c+8uWF8w58u+bzTT/9trekur5JL+qi45MGDDujYPK0y6cM6+OZJwIA/yQN8AcOHDCbzUqlEhV4AAAAgFBjVYE3Go01NTUk6Z/nJk6cOGXKlPXr19fV1T399NP//ve/fXypgciDuVoZl3fhjXkX3ui5rwgAgUIa4Ds7O4uLi3NycniAxxp4AAAAgBDBhtjRHwG+oqLCYrHQn/vnuaeffnrjxo1ms/nZZ5+dM2eObcgHKx7e083YXLqncPP6L9Z8+tlXG7f8dvhUh8PR9AAQRKxGj7AuelTgAQAAAEKNVQXedoKdVH5+/rXXXktEHR0dDz30kI8uMZB5KMCbaratWHTl2NTY+AEjCiZdOO3yGZdOPX/CGUP6xSTkTL758dV7mxDkAYKZdIgdEe3bt48kAV663gkAAAAAgphVgK+oqGB/TElJsXv+I488EhYWRkTvvPPO4cOHfXKNAcwDAd5S8+19E/PPvvGJj3+t0FvEP31MNDYe+e7N+/56ev6UhzfXIsQDBCvnFXi00AMAAACECKshds4r8Ozx2267jYjMZvO3337r6Mt2dnZ6+EIDk9sB3rD7yUtnPPFTjUkkQRGVfdHfH3jqxRWrvtq4cd3Hby17fOG14/prBRK7yjc+PH3qI9v0nrhmAPA7VgGe7SSHFnoAAACAUGO1Bt7uHnJWzjnnHHZQXFxs+1Gj0VhQUBAXF7dmzRoPX2sAcnOInaX07YVP/NIqkiJ69Jzlrz86e6T1uPl7Fj/y7fNzb1r8dXnr9ifnPnv5L/cPx0B6gKDDW+gFQRBFsaSkpK2tjW0jJwgCWugBAAAAQoRLa+CZrKwsdnD06FHbj+7cubOwsJCI7rnnnunTpysUHp7jFljc+8tbyr/4aEubSMrU2W+tW36tTXonIiE884JFq9fePypMEDt3r3xvu9GtZwQAv8Qr8Oz/X4vFsn//fhbg4+LiVCrctwMAAAAICbwCL7OFnogGDhyoVCrJQYDnC+OPHDny5ZdfevZqA457Ad50ZN9ho0iq3P+bPz3JyZcKG3X7vAujBDKX7dxdJzo+DwACFA/wo0aNYgdFRUWNjY2ECXYAAAAAoSQqKoodSFvoIyIi4uLiHH2KVqtNT08nohMnThiN1hVfaap/5plnbD/9gw8+GDp06EsvveT2tQcA9wK82KHvEElQZQ/Ndl5fE2LyhqYriSytzS0YZQcQfHgL/emnn84OfvzxR7PZTFgADwAAABBKpGvgu7q6ampqyOkCeIZ1cRqNxhMnTlh96MiRI/x4y5Yt27dvl360tLT05ptvPnDgwMKFC9mG88HNvQCv7JfaT0mipaG+sZtvlbmhrsFCgjKxX2JIL1kACFK8As8D/Pfff88OMIIeAAAAIHRI18BXVlayUN1tgB88eDA7sO2ilwZ4sinCz5s3T6/XE1F7e3tpaakbFx4Y3EvTquFTL8pUkvGX9/972NnadrFh/btfnrIIujOnTIgR3HpKAPBHvAKfm5sbHh5OkomjqMADAAAAhA7pNnJyFsAzfI6d1SB6URRZpI+Li2PN+atXry4rK2MfXb9+vXQ0/cGDBz3wF/BvbpbDNWfNf2xmiqLzl0dmz1tzwv7OfOaGX5+/9tb3yi3q7JvuuyYdBXiAIMQr8GFhYUOHDpV+qG/fvr1xRQAAAADQC6Qt9D0I8FYV+PLycjYMb9iwYTfeeCMRmUymZcuWEVFXV9c///lP6cmHDh3ywF/Av7k0Glq0mM0Wqxl0iZe99NnzXTPvXvPijNy14666/daZ4/MGZmb2jzLWnjxx4uiOr99+4bV1h5otmgGXL1315HmxgV9/b2xsDIXFFfKJoigIAt/xGwKXKP7+693W1saGjsjHOpfY5+bk5Pz222/8QzqdDj8evUIURbPZzJsjIHDx383W1tbevRLwCFEUOzs7Ozvt1z0ggPDfzZaWlt69EvAIURQ7Ojo6Ojp6+0ICnslkYgfNzc28+z0uLs75G0Je8jlw4ID0TL7iPT09/brrrlu+fLnZbH7ttdduv/32t99+mw2oDw8PZ+9Fd+/eXV9fz383m5ubPfkX85rIyEitVivzZFcCvOGTWbEzVzl+uems2PrWvVvfsvchQRWpKn37lovKHv/2sUkaF57TD2m1Wv4zAURkMBgEQdBoAvzfFYiMRiP7D1etVrOdPFz6XHYQFRWVn58v/VBiYqJOp/PURYJ8BoNBoVCo1erevhBwlzu/m+CHOjs7lUolfjeDAP/d1Gg0Ib4xdXDo7OxUqVTY+9YjdDpdZ2enXq8/deoUeyQjI8P5G8Ls7GyVSmUymUpKSqRn8m75IUOG5OTkTJs2bc2aNa2trc8888zbb79NRIIgLF269JZbbiGi4uJinU7X1dXFRikHyu+mSy/uPvoBFU31R7fXky69IfCTL1vfC5zJZFIoFLxVBgKXXq9nb0S0Wq38u4AMC/AajSYyMpLPsWNSUlLw49ErjEajSqXCNz8ItLe3s99NnU6Hu6VBoKurS61W43czCLS1tfHfTdyRCQIGg0GtVuOtvkdERESwAF9VVcUeyc7O7vb/vYyMjGPHjpWVlanVav56x4fSDxs2LCIi4t5772WL3pcvX84enzVr1k033TRv3ry2trYjR45ERERYLBYW4MPCwoLvjowrfx/VyBufe+EckzvPNnhksH0DAYDojzXw7L/a4cOHSz+EKfQAAAAAISUyMrK+vr6trY1PNe52Cj0RZWVlHTt2zGw2l5SU5OTksAd5E352djYRjRkzZty4cYWFhfyJnn76aUEQcnJyduzYUV9fX1tbG9y9n67kaeWgC/9+u9euBAACmDTAJyQkJCcnV1dXsw/Fx8f35pUBAAAAgG+xQfQGg4HVzyMjI2NjY7v9rKysrG+++YaIjh49ahXglUrloEGD2CPz58/nAf6BBx5ISUkhotzc3B07dhDRwYMHR44c6em/kB8JgCUBAOD/WIDnjffSZfDYRg4AAAAgpPCd5Ng4Ojnld7I3iL6rq4vdAsjIyODvM6dPn87ifW5u7p133skeHDJkCDsI+kH0nuloN7dVFR88eKS0tt3kdI27Mr1gxrg03DQACDps1DlfrZSfn//tt9+yYwR4AAAAgJDCAzzT4wB//PhxNmmC9c8zSqVyw4YNa9asueKKK/ibz9zcXHYQ9FvBux3gxfpflt/5twf+u7dZxs5qupmrpo1Lc202FgAEAEcV+OjoaFfn4QEAAABAQLOaV5eeni7ns2wDPNsljoh4Rz3/glY7wKMCL5Ol4t2bL7lzbR22RQcIYUaj0WKx0J8r8OwA5XcAAACAUNOzCnxmZqZGo+nq6uIBnk+w49nekcGDB7Nd6FCBd8pS8uGrX9VZSFAlnTXngXtmj89Ni9c56ZAXwvugFAcQdFj5nSQBPi8vT6vVGgwGmf9fAwAAAEDQ6FmAVyqVmZmZR44cOXnyZGdnp06nsxpB74RGoxk0aNDhw4dPnjyp1+td2lk9sLgX4I2H9h0yEqmybvvw66XnRnvomgAgsPAAz7vlw8LC3nnnnbVr186fP7/3rgsAAAAAeoFVC738ik5WVtaRI0csFsvx48fz8vJ4gLdqobcrNzf38OHDFovl6NGjvKM++Lg5UM5isRAp0y++sgDpHSBksQl2JKnAE9GVV175wQcfnH766b10UQAAAADQO6wq8DLXwJPNMngW4MPCwuTcAuChncf+oORegFempqcqiYxdXU6HzwNAULOtwAMAAABAyOpxBX7w4MHs4OjRo83NzdXV1USUlZWlUHSfWxHgZVANm35JtspS+eW7G+oR4QFCld0KPAAAAACEJmkFPioqKiYmRuYn8gp8cXGxS/3zJNlJjs+uD0puttCrRy94fk6WsnTFLdc+83OtyTPXBACBBRV4AAAAAOCkAT4tLU3+J0pb6OVPsGOGDBkiCAIFewXe3X3ghbjzn/vmrbpzr/9o4fjclVMunjg6NzNeKzh6tuypt/4lK2gnAgKEKNsp9AAAAAAQsqQt9C7tSZSRkcF2Mjp69CjfTK7bPeSY6Ojofv36VVZWFhcXm0wmlcrdqOuf3P5bWaq/e+3l7yosJIr1e796Z+9Xzk7WzUy9BQEeINighR4AAAAAuB5X4BUKxYABAw4dOlReXr579272oMwWeiLKzc2trKzs6uoqKysbOHCg/OcNIO5OoS9966arntpaa8YKeIDQhQo8AAAAAHBRUVH8OCUlxaXPZQ3zoihu2rSJPSKzAk+SZfBB3EXvXoA3H/3w9W8bLCToBk17ZNUvhyub2jucaXr/cqyQBQg6vAKPNfAAAAAAIG2hd6kCT5JB9G1tbUSUkJDQp08fmZ/LB9Hz9vvg414LvfnY4WNmEtTD7/7oowdG6zx0TQAQWDDEDgAAAAA4dwK8Vb1d5gQ7JhR2knOzhV6hUBApMi+YOhzpHSBkoYUeAAAAALger4En9wI8b6EvLi526UkDiJv7wA8eMlgliO2tbRYPXQ8ABB4MsQMAAAAAThrgXZpCT+4F+P79+8fGxlJQt9C7F+AVA/96w6Rosfrz19dUIsIDhCpU4AEAAACAi4iIYFuyR0VFRUdHu/S5qampYWFh/I8uBXj6Y2R9c3NzdXW1S58YKNxtoU+/8eUXZvSvWT33yvvWlXR65poAILAgwAMAAAAAp1AoMjMziWj48OE9+NxBgwbxP7oa4HkXfbAW4d0bYmep/O2r3VF/vfvaw/evWHJJ/gdnnFswKjczXis4OF89bPZ9s4a6vfc8APgVDLEDAAAAAKkvv/xy9erV1113XQ8+Nysra9++fUSkUCj4UHqZgn6OnXth2lj49F9nrvqj8N5eum1d6bZ1Ts7XzTztHgR4gGCDNfAAAAAAIJWXl/fggw/27HN5aE9PT5e208vBA3ywzrFzM0wrdREREUrZp+t08s8FgECBfeABAAAAwFP4HDtX++cJLfTd0F62sq5tpYcuBQAClNFoZAeowAMAAACAm/Ly8qwO5Bs4cKBWqzUYDMHaQu/mEDsAALTQAwAAAIDHjBs3bsGCBTNmzLjrrrtc/VyVSjVw4EAiqq6ubmlp8cLV9TKsRwcAd2GIHQAAAAB4iiAITz31VI8/ffDgwQcPHhRFsbS0ND4+3oMX5g/cC/Bie3VJVZv8HeAVkf0GJEc4mlEPAIEJFXgAAAAA8BN87h0vMgUT9wJ819f/GPq/KfTd081c1fTxFSjRAQQXVOABAAAAwE+oVL+HXJPJ1LtX4g1YAw8A7kIFHgAAAAD8RHAHePcq8OqCez794jqz3Y+ZOxoqSoqPFn236pPCCmPMmH++/f79E1OiUJ8DCDqowAMAAACAn+AB3my2n1QDmnsBXtFv1EUXj3J+zsOPP77xub9f/+DzV81Ur9+yZLxbTwgAfogHeFTgAQAAAKB3BXcF3vst9EJYxvmLPv7g9mzjnmdverjQ4PUnBAAfQws9AAAAAPgJpVLJDhDgey7q7FuuGa4yHftg5Rb5I+8AIDCghR4AAAAA/AQq8J6gTMtMVZKl/sjhWvm7zgFAQEAFHgAAAAD8RHAHePfWwMtnKis5aSai9rZ20UdPCQA+ggo8AAAAAPiJ4A7wvqnAm8o/fvTlIiMJ6v6pSdi5DiDIYIgdAAAAAPiJ4A7w7lXgLScLP9la5nQ4v6m18tDW1W+8/8spCwkRBRdNiBHcekoA8DtooQcAAAAAP6FQ/F4yRoC3Ydz2/HWzV8kcSydEjVnw6DVpKMADBBtU4AEAAADATwR3Bd4XcVpQhicNmTR3ReGmB8dG+OD5AMC3WAVeo9EIAjpsAAAAAKA38QBvNjvtFQ9M7lXgtZe8dqJqmfOpdIKgiUqID1e69UQA4MdYBR7ldwAAAADodcFdgXdzCr02NinZMxcCAAELAR4AAAAA/ERwB3isSAcAd7EWeuwhBwAAAAC9Tqn8vfsbAR4AwA5U4AEAAADATwR3Bd6VFnrDmutSrv1U5sx5u3SXv1ux8jJU6QCCCwvwqMADAAAAQK9DgOfMne3t7e4EeHNnEM4BBAhtRqPRYrEQKvAAAAAA4AcQ4P+gSB8/+2pNl2tPYDhZ+NWPJXrnk+oBIGBhE3gAAAAA8B8I8H9Qn3HHW+/dIf98U/WPy+++7YtSlt4VUXkzF99xDt7hAwQXHuDRQg8AAAAAvY4PscM+8PKZ6359497bFr29s8EsEgnhg6fdu2zpgosy8P4eINiwEfSECjwAAAAA+IHgnkLv+QAvNhe9+8DchS8XnjKJRIIu44L5z7+w6NKscI8/EwD4AVTgAQAAAMB/oIVeNrHt0OpH5971/ObyLpFI0PSfcPt/lj80a+j/t3ffAXJW9f74z8z2krpJKCENSBASWkgChqJ0hJ9IUS6KCNKMlADKVQFFLnoVVEBQECFUAeWCNJHuNwKCEFIEaYGQQEhCCZvdTdk+8/z+GFhTNjC72Uzb1+uvzezZZ8+ynJ15z+dzztMn1pPfBcglKvAAAOQOAT4tTfMfuHjq1F8+uKApCiFWPHjXUy65+qfH7TzAjeahsDnEDgCA3CHAf5rWdx6/7OzT//fuuSujEGLxATsf/79XXXzKboOLeuDaQI7TQg8AQO5wiN0naH/vqav++7Qf3/7vhmQIId537H/9+KpLz/jcZiU9Mjkg92mhBwAgd6jAdy5R+/z155563g2zahNRCLGqMYed95tff/eA4Wpw0KuowAMAkDsE+HVEDS/eesFp//27p99vi0KIVYz6wjm/vvLcQ7eq6OnZATlPBR4AgNzREeC10IcQopWv/fmnp5/96/+3qCUKIVY6dO8zL/vtBV/ZttpB89A7OcQOAIDcoQL/seSSx35yypRLHpyfOmh+k8nf/sVVPzl2x36yO/RiWugBAMgdHYfY9foA3/bMdRf/dX5zCCGEWLy6YvmTlx33ucu68t3KDvjlU7/YX5UOCogWegAAcocKfGeiRP1b/67v6leVj2mIuvkNgdykhR4AgNwhwH8sVvOZybvv3rIB363sMzX67aGwCPAAAOQOAf5jpXtf9Ld/XLTRpgLko44WenvgAQDIusIO8PFsTwDIbyrwAADkjsI+xE6ABzaICjwAALlDBR5gvVTgAQDIHQI8wHoJ8AAA5A4BHmC9OgK8FnoAALJOgAdYr4498CrwAABknUPsANZLBR4AgNyhAg+wXvbAAwCQO+LxeCwWCwI8wLq00AMAkFNSRXgBHmBtWugBAMgpqW3wiUQi2xPpeQI8sEFU4AEAyCmpCrwAD7A2FXgAAHKKFnqAzjnEDgCAnJJqoRfgAdamhR4AgJyiAg/QOS30AADkFAEeoHMq8AAA5BQt9ACdswceAICcogIP0LlUgC8tLY3FYtmeCwAA/Oc2clEUZXsuPUyABzZIqoVe+R0AgByRaqEPhViEF+CBDdJRgc/2RAAAIISPK/BBgAdYS6oC7wh6AAByhAAP0DkVeAAAcooAD9C5VIBXgQcAIEfYAw/Qifb29mQyGVTgAQDIGSrwAJ1IbYAPAjwAADlDgAfoRKp/PmihBwAgZ2ihB+iECjwAALlGgAfohAo8AAC5Rgs9QCc6ArwKPAAAOUIFHqATWugBAMg1KvAAndBCDwBArukI8IlEIrsz6XECPNB9KvAAAOQaLfQAnVCBBwAg1xRwC31xtifwKZoXPfvAfQ//Y86b79a3lNYMHT5q+72/ctS+W1XH1hwWrZo//c47Hnz65bfrWssHjdphz0OPPnLysPK1RqU7DEiTQ+wAAMg1AnxWRA2zp/3okgfeaopi8bLqvqXN78//97tvvjTjH88cf973Dt26vGNc3XNXn//LRxe1hnhpdXVx47uvPXXHazNnHXnBT44dW/WfcJ7mMCB9WugBAMg1BRzgc7eFPqr/xzWXP/BWc/Fme5x88Q2333bLbX+6/bfnHjG2b+LDWTdeetvLLR+PW/7P6696dFFb1bZf/vF1t9926x9vvfq7Bw4vaZ53z2/+9ErLfy6X3jCgK7TQ6PMzugAAIABJREFUAwCQa+yBz7zogyf/+tzyUDTyiO+d9cVtB5aEEIoqh332uHNP33tQLLHksb88tzIKIYTkksfvfqYhlG9/zNlfHz+4NIRYxdC9TjnrsOFFyXcfu+fphih1uTSHAV2iAg8AQK5Rgc+85tdfnZ+I4qP2/Nyo1XNBrO+EAyYPjkdNc19ZkAghREtnzpifCBU7H7DXJv/5WUq22m/fMUVR00vPzUnF/DSHAV1jDzwAALlGgM+4qKG2tj2KlW4+dMjaU6ysqoiF0LhqVRRCaJn32vxEVDRq3GfWONcuNnjsdpsURc1vzH0rGdIfBnSNAA8AQK4p4Bb6XD3ELjZwz9Mu3ralaMAWJWt+Ilrx5rz3kyFeM7gmHkJy6eL32qJY1WZDB655DF18s2GbxcPihiVLVkbb94vSG+YkO+iijhZ6e+ABAMgRAnzmldaMGFOzzqPRin/96a7ZzaFoxB57bFkUQqK+riEK8X4D+q4VvmPl/ftXxMKqhvr6KPSL0huWXoBvaWmJIh33/5FMJqMoam5uzvZE2FAdf+Da2trS/J+8sbEx9UEsFvP/QK5JJpOJRMLvpQB0rM3W1tZkUsdY3ouiqL293dosAIlEIvVBa2trx8fkL2uzYCQSiY4W+qamptz/nZaUlHS84/CpcjbAd6Jl8VM3XXr1Q4uT8SF7f+3gUUUhhKilpSUKoay8bO3wHSstL4uFVS3NLVHaw9KzcuVKAX5dK1euzPYU6DHp/5lbvnx5x8f+H8hByWSyra0t27Ogx+T+SxDSZG0WmKampmxPgZ7R2trasT2QvNaRh1etWpX7r1Grq6sLLsC3LZ1977Tr7nx2cXOI99vhG+dO2a1/LIQQomR7IoQQj6+7lz8ej4UQtbW1pz8M6KKOF6AlJSWfPBIAADKjgA+xy/0AHzW99bfrLpv2t7cao1jxwB2PnHrm0eMHffz+RKykrDSElk5+L1FbW3sUYmWlpekPS091dbUK/OqamppisVh5eXm2J8KG6njXuby8vOOvXpr69u1bXV29ceZFNzU2NhYVFTmeoAC0tLSk3izrxtokB1mbBaNjbVZUVKRfPSNnrVq1qqSkxLm8BaC5ubnj6bKoqCj3X6N2qRKW468Dmt965KpfXP/kouZQXLP9IcedfPTnRlatcYx8ZWVFLCxftbJx7USdbFzZGEKoqKqIhRDSHJYWz7hraWlpicfjAnwBSCaTqQBfUlKS5v/nHdtxq6ur/T+Qa5qbm4uKivxeCkAikUiFhNLSUq8sC0BTU1NxcbG1WQDa29s71qZOtALQ2NhobRaGtra2jvfUCq/QmMsBPvHB36+86HdPfxhVjNrvxDNP2m/LynVCdnzIpkOKwnsNH9a2hbD6G59RQ21dexQrGbxJTTyEKL1hQBd1nEIvVAAAkCMKuIU+d2NrYuF9v7r66drQf8IpF18ydf9O0nsIIdZ3+PAB8aht4YJFax792bZw/juJEN985PDS9IcBXdRx0IvOFAAAcoQAn3mt/37gL3ObYzX7nP6dg0euv+mhaKsdx/WJJZbMnr149RvrtL0+68UVUXzIjjsOjXdhGNA1HQFeBR4AgBwhwGdc4s1Zc+qi2ICdJo5qq69bV/3yplQtvXyn/ffaJJ5Y8PBdzzV8vME98d7jd01fGhVvue++oz9qmE9zGNAlWugBAMg1HbcfK7wAn6N74KMVCxcuS4ao9vGfn/B4ZwPimx9xyVXHb1MUQul2Rxy7+zOXPvXEFRfElhy+x4iyZa8+9ud75zQWDT3kuEOGdQTzNIcBXaGFHgCAXFPAFfhcDfANdfXJTx8WQgghVrPHaefXt//i5men33zZ9NRDFSP3+/b3j99x9RPr0xwGdIEKPAAAuaYjwCcSiU8emXdyNMDHRxx9xT1Hpzs6Vrn1F8+9ao83Zs96bXF9e/mgEeN22XF4n3Wq6mkOA9JmDzwAALmm4zZyKvC5q2TA6F33G91Tw4B0aKEHACDXFHAFPlcPsQPygRZ6AAByTQHvgRfgge5TgQcAINcUcAu9AA90nwo8AAC5RgUeoBMOsQMAINcI8ACdSAX4kpKSWMzdGAEAyAla6AE6kWqhtwEeAIDcoQIP0IlUBV7/PAAAuUOAB+iECjwAALlGgAfohAo8AAC5xh54gE4I8AAA5BoVeIC1tbe3J5PJoIUeAIBcIsADrC21AT6owAMAkEu00AOsLdU/H1TgAQDIJSrwAGtTgQcAIAcJ8ABr66jAC/AAAOQOLfQAa9NCDwBADhLgAdamhR4AgBykhR5gbSrwAADkIBV4gLXZAw8AQA4qKSlJfSDAA3xECz0AADkoFovF4/EQQiKRyPZcepgAD3STFnoAAHJTahu8CjzAR1TgAQDITalt8AI8wEdU4AEAyE0q8ABrcIgdAAC5SYAHWIMWegAAcpMWeoA1qMADAJCbVOAB1tBRgbcHHgCAnCLAA6xBBR4AgNykhR5gDQI8AAC5SQUeYA1a6AEAyE2pAJ9MJpPJZLbn0pOKsz0BIF+1tbWlPlCBBwAgp3z3u99NJBLxeKFVrAV4oJtU4AEAyE2HH354//79U3X4QlJob0gAGWMPPAAAZJIAD3RTRwVegAcAgAwQ4IFu6qjAa6EHAIAMEOCBblKBBwCATBLggW5SgQcAgEwS4IFucogdAABkkgAPdJMWegAAyCQBHugmLfQAAJBJAjzQTSrwAACQSQI80E0q8AAAkEkCPNBNDrEDAIBMEuCBbtJCDwAAmSTAA92UqsCXlJTEYrFszwUAAAqfAA90U6oCbwM8AABkhgAPdFOqAq9/HgAAMkOAB7opFeBV4AEAIDMEeKCbUi30KvAAAJAZAjzQTVroAQAgkwR4oDva29uTyWTQQg8AAJkiwAPd4SbwAACQYQI80B2p/vmgAg8AAJkiwAPd0RHgVeABACAzBHigO7TQAwBAhgnwQHdooQcAgAwT4IHuUIEHAIAME+CB7lCBBwCADBPgge5wiB0AAGSYAA90hxZ6AADIMAEe6A4t9AAAkGECPNAdKvAAAJBhAjzQHc3NzakPVOABACAzBHigO1asWJH6oE+fPtmdCQAA9BICPNAdK1euTH1QXV2d3ZkAAEAvIcAD3aECDwAAGSbAA90hwAMAQIYJ8EB3dLTQC/AAAJAZAjzQHR0VeHvgAQAgMwR4oDu00AMAQIYJ8EB3CPAAAJBhAjzQHW4jBwAAGSbAA92hAg8AABkmwAPdkQrwJSUlZWVl2Z4LAAD0CgI80B2pFnrldwAAyBgBHuiOVAVegAcAgIwR4IEua2tra2lpCU6wAwCADBLggS5zgh0AAGSeAA90mQAPAACZJ8ADXdZxE3gBHgAAMkaAB7qsowJvDzwAAGSMAA90mRZ6AADIPAEe6DIBHgAAMk+AB7qsYw+8FnoAAMgYAR7oMhV4AADIPAEe6DIBHgAAMk+AB7rMbeQAACDzBHigy9xGDgAAMk+AB7pMCz0AAGSeAA90mQAPAACZJ8ADXeY2cgAAkHkCPNBlKvAAAJB5AjzQZQI8AABkngAPdFmqhb64uLi8vDzbcwEAgN6iONsTyD+NjY1RFGV7FjkkkUgkk8lVq1ZleyJsqLa2ttQHLS0t7e3tnzBy+fLlIYTq6mq/91yWTCbb29v9jgpAx9psbm7u+Jj8lUwm29rarM0C0PFc2dzc3Nramt3JsOGiKLI2C0PH2mxqaorH86BiXVZWVlycbjAX4LuspaUlmUxmexY5JIqiWCzW3Nyc7YmwoTremWpra/vkkJBqoa+qqvJ7z2VRFEVRlEgksj0RNlT6a5O8kFqY1mYB6Fib0nthiKKovb39k2sY5IW8W5vFxcUC/EY0YMCAbE8htzQ0NMTjcXuhC0BjY2NjY2MIobq6uqysbH3D2tvbW1paQgj9+vWrqanJ3Pzoovr6+uLiYncKKACrVq1qamoKIfTp06e0tDTb02FD1dXVlZaWVlVVZXsibKiVK1em3sju27dvSUlJtqfDhlq2bFl5eXllZWW2J8KGWrFiRceL1fSDcb7Ig44CIKc4wQ4AALJCgAe6puMm8AI8AABkkgAPdE1HBV5vNgAAZJIAD3SNFnoAAMgKAR7oGgEeAACyQoAHusYeeAAAyAoBHugae+ABACArBHiga7TQAwBAVgjwQNcI8AAAkBUCPNA1HXvgtdADAEAmCfBA16jAAwBAVgjwQNcI8AAAkBUCPNA1WugBACArBHiga1TgAQAgKwR4oGsEeAAAyAoBHuiajhZ6AR4AADJJgAe6JlWBLyoqqqioyPZcAACgFxHgga5JBXgn2AEAQIYJ8EDXpAK8/nkAAMgwAR7ogkQi0dTUFAR4AADIOAEe6AIn2AEAQLYI8EAXdNxDzh54AADIMAEe6AI3gQcAgGwR4IEuEOABACBbBHigC+yBBwCAbBHggS6wBx4AALJFgAe6QAs9AABkiwAPdIEADwAA2SLAA13QsQdeCz0AAGSYAA90gQo8AABkiwAPdIEADwAA2SLAA12ghR4AALJFgAe6QAUeAACyRYAHukCABwCAbBHggS7oaKEX4AEAIMMEeKALOirw9sADAECGCfBAF6QCfDwer6yszPZcAACgdxHggS5IBfjq6upYLJbtuQAAQO8iwANdkNoDbwM8AABkngAPpCuZTDY2NgYBHgAAskGAB9K1cuXKKIqCE+wAACAbBHggXW4CDwAAWSTAA+kS4AEAIIsEeCBdqRPsggAPAADZIMAD6eqowNsDDwAAmSfAA+nSQg8AAFkkwAPpUoEHAIAsEuCBdNkDDwAAWSTAA+nSQg8AAFkkwAPpUoEHAIAsEuCBdNkDDwAAWSTAA+nSQg8AAFkkwAPpEuABACCLBHggXfbAAwBAFgnwQLrsgQcAgCwS4IF0aaEHAIAsEuCBdKUCfDwer6yszPZcAACg1xHggXSl9sBXVVXF4/50AABApnkVDqQrVYHXPw8AAFkhwANpSSaTjY2NwQl2AACQJQI8kJZVq1Ylk8mgAg8AAFkiwANpcQQ9AABklwAPpCV1gl0Q4AEAIEsEeCAtHRV4e+ABACArBHggLVroAQAguwR4IC0CPAAAZJcAD6SlYw+8FnoAAMgKAR56tdSt3dPhEDsAAMguAR56r1//+tf9+vUbP378M88886mDHWIHAADZJcBDL/W73/3uO9/5Tnt7+5w5c/bYY4+TTjpp2bJl6w6rq6t78MEHf/SjH02bNi31iAo8AABkRXG2JwBkwc0333z66adHUZT6ZxRF119//T333HPBBRcceuihL7744gsvvDBz5sxZs2a9/vrrHcNSampqsjFlAADo7QR46HXuvPPOE088MZlMhhBOOOGEYcOGXXLJJc3NzcuWLTvrrLPOOuus9X1hv379vvSlL+29994ZnCwAAPARAR7yVTKZfPDBB6dNm9bS0nLhhRfuuuuu6XzVAw88cMwxxyQSiRDCV7/61WuvvbaoqOiYY445/fTTH3300bUGx2KxMWPG7LbbbpMnT548efJ2220Xj9t3AwAA2SHAQ+5qa2u79957//jHP5aVlU2cOHHSpEnjx4+vrKx8//33r7/++muvvfbtt99OjXz00UdPOOGEiy++uNP+9mQyOXfu3FmzZj3//PPXXnttW1tbCOGwww675ZZbioqKQgijR49+5JFH/vCHP1x00UXt7e0TJkyYNGnShAkTxo8f369fv0z+yAAAwPrE1trdCl3V0NAQj8cdbNaz3n777euuu+76669/7733Vn+8uLh4zJgx8+bNa21tXferampqfv7zn5944onxePztt99+/vnnZ8yYMWPGjNmzZ3ecIZ9y4IEH3nfffWVlZas/2NjYmLqrXJ8+fdb6FPmovr6+uLjYXQMKwKpVq5qamkIIffv2LS0tzfZ02FB1dXWlpaVVVVXZnggbauXKlc3NzSGEfv36lZSUZHs6bKhly5aVl5dXVlZmeyJsqBUrVrS0tIQQ+vfvX1xcaBXrQvt5IK8lk8mHHnrod7/73UMPPZTao76W9vb2V155peOfn/3sZ6dMmTJv3rxf/OIXLS0ttbW1p5xyyqWXXlpfX//++++v77sceOCBd999t4gOAAD5RYCHDdXY2HjNNddUVFScfPLJ3X6Tb9myZddff/0111wzf/78jgdjsdg+++wzZcqUwYMHd5TT33777T59+nzta1+bMmXKTjvtlBp57LHHTp069eGHHw4hzJ07d62L9+3bd/z48RMmTJgwYcLEiRO33HLL7k0SAADIIgEeQhRF06dPnz179pFHHjlq1Kgufe3DDz986qmnLliwIIRw77333nHHHf37919rzOzZsx977LHRo0fvtttum2+++eqfmj9//syZMx9++OE//elPqRbZlJqamuOPP/6UU04ZM2ZM6pHPfe5zqQ+WLl1aVVW1Vn/X6NGjH3roobvvvvvss89euHBhWVnZzjvvPHHixNTO+dGjRzt8DgAA8p098GyovN4DX1tbe9NNN1177bWvv/56CKGiouLcc8/93ve+l057+fvvv3/22Wf/8Y9/XP3BbbbZ5v777+9I3bW1teedd960adM6+uGHDRu26667jhw58oUXXpg1a9ayZcvWuuzEiRNPO+20//qv/yovL+/GT9TS0vLGG29ss8023diMZw98gbEHvmDYA19g7IEvGPbAFxh74AtGYe+BF+DZUHka4J9++ulrrrnmrrvuSj31rm706NFXXXXV/vvvv76vbW1tvemmm37wgx/U1dWlHtlhhx0WLFiQOihuwIABd9xxx7777nvdddedd95560b0TpWXlx911FGnnXbapEmTuvszbSgBvsAI8AVDgC8wAnzBEOALjABfMAo7wBfazwOfrLGx8bbbbrv66qv/9a9/rf74+PHjt9566zvvvDOKojfeeOOAAw446qijzjvvvHHjxqVutJayYMGC66677oYbbug4Iq6qquqiiy6aOnXqa6+9duihhy5YsKCuru7ggw8eM2ZMx2lzZWVlU6ZMaW1t/ec///nSSy+1t7enHq+srNx555132WWXCRMmHHzwwZ3eAQ4AACBFBZ4NlbMV+Dlz5tTW1nb8M5lMPvLIIzfeeGNH2TyEUFlZefTRR3/rW99K1b2feuqpU0899aWXXuoYUFVVNX78+EmTJo0ZM+bee+995JFHVj8c/uCDD7766qtHjBiR+ueHH3545JFHPvnkk6tP46CDDrryyitHjx6d+ueqVatmzZq1cOHCHXfccbvttlv93YGsU4EvMCrwBUMFvsCowBcMFfgCowJfMAq7Ai/As6FyLcA3NjbefvvtV1111Vo19rWMGTPm1FNPPe6449Y6c66tre2KK674n//5n5UrV67va2Ox2H777XfGGWd88YtfXOtTra2tp5122rRp00III0eOvPzyyw877LAN+GkySoAvMAJ8wRDgC4wAXzAE+AIjwBeMwg7whfbzUGDefffdIUOGrK9MvWjRotbW1o5/rlix4g9/+MMNN9yweo19LUVFRYcccshpp522//77x2KxdQeUlJScc845Rx999LRp05599tkZM2asfrVBgwZ985vfPOWUU7beeutOr19aWnrdddcddNBBtbW1X//61z0HAAAAPUWAJ0c1NTVNmTLlD3/4w9ChQ0888cSTTjppiy22SH0qkUjcfffdl1566XPPPfcJVxgzZsznP//51R8ZOXLkV7/61ZEjR37qd99iiy0uvPDCEEIURfPmzZsxY8Yrr7wybty4I444Ip3S9JFHHvmpYwAAALpECz0bamO00L/zzjuHH374rFmzOh5JVc5PPvnkefPmXXHFFW+99db6vjYejx9yyCGnn376+mrsrI8W+gKjhb5gaKEvMFroC4YW+gKjhb5gaKGHjHryySe/8pWvfPDBByGEoqKiRCIRQkgkEvfff//999+/+shRo0ZNmDBh9Ue23nrrk08+edSoUZmcMAAAQAYI8GRaa2vrCy+8MGvWrJkzZ86cOXPx4sVjx46dNGnSrrvuOmnSpL/85S9nnXVWW1tbCGHTTTe96667BgwY8Pvf//6WW26pr6/vuMhuu+32ne9854gjjsipU9wBAAA2Hi30bKjVW+jvueeen/70p/F4fMLHxo4dG4/HX3311eeff/7555+fMWPGCy+8kMrnn2zSpEl333330KFDU/9samq64447br/99pqamjPOOGPy5Mkb96fqlbTQFxgt9AVDC32B0UJfMLTQFxgt9AVDCz2F5vzzz3/iiSd+8pOf7L333j11zTfffHPq1KkPPvhg6p8zZ85MfVBRUVFcXLxixYr1fWFFRUXqhenqjjvuuGuuuaa8vHz1Yccff/zxxx/fUxMGAADILwJ8r3Prrbf+7Gc/CyEcdNBBN91001e/+tUNvGBzc/OVV155+eWXr5vDQwjrPrjZZpt11Od32WWXIUOGzJ07d8bHFi1adO65555xxhkbOCsAAIACI8D3Lu+///5ZZ52V+ri1tfWYY45ZsmTJd7/73W5c6r333psxY8bzzz9/++23z58/P/XgwIEDf/aznx188MGzZ8+e+bG2trYJEyZMmjRp4sSJkyZN6uiK7/CZz3zmM5/5zDe+8Y0N+dEAAAAKmwDfu5x22mm1tbUhhH79+jU0NERRdM455yxevPhXv/pVPB7/5K+tq6tLnTyX2s3+zjvvrP7ZWCz2zW9+8+KLLx48eHAIYdiwYV/60pc23g8CAADQ2wjwvcidd9755z//OYTQp0+fOXPmXHbZZb/97W9DCJdffvn8+fO/8Y1v7LLLLiNGjOgY39jYOHv27FSZfebMmfPmzVvflbfffvtrrrnGwXIAAAAbjwDfW3z44Yenn3566uNLLrlk1KhRv/nNb4YOHXreeedFUXTffffdd999IYTBgwdPmDBh0003nT179ssvv9ze3t7p1YqLi8eOHZtqid9uu+223377vn37Zu6HAQAA6H16V4CPVs2ffucdDz798tt1reWDRu2w56FHHzl5WHks2/PaKObOnTt69OiOxvipU6d+8MEHIYTPf/7zU6ZMST34gx/8YOjQoSeffHLqRgshhKVLlz700EPrXi0ej48ZM6bj8Lmdd9654x4bDQ0NsVhh/jcEAADIHb0owEd1z119/i8fXdQa4qXV1cWN77721B2vzZx15AU/OXZsVaHlz+bm5r322qtPnz5Tp0795je/OX369D/+8Y8hhMrKymnTpq2et4899tg999zz73//+8yZM2fNmvWvf/0rdUfTEMLw4cMnfWz8+PGpO70DAACQFbEoirI9h4yIlj9z6emXPNlQte2R55xz9PjBJU2Ln7rh51c+ujCx2Zd+esWJY8uyPcGedeONN55wwgmpj/v161dUVLRs2bIQwuWXX95xCn2n2traXn755bq6uu22226TTTZJ53s1NDTE43HxvgA0NjY2NjaGEPr06VNWVmBrojeqr68vLi6urq7O9kTYUKtWrUrdkrNv376lpaXZng4bqq6urrS0tKqqKtsTYUOtXLkyVfbo169fSUlJtqfDhlq2bFl5eXlHkyn5a8WKFan+4v79+xcXF1rF+lMOHi8YySWP3/1MQyjf/pizvz5+cGkIsYqhe51y1mHDi5LvPnbP0w2F9i7GZpttNnHixNTHDQ0N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" width="672" /></p>
-</div>
-<div id="plotting-activity-of-authors" class="section level2">
-<h2>Plotting activity of authors</h2>
-<p>We want to plot the number of emails sent by each author regardless of the mailing list they were sent on. We display only the 10 top posters:</p>
-<table>
-<caption>
-Top 10 senders on mailing lists
-</caption>
-<thead>
-<tr>
-<th style="text-align:left;">
-Sender address
-</th>
-<th style="text-align:right;">
-Number of posts
-</th>
-<th style="text-align:left;">
-Company
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:HuUTAptkwgrWcnci@J7oMeA+Al9Hb/vYm">HuUTAptkwgrWcnci@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-29164
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:gO57kNAqL7Y70OH+@J7oMeA+Al9Hb/vYm">gO57kNAqL7Y70OH+@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-17653
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:X6AhP2He7WGL1wcK@J7oMeA+Al9Hb/vYm">X6AhP2He7WGL1wcK@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-12335
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:ac/JH1ezA0QBmKkV@J7oMeA+Al9Hb/vYm">ac/JH1ezA0QBmKkV@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-8620
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:GLu+wC9hGVzMJRH7@NYqkJ6NPbd9V5DzE">GLu+wC9hGVzMJRH7@NYqkJ6NPbd9V5DzE</a>
-</td>
-<td style="text-align:right;">
-8122
-</td>
-<td style="text-align:left;">
-NYqkJ6NPbd9V5DzE
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:VG1icUOSg49sLMtF@J7oMeA+Al9Hb/vYm">VG1icUOSg49sLMtF@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-6969
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:wiKbJVo5pJF6zoa6@J7oMeA+Al9Hb/vYm">wiKbJVo5pJF6zoa6@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-6448
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:V7haf3wHLxgtSvnH@J7oMeA+Al9Hb/vYm">V7haf3wHLxgtSvnH@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-5050
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:cm2ruV20OJQz7tA5@J7oMeA+Al9Hb/vYm">cm2ruV20OJQz7tA5@J7oMeA+Al9Hb/vYm</a>
-</td>
-<td style="text-align:right;">
-5012
-</td>
-<td style="text-align:left;">
-J7oMeA+Al9Hb/vYm
-</td>
-</tr>
-<tr>
-<td style="text-align:left;">
-<a href="mailto:sWBs4OdbCi+elyc4@FqrmmhRf3bBv5PFC">sWBs4OdbCi+elyc4@FqrmmhRf3bBv5PFC</a>
-</td>
-<td style="text-align:right;">
-4934
-</td>
-<td style="text-align:left;">
-FqrmmhRf3bBv5PFC
-</td>
-</tr>
-</tbody>
-</table>
-<p>Now plot these 50 top posters with ggplot and use the company (i.e. second part of the email address) for the colour:</p>
-<pre class="r"><code>authors.subset &lt;- head( authors, n = n)
-
-authors.subset.df &lt;- as.data.frame(authors.subset)
-names(authors.subset.df) &lt;- c('ID', 'Posts')
-authors.subset.df$Author &lt;- substr(x = authors.subset.df$ID, 1, 16)
-authors.subset.df$Company &lt;- substr(x = authors.subset.df$ID, 18, 33)
-
-p &lt;- ggplot(data=authors.subset.df, aes(x=reorder(Author, -Posts), y = Posts, fill = Company)) + 
-  geom_bar(stat=&quot;identity&quot;) + 
-  theme_minimal() + ylab(&quot;Number of posts&quot;) + xlab('Posters') + 
-  ggtitle(paste(n, &quot; overall top posters on Eclipse mailing lists&quot;, sep=&quot;&quot;)) +
-  theme( axis.text.x = element_text(angle=60, size = 7, hjust = 1))
-g &lt;- ggplotly(p)
-g</code></pre>
-<div id="htmlwidget-ed3698fbe2ff68c709dc" style="width:672px;height:480px;" class="plotly html-widget"></div>
-<script type="application/json" data-for="htmlwidget-ed3698fbe2ff68c709dc">{"x":{"data":[{"orientation":"v","width":0.900000000000006,"base":0,"x":[37],"y":[2048],"text":"reorder(Author, -Posts): U9dy44BiWBmoSqg+<br />Posts:  2048<br />Company: bqB7OSvXOPacUbzq","type":"bar","marker":{"autocolorscale":false,"color":"rgba(248,118,109,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"bqB7OSvXOPacUbzq","legendgroup":"bqB7OSvXOPacUbzq","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.900000000000006,0.900000000000006],"base":[0,0],"x":[36,47],"y":[2196,1663],"text":["reorder(Author, -Posts): WJrArB4kWfLiJiV2<br />Posts:  2196<br />Company: C4v9CUFnIpltBSr4","reorder(Author, -Posts): RhgEvzLyh5EnmM3y<br />Posts:  1663<br />Company: C4v9CUFnIpltBSr4"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(236,130,57,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"C4v9CUFnIpltBSr4","legendgroup":"C4v9CUFnIpltBSr4","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.900000000000006,"base":0,"x":[34],"y":[2264],"text":"reorder(Author, -Posts): b2ZD0yv/HD3/53In<br />Posts:  2264<br />Company: CIznJI2hBWY/QKqL","type":"bar","marker":{"autocolorscale":false,"color":"rgba(219,142,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"CIznJI2hBWY/QKqL","legendgroup":"CIznJI2hBWY/QKqL","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[26],"y":[2637],"text":"reorder(Author, -Posts): UwOu+c5jvx4hHWlC<br />Posts:  2637<br />Company: dltKFlBztGpbvcSB","type":"bar","marker":{"autocolorscale":false,"color":"rgba(199,152,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"dltKFlBztGpbvcSB","legendgroup":"dltKFlBztGpbvcSB","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.900000000000006,"base":0,"x":[43],"y":[1828],"text":"reorder(Author, -Posts): pasx/SvuwCgMejbC<br />Posts:  1828<br />Company: DuWPxK9BQPQW640N","type":"bar","marker":{"autocolorscale":false,"color":"rgba(174,162,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"DuWPxK9BQPQW640N","legendgroup":"DuWPxK9BQPQW640N","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[22],"y":[3138],"text":"reorder(Author, -Posts): vBh0QceoHBc19+tm<br />Posts:  3138<br />Company: eE8Y2+UTg0ZSRZ5p","type":"bar","marker":{"autocolorscale":false,"color":"rgba(143,170,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"eE8Y2+UTg0ZSRZ5p","legendgroup":"eE8Y2+UTg0ZSRZ5p","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.900000000000006,0.900000000000006],"base":[0,0],"x":[38,46],"y":[1892,1761],"text":["reorder(Author, -Posts): lNDiY/piFdiX7JVo<br />Posts:  1892<br />Company: f5Dz6eKvAzHVaYMU","reorder(Author, -Posts): lOk31W5jDPIGF9oJ<br />Posts:  1761<br />Company: f5Dz6eKvAzHVaYMU"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(100,178,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"f5Dz6eKvAzHVaYMU","legendgroup":"f5Dz6eKvAzHVaYMU","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[12],"y":[4641],"text":"reorder(Author, -Posts): dbS86hI03IctUHTF<br />Posts:  4641<br />Company: f8Ol8lohsH75e9Sr","type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,184,27,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"f8Ol8lohsH75e9Sr","legendgroup":"f8Ol8lohsH75e9Sr","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.899999999999999,0.900000000000006],"base":[0,0],"x":[10,33],"y":[4934,2269],"text":["reorder(Author, -Posts): sWBs4OdbCi+elyc4<br />Posts:  4934<br />Company: FqrmmhRf3bBv5PFC","reorder(Author, -Posts): TahjIZyInF8Az2Qv<br />Posts:  2269<br />Company: FqrmmhRf3bBv5PFC"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,189,92,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"FqrmmhRf3bBv5PFC","legendgroup":"FqrmmhRf3bBv5PFC","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[21],"y":[3172],"text":"reorder(Author, -Posts): HOqnYZNAqkttlErX<br />Posts:  3172<br />Company: hQTXaEVNJS1gMkCj","type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,192,133,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"hQTXaEVNJS1gMkCj","legendgroup":"hQTXaEVNJS1gMkCj","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.900000000000006,0.900000000000006],"base":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"x":[1,2,3,4,6,7,8,9,13,14,15,16,18,24,25,28,30,31,44,50],"y":[29164,17653,12335,8620,6969,6448,5050,5012,4287,4146,4123,3912,3530,2807,2763,2578,2409,2342,1781,1600],"text":["reorder(Author, -Posts): HuUTAptkwgrWcnci<br />Posts: 29164<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): gO57kNAqL7Y70OH+<br />Posts: 17653<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): X6AhP2He7WGL1wcK<br />Posts: 12335<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): ac/JH1ezA0QBmKkV<br />Posts:  8620<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): VG1icUOSg49sLMtF<br />Posts:  6969<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): wiKbJVo5pJF6zoa6<br />Posts:  6448<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): V7haf3wHLxgtSvnH<br />Posts:  5050<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): cm2ruV20OJQz7tA5<br />Posts:  5012<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): q3n8fdSkeADZReLl<br />Posts:  4287<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): oaM21mDSixZdeKo/<br />Posts:  4146<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): OYdSbt9YhX9wY/5f<br />Posts:  4123<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): c1Oa7BPMK2UOjooC<br />Posts:  3912<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): IjABf6zT6Ntix3xE<br />Posts:  3530<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): zPX2taQyDogjJBv9<br />Posts:  2807<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): eO1zwNZKos30SKlC<br />Posts:  2763<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): En7Q2WYqPhcLpUCB<br />Posts:  2578<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): Y/jrxOf43lAj9w2p<br />Posts:  2409<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): xDFqtlfLhlNogOjI<br />Posts:  2342<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): IRUCjalXqAkIo1QH<br />Posts:  1781<br />Company: J7oMeA+Al9Hb/vYm","reorder(Author, -Posts): NVoO2603rKs3VMt4<br />Posts:  1600<br />Company: J7oMeA+Al9Hb/vYm"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,193,167,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"J7oMeA+Al9Hb/vYm","legendgroup":"J7oMeA+Al9Hb/vYm","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[19],"y":[3463],"text":"reorder(Author, -Posts): PyUGf+aJnxmC8MHK<br />Posts:  3463<br />Company: kt8jVeBfPjzDlgUK","type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,191,196,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"kt8jVeBfPjzDlgUK","legendgroup":"kt8jVeBfPjzDlgUK","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.900000000000006,0.900000000000006],"base":[0,0],"x":[40,49],"y":[1860,1618],"text":["reorder(Author, -Posts): G5lVqwBVrl8nH71f<br />Posts:  1860<br />Company: KX5Bckhyz4IEaogX","reorder(Author, -Posts): jZ5N3BDHgz7ThLtF<br />Posts:  1618<br />Company: KX5Bckhyz4IEaogX"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,186,222,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"KX5Bckhyz4IEaogX","legendgroup":"KX5Bckhyz4IEaogX","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[20],"y":[3383],"text":"reorder(Author, -Posts): LBpOIKUZKlxMtgbx<br />Posts:  3383<br />Company: n2Gp5FlajAsJqTob","type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,178,243,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"n2Gp5FlajAsJqTob","legendgroup":"n2Gp5FlajAsJqTob","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.900000000000006,"base":0,"x":[48],"y":[1661],"text":"reorder(Author, -Posts): rP5aIYVodyLwKWyw<br />Posts:  1661<br />Company: NiHemmQOSsV7j4hz","type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,166,255,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"NiHemmQOSsV7j4hz","legendgroup":"NiHemmQOSsV7j4hz","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.899999999999999,0.900000000000006],"base":[0,0,0],"x":[5,29,39],"y":[8122,2512,1868],"text":["reorder(Author, -Posts): GLu+wC9hGVzMJRH7<br />Posts:  8122<br />Company: NYqkJ6NPbd9V5DzE","reorder(Author, -Posts): zIiIqYLl2ryYuPnV<br />Posts:  2512<br />Company: NYqkJ6NPbd9V5DzE","reorder(Author, -Posts): ueZcmxnksaf64Xp0<br />Posts:  1868<br />Company: NYqkJ6NPbd9V5DzE"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(124,150,255,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"NYqkJ6NPbd9V5DzE","legendgroup":"NYqkJ6NPbd9V5DzE","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.900000000000006,"base":0,"x":[42],"y":[1835],"text":"reorder(Author, -Posts): Nu8T/ewuPhrOkReB<br />Posts:  1835<br />Company: pI/KMoIOnNVyXSZy","type":"bar","marker":{"autocolorscale":false,"color":"rgba(179,133,255,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"pI/KMoIOnNVyXSZy","legendgroup":"pI/KMoIOnNVyXSZy","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[23],"y":[3106],"text":"reorder(Author, -Posts): EoKnR3ctN5f9y4h1<br />Posts:  3106<br />Company: taCS5ZPZM6KyIO4x","type":"bar","marker":{"autocolorscale":false,"color":"rgba(216,116,253,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"taCS5ZPZM6KyIO4x","legendgroup":"taCS5ZPZM6KyIO4x","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.900000000000006,"base":0,"x":[41],"y":[1843],"text":"reorder(Author, -Posts): XrwwFu4KAJP1RIwe<br />Posts:  1843<br />Company: U2gkysDEIuuAGPvK","type":"bar","marker":{"autocolorscale":false,"color":"rgba(239,103,235,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"U2gkysDEIuuAGPvK","legendgroup":"U2gkysDEIuuAGPvK","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[11],"y":[4660],"text":"reorder(Author, -Posts): FZcG5nQ/th+ot1YH<br />Posts:  4660<br />Company: vyr7pMl6J7BafxjX","type":"bar","marker":{"autocolorscale":false,"color":"rgba(253,97,211,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"vyr7pMl6J7BafxjX","legendgroup":"vyr7pMl6J7BafxjX","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.899999999999999,0.900000000000002,0.900000000000006,0.900000000000006],"base":[0,0,0,0],"x":[27,32,35,45],"y":[2624,2303,2209,1763],"text":["reorder(Author, -Posts): tvdTqunqz+yR/RM2<br />Posts:  2624<br />Company: Xcf2yOhSvGTg465c","reorder(Author, -Posts): D1CcFZh6EnbpsCC6<br />Posts:  2303<br />Company: Xcf2yOhSvGTg465c","reorder(Author, -Posts): FVPYfiWdXUWIlAic<br />Posts:  2209<br />Company: Xcf2yOhSvGTg465c","reorder(Author, -Posts): YEZH618ZeJO+o1WA<br />Posts:  1763<br />Company: Xcf2yOhSvGTg465c"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(255,99,182,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"Xcf2yOhSvGTg465c","legendgroup":"Xcf2yOhSvGTg465c","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":0.899999999999999,"base":0,"x":[17],"y":[3805],"text":"reorder(Author, -Posts): Ja9m1yfFzw4EO9Ze<br />Posts:  3805<br />Company: YzGAM1pJlIv5ZOTl","type":"bar","marker":{"autocolorscale":false,"color":"rgba(255,107,148,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"YzGAM1pJlIv5ZOTl","legendgroup":"YzGAM1pJlIv5ZOTl","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null}],"layout":{"margin":{"t":43.7625570776256,"r":7.30593607305936,"b":40.0568596155048,"l":54.7945205479452},"font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187},"title":{"text":"50 overall top posters on Eclipse mailing lists","font":{"color":"rgba(0,0,0,1)","family":"","size":17.5342465753425},"x":0,"xref":"paper"},"xaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[0.4,50.6],"tickmode":"array","ticktext":["HuUTAptkwgrWcnci","gO57kNAqL7Y70OH+","X6AhP2He7WGL1wcK","ac/JH1ezA0QBmKkV","GLu+wC9hGVzMJRH7","VG1icUOSg49sLMtF","wiKbJVo5pJF6zoa6","V7haf3wHLxgtSvnH","cm2ruV20OJQz7tA5","sWBs4OdbCi+elyc4","FZcG5nQ/th+ot1YH","dbS86hI03IctUHTF","q3n8fdSkeADZReLl","oaM21mDSixZdeKo/","OYdSbt9YhX9wY/5f","c1Oa7BPMK2UOjooC","Ja9m1yfFzw4EO9Ze","IjABf6zT6Ntix3xE","PyUGf+aJnxmC8MHK","LBpOIKUZKlxMtgbx","HOqnYZNAqkttlErX","vBh0QceoHBc19+tm","EoKnR3ctN5f9y4h1","zPX2taQyDogjJBv9","eO1zwNZKos30SKlC","UwOu+c5jvx4hHWlC","tvdTqunqz+yR/RM2","En7Q2WYqPhcLpUCB","zIiIqYLl2ryYuPnV","Y/jrxOf43lAj9w2p","xDFqtlfLhlNogOjI","D1CcFZh6EnbpsCC6","TahjIZyInF8Az2Qv","b2ZD0yv/HD3/53In","FVPYfiWdXUWIlAic","WJrArB4kWfLiJiV2","U9dy44BiWBmoSqg+","lNDiY/piFdiX7JVo","ueZcmxnksaf64Xp0","G5lVqwBVrl8nH71f","XrwwFu4KAJP1RIwe","Nu8T/ewuPhrOkReB","pasx/SvuwCgMejbC","IRUCjalXqAkIo1QH","YEZH618ZeJO+o1WA","lOk31W5jDPIGF9oJ","RhgEvzLyh5EnmM3y","rP5aIYVodyLwKWyw","jZ5N3BDHgz7ThLtF","NVoO2603rKs3VMt4"],"tickvals":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"categoryorder":"array","categoryarray":["HuUTAptkwgrWcnci","gO57kNAqL7Y70OH+","X6AhP2He7WGL1wcK","ac/JH1ezA0QBmKkV","GLu+wC9hGVzMJRH7","VG1icUOSg49sLMtF","wiKbJVo5pJF6zoa6","V7haf3wHLxgtSvnH","cm2ruV20OJQz7tA5","sWBs4OdbCi+elyc4","FZcG5nQ/th+ot1YH","dbS86hI03IctUHTF","q3n8fdSkeADZReLl","oaM21mDSixZdeKo/","OYdSbt9YhX9wY/5f","c1Oa7BPMK2UOjooC","Ja9m1yfFzw4EO9Ze","IjABf6zT6Ntix3xE","PyUGf+aJnxmC8MHK","LBpOIKUZKlxMtgbx","HOqnYZNAqkttlErX","vBh0QceoHBc19+tm","EoKnR3ctN5f9y4h1","zPX2taQyDogjJBv9","eO1zwNZKos30SKlC","UwOu+c5jvx4hHWlC","tvdTqunqz+yR/RM2","En7Q2WYqPhcLpUCB","zIiIqYLl2ryYuPnV","Y/jrxOf43lAj9w2p","xDFqtlfLhlNogOjI","D1CcFZh6EnbpsCC6","TahjIZyInF8Az2Qv","b2ZD0yv/HD3/53In","FVPYfiWdXUWIlAic","WJrArB4kWfLiJiV2","U9dy44BiWBmoSqg+","lNDiY/piFdiX7JVo","ueZcmxnksaf64Xp0","G5lVqwBVrl8nH71f","XrwwFu4KAJP1RIwe","Nu8T/ewuPhrOkReB","pasx/SvuwCgMejbC","IRUCjalXqAkIo1QH","YEZH618ZeJO+o1WA","lOk31W5jDPIGF9oJ","RhgEvzLyh5EnmM3y","rP5aIYVodyLwKWyw","jZ5N3BDHgz7ThLtF","NVoO2603rKs3VMt4"],"nticks":null,"ticks":"","tickcolor":null,"ticklen":3.65296803652968,"tickwidth":0,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":9.29846409298464},"tickangle":-60,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(235,235,235,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"y","title":{"text":"Posters","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"yaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[-1458.2,30622.2],"tickmode":"array","ticktext":["0","10000","20000","30000"],"tickvals":[0,10000,20000,30000],"categoryorder":"array","categoryarray":["0","10000","20000","30000"],"nticks":null,"ticks":"","tickcolor":null,"ticklen":3.65296803652968,"tickwidth":0,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":11.689497716895},"tickangle":-0,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(235,235,235,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"x","title":{"text":"Number of posts","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"shapes":[{"type":"rect","fillcolor":null,"line":{"color":null,"width":0,"linetype":[]},"yref":"paper","xref":"paper","x0":0,"x1":1,"y0":0,"y1":1}],"showlegend":true,"legend":{"bgcolor":null,"bordercolor":null,"borderwidth":0,"font":{"color":"rgba(0,0,0,1)","family":"","size":11.689497716895},"y":0.96751968503937},"annotations":[{"text":"Company","x":1.02,"y":1,"showarrow":false,"ax":0,"ay":0,"font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187},"xref":"paper","yref":"paper","textangle":-0,"xanchor":"left","yanchor":"bottom","legendTitle":true}],"hovermode":"closest","barmode":"relative"},"config":{"doubleClick":"reset","showSendToCloud":false},"source":"A","attrs":{"4ce735e85f51":{"x":{},"y":{},"fill":{},"type":"bar"}},"cur_data":"4ce735e85f51","visdat":{"4ce735e85f51":["function (y) ","x"]},"highlight":{"on":"plotly_click","persistent":false,"dynamic":false,"selectize":false,"opacityDim":0.2,"selected":{"opacity":1},"debounce":0},"shinyEvents":["plotly_hover","plotly_click","plotly_selected","plotly_relayout","plotly_brushed","plotly_brushing","plotly_clickannotation","plotly_doubleclick","plotly_deselect","plotly_afterplot","plotly_sunburstclick"],"base_url":"https://plot.ly"},"evals":[],"jsHooks":[]}</script>
-<pre class="r"><code>#api_create(g, filename = &quot;r-eclipse_mls_authors&quot;)</code></pre>
-</div>
-<div id="posts-by-company" class="section level2">
-<h2>Posts by Company</h2>
-<p>We want to know what companies posted the most messages in mailing listsacross years. To that end we select the 20 companies that have the larger number of posts and plot the number of messages by company year after year.</p>
-<pre class="r"><code>comps_list &lt;- head( sort( x = table(project.csv$Company), decreasing = T ), n=20 )
-df &lt;- data.frame(Company=character(), 
-                 Year=character(),
-                 Posts=integer(), 
-                 stringsAsFactors=FALSE) 
-for (i in seq_along(1:20)) {
-  project.comp.xts &lt;- project.xts[project.xts$Company == names(comps_list)[[i]],]
-  project.comp.yearly &lt;- apply.yearly(x=project.comp.xts$Company, FUN=nrow)
-  for (j in seq_along(1:nrow(project.comp.yearly))) {
-    year &lt;- format(index(project.comp.yearly)[[j]],&quot;%Y&quot;)
-    comp &lt;- as.data.frame(t(c(names(comps_list)[[i]], year, as.integer(project.comp.yearly[[j]]))))
-    names(comp) &lt;- c(&quot;Company&quot;, &quot;Year&quot;, &quot;Posts&quot;)
-    df &lt;- rbind(df, comp)
-  }
-}
-
-df$Company &lt;- as.character(df$Company)
-df &lt;- df[order(df$Company),]
-
-p &lt;- ggplot(data=df, aes(x=Year, y = Posts, fill = Company)) + geom_bar(stat=&quot;identity&quot;) + 
-  theme_minimal() + ylab(&quot;Number of posts&quot;) + xlab('Years') + 
-  ggtitle(&quot;Top 20 Companies involved in Eclipse mailing lists across years&quot;) +
-  theme( axis.text.x = element_text(angle=60, size = 7, hjust = 1))
-
-g &lt;- ggplotly(p)
-g</code></pre>
-<div id="htmlwidget-b339f4fb3a8b368ce4ed" style="width:672px;height:480px;" class="plotly html-widget"></div>
-<script type="application/json" data-for="htmlwidget-b339f4fb3a8b368ce4ed">{"x":{"data":[{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1204,1490,1518,1656,1250,1309,1575],"x":[5,6,7,8,9,10,11],"y":[123,124,125,126,127,128,129],"text":["Year: 2005<br />Posts: 123<br />Company: C4v9CUFnIpltBSr4","Year: 2006<br />Posts: 124<br />Company: C4v9CUFnIpltBSr4","Year: 2007<br />Posts: 125<br />Company: C4v9CUFnIpltBSr4","Year: 2008<br />Posts: 126<br />Company: C4v9CUFnIpltBSr4","Year: 2009<br />Posts: 127<br />Company: C4v9CUFnIpltBSr4","Year: 2010<br />Posts: 128<br />Company: C4v9CUFnIpltBSr4","Year: 2011<br />Posts: 129<br />Company: C4v9CUFnIpltBSr4"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(248,118,109,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"C4v9CUFnIpltBSr4","legendgroup":"C4v9CUFnIpltBSr4","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1076,653,854,858,432,663,411,834,1245,671,461,643,644,419,617],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"y":[128,185,186,187,188,189,190,191,134,192,193,194,195,196,197],"text":["Year: 2005<br />Posts: 128<br />Company: CIznJI2hBWY/QKqL","Year: 2006<br />Posts: 185<br />Company: CIznJI2hBWY/QKqL","Year: 2007<br />Posts: 186<br />Company: CIznJI2hBWY/QKqL","Year: 2008<br />Posts: 187<br />Company: CIznJI2hBWY/QKqL","Year: 2009<br />Posts: 188<br />Company: CIznJI2hBWY/QKqL","Year: 2010<br />Posts: 189<br />Company: CIznJI2hBWY/QKqL","Year: 2011<br />Posts: 190<br />Company: CIznJI2hBWY/QKqL","Year: 2012<br />Posts: 191<br />Company: CIznJI2hBWY/QKqL","Year: 2013<br />Posts: 134<br />Company: CIznJI2hBWY/QKqL","Year: 2014<br />Posts: 192<br />Company: CIznJI2hBWY/QKqL","Year: 2015<br />Posts: 193<br />Company: CIznJI2hBWY/QKqL","Year: 2016<br />Posts: 194<br />Company: CIznJI2hBWY/QKqL","Year: 2017<br />Posts: 195<br />Company: CIznJI2hBWY/QKqL","Year: 2018<br />Posts: 196<br />Company: CIznJI2hBWY/QKqL","Year: 2019<br />Posts: 197<br />Company: CIznJI2hBWY/QKqL"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(234,131,49,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"CIznJI2hBWY/QKqL","legendgroup":"CIznJI2hBWY/QKqL","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1363,1327,1352,569],"x":[17,18,19,20],"y":[142,143,144,145],"text":["Year: 2017<br />Posts: 142<br />Company: DUKhQZeMh7qzoNGm","Year: 2018<br />Posts: 143<br />Company: DUKhQZeMh7qzoNGm","Year: 2019<br />Posts: 144<br />Company: DUKhQZeMh7qzoNGm","Year: 2020<br />Posts: 145<br />Company: DUKhQZeMh7qzoNGm"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(216,144,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"DUKhQZeMh7qzoNGm","legendgroup":"DUKhQZeMh7qzoNGm","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[0,0,0,0,0,0,966,635,0,0,0,439,2002,215,814],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"y":[228,229,230,231,232,233,164,199,234,235,236,204,50,204,185],"text":["Year: 2005<br />Posts: 228<br />Company: eu8YE9yawPxvTctk","Year: 2006<br />Posts: 229<br />Company: eu8YE9yawPxvTctk","Year: 2007<br />Posts: 230<br />Company: eu8YE9yawPxvTctk","Year: 2008<br />Posts: 231<br />Company: eu8YE9yawPxvTctk","Year: 2009<br />Posts: 232<br />Company: eu8YE9yawPxvTctk","Year: 2010<br />Posts: 233<br />Company: eu8YE9yawPxvTctk","Year: 2011<br />Posts: 164<br />Company: eu8YE9yawPxvTctk","Year: 2012<br />Posts: 199<br />Company: eu8YE9yawPxvTctk","Year: 2013<br />Posts: 234<br />Company: eu8YE9yawPxvTctk","Year: 2014<br />Posts: 235<br />Company: eu8YE9yawPxvTctk","Year: 2015<br />Posts: 236<br />Company: eu8YE9yawPxvTctk","Year: 2016<br />Posts: 204<br />Company: eu8YE9yawPxvTctk","Year: 2017<br />Posts:  50<br />Company: eu8YE9yawPxvTctk","Year: 2018<br />Posts: 204<br />Company: eu8YE9yawPxvTctk","Year: 2019<br />Posts: 185<br />Company: eu8YE9yawPxvTctk"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(192,155,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"eu8YE9yawPxvTctk","legendgroup":"eu8YE9yawPxvTctk","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[930,1343,1370,1377,1377,1027,1291,1187,808,1370,1345,1649],"x":[5,6,7,8,9,10,11,12,13,14,15,16],"y":[146,147,148,149,118,150,151,152,153,154,155,128],"text":["Year: 2005<br />Posts: 146<br />Company: f5Dz6eKvAzHVaYMU","Year: 2006<br />Posts: 147<br />Company: f5Dz6eKvAzHVaYMU","Year: 2007<br />Posts: 148<br />Company: f5Dz6eKvAzHVaYMU","Year: 2008<br />Posts: 149<br />Company: f5Dz6eKvAzHVaYMU","Year: 2009<br />Posts: 118<br />Company: f5Dz6eKvAzHVaYMU","Year: 2010<br />Posts: 150<br />Company: f5Dz6eKvAzHVaYMU","Year: 2011<br />Posts: 151<br />Company: f5Dz6eKvAzHVaYMU","Year: 2012<br />Posts: 152<br />Company: f5Dz6eKvAzHVaYMU","Year: 2013<br />Posts: 153<br />Company: f5Dz6eKvAzHVaYMU","Year: 2014<br />Posts: 154<br />Company: f5Dz6eKvAzHVaYMU","Year: 2015<br />Posts: 155<br />Company: f5Dz6eKvAzHVaYMU","Year: 2016<br />Posts: 128<br />Company: f5Dz6eKvAzHVaYMU"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(163,165,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"f5Dz6eKvAzHVaYMU","legendgroup":"f5Dz6eKvAzHVaYMU","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[604,1015,1040,1045,620,852,790,1660,1189,1018,1021,981,1637],"x":[5,6,7,8,9,10,11,14,15,16,17,18,19],"y":[170,171,172,173,174,175,176,129,156,177,175,178,129],"text":["Year: 2005<br />Posts: 170<br />Company: f8Ol8lohsH75e9Sr","Year: 2006<br />Posts: 171<br />Company: f8Ol8lohsH75e9Sr","Year: 2007<br />Posts: 172<br />Company: f8Ol8lohsH75e9Sr","Year: 2008<br />Posts: 173<br />Company: f8Ol8lohsH75e9Sr","Year: 2009<br />Posts: 174<br />Company: f8Ol8lohsH75e9Sr","Year: 2010<br />Posts: 175<br />Company: f8Ol8lohsH75e9Sr","Year: 2011<br />Posts: 176<br />Company: f8Ol8lohsH75e9Sr","Year: 2014<br />Posts: 129<br />Company: f8Ol8lohsH75e9Sr","Year: 2015<br />Posts: 156<br />Company: f8Ol8lohsH75e9Sr","Year: 2016<br />Posts: 177<br />Company: f8Ol8lohsH75e9Sr","Year: 2017<br />Posts: 175<br />Company: f8Ol8lohsH75e9Sr","Year: 2018<br />Posts: 178<br />Company: f8Ol8lohsH75e9Sr","Year: 2019<br />Posts: 129<br />Company: f8Ol8lohsH75e9Sr"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(124,174,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"f8Ol8lohsH75e9Sr","legendgroup":"f8Ol8lohsH75e9Sr","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1737,2029,2063,2207,2011,2088,2119,1917,1828,2243,2181,2131,2052,1970,2131],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"y":[36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"text":["Year: 2005<br />Posts:  36<br />Company: FqrmmhRf3bBv5PFC","Year: 2006<br />Posts:  37<br />Company: FqrmmhRf3bBv5PFC","Year: 2007<br />Posts:  38<br />Company: FqrmmhRf3bBv5PFC","Year: 2008<br />Posts:  39<br />Company: FqrmmhRf3bBv5PFC","Year: 2009<br />Posts:  40<br />Company: FqrmmhRf3bBv5PFC","Year: 2010<br />Posts:  41<br />Company: FqrmmhRf3bBv5PFC","Year: 2011<br />Posts:  42<br />Company: FqrmmhRf3bBv5PFC","Year: 2012<br />Posts:  43<br />Company: FqrmmhRf3bBv5PFC","Year: 2013<br />Posts:  44<br />Company: FqrmmhRf3bBv5PFC","Year: 2014<br />Posts:  45<br />Company: FqrmmhRf3bBv5PFC","Year: 2015<br />Posts:  46<br />Company: FqrmmhRf3bBv5PFC","Year: 2016<br />Posts:  47<br />Company: FqrmmhRf3bBv5PFC","Year: 2017<br />Posts:  48<br />Company: FqrmmhRf3bBv5PFC","Year: 2018<br />Posts:  49<br />Company: FqrmmhRf3bBv5PFC","Year: 2019<br />Posts:  50<br />Company: FqrmmhRf3bBv5PFC"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(57,182,0,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"FqrmmhRf3bBv5PFC","legendgroup":"FqrmmhRf3bBv5PFC","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[228,447,449,451,1799,454,0,222,457,459,654,226,227,0,0,0],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[205,206,207,208,86,209,210,211,188,212,190,213,214,215,216,217],"text":["Year: 2005<br />Posts: 205<br />Company: hQTXaEVNJS1gMkCj","Year: 2006<br />Posts: 206<br />Company: hQTXaEVNJS1gMkCj","Year: 2007<br />Posts: 207<br />Company: hQTXaEVNJS1gMkCj","Year: 2008<br />Posts: 208<br />Company: hQTXaEVNJS1gMkCj","Year: 2009<br />Posts:  86<br />Company: hQTXaEVNJS1gMkCj","Year: 2010<br />Posts: 209<br />Company: hQTXaEVNJS1gMkCj","Year: 2011<br />Posts: 210<br />Company: hQTXaEVNJS1gMkCj","Year: 2012<br />Posts: 211<br />Company: hQTXaEVNJS1gMkCj","Year: 2013<br />Posts: 188<br />Company: hQTXaEVNJS1gMkCj","Year: 2014<br />Posts: 212<br />Company: hQTXaEVNJS1gMkCj","Year: 2015<br />Posts: 190<br />Company: hQTXaEVNJS1gMkCj","Year: 2016<br />Posts: 213<br />Company: hQTXaEVNJS1gMkCj","Year: 2017<br />Posts: 214<br />Company: hQTXaEVNJS1gMkCj","Year: 2018<br />Posts: 215<br />Company: hQTXaEVNJS1gMkCj","Year: 2019<br />Posts: 216<br />Company: hQTXaEVNJS1gMkCj","Year: 2020<br />Posts: 217<br />Company: hQTXaEVNJS1gMkCj"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,187,78,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"hQTXaEVNJS1gMkCj","legendgroup":"hQTXaEVNJS1gMkCj","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[0,0,0,0,1794,2088,2108,2269,2075,2154,2187,1987,1900,2317,2257,2209,2132,2052,2215,995],"x":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"text":["Year: 2001<br />Posts:   1<br />Company: J7oMeA+Al9Hb/vYm","Year: 2002<br />Posts:   2<br />Company: J7oMeA+Al9Hb/vYm","Year: 2003<br />Posts:   3<br />Company: J7oMeA+Al9Hb/vYm","Year: 2004<br />Posts:   4<br />Company: J7oMeA+Al9Hb/vYm","Year: 2005<br />Posts:   5<br />Company: J7oMeA+Al9Hb/vYm","Year: 2006<br />Posts:   6<br />Company: J7oMeA+Al9Hb/vYm","Year: 2007<br />Posts:   7<br />Company: J7oMeA+Al9Hb/vYm","Year: 2008<br />Posts:   8<br />Company: J7oMeA+Al9Hb/vYm","Year: 2009<br />Posts:   9<br />Company: J7oMeA+Al9Hb/vYm","Year: 2010<br />Posts:  10<br />Company: J7oMeA+Al9Hb/vYm","Year: 2011<br />Posts:  11<br />Company: J7oMeA+Al9Hb/vYm","Year: 2012<br />Posts:  12<br />Company: J7oMeA+Al9Hb/vYm","Year: 2013<br />Posts:  13<br />Company: J7oMeA+Al9Hb/vYm","Year: 2014<br />Posts:  14<br />Company: J7oMeA+Al9Hb/vYm","Year: 2015<br />Posts:  15<br />Company: J7oMeA+Al9Hb/vYm","Year: 2016<br />Posts:  16<br />Company: J7oMeA+Al9Hb/vYm","Year: 2017<br />Posts:  17<br />Company: J7oMeA+Al9Hb/vYm","Year: 2018<br />Posts:  18<br />Company: J7oMeA+Al9Hb/vYm","Year: 2019<br />Posts:  19<br />Company: J7oMeA+Al9Hb/vYm","Year: 2020<br />Posts:  20<br />Company: J7oMeA+Al9Hb/vYm"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,191,125,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"J7oMeA+Al9Hb/vYm","legendgroup":"J7oMeA+Al9Hb/vYm","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1437,1725,1755,1895,1609,1678,1704,1589,1496,1907,1756],"x":[5,6,7,8,9,10,11,12,13,14,15],"y":[99,100,101,102,103,104,105,106,107,108,109],"text":["Year: 2005<br />Posts:  99<br />Company: KfYnScAPY1NCGB1D","Year: 2006<br />Posts: 100<br />Company: KfYnScAPY1NCGB1D","Year: 2007<br />Posts: 101<br />Company: KfYnScAPY1NCGB1D","Year: 2008<br />Posts: 102<br />Company: KfYnScAPY1NCGB1D","Year: 2009<br />Posts: 103<br />Company: KfYnScAPY1NCGB1D","Year: 2010<br />Posts: 104<br />Company: KfYnScAPY1NCGB1D","Year: 2011<br />Posts: 105<br />Company: KfYnScAPY1NCGB1D","Year: 2012<br />Posts: 106<br />Company: KfYnScAPY1NCGB1D","Year: 2013<br />Posts: 107<br />Company: KfYnScAPY1NCGB1D","Year: 2014<br />Posts: 108<br />Company: KfYnScAPY1NCGB1D","Year: 2015<br />Posts: 109<br />Company: KfYnScAPY1NCGB1D"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,193,163,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"KfYnScAPY1NCGB1D","legendgroup":"KfYnScAPY1NCGB1D","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1327,1614,1643,1782,1495,1563,1809,1473,1379,1789,1637,1777,1644,1766],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,19],"y":[110,111,112,113,114,115,91,116,117,118,119,120,121,122],"text":["Year: 2005<br />Posts: 110<br />Company: kt8jVeBfPjzDlgUK","Year: 2006<br />Posts: 111<br />Company: kt8jVeBfPjzDlgUK","Year: 2007<br />Posts: 112<br />Company: kt8jVeBfPjzDlgUK","Year: 2008<br />Posts: 113<br />Company: kt8jVeBfPjzDlgUK","Year: 2009<br />Posts: 114<br />Company: kt8jVeBfPjzDlgUK","Year: 2010<br />Posts: 115<br />Company: kt8jVeBfPjzDlgUK","Year: 2011<br />Posts:  91<br />Company: kt8jVeBfPjzDlgUK","Year: 2012<br />Posts: 116<br />Company: kt8jVeBfPjzDlgUK","Year: 2013<br />Posts: 117<br />Company: kt8jVeBfPjzDlgUK","Year: 2014<br />Posts: 118<br />Company: kt8jVeBfPjzDlgUK","Year: 2015<br />Posts: 119<br />Company: kt8jVeBfPjzDlgUK","Year: 2016<br />Posts: 120<br />Company: kt8jVeBfPjzDlgUK","Year: 2017<br />Posts: 121<br />Company: kt8jVeBfPjzDlgUK","Year: 2019<br />Posts: 122<br />Company: kt8jVeBfPjzDlgUK"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,191,196,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"kt8jVeBfPjzDlgUK","legendgroup":"kt8jVeBfPjzDlgUK","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1619,1909,1941,2083,1885,1960,1989,1785,1694,2107,2043,1991,1860,1826,1985,812],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82],"text":["Year: 2005<br />Posts:  67<br />Company: KX5Bckhyz4IEaogX","Year: 2006<br />Posts:  68<br />Company: KX5Bckhyz4IEaogX","Year: 2007<br />Posts:  69<br />Company: KX5Bckhyz4IEaogX","Year: 2008<br />Posts:  70<br />Company: KX5Bckhyz4IEaogX","Year: 2009<br />Posts:  71<br />Company: KX5Bckhyz4IEaogX","Year: 2010<br />Posts:  72<br />Company: KX5Bckhyz4IEaogX","Year: 2011<br />Posts:  73<br />Company: KX5Bckhyz4IEaogX","Year: 2012<br />Posts:  74<br />Company: KX5Bckhyz4IEaogX","Year: 2013<br />Posts:  75<br />Company: KX5Bckhyz4IEaogX","Year: 2014<br />Posts:  76<br />Company: KX5Bckhyz4IEaogX","Year: 2015<br />Posts:  77<br />Company: KX5Bckhyz4IEaogX","Year: 2016<br />Posts:  78<br />Company: KX5Bckhyz4IEaogX","Year: 2017<br />Posts:  79<br />Company: KX5Bckhyz4IEaogX","Year: 2018<br />Posts:  80<br />Company: KX5Bckhyz4IEaogX","Year: 2019<br />Posts:  81<br />Company: KX5Bckhyz4IEaogX","Year: 2020<br />Posts:  82<br />Company: KX5Bckhyz4IEaogX"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,186,224,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"KX5Bckhyz4IEaogX","legendgroup":"KX5Bckhyz4IEaogX","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[774,1186,1212,1218,959,1437,1130,1025,645,1206,1024,1195,1196,1159,1183],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"y":[156,157,158,159,160,126,161,162,163,164,165,166,167,168,169],"text":["Year: 2005<br />Posts: 156<br />Company: lPiaGTVT6H72ZZQU","Year: 2006<br />Posts: 157<br />Company: lPiaGTVT6H72ZZQU","Year: 2007<br />Posts: 158<br />Company: lPiaGTVT6H72ZZQU","Year: 2008<br />Posts: 159<br />Company: lPiaGTVT6H72ZZQU","Year: 2009<br />Posts: 160<br />Company: lPiaGTVT6H72ZZQU","Year: 2010<br />Posts: 126<br />Company: lPiaGTVT6H72ZZQU","Year: 2011<br />Posts: 161<br />Company: lPiaGTVT6H72ZZQU","Year: 2012<br />Posts: 162<br />Company: lPiaGTVT6H72ZZQU","Year: 2013<br />Posts: 163<br />Company: lPiaGTVT6H72ZZQU","Year: 2014<br />Posts: 164<br />Company: lPiaGTVT6H72ZZQU","Year: 2015<br />Posts: 165<br />Company: lPiaGTVT6H72ZZQU","Year: 2016<br />Posts: 166<br />Company: lPiaGTVT6H72ZZQU","Year: 2017<br />Posts: 167<br />Company: lPiaGTVT6H72ZZQU","Year: 2018<br />Posts: 168<br />Company: lPiaGTVT6H72ZZQU","Year: 2019<br />Posts: 169<br />Company: lPiaGTVT6H72ZZQU"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(0,176,246,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"lPiaGTVT6H72ZZQU","legendgroup":"lPiaGTVT6H72ZZQU","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1686,1977,2010,2153,1956,2032,2062,1859,1769,2183,2120,2069,1939,1906,2066,894],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66],"text":["Year: 2005<br />Posts:  51<br />Company: NYqkJ6NPbd9V5DzE","Year: 2006<br />Posts:  52<br />Company: NYqkJ6NPbd9V5DzE","Year: 2007<br />Posts:  53<br />Company: NYqkJ6NPbd9V5DzE","Year: 2008<br />Posts:  54<br />Company: NYqkJ6NPbd9V5DzE","Year: 2009<br />Posts:  55<br />Company: NYqkJ6NPbd9V5DzE","Year: 2010<br />Posts:  56<br />Company: NYqkJ6NPbd9V5DzE","Year: 2011<br />Posts:  57<br />Company: NYqkJ6NPbd9V5DzE","Year: 2012<br />Posts:  58<br />Company: NYqkJ6NPbd9V5DzE","Year: 2013<br />Posts:  59<br />Company: NYqkJ6NPbd9V5DzE","Year: 2014<br />Posts:  60<br />Company: NYqkJ6NPbd9V5DzE","Year: 2015<br />Posts:  61<br />Company: NYqkJ6NPbd9V5DzE","Year: 2016<br />Posts:  62<br />Company: NYqkJ6NPbd9V5DzE","Year: 2017<br />Posts:  63<br />Company: NYqkJ6NPbd9V5DzE","Year: 2018<br />Posts:  64<br />Company: NYqkJ6NPbd9V5DzE","Year: 2019<br />Posts:  65<br />Company: NYqkJ6NPbd9V5DzE","Year: 2020<br />Posts:  66<br />Company: NYqkJ6NPbd9V5DzE"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(53,162,255,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"NYqkJ6NPbd9V5DzE","legendgroup":"NYqkJ6NPbd9V5DzE","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1526,1119,1177,1442,1339,1110,1524,1500,1511,1505,1470,1496],"x":[8,9,10,11,12,13,14,15,16,17,18,19],"y":[130,131,132,133,134,135,136,137,138,139,140,141],"text":["Year: 2008<br />Posts: 130<br />Company: pI/KMoIOnNVyXSZy","Year: 2009<br />Posts: 131<br />Company: pI/KMoIOnNVyXSZy","Year: 2010<br />Posts: 132<br />Company: pI/KMoIOnNVyXSZy","Year: 2011<br />Posts: 133<br />Company: pI/KMoIOnNVyXSZy","Year: 2012<br />Posts: 134<br />Company: pI/KMoIOnNVyXSZy","Year: 2013<br />Posts: 135<br />Company: pI/KMoIOnNVyXSZy","Year: 2014<br />Posts: 136<br />Company: pI/KMoIOnNVyXSZy","Year: 2015<br />Posts: 137<br />Company: pI/KMoIOnNVyXSZy","Year: 2016<br />Posts: 138<br />Company: pI/KMoIOnNVyXSZy","Year: 2017<br />Posts: 139<br />Company: pI/KMoIOnNVyXSZy","Year: 2018<br />Posts: 140<br />Company: pI/KMoIOnNVyXSZy","Year: 2019<br />Posts: 141<br />Company: pI/KMoIOnNVyXSZy"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(149,144,255,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"pI/KMoIOnNVyXSZy","legendgroup":"pI/KMoIOnNVyXSZy","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[838,656,659,232,1782,210,433,961,1042,1958,1361,441,798,216,393],"x":[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[177,198,199,200,90,201,202,149,164,85,150,203,183,204,176],"text":["Year: 2006<br />Posts: 177<br />Company: qJu7XYW+G456Kl3T","Year: 2007<br />Posts: 198<br />Company: qJu7XYW+G456Kl3T","Year: 2008<br />Posts: 199<br />Company: qJu7XYW+G456Kl3T","Year: 2009<br />Posts: 200<br />Company: qJu7XYW+G456Kl3T","Year: 2010<br />Posts:  90<br />Company: qJu7XYW+G456Kl3T","Year: 2011<br />Posts: 201<br />Company: qJu7XYW+G456Kl3T","Year: 2012<br />Posts: 202<br />Company: qJu7XYW+G456Kl3T","Year: 2013<br />Posts: 149<br />Company: qJu7XYW+G456Kl3T","Year: 2014<br />Posts: 164<br />Company: qJu7XYW+G456Kl3T","Year: 2015<br />Posts:  85<br />Company: qJu7XYW+G456Kl3T","Year: 2016<br />Posts: 150<br />Company: qJu7XYW+G456Kl3T","Year: 2017<br />Posts: 203<br />Company: qJu7XYW+G456Kl3T","Year: 2018<br />Posts: 183<br />Company: qJu7XYW+G456Kl3T","Year: 2019<br />Posts: 204<br />Company: qJu7XYW+G456Kl3T","Year: 2020<br />Posts: 176<br />Company: qJu7XYW+G456Kl3T"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(199,124,255,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"qJu7XYW+G456Kl3T","legendgroup":"qJu7XYW+G456Kl3T","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1536,1825,1856,1997,1712,1872,1900,1695,1603,2015,1865,1897,1765,1730,1888,714],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],"text":["Year: 2005<br />Posts:  83<br />Company: taCS5ZPZM6KyIO4x","Year: 2006<br />Posts:  84<br />Company: taCS5ZPZM6KyIO4x","Year: 2007<br />Posts:  85<br />Company: taCS5ZPZM6KyIO4x","Year: 2008<br />Posts:  86<br />Company: taCS5ZPZM6KyIO4x","Year: 2009<br />Posts:  87<br />Company: taCS5ZPZM6KyIO4x","Year: 2010<br />Posts:  88<br />Company: taCS5ZPZM6KyIO4x","Year: 2011<br />Posts:  89<br />Company: taCS5ZPZM6KyIO4x","Year: 2012<br />Posts:  90<br />Company: taCS5ZPZM6KyIO4x","Year: 2013<br />Posts:  91<br />Company: taCS5ZPZM6KyIO4x","Year: 2014<br />Posts:  92<br />Company: taCS5ZPZM6KyIO4x","Year: 2015<br />Posts:  93<br />Company: taCS5ZPZM6KyIO4x","Year: 2016<br />Posts:  94<br />Company: taCS5ZPZM6KyIO4x","Year: 2017<br />Posts:  95<br />Company: taCS5ZPZM6KyIO4x","Year: 2018<br />Posts:  96<br />Company: taCS5ZPZM6KyIO4x","Year: 2019<br />Posts:  97<br />Company: taCS5ZPZM6KyIO4x","Year: 2020<br />Posts:  98<br />Company: taCS5ZPZM6KyIO4x"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(231,107,243,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"taCS5ZPZM6KyIO4x","legendgroup":"taCS5ZPZM6KyIO4x","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[863,844,837,839,615,999],"x":[14,15,16,17,18,19],"y":[179,180,181,182,183,184],"text":["Year: 2014<br />Posts: 179<br />Company: vyr7pMl6J7BafxjX","Year: 2015<br />Posts: 180<br />Company: vyr7pMl6J7BafxjX","Year: 2016<br />Posts: 181<br />Company: vyr7pMl6J7BafxjX","Year: 2017<br />Posts: 182<br />Company: vyr7pMl6J7BafxjX","Year: 2018<br />Posts: 183<br />Company: vyr7pMl6J7BafxjX","Year: 2019<br />Posts: 184<br />Company: vyr7pMl6J7BafxjX"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(250,98,219,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"vyr7pMl6J7BafxjX","legendgroup":"vyr7pMl6J7BafxjX","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[1773,2066,2101,2246,2051,2129,2161,1960,1872,2288,2227,2178,2100,2019,2181,960],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[21,22,7,23,24,25,26,27,28,29,30,31,32,33,34,35],"text":["Year: 2005<br />Posts:  21<br />Company: Xcf2yOhSvGTg465c","Year: 2006<br />Posts:  22<br />Company: Xcf2yOhSvGTg465c","Year: 2007<br />Posts:   7<br />Company: Xcf2yOhSvGTg465c","Year: 2008<br />Posts:  23<br />Company: Xcf2yOhSvGTg465c","Year: 2009<br />Posts:  24<br />Company: Xcf2yOhSvGTg465c","Year: 2010<br />Posts:  25<br />Company: Xcf2yOhSvGTg465c","Year: 2011<br />Posts:  26<br />Company: Xcf2yOhSvGTg465c","Year: 2012<br />Posts:  27<br />Company: Xcf2yOhSvGTg465c","Year: 2013<br />Posts:  28<br />Company: Xcf2yOhSvGTg465c","Year: 2014<br />Posts:  29<br />Company: Xcf2yOhSvGTg465c","Year: 2015<br />Posts:  30<br />Company: Xcf2yOhSvGTg465c","Year: 2016<br />Posts:  31<br />Company: Xcf2yOhSvGTg465c","Year: 2017<br />Posts:  32<br />Company: Xcf2yOhSvGTg465c","Year: 2018<br />Posts:  33<br />Company: Xcf2yOhSvGTg465c","Year: 2019<br />Posts:  34<br />Company: Xcf2yOhSvGTg465c","Year: 2020<br />Posts:  35<br />Company: Xcf2yOhSvGTg465c"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(255,98,188,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"Xcf2yOhSvGTg465c","legendgroup":"Xcf2yOhSvGTg465c","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"orientation":"v","width":[0.9,0.9,0.9,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999,0.899999999999999],"base":[433,229,230,231,794,233,601,0,234,235,236,0,0,1610,420,217],"x":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"y":[171,218,219,220,165,221,189,222,223,224,225,226,227,120,197,176],"text":["Year: 2005<br />Posts: 171<br />Company: YzGAM1pJlIv5ZOTl","Year: 2006<br />Posts: 218<br />Company: YzGAM1pJlIv5ZOTl","Year: 2007<br />Posts: 219<br />Company: YzGAM1pJlIv5ZOTl","Year: 2008<br />Posts: 220<br />Company: YzGAM1pJlIv5ZOTl","Year: 2009<br />Posts: 165<br />Company: YzGAM1pJlIv5ZOTl","Year: 2010<br />Posts: 221<br />Company: YzGAM1pJlIv5ZOTl","Year: 2011<br />Posts: 189<br />Company: YzGAM1pJlIv5ZOTl","Year: 2012<br />Posts: 222<br />Company: YzGAM1pJlIv5ZOTl","Year: 2013<br />Posts: 223<br />Company: YzGAM1pJlIv5ZOTl","Year: 2014<br />Posts: 224<br />Company: YzGAM1pJlIv5ZOTl","Year: 2015<br />Posts: 225<br />Company: YzGAM1pJlIv5ZOTl","Year: 2016<br />Posts: 226<br />Company: YzGAM1pJlIv5ZOTl","Year: 2017<br />Posts: 227<br />Company: YzGAM1pJlIv5ZOTl","Year: 2018<br />Posts: 120<br />Company: YzGAM1pJlIv5ZOTl","Year: 2019<br />Posts: 197<br />Company: YzGAM1pJlIv5ZOTl","Year: 2020<br />Posts: 176<br />Company: YzGAM1pJlIv5ZOTl"],"type":"bar","marker":{"autocolorscale":false,"color":"rgba(255,106,152,1)","line":{"width":1.88976377952756,"color":"transparent"}},"name":"YzGAM1pJlIv5ZOTl","legendgroup":"YzGAM1pJlIv5ZOTl","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null}],"layout":{"margin":{"t":43.7625570776256,"r":7.30593607305936,"b":37.7916147779162,"l":54.7945205479452},"font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187},"title":{"text":"Top 20 Companies involved in Eclipse mailing lists across years","font":{"color":"rgba(0,0,0,1)","family":"","size":17.5342465753425},"x":0,"xref":"paper"},"xaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[0.4,20.6],"tickmode":"array","ticktext":["2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020"],"tickvals":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"categoryorder":"array","categoryarray":["2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020"],"nticks":null,"ticks":"","tickcolor":null,"ticklen":3.65296803652968,"tickwidth":0,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":9.29846409298464},"tickangle":-60,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(235,235,235,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"y","title":{"text":"Years","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"yaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[0,2331],"tickmode":"array","ticktext":["754","5109","12529","14340","5141","4070","3133","5299","4534","6013","6982","7923","6168","7331","10699","14222","14498","11230","7197","154","1122","2300","5058","7450","7762","6979","7528","6837","6226","5215","5489","4000","5514","4813","112","2997","4343","4271","5136","4077","3276","2682","913","486","372","255","179","91","101","43","1018","3095","3921","3273","2178","1925","2014","1909","1948","1351","1192","767","357","405","467","5","69","647","1022","2247","2328","2680","1645","1109","794","364","412","123","235","986","668","39","22","30","107","130","387","341","734","797","873","595","834","1387","1632","2191","1577","47","1628","5467","3122","434","225","165","104","65","80","75","31","95","1146","1410","2491","1151","585","491","418","230","268","116","72","8","753","2658","1016","534","156","2","1","61","1619","740","445","391","428","340","355","245","223","178","55","799","2425","1745","25","623","1009","805","247","54","19","248","512","529","597","18","52","110","191","281","951","685","557","325","415","240","186","209","105","14","23","481","2131","2052","3","4","11","7","289","2061","909","1068","309","32","33","57","193","184","439","318","312","499","622","669","288","115","103","135","206","241","629","568","259","82","171","195","197","160","137","164","174","219","484","569","430","299","21","190","351","373","463","322","358","210","169","172","97","189","205","304","470","689","533","84","63","139"],"tickvals":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236],"categoryorder":"array","categoryarray":["754","5109","12529","14340","5141","4070","3133","5299","4534","6013","6982","7923","6168","7331","10699","14222","14498","11230","7197","154","1122","2300","5058","7450","7762","6979","7528","6837","6226","5215","5489","4000","5514","4813","112","2997","4343","4271","5136","4077","3276","2682","913","486","372","255","179","91","101","43","1018","3095","3921","3273","2178","1925","2014","1909","1948","1351","1192","767","357","405","467","5","69","647","1022","2247","2328","2680","1645","1109","794","364","412","123","235","986","668","39","22","30","107","130","387","341","734","797","873","595","834","1387","1632","2191","1577","47","1628","5467","3122","434","225","165","104","65","80","75","31","95","1146","1410","2491","1151","585","491","418","230","268","116","72","8","753","2658","1016","534","156","2","1","61","1619","740","445","391","428","340","355","245","223","178","55","799","2425","1745","25","623","1009","805","247","54","19","248","512","529","597","18","52","110","191","281","951","685","557","325","415","240","186","209","105","14","23","481","2131","2052","3","4","11","7","289","2061","909","1068","309","32","33","57","193","184","439","318","312","499","622","669","288","115","103","135","206","241","629","568","259","82","171","195","197","160","137","164","174","219","484","569","430","299","21","190","351","373","463","322","358","210","169","172","97","189","205","304","470","689","533","84","63","139"],"nticks":null,"ticks":"","tickcolor":null,"ticklen":3.65296803652968,"tickwidth":0,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":11.689497716895},"tickangle":-0,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(235,235,235,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"x","title":{"text":"Number of posts","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"shapes":[{"type":"rect","fillcolor":null,"line":{"color":null,"width":0,"linetype":[]},"yref":"paper","xref":"paper","x0":0,"x1":1,"y0":0,"y1":1}],"showlegend":true,"legend":{"bgcolor":null,"bordercolor":null,"borderwidth":0,"font":{"color":"rgba(0,0,0,1)","family":"","size":11.689497716895},"y":0.96751968503937},"annotations":[{"text":"Company","x":1.02,"y":1,"showarrow":false,"ax":0,"ay":0,"font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187},"xref":"paper","yref":"paper","textangle":-0,"xanchor":"left","yanchor":"bottom","legendTitle":true}],"hovermode":"closest","barmode":"relative"},"config":{"doubleClick":"reset","showSendToCloud":false},"source":"A","attrs":{"4ce717852980":{"x":{},"y":{},"fill":{},"type":"bar"}},"cur_data":"4ce717852980","visdat":{"4ce717852980":["function (y) ","x"]},"highlight":{"on":"plotly_click","persistent":false,"dynamic":false,"selectize":false,"opacityDim":0.2,"selected":{"opacity":1},"debounce":0},"shinyEvents":["plotly_hover","plotly_click","plotly_selected","plotly_relayout","plotly_brushed","plotly_brushing","plotly_clickannotation","plotly_doubleclick","plotly_deselect","plotly_afterplot","plotly_sunburstclick"],"base_url":"https://plot.ly"},"evals":[],"jsHooks":[]}</script>
-<pre class="r"><code>#api_create(g, filename = &quot;r-eclipse_mls_companies&quot;)</code></pre>
-</div>
-</div>
-
-
-
-
-</div>
-
-<script>
-
-// add bootstrap table styles to pandoc tables
-function bootstrapStylePandocTables() {
-  $('tr.header').parent('thead').parent('table').addClass('table table-condensed');
-}
-$(document).ready(function () {
-  bootstrapStylePandocTables();
-});
-
-
-</script>
-
-<!-- tabsets -->
-
-<script>
-$(document).ready(function () {
-  window.buildTabsets("TOC");
-});
-
-$(document).ready(function () {
-  $('.tabset-dropdown > .nav-tabs > li').click(function () {
-    $(this).parent().toggleClass('nav-tabs-open')
-  });
-});
-</script>
-
-<!-- code folding -->
-
-
-<!-- dynamically load mathjax for compatibility with self-contained -->
-<script>
-  (function () {
-    var script = document.createElement("script");
-    script.type = "text/javascript";
-    script.src  = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
-    document.getElementsByTagName("head")[0].appendChild(script);
-  })();
-</script>
-
-</body>
-</html>
diff --git a/datasets/eclipse_mls/mbox_csv_analysis.rmd b/datasets/eclipse_mls/mbox_csv_analysis.rmd
deleted file mode 100644
index a9acd924e8a922744a072af60238be6050ae8174..0000000000000000000000000000000000000000
--- a/datasets/eclipse_mls/mbox_csv_analysis.rmd
+++ /dev/null
@@ -1,310 +0,0 @@
----
-title: "Eclipse mailing lists"
-subtitle: "R Analysis document"
-author: "Boris Baldassari -- Castalia Solutions"
-output:
-  html_document:
-    toc: yes
-    toc_depth: 2
-  pdf_document:
-    toc: yes
-    toc_depth: 3
-  word_document:
-    toc: yes
-    toc_depth: '2'
-params:
-  project: eclipse_mls_full.csv
----
-
-```{r init, message=FALSE, echo=FALSE}
-library(ggplot2)
-library(plotly)
-library(ggthemes)
-library(knitr)
-library(kableExtra)
-library(parsedate)
-library(magrittr)
-
-# Read csv file
-file.in <- paste( params$project, sep="")
-project.csv <- read.csv(file.in, header=T)
-names.orig <- names(project.csv)
-project.csv$Company <- substr(x = project.csv$sender_addr, 18, 33)
-
-# Create xts object
-require(xts)
-require(parsedate)
-project.xts <- xts(x = project.csv, order.by = parse_iso_8601(project.csv$sent_at))
-
-# Initialise plotly
-Sys.setenv("plotly_username"="BorisBaldassari")
-Sys.setenv("plotly_api_key"="uewufFf4T6NTGwbU6uS5")
-```
-
-# Introduction
-
-## About this dataset
-
-The [Eclipse Foundation](https://eclipse.org) provides individuals and organizations with a commercially focused environment for open source software innovation. It includes git repositories, reviews, issues management, continuous integration, forums and mailing lists among other services. Many well-known and widely used projects are hosted on the forge, including the Eclipse IDE itself, The new Java working group, 
-
-This dataset is a dump of all posts sent on all mailing lists hosted at the Eclipse Forge. Although this is public data (the mailing lists can be browsed on the [official mailman page](https://accounts.eclipse.org/mailing-list)) all data has been anonymised to prevent any misuse. The privacy issues identified, along with the anonymisation process, have been covered in a [dedicated document](../../docs/datasets_privacy.html).
-
-These files are published under the [Creative Commons BY-Attribution-Share Alike 4.0 (International) licence](https://creativecommons.org/licenses/by-sa/4.0/).
-
-The dataset is composed of two parts:
-
-* **eclipse_mls_full.csv** contains an extract of all the messages exchanged on the various mailing lists. The present document uses this CSV as input data.
-* The **full list of mboxes**, one file per mailing list. They can be downloaded directly from the [mboxes subdirectory](mboxes/).
-
-All of them are updated weekly at 2am on Sunday.
-
-
-## Basic summary
-
-* **Generated date**: `r date()`
-* **First date**: `r first(index(project.xts))`
-* **Last date**: `r last(index(project.xts))`
-* **Number of posts**: `r nrow(project.xts)`
-* **Number of attributes**: `r ncol(project.xts)`
-
-
-## Privacy concerns
-
-We value privacy and intend to make everything we can to prevent misuse of the dataset. If you think we failed somewhere in the process, please [let us know](https://www.crossminer.org/contact) so we can do better.
-
-All personally identifiable information has been scrambled using the [data anonymiser](https://github.com/borisbaldassari/data-anonymiser) Perl module. As a result there is **no clear email address** in this dataset, **nor any UUID or name**. However all identical information produces the same encrypted string, which means that one can still identify identical data without knowing what it actually is. As an example email addresses are split (name, company) and encoded separately, which enables one to e.g. identify posters from the same company without knowing the company.
-
-The anonymisation technique used basically encrypts information and then throws away the private key. Please refer to the [documentation published on github](https://github.com/borisbaldassari/data-anonymiser) for more details.
-
-
-## About this document
-
-This document is a [R Markdown document](http://rmarkdown.rstudio.com) and is composed of both text (like this one) and dynamically computed information (mostly in the sections below) executed on the data itself. This ensures that the documentation is always synchronised with the data, and serves as a test suite for the dataset.
-
-
-# Structure of data
-
-This dataset is composed of a single big CSV file. Attributes are: ``r names.orig``.
-
-Examples are provided at the end of this file to demonstrate how to use it in R.
-
-## list {#list}
-
-* Description: The mailing list and project of the post.
-* Type: String
-
-Examples: 
-```{r list.sample, warning=FALSE, echo=F, results='asis'}
-extract <- sample(unique(project.csv$list), size=5)
-kable( extract, caption="Sample of list names", col.names = c('Project list names'))
-```
-
-## messageId {#message_id}
-
-* Description: A unique identifier for the post.
-* Type: String (Scrambled Base64)
-
-Examples: 
-```{r messageid.sample, warning=FALSE, echo=FALSE, results='asis'}
-extract <- sample(unique(project.csv$messageid), size=5)
-kable( extract, caption="Sample of message IDs", col.names = c('Message ID'))
-```
-
-## Subject {#subject}
-
-* Description: The subject of the post as sent on the mailing list.
-* Type: String 
-
-Examples: 
-```{r subject.sample, warning=FALSE, echo=FALSE, results='asis'}
-extract <- sample(unique(project.csv$subject), size=5)
-kable( extract, caption="Sample of email subjects", col.names = c('Subject'))
-```
-
-## Sent at {#sent_at}
-
-* Description: The time of sending for the post.
-* Type: Date (ISO 8601)
-
-Main characteristics:
-
-* **First date**: `r first(index(project.xts))`
-* **Last date**: `r last(index(project.xts))`
-
-Examples: 
-```{r sentat.sample, warning=FALSE, echo=FALSE, results='asis'}
-extract <- sample(project.csv$sent_at, size=5)
-kable( extract, caption="Sample of sent dates", col.names = c('Sent date'))
-```
-
-
-## Sender name
-
-* Description: The name of the sender of the post.
-* Type: String (Scrambled Base64)
-* Number of unique entries: `r length(unique(project.csv$sender_name))`
-
-Examples: 
-```{r sendername.sample, warning=FALSE, echo=FALSE, results='asis'}
-extract <- sample(project.csv$sender_name, size=5)
-kable( extract, caption="Sample of sender names", col.names = c('Sender names'))
-```
-
-Note: A single name repeated several times will always result in the same scrambled ID. This way it is possible to identify same-author posts without actually knowing the name of the sender.
-
-## Sender address
-
-* Description: The email address of the sender, encoded.
-* Type: String (Scrambled Base64)
-* Number of unique entries: `r length(unique(project.csv$sender_addr))`
-
-Examples: 
-```{r senderaddr.sample, warning=FALSE, echo=FALSE, results='asis'}
-extract <- sample(project.csv$sender_addr, size=5)
-kable( extract, caption="Sample of sender addresses", col.names = c('Sender addresses'))
-```
-
-Note: A single email address repeated several times will always result in the same scrambled email address. Furthermore both parts of the email (name, company) are individually scrambled, which means that one can identify email addresses from the same company without actually knowing the real company or name of the sender.
-
-# Using the dataset
-
-## Reading CSV file
-
-Reading file from `r file.in`. 
-
-```{r examples.init, echo=T}
-project.csv <- read.csv(file.in, header=T)
-```
-
-We add a column for the Company, which we extract from the email address (i.e. the domain name):
-
-```{r examples.init.comp, echo=T}
-project.csv$Company <- substr(x = project.csv$sender_addr, 18, 33)
-```
-
-Number of columns in this dataset:
-
-```{r examples.ncol, echo=T}
-ncol(project.csv)
-```
-
-Number of entries in this dataset:
-
-```{r examples.nrow, echo=T}
-nrow(project.csv)
-```
-
-Names of columns: 
-
-```{r examples.names, echo=T}
-names(project.csv)
-```
-
-
-## Using time series (xts)
-
-The dataset needs to be converted to a `xts` object. We can use the `sent_at` attribute as a time index.
-
-```{r examples.xts, echo=T}
-require(xts)
-project.xts <- xts(x = project.csv, order.by = parse_iso_8601(project.csv$sent_at))
-```
-
-## Plotting number of monthly posts
-
-When considering the timeline of the dataset, it can be misleading when there several submissions on a short period of time, compared to sparse time ranges. We'll use the `apply.monthly` function from `xts` to normalise the total number of monthly submissions.
-
-```{r examples.xts.plot}
-project.monthly <- apply.monthly(x=project.xts$sent_at, FUN=nrow)
-
-autoplot(project.monthly, geom='line') + 
-  theme_minimal() + ylab("Number of posts") + xlab("Time") + ggtitle("Number of monthly posts")
-```
-
-## Plotting number of monthly reporters
-
-One author can post several emails on the mailing list. Let's plot the monthly number of distinct authors on the mailing list. For this we need to count the number of unique occurrences of the email address (attribute `sender_attr`).
-
-```{r xts.monthly.reporters}
-count_unique <- function(x) { length(unique(x)) }
-project.monthly <- apply.monthly(x=project.xts$sender_addr, FUN=count_unique)
-
-autoplot(project.monthly, geom='line') + 
-  theme_minimal() + ylab("Number of authors") + xlab("Time") + ggtitle("Number of monthly distinct authors")
-```
-
-
-## Plotting activity of authors
-
-We want to plot the number of emails sent by each author regardless of the mailing list they were sent on. We display only the 10 top posters:
-
-```{r reporters.sample, warning=FALSE, echo=FALSE, results='asis'}
-authors <- sort(x = table(project.csv$sender_addr), decreasing = TRUE)
-authors.10 <- head( authors, n = 10)
-authors.subset.df <- as.data.frame(authors.10)
-authors.subset.df$Company <- substr(x = authors.subset.df$Var1, 18, 33)
-
-kable( authors.subset.df, caption="Top 10 senders on mailing lists", col.names = c('Sender address', 'Number of posts', 'Company'))
-```
-
-```{r reporters.plot.init, echo=F}
-n <- 50
-```
-
-Now plot these `r n` top posters with ggplot and use the company (i.e. second part of the email address) for the colour:
-
-```{r reporters.plot}
-authors.subset <- head( authors, n = n)
-
-authors.subset.df <- as.data.frame(authors.subset)
-names(authors.subset.df) <- c('ID', 'Posts')
-authors.subset.df$Author <- substr(x = authors.subset.df$ID, 1, 16)
-authors.subset.df$Company <- substr(x = authors.subset.df$ID, 18, 33)
-
-p <- ggplot(data=authors.subset.df, aes(x=reorder(Author, -Posts), y = Posts, fill = Company)) + 
-  geom_bar(stat="identity") + 
-  theme_minimal() + ylab("Number of posts") + xlab('Posters') + 
-  ggtitle(paste(n, " overall top posters on Eclipse mailing lists", sep="")) +
-  theme( axis.text.x = element_text(angle=60, size = 7, hjust = 1))
-g <- ggplotly(p)
-g
-#api_create(g, filename = "r-eclipse_mls_authors")
-```
-
-
-## Posts by Company
-
-We want to know what companies posted the most messages in mailing listsacross years. To that end we select the 20 companies that have the larger number of posts and plot the number of messages by company year after year.
-
-```{r comp.init}
-comps_list <- head( sort( x = table(project.csv$Company), decreasing = T ), n=20 )
-df <- data.frame(Company=character(), 
-                 Year=character(),
-                 Posts=integer(), 
-                 stringsAsFactors=FALSE) 
-for (i in seq_along(1:20)) {
-  project.comp.xts <- project.xts[project.xts$Company == names(comps_list)[[i]],]
-  project.comp.yearly <- apply.yearly(x=project.comp.xts$Company, FUN=nrow)
-  for (j in seq_along(1:nrow(project.comp.yearly))) {
-    year <- format(index(project.comp.yearly)[[j]],"%Y")
-    comp <- as.data.frame(t(c(names(comps_list)[[i]], year, as.integer(project.comp.yearly[[j]]))))
-    names(comp) <- c("Company", "Year", "Posts")
-    df <- rbind(df, comp)
-  }
-}
-
-df$Company <- as.character(df$Company)
-df <- df[order(df$Company),]
-
-p <- ggplot(data=df, aes(x=Year, y = Posts, fill = Company)) + geom_bar(stat="identity") + 
-  theme_minimal() + ylab("Number of posts") + xlab('Years') + 
-  ggtitle("Top 20 Companies involved in Eclipse mailing lists across years") +
-  theme( axis.text.x = element_text(angle=60, size = 7, hjust = 1))
-
-g <- ggplotly(p)
-g
-#api_create(g, filename = "r-eclipse_mls_companies")
-```
-
-
-
diff --git a/datasets/projects/eclipse_projects.html b/datasets/projects/eclipse_projects.html
deleted file mode 100644
index bb08db30389a6180d26daa4c32a39db8d450ad93..0000000000000000000000000000000000000000
--- a/datasets/projects/eclipse_projects.html
+++ /dev/null
@@ -1,938 +0,0 @@
-<!DOCTYPE html><html><head>
-      <title>eclipse_projects</title>
-      <meta charset="utf-8">
-      <meta name="viewport" content="width=device-width, initial-scale=1.0">
-      
-      <link rel="stylesheet" href="file:////home/boris/.atom/packages/markdown-preview-enhanced/node_modules/@shd101wyy/mume/dependencies/katex/katex.min.css">
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      <style>
-      /**
- * prism.js Github theme based on GitHub's theme.
- * @author Sam Clarke
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: #333;
-  background: none;
-  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.4;
-
-  -moz-tab-size: 8;
-  -o-tab-size: 8;
-  tab-size: 8;
-
-  -webkit-hyphens: none;
-  -moz-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-  padding: .8em;
-  overflow: auto;
-  /* border: 1px solid #ddd; */
-  border-radius: 3px;
-  /* background: #fff; */
-  background: #f5f5f5;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-  padding: .1em;
-  border-radius: .3em;
-  white-space: normal;
-  background: #f5f5f5;
-}
-
-.token.comment,
-.token.blockquote {
-  color: #969896;
-}
-
-.token.cdata {
-  color: #183691;
-}
-
-.token.doctype,
-.token.punctuation,
-.token.variable,
-.token.macro.property {
-  color: #333;
-}
-
-.token.operator,
-.token.important,
-.token.keyword,
-.token.rule,
-.token.builtin {
-  color: #a71d5d;
-}
-
-.token.string,
-.token.url,
-.token.regex,
-.token.attr-value {
-  color: #183691;
-}
-
-.token.property,
-.token.number,
-.token.boolean,
-.token.entity,
-.token.atrule,
-.token.constant,
-.token.symbol,
-.token.command,
-.token.code {
-  color: #0086b3;
-}
-
-.token.tag,
-.token.selector,
-.token.prolog {
-  color: #63a35c;
-}
-
-.token.function,
-.token.namespace,
-.token.pseudo-element,
-.token.class,
-.token.class-name,
-.token.pseudo-class,
-.token.id,
-.token.url-reference .token.variable,
-.token.attr-name {
-  color: #795da3;
-}
-
-.token.entity {
-  cursor: help;
-}
-
-.token.title,
-.token.title .token.punctuation {
-  font-weight: bold;
-  color: #1d3e81;
-}
-
-.token.list {
-  color: #ed6a43;
-}
-
-.token.inserted {
-  background-color: #eaffea;
-  color: #55a532;
-}
-
-.token.deleted {
-  background-color: #ffecec;
-  color: #bd2c00;
-}
-
-.token.bold {
-  font-weight: bold;
-}
-
-.token.italic {
-  font-style: italic;
-}
-
-
-/* JSON */
-.language-json .token.property {
-  color: #183691;
-}
-
-.language-markup .token.tag .token.punctuation {
-  color: #333;
-}
-
-/* CSS */
-code.language-css,
-.language-css .token.function {
-  color: #0086b3;
-}
-
-/* YAML */
-.language-yaml .token.atrule {
-  color: #63a35c;
-}
-
-code.language-yaml {
-  color: #183691;
-}
-
-/* Ruby */
-.language-ruby .token.function {
-  color: #333;
-}
-
-/* Markdown */
-.language-markdown .token.url {
-  color: #795da3;
-}
-
-/* Makefile */
-.language-makefile .token.symbol {
-  color: #795da3;
-}
-
-.language-makefile .token.variable {
-  color: #183691;
-}
-
-.language-makefile .token.builtin {
-  color: #0086b3;
-}
-
-/* Bash */
-.language-bash .token.keyword {
-  color: #0086b3;
-}
-
-/* highlight */
-pre[data-line] {
-  position: relative;
-  padding: 1em 0 1em 3em;
-}
-pre[data-line] .line-highlight-wrapper {
-  position: absolute;
-  top: 0;
-  left: 0;
-  background-color: transparent;
-  display: block;
-  width: 100%;
-}
-
-pre[data-line] .line-highlight {
-  position: absolute;
-  left: 0;
-  right: 0;
-  padding: inherit 0;
-  margin-top: 1em;
-  background: hsla(24, 20%, 50%,.08);
-  background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
-  pointer-events: none;
-  line-height: inherit;
-  white-space: pre;
-}
-
-pre[data-line] .line-highlight:before, 
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-start);
-  position: absolute;
-  top: .4em;
-  left: .6em;
-  min-width: 1em;
-  padding: 0 .5em;
-  background-color: hsla(24, 20%, 50%,.4);
-  color: hsl(24, 20%, 95%);
-  font: bold 65%/1.5 sans-serif;
-  text-align: center;
-  vertical-align: .3em;
-  border-radius: 999px;
-  text-shadow: none;
-  box-shadow: 0 1px white;
-}
-
-pre[data-line] .line-highlight[data-end]:after {
-  content: attr(data-end);
-  top: auto;
-  bottom: .4em;
-}html body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ul,html body>ol{margin-bottom:16px}html body ul,html body ol{padding-left:2em}html body ul.no-list,html body ol.no-list{padding:0;list-style-type:none}html body ul ul,html body ul ol,html body ol ol,html body ol ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;background-color:#f0f0f0;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:bold;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em !important;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::before,html body code::after{letter-spacing:-0.2em;content:"\00a0"}html body pre>code{padding:0;margin:0;font-size:.85em !important;word-break:normal;white-space:pre;background:transparent;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;font-size:.85em !important;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:before,html body pre tt:before,html body pre code:after,html body pre tt:after{content:normal}html body p,html body blockquote,html body ul,html body ol,html body dl,html body pre{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body pre,html body code{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview .pagebreak,.markdown-preview .newpage{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center !important}.markdown-preview:not([for="preview"]) .code-chunk .btn-group{display:none}.markdown-preview:not([for="preview"]) .code-chunk .status{display:none}.markdown-preview:not([for="preview"]) .code-chunk .output-div{margin-bottom:16px}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0}@media screen and (min-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px + 2em)}}@media screen and (max-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{font-size:14px !important;padding:1em}}@media print{html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,0.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{padding:0 1.6em;margin-top:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc li{margin-bottom:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{list-style-type:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% -  300px);padding:2em calc(50% - 457px -  150px);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
-/* Please visit the URL below for more information: */
-/*   https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */
-
-      </style>
-    </head>
-    <body for="html-export">
-      <div class="mume markdown-preview  ">
-      <h1 class="mume-header" id="datasets-of-eclipse-projects">Datasets of Eclipse projects</h1>
-
-<p>This is the list of all Eclipse projects datasets published for Eclipse Scava. Each dataset is composed of:</p>
-<ul>
-<li>Compressed (gzip&apos;d) CSV and JSON files.</li>
-<li>A R Markdown document that analyses the extracted files and provides some hints about how to use them. This document also serves as a validation step to identify empty or inconsistent datasets.</li>
-</ul>
-<p>These datasets are published under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons BY-Attribution-Share Alike 4.0 (International) licence</a>.</p>
-<h2 class="mume-header" id="eclipse-app4mc">Eclipse APP4MC</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.app4mc/dataset_report_technology.app4mc.html">dataset_report_technology.app4mc.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.app4mc">https://projects.eclipse.org/projects/technology.app4mc</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.app4mc/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.app4mc/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.app4mc/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.app4mc/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.app4mc/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.app4mc/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.app4mc/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.app4mc/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.app4mc/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.app4mc/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.app4mc/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.app4mc/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.app4mc/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.app4mc/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="technology.app4mc/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-acceleo">Eclipse Acceleo</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.m2t.acceleo/dataset_report_modeling.m2t.acceleo.html">dataset_report_modeling.m2t.acceleo.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.m2t.acceleo">https://projects.eclipse.org/projects/modeling.m2t.acceleo</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.m2t.acceleo/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.m2t.acceleo/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.m2t.acceleo/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="modeling.m2t.acceleo/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-apogy">Eclipse Apogy</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.apogy/dataset_report_technology.apogy.html">dataset_report_technology.apogy.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.apogy">https://projects.eclipse.org/projects/technology.apogy</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.apogy/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.apogy/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.apogy/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.apogy/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.apogy/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.apogy/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.apogy/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.apogy/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.apogy/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.apogy/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.apogy/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.apogy/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.apogy/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.apogy/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="technology.apogy/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-cdt">Eclipse CDT</h2>
-
-<ul>
-<li>Analysis report: <a href="tools.cdt/dataset_report_tools.cdt.html">dataset_report_tools.cdt.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/cdt">https://www.eclipse.org/cdt</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/tools.cdt">https://projects.eclipse.org/projects/tools.cdt</a></li>
-<li>Downloads:
-<ul>
-<li><a href="tools.cdt/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="tools.cdt/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="tools.cdt/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="tools.cdt/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="tools.cdt/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="tools.cdt/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="tools.cdt/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="tools.cdt/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="tools.cdt/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="tools.cdt/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="tools.cdt/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="tools.cdt/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="tools.cdt/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="tools.cdt/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="tools.cdt/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-ease">Eclipse EASE</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.ease/dataset_report_technology.ease.html">dataset_report_technology.ease.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/ease">https://www.eclipse.org/ease</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.ease">https://projects.eclipse.org/projects/technology.ease</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.ease/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.ease/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.ease/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.ease/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.ease/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.ease/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.ease/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.ease/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.ease/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.ease/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.ease/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.ease/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.ease/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.ease/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="technology.ease/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="technology.ease/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="technology.ease/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="technology.ease/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="technology.ease/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="technology.ease/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="technology.ease/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="technology.ease/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-egit">Eclipse EGit</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.egit/dataset_report_technology.egit.html">dataset_report_technology.egit.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/egit">https://www.eclipse.org/egit</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.egit">https://projects.eclipse.org/projects/technology.egit</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.egit/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.egit/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.egit/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.egit/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.egit/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.egit/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.egit/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.egit/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.egit/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.egit/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.egit/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.egit/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.egit/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.egit/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="technology.egit/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="technology.egit/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="technology.egit/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="technology.egit/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="technology.egit/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="technology.egit/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="technology.egit/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="technology.egit/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-emf-compare">Eclipse EMF Compare</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.emfcompare/dataset_report_modeling.emfcompare.html">dataset_report_modeling.emfcompare.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.emfcompare">https://projects.eclipse.org/projects/modeling.emfcompare</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.emfcompare/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.emfcompare/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.emfcompare/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.emfcompare/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.emfcompare/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.emfcompare/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.emfcompare/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.emfcompare/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.emfcompare/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.emfcompare/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.emfcompare/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.emfcompare/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.emfcompare/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.emfcompare/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="modeling.emfcompare/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-emf-parsley">Eclipse EMF Parsley</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.emf-parsley/dataset_report_modeling.emf-parsley.html">dataset_report_modeling.emf-parsley.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/emf-parsley">https://www.eclipse.org/emf-parsley</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.emf-parsley">https://projects.eclipse.org/projects/modeling.emf-parsley</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.emf-parsley/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.emf-parsley/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.emf-parsley/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="modeling.emf-parsley/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-epsilon">Eclipse Epsilon</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.epsilon/dataset_report_modeling.epsilon.html">dataset_report_modeling.epsilon.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/epsilon">https://www.eclipse.org/epsilon</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.epsilon">https://projects.eclipse.org/projects/modeling.epsilon</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.epsilon/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.epsilon/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.epsilon/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.epsilon/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.epsilon/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.epsilon/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.epsilon/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.epsilon/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.epsilon/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.epsilon/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.epsilon/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.epsilon/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.epsilon/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.epsilon/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="modeling.epsilon/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-gendoc">Eclipse Gendoc</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.gendoc/dataset_report_modeling.gendoc.html">dataset_report_modeling.gendoc.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/gendoc">https://www.eclipse.org/gendoc</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.gendoc">https://projects.eclipse.org/projects/modeling.gendoc</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.gendoc/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.gendoc/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.gendoc/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.gendoc/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.gendoc/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.gendoc/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.gendoc/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.gendoc/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.gendoc/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.gendoc/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.gendoc/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.gendoc/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.gendoc/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.gendoc/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-glassfish">Eclipse Glassfish</h2>
-
-<ul>
-<li>Analysis report: <a href="ee4j.glassfish/dataset_report_ee4j.glassfish.html">dataset_report_ee4j.glassfish.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/ee4j.glassfish">https://projects.eclipse.org/projects/ee4j.glassfish</a></li>
-<li>Downloads:
-<ul>
-<li><a href="ee4j.glassfish/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="ee4j.glassfish/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="ee4j.glassfish/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="ee4j.glassfish/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="ee4j.glassfish/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="ee4j.glassfish/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="ee4j.glassfish/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="ee4j.glassfish/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="ee4j.glassfish/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-jgit">Eclipse JGit</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.jgit/dataset_report_technology.jgit.html">dataset_report_technology.jgit.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.jgit">https://projects.eclipse.org/projects/technology.jgit</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.jgit/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.jgit/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.jgit/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.jgit/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.jgit/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.jgit/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.jgit/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.jgit/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.jgit/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.jgit/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.jgit/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.jgit/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.jgit/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.jgit/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-mdmbl">Eclipse MDM|BL</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.mdmbl/dataset_report_technology.mdmbl.html">dataset_report_technology.mdmbl.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.mdmbl">https://projects.eclipse.org/projects/technology.mdmbl</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.mdmbl/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.mdmbl/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.mdmbl/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.mdmbl/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.mdmbl/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.mdmbl/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.mdmbl/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.mdmbl/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.mdmbl/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.mdmbl/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.mdmbl/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.mdmbl/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-ocl">Eclipse OCL</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.mdt.ocl/dataset_report_modeling.mdt.ocl.html">dataset_report_modeling.mdt.ocl.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.mdt.ocl">https://projects.eclipse.org/projects/modeling.mdt.ocl</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.mdt.ocl/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.mdt.ocl/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.mdt.ocl/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.mdt.ocl/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-pdt-php-development-tools">Eclipse PDT (PHP Development Tools)</h2>
-
-<ul>
-<li>Analysis report: <a href="tools.pdt/dataset_report_tools.pdt.html">dataset_report_tools.pdt.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/pdt">https://www.eclipse.org/pdt</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/tools.pdt">https://projects.eclipse.org/projects/tools.pdt</a></li>
-<li>Downloads:
-<ul>
-<li><a href="tools.pdt/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="tools.pdt/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="tools.pdt/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="tools.pdt/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="tools.pdt/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="tools.pdt/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="tools.pdt/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="tools.pdt/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="tools.pdt/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="tools.pdt/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="tools.pdt/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="tools.pdt/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="tools.pdt/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="tools.pdt/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-paho">Eclipse Paho</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.paho/dataset_report_technology.paho.html">dataset_report_technology.paho.html</a></li>
-<li>Project&apos;s home: <a href="https://projects.eclipse.org/proposals/eclipse-glassfish">https://projects.eclipse.org/proposals/eclipse-glassfish</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.paho">https://projects.eclipse.org/projects/technology.paho</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.paho/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.paho/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.paho/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.paho/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.paho/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.paho/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.paho/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.paho/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.paho/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.paho/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.paho/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.paho/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.paho/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.paho/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-papyrus">Eclipse Papyrus</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.mdt.papyrus/dataset_report_modeling.mdt.papyrus.html">dataset_report_modeling.mdt.papyrus.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/papyrus">https://www.eclipse.org/papyrus</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.mdt.papyrus">https://projects.eclipse.org/projects/modeling.mdt.papyrus</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.mdt.papyrus/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.mdt.papyrus/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.mdt.papyrus/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.mdt.papyrus/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-process-framework">Eclipse Process Framework</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.epf/dataset_report_technology.epf.html">dataset_report_technology.epf.html</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.epf">https://projects.eclipse.org/projects/technology.epf</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.epf/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.epf/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.epf/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.epf/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.epf/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.epf/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.epf/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.epf/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.epf/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.epf/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.epf/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.epf/git_log.txt.gz">git_log.txt.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-scout">Eclipse Scout</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.scout/dataset_report_technology.scout.html">dataset_report_technology.scout.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/scout">https://www.eclipse.org/scout</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.scout">https://projects.eclipse.org/projects/technology.scout</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.scout/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.scout/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.scout/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.scout/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.scout/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.scout/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.scout/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.scout/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.scout/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.scout/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.scout/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.scout/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.scout/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.scout/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="technology.scout/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="technology.scout/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="technology.scout/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="technology.scout/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="technology.scout/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="technology.scout/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="technology.scout/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="technology.scout/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-sirius">Eclipse Sirius</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.sirius/dataset_report_modeling.sirius.html">dataset_report_modeling.sirius.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/sirius">https://www.eclipse.org/sirius</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.sirius">https://projects.eclipse.org/projects/modeling.sirius</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.sirius/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.sirius/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.sirius/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.sirius/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.sirius/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.sirius/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.sirius/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.sirius/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.sirius/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.sirius/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.sirius/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.sirius/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.sirius/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.sirius/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="modeling.sirius/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-sphinx">Eclipse Sphinx</h2>
-
-<ul>
-<li>Analysis report: <a href="modeling.sphinx/dataset_report_modeling.sphinx.html">dataset_report_modeling.sphinx.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/sphinx">https://www.eclipse.org/sphinx</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/modeling.sphinx">https://projects.eclipse.org/projects/modeling.sphinx</a></li>
-<li>Downloads:
-<ul>
-<li><a href="modeling.sphinx/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="modeling.sphinx/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="modeling.sphinx/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="modeling.sphinx/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="modeling.sphinx/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="modeling.sphinx/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="modeling.sphinx/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="modeling.sphinx/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="modeling.sphinx/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="modeling.sphinx/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="modeling.sphinx/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="modeling.sphinx/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="modeling.sphinx/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="modeling.sphinx/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-trace-compass">Eclipse Trace Compass</h2>
-
-<ul>
-<li>Analysis report: <a href="tools.tracecompass/dataset_report_tools.tracecompass.html">dataset_report_tools.tracecompass.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/tracecompass/">https://www.eclipse.org/tracecompass/</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/tools.tracecompass">https://projects.eclipse.org/projects/tools.tracecompass</a></li>
-<li>Downloads:
-<ul>
-<li><a href="tools.tracecompass/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="tools.tracecompass/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="tools.tracecompass/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="tools.tracecompass/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="tools.tracecompass/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="tools.tracecompass/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="tools.tracecompass/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="tools.tracecompass/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="tools.tracecompass/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="tools.tracecompass/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="tools.tracecompass/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="tools.tracecompass/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="tools.tracecompass/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="tools.tracecompass/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-<h2 class="mume-header" id="eclipse-tycho">Eclipse Tycho</h2>
-
-<ul>
-<li>Analysis report: <a href="technology.tycho/dataset_report_technology.tycho.html">dataset_report_technology.tycho.html</a></li>
-<li>Project&apos;s home: <a href="https://www.eclipse.org/tycho/">https://www.eclipse.org/tycho/</a></li>
-<li>PMI home: <a href="https://projects.eclipse.org/projects/technology.tycho">https://projects.eclipse.org/projects/technology.tycho</a></li>
-<li>Downloads:
-<ul>
-<li><a href="technology.tycho/bugzilla_components.csv.gz">bugzilla_components.csv.gz</a></li>
-<li><a href="technology.tycho/bugzilla_evol.csv.gz">bugzilla_evol.csv.gz</a></li>
-<li><a href="technology.tycho/bugzilla_issues.csv.gz">bugzilla_issues.csv.gz</a></li>
-<li><a href="technology.tycho/bugzilla_issues_open.csv.gz">bugzilla_issues_open.csv.gz</a></li>
-<li><a href="technology.tycho/bugzilla_versions.csv.gz">bugzilla_versions.csv.gz</a></li>
-<li><a href="technology.tycho/eclipse_forums_posts.csv.gz">eclipse_forums_posts.csv.gz</a></li>
-<li><a href="technology.tycho/eclipse_forums_threads.csv.gz">eclipse_forums_threads.csv.gz</a></li>
-<li><a href="technology.tycho/eclipse_pmi_checks.csv.gz">eclipse_pmi_checks.csv.gz</a></li>
-<li><a href="technology.tycho/eclipse_pmi_checks.json.gz">eclipse_pmi_checks.json.gz</a></li>
-<li><a href="technology.tycho/git_commits.csv.gz">git_commits.csv.gz</a></li>
-<li><a href="technology.tycho/git_commits_evol.csv.gz">git_commits_evol.csv.gz</a></li>
-<li><a href="technology.tycho/git_log.txt.gz">git_log.txt.gz</a></li>
-<li><a href="technology.tycho/jenkins_builds.csv.gz">jenkins_builds.csv.gz</a></li>
-<li><a href="technology.tycho/jenkins_jobs.csv.gz">jenkins_jobs.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_authors.csv.gz">scancode_authors.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_copyrights.csv.gz">scancode_copyrights.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_files.csv.gz">scancode_files.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_holders.csv.gz">scancode_holders.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_licences.csv.gz">scancode_licences.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_packages.csv.gz">scancode_packages.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_programming_languages.csv.gz">scancode_programming_languages.csv.gz</a></li>
-<li><a href="technology.tycho/scancode_special_files.csv.gz">scancode_special_files.csv.gz</a></li>
-</ul>
-</li>
-</ul>
-
-      </div>
-      
-      
-    
-    
-    
-    
-    
-    
-    
-    
-  
-    </body></html>
\ No newline at end of file
diff --git a/datasets/projects/eclipse_projects.md b/datasets/projects/eclipse_projects.md
deleted file mode 100644
index 611415f186c93cfead505024a1a8a0f310ff473d..0000000000000000000000000000000000000000
--- a/datasets/projects/eclipse_projects.md
+++ /dev/null
@@ -1,592 +0,0 @@
-
-# Datasets of Eclipse projects
-
-This is the list of all Eclipse projects datasets published for Eclipse Scava. Each dataset is composed of:
-* Compressed (gzip'd) CSV and JSON files.
-* A R Markdown document that analyses the extracted files and provides some hints about how to use them. This document also serves as a validation step to identify empty or inconsistent datasets.
-
-These datasets are published under the [Creative Commons BY-Attribution-Share Alike 4.0 (International) licence](https://creativecommons.org/licenses/by-sa/4.0/).
-
-
-## Eclipse APP4MC
-
-* Analysis report: [dataset_report_technology.app4mc.html](technology.app4mc/dataset_report_technology.app4mc.html)
-* PMI home: https://projects.eclipse.org/projects/technology.app4mc
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.app4mc/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.app4mc/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.app4mc/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.app4mc/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.app4mc/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.app4mc/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.app4mc/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.app4mc/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.app4mc/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.app4mc/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.app4mc/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.app4mc/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.app4mc/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.app4mc/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](technology.app4mc/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](technology.app4mc/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](technology.app4mc/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](technology.app4mc/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](technology.app4mc/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](technology.app4mc/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](technology.app4mc/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](technology.app4mc/scancode_special_files.csv.gz)
-
-
-## Eclipse Acceleo
-
-* Analysis report: [dataset_report_modeling.m2t.acceleo.html](modeling.m2t.acceleo/dataset_report_modeling.m2t.acceleo.html)
-* PMI home: https://projects.eclipse.org/projects/modeling.m2t.acceleo
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.m2t.acceleo/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.m2t.acceleo/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.m2t.acceleo/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.m2t.acceleo/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.m2t.acceleo/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.m2t.acceleo/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.m2t.acceleo/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.m2t.acceleo/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.m2t.acceleo/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.m2t.acceleo/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.m2t.acceleo/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.m2t.acceleo/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.m2t.acceleo/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.m2t.acceleo/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](modeling.m2t.acceleo/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](modeling.m2t.acceleo/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](modeling.m2t.acceleo/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](modeling.m2t.acceleo/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](modeling.m2t.acceleo/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](modeling.m2t.acceleo/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](modeling.m2t.acceleo/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](modeling.m2t.acceleo/scancode_special_files.csv.gz)
-
-
-## Eclipse Apogy
-
-* Analysis report: [dataset_report_technology.apogy.html](technology.apogy/dataset_report_technology.apogy.html)
-* PMI home: https://projects.eclipse.org/projects/technology.apogy
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.apogy/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.apogy/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.apogy/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.apogy/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.apogy/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.apogy/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.apogy/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.apogy/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.apogy/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.apogy/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.apogy/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.apogy/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.apogy/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.apogy/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](technology.apogy/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](technology.apogy/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](technology.apogy/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](technology.apogy/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](technology.apogy/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](technology.apogy/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](technology.apogy/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](technology.apogy/scancode_special_files.csv.gz)
-
-
-## Eclipse CDT
-
-* Analysis report: [dataset_report_tools.cdt.html](tools.cdt/dataset_report_tools.cdt.html)
-* Project's home: https://www.eclipse.org/cdt
-* PMI home: https://projects.eclipse.org/projects/tools.cdt
-* Downloads:
-  - [bugzilla_components.csv.gz](tools.cdt/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](tools.cdt/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](tools.cdt/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](tools.cdt/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](tools.cdt/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](tools.cdt/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](tools.cdt/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](tools.cdt/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](tools.cdt/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](tools.cdt/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](tools.cdt/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](tools.cdt/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](tools.cdt/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](tools.cdt/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](tools.cdt/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](tools.cdt/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](tools.cdt/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](tools.cdt/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](tools.cdt/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](tools.cdt/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](tools.cdt/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](tools.cdt/scancode_special_files.csv.gz)
-
-
-## Eclipse EASE
-
-* Analysis report: [dataset_report_technology.ease.html](technology.ease/dataset_report_technology.ease.html)
-* Project's home: https://www.eclipse.org/ease
-* PMI home: https://projects.eclipse.org/projects/technology.ease
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.ease/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.ease/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.ease/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.ease/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.ease/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.ease/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.ease/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.ease/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.ease/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.ease/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.ease/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.ease/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.ease/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.ease/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](technology.ease/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](technology.ease/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](technology.ease/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](technology.ease/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](technology.ease/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](technology.ease/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](technology.ease/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](technology.ease/scancode_special_files.csv.gz)
-
-
-## Eclipse EGit
-
-* Analysis report: [dataset_report_technology.egit.html](technology.egit/dataset_report_technology.egit.html)
-* Project's home: https://www.eclipse.org/egit
-* PMI home: https://projects.eclipse.org/projects/technology.egit
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.egit/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.egit/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.egit/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.egit/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.egit/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.egit/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.egit/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.egit/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.egit/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.egit/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.egit/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.egit/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.egit/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.egit/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](technology.egit/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](technology.egit/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](technology.egit/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](technology.egit/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](technology.egit/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](technology.egit/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](technology.egit/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](technology.egit/scancode_special_files.csv.gz)
-
-
-## Eclipse EMF Compare
-
-* Analysis report: [dataset_report_modeling.emfcompare.html](modeling.emfcompare/dataset_report_modeling.emfcompare.html)
-* PMI home: https://projects.eclipse.org/projects/modeling.emfcompare
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.emfcompare/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.emfcompare/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.emfcompare/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.emfcompare/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.emfcompare/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.emfcompare/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.emfcompare/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.emfcompare/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.emfcompare/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.emfcompare/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.emfcompare/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.emfcompare/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.emfcompare/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.emfcompare/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](modeling.emfcompare/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](modeling.emfcompare/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](modeling.emfcompare/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](modeling.emfcompare/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](modeling.emfcompare/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](modeling.emfcompare/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](modeling.emfcompare/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](modeling.emfcompare/scancode_special_files.csv.gz)
-
-
-## Eclipse EMF Parsley
-
-* Analysis report: [dataset_report_modeling.emf-parsley.html](modeling.emf-parsley/dataset_report_modeling.emf-parsley.html)
-* Project's home: https://www.eclipse.org/emf-parsley
-* PMI home: https://projects.eclipse.org/projects/modeling.emf-parsley
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.emf-parsley/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.emf-parsley/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.emf-parsley/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.emf-parsley/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.emf-parsley/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.emf-parsley/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.emf-parsley/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.emf-parsley/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.emf-parsley/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.emf-parsley/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.emf-parsley/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.emf-parsley/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.emf-parsley/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.emf-parsley/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](modeling.emf-parsley/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](modeling.emf-parsley/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](modeling.emf-parsley/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](modeling.emf-parsley/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](modeling.emf-parsley/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](modeling.emf-parsley/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](modeling.emf-parsley/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](modeling.emf-parsley/scancode_special_files.csv.gz)
-
-
-## Eclipse Epsilon
-
-* Analysis report: [dataset_report_modeling.epsilon.html](modeling.epsilon/dataset_report_modeling.epsilon.html)
-* Project's home: https://www.eclipse.org/epsilon
-* PMI home: https://projects.eclipse.org/projects/modeling.epsilon
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.epsilon/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.epsilon/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.epsilon/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.epsilon/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.epsilon/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.epsilon/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.epsilon/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.epsilon/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.epsilon/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.epsilon/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.epsilon/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.epsilon/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.epsilon/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.epsilon/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](modeling.epsilon/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](modeling.epsilon/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](modeling.epsilon/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](modeling.epsilon/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](modeling.epsilon/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](modeling.epsilon/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](modeling.epsilon/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](modeling.epsilon/scancode_special_files.csv.gz)
-
-
-## Eclipse Gendoc
-
-* Analysis report: [dataset_report_modeling.gendoc.html](modeling.gendoc/dataset_report_modeling.gendoc.html)
-* Project's home: https://www.eclipse.org/gendoc
-* PMI home: https://projects.eclipse.org/projects/modeling.gendoc
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.gendoc/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.gendoc/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.gendoc/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.gendoc/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.gendoc/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.gendoc/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.gendoc/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.gendoc/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.gendoc/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.gendoc/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.gendoc/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.gendoc/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.gendoc/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.gendoc/jenkins_jobs.csv.gz)
-
-
-## Eclipse Glassfish
-
-* Analysis report: [dataset_report_ee4j.glassfish.html](ee4j.glassfish/dataset_report_ee4j.glassfish.html)
-* PMI home: https://projects.eclipse.org/projects/ee4j.glassfish
-* Downloads:
-  - [eclipse_forums_posts.csv.gz](ee4j.glassfish/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](ee4j.glassfish/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](ee4j.glassfish/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](ee4j.glassfish/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](ee4j.glassfish/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](ee4j.glassfish/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](ee4j.glassfish/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](ee4j.glassfish/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](ee4j.glassfish/jenkins_jobs.csv.gz)
-
-
-## Eclipse JGit
-
-* Analysis report: [dataset_report_technology.jgit.html](technology.jgit/dataset_report_technology.jgit.html)
-* PMI home: https://projects.eclipse.org/projects/technology.jgit
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.jgit/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.jgit/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.jgit/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.jgit/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.jgit/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.jgit/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.jgit/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.jgit/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.jgit/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.jgit/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.jgit/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.jgit/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.jgit/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.jgit/jenkins_jobs.csv.gz)
-
-
-## Eclipse MDM|BL
-
-* Analysis report: [dataset_report_technology.mdmbl.html](technology.mdmbl/dataset_report_technology.mdmbl.html)
-* PMI home: https://projects.eclipse.org/projects/technology.mdmbl
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.mdmbl/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.mdmbl/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.mdmbl/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.mdmbl/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.mdmbl/bugzilla_versions.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.mdmbl/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.mdmbl/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.mdmbl/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.mdmbl/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.mdmbl/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.mdmbl/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.mdmbl/jenkins_jobs.csv.gz)
-
-
-## Eclipse OCL
-
-* Analysis report: [dataset_report_modeling.mdt.ocl.html](modeling.mdt.ocl/dataset_report_modeling.mdt.ocl.html)
-* PMI home: https://projects.eclipse.org/projects/modeling.mdt.ocl
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.mdt.ocl/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.mdt.ocl/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.mdt.ocl/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.mdt.ocl/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.mdt.ocl/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.mdt.ocl/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.mdt.ocl/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.mdt.ocl/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.mdt.ocl/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.mdt.ocl/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.mdt.ocl/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.mdt.ocl/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.mdt.ocl/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.mdt.ocl/jenkins_jobs.csv.gz)
-
-
-## Eclipse PDT (PHP Development Tools)
-
-* Analysis report: [dataset_report_tools.pdt.html](tools.pdt/dataset_report_tools.pdt.html)
-* Project's home: https://www.eclipse.org/pdt
-* PMI home: https://projects.eclipse.org/projects/tools.pdt
-* Downloads:
-  - [bugzilla_components.csv.gz](tools.pdt/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](tools.pdt/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](tools.pdt/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](tools.pdt/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](tools.pdt/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](tools.pdt/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](tools.pdt/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](tools.pdt/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](tools.pdt/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](tools.pdt/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](tools.pdt/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](tools.pdt/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](tools.pdt/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](tools.pdt/jenkins_jobs.csv.gz)
-
-
-## Eclipse Paho
-
-* Analysis report: [dataset_report_technology.paho.html](technology.paho/dataset_report_technology.paho.html)
-* Project's home: https://projects.eclipse.org/proposals/eclipse-glassfish
-* PMI home: https://projects.eclipse.org/projects/technology.paho
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.paho/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.paho/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.paho/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.paho/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.paho/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.paho/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.paho/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.paho/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.paho/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.paho/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.paho/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.paho/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.paho/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.paho/jenkins_jobs.csv.gz)
-
-
-## Eclipse Papyrus
-
-* Analysis report: [dataset_report_modeling.mdt.papyrus.html](modeling.mdt.papyrus/dataset_report_modeling.mdt.papyrus.html)
-* Project's home: https://www.eclipse.org/papyrus
-* PMI home: https://projects.eclipse.org/projects/modeling.mdt.papyrus
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.mdt.papyrus/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.mdt.papyrus/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.mdt.papyrus/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.mdt.papyrus/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.mdt.papyrus/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.mdt.papyrus/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.mdt.papyrus/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.mdt.papyrus/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.mdt.papyrus/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.mdt.papyrus/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.mdt.papyrus/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.mdt.papyrus/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.mdt.papyrus/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.mdt.papyrus/jenkins_jobs.csv.gz)
-
-
-## Eclipse Process Framework
-
-* Analysis report: [dataset_report_technology.epf.html](technology.epf/dataset_report_technology.epf.html)
-* PMI home: https://projects.eclipse.org/projects/technology.epf
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.epf/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.epf/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.epf/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.epf/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.epf/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.epf/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.epf/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.epf/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.epf/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.epf/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.epf/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.epf/git_log.txt.gz)
-
-
-## Eclipse Scout
-
-* Analysis report: [dataset_report_technology.scout.html](technology.scout/dataset_report_technology.scout.html)
-* Project's home: https://www.eclipse.org/scout
-* PMI home: https://projects.eclipse.org/projects/technology.scout
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.scout/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.scout/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.scout/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.scout/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.scout/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.scout/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.scout/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.scout/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.scout/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.scout/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.scout/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.scout/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.scout/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.scout/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](technology.scout/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](technology.scout/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](technology.scout/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](technology.scout/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](technology.scout/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](technology.scout/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](technology.scout/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](technology.scout/scancode_special_files.csv.gz)
-
-
-## Eclipse Sirius
-
-* Analysis report: [dataset_report_modeling.sirius.html](modeling.sirius/dataset_report_modeling.sirius.html)
-* Project's home: https://www.eclipse.org/sirius
-* PMI home: https://projects.eclipse.org/projects/modeling.sirius
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.sirius/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.sirius/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.sirius/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.sirius/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.sirius/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.sirius/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.sirius/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.sirius/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.sirius/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.sirius/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.sirius/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.sirius/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.sirius/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.sirius/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](modeling.sirius/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](modeling.sirius/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](modeling.sirius/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](modeling.sirius/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](modeling.sirius/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](modeling.sirius/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](modeling.sirius/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](modeling.sirius/scancode_special_files.csv.gz)
-
-
-## Eclipse Sphinx
-
-* Analysis report: [dataset_report_modeling.sphinx.html](modeling.sphinx/dataset_report_modeling.sphinx.html)
-* Project's home: https://www.eclipse.org/sphinx
-* PMI home: https://projects.eclipse.org/projects/modeling.sphinx
-* Downloads:
-  - [bugzilla_components.csv.gz](modeling.sphinx/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](modeling.sphinx/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](modeling.sphinx/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](modeling.sphinx/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](modeling.sphinx/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](modeling.sphinx/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](modeling.sphinx/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](modeling.sphinx/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](modeling.sphinx/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](modeling.sphinx/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](modeling.sphinx/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](modeling.sphinx/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](modeling.sphinx/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](modeling.sphinx/jenkins_jobs.csv.gz)
-
-
-## Eclipse Trace Compass
-
-* Analysis report: [dataset_report_tools.tracecompass.html](tools.tracecompass/dataset_report_tools.tracecompass.html)
-* Project's home: https://www.eclipse.org/tracecompass/
-* PMI home: https://projects.eclipse.org/projects/tools.tracecompass
-* Downloads:
-  - [bugzilla_components.csv.gz](tools.tracecompass/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](tools.tracecompass/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](tools.tracecompass/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](tools.tracecompass/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](tools.tracecompass/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](tools.tracecompass/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](tools.tracecompass/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](tools.tracecompass/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](tools.tracecompass/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](tools.tracecompass/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](tools.tracecompass/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](tools.tracecompass/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](tools.tracecompass/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](tools.tracecompass/jenkins_jobs.csv.gz)
-
-
-## Eclipse Tycho
-
-* Analysis report: [dataset_report_technology.tycho.html](technology.tycho/dataset_report_technology.tycho.html)
-* Project's home: https://www.eclipse.org/tycho/
-* PMI home: https://projects.eclipse.org/projects/technology.tycho
-* Downloads:
-  - [bugzilla_components.csv.gz](technology.tycho/bugzilla_components.csv.gz)
-  - [bugzilla_evol.csv.gz](technology.tycho/bugzilla_evol.csv.gz)
-  - [bugzilla_issues.csv.gz](technology.tycho/bugzilla_issues.csv.gz)
-  - [bugzilla_issues_open.csv.gz](technology.tycho/bugzilla_issues_open.csv.gz)
-  - [bugzilla_versions.csv.gz](technology.tycho/bugzilla_versions.csv.gz)
-  - [eclipse_forums_posts.csv.gz](technology.tycho/eclipse_forums_posts.csv.gz)
-  - [eclipse_forums_threads.csv.gz](technology.tycho/eclipse_forums_threads.csv.gz)
-  - [eclipse_pmi_checks.csv.gz](technology.tycho/eclipse_pmi_checks.csv.gz)
-  - [eclipse_pmi_checks.json.gz](technology.tycho/eclipse_pmi_checks.json.gz)
-  - [git_commits.csv.gz](technology.tycho/git_commits.csv.gz)
-  - [git_commits_evol.csv.gz](technology.tycho/git_commits_evol.csv.gz)
-  - [git_log.txt.gz](technology.tycho/git_log.txt.gz)
-  - [jenkins_builds.csv.gz](technology.tycho/jenkins_builds.csv.gz)
-  - [jenkins_jobs.csv.gz](technology.tycho/jenkins_jobs.csv.gz)
-  - [scancode_authors.csv.gz](technology.tycho/scancode_authors.csv.gz)
-  - [scancode_copyrights.csv.gz](technology.tycho/scancode_copyrights.csv.gz)
-  - [scancode_files.csv.gz](technology.tycho/scancode_files.csv.gz)
-  - [scancode_holders.csv.gz](technology.tycho/scancode_holders.csv.gz)
-  - [scancode_licences.csv.gz](technology.tycho/scancode_licences.csv.gz)
-  - [scancode_packages.csv.gz](technology.tycho/scancode_packages.csv.gz)
-  - [scancode_programming_languages.csv.gz](technology.tycho/scancode_programming_languages.csv.gz)
-  - [scancode_special_files.csv.gz](technology.tycho/scancode_special_files.csv.gz)